Type du record propagé entre les callbacks.
Doit étendre Record<string, unknown>.
Par défaut Record<string, unknown>.
Type de la classe parente. Par défaut any.
Optionalinitializator: Nullable<CircularCallbackInitializator<TRecord, This>>Fonction appelée à la création de l'événement pour le
configurer (abonnés par défaut, etc.).
Passer NoInitEvent si aucune logique n'est requise
mais qu'un objet options doit être fourni.
Passer null ou omettre pour ne rien faire.
Optionaloptions: ListenerDefaultOptions<(params: TRecord) => TRecord, This>Options de configuration. Voir ListenerDefaultOptions.
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)
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
Symbolnon énumérable, garantissant l'isolation entre les différents événements d'une même classe.