Skip to content

Add validation at pushEvent & commands #136

@ThomasAribart

Description

@ThomasAribart
export class EventType<
  TYPE extends string = string,
  PAYLOAD = string extends TYPE ? unknown : never,
  METADATA = string extends TYPE ? unknown : never,
> {
  _types?: {
    detail: EventDetail<TYPE, PAYLOAD, METADATA>;
  };
  type: TYPE;
  parseEventDetail?: (candidate: unknown) =>
    | {
        isValid: true;
        parsedEventDetail: EventDetail<TYPE, PAYLOAD, METADATA>;
        parsingErrors?: never;
      }
    | {
        isValid: false;
        parsedEventDetail?: never;
        parsingErrors?: [Error, ...Error[]];
      };

(dans core/event/eventType)

  • L'implémenter en pratique sur zod-event et json-schema-event

Avec la subtilité qu'il te faut un validateur dans le constructeur de la classe json-schema-event
Par ex une fonction compile(schema) => parseEventDetail
Ajouter l'option validate en input de pushEvent et groupEvent de la classe EventStore
Qui vaut boolean | "auto" , avec "auto" = valeur par défaut

Dans pushEvent et groupEvent:
Si validate est false, continuer comme avante
Sinon, chercher l'event-type qui correspond à l'event d'entrée, regarder s'il a une méthode parseEventDetail
Throw si validate est true et il n'y en a pas
Sinon, parser l'event d'entrée
En cas d'erreur de validation, re-throw la première erreur

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status

    In Progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions