nodefony 7.0.2 → 10.0.0-alpha.2

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 (903) hide show
  1. package/.ai/symbols.json +36135 -0
  2. package/LICENSE +544 -0
  3. package/README.md +316 -694
  4. package/bin/nodefony +2183 -85
  5. package/dist/client/Container.js +367 -0
  6. package/dist/client/Event.js +198 -0
  7. package/dist/client/Service.js +344 -0
  8. package/dist/client/Tools.js +162 -0
  9. package/dist/client/client/ClientKernel.js +276 -0
  10. package/dist/client/client/angular/index.js +352 -0
  11. package/dist/client/client/announce.js +212 -0
  12. package/dist/client/client/debugbar/DebugBar.js +1624 -0
  13. package/dist/client/client/debugbar/format.js +103 -0
  14. package/dist/client/client/debugbar/hmr.js +37 -0
  15. package/dist/client/client/debugbar/index.js +29 -0
  16. package/dist/client/client/debugbar/model.js +133 -0
  17. package/dist/client/client/debugbar/network.js +173 -0
  18. package/dist/client/client/debugbar/profile.js +114 -0
  19. package/dist/client/client/index.js +34 -0
  20. package/dist/client/client/react/index.js +268 -0
  21. package/dist/client/client/realtime/AdaptiveRate.js +240 -0
  22. package/dist/client/client/realtime/BrowserWsTransport.js +57 -0
  23. package/dist/client/client/realtime/RealtimeClient.js +898 -0
  24. package/dist/client/client/realtime/localEvents.js +56 -0
  25. package/dist/client/client/realtime/notice.js +125 -0
  26. package/dist/client/client/realtime/observe.js +280 -0
  27. package/dist/client/client/roles/index.js +3 -0
  28. package/dist/client/client/roles/registry.js +97 -0
  29. package/dist/client/client/roles/roles.js +91 -0
  30. package/dist/client/client/shim/events.js +88 -0
  31. package/dist/client/client/shim/util.js +20 -0
  32. package/dist/client/client/svelte/index.js +319 -0
  33. package/dist/client/client/syslog/context.js +122 -0
  34. package/dist/client/client/syslog/errors.js +49 -0
  35. package/dist/client/client/syslog/uplink.js +106 -0
  36. package/dist/client/client/vue/index.js +321 -0
  37. package/dist/client/colors.js +63 -0
  38. package/dist/client/debugbar.standalone.js +4274 -0
  39. package/dist/client/realtime/IRealtimeTransport.js +32 -0
  40. package/dist/client/realtime/JsonRpcPeer.js +251 -0
  41. package/dist/client/realtime/channelRate.js +39 -0
  42. package/dist/client/realtime/platformChannels.js +155 -0
  43. package/dist/client/syslog/Pdu.js +224 -0
  44. package/dist/client/syslog/Syslog.js +1159 -0
  45. package/dist/client/syslog/drivers/pduFlow.js +106 -0
  46. package/dist/client/syslog/drivers/pduProtocol.js +28 -0
  47. package/dist/client/syslog/logColor.js +80 -0
  48. package/dist/client/types/src/Container.d.ts +221 -0
  49. package/dist/client/types/src/Event.d.ts +171 -0
  50. package/dist/client/types/src/FileClass.d.ts +184 -0
  51. package/dist/client/types/src/Service.d.ts +165 -0
  52. package/dist/client/types/src/Tools.d.ts +116 -0
  53. package/dist/client/types/src/client/ClientKernel.d.ts +90 -0
  54. package/dist/client/types/src/client/IClientKernel.d.ts +195 -0
  55. package/dist/client/types/src/client/angular/index.d.ts +273 -0
  56. package/dist/client/types/src/client/announce.d.ts +74 -0
  57. package/dist/client/types/src/client/debugbar/DebugBar.d.ts +279 -0
  58. package/dist/client/types/src/client/debugbar/format.d.ts +48 -0
  59. package/dist/client/types/src/client/debugbar/hmr.d.ts +16 -0
  60. package/dist/client/types/src/client/debugbar/index.d.ts +30 -0
  61. package/dist/client/types/src/client/debugbar/model.d.ts +158 -0
  62. package/dist/client/types/src/client/debugbar/network.d.ts +55 -0
  63. package/dist/client/types/src/client/debugbar/profile.d.ts +99 -0
  64. package/dist/client/types/src/client/index.d.ts +47 -0
  65. package/dist/client/types/src/client/react/index.d.ts +207 -0
  66. package/dist/client/types/src/client/realtime/AdaptiveRate.d.ts +138 -0
  67. package/dist/client/types/src/client/realtime/BrowserWsTransport.d.ts +27 -0
  68. package/dist/client/types/src/client/realtime/RealtimeClient.d.ts +573 -0
  69. package/dist/client/types/src/client/realtime/localEvents.d.ts +53 -0
  70. package/dist/client/types/src/client/realtime/notice.d.ts +70 -0
  71. package/dist/client/types/src/client/realtime/observe.d.ts +284 -0
  72. package/dist/client/types/src/client/roles/index.d.ts +15 -0
  73. package/dist/client/types/src/client/roles/registry.d.ts +72 -0
  74. package/dist/client/types/src/client/roles/roles.d.ts +68 -0
  75. package/dist/client/types/src/client/shim/cli-color.d.ts +2 -0
  76. package/dist/client/types/src/client/shim/events.d.ts +39 -0
  77. package/dist/client/types/src/client/shim/util.d.ts +14 -0
  78. package/dist/client/types/src/client/svelte/index.d.ts +216 -0
  79. package/dist/client/types/src/client/syslog/context.d.ts +76 -0
  80. package/dist/client/types/src/client/syslog/errors.d.ts +46 -0
  81. package/dist/client/types/src/client/syslog/uplink.d.ts +89 -0
  82. package/dist/client/types/src/client/transport/websocket.d.ts +5 -0
  83. package/dist/client/types/src/client/vue/index.d.ts +234 -0
  84. package/dist/client/types/src/colors.d.ts +32 -0
  85. package/dist/client/types/src/config/infra.d.ts +171 -0
  86. package/dist/client/types/src/kernel/bootReport.d.ts +112 -0
  87. package/dist/client/types/src/kernel/readinessRegistry.d.ts +104 -0
  88. package/dist/client/types/src/realtime/IRealtimeSocket.d.ts +142 -0
  89. package/dist/client/types/src/realtime/IRealtimeTransport.d.ts +50 -0
  90. package/dist/client/types/src/realtime/JsonRpcPeer.d.ts +251 -0
  91. package/dist/client/types/src/realtime/RealtimeEventMap.d.ts +269 -0
  92. package/dist/client/types/src/realtime/channelRate.d.ts +55 -0
  93. package/dist/client/types/src/realtime/platformChannels.d.ts +147 -0
  94. package/dist/client/types/src/syslog/Pdu.d.ts +134 -0
  95. package/dist/client/types/src/syslog/Syslog.d.ts +482 -0
  96. package/dist/client/types/src/syslog/drivers/ILogDriver.d.ts +177 -0
  97. package/dist/client/types/src/syslog/drivers/pduFlow.d.ts +53 -0
  98. package/dist/client/types/src/syslog/drivers/pduProtocol.d.ts +20 -0
  99. package/dist/client/types/src/syslog/logColor.d.ts +59 -0
  100. package/dist/client/types/src/types/ICliKernel.d.ts +28 -0
  101. package/dist/client/types/src/types/ICommand.d.ts +14 -0
  102. package/dist/client/types/src/types/IContainer.d.ts +35 -0
  103. package/dist/client/types/src/types/IKernel.d.ts +138 -0
  104. package/dist/client/types/src/types/IMcpTool.d.ts +157 -0
  105. package/dist/client/types/src/types/IModule.d.ts +73 -0
  106. package/dist/client/types/src/types/IPage.d.ts +119 -0
  107. package/dist/client/types/src/types/IService.d.ts +62 -0
  108. package/dist/client/types/src/types/ISyslog.d.ts +58 -0
  109. package/dist/client/types/src/types/ITransport.d.ts +5 -0
  110. package/dist/client/types/src/types/globals.d.ts +47 -0
  111. package/dist/node/Cli.js +750 -0
  112. package/dist/node/Container.js +367 -0
  113. package/dist/node/Error.js +309 -0
  114. package/dist/node/Event.js +198 -0
  115. package/dist/node/FileClass.js +308 -0
  116. package/dist/node/Nodefony.js +78 -0
  117. package/dist/node/Service.js +344 -0
  118. package/dist/node/Tools.js +205 -0
  119. package/dist/node/bin/resolveLocalCli.js +10 -0
  120. package/dist/node/bundler/index.js +103 -0
  121. package/dist/node/cli/agentTargets.js +461 -0
  122. package/dist/node/cli/aiMcp.js +553 -0
  123. package/dist/node/cli/aiMcpReport.js +129 -0
  124. package/dist/node/cli/aiSync.js +323 -0
  125. package/dist/node/cli/aiSyncReport.js +142 -0
  126. package/dist/node/cli/card.js +186 -0
  127. package/dist/node/cli/cardReport.js +110 -0
  128. package/dist/node/cli/completion.js +415 -0
  129. package/dist/node/cli/create.js +805 -0
  130. package/dist/node/cli/env.js +332 -0
  131. package/dist/node/cli/envReport.js +159 -0
  132. package/dist/node/cli/execPortable.js +60 -0
  133. package/dist/node/cli/gitHooks.js +191 -0
  134. package/dist/node/cli/gitHooksReport.js +119 -0
  135. package/dist/node/cli/globalFlags.js +67 -0
  136. package/dist/node/cli/helpReport.js +288 -0
  137. package/dist/node/cli/manPage.js +165 -0
  138. package/dist/node/cli/nodefonyBin.js +61 -0
  139. package/dist/node/cli/outdated.js +144 -0
  140. package/dist/node/cli/progress.js +555 -0
  141. package/dist/node/cli/projectRoot.js +32 -0
  142. package/dist/node/cli/promptPassword.js +44 -0
  143. package/dist/node/cli/prompts.js +86 -0
  144. package/dist/node/cli/scaffold/destination.js +92 -0
  145. package/dist/node/cli/scaffold/engine.js +2156 -0
  146. package/dist/node/cli/scaffold/entityFields.js +589 -0
  147. package/dist/node/cli/scaffold/format.js +243 -0
  148. package/dist/node/cli/scaffold/interactive.js +124 -0
  149. package/dist/node/cli/scaffold/moduleLayout.js +38 -0
  150. package/dist/node/cli/scaffold/reservedEntities.js +74 -0
  151. package/dist/node/cli/scaffold/spec.js +704 -0
  152. package/dist/node/cli/scaffold/steps.js +40 -0
  153. package/dist/node/cli/scaffold/userContractSource.js +133 -0
  154. package/dist/node/cli/scaffold/versions.js +57 -0
  155. package/dist/node/cli/scaffold/writer.js +172 -0
  156. package/dist/node/cli/startMenu.js +496 -0
  157. package/dist/node/cli/symbols.js +205 -0
  158. package/dist/node/cli/sysexits.js +34 -0
  159. package/dist/node/cli/tableReport.js +184 -0
  160. package/dist/node/cli/usageReport.js +144 -0
  161. package/dist/node/colors.js +63 -0
  162. package/dist/node/command/Builder.js +153 -0
  163. package/dist/node/command/Command.js +348 -0
  164. package/dist/node/config/configProvenance.js +101 -0
  165. package/dist/node/config/defaults.js +39 -0
  166. package/dist/node/config/defineConfig.js +129 -0
  167. package/dist/node/config/defineEnv.js +264 -0
  168. package/dist/node/config/envExample.js +41 -0
  169. package/dist/node/config/envOverride.js +423 -0
  170. package/dist/node/config/infra.js +163 -0
  171. package/dist/node/config/reactivity.js +23 -0
  172. package/dist/node/config/reservedEnv.js +118 -0
  173. package/dist/node/config/schema.js +134 -0
  174. package/dist/node/config/use.js +24 -0
  175. package/dist/node/finder/File.js +49 -0
  176. package/dist/node/finder/FileResult.js +86 -0
  177. package/dist/node/finder/Finder.js +201 -0
  178. package/dist/node/finder/Result.js +45 -0
  179. package/dist/node/index.js +121 -0
  180. package/dist/node/kernel/BootConfigurationError.js +54 -0
  181. package/dist/node/kernel/CliKernel.js +630 -0
  182. package/dist/node/kernel/Kernel.js +2198 -0
  183. package/dist/node/kernel/Module.js +453 -0
  184. package/dist/node/kernel/adminPlane/adminCaller.js +98 -0
  185. package/dist/node/kernel/adminPlane/adminRbac.js +51 -0
  186. package/dist/node/kernel/adminPlane/catalog.js +158 -0
  187. package/dist/node/kernel/adminPlane/executeAdmin.js +78 -0
  188. package/dist/node/kernel/checks/deep.js +335 -0
  189. package/dist/node/kernel/checks/freshness.js +139 -0
  190. package/dist/node/kernel/checks/gating.js +231 -0
  191. package/dist/node/kernel/checks/guards.js +232 -0
  192. package/dist/node/kernel/checks/lastBoot.js +136 -0
  193. package/dist/node/kernel/checks/live.js +330 -0
  194. package/dist/node/kernel/checks/packageDeps.js +292 -0
  195. package/dist/node/kernel/checks/readiness.js +153 -0
  196. package/dist/node/kernel/checks/renderReport.js +780 -0
  197. package/dist/node/kernel/checks/report.js +421 -0
  198. package/dist/node/kernel/checks/runDoctor.js +731 -0
  199. package/dist/node/kernel/checks/surface.js +364 -0
  200. package/dist/node/kernel/checks/walk.js +100 -0
  201. package/dist/node/kernel/checks/wiring.js +450 -0
  202. package/dist/node/kernel/commands/AiMcpCommand.js +65 -0
  203. package/dist/node/kernel/commands/AiSyncCommand.js +48 -0
  204. package/dist/node/kernel/commands/BuildCommand.js +49 -0
  205. package/dist/node/kernel/commands/CardCommand.js +50 -0
  206. package/dist/node/kernel/commands/ClusterCommand.js +58 -0
  207. package/dist/node/kernel/commands/CompletionCommand.js +31 -0
  208. package/dist/node/kernel/commands/CreateCommand.js +45 -0
  209. package/dist/node/kernel/commands/DevCommand.js +99 -0
  210. package/dist/node/kernel/commands/DoctorCommand.js +115 -0
  211. package/dist/node/kernel/commands/EnvCommand.js +52 -0
  212. package/dist/node/kernel/commands/GitHooksCommand.js +47 -0
  213. package/dist/node/kernel/commands/InspectCommand.js +153 -0
  214. package/dist/node/kernel/commands/InstallCommand.js +20 -0
  215. package/dist/node/kernel/commands/MenuCommand.js +261 -0
  216. package/dist/node/kernel/commands/OutdatedCommand.js +164 -0
  217. package/dist/node/kernel/commands/ProdCommand.js +60 -0
  218. package/dist/node/kernel/commands/StatusCommand.js +30 -0
  219. package/dist/node/kernel/commands/StopCommand.js +35 -0
  220. package/dist/node/kernel/commands/SymbolsCommand.js +45 -0
  221. package/dist/node/kernel/commands/runtimeLauncher.js +95 -0
  222. package/dist/node/kernel/decorators/kernelDecorator.js +110 -0
  223. package/dist/node/kernel/injector/injector.js +137 -0
  224. package/dist/node/kernel/injector/serviceOrder.js +106 -0
  225. package/dist/node/kernel/inspect/adminSubjects.js +194 -0
  226. package/dist/node/kernel/inspect/docOutline.js +86 -0
  227. package/dist/node/kernel/lifecycleTags.js +76 -0
  228. package/dist/node/kernel/moduleConfig.js +75 -0
  229. package/dist/node/kernel/moduleGating.js +68 -0
  230. package/dist/node/kernel/readinessRegistry.js +98 -0
  231. package/dist/node/kernel/resolveModuleEntry.js +61 -0
  232. package/dist/node/mcp/caller.js +40 -0
  233. package/dist/node/mcp/guard.js +51 -0
  234. package/dist/node/mcp/protocol.js +157 -0
  235. package/dist/node/mcp/server.js +216 -0
  236. package/dist/node/mcp/tools.js +861 -0
  237. package/dist/node/oauth/authorizationServer.js +221 -0
  238. package/dist/node/oauth/protectedResource.js +293 -0
  239. package/dist/node/package.js +4 -0
  240. package/dist/node/realtime/IRealtimeTransport.js +32 -0
  241. package/dist/node/realtime/JsonRpcPeer.js +251 -0
  242. package/dist/node/realtime/RealtimeEventMap.js +15 -0
  243. package/dist/node/realtime/channelRate.js +39 -0
  244. package/dist/node/realtime/platformChannels.js +155 -0
  245. package/dist/node/runtime/GcScheduler.js +92 -0
  246. package/dist/node/runtime/RequestContext.js +76 -0
  247. package/dist/node/runtime/bearer.js +84 -0
  248. package/dist/node/runtime/engineEnvironment.js +79 -0
  249. package/dist/node/runtime/loadEnv.js +105 -0
  250. package/dist/node/runtime/pageFacets.js +85 -0
  251. package/dist/node/runtime/pageFilters.js +103 -0
  252. package/dist/node/runtime/pageGuard.js +84 -0
  253. package/dist/node/runtime/pageQuery.js +160 -0
  254. package/dist/node/runtime/pageSort.js +114 -0
  255. package/dist/node/runtime/redact.js +43 -0
  256. package/dist/node/runtime/withTimeout.js +71 -0
  257. package/dist/node/service/cluster/ClusterManager.js +202 -0
  258. package/dist/node/service/cluster/ClusterProbeAggregator.js +120 -0
  259. package/dist/node/service/cluster/ClusterRelay.js +74 -0
  260. package/dist/node/service/cluster/clusterMaster.js +65 -0
  261. package/dist/node/service/cluster/clusterMessage.js +70 -0
  262. package/dist/node/service/cluster/cpuQuota.js +59 -0
  263. package/dist/node/service/cluster/instanceProbe.js +52 -0
  264. package/dist/node/service/cluster/podEnvironment.js +48 -0
  265. package/dist/node/service/cluster/processProbe.js +70 -0
  266. package/dist/node/service/cluster/richProcessProbe.js +115 -0
  267. package/dist/node/service/cluster/topology.js +71 -0
  268. package/dist/node/service/dev/BootReporter.js +490 -0
  269. package/dist/node/service/dev/DevSupervisor.js +1004 -0
  270. package/dist/node/service/dev/bootVerdict.js +158 -0
  271. package/dist/node/service/dev/detachedStart.js +372 -0
  272. package/dist/node/service/dev/devProcess.js +1137 -0
  273. package/dist/node/service/dev/devProjects.js +138 -0
  274. package/dist/node/service/dev/devStatusReport.js +395 -0
  275. package/dist/node/service/dev/devStop.js +263 -0
  276. package/dist/node/service/fetchService.js +35 -0
  277. package/dist/node/service/gitService.js +62 -0
  278. package/dist/node/syslog/Pdu.js +224 -0
  279. package/dist/node/syslog/Syslog.js +1159 -0
  280. package/dist/node/syslog/drivers/ClusterFileLogDriver.js +114 -0
  281. package/dist/node/syslog/drivers/FileLogDriver.js +127 -0
  282. package/dist/node/syslog/drivers/ILogDriver.js +26 -0
  283. package/dist/node/syslog/drivers/LokiLogDriver.js +144 -0
  284. package/dist/node/syslog/drivers/MemoryLogDriver.js +33 -0
  285. package/dist/node/syslog/drivers/OpenSearchLogDriver.js +159 -0
  286. package/dist/node/syslog/drivers/builtinLogDrivers.js +114 -0
  287. package/dist/node/syslog/drivers/filterPdus.js +71 -0
  288. package/dist/node/syslog/drivers/logDriverRegistry.js +83 -0
  289. package/dist/node/syslog/drivers/opensearchShared.js +17 -0
  290. package/dist/node/syslog/drivers/pduFlow.js +106 -0
  291. package/dist/node/syslog/drivers/pduProtocol.js +28 -0
  292. package/dist/node/syslog/httpFetch.js +43 -0
  293. package/dist/node/syslog/logColor.js +80 -0
  294. package/dist/node/syslog/sinks/FileSink.js +142 -0
  295. package/dist/node/syslog/transports/BatchingHttpTransport.js +98 -0
  296. package/dist/node/syslog/transports/ConsoleTransport.js +14 -0
  297. package/dist/node/syslog/transports/FileTransport.js +17 -0
  298. package/dist/node/syslog/transports/HttpTransport.js +44 -0
  299. package/dist/node/syslog/transports/LokiTransport.js +80 -0
  300. package/dist/node/syslog/transports/OpenSearchTransport.js +53 -0
  301. package/dist/node/syslog/transports/SyslogTransport.js +13 -0
  302. package/dist/node/syslog/transports/index.js +8 -0
  303. package/dist/node/testing/index.js +190 -0
  304. package/dist/types/Cli.d.ts +177 -0
  305. package/dist/types/Container.d.ts +221 -0
  306. package/dist/types/Error.d.ts +162 -0
  307. package/dist/types/Event.d.ts +171 -0
  308. package/dist/types/FileClass.d.ts +184 -0
  309. package/dist/types/Nodefony.d.ts +66 -0
  310. package/dist/types/Service.d.ts +165 -0
  311. package/dist/types/Tools.d.ts +116 -0
  312. package/dist/types/bin/resolveLocalCli.d.ts +49 -0
  313. package/dist/types/bundler/index.d.ts +66 -0
  314. package/dist/types/cli/agentTargets.d.ts +378 -0
  315. package/dist/types/cli/aiMcp.d.ts +239 -0
  316. package/dist/types/cli/aiMcpReport.d.ts +113 -0
  317. package/dist/types/cli/aiSync.d.ts +68 -0
  318. package/dist/types/cli/aiSyncReport.d.ts +149 -0
  319. package/dist/types/cli/card.d.ts +49 -0
  320. package/dist/types/cli/cardReport.d.ts +127 -0
  321. package/dist/types/cli/completion.d.ts +154 -0
  322. package/dist/types/cli/create.d.ts +177 -0
  323. package/dist/types/cli/env.d.ts +103 -0
  324. package/dist/types/cli/envReport.d.ts +153 -0
  325. package/dist/types/cli/execPortable.d.ts +54 -0
  326. package/dist/types/cli/gitHooks.d.ts +48 -0
  327. package/dist/types/cli/gitHooksReport.d.ts +101 -0
  328. package/dist/types/cli/globalFlags.d.ts +48 -0
  329. package/dist/types/cli/helpReport.d.ts +110 -0
  330. package/dist/types/cli/manPage.d.ts +21 -0
  331. package/dist/types/cli/nodefonyBin.d.ts +45 -0
  332. package/dist/types/cli/outdated.d.ts +119 -0
  333. package/dist/types/cli/progress.d.ts +349 -0
  334. package/dist/types/cli/projectRoot.d.ts +19 -0
  335. package/dist/types/cli/promptPassword.d.ts +22 -0
  336. package/dist/types/cli/prompts.d.ts +102 -0
  337. package/dist/types/cli/scaffold/destination.d.ts +70 -0
  338. package/dist/types/cli/scaffold/engine.d.ts +545 -0
  339. package/dist/types/cli/scaffold/entityFields.d.ts +238 -0
  340. package/dist/types/cli/scaffold/format.d.ts +78 -0
  341. package/dist/types/cli/scaffold/interactive.d.ts +11 -0
  342. package/dist/types/cli/scaffold/moduleLayout.d.ts +69 -0
  343. package/dist/types/cli/scaffold/reservedEntities.d.ts +49 -0
  344. package/dist/types/cli/scaffold/spec.d.ts +159 -0
  345. package/dist/types/cli/scaffold/steps.d.ts +24 -0
  346. package/dist/types/cli/scaffold/userContractSource.d.ts +86 -0
  347. package/dist/types/cli/scaffold/versions.d.ts +14 -0
  348. package/dist/types/cli/scaffold/writer.d.ts +100 -0
  349. package/dist/types/cli/startMenu.d.ts +195 -0
  350. package/dist/types/cli/symbols.d.ts +84 -0
  351. package/dist/types/cli/sysexits.d.ts +31 -0
  352. package/dist/types/cli/tableReport.d.ts +44 -0
  353. package/dist/types/cli/usageReport.d.ts +108 -0
  354. package/dist/types/client/ClientKernel.d.ts +90 -0
  355. package/dist/types/client/IClientKernel.d.ts +195 -0
  356. package/dist/types/client/angular/index.d.ts +273 -0
  357. package/dist/types/client/announce.d.ts +74 -0
  358. package/dist/types/client/debugbar/DebugBar.d.ts +279 -0
  359. package/dist/types/client/debugbar/format.d.ts +48 -0
  360. package/dist/types/client/debugbar/hmr.d.ts +16 -0
  361. package/dist/types/client/debugbar/index.d.ts +30 -0
  362. package/dist/types/client/debugbar/model.d.ts +158 -0
  363. package/dist/types/client/debugbar/network.d.ts +55 -0
  364. package/dist/types/client/debugbar/profile.d.ts +99 -0
  365. package/dist/types/client/index.d.ts +47 -0
  366. package/dist/types/client/react/index.d.ts +207 -0
  367. package/dist/types/client/realtime/AdaptiveRate.d.ts +138 -0
  368. package/dist/types/client/realtime/BrowserWsTransport.d.ts +27 -0
  369. package/dist/types/client/realtime/RealtimeClient.d.ts +573 -0
  370. package/dist/types/client/realtime/localEvents.d.ts +53 -0
  371. package/dist/types/client/realtime/notice.d.ts +70 -0
  372. package/dist/types/client/realtime/observe.d.ts +284 -0
  373. package/dist/types/client/roles/index.d.ts +15 -0
  374. package/dist/types/client/roles/registry.d.ts +72 -0
  375. package/dist/types/client/roles/roles.d.ts +68 -0
  376. package/dist/types/client/shim/cli-color.d.ts +2 -0
  377. package/dist/types/client/shim/events.d.ts +39 -0
  378. package/dist/types/client/shim/util.d.ts +14 -0
  379. package/dist/types/client/svelte/index.d.ts +216 -0
  380. package/dist/types/client/syslog/context.d.ts +76 -0
  381. package/dist/types/client/syslog/errors.d.ts +46 -0
  382. package/dist/types/client/syslog/uplink.d.ts +89 -0
  383. package/dist/types/client/transport/websocket.d.ts +5 -0
  384. package/dist/types/client/vue/index.d.ts +234 -0
  385. package/dist/types/colors.d.ts +32 -0
  386. package/dist/types/command/Builder.d.ts +47 -0
  387. package/dist/types/command/Command.d.ts +268 -0
  388. package/dist/types/config/configMeta.d.ts +53 -0
  389. package/dist/types/config/configProvenance.d.ts +58 -0
  390. package/dist/types/config/defaults.d.ts +33 -0
  391. package/dist/types/config/defineConfig.d.ts +70 -0
  392. package/dist/types/config/defineEnv.d.ts +170 -0
  393. package/dist/types/config/envExample.d.ts +23 -0
  394. package/dist/types/config/envOverride.d.ts +236 -0
  395. package/dist/types/config/index.d.ts +23 -0
  396. package/dist/types/config/infra.d.ts +171 -0
  397. package/dist/types/config/reactivity.d.ts +36 -0
  398. package/dist/types/config/reservedEnv.d.ts +145 -0
  399. package/dist/types/config/schema.d.ts +113 -0
  400. package/dist/types/config/types.d.ts +374 -0
  401. package/dist/types/config/use.d.ts +80 -0
  402. package/dist/types/finder/File.d.ts +26 -0
  403. package/dist/types/finder/FileResult.d.ts +14 -0
  404. package/dist/types/finder/Finder.d.ts +51 -0
  405. package/dist/types/finder/Result.d.ts +10 -0
  406. package/dist/types/index.d.ts +205 -0
  407. package/dist/types/kernel/BootConfigurationError.d.ts +50 -0
  408. package/dist/types/kernel/CliKernel.d.ts +289 -0
  409. package/dist/types/kernel/Kernel.d.ts +1255 -0
  410. package/dist/types/kernel/Module.d.ts +326 -0
  411. package/dist/types/kernel/adminPlane/adminCaller.d.ts +105 -0
  412. package/dist/types/kernel/adminPlane/adminRbac.d.ts +44 -0
  413. package/dist/types/kernel/adminPlane/catalog.d.ts +122 -0
  414. package/dist/types/kernel/adminPlane/executeAdmin.d.ts +99 -0
  415. package/dist/types/kernel/bootReport.d.ts +112 -0
  416. package/dist/types/kernel/checks/deep.d.ts +122 -0
  417. package/dist/types/kernel/checks/freshness.d.ts +49 -0
  418. package/dist/types/kernel/checks/gating.d.ts +134 -0
  419. package/dist/types/kernel/checks/guards.d.ts +57 -0
  420. package/dist/types/kernel/checks/lastBoot.d.ts +189 -0
  421. package/dist/types/kernel/checks/live.d.ts +110 -0
  422. package/dist/types/kernel/checks/packageDeps.d.ts +44 -0
  423. package/dist/types/kernel/checks/readiness.d.ts +97 -0
  424. package/dist/types/kernel/checks/renderReport.d.ts +107 -0
  425. package/dist/types/kernel/checks/report.d.ts +414 -0
  426. package/dist/types/kernel/checks/runDoctor.d.ts +361 -0
  427. package/dist/types/kernel/checks/surface.d.ts +148 -0
  428. package/dist/types/kernel/checks/walk.d.ts +45 -0
  429. package/dist/types/kernel/checks/wiring.d.ts +54 -0
  430. package/dist/types/kernel/commands/AiMcpCommand.d.ts +39 -0
  431. package/dist/types/kernel/commands/AiSyncCommand.d.ts +28 -0
  432. package/dist/types/kernel/commands/BuildCommand.d.ts +13 -0
  433. package/dist/types/kernel/commands/CardCommand.d.ts +34 -0
  434. package/dist/types/kernel/commands/ClusterCommand.d.ts +29 -0
  435. package/dist/types/kernel/commands/CompletionCommand.d.ts +17 -0
  436. package/dist/types/kernel/commands/CreateCommand.d.ts +16 -0
  437. package/dist/types/kernel/commands/DevCommand.d.ts +40 -0
  438. package/dist/types/kernel/commands/DoctorCommand.d.ts +55 -0
  439. package/dist/types/kernel/commands/EnvCommand.d.ts +35 -0
  440. package/dist/types/kernel/commands/GitHooksCommand.d.ts +27 -0
  441. package/dist/types/kernel/commands/InspectCommand.d.ts +59 -0
  442. package/dist/types/kernel/commands/InstallCommand.d.ts +7 -0
  443. package/dist/types/kernel/commands/MenuCommand.d.ts +58 -0
  444. package/dist/types/kernel/commands/OutdatedCommand.d.ts +47 -0
  445. package/dist/types/kernel/commands/ProdCommand.d.ts +29 -0
  446. package/dist/types/kernel/commands/StatusCommand.d.ts +17 -0
  447. package/dist/types/kernel/commands/StopCommand.d.ts +17 -0
  448. package/dist/types/kernel/commands/SymbolsCommand.d.ts +29 -0
  449. package/dist/types/kernel/commands/runtimeLauncher.d.ts +76 -0
  450. package/dist/types/kernel/decorators/kernelDecorator.d.ts +76 -0
  451. package/dist/types/kernel/injector/injector.d.ts +47 -0
  452. package/dist/types/kernel/injector/serviceOrder.d.ts +29 -0
  453. package/dist/types/kernel/inspect/adminSubjects.d.ts +169 -0
  454. package/dist/types/kernel/inspect/docOutline.d.ts +53 -0
  455. package/dist/types/kernel/lifecycleTags.d.ts +79 -0
  456. package/dist/types/kernel/moduleConfig.d.ts +35 -0
  457. package/dist/types/kernel/moduleGating.d.ts +78 -0
  458. package/dist/types/kernel/readinessRegistry.d.ts +104 -0
  459. package/dist/types/kernel/resolveModuleEntry.d.ts +46 -0
  460. package/dist/types/mcp/caller.d.ts +55 -0
  461. package/dist/types/mcp/guard.d.ts +66 -0
  462. package/dist/types/mcp/protocol.d.ts +163 -0
  463. package/dist/types/mcp/server.d.ts +70 -0
  464. package/dist/types/mcp/tools.d.ts +209 -0
  465. package/dist/types/oauth/authorizationServer.d.ts +204 -0
  466. package/dist/types/oauth/protectedResource.d.ts +339 -0
  467. package/dist/types/realtime/IRealtimeSocket.d.ts +142 -0
  468. package/dist/types/realtime/IRealtimeTransport.d.ts +50 -0
  469. package/dist/types/realtime/JsonRpcPeer.d.ts +251 -0
  470. package/dist/types/realtime/RealtimeEventMap.d.ts +269 -0
  471. package/dist/types/realtime/channelRate.d.ts +55 -0
  472. package/dist/types/realtime/platformChannels.d.ts +147 -0
  473. package/dist/types/runtime/GcScheduler.d.ts +96 -0
  474. package/dist/types/runtime/RequestContext.d.ts +152 -0
  475. package/dist/types/runtime/bearer.d.ts +88 -0
  476. package/dist/types/runtime/engineEnvironment.d.ts +115 -0
  477. package/dist/types/runtime/loadEnv.d.ts +86 -0
  478. package/dist/types/runtime/pageFacets.d.ts +104 -0
  479. package/dist/types/runtime/pageFilters.d.ts +139 -0
  480. package/dist/types/runtime/pageGuard.d.ts +78 -0
  481. package/dist/types/runtime/pageQuery.d.ts +138 -0
  482. package/dist/types/runtime/pageSort.d.ts +86 -0
  483. package/dist/types/runtime/redact.d.ts +27 -0
  484. package/dist/types/runtime/withTimeout.d.ts +51 -0
  485. package/dist/types/service/cluster/ClusterManager.d.ts +112 -0
  486. package/dist/types/service/cluster/ClusterProbeAggregator.d.ts +68 -0
  487. package/dist/types/service/cluster/ClusterRelay.d.ts +57 -0
  488. package/dist/types/service/cluster/clusterMaster.d.ts +40 -0
  489. package/dist/types/service/cluster/clusterMessage.d.ts +94 -0
  490. package/dist/types/service/cluster/cpuQuota.d.ts +37 -0
  491. package/dist/types/service/cluster/instanceProbe.d.ts +82 -0
  492. package/dist/types/service/cluster/podEnvironment.d.ts +35 -0
  493. package/dist/types/service/cluster/processProbe.d.ts +53 -0
  494. package/dist/types/service/cluster/richProcessProbe.d.ts +77 -0
  495. package/dist/types/service/cluster/topology.d.ts +64 -0
  496. package/dist/types/service/dev/BootReporter.d.ts +67 -0
  497. package/dist/types/service/dev/DevSupervisor.d.ts +117 -0
  498. package/dist/types/service/dev/bootVerdict.d.ts +99 -0
  499. package/dist/types/service/dev/detachedStart.d.ts +164 -0
  500. package/dist/types/service/dev/devProcess.d.ts +638 -0
  501. package/dist/types/service/dev/devProjects.d.ts +121 -0
  502. package/dist/types/service/dev/devStatusReport.d.ts +141 -0
  503. package/dist/types/service/dev/devStop.d.ts +57 -0
  504. package/dist/types/service/fetchService.d.ts +29 -0
  505. package/dist/types/service/gitService.d.ts +24 -0
  506. package/dist/types/syslog/Pdu.d.ts +134 -0
  507. package/dist/types/syslog/Syslog.d.ts +482 -0
  508. package/dist/types/syslog/drivers/ClusterFileLogDriver.d.ts +40 -0
  509. package/dist/types/syslog/drivers/FileLogDriver.d.ts +55 -0
  510. package/dist/types/syslog/drivers/ILogDriver.d.ts +177 -0
  511. package/dist/types/syslog/drivers/LokiLogDriver.d.ts +44 -0
  512. package/dist/types/syslog/drivers/MemoryLogDriver.d.ts +20 -0
  513. package/dist/types/syslog/drivers/OpenSearchLogDriver.d.ts +40 -0
  514. package/dist/types/syslog/drivers/builtinLogDrivers.d.ts +43 -0
  515. package/dist/types/syslog/drivers/filterPdus.d.ts +21 -0
  516. package/dist/types/syslog/drivers/logDriverRegistry.d.ts +100 -0
  517. package/dist/types/syslog/drivers/opensearchShared.d.ts +11 -0
  518. package/dist/types/syslog/drivers/pduFlow.d.ts +53 -0
  519. package/dist/types/syslog/drivers/pduProtocol.d.ts +20 -0
  520. package/dist/types/syslog/httpFetch.d.ts +48 -0
  521. package/dist/types/syslog/logColor.d.ts +59 -0
  522. package/dist/types/syslog/sinks/FileSink.d.ts +78 -0
  523. package/dist/types/syslog/transports/BatchingHttpTransport.d.ts +59 -0
  524. package/dist/types/syslog/transports/ConsoleTransport.d.ts +8 -0
  525. package/dist/types/syslog/transports/FileTransport.d.ts +13 -0
  526. package/dist/types/syslog/transports/HttpTransport.d.ts +15 -0
  527. package/dist/types/syslog/transports/LokiTransport.d.ts +45 -0
  528. package/dist/types/syslog/transports/OpenSearchTransport.d.ts +40 -0
  529. package/dist/types/syslog/transports/SyslogTransport.d.ts +9 -0
  530. package/dist/types/syslog/transports/index.d.ts +12 -0
  531. package/dist/types/testing/index.d.ts +197 -0
  532. package/dist/types/types/IAdminApi.d.ts +246 -0
  533. package/dist/types/types/ICliKernel.d.ts +28 -0
  534. package/dist/types/types/ICommand.d.ts +14 -0
  535. package/dist/types/types/IContainer.d.ts +35 -0
  536. package/dist/types/types/IIdempotencyStore.d.ts +159 -0
  537. package/dist/types/types/IKernel.d.ts +138 -0
  538. package/dist/types/types/IMcpTool.d.ts +157 -0
  539. package/dist/types/types/IModule.d.ts +73 -0
  540. package/dist/types/types/IModuleManifest.d.ts +49 -0
  541. package/dist/types/types/IPage.d.ts +119 -0
  542. package/dist/types/types/IService.d.ts +62 -0
  543. package/dist/types/types/ISyslog.d.ts +58 -0
  544. package/dist/types/types/ITransport.d.ts +5 -0
  545. package/dist/types/types/globals.d.ts +47 -0
  546. package/docs/angular-services.md +318 -0
  547. package/docs/catalogue.md +184 -0
  548. package/docs/cli.md +369 -0
  549. package/docs/client.md +616 -0
  550. package/docs/debugbar.md +218 -0
  551. package/docs/environnement.md +308 -0
  552. package/docs/index.md +388 -0
  553. package/docs/kernel.md +670 -0
  554. package/docs/progression.md +228 -0
  555. package/docs/react-hooks.md +686 -0
  556. package/docs/request-context.md +507 -0
  557. package/docs/service.md +590 -0
  558. package/docs/svelte-reactivite.md +293 -0
  559. package/docs/syslog.md +848 -0
  560. package/docs/testing.md +203 -0
  561. package/docs/vue-composables.md +255 -0
  562. package/man/nodefony.1 +152 -0
  563. package/package.json +163 -83
  564. package/templates/app/agents/AGENTS.md.tpl +967 -0
  565. package/templates/app/agents/POINTEUR.md.tpl +12 -0
  566. package/templates/app/base/Dockerfile.tpl +104 -0
  567. package/templates/app/base/README.md.tpl +314 -0
  568. package/templates/app/base/dockerignore.tpl +28 -0
  569. package/templates/app/base/env.ts.tpl +130 -0
  570. package/templates/app/base/gitattributes.tpl +28 -0
  571. package/templates/app/base/github/workflows/ci.yml.tpl +91 -0
  572. package/templates/app/base/gitignore.tpl +46 -0
  573. package/templates/app/base/gitlab-ci.yml.tpl +42 -0
  574. package/templates/app/base/index.ts.tpl +69 -0
  575. package/templates/app/base/nodefony.config.ts.tpl +342 -0
  576. package/templates/app/base/oxlintrc.json.tpl +127 -0
  577. package/templates/app/base/package.json.tpl +75 -0
  578. package/templates/app/base/prettierignore.tpl +24 -0
  579. package/templates/app/base/prettierrc.json.tpl +12 -0
  580. package/templates/app/base/rolldown.config.ts.tpl +8 -0
  581. package/templates/app/base/tests/config.test.ts.tpl +29 -0
  582. package/templates/app/base/tests/e2e.setup.ts.tpl +181 -0
  583. package/templates/app/base/tests/e2e.test.ts.tpl +105 -0
  584. package/templates/app/base/tests/migrations.e2e.test.ts.tpl +579 -0
  585. package/templates/app/base/tsconfig.json.tpl +47 -0
  586. package/templates/app/base/vitest.config.ts.tpl +88 -0
  587. package/templates/app/base/vitest.e2e.config.ts.tpl +39 -0
  588. package/templates/app/complete/compose.yaml.tpl +328 -0
  589. package/templates/app/complete/deploy/migrate-job.yaml.tpl +100 -0
  590. package/templates/app/complete/docker/db/init-nodefony-e2e.sql.tpl +30 -0
  591. package/templates/app/complete/docker/grafana/provisioning/datasources/loki.yaml.tpl +15 -0
  592. package/templates/app/complete/env.local.tpl +11 -0
  593. package/templates/app/complete/env.tpl +53 -0
  594. package/templates/app/complete/nodefony/entity/User.ts.tpl +69 -0
  595. package/templates/app/complete/nodefony/security/provisionUsers.ts.tpl +124 -0
  596. package/templates/app/complete/nodefony/service/AppBannerService.ts.tpl +98 -0
  597. package/templates/app/complete/nodefony/service/AppInfoService.ts.tpl +85 -0
  598. package/templates/app/frontend/angular/frontend/src/accent.css.tpl +34 -0
  599. package/templates/app/frontend/angular/frontend/src/app/app.component.ts.tpl +400 -0
  600. package/templates/app/frontend/react/frontend/src/App.tsx.tpl +421 -0
  601. package/templates/app/frontend/react/frontend/src/accent.css.tpl +30 -0
  602. package/templates/app/frontend/shared/frontend/src/brand.ts.tpl +3 -0
  603. package/templates/app/frontend/shared/frontend/src/showcase.css.tpl +224 -0
  604. package/templates/app/frontend/shared/nodefony/controllers/AppController.ts.tpl +45 -0
  605. package/templates/app/frontend/svelte/frontend/src/App.svelte.tpl +371 -0
  606. package/templates/app/frontend/svelte/frontend/src/accent.css.tpl +34 -0
  607. package/templates/app/frontend/vue/frontend/src/App.vue.tpl +367 -0
  608. package/templates/app/frontend/vue/frontend/src/accent.css.tpl +34 -0
  609. package/templates/app/home/nodefony/controllers/HomeController.ts.tpl +38 -0
  610. package/templates/command/nodefony/command/__NAME__.ts.tpl +132 -0
  611. package/templates/controller/duplex/nodefony/controllers/__NAME__.ts.tpl +188 -0
  612. package/templates/controller/example/nodefony/controllers/__NAME__.ts.tpl +348 -0
  613. package/templates/controller/hello/nodefony/controllers/__NAME__.ts.tpl +143 -0
  614. package/templates/controller/realtime/nodefony/controllers/__NAME__.ts.tpl +153 -0
  615. package/templates/controller/realtime/tests/__KEBAB__-realtime.test.ts.tpl +79 -0
  616. package/templates/controller/rest/nodefony/controllers/__NAME__.ts.tpl +159 -0
  617. package/templates/entity/base/nodefony/entity/__PASCAL__.schema.ts.tpl +31 -0
  618. package/templates/entity/base/nodefony/entity/__PASCAL__.ts.tpl +68 -0
  619. package/templates/entity/controller/nodefony/controllers/__PASCAL__Controller.ts.tpl +335 -0
  620. package/templates/entity/service/nodefony/service/__PASCAL__Service.ts.tpl +126 -0
  621. package/templates/entity/tests/tests/__KEBAB__.e2e.test.ts.tpl +358 -0
  622. package/templates/entity/tests/tests/__KEBAB__.test.ts.tpl +87 -0
  623. package/templates/front/angular/frontend/src/app/app.component.ts.tpl +30 -0
  624. package/templates/front/base/nodefony/controllers/__NAME__.ts.tpl +60 -0
  625. package/templates/front/react/frontend/src/App.tsx.tpl +26 -0
  626. package/templates/front/svelte/frontend/src/App.svelte.tpl +19 -0
  627. package/templates/front/vue/frontend/src/App.vue.tpl +23 -0
  628. package/templates/module/ai/AGENTS.md.tpl +71 -0
  629. package/templates/module/base/README.md.tpl +62 -0
  630. package/templates/module/base/docs/index.md.tpl +55 -0
  631. package/templates/module/base/index.ts.tpl +50 -0
  632. package/templates/module/base/nodefony/config/config.ts.tpl +60 -0
  633. package/templates/module/base/nodefony/config/defineModuleConfig.ts.tpl +55 -0
  634. package/templates/module/base/nodefony/src/errors/__PASCAL__Error.ts.tpl +20 -0
  635. package/templates/module/base/package.json.tpl +53 -0
  636. package/templates/module/base/rolldown.config.ts.tpl +14 -0
  637. package/templates/module/base/tests/__KEBAB__.test.ts.tpl +39 -0
  638. package/templates/module/base/tsconfig.json.tpl +42 -0
  639. package/templates/module/base/vitest.config.ts.tpl +27 -0
  640. package/templates/module/packages/CLAUDE.md.tpl +51 -0
  641. package/templates/module/packages/MEMORY.md.tpl +39 -0
  642. package/templates/module/packages/tsconfig.declarations.json.tpl +19 -0
  643. package/templates/module/packages/tsconfig.tests.json.tpl +11 -0
  644. package/templates/module/service/nodefony/interfaces/I__PASCAL__Service.ts.tpl +14 -0
  645. package/templates/module/service/nodefony/interfaces/index.ts.tpl +1 -0
  646. package/templates/module/service/nodefony/service/__PASCAL__Service.ts.tpl +116 -0
  647. package/templates/service/nodefony/interfaces/I__PASCAL__Service.ts.tpl +19 -0
  648. package/templates/service/nodefony/service/__PASCAL__Service.ts.tpl +136 -0
  649. package/templates/service/tests/__PASCAL__Service.test.ts.tpl +53 -0
  650. package/templates/shared/front-entry/angular/frontend/src/main.ts.tpl +17 -0
  651. package/templates/shared/front-entry/react/frontend/src/main.tsx.tpl +11 -0
  652. package/templates/shared/front-entry/svelte/frontend/src/main.ts.tpl +13 -0
  653. package/templates/shared/front-entry/vue/frontend/src/main.ts.tpl +12 -0
  654. package/templates/shared/front-registrar/nodefony/frontend/register__PASCAL__Entry.ts.tpl +40 -0
  655. package/templates/shared/front-shell/frontend/index.html.tpl +39 -0
  656. package/templates/shared/ng-app-tsconfig/frontend/tsconfig.app.json.tpl +18 -0
  657. package/templates/shared/svelte-shim/frontend/src/env.d.ts.tpl +12 -0
  658. package/templates/shared/vue-shim/frontend/src/env.d.ts.tpl +15 -0
  659. package/.yarnclean +0 -45
  660. package/CHANGELOG.md +0 -406
  661. package/autoloader.es6 +0 -253
  662. package/builder.es6 +0 -366
  663. package/cli/builder/bundles/bundle.js +0 -328
  664. package/cli/builder/bundles/controller.js +0 -73
  665. package/cli/builder/bundles/users-bundle/.yarnclean +0 -45
  666. package/cli/builder/bundles/users-bundle/Command/fixtureTask.js +0 -47
  667. package/cli/builder/bundles/users-bundle/Command/usersCommand.js +0 -105
  668. package/cli/builder/bundles/users-bundle/Entity/mongoose/userEntity.js +0 -168
  669. package/cli/builder/bundles/users-bundle/Entity/sequelize/userEntity.js +0 -231
  670. package/cli/builder/bundles/users-bundle/Fixtures/users.js +0 -117
  671. package/cli/builder/bundles/users-bundle/Fixtures/usersFixtures.js +0 -114
  672. package/cli/builder/bundles/users-bundle/Resources/config/config.js +0 -90
  673. package/cli/builder/bundles/users-bundle/Resources/config/routing.js +0 -17
  674. package/cli/builder/bundles/users-bundle/Resources/config/security.js +0 -96
  675. package/cli/builder/bundles/users-bundle/Resources/config/services.js +0 -7
  676. package/cli/builder/bundles/users-bundle/Resources/config/webpack/webpack.dev.config.js +0 -13
  677. package/cli/builder/bundles/users-bundle/Resources/config/webpack/webpack.prod.config.js +0 -31
  678. package/cli/builder/bundles/users-bundle/Resources/config/webpack.config.js +0 -146
  679. package/cli/builder/bundles/users-bundle/Resources/js/users.js +0 -153
  680. package/cli/builder/bundles/users-bundle/Resources/public/favicon.ico +0 -0
  681. package/cli/builder/bundles/users-bundle/Resources/public/images/users-logo.png +0 -0
  682. package/cli/builder/bundles/users-bundle/Resources/scss/awesome/font-awesome.config.js +0 -11
  683. package/cli/builder/bundles/users-bundle/Resources/scss/custom.scss +0 -23
  684. package/cli/builder/bundles/users-bundle/Resources/scss/users.scss +0 -59
  685. package/cli/builder/bundles/users-bundle/Resources/swagger/openapi/login.js +0 -235
  686. package/cli/builder/bundles/users-bundle/Resources/swagger/openapi/users.js +0 -232
  687. package/cli/builder/bundles/users-bundle/Resources/translations/login.en_en.yml +0 -14
  688. package/cli/builder/bundles/users-bundle/Resources/translations/login.fr_fr.yml +0 -14
  689. package/cli/builder/bundles/users-bundle/Resources/translations/users.en_en.yml +0 -35
  690. package/cli/builder/bundles/users-bundle/Resources/translations/users.fr_fr.yml +0 -36
  691. package/cli/builder/bundles/users-bundle/Resources/views/base.html.twig +0 -32
  692. package/cli/builder/bundles/users-bundle/Resources/views/footer.html.twig +0 -7
  693. package/cli/builder/bundles/users-bundle/Resources/views/header.html.twig +0 -90
  694. package/cli/builder/bundles/users-bundle/Resources/views/login/login.html.twig +0 -43
  695. package/cli/builder/bundles/users-bundle/Resources/views/users/createUser.html.twig +0 -296
  696. package/cli/builder/bundles/users-bundle/Resources/views/users/readUsers.html.twig +0 -94
  697. package/cli/builder/bundles/users-bundle/controller/api/graphql/graphqlController.js +0 -56
  698. package/cli/builder/bundles/users-bundle/controller/api/graphql/userResolver.js +0 -121
  699. package/cli/builder/bundles/users-bundle/controller/api/graphql/usertype.js +0 -58
  700. package/cli/builder/bundles/users-bundle/controller/api/openapi/loginApiController.js +0 -210
  701. package/cli/builder/bundles/users-bundle/controller/api/openapi/restUserController.js +0 -244
  702. package/cli/builder/bundles/users-bundle/controller/loginController.js +0 -91
  703. package/cli/builder/bundles/users-bundle/controller/usersController.js +0 -332
  704. package/cli/builder/bundles/users-bundle/package.json +0 -58
  705. package/cli/builder/bundles/users-bundle/readme.md +0 -360
  706. package/cli/builder/bundles/users-bundle/services/usersService.js +0 -411
  707. package/cli/builder/bundles/users-bundle/src/providers/mongoose/userProvider.js +0 -47
  708. package/cli/builder/bundles/users-bundle/src/providers/sequelize/userProvider.js +0 -48
  709. package/cli/builder/bundles/users-bundle/tests/loginTest.js +0 -182
  710. package/cli/builder/bundles/users-bundle/usersBundle.js +0 -26
  711. package/cli/builder/microService/microService.js +0 -261
  712. package/cli/builder/microService/skeletons/.editorconfig +0 -18
  713. package/cli/builder/microService/skeletons/.env-cmdrc.js +0 -32
  714. package/cli/builder/microService/skeletons/.jshintrc +0 -37
  715. package/cli/builder/microService/skeletons/README.md +0 -117
  716. package/cli/builder/microService/skeletons/bin/bash/hello.sh +0 -5
  717. package/cli/builder/microService/skeletons/bin/cli +0 -13
  718. package/cli/builder/microService/skeletons/bin/python/hello.py +0 -20
  719. package/cli/builder/microService/skeletons/config/config.js +0 -29
  720. package/cli/builder/microService/skeletons/config/pm2.config.js +0 -72
  721. package/cli/builder/microService/skeletons/config/webpack/webpack.config.dev.js +0 -8
  722. package/cli/builder/microService/skeletons/config/webpack/webpack.config.prod.js +0 -25
  723. package/cli/builder/microService/skeletons/config/webpack.config.js +0 -114
  724. package/cli/builder/microService/skeletons/package.json +0 -76
  725. package/cli/builder/microService/skeletons/src/browser/index.css +0 -3
  726. package/cli/builder/microService/skeletons/src/browser/index.js +0 -16
  727. package/cli/builder/microService/skeletons/src/browser/socketio.js +0 -46
  728. package/cli/builder/microService/skeletons/src/cli/cli.js +0 -224
  729. package/cli/builder/microService/skeletons/src/cli/menu.js +0 -28
  730. package/cli/builder/microService/skeletons/src/n-api/README.md +0 -1
  731. package/cli/builder/microService/skeletons/src/n-api/binding.gyp +0 -14
  732. package/cli/builder/microService/skeletons/src/n-api/hello.cc +0 -14
  733. package/cli/builder/microService/skeletons/src/n-api/hello.js +0 -23
  734. package/cli/builder/microService/skeletons/src/n-api/package.json +0 -15
  735. package/cli/builder/microService/skeletons/src/node/examples/index.js +0 -120
  736. package/cli/builder/microService/skeletons/src/node/index.js +0 -102
  737. package/cli/builder/microService/skeletons/src/node/services/markdown/markdown.js +0 -27
  738. package/cli/builder/microService/skeletons/src/node/services/servers/http.js +0 -45
  739. package/cli/builder/microService/skeletons/src/node/services/servers/https.js +0 -44
  740. package/cli/builder/microService/skeletons/src/node/services/socketio/socketio.js +0 -46
  741. package/cli/builder/microService/skeletons/src/node/services/syscall/syscall.js +0 -111
  742. package/cli/builder/microService/skeletons/src/node/services/worker/thread.js +0 -59
  743. package/cli/builder/microService/skeletons/src/node/services/worker/worker.js +0 -60
  744. package/cli/builder/microService/skeletons/src/templates/base.html +0 -12
  745. package/cli/builder/microService/skeletons/src/templates/socket.html +0 -23
  746. package/cli/builder/microService/skeletons/tests/unit/serviceTest.js +0 -30
  747. package/cli/builder/project/project.js +0 -474
  748. package/cli/builder/project/skeletons/README.md +0 -778
  749. package/cli/builder/project/skeletons/bin/dev-deploy.sh +0 -5
  750. package/cli/builder/project/skeletons/bin/generateCertificates.sh.skeleton +0 -180
  751. package/cli/builder/project/skeletons/bin/prod-deploy.sh +0 -3
  752. package/cli/builder/project/skeletons/config/config.js.skeleton +0 -178
  753. package/cli/builder/project/skeletons/config/openssl/ca/openssl.cnf.skeleton +0 -150
  754. package/cli/builder/project/skeletons/config/openssl/ca_intermediate/openssl.cnf.skeleton +0 -152
  755. package/cli/builder/project/skeletons/config/pm2.config.js.skeleton +0 -62
  756. package/cli/builder/project/skeletons/documentation.html.twig +0 -24
  757. package/cli/builder/project/skeletons/editorconfig.skeleton +0 -18
  758. package/cli/builder/project/skeletons/eslintignore.skeleton +0 -15
  759. package/cli/builder/project/skeletons/eslintrc.js.skeleton +0 -97
  760. package/cli/builder/project/skeletons/gitignore.skeleton +0 -32
  761. package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.37.entity-user.js +0 -137
  762. package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.38.entity-session.js +0 -97
  763. package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.39.entity-requests.js +0 -115
  764. package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.40.entity-jwts.js +0 -97
  765. package/cli/builder/project/skeletons/migrations/migrations.skeleton.js +0 -101
  766. package/cli/builder/project/skeletons/package.json.twig +0 -71
  767. package/cli/builder/react/reactBuilder.js +0 -224
  768. package/cli/builder/react/skeletons/app/Resources/databases/nodefony.db +0 -0
  769. package/cli/builder/react/skeletons/app/Resources/translations/messages.en_en.yml +0 -5
  770. package/cli/builder/react/skeletons/app/Resources/translations/messages.fr_fr.yml +0 -5
  771. package/cli/builder/react/skeletons/app/Resources/views/base.html.twig +0 -33
  772. package/cli/builder/react/skeletons/app/config/config.js +0 -392
  773. package/cli/builder/react/skeletons/app/config/routing.js +0 -10
  774. package/cli/builder/react/skeletons/app/config/security.js +0 -74
  775. package/cli/builder/react/skeletons/app/controller/appController.js +0 -22
  776. package/cli/builder/sandbox/sandBoxBuilder.js +0 -610
  777. package/cli/builder/sandbox/skeletons/Resources/css/entry.css +0 -48
  778. package/cli/builder/sandbox/skeletons/Resources/js/entry.js +0 -60
  779. package/cli/builder/sandbox/skeletons/Resources/public/manifest.json +0 -32
  780. package/cli/builder/sandbox/skeletons/Resources/translations/messages.en_en.yml +0 -5
  781. package/cli/builder/sandbox/skeletons/Resources/translations/messages.fr_fr.yml +0 -5
  782. package/cli/builder/sandbox/skeletons/Resources/views/base.html.twig +0 -46
  783. package/cli/builder/sandbox/skeletons/Resources/views/index.html.twig +0 -34
  784. package/cli/builder/sandbox/skeletons/bootstrap/custom.scss +0 -27
  785. package/cli/builder/sandbox/skeletons/bootstrap/entry.scss +0 -60
  786. package/cli/builder/sandbox/skeletons/workbox/templates/index.html.twig +0 -32
  787. package/cli/builder/sandbox/skeletons/workbox/workers/service-worker.js +0 -196
  788. package/cli/builder/skeletons/Resources/public/favicon.ico +0 -0
  789. package/cli/builder/skeletons/Resources/public/images/app-logo.png +0 -0
  790. package/cli/builder/skeletons/Resources/views/framework-bundle/views/401.html.twig +0 -1
  791. package/cli/builder/skeletons/Resources/views/framework-bundle/views/401.json.twig +0 -24
  792. package/cli/builder/skeletons/Resources/views/framework-bundle/views/403.html.twig +0 -1
  793. package/cli/builder/skeletons/Resources/views/framework-bundle/views/403.json.twig +0 -20
  794. package/cli/builder/skeletons/Resources/views/framework-bundle/views/404.html.twig +0 -1
  795. package/cli/builder/skeletons/Resources/views/framework-bundle/views/404.json.twig +0 -20
  796. package/cli/builder/skeletons/Resources/views/framework-bundle/views/500.html.twig +0 -1
  797. package/cli/builder/skeletons/Resources/views/framework-bundle/views/base.html.twig +0 -30
  798. package/cli/builder/skeletons/Resources/views/framework-bundle/views/exception.html.twig +0 -1
  799. package/cli/builder/skeletons/Resources/views/framework-bundle/views/exception.json.twig +0 -24
  800. package/cli/builder/skeletons/Resources/views/framework-bundle/views/footer.html.twig +0 -33
  801. package/cli/builder/skeletons/Resources/views/framework-bundle/views/header.html.twig +0 -6
  802. package/cli/builder/skeletons/Resources/views/framework-bundle/views/index.html.twig +0 -6
  803. package/cli/builder/skeletons/Resources/views/framework-bundle/views/index.json.twig +0 -1
  804. package/cli/builder/skeletons/Resources/views/framework-bundle/views/layout.html.twig +0 -125
  805. package/cli/builder/skeletons/Resources/views/framework-bundle/views/layout.json.twig +0 -5
  806. package/cli/builder/skeletons/Resources/views/framework-bundle/views/timeout.html.twig +0 -1
  807. package/cli/builder/skeletons/Resources/views/framework-bundle/views/timeout.json.twig +0 -24
  808. package/cli/builder/skeletons/app/appKernel.js +0 -133
  809. package/cli/builder/skeletons/binding/binding.cc +0 -26
  810. package/cli/builder/skeletons/binding/binding.skeleton +0 -8
  811. package/cli/builder/skeletons/bundle/bundleClass.js +0 -37
  812. package/cli/builder/skeletons/command/commandClass.js +0 -11
  813. package/cli/builder/skeletons/command/taskClass.js +0 -20
  814. package/cli/builder/skeletons/config/config.js +0 -138
  815. package/cli/builder/skeletons/config/nodefony/elastic-bundle.js +0 -37
  816. package/cli/builder/skeletons/config/nodefony/framework-bundle.js +0 -22
  817. package/cli/builder/skeletons/config/nodefony/http-bundle.js +0 -104
  818. package/cli/builder/skeletons/config/nodefony/mail-bundle.js +0 -44
  819. package/cli/builder/skeletons/config/nodefony/mongoose-bundle.js +0 -51
  820. package/cli/builder/skeletons/config/nodefony/monitoring-bundle.js +0 -34
  821. package/cli/builder/skeletons/config/nodefony/realtime-bundle.js +0 -15
  822. package/cli/builder/skeletons/config/nodefony/redis-bundle.js +0 -44
  823. package/cli/builder/skeletons/config/nodefony/security-bundle.js +0 -25
  824. package/cli/builder/skeletons/config/nodefony/sequelize-bundle.js +0 -156
  825. package/cli/builder/skeletons/config/routing.js +0 -55
  826. package/cli/builder/skeletons/config/security.js +0 -102
  827. package/cli/builder/skeletons/config/services.js +0 -1
  828. package/cli/builder/skeletons/config/webpack/webpack.dev.config.js +0 -13
  829. package/cli/builder/skeletons/config/webpack/webpack.prod.config.js +0 -20
  830. package/cli/builder/skeletons/config/webpack.config.js +0 -148
  831. package/cli/builder/skeletons/controller/controllerClass.js +0 -75
  832. package/cli/builder/skeletons/package.json.twig +0 -57
  833. package/cli/builder/skeletons/unittest/testFile.js +0 -46
  834. package/cli/builder/vue/skeletons/Resources/public/images/app-logo.png +0 -0
  835. package/cli/builder/vue/skeletons/Resources/translations/messages.en_en.yml +0 -5
  836. package/cli/builder/vue/skeletons/Resources/translations/messages.fr_fr.yml +0 -5
  837. package/cli/builder/vue/skeletons/vue.config.js +0 -129
  838. package/cli/builder/vue/vueBuilder.js +0 -410
  839. package/cli/generate/generate.es6 +0 -103
  840. package/cli/install/install.js +0 -190
  841. package/cli/sequelize/sequelize.js +0 -94
  842. package/cli/start.js +0 -702
  843. package/cli/tools/pm2.es6 +0 -112
  844. package/cli/tools/tools.es6 +0 -97
  845. package/cli.es6 +0 -925
  846. package/container.es6 +0 -272
  847. package/error.es6 +0 -293
  848. package/fileClass.es6 +0 -242
  849. package/finder/file.es6 +0 -33
  850. package/finder/fileResult.es6 +0 -138
  851. package/finder/finder2.es6 +0 -275
  852. package/finder.es6 +0 -427
  853. package/kernel/annotations/annotations.es6 +0 -286
  854. package/kernel/api/api.es6 +0 -61
  855. package/kernel/api/graphqlApi.es6 +0 -107
  856. package/kernel/api/jsonApi.es6 +0 -177
  857. package/kernel/api/openApi.es6 +0 -139
  858. package/kernel/api/schemas/openApiSchema.js +0 -394
  859. package/kernel/babylon.es6 +0 -162
  860. package/kernel/bundle.es6 +0 -1200
  861. package/kernel/cliKernel.es6 +0 -869
  862. package/kernel/command.es6 +0 -78
  863. package/kernel/commands/nodefonyCommand.es6 +0 -247
  864. package/kernel/commands/tasks/bundlesTask.es6 +0 -59
  865. package/kernel/controllers/controller.es6 +0 -791
  866. package/kernel/fixture.es6 +0 -19
  867. package/kernel/injections/injections.es6 +0 -424
  868. package/kernel/kernel.es6 +0 -1960
  869. package/kernel/kernelWatcher.es6 +0 -387
  870. package/kernel/orm/entity.es6 +0 -59
  871. package/kernel/orm/orm.es6 +0 -139
  872. package/kernel/reader.es6 +0 -290
  873. package/kernel/security/encoder.es6 +0 -17
  874. package/kernel/security/factories/factory.es6 +0 -111
  875. package/kernel/security/factories/passeportFactory.es6 +0 -61
  876. package/kernel/security/provider.es6 +0 -58
  877. package/kernel/security/providers/chainProvider.es6 +0 -99
  878. package/kernel/security/providers/memoryProvider.es6 +0 -55
  879. package/kernel/security/providers/providerManager.es6 +0 -67
  880. package/kernel/security/providers/userEntityProvider.es6 +0 -50
  881. package/kernel/security/role.es6 +0 -12
  882. package/kernel/security/secureArea.es6 +0 -431
  883. package/kernel/security/tokens/token.es6 +0 -171
  884. package/kernel/security/user.es6 +0 -106
  885. package/kernel/serviceRealTime.es6 +0 -21
  886. package/kernel/services/connectionsService.es6 +0 -93
  887. package/kernel/services/cron/cronService.es6 +0 -123
  888. package/kernel/task.es6 +0 -80
  889. package/kernel/templates.es6 +0 -22
  890. package/kernel/templating/twig.es6 +0 -218
  891. package/kernel/tests/cliTest.js +0 -59
  892. package/kernel/tests/containerTest.js +0 -232
  893. package/kernel/tests/kernelTest.js +0 -39
  894. package/nodefony.es6 +0 -1084
  895. package/notificationsCenter.es6 +0 -118
  896. package/protocol.es6 +0 -86
  897. package/protocols/bayeux.es6 +0 -174
  898. package/protocols/jsonRpc/jsonrpc.es6 +0 -56
  899. package/result.es6 +0 -99
  900. package/service.es6 +0 -288
  901. package/syslog/pdu.es6 +0 -141
  902. package/syslog/syslog.es6 +0 -754
  903. package/watcher.es6 +0 -113
@@ -0,0 +1,453 @@
1
+ import { extend } from "../Tools.js";
2
+ import Service from "../Service.js";
3
+ import { toImportSpecifier } from "./resolveModuleEntry.js";
4
+ import { tagListener } from "./lifecycleTags.js";
5
+ import Injector from "./injector/injector.js";
6
+ import { createRequire } from "node:module";
7
+ import cluster from "node:cluster";
8
+ import { basename, dirname, isAbsolute, resolve } from "node:path";
9
+ import * as fs from "node:fs/promises";
10
+ import { fileURLToPath } from "node:url";
11
+ //#region src/kernel/Module.ts
12
+ const regModuleName = /^[Mm]odule-([\w-]+)/u;
13
+ const controllers = {};
14
+ /**
15
+ * Unité fonctionnelle de Nodefony — successeur direct du concept "Bundle" (Symfony / Nodefony JS).
16
+ *
17
+ * Un Module encapsule un domaine : routes, controllers, services, entités ORM, config, commandes
18
+ * CLI. Il est instancié par le {@link Kernel} au boot depuis le manifeste `config.modules`
19
+ * (résolu/chargé à `onPreRegister`). Hérite de {@link Service} → bénéficie du DI Container,
20
+ * EventEmitter, Syslog.
21
+ *
22
+ * Hooks lifecycle disponibles (méthodes prototype obligatoires, jamais arrow ni property init —
23
+ * `super()` tourne AVANT les initializers) :
24
+ * - `onKernelRegister()` — phase `onRegister` (modules s'auto-déclarent)
25
+ * - `onKernelBoot()` — phase `onBoot` (services bootés, connexions ouvertes)
26
+ * - `onKernelReady()` — phase `onReady` (cross-wiring inter-modules)
27
+ * - `init(kernel?)` — appelé par {@link Kernel.addModule}, équivalent constructeur async
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * import { Module, services } from "nodefony";
32
+ *
33
+ * // `@services([...])` déclare les services du module ; l'ordre de la liste
34
+ * // n'importe pas (il est recalculé depuis les dépendances déclarées).
35
+ * @services([MyService])
36
+ * export class MyModule extends Module {
37
+ * static readonly path: string = import.meta.url;
38
+ *
39
+ * async onKernelBoot(): Promise<this> {
40
+ * this.log("Module booted", "INFO");
41
+ * return this;
42
+ * }
43
+ * }
44
+ * ```
45
+ *
46
+ * @remarks Le constructor attache TOUJOURS **un** listener, indépendamment des hooks de la
47
+ * sous-classe : un `prependOnceListener("onPreBoot")` qui charge le `package.json` du module
48
+ * ({@link Module.setEvents}). Les hooks `onKernelRegister/Boot/Ready` ne sont attachés que si la
49
+ * sous-classe les définit.
50
+ */
51
+ var Module = class Module extends Service {
52
+ commands = {};
53
+ static controllers = controllers;
54
+ /**
55
+ * Criticité du module pour la **résilience de boot** (Phase 3). `true` (défaut)
56
+ * = un échec/timeout d'un de ses hooks lifecycle interrompt le boot **en
57
+ * production** (le pod crashe → l'orchestrateur le redémarre, cloud-native) et
58
+ * émet un WARNING **en développement** (le serveur démarre quand même). `false`
59
+ * = fail-soft partout (le module est optionnel : un échec n'empêche jamais le
60
+ * boot — ex. studio, fronts de démo, mediasoup, realtime, redis).
61
+ *
62
+ * ⚠️ **Statique** (pas une propriété d'instance) : lue dans le constructeur via
63
+ * `Module.setEvents()`, donc AVANT que les initializers de la sous-classe ne
64
+ * tournent — une `critical = false` en propriété d'instance arriverait trop
65
+ * tard. Override déclaratif : `static override critical = false;`.
66
+ */
67
+ static critical = true;
68
+ package;
69
+ path = "";
70
+ isApp = false;
71
+ /**
72
+ * Noms des services enregistrés PAR ce module (via {@link addService},
73
+ * y compris ceux du décorateur `@services`). Alloué au 1er ajout (lazy).
74
+ * Sert l'introspection admin (Studio) — qui n'est pas inférable du Container
75
+ * partagé seul. Cf {@link getServiceNames}.
76
+ */
77
+ _serviceNames = null;
78
+ /**
79
+ * Initialise le module — appelé par {@link Kernel.addModule}.
80
+ *
81
+ * @param name - nom unique du module dans le kernel (key dans `kernel.modules`).
82
+ * @param kernel - kernel parent (fournit container, syslog, lifecycle events).
83
+ * @param path - chemin source du module (généralement `import.meta.url`).
84
+ * @param options - config du module (merge avec defaults via `setParameters("modules.<name>")`).
85
+ */
86
+ constructor(name, kernel, path, options) {
87
+ super(name, kernel.container, void 0, options);
88
+ this.setParameters(`modules.${this.name}`, this.options);
89
+ this.path = this.setPath(path);
90
+ this.setEvents();
91
+ }
92
+ /**
93
+ * Schéma JSON (`z.toJSONSchema`) de la configuration du module, ou `null` si le
94
+ * module n'est pas (encore) migré vers une validation Zod.
95
+ *
96
+ * Lu par le data plane admin ({@link KernelAdminApi} endpoint `module/{name}`) :
97
+ * Studio affiche alors la config en mode « réglages documentés » (clé, type,
98
+ * défaut, valeurs possibles, état, et valeur effective issue de `options`) au
99
+ * lieu d'un dump brut clé→valeur. Les flags Nodefony (`reserved`,
100
+ * `runtimeMutable`, `kernelDerived`, `secret`) attachés via `.meta()` (natif zod) sont
101
+ * recopiés dans le JSON Schema par `z.toJSONSchema()` et exploités par l'UI.
102
+ *
103
+ * Défaut `null` (aucun schéma). Un module migré **override** pour renvoyer son
104
+ * `xConfigJsonSchema()`. Le core n'importe PAS zod : la sérialisation vit dans
105
+ * chaque module qui possède son schéma (0 dépendance ajoutée au cœur).
106
+ *
107
+ * @returns le JSON Schema de la config du module, ou `null`.
108
+ */
109
+ configSchema() {
110
+ return null;
111
+ }
112
+ /**
113
+ * Config **validée + gelée** du module — point d'accès UNIFORME et typé.
114
+ *
115
+ * Renvoie `this.options` (l'objet de config du module, réassigné par sa
116
+ * validation Zod à `onKernelRegister`). Un module se type via
117
+ * `extends Module<IXConfig>` → `this.config` est alors `IXConfig` sans cast.
118
+ * Remplace le double idiome historique (`this.options` brut d'un côté,
119
+ * `this.get("<module>Config")` de l'autre) par un seul accès. Coût nul : le
120
+ * getter renvoie la référence, aucune allocation ni appel système.
121
+ *
122
+ * @returns la config du module, typée `TConfig` (défaut `Record<string, unknown>`).
123
+ */
124
+ get config() {
125
+ return this.options;
126
+ }
127
+ /**
128
+ * Résout le chemin source du module (`module.path`) — normalise URL `file://`,
129
+ * remonte au-dessus de `dist/` si nécessaire.
130
+ *
131
+ * @remarks Opération purement LEXICALE, volontairement : l'entrée est déjà absolue
132
+ * (`import.meta.url`). Remonter le dossier `dist` passait auparavant par
133
+ * `resolve(myPath, "..")`, qui ancre le chemin sur le répertoire courant — donc sous
134
+ * Windows y ajoute la lettre de lecteur et normalise les séparateurs. La racine d'un
135
+ * module se mettait ainsi à dépendre de l'endroit d'où l'on avait lancé le process.
136
+ * `dirname` donne le même résultat sur tout chemin absolu, sans cet ancrage.
137
+ *
138
+ * @param myPath - chemin brut (souvent `import.meta.url` de la classe Module).
139
+ * @returns chemin absolu du dossier source du module.
140
+ */
141
+ setPath(myPath) {
142
+ if (myPath.startsWith("file://")) myPath = fileURLToPath(myPath);
143
+ const dir = basename(dirname(myPath)) === "dist" ? dirname(myPath) : myPath;
144
+ return dirname(dir);
145
+ }
146
+ gePath(name = this.name) {
147
+ return Module.getModulePath(name);
148
+ }
149
+ /**
150
+ * Résout le chemin d'installation d'un module npm via `require.resolve`.
151
+ *
152
+ * @param name - nom du package npm (`"@nodefony/http"`, etc.).
153
+ * @returns chemin absolu vers le dossier du module.
154
+ */
155
+ static getModulePath(name) {
156
+ const pth = createRequire(import.meta.url).resolve(name);
157
+ if (basename(dirname(pth)) === "dist") return dirname(dirname(pth));
158
+ return dirname(pth);
159
+ }
160
+ /**
161
+ * Câble les hooks lifecycle (`onKernelRegister/Boot/Ready`) sur le kernel parent.
162
+ *
163
+ * Appelé une seule fois dans le constructor. Lit les méthodes prototype définies par
164
+ * la sous-classe et les attache via `kernel.once()`. Si la sous-classe ne définit pas
165
+ * un hook, il n'est pas attaché (pas de listener orphelin).
166
+ *
167
+ * Toujours attache un listener `onPreBoot` (prepend, donc index 0) pour charger le
168
+ * `package.json` du module. Les overrides de config `Module-<name>`, eux, ne passent
169
+ * PLUS par ici : ils sont appliqués par `Kernel.applyModuleConfigOverrides()` entre
170
+ * `onPreRegister` et `onRegister` (raison détaillée dans le corps de la méthode).
171
+ */
172
+ setEvents() {
173
+ const owner = this.name;
174
+ const critical = this.constructor.critical;
175
+ if (this.onKernelRegister) this.kernel?.once("onRegister", tagListener(this.onKernelRegister.bind(this), owner, critical));
176
+ if (this.onKernelBoot) this.kernel?.once("onBoot", tagListener(this.onKernelBoot.bind(this), owner, critical));
177
+ if (this.onKernelReady) this.kernel?.once("onReady", tagListener(this.onKernelReady.bind(this), owner, critical));
178
+ this.kernel?.prependOnceListener("onPreBoot", tagListener(async () => {
179
+ this.package = await this.getPackageJson();
180
+ }, owner, critical));
181
+ }
182
+ /**
183
+ * Pose un hook de cycle de vie du kernel **au nom de ce module** — donc avec sa
184
+ * politique de boot (propriétaire + criticité), comme les hooks de classe.
185
+ *
186
+ * À utiliser partout où un hook est posé « à la main » depuis le module ou
187
+ * depuis un de ses services (`this.module.hookKernel("onBoot", …)`) plutôt que
188
+ * `kernel.once(...)` directement. Pourquoi : un listener non tagué n'a pas de
189
+ * criticité, et {@link Kernel.isBootErrorFatal} traite l'absence de tag comme
190
+ * **critique**. Un module qui déclare pourtant `static critical = false`
191
+ * voyait donc son échec interrompre le boot en production — la déclaration ne
192
+ * portait que sur ses hooks de classe, pas sur ceux de ses services. Le
193
+ * journal ne pouvait même pas nommer le coupable (`"(anonyme)"`).
194
+ *
195
+ * @param event - nom de l'événement de cycle (`onRegister`, `onBoot`, `onReady`…).
196
+ * @param listener - le hook ; il hérite du nom et de la criticité du module.
197
+ * @returns le module (chaînable).
198
+ */
199
+ hookKernel(event, listener) {
200
+ const critical = this.constructor.critical;
201
+ this.kernel?.once(event, tagListener(listener, this.name, critical));
202
+ return this;
203
+ }
204
+ /**
205
+ * Détecte les overrides de config destinés à d'autres modules (clés `Module-<name>`),
206
+ * les applique, puis les RETIRE des options du module porteur.
207
+ *
208
+ * Permet à un module de surcharger la config d'un autre module sans toucher au code de
209
+ * ce dernier. Exemple : `Module-http: { port: 8080 }` dans la config de l'app → applique
210
+ * `{ port: 8080 }` à `@nodefony/http`. Warn si module cible inconnu.
211
+ *
212
+ * 🔴 **La clé est CONSOMMÉE.** C'est un ordre de configuration adressé à un
213
+ * autre module, pas une donnée du module porteur : une fois appliquée, elle
214
+ * n'a plus rien à faire dans ses options. La garder cassait la validation du
215
+ * porteur dès lors que son schéma refuse les clés inconnues — et déclarer
216
+ * `module-*` dans les onze schémas du dépôt aurait recopié onze fois une règle
217
+ * qui vit ici. Le retrait vaut AUSSI quand la cible est introuvable : la
218
+ * configuration est morte, elle vient d'être signalée, et rien ne gagne à ce
219
+ * qu'elle fasse en plus tomber le boot du porteur.
220
+ *
221
+ * Personne d'autre ne lit ces clés (`rg` sur `regModuleName` : ce fichier
222
+ * seul) ; sous l'ancien `z.object` elles disparaissaient de toute façon au
223
+ * parse, silencieusement — ce retrait rend explicite ce qui se produisait déjà.
224
+ *
225
+ * @param deep - merge profond (`true`, défaut) vs shallow (`false`).
226
+ * @returns options du module courant, débarrassées des clés d'override consommées.
227
+ */
228
+ readOverrideModuleConfig(deep = true) {
229
+ const consumed = [];
230
+ for (const ele in this.options) {
231
+ let index = null;
232
+ const override = this.options[ele];
233
+ index = regModuleName.exec(ele);
234
+ if (index && index[1]) {
235
+ consumed.push(ele);
236
+ const mod = this.kernel?.getModule(index[1]);
237
+ if (!mod) {
238
+ this.log(`Override de config ignoré : module "${index[1]}" introuvable (absent de @modules) — retirer la clé "${ele}" ou charger le module`, this.isApp ? "WARNING" : "INFO");
239
+ continue;
240
+ }
241
+ this.log(`Override Configuration Module: ${mod.name}`, "INFO");
242
+ if (deep) mod.options = extend(true, {}, mod.options, override);
243
+ else mod.options = extend({}, mod.options, override);
244
+ }
245
+ }
246
+ for (const key of consumed) delete this.options[key];
247
+ return this.options;
248
+ }
249
+ registerService(service, name) {
250
+ return Injector.register(name || service.constructor.name, service);
251
+ }
252
+ /**
253
+ * Instancie un service via l'{@link Injector} et l'enregistre dans le container du module.
254
+ *
255
+ * Si le service expose une méthode `init(module)`, elle est appelée après
256
+ * instanciation (équivalent constructeur async). Warn si un service du même nom existe
257
+ * déjà (override).
258
+ *
259
+ * @param service - constructeur du service (typiquement décoré `@injectable`).
260
+ * @param args - arguments additionnels passés au constructeur (après les `@inject` resolved).
261
+ * @returns instance du service prête à l'usage.
262
+ */
263
+ async addService(service, ...args) {
264
+ const inst = Injector.instantiate(service, this, ...args);
265
+ if (this.get(inst.name)) this.log(`SERVICE ALREADY EXIST override old service : ${inst.name}`, "WARNING");
266
+ this.log(`SERVICE ADD : ${inst.name}`, "DEBUG");
267
+ const serviceInit = inst;
268
+ const kernel = this.kernel;
269
+ if (kernel) await kernel.guardServiceInitialize(serviceInit, this, this.constructor.critical);
270
+ else if (serviceInit.init) {
271
+ this.log(`SERVICE INITIALIZE : ${inst.name}`, "DEBUG");
272
+ await serviceInit.init(this);
273
+ }
274
+ Injector.rememberContainerKey(service, inst.name);
275
+ this.set(inst.name, inst);
276
+ (this._serviceNames ??= []).push(inst.name);
277
+ return this.get(inst.name);
278
+ }
279
+ /**
280
+ * Politique d'échec d'un service déclaré via `@services([...])` : la MÊME que
281
+ * pour le reste du boot — fatal en production (ou sur une erreur de
282
+ * configuration), fail-soft **ANNONCÉ** ailleurs (agrégé au BootReport, qui
283
+ * fait dire « boot DÉGRADÉ » au superviseur). Jamais un skip silencieux.
284
+ *
285
+ * Appelée par le décorateur `@services`, dont le `catch` se contentait de
286
+ * logger : l'échec n'atteignait ni la politique de criticité ni le BootReport.
287
+ *
288
+ * @param error - l'échec remonté par `addService`/`loadService`.
289
+ * @param service - le constructeur (ou le chemin) du service fautif.
290
+ * @throws l'erreur d'origine si l'échec est fatal (production + module critique).
291
+ */
292
+ handleServiceBootError(error, service) {
293
+ const serviceName = typeof service === "string" ? service : service?.name ?? "(anonyme)";
294
+ const kernel = this.kernel;
295
+ if (!kernel) {
296
+ this.log(error, "ERROR");
297
+ return;
298
+ }
299
+ const critical = this.constructor.critical;
300
+ if (kernel.serviceBootErrorFatal(error, `${this.name} → ${serviceName}`, critical)) throw error;
301
+ }
302
+ /**
303
+ * Noms des services enregistrés par ce module (ordre d'ajout).
304
+ * Vide tant qu'aucun service n'a été ajouté.
305
+ */
306
+ getServiceNames() {
307
+ return this._serviceNames ? [...this._serviceNames] : [];
308
+ }
309
+ /**
310
+ * Charge dynamiquement un service depuis un chemin (`import()`) puis l'enregistre via
311
+ * {@link addService}.
312
+ *
313
+ * @param service - chemin/spécifier du module à importer (URL, npm package, path relatif).
314
+ * @param args - arguments additionnels passés au constructeur.
315
+ * @returns instance du service après instanciation + `init()`.
316
+ */
317
+ async loadService(service, ...args) {
318
+ const res = await import(toImportSpecifier(service));
319
+ return this.addService(res.default, ...args);
320
+ }
321
+ async getPackageJson(cwd) {
322
+ return await this.loadJson(resolve(this.path, "package.json"), cwd);
323
+ }
324
+ /**
325
+ * Récupère un controller enregistré **dans ce module**.
326
+ *
327
+ * Le registre `Module.controllers` est process-global mais indexé par clé
328
+ * **module-scopée** `${module}:${ClassName}` (posée par `Router.setController`),
329
+ * exactement comme l'identité d'un `forward("module:controller:action")`. Deux
330
+ * modules peuvent donc porter un controller homonyme sans collision.
331
+ *
332
+ * @param name - nom de classe du controller (ex. `"DefaultController"`).
333
+ * @returns constructeur typé du controller.
334
+ * @throws Si `name` est falsy ou si le controller n'est pas enregistré pour ce module.
335
+ */
336
+ getController(name) {
337
+ if (!name) throw new Error(`Module getController argument name is mandatory`);
338
+ const key = `${this.name}:${name}`;
339
+ if (Module.controllers[key]) return Module.controllers[key];
340
+ throw new Error(`Controller ${key} not exist`);
341
+ }
342
+ /**
343
+ * Retourne les controllers enregistrés **pour ce module** (clés = nom de classe
344
+ * nu, préfixe module retiré). Vue jetable filtrée depuis le registre global.
345
+ */
346
+ getControllers() {
347
+ const prefix = `${this.name}:`;
348
+ const out = {};
349
+ for (const key in Module.controllers) if (key.startsWith(prefix)) out[key.slice(prefix.length)] = Module.controllers[key];
350
+ return out;
351
+ }
352
+ /**
353
+ * Liste les dépendances + peerDependencies du module (depuis son `package.json`).
354
+ *
355
+ * @returns array de noms de packages npm. **devDependencies exclus**. Doublons possibles
356
+ * si un même package est listé dans `dependencies` ET `peerDependencies`.
357
+ */
358
+ getDependencies() {
359
+ return Module.getPackageDependencies(this.package);
360
+ }
361
+ /**
362
+ * Variante static — extrait les deps depuis un `package.json` arbitraire.
363
+ *
364
+ * @param mypackage - objet `package.json` parsé.
365
+ * @returns array de noms de packages npm (deps + peerDeps, devDeps exclus).
366
+ */
367
+ static getPackageDependencies(mypackage) {
368
+ if (mypackage) {
369
+ const dependencies = Object.keys(mypackage.dependencies || {});
370
+ const peerDependencies = Object.keys(mypackage.peerDependencies || {});
371
+ return [...dependencies, ...peerDependencies];
372
+ }
373
+ return [];
374
+ }
375
+ getModuleName() {
376
+ return this.package?.name;
377
+ }
378
+ getModuleVersion() {
379
+ return this.package?.version;
380
+ }
381
+ /**
382
+ * Enregistre une commande CLI custom rattachée à ce module.
383
+ *
384
+ * Pattern legacy `nodefony <name>:<action>` (ex: `nodefony users:add`). Le {@link CliKernel}
385
+ * doit être disponible (sinon throw `Kernel not ready`). En mode cluster worker, exceptions
386
+ * non-primary sont silencieusement avalées (retour `void`).
387
+ *
388
+ * @param cliCommand - constructeur de la commande (extends `Command`).
389
+ * @returns instance de la commande enregistrée OU `void` si worker secondaire.
390
+ * @throws `Error("Kernel not ready")` si `kernel.cli` n'est pas instancié.
391
+ */
392
+ addCommand(cliCommand) {
393
+ if (this.kernel && this.kernel.cli) try {
394
+ const command = new cliCommand(this.kernel.cli);
395
+ this.commands[command.name] = command;
396
+ return command;
397
+ } catch (e) {
398
+ if (cluster.isPrimary) throw e;
399
+ else if (cluster.isWorker) return;
400
+ }
401
+ throw new Error(`Kernel not ready`);
402
+ }
403
+ /**
404
+ * Exécute `npm install` (ou yarn/pnpm) dans le dossier du module.
405
+ *
406
+ * @param force - ajoute `--force` à l'install. Défaut `false`.
407
+ * @returns code de retour du process (0 = succès) ou Error si crash.
408
+ * @throws Si `packageManager` n'est pas attaché au CliKernel.
409
+ */
410
+ async install(force = false) {
411
+ if ((this.kernel?.cli)?.packageManager) {
412
+ if (force) return await (this.kernel?.cli)?.packageManager(["install", "--force"], this.path);
413
+ return await (this.kernel?.cli)?.packageManager(["install"], this.path);
414
+ }
415
+ throw new Error(`Package Manager not found`);
416
+ }
417
+ /**
418
+ * Exécute `npm outdated` dans le dossier du module.
419
+ *
420
+ * @returns code de retour du process ou Error si crash.
421
+ * @throws Si `packageManager` n'est pas attaché au CliKernel.
422
+ */
423
+ async outdated() {
424
+ if ((this.kernel?.cli)?.packageManager) return await (this.kernel?.cli)?.packageManager(["outdated"], this.path);
425
+ throw new Error(`Package Manager not found`);
426
+ }
427
+ async loadJson(url, cwd = process.cwd()) {
428
+ try {
429
+ const detectpath = isAbsolute(url) ? url : resolve(cwd, url);
430
+ const fileContent = await fs.readFile(detectpath, "utf-8");
431
+ return JSON.parse(fileContent);
432
+ } catch (error) {
433
+ this.log(error, "ERROR");
434
+ throw error;
435
+ }
436
+ }
437
+ /**
438
+ * Surcharge {@link Service.log} — `msgid` défaut = `"MODULE <name>"` pour identifier
439
+ * les logs de ce module dans le pipeline Syslog.
440
+ *
441
+ * @param pci - payload (string, Error, objet — narrower côté lecteur).
442
+ * @param severity - sévérité RFC 5424 (`"INFO"`, `"ERROR"`, etc.).
443
+ * @param msgid - catégorie de message. Défaut `"MODULE <name>"`.
444
+ * @param msg - détail libre optionnel.
445
+ * @returns le `Pdu` produit (utile pour audit/tests).
446
+ */
447
+ log(pci, severity, msgid, msg) {
448
+ if (!msgid) msgid = `MODULE ${this.name}`;
449
+ return super.log(pci, severity, msgid, msg);
450
+ }
451
+ };
452
+ //#endregion
453
+ export { Module as default };
@@ -0,0 +1,98 @@
1
+ import { ADMIN_DEFAULT_ROLE } from "./adminRbac.js";
2
+ //#region src/kernel/adminPlane/adminCaller.ts
3
+ /**
4
+ * L'opérateur qui lance une commande sur sa propre application.
5
+ *
6
+ * Il possède déjà le processus : il lit les sources, il édite la configuration,
7
+ * il peut arrêter le serveur. Lui refuser la lecture d'administration
8
+ * n'ajouterait aucune barrière — il lui suffirait d'ouvrir un fichier — mais
9
+ * rendrait la commande inutile. Le rôle est donc accordé ; ce qui compte, c'est
10
+ * que ce soit ÉNONCÉ ici plutôt que fabriqué en silence au fond d'une lecture.
11
+ *
12
+ * @returns l'appelant à présenter depuis une commande locale.
13
+ */
14
+ function localOperatorCaller() {
15
+ return {
16
+ user: null,
17
+ roles: [ADMIN_DEFAULT_ROLE],
18
+ label: "opérateur local (CLI)"
19
+ };
20
+ }
21
+ /**
22
+ * Scope d'un jeton ouvrant la LECTURE du plan d'administration.
23
+ *
24
+ * Trois valeurs suffisent pour tout le plan (celle-ci, {@link ADMIN_SCOPE_WRITE},
25
+ * et l'absence de scope pour la topologie) : un scope par endpoint se périmerait
26
+ * à chaque ajout, et la granularité fine existe déjà pour les API d'une
27
+ * application, portée par `@RequireScope` sur ses routes.
28
+ */
29
+ const ADMIN_SCOPE_READ = "admin:read";
30
+ /** Scope d'un jeton ouvrant les MUTATIONS du plan d'administration. */
31
+ const ADMIN_SCOPE_WRITE = "admin:write";
32
+ /**
33
+ * Traduit les scopes d'un jeton en rôles Nodefony.
34
+ *
35
+ * ⚠️ Les deux scopes mènent aujourd'hui au MÊME rôle, et ce n'est pas un
36
+ * raccourci : le contrôle d'accès du plan d'administration est uniforme — tous
37
+ * les endpoints exigent `ROLE_NODEFONY_ADMIN`, lectures comme mutations.
38
+ * Distinguer ici produirait un théâtre d'autorisation : deux scopes séparés qui
39
+ * ouvrent exactement la même chose, et une promesse que le code ne tient pas.
40
+ * La séparation deviendra réelle quand `IAdminEndpoint.role` se différenciera.
41
+ *
42
+ * Un jeton qui ne porte aucun de ces scopes n'obtient **aucun rôle** : la
43
+ * vérification d'audience (RFC 8707) prouve que le jeton vise cette ressource,
44
+ * elle ne dit rien de ce que son porteur a le droit d'y faire.
45
+ *
46
+ * ## Rôle et scope — la doctrine, et l'asymétrie qui reste
47
+ *
48
+ * Autorisation effective = **droits de l'utilisateur ∧ portée déléguée au
49
+ * porteur**. Un scope borne ce qu'un TIERS peut faire au nom de quelqu'un ; en
50
+ * session directe (cookie, Studio) il n'y a pas de tiers, donc rien à borner et
51
+ * le rôle suffit. Dès qu'un JETON entre en jeu, il y a délégation, et les deux
52
+ * doivent mordre — c'est ce que fait cette fonction, avec
53
+ * {@link refusedAdminScopes} qui borne l'autre bout : porter le rôle ne suffit
54
+ * pas à obtenir le scope, porter le scope ne suffit pas à avoir le rôle.
55
+ *
56
+ * ⚠️ **Dette nommée, non fermée** : un jeton présenté sur la porte HTTP
57
+ * (`ExternalJwtAuthenticator`, `subjectPolicy: "require"`) est rattaché à un
58
+ * compte local et hérite des rôles de ce compte **sans** intersection avec ses
59
+ * scopes — les routes du plan d'administration sont montées par le broker, donc
60
+ * ne portent aucun `@RequireScope`. Le même porteur obtient donc plus par HTTP
61
+ * que par MCP. Fermer cela suppose que la provenance de l'identité (session ou
62
+ * jeton) voyage jusqu'au contrôle de rôle, ce qu'elle ne fait pas aujourd'hui.
63
+ *
64
+ * ⚠️ Et ce n'est pas du moindre privilège : le plan d'administration n'a qu'UN
65
+ * rôle, qui ouvre tous ses endpoints. « Fail-closed » — pas de laissez-passer
66
+ * par défaut — n'est pas « Zero Trust ». La granularité réelle suppose que
67
+ * `IAdminEndpoint.role` se différencie ; tant qu'il ne l'est pas, découper les
68
+ * scopes plus finement ne serait qu'un décor.
69
+ *
70
+ * @param scopes - scopes accordés par le serveur d'autorisation.
71
+ * @returns les rôles à présenter, éventuellement aucun.
72
+ */
73
+ function rolesFromScopes(scopes) {
74
+ return scopes.includes("admin:read") || scopes.includes("admin:write") ? [ADMIN_DEFAULT_ROLE] : [];
75
+ }
76
+ /**
77
+ * Les scopes d'administration demandés que ce porteur **ne peut pas** obtenir.
78
+ *
79
+ * Réciproque de {@link rolesFromScopes}, et indispensable avec elle : si un
80
+ * scope ouvre le plan d'administration, alors l'émetteur ne peut pas le signer
81
+ * sur simple demande. Sans cette borne, « tout jeton vaut administrateur »
82
+ * devient « tout jeton QUI DEMANDE vaut administrateur » — le trou change de
83
+ * forme, pas de taille.
84
+ *
85
+ * Ne juge QUE les scopes d'administration du framework. Les scopes d'une
86
+ * application (`shop:read`, `billing:export`) ne regardent pas Nodefony : c'est
87
+ * à elle de dire qui peut les obtenir.
88
+ *
89
+ * @param requested - scopes demandés au grant (RFC 6749 §3.3).
90
+ * @param roles - rôles du porteur, tels que son compte les porte.
91
+ * @returns les scopes à REFUSER — vide si la demande est légitime.
92
+ */
93
+ function refusedAdminScopes(requested, roles) {
94
+ if (roles.includes("ROLE_NODEFONY_ADMIN")) return [];
95
+ return requested.filter((scope) => scope === "admin:read" || scope === "admin:write");
96
+ }
97
+ //#endregion
98
+ export { ADMIN_SCOPE_READ, ADMIN_SCOPE_WRITE, localOperatorCaller, refusedAdminScopes, rolesFromScopes };
@@ -0,0 +1,51 @@
1
+ //#region src/kernel/adminPlane/adminRbac.ts
2
+ /**
3
+ * Décision d'autorisation du data plane admin (Studio) — fonction **PURE**,
4
+ * cœur de la garantie RBAC, testée isolément (zéro dépendance runtime/DI).
5
+ *
6
+ * **Fail-closed.** Un endpoint qui exige un rôle (`requiredRole` non vide) n'est
7
+ * accordé QUE si l'appelant le porte. Un appelant **sans rôle** (`roles=[]` — ex.
8
+ * compte authentifié non doté, créé via `POST users` sans `roles`) est donc
9
+ * **rejeté** (403). C'était le **fail-open historique** : le 403 était court-circuité
10
+ * par une garde `roles.length > 0 &&` — vestige du « mode mock » d'avant P6, quand
11
+ * aucun rôle n'était injecté. Zero Trust : l'absence de rôle ne vaut pas
12
+ * laissez-passer. Le firewall (zone `nodefony-admin`) garantit l'AUTHENTIFICATION
13
+ * en amont ; cette fonction tranche le RÔLE.
14
+ *
15
+ * `requiredRole` vide (`""`) ou absent = endpoint **public déclaré**
16
+ * (`IAdminEndpoint.public`, ex. liveness `livez`) → toujours accordé : le RBAC du
17
+ * broker est volontairement court-circuité, la protection vit alors dans le firewall.
18
+ *
19
+ * @param roles - rôles **bruts** de l'appelant (projection ALS `IAdminRequest.roles`).
20
+ * @param requiredRole - rôle exigé par la route (`""`/`undefined` = public).
21
+ * @returns `true` si l'accès est accordé.
22
+ */
23
+ function isAdminGranted(roles, requiredRole) {
24
+ if (!requiredRole) return true;
25
+ return roles.includes(requiredRole);
26
+ }
27
+ /**
28
+ * Rôle exigé par défaut d'un endpoint d'administration qui n'en déclare aucun.
29
+ *
30
+ * Le défaut est **restrictif** : un producteur qui oublie de qualifier son
31
+ * endpoint le publie au rôle d'administrateur, jamais à l'anonyme. Ouvrir plus
32
+ * large se DÉCLARE (`IAdminEndpoint.public`) et se relit en revue.
33
+ */
34
+ const ADMIN_DEFAULT_ROLE = "ROLE_NODEFONY_ADMIN";
35
+ /**
36
+ * Rôle **effectif** d'un endpoint — la règle, à un seul endroit.
37
+ *
38
+ * Toutes les portes du plan d'administration (route HTTP montée par le broker,
39
+ * pont WS-RPC, commande `inspect`, serveur MCP) doivent trancher le même rôle
40
+ * pour le même endpoint. Deux résolutions séparées finiraient par diverger, et
41
+ * c'est la porte secondaire — celle qu'on relit le moins — qui deviendrait la
42
+ * plus permissive.
43
+ *
44
+ * @param endpoint - la définition telle que le producteur la déclare.
45
+ * @returns le rôle exigé, ou `""` pour un endpoint **public déclaré**.
46
+ */
47
+ function resolveAdminRole(endpoint) {
48
+ return endpoint.public ? "" : endpoint.role ?? "ROLE_NODEFONY_ADMIN";
49
+ }
50
+ //#endregion
51
+ export { ADMIN_DEFAULT_ROLE, isAdminGranted, resolveAdminRole };