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
package/docs/kernel.md ADDED
@@ -0,0 +1,670 @@
1
+ ---
2
+ title: "Kernel, Module et CliKernel — l'API du cœur"
3
+ navTitle: Kernel, Module et CliKernel
4
+ lang: fr
5
+ module: "@nodefony/core"
6
+ topic: kernel
7
+ coverageModule: nodefony-core
8
+ coveragePackage: "nodefony (cœur)"
9
+ coverageFiles: "kernel/Kernel.ts,kernel/Module.ts,kernel/CliKernel.ts,Nodefony.ts"
10
+ section: "Cœur runtime"
11
+ audience: [developer]
12
+ tags:
13
+ [kernel, module, clikernel, nodefony, evenements, commandes, di, application]
14
+ version: "doc"
15
+ status: stable
16
+ updated: 2026-07-19
17
+ source: "src/nodefony/docs/kernel.md"
18
+ ---
19
+
20
+ # Kernel, Module et CliKernel — l'API du cœur
21
+
22
+ > Trois classes suffisent à écrire une application Nodefony : `Module` (ce que **tu** écris),
23
+ > `Kernel` (ce qui te **porte**), `Nodefony` (la façade qui te rend le kernel depuis n'importe où).
24
+ > Cette page est leur **surface d'API** — les objets, leurs membres, comment on s'en sert. Le
25
+ > **récit du boot** (phases, ordre, résilience, arrêt) vit dans une page dédiée, liée plus bas.
26
+ > Ancré sur `src/nodefony/src/kernel/` et `src/nodefony/src/Nodefony.ts`.
27
+
28
+ 📍 [Documentation](../../../docs/index.md) › [Cœur — @nodefony/core](index.md) › **Kernel, Module et CliKernel**
29
+
30
+ ## 🧠 Le modèle mental — qui possède quoi
31
+
32
+ Le cœur tient en une phrase : **le `CliKernel` fabrique un `Kernel`, le `Kernel` possède des
33
+ `Module`, et la façade `Nodefony` sert de raccourci vers le kernel courant.**
34
+
35
+ ```mermaid
36
+ flowchart TB
37
+ CLI["CliKernel<br/>extends Cli — PAS Kernel"]
38
+ N["Nodefony<br/>façade statique"]
39
+ K["Kernel<br/>extends Service"]
40
+ APP["Module de l'app<br/>extends Service"]
41
+ MODS["Modules du manifeste<br/>http · framework · security…"]
42
+ S["Services · Controllers · Commandes CLI"]
43
+ CLI -->|"start() → new Kernel(env, this)"| K
44
+ K -->|"setKernel(this) au constructeur"| N
45
+ N -.->|"getKernel() — depuis n'importe où"| K
46
+ K -->|"charge et possède"| APP
47
+ K --> MODS
48
+ APP -->|"@services · addCommand · controllers"| S
49
+ ```
50
+
51
+ Trois idées portent toute la page :
52
+
53
+ 1. **Un module est un `Service`.** Il hérite du container, du journal et du bus d'événements — il
54
+ n'a rien à recâbler, seulement à déclarer ce qu'il apporte.
55
+ 2. **Le kernel n'est jamais importé, il est demandé.** Aucun `import { kernel }` : on passe par
56
+ l'injection quand elle est disponible, par `Nodefony.getKernel()` quand elle ne l'est pas.
57
+ 3. **Écrire un module, c'est remplir des seams.** Un constructeur à quatre arguments, des hooks
58
+ nommés, un décorateur pour les services. Rien à découvrir, rien à deviner.
59
+
60
+ ## 📖 Lexique
61
+
62
+ | Terme | Sens |
63
+ | --------------------- | ---------------------------------------------------------------------------------------------------- |
64
+ | Façade statique | Une classe sans instance dont on n'appelle que les membres `static` (`Nodefony.getKernel()`). |
65
+ | Kernel | Le noyau : container racine, registre des modules, émetteur des phases, chemins de travail. |
66
+ | Module | Unité chargeable qui apporte services, controllers, routes, entités, commandes. **L'app en est un.** |
67
+ | CliKernel | Le point d'entrée en ligne de commande. Il **fabrique** le kernel, il n'en est pas un. |
68
+ | Manifeste | La liste `modules` de `nodefony.config.ts` — ordonnée, c'est elle qui décide ce qui est chargé. |
69
+ | Hook | Une méthode de ton module appelée à une phase précise (`onKernelRegister`, `onKernelBoot`, …). |
70
+ | Seam | Un point d'extension prévu par le framework : on le remplit, on ne le contourne pas. |
71
+ | DI / Container | Injection de dépendances : l'annuaire nom → instance, hérité de `Service`. |
72
+ | Bus d'événements | L'`EventEmitter` étendu du cœur. Le kernel s'en sert pour annoncer ses phases. |
73
+ | Émission synchrone | `fire()` : les écouteurs tournent immédiatement, aucun `await`, **0 microtask**. |
74
+ | Émission séquentielle | `fireAsync()` : les écouteurs asynchrones sont attendus **l'un après l'autre**. |
75
+ | Émission gardée | `fireLifecycle()` : chaque écouteur est isolé (try/catch + délai maximal). Réservée au boot. |
76
+ | Listener tagué | Un écouteur portant son propriétaire et sa criticité — posé par le câblage des hooks de module. |
77
+ | Criticité | `Module.critical` : un module critique qui échoue **arrête** le boot en production. |
78
+ | Fail-soft | Un échec non fatal : consigné, annoncé au verdict de boot, mais le boot continue. |
79
+ | `runProfile` | Ce dont un run a besoin : `{ servers, lifetime, interactive }`. Un `build` n'ouvre aucun port. |
80
+ | Commande de module | Une commande CLI apportée par un module (`frontend:build`), par opposition aux commandes intégrées. |
81
+ | `msgid` | La catégorie d'une ligne de journal. Un module la remplit avec `MODULE <son nom>`. |
82
+
83
+ ## Qu'est-ce que le cœur — et pourquoi une façade plutôt qu'un singleton
84
+
85
+ Un framework doit répondre à une question banale : **« comment mon code atteint-il le
86
+ framework ? »** La réponse historique de Nodefony, héritée de sa version JavaScript, était un objet
87
+ exporté : `import { kernel } from "nodefony"`.
88
+
89
+ Cette réponse ne tient pas en ESM. Un `import` est résolu au **chargement** du fichier, alors que le
90
+ kernel n'existe qu'après avoir été **construit**. Les fichiers importés tôt recevaient donc un
91
+ kernel non initialisé, et l'erreur ne se voyait qu'au runtime, loin de sa cause.
92
+
93
+ D'où la bascule vers une **façade statique**. `Nodefony` n'est jamais instanciée — constructeur
94
+ privé (`Nodefony.ts:27`) — et n'expose que des membres `static`. On ne demande plus le kernel au
95
+ chargement : on le demande **au moment de s'en servir**, quand il existe.
96
+
97
+ > [!IMPORTANT]
98
+ > `Nodefony.getKernel()` (`Nodefony.ts:34`) rend `Kernel | **null**`. Le `null` n'est pas
99
+ > théorique : hors serveur — dans un test unitaire, un script, un fichier importé avant le boot —
100
+ > il n'y a pas de kernel. Toujours `?.`, jamais un `!`.
101
+
102
+ ## La vision Nodefony
103
+
104
+ Trois décisions expliquent la forme de l'API.
105
+
106
+ **1. Tout hérite de `Service`.** `Kernel` et `Module` en descendent tous les deux. Un module reçoit
107
+ donc gratuitement `this.log()`, `this.get()`, `this.on()`, `this.fire()` — le socle est décrit dans
108
+ [Service](service.md), et cette page ne le répète pas. Écrire un module, c'est écrire un service qui
109
+ sait en plus se charger et s'accrocher au cycle de vie.
110
+
111
+ **2. Le kernel s'enregistre lui-même, une fois.** Son constructeur (`Kernel.ts:489`) appelle
112
+ `Nodefony.setKernel(this)` (`Kernel.ts:629`) et se pose au container sous la clé `kernel`
113
+ (`Kernel.ts:629`). Deux chemins d'accès, une seule instance — l'injection pour le code câblé, la
114
+ façade pour le reste.
115
+
116
+ **3. Le CLI n'est pas le noyau.** `CliKernel` (`CliKernel.ts:84`) étend `Cli`, **pas** `Kernel` : il
117
+ analyse `argv`, choisit une commande, puis **construit** le kernel (`CliKernel.ts:238`). Séparation
118
+ utile — beaucoup d'invocations (`--version`, la complétion, `nodefony create`) n'ont aucun kernel à
119
+ démarrer, et n'en démarrent effectivement aucun.
120
+
121
+ Le compromis assumé : la surface publique du `Kernel` est **large** (registre de modules, chemins,
122
+ config, réseau, cluster, verdict de boot). C'est le prix d'un noyau qui centralise ; en contrepartie,
123
+ une application n'en touche qu'une petite partie — celle décrite plus bas.
124
+
125
+ ## 🚀 Démarrage rapide
126
+
127
+ Vue depuis une application générée par `nodefony create app`. Objectif : **un module complet**, avec
128
+ sa configuration typée, un service et une commande CLI.
129
+
130
+ ### Le module, de bout en bout
131
+
132
+ ```typescript
133
+ // nodefony/modules/billing/index.ts — un module d'app, complet.
134
+ import { Module, Service, Command, injectable, services } from "nodefony";
135
+ import type { CliKernel, Container, Event, Kernel } from "nodefony";
136
+
137
+ // Ce que MON module accepte comme configuration.
138
+ // ⚠️ Un `type`, PAS une `interface` — voir la section Pièges : `@services()`
139
+ // exige une forme assignable à `Record<string, unknown>`.
140
+ type IBillingConfig = {
141
+ currency: string;
142
+ vatRate: number;
143
+ };
144
+
145
+ // `@injectable("invoices")` inscrit la CLASSE au registre DI sous ce nom.
146
+ @injectable("invoices")
147
+ class InvoiceService extends Service {
148
+ // Le module porteur transmet SES ressources : même container, MÊME bus.
149
+ constructor(module: Module) {
150
+ super(
151
+ "invoices",
152
+ module.container as Container,
153
+ module.notificationsCenter as Event,
154
+ );
155
+ }
156
+
157
+ totalTTC(amountHT: number, cfg: IBillingConfig): number {
158
+ return Math.round(amountHT * (1 + cfg.vatRate) * 100) / 100;
159
+ }
160
+ }
161
+
162
+ // Une commande CLI apportée par le module : `npx nodefony billing:report`.
163
+ class BillingReportCommand extends Command {
164
+ constructor(cli: CliKernel) {
165
+ // `kernelEvent` = la phase APRÈS laquelle `generate()` est appelé.
166
+ super("billing:report", "Édite le rapport de facturation", cli, {
167
+ kernelEvent: "onPostReady",
168
+ });
169
+ }
170
+
171
+ override async generate(): Promise<void> {
172
+ this.log("rapport édité", "INFO");
173
+ }
174
+ }
175
+
176
+ // `Module<IBillingConfig>` type `this.config` — plus aucun cast au point d'usage.
177
+ @services([InvoiceService])
178
+ class Billing extends Module<IBillingConfig> {
179
+ // Module optionnel : son échec n'abat pas le pod en production.
180
+ static override critical = false;
181
+
182
+ constructor(kernel: Kernel) {
183
+ // 4 arguments, toujours les mêmes : nom · kernel · emplacement · config.
184
+ super("billing", kernel, import.meta.url, {
185
+ currency: "EUR",
186
+ vatRate: 0.2,
187
+ });
188
+ // Les commandes se posent DANS le constructeur : le CLI doit les connaître
189
+ // avant même que les phases ne commencent.
190
+ this.addCommand(BillingReportCommand);
191
+ }
192
+
193
+ override async onKernelBoot(): Promise<this> {
194
+ // `this.config` est typé IBillingConfig ; `this.get` interroge le container.
195
+ const invoices = this.get<InvoiceService>("invoices");
196
+ const ttc = invoices?.totalTTC(100, this.config);
197
+ this.log(`100 HT → ${ttc} ${this.config.currency}`, "INFO");
198
+ return this;
199
+ }
200
+ }
201
+
202
+ export default Billing;
203
+ ```
204
+
205
+ ### Le déclarer — un module non déclaré n'existe pas
206
+
207
+ ```typescript
208
+ // nodefony.config.ts — le manifeste est ORDONNÉ : c'est la priorité de chargement.
209
+ export default defineConfig(() => ({
210
+ modules: [
211
+ "@nodefony/http",
212
+ "@nodefony/framework",
213
+ // `use()` colocalise la config du module avec son chargement : elle écrase
214
+ // les défauts posés dans le constructeur ci-dessus.
215
+ use("@app/billing", { currency: "EUR", vatRate: 0.055 }),
216
+ ],
217
+ }));
218
+ ```
219
+
220
+ ### Atteindre le kernel là où l'injection ne va pas
221
+
222
+ ```typescript
223
+ // nodefony/services/DiagnosticService.ts — la façade, en dernier recours.
224
+ import { Nodefony, Service } from "nodefony";
225
+
226
+ export class DiagnosticService extends Service {
227
+ snapshot(): { version: string; env: string; modules: string[] } {
228
+ // `getKernel()` rend `Kernel | null` : le `?.` n'est pas décoratif —
229
+ // hors serveur (test, script, import précoce) il n'y a pas de kernel.
230
+ const kernel = Nodefony.getKernel();
231
+ return {
232
+ version: Nodefony.version,
233
+ env: kernel?.environment ?? "(hors kernel)",
234
+ modules: Object.keys(kernel?.getModules() ?? {}),
235
+ };
236
+ }
237
+ }
238
+ ```
239
+
240
+ ### Ce qu'on observe
241
+
242
+ ```bash
243
+ npx nodefony development
244
+ ```
245
+
246
+ ```text
247
+ MODULE ADD : billing
248
+ SERVICE ADD : invoices # Module.addService a posé l'instance
249
+ MODULE billing 100 HT → 105.5 EUR # msgid = « MODULE <nom> », automatique
250
+ ```
251
+
252
+ Le `msgid` de la dernière ligne est `MODULE billing` sans qu'on l'ait écrit : `Module.log()`
253
+ (`Module.ts:651`) le remplit par défaut, là où un `Service` nu emploie son seul nom. Le taux appliqué
254
+ est **0.055** et non 0.2 — la config du manifeste a écrasé le défaut du constructeur.
255
+
256
+ Et la commande est là :
257
+
258
+ ```bash
259
+ npx nodefony billing:report # elle n'existe QUE parce que le module l'a posée
260
+ ```
261
+
262
+ ## 🧩 Écrire un module — le geste central
263
+
264
+ ### Le constructeur — quatre arguments, aucun mystère
265
+
266
+ `Module` (`Module.ts:60`) impose la même signature à tout le monde (`Module.ts:102`) :
267
+
268
+ | Argument | Rôle |
269
+ | --------- | ------------------------------------------------------------------------------------------ |
270
+ | `name` | Clé du module dans `kernel.modules`, et préfixe de ses logs. Court, sans espace. |
271
+ | `kernel` | Le kernel porteur — il fournit container, journal et bus. Reçu, jamais cherché. |
272
+ | `path` | **Toujours `import.meta.url`.** Normalisé par `Module.setPath()` (`Module.ts:163`). |
273
+ | `options` | Les **défauts** de ta configuration. Le manifeste et l'environnement les écrasent ensuite. |
274
+
275
+ Le constructeur fait trois choses et rien d'autre : il range les options dans l'arbre de paramètres
276
+ sous `modules.<nom>`, il résout le chemin, puis il câble les hooks via `Module.setEvents()`
277
+ (`Module.ts:227`).
278
+
279
+ > [!TIP]
280
+ > `path` mérite son `import.meta.url` littéral. `setPath()` remonte au-dessus d'un dossier `dist/`
281
+ > quand il en détecte un (`Module.ts:169`) — c'est ce qui fait qu'un module trouve ses fichiers
282
+ > aussi bien depuis les sources que depuis son paquet publié.
283
+
284
+ ### Les hooks — trois noms, exactement
285
+
286
+ `setEvents()` n'attache un écouteur que si la méthode **existe** sur ton prototype : aucun listener
287
+ orphelin pour un hook que tu n'écris pas.
288
+
289
+ | Hook | Ce qui est garanti à ce moment | On y met… |
290
+ | -------------------- | ---------------------------------------------------------- | --------------------------------------------- |
291
+ | `onKernelRegister()` | tous les modules sont instanciés, surcharges appliquées | valider sa config, déclarer entités et routes |
292
+ | `onKernelBoot()` | les services de `@services([…])` sont construits | ouvrir ses connexions, armer ses timers |
293
+ | `onKernelReady()` | **tous** les modules sont bootés, ports pas encore ouverts | se câbler aux autres modules |
294
+ | `init(kernel?)` | le module vient d'être ajouté au kernel | l'équivalent d'un constructeur asynchrone |
295
+
296
+ Le moment exact de chaque phase, ce qui devient vrai entre deux, et la politique appliquée quand un
297
+ hook échoue : [Cycle de boot](../../../docs/architecture/cycle-boot-kernel.md).
298
+
299
+ > [!WARNING]
300
+ > Un hook **doit être une méthode de prototype**. Écrit en propriété fléchée
301
+ > (`onKernelBoot = async () => {}`), il n'existe pas encore quand `setEvents()` s'exécute depuis le
302
+ > constructeur de `Module` — l'écouteur n'est jamais attaché, et **rien ne le signale**. Même
303
+ > conséquence pour un nom approximatif (`onBoot`, `onKernelBooted`) : `setEvents()` teste ces trois
304
+ > noms-là et pas d'autres.
305
+
306
+ ### Sa configuration — `this.config`, typée
307
+
308
+ Déclare le type en paramètre de la classe et l'accès devient typé partout :
309
+
310
+ ```typescript ignore
311
+ class Billing extends Module<IBillingConfig> {}
312
+ // puis, n'importe où dans le module :
313
+ this.config.currency; // string — 0 cast, 0 `as`
314
+ ```
315
+
316
+ `Module.config` (`Module.ts:152`) est un getter qui renvoie `this.options` : la config **validée et
317
+ gelée** par le module à sa phase `onKernelRegister`. Coût nul — une référence, aucune allocation.
318
+
319
+ > [!CAUTION]
320
+ > Déclare ce type avec `type`, **jamais** avec `interface`. Le décorateur `@services()` contraint son
321
+ > argument à `new (…) => Module` (`kernelDecorator.ts:21`), soit `Module<Record<string, unknown>>` :
322
+ > or TypeScript n'accorde d'index signature implicite qu'aux **alias de type**, pas aux interfaces.
323
+ > Une `interface IBillingConfig` fait donc échouer la compilation du décorateur, avec un message qui
324
+ > ne pointe pas la vraie cause. C'est la forme employée par les modules du framework, dont les types
325
+ > de config sont des alias dérivés de leur schéma Zod.
326
+
327
+ Un module qui valide sa config par un schéma Zod peut en publier la forme via `Module.configSchema()`
328
+ (`Module.ts:153`). Studio affiche alors des réglages documentés (type, défaut, valeur effective) au
329
+ lieu d'un dépotoir clé/valeur. Le défaut est `null` : rien n'est obligatoire.
330
+
331
+ ### Déclarer ses services
332
+
333
+ Deux chemins, un seul recommandé.
334
+
335
+ | Geste | Ancre | Quand |
336
+ | ---------------------------- | --------------- | ----------------------------------------------------------- |
337
+ | `@services([A, B])` | — | **Le cas normal.** Construits à `onPreBoot`, ordre calculé. |
338
+ | `Module.addService(Ctor, …)` | `Module.ts:365` | Ajout conditionnel, décidé à l'exécution. |
339
+ | `Module.loadService(chemin)` | `Module.ts:405` | Service optionnel chargé par `import()` dynamique. |
340
+ | `Module.getServiceNames()` | `Module.ts:445` | Introspection — ce que **ce** module a posé au container. |
341
+
342
+ L'ordre écrit dans `@services([…])` n'a **pas** d'importance : il est recalculé depuis les
343
+ dépendances déclarées. Détail du tri et des portées :
344
+ [Injection & portées](../../../docs/architecture/injection-portees.md).
345
+
346
+ `addService()` fait plus que construire : il initialise le service **sous garde** —
347
+ `Kernel.guardServiceInitialize()` (`Module.ts:350`) —, apprend au registre DI le lien entre la classe
348
+ et sa clé de container, puis range l'instance. C'est
349
+ la raison pour laquelle on ne fait jamais un `new` manuel — un service construit à la main n'est
350
+ connu de personne.
351
+
352
+ > [!CAUTION]
353
+ > `@injectable({ singleton: true })` **n'existe pas**. Les options acceptées sont `{ name?, scope? }`
354
+ > où `scope` vaut `singleton` (défaut) ou `transient` ; une clé `singleton` est **acceptée et
355
+ > ignorée en silence**. De même, `@Inject` (injection de propriété) existe dans le moteur mais
356
+ > **n'est pas ré-exporté** par le paquet `nodefony` : `import { Inject } from "nodefony"` échoue.
357
+ > Injecte par **constructeur**, avec `@inject("nom")`.
358
+
359
+ ### Ajouter une commande CLI
360
+
361
+ `Module.addCommand()` (`Module.ts:560`) enregistre une commande rattachée au module — c'est ainsi
362
+ que `frontend:build`, `security:user:add` ou `network` existent. Convention de nom :
363
+ `<module>:<action>`.
364
+
365
+ Elle se pose **dans le constructeur**, comme le font les modules du framework : le CLI doit connaître
366
+ la commande avant que les phases ne commencent.
367
+
368
+ ```typescript ignore
369
+ constructor(kernel: Kernel) {
370
+ super("billing", kernel, import.meta.url, defaults);
371
+ this.addCommand(BillingReportCommand); // ← ici, pas dans un hook
372
+ }
373
+ ```
374
+
375
+ Deux comportements à connaître :
376
+
377
+ - **Sans CLI, elle lève.** `addCommand` exige `kernel.cli` ; un module instancié hors invocation en
378
+ ligne de commande (test unitaire, kernel embarqué) reçoit `Error("Kernel not ready")`.
379
+ - **En cluster, le worker se tait.** Une exception d'enregistrement est propagée sur le process
380
+ primaire et **avalée** sur un travailleur (`Module.ts:517`) — seul le primaire tient le terminal.
381
+
382
+ ### Les controllers du module
383
+
384
+ Le registre des controllers est global au process mais **indexé par module** — clé
385
+ `<module>:<Classe>` — de sorte que deux modules peuvent porter un `DefaultController` sans collision.
386
+
387
+ | Appel | Ancre | Rend |
388
+ | -------------------- | --------------- | ---------------------------------------------------------- |
389
+ | `getController("X")` | `Module.ts:473` | le constructeur, ou **lève** si absent de **ce** module |
390
+ | `getControllers()` | `Module.ts:488` | vue filtrée `{ NomDeClasse: Ctor }`, préfixe module retiré |
391
+
392
+ ### Surcharger la config d'un autre module
393
+
394
+ Une clé `Module-<nom>` dans la config d'un module reconfigure **un autre** module, sans toucher à son
395
+ code — `Module.readOverrideModuleConfig()` (`Module.ts:310`), appliqué par le kernel entre le
396
+ chargement et la validation.
397
+
398
+ ```typescript ignore
399
+ // Dans la config de MON module : je reconfigure http sans le modifier.
400
+ { "Module-http": { port: 8080 } }
401
+ ```
402
+
403
+ Le niveau du journal dépend de qui parle : une **application** qui vise un module absent obtient un
404
+ `WARNING` (config morte, comptée au verdict de boot) ; un **module** obtient un `INFO`, parce qu'il
405
+ peut légitimement embarquer un réglage pour une cible optionnelle (`Module.ts:329`).
406
+
407
+ ### Rendre son module optionnel
408
+
409
+ ```typescript ignore
410
+ static override critical = false; // statique, jamais une propriété d'instance
411
+ ```
412
+
413
+ Un module non critique n'abat jamais le boot : son échec est consigné, annoncé au verdict, et le
414
+ serveur démarre dégradé plutôt que mort. La lecture se fait dans le constructeur de `Module`
415
+ (`Module.ts:227`) — **avant** que les initialiseurs de champ de ta sous-classe ne tournent, d'où le
416
+ `static`. Arbitrage complet : [Cycle de boot](../../../docs/architecture/cycle-boot-kernel.md).
417
+
418
+ ## 🧰 La surface du Kernel utile à une application
419
+
420
+ Le `Kernel` expose beaucoup. Voici ce qu'une application touche réellement.
421
+
422
+ ### Trouver un module
423
+
424
+ | Appel | Ancre | Rend |
425
+ | ---------------- | ---------------- | ------------------------------------------------------ |
426
+ | `getModule(nom)` | `Kernel.ts:1502` | le module, ou `undefined` s'il n'est pas chargé |
427
+ | `getModules()` | `Kernel.ts:1578` | la table complète, **par référence** (ne pas la muter) |
428
+ | `modules` | `Kernel.ts:494` | le même objet, en accès direct |
429
+
430
+ `getModule()` est une lecture de table, sans garde : un module gaté par le manifeste rend
431
+ `undefined`, pas une erreur. Le tester est donc à ta charge — c'est aussi le bon moyen de rendre une
432
+ intégration facultative.
433
+
434
+ ### Les chemins de travail
435
+
436
+ Trois dossiers, trois durées de vie. Tous sont garantis **créés** au démarrage — un checkout frais,
437
+ un conteneur neuf ou un premier boot ne les ont pas.
438
+
439
+ | Membre | Ancre | Ce qu'on y met |
440
+ | -------- | --------------- | -------------------------------------------------------------------------------- |
441
+ | `path` | `Kernel.ts:461` | La racine du projet (le répertoire de travail). Base de tout le reste. |
442
+ | `varDir` | `Kernel.ts:518` | Données runtime **persistées** : stores fichier, bases SQLite. Survit au reboot. |
443
+ | `tmpDir` | `Kernel.ts:512` | Éphémère. Tout ce qui peut disparaître sans conséquence. |
444
+
445
+ `varDir` et `tmpDir` sont des `FileClass`, pas des chaînes : leur chemin est sous `.path`.
446
+
447
+ ```typescript ignore
448
+ const dbFile = path.resolve(kernel.varDir!.path, "app.db"); // persiste
449
+ const scratch = path.resolve(kernel.tmpDir!.path, "build"); // jetable
450
+ ```
451
+
452
+ ### Configuration, environnement, container
453
+
454
+ | Membre | Ancre | Note |
455
+ | --------------------------- | ---------------- | ---------------------------------------------------------------------- |
456
+ | `options` | — | La config de l'app, résolue et validée au chargement de celle-ci. |
457
+ | `environment` | `Kernel.ts:325` | Le mode **moteur** : `"development"` ou `"production"`. |
458
+ | `domain` | `Kernel.ts:520` | Le nom d'hôte retenu, résolu au boot. |
459
+ | `get()` / `set()` / `has()` | — | La façade container héritée de `Service` — voir [Service](service.md). |
460
+ | `getBootReport()` | `Kernel.ts:2817` | Le verdict du dernier boot : modules, serveurs, santé. |
461
+
462
+ > [!WARNING]
463
+ > Ne **jamais** déréférencer le kernel au premier niveau d'un fichier de configuration : il est
464
+ > importé **avant** que le kernel n'existe, et le fichier plante à l'import — donc devient
465
+ > intestable. Emploie le `ctx` de `defineConfig((ctx) => …)`, ou un getter paresseux. Le cas est
466
+ > détaillé dans [Configuration](../../../docs/architecture/configuration.md).
467
+
468
+ ### La façade `Nodefony`
469
+
470
+ Quatre membres, tous statiques (`Nodefony.ts:22`).
471
+
472
+ | Membre | Ancre | Usage |
473
+ | ---------------------- | ---------------- | ------------------------------------------------------------------------ |
474
+ | `getKernel()` | `Nodefony.ts:34` | Le kernel courant, ou `null`. **Toujours** tester. |
475
+ | `version` | `Nodefony.ts:24` | La version du paquet `nodefony`, lue au build. |
476
+ | `generateId()` | `Nodefony.ts:54` | UUID **v4** — aléatoire. Pour un identifiant qui doit être imprévisible. |
477
+ | `generateSortableId()` | `Nodefony.ts:79` | UUID **v7** — horodaté, donc **ordonné**. Pour une clé primaire. |
478
+
479
+ `setKernel()` (`Nodefony.ts:44`) existe mais appartient au boot : l'appeler soi-même écrase la
480
+ référence globale sans avertissement.
481
+
482
+ > [!CAUTION]
483
+ > Ces deux générateurs ne sont pas interchangeables. Un **v7** groupe les insertions côte à côte dans
484
+ > l'index (là où un v4 fragmente l'arbre), mais il **fuit l'instant de création** et la RFC 9562
485
+ > interdit explicitement de s'en servir comme secret. Clé primaire → v7. Jeton, identifiant deviné →
486
+ > **v4**. Et l'ordre n'est **pas** garanti à l'intérieur d'une même milliseconde : trier des
487
+ > créations se fait sur `createdAt`, jamais sur l'identifiant.
488
+
489
+ ## Les événements — `fire()` vs `fireAsync()`
490
+
491
+ Le kernel annonce chaque phase sur son bus. Trois émetteurs cohabitent, et ils ne servent **pas** la
492
+ même chose.
493
+
494
+ | Émetteur | Ancre | Comportement | Employé pour |
495
+ | ----------------------- | ---------------- | ---------------------------------------------------------------- | ---------------------- |
496
+ | `fire(nom, …)` | `Kernel.ts:2596` | Synchrone. Les écouteurs tournent tout de suite, **0 microtask** | le chemin chaud |
497
+ | `fireAsync(nom, …)` | `Kernel.ts:2614` | Attend les écouteurs asynchrones, **en séquence** | pipeline HTTP/WS, boot |
498
+ | `fireLifecycle(nom, …)` | `Kernel.ts:2980` | Isole chaque écouteur : délai maximal + politique de criticité | **le boot seulement** |
499
+
500
+ La règle de choix tient en une ligne : **si le résultat de l'écouteur t'importe, `fireAsync` ; sinon
501
+ `fire`.** `fire()` ne t'apprend rien de ce qui s'est passé — il rend un booléen « quelqu'un
502
+ écoutait ». Une promesse rejetée dans un écouteur appelé par `fire()` devient un rejet non géré.
503
+
504
+ `fireLifecycle()` n'est pas un troisième choix à ta disposition : le kernel l'emploie sur la chaîne
505
+ `onPreRegister` → `onPostReady`, et **uniquement** là. Le chemin chaud garde l'émission nue — aucun
506
+ timer, aucune allocation par requête. La résilience du boot ne se paie pas au prix de la requête.
507
+
508
+ > [!NOTE]
509
+ > Les trois émetteurs journalisent une ligne `DEBUG` par événement émis (`Kernel.ts:2597`). Utile
510
+ > pour suivre un boot ; c'est aussi pourquoi un `NF__DEBUG` large rend le démarrage très bavard.
511
+
512
+ ### Le piège du listener non tagué
513
+
514
+ C'est **le** piège de la page, et il ne se voit qu'en production.
515
+
516
+ Quand tu déclares un hook (`onKernelBoot`), `setEvents()` l'attache **tagué** : l'écouteur porte le
517
+ nom de son module et sa criticité (`Module.ts:236`). En cas d'échec, le kernel relit ces étiquettes
518
+ et applique **ta** politique — un module `critical = false` échoue en fail-soft.
519
+
520
+ Quand tu attaches le même code à la main, il n'y a **aucune** étiquette :
521
+
522
+ ```typescript ignore
523
+ // ❌ Non tagué : propriétaire inconnu, criticité inconnue.
524
+ kernel.on("onBoot", async () => {
525
+ await this.connect();
526
+ });
527
+
528
+ // ✅ Tagué par le framework, avec ta criticité.
529
+ override async onKernelBoot(): Promise<this> {
530
+ await this.connect();
531
+ return this;
532
+ }
533
+ ```
534
+
535
+ La conséquence est asymétrique, et c'est ce qui la rend traître. La criticité manquante est traitée
536
+ comme **critique par défaut** (`Kernel.ts:2668` : l'échec est fatal dès lors que `critical !== false`
537
+ et qu'on est en production). Donc :
538
+
539
+ | Environnement | Hook déclaré, `critical = false` | Écouteur posé à la main |
540
+ | -------------- | -------------------------------- | ------------------------- |
541
+ | Développement | fail-soft, boot dégradé | fail-soft — **identique** |
542
+ | **Production** | fail-soft, boot dégradé | **boot interrompu** |
543
+
544
+ En développement les deux formes se comportent pareil : le piège est invisible pendant tout le
545
+ développement, et se déclenche au premier déploiement. Le journal, lui, ne peut nommer personne — il
546
+ écrit `"(anonyme)"` (`Kernel.ts:2672`), ce qui rend le diagnostic difficile au pire moment.
547
+
548
+ **La règle** : sur les phases de boot, on déclare un hook. `kernel.on(...)` est réservé aux
549
+ événements hors cycle de vie.
550
+
551
+ ## ⚙️ CliKernel — le noyau des commandes
552
+
553
+ `CliKernel` (`CliKernel.ts:84`) est ce que `npx nodefony <commande>` instancie. Il n'étend **pas**
554
+ `Kernel` : il étend `Cli`, analyse `argv` via Commander, et fabrique le kernel dans `start()`
555
+ (`CliKernel.ts:172`).
556
+
557
+ ### Ce qu'il apporte
558
+
559
+ | Membre | Ancre | Rôle |
560
+ | ----------------------- | ------------------ | --------------------------------------------------------------------- |
561
+ | `runProfile` | `CliKernel.ts:101` | `{ servers, lifetime, interactive }` — ce dont le run a besoin. |
562
+ | `setRunProfile(profil)` | `CliKernel.ts:784` | Déclaré par une commande ; recopié dans le kernel à `onStart`. |
563
+ | `packageManager` | `CliKernel.ts:103` | `pnpm` par défaut ; commutable en `npm` / `yarn`. |
564
+ | `addCommand(Ctor)` | `CliKernel.ts:670` | Enregistre une commande intégrée (les modules passent par `Module`). |
565
+ | `quietBoot` | `CliKernel.ts:111` | Boot silencieux : seules les erreurs sortent. Pour une sortie propre. |
566
+ | `parseCommand(argv?)` | `CliKernel.ts:143` | Analyse Commander synchrone. |
567
+
568
+ Le défaut de `runProfile` est **console pur** : `{ servers: false, lifetime: "oneshot" }`. Une
569
+ commande n'ouvre donc aucun port tant qu'elle ne le demande pas — un `nodefony build` ne démarre
570
+ jamais un serveur par accident, et une commande inconnue termine en erreur au lieu de retomber sur un
571
+ runtime.
572
+
573
+ ### Le piège du constructeur
574
+
575
+ > [!WARNING]
576
+ > `environment` peut être **`undefined`** dans le constructeur de `CliKernel` (`CliKernel.ts:100`) :
577
+ > ce sont les sous-commandes qui le posent, plus tard. Ne conditionne jamais du code sur
578
+ > `this.environment` dans un constructeur — le réglage va dans le hook `onKernelStart()` de la
579
+ > commande, qui tourne avant le boot.
580
+
581
+ ```typescript ignore
582
+ class DevCommand extends Command {
583
+ override async onKernelStart(): Promise<void> {
584
+ (this.cli as CliKernel).setRunProfile({
585
+ servers: true,
586
+ lifetime: "longrunning",
587
+ interactive: false,
588
+ });
589
+ this.cli.environment = "development"; // ← ici, jamais au constructeur
590
+ }
591
+ }
592
+ ```
593
+
594
+ ### Les invocations qui ne bootent rien
595
+
596
+ Certaines commandes sont traitées **avant** toute construction de kernel (`CliKernel.ts:172`) :
597
+ `--version`, la complétion shell, `nodefony create`, `nodefony status` et `nodefony stop`. Elles
598
+ tournent hors de tout projet et en quelques millisecondes — une tabulation de complétion ne démarre
599
+ pas un noyau.
600
+
601
+ Le cycle écourté d'une commande (phase cible, `park`, arrêt) appartient au récit du boot :
602
+ [Cycle de boot](../../../docs/architecture/cycle-boot-kernel.md).
603
+
604
+ ## ⚠️ Pièges (symptôme → cause → correction)
605
+
606
+ | Symptôme | Cause (dans le code) | Correction |
607
+ | --------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
608
+ | `does not provide an export named 'kernel'` | L'ancien singleton exporté n'existe plus | `Nodefony.getKernel()` (`Nodefony.ts:34`), avec un `?.` |
609
+ | `Cannot read properties of null` sur le kernel | `getKernel()` rend `null` hors serveur | Tester le retour ; en service, préférer l'injection |
610
+ | Mon hook n'est jamais appelé | Propriété fléchée, ou nom approximatif | Méthode de prototype nommée exactement (`Module.ts:235`) |
611
+ | Le boot casse **en production seulement** | Écouteur de phase posé à la main → non tagué → critique par défaut | Déclarer un hook de module (`Module.ts:236`) |
612
+ | Journal de boot : échec de `"(anonyme)"` | Même cause : aucun propriétaire à nommer (`Kernel.ts:2672`) | Idem — le hook porte l'identité |
613
+ | `Error("Kernel not ready")` sur `addCommand` | `kernel.cli` absent — module hors invocation CLI (`Module.ts:576`) | N'appeler `addCommand` que dans un module chargé par le CLI |
614
+ | Ma commande de module n'apparaît pas | `addCommand` appelé dans un hook, trop tard | La poser dans le **constructeur**, comme les modules du framework |
615
+ | `import { Inject } from "nodefony"` échoue | Le décorateur de propriété n'est pas ré-exporté par le paquet | Injection par constructeur : `@inject("nom")` |
616
+ | `@injectable({ singleton: true })` sans effet | La clé n'existe pas — elle est acceptée puis **ignorée** | `{ scope: "singleton" }` (défaut) ou `{ scope: "transient" }` |
617
+ | `@services()` refuse ma classe : « not assignable » | Config déclarée en `interface` — pas d'index signature (`kernelDecorator.ts:21`) | Déclarer le type de config avec `type`, pas `interface` |
618
+ | `getModule("x")` rend `undefined` | Lecture de table sans garde (`Kernel.ts:1575`) | Tester ; un module gaté par le manifeste est légitimement absent |
619
+ | Config du module ignorée | Défauts du constructeur écrasés par `use()` puis par l'environnement | Comportement voulu — lire `this.config`, pas les défauts écrits |
620
+ | Override `Module-x` ignoré, `WARNING` au boot | Le module cible n'est pas au manifeste (`Module.ts:329`) | Charger le module, ou retirer la clé |
621
+ | `Cannot read 'environment' of undefined` au démarrage CLI | `environment` non résolu au constructeur (`CliKernel.ts:100`) | Déplacer le réglage dans `onKernelStart()` |
622
+ | Un `await` dans un écouteur de `fire()` n'est pas attendu | `fire()` est synchrone par conception (`Kernel.ts:2596`) | `fireAsync()` si le résultat compte |
623
+ | Boot très bavard en `DEBUG` | Une ligne par événement émis (`Kernel.ts:2597`) | Cibler le debug par module plutôt que `*` — voir [syslog](syslog.md) |
624
+ | Fichier de config qui plante à l'import | Kernel déréférencé au premier niveau | `defineConfig((ctx) => …)` ou getter paresseux |
625
+
626
+ ## 🧪 Tests & couverture
627
+
628
+ Sept fichiers couvrent le cœur — les **chiffres exacts vivent dans la carte de l'aperçu**, régénérée
629
+ depuis vitest, jamais figés ici :
630
+
631
+ - **Le kernel lui-même** — `Kernel.test.ts` (le bitmask des phases, les drapeaux, les chemins, le
632
+ registre de modules, le rapport de boot) et `KernelLifecycle.test.ts` (l'ordre des phases, les
633
+ délais maximaux, la criticité, l'échéance d'arrêt).
634
+ - **Les modules** — `Module.test.ts` : chargement, câblage des hooks, ajout et initialisation des
635
+ services, surcharges de configuration inter-modules, registre des controllers.
636
+ - **Le CLI** — `KernelCommands.test.ts` (les commandes intégrées), `CliKernel.test.ts` (profil
637
+ d'exécution, analyse d'`argv`, cycle écourté) et `CliKernelDispatch.test.ts` (le dispatch différé
638
+ des commandes de module, qui n'existent qu'après le chargement des modules).
639
+ - **La résolution** — `resolveModuleEntry.test.ts` : un module est résolu **depuis l'application**,
640
+ jamais depuis le paquet `nodefony` — sans quoi un module local devient introuvable en monorepo.
641
+
642
+ Ce qui **manque** aujourd'hui, et qu'il faut savoir :
643
+
644
+ - **Aucun test d'attaque** propre au kernel. La construction des services est couverte par
645
+ `services.attack` et `injector.attack` ; la surface d'administration relève du skill
646
+ `nodefony-security-review`.
647
+ - **Aucun banc de charge dédié au boot** (temps de démarrage sous contrainte). La pression réelle se
648
+ mesure en bout de chaîne, par le gate mémoire du pipeline (skill `nodefony-check-memory-health`).
649
+ - **Le chemin cluster** n'est couvert qu'indirectement.
650
+
651
+ Couverture : `npm run coverage` dans `src/nodefony`.
652
+
653
+ ## 🔗 Pour aller plus loin
654
+
655
+ - ⬆️ **Retour au hub** : [@nodefony/core — vue d'ensemble](index.md) · [Toute la documentation](../../../docs/index.md)
656
+ - 🧭 **Pages sœurs** : [Service et événements](service.md) — le socle dont `Kernel` et `Module`
657
+ héritent · [Journalisation](syslog.md) — d'où vient `this.log()` ·
658
+ [Contexte de requête](request-context.md) — l'ALS qui traverse le pipeline ·
659
+ [Client isomorphe](client.md) — ce que le cœur expose côté navigateur
660
+
661
+ - **Quand** chaque phase se déclenche, la résilience, l'arrêt propre, le mode commande →
662
+ [Cycle de boot du Kernel](../../../docs/architecture/cycle-boot-kernel.md)
663
+ - Écrire `nodefony.config.ts` et `env.ts`, les surcharges, `use()` →
664
+ [Configuration](../../../docs/architecture/configuration.md)
665
+ - Portées, tri des dépendances, cycle des scopes →
666
+ [Injection & portées](../../../docs/architecture/injection-portees.md)
667
+ - Ce qui se passe **après** le boot, requête par requête →
668
+ [Pipeline d'une requête](../../../docs/architecture/pipeline-requete.md)
669
+ - Comment le `dist/` d'un module est produit (et pourquoi il périme) →
670
+ [Build & bundling](../../../docs/architecture/build-bundling.md)