@ssb-graphql/main v11.0.0
GraphQL for Secure Scuttlebutt
Main GraphQL types and resolvers for Secure Scuttlebutt. It provides primitives for CurrentIdentity, file-upload, Date handling etc.
Usage
npm i -S @ssb-graphql/main
Example Usage
const { ApolloServer } = require('apollo-server-express')
const { buildFederatedSchema } = require('@apollo/federation');
const Server = require('ssb-server')
const Config = require('ssb-config/inject')
const config = Config({})
const ssb = Server
  .use(require('ssb-blobs')) // << required
  .use(require('ssb-serve-blobs')) // << required
  .call(null, config)
const main = require('@ssb-graphql/main')(ssb)
main.loadContext((err, context) => {
  if (err) throw err
  const server = new ApolloServer({
    schema: buildFederatedSchema([
      { typeDefs: main.typeDefs, resolvers: main.resolvers },
      // add other types + resolvers here!
    ]),
    context
  })
})API
require('@ssb-graphql/main')(ssb, opts) => main
where:
- ssbis a scuttlebutt instance
- optsObject (optional) is of form- { type: String }where:- typeis the type of profile created (default:- 'person')
 
main.loadContext(cb)
Where cb is a callback of signature cb(err, context) and context has form
{
  public: {
    feedId,
    profileId  // requires ssb-profile
  },
  personal: {
    groupId,   // requires ssb-tribes
    profileId  // requires ssb-profile + ssb-tribes
  }
}where:
- the publicscope are things meant for the public domain,- public.feedIdis the public id of your scuttlebutt instance (this is not a profileId)
- public.profileIdpoints to an unecrypted totally public profile
 
- the personalscope is for things only you will use- personal.groupIdis the id of your personal group (for encrypted notes to self)
- personal.profileIdpoints to a profile for you which encrypted to your personal group (so no-one else will see these details)
 
NOTE:
- this will create new records (profiles / private group) and link them to your feed if they do not already exist
- creating profiles requires ssb-profileinstalled
- creating a personal group with a profile in it further requires ssb-tribes- if ssb-tribesis not installed, this will be skipped
- if typewas set topatakawhenmainwas instantiated, this will also be skipped
 
- if 
Requirements
An ssb-server with the following plugins:
- ssb-blobs
- ssb-serve-blobs
For main.loadContext:
- ssb-profile
- ssb-tribes(optional, will skip functions if not present)
Config
Scuttlebutt config that this module listens to:
{
  blobs: {
    max: Number
  },
  serveBlobs: {
    port: Number,
    hostname: String
  },
  hyperBlobs: {
    port: Number
  }
}API
See /src/typeDefs.js for the most up to date details on what's offered by this module.
TODO
run npm test to run tests
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago