nodefony 7.0.2 → 10.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (903) hide show
  1. package/.ai/symbols.json +36135 -0
  2. package/LICENSE +544 -0
  3. package/README.md +316 -694
  4. package/bin/nodefony +2183 -85
  5. package/dist/client/Container.js +367 -0
  6. package/dist/client/Event.js +198 -0
  7. package/dist/client/Service.js +344 -0
  8. package/dist/client/Tools.js +162 -0
  9. package/dist/client/client/ClientKernel.js +276 -0
  10. package/dist/client/client/angular/index.js +352 -0
  11. package/dist/client/client/announce.js +212 -0
  12. package/dist/client/client/debugbar/DebugBar.js +1624 -0
  13. package/dist/client/client/debugbar/format.js +103 -0
  14. package/dist/client/client/debugbar/hmr.js +37 -0
  15. package/dist/client/client/debugbar/index.js +29 -0
  16. package/dist/client/client/debugbar/model.js +133 -0
  17. package/dist/client/client/debugbar/network.js +173 -0
  18. package/dist/client/client/debugbar/profile.js +114 -0
  19. package/dist/client/client/index.js +34 -0
  20. package/dist/client/client/react/index.js +268 -0
  21. package/dist/client/client/realtime/AdaptiveRate.js +240 -0
  22. package/dist/client/client/realtime/BrowserWsTransport.js +57 -0
  23. package/dist/client/client/realtime/RealtimeClient.js +898 -0
  24. package/dist/client/client/realtime/localEvents.js +56 -0
  25. package/dist/client/client/realtime/notice.js +125 -0
  26. package/dist/client/client/realtime/observe.js +280 -0
  27. package/dist/client/client/roles/index.js +3 -0
  28. package/dist/client/client/roles/registry.js +97 -0
  29. package/dist/client/client/roles/roles.js +91 -0
  30. package/dist/client/client/shim/events.js +88 -0
  31. package/dist/client/client/shim/util.js +20 -0
  32. package/dist/client/client/svelte/index.js +319 -0
  33. package/dist/client/client/syslog/context.js +122 -0
  34. package/dist/client/client/syslog/errors.js +49 -0
  35. package/dist/client/client/syslog/uplink.js +106 -0
  36. package/dist/client/client/vue/index.js +321 -0
  37. package/dist/client/colors.js +63 -0
  38. package/dist/client/debugbar.standalone.js +4274 -0
  39. package/dist/client/realtime/IRealtimeTransport.js +32 -0
  40. package/dist/client/realtime/JsonRpcPeer.js +251 -0
  41. package/dist/client/realtime/channelRate.js +39 -0
  42. package/dist/client/realtime/platformChannels.js +155 -0
  43. package/dist/client/syslog/Pdu.js +224 -0
  44. package/dist/client/syslog/Syslog.js +1159 -0
  45. package/dist/client/syslog/drivers/pduFlow.js +106 -0
  46. package/dist/client/syslog/drivers/pduProtocol.js +28 -0
  47. package/dist/client/syslog/logColor.js +80 -0
  48. package/dist/client/types/src/Container.d.ts +221 -0
  49. package/dist/client/types/src/Event.d.ts +171 -0
  50. package/dist/client/types/src/FileClass.d.ts +184 -0
  51. package/dist/client/types/src/Service.d.ts +165 -0
  52. package/dist/client/types/src/Tools.d.ts +116 -0
  53. package/dist/client/types/src/client/ClientKernel.d.ts +90 -0
  54. package/dist/client/types/src/client/IClientKernel.d.ts +195 -0
  55. package/dist/client/types/src/client/angular/index.d.ts +273 -0
  56. package/dist/client/types/src/client/announce.d.ts +74 -0
  57. package/dist/client/types/src/client/debugbar/DebugBar.d.ts +279 -0
  58. package/dist/client/types/src/client/debugbar/format.d.ts +48 -0
  59. package/dist/client/types/src/client/debugbar/hmr.d.ts +16 -0
  60. package/dist/client/types/src/client/debugbar/index.d.ts +30 -0
  61. package/dist/client/types/src/client/debugbar/model.d.ts +158 -0
  62. package/dist/client/types/src/client/debugbar/network.d.ts +55 -0
  63. package/dist/client/types/src/client/debugbar/profile.d.ts +99 -0
  64. package/dist/client/types/src/client/index.d.ts +47 -0
  65. package/dist/client/types/src/client/react/index.d.ts +207 -0
  66. package/dist/client/types/src/client/realtime/AdaptiveRate.d.ts +138 -0
  67. package/dist/client/types/src/client/realtime/BrowserWsTransport.d.ts +27 -0
  68. package/dist/client/types/src/client/realtime/RealtimeClient.d.ts +573 -0
  69. package/dist/client/types/src/client/realtime/localEvents.d.ts +53 -0
  70. package/dist/client/types/src/client/realtime/notice.d.ts +70 -0
  71. package/dist/client/types/src/client/realtime/observe.d.ts +284 -0
  72. package/dist/client/types/src/client/roles/index.d.ts +15 -0
  73. package/dist/client/types/src/client/roles/registry.d.ts +72 -0
  74. package/dist/client/types/src/client/roles/roles.d.ts +68 -0
  75. package/dist/client/types/src/client/shim/cli-color.d.ts +2 -0
  76. package/dist/client/types/src/client/shim/events.d.ts +39 -0
  77. package/dist/client/types/src/client/shim/util.d.ts +14 -0
  78. package/dist/client/types/src/client/svelte/index.d.ts +216 -0
  79. package/dist/client/types/src/client/syslog/context.d.ts +76 -0
  80. package/dist/client/types/src/client/syslog/errors.d.ts +46 -0
  81. package/dist/client/types/src/client/syslog/uplink.d.ts +89 -0
  82. package/dist/client/types/src/client/transport/websocket.d.ts +5 -0
  83. package/dist/client/types/src/client/vue/index.d.ts +234 -0
  84. package/dist/client/types/src/colors.d.ts +32 -0
  85. package/dist/client/types/src/config/infra.d.ts +171 -0
  86. package/dist/client/types/src/kernel/bootReport.d.ts +112 -0
  87. package/dist/client/types/src/kernel/readinessRegistry.d.ts +104 -0
  88. package/dist/client/types/src/realtime/IRealtimeSocket.d.ts +142 -0
  89. package/dist/client/types/src/realtime/IRealtimeTransport.d.ts +50 -0
  90. package/dist/client/types/src/realtime/JsonRpcPeer.d.ts +251 -0
  91. package/dist/client/types/src/realtime/RealtimeEventMap.d.ts +269 -0
  92. package/dist/client/types/src/realtime/channelRate.d.ts +55 -0
  93. package/dist/client/types/src/realtime/platformChannels.d.ts +147 -0
  94. package/dist/client/types/src/syslog/Pdu.d.ts +134 -0
  95. package/dist/client/types/src/syslog/Syslog.d.ts +482 -0
  96. package/dist/client/types/src/syslog/drivers/ILogDriver.d.ts +177 -0
  97. package/dist/client/types/src/syslog/drivers/pduFlow.d.ts +53 -0
  98. package/dist/client/types/src/syslog/drivers/pduProtocol.d.ts +20 -0
  99. package/dist/client/types/src/syslog/logColor.d.ts +59 -0
  100. package/dist/client/types/src/types/ICliKernel.d.ts +28 -0
  101. package/dist/client/types/src/types/ICommand.d.ts +14 -0
  102. package/dist/client/types/src/types/IContainer.d.ts +35 -0
  103. package/dist/client/types/src/types/IKernel.d.ts +138 -0
  104. package/dist/client/types/src/types/IMcpTool.d.ts +157 -0
  105. package/dist/client/types/src/types/IModule.d.ts +73 -0
  106. package/dist/client/types/src/types/IPage.d.ts +119 -0
  107. package/dist/client/types/src/types/IService.d.ts +62 -0
  108. package/dist/client/types/src/types/ISyslog.d.ts +58 -0
  109. package/dist/client/types/src/types/ITransport.d.ts +5 -0
  110. package/dist/client/types/src/types/globals.d.ts +47 -0
  111. package/dist/node/Cli.js +750 -0
  112. package/dist/node/Container.js +367 -0
  113. package/dist/node/Error.js +309 -0
  114. package/dist/node/Event.js +198 -0
  115. package/dist/node/FileClass.js +308 -0
  116. package/dist/node/Nodefony.js +78 -0
  117. package/dist/node/Service.js +344 -0
  118. package/dist/node/Tools.js +205 -0
  119. package/dist/node/bin/resolveLocalCli.js +10 -0
  120. package/dist/node/bundler/index.js +103 -0
  121. package/dist/node/cli/agentTargets.js +461 -0
  122. package/dist/node/cli/aiMcp.js +553 -0
  123. package/dist/node/cli/aiMcpReport.js +129 -0
  124. package/dist/node/cli/aiSync.js +323 -0
  125. package/dist/node/cli/aiSyncReport.js +142 -0
  126. package/dist/node/cli/card.js +186 -0
  127. package/dist/node/cli/cardReport.js +110 -0
  128. package/dist/node/cli/completion.js +415 -0
  129. package/dist/node/cli/create.js +805 -0
  130. package/dist/node/cli/env.js +332 -0
  131. package/dist/node/cli/envReport.js +159 -0
  132. package/dist/node/cli/execPortable.js +60 -0
  133. package/dist/node/cli/gitHooks.js +191 -0
  134. package/dist/node/cli/gitHooksReport.js +119 -0
  135. package/dist/node/cli/globalFlags.js +67 -0
  136. package/dist/node/cli/helpReport.js +288 -0
  137. package/dist/node/cli/manPage.js +165 -0
  138. package/dist/node/cli/nodefonyBin.js +61 -0
  139. package/dist/node/cli/outdated.js +144 -0
  140. package/dist/node/cli/progress.js +555 -0
  141. package/dist/node/cli/projectRoot.js +32 -0
  142. package/dist/node/cli/promptPassword.js +44 -0
  143. package/dist/node/cli/prompts.js +86 -0
  144. package/dist/node/cli/scaffold/destination.js +92 -0
  145. package/dist/node/cli/scaffold/engine.js +2156 -0
  146. package/dist/node/cli/scaffold/entityFields.js +589 -0
  147. package/dist/node/cli/scaffold/format.js +243 -0
  148. package/dist/node/cli/scaffold/interactive.js +124 -0
  149. package/dist/node/cli/scaffold/moduleLayout.js +38 -0
  150. package/dist/node/cli/scaffold/reservedEntities.js +74 -0
  151. package/dist/node/cli/scaffold/spec.js +704 -0
  152. package/dist/node/cli/scaffold/steps.js +40 -0
  153. package/dist/node/cli/scaffold/userContractSource.js +133 -0
  154. package/dist/node/cli/scaffold/versions.js +57 -0
  155. package/dist/node/cli/scaffold/writer.js +172 -0
  156. package/dist/node/cli/startMenu.js +496 -0
  157. package/dist/node/cli/symbols.js +205 -0
  158. package/dist/node/cli/sysexits.js +34 -0
  159. package/dist/node/cli/tableReport.js +184 -0
  160. package/dist/node/cli/usageReport.js +144 -0
  161. package/dist/node/colors.js +63 -0
  162. package/dist/node/command/Builder.js +153 -0
  163. package/dist/node/command/Command.js +348 -0
  164. package/dist/node/config/configProvenance.js +101 -0
  165. package/dist/node/config/defaults.js +39 -0
  166. package/dist/node/config/defineConfig.js +129 -0
  167. package/dist/node/config/defineEnv.js +264 -0
  168. package/dist/node/config/envExample.js +41 -0
  169. package/dist/node/config/envOverride.js +423 -0
  170. package/dist/node/config/infra.js +163 -0
  171. package/dist/node/config/reactivity.js +23 -0
  172. package/dist/node/config/reservedEnv.js +118 -0
  173. package/dist/node/config/schema.js +134 -0
  174. package/dist/node/config/use.js +24 -0
  175. package/dist/node/finder/File.js +49 -0
  176. package/dist/node/finder/FileResult.js +86 -0
  177. package/dist/node/finder/Finder.js +201 -0
  178. package/dist/node/finder/Result.js +45 -0
  179. package/dist/node/index.js +121 -0
  180. package/dist/node/kernel/BootConfigurationError.js +54 -0
  181. package/dist/node/kernel/CliKernel.js +630 -0
  182. package/dist/node/kernel/Kernel.js +2198 -0
  183. package/dist/node/kernel/Module.js +453 -0
  184. package/dist/node/kernel/adminPlane/adminCaller.js +98 -0
  185. package/dist/node/kernel/adminPlane/adminRbac.js +51 -0
  186. package/dist/node/kernel/adminPlane/catalog.js +158 -0
  187. package/dist/node/kernel/adminPlane/executeAdmin.js +78 -0
  188. package/dist/node/kernel/checks/deep.js +335 -0
  189. package/dist/node/kernel/checks/freshness.js +139 -0
  190. package/dist/node/kernel/checks/gating.js +231 -0
  191. package/dist/node/kernel/checks/guards.js +232 -0
  192. package/dist/node/kernel/checks/lastBoot.js +136 -0
  193. package/dist/node/kernel/checks/live.js +330 -0
  194. package/dist/node/kernel/checks/packageDeps.js +292 -0
  195. package/dist/node/kernel/checks/readiness.js +153 -0
  196. package/dist/node/kernel/checks/renderReport.js +780 -0
  197. package/dist/node/kernel/checks/report.js +421 -0
  198. package/dist/node/kernel/checks/runDoctor.js +731 -0
  199. package/dist/node/kernel/checks/surface.js +364 -0
  200. package/dist/node/kernel/checks/walk.js +100 -0
  201. package/dist/node/kernel/checks/wiring.js +450 -0
  202. package/dist/node/kernel/commands/AiMcpCommand.js +65 -0
  203. package/dist/node/kernel/commands/AiSyncCommand.js +48 -0
  204. package/dist/node/kernel/commands/BuildCommand.js +49 -0
  205. package/dist/node/kernel/commands/CardCommand.js +50 -0
  206. package/dist/node/kernel/commands/ClusterCommand.js +58 -0
  207. package/dist/node/kernel/commands/CompletionCommand.js +31 -0
  208. package/dist/node/kernel/commands/CreateCommand.js +45 -0
  209. package/dist/node/kernel/commands/DevCommand.js +99 -0
  210. package/dist/node/kernel/commands/DoctorCommand.js +115 -0
  211. package/dist/node/kernel/commands/EnvCommand.js +52 -0
  212. package/dist/node/kernel/commands/GitHooksCommand.js +47 -0
  213. package/dist/node/kernel/commands/InspectCommand.js +153 -0
  214. package/dist/node/kernel/commands/InstallCommand.js +20 -0
  215. package/dist/node/kernel/commands/MenuCommand.js +261 -0
  216. package/dist/node/kernel/commands/OutdatedCommand.js +164 -0
  217. package/dist/node/kernel/commands/ProdCommand.js +60 -0
  218. package/dist/node/kernel/commands/StatusCommand.js +30 -0
  219. package/dist/node/kernel/commands/StopCommand.js +35 -0
  220. package/dist/node/kernel/commands/SymbolsCommand.js +45 -0
  221. package/dist/node/kernel/commands/runtimeLauncher.js +95 -0
  222. package/dist/node/kernel/decorators/kernelDecorator.js +110 -0
  223. package/dist/node/kernel/injector/injector.js +137 -0
  224. package/dist/node/kernel/injector/serviceOrder.js +106 -0
  225. package/dist/node/kernel/inspect/adminSubjects.js +194 -0
  226. package/dist/node/kernel/inspect/docOutline.js +86 -0
  227. package/dist/node/kernel/lifecycleTags.js +76 -0
  228. package/dist/node/kernel/moduleConfig.js +75 -0
  229. package/dist/node/kernel/moduleGating.js +68 -0
  230. package/dist/node/kernel/readinessRegistry.js +98 -0
  231. package/dist/node/kernel/resolveModuleEntry.js +61 -0
  232. package/dist/node/mcp/caller.js +40 -0
  233. package/dist/node/mcp/guard.js +51 -0
  234. package/dist/node/mcp/protocol.js +157 -0
  235. package/dist/node/mcp/server.js +216 -0
  236. package/dist/node/mcp/tools.js +861 -0
  237. package/dist/node/oauth/authorizationServer.js +221 -0
  238. package/dist/node/oauth/protectedResource.js +293 -0
  239. package/dist/node/package.js +4 -0
  240. package/dist/node/realtime/IRealtimeTransport.js +32 -0
  241. package/dist/node/realtime/JsonRpcPeer.js +251 -0
  242. package/dist/node/realtime/RealtimeEventMap.js +15 -0
  243. package/dist/node/realtime/channelRate.js +39 -0
  244. package/dist/node/realtime/platformChannels.js +155 -0
  245. package/dist/node/runtime/GcScheduler.js +92 -0
  246. package/dist/node/runtime/RequestContext.js +76 -0
  247. package/dist/node/runtime/bearer.js +84 -0
  248. package/dist/node/runtime/engineEnvironment.js +79 -0
  249. package/dist/node/runtime/loadEnv.js +105 -0
  250. package/dist/node/runtime/pageFacets.js +85 -0
  251. package/dist/node/runtime/pageFilters.js +103 -0
  252. package/dist/node/runtime/pageGuard.js +84 -0
  253. package/dist/node/runtime/pageQuery.js +160 -0
  254. package/dist/node/runtime/pageSort.js +114 -0
  255. package/dist/node/runtime/redact.js +43 -0
  256. package/dist/node/runtime/withTimeout.js +71 -0
  257. package/dist/node/service/cluster/ClusterManager.js +202 -0
  258. package/dist/node/service/cluster/ClusterProbeAggregator.js +120 -0
  259. package/dist/node/service/cluster/ClusterRelay.js +74 -0
  260. package/dist/node/service/cluster/clusterMaster.js +65 -0
  261. package/dist/node/service/cluster/clusterMessage.js +70 -0
  262. package/dist/node/service/cluster/cpuQuota.js +59 -0
  263. package/dist/node/service/cluster/instanceProbe.js +52 -0
  264. package/dist/node/service/cluster/podEnvironment.js +48 -0
  265. package/dist/node/service/cluster/processProbe.js +70 -0
  266. package/dist/node/service/cluster/richProcessProbe.js +115 -0
  267. package/dist/node/service/cluster/topology.js +71 -0
  268. package/dist/node/service/dev/BootReporter.js +490 -0
  269. package/dist/node/service/dev/DevSupervisor.js +1004 -0
  270. package/dist/node/service/dev/bootVerdict.js +158 -0
  271. package/dist/node/service/dev/detachedStart.js +372 -0
  272. package/dist/node/service/dev/devProcess.js +1137 -0
  273. package/dist/node/service/dev/devProjects.js +138 -0
  274. package/dist/node/service/dev/devStatusReport.js +395 -0
  275. package/dist/node/service/dev/devStop.js +263 -0
  276. package/dist/node/service/fetchService.js +35 -0
  277. package/dist/node/service/gitService.js +62 -0
  278. package/dist/node/syslog/Pdu.js +224 -0
  279. package/dist/node/syslog/Syslog.js +1159 -0
  280. package/dist/node/syslog/drivers/ClusterFileLogDriver.js +114 -0
  281. package/dist/node/syslog/drivers/FileLogDriver.js +127 -0
  282. package/dist/node/syslog/drivers/ILogDriver.js +26 -0
  283. package/dist/node/syslog/drivers/LokiLogDriver.js +144 -0
  284. package/dist/node/syslog/drivers/MemoryLogDriver.js +33 -0
  285. package/dist/node/syslog/drivers/OpenSearchLogDriver.js +159 -0
  286. package/dist/node/syslog/drivers/builtinLogDrivers.js +114 -0
  287. package/dist/node/syslog/drivers/filterPdus.js +71 -0
  288. package/dist/node/syslog/drivers/logDriverRegistry.js +83 -0
  289. package/dist/node/syslog/drivers/opensearchShared.js +17 -0
  290. package/dist/node/syslog/drivers/pduFlow.js +106 -0
  291. package/dist/node/syslog/drivers/pduProtocol.js +28 -0
  292. package/dist/node/syslog/httpFetch.js +43 -0
  293. package/dist/node/syslog/logColor.js +80 -0
  294. package/dist/node/syslog/sinks/FileSink.js +142 -0
  295. package/dist/node/syslog/transports/BatchingHttpTransport.js +98 -0
  296. package/dist/node/syslog/transports/ConsoleTransport.js +14 -0
  297. package/dist/node/syslog/transports/FileTransport.js +17 -0
  298. package/dist/node/syslog/transports/HttpTransport.js +44 -0
  299. package/dist/node/syslog/transports/LokiTransport.js +80 -0
  300. package/dist/node/syslog/transports/OpenSearchTransport.js +53 -0
  301. package/dist/node/syslog/transports/SyslogTransport.js +13 -0
  302. package/dist/node/syslog/transports/index.js +8 -0
  303. package/dist/node/testing/index.js +190 -0
  304. package/dist/types/Cli.d.ts +177 -0
  305. package/dist/types/Container.d.ts +221 -0
  306. package/dist/types/Error.d.ts +162 -0
  307. package/dist/types/Event.d.ts +171 -0
  308. package/dist/types/FileClass.d.ts +184 -0
  309. package/dist/types/Nodefony.d.ts +66 -0
  310. package/dist/types/Service.d.ts +165 -0
  311. package/dist/types/Tools.d.ts +116 -0
  312. package/dist/types/bin/resolveLocalCli.d.ts +49 -0
  313. package/dist/types/bundler/index.d.ts +66 -0
  314. package/dist/types/cli/agentTargets.d.ts +378 -0
  315. package/dist/types/cli/aiMcp.d.ts +239 -0
  316. package/dist/types/cli/aiMcpReport.d.ts +113 -0
  317. package/dist/types/cli/aiSync.d.ts +68 -0
  318. package/dist/types/cli/aiSyncReport.d.ts +149 -0
  319. package/dist/types/cli/card.d.ts +49 -0
  320. package/dist/types/cli/cardReport.d.ts +127 -0
  321. package/dist/types/cli/completion.d.ts +154 -0
  322. package/dist/types/cli/create.d.ts +177 -0
  323. package/dist/types/cli/env.d.ts +103 -0
  324. package/dist/types/cli/envReport.d.ts +153 -0
  325. package/dist/types/cli/execPortable.d.ts +54 -0
  326. package/dist/types/cli/gitHooks.d.ts +48 -0
  327. package/dist/types/cli/gitHooksReport.d.ts +101 -0
  328. package/dist/types/cli/globalFlags.d.ts +48 -0
  329. package/dist/types/cli/helpReport.d.ts +110 -0
  330. package/dist/types/cli/manPage.d.ts +21 -0
  331. package/dist/types/cli/nodefonyBin.d.ts +45 -0
  332. package/dist/types/cli/outdated.d.ts +119 -0
  333. package/dist/types/cli/progress.d.ts +349 -0
  334. package/dist/types/cli/projectRoot.d.ts +19 -0
  335. package/dist/types/cli/promptPassword.d.ts +22 -0
  336. package/dist/types/cli/prompts.d.ts +102 -0
  337. package/dist/types/cli/scaffold/destination.d.ts +70 -0
  338. package/dist/types/cli/scaffold/engine.d.ts +545 -0
  339. package/dist/types/cli/scaffold/entityFields.d.ts +238 -0
  340. package/dist/types/cli/scaffold/format.d.ts +78 -0
  341. package/dist/types/cli/scaffold/interactive.d.ts +11 -0
  342. package/dist/types/cli/scaffold/moduleLayout.d.ts +69 -0
  343. package/dist/types/cli/scaffold/reservedEntities.d.ts +49 -0
  344. package/dist/types/cli/scaffold/spec.d.ts +159 -0
  345. package/dist/types/cli/scaffold/steps.d.ts +24 -0
  346. package/dist/types/cli/scaffold/userContractSource.d.ts +86 -0
  347. package/dist/types/cli/scaffold/versions.d.ts +14 -0
  348. package/dist/types/cli/scaffold/writer.d.ts +100 -0
  349. package/dist/types/cli/startMenu.d.ts +195 -0
  350. package/dist/types/cli/symbols.d.ts +84 -0
  351. package/dist/types/cli/sysexits.d.ts +31 -0
  352. package/dist/types/cli/tableReport.d.ts +44 -0
  353. package/dist/types/cli/usageReport.d.ts +108 -0
  354. package/dist/types/client/ClientKernel.d.ts +90 -0
  355. package/dist/types/client/IClientKernel.d.ts +195 -0
  356. package/dist/types/client/angular/index.d.ts +273 -0
  357. package/dist/types/client/announce.d.ts +74 -0
  358. package/dist/types/client/debugbar/DebugBar.d.ts +279 -0
  359. package/dist/types/client/debugbar/format.d.ts +48 -0
  360. package/dist/types/client/debugbar/hmr.d.ts +16 -0
  361. package/dist/types/client/debugbar/index.d.ts +30 -0
  362. package/dist/types/client/debugbar/model.d.ts +158 -0
  363. package/dist/types/client/debugbar/network.d.ts +55 -0
  364. package/dist/types/client/debugbar/profile.d.ts +99 -0
  365. package/dist/types/client/index.d.ts +47 -0
  366. package/dist/types/client/react/index.d.ts +207 -0
  367. package/dist/types/client/realtime/AdaptiveRate.d.ts +138 -0
  368. package/dist/types/client/realtime/BrowserWsTransport.d.ts +27 -0
  369. package/dist/types/client/realtime/RealtimeClient.d.ts +573 -0
  370. package/dist/types/client/realtime/localEvents.d.ts +53 -0
  371. package/dist/types/client/realtime/notice.d.ts +70 -0
  372. package/dist/types/client/realtime/observe.d.ts +284 -0
  373. package/dist/types/client/roles/index.d.ts +15 -0
  374. package/dist/types/client/roles/registry.d.ts +72 -0
  375. package/dist/types/client/roles/roles.d.ts +68 -0
  376. package/dist/types/client/shim/cli-color.d.ts +2 -0
  377. package/dist/types/client/shim/events.d.ts +39 -0
  378. package/dist/types/client/shim/util.d.ts +14 -0
  379. package/dist/types/client/svelte/index.d.ts +216 -0
  380. package/dist/types/client/syslog/context.d.ts +76 -0
  381. package/dist/types/client/syslog/errors.d.ts +46 -0
  382. package/dist/types/client/syslog/uplink.d.ts +89 -0
  383. package/dist/types/client/transport/websocket.d.ts +5 -0
  384. package/dist/types/client/vue/index.d.ts +234 -0
  385. package/dist/types/colors.d.ts +32 -0
  386. package/dist/types/command/Builder.d.ts +47 -0
  387. package/dist/types/command/Command.d.ts +268 -0
  388. package/dist/types/config/configMeta.d.ts +53 -0
  389. package/dist/types/config/configProvenance.d.ts +58 -0
  390. package/dist/types/config/defaults.d.ts +33 -0
  391. package/dist/types/config/defineConfig.d.ts +70 -0
  392. package/dist/types/config/defineEnv.d.ts +170 -0
  393. package/dist/types/config/envExample.d.ts +23 -0
  394. package/dist/types/config/envOverride.d.ts +236 -0
  395. package/dist/types/config/index.d.ts +23 -0
  396. package/dist/types/config/infra.d.ts +171 -0
  397. package/dist/types/config/reactivity.d.ts +36 -0
  398. package/dist/types/config/reservedEnv.d.ts +145 -0
  399. package/dist/types/config/schema.d.ts +113 -0
  400. package/dist/types/config/types.d.ts +374 -0
  401. package/dist/types/config/use.d.ts +80 -0
  402. package/dist/types/finder/File.d.ts +26 -0
  403. package/dist/types/finder/FileResult.d.ts +14 -0
  404. package/dist/types/finder/Finder.d.ts +51 -0
  405. package/dist/types/finder/Result.d.ts +10 -0
  406. package/dist/types/index.d.ts +205 -0
  407. package/dist/types/kernel/BootConfigurationError.d.ts +50 -0
  408. package/dist/types/kernel/CliKernel.d.ts +289 -0
  409. package/dist/types/kernel/Kernel.d.ts +1255 -0
  410. package/dist/types/kernel/Module.d.ts +326 -0
  411. package/dist/types/kernel/adminPlane/adminCaller.d.ts +105 -0
  412. package/dist/types/kernel/adminPlane/adminRbac.d.ts +44 -0
  413. package/dist/types/kernel/adminPlane/catalog.d.ts +122 -0
  414. package/dist/types/kernel/adminPlane/executeAdmin.d.ts +99 -0
  415. package/dist/types/kernel/bootReport.d.ts +112 -0
  416. package/dist/types/kernel/checks/deep.d.ts +122 -0
  417. package/dist/types/kernel/checks/freshness.d.ts +49 -0
  418. package/dist/types/kernel/checks/gating.d.ts +134 -0
  419. package/dist/types/kernel/checks/guards.d.ts +57 -0
  420. package/dist/types/kernel/checks/lastBoot.d.ts +189 -0
  421. package/dist/types/kernel/checks/live.d.ts +110 -0
  422. package/dist/types/kernel/checks/packageDeps.d.ts +44 -0
  423. package/dist/types/kernel/checks/readiness.d.ts +97 -0
  424. package/dist/types/kernel/checks/renderReport.d.ts +107 -0
  425. package/dist/types/kernel/checks/report.d.ts +414 -0
  426. package/dist/types/kernel/checks/runDoctor.d.ts +361 -0
  427. package/dist/types/kernel/checks/surface.d.ts +148 -0
  428. package/dist/types/kernel/checks/walk.d.ts +45 -0
  429. package/dist/types/kernel/checks/wiring.d.ts +54 -0
  430. package/dist/types/kernel/commands/AiMcpCommand.d.ts +39 -0
  431. package/dist/types/kernel/commands/AiSyncCommand.d.ts +28 -0
  432. package/dist/types/kernel/commands/BuildCommand.d.ts +13 -0
  433. package/dist/types/kernel/commands/CardCommand.d.ts +34 -0
  434. package/dist/types/kernel/commands/ClusterCommand.d.ts +29 -0
  435. package/dist/types/kernel/commands/CompletionCommand.d.ts +17 -0
  436. package/dist/types/kernel/commands/CreateCommand.d.ts +16 -0
  437. package/dist/types/kernel/commands/DevCommand.d.ts +40 -0
  438. package/dist/types/kernel/commands/DoctorCommand.d.ts +55 -0
  439. package/dist/types/kernel/commands/EnvCommand.d.ts +35 -0
  440. package/dist/types/kernel/commands/GitHooksCommand.d.ts +27 -0
  441. package/dist/types/kernel/commands/InspectCommand.d.ts +59 -0
  442. package/dist/types/kernel/commands/InstallCommand.d.ts +7 -0
  443. package/dist/types/kernel/commands/MenuCommand.d.ts +58 -0
  444. package/dist/types/kernel/commands/OutdatedCommand.d.ts +47 -0
  445. package/dist/types/kernel/commands/ProdCommand.d.ts +29 -0
  446. package/dist/types/kernel/commands/StatusCommand.d.ts +17 -0
  447. package/dist/types/kernel/commands/StopCommand.d.ts +17 -0
  448. package/dist/types/kernel/commands/SymbolsCommand.d.ts +29 -0
  449. package/dist/types/kernel/commands/runtimeLauncher.d.ts +76 -0
  450. package/dist/types/kernel/decorators/kernelDecorator.d.ts +76 -0
  451. package/dist/types/kernel/injector/injector.d.ts +47 -0
  452. package/dist/types/kernel/injector/serviceOrder.d.ts +29 -0
  453. package/dist/types/kernel/inspect/adminSubjects.d.ts +169 -0
  454. package/dist/types/kernel/inspect/docOutline.d.ts +53 -0
  455. package/dist/types/kernel/lifecycleTags.d.ts +79 -0
  456. package/dist/types/kernel/moduleConfig.d.ts +35 -0
  457. package/dist/types/kernel/moduleGating.d.ts +78 -0
  458. package/dist/types/kernel/readinessRegistry.d.ts +104 -0
  459. package/dist/types/kernel/resolveModuleEntry.d.ts +46 -0
  460. package/dist/types/mcp/caller.d.ts +55 -0
  461. package/dist/types/mcp/guard.d.ts +66 -0
  462. package/dist/types/mcp/protocol.d.ts +163 -0
  463. package/dist/types/mcp/server.d.ts +70 -0
  464. package/dist/types/mcp/tools.d.ts +209 -0
  465. package/dist/types/oauth/authorizationServer.d.ts +204 -0
  466. package/dist/types/oauth/protectedResource.d.ts +339 -0
  467. package/dist/types/realtime/IRealtimeSocket.d.ts +142 -0
  468. package/dist/types/realtime/IRealtimeTransport.d.ts +50 -0
  469. package/dist/types/realtime/JsonRpcPeer.d.ts +251 -0
  470. package/dist/types/realtime/RealtimeEventMap.d.ts +269 -0
  471. package/dist/types/realtime/channelRate.d.ts +55 -0
  472. package/dist/types/realtime/platformChannels.d.ts +147 -0
  473. package/dist/types/runtime/GcScheduler.d.ts +96 -0
  474. package/dist/types/runtime/RequestContext.d.ts +152 -0
  475. package/dist/types/runtime/bearer.d.ts +88 -0
  476. package/dist/types/runtime/engineEnvironment.d.ts +115 -0
  477. package/dist/types/runtime/loadEnv.d.ts +86 -0
  478. package/dist/types/runtime/pageFacets.d.ts +104 -0
  479. package/dist/types/runtime/pageFilters.d.ts +139 -0
  480. package/dist/types/runtime/pageGuard.d.ts +78 -0
  481. package/dist/types/runtime/pageQuery.d.ts +138 -0
  482. package/dist/types/runtime/pageSort.d.ts +86 -0
  483. package/dist/types/runtime/redact.d.ts +27 -0
  484. package/dist/types/runtime/withTimeout.d.ts +51 -0
  485. package/dist/types/service/cluster/ClusterManager.d.ts +112 -0
  486. package/dist/types/service/cluster/ClusterProbeAggregator.d.ts +68 -0
  487. package/dist/types/service/cluster/ClusterRelay.d.ts +57 -0
  488. package/dist/types/service/cluster/clusterMaster.d.ts +40 -0
  489. package/dist/types/service/cluster/clusterMessage.d.ts +94 -0
  490. package/dist/types/service/cluster/cpuQuota.d.ts +37 -0
  491. package/dist/types/service/cluster/instanceProbe.d.ts +82 -0
  492. package/dist/types/service/cluster/podEnvironment.d.ts +35 -0
  493. package/dist/types/service/cluster/processProbe.d.ts +53 -0
  494. package/dist/types/service/cluster/richProcessProbe.d.ts +77 -0
  495. package/dist/types/service/cluster/topology.d.ts +64 -0
  496. package/dist/types/service/dev/BootReporter.d.ts +67 -0
  497. package/dist/types/service/dev/DevSupervisor.d.ts +117 -0
  498. package/dist/types/service/dev/bootVerdict.d.ts +99 -0
  499. package/dist/types/service/dev/detachedStart.d.ts +164 -0
  500. package/dist/types/service/dev/devProcess.d.ts +638 -0
  501. package/dist/types/service/dev/devProjects.d.ts +121 -0
  502. package/dist/types/service/dev/devStatusReport.d.ts +141 -0
  503. package/dist/types/service/dev/devStop.d.ts +57 -0
  504. package/dist/types/service/fetchService.d.ts +29 -0
  505. package/dist/types/service/gitService.d.ts +24 -0
  506. package/dist/types/syslog/Pdu.d.ts +134 -0
  507. package/dist/types/syslog/Syslog.d.ts +482 -0
  508. package/dist/types/syslog/drivers/ClusterFileLogDriver.d.ts +40 -0
  509. package/dist/types/syslog/drivers/FileLogDriver.d.ts +55 -0
  510. package/dist/types/syslog/drivers/ILogDriver.d.ts +177 -0
  511. package/dist/types/syslog/drivers/LokiLogDriver.d.ts +44 -0
  512. package/dist/types/syslog/drivers/MemoryLogDriver.d.ts +20 -0
  513. package/dist/types/syslog/drivers/OpenSearchLogDriver.d.ts +40 -0
  514. package/dist/types/syslog/drivers/builtinLogDrivers.d.ts +43 -0
  515. package/dist/types/syslog/drivers/filterPdus.d.ts +21 -0
  516. package/dist/types/syslog/drivers/logDriverRegistry.d.ts +100 -0
  517. package/dist/types/syslog/drivers/opensearchShared.d.ts +11 -0
  518. package/dist/types/syslog/drivers/pduFlow.d.ts +53 -0
  519. package/dist/types/syslog/drivers/pduProtocol.d.ts +20 -0
  520. package/dist/types/syslog/httpFetch.d.ts +48 -0
  521. package/dist/types/syslog/logColor.d.ts +59 -0
  522. package/dist/types/syslog/sinks/FileSink.d.ts +78 -0
  523. package/dist/types/syslog/transports/BatchingHttpTransport.d.ts +59 -0
  524. package/dist/types/syslog/transports/ConsoleTransport.d.ts +8 -0
  525. package/dist/types/syslog/transports/FileTransport.d.ts +13 -0
  526. package/dist/types/syslog/transports/HttpTransport.d.ts +15 -0
  527. package/dist/types/syslog/transports/LokiTransport.d.ts +45 -0
  528. package/dist/types/syslog/transports/OpenSearchTransport.d.ts +40 -0
  529. package/dist/types/syslog/transports/SyslogTransport.d.ts +9 -0
  530. package/dist/types/syslog/transports/index.d.ts +12 -0
  531. package/dist/types/testing/index.d.ts +197 -0
  532. package/dist/types/types/IAdminApi.d.ts +246 -0
  533. package/dist/types/types/ICliKernel.d.ts +28 -0
  534. package/dist/types/types/ICommand.d.ts +14 -0
  535. package/dist/types/types/IContainer.d.ts +35 -0
  536. package/dist/types/types/IIdempotencyStore.d.ts +159 -0
  537. package/dist/types/types/IKernel.d.ts +138 -0
  538. package/dist/types/types/IMcpTool.d.ts +157 -0
  539. package/dist/types/types/IModule.d.ts +73 -0
  540. package/dist/types/types/IModuleManifest.d.ts +49 -0
  541. package/dist/types/types/IPage.d.ts +119 -0
  542. package/dist/types/types/IService.d.ts +62 -0
  543. package/dist/types/types/ISyslog.d.ts +58 -0
  544. package/dist/types/types/ITransport.d.ts +5 -0
  545. package/dist/types/types/globals.d.ts +47 -0
  546. package/docs/angular-services.md +318 -0
  547. package/docs/catalogue.md +184 -0
  548. package/docs/cli.md +369 -0
  549. package/docs/client.md +616 -0
  550. package/docs/debugbar.md +218 -0
  551. package/docs/environnement.md +308 -0
  552. package/docs/index.md +388 -0
  553. package/docs/kernel.md +670 -0
  554. package/docs/progression.md +228 -0
  555. package/docs/react-hooks.md +686 -0
  556. package/docs/request-context.md +507 -0
  557. package/docs/service.md +590 -0
  558. package/docs/svelte-reactivite.md +293 -0
  559. package/docs/syslog.md +848 -0
  560. package/docs/testing.md +203 -0
  561. package/docs/vue-composables.md +255 -0
  562. package/man/nodefony.1 +152 -0
  563. package/package.json +163 -83
  564. package/templates/app/agents/AGENTS.md.tpl +967 -0
  565. package/templates/app/agents/POINTEUR.md.tpl +12 -0
  566. package/templates/app/base/Dockerfile.tpl +104 -0
  567. package/templates/app/base/README.md.tpl +314 -0
  568. package/templates/app/base/dockerignore.tpl +28 -0
  569. package/templates/app/base/env.ts.tpl +130 -0
  570. package/templates/app/base/gitattributes.tpl +28 -0
  571. package/templates/app/base/github/workflows/ci.yml.tpl +91 -0
  572. package/templates/app/base/gitignore.tpl +46 -0
  573. package/templates/app/base/gitlab-ci.yml.tpl +42 -0
  574. package/templates/app/base/index.ts.tpl +69 -0
  575. package/templates/app/base/nodefony.config.ts.tpl +342 -0
  576. package/templates/app/base/oxlintrc.json.tpl +127 -0
  577. package/templates/app/base/package.json.tpl +75 -0
  578. package/templates/app/base/prettierignore.tpl +24 -0
  579. package/templates/app/base/prettierrc.json.tpl +12 -0
  580. package/templates/app/base/rolldown.config.ts.tpl +8 -0
  581. package/templates/app/base/tests/config.test.ts.tpl +29 -0
  582. package/templates/app/base/tests/e2e.setup.ts.tpl +181 -0
  583. package/templates/app/base/tests/e2e.test.ts.tpl +105 -0
  584. package/templates/app/base/tests/migrations.e2e.test.ts.tpl +579 -0
  585. package/templates/app/base/tsconfig.json.tpl +47 -0
  586. package/templates/app/base/vitest.config.ts.tpl +88 -0
  587. package/templates/app/base/vitest.e2e.config.ts.tpl +39 -0
  588. package/templates/app/complete/compose.yaml.tpl +328 -0
  589. package/templates/app/complete/deploy/migrate-job.yaml.tpl +100 -0
  590. package/templates/app/complete/docker/db/init-nodefony-e2e.sql.tpl +30 -0
  591. package/templates/app/complete/docker/grafana/provisioning/datasources/loki.yaml.tpl +15 -0
  592. package/templates/app/complete/env.local.tpl +11 -0
  593. package/templates/app/complete/env.tpl +53 -0
  594. package/templates/app/complete/nodefony/entity/User.ts.tpl +69 -0
  595. package/templates/app/complete/nodefony/security/provisionUsers.ts.tpl +124 -0
  596. package/templates/app/complete/nodefony/service/AppBannerService.ts.tpl +98 -0
  597. package/templates/app/complete/nodefony/service/AppInfoService.ts.tpl +85 -0
  598. package/templates/app/frontend/angular/frontend/src/accent.css.tpl +34 -0
  599. package/templates/app/frontend/angular/frontend/src/app/app.component.ts.tpl +400 -0
  600. package/templates/app/frontend/react/frontend/src/App.tsx.tpl +421 -0
  601. package/templates/app/frontend/react/frontend/src/accent.css.tpl +30 -0
  602. package/templates/app/frontend/shared/frontend/src/brand.ts.tpl +3 -0
  603. package/templates/app/frontend/shared/frontend/src/showcase.css.tpl +224 -0
  604. package/templates/app/frontend/shared/nodefony/controllers/AppController.ts.tpl +45 -0
  605. package/templates/app/frontend/svelte/frontend/src/App.svelte.tpl +371 -0
  606. package/templates/app/frontend/svelte/frontend/src/accent.css.tpl +34 -0
  607. package/templates/app/frontend/vue/frontend/src/App.vue.tpl +367 -0
  608. package/templates/app/frontend/vue/frontend/src/accent.css.tpl +34 -0
  609. package/templates/app/home/nodefony/controllers/HomeController.ts.tpl +38 -0
  610. package/templates/command/nodefony/command/__NAME__.ts.tpl +132 -0
  611. package/templates/controller/duplex/nodefony/controllers/__NAME__.ts.tpl +188 -0
  612. package/templates/controller/example/nodefony/controllers/__NAME__.ts.tpl +348 -0
  613. package/templates/controller/hello/nodefony/controllers/__NAME__.ts.tpl +143 -0
  614. package/templates/controller/realtime/nodefony/controllers/__NAME__.ts.tpl +153 -0
  615. package/templates/controller/realtime/tests/__KEBAB__-realtime.test.ts.tpl +79 -0
  616. package/templates/controller/rest/nodefony/controllers/__NAME__.ts.tpl +159 -0
  617. package/templates/entity/base/nodefony/entity/__PASCAL__.schema.ts.tpl +31 -0
  618. package/templates/entity/base/nodefony/entity/__PASCAL__.ts.tpl +68 -0
  619. package/templates/entity/controller/nodefony/controllers/__PASCAL__Controller.ts.tpl +335 -0
  620. package/templates/entity/service/nodefony/service/__PASCAL__Service.ts.tpl +126 -0
  621. package/templates/entity/tests/tests/__KEBAB__.e2e.test.ts.tpl +358 -0
  622. package/templates/entity/tests/tests/__KEBAB__.test.ts.tpl +87 -0
  623. package/templates/front/angular/frontend/src/app/app.component.ts.tpl +30 -0
  624. package/templates/front/base/nodefony/controllers/__NAME__.ts.tpl +60 -0
  625. package/templates/front/react/frontend/src/App.tsx.tpl +26 -0
  626. package/templates/front/svelte/frontend/src/App.svelte.tpl +19 -0
  627. package/templates/front/vue/frontend/src/App.vue.tpl +23 -0
  628. package/templates/module/ai/AGENTS.md.tpl +71 -0
  629. package/templates/module/base/README.md.tpl +62 -0
  630. package/templates/module/base/docs/index.md.tpl +55 -0
  631. package/templates/module/base/index.ts.tpl +50 -0
  632. package/templates/module/base/nodefony/config/config.ts.tpl +60 -0
  633. package/templates/module/base/nodefony/config/defineModuleConfig.ts.tpl +55 -0
  634. package/templates/module/base/nodefony/src/errors/__PASCAL__Error.ts.tpl +20 -0
  635. package/templates/module/base/package.json.tpl +53 -0
  636. package/templates/module/base/rolldown.config.ts.tpl +14 -0
  637. package/templates/module/base/tests/__KEBAB__.test.ts.tpl +39 -0
  638. package/templates/module/base/tsconfig.json.tpl +42 -0
  639. package/templates/module/base/vitest.config.ts.tpl +27 -0
  640. package/templates/module/packages/CLAUDE.md.tpl +51 -0
  641. package/templates/module/packages/MEMORY.md.tpl +39 -0
  642. package/templates/module/packages/tsconfig.declarations.json.tpl +19 -0
  643. package/templates/module/packages/tsconfig.tests.json.tpl +11 -0
  644. package/templates/module/service/nodefony/interfaces/I__PASCAL__Service.ts.tpl +14 -0
  645. package/templates/module/service/nodefony/interfaces/index.ts.tpl +1 -0
  646. package/templates/module/service/nodefony/service/__PASCAL__Service.ts.tpl +116 -0
  647. package/templates/service/nodefony/interfaces/I__PASCAL__Service.ts.tpl +19 -0
  648. package/templates/service/nodefony/service/__PASCAL__Service.ts.tpl +136 -0
  649. package/templates/service/tests/__PASCAL__Service.test.ts.tpl +53 -0
  650. package/templates/shared/front-entry/angular/frontend/src/main.ts.tpl +17 -0
  651. package/templates/shared/front-entry/react/frontend/src/main.tsx.tpl +11 -0
  652. package/templates/shared/front-entry/svelte/frontend/src/main.ts.tpl +13 -0
  653. package/templates/shared/front-entry/vue/frontend/src/main.ts.tpl +12 -0
  654. package/templates/shared/front-registrar/nodefony/frontend/register__PASCAL__Entry.ts.tpl +40 -0
  655. package/templates/shared/front-shell/frontend/index.html.tpl +39 -0
  656. package/templates/shared/ng-app-tsconfig/frontend/tsconfig.app.json.tpl +18 -0
  657. package/templates/shared/svelte-shim/frontend/src/env.d.ts.tpl +12 -0
  658. package/templates/shared/vue-shim/frontend/src/env.d.ts.tpl +15 -0
  659. package/.yarnclean +0 -45
  660. package/CHANGELOG.md +0 -406
  661. package/autoloader.es6 +0 -253
  662. package/builder.es6 +0 -366
  663. package/cli/builder/bundles/bundle.js +0 -328
  664. package/cli/builder/bundles/controller.js +0 -73
  665. package/cli/builder/bundles/users-bundle/.yarnclean +0 -45
  666. package/cli/builder/bundles/users-bundle/Command/fixtureTask.js +0 -47
  667. package/cli/builder/bundles/users-bundle/Command/usersCommand.js +0 -105
  668. package/cli/builder/bundles/users-bundle/Entity/mongoose/userEntity.js +0 -168
  669. package/cli/builder/bundles/users-bundle/Entity/sequelize/userEntity.js +0 -231
  670. package/cli/builder/bundles/users-bundle/Fixtures/users.js +0 -117
  671. package/cli/builder/bundles/users-bundle/Fixtures/usersFixtures.js +0 -114
  672. package/cli/builder/bundles/users-bundle/Resources/config/config.js +0 -90
  673. package/cli/builder/bundles/users-bundle/Resources/config/routing.js +0 -17
  674. package/cli/builder/bundles/users-bundle/Resources/config/security.js +0 -96
  675. package/cli/builder/bundles/users-bundle/Resources/config/services.js +0 -7
  676. package/cli/builder/bundles/users-bundle/Resources/config/webpack/webpack.dev.config.js +0 -13
  677. package/cli/builder/bundles/users-bundle/Resources/config/webpack/webpack.prod.config.js +0 -31
  678. package/cli/builder/bundles/users-bundle/Resources/config/webpack.config.js +0 -146
  679. package/cli/builder/bundles/users-bundle/Resources/js/users.js +0 -153
  680. package/cli/builder/bundles/users-bundle/Resources/public/favicon.ico +0 -0
  681. package/cli/builder/bundles/users-bundle/Resources/public/images/users-logo.png +0 -0
  682. package/cli/builder/bundles/users-bundle/Resources/scss/awesome/font-awesome.config.js +0 -11
  683. package/cli/builder/bundles/users-bundle/Resources/scss/custom.scss +0 -23
  684. package/cli/builder/bundles/users-bundle/Resources/scss/users.scss +0 -59
  685. package/cli/builder/bundles/users-bundle/Resources/swagger/openapi/login.js +0 -235
  686. package/cli/builder/bundles/users-bundle/Resources/swagger/openapi/users.js +0 -232
  687. package/cli/builder/bundles/users-bundle/Resources/translations/login.en_en.yml +0 -14
  688. package/cli/builder/bundles/users-bundle/Resources/translations/login.fr_fr.yml +0 -14
  689. package/cli/builder/bundles/users-bundle/Resources/translations/users.en_en.yml +0 -35
  690. package/cli/builder/bundles/users-bundle/Resources/translations/users.fr_fr.yml +0 -36
  691. package/cli/builder/bundles/users-bundle/Resources/views/base.html.twig +0 -32
  692. package/cli/builder/bundles/users-bundle/Resources/views/footer.html.twig +0 -7
  693. package/cli/builder/bundles/users-bundle/Resources/views/header.html.twig +0 -90
  694. package/cli/builder/bundles/users-bundle/Resources/views/login/login.html.twig +0 -43
  695. package/cli/builder/bundles/users-bundle/Resources/views/users/createUser.html.twig +0 -296
  696. package/cli/builder/bundles/users-bundle/Resources/views/users/readUsers.html.twig +0 -94
  697. package/cli/builder/bundles/users-bundle/controller/api/graphql/graphqlController.js +0 -56
  698. package/cli/builder/bundles/users-bundle/controller/api/graphql/userResolver.js +0 -121
  699. package/cli/builder/bundles/users-bundle/controller/api/graphql/usertype.js +0 -58
  700. package/cli/builder/bundles/users-bundle/controller/api/openapi/loginApiController.js +0 -210
  701. package/cli/builder/bundles/users-bundle/controller/api/openapi/restUserController.js +0 -244
  702. package/cli/builder/bundles/users-bundle/controller/loginController.js +0 -91
  703. package/cli/builder/bundles/users-bundle/controller/usersController.js +0 -332
  704. package/cli/builder/bundles/users-bundle/package.json +0 -58
  705. package/cli/builder/bundles/users-bundle/readme.md +0 -360
  706. package/cli/builder/bundles/users-bundle/services/usersService.js +0 -411
  707. package/cli/builder/bundles/users-bundle/src/providers/mongoose/userProvider.js +0 -47
  708. package/cli/builder/bundles/users-bundle/src/providers/sequelize/userProvider.js +0 -48
  709. package/cli/builder/bundles/users-bundle/tests/loginTest.js +0 -182
  710. package/cli/builder/bundles/users-bundle/usersBundle.js +0 -26
  711. package/cli/builder/microService/microService.js +0 -261
  712. package/cli/builder/microService/skeletons/.editorconfig +0 -18
  713. package/cli/builder/microService/skeletons/.env-cmdrc.js +0 -32
  714. package/cli/builder/microService/skeletons/.jshintrc +0 -37
  715. package/cli/builder/microService/skeletons/README.md +0 -117
  716. package/cli/builder/microService/skeletons/bin/bash/hello.sh +0 -5
  717. package/cli/builder/microService/skeletons/bin/cli +0 -13
  718. package/cli/builder/microService/skeletons/bin/python/hello.py +0 -20
  719. package/cli/builder/microService/skeletons/config/config.js +0 -29
  720. package/cli/builder/microService/skeletons/config/pm2.config.js +0 -72
  721. package/cli/builder/microService/skeletons/config/webpack/webpack.config.dev.js +0 -8
  722. package/cli/builder/microService/skeletons/config/webpack/webpack.config.prod.js +0 -25
  723. package/cli/builder/microService/skeletons/config/webpack.config.js +0 -114
  724. package/cli/builder/microService/skeletons/package.json +0 -76
  725. package/cli/builder/microService/skeletons/src/browser/index.css +0 -3
  726. package/cli/builder/microService/skeletons/src/browser/index.js +0 -16
  727. package/cli/builder/microService/skeletons/src/browser/socketio.js +0 -46
  728. package/cli/builder/microService/skeletons/src/cli/cli.js +0 -224
  729. package/cli/builder/microService/skeletons/src/cli/menu.js +0 -28
  730. package/cli/builder/microService/skeletons/src/n-api/README.md +0 -1
  731. package/cli/builder/microService/skeletons/src/n-api/binding.gyp +0 -14
  732. package/cli/builder/microService/skeletons/src/n-api/hello.cc +0 -14
  733. package/cli/builder/microService/skeletons/src/n-api/hello.js +0 -23
  734. package/cli/builder/microService/skeletons/src/n-api/package.json +0 -15
  735. package/cli/builder/microService/skeletons/src/node/examples/index.js +0 -120
  736. package/cli/builder/microService/skeletons/src/node/index.js +0 -102
  737. package/cli/builder/microService/skeletons/src/node/services/markdown/markdown.js +0 -27
  738. package/cli/builder/microService/skeletons/src/node/services/servers/http.js +0 -45
  739. package/cli/builder/microService/skeletons/src/node/services/servers/https.js +0 -44
  740. package/cli/builder/microService/skeletons/src/node/services/socketio/socketio.js +0 -46
  741. package/cli/builder/microService/skeletons/src/node/services/syscall/syscall.js +0 -111
  742. package/cli/builder/microService/skeletons/src/node/services/worker/thread.js +0 -59
  743. package/cli/builder/microService/skeletons/src/node/services/worker/worker.js +0 -60
  744. package/cli/builder/microService/skeletons/src/templates/base.html +0 -12
  745. package/cli/builder/microService/skeletons/src/templates/socket.html +0 -23
  746. package/cli/builder/microService/skeletons/tests/unit/serviceTest.js +0 -30
  747. package/cli/builder/project/project.js +0 -474
  748. package/cli/builder/project/skeletons/README.md +0 -778
  749. package/cli/builder/project/skeletons/bin/dev-deploy.sh +0 -5
  750. package/cli/builder/project/skeletons/bin/generateCertificates.sh.skeleton +0 -180
  751. package/cli/builder/project/skeletons/bin/prod-deploy.sh +0 -3
  752. package/cli/builder/project/skeletons/config/config.js.skeleton +0 -178
  753. package/cli/builder/project/skeletons/config/openssl/ca/openssl.cnf.skeleton +0 -150
  754. package/cli/builder/project/skeletons/config/openssl/ca_intermediate/openssl.cnf.skeleton +0 -152
  755. package/cli/builder/project/skeletons/config/pm2.config.js.skeleton +0 -62
  756. package/cli/builder/project/skeletons/documentation.html.twig +0 -24
  757. package/cli/builder/project/skeletons/editorconfig.skeleton +0 -18
  758. package/cli/builder/project/skeletons/eslintignore.skeleton +0 -15
  759. package/cli/builder/project/skeletons/eslintrc.js.skeleton +0 -97
  760. package/cli/builder/project/skeletons/gitignore.skeleton +0 -32
  761. package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.37.entity-user.js +0 -137
  762. package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.38.entity-session.js +0 -97
  763. package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.39.entity-requests.js +0 -115
  764. package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.40.entity-jwts.js +0 -97
  765. package/cli/builder/project/skeletons/migrations/migrations.skeleton.js +0 -101
  766. package/cli/builder/project/skeletons/package.json.twig +0 -71
  767. package/cli/builder/react/reactBuilder.js +0 -224
  768. package/cli/builder/react/skeletons/app/Resources/databases/nodefony.db +0 -0
  769. package/cli/builder/react/skeletons/app/Resources/translations/messages.en_en.yml +0 -5
  770. package/cli/builder/react/skeletons/app/Resources/translations/messages.fr_fr.yml +0 -5
  771. package/cli/builder/react/skeletons/app/Resources/views/base.html.twig +0 -33
  772. package/cli/builder/react/skeletons/app/config/config.js +0 -392
  773. package/cli/builder/react/skeletons/app/config/routing.js +0 -10
  774. package/cli/builder/react/skeletons/app/config/security.js +0 -74
  775. package/cli/builder/react/skeletons/app/controller/appController.js +0 -22
  776. package/cli/builder/sandbox/sandBoxBuilder.js +0 -610
  777. package/cli/builder/sandbox/skeletons/Resources/css/entry.css +0 -48
  778. package/cli/builder/sandbox/skeletons/Resources/js/entry.js +0 -60
  779. package/cli/builder/sandbox/skeletons/Resources/public/manifest.json +0 -32
  780. package/cli/builder/sandbox/skeletons/Resources/translations/messages.en_en.yml +0 -5
  781. package/cli/builder/sandbox/skeletons/Resources/translations/messages.fr_fr.yml +0 -5
  782. package/cli/builder/sandbox/skeletons/Resources/views/base.html.twig +0 -46
  783. package/cli/builder/sandbox/skeletons/Resources/views/index.html.twig +0 -34
  784. package/cli/builder/sandbox/skeletons/bootstrap/custom.scss +0 -27
  785. package/cli/builder/sandbox/skeletons/bootstrap/entry.scss +0 -60
  786. package/cli/builder/sandbox/skeletons/workbox/templates/index.html.twig +0 -32
  787. package/cli/builder/sandbox/skeletons/workbox/workers/service-worker.js +0 -196
  788. package/cli/builder/skeletons/Resources/public/favicon.ico +0 -0
  789. package/cli/builder/skeletons/Resources/public/images/app-logo.png +0 -0
  790. package/cli/builder/skeletons/Resources/views/framework-bundle/views/401.html.twig +0 -1
  791. package/cli/builder/skeletons/Resources/views/framework-bundle/views/401.json.twig +0 -24
  792. package/cli/builder/skeletons/Resources/views/framework-bundle/views/403.html.twig +0 -1
  793. package/cli/builder/skeletons/Resources/views/framework-bundle/views/403.json.twig +0 -20
  794. package/cli/builder/skeletons/Resources/views/framework-bundle/views/404.html.twig +0 -1
  795. package/cli/builder/skeletons/Resources/views/framework-bundle/views/404.json.twig +0 -20
  796. package/cli/builder/skeletons/Resources/views/framework-bundle/views/500.html.twig +0 -1
  797. package/cli/builder/skeletons/Resources/views/framework-bundle/views/base.html.twig +0 -30
  798. package/cli/builder/skeletons/Resources/views/framework-bundle/views/exception.html.twig +0 -1
  799. package/cli/builder/skeletons/Resources/views/framework-bundle/views/exception.json.twig +0 -24
  800. package/cli/builder/skeletons/Resources/views/framework-bundle/views/footer.html.twig +0 -33
  801. package/cli/builder/skeletons/Resources/views/framework-bundle/views/header.html.twig +0 -6
  802. package/cli/builder/skeletons/Resources/views/framework-bundle/views/index.html.twig +0 -6
  803. package/cli/builder/skeletons/Resources/views/framework-bundle/views/index.json.twig +0 -1
  804. package/cli/builder/skeletons/Resources/views/framework-bundle/views/layout.html.twig +0 -125
  805. package/cli/builder/skeletons/Resources/views/framework-bundle/views/layout.json.twig +0 -5
  806. package/cli/builder/skeletons/Resources/views/framework-bundle/views/timeout.html.twig +0 -1
  807. package/cli/builder/skeletons/Resources/views/framework-bundle/views/timeout.json.twig +0 -24
  808. package/cli/builder/skeletons/app/appKernel.js +0 -133
  809. package/cli/builder/skeletons/binding/binding.cc +0 -26
  810. package/cli/builder/skeletons/binding/binding.skeleton +0 -8
  811. package/cli/builder/skeletons/bundle/bundleClass.js +0 -37
  812. package/cli/builder/skeletons/command/commandClass.js +0 -11
  813. package/cli/builder/skeletons/command/taskClass.js +0 -20
  814. package/cli/builder/skeletons/config/config.js +0 -138
  815. package/cli/builder/skeletons/config/nodefony/elastic-bundle.js +0 -37
  816. package/cli/builder/skeletons/config/nodefony/framework-bundle.js +0 -22
  817. package/cli/builder/skeletons/config/nodefony/http-bundle.js +0 -104
  818. package/cli/builder/skeletons/config/nodefony/mail-bundle.js +0 -44
  819. package/cli/builder/skeletons/config/nodefony/mongoose-bundle.js +0 -51
  820. package/cli/builder/skeletons/config/nodefony/monitoring-bundle.js +0 -34
  821. package/cli/builder/skeletons/config/nodefony/realtime-bundle.js +0 -15
  822. package/cli/builder/skeletons/config/nodefony/redis-bundle.js +0 -44
  823. package/cli/builder/skeletons/config/nodefony/security-bundle.js +0 -25
  824. package/cli/builder/skeletons/config/nodefony/sequelize-bundle.js +0 -156
  825. package/cli/builder/skeletons/config/routing.js +0 -55
  826. package/cli/builder/skeletons/config/security.js +0 -102
  827. package/cli/builder/skeletons/config/services.js +0 -1
  828. package/cli/builder/skeletons/config/webpack/webpack.dev.config.js +0 -13
  829. package/cli/builder/skeletons/config/webpack/webpack.prod.config.js +0 -20
  830. package/cli/builder/skeletons/config/webpack.config.js +0 -148
  831. package/cli/builder/skeletons/controller/controllerClass.js +0 -75
  832. package/cli/builder/skeletons/package.json.twig +0 -57
  833. package/cli/builder/skeletons/unittest/testFile.js +0 -46
  834. package/cli/builder/vue/skeletons/Resources/public/images/app-logo.png +0 -0
  835. package/cli/builder/vue/skeletons/Resources/translations/messages.en_en.yml +0 -5
  836. package/cli/builder/vue/skeletons/Resources/translations/messages.fr_fr.yml +0 -5
  837. package/cli/builder/vue/skeletons/vue.config.js +0 -129
  838. package/cli/builder/vue/vueBuilder.js +0 -410
  839. package/cli/generate/generate.es6 +0 -103
  840. package/cli/install/install.js +0 -190
  841. package/cli/sequelize/sequelize.js +0 -94
  842. package/cli/start.js +0 -702
  843. package/cli/tools/pm2.es6 +0 -112
  844. package/cli/tools/tools.es6 +0 -97
  845. package/cli.es6 +0 -925
  846. package/container.es6 +0 -272
  847. package/error.es6 +0 -293
  848. package/fileClass.es6 +0 -242
  849. package/finder/file.es6 +0 -33
  850. package/finder/fileResult.es6 +0 -138
  851. package/finder/finder2.es6 +0 -275
  852. package/finder.es6 +0 -427
  853. package/kernel/annotations/annotations.es6 +0 -286
  854. package/kernel/api/api.es6 +0 -61
  855. package/kernel/api/graphqlApi.es6 +0 -107
  856. package/kernel/api/jsonApi.es6 +0 -177
  857. package/kernel/api/openApi.es6 +0 -139
  858. package/kernel/api/schemas/openApiSchema.js +0 -394
  859. package/kernel/babylon.es6 +0 -162
  860. package/kernel/bundle.es6 +0 -1200
  861. package/kernel/cliKernel.es6 +0 -869
  862. package/kernel/command.es6 +0 -78
  863. package/kernel/commands/nodefonyCommand.es6 +0 -247
  864. package/kernel/commands/tasks/bundlesTask.es6 +0 -59
  865. package/kernel/controllers/controller.es6 +0 -791
  866. package/kernel/fixture.es6 +0 -19
  867. package/kernel/injections/injections.es6 +0 -424
  868. package/kernel/kernel.es6 +0 -1960
  869. package/kernel/kernelWatcher.es6 +0 -387
  870. package/kernel/orm/entity.es6 +0 -59
  871. package/kernel/orm/orm.es6 +0 -139
  872. package/kernel/reader.es6 +0 -290
  873. package/kernel/security/encoder.es6 +0 -17
  874. package/kernel/security/factories/factory.es6 +0 -111
  875. package/kernel/security/factories/passeportFactory.es6 +0 -61
  876. package/kernel/security/provider.es6 +0 -58
  877. package/kernel/security/providers/chainProvider.es6 +0 -99
  878. package/kernel/security/providers/memoryProvider.es6 +0 -55
  879. package/kernel/security/providers/providerManager.es6 +0 -67
  880. package/kernel/security/providers/userEntityProvider.es6 +0 -50
  881. package/kernel/security/role.es6 +0 -12
  882. package/kernel/security/secureArea.es6 +0 -431
  883. package/kernel/security/tokens/token.es6 +0 -171
  884. package/kernel/security/user.es6 +0 -106
  885. package/kernel/serviceRealTime.es6 +0 -21
  886. package/kernel/services/connectionsService.es6 +0 -93
  887. package/kernel/services/cron/cronService.es6 +0 -123
  888. package/kernel/task.es6 +0 -80
  889. package/kernel/templates.es6 +0 -22
  890. package/kernel/templating/twig.es6 +0 -218
  891. package/kernel/tests/cliTest.js +0 -59
  892. package/kernel/tests/containerTest.js +0 -232
  893. package/kernel/tests/kernelTest.js +0 -39
  894. package/nodefony.es6 +0 -1084
  895. package/notificationsCenter.es6 +0 -118
  896. package/protocol.es6 +0 -86
  897. package/protocols/bayeux.es6 +0 -174
  898. package/protocols/jsonRpc/jsonrpc.es6 +0 -56
  899. package/result.es6 +0 -99
  900. package/service.es6 +0 -288
  901. package/syslog/pdu.es6 +0 -141
  902. package/syslog/syslog.es6 +0 -754
  903. package/watcher.es6 +0 -113
@@ -0,0 +1,95 @@
1
+ import "../../cli/sysexits.js";
2
+ import { defaultDevPorts, discoverDevProcesses, findRuntimeConflict, probePorts, splitByProject } from "../../service/dev/devProcess.js";
3
+ import { startClusterMaster } from "../../service/cluster/clusterMaster.js";
4
+ import cluster from "node:cluster";
5
+ //#region src/kernel/commands/runtimeLauncher.ts
6
+ /** Libellé FR d'un mode runtime, pour les messages d'erreur. */
7
+ function modeLabelFr(mode) {
8
+ if (mode === "dev") return "développement";
9
+ if (mode === "cluster") return "cluster";
10
+ return "production";
11
+ }
12
+ /**
13
+ * Garde anti-collision (symétrique du superviseur dev) : un runtime prod/cluster ne
14
+ * démarre PAS par-dessus un AUTRE runtime **de CE projet** (dev/prod/cluster d'un mode
15
+ * différent). Fail-loud + exit — jamais de kill auto cross-mode (le runtime préexistant
16
+ * est intentionnel). Primaire seulement (les workers forkés héritent d'un primaire déjà
17
+ * validé). `ps` indisponible → liste vide → on retombe sur l'`EADDRINUSE` natif
18
+ * (best-effort, ex. conteneur minimaliste sans `ps`).
19
+ *
20
+ * **Scopé au projet** (`splitByProject`, égalité stricte du cwd — la MÊME règle que
21
+ * `stop`, `status` et le superviseur : une seconde implémentation dériverait). Le motif
22
+ * du garde est la collision de PORTS ; or deux projets Nodefony cohabitent désormais
23
+ * (`servers.portPolicy: "auto"` en dev, ports déclarés en prod). Refuser un `production`
24
+ * parce que le dev d'une AUTRE app tourne, c'était crier au loup sur le cas nominal —
25
+ * et un garde qui se déclenche sur le cas nominal n'est plus lu.
26
+ *
27
+ * **La collision se CONSTATE, elle ne se déduit pas d'une présence de process.** Un
28
+ * process enregistré ne détient pas forcément un port : un superviseur de développement
29
+ * dont l'enfant a été tué (kill -9 d'un banc, OOM, plantage) survit orphelin, n'écoute
30
+ * RIEN, et reste visible de `ps`. Refuser la production sur sa seule existence, c'est
31
+ * l'interdire à cause d'un fantôme — sur un pod, un démarrage qui échoue sans qu'aucun
32
+ * port ne soit pris. Le chemin dev le constatait déjà (`detachedStart` → `probePorts`) ;
33
+ * cette dissymétrie était le défaut. On sonde donc les ports DÉCLARÉS
34
+ * (`defaultDevPorts` — même source que `status` et `stop`) : aucun tenu ⇒ on AVERTIT et
35
+ * on laisse démarrer, l'`EADDRINUSE` natif restant le filet ultime.
36
+ */
37
+ async function assertNoConflictingRuntime(intended, log, deps = {}) {
38
+ const cwd = deps.cwd ?? process.cwd();
39
+ const { mine } = splitByProject((deps.discover ?? discoverDevProcesses)(), cwd, deps.getCwd);
40
+ const conflict = findRuntimeConflict(mine, intended);
41
+ if (conflict.length === 0) return;
42
+ const pids = conflict.map((p) => p.pid).join(", ");
43
+ const held = (await (deps.probe ?? probePorts)(defaultDevPorts(cwd))).filter((p) => p.listening).map((p) => p.port);
44
+ if (held.length === 0) {
45
+ log(`un runtime Nodefony ${modeLabelFr(conflict[0].mode)} de CE projet est enregistré (pid ${pids}) mais ne détient AUCUN port — résidu probable (son serveur a été tué). Démarrage ${modeLabelFr(intended)} MAINTENU. Pour nettoyer : nodefony stop`, "WARNING");
46
+ return;
47
+ }
48
+ log(`⛔ un runtime Nodefony ${modeLabelFr(conflict[0].mode)} de CE projet tourne déjà (pid ${pids}) et tient le(s) port(s) ${held.join(", ")} — démarrage ${modeLabelFr(intended)} refusé. Arrête-le d'abord : nodefony stop`, "CRITIC");
49
+ (deps.exit ?? ((c) => process.exit(c)))(69);
50
+ }
51
+ /**
52
+ * Applique la topologie résolue — flow **PARTAGÉ** par les commandes de lancement
53
+ * (`cluster`, `production`). Appelé depuis leur `onKernelStart` (phase `onStart`),
54
+ * donc AVANT que l'unique Kernel ne démarre ses serveurs (`onReady → initServers`).
55
+ *
56
+ * **Un seul Kernel par process** (fin du double-boot historique) :
57
+ * - `workers >= 2` && process primaire → **MASTER** : {@link startClusterMaster}
58
+ * (fork N workers + relay IPC + sonde pod). Ne boote AUCUN serveur HTTP ; le Kernel
59
+ * courant reste en `CONSOLE` et on **park** le flow (le master est un superviseur
60
+ * pur, gardé vivant par les listeners cluster + les timers de la sonde).
61
+ * - sinon (mono-process `workers:1` OU process **worker** forké) → on bascule le Kernel
62
+ * courant en `SERVER` et on **rend la main** : son pipeline de boot continue de
63
+ * lui-même (`onReady → initServers → onPostReady`), les serveurs HTTP/WS montent et
64
+ * le process reste vivant via leurs handles. Plus aucun `new Kernel` ici.
65
+ *
66
+ * Vit dans `kernel/commands/` (et non `service/cluster/`) pour garder le service
67
+ * cluster **kernel-free**.
68
+ */
69
+ async function launchTopology(opts) {
70
+ const { cli, topo, log } = opts;
71
+ if (cluster.isPrimary) await assertNoConflictingRuntime(topo.workers >= 2 ? "cluster" : "prod", log);
72
+ if (cluster.isPrimary && topo.workers >= 2) {
73
+ log(`Cluster topology: ${topo.workers} workers (source: ${topo.source})`, "INFO");
74
+ cli.setRunProfile({
75
+ servers: false,
76
+ lifetime: "longrunning",
77
+ interactive: false
78
+ });
79
+ cli.releaseSignalListeners();
80
+ startClusterMaster({
81
+ workers: topo.workers,
82
+ log
83
+ });
84
+ await cli.kernel.park();
85
+ return;
86
+ }
87
+ if (cluster.isPrimary) log(`Topology: 1 process (source: ${topo.source}) — mono-process, no cluster machinery`, "INFO");
88
+ cli.setRunProfile({
89
+ servers: true,
90
+ lifetime: "longrunning",
91
+ interactive: false
92
+ });
93
+ }
94
+ //#endregion
95
+ export { assertNoConflictingRuntime, launchTopology };
@@ -0,0 +1,110 @@
1
+ import Injector from "../injector/injector.js";
2
+ import { orderServicesByDependencies } from "../injector/serviceOrder.js";
3
+ import "reflect-metadata";
4
+ //#region src/kernel/decorators/kernelDecorator.ts
5
+ /**
6
+ * Déclare les services qu'un module enregistre dans son conteneur au démarrage.
7
+ *
8
+ * Décorateur de **classe de module**. Les services sont instanciés au hook
9
+ * `onPreBoot`, et **l'ordre écrit ici n'a aucune importance** : il est recalculé
10
+ * depuis les dépendances déclarées (`@inject`), de sorte qu'un service réclamé
11
+ * soit présent avant son consommateur. Le hook est tagué au nom du module : un
12
+ * service qui échoue suit la politique de criticité de SON module — fatal en
13
+ * production, dégradation annoncée ailleurs — au lieu de faire tomber le boot
14
+ * anonymement.
15
+ *
16
+ * @param nameOrPath - Une classe de service, un chemin de fichier, ou un tableau
17
+ * mêlant les deux.
18
+ * @returns Le décorateur de classe, qui renvoie le module enrichi du hook.
19
+ * @example
20
+ * ```typescript
21
+ * @services([Router, Eta, AdminBroker])
22
+ * class FrameworkModule extends Module {}
23
+ * ```
24
+ */
25
+ function services(nameOrPath) {
26
+ return function(constructor) {
27
+ class NewConstructorService extends constructor {
28
+ constructor(...args) {
29
+ super(...args);
30
+ this.hookKernel("onPreBoot", async () => {
31
+ return await this.initDecoratorServices();
32
+ });
33
+ }
34
+ async initDecoratorServices() {
35
+ if (Array.isArray(nameOrPath)) {
36
+ const ordered = orderServicesByDependencies(nameOrPath);
37
+ for (const path of ordered) if (typeof path !== "string") await this.addService(path).catch((e) => {
38
+ this.handleServiceBootError(e, path);
39
+ });
40
+ else await this.loadService(path).catch((e) => {
41
+ this.handleServiceBootError(e, path);
42
+ });
43
+ } else {
44
+ if (typeof nameOrPath === "string") return await this.loadService(nameOrPath).catch((e) => {
45
+ this.handleServiceBootError(e, nameOrPath);
46
+ });
47
+ return await this.addService(nameOrPath).catch((e) => {
48
+ this.handleServiceBootError(e, nameOrPath);
49
+ });
50
+ }
51
+ }
52
+ }
53
+ return NewConstructorService;
54
+ };
55
+ }
56
+ /**
57
+ * Rend une classe de service résoluble par le conteneur d'injection.
58
+ *
59
+ * Décorateur de **classe**. Il inscrit la classe à l'annuaire d'injection sous
60
+ * un nom — celui de la classe par défaut — et fige sa portée. Sans lui, la
61
+ * classe reste une classe ordinaire : elle ne peut être ni découverte, ni
62
+ * injectée, et un `@inject("…")` qui la réclame échouera à la résolution.
63
+ *
64
+ * @param nameOrOptions - Le nom d'enregistrement, ou `{ name?, scope? }`. La
65
+ * portée vaut `"singleton"` par défaut — une seule instance pour le
66
+ * processus ; `"transient"` en fabrique une par résolution.
67
+ * @returns Le décorateur de classe, qui renvoie la classe inchangée.
68
+ * @example
69
+ * ```typescript
70
+ * @injectable()
71
+ * class Router extends Service {}
72
+ *
73
+ * @injectable({ name: "pdfRenderer", scope: "transient" })
74
+ * class PdfRenderer extends Service {}
75
+ * ```
76
+ */
77
+ function injectable(nameOrOptions) {
78
+ return function(constructor) {
79
+ let regName;
80
+ let scope = "singleton";
81
+ if (typeof nameOrOptions === "string") regName = nameOrOptions || constructor.name;
82
+ else if (nameOrOptions && typeof nameOrOptions === "object") {
83
+ regName = nameOrOptions.name || constructor.name;
84
+ scope = nameOrOptions.scope ?? "singleton";
85
+ } else regName = constructor.name;
86
+ Injector.register(regName, constructor);
87
+ Reflect.defineMetadata("di:scope", scope, constructor);
88
+ return constructor;
89
+ };
90
+ }
91
+ /**
92
+ * Injecter une Service avec son nom dans le constructeur.
93
+ *
94
+ * @param serviceName - Le nom du service à injecter (doit correspondre à un @injectable)
95
+ *
96
+ * @example
97
+ * class MyService extends Service {
98
+ * constructor(@inject("Fetch") private fetch: Fetch) { super("my", ...) }
99
+ * }
100
+ */
101
+ function inject(serviceName) {
102
+ return function(target, _propertyKey, parameterIndex) {
103
+ if (!serviceName) throw new Error(`Inject decorator requires a valid service name`);
104
+ const existing = Reflect.getMetadata("inject:services", target) || [];
105
+ existing[parameterIndex] = serviceName;
106
+ Reflect.defineMetadata("inject:services", existing, target);
107
+ };
108
+ }
109
+ //#endregion
110
+ export { inject, injectable, services };
@@ -0,0 +1,137 @@
1
+ import { Nodefony } from "../../Nodefony.js";
2
+ import Service from "../../Service.js";
3
+ import Fetch from "../../service/fetchService.js";
4
+ import "reflect-metadata";
5
+ //#region src/kernel/injector/injector.ts
6
+ const injectables = Object.create(null);
7
+ const containerKeys = /* @__PURE__ */ new Map();
8
+ var Injector = class Injector extends Service {
9
+ static injectables = injectables;
10
+ constructor(kernel) {
11
+ super("injector", kernel.container, kernel.notificationsCenter);
12
+ Injector.register("Fetch", Fetch);
13
+ kernel.set("Fetch", new Fetch(kernel));
14
+ }
15
+ static register(serviceName, service) {
16
+ if (!serviceName || !service) throw new Error(`Injector register bad argument`);
17
+ return injectables[serviceName] = service;
18
+ }
19
+ static isRegistered(serviceName) {
20
+ return serviceName in injectables;
21
+ }
22
+ /**
23
+ * Mémorise la clé sous laquelle une classe de service vit RÉELLEMENT dans le
24
+ * container — apprise au moment où l'instance y est posée.
25
+ *
26
+ * @remarks Sans elle, `@inject("Router")` interrogeait le container avec
27
+ * `"Router"` alors que l'instance y est rangée sous `"router"` (le nom de son
28
+ * `super()`) : le container répondait `null` et le service était RECONSTRUIT,
29
+ * son cache vide, silencieusement. Un seul des 7 `@injectable` échappait au
30
+ * piège — `HttpKernel`, par coïncidence de casse.
31
+ *
32
+ * @param service - le constructeur, tel qu'enregistré par `@injectable`.
33
+ * @param containerKey - `instance.name`, la clé réelle du container.
34
+ */
35
+ static rememberContainerKey(service, containerKey) {
36
+ if (!service || !containerKey) return;
37
+ containerKeys.set(service, containerKey);
38
+ }
39
+ /**
40
+ * Clé container connue d'une classe de service, ou `null` si elle n'a jamais
41
+ * été posée au container (rien à apprendre encore).
42
+ */
43
+ static containerKeyOf(service) {
44
+ return containerKeys.get(service) ?? null;
45
+ }
46
+ static getScope(serviceName) {
47
+ const Ctor = injectables[serviceName];
48
+ if (!Ctor) return "singleton";
49
+ return Reflect.getMetadata("di:scope", Ctor) ?? "singleton";
50
+ }
51
+ static get(serviceName) {
52
+ const service = injectables[serviceName];
53
+ if (!service) throw new Error(`Service ${serviceName} not found or not injectable`);
54
+ return service;
55
+ }
56
+ static inject(service, ...args) {
57
+ return Injector.instantiate(service, ...args);
58
+ }
59
+ instantiate(constructor, ...args) {
60
+ return Injector.instantiate(constructor, ...args);
61
+ }
62
+ static instantiate(constructor, ...argsClass) {
63
+ return Injector._instantiateWithStack(constructor, [], argsClass);
64
+ }
65
+ static _resolveWithStack(serviceName, stack) {
66
+ if (Injector.isRegistered(serviceName)) {
67
+ const Ctor = Injector.get(serviceName);
68
+ if ((Reflect.getMetadata("di:scope", Ctor) ?? "singleton") === "transient") return Injector._instantiateWithStack(Ctor, stack, []);
69
+ const kernel = Nodefony.getKernel();
70
+ const key = Injector.containerKeyOf(Ctor) ?? serviceName;
71
+ if (kernel && kernel.get(key)) return kernel.get(key);
72
+ let instance;
73
+ try {
74
+ instance = Injector._instantiateWithStack(Ctor, stack, []);
75
+ } catch (error) {
76
+ const requester = stack[stack.length - 1];
77
+ throw new Error(`Cannot resolve service "${serviceName}"` + (requester ? ` required by "${requester}"` : "") + `: it is @injectable but absent from the kernel container, so it was constructed without arguments — and its constructor threw (${error instanceof Error ? error.message : String(error)}). If "${serviceName}" is declared in @services([...]), list it BEFORE its consumers: services are instantiated in order, and a service must be in the container before anyone injects it.`, { cause: error });
78
+ }
79
+ const canonicalKey = instance.name || serviceName;
80
+ Injector.rememberContainerKey(Ctor, canonicalKey);
81
+ kernel?.set(canonicalKey, instance);
82
+ return instance;
83
+ }
84
+ const kernel = Nodefony.getKernel();
85
+ if (kernel) {
86
+ const existing = kernel.get(serviceName);
87
+ if (existing) return existing;
88
+ }
89
+ throw new Error(`Service ${serviceName} not found or not injectable`);
90
+ }
91
+ static _applyPropertyInjection(constructor, instance, stack) {
92
+ const propMetas = Reflect.getMetadata("inject:properties", constructor.prototype) || [];
93
+ for (const { key, name } of propMetas) instance[key] = Injector._resolveWithStack(name, stack);
94
+ return instance;
95
+ }
96
+ static _instantiateWithStack(constructor, stack, argsClass) {
97
+ const ctorName = constructor.name;
98
+ if (stack.includes(ctorName)) throw new Error(`Circular dependency detected: ${[...stack, ctorName].join(" → ")}`);
99
+ const nextStack = [...stack, ctorName];
100
+ const injectExplicit = Reflect.getMetadata("inject:services", constructor) || [];
101
+ const paramTypes = Reflect.getMetadata("design:paramtypes", constructor) || [];
102
+ if (!(injectExplicit.some(Boolean) || paramTypes.length > 0)) {
103
+ const instance = Reflect.construct(constructor, argsClass);
104
+ return Injector._applyPropertyInjection(constructor, instance, nextStack);
105
+ }
106
+ const totalParams = Math.max(paramTypes.length, injectExplicit.length);
107
+ const resolvedArgs = [];
108
+ let explicitIdx = 0;
109
+ for (let i = 0; i < totalParams; i++) {
110
+ const explicitName = injectExplicit[i];
111
+ if (explicitName) {
112
+ resolvedArgs.push(Injector._resolveWithStack(explicitName, nextStack));
113
+ continue;
114
+ }
115
+ const type = paramTypes[i];
116
+ if (type?.name && Injector.isRegistered(type.name)) {
117
+ resolvedArgs.push(Injector._resolveWithStack(type.name, nextStack));
118
+ continue;
119
+ }
120
+ resolvedArgs.push(argsClass[explicitIdx++]);
121
+ }
122
+ while (explicitIdx < argsClass.length) resolvedArgs.push(argsClass[explicitIdx++]);
123
+ const instance = Reflect.construct(constructor, resolvedArgs);
124
+ return Injector._applyPropertyInjection(constructor, instance, nextStack);
125
+ }
126
+ reflect(constructor, ...args) {
127
+ try {
128
+ return Reflect.construct(constructor, args);
129
+ } catch (e) {
130
+ const message = e instanceof Error ? e.message : String(e);
131
+ this.log(`ERROR SERVICE CLASS ${this.name} ${message}`, "ERROR");
132
+ throw e;
133
+ }
134
+ }
135
+ };
136
+ //#endregion
137
+ export { Injector as default };
@@ -0,0 +1,106 @@
1
+ import Injector from "./injector.js";
2
+ import "reflect-metadata";
3
+ //#region src/kernel/injector/serviceOrder.ts
4
+ /**
5
+ * Nom sous lequel un constructeur est enregistré au registre `@injectable`, ou
6
+ * `null` s'il ne l'est pas.
7
+ *
8
+ * @remarks Recherche inversée (valeur → clé) : `@injectable(nom)` n'écrit sa clé
9
+ * nulle part sur la classe — seul le registre la connaît. C'est une
10
+ * conséquence du divorce registre/container ; le jour où le token sera la
11
+ * classe, cette fonction disparaîtra.
12
+ */
13
+ const registeredNameOf = (ctor) => {
14
+ const registry = Injector.injectables;
15
+ for (const name of Object.keys(registry)) if (registry[name] === ctor) return name;
16
+ return null;
17
+ };
18
+ /**
19
+ * Noms des services dont un constructeur dépend, tels que le DI les résoudra :
20
+ * `@inject("nom")` (priorité) puis l'auto-injection par type (`design:paramtypes`,
21
+ * résolue sur le nom de classe).
22
+ */
23
+ const declaredDependencyNames = (ctor) => {
24
+ const explicit = Reflect.getMetadata("inject:services", ctor) || [];
25
+ const paramTypes = Reflect.getMetadata("design:paramtypes", ctor) || [];
26
+ const names = [];
27
+ for (const name of explicit) if (name) names.push(name);
28
+ for (const type of paramTypes) {
29
+ const name = type?.name;
30
+ if (name && Injector.isRegistered(name)) names.push(name);
31
+ }
32
+ return names;
33
+ };
34
+ /**
35
+ * Réordonne les services d'un `@services([...])` selon leurs dépendances
36
+ * **déclarées**, pour que l'ordre d'écriture cesse de compter.
37
+ *
38
+ * `@services` instancie séquentiellement et pose chaque instance au container :
39
+ * un service réclamé par un autre doit donc exister AVANT lui, sinon le DI le
40
+ * reconstruit sans argument et son constructeur casse. Faire reposer ça sur
41
+ * l'ordre d'une liste écrite à la main est un piège : déplacer `HttpKernel` de
42
+ * trois lignes dans `@nodefony/http` suffisait à rendre 499 sur chaque requête.
43
+ * Les dépendances étant déjà déclarées (`@inject` / `design:paramtypes`), l'ordre
44
+ * correct se **calcule** — c'est ce que font Symfony (container compilé) et
45
+ * NestJS (résolution du graphe).
46
+ *
47
+ * Tri topologique **stable** : à contrainte égale, l'ordre d'écriture est
48
+ * conservé — un `@services` déjà correct sort inchangé.
49
+ *
50
+ * Ne touche pas aux entrées dont les dépendances sont inconnaissables sans les
51
+ * charger (chemins `string`) ni aux constructeurs hors registre : elles gardent
52
+ * leur position relative.
53
+ *
54
+ * @param entries - la liste telle qu'écrite dans `@services([...])`.
55
+ * @returns la même liste, réordonnée ; jamais une entrée perdue ou dupliquée.
56
+ * @throws Si les dépendances déclarées forment un cycle (message nommant le cycle).
57
+ */
58
+ function orderServicesByDependencies(entries) {
59
+ if (entries.length < 2) return [...entries];
60
+ const indexByName = /* @__PURE__ */ new Map();
61
+ entries.forEach((entry, i) => {
62
+ if (typeof entry === "string") return;
63
+ const name = registeredNameOf(entry);
64
+ if (name !== null && !indexByName.has(name)) indexByName.set(name, i);
65
+ });
66
+ const dependsOn = entries.map(() => /* @__PURE__ */ new Set());
67
+ let hasEdge = false;
68
+ entries.forEach((entry, i) => {
69
+ if (typeof entry === "string") return;
70
+ for (const depName of declaredDependencyNames(entry)) {
71
+ const j = indexByName.get(depName);
72
+ if (j === void 0 || j === i) continue;
73
+ dependsOn[i].add(j);
74
+ hasEdge = true;
75
+ }
76
+ });
77
+ if (!hasEdge) return [...entries];
78
+ const remaining = new Set(entries.map((_, i) => i));
79
+ const ordered = [];
80
+ while (remaining.size > 0) {
81
+ let picked = -1;
82
+ for (const i of remaining) {
83
+ let ready = true;
84
+ for (const dep of dependsOn[i]) if (remaining.has(dep)) {
85
+ ready = false;
86
+ break;
87
+ }
88
+ if (ready) {
89
+ picked = i;
90
+ break;
91
+ }
92
+ }
93
+ if (picked === -1) {
94
+ const cycle = [...remaining].map((i) => {
95
+ const e = entries[i];
96
+ return typeof e === "string" ? e : e.name;
97
+ }).join(" → ");
98
+ throw new Error(`Circular service dependency in @services([...]): ${cycle}. Services are instantiated in dependency order; a cycle has no valid order.`);
99
+ }
100
+ ordered.push(entries[picked]);
101
+ remaining.delete(picked);
102
+ }
103
+ return ordered;
104
+ }
105
+ //#endregion
106
+ export { orderServicesByDependencies };
@@ -0,0 +1,194 @@
1
+ import { resolveAdminRole } from "../adminPlane/adminRbac.js";
2
+ import { executeAdminEndpoint, normalizeAdminResult } from "../adminPlane/executeAdmin.js";
3
+ //#region src/kernel/inspect/adminSubjects.ts
4
+ /**
5
+ * Sujets inspectables, et l'endpoint d'administration qui les sert.
6
+ *
7
+ * **Aucune donnée n'est calculée ici.** Chaque sujet pointe le producteur qui
8
+ * répond déjà en HTTP : toutes les portes rendent le même objet, parce que
9
+ * c'est le même code qui le produit. Une table de correspondance peut se
10
+ * périmer ; une réimplémentation, elle, diverge en silence — et c'est la porte
11
+ * secondaire qu'on croirait sur parole.
12
+ *
13
+ * ⚠️ Cette table est la SOURCE UNIQUE des sujets. La commande `inspect`, le
14
+ * serveur MCP et toute porte future la lisent ici — aucune n'en tient une
15
+ * copie.
16
+ */
17
+ const INSPECT_SUBJECTS = {
18
+ routes: {
19
+ namespace: "framework",
20
+ path: "routes",
21
+ summary: "toutes les routes (chemin, méthodes, controller, action)"
22
+ },
23
+ modules: {
24
+ namespace: "kernel",
25
+ path: "modules",
26
+ summary: "modules chargés, avec leur version"
27
+ },
28
+ services: {
29
+ namespace: "kernel",
30
+ path: "services",
31
+ summary: "services enregistrés, et le module qui les porte"
32
+ },
33
+ config: {
34
+ namespace: "kernel",
35
+ path: "config",
36
+ summary: "config effective de chaque module (+ schéma, + provenance)"
37
+ },
38
+ module: {
39
+ namespace: "kernel",
40
+ path: "module/{name}",
41
+ summary: "un module en détail (config, services, dépendances)",
42
+ param: "name"
43
+ },
44
+ stores: {
45
+ namespace: "kernel",
46
+ path: "stores",
47
+ summary: "où sont réellement écrites les données (sessions, cache…)"
48
+ },
49
+ entities: {
50
+ namespace: "orm",
51
+ path: "entities",
52
+ summary: "entités déclarées à l'ORM"
53
+ },
54
+ graph: {
55
+ namespace: "orm",
56
+ path: "graph",
57
+ summary: "graphe des entités et de leurs relations"
58
+ }
59
+ };
60
+ /**
61
+ * Extrait la donnée d'une réponse d'administration.
62
+ *
63
+ * Un handler rend soit la donnée, soit une enveloppe `{status, body}` (pour
64
+ * porter un 404). Même discrimination que le pont HTTP : enveloppe **si et
65
+ * seulement si** `body` est présent AVEC `status` ou `headers` — un objet
66
+ * métier qui posséderait un champ `body` n'est pas une enveloppe.
67
+ */
68
+ function unwrapAdminResult(result) {
69
+ const { status, body } = normalizeAdminResult(result);
70
+ return {
71
+ status,
72
+ data: body
73
+ };
74
+ }
75
+ /**
76
+ * Appelle un endpoint du plan d'administration, hors HTTP.
77
+ *
78
+ * ⭐ **Une source, plusieurs portes** : cette fonction ne fait que RÉSOUDRE
79
+ * l'endpoint (par producteur et chemin, là où la route HTTP le résout par nom
80
+ * de route), puis délègue à {@link ../adminPlane/executeAdmin.executeAdminEndpoint} —
81
+ * la même exécution que le transport HTTP. Autorisation, normalisation du
82
+ * retour et traduction des erreurs sont donc identiques par CONSTRUCTION, et
83
+ * non par vigilance.
84
+ *
85
+ * Ce que la version précédente perdait : elle appelait le handler directement
86
+ * et ne gardait, d'un statut d'erreur, que le nombre. Le corps préparé par le
87
+ * producteur — le plan d'une page, les valeurs acceptées — disparaissait, et
88
+ * l'appelant concluait l'inverse de la vérité. Il voyage désormais entier
89
+ * ({@link InspectResult}`.body`).
90
+ *
91
+ * Le rôle d'administrateur est **annoncé**, pas contourné : certains
92
+ * producteurs graduent leur réponse selon les rôles, et un appelant qui se
93
+ * présenterait en anonyme obtiendrait une vue amputée — il mentirait par
94
+ * omission face à la même donnée lue en HTTP. Le contrôle d'accès du plan
95
+ * d'administration protège le RÉSEAU ; la redaction des secrets, elle, vit dans
96
+ * les producteurs et s'applique donc à toutes les portes.
97
+ *
98
+ * @param broker - le service `adminBroker` du conteneur
99
+ * @param call - producteur, chemin, et ce qu'on lui passe
100
+ * @returns la donnée du producteur, ou la raison précise de l'échec
101
+ */
102
+ async function callAdminEndpoint(broker, call, caller) {
103
+ const label = call.label ?? `${call.namespace}/${call.path}`;
104
+ const producer = broker?.list().find((api) => api.adminNamespace === call.namespace);
105
+ if (!producer) return {
106
+ ok: false,
107
+ reason: "producer-missing",
108
+ message: `« ${label} » est servi par le module « ${call.namespace} », qui n'est pas chargé dans cette app`
109
+ };
110
+ const method = call.method ?? "GET";
111
+ const endpoint = producer.adminEndpoints().find((candidate) => candidate.path === call.path && (candidate.method ?? "GET") === method);
112
+ if (!endpoint) return {
113
+ ok: false,
114
+ reason: "endpoint-missing",
115
+ message: `endpoint « ${method} ${call.namespace}/${call.path} » introuvable — version de module incompatible ?`
116
+ };
117
+ const request = {
118
+ params: call.params ?? {},
119
+ query: call.query ?? {},
120
+ body: null,
121
+ user: caller.user,
122
+ roles: caller.roles
123
+ };
124
+ let thrown = null;
125
+ const execution = await executeAdminEndpoint({
126
+ endpoint,
127
+ request,
128
+ requiredRole: resolveAdminRole(endpoint),
129
+ gate: null,
130
+ onServerError: (error) => {
131
+ thrown = error;
132
+ }
133
+ });
134
+ if (thrown) return {
135
+ ok: false,
136
+ reason: "handler-failed",
137
+ message: `« ${label} » n'a pas pu être lu — le producteur a échoué`,
138
+ cause: thrown.message
139
+ };
140
+ if (execution.status === 403) {
141
+ const required = execution.body?.required;
142
+ return {
143
+ ok: false,
144
+ reason: "forbidden",
145
+ status: 403,
146
+ message: `« ${label} » refusé — ${caller.label}` + (required ? ` ne porte pas le rôle « ${required} »` : " n'a pas le droit de lire ceci"),
147
+ body: execution.body
148
+ };
149
+ }
150
+ if (execution.status >= 400) return {
151
+ ok: false,
152
+ reason: "not-found",
153
+ status: execution.status,
154
+ message: `« ${label} » introuvable (${execution.status})`,
155
+ body: execution.body
156
+ };
157
+ return {
158
+ ok: true,
159
+ status: execution.status,
160
+ data: execution.body
161
+ };
162
+ }
163
+ /**
164
+ * Lit un sujet d'inspection dans le plan d'administration.
165
+ *
166
+ * Résout le sujet dans {@link INSPECT_SUBJECTS}, puis délègue à
167
+ * {@link callAdminEndpoint} — ce qui vaut pour l'appel vaut donc ici.
168
+ *
169
+ * @param broker - le service `adminBroker` du conteneur
170
+ * @param subject - clé de {@link INSPECT_SUBJECTS}
171
+ * @param target - valeur du paramètre, pour les sujets qui en portent un
172
+ * @returns la donnée du producteur, ou la raison précise de l'échec
173
+ */
174
+ async function readAdminSubject(broker, subject, caller, target) {
175
+ const spec = INSPECT_SUBJECTS[subject];
176
+ if (!spec) return {
177
+ ok: false,
178
+ reason: "unknown-subject",
179
+ message: `sujet inconnu « ${subject} » — attendus : ${Object.keys(INSPECT_SUBJECTS).join(", ")}`
180
+ };
181
+ if (spec.param && !target) return {
182
+ ok: false,
183
+ reason: "missing-target",
184
+ message: `« ${subject} » attend un argument : ${spec.param}`
185
+ };
186
+ return callAdminEndpoint(broker, {
187
+ namespace: spec.namespace,
188
+ path: spec.path,
189
+ params: spec.param && target ? { [spec.param]: target } : {},
190
+ label: target ?? subject
191
+ }, caller);
192
+ }
193
+ //#endregion
194
+ export { INSPECT_SUBJECTS, callAdminEndpoint, readAdminSubject, unwrapAdminResult };