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

    Class JsCircularEvent<TCallback>

    Gestionnaire d'événements circulaire — version historique de CircularEventDelegate.

    JsCircularEvent propage un record muté de callback en callback, en déléguant chaque invocation à un CircularEventDelegate éphémère reconstruit à chaque appel. Cette reconstruction systématique est la principale raison de la dépréciation : elle est inutilement coûteuse et ne présente aucun avantage par rapport à l'utilisation directe de CircularEventDelegate.

    Si args[0] n'est pas un plain object, il est silencieusement remplacé par {} avant d'être transmis à la chaîne — contrairement à CircularEventDelegate qui émet un avertissement et encapsule la valeur dans { default: valeur }.

    // ❌ À éviter — classe dépréciée
    const event = new JsCircularEvent<(p: { count: number }) => { count: number }>();
    event.add('increment', ({ count }) => ({ count: count + 1 }));
    event.invoke({ count: 0 });

    // ✅ Préférer
    const event = new CircularEventDelegate<{ count: number }>();
    event.add('increment', ({ count }) => ({ count: count + 1 }));
    event.invoke({ count: 0 });
    • CircularEventDelegate — remplaçant direct
    • CircularEventHandler — remplaçant avec contrôle fin des génériques

    Utilisez CircularEventDelegate ou CircularEventHandler à la place.

    Type Parameters

    • TCallback extends Func = Func<[Record<string, unknown>], Record<string, unknown>>

      Type du callback. Doit étendre Func. Par défaut Func<[Record<string, unknown>], Record<string, unknown>>.

    Hierarchy (View Summary)

    Index

    Constructors

    Accessors

    • get keys(): string[]

      Retourne la liste des clés des callbacks actuellement enregistrés.

      Returns string[]

      const keys = event.keys; // ['handler1', 'handler2']
      

    Methods

    • Ajoute un callback avec une clé spécifique.

      Parameters

      • key: string

        Clé identifiant le callback.

      • event: TCallback

        Le callback à ajouter.

      • ...args: Partial<TArgs>

        Arguments par défaut transmis au callback à chaque appel.

      Returns this

      L'instance courante pour permettre le chaînage.

    • Déclenche la chaîne de callbacks et retourne le record final.

      Parameters

      • param: Parameters<TCallback>[0]

        Le record initial transmis au premier callback. Si ce n'est pas un plain object, la chaîne s'exécute sur {}.

      • ...args: any[]

        Arguments supplémentaires — ignorés, conservés pour la compatibilité avec l'ancienne signature.

      Returns Nullable<Parameters<TCallback>[0]>

      Le record final après passage dans tous les callbacks, ou null si aucun callback n'est enregistré.

      Si invoke retourne un résultat de type 'other' — état normalement inatteignable puisque invoke garantit que le paramètre transmis est toujours un plain object.

      invoke — variante retournant un CircularEventCallResult discriminé

      Utilisez CircularEventDelegate ou CircularEventHandler et leur méthode invoke à la place.

    • Supprime tous les callbacks enregistrés en une seule opération O(1).

      Capture la liste des callbacks avant l'effacement, puis déclenche onHandlerCleared après — garantissant que la Map est vide avant la notification, sans risque de double déclenchement si un observateur appelle add dans son callback.

      Returns this

      L'instance courante pour permettre le chaînage.

    • Vérifie si un callback est enregistré sous la clé donnée.

      Parameters

      • key: string

        La clé à vérifier.

      Returns boolean

      true si un callback existe pour cette clé, false sinon.

    • Déclenche la chaîne de callbacks en propageant un record muté de l'un à l'autre.

      Construit à chaque appel un CircularEventDelegate éphémère, y transfère tous les callbacks enregistrés dans leur ordre d'enregistrement, déclenche la propagation, puis efface le délégué temporaire.

      Si args[0] n'est pas un plain object, il est silencieusement remplacé par {} — la chaîne s'exécute alors sur un record vide.

      Parameters

      • ...args: any[]

        Arguments transmis à la chaîne. Seul args[0] est utilisé comme record initial ; les arguments suivants sont ignorés.

      Returns CircularEventCallResult<Parameters<TCallback>[0]>

      Un CircularEventCallResult décrivant le résultat :

      • { type: 'empty' } si aucun callback n'est enregistré.
      • { type: 'record', value } si la chaîne s'est exécutée normalement.
      const event = new JsCircularEvent<(p: { value: number }) => { value: number }>();
      event.add('double', ({ value }) => ({ value: value * 2 }));

      const result = event.invoke({ value: 5 });

      if (result.type === 'record') {
      console.log(result.value); // { value: 10 }
      }

      CircularEventDelegate.invoke pour l'implémentation sans reconstruction