@nodefony/framework 10.0.0-alpha.1

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.
Files changed (96) hide show
  1. package/LICENSE +544 -0
  2. package/README.md +50 -0
  3. package/dist/_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorate.js +9 -0
  4. package/dist/_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorateMetadata.js +6 -0
  5. package/dist/index.js +211 -0
  6. package/dist/nodefony/config/config.js +61 -0
  7. package/dist/nodefony/config/defineModuleConfig.js +36 -0
  8. package/dist/nodefony/controller/AdminApiController.js +163 -0
  9. package/dist/nodefony/controller/ApiKeyController.js +151 -0
  10. package/dist/nodefony/controller/BenchController.js +132 -0
  11. package/dist/nodefony/controller/IssuerMetadataController.js +148 -0
  12. package/dist/nodefony/controller/OAuth2Controller.js +133 -0
  13. package/dist/nodefony/controller/ProtectedResourceMetadataController.js +221 -0
  14. package/dist/nodefony/controller/SessionAuthController.js +141 -0
  15. package/dist/nodefony/controller/TokenAuthController.js +113 -0
  16. package/dist/nodefony/controller/TotpController.js +129 -0
  17. package/dist/nodefony/controller/WebAuthnController.js +242 -0
  18. package/dist/nodefony/controller/oauthAuthority.js +74 -0
  19. package/dist/nodefony/decorators/routerDecorators.js +967 -0
  20. package/dist/nodefony/interfaces/IAdminBroker.js +1 -0
  21. package/dist/nodefony/interfaces/IController.js +1 -0
  22. package/dist/nodefony/interfaces/IIdempotencyStore.js +1 -0
  23. package/dist/nodefony/interfaces/IResolver.js +1 -0
  24. package/dist/nodefony/interfaces/IRoute.js +1 -0
  25. package/dist/nodefony/interfaces/index.js +1 -0
  26. package/dist/nodefony/service/AdminBroker.js +106 -0
  27. package/dist/nodefony/service/Eta.js +68 -0
  28. package/dist/nodefony/service/IdempotencyStore.js +136 -0
  29. package/dist/nodefony/service/router.js +243 -0
  30. package/dist/nodefony/src/Controller.js +515 -0
  31. package/dist/nodefony/src/FrameworkAdminApi.js +268 -0
  32. package/dist/nodefony/src/KernelAdminApi.js +1243 -0
  33. package/dist/nodefony/src/PlaygroundAdminApi.js +97 -0
  34. package/dist/nodefony/src/RedisIdempotencyStore.js +254 -0
  35. package/dist/nodefony/src/Resolver.js +416 -0
  36. package/dist/nodefony/src/ResourceController.js +148 -0
  37. package/dist/nodefony/src/Route.js +476 -0
  38. package/dist/nodefony/src/SyslogAdminApi.js +466 -0
  39. package/dist/nodefony/src/Template.js +15 -0
  40. package/dist/nodefony/src/configMutation.js +186 -0
  41. package/dist/nodefony/src/docsReader.js +929 -0
  42. package/dist/nodefony/src/idempotency.js +137 -0
  43. package/dist/nodefony/src/idempotencyGc.js +32 -0
  44. package/dist/nodefony/src/idempotencyStoreRegistry.js +36 -0
  45. package/dist/nodefony/src/scopeCatalog.js +40 -0
  46. package/dist/nodefony/src/syslogFilters.js +51 -0
  47. package/dist/types/index.d.ts +96 -0
  48. package/dist/types/nodefony/config/config.d.ts +41 -0
  49. package/dist/types/nodefony/config/defineModuleConfig.d.ts +27 -0
  50. package/dist/types/nodefony/controller/AdminApiController.d.ts +70 -0
  51. package/dist/types/nodefony/controller/ApiKeyController.d.ts +49 -0
  52. package/dist/types/nodefony/controller/BenchController.d.ts +45 -0
  53. package/dist/types/nodefony/controller/IssuerMetadataController.d.ts +86 -0
  54. package/dist/types/nodefony/controller/OAuth2Controller.d.ts +81 -0
  55. package/dist/types/nodefony/controller/ProtectedResourceMetadataController.d.ts +147 -0
  56. package/dist/types/nodefony/controller/SessionAuthController.d.ts +74 -0
  57. package/dist/types/nodefony/controller/TokenAuthController.d.ts +56 -0
  58. package/dist/types/nodefony/controller/TotpController.d.ts +42 -0
  59. package/dist/types/nodefony/controller/WebAuthnController.d.ts +123 -0
  60. package/dist/types/nodefony/controller/oauthAuthority.d.ts +54 -0
  61. package/dist/types/nodefony/decorators/routerDecorators.d.ts +632 -0
  62. package/dist/types/nodefony/interfaces/IAdminBroker.d.ts +79 -0
  63. package/dist/types/nodefony/interfaces/IController.d.ts +38 -0
  64. package/dist/types/nodefony/interfaces/IIdempotencyStore.d.ts +1 -0
  65. package/dist/types/nodefony/interfaces/IResolver.d.ts +25 -0
  66. package/dist/types/nodefony/interfaces/IRoute.d.ts +31 -0
  67. package/dist/types/nodefony/interfaces/index.d.ts +5 -0
  68. package/dist/types/nodefony/service/AdminBroker.d.ts +37 -0
  69. package/dist/types/nodefony/service/Eta.d.ts +25 -0
  70. package/dist/types/nodefony/service/IdempotencyStore.d.ts +45 -0
  71. package/dist/types/nodefony/service/router.d.ts +53 -0
  72. package/dist/types/nodefony/src/Controller.d.ts +193 -0
  73. package/dist/types/nodefony/src/FrameworkAdminApi.d.ts +35 -0
  74. package/dist/types/nodefony/src/KernelAdminApi.d.ts +71 -0
  75. package/dist/types/nodefony/src/PlaygroundAdminApi.d.ts +98 -0
  76. package/dist/types/nodefony/src/RedisIdempotencyStore.d.ts +104 -0
  77. package/dist/types/nodefony/src/Resolver.d.ts +165 -0
  78. package/dist/types/nodefony/src/ResourceController.d.ts +171 -0
  79. package/dist/types/nodefony/src/Route.d.ts +192 -0
  80. package/dist/types/nodefony/src/SyslogAdminApi.d.ts +38 -0
  81. package/dist/types/nodefony/src/Template.d.ts +8 -0
  82. package/dist/types/nodefony/src/configMutation.d.ts +109 -0
  83. package/dist/types/nodefony/src/docsReader.d.ts +369 -0
  84. package/dist/types/nodefony/src/idempotency.d.ts +96 -0
  85. package/dist/types/nodefony/src/idempotencyGc.d.ts +30 -0
  86. package/dist/types/nodefony/src/idempotencyStoreRegistry.d.ts +59 -0
  87. package/dist/types/nodefony/src/scopeCatalog.d.ts +26 -0
  88. package/dist/types/nodefony/src/syslogFilters.d.ts +52 -0
  89. package/docs/admin.md +451 -0
  90. package/docs/controller.md +645 -0
  91. package/docs/decorateurs.md +845 -0
  92. package/docs/idempotence.md +741 -0
  93. package/docs/index.md +151 -0
  94. package/docs/routing.md +648 -0
  95. package/docs/templates.md +380 -0
  96. package/package.json +83 -0
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Une seule règle : un document bien connu ne se sert QUE sur l'autorité dont
3
+ * il se réclame.
4
+ *
5
+ * Elle vaut pour les deux rôles OAuth que cette application peut tenir, et pour
6
+ * la même raison. Côté **émetteur** (RFC 8414 §3.3), le client DOIT rejeter un
7
+ * document dont l'`issuer` ne correspond pas à l'endroit où il l'a demandé.
8
+ * Côté **serveur de ressource** (RFC 9728 §3.3), il DOIT rejeter un document
9
+ * dont la `resource` ne correspond pas à l'URI de la ressource. Dans les deux
10
+ * cas, servir le document sur une autre autorité ne rend pas service au
11
+ * client : il le lit, le rejette, et **s'arrête là** — alors qu'un `404`
12
+ * l'aurait laissé continuer.
13
+ *
14
+ * 🔴 C'est exactement la faille qu'un vrai client MCP a trouvée en août : le
15
+ * document d'émetteur était servi sur TOUTE autorité, si bien qu'une sonde sur
16
+ * `http://localhost:5151` recevait le document de `https://localhost:5152` et
17
+ * déclarait la connexion en échec. Le banc de la veille testait le symptôme, pas
18
+ * la règle. Cette fonction est la règle, écrite une fois — la recopier dans
19
+ * chaque controller la ferait diverger au premier correctif.
20
+ *
21
+ * @see references/rfc/ietf/rfc8414.txt — métadonnées du serveur d'autorisation
22
+ * @see references/rfc/ietf/rfc9728.txt — métadonnées de la ressource protégée
23
+ */
24
+ /**
25
+ * La requête entre-t-elle par l'autorité dont ce document se réclame ?
26
+ *
27
+ * La comparaison porte sur l'**autorité demandée** (hôte + port, tels que le
28
+ * client les a écrits), jamais sur le schéma : derrière un relais qui termine
29
+ * TLS, le processus voit `http` pour une requête que le client a faite en
30
+ * `https`, et refuser là-dessus fermerait le document en production. Le port
31
+ * par défaut est normalisé par `URL` — `app.example:443` et `app.example`
32
+ * désignent le même serveur et doivent se valoir.
33
+ *
34
+ * Fonction **pure** : elle reçoit l'autorité demandée plutôt que d'aller la
35
+ * chercher dans un contexte, ce qui la rend éprouvable sans serveur — et permet
36
+ * au contexte WebSocket, dont la requête n'est qu'un `IncomingMessage`, de
37
+ * l'appeler avec la même valeur.
38
+ *
39
+ * @param asked - autorité demandée (`:authority` en HTTP/2, `Host` en HTTP/1.1)
40
+ * @param declared - URL absolue dont le document se réclame (émetteur ou ressource)
41
+ * @returns `true` si les deux désignent le même serveur
42
+ */
43
+ export declare function onDeclaredAuthority(asked: string | undefined, declared: string): boolean;
44
+ /**
45
+ * Extrait l'autorité demandée des en-têtes bruts d'une requête.
46
+ *
47
+ * Lue ici plutôt que par un accesseur de `Request` : le type varie selon le
48
+ * transport (le contexte WebSocket n'expose qu'un `IncomingMessage`), et un
49
+ * document bien connu doit rester lisible par les deux.
50
+ *
51
+ * @param headers - en-têtes de la requête entrante
52
+ * @returns l'autorité telle que le client l'a écrite, ou `undefined`
53
+ */
54
+ export declare function askedAuthority(headers: Record<string, string | string[] | undefined> | null | undefined): string | undefined;