@constl/mandataire
Version:
Un mandataire très léger pour le client Constellation.
56 lines (55 loc) • 2.19 kB
TypeScript
import { TypedEmitter } from "tiny-typed-emitter";
import type { types } from "@constl/ipa";
import { MessageActionDIpa, MessageConfirmationRéceptionRetourDIpa, MessageDIpa, MessageErreurDIpa, MessagePourIpa, MessageSuivrePrêtDIpa } from "./messages.js";
interface Tâche {
idRequête: string;
fSuivre: types.schémaFonctionSuivi<unknown>;
fRetour: (fonction: string, args?: unknown[]) => Promise<void>;
}
declare class Callable extends Function {
constructor();
}
export type ErreurMandataire = {
code: string;
erreur: string;
idRequête?: string;
};
type ÉvénementsMandataire = {
erreur: (e: ErreurMandataire) => void;
};
export declare abstract class Mandatairifiable extends Callable {
dernièreErreur?: ErreurMandataire;
événements: TypedEmitter<ÉvénementsMandataire>;
événementsInternes: TypedEmitter<{
[id: string]: (x: MessageActionDIpa | MessageSuivrePrêtDIpa | MessageErreurDIpa | MessageConfirmationRéceptionRetourDIpa) => void;
}>;
tâches: {
[key: string]: Tâche;
};
constructor();
__call__(fonction: string[], args?: {
[key: string]: unknown;
}): Promise<unknown>;
appelerFonctionSuivre(idRequête: string, fonction: string[], args: {
[key: string]: unknown;
}, nomArgFonction: string): Promise<types.schémaFonctionOublier | {
[key: string]: (...args: unknown[]) => void;
}>;
appelerFonctionAction<T>(idRequête: string, fonction: string[], args: {
[key: string]: unknown;
}): Promise<T>;
erreur({ erreur, code, idRequête, }: {
erreur: string;
code: string;
idRequête?: string;
}): void;
oublierTâche(idRequête: string): Promise<void>;
abstract envoyerMessageÀIpa(message: MessagePourIpa): void;
recevoirMessageDIpa(message: MessageDIpa): Promise<void>;
suivreErreurs({ f, }: {
f: (x: ErreurMandataire | undefined) => void;
}): types.schémaFonctionOublier;
}
export type MandataireConstellation<T> = Required<T> & Mandatairifiable;
export declare const générerMandataire: <T>(mandataireClient: Mandatairifiable) => MandataireConstellation<T>;
export {};