-
Notifications
You must be signed in to change notification settings - Fork 0
daemon
Helps with productivity
Automatically apply schema introspection changes from graphql API to specific folders
The schema is introspected only when the API is successfully started
To use daemon you need to activate it inside your @gapi/core
=> CoreModule
configuration
const DEFAULT_CONFIG = {
server: {},
graphql: {},
daemon: { activated: true }
};
import { BootstrapFramework } from '@rxdi/core';
import { AppModule } from './app/app.module';
import { CoreModule, Module } from '@gapi/core';
@Module({
imports: [
CoreModule.forRoot({
server: {},
pubsub: {},
graphql: {},
daemon: { activated: true }
}),
]
})
export class FrameworkImports {}
BootstrapFramework(AppModule, [FrameworkImports]).subscribe()
gapi daemon start
gapi daemon stop
gapi daemon clean
gapi daemon link your-link-name
gapi daemon unlink
gapi daemon unlink --all
- Start the API
- Execute
gapi daemon link your-link-name
- Go to client project folder
- Execute
gapi daemon link your-link-name
- Made change to the graphql schema on the API
- You will see that client introspection changed also without writing single line of code
If you wish to link more than one project just execute command inside other folder
gapi daemon link your-link-name
gapi-cli.conf.yml
will be created if not present since daemon will trigger command using configuration from it.
gapi schema introspect --collect-documents --collect-types
Read more about schema introspect
config:
schema:
introspectionEndpoint: http://localhost:9000/graphql
introspectionOutputFolder: ./src/server/api-introspection
Replace with the desired configuration
Gapi daemon has capability to load external plugins via IPFS network or using regular @gapi module example module can be found HERE
A simple plugin looks like regular @rxdi
/@gapi
module basically every module inside this architecture can be used as a daemon plugin.
import { Module } from '@gapi/core';
import { MainService } from './services/main.service';
import { CustomControllerController } from './custom-controller/custom-controller.controller';
@Module({
providers: [MainService],
controllers: [CustomControllerController]
})
export class AppModule {}
You can add also plugins via IPFS https://ipfs.io/ipfs/QmY74wyqeeHYVtEkChvbQypxeZd43rk77hY8yfaU16fZQ4 this is @rxdi/deploy
plugin module can be found here https://ipfs.io/ipfs/QmYtvfC5cXutnH6y7nK8eGnPcAkU75DpngR3vGDk9A9KQt
gapi plugin add QmY74wyqeeHYVtEkChvbQypxeZd43rk77hY8yfaU16fZQ4
Remove
gapi plugin remove QmY74wyqeeHYVtEkChvbQypxeZd43rk77hY8yfaU16fZQ4