0.2.1 • Published 2 years ago

graphql-eventbus-codegen v0.2.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Code Generation

graphql-eventbus-codegen is a GraphQL Codegen plugin to generate typescript types for event handlers, event publishers, and event samplers to assist with generating mock data for testing. Use this plugin with GraphQL Eventbus

The plugin is meant to be used with typescript and typescript-operations plugins. The config object received by the plugin is

interface Config {
  consumer?: {
    contextType: string;
    schemaPrintPath?: string;
    eventSampler?: boolean;
  };
  publisher?: boolean;
}

Consumer

Use this option if you want to generate code for consuming events.

  • contextType: Relative path to import a custom context object that will be passed to the event handlers. The path is relative to where the generated file is located.
  • schemaPrintPath: Path to print the composed schema. If the consumer is consuming events from multiple schemas (each one could be published by individual service), you may want to print the composed schema which can be used when creating an instance of your bus.
  • eventSampler: Boolean. This option can be used to generate code to sample events using Validator class exported by the core library. It creates a function type (EventSampler) that can be assigned to data sampler. See an example.

Publisher

Use this option to generate the signature of a function to publish events. This is a boolean.

Note

Note that the schema used to consume events will likely be different from the scheme of events that the service publishes (unless it is consuming its own events using MemoryEventBus). Therefore, in most cases, consumer and publisher generated files would be different. Be careful to only specify only one of the options for each generated file, unless the bus is consuming the same set of events that it is publishing.

Sample Config

schema: ""
generates:
  ./src/serviceB/generated/codegen-event-consumer.ts:
    plugins:
      - graphql-eventbus-codegen:
          consumer:
            eventSampler: true
            contextType: "../bus#MessageHandlerContext"
            schemaPrintPath: "./src/serviceB/generated/publisher.graphql"
      - typescript
      - typescript-operations
    documents:
      - "./src/serviceB/event-consumer.graphql"
    schema:
      - "src/serviceA/schema-event.graphql"
      - "src/serviceB/schema-event.graphql"
      - "src/serviceC/schema-event.graphql"
    config:
      skipTypename: true
  ./src/serviceA/generated/codegen-event-publisher.ts:
    plugins:
      - typescript
      - typescript-operations
      - graphql-eventbus-codegen:
          publisher: true
    schema:
      - "src/serviceA/schema-event.graphql"
    config:
      skipTypename: true
      enumsAsTypes: true
0.2.1

2 years ago

0.2.0

2 years ago

0.1.5

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago

0.0.9-alpha.0

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago