@satsuma/cli
v1.1.119
Published
Satsuma's CLI for managing custom graphql queries.
Downloads
192
Maintainers
Readme
πSatsuma CLI
Satsuma's CLI for managing custom graphql queries.
Getting started
This CLI can be run entirely though npx. The get started, head to the folder where your subgraph lives and run:
npx @satsuma/cli init
This will initialize a .satsuma.json
, and a folder called custom-queries/
in your project root.
The .satsuma.json
file stores non-sensitive metadata about your subgraph,
and the custom-queries/
folder is where you can configure custom GraphQL.
Writing custom queries
After running init, you'll see that you now have three new files.
typeDefs.ts
This file should export typeDefs
, a string containing your custom GraphQL type definitions. This will be merged with
your subgraph's schema.
resolvers.ts
This file should export resolvers
, an object containing your custom GraphQL resolvers for any added fields in typeDefs.
helpers.ts (optional)
This file should export helpers
, an object containing any helper functions you want to use in your resolvers.
This will be passed to your resolvers via the graphql context.
Note: You should not import any modules in this file, nor should you import helpers directly into resolvers. It will not work due to the sandbox environment in which your code is executed
Context
All resolvers are passed a context
object as the third argument. This context object contains the following properties:
db
: An object containing knex instances for each of your subgraph's databases.db.entities
: The database containing your subgraph's entities.
helpers
: An object containing any helper functions you've defined inhelpers.ts
.
Resolvers & Helpers runtime
Resolvers and helpers are run in a node sandbox. This means that we've limited the modules you can use, as well as the limits on the amount of memory and time your code can consume.
- Max Memory: 1gb
- Max Runtime: 25 seconds
- Allowed Modules:
lodash
(available as_
)date-fns
(available asdateFns
)uuid
(available asuuid
)moment
rxjs
ramda
(available asR
)validator
(https://www.npmjs.com/package/validator)console
(in local env, this will redirect to your console)
Types
For those who want to work with typescript, you can run the following to generate schema.graphql
and schema.ts
files.
npx @satsuma/cli codegen -k {your deploy key} --subgraphName {your subgraph name} --subgraphVersion {your subgraph version}
These files will be generated in the custom-queries/
folder. The schema.ts
file will contain typescript types that you can import and use
in your custom resolvers & helpers.
Note: You should not manually edit types.ts
.
Running Locally
When you're ready to test your changes locally, you can run the following command to deploy your custom queries to a local graph node.
npx @satsuma/cli local -k {your deploy key} --subgraphName {your subgraph name} --subgraphVersion {your subgraph version}
This will spin up a server on http://localhost:4000
. If you visit that URL, you'll be greeted with Apollo Studio's GraphQL playground.
Deploying
When you're ready to deploy your custom queries to Satsuma, you can run the following command:
npx @satsuma/cli deploy -k {your deploy key} --subgraphName {your subgraph name} --subgraphVersion {your subgraph version}