nodefony 10.0.0-alpha.1 → 10.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.ai/symbols.json CHANGED
@@ -1,16 +1,15 @@
1
1
  {
2
- "generated": "2026-09-06T17:10:47.486Z",
3
2
  "version": "2.0.0",
4
3
  "repoRoot": ".",
5
4
  "stats": {
6
- "files": 812,
7
- "symbols": 3899,
8
- "classes": 385,
9
- "interfaces": 1059,
10
- "types": 445,
5
+ "files": 818,
6
+ "symbols": 3939,
7
+ "classes": 388,
8
+ "interfaces": 1069,
9
+ "types": 446,
11
10
  "enums": 4,
12
- "functions": 1617,
13
- "constants": 389
11
+ "functions": 1641,
12
+ "constants": 391
14
13
  },
15
14
  "symbols": {
16
15
  "Cli": {
@@ -3552,6 +3551,14 @@
3552
3551
  "module": "@nodefony/core",
3553
3552
  "description": "Durée de vie effective d'un runtime en dérogation — fonction PURE."
3554
3553
  },
3554
+ "runNeedsExternalServices": {
3555
+ "name": "runNeedsExternalServices",
3556
+ "kind": "function",
3557
+ "file": "src/nodefony/src/kernel/Kernel.ts",
3558
+ "exported": true,
3559
+ "module": "@nodefony/core",
3560
+ "description": "Ce run a-t-il DÉCLARÉ avoir besoin de l'infrastructure de l'application ? Point d'appel UNIQUE de la question : les services qui ouvrent une connexion au boot (ORM SQL, ORM document) la posent tous…"
3561
+ },
3555
3562
  "FORCE_DEV_MODULES_ENV": {
3556
3563
  "name": "FORCE_DEV_MODULES_ENV",
3557
3564
  "kind": "const",
@@ -3599,6 +3606,14 @@
3599
3606
  "module": "@nodefony/core",
3600
3607
  "description": "Profil par défaut — équivaut à l'ancien `type = \"CONSOLE\"` (one-shot, sans serveur)."
3601
3608
  },
3609
+ "CONSOLE_DATA_RUN_PROFILE": {
3610
+ "name": "CONSOLE_DATA_RUN_PROFILE",
3611
+ "kind": "const",
3612
+ "file": "src/nodefony/src/kernel/Kernel.ts",
3613
+ "exported": true,
3614
+ "module": "@nodefony/core",
3615
+ "description": "Profil d'une commande console qui a besoin de l'infrastructure — `orm:migrate`, `security:user:add`, tout ce qui LIT ou ÉCRIT des données. Existe pour que le besoin s'écrive en un mot au lieu d'un …"
3616
+ },
3602
3617
  "IListenerTags": {
3603
3618
  "name": "IListenerTags",
3604
3619
  "kind": "interface",
@@ -8572,6 +8587,14 @@
8572
8587
  "module": "@nodefony/core",
8573
8588
  "description": "La version majeure exigée par `engines.node`, ou `null` si non déclarée."
8574
8589
  },
8590
+ "checkFrontendBuild": {
8591
+ "name": "checkFrontendBuild",
8592
+ "kind": "function",
8593
+ "file": "src/nodefony/src/kernel/checks/freshness.ts",
8594
+ "exported": true,
8595
+ "module": "@nodefony/core",
8596
+ "description": "Le frontend DÉCLARÉ est-il construit, et l'est-il APRÈS ses sources ? 🔴 Le contrôle de fraîcheur ne regardait que le `dist/` du backend. Une application dont le build frontend avait échoué — `publ…"
8597
+ },
8575
8598
  "checkFreshness": {
8576
8599
  "name": "checkFreshness",
8577
8600
  "kind": "function",
@@ -9395,6 +9418,14 @@
9395
9418
  "module": "@nodefony/core",
9396
9419
  "description": "Rend le rapport de `doctor` alors que l'application vient d'échouer à démarrer. 🔴 C'est le cas POUR lequel la commande existe. `--live` sort du fast-path et demande un boot : sans ce chemin, une a…"
9397
9420
  },
9421
+ "withoutComments": {
9422
+ "name": "withoutComments",
9423
+ "kind": "function",
9424
+ "file": "src/nodefony/src/kernel/checks/sourceText.ts",
9425
+ "exported": true,
9426
+ "module": "@nodefony/core",
9427
+ "description": "Le texte d'une source, tel que les contrôles de `doctor` doivent le lire. 🔴 Cette règle était écrite TROIS fois — `surface`, `readiness`, `wiring` — et elle avait déjà divergé : deux copies coupai…"
9428
+ },
9398
9429
  "IOpening": {
9399
9430
  "name": "IOpening",
9400
9431
  "kind": "interface",
@@ -14486,7 +14517,7 @@
14486
14517
  "exported": true,
14487
14518
  "module": "@nodefony/framework",
14488
14519
  "extends": null,
14489
- "description": "Vue MINIMALE du service `oauth2` (`@nodefony/security`) — couplage par NOM (framework ne dépend ni de security ni d'arctic). Contrat structurel imposé par cast (`this.get<…>`), aucune liaison de bu…"
14520
+ "description": "Vue MINIMALE du service `oauth2` (`@nodefony/security`) — couplage par NOM (framework ne dépend pas de security). Contrat structurel imposé par cast (`this.get<…>`), aucune liaison de build."
14490
14521
  },
14491
14522
  "IOAuth2Session": {
14492
14523
  "name": "IOAuth2Session",
@@ -18315,6 +18346,64 @@
18315
18346
  "module": "@nodefony/orm-core",
18316
18347
  "description": "**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 …"
18317
18348
  },
18349
+ "withConnectDeadline": {
18350
+ "name": "withConnectDeadline",
18351
+ "kind": "function",
18352
+ "file": "src/packages/@nodefony/orm-core/nodefony/src/connectDeadline.ts",
18353
+ "exported": true,
18354
+ "module": "@nodefony/orm-core",
18355
+ "description": "Borne l'attente d'une promesse, et rejette avec une cause NOMMÉE au-delà. Le message importe autant que la borne : « délai dépassé » sans sujet envoie chercher partout. Celui-ci dit ce qu'on attend…"
18356
+ },
18357
+ "CONNECT_TIMEOUT_MS": {
18358
+ "name": "CONNECT_TIMEOUT_MS",
18359
+ "kind": "const",
18360
+ "file": "src/packages/@nodefony/orm-core/nodefony/src/connectDeadline.ts",
18361
+ "exported": true,
18362
+ "module": "@nodefony/orm-core",
18363
+ "description": "Le DÉLAI DE GARDE d'une connexion à une base — une commande n'attend jamais sans fin. 🔴 Le cas est vécu, et il ne ressemble pas à une panne : `nodefony inspect config` restait suspendu, sans un mo…"
18364
+ },
18365
+ "IConnectionDiagnosis": {
18366
+ "name": "IConnectionDiagnosis",
18367
+ "kind": "interface",
18368
+ "file": "src/packages/@nodefony/orm-core/nodefony/src/connectionDiagnosis.ts",
18369
+ "exported": true,
18370
+ "module": "@nodefony/orm-core",
18371
+ "extends": null,
18372
+ "description": "Diagnostic rendu à l'appelant, qui compose le message final."
18373
+ },
18374
+ "IConnectionTarget": {
18375
+ "name": "IConnectionTarget",
18376
+ "kind": "interface",
18377
+ "file": "src/packages/@nodefony/orm-core/nodefony/src/connectionDiagnosis.ts",
18378
+ "exported": true,
18379
+ "module": "@nodefony/orm-core",
18380
+ "extends": null,
18381
+ "description": "Adresse visée, telle qu'on peut la dire sans divulguer de secret."
18382
+ },
18383
+ "ConnectionVerdict": {
18384
+ "name": "ConnectionVerdict",
18385
+ "kind": "type",
18386
+ "file": "src/packages/@nodefony/orm-core/nodefony/src/connectionDiagnosis.ts",
18387
+ "exported": true,
18388
+ "module": "@nodefony/orm-core",
18389
+ "description": "Diagnostic d'un échec de connexion à une base — **ce qui a été CONSTATÉ**, jamais seulement ce qu'on en déduit. Le message d'échec énumérait trois causes (infrastructure déclarée, base démarrée, en…"
18390
+ },
18391
+ "parseConnectionTarget": {
18392
+ "name": "parseConnectionTarget",
18393
+ "kind": "function",
18394
+ "file": "src/packages/@nodefony/orm-core/nodefony/src/connectionDiagnosis.ts",
18395
+ "exported": true,
18396
+ "module": "@nodefony/orm-core",
18397
+ "description": "Extrait l'hôte et le port d'une URL de connexion, sans son secret."
18398
+ },
18399
+ "diagnoseConnectionFailure": {
18400
+ "name": "diagnoseConnectionFailure",
18401
+ "kind": "function",
18402
+ "file": "src/packages/@nodefony/orm-core/nodefony/src/connectionDiagnosis.ts",
18403
+ "exported": true,
18404
+ "module": "@nodefony/orm-core",
18405
+ "description": "Explique un échec de connexion en distinguant « personne n'écoute » de « quelqu'un a répondu et refuse »."
18406
+ },
18318
18407
  "IConnectionMonitorCore": {
18319
18408
  "name": "IConnectionMonitorCore",
18320
18409
  "kind": "interface",
@@ -19650,6 +19739,15 @@
19650
19739
  "extends": null,
19651
19740
  "description": "Source du matériel cryptographique de signature des JWT. Découple la SIGNATURE de toute persistance concrète : la clé peut venir de l'environnement (prod cloud), d'un fichier (dev/VPS) ou être éphé…"
19652
19741
  },
19742
+ "IIssuerPolicy": {
19743
+ "name": "IIssuerPolicy",
19744
+ "kind": "interface",
19745
+ "file": "src/packages/@nodefony/security/nodefony/contracts/IOAuthProvider.ts",
19746
+ "exported": true,
19747
+ "module": "@nodefony/security",
19748
+ "extends": null,
19749
+ "description": "Ce qu'on exige du paramètre `iss` renvoyé par le serveur d'autorisation (RFC 9207)."
19750
+ },
19653
19751
  "IOAuthProvider": {
19654
19752
  "name": "IOAuthProvider",
19655
19753
  "kind": "interface",
@@ -19657,7 +19755,7 @@
19657
19755
  "exported": true,
19658
19756
  "module": "@nodefony/security",
19659
19757
  "extends": null,
19660
- "description": "Adaptateur d'**un fournisseur OAuth/OIDC**, façade UNIFORME au-dessus d'une classe `arctic` — masque les divergences entre fournisseurs derrière un contrat stable consommé par `OAuth2Service` : - *…"
19758
+ "description": "Adaptateur d'**un fournisseur OAuth/OIDC**, façade UNIFORME au-dessus d'un client OAuth 2.0 — masque les divergences entre fournisseurs derrière un contrat stable consommé par `OAuth2Service` : - *…"
19661
19759
  },
19662
19760
  "ISecuredArea": {
19663
19761
  "name": "ISecuredArea",
@@ -20134,7 +20232,7 @@
20134
20232
  "extends": "Service",
20135
20233
  "implements": [],
20136
20234
  "decorators": [],
20137
- "description": "**Social login OAuth 2.0** (P6 J9) — orchestrateur du flux *Authorization Code* au-dessus d'`arctic`. Posture OAuth 2.1 (RFC 9700) : Authorization Code uniquement (jamais implicit / ROPC), **PKCE S…"
20235
+ "description": "**Social login OAuth 2.0** (P6 J9) — orchestrateur du flux *Authorization Code*. Posture OAuth 2.1 (RFC 9700) : Authorization Code uniquement (jamais implicit / ROPC), **PKCE S256** quand le fourni…"
20138
20236
  },
20139
20237
  "IOAuthAuthorization": {
20140
20238
  "name": "IOAuthAuthorization",
@@ -22486,8 +22584,7 @@
22486
22584
  "module": "@nodefony/drizzle",
22487
22585
  "extends": "Orm",
22488
22586
  "implements": [],
22489
- "decorators": [],
22490
- "description": "Adapter Drizzle (driver `better-sqlite3`) **branché sur `@nodefony/orm-core`** — 3ᵉ adapter du banc multi-ORM (P7.4), choix SQL #1 moderne. Particularité vs les autres ORM : Drizzle est **schema-as…"
22587
+ "decorators": []
22491
22588
  },
22492
22589
  "DrizzleOrmOptions": {
22493
22590
  "name": "DrizzleOrmOptions",
@@ -24103,6 +24200,14 @@
24103
24200
  "module": "@nodefony/realtime",
24104
24201
  "description": "Fabrique le provider PARTAGÉ d'un canal (listener/ticker qui pousse via `publish`). Appelée UNE fois, au 1ᵉʳ abonné. Renvoie son `dispose` (appelé au dernier désabonné) ou `null` si le canal est in…"
24105
24202
  },
24203
+ "channelFamily": {
24204
+ "name": "channelFamily",
24205
+ "kind": "function",
24206
+ "file": "src/packages/@nodefony/realtime/nodefony/src/server/RealtimeHub.ts",
24207
+ "exported": true,
24208
+ "module": "@nodefony/realtime",
24209
+ "description": "Le MOTIF de famille d'un canal — son dernier segment remplacé par `*`. `\"studio:metrics:1s\"` → `\"studio:metrics:*\"`, `\"alerts\"` → `\"*\"`. Sert à SUGGÉRER une politique qui garde toute une famille, q…"
24210
+ },
24106
24211
  "getRealtimeHub": {
24107
24212
  "name": "getRealtimeHub",
24108
24213
  "kind": "function",
@@ -24798,6 +24903,140 @@
24798
24903
  "module": "@nodefony/security",
24799
24904
  "description": "Valide qu'une URL sortante est sûre (anti-SSRF) : protocole autorisé, pas d'identifiants embarqués, hôte résolvable, et **toutes** les IP résolues publiques. Lève {@link SsrfError} (422) sinon."
24800
24905
  },
24906
+ "readJsonBounded": {
24907
+ "name": "readJsonBounded",
24908
+ "kind": "function",
24909
+ "file": "src/packages/@nodefony/security/nodefony/src/oauth/httpJson.ts",
24910
+ "exported": true,
24911
+ "module": "@nodefony/security",
24912
+ "description": "Lecture BORNÉE d'un corps JSON — la brique de transport commune aux trois appels sortants du social login (découverte, point de jeton, API d'un fournisseur non-OIDC). Elle existe parce qu'une borne…"
24913
+ },
24914
+ "readJsonObjectBounded": {
24915
+ "name": "readJsonObjectBounded",
24916
+ "kind": "function",
24917
+ "file": "src/packages/@nodefony/security/nodefony/src/oauth/httpJson.ts",
24918
+ "exported": true,
24919
+ "module": "@nodefony/security",
24920
+ "description": "Comme {@link readJsonBounded}, mais exige un OBJET — la forme de toute réponse normalisée par une RFC (document de métadonnées, réponse d'un point de jeton)."
24921
+ },
24922
+ "IDiscoveredAuthorizationServer": {
24923
+ "name": "IDiscoveredAuthorizationServer",
24924
+ "kind": "interface",
24925
+ "file": "src/packages/@nodefony/security/nodefony/src/oauth/metadata.ts",
24926
+ "exported": true,
24927
+ "module": "@nodefony/security",
24928
+ "extends": null,
24929
+ "description": "Points d'entrée retenus d'un serveur d'autorisation — le sous-ensemble dont le flux *Authorization Code* a besoin (RFC 8414 §2)."
24930
+ },
24931
+ "IDiscoveryOptions": {
24932
+ "name": "IDiscoveryOptions",
24933
+ "kind": "interface",
24934
+ "file": "src/packages/@nodefony/security/nodefony/src/oauth/metadata.ts",
24935
+ "exported": true,
24936
+ "module": "@nodefony/security",
24937
+ "extends": null,
24938
+ "description": "Réglages de la découverte — l'injection de `fetch` est la voie pour éprouver sans TLS."
24939
+ },
24940
+ "discoverAuthorizationServer": {
24941
+ "name": "discoverAuthorizationServer",
24942
+ "kind": "function",
24943
+ "file": "src/packages/@nodefony/security/nodefony/src/oauth/metadata.ts",
24944
+ "exported": true,
24945
+ "module": "@nodefony/security",
24946
+ "description": "Interroge un serveur d'autorisation et rend ses points d'entrée. Les URL candidates sont celles du cœur (`issuerMetadataUrls`, ordre normatif RFC 8414 §3.1 : insertion oauth → insertion oidc → ajou…"
24947
+ },
24948
+ "OAuth2RequestError": {
24949
+ "name": "OAuth2RequestError",
24950
+ "kind": "class",
24951
+ "file": "src/packages/@nodefony/security/nodefony/src/oauth/oauth2Client.ts",
24952
+ "exported": true,
24953
+ "module": "@nodefony/security",
24954
+ "extends": "Error",
24955
+ "implements": [],
24956
+ "decorators": [],
24957
+ "description": "Refus du serveur d'autorisation au point de jeton (RFC 6749 §5.2). Porte le code `error` normalisé — la seule partie de la réponse sûre à journaliser."
24958
+ },
24959
+ "OAuth2Tokens": {
24960
+ "name": "OAuth2Tokens",
24961
+ "kind": "class",
24962
+ "file": "src/packages/@nodefony/security/nodefony/src/oauth/oauth2Client.ts",
24963
+ "exported": true,
24964
+ "module": "@nodefony/security",
24965
+ "extends": null,
24966
+ "implements": [],
24967
+ "decorators": [],
24968
+ "description": "Jetons rendus par le point de jeton (RFC 6749 §5.1), enveloppés pour qu'un champ attendu mais absent lève une erreur NOMMÉE au lieu de propager un `undefined` jusqu'au décodage du profil."
24969
+ },
24970
+ "OAuth2Client": {
24971
+ "name": "OAuth2Client",
24972
+ "kind": "class",
24973
+ "file": "src/packages/@nodefony/security/nodefony/src/oauth/oauth2Client.ts",
24974
+ "exported": true,
24975
+ "module": "@nodefony/security",
24976
+ "extends": null,
24977
+ "implements": [],
24978
+ "decorators": [],
24979
+ "description": "Client d'un serveur d'autorisation donné : construit l'URL d'autorisation puis échange le code contre des jetons. Un exemplaire porte les endpoints DÉJÀ résolus — par découverte de métadonnées ({@l…"
24980
+ },
24981
+ "IAuthorizationRequest": {
24982
+ "name": "IAuthorizationRequest",
24983
+ "kind": "interface",
24984
+ "file": "src/packages/@nodefony/security/nodefony/src/oauth/oauth2Client.ts",
24985
+ "exported": true,
24986
+ "module": "@nodefony/security",
24987
+ "extends": null,
24988
+ "description": "Étape 1 — ce qu'on demande au point d'autorisation. La forme est un OBJET, et c'est tout l'enjeu : les paramètres normalisés qui manquent encore — `resource` (RFC 8707, exigé par le Model Context P…"
24989
+ },
24990
+ "ITokenRequest": {
24991
+ "name": "ITokenRequest",
24992
+ "kind": "interface",
24993
+ "file": "src/packages/@nodefony/security/nodefony/src/oauth/oauth2Client.ts",
24994
+ "exported": true,
24995
+ "module": "@nodefony/security",
24996
+ "extends": null,
24997
+ "description": "Étape 2 — ce qu'on présente au point de jeton. Même raison d'être qu'{@link IAuthorizationRequest} : `resource` doit être répété ici (RFC 8707 §2.2), et rien ne pouvait s'ajouter à une signature po…"
24998
+ },
24999
+ "IOAuth2ClientOptions": {
25000
+ "name": "IOAuth2ClientOptions",
25001
+ "kind": "interface",
25002
+ "file": "src/packages/@nodefony/security/nodefony/src/oauth/oauth2Client.ts",
25003
+ "exported": true,
25004
+ "module": "@nodefony/security",
25005
+ "extends": null,
25006
+ "description": "Points d'entrée d'un serveur d'autorisation et identité du client."
25007
+ },
25008
+ "OAuth2ClientAuthMethod": {
25009
+ "name": "OAuth2ClientAuthMethod",
25010
+ "kind": "type",
25011
+ "file": "src/packages/@nodefony/security/nodefony/src/oauth/oauth2Client.ts",
25012
+ "exported": true,
25013
+ "module": "@nodefony/security",
25014
+ "description": "Comment le client s'authentifie au point de jeton (RFC 6749 §2.3, et le registre `token_endpoint_auth_method` d'OpenID Connect Discovery). 🔴 Elle se DÉCLARE, elle ne se déduit plus de la vacuité d…"
25015
+ },
25016
+ "generateState": {
25017
+ "name": "generateState",
25018
+ "kind": "function",
25019
+ "file": "src/packages/@nodefony/security/nodefony/src/oauth/oauth2Client.ts",
25020
+ "exported": true,
25021
+ "module": "@nodefony/security",
25022
+ "description": "Tire un `state` anti-CSRF (RFC 6749 §10.12, RFC 9700 §4.7) — 256 bits issus du générateur cryptographique du système."
25023
+ },
25024
+ "generateCodeVerifier": {
25025
+ "name": "generateCodeVerifier",
25026
+ "kind": "function",
25027
+ "file": "src/packages/@nodefony/security/nodefony/src/oauth/oauth2Client.ts",
25028
+ "exported": true,
25029
+ "module": "@nodefony/security",
25030
+ "description": "Tire un `code_verifier` PKCE (RFC 7636 §4.1) — 43 caractères de l'alphabet `unreserved`, porteurs de 256 bits d'entropie."
25031
+ },
25032
+ "createCodeChallenge": {
25033
+ "name": "createCodeChallenge",
25034
+ "kind": "function",
25035
+ "file": "src/packages/@nodefony/security/nodefony/src/oauth/oauth2Client.ts",
25036
+ "exported": true,
25037
+ "module": "@nodefony/security",
25038
+ "description": "Calcule le `code_challenge` de la méthode **S256** (RFC 7636 §4.2) : `BASE64URL(SHA256(ASCII(code_verifier)))`."
25039
+ },
24801
25040
  "IOAuthProviderContext": {
24802
25041
  "name": "IOAuthProviderContext",
24803
25042
  "kind": "interface",
@@ -26595,7 +26834,7 @@
26595
26834
  "exported": true,
26596
26835
  "module": "@nodefony/security",
26597
26836
  "extends": null,
26598
- "description": "Client `arctic` minimal d'un fournisseur **OIDC avec PKCE** — surface structurelle commune à `Google`, `MicrosoftEntraId`, `Auth0`, `Okta`, `KeyCloak`... (une instance arctic de ces classes est ass…"
26837
+ "description": "Client d'un fournisseur **OIDC avec PKCE** — surface structurelle que {@link OAuth2Client} remplit, et qu'un test peut remplacer par un double sans réseau."
26599
26838
  },
26600
26839
  "IOidcProviderOptions": {
26601
26840
  "name": "IOidcProviderOptions",
@@ -26606,6 +26845,15 @@
26606
26845
  "extends": null,
26607
26846
  "description": "Paramètres d'un fournisseur OIDC générique."
26608
26847
  },
26848
+ "IDiscoveredOidcOptions": {
26849
+ "name": "IDiscoveredOidcOptions",
26850
+ "kind": "interface",
26851
+ "file": "src/packages/@nodefony/security/nodefony/src/oauth/providers/oidc.ts",
26852
+ "exported": true,
26853
+ "module": "@nodefony/security",
26854
+ "extends": "IDiscoveryOptions",
26855
+ "description": "Réglages d'un fournisseur OIDC découvert."
26856
+ },
26609
26857
  "createOidcProvider": {
26610
26858
  "name": "createOidcProvider",
26611
26859
  "kind": "function",
@@ -26613,6 +26861,14 @@
26613
26861
  "exported": true,
26614
26862
  "module": "@nodefony/security",
26615
26863
  "description": "Fabrique un {@link IOAuthProvider} **générique OIDC** — couvre TOUT fournisseur OpenID Connect sans code spécifique : le profil se lit toujours pareil (claims standard `sub`/`email`/`email_verified…"
26864
+ },
26865
+ "createDiscoveredOidcProvider": {
26866
+ "name": "createDiscoveredOidcProvider",
26867
+ "kind": "function",
26868
+ "file": "src/packages/@nodefony/security/nodefony/src/oauth/providers/oidc.ts",
26869
+ "exported": true,
26870
+ "module": "@nodefony/security",
26871
+ "description": "Construit un fournisseur OIDC **en demandant ses points d'entrée à l'émetteur** (RFC 8414 / OpenID Connect Discovery) — aucune URL n'est écrite en dur. C'est ce qui permet d'enregistrer n'importe q…"
26616
26872
  }
26617
26873
  },
26618
26874
  "relations": {
@@ -26691,7 +26947,8 @@
26691
26947
  "MigrationToolError",
26692
26948
  "MigrationLockTimeoutError",
26693
26949
  "MigrationVerdictError",
26694
- "FrontendError"
26950
+ "FrontendError",
26951
+ "OAuth2RequestError"
26695
26952
  ],
26696
26953
  "EventEmitter": [
26697
26954
  "Event"
@@ -27032,6 +27289,9 @@
27032
27289
  ],
27033
27290
  "Ws": [
27034
27291
  "IBackpressureSocket"
27292
+ ],
27293
+ "IDiscoveryOptions": [
27294
+ "IDiscoveredOidcOptions"
27035
27295
  ]
27036
27296
  },
27037
27297
  "implementedBy": {
@@ -29745,6 +30005,15 @@
29745
30005
  "src/nodefony/src/cli/create.ts",
29746
30006
  "src/nodefony/src/cli/gitHooks.ts"
29747
30007
  ],
30008
+ "collectDoctorReport": [
30009
+ "src/nodefony/src/cli/create.ts",
30010
+ "src/nodefony/src/mcp/tools.ts",
30011
+ "src/nodefony/src/kernel/commands/DoctorCommand.ts"
30012
+ ],
30013
+ "renderDoctorReport": [
30014
+ "src/nodefony/src/cli/create.ts",
30015
+ "src/nodefony/src/kernel/commands/DoctorCommand.ts"
30016
+ ],
29748
30017
  "envFileOrder": [
29749
30018
  "src/nodefony/src/cli/env.ts",
29750
30019
  "src/nodefony/src/cli/scaffold/engine.ts"
@@ -30629,10 +30898,6 @@
30629
30898
  "lookupSymbol": [
30630
30899
  "src/nodefony/src/mcp/tools.ts"
30631
30900
  ],
30632
- "collectDoctorReport": [
30633
- "src/nodefony/src/mcp/tools.ts",
30634
- "src/nodefony/src/kernel/commands/DoctorCommand.ts"
30635
- ],
30636
30901
  "countCheckFindings": [
30637
30902
  "src/nodefony/src/mcp/tools.ts"
30638
30903
  ],
@@ -31597,6 +31862,12 @@
31597
31862
  "isTestFile": [
31598
31863
  "src/nodefony/src/kernel/checks/freshness.ts"
31599
31864
  ],
31865
+ "withoutComments": [
31866
+ "src/nodefony/src/kernel/checks/freshness.ts",
31867
+ "src/nodefony/src/kernel/checks/readiness.ts",
31868
+ "src/nodefony/src/kernel/checks/surface.ts",
31869
+ "src/nodefony/src/kernel/checks/wiring.ts"
31870
+ ],
31600
31871
  "IModuleGated": [
31601
31872
  "src/nodefony/src/kernel/checks/gating.ts",
31602
31873
  "src/nodefony/src/kernel/checks/live.ts"
@@ -31848,9 +32119,6 @@
31848
32119
  "parseDoctorArgv": [
31849
32120
  "src/nodefony/src/kernel/commands/DoctorCommand.ts"
31850
32121
  ],
31851
- "renderDoctorReport": [
31852
- "src/nodefony/src/kernel/commands/DoctorCommand.ts"
31853
- ],
31854
32122
  "reporterProgression": [
31855
32123
  "src/nodefony/src/kernel/commands/DoctorCommand.ts"
31856
32124
  ],
@@ -32511,6 +32779,12 @@
32511
32779
  "registerOAuthProvider": [
32512
32780
  "src/modules/test/nodefony/secure/oauthTestProvider.ts"
32513
32781
  ],
32782
+ "OAuth2Tokens": [
32783
+ "src/modules/test/nodefony/secure/oauthTestProvider.ts",
32784
+ "src/packages/@nodefony/security/nodefony/contracts/IOAuthProvider.ts",
32785
+ "src/packages/@nodefony/security/nodefony/src/oauth/providers/github.ts",
32786
+ "src/packages/@nodefony/security/nodefony/src/oauth/providers/oidc.ts"
32787
+ ],
32514
32788
  "IOAuthProvider": [
32515
32789
  "src/modules/test/nodefony/secure/oauthTestProvider.ts",
32516
32790
  "src/packages/@nodefony/security/nodefony/service/oauth2.ts",
@@ -32733,6 +33007,13 @@
32733
33007
  "IDocSearchHit": [
32734
33008
  "src/packages/@nodefony/documentation/nodefony/src/search.ts"
32735
33009
  ],
33010
+ "CONSOLE_DATA_RUN_PROFILE": [
33011
+ "src/packages/@nodefony/drizzle/nodefony/command/migrateShared.ts",
33012
+ "src/packages/@nodefony/security/nodefony/command/security-token.ts",
33013
+ "src/packages/@nodefony/security/nodefony/command/security-user-add.ts",
33014
+ "src/packages/@nodefony/security/nodefony/command/security-user-delete.ts",
33015
+ "src/packages/@nodefony/security/nodefony/command/security-user-list.ts"
33016
+ ],
32736
33017
  "DrizzleMigrator": [
32737
33018
  "src/packages/@nodefony/drizzle/nodefony/command/migrateShared.ts",
32738
33019
  "src/packages/@nodefony/drizzle/nodefony/service/DrizzleService.ts",
@@ -33152,6 +33433,10 @@
33152
33433
  "src/packages/@nodefony/drizzle/nodefony/migrations-schema/postgres.ts",
33153
33434
  "src/packages/@nodefony/drizzle/nodefony/migrations-schema/sqlite.ts"
33154
33435
  ],
33436
+ "runNeedsExternalServices": [
33437
+ "src/packages/@nodefony/drizzle/nodefony/service/DrizzleService.ts",
33438
+ "src/packages/@nodefony/mongoose/nodefony/service/MongooseService.ts"
33439
+ ],
33155
33440
  "queryFlowMonitor": [
33156
33441
  "src/packages/@nodefony/drizzle/nodefony/service/DrizzleService.ts",
33157
33442
  "src/packages/@nodefony/mongoose/nodefony/service/MongooseService.ts",
@@ -33164,6 +33449,15 @@
33164
33449
  "src/packages/@nodefony/drizzle/nodefony/service/DrizzleService.ts",
33165
33450
  "src/packages/@nodefony/mongoose/nodefony/service/MongooseService.ts"
33166
33451
  ],
33452
+ "diagnoseConnectionFailure": [
33453
+ "src/packages/@nodefony/drizzle/nodefony/service/DrizzleService.ts",
33454
+ "src/packages/@nodefony/mongoose/nodefony/service/MongooseService.ts"
33455
+ ],
33456
+ "parseConnectionTarget": [
33457
+ "src/packages/@nodefony/drizzle/nodefony/service/DrizzleService.ts",
33458
+ "src/packages/@nodefony/mongoose/nodefony/service/MongooseService.ts",
33459
+ "src/packages/@nodefony/drizzle/nodefony/src/orm-core/DrizzleOrm.ts"
33460
+ ],
33167
33461
  "defaultConnectorFilename": [
33168
33462
  "src/packages/@nodefony/drizzle/nodefony/service/DrizzleService.ts"
33169
33463
  ],
@@ -34758,6 +35052,14 @@
34758
35052
  "src/packages/@nodefony/security/nodefony/service/firewall.ts",
34759
35053
  "src/packages/@nodefony/security/nodefony/src/admin/SecurityAdminApi.ts"
34760
35054
  ],
35055
+ "IAuthorizationRequest": [
35056
+ "src/packages/@nodefony/security/nodefony/contracts/IOAuthProvider.ts",
35057
+ "src/packages/@nodefony/security/nodefony/src/oauth/providers/oidc.ts"
35058
+ ],
35059
+ "ITokenRequest": [
35060
+ "src/packages/@nodefony/security/nodefony/contracts/IOAuthProvider.ts",
35061
+ "src/packages/@nodefony/security/nodefony/src/oauth/providers/oidc.ts"
35062
+ ],
34761
35063
  "TotpAlgorithm": [
34762
35064
  "src/packages/@nodefony/security/nodefony/contracts/ITotpSecret.ts",
34763
35065
  "src/packages/@nodefony/security/nodefony/src/totp/totpOperations.ts"
@@ -34766,6 +35068,7 @@
34766
35068
  "src/packages/@nodefony/security/nodefony/service/accessTokenVerifier.ts",
34767
35069
  "src/packages/@nodefony/security/nodefony/service/tokenService.ts",
34768
35070
  "src/packages/@nodefony/security/nodefony/src/authenticator/ExternalJwtAuthenticator.ts",
35071
+ "src/packages/@nodefony/security/nodefony/src/oauth/metadata.ts",
34769
35072
  "src/packages/@nodefony/security/nodefony/src/token/RemoteJwtVerifier.ts"
34770
35073
  ],
34771
35074
  "IAccessPrincipal": [
@@ -35015,6 +35318,12 @@
35015
35318
  "listOAuthProviders": [
35016
35319
  "src/packages/@nodefony/security/nodefony/service/oauth2.ts"
35017
35320
  ],
35321
+ "generateCodeVerifier": [
35322
+ "src/packages/@nodefony/security/nodefony/service/oauth2.ts"
35323
+ ],
35324
+ "generateState": [
35325
+ "src/packages/@nodefony/security/nodefony/service/oauth2.ts"
35326
+ ],
35018
35327
  "refusedAdminScopes": [
35019
35328
  "src/packages/@nodefony/security/nodefony/service/tokenService.ts"
35020
35329
  ],
@@ -35463,6 +35772,12 @@
35463
35772
  "src/packages/@nodefony/drizzle/nodefony/src/orm-core/DrizzleOrm.ts",
35464
35773
  "src/packages/@nodefony/mongoose/nodefony/src/orm-core/MongooseOrm.ts"
35465
35774
  ],
35775
+ "CONNECT_TIMEOUT_MS": [
35776
+ "src/packages/@nodefony/drizzle/nodefony/src/orm-core/DrizzleOrm.ts"
35777
+ ],
35778
+ "withConnectDeadline": [
35779
+ "src/packages/@nodefony/drizzle/nodefony/src/orm-core/DrizzleOrm.ts"
35780
+ ],
35466
35781
  "notConfigured": [
35467
35782
  "src/packages/@nodefony/drizzle/nodefony/src/orm-core/DrizzleOrm.ts"
35468
35783
  ],
@@ -35935,7 +36250,22 @@
35935
36250
  "SsrfError": [
35936
36251
  "src/packages/@nodefony/security/nodefony/src/net/ssrfGuard.ts"
35937
36252
  ],
35938
- "createOidcProvider": [
36253
+ "issuerMetadataUrls": [
36254
+ "src/packages/@nodefony/security/nodefony/src/oauth/metadata.ts",
36255
+ "src/packages/@nodefony/security/nodefony/src/token/RemoteJwtVerifier.ts"
36256
+ ],
36257
+ "validateIssuerMetadata": [
36258
+ "src/packages/@nodefony/security/nodefony/src/oauth/metadata.ts",
36259
+ "src/packages/@nodefony/security/nodefony/src/token/RemoteJwtVerifier.ts"
36260
+ ],
36261
+ "readJsonObjectBounded": [
36262
+ "src/packages/@nodefony/security/nodefony/src/oauth/metadata.ts",
36263
+ "src/packages/@nodefony/security/nodefony/src/oauth/oauth2Client.ts"
36264
+ ],
36265
+ "OAuth2ClientAuthMethod": [
36266
+ "src/packages/@nodefony/security/nodefony/src/oauth/oauthProviderRegistry.ts"
36267
+ ],
36268
+ "createDiscoveredOidcProvider": [
35939
36269
  "src/packages/@nodefony/security/nodefony/src/oauth/oauthProviderRegistry.ts"
35940
36270
  ],
35941
36271
  "createGithubProvider": [
@@ -35962,12 +36292,6 @@
35962
36292
  "extractScopes": [
35963
36293
  "src/packages/@nodefony/security/nodefony/src/token/RemoteJwtVerifier.ts"
35964
36294
  ],
35965
- "issuerMetadataUrls": [
35966
- "src/packages/@nodefony/security/nodefony/src/token/RemoteJwtVerifier.ts"
35967
- ],
35968
- "validateIssuerMetadata": [
35969
- "src/packages/@nodefony/security/nodefony/src/token/RemoteJwtVerifier.ts"
35970
- ],
35971
36295
  "TokenStatus": [
35972
36296
  "src/packages/@nodefony/security/nodefony/src/token/tokenStatus.ts"
35973
36297
  ],
@@ -36120,8 +36444,22 @@
36120
36444
  "formatWsLogContent": [
36121
36445
  "src/packages/@nodefony/http/nodefony/src/context/websocket/WebsocketContext.ts"
36122
36446
  ],
36123
- "IOAuthProviderContext": [
36447
+ "OAuth2Client": [
36448
+ "src/packages/@nodefony/security/nodefony/src/oauth/providers/github.ts",
36449
+ "src/packages/@nodefony/security/nodefony/src/oauth/providers/oidc.ts"
36450
+ ],
36451
+ "readJsonBounded": [
36124
36452
  "src/packages/@nodefony/security/nodefony/src/oauth/providers/github.ts"
36453
+ ],
36454
+ "IOAuthProviderContext": [
36455
+ "src/packages/@nodefony/security/nodefony/src/oauth/providers/github.ts",
36456
+ "src/packages/@nodefony/security/nodefony/src/oauth/providers/oidc.ts"
36457
+ ],
36458
+ "discoverAuthorizationServer": [
36459
+ "src/packages/@nodefony/security/nodefony/src/oauth/providers/oidc.ts"
36460
+ ],
36461
+ "IDiscoveryOptions": [
36462
+ "src/packages/@nodefony/security/nodefony/src/oauth/providers/oidc.ts"
36125
36463
  ]
36126
36464
  }
36127
36465
  }
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <div align="center">
2
2
 
3
- <img src="https://raw.githubusercontent.com/nodefony/nodefony-core/claude-ts/docs/assets/nodefony-logo.png" alt="Nodefony" height="96">
3
+ <img src="https://raw.githubusercontent.com/nodefony/nodefony-core/main/docs/assets/nodefony-logo.png" alt="Nodefony" height="96">
4
4
 
5
5
  # Nodefony
6
6
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  _Une action de contrôleur. Deux transports. La même session, la même sécurité, le même code._
10
10
 
11
- [![Licence CeCILL-B](https://img.shields.io/badge/licence-CeCILL--B-blue.svg?style=flat-square)](https://github.com/nodefony/nodefony-core/blob/claude-ts/LICENSE.txt)
11
+ [![Licence CeCILL-B](https://img.shields.io/badge/licence-CeCILL--B-blue.svg?style=flat-square)](https://github.com/nodefony/nodefony-core/blob/main/LICENSE.txt)
12
12
  [![Node ≥ 24](https://img.shields.io/badge/Node.js-%E2%89%A5%2024-green?style=flat-square)](https://nodejs.org/)
13
13
  [![TypeScript strict](https://img.shields.io/badge/TypeScript-strict-blue?style=flat-square)](https://www.typescriptlang.org/)
14
14
  [![ESM](https://img.shields.io/badge/ESM-only-orange?style=flat-square)](https://nodejs.org/api/esm.html)
@@ -121,7 +121,7 @@ frontend optionnel (React, Vue, Angular, Svelte), `Dockerfile`, et un `AGENTS.md
121
121
 
122
122
  - **Documentation** — <https://nodefony.github.io/nodefony-core/>
123
123
  - **Dépôt et suivi** — <https://github.com/nodefony/nodefony-core>
124
- - **Journal des versions** — <https://github.com/nodefony/nodefony-core/blob/claude-ts/CHANGELOG.md>
124
+ - **Journal des versions** — <https://github.com/nodefony/nodefony-core/blob/main/CHANGELOG.md>
125
125
 
126
126
  ---
127
127
 
@@ -397,4 +397,4 @@ sharedNC.emit("broadcast"); // les deux services reçoivent
397
397
 
398
398
  ## Syslog / Pdu
399
399
 
400
- Voir [`src/syslog/`](https://github.com/nodefony/nodefony-core/tree/claude-ts/src/nodefony/src/syslog) — logger structuré RFC 5424 avec ring buffer O(1).
400
+ Voir [`src/syslog/`](https://github.com/nodefony/nodefony-core/tree/main/src/nodefony/src/syslog) — logger structuré RFC 5424 avec ring buffer O(1).