Nodefony 10.0.0-beta.5
Framework Node.js fullstack — HTTP & WebSocket, même contexte

Référence d'API — @nodefony/orm-core — racine

stable

Documentation › Référence d’API › @nodefony/orm-core › racine

Générée depuis les déclarations de types publiées de @nodefony/orm-core 10.0.0-beta.5 : 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/orm-core#

import { … } from "@nodefony/orm-core" — 51 symboles.

Classes (9)#

AbstractCrudService#

abstract class AbstractCrudService<T, R extends IRepository<T> = IRepository<T>> extends Service

Service CRUD générique — socle réutilisable au-dessus d’un IRepository.

Entity#

abstract class Entity<S = unknown, M = unknown> implements IEntity<S, M>

Classe de base abstraite d’une entité, indépendante du driver ORM.

EntityRegistry#

class EntityRegistry

Registre cross-ORM des entités, indexé par nom logique puis par connecteur.

InvalidOrderOption#

class InvalidOrderOption extends Error

Levée quand l’option de lecture order n’est pas un tableau de couples [champ, "ASC" | "DESC"].

Orm#

abstract class Orm extends Service implements IOrm

Classe de base abstraite de tout ORM Nodefony — câble Service (DI, Syslog, bus d’événements) et le contrat IOrm, et s’auto-enregistre dans le ormRegistry process-wide à la construction.

OrmRegistry#

class OrmRegistry

Registre process-wide des instances ORM enregistrées sous un nom unique.

ReferencedEntityError#

class ReferencedEntityError extends Error

Levée quand une suppression viserait une entité encore RÉFÉRENCÉE par une relation obligatoire d’une autre entité.

SavepointNotSupportedError#

class SavepointNotSupportedError extends Error

Levée par ITransaction.savepoint() / rollbackTo() sur un moteur qui ne porte PAS de savepoints (MongoDB).

UnknownCriteriaField#

class UnknownCriteriaField extends Error

Levée quand un critère de repository référence un champ inconnu de l’entité ciblée.

Fonctions (24)#

assertOrderOption#

function assertOrderOption(order: unknown, entity: string): void

Vérifie que l’option de lecture order respecte le contrat portable Array<[string, "ASC" | "DESC"]>, ou lève InvalidOrderOption.

buildConnectionHealth#

function buildConnectionHealth(filter?: string): Promise<IConnectionHealth[]>

Construit le diagnostic complet des connexions (per-instance) : ping live (latence enregistrée dans la fenêtre glissante), sonde profonde driver (IOrm.probe — stockage/pool), et compteurs de cycle de vie du connectionMonitor. Réutilisé par l’endpoint connection/health ET par le ticker hub realtime de Studio (« contrôle total des ORM »).

buildOrmFlow#

function buildOrmFlow(filter?: string): IOrmFlowReport

Construit le rapport de flux ORM (per-instance) : débit (via total), latence (moyenne + EWMA), pire latence et requêtes lentes récentes, par connecteur enregistré. Lecture pure du queryFlowMonitor (aucune requête émise — contrairement à buildConnectionHealth qui ping) → bon marché. Réutilisé par l’endpoint flow ET le ticker hub realtime de Studio.

buildOrmGraph#

function buildOrmGraph(connectorFilter?: string): IOrmGraph

Construit le graphe canonique complet (optionnellement filtré par connecteur).

buildOrmLeanHealth#

function buildOrmLeanHealth(): IOrmLeanHealth

Santé ORM lean per-instance — somme process-wide de tous les connecteurs enregistrés, destinée à voyager dans le report de sonde cluster (« ORM par worker »). C’est la fonction branchée par le driver via setOrmHealthProvider (core) ; le framework la lit dans le report.

createOrmAdminApi#

function createOrmAdminApi(): IAdminApi

Construit le producteur IAdminApi du data plane ORM.

defineEntity#

function defineEntity<S, M = unknown>(definition: IEntityDefinition<S, M>): IEntityDefinition<S, M>

Déclare une entité applicative. Fonction d’identité typée : elle ne fait qu’attacher le type — aucun effet de bord, aucun enregistrement.

describeConnectFailure#

function describeConnectFailure(subject: string, diagnosis: IConnectionDiagnosis, cause: string, advice?: string): string

Compose le message d’échec au démarrage d’un connecteur — UNE rédaction pour tous les adapters.

diagnoseConnectionFailure#

function diagnoseConnectionFailure(error: unknown, target?: IConnectionTarget, platform?: string): IConnectionDiagnosis

Explique un échec de connexion en distinguant « personne n’écoute » de « quelqu’un a répondu et refuse ».

escapeLikeTerm#

function escapeLikeTerm(text: string): string

Neutralise les métacaractères d’un texte pour l’insérer dans un motif $like — %, _ et l’antislash lui-même.

isFieldOperators#

function isFieldOperators(value: unknown): value is FieldOperators<unknown>

Indique si une valeur de champ est un objet d’FieldOperators.

isUpdateOperators#

function isUpdateOperators(value: unknown): value is UpdateOperators<unknown>

Indique si une valeur d’écriture est un objet d’UpdateOperators.

likePatternToRegExp#

function likePatternToRegExp(pattern: string): RegExp

Traduit un motif $like en expression régulière ancrée — pour les stores qui n’ont pas de LIKE (MongoDB, implémentations en mémoire).

paginate#

function paginate<T>(repo: IRepository<T>, page: PageQuery<T>, options?: IPaginateOptions<T>): Promise<IPage<T>>

Pagine un IRepository de façon portable — au-dessus des primitives natives find(criteria, { limit, offset, order }) et count(criteria) que tout adapter implémente déjà (SQL LIMIT/OFFSET+COUNT, Mongo skip/limit+ countDocuments…). Aucun adapter n’a à changer : un seul aller vers la page, jamais de matérialisation de toute la collection.

parseConnectionTarget#

function parseConnectionTarget(url?: string | null): IConnectionTarget

Extrait l’hôte, le port, la base et le compte d’une URL de connexion, sans son secret.

registerOrmAdminApi#

function registerOrmAdminApi(registry: IAdminRegistry): void

Enregistre l’OrmAdminApi sur le broker admin, idempotent (no-op si déjà monté). Appelé par un module driver à son onKernelBoot (orm-core est une lib pure et ne peut pas s’auto-monter).

reportOrmBootLines#

function reportOrmBootLines(kernel: IKernel | null): void

Pousse dans le BootReporter une ligne par ORM enregistré (« nom → driver (cible) ») pour que la phase de boot « Services & ORM » RACONTE les connexions mises en place, au lieu d’une phase muette. Idempotent : reconstruit la liste complète depuis le registre et REMPLACE (sûr d’être appelé par N drivers).

reportOrphanEntities#

function reportOrphanEntities(log: (message: string, severity: "WARNING") => void, owner: object, declared?: readonly string[]): string | null

Signale UNE fois par démarrage les entités orphelines, au moment où tous les ORM sont ouverts.

resolveOrmFlowEnabled#

function resolveOrmFlowEnabled(kernel: IKernel | null): boolean

Détermine si la sonde de flux ORM (queryFlowMonitor) doit être active : OFF en production (coût nul sur le hot path des requêtes), ON sinon (observabilité dev / Supervision). Override explicite par la variable d’environnement NF_ORM_FLOW (1/true = forcer ON).

searchCriteria#

function searchCriteria<T>(q: string, fields: ReadonlyArray<keyof T & string>): Record<string, unknown> | null

Traduit un terme de recherche ?q= en critère portable — la règle de recherche d’orm-core, en un seul exemplaire.

toDbml#

function toDbml(graph: IOrmGraph): string

Sérialise un graphe en DBML (Database Markup Language) — format pivot lu par dbdiagram.io, les outils IA et convertible en SQL. Les Ref: sont dérivés des relations selon la convention FK des adapters (<source>Id sur la cible pour 1-N ; <target>Id sur la source pour N-1/1-1). Le many-to-many est annoté en commentaire (table de jonction non portable).

toJsonSchema#

function toJsonSchema(graph: IOrmGraph): { $schema: string; $defs: Record<string, IJsonSchemaObject>; }

Sérialise un graphe en JSON Schema (draft 2020-12) — un $defs par entité. Format « IA-first » : un agent (text-to-SQL, génération de formulaire, validation de payload) consomme directement ce schéma. Les colonnes non-nullables alimentent required ; les relations deviennent des $ref (N→1/1→1) ou des tableaux de $ref (1→N/N→N) vers les autres $defs.

wireOrmAdminPlane#

function wireOrmAdminPlane(kernel: IKernel | null): void

Branche le « plan d’administration » ORM dans le kernel — montage idempotent appelé par CHAQUE driver à son onKernelBoot. Factorise la dette C5 : le bloc était jusqu’ici recopié à l’identique dans chaque module driver (Drizzle, Mongoose), donc voué à diverger ; il vit désormais à un seul endroit.

withConnectDeadline#

function withConnectDeadline<T>(work: Promise<T>, what: string, ms?: number): Promise<T>

Borne l’attente d’une promesse, et rejette avec une cause NOMMÉE au-delà.

Constantes (9)#

CONNECT_TIMEOUT_MS#

const CONNECT_TIMEOUT_MS = 10000

Le temps qu’on accorde à une base pour ACCEPTER une connexion, en millisecondes.

LIKE_ESCAPE_CHAR#

const LIKE_ESCAPE_CHAR = "\\"

Le caractère d’échappement des motifs $like du contrat portable.

OPERATOR_KEYS#

const OPERATOR_KEYS: readonly [ "$eq", "$ne", "$gt", "$gte", "$lt", "$lte", "$in", "$nin", "$like", "$null" ]

Liste figée des opérateurs riches reconnus dans un critère portable.

REJECTED_MARKER#

const REJECTED_MARKER = "s'est connect\u00E9, mais le serveur a refus\u00E9 une instruction \u2014 "

Marqueur de la phrase « connecté, puis refusé » — lu par create app (migrationFailureCause, cœur) pour NE PAS conclure à une base injoignable. Le cœur ne peut pas importer ce paquet : sa copie est éprouvée contre celle-ci par un test de parité.

UPDATE_OPERATOR_KEYS#

const UPDATE_OPERATOR_KEYS: readonly [ "$max", "$min" ]

Liste figée des opérateurs d’écriture reconnus dans le update d’un upsert (cf UpdateOperators).

connectionMonitor#

const connectionMonitor: ConnectionMonitor

Singleton process-wide du moniteur de connexions.

entityRegistry#

const entityRegistry: EntityRegistry

Singleton process-wide partagé. Les entités s’y enregistrent (via le décorateur entities([...]) posé sur le Module, ou Entity.register). La classe EntityRegistry reste instanciable pour des registres isolés (tests).

ormRegistry#

const ormRegistry: OrmRegistry

Singleton process-wide partagé par tous les drivers et consommateurs ORM.

queryFlowMonitor#

const queryFlowMonitor: QueryFlowMonitor

Singleton process-wide de la sonde de flux ORM.

Interfaces (5)#

IConnectionDiagnosis#

interface IConnectionDiagnosis

Diagnostic rendu à l’appelant, qui compose le message final.

IConnectionTarget#

interface IConnectionTarget

Adresse visée, telle qu’on peut la dire sans divulguer de secret.

IEntityDefinition#

interface IEntityDefinition<S = unknown, M = unknown> extends Omit<IEntity<S, M>, "connector">

Descripteur d’entité sans connecteur figé — la forme sous laquelle une application déclare ses entités.

IPage#

interface IPage<T>

Une page de résultats — la sortie unique de toute pagination Nodefony.

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.

Types (4)#

ConnectionVerdict#

type ConnectionVerdict = "unreachable" | "answered" | "rejected" | "unknown"

Ce que l’échec permet d’affirmer sur l’autre bout du socket.

OperatorKey#

type OperatorKey = (typeof OPERATOR_KEYS)[number]

Clé d’opérateur riche reconnue.

ServiceWiring#

type ServiceWiring = [ container?: Container, notificationsCenter?: Event | false | null, options?: DefaultOptionsService ]

Câblage d’un Service (DI / bus d’événements / options) sous forme de tuple — évite de redéclarer container / notificationsCenter / options dans le constructeur de chaque service juste pour les tunneler jusqu’à super.

UpdateOperatorKey#

type UpdateOperatorKey = (typeof UPDATE_OPERATOR_KEYS)[number]

Clé d’opérateur d’écriture reconnue.


← Toutes les références d’API