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,160 @@
1
+ import nodefonyError from "../Error.js";
2
+ //#region src/runtime/pageQuery.ts
3
+ /**
4
+ * Erreur d'une requête de page mal formée ou non honorable par le point
5
+ * d'entrée : `order` sur un endpoint qui ne trie pas, champ hors allowlist,
6
+ * sens de tri inconnu.
7
+ *
8
+ * `code = 400` : la faute est au client. Le data plane admin
9
+ * (`AdminApiController`) traduit ce `code` en statut HTTP, comme il le fait
10
+ * déjà pour {@link PaginationModeError}.
11
+ */
12
+ var PageQueryError = class extends nodefonyError {
13
+ constructor(message) {
14
+ super(message, 400);
15
+ }
16
+ };
17
+ const DEFAULT_LIMIT = 50;
18
+ const MAX_LIMIT = 200;
19
+ /**
20
+ * Les clés que le contrat de page revendique sur le fil — **source unique**.
21
+ *
22
+ * Elle existe pour un consommateur : `parseFilters`, qui doit distinguer un
23
+ * paramètre de pagination d'un filtre inconnu, et refuse le second. Recopier
24
+ * cette liste là-bas aurait suffi à ce qu'un `?tenantId=` légitime devienne un
25
+ * `400` le jour où le contrat gagne une clé ici et pas là.
26
+ *
27
+ * `tenantId` y figure bien qu'il ne soit pas encore lu (réserve multi-tenant du
28
+ * contrat, `IPageQuery.tenantId`) : le front l'émet déjà sur les sessions.
29
+ */
30
+ const PAGE_QUERY_KEYS = /* @__PURE__ */ new Set([
31
+ "limit",
32
+ "offset",
33
+ "cursor",
34
+ "order",
35
+ "withTotal",
36
+ "q",
37
+ "tenantId"
38
+ ]);
39
+ /**
40
+ * **La** lecture d'une valeur unique dans une source de page — partagée par
41
+ * {@link parsePageQuery} et `parseFilters`.
42
+ *
43
+ * Une {@link PageQuerySource} peut porter plusieurs valeurs par clé (query
44
+ * string répétée, tableau JSON d'un corps `QUERY`) : c'est le polymorphisme du
45
+ * transport. Aucun des deux lecteurs ne sait quoi faire d'une seconde valeur —
46
+ * ni le contrat de page, ni une spec de filtre n'expriment l'appartenance à un
47
+ * ensemble. Prendre la première et **jeter les autres en silence** rendait une
48
+ * page filtrée sur `a` à qui avait demandé `a` **et** `b`, sans rien dire : la
49
+ * faute exacte que ce contrat bannit partout ailleurs.
50
+ *
51
+ * D'où le refus. Le jour où un point d'entrée doit accepter plusieurs valeurs,
52
+ * ce sera une nature de filtre déclarée (`["in", …]`), pas une tolérance
53
+ * implicite du lecteur.
54
+ *
55
+ * @throws {@link PageQueryError} (`400`) si la clé porte plus d'une valeur.
56
+ */
57
+ const singleValue = (source, key) => {
58
+ const value = source[key];
59
+ if (value === void 0) return void 0;
60
+ if (!Array.isArray(value)) return value;
61
+ if (value.length > 1) throw new PageQueryError(`Parameter "${key}" was given ${value.length} values; this endpoint reads a single value per parameter.`);
62
+ return value[0];
63
+ };
64
+ /** Alias interne — la lecture unique, sous le nom court du fichier. */
65
+ const one = singleValue;
66
+ /** Entier décimal strict — `undefined` si absent, vide ou non numérique. */
67
+ const int = (source, key) => {
68
+ const raw = one(source, key);
69
+ if (raw === void 0 || raw === "") return void 0;
70
+ const n = Number.parseInt(raw, 10);
71
+ return Number.isFinite(n) ? n : void 0;
72
+ };
73
+ /**
74
+ * Lit le tri `champ:sens[,champ:sens]*` et le valide contre l'allowlist.
75
+ *
76
+ * @throws {@link PageQueryError} si l'endpoint ne trie pas, si un champ n'est
77
+ * pas dans `sortable`, ou si un sens n'est ni `ASC` ni `DESC`.
78
+ */
79
+ const parseOrder = (raw, sortable) => {
80
+ if (!sortable || sortable.length === 0) throw new PageQueryError(`This endpoint does not support sorting; drop the "order" parameter.`);
81
+ const order = [];
82
+ for (const part of raw.split(",")) {
83
+ const spec = part.trim();
84
+ if (spec === "") continue;
85
+ const sep = spec.lastIndexOf(":");
86
+ const field = sep === -1 ? spec : spec.slice(0, sep);
87
+ const rawDir = sep === -1 ? "ASC" : spec.slice(sep + 1);
88
+ if (!sortable.includes(field)) throw new PageQueryError(`Unsortable field "${field}". Sortable fields: ${sortable.join(", ")}.`);
89
+ const dir = rawDir.toUpperCase();
90
+ if (dir !== "ASC" && dir !== "DESC") throw new PageQueryError(`Invalid sort direction "${rawDir}" for field "${field}" (expected ASC or DESC).`);
91
+ order.push([field, dir]);
92
+ }
93
+ return order.length ? order : void 0;
94
+ };
95
+ /**
96
+ * **Le** traducteur d'une requête de page : transforme une source clé→valeur en
97
+ * {@link IPageQuery} borné et validé. Fonction **pure** — aucun accès au kernel,
98
+ * à l'ALS ni à la requête HTTP.
99
+ *
100
+ * Il remplace les parseurs `limit`/`offset` que chaque data plane réécrivait
101
+ * pour lui-même. Ces copies avaient déjà divergé (`Number.isNaN` d'un côté,
102
+ * `Number.isFinite` de l'autre : `?limit=abc` bornait à `50` ici et plantait à
103
+ * `NaN` là), et aucune ne validait le tri.
104
+ *
105
+ * Ce qui est lu, et rien d'autre — un paramètre inconnu est laissé à l'appelant,
106
+ * qui compose ses propres filtres par-dessus (`interface XQuery extends
107
+ * IPageQuery`) :
108
+ *
109
+ * | Paramètre | Forme sur le fil | Résultat |
110
+ * | ------------ | --------------------------- | ------------------------------------------- |
111
+ * | `limit` | `?limit=20` | borné à `[1, maxLimit]`, défaut `defaultLimit` |
112
+ * | `offset` | `?offset=40` | `≥ 0` (négatif ou invalide → absent) |
113
+ * | `cursor` | `?cursor=abc` | posé si non vide |
114
+ * | `order` | `?order=name:ASC,age:DESC` | validé contre `sortable` |
115
+ * | `withTotal` | `?withTotal=false` | posé **seulement** si `false` (défaut `true`) |
116
+ * | `q` | `?q=jean` | trimé, posé si non vide — **refusé** sans `searchable` |
117
+ *
118
+ * `offset` et `cursor` peuvent tous deux être présents ici : ce n'est pas à ce
119
+ * traducteur d'arbitrer, mais au store, qui seul connaît son mode — il l'énonce
120
+ * en appelant `assertPageQuery(query, mode)` en première ligne de son `listPage`.
121
+ *
122
+ * @param source - la query string parsée, ou le corps d'une requête `QUERY`.
123
+ * @param options - bornes et champs triables de ce point d'entrée.
124
+ * @returns une requête de page conforme au contrat, prête pour un store.
125
+ * @throws {@link PageQueryError} (`code` 400) si le tri demandé n'est pas
126
+ * honorable par ce point d'entrée.
127
+ *
128
+ * @example
129
+ * ```ts
130
+ * const query = parsePageQuery(request.query, {
131
+ * maxLimit: 200,
132
+ * sortable: ["username", "createdAt"],
133
+ * });
134
+ * return repository.listPage({ ...query, enabled: true });
135
+ * ```
136
+ */
137
+ function parsePageQuery(source, options = {}) {
138
+ const maxLimit = options.maxLimit ?? MAX_LIMIT;
139
+ const defaultLimit = Math.min(options.defaultLimit ?? DEFAULT_LIMIT, maxLimit);
140
+ const rawLimit = int(source, "limit");
141
+ const query = { limit: rawLimit === void 0 ? defaultLimit : Math.min(Math.max(rawLimit, 1), maxLimit) };
142
+ const offset = int(source, "offset");
143
+ if (offset !== void 0 && offset >= 0) query.offset = offset;
144
+ const cursor = one(source, "cursor");
145
+ if (cursor) query.cursor = cursor;
146
+ const rawOrder = one(source, "order");
147
+ if (rawOrder) {
148
+ const order = parseOrder(rawOrder, options.sortable);
149
+ if (order) query.order = order;
150
+ }
151
+ if (one(source, "withTotal") === "false") query.withTotal = false;
152
+ const q = one(source, "q")?.trim();
153
+ if (q) {
154
+ if (!options.searchable) throw new PageQueryError("This endpoint does not support full-text search (\"q\"). Use the declared filters instead.");
155
+ query.q = q;
156
+ }
157
+ return query;
158
+ }
159
+ //#endregion
160
+ export { PAGE_QUERY_KEYS, PageQueryError, parsePageQuery, singleValue };
@@ -0,0 +1,114 @@
1
+ //#region src/runtime/pageSort.ts
2
+ /** Une valeur absente ne se compare pas — elle se range à part. */
3
+ const missing = (v) => v === null || v === void 0;
4
+ /**
5
+ * Compare deux valeurs de tri **présentes**, tous types confondus. Le cas des
6
+ * absentes est traité par {@link compareByOrder}, en dehors de l'inversion de
7
+ * sens : les y laisser reviendrait à les faire remonter en tête d'un tri `DESC`,
8
+ * ce qui n'a jamais renseigné personne.
9
+ */
10
+ function compareValues(a, b) {
11
+ if (a instanceof Date || b instanceof Date) return Number(a) - Number(b);
12
+ if (typeof a === "number" && typeof b === "number") return a - b;
13
+ if (typeof a === "boolean" && typeof b === "boolean") return Number(a) - Number(b);
14
+ return String(a).localeCompare(String(b));
15
+ }
16
+ /**
17
+ * Réécrit les noms de champs d'un `order` selon une table d'alias — le pont
18
+ * entre le vocabulaire **public** (celui de l'URL) et le schéma d'un backend.
19
+ *
20
+ * Il existe parce que chaque store le refaisait : trois fonctions strictement
21
+ * identiques traduisaient `id` vers `_id` ou `session_id`, une par ressource.
22
+ * La règle (« réécrire les noms ») est la même partout ; seule la TABLE change,
23
+ * et c'est elle qui est une donnée du backend, pas du code.
24
+ *
25
+ * Un champ absent de la table passe inchangé — l'immense majorité des noms
26
+ * publics sont déjà ceux du schéma.
27
+ *
28
+ * @param order - l'ordre demandé, en vocabulaire public.
29
+ * @param aliases - `{ nomPublic: nomDansLeSchéma }`.
30
+ * @returns le même ordre, exprimé dans le schéma du backend.
31
+ *
32
+ * @example
33
+ * ```ts
34
+ * // Mongo stocke la clé primaire en `_id`, il n'existe aucun champ `id`.
35
+ * renameOrderFields(order, { id: "_id" });
36
+ * ```
37
+ */
38
+ function renameOrderFields(order, aliases) {
39
+ return order.map(([field, dir]) => [aliases[field] ?? field, dir]);
40
+ }
41
+ /**
42
+ * Retient d'un `order` demandé les seuls couples dont le champ est **déclaré
43
+ * triable**, et retombe sur l'ordre par défaut s'il n'en reste aucun.
44
+ *
45
+ * C'est le dernier étage d'une garde à deux niveaux, et il n'est pas redondant :
46
+ * le data plane refuse déjà en 400 un champ hors allowlist, mais tout appelant
47
+ * interne (un autre service, un test, un futur endpoint) peut fabriquer un
48
+ * `IPageQuery` à la main. Sans ce filtre, deux backends répondraient
49
+ * différemment à la même requête — celui qui lit l'objet en mémoire trierait sur
50
+ * un champ jamais annoncé, celui qui compose du SQL l'ignorerait — et le contrat
51
+ * partagé ne décrirait plus un comportement mais deux.
52
+ *
53
+ * 🔒 Côté SQL, ce filtre est une **garde d'injection** : un nom de colonne ne se
54
+ * lie pas en paramètre, il se concatène dans le `ORDER BY`.
55
+ *
56
+ * @param order - l'ordre demandé (peut être absent ou vide).
57
+ * @param allowed - les champs que le store déclare savoir trier.
58
+ * @param fallback - l'ordre contractuel appliqué à défaut.
59
+ * @returns un ordre non vide, garanti clos sur `allowed` ∪ `fallback`.
60
+ *
61
+ * @example
62
+ * ```ts
63
+ * const order = pickOrder(query.order, this.sortableFields, DEFAULT_ORDER);
64
+ * rows.sort(compareByOrder(order, (r, f) => r[f as keyof Row]));
65
+ * ```
66
+ */
67
+ function pickOrder(order, allowed, fallback) {
68
+ if (!order || order.length === 0) return fallback;
69
+ const kept = order.filter(([field]) => allowed.includes(field));
70
+ return kept.length > 0 ? kept : fallback;
71
+ }
72
+ /**
73
+ * Fabrique le comparateur d'un `order` du contrat de page — **le** tri en
74
+ * mémoire de Nodefony, partagé par tous les stores qui n'ont pas de moteur pour
75
+ * le faire à leur place.
76
+ *
77
+ * Il existe parce que chaque store mémoire réécrivait le sien, en dur et inline :
78
+ * le tri d'un backend mémoire différait alors de celui du backend SQL de la même
79
+ * ressource, si bien qu'un test vert en mémoire ne disait rien de la production.
80
+ * Les backends SQL et Mongo, eux, n'en ont pas besoin — ils poussent l'`order`
81
+ * dans la requête, où il est infiniment moins cher.
82
+ *
83
+ * Les couples sont appliqués **dans l'ordre** : le premier qui départage
84
+ * l'emporte, les suivants ne servent qu'aux ex æquo. Un `order` vide rend un
85
+ * comparateur neutre (`0` partout), ce qui laisse `Array.prototype.sort` stable
86
+ * et préserve donc l'ordre d'origine.
87
+ *
88
+ * @param order - les couples `[champ, sens]` du contrat.
89
+ * @param read - comment lire un champ sur un élément.
90
+ * @returns un comparateur utilisable tel quel dans `.sort()`.
91
+ *
92
+ * @example
93
+ * ```ts
94
+ * const order = query.order?.length ? query.order : DEFAULT_ORDER;
95
+ * rows.sort(compareByOrder(order, (r, field) => r[field as keyof Row]));
96
+ * ```
97
+ */
98
+ function compareByOrder(order, read) {
99
+ return (a, b) => {
100
+ for (const [field, dir] of order) {
101
+ const va = read(a, field);
102
+ const vb = read(b, field);
103
+ if (missing(va) || missing(vb)) {
104
+ if (missing(va) && missing(vb)) continue;
105
+ return missing(va) ? 1 : -1;
106
+ }
107
+ const cmp = compareValues(va, vb);
108
+ if (cmp !== 0) return dir === "DESC" ? -cmp : cmp;
109
+ }
110
+ return 0;
111
+ };
112
+ }
113
+ //#endregion
114
+ export { compareByOrder, pickOrder, renameOrderFields };
@@ -0,0 +1,43 @@
1
+ //#region src/runtime/redact.ts
2
+ /**
3
+ * Redaction de secrets dans une ligne de texte (logs, SQL profilé, payloads).
4
+ *
5
+ * **Défense en profondeur, pas un contrôle d'accès** : la source de vérité reste
6
+ * « ne pas logger de secret ». Cette passe masque les fuites résiduelles avant
7
+ * d'exposer du texte hors du process (viewer de logs Studio, profiler dev, debug
8
+ * bar). Pure et isomorphe (zéro dépendance Node) → utilisable serveur ET browser.
9
+ *
10
+ * Couvre trois familles fréquentes :
11
+ * - paires clé/valeur JSON `"password":"x"` / `"token": x` ;
12
+ * - paires clé/valeur texte `password=x` / `Authorization: x` ;
13
+ * - schémas d'auth porteurs `Bearer <jwt>` / `Basic <b64>`.
14
+ *
15
+ * Les regex sont compilées une fois (coût nul par appel hormis le `replace`).
16
+ * Hors hot-path requête (admin plane / dev) — l'usage en boucle reste correct
17
+ * mais préférer un appel par ligne.
18
+ */
19
+ /** Clés dont la valeur est considérée sensible (insensible à la casse). */
20
+ const SENSITIVE_KEYS = "password|passwd|pwd|secret|client[_-]?secret|token|access[_-]?token|refresh[_-]?token|id[_-]?token|api[_-]?key|x-api-key|authorization|cookie|set-cookie|session[_-]?id|private[_-]?key";
21
+ /** JSON : `"key": "value"` ou `"key": value` → valeur masquée. */
22
+ const JSON_PAIR = new RegExp(`("(?:${SENSITIVE_KEYS})"\\s*:\\s*)("(?:[^"\\\\]|\\\\.)*"|[^\\s,}\\]]+)`, "gi");
23
+ /** Texte : `key=value` / `key: value` (avec ou sans quotes) → valeur masquée. */
24
+ const KV_PAIR = new RegExp(`\\b(${SENSITIVE_KEYS})(\\s*[:=]\\s*)("[^"]*"|'[^']*'|[^\\s,;]+)`, "gi");
25
+ /** Schémas d'auth porteurs : `Bearer <token>` / `Basic <b64>`. */
26
+ const BEARER = /\b(Bearer|Basic)\s+[A-Za-z0-9._~+/=-]{4,}/gi;
27
+ /** Placeholder unique de remplacement. */
28
+ const MASK = "***";
29
+ /**
30
+ * Renvoie `line` avec les secrets connus masqués par `***`.
31
+ *
32
+ * Idempotent (re-rédiger une ligne déjà masquée ne change rien). Conserve la
33
+ * structure (clés, ponctuation) pour que la ligne reste lisible/diffable.
34
+ *
35
+ * @param line - ligne de log/texte brute.
36
+ * @returns la même ligne, valeurs sensibles remplacées par `***`.
37
+ */
38
+ function redactSecrets(line) {
39
+ if (!line) return line;
40
+ return line.replace(BEARER, `$1 ${MASK}`).replace(JSON_PAIR, `$1"${MASK}"`).replace(KV_PAIR, `$1$2${MASK}`);
41
+ }
42
+ //#endregion
43
+ export { redactSecrets };
@@ -0,0 +1,71 @@
1
+ //#region src/runtime/withTimeout.ts
2
+ /**
3
+ * Borne une promesse par un délai maximum — utilitaire de **résilience de boot**
4
+ * (et de tout `await` susceptible de pendre indéfiniment).
5
+ *
6
+ * Motivation : un `await` sur une opération réseau dont le pair est injoignable
7
+ * peut **ne jamais se résoudre** (ex. l'offline-queue de `node-redis` met la
8
+ * Promise en attente sans la rejeter). Sans garde, un seul de ces `await` gèle
9
+ * tout le cycle de boot du Kernel → les serveurs ne montent jamais.
10
+ *
11
+ * ⚠️ **NE PAS utiliser dans le hot path HTTP/WS** : chaque appel alloue un timer
12
+ * + une Promise de course. Réservé au **boot / lifecycle / jobs** (≪ 1×/process).
13
+ * Le hot path utilise `Event.emitAsync` nu (aucun timer par requête).
14
+ *
15
+ * @module
16
+ */
17
+ /**
18
+ * Erreur levée par {@link withTimeout} quand le délai est dépassé — distincte
19
+ * d'un rejet métier pour que l'appelant puisse différencier « lent/figé » de
20
+ * « a échoué » (ex. politique de boot : timeout d'un module critique en prod).
21
+ */
22
+ var TimeoutError = class extends Error {
23
+ /** Délai (ms) qui a été dépassé. */
24
+ timeoutMs;
25
+ /**
26
+ * @param timeoutMs - délai dépassé, en millisecondes.
27
+ * @param label - libellé optionnel de l'opération (préfixe du message).
28
+ */
29
+ constructor(timeoutMs, label) {
30
+ super(`${label ? `${label}: ` : ""}timeout après ${timeoutMs}ms`);
31
+ this.name = "TimeoutError";
32
+ this.timeoutMs = timeoutMs;
33
+ }
34
+ };
35
+ /**
36
+ * Résout avec la valeur de `promise` si elle se règle avant `timeoutMs`,
37
+ * sinon rejette avec une {@link TimeoutError}.
38
+ *
39
+ * Robustesse :
40
+ * - le timer est `unref` (ne maintient pas l'event-loop vivant) et **toujours**
41
+ * nettoyé (`finally`) → aucun handle qui fuit ;
42
+ * - un `.catch()` est posé sur la promesse d'origine : si elle rejette **après**
43
+ * que le timeout a gagné la course, le rejet ne remonte pas en
44
+ * `unhandledRejection` (qui crasherait le process) ;
45
+ * - `timeoutMs ≤ 0` (ou non fini) → **aucune garde**, on attend la promesse telle
46
+ * quelle (permet de désactiver le timeout par config sans brancher de code).
47
+ *
48
+ * @typeParam T - type résolu par la promesse.
49
+ * @param promise - opération à borner.
50
+ * @param timeoutMs - délai max en millisecondes (≤ 0 = pas de timeout).
51
+ * @param label - libellé optionnel pour le message d'erreur.
52
+ * @returns la valeur résolue par `promise`.
53
+ * @throws {@link TimeoutError} si `timeoutMs` est dépassé.
54
+ * @throws l'erreur d'origine si `promise` rejette avant le timeout.
55
+ */
56
+ async function withTimeout(promise, timeoutMs, label) {
57
+ if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) return await promise;
58
+ const p = Promise.resolve(promise);
59
+ p.catch(() => {});
60
+ let timer;
61
+ try {
62
+ return await Promise.race([p, new Promise((_, reject) => {
63
+ timer = setTimeout(() => reject(new TimeoutError(timeoutMs, label)), timeoutMs);
64
+ timer.unref?.();
65
+ })]);
66
+ } finally {
67
+ if (timer) clearTimeout(timer);
68
+ }
69
+ }
70
+ //#endregion
71
+ export { TimeoutError, withTimeout };
@@ -0,0 +1,202 @@
1
+ import cluster from "node:cluster";
2
+ //#region src/service/cluster/ClusterManager.ts
3
+ /**
4
+ * Calcule le délai de respawn d'un worker mort selon un backoff exponentiel.
5
+ *
6
+ * Anti crash-loop : un worker qui crashe en boucle ne doit pas être re-forké en
7
+ * rafale (CPU 100 %, logs noyés). Le délai double à chaque crash consécutif, plafonné.
8
+ *
9
+ * @param crashes - nombre de crashs consécutifs (>= 1).
10
+ * @param baseMs - délai du 1er respawn.
11
+ * @param maxMs - plafond du délai.
12
+ * @returns délai en ms, dans `[baseMs, maxMs]`.
13
+ */
14
+ function computeBackoff(crashes, baseMs, maxMs) {
15
+ return Math.min(baseMs * 2 ** (Math.max(1, Math.floor(crashes)) - 1), maxMs);
16
+ }
17
+ const nodeScheduler = {
18
+ set: (fn, ms) => setTimeout(fn, ms),
19
+ clear: (h) => clearTimeout(h)
20
+ };
21
+ /** Adapter de production : `node:cluster`. */
22
+ const nodeClusterRuntime = {
23
+ get isPrimary() {
24
+ return cluster.isPrimary;
25
+ },
26
+ fork() {
27
+ const w = cluster.fork();
28
+ return {
29
+ id: w.id,
30
+ kill: (s) => w.kill(s),
31
+ isDead: () => w.isDead()
32
+ };
33
+ },
34
+ onExit(cb) {
35
+ cluster.on("exit", (w, code, signal) => cb({
36
+ id: w.id,
37
+ kill: (s) => w.kill(s),
38
+ isDead: () => w.isDead()
39
+ }, code, signal));
40
+ }
41
+ };
42
+ /**
43
+ * Superviseur cluster du process MASTER (Phase 2 du mode cluster sans PM2).
44
+ *
45
+ * Le master ne sert AUCUN HTTP : il fork N workers, les respawn avec backoff en cas
46
+ * de crash, et coordonne un arrêt gracieux (drain SIGTERM → SIGKILL après timeout).
47
+ * Cgroup-aware via {@link resolveWorkerCount} (le `workers` passé est déjà résolu).
48
+ *
49
+ * Toute la mécanique runtime (`node:cluster`, timers, `process.exit`, signaux) est
50
+ * derrière des seams injectables : le state machine respawn/shutdown est testé sans
51
+ * forker un seul process réel.
52
+ */
53
+ var ClusterManager = class {
54
+ #workers;
55
+ #log;
56
+ #runtime;
57
+ #scheduler;
58
+ #exit;
59
+ #base;
60
+ #max;
61
+ #stableMs;
62
+ #shutdownTimeoutMs;
63
+ #live = /* @__PURE__ */ new Map();
64
+ #consecutiveCrashes = 0;
65
+ #shuttingDown = false;
66
+ #shutdownTimer = null;
67
+ #started = false;
68
+ constructor(opts) {
69
+ this.#workers = Math.max(1, opts.workers);
70
+ this.#log = opts.log ?? (() => {});
71
+ this.#runtime = opts.runtime ?? nodeClusterRuntime;
72
+ this.#scheduler = opts.scheduler ?? nodeScheduler;
73
+ this.#exit = opts.exit ?? ((code) => process.exit(code));
74
+ this.#base = opts.respawnBaseMs ?? 200;
75
+ this.#max = opts.respawnMaxMs ?? 1e4;
76
+ this.#stableMs = opts.stableMs ?? 3e4;
77
+ this.#shutdownTimeoutMs = opts.shutdownTimeoutMs ?? 1e4;
78
+ }
79
+ /** Nombre de workers actuellement vivants. */
80
+ get size() {
81
+ return this.#live.size;
82
+ }
83
+ /**
84
+ * Les gestionnaires de signaux POSÉS PAR CE MANAGER, avec leur signal.
85
+ *
86
+ * Garder la référence est ce qui permet de retirer les siens sans toucher à
87
+ * ceux des autres — la raison d'être de {@link removeSignalHandlers}.
88
+ */
89
+ #signalHandlers = [];
90
+ /** `true` une fois `shutdown()` enclenché (plus aucun respawn). */
91
+ get shuttingDown() {
92
+ return this.#shuttingDown;
93
+ }
94
+ /**
95
+ * Fork les workers initiaux et arme le respawn. Idempotent.
96
+ *
97
+ * @returns `this`.
98
+ */
99
+ start() {
100
+ if (this.#started) return this;
101
+ this.#started = true;
102
+ this.#runtime.onExit((w, code, signal) => this.#onExit(w, code, signal));
103
+ for (let i = 0; i < this.#workers; i += 1) this.#fork();
104
+ this.#log(`cluster master up — ${this.#workers} worker(s)`, "INFO");
105
+ return this;
106
+ }
107
+ #fork() {
108
+ const worker = this.#runtime.fork();
109
+ this.#live.set(worker.id, {
110
+ worker,
111
+ forkedAt: Date.now()
112
+ });
113
+ }
114
+ #onExit(worker, code, signal) {
115
+ const rec = this.#live.get(worker.id);
116
+ this.#live.delete(worker.id);
117
+ const cause = signal ?? `code ${code}`;
118
+ if (this.#shuttingDown) {
119
+ this.#log(`worker ${worker.id} exited (${cause}) — ${this.#live.size} remaining`, "INFO");
120
+ if (this.#live.size === 0) this.#finishShutdown(0);
121
+ return;
122
+ }
123
+ if ((rec ? Date.now() - rec.forkedAt : 0) >= this.#stableMs) this.#consecutiveCrashes = 0;
124
+ this.#consecutiveCrashes += 1;
125
+ const delay = computeBackoff(this.#consecutiveCrashes, this.#base, this.#max);
126
+ this.#log(`worker ${worker.id} died (${cause}) — respawn in ${delay}ms (crash #${this.#consecutiveCrashes})`, "WARNING");
127
+ this.#scheduler.set(() => {
128
+ if (!this.#shuttingDown) this.#fork();
129
+ }, delay);
130
+ }
131
+ /**
132
+ * Arrêt gracieux : déconnecte/SIGTERM chaque worker (drain), puis SIGKILL les
133
+ * survivants après `shutdownTimeoutMs`, et sort le process. Idempotent.
134
+ *
135
+ * @param signal - signal d'origine (log uniquement).
136
+ */
137
+ shutdown(signal = "SIGTERM") {
138
+ if (this.#shuttingDown) return;
139
+ this.#shuttingDown = true;
140
+ this.#log(`${signal} — draining ${this.#live.size} worker(s)`, "CRITIC");
141
+ if (this.#live.size === 0) {
142
+ this.#finishShutdown(0);
143
+ return;
144
+ }
145
+ for (const { worker } of this.#live.values()) if (!worker.isDead()) worker.kill("SIGTERM");
146
+ this.#shutdownTimer = this.#scheduler.set(() => {
147
+ this.#log(`graceful timeout — SIGKILL ${this.#live.size} worker(s)`, "ERROR");
148
+ for (const { worker } of this.#live.values()) if (!worker.isDead()) worker.kill("SIGKILL");
149
+ this.#finishShutdown(1);
150
+ }, this.#shutdownTimeoutMs);
151
+ }
152
+ #finishShutdown(code) {
153
+ if (this.#shutdownTimer !== null) {
154
+ this.#scheduler.clear(this.#shutdownTimer);
155
+ this.#shutdownTimer = null;
156
+ }
157
+ this.#log(`cluster master down (exit ${code})`, "INFO");
158
+ this.#exit(code);
159
+ }
160
+ /**
161
+ * Branche SIGTERM/SIGINT du process MASTER sur {@link shutdown}.
162
+ *
163
+ * Le master prend la main sur ces signaux : `Cli.handleSignals` les mapperait
164
+ * sinon vers un `terminate()` immédiat (process.exit) qui tuerait le master
165
+ * AVANT que les workers aient drainé. À n'appeler que dans le vrai process
166
+ * master.
167
+ *
168
+ * 🔴 **On n'arrache que ce qu'on a posé soi-même.** Cette méthode commençait
169
+ * par `process.removeAllListeners(sig)` — ce qui effaçait AUSSI le
170
+ * gestionnaire qu'un module tiers avait branché sur `SIGTERM` pour son propre
171
+ * arrêt propre. Ce module ne recevait plus rien, et rien ne le lui disait :
172
+ * son code était juste, ses tests passaient, et son nettoyage cessait de
173
+ * s'exécuter le jour où l'application passait en cluster. Le gestionnaire du
174
+ * CLI, lui, se retire NOMMÉMENT — c'est le lanceur qui le fait
175
+ * (`Cli.releaseSignalListeners`), parce que lui seul sait de quelle instance
176
+ * il s'agit.
177
+ */
178
+ installSignalHandlers() {
179
+ for (const sig of ["SIGTERM", "SIGINT"]) {
180
+ const handler = () => this.shutdown(sig);
181
+ this.#signalHandlers.push([sig, handler]);
182
+ process.on(sig, handler);
183
+ }
184
+ }
185
+ /**
186
+ * Retire les gestionnaires que {@link installSignalHandlers} a posés.
187
+ *
188
+ * Symétrique, et pour la même raison qu'il ne faut pas arracher ceux des
189
+ * autres : un master qui s'arrête laisse sinon deux listeners sur un process
190
+ * qui peut lui survivre (tests, outils qui enchaînent des commandes).
191
+ *
192
+ * @returns le nombre de gestionnaires retirés.
193
+ */
194
+ removeSignalHandlers() {
195
+ const n = this.#signalHandlers.length;
196
+ for (const [sig, handler] of this.#signalHandlers) process.removeListener(sig, handler);
197
+ this.#signalHandlers = [];
198
+ return n;
199
+ }
200
+ };
201
+ //#endregion
202
+ export { ClusterManager, ClusterManager as default, computeBackoff };