-
-
Notifications
You must be signed in to change notification settings - Fork 2
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 startgapi daemon stopgapi daemon cleangapi daemon link your-link-namegapi daemon unlinkgapi 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-typesRead more about schema introspect
config:
schema:
introspectionEndpoint: http://localhost:9000/graphql
introspectionOutputFolder: ./src/server/api-introspectionReplace 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