@rotomeca/event - v5.0.0
    Preparing search index...

    Function circularEvent

    • Décorateur d'accesseur qui transforme une propriété de classe en CircularEventDelegate géré automatiquement.

      Variante circulaire de event — chaque callback reçoit et transforme le résultat du précédent, selon le pattern Middleware inspiré d'ASP.NET Core. La propriété décorée devient accessible en lecture seule — toute tentative d'affectation lève une erreur.

      Le cache est partagé sur l'instance via un Symbol non énumérable, garantissant l'isolation entre les différents événements d'une même classe.

      Type Parameters

      • TRecord extends Record<string, unknown> = Record<string, unknown>

        Type du record propagé entre les callbacks. Doit étendre Record<string, unknown>. Par défaut Record<string, unknown>.

      • This = any

        Type de la classe parente. Par défaut any.

      Parameters

      Returns (
          _target: ClassAccessorDecoratorTarget<
              This,
              CircularEventDelegate<TRecord>,
          >,
          context: ClassAccessorDecoratorContext<
              This,
              CircularEventDelegate<TRecord>,
          >,
      ) => ClassAccessorDecoratorResult<This, CircularEventDelegate<TRecord>>

      class Pipeline {
      @circularEvent<{ value: number }>((ev) => {
      ev.add('clamp', ({ value }) => ({ value: Math.max(0, value) }));
      })
      accessor onProcess: CircularEventDelegate<{ value: number }>;
      }

      const p = new Pipeline();
      p.onProcess.add('double', ({ value }) => ({ value: value * 2 }));

      const result = p.onProcess.invoke({ value: -3 });
      // result → { type: 'record', value: { value: 0 } } (clamp avant double)