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,138 @@
1
+ import { foreignProjectRoots, readRuntimeState } from "./devProcess.js";
2
+ import { readFileSync } from "node:fs";
3
+ import path from "node:path";
4
+ //#region src/service/dev/devProjects.ts
5
+ /**
6
+ * Lit le nom d'un projet dans son `package.json`.
7
+ *
8
+ * Repli sur le nom du DOSSIER, jamais sur une chaîne inventée : un projet sans
9
+ * `package.json` lisible reste désignable, et l'appelant sait par `nameSource`
10
+ * que le nom n'a pas été déclaré.
11
+ *
12
+ * @param root - racine du projet.
13
+ * @returns le nom déclaré, ou `null` si aucun n'est lisible.
14
+ */
15
+ function readProjectName(root) {
16
+ try {
17
+ const raw = readFileSync(path.join(root, "package.json"), "utf8");
18
+ const name = JSON.parse(raw).name;
19
+ return typeof name === "string" && name.length > 0 ? name : null;
20
+ } catch {
21
+ return null;
22
+ }
23
+ }
24
+ /**
25
+ * Compose la table des projets Nodefony vivants — fonction PURE (toute lecture
26
+ * disque passe par {@link IProjectTableDeps}), donc éprouvable sans process ni
27
+ * fichier.
28
+ *
29
+ * Le projet courant figure toujours en tête et n'est OMIS que s'il ne tourne pas :
30
+ * une table qui listerait le voisin sans dire lequel est le nôtre obligerait à
31
+ * comparer des chemins à l'œil.
32
+ *
33
+ * @param cwd - racine du projet courant.
34
+ * @param mine - runtimes du projet courant.
35
+ * @param foreign - runtimes des autres projets (sortie `splitByProject().foreign`).
36
+ * @param myPorts - ports à l'écoute du projet courant.
37
+ * @param deps - lectures injectables (nom, ports).
38
+ * @returns la table, projet courant d'abord puis les autres par nom.
39
+ */
40
+ function buildProjectTable(cwd, mine, foreign, myPorts = [], deps = {}) {
41
+ const readName = deps.readName ?? readProjectName;
42
+ const readPorts = deps.readPorts ?? ((root) => readRuntimeState(root, { purgeStale: false })?.ports ?? []);
43
+ const entry = (root, procs, ports, current) => {
44
+ const declared = readName(root);
45
+ return {
46
+ name: declared ?? path.basename(root),
47
+ nameSource: declared ? "package" : "dossier",
48
+ root,
49
+ current,
50
+ procs,
51
+ ports: [...ports].sort((a, b) => a - b)
52
+ };
53
+ };
54
+ const table = [];
55
+ if (mine.length > 0) table.push(entry(cwd, mine, myPorts, true));
56
+ const others = foreignProjectRoots(foreign).map((root) => {
57
+ const procs = foreign.filter((p) => p.cwd === root || p.cwd?.startsWith(root + path.sep));
58
+ return entry(root, procs, readPorts(root), false);
59
+ });
60
+ others.sort((a, b) => a.name.localeCompare(b.name));
61
+ return [...table, ...others];
62
+ }
63
+ /**
64
+ * Met en forme la table des projets — lignes SANS couleur (l'appelant colore et
65
+ * indente), colonnes alignées sur le contenu réel.
66
+ *
67
+ * Le nom du projet courant porte un repère : c'est lui qu'on cherche d'abord, et
68
+ * comparer des racines à l'œil est précisément ce que cette table supprime. Un nom
69
+ * qui vient du dossier plutôt que du `package.json` est marqué `~` — l'utilisateur
70
+ * peut le viser tout autant, mais il sait que le projet ne s'est pas nommé.
71
+ *
72
+ * @param projects - table produite par {@link buildProjectTable}.
73
+ * @returns lignes prêtes à afficher (vide si aucun projet).
74
+ */
75
+ function formatProjectTable(projects) {
76
+ if (projects.length === 0) return [];
77
+ const rows = projects.map((p) => ({
78
+ name: `${p.name}${p.nameSource === "dossier" ? "~" : ""}${p.current ? " ▸" : ""}`,
79
+ proc: String(p.procs.length),
80
+ ports: p.ports.length > 0 ? p.ports.join(" ") : "—",
81
+ root: p.root
82
+ }));
83
+ const w = (key, head) => Math.max(head.length, ...rows.map((r) => r[key].length));
84
+ const wName = w("name", "NOM");
85
+ const wProc = w("proc", "PROC");
86
+ const wPorts = w("ports", "PORTS");
87
+ const line = (name, proc, ports, root) => ` ${name.padEnd(wName)} ${proc.padEnd(wProc)} ${ports.padEnd(wPorts)} ${root}`;
88
+ const lines = [
89
+ "",
90
+ " Projets Nodefony sur ce poste",
91
+ line("NOM", "PROC", "PORTS", "RACINE"),
92
+ ...rows.map((r) => line(r.name, r.proc, r.ports, r.root))
93
+ ];
94
+ if (projects.some((p) => p.current)) lines.push(" ▸ projet courant");
95
+ if (projects.some((p) => p.nameSource === "dossier")) lines.push(" ~ nom du dossier (aucun nom déclaré dans package.json)");
96
+ lines.push(" arrêter un projet : nodefony stop <nom|chemin>");
97
+ return lines;
98
+ }
99
+ /**
100
+ * Résout une cible `nodefony stop <projet>` — par NOM ou par CHEMIN.
101
+ *
102
+ * Le refus est la règle dès que la désignation n'est pas certaine : arrêter des
103
+ * process est irréversible, et deviner « le plus proche » ferait tomber le mauvais
104
+ * serveur sur une faute de frappe. Zéro correspondance et deux correspondances
105
+ * sont donc deux refus distincts, chacun avec de quoi corriger.
106
+ *
107
+ * Un argument contenant un séparateur, ou absolu, est traité comme un CHEMIN
108
+ * (résolu contre le répertoire courant) ; sinon il est comparé au nom déclaré ET
109
+ * au nom du dossier — un projet se désigne comme on le nomme, pas comme son
110
+ * `package.json` l'a nommé.
111
+ *
112
+ * ⚠️ La comparaison de chemins est exacte, casse comprise. Sur un système de
113
+ * fichiers insensible à la casse, une casse différente rend donc « inconnu »
114
+ * plutôt qu'une correspondance : un refus, jamais un mauvais arrêt.
115
+ *
116
+ * @param arg - ce que l'utilisateur a tapé.
117
+ * @param projects - table produite par {@link buildProjectTable}.
118
+ * @returns le projet visé, ou le motif du refus avec ses candidats.
119
+ */
120
+ function resolveProjectTarget(arg, projects, grammar = path) {
121
+ const matches = grammar.isAbsolute(arg) || arg.includes("/") || arg.includes(grammar.sep) ? projects.filter((p) => grammar.resolve(p.root) === grammar.resolve(arg)) : projects.filter((p) => p.name === arg || grammar.basename(p.root) === arg);
122
+ if (matches.length === 1) return {
123
+ ok: true,
124
+ project: matches[0]
125
+ };
126
+ if (matches.length === 0) return {
127
+ ok: false,
128
+ reason: "inconnu",
129
+ candidates: projects
130
+ };
131
+ return {
132
+ ok: false,
133
+ reason: "ambigu",
134
+ candidates: matches
135
+ };
136
+ }
137
+ //#endregion
138
+ export { buildProjectTable, formatProjectTable, readProjectName, resolveProjectTarget };
@@ -0,0 +1,395 @@
1
+ import Cli from "../../Cli.js";
2
+ import { printUsage } from "../../cli/usageReport.js";
3
+ import { defaultDevPorts, detectRuntimeMode, devSupervisorPidFile, discoverDevProcessesDetailed, discoverFromRuntimeState, foreignPortOwners, formatForeignRuntimes, formatUptime, isNodefonyProjectDir, isPidAlive, portOwnership, probePorts, readReadinessState, readSupervisorPid, runtimeModes, splitByProject } from "./devProcess.js";
4
+ import { buildProjectTable } from "./devProjects.js";
5
+ import { probeReadiness } from "./bootVerdict.js";
6
+ import { runStopReport } from "./devStop.js";
7
+ import { writeSync } from "node:fs";
8
+ import path from "node:path";
9
+ //#region src/service/dev/devStatusReport.ts
10
+ /**
11
+ * Rapport `nodefony status` — composition + exécution DÉCOUPLÉES de la classe Command.
12
+ *
13
+ * Pur outillage de process (ps + sonde ports + pidfile) : aucun boot kernel, aucune
14
+ * trunk requise → exécutable depuis N'IMPORTE OÙ (cf le fast-path « standalone » de
15
+ * `CliKernel.start`). Cohérent avec le choix no-IPC du superviseur (observation externe).
16
+ */
17
+ const ANSI = {
18
+ dim: "\x1B[90m",
19
+ cyan: "\x1B[36m",
20
+ green: "\x1B[32m",
21
+ red: "\x1B[31m",
22
+ yellow: "\x1B[33m",
23
+ bold: "\x1B[1m",
24
+ reset: "\x1B[0m"
25
+ };
26
+ /** Commandes « système » exécutables SANS boot kernel ni trunk (outillage process). */
27
+ const STANDALONE_DEV_COMMANDS = /* @__PURE__ */ new Set(["status", "stop"]);
28
+ /** La page d'aide de `nodefony status`. */
29
+ const STATUS_PAGE = {
30
+ command: "nodefony status",
31
+ tagline: "dit quels processus Nodefony de ce projet tournent, dans quel mode, et sur quels ports",
32
+ synopsis: ["nodefony status"],
33
+ sections: [{
34
+ title: "CE QU'ELLE OBSERVE",
35
+ paragraph: "Le fichier de pid du superviseur, le fichier d'état du runtime, les ports du poste, et — quand la machine l'offre — la table des processus. Aucune de ces sources n'est déduite de la plateforme : ce que `ps` ne peut pas donner ici est ANNONCÉ dans le rapport, jamais remplacé par un silence. Elle ne démarre ni n'arrête rien."
36
+ }],
37
+ options: [],
38
+ examples: [{
39
+ term: "nodefony status",
40
+ text: "l'état des processus de ce projet"
41
+ }]
42
+ };
43
+ /** La page d'aide de `nodefony stop`. */
44
+ const STOP_PAGE = {
45
+ command: "nodefony stop",
46
+ tagline: "arrête proprement les processus Nodefony de ce projet",
47
+ synopsis: ["nodefony stop [projet] [--all]"],
48
+ sections: [{
49
+ title: "CE QU'ELLE ARRÊTE",
50
+ paragraph: "Le projet du répertoire courant, et lui seul. Un autre projet se désigne par son nom ou son chemin ; `--all` étend le geste à TOUS les projets Nodefony de cette machine, ce qui se demande explicitement parce que personne ne veut l'obtenir par défaut."
51
+ }],
52
+ options: [{
53
+ term: "--all",
54
+ text: "arrête les processus Nodefony de TOUS les projets de cette machine (défaut : le projet courant seulement)"
55
+ }],
56
+ examples: [
57
+ {
58
+ term: "nodefony stop",
59
+ text: "arrête le projet d'ici"
60
+ },
61
+ {
62
+ term: "nodefony stop mon-app",
63
+ text: "arrête un projet nommé"
64
+ },
65
+ {
66
+ term: "nodefony stop --all",
67
+ text: "arrête tout, sur cette machine"
68
+ }
69
+ ],
70
+ exitCodes: [{
71
+ term: "1",
72
+ text: "la cible n'a pas pu être désignée — rien n'a été arrêté"
73
+ }]
74
+ };
75
+ /**
76
+ * `true` si l'invocation demande l'aide de la commande, et non son exécution.
77
+ *
78
+ * 🔴 Ces commandes analysent `process.argv` elles-mêmes — le fast-path court
79
+ * AVANT commander. Sans ce contrôle, `nodefony stop --help` ARRÊTAIT le serveur :
80
+ * le drapeau était simplement ignoré, et un lecteur qui cherchait la
81
+ * documentation obtenait l'effet.
82
+ *
83
+ * @param name - le nom de la commande, pour ne lire que ce qui la suit.
84
+ * @param argv - la ligne de commande.
85
+ * @returns `true` si `--help` ou `-h` a été demandé.
86
+ */
87
+ function wantsHelp(name, argv) {
88
+ const at = argv.indexOf(name);
89
+ if (at === -1) return false;
90
+ return argv.slice(at + 1).some((a) => a === "--help" || a === "-h");
91
+ }
92
+ /** `true` si `name` est une commande système standalone (status/stop). */
93
+ function isStandaloneDevCommand(name) {
94
+ return STANDALONE_DEV_COMMANDS.has(name);
95
+ }
96
+ /**
97
+ * Exécute une commande système standalone par son nom — point d'entrée du fast-path
98
+ * `CliKernel.start` (avant tout boot). N'écrit jamais via le syslog (kernel non booté).
99
+ * `stop --all` = trans-projets explicite (défaut : scope au projet du cwd).
100
+ */
101
+ async function runStandaloneDevCommand(name) {
102
+ const cwd = process.cwd();
103
+ if (wantsHelp(name, process.argv)) return printUsage(name === "stop" ? STOP_PAGE : STATUS_PAGE);
104
+ if (name === "status") {
105
+ await runStatusReport(cwd);
106
+ return 0;
107
+ }
108
+ if (name === "stop") return runStopReport(cwd, {
109
+ all: process.argv.includes("--all"),
110
+ target: standaloneTarget("stop")
111
+ });
112
+ return 0;
113
+ }
114
+ /**
115
+ * Argument positionnel d'une commande standalone, lu sur `process.argv` — le
116
+ * fast-path court AVANT commander, il n'a donc personne pour l'analyser.
117
+ *
118
+ * Seul le premier mot qui suit le nom de la commande et ne commence pas par `-`
119
+ * est retenu ; tout le reste appartient aux options. Rendre `undefined` plutôt
120
+ * qu'une chaîne vide garde la distinction « pas de cible » / « cible vide ».
121
+ *
122
+ * @param name - nom de la commande (`stop`).
123
+ * @returns la cible tapée, ou `undefined`.
124
+ */
125
+ function standaloneTarget(name) {
126
+ const argv = process.argv;
127
+ const at = argv.indexOf(name);
128
+ if (at === -1) return void 0;
129
+ for (const arg of argv.slice(at + 1)) if (!arg.startsWith("-")) return arg;
130
+ }
131
+ /**
132
+ * Compose le {@link DevStatusReport} (décompte + incohérences) — fonction PURE :
133
+ * `pidAlive` est fourni par l'appelant (aucun syscall ici → testable sans `ps`/process).
134
+ * Centralise la synthèse + les warnings consommés AUSSI BIEN par le rendu ANSI CLI
135
+ * ({@link renderStatus}) que par le data plane Studio ({@link collectDevStatus}).
136
+ */
137
+ function buildDevStatus(cwd, pid, pidAlive, procs, ports, inProject = true, discoverySupported = true, foreign = [], projectScopeBlind = false, readiness = null) {
138
+ const nSup = procs.filter((p) => p.role === "supervisor").length;
139
+ const nSrv = procs.filter((p) => p.role === "server").length;
140
+ const nVite = procs.filter((p) => p.role === "vite").length;
141
+ const nMaster = procs.filter((p) => p.role === "master").length;
142
+ const nWorker = procs.filter((p) => p.role === "worker").length;
143
+ const portsUp = ports.filter((p) => p.listening).length;
144
+ const mode = detectRuntimeMode(procs);
145
+ const warnings = [];
146
+ const modes = runtimeModes(procs);
147
+ if (modes.size > 1) warnings.push(`${modes.size} runtimes Nodefony cohabitent sur CE projet (${[...modes].join(" + ")}) — anormal : \`nodefony stop\` pour tout arrêter`);
148
+ const supPids = procs.filter((p) => p.role === "supervisor").map((p) => p.pid);
149
+ if (pid !== null && !supPids.includes(pid)) warnings.push(pidAlive ? `pidfile pointe pid ${pid} (vivant) qui n'est pas le superviseur réel — pidfile incohérent` : `pidfile pointe pid ${pid} mort — pidfile périmé`);
150
+ const devSrv = procs.filter((p) => p.mode === "dev" && p.role === "server").length;
151
+ if (nSup === 0 && (devSrv > 0 || nVite > 0)) warnings.push("process dev orphelins (serveur/Vite sans superviseur) — `nodefony stop` les nettoiera");
152
+ if (nSup > 1) warnings.push(`${nSup} superviseurs simultanés sur CE projet — empilement anormal`);
153
+ if (nMaster > 1) warnings.push(`${nMaster} masters cluster simultanés sur CE projet — empilement anormal`);
154
+ if (nSrv > 1) warnings.push(`${nSrv} serveurs simultanés sur CE projet — empilement anormal`);
155
+ if (!discoverySupported && procs.length > 0) warnings.push("process non observables ici (`ps` indisponible) — topologie lue dans le pidfile et le fichier d'état (ni RSS, ni %CPU, ni Vite)");
156
+ if (projectScopeBlind) warnings.push("appartenance au projet indéterminable (répertoire courant des process illisible — `lsof` absent ?) — liste GLOBALE du poste, `nodefony stop` n'agira que sur ce projet");
157
+ return {
158
+ supported: discoverySupported,
159
+ running: procs.length > 0,
160
+ mode,
161
+ processes: procs,
162
+ ports,
163
+ summary: {
164
+ supervisors: nSup,
165
+ servers: nSrv,
166
+ vites: nVite,
167
+ masters: nMaster,
168
+ workers: nWorker,
169
+ portsUp,
170
+ portsTotal: ports.length
171
+ },
172
+ warnings,
173
+ pidfile: {
174
+ path: path.relative(cwd, devSupervisorPidFile(cwd)),
175
+ pid,
176
+ alive: pidAlive
177
+ },
178
+ inProject,
179
+ foreign,
180
+ portOwners: foreignPortOwners(foreign),
181
+ readiness
182
+ };
183
+ }
184
+ /**
185
+ * Collecte l'état dev (ps + sonde ports + pidfile) → {@link DevStatusReport} JSON.
186
+ * Best-effort : Windows (pas de `ps` POSIX) → `supported:false`. `opts.includeSelf`
187
+ * (data plane = le serveur DOIT se compter). AUCUN boot kernel requis (observation
188
+ * externe pure) → utilisable depuis le fast-path standalone ET depuis le data plane.
189
+ */
190
+ async function collectDevStatus(cwd, opts = {}) {
191
+ const pid = readSupervisorPid(cwd);
192
+ const observed = (opts.discover ?? discoverDevProcessesDetailed)(opts);
193
+ const scoped = observed.supported ? splitByProject(observed.procs, cwd, opts.getCwd) : {
194
+ mine: discoverFromRuntimeState(cwd),
195
+ foreign: []
196
+ };
197
+ const cwdBlind = observed.procs.length > 0 && scoped.mine.length === 0 && scoped.foreign.every((p) => p.cwd === null);
198
+ const ports = await (opts.probe ?? probePorts)(defaultDevPorts(cwd));
199
+ const owners = foreignPortOwners(cwdBlind ? [] : scoped.foreign);
200
+ const listening = ports.find((p) => p.listening && owners[p.port] === void 0);
201
+ const readiness = withBlockedBy(listening ? await (opts.probeReadiness ?? probeReadiness)(listening.port) : null, cwd);
202
+ return buildDevStatus(cwd, pid, pid !== null && isPidAlive(pid), cwdBlind ? observed.procs : scoped.mine, ports, isNodefonyProjectDir(cwd), observed.supported, cwdBlind ? [] : scoped.foreign, cwdBlind, readiness);
203
+ }
204
+ /** Collecte (ps + ports + pidfile) puis écrit le rapport status sur stdout. */
205
+ async function runStatusReport(cwd, deps = {}) {
206
+ const report = await collectDevStatus(cwd, deps);
207
+ const lines = [];
208
+ const projects = report.foreign.length > 0 ? buildProjectTable(cwd, report.processes, report.foreign, report.ports.filter((p) => p.listening).map((p) => p.port)) : [];
209
+ const portsVoisins = [...new Set(projects.filter((p) => !p.current).flatMap((p) => p.ports))].filter((port) => !report.ports.some((p) => p.port === port));
210
+ renderStatus(lines, report, projects, portsVoisins.length > 0 ? await (deps.probe ?? probePorts)(portsVoisins) : []);
211
+ (deps.write ?? ((chunk) => writeSync(1, chunk)))(lines.join("\n") + "\n");
212
+ }
213
+ /**
214
+ * Tableau ANSI des process dev (RÔLE/PID/PPID/UPTIME/RSS/%CPU + `↳ bundles`) —
215
+ * LE gabarit partagé `nodefony status` ⇄ bilan de fin de boot (même topologie,
216
+ * même sérieux). `indent` décale toute la grille (le bilan l'aligne sous ses
217
+ * lignes `➜`).
218
+ *
219
+ * Largeur de la colonne RÔLE = plus long label réel (labels courts : supervisor /
220
+ * server / vite) → alignement stable. Le détail des bundles Vite passe sur une 2ᵉ
221
+ * ligne indentée (hors colonne) au lieu de faire déborder la grille.
222
+ */
223
+ function renderProcessTable(lines, procs, indent = " ") {
224
+ const roleW = Math.max(4, ...procs.map((p) => p.label.length));
225
+ lines.push(`${ANSI.dim}${indent}${"RÔLE".padEnd(roleW)} ${"PID".padEnd(7)} ${"PPID".padEnd(7)} ${"UPTIME".padEnd(9)} ${"RSS".padEnd(9)} %CPU${ANSI.reset}`, `${ANSI.dim}${indent}${"─".repeat(roleW + 46)}${ANSI.reset}`);
226
+ for (const p of procs) {
227
+ const color = p.role === "supervisor" || p.role === "master" ? ANSI.cyan : p.role === "server" || p.role === "worker" ? ANSI.green : ANSI.dim;
228
+ lines.push(`${indent}${color}${p.label.padEnd(roleW)}${ANSI.reset} ${String(p.pid).padEnd(7)} ${String(p.ppid).padEnd(7)} ${formatUptime(p.uptimeSec).padEnd(9)} ${Cli.niceBytes(p.rssKb * 1024).padEnd(9)} ${p.cpu.toFixed(1)}`);
229
+ if (p.detail) lines.push(`${indent} ${ANSI.dim}↳ ${p.detail.replace(/\+/g, ", ")}${ANSI.reset}`);
230
+ }
231
+ }
232
+ /**
233
+ * Bloc des runtimes ÉTRANGERS — même mise en forme que `nodefony stop` (une seule
234
+ * implémentation, `formatForeignRuntimes`), y compris les commandes exactes pour
235
+ * aller les arrêter. `status` les taisait tout en les COMPTANT comme les siens : le
236
+ * dev voyait « 4 process » sans savoir qu'aucun n'était à lui.
237
+ */
238
+ function renderForeign(lines, report, projects = [], neighborProbes = []) {
239
+ if (report.foreign.length === 0) return;
240
+ const voisins = projects.filter((p) => !p.current);
241
+ if (voisins.length === 0) {
242
+ lines.push(` ${ANSI.dim}${report.foreign.length} runtime(s) d'un AUTRE projet sur ce poste (non comptés ci-dessus) :${ANSI.reset}`, ...formatForeignRuntimes(report.foreign).map((l) => `${ANSI.dim}${l}${ANSI.reset}`));
243
+ return;
244
+ }
245
+ for (const project of voisins) renderProjectBlock(lines, project, [...report.ports, ...neighborProbes], report.portOwners);
246
+ }
247
+ /**
248
+ * Bloc d'UN projet : son nom, sa racine, ses process, ses ports.
249
+ *
250
+ * Le projet courant et un voisin s'affichent pareil — la seule différence est le
251
+ * repère `▸` et le fait que NOS ports sont sondés quand ceux d'un voisin sont
252
+ * seulement DÉCLARÉS (il publie son état, on ne va pas frapper à sa porte). Cette
253
+ * nuance est écrite plutôt que gommée : un port « déclaré » n'est pas un port
254
+ * vérifié, et laisser croire l'inverse est le genre de raccourci qui fait
255
+ * chercher une panne au mauvais endroit.
256
+ */
257
+ function renderProjectBlock(lines, project, probes = [], owners = {}) {
258
+ const label = project.current ? `${ANSI.cyan}▸ ${ANSI.bold}${project.name}${ANSI.reset} ${ANSI.dim}— ce projet${ANSI.reset}` : ` ${ANSI.bold}${project.name}${ANSI.reset}`;
259
+ const source = project.nameSource === "dossier" ? ` ${ANSI.dim}(nom du dossier — aucun nom dans package.json)${ANSI.reset}` : "";
260
+ lines.push("", ` ${label}${source}`, ` ${ANSI.dim}${project.root}${ANSI.reset}`);
261
+ if (project.procs.length > 0) renderProcessTable(lines, project.procs, " ");
262
+ const rendered = project.ports.map((port) => {
263
+ const probe = probes.find((s) => s.port === port);
264
+ const heldBy = owners[port];
265
+ if (heldBy !== void 0 && heldBy !== project.root) return `${port} ${ANSI.yellow}tenu par ${heldBy}${ANSI.reset}`;
266
+ if (probe) return probe.listening ? `${port} ${ANSI.green}✓ écoute${ANSI.reset}` : `${port} ${ANSI.red}✗ silencieux${ANSI.reset}`;
267
+ return `${port} ${ANSI.dim}déclaré${ANSI.reset}`;
268
+ });
269
+ if (rendered.length > 0) lines.push(` ${ANSI.dim}ports${ANSI.reset} ${rendered.join(" ")}`);
270
+ if (rendered.some((r) => r.includes("déclaré"))) lines.push(` ${ANSI.dim} « déclaré » = publié par le projet, pas sondé par cette commande${ANSI.reset}`);
271
+ }
272
+ /**
273
+ * Résumé de fin — ce que le lecteur doit retenir, et le geste qui suit.
274
+ *
275
+ * Il n'est écrit QUE si un voisin existe : dans le cas nominal (une seule
276
+ * application), expliquer le cloisonnement serait du bruit. C'est l'inverse qui
277
+ * a coûté cher — voir « aucune instance » avec un serveur qui répond, sans que
278
+ * rien ne dise que les deux phrases parlent de projets différents.
279
+ */
280
+ function renderSummary(lines, report, projects) {
281
+ const voisins = projects.filter((p) => !p.current);
282
+ if (voisins.length === 0) return;
283
+ const nVoisinProcs = voisins.reduce((n, p) => n + p.procs.length, 0);
284
+ const aMoi = report.processes.length;
285
+ const portsUp = report.ports.filter((p) => p.listening).length;
286
+ const pluriel = voisins.length > 1 ? "s" : "";
287
+ lines.push("", ` ${ANSI.bold}Résumé${ANSI.reset}`, report.inProject ? ` ce projet : ${aMoi === 0 ? `${ANSI.yellow}rien ne tourne${ANSI.reset}` : `${aMoi} process · ${portsUp}/${report.ports.length} ports en écoute`}` : ` ici : ${ANSI.dim}aucun projet Nodefony${ANSI.reset}`, report.inProject ? ` voisin${pluriel} : ${voisins.length} projet${pluriel} · ${nVoisinProcs} process` : ` ailleurs : ${voisins.length} projet${pluriel} · ${nVoisinProcs} process`, ...!report.inProject ? [` ${ANSI.dim}place-toi dans un projet pour le piloter, ou vise-le par son nom${ANSI.reset}`, ` ${ANSI.dim}depuis ici — status et stop n'agissent jamais que sur UN projet.${ANSI.reset}`] : aMoi === 0 ? [` ${ANSI.dim}status et stop ne voient QUE ce projet : « aucune instance » signifie${ANSI.reset}`, ` ${ANSI.dim}« aucune à MOI », jamais « rien ne tourne sur ce poste ».${ANSI.reset}`] : [` ${ANSI.dim}les process du haut sont ceux de CE projet ; le${pluriel} voisin${pluriel} n'${voisins.length > 1 ? "en font" : "en fait"} pas partie${ANSI.reset}`, ` ${ANSI.dim}et ${voisins.length > 1 ? "ne sont" : "n'est"} ni compté${pluriel} dans la synthèse, ni arrêté${pluriel} par ${ANSI.reset}${ANSI.cyan}nodefony stop${ANSI.reset}${ANSI.dim}.${ANSI.reset}`], ` ${ANSI.dim}arrêter ${report.inProject ? "un voisin" : "l'un d'eux"}, sans changer de dossier : ${ANSI.reset}${ANSI.cyan}nodefony stop ${voisins[0].name}${ANSI.reset}`);
288
+ }
289
+ /**
290
+ * Ligne d'état des ports. `listening` seul ne dit pas à QUI : un port tenu par le
291
+ * projet voisin s'affichait `✓ UP` sous le titre de notre application. Le
292
+ * propriétaire connu est donc nommé, et un port étranger n'est jamais un verdict
293
+ * sur notre runtime.
294
+ */
295
+ function portsLine(ports, owners, upLabel, freeLabel) {
296
+ return ports.map((p) => {
297
+ switch (portOwnership(p, owners)) {
298
+ case "free": return `${p.port} ${freeLabel}`;
299
+ case "foreign": return `${p.port} ${ANSI.yellow}occupé par ${owners[p.port]}${ANSI.reset}`;
300
+ default: return `${p.port} ${upLabel}`;
301
+ }
302
+ }).join(" ");
303
+ }
304
+ /**
305
+ * Rend le {@link DevStatusReport} en ANSI (tableau + ports + synthèse + warnings)
306
+ * dans `lines`.
307
+ *
308
+ * `projects` est FACULTATIF : omis, le rendu est identique à celui d'avant. Il
309
+ * n'entre pas dans {@link DevStatusReport} parce que le rapport est aussi le
310
+ * contrat du data plane — nommer les projets exige de lire un `package.json` par
311
+ * projet voisin, un coût que la console d'administration n'a pas demandé.
312
+ */
313
+ function renderStatus(lines, report, projects = [], neighborProbes = []) {
314
+ const tag = `${ANSI.dim}[status]${ANSI.reset}`;
315
+ const { processes: procs } = report;
316
+ if (!report.running) {
317
+ const { pid, alive } = report.pidfile;
318
+ const pidNote = pid === null ? `${ANSI.dim}absent${ANSI.reset}` : alive ? `${ANSI.yellow}périmé (pid ${pid} vivant mais non-superviseur)${ANSI.reset}` : `${ANSI.yellow}périmé (pid ${pid} mort)${ANSI.reset}`;
319
+ const detaille = projects.some((p) => !p.current);
320
+ lines.push("", report.inProject ? `${tag} ${ANSI.bold}Nodefony dev — aucune instance de ce projet en cours${ANSI.reset}` : `${tag} ${ANSI.bold}Nodefony — ce dossier n'est pas un projet Nodefony${ANSI.reset}`, ...report.inProject ? [` ${ANSI.dim}pidfile${ANSI.reset} ${report.pidfile.path} — ${pidNote}`] : [], ...detaille || !report.inProject ? [] : [` ${ANSI.dim}ports${ANSI.reset} ${portsLine(report.ports, report.portOwners, `${ANSI.yellow}occupé${ANSI.reset}`, `${ANSI.dim}libre${ANSI.reset}`)}`], report.inProject ? ` ${ANSI.dim}→ lance ${ANSI.reset}${ANSI.cyan}nodefony dev${ANSI.reset}${ANSI.dim} pour démarrer${ANSI.reset}` : ` ${ANSI.dim}aucun package.json qui dépende de « nodefony » ici${ANSI.reset}\n ${ANSI.dim}→ place-toi à la racine d'une app, ou crée-en une : ${ANSI.reset}${ANSI.cyan}nodefony create app${ANSI.reset}`);
321
+ renderForeign(lines, report, projects, neighborProbes);
322
+ renderSummary(lines, report, projects);
323
+ lines.push("");
324
+ return;
325
+ }
326
+ lines.push("", `${tag} ${ANSI.bold}Nodefony ${runtimeLabel(report.mode)} — ${procs.length} process${ANSI.reset}`);
327
+ if (!report.inProject) lines.push(` ${ANSI.yellow}⚠ ce dossier n'est pas un projet Nodefony${ANSI.reset}${ANSI.dim} — vue globale du poste ; stop/dev se lancent depuis la racine d'une app (ou nodefony stop --all)${ANSI.reset}`);
328
+ lines.push("");
329
+ renderProcessTable(lines, procs);
330
+ lines.push("", ` ${ANSI.dim}ports serveur${ANSI.reset} : ${portsLine(report.ports, report.portOwners, `${ANSI.green}✓ UP${ANSI.reset}`, `${ANSI.red}✗ DOWN${ANSI.reset}`)}`, ` ${ANSI.dim}synthèse${ANSI.reset} : ${summaryLine(report)}`);
331
+ if (report.readiness !== null) lines.push(` ${ANSI.dim}disponibilité${ANSI.reset} : ${readinessLine(report.readiness)}`);
332
+ for (const w of report.warnings) lines.push(` ${ANSI.yellow}⚠ ${w}${ANSI.reset}`);
333
+ renderForeign(lines, report, projects, neighborProbes);
334
+ renderSummary(lines, report, projects);
335
+ lines.push("");
336
+ }
337
+ /** Libellé du mode runtime pour le titre du rapport (`dev`/`production`/`cluster`). */
338
+ function runtimeLabel(mode) {
339
+ if (mode === "prod") return "production";
340
+ if (mode === "cluster") return "cluster";
341
+ if (mode === "dev") return "dev";
342
+ return "runtime";
343
+ }
344
+ /**
345
+ * Ajoute au verdict de la sonde le DÉTAIL que le serveur publie sur le disque.
346
+ *
347
+ * Deux sources, une règle : **le compte fait foi, le détail ne fait qu'illustrer.**
348
+ * Le compte vient du runtime interrogé à l'instant ; le détail vient d'un fichier
349
+ * qui peut avoir un cycle de retard. S'ils ne concordent pas — un contributeur
350
+ * libéré entre-temps, un fichier d'un process mort, aucun fichier —, on garde le
351
+ * compte seul. Un nom faux coûte plus cher qu'une absence de nom : il envoie
352
+ * chercher une cause qui n'existe plus.
353
+ *
354
+ * @param probe - verdict rendu par le runtime, ou `null` s'il n'a rien dit.
355
+ * @param cwd - racine du projet, où le serveur publie son détail.
356
+ * @returns le verdict, enrichi seulement si les deux sources s'accordent.
357
+ */
358
+ function withBlockedBy(probe, cwd) {
359
+ if (probe === null || probe.blocked === 0) return probe;
360
+ const publies = readReadinessState(cwd);
361
+ if (publies === null) return probe;
362
+ const retenant = publies.filter((c) => !c.ready);
363
+ if (retenant.length !== probe.blocked) return probe;
364
+ return {
365
+ ...probe,
366
+ blockedBy: retenant.map((c) => c.reason === void 0 ? { name: c.name } : {
367
+ name: c.name,
368
+ reason: c.reason
369
+ })
370
+ };
371
+ }
372
+ /**
373
+ * Ligne de disponibilité — ce que l'orchestrateur ferait de ce pod. Retenu, elle
374
+ * NOMME la conséquence (aucun trafic) : « 503 » seul n'apprend rien à qui n'a pas
375
+ * la doctrine k8s en tête, et c'est précisément le moment où l'on cherche.
376
+ */
377
+ function readinessLine(probe) {
378
+ if (probe.ready) return `${ANSI.green}✓ prête${ANSI.reset} ${ANSI.dim}— /readyz rend 200${ANSI.reset}`;
379
+ const qui = probe.blockedBy !== void 0 && probe.blockedBy.length > 0 ? probe.blockedBy.map((c) => c.reason ? `${c.name} (${c.reason})` : c.name).join(", ") : probe.blocked > 0 ? `${probe.blocked} composant${probe.blocked > 1 ? "s" : ""} retien${probe.blocked > 1 ? "nent" : "t"} la mise en service` : "boot pas terminé";
380
+ return `${ANSI.yellow}⚠ RETENUE${ANSI.reset} ${ANSI.dim}— ${qui} ; /readyz rend 503, l'orchestrateur n'envoie AUCUN trafic${ANSI.reset}`;
381
+ }
382
+ /** Ligne de synthèse : segments non-nuls seulement (s'adapte à dev / prod / cluster). */
383
+ function summaryLine(report) {
384
+ const s = report.summary;
385
+ const seg = [];
386
+ if (s.supervisors) seg.push(`${s.supervisors} superviseur`);
387
+ if (s.masters) seg.push(`${s.masters} master`);
388
+ if (s.workers) seg.push(`${s.workers} worker`);
389
+ if (s.servers) seg.push(`${s.servers} serveur`);
390
+ if (s.vites) seg.push(`${s.vites} Vite`);
391
+ seg.push(`${s.portsUp}/${s.portsTotal} ports UP`);
392
+ return seg.join(" · ");
393
+ }
394
+ //#endregion
395
+ export { buildDevStatus, collectDevStatus, isStandaloneDevCommand, renderProcessTable, runStandaloneDevCommand, runStatusReport };