/** * Accroche des écouteurs à un objet. * * @template {Object} T Le type de l'objet. * @param {T} obj L'objet qui sera crocheté. * @param {Map} listeners Les écouteurs à accrocher à * l'objet. * @returns {T} L'objet crocheté. */ export default function hook(obj: T, listeners: Map): T; /** * Le contexte pour un crochetage avant l'appel d'une méthode ou d'un getter. */ export type ContextBefore = { /** * L'objet crocheté. */ obj: T; /** * La méthode crochetée. */ prop: string; /** * L'identifiant de l'exécution d'un crochet. Cette valeur * est identique dans les crochets d'avant et d'après. */ id: string; }; /** * Le contexte pour un crochetage après l'appel d'une méthode ou d'un getter. */ export type ContextAfter = { /** * L'objet crocheté. */ obj: T; /** * La méthode crochetée. */ prop: string; /** * Les paramètres de la méthode crochetée ou * possiblement `undefined` pour les getters. */ args: any[] | undefined; /** * L'identifiant de l'exécution d'un crochet. * Cette valeur est identique dans les crochets * d'avant et d'après. */ id: string; }; /** * Un écouteur à accrocher à une méthode d'un objet. */ export type Listener = { /** * Les fonctions à exécuter avant l'appel de la * méthode. */ before: Function[]; /** * Les fonctions à exécuter après l'appel de la * méthode. */ after: Function[]; };