@castore/event-type-json-schema
TypeScript icon, indicating that this package has built-in type declarations

2.3.1 • Public • Published

JSON Schema Event

DRY Castore EventType definition using JSON Schemas and json-schema-to-ts

📥 Installation

# npm
npm install @castore/event-type-json-schema

# yarn
yarn add @castore/event-type-json-schema

This package has @castore/core and json-schema-to-ts (above v2) as peer dependencies, so you will have to install them as well:

# npm
npm install @castore/core json-schema-to-ts

# yarn
yarn add @castore/core json-schema-to-ts

👩‍💻 Usage

import { JSONSchemaEventType } from '@castore/event-type-json-schema';

const pokemonAppearedPayloadSchema = {
  type: 'object',
  properties: {
    name: { type: 'string' },
    level: { type: 'integer' },
  },
  required: ['name', 'level'],
  additionalProperties: false,
} as const; // 👈 Don't forget the "as const" statement
// (Cf json-schema-to-ts documentation)

const pokemonAppearedMetadataSchema = {
  type: 'object',
  properties: {
    trigger: { enum: ['random', 'scripted'] },
  },
  additionalProperties: false,
} as const;

// 👇 generics are correctly inferred
const pokemonAppearedEventType = new JSONSchemaEventType({
  type: 'POKEMON_APPEARED',
  payloadSchema: pokemonAppearedPayloadSchema,
  metadataSchema: pokemonAppearedMetadataSchema,
});

👇 Equivalent to:

import { EventType } from '@castore/core';

const pokemonAppearedEventType = new EventType<
  'POKEMON_APPEARED',
  { name: string; level: number },
  { trigger?: 'random' | 'scripted' }
>({ type: 'POKEMON_APPEARED' });

⚙️ Properties & Methods

JSONSchemaEventType implements the EventType class and adds the following properties to it:

  • payloadSchema (?object): The event type payload JSON schema
const payloadSchema = pokemonAppearedEventType.payloadSchema;
// => pokemonAppearedPayloadSchema
  • metadataSchema (?object): The event type metadata JSON schema
const metadataSchema = pokemonAppearedEventType.metadataSchema;
// => pokemonAppearedMetadataSchema

Package Sidebar

Install

npm i @castore/event-type-json-schema

Weekly Downloads

303

Version

2.3.1

License

MIT

Unpacked Size

103 kB

Total Files

17

Last publish

Collaborators

  • thomasaribart
  • valentinbeggi
  • charlesgery
  • julietteff