Référence d'API — nodefony — types
stable
Documentation › Référence d’API › nodefony › types
Générée depuis les déclarations de types publiées de
nodefony10.0.0-beta.6 : exactement ce que reçoit une application qui l’installe. Cette page n’existe dans aucun dépôt — pour la corriger, on corrige le TSDoc du code.
nodefony#
import { … } from "nodefony" — 52 symboles.
Interfaces (43)#
DefaultOptionsService#
interface DefaultOptionsService extends EventDefaultInterface
events?: { nbListeners: number; }syslog?: SyslogDefaultSettings
IAdminApi#
interface IAdminApi
Contrat qu’un producteur (module ou kernel) implémente pour exposer sa donnée d’admin à Studio via le data plane /nodefony/<namespace>/api/*.
readonly adminNamespace: string— Segment de route ET clé d’identification unique.adminDescriptor(): IAdminDescriptor— Métadonnées d’affichage (sidebar Studio).adminEndpoints(): IAdminEndpoint[]— Endpoints exposés par ce producteur.
IAdminDescriptor#
interface IAdminDescriptor
Métadonnées d’affichage du module dans la sidebar Studio.
label: string— Libellé humain, ex"HTTP","Sécurité","Kernel".icon?: string— Nom d’icône (jeu Tabler, cohérent avec le frontend Studio).order?: number— Ordre d’affichage croissant dans la sidebar.role?: string— Rôle requis pour voir l’entrée de menu (peut différer par endpoint).
IAdminEndpoint#
interface IAdminEndpoint<T = unknown>
Définition déclarative d’un endpoint, relative au namespace du module.
path: string— Chemin RELATIF au namespace, sans/initial.method?: AdminHttpMethod— Méthode HTTP, défaut"GET".role?: string— Rôle minimum requis pour appeler l’endpoint (RBAC appliqué par le broker).public?: boolean— Endpoint PUBLIC : le broker n’impose AUCUN rôle (pas de défautROLE_NODEFONY_ADMIN), la route est atteignable sans authentification.summary?: string— Résumé court pour l’auto-doc Studio et l’introspection.page?: IAdminPageCapabilities— Capacités de pagination publiées dans le catalogue admin — tri possible et vocabulaire de filtre.credentials?: boolean— Le corps porte un SECRET de connexion (mot de passe, code) : en production, la porte qui transporte la requête la refuse en 403 si elle est arrivée en clair (HTTP), AVANT le contrôle de rôle et le han …handler: AdminHandler<T>— Implémentation.
IAdminPageCapabilities#
interface IAdminPageCapabilities
Ce qu’un endpoint paginé sait faire — publié, pour que son client cesse de le deviner.
sortable?: () => readonly string[]— Champs triables — une fonction, parce que la réponse dépend du store effectivement branché au démarrage, pas d’une constante de compilation.filters?: IFilterSpec— Vocabulaire de filtre de l’endpoint (IFilterSpec), sérialisable tel quel : un nom → une nature ("boolean","int","string") ou la liste fermée de ses valeurs, qui vaut allowlist.search?: () => boolean— L’endpoint sait-il chercher (?q=) — même raison d’être queIAdminPageCapabilities.sortable, et même piège s’il manque : une console qui affiche une barre de recherche que le serveur ignore pré …facets?: Readonly<Record<string, Readonly<Record<string, unknown>>>>— Table des facettes de cet endpoint — nom → jeu de filtres qui la sélectionne.
IAdminRegistry#
interface IAdminRegistry
Façade d’enregistrement du data plane admin — vue minimale du broker que voit un producteur.
register(api: IAdminApi): this— Enregistre un producteur.unregister(namespace: string): boolean— Retire un producteur (et ses routes si déjà montées).has(namespace: string): boolean—truesi un producteur est enregistré sous ce namespace.getApi(namespace: string): IAdminApi— Producteur enregistré sous ce namespace, ouundefined.list(): readonly IAdminApi[]— Liste immuable des producteurs enregistrés.
IAdminRequest#
interface IAdminRequest
Requête admin normalisée — projection minimale du Context HTTP/WS.
params: Readonly<Record<string, string>>— Variables de route extraites du pattern, ex{id}→params.id.query: Readonly<Record<string, string | string[]>>— Query string parsée (?a=1&b=2→{ a: "1", b: "2" }).body: unknown— Corps de requête déjà parsé (JSON),nullsi absent.user: unknown— Utilisateur authentifié injecté par le firewall (P6),nulltant que l’auth est mock ou la route anonyme.roles: readonly string[]— Rôles résolus de l’utilisateur courant — base du contrôle d’accès.requestId?: string— Corrélation de logs (ALSRequestContext.getRequestId()).idempotencyKey?: string— Clé d’idempotence d’une mutation (modèle Stripe), si fournie par le client (en-tête HTTPIdempotency-Keyouparams.idempotencyKeydu pont WS).
IAdminResponse#
interface IAdminResponse<T = unknown>
Enveloppe de réponse d’un endpoint admin.
status?: number— Code HTTP, défaut200.headers?: Readonly<Record<string, string>>— En-têtes additionnels (le broker posecontent-type: application/json).body: T— Charge utile sérialisable JSON.
IContainer#
interface IContainer
Contrat public du DI Container nodefony. Container et Scope l’implémentent.
readonly id: stringset(name: string, object: unknown): voidget<T = unknown>(name: string): T | nullremove(name: string): booleanhas(name: string): booleankeys(): string[]entries(): [ string, unknown ][]addScope(name: string): objectenterScope(name: string): IScopeleaveScope(scope: IScope): voidremoveScope(name: string): voidscopeCount(name: string): number— Nombre d’instances vivantes du scope nommé (introspection/sondes).log(pci: Pci, severity?: Severity, msgid?: Msgid, msg?: Message): ReturnType<Syslog["log"]> | voidclean(): voidreset(): void
IErrorSample#
interface IErrorSample
Un exemple d’erreur, de quoi la retrouver dans le journal.
route: stringstatus: number | nullerror: string | nullrequestId: string
IIdempotencyKeyEntry#
interface IIdempotencyKeyEntry
Une clé d’idempotence telle qu’exposée à l’INTROSPECTION admin.
readonly key: string— La clé d’idempotence (telle que composée par l’appelant).readonly state: "in-flight" | "done"—in-flight= mutation en cours ;done= réponse mémorisée (rejouable).readonly expiresAtMs: number— Échéance de l’entrée (epoch ms) — au-delà, la clé redevientfresh.readonly hasResponse: boolean—truesi une réponse est mémorisée (jamais son contenu).
IIdempotencyListQuery#
interface IIdempotencyListQuery extends IPageQuery
Requête de listing des clés d’idempotence — IPageQuery + le filtre d’exploitation. q (hérité) = préfixe de clé : les clés sont composées (identité + méthode + chemin), donc le préfixe isole un scope entier.
state?: "in-flight" | "done"— Restreint à un état.
IIdempotencyStore#
interface IIdempotencyStore
Cache d’idempotence borné (modèle Stripe Idempotency-Key) — dédoublonne les mutations rejouées (reconnexion socket, double-clic) du data plane admin comme des controllers userland décorés @Idempotent.
begin(key: string, fingerprint: string): IdempotencyOutcome | Promise<IdempotencyOutcome>— Réserve atomiquement la clé et renvoie le verdict à suivre.complete(key: string, response: IdempotentResponse): void | Promise<void>— Mémorise la réponse d’une clé in-flight (TTL) → rejeux futurs =replayed.abort(key: string): void | Promise<void>— Libère une clé in-flight dont l’exécution a échoué : rien n’est mémorisé (un échec doit pouvoir être réessayé).gc?(now?: number): Promise<number> | number— Purge les entrées expirées — présente UNIQUEMENT sur les impls SANS expiration native (drizzle→DELETE WHERE expiresAt <= now).listPage(query: IIdempotencyListQuery): Promise<IPage<IIdempotencyKeyEntry>>— Page de clés vivantes — introspection admin (repérer une clé figée in-flight qui bloque les rejeux d’un client).readonly size: number— Nombre d’entrées vivantes (observabilité / tests).
IKernel#
interface IKernel extends IService
Contrat public du Kernel nodefony. Utilisé comme type de IService.kernel pour éviter l’import circulaire Kernel.ts → Service.ts → IService.ts → IKernel.ts → Kernel.ts.
runProfile: IRunProfilereadonly version: stringreadonly environment: EnvironmentTypereadonly debug: DebugTypereadonly projectName: stringreadonly path: stringreadonly varDir?: FileClass— Répertoire des données runtime PERSISTÉES (<path>/var) — base commune des stores fichier (passkeys, TOTP, sessions) et bases SQLite.readonly isDev: booleanreadonly isProd: booleanreadonly infra: IInfra— Infra déclarée (database/cache/logs) résolue depuis l’environnement (URLsNF_DATABASE_URL/NF_REDIS_URL/…).readonly storeResolutions: IStoreResolution[]— Résolutions EFFECTIVES des stores de persistance, capturées au boot par chaque brique (registerStoreResolution) — la vérité vécue (replis inclus), alimente l’écran Studio « Stores ».registerStoreResolution(resolution: Omit<IStoreResolution, "provenance">): void— Enregistre la résolution effective d’une brique de persistance (idempotent parbrick— la dernière résolution gagne).readonly isTTY: boolean— L’environnement FOURNIT-il un vrai terminal ?readonly pid: numberreadonly platform: NodeJS.PlatformtmpDir?: FileClass— Répertoire temporaire du projet (<cwd>/tmp), initialisé au boot.readonly started: booleanreadonly booted: booleanreadonly ready: booleanreadonly postReady: booleanreadonly suppressBootBanners: boolean— Supprime les bannières serveurs sous l’écran de boot animé (dev).readonly Events: Readonly<EventsType>readonly progress: numberreadonly trunk: TrunkTypecommand: ICommand | nullcommandArgs: unknown[]domain: stringcli: ICliKernel | nullreadonly modules: Record<string, IModule>start(): Promise<this>terminate(code?: number, quiet?: boolean): Promise<this>—quietmuselle l’affichage (log « terminate : N ») — jamais le drain.isTrunk(): Promise<TrunkType>isModule(subclass: unknown): booleanaddModule(Mod: unknown, ...args: unknown[]): Promise<IModule>loadModule(nameOrPath: string): Promise<IModule>getModule(name: string): IModulegetModules(): Record<string, IModule>replaceModuleOptions(mod: IModule, options: Record<string, unknown>): void— Remplace la configuration FIGÉE d’un module (édition à chaud en développement) :mod.optionset le registre lu paruseConfig.getNetwork(): KernelNetworkResultcheckPath(myPath: string): string | nullisCommandComplete(progress: number): booleangetBootReport(): IBootReport— Verdict agrégé du dernier boot (modules, serveurs, santé) — vérité unique.reportBootLine(phase: string, line: string): void— AJOUTE une ligne de détail à afficher sous une phase de boot (canal neutre).setBootLines(phase: string, lines: string[]): void— REMPLACE les lignes de détail d’une phase (producteur idempotent).getBootLines(phase: string): string[]— Lignes de détail déclarées pour une phase de boot.reportBootNotice(notice: IBootNotice): void— Déclare un point d’attention du démarrage (constat + geste), rendu au bilan.reportBootLink(link: IBootLinkDeclaration): void— Déclare une adresse à ouvrir, par son chemin sur l’application.readonly readinessBlocked: number— Nombre de composants qui retiennent la mise en service —0= disponible.readonly servable: boolean— Ce processus a-t-il le droit de recevoir du trafic ?setReadiness(name: string, ready: boolean, reason?: string, blocking?: boolean, action?: string): void— Pose le verdict de disponibilité d’un composant nommé (schéma en retard, cache froid…).clearReadiness(name: string): void— Retire un contributeur : sa voix ne retient plus rien.readinessReport(): IReadinessContributor[]— État de chaque contributeur — pour un diagnostic, jamais pour la sonde.
IMcpCaller#
interface IMcpCaller
Ce que le transport a pu ÉTABLIR de l’appelant — jamais ce qu’il prétend.
authenticated: boolean— Une identité a-t-elle été PROUVÉE (jeton validé) ?scopes: readonly string[]— Scopes réellement accordés par le serveur d’autorisation.roles: readonly string[]— Rôles Nodefony de cet appelant — ce sur quoi le plan d’administration tranche.subject?: string— Sujet du jeton (sub), pour l’audit et pour filtrer les données rendues.
IMcpTool#
interface IMcpTool extends IMcpToolDefinition
Un outil exécutable : ce que tools/list publie, plus ce qui répond.
scopes?: readonly string[]— Scopes OAuth exigés — tous, pas au moins un.scopesFor?: (args: Readonly<Record<string, unknown>>) => readonly string[]— Scopes que CES arguments exigent, en plus deIMcpTool.scopes— un paramètre qui élargit ce que l’outil fait (agir au nom d’un autre compte, écrire) sans conditionner sa visibilité.requiresAuth?: boolean— Exige une identité prouvée, sans scope particulier.actsForUser?: boolean— L’outil agit AU NOM du propriétaire du jeton : son handler s’exécute dans une bulle de requête oùRequestContext.getAuthenticatedUser(), les services qu’il appelle et l’autorisation (`authorization. …handler: (args: Record<string, unknown>, caller: IMcpCaller, run?: IMcpToolRun) => IMcpToolResult | Promise<IMcpToolResult>— Implémentation.
IMcpToolAnnotations#
interface IMcpToolAnnotations
Ce qu’un outil promet de son effet — les indices ToolAnnotations de la spec MCP (révision 2026-07-28, schema.ts), publiés dans tools/list.
title?: string— Titre lisible, préféré au nom par les interfaces.readOnlyHint?: boolean— L’outil ne modifie RIEN de son environnement (défaut de la spec :false).destructiveHint?: boolean— Une écriture peut détruire (défaut :true) —false: n’ajoute que.idempotentHint?: boolean— Rappeler l’outil avec les mêmes arguments n’a pas d’effet de plus (défaut :false) — vrai d’un remplacement ou d’une suppression, faux d’une création ou d’un envoi.openWorldHint?: boolean— L’outil touche un monde extérieur ouvert — web, API tierce, courriel (défaut :true).
IMcpToolDefinition#
interface IMcpToolDefinition
Un outil tel que tools/list le publie — sans son implémentation.
name: string— Identifiant d’appel.description: string— ⭐ Le premier critère de déclenchement de l’outil, avant toute considération technique.inputSchema: Record<string, unknown>— Schéma JSON des arguments attendus.annotations?: IMcpToolAnnotations— Ce que l’outil promet de son effet — à poser sur CHAQUE outil.
IMcpToolResult#
interface IMcpToolResult
Ce que rend un outil — du contenu, et l’aveu d’un échec métier.
content: { type: "text"; text: string; }[]isError?: boolean
IMcpToolRun#
interface IMcpToolRun
Ce que la porte prête à un outil pendant SON exécution : de quoi savoir que l’agent est parti, et de quoi lui donner signe de vie.
readonly signal: AbortSignal— Abattu quand l’agent abandonne l’appel.progress(progress: number, total?: number, message?: string): void— Signale l’avancement (notifications/progress).
IModule#
interface IModule extends IService
Contrat public d’un module nodefony. Module.ts implémente cette interface.
path: stringisApp: booleanpackage?: PackageJsononKernelRegister?(): Promise<this>onKernelBoot?(): Promise<this>onKernelReady?(): Promise<this>init?(kernel?: IKernel): Promise<this>addService(service: unknown, ...args: unknown[]): Promise<IService>loadService(service: string, ...args: unknown[]): Promise<IService>getDependencies(): string[]getController<T = unknown>(name: string): IControllerConstructor<T>getControllers<T = unknown>(): Record<string, IControllerConstructor<T>>getServiceNames(): string[]getMcpTools?(): IMcpTool[]— Outils que ce module ajoute à la porte MCP de l’application.configSchema(): unknowngetPackageJson(cwd?: string): Promise<PackageJson>getModuleName(): stringgetModuleVersion(): stringinstall(force?: boolean): Promise<number | Error>outdated(): Promise<number | Error>loadJson(url: string, cwd?: string): Promise<JSONObject>
IModuleManifestEntry#
interface IModuleManifestEntry
Entrée détaillée d’un manifeste de modules.
name: string— Nom du package/module à charger (résolu parimport()dynamique).policy?: ModulePolicy— Politique de chargement.when?: (config: TypeKernelOptions) => boolean— Garde de chargement évaluée sur la config fusionnée du kernel.config?: Record<string, unknown>— Config colocalisée du module (formeuse(name, config)).
INPlusOne#
interface INPlusOne
Un N+1 : la même forme SQL répétée dans une requête.
route: stringcontroller: string | nullaction: string | nullshape: stringmaxRepeats: number— Plus grand nombre de répétitions vu dans une requête.requests: number— Requêtes touchées.totalMs: number— Temps cumulé de ces répétitions.sampleRequestId: string— Une requête touchée, pour aller voir son profil complet.
IPage#
interface IPage<T>
Une page de résultats — la sortie unique de toute pagination Nodefony.
items: T[]— Les éléments de la page (au pluslimit).total?: number— Total exact de la collection filtrée — présent siIPageQuery.withTotaln’est pasfalseet que le backend sait compter à coût raisonnable.limit: number— Taille de page demandée (écho deIPageQuery.limit).offset?: number— Décalage de cette page (mode offset ; absent en mode curseur).hasNext: boolean—trues’il existe au moins un élément au-delà de cette page.nextCursor?: string | null— Jeton de la page suivante (mode curseur) — à repasser enIPageQuery.cursor.
IPageQuery#
interface IPageQuery
LE contrat de pagination unique de Nodefony. Tous les stores, toutes les API (présents et futurs) paginent avec ce type — c’est un standard de développement, jamais une pagination maison au cas par cas.
limit: number— Taille de page — obligatoire (jamais « tout »).offset?: number— Décalage depuis le début de la collection filtrée (mode offset).cursor?: string— Jeton de page (mode curseur) : ne renvoyer que les éléments situés « après » lui dans l’ordre du store.order?: Array<[ string, "ASC" | "DESC" ]>— Tri : couples[champ, sens].withTotal?: boolean— Renvoyer le total exact (IPage.total) ou non.q?: string— Recherche plein-texte best-effort — le champ ciblé et la sémantique (préfixe / sous-chaîne / casse) sont définis par chaque store et documentés côté store.tenantId?: string | null— RÉSERVÉ multi-tenant — slot du contrat pour le scoping par tenant, appliqué au niveau du store le jour du chantier tenant.
IPhaseTotal#
interface IPhaseTotal
Temps cumulé d’une phase sur les requêtes d’une route.
totalMs: numbercount: number— Requêtes où la phase est apparue et s’est terminée.
IProfileEntry#
interface IProfileEntry
Profil complet d’une requête (HTTP ou frame WS), servi par /{requestId}.
requestId: stringseq: number— Numéro d’ordre de collecte, croissant sur la vie du profileur.ts: number— Horodatage de la collecte (Date.now()), pour le tri client.kind: "http" | "ws"method: string | nullurl: stringscheme: stringstatus: number | nulldurationMs: number | null— Durée de la requête (ms), de son arrivée au dernier octet de la réponse — la même que la ligne d’accès ;nullsi le chronométrage est coupé.route: string | nullcontroller: string | nullaction: string | nullremoteAddress: string | nulluser: string | null— Identité (username) si le firewall l’a injectée, sinonnull.traceparent: string | null—traceparentW3C Trace Context — corrélation distribuée.error: string | nullphases: IProfilePhase[]queries?: IProfileQuery[]— Requêtes ORM mesurées —undefinedquand aucun adaptateur n’a poussé.security?: IProfileSecurity— Traversée du firewall —undefinedsi la requête n’a croisé aucune zone.
IProfilePhase#
interface IProfilePhase
Une phase du pipeline, projetée pour le transport (durée résolue).
name: stringstartMs: number— Début relatifperformance.now()(ms) — sert au calcul du waterfall.durationMs: number | null— Durée en ms,nullsi la phase ne s’est pas terminée (erreur).
IProfileQuery#
interface IProfileQuery
Une requête SQL/NoSQL exécutée pendant la requête : les adaptateurs ORM la poussent dans le tampon de la requête (RequestContext.pushQuery), que le profileur relit au teardown. Absent hors développement, et quand aucun adaptateur n’a rien poussé.
sql: string— Requête (SQL ou commande NoSQL), tronquée si volumineuse.startMs?: number— Début relatif (performance.now()) — même horloge que les phases.durationMs: number— Durée d’exécution en ms.rows?: number— Lignes affectées/retournées, si connu.connector?: string— Connecteur émetteur (drizzle,mongoose…).
IProfileReport#
interface IProfileReport
Le rapport agrégé.
requests: number— Requêtes agrégées (hors outillage filtré).http: numberws: numberfilteredTooling: number— Requêtes de l’outillage écartées (/nodefony/…,/_vite/…).untimed: number— Requêtes sans durée mesurée.routes: IRouteStats[]— Triées par p95 décroissant.nPlusOne: INPlusOne[]— Triés par temps cumulé décroissant.slowQueries: ISqlShapeStats[]— Les dix formes SQL les plus coûteuses (temps cumulé décroissant).sqlShapesDropped: number— Formes SQL distinctes vues au-delà de la capacité, comptées sans détail.errors: IErrorSample[]
IProfileSecurity#
interface IProfileSecurity
Traversée du firewall par cette requête — ce qui était possible (la zone : son nom, si elle est protégée, quels authenticators elle accepte) croisé avec ce qui s’est passé (quel maillon a résolu l’identité, l’issue, le motif d’un refus). Une requête qui PASSE n’émet aucun événement d’audit : sans ce relevé, elle serait invisible côté sécurité.
zone: string | null— Nom de la zone traversée.protected: boolean— La zone exige-t-elle une identité (security: true) ?mode: string | null— Chaîne d’authenticators :first= le premier qui supporte,all= MFA.candidates: string[]— Authenticators que la zone accepte (ce qui était POSSIBLE).authenticator: string | null— Authenticator qui a RÉELLEMENT résolu l’identité.outcome: string | null—granted·anonymous·denied·failure·throttled·bypass·public.reason: string | null— Motif du refus (no_credentials,invalid_credentials…).roles: string[] | null— Rôles du token résolu (l’axe autorisation).
IProfileSummary#
interface IProfileSummary
Résumé léger d’un profil pour la liste recent (sans les phases).
requestId: stringts: numberkind: "http" | "ws"method: string | nullurl: stringstatus: number | nulldurationMs: number | nullroute: string | nullerror: string | null
IRouteStats#
interface IRouteStats
Statistiques d’une route sur la fenêtre agrégée.
route: stringkind: "http" | "ws"controller: string | nullaction: string | nullcount: numberuntimed: number— Requêtes sans durée mesurée (chronométrage coupé :timing.enabled: false).served: number— Requêtes SERVIES et chronométrées (statut < 400, sans exception) : la population de tout ce qui se dit « par requête » ci-dessous.p50Ms: number | null— Percentiles et maximum, sur les requêtes servies.p95Ms: number | nullmaxMs: number | nullstatus: IStatusBreakdownerrors: number— Requêtes en erreur : statut ≥ 500 ou exception levée.queries: { total: number; perRequestMax: number; totalMs: number; }— Requêtes SQL/NoSQL des requêtes servies : total, maximum dans une requête, temps CUMULÉ (des requêtes parallèles s’y additionnent).phases: Record<string, IPhaseTotal>— Temps par phase des requêtes servies,action.selfcompris.
IScope#
interface IScope extends IContainer
Contrat public d’un scope (Container enfant lié à un parent). Étend IContainer et ajoute name, l’état de fermeture et le rattachement d’objets.
readonly name: stringreadonly closed: boolean—trueune fois le scope refermé parleaveScope(): ses services sont libérés, unget()y rendnullet unset()lève.hasOwn(name: string): boolean—truesinameest posé SUR ce scope — jamais un service hérité du conteneur parent.own(instance: object): void— Lie la durée de vie d’un objet à celle du scope : sonclean(), s’il en a un, est appelé à la fermeture du scope, dans l’ordre INVERSE des rattachements (le dernier créé est nettoyé le premier).
IServerKernel#
interface IServerKernel
initServers(): Promise<IStartedServer[]>— Démarre les serveurs HTTP/HTTPS/WS/WSS activés par la configuration.
IService#
interface IService
Contrat public de tout service nodefony. Kernel, Module, Controller, adapters ORM — tous implémentent IService.
readonly name: stringreadonly options: DefaultOptionsServicereadonly container: IContainer | nullreadonly kernel: IKernel | nullreadonly syslog: Syslog | nullreadonly notificationsCenter: Event— undefined si notificationsCenter=false passé au constructeur, ou après clean()getName(): stringinitSyslog(environment?: EnvironmentType, debug?: DebugType, options?: conditionsInterface): ReturnType<Syslog["init"]> | nullclean(syslog?: boolean): voidlog(pci: Pci, severity?: Severity, msgid?: Msgid, msg?: Message, moduleName?: string): Pdulogger(pci: Pci, ...args: unknown[]): voidtrace(pci: Pci, ...args: unknown[]): voidget<T>(name: string): T | nullset(name: string, obj: unknown): voidremove(name: string): booleanhas(name: string): booleanon(eventName: string | symbol, listener: EventListener): thisonce(eventName: string | symbol, listener: EventListener): thisoff(eventName: string | symbol, listener: EventListener): thisemit(eventName: string | symbol, ...args: unknown[]): booleanfire(eventName: string | symbol, ...args: unknown[]): booleanemitAsync(eventName: string | symbol, ...args: unknown[]): Promise<unknown>fireAsync(eventName: string | symbol, ...args: unknown[]): Promise<unknown>emitAsyncGuarded(eventName: string | symbol, options?: IGuardedEmitOptions, ...args: unknown[]): Promise<IGuardedEmitResult>— Émet en série en ISOLANT chaque listener (try/catch, timeout optionnel) : un rejet n’empêche pas les suivants.addListener(eventName: string | symbol, listener: EventListener): thisremoveListener(eventName: string | symbol, listener: EventListener): thisremoveAllListeners(eventName?: string | symbol): thisprependListener(eventName: string | symbol, listener: EventListener): thisprependOnceListener(eventName: string | symbol, listener: EventListener): thislisten(eventName: string | symbol, listener: EventListener): (...args: unknown[]) => booleansettingsToListen(localSettings: EventDefaultInterface, context: object): voideventNames(): (string | symbol)[]listenerCount(eventName: string | symbol, listener?: EventListener): numberlisteners(eventName: string | symbol): EventListener[]rawListeners(eventName: string | symbol): EventListener[]getMaxListeners(): numbersetMaxListeners(n: number): this
ISortableSource#
interface ISortableSource
Une capacité de tri se DÉCLARE — le socle commun à tout ce qui rend des pages triables (stores de sessions, de jetons, d’endpoints, dépôts d’utilisateurs…).
readonly sortableFields?: readonly string[]— Champs triables, en noms publics (ceux de l’URL), ou absent si ce backend ne sait pas trier.
ISqlShapeStats#
interface ISqlShapeStats
Une forme SQL et son coût sur la fenêtre.
shape: stringconnector: string | nullcount: numbertotalMs: numbermaxMs: numberroutes: string[]— Routes qui l’ont émise (au plus cinq).
IStartedServer#
interface IStartedServer
Ce que le Kernel utilise d’un serveur démarré : afficher son adresse d’écoute.
showBanner(): void— Affiche la bannière « Server Listen on… » du serveur.
IStatusBreakdown#
interface IStatusBreakdown
Répartition des statuts HTTP d’une route.
s2xx: numbers3xx: numbers4xx: numbers5xx: numberunauthorized: number— Dont 401 : la route exige une authentification que la requête n’avait pas.forbidden: number— Dont 403 : authentifiée, mais refusée.
ISyslog#
interface ISyslog
settings: SyslogDefaultSettingsreadonly ringStack: Pdu[]readonly bufferCapacity: number— Capacité MAX du ring buffer (plafondmaxStack).readonly ringEnabled: boolean—truesi les Pdu sont stockés dans le ring (relecture mémoire active).setRingEnabled(enabled: boolean): boolean— Active/désactive le stockage mémoire (ring) à chaud — outil avancé.readonly streamEnabled: boolean—truesi la diffusion temps réel (nodefony:syslog) est active.setStreamEnabled(enabled: boolean): boolean— Active/désactive la diffusion temps réel à chaud (onglet Live).burstPrinted: numbermissed: numberinvalid: numbervalid: numbererrorTotal: number— Cumul monotone des logs de sévérité 0–3 (ERROR/CRITIC/ALERT/EMERGENCY).criticTotal: number— Sous-ensemble CRITIQUE (sévérité 0–2 : CRITIC/ALERT/EMERGENCY).start: numberasync: booleaninit(environment: EnvironmentType, debug?: DebugType, options?: conditionsInterface): voidclean(): thisreset(): thisclearLogStack(): voidlog(payload: Pci, severity?: Severity, msgid?: Msgid, msg?: Message): Pduerror(data: Pci): Pduwarn(data: Pci): Pduinfo(data: Pci): Pdudebug(data: Pci): Pdutrace(data: Pci, msgid?: Msgid, msg?: Message): Pduprint(...args: Pci[]): PdulogMultiple(severity: Severity, ...args: Pci[]): PdupushStack(pdu: Pdu): numbergetLogStack(start?: number, end?: number, condition?: conditionsInterface): Pdu[] | PdugetLogs(conditions: conditionsInterface, stack?: Pdu[] | null): Pdu[]logToJson(conditions: conditionsInterface, stack?: Pdu[] | null): stringloadStack(stack: Pdu[] | string, doEvent?: boolean, beforeConditions?: (pdu: Pdu, stackItem: Pdu) => void | null): Pdu[]filter(conditions: conditionsInterface, callback: CallbackFunction): voidlistenWithConditions(conditions: conditionsInterface, callback: CallbackFunction): voidaddTransport(transport: ITransport): thisremoveTransport(transport: ITransport): thislistTransports(): { name: string; enabled: boolean; }[]— Liste polymorphe des transports d’écriture (axe WRITE) + étatenabled.setTransportEnabled(name: string, enabled: boolean): boolean— Active/désactive un transport d’écriture à chaud, par nom (dev/diagnostic).
ITransport#
interface ITransport
readonly name: stringsend(pdu: Pdu): Promise<void>close?(): Promise<void>— Libère ce que le transport tient ouvert (fichier, socket).
IdempotentResponse#
interface IdempotentResponse
Réponse mémorisée d’une mutation idempotente — la forme {status, headers?, body} produite par un endpoint (data plane admin AdminApiController.runAdmin, ou action userland @Idempotent), pour la rejouer telle quelle à un rejeu (même statut, même corps, même en-têtes).
status: number— Code HTTP de la réponse mémorisée.headers?: Readonly<Record<string, string>>— En-têtes additionnels éventuels.body: unknown— Charge utile sérialisable JSON.
Types (9)#
AdminHandler#
type AdminHandler<T = unknown> = (request: IAdminRequest) => T | IAdminResponse<T> | Promise<T | IAdminResponse<T>>
Handler d’un endpoint admin : fonction pure entrée → sortie.
AdminHttpMethod#
type AdminHttpMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE"
Méthodes HTTP supportées par le data plane admin.
DebugType#
type DebugType = boolean | string | string[]
EnvironmentType#
type EnvironmentType = keyof typeof environment
EventListener#
type EventListener = (...args: any[]) => unknown
Listener d’événement Nodefony : arguments libres, retour libre — une valeur ou une PROMESSE, que emitAsync/fireAsync attendent et collectent. Un retour void ferait passer chaque listener async pour une promesse perdue.
IModuleManifest#
type IModuleManifest = (string | IModuleManifestEntry)[]
Manifeste déclaratif des modules d’une application Nodefony, exposé via config.modules. Le Kernel en est le seul orchestrateur : il lit cette liste, la filtre (policy + when + environnement) et charge les modules en série à onPreRegister.
IdempotencyOutcome#
type IdempotencyOutcome = { state: "fresh"; } | { state: "in-flight"; } | { state: "replayed"; response: IdempotentResponse; } | { state: "mismatch"; }
Verdict de IIdempotencyStore.begin pour une clé d’idempotence donnée. Aligné sur draft-ietf-httpapi-idempotency-key-header-08 §2.6/§2.7.
ModulePolicy#
type ModulePolicy = "mandatory" | "optional" | "dev"
Politique de chargement d’un module.
PartialInput#
type PartialInput<T> = { [K in keyof T]?: T[K]; }
Données d’écriture partielles telles qu’elles arrivent d’un schéma de validation : une clé peut manquer OU valoir undefined, et les deux disent la même chose — « ne pas toucher à ce champ ».