@gapi/daemon
TypeScript icon, indicating that this package has built-in type declarations

1.8.150 • Public • Published

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

When API changes his schema the client should know about it

When You have multiple clients (mobile, desktop, web) you want to sync them according to your API Graphql Schema

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()

Starting daemon

gapi daemon start

Stopping daemon

gapi daemon stop

Cleaning daemon cache folder ~/.gapi/daemon

gapi daemon clean

Link project

gapi daemon link your-link-name

Unlink project

gapi daemon unlink

Unlink all projects

gapi daemon unlink --all

Flow

  1. Start the API
  2. Execute gapi daemon link your-link-name
  3. Go to client project folder
  4. Execute gapi daemon link your-link-name
  5. Made change to the graphql schema on the API
  6. 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

IMPORTANT

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

Custom plugins

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

Readme

Keywords

Package Sidebar

Install

npm i @gapi/daemon

Weekly Downloads

4

Version

1.8.150

License

MIT

Unpacked Size

20.1 kB

Total Files

18

Last publish

Collaborators

  • gapi