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,191 @@
1
+ import "./sysexits.js";
2
+ import { printUsage, printUsageError } from "./usageReport.js";
3
+ import { findProjectRoot } from "./projectRoot.js";
4
+ import { stripGlobalCliFlags } from "./globalFlags.js";
5
+ import { GIT_HOOKS_DIR, planGitHooks, renderGitHooksPlan } from "./gitHooksReport.js";
6
+ import { chmodSync, mkdirSync, readFileSync, realpathSync, writeFileSync } from "node:fs";
7
+ import path from "node:path";
8
+ import { execFileSync } from "node:child_process";
9
+ //#region src/cli/gitHooks.ts
10
+ /** La page d'aide — `nodefony git:hooks --help`, et le rappel après un refus. */
11
+ const PAGE = {
12
+ command: "nodefony git:hooks",
13
+ tagline: "pose les hooks git de ce projet : contrôles au commit, vérification au push",
14
+ sections: [{
15
+ title: "CE QU'ELLE FAIT",
16
+ paragraph: "Elle écrit deux scripts shell et pose une seule clé de configuration git, qui désigne le dossier où git ira les chercher. Rien n'est installé à votre insu : la pose des hooks est un geste EXPLICITE, jamais l'effet de bord d'un `npm install`. Elle ne démarre pas l'application."
17
+ }],
18
+ options: [
19
+ {
20
+ term: "--dry-run",
21
+ text: "le plan, sans rien écrire ni configurer"
22
+ },
23
+ {
24
+ term: "--json",
25
+ text: "le même plan, exploitable par un script"
26
+ },
27
+ {
28
+ term: "--cwd <chemin>",
29
+ text: "point de départ (la racine de l'app est résolue en remontant)"
30
+ }
31
+ ],
32
+ examples: [{
33
+ term: "nodefony git:hooks",
34
+ text: "pose les hooks dans ce dépôt"
35
+ }, {
36
+ term: "nodefony git:hooks --dry-run",
37
+ text: "ce qu'elle écrirait, avant de la laisser faire"
38
+ }],
39
+ exitCodes: [{
40
+ term: "66",
41
+ text: "aucune application, ou aucun dépôt git ici (EX_NOINPUT)"
42
+ }]
43
+ };
44
+ /**
45
+ * Interroge git — sortie capturée, échec rendu `null`.
46
+ *
47
+ * @param args - arguments de git.
48
+ * @param cwd - répertoire d'exécution.
49
+ * @returns stdout épuré, ou `null` si git refuse (pas un dépôt, clé absente).
50
+ */
51
+ function git(args, cwd) {
52
+ try {
53
+ return execFileSync("git", args, {
54
+ cwd,
55
+ encoding: "utf8",
56
+ stdio: [
57
+ "ignore",
58
+ "pipe",
59
+ "ignore"
60
+ ]
61
+ }).trim();
62
+ } catch {
63
+ return null;
64
+ }
65
+ }
66
+ /**
67
+ * Analyse les arguments de `git:hooks`.
68
+ *
69
+ * @param argv - `process.argv` complet.
70
+ * @returns les options, ou une erreur d'usage.
71
+ */
72
+ function parseGitHooksArgv(argv) {
73
+ const args = stripGlobalCliFlags(argv.slice(2).filter((a) => a !== "git:hooks"));
74
+ let cwd = process.cwd();
75
+ let json = false;
76
+ let dryRun = false;
77
+ let help = false;
78
+ for (let i = 0; i < args.length; i += 1) {
79
+ const a = args[i];
80
+ if (a === "--help" || a === "-h") help = true;
81
+ else if (a === "--json") json = true;
82
+ else if (a === "--dry-run") dryRun = true;
83
+ else if (a === "--cwd") {
84
+ const v = args[i + 1];
85
+ if (v === void 0) return { error: "--cwd attend un chemin" };
86
+ cwd = path.resolve(v);
87
+ i += 1;
88
+ } else return { error: `option inconnue : ${a}` };
89
+ }
90
+ return {
91
+ cwd,
92
+ json,
93
+ dryRun,
94
+ help
95
+ };
96
+ }
97
+ /**
98
+ * Pose les hooks natifs dans un projet, et rend le plan de ce qui a été fait.
99
+ *
100
+ * Le geste ENTIER — lire, décider, écrire, configurer — en un exemplaire, pour
101
+ * ses appelants présents et futurs (la commande ; un jour `create app
102
+ * --git-hooks`). Tout refus (hook étranger, `core.hooksPath` géré autrement)
103
+ * interdit TOUT le geste : pas d'état à moitié posé.
104
+ *
105
+ * ⚠️ `core.hooksPath` RELATIF se résout depuis le TOPLEVEL du dépôt git, pas
106
+ * depuis l'application. Quand l'application n'est pas le toplevel (monorepo),
107
+ * la valeur posée est le chemin du dossier de hooks VU DU toplevel — calculée
108
+ * ici, écrite en `/` (elle voyage dans la config du clone).
109
+ *
110
+ * @param projectRoot - racine de l'application, DÉJÀ résolue.
111
+ * @param dryRun - `true` pour calculer sans rien écrire ni configurer.
112
+ * @returns le plan, ou `null` si `projectRoot` n'est dans aucun dépôt git.
113
+ */
114
+ function installGitHooks(projectRoot, dryRun = false) {
115
+ const toplevel = git(["rev-parse", "--show-toplevel"], projectRoot);
116
+ if (toplevel === null) return null;
117
+ const projectReal = realpathSync.native(projectRoot);
118
+ const toplevelReal = realpathSync.native(toplevel);
119
+ const hooksDirAbs = path.join(projectReal, GIT_HOOKS_DIR);
120
+ const wanted = path.relative(toplevelReal, hooksDirAbs).split(path.sep).join("/") || ".githooks";
121
+ const existing = {};
122
+ for (const name of ["pre-commit", "pre-push"]) try {
123
+ existing[name] = readFileSync(path.join(hooksDirAbs, name), "utf8");
124
+ } catch {
125
+ existing[name] = null;
126
+ }
127
+ const plan = planGitHooks(existing, git([
128
+ "config",
129
+ "--get",
130
+ "core.hooksPath"
131
+ ], projectRoot), wanted);
132
+ if (dryRun || plan.refused) return plan;
133
+ for (const hook of plan.hooks) {
134
+ if (hook.action === "inchange") continue;
135
+ const dest = path.join(projectRoot, ...hook.target.split("/"));
136
+ mkdirSync(path.dirname(dest), { recursive: true });
137
+ writeFileSync(dest, hook.content, "utf8");
138
+ try {
139
+ chmodSync(dest, 493);
140
+ } catch {}
141
+ }
142
+ if (plan.hooksPath.action === "pose") execFileSync("git", [
143
+ "config",
144
+ "core.hooksPath",
145
+ plan.hooksPath.wanted
146
+ ], {
147
+ cwd: projectRoot,
148
+ stdio: [
149
+ "ignore",
150
+ "ignore",
151
+ "ignore"
152
+ ]
153
+ });
154
+ return plan;
155
+ }
156
+ /**
157
+ * Commande `nodefony git:hooks` — hooks git natifs (`core.hooksPath`), zéro
158
+ * dépendance.
159
+ *
160
+ * Standalone (0 boot) : elle écrit deux fichiers et une clé de config, et doit
161
+ * répondre dans un terminal qui n'a pas posé `NODE_ENV` — même famille que
162
+ * `ai:sync` et `ai:mcp`, mêmes raisons. Et comme eux, AUCUN `postinstall` ne
163
+ * l'appelle : la pose de hooks est un choix, pas un effet de bord d'un
164
+ * `npm install`.
165
+ *
166
+ * @param argv - `process.argv` complet.
167
+ * @returns exit code sémantique (`OK`, `USAGE`, `NOINPUT` hors projet,
168
+ * `UNAVAILABLE` hors dépôt git, `CANTCREAT` sur refus d'écrasement).
169
+ */
170
+ function runGitHooksCommand(argv) {
171
+ const parsed = parseGitHooksArgv(argv);
172
+ if ("error" in parsed) return printUsageError(PAGE, parsed.error);
173
+ if (parsed.help) return printUsage(PAGE);
174
+ const projectRoot = findProjectRoot(parsed.cwd);
175
+ if (projectRoot === null) {
176
+ process.stderr.write(`git:hooks: aucun projet Nodefony ici (nodefony.config.ts introuvable en remontant).\n`);
177
+ return 66;
178
+ }
179
+ const plan = installGitHooks(projectRoot, parsed.dryRun);
180
+ if (plan === null) {
181
+ process.stderr.write(`git:hooks: ${projectRoot} n'est dans aucun dépôt git.\nPour en créer un :\n git init\n`);
182
+ return 69;
183
+ }
184
+ process.stdout.write(parsed.json ? `${JSON.stringify({
185
+ ...plan,
186
+ dryRun: parsed.dryRun
187
+ }, null, 2)}\n` : renderGitHooksPlan(plan, !parsed.dryRun && !plan.refused));
188
+ return plan.refused ? 73 : 0;
189
+ }
190
+ //#endregion
191
+ export { installGitHooks, parseGitHooksArgv, runGitHooksCommand };
@@ -0,0 +1,119 @@
1
+ //#region src/cli/gitHooksReport.ts
2
+ /**
3
+ * Composition PURE de `nodefony git:hooks` — hooks git natifs, zéro dépendance.
4
+ *
5
+ * Reçoit un état déjà lu (contenu actuel des hooks, valeur de `core.hooksPath`)
6
+ * et conclut : que poser, que laisser, que REFUSER. Aucune lecture de disque,
7
+ * aucun `git config` — même séparation que `aiSyncReport.ts` / `aiSync.ts`.
8
+ *
9
+ * ## Pourquoi natif, et pas husky
10
+ *
11
+ * Depuis sa v9, husky n'est plus qu'un habillage de `git config core.hooksPath` :
12
+ * la fonctionnalité est dans git lui-même. Une dépendance + un script `prepare`
13
+ * pour ce que deux fichiers sh et une ligne de config font déjà, c'est une
14
+ * surface en trop — et un `postinstall` est exactement ce que `ai:sync` a
15
+ * refusé (`--ignore-scripts` courant, vecteur d'attaque connu). La pose est un
16
+ * GESTE EXPLICITE : cette commande, jamais un script d'installation.
17
+ *
18
+ * ## Pourquoi les hooks générés sont LÉGERS
19
+ *
20
+ * Le filet complet appartient à l'intégration continue — un hook local bloquant
21
+ * est un doublon qui ralentit chaque commit et se contourne d'un `--no-verify`.
22
+ * Qui opte pour les hooks reçoit donc le strict utile : typecheck + lint au
23
+ * commit (rapide), `verify` complet au push (le dernier rempart avant de
24
+ * partager).
25
+ */
26
+ /** Dossier des hooks, relatif à la racine de l'application, écrit en `/`. */
27
+ const GIT_HOOKS_DIR = ".githooks";
28
+ /**
29
+ * Marqueur d'APPARTENANCE, présent dans chaque hook généré.
30
+ *
31
+ * C'est lui qui sépare « à nous, remplaçable » de « écrit par quelqu'un » : un
32
+ * hook existant qui ne le porte pas n'est JAMAIS écrasé — effacer le travail
33
+ * d'un utilisateur n'est pas le rôle d'une commande de pose.
34
+ */
35
+ const GIT_HOOKS_MARKER = "posé par `nodefony git:hooks`";
36
+ /** Les hooks que la commande sait poser, dans l'ordre d'affichage. */
37
+ const GIT_HOOK_NAMES = ["pre-commit", "pre-push"];
38
+ /**
39
+ * Le contenu d'un hook.
40
+ *
41
+ * Sh POSIX strict : sous Windows, git exécute les hooks via le `sh.exe` de Git
42
+ * for Windows — un script simple passe partout, un bashisme non. Le `npx` est
43
+ * nécessaire : un hook git n'a pas `node_modules/.bin` dans son PATH.
44
+ *
45
+ * @param name - lequel des deux.
46
+ * @returns le script complet, marqueur compris.
47
+ */
48
+ function renderGitHook(name) {
49
+ return `#!/usr/bin/env sh
50
+ # ${GIT_HOOKS_MARKER} — se met à jour en la relançant.
51
+ # Bypass d'urgence : git commit/push --no-verify.
52
+ # Désactiver : git config --unset core.hooksPath
53
+
54
+ ${name === "pre-commit" ? `# Léger VOLONTAIREMENT (typecheck + lint, pas de tests) : le filet complet
55
+ # est l'intégration continue — un commit doit rester rapide.
56
+ npm run typecheck && npm run lint` : `# Le dernier rempart avant de partager : \`verify\` enchaîne typecheck,
57
+ # lint, tests et \`nodefony doctor\`.
58
+ npm run verify`}
59
+ `;
60
+ }
61
+ /**
62
+ * Décide, pour chaque hook et pour `core.hooksPath`, le geste à faire.
63
+ *
64
+ * @param existing - contenu actuel de chaque hook, `null` si absent.
65
+ * @param currentHooksPath - valeur actuelle de `core.hooksPath`, `null` si absente.
66
+ * @param wantedHooksPath - valeur cible (relative au toplevel git, en `/`) —
67
+ * l'appelant la calcule, car SEUL lui sait où est le toplevel : un chemin
68
+ * relatif dans `core.hooksPath` se résout depuis la racine du dépôt git, pas
69
+ * depuis l'application (cas réel : app dans un sous-dossier d'un monorepo).
70
+ * @returns le plan, applicable ou refusé.
71
+ */
72
+ function planGitHooks(existing, currentHooksPath, wantedHooksPath) {
73
+ const hooks = GIT_HOOK_NAMES.map((name) => {
74
+ const content = renderGitHook(name);
75
+ const current = existing[name] ?? null;
76
+ return {
77
+ name,
78
+ action: current === null ? "pose" : current === content ? "inchange" : current.includes("posé par `nodefony git:hooks`") ? "remplace" : "refus-etranger",
79
+ target: `${GIT_HOOKS_DIR}/${name}`,
80
+ content
81
+ };
82
+ });
83
+ const hooksPath = {
84
+ current: currentHooksPath,
85
+ wanted: wantedHooksPath,
86
+ action: currentHooksPath === null || currentHooksPath === "" ? "pose" : currentHooksPath === wantedHooksPath ? "inchange" : "refus-autre"
87
+ };
88
+ return {
89
+ directory: GIT_HOOKS_DIR,
90
+ hooks,
91
+ hooksPath,
92
+ refused: hooksPath.action === "refus-autre" || hooks.some((h) => h.action === "refus-etranger")
93
+ };
94
+ }
95
+ /**
96
+ * Rend le plan pour un humain.
97
+ *
98
+ * @param plan - le plan calculé.
99
+ * @param applique - `false` quand rien n'a été écrit (`--dry-run` ou refus).
100
+ * @returns le texte à écrire sur la sortie standard.
101
+ */
102
+ function renderGitHooksPlan(plan, applique) {
103
+ const lines = [`\n Hooks git natifs — ${plan.directory}\n`];
104
+ for (const h of plan.hooks) {
105
+ const marque = h.action === "pose" ? "+" : h.action === "remplace" ? "~" : h.action === "inchange" ? "=" : "✗";
106
+ lines.push(` ${marque} ${h.name.padEnd(12)}`);
107
+ if (h.action === "refus-etranger") lines.push(` un hook ÉTRANGER occupe ce nom — rien n'est écrasé.\n → le déplacer, ou le fusionner à la main avec ${h.target}`);
108
+ lines.push(`\n`);
109
+ }
110
+ const hp = plan.hooksPath;
111
+ if (hp.action === "refus-autre") lines.push(` ✗ core.hooksPath vaut déjà « ${hp.current ?? ""} » — tes hooks sont gérés\n autrement, rien n'est touché. Pour adopter ceux-ci :\n git config --unset core.hooksPath puis relancer\n`);
112
+ else lines.push(` ${hp.action === "pose" ? "+" : "="} core.hooksPath → ${hp.wanted}\n`);
113
+ if (plan.refused) lines.push(`\n REFUS — rien n'a été écrit ni configuré.\n`);
114
+ else if (!applique) lines.push(`\n Rien n'a été écrit (--dry-run).\n`);
115
+ else lines.push("\n Bypass ponctuel : --no-verify · désactiver :\n git config --unset core.hooksPath\n");
116
+ return lines.join("");
117
+ }
118
+ //#endregion
119
+ export { GIT_HOOKS_DIR, GIT_HOOKS_MARKER, GIT_HOOK_NAMES, planGitHooks, renderGitHook, renderGitHooksPlan };
@@ -0,0 +1,67 @@
1
+ //#region src/cli/globalFlags.ts
2
+ /**
3
+ * Les options que le CLI déclare pour TOUTES ses commandes — et ce que les
4
+ * commandes autonomes doivent en faire.
5
+ *
6
+ * ## Le défaut que ce module ferme
7
+ *
8
+ * `nodefony --help` promet `-i, --interactive` et `-d, --debug` : ce sont des
9
+ * options POSÉES sur commander pour l'ensemble du CLI (`Cli.initCommander`).
10
+ * Mais les commandes qui répondent par le raccourci autonome — `create`,
11
+ * `doctor`, `env`, `card`, `symbols` — ne passent jamais par commander : elles
12
+ * lisent `process.argv` elles-mêmes, précisément pour répondre sans démarrer
13
+ * l'application. Elles refusaient donc, avec « option inconnue », ce que l'aide
14
+ * de la ligne au-dessus venait d'annoncer.
15
+ *
16
+ * C'est la faute la plus décourageante qu'un outil puisse commettre : l'aide dit
17
+ * une chose, la commande en dit une autre, et l'utilisateur n'a aucun moyen de
18
+ * savoir laquelle a raison. Vécu sur `nodefony create app --interactive`, la
19
+ * toute première commande qu'on tape.
20
+ *
21
+ * ## Pourquoi ici, et pas dans chaque parseur
22
+ *
23
+ * Cinq parseurs, cinq copies : la sixième commande autonome écrite demain
24
+ * rouvrirait le trou sans que personne le voie. La liste des options globales
25
+ * vit à UN endroit, et chaque parseur l'APPELLE.
26
+ *
27
+ * ## Ce que « accepter » veut dire
28
+ *
29
+ * Absorber, pas exécuter. Ces options n'ont aucun effet propre sur une commande
30
+ * qui ne pose aucune question et n'ouvre aucun journal de débogage — et c'est
31
+ * exactement ce que « mode interactif » signifie là où il n'y a rien à demander.
32
+ * Là où le mode interactif EXISTE (`create`), il est déjà le comportement par
33
+ * défaut en terminal : le drapeau confirme ce qui se produit déjà, il ne
34
+ * l'active pas.
35
+ *
36
+ * @module
37
+ */
38
+ /**
39
+ * Les options déclarées pour tout le CLI, formes courtes et longues.
40
+ *
41
+ * Miroir de ce que pose {@link Cli.initCommander}. `--version` n'y figure pas :
42
+ * elle est servie par son propre raccourci, avant tout parsing de commande.
43
+ */
44
+ const GLOBAL_FLAGS = /* @__PURE__ */ new Set([
45
+ "-i",
46
+ "--interactive",
47
+ "-d",
48
+ "--debug"
49
+ ]);
50
+ /** Ce mot est-il une option que le CLI déclare pour toutes ses commandes ? */
51
+ function isGlobalCliFlag(word) {
52
+ return GLOBAL_FLAGS.has(word);
53
+ }
54
+ /**
55
+ * Retire d'un `argv` les options globales du CLI.
56
+ *
57
+ * À appeler par un parseur autonome AVANT sa propre lecture : ce qui reste est
58
+ * ce qui appartient en propre à la commande.
59
+ *
60
+ * @param argv - les mots de la ligne de commande.
61
+ * @returns les mots restants, dans l'ordre.
62
+ */
63
+ function stripGlobalCliFlags(argv) {
64
+ return argv.filter((w) => !isGlobalCliFlag(w));
65
+ }
66
+ //#endregion
67
+ export { isGlobalCliFlag, stripGlobalCliFlags };
@@ -0,0 +1,288 @@
1
+ import { createPalette, sectionTitle, wrap, wrapList } from "../kernel/checks/report.js";
2
+ //#region src/cli/helpReport.ts
3
+ /**
4
+ * L'aide de `nodefony` telle qu'un HUMAIN — et un agent — la lisent : rendu PUR.
5
+ *
6
+ * Ce module ne connaît ni le terminal, ni commander : la largeur, les couleurs
7
+ * et les commandes lui sont DONNÉES, et il rend des lignes. Deux raisons, et la
8
+ * seconde est la vraie.
9
+ *
10
+ * 1. Il devient éprouvable ailleurs que dans le terminal où il tourne — donc en
11
+ * intégration continue, où il n'y en a pas.
12
+ * 2. L'aide de commander groupe par ORIGINE du code (« Commands: », « Module
13
+ * drizzle »). C'est le seul axe qu'un programme sache dériver seul, et c'est
14
+ * pourquoi il existe — pas parce qu'il sert. Personne ne demande « qu'offre
15
+ * le module http ? » : on demande comment LANCER, ce qui CLOCHE, comment
16
+ * faire ÉVOLUER. L'humain balaie des titres, l'agent projette une intention
17
+ * sur une commande : c'est le même geste, donc un seul axe — et surtout pas
18
+ * une section « pour agent » en fin de page, qui dupliquerait les commandes
19
+ * en disant à l'humain que ceci n'est pas pour lui.
20
+ *
21
+ * @module
22
+ */
23
+ /**
24
+ * Les groupes d'intention, dans l'ordre de la JOURNÉE de travail.
25
+ *
26
+ * On lance, on regarde ce qui cloche, on fait évoluer — puis viennent les
27
+ * domaines (base, comptes, front) et l'outillage. L'ordre est le contenu : il
28
+ * répond avant qu'on ait lu les titres.
29
+ */
30
+ const HELP_GROUPS = [
31
+ "LANCER",
32
+ "COMPRENDRE",
33
+ "GÉNÉRER ET CONSTRUIRE",
34
+ "BASE DE DONNÉES",
35
+ "COMPTES ET SECRETS",
36
+ "FRONT ET RÉSEAU",
37
+ "AGENTS ET OUTILLAGE"
38
+ ];
39
+ /**
40
+ * Le libellé de chaque intention DANS LE MENU interactif.
41
+ *
42
+ * 🔴 Une seule taxonomie, deux rendus. Le menu s'adresse à quelqu'un qui hésite
43
+ * (phrase, minuscules) et l'aide à quelqu'un qui balaie (titre, capitales) : les
44
+ * libellés diffèrent, le CLASSEMENT non. Écrits séparément, ils divergeaient
45
+ * déjà — une commande rangée sous « Comprendre » au menu et ailleurs dans
46
+ * l'aide apprend au lecteur à ne se fier ni à l'un ni à l'autre.
47
+ */
48
+ const MENU_GROUP_LABELS = {
49
+ LANCER: "Serveur",
50
+ COMPRENDRE: "Comprendre",
51
+ "GÉNÉRER ET CONSTRUIRE": "Faire évoluer",
52
+ "BASE DE DONNÉES": "Base de données",
53
+ "COMPTES ET SECRETS": "Comptes et secrets",
54
+ "FRONT ET RÉSEAU": "Front et réseau",
55
+ "AGENTS ET OUTILLAGE": "Outillage"
56
+ };
57
+ /**
58
+ * L'ordre à l'intérieur d'un groupe, quand il ne doit rien au hasard.
59
+ *
60
+ * Dans COMPRENDRE, c'est l'ordre de la DÉCOUVERTE : la carte de visite dit où
61
+ * l'on est, le diagnostic ce qui cloche, l'inspection ce qui tourne. Trier par
62
+ * ordre alphabétique y mettrait `card` après `env` et ferait commencer par un
63
+ * détail. Une commande absente de cette table passe après, par ordre
64
+ * alphabétique — un module tiers ne peut pas être classé par nous.
65
+ */
66
+ const ORDER_IN_GROUP = {
67
+ LANCER: [
68
+ "development",
69
+ "production",
70
+ "cluster",
71
+ "status",
72
+ "stop"
73
+ ],
74
+ COMPRENDRE: [
75
+ "card",
76
+ "doctor",
77
+ "inspect",
78
+ "env",
79
+ "symbols"
80
+ ],
81
+ "GÉNÉRER ET CONSTRUIRE": [
82
+ "create",
83
+ "build",
84
+ "install",
85
+ "outdated"
86
+ ]
87
+ };
88
+ /**
89
+ * Largeur maximale de la colonne des noms.
90
+ *
91
+ * 🔴 Plafonnée, et c'est tout l'écart avec commander : une seule commande
92
+ * longue (`test-frontend-angular:build`) élargissait la colonne pour les
93
+ * trente-huit autres, et l'aide devenait un mur de blanc. Au-delà, la
94
+ * description passe SOUS le nom — un cas isolé ne coûte plus qu'à lui-même.
95
+ */
96
+ const COLUMN_MAX = 24;
97
+ /** L'indentation d'une commande, sous le titre de son groupe. */
98
+ const ITEM = " ";
99
+ /**
100
+ * La largeur de la colonne des noms — UNE seule pour toute la page.
101
+ *
102
+ * Deux largeurs différentes selon le groupe feraient sauter l'œil d'un bloc à
103
+ * l'autre. Les noms qui dépassent {@link COLUMN_MAX} sont écartés du calcul :
104
+ * ils prennent leur propre ligne, et ne coûtent donc qu'à eux-mêmes.
105
+ *
106
+ * @param commands - les commandes qui composent la page.
107
+ * @returns la largeur de la colonne de gauche.
108
+ */
109
+ function nameColumnWidth(commands) {
110
+ return Math.min(COLUMN_MAX, Math.max(0, ...commands.map((c) => displayName(c).length).filter((n) => n <= COLUMN_MAX)));
111
+ }
112
+ /**
113
+ * Le nom d'une commande avec ses alias, tel qu'il se tape.
114
+ *
115
+ * @param cmd - la commande.
116
+ * @returns `doctor|check`, ou le nom seul.
117
+ */
118
+ function displayName(cmd) {
119
+ return cmd.aliases.length ? `${cmd.name}|${cmd.aliases.join("|")}` : cmd.name;
120
+ }
121
+ /**
122
+ * Range les commandes par groupe, dans l'ordre d'affichage.
123
+ *
124
+ * Les commandes sans groupe connu tombent sous leur MODULE — ce qui reste vrai
125
+ * pour un module tiers, dont personne ici ne peut deviner l'intention. Sans
126
+ * module ni groupe, elles ferment la marche sous « AUTRES ».
127
+ *
128
+ * @param commands - toutes les commandes connues.
129
+ * @returns les groupes non vides, dans l'ordre de lecture.
130
+ */
131
+ function groupCommands(commands) {
132
+ const par = /* @__PURE__ */ new Map();
133
+ const add = (title, cmd) => {
134
+ const list = par.get(title);
135
+ if (list) list.push(cmd);
136
+ else par.set(title, [cmd]);
137
+ };
138
+ for (const cmd of commands) if (cmd.group && HELP_GROUPS.includes(cmd.group)) add(cmd.group, cmd);
139
+ else if (cmd.module) add(`MODULE ${cmd.module.toUpperCase()}`, cmd);
140
+ else add("AUTRES", cmd);
141
+ const rang = (title, cmd) => {
142
+ const order = ORDER_IN_GROUP[title];
143
+ if (!order) return Number.POSITIVE_INFINITY;
144
+ const at = order.indexOf(cmd.name);
145
+ return at === -1 ? Number.POSITIVE_INFINITY : at;
146
+ };
147
+ const sort = (title, list) => [...list].sort((a, b) => {
148
+ const ra = rang(title, a);
149
+ const rb = rang(title, b);
150
+ return ra === rb ? a.name.localeCompare(b.name) : ra - rb;
151
+ });
152
+ const output = [];
153
+ for (const title of HELP_GROUPS) {
154
+ const list = par.get(title);
155
+ if (list) output.push({
156
+ title,
157
+ commands: sort(title, list)
158
+ });
159
+ }
160
+ const modules = [...par.keys()].filter((t) => t.startsWith("MODULE ")).sort((a, b) => a.localeCompare(b));
161
+ for (const title of modules) output.push({
162
+ title,
163
+ commands: sort(title, par.get(title) ?? [])
164
+ });
165
+ const others = par.get("AUTRES");
166
+ if (others) output.push({
167
+ title: "AUTRES",
168
+ commands: sort("AUTRES", others)
169
+ });
170
+ return output;
171
+ }
172
+ /**
173
+ * Une entrée à deux colonnes, qui ne déborde jamais.
174
+ *
175
+ * @param terme - la colonne de gauche (nom, drapeaux).
176
+ * @param text - la colonne de droite.
177
+ * @param column - largeur de la colonne de gauche.
178
+ * @param width - largeur utile.
179
+ * @param p - la peinture.
180
+ * @param teinte - le rôle de peinture de la colonne de gauche.
181
+ * @returns une ou plusieurs lignes.
182
+ */
183
+ function input(terme, text, column, width, p, teinte, accepts) {
184
+ const longestWord = Math.max(0, ...text.split(" ").map((m) => m.length));
185
+ const alignee = `${ITEM}${" ".repeat(column + 2)}`;
186
+ const indent = width - alignee.length >= longestWord ? alignee : `${ITEM} `;
187
+ const lines = [];
188
+ if (terme.length > column) {
189
+ lines.push(`${ITEM}${teinte(terme)}`);
190
+ for (const l of wrap(text, width - indent.length, "")) lines.push(indent + p.dim(l));
191
+ } else {
192
+ const pad = " ".repeat(column - terme.length);
193
+ const [premiere, ...suite] = wrap(text, width - indent.length, "");
194
+ lines.push(`${ITEM}${teinte(terme)}${pad} ${p.dim(premiere ?? "")}`);
195
+ for (const l of suite) lines.push(indent + p.dim(l));
196
+ }
197
+ if (accepts?.values.length) lines.push(...values(accepts, indent, width, p));
198
+ return lines;
199
+ }
200
+ /**
201
+ * Ce qu'une commande ACCEPTE, aligné SOUS sa description.
202
+ *
203
+ * 🔴 Aligné sous la description, jamais rejeté à gauche derrière une flèche :
204
+ * l'œil suit une colonne, et une puce exotique à mi-hauteur casse précisément
205
+ * celle qu'il vient d'établir. Les valeurs se lisent alors comme la suite de la
206
+ * phrase — ce qu'elles sont —, et leur continuation s'aligne sous la première
207
+ * valeur plutôt que sous le libellé.
208
+ *
209
+ * @param accepts - le libellé de l'argument et ses valeurs.
210
+ * @param indent - l'indentation de la description.
211
+ * @param width - largeur utile.
212
+ * @param p - la peinture.
213
+ * @returns les lignes de l'énumération.
214
+ */
215
+ function values(accepts, indent, width, p) {
216
+ const prefixe = `${accepts.label} : `;
217
+ const dispo = width - indent.length - prefixe.length;
218
+ if (dispo < 12) {
219
+ const output = [indent + p.dim(prefixe.trimEnd())];
220
+ for (const l of wrapList([...accepts.values], width - indent.length)) output.push(indent + p.dim(l));
221
+ return output;
222
+ }
223
+ return wrapList([...accepts.values], dispo).map((l, i) => i === 0 ? indent + p.dim(prefixe + l) : indent + " ".repeat(prefixe.length) + p.dim(l));
224
+ }
225
+ /**
226
+ * L'aide complète, ligne par ligne, sans retour chariot final.
227
+ *
228
+ * @param model - ce qu'il y a à dire.
229
+ * @param opts - le décor (largeur, couleur).
230
+ * @returns les lignes à écrire, dans l'ordre.
231
+ */
232
+ function renderHelp(model, opts) {
233
+ const { width, color } = opts;
234
+ const p = createPalette(color);
235
+ const lines = [];
236
+ const marque = `⬢ Nodefony${model.version ? ` v${model.version}` : ""}`;
237
+ const baseline = "framework fullstack Node.js — HTTP · WS · ORM · IA";
238
+ const peint = ` ${p.strong("⬢ Nodefony")}${model.version ? ` ${p.dim(`v${model.version}`)}` : ""}`;
239
+ if (` ${marque} ${baseline}`.length <= width) lines.push(`${peint} ${p.dim(baseline)}`);
240
+ else if (` ${baseline}`.length <= width) lines.push(peint, ` ${p.dim(baseline)}`);
241
+ else lines.push(peint);
242
+ lines.push("");
243
+ for (const [terme, value] of [["usage :", "nodefony <commande> [options]"], ["aide d'une commande :", "nodefony <commande> --help"]]) {
244
+ const une = ` ${terme} ${value}`;
245
+ lines.push(une.length <= width ? ` ${p.dim(terme)} ${value}` : ` ${p.dim(terme)}`);
246
+ if (une.length > width) lines.push(` ${value}`);
247
+ }
248
+ const groups = groupCommands(model.commands);
249
+ const column = nameColumnWidth(model.commands);
250
+ const section = (title) => {
251
+ const { title: t, divider } = sectionTitle(title, width);
252
+ lines.push("", p.strong(t) + p.dim(divider), "");
253
+ };
254
+ for (const group of groups) {
255
+ section(group.title);
256
+ for (const cmd of group.commands) lines.push(...input(displayName(cmd), cmd.description, column, width, p, p.action, cmd.accepts));
257
+ }
258
+ if (model.globalOptions.length > 0) {
259
+ section("OPTIONS GLOBALES");
260
+ const colOpt = Math.min(COLUMN_MAX, Math.max(0, ...model.globalOptions.map((o) => o.flags.length)));
261
+ for (const opt of model.globalOptions) lines.push(...input(opt.flags, opt.description, colOpt, width, p, p.strong));
262
+ }
263
+ if (model.modules && model.modules.length > 0) {
264
+ lines.push("", ` ${p.strong(`Modules chargés (${model.modules.length})`)}`);
265
+ for (const l of wrapList([...model.modules], width - 2)) lines.push(` ${p.dim(l)}`);
266
+ }
267
+ if (model.note) {
268
+ lines.push("");
269
+ for (const l of wrap(model.note, width - 4, "")) lines.push(` ${p.warning("!")} ${p.dim(l)}`);
270
+ if (model.noteAction) lines.push(` ${p.dim("Pour commencer :")} ${p.action(model.noteAction)}`);
271
+ }
272
+ if (model.jsonCommands && model.jsonCommands.length > 0) {
273
+ lines.push("");
274
+ const prefixe = " Réponse machine (--json) :";
275
+ const dispo = width - 28 - 1;
276
+ const plies = wrapList([...model.jsonCommands], Math.max(dispo, 1));
277
+ if (plies.every((l) => l.length <= dispo)) for (const [i, l] of plies.entries()) lines.push(i === 0 ? `${p.dim(prefixe)} ${p.dim(l)}` : `${" ".repeat(29)}${p.dim(l)}`);
278
+ else {
279
+ lines.push(p.dim(prefixe));
280
+ for (const l of wrapList([...model.jsonCommands], width - 4)) lines.push(` ${p.dim(l)}`);
281
+ }
282
+ }
283
+ lines.push("");
284
+ for (const [terme, value] of [["Manuel :", "man nodefony"], ["Docs :", "nodefony.github.io/nodefony-core"]]) lines.push(` ${p.dim(terme)} ${value}`);
285
+ return lines;
286
+ }
287
+ //#endregion
288
+ export { HELP_GROUPS, MENU_GROUP_LABELS, groupCommands, renderHelp };