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,251 @@
1
+ /**
2
+ * JsonRpcPeer — moteur protocole **JSON-RPC 2.0 ISOMORPHE** (client ET serveur).
3
+ *
4
+ * Client et serveur sont des **pairs** : le protocole (classer une frame, router,
5
+ * corréler les réponses) est identique des deux côtés. Cette classe l'implémente
6
+ * **une seule fois** ; chaque côté l'enrobe de son transport (`send`) et de ses
7
+ * handlers. → fin de la duplication client/serveur (la discrimination request /
8
+ * notification / response vivait à 2 endroits qui divergeaient).
9
+ *
10
+ * Transport-agnostique : on injecte `send(frame)` ; le peer ignore WebSocket/TCP/…
11
+ * Aucune dépendance Node (browser-safe) : seulement `setTimeout`/`clearTimeout`.
12
+ *
13
+ * ── La RÈGLE de discrimination (le cœur) ──
14
+ * Le RÔLE d'une frame se lit sur `method`, PAS sur `id` :
15
+ * - `method` + `id` → **requête** entrante → handler enregistré → réponse `result`/`error`
16
+ * - `method` seul → **notification** → `onNotification` (pas de réponse)
17
+ * - `id` sans `method` → **réponse** → résout/rejette un `pending` sortant
18
+ * `id` autorisé string OU number (JSON-RPC 2.0 §id). Méthode inconnue → `-32601` ;
19
+ * handler qui throw → `-32603` (message GÉNÉRIQUE au pair, détail via `onError` = Zero Trust).
20
+ *
21
+ * ── Types partagés (pattern Socket.IO) ────────────────────────────────────
22
+ * 3 génériques (`Emit`, `Listen`, `Actions`) avec **défauts permissifs**
23
+ * ({@link DefaultEventsMap}, {@link DefaultActionsMap}) : code non paramétré
24
+ * → comportement pré-types inchangé (rétro-compat 100%). Cf {@link EventsMap},
25
+ * {@link ActionsMap} et le détail dans `RealtimeEventMap.ts`.
26
+ */
27
+ import type { ActionNames, ActionParams, ActionResult, ActionsMap, DefaultActionsMap, DefaultEventsMap, EventNames, EventPayload, EventsMap, TypedRpcActionHandler } from "./RealtimeEventMap.js";
28
+ /** Erreur JSON-RPC 2.0 (objet `error` d'une réponse). */
29
+ export interface JsonRpcErrorObject {
30
+ code: number;
31
+ message: string;
32
+ data?: unknown;
33
+ }
34
+ /**
35
+ * Erreur RPC **applicative** — l'exception VOLONTAIRE au principe « throw →
36
+ * `-32603` générique » : un handler qui rejette avec une `RpcError` choisit
37
+ * explicitement d'exposer `code`/`message`/`data` au pair (404 d'un path
38
+ * invoqué, 403 d'un voter…). Tout autre throw reste opaque (Zero Trust).
39
+ *
40
+ * Isomorphe : côté serveur le handler la lève ; côté client `request()` rejette
41
+ * avec — `code` et `data` (ex. `{ status: 404 }`) sont lisibles par l'appelant,
42
+ * symétrie d'un `fetch` qui expose son statut HTTP.
43
+ *
44
+ * Plage de codes : `-32000` à `-32099` (« Server error », réservée applicatif
45
+ * par JSON-RPC 2.0 §5.1). Défaut `-32000`.
46
+ */
47
+ export interface RpcError {
48
+ /** Code JSON-RPC 2.0 (`-32000`…`-32099` applicatif, ou codes protocole). */
49
+ code: number;
50
+ }
51
+ export declare class RpcError extends Error {
52
+ readonly name = "RpcError";
53
+ readonly data?: unknown;
54
+ constructor(message: string, code?: number, data?: unknown);
55
+ }
56
+ /**
57
+ * Métadonnées **serveur** d'une réponse RPC — transportées À CÔTÉ du `result`,
58
+ * jamais dedans (le `result` d'`api.request` doit rester identique à ce que
59
+ * rendrait la même route en REST : « snapshot ≡ GET REST » par construction).
60
+ *
61
+ * Aujourd'hui : `requestId` (dev) = la clé du profil de la frame dans le
62
+ * Profiler → le client peut aller chercher sa radiographie. Champ ouvert :
63
+ * un pair qui n'en connaît pas les clés l'ignore (rétro-compatible).
64
+ */
65
+ export interface RpcMeta {
66
+ /** Identifiant du profil de CETTE invocation (`<connexion>.<n° de frame>`). */
67
+ requestId?: string;
68
+ [key: string]: unknown;
69
+ }
70
+ /**
71
+ * Réponse d'un handler qui veut JOINDRE des métadonnées serveur à son résultat.
72
+ *
73
+ * Un handler retourne normalement sa valeur nue (elle devient `result`). Quand
74
+ * il retourne une enveloppe, le peer la déballe : `result` reste la valeur nue,
75
+ * et `meta` voyage dans un champ frère de la trame JSON-RPC. Coût pour ceux qui
76
+ * ne l'utilisent pas : un `instanceof` par frame.
77
+ */
78
+ export declare class RpcEnvelope<T = unknown> {
79
+ readonly result: T;
80
+ readonly meta: RpcMeta;
81
+ constructor(result: T, meta: RpcMeta);
82
+ }
83
+ /** Résultat d'un appel sortant tracé : la valeur + la méta serveur. */
84
+ export interface RpcTracedResult<T = unknown> {
85
+ result: T;
86
+ meta?: RpcMeta;
87
+ }
88
+ /** Handler d'une action (requête→réponse). Sync ou async ; throw → `-32603`. */
89
+ export type RpcActionHandler = (params: unknown) => unknown | Promise<unknown>;
90
+ /**
91
+ * Handler des notifications entrantes (pas de réponse). Paramétrable par `Listen`
92
+ * (map des notifications REÇUES par ce peer). Défaut permissif → comportement
93
+ * pré-types-partagés inchangé.
94
+ */
95
+ export type RpcNotificationHandler<Listen extends EventsMap = DefaultEventsMap> = <K extends EventNames<Listen>>(method: K, params: EventPayload<Listen, K>) => void;
96
+ /** Nature d'une frame entrante (renvoyée par {@link JsonRpcPeer.handleFrame}). */
97
+ export type JsonRpcFrameKind = "request" | "notification" | "response" | "invalid";
98
+ /**
99
+ * Frame de notification sortante (JSON-RPC 2.0, sans `id` : aucune réponse
100
+ * attendue). Type nommé parce que cette frame **sort du peer** : le fan-out d'un
101
+ * canal diffusé la sérialise une fois pour tous ses abonnés.
102
+ */
103
+ export interface JsonRpcNotification {
104
+ jsonrpc: "2.0";
105
+ method: string;
106
+ params?: unknown;
107
+ }
108
+ /**
109
+ * Motif d'un évènement audit protocolaire (consommé par P6.14 `AuditEventEntity`) :
110
+ * - `invalid` : frame non conforme JSON-RPC 2.0 (pas d'objet, `jsonrpc`≠"2.0", `method` non string sans `id` valide).
111
+ * - `denied` : frame entrante refusée par `beforeDispatch` (Zero Trust realtime — voter P6 a dit non).
112
+ * - `method_not_found` : requête entrante pour une action non enregistrée (`-32601` envoyée).
113
+ * - `internal_error` : handler d'action a throw (`-32603` envoyée, détail loggé via `onError` — Zero Trust : pas renvoyé au pair).
114
+ */
115
+ export type FrameAuditReason = "invalid" | "denied" | "method_not_found" | "internal_error";
116
+ export interface JsonRpcPeerOptions<Emit extends EventsMap = DefaultEventsMap, Listen extends EventsMap = DefaultEventsMap, Actions extends ActionsMap = DefaultActionsMap> {
117
+ /**
118
+ * Envoie une frame sérialisable sur le transport (le peer ignore le transport).
119
+ *
120
+ * Un transport qui sait que la frame **n'est pas partie** (socket fermée,
121
+ * reconnexion en cours) doit retourner `false` : le peer rejette alors la
122
+ * requête corrélée immédiatement, au lieu de laisser l'appelant attendre son
123
+ * timeout pour une frame jamais émise. `void`/`true` = considéré comme émis
124
+ * (comportement historique des transports qui ne savent pas répondre).
125
+ */
126
+ send: (frame: unknown) => boolean | void;
127
+ /** Notifications entrantes (`method` sans `id`) : pub/sub côté client, subscribe/unsubscribe côté serveur. */
128
+ onNotification?: RpcNotificationHandler<Listen>;
129
+ /** Erreur interne d'un handler — détail JAMAIS renvoyé au pair (loggé ici). */
130
+ onError?: (context: string, err: unknown) => void;
131
+ /**
132
+ * **Seam sécurité 1/5 (P13 → P6)** — gate `beforeDispatch` appelé AVANT le
133
+ * dispatch d'une frame entrante (request ET notification — pas les responses,
134
+ * passives). `false` → frame BLOQUÉE (audit `denied`, et pour une requête,
135
+ * réponse `-32001 unauthorized` ; notification = drop silencieux). `true` →
136
+ * dispatch normal. `undefined` (cas client par défaut) → bypass 0-coût.
137
+ *
138
+ * SYNC uniquement (voters P6 = lecture metadata + jeton décodé en cache = ~µs).
139
+ * L'async serait une fausse économie : ajouter `await` sur le hot-path d'une WS
140
+ * coûte une microtask PAR FRAME (~50 ns) y compris quand non-async (Promise.resolve)
141
+ * + sérialise les frames per-peer. Si un voter doit attendre une lookup distante,
142
+ * pré-cacher la décision côté authenticator au handshake.
143
+ *
144
+ * Branchement P6 : reading metadata `@IsGranted` du handler + voters → `boolean`.
145
+ */
146
+ beforeDispatch?: (frame: unknown, peer: IRealtimePeer<Emit, Actions>) => boolean;
147
+ /**
148
+ * **Seam audit 5/5 (P13 → P6.14)** — fire-and-forget sur évènements
149
+ * protocolaires notables (cf {@link FrameAuditReason}). Sync (pas de
150
+ * back-pressure : un audit lent ne doit pas ralentir le pipeline RPC).
151
+ * `undefined` (cas client par défaut) → bypass 0-coût.
152
+ *
153
+ * Le `peer` est passé pour permettre au consommateur (typiquement
154
+ * `RealtimeHub` côté serveur) de retrouver l'**actor** associé à la
155
+ * connexion via son mapping `peer → IRealtimeToken` (slot #6 forward-audit
156
+ * P6 : « qui a été refusé » exige l'identité, pas juste l'IP du paquet).
157
+ *
158
+ * Branchement P6.14 : alimente le journal `AuditEventEntity` (qui agit, qui a
159
+ * été refusé, qui appelle une méthode inconnue — traçabilité Zero Trust).
160
+ */
161
+ onFrameAudit?: (reason: FrameAuditReason, frame: unknown, peer: IRealtimePeer<Emit, Actions>) => void;
162
+ }
163
+ /**
164
+ * Surface BIDIRECTIONNELLE d'un endpoint temps réel — **contrat ISOMORPHE**,
165
+ * identique back et front. `RealtimeClient` (navigateur) ET la connexion serveur
166
+ * l'exposent, en composant le même {@link JsonRpcPeer}. Du code métier écrit
167
+ * contre cette interface tourne des deux côtés (le pari isomorphe de Nodefony).
168
+ *
169
+ * Sortant : `request` (attend une réponse), `notify` (fire-and-forget).
170
+ * Entrant : `receive` (le transport y pousse chaque frame). Callee : `register`.
171
+ */
172
+ /**
173
+ * @typeParam Emit — notifications SORTANTES (typage de `notify`).
174
+ * @typeParam Actions — contrat RPC bidirectionnel (typage de `request`/`register`).
175
+ *
176
+ * Note : `Listen` (notifications ENTRANTES) n'est PAS sur cette interface raw —
177
+ * il est consommé par `JsonRpcPeerOptions.onNotification` et par `RealtimeClient.on()`.
178
+ */
179
+ export interface IRealtimePeer<Emit extends EventsMap = DefaultEventsMap, Actions extends ActionsMap = DefaultActionsMap> {
180
+ /** Requête sortante → `Promise` du `result` (rejette sur `error`/timeout). */
181
+ request<K extends ActionNames<Actions>>(method: K, params?: ActionParams<Actions, K>, timeoutMs?: number): Promise<ActionResult<Actions, K>>;
182
+ /** Notification sortante (pas de réponse). */
183
+ notify<K extends EventNames<Emit>>(method: K, params?: EventPayload<Emit, K>): void;
184
+ /** Expose une action appelable par le pair (requête entrante → `result`). */
185
+ register<K extends ActionNames<Actions>>(method: K, handler: TypedRpcActionHandler<Actions, K>): void;
186
+ /** Retire une action. */
187
+ unregister<K extends ActionNames<Actions>>(method: K): void;
188
+ /** Ingestion d'une frame ENTRANTE (déjà parsée) → classe + route. */
189
+ receive(frame: unknown): JsonRpcFrameKind;
190
+ /** Actions exposées (découverte). */
191
+ readonly methods: string[];
192
+ /** Annule les requêtes en attente (fermeture transport). */
193
+ dispose(reason?: string): void;
194
+ }
195
+ export declare class JsonRpcPeer<Emit extends EventsMap = DefaultEventsMap, Listen extends EventsMap = DefaultEventsMap, Actions extends ActionsMap = DefaultActionsMap> implements IRealtimePeer<Emit, Actions> {
196
+ private readonly opts;
197
+ private nextId;
198
+ private pending;
199
+ private actions;
200
+ constructor(opts: JsonRpcPeerOptions<Emit, Listen, Actions>);
201
+ /** Expose une action (requête entrante `method`+`id` → `result`). Idempotent. */
202
+ register<K extends ActionNames<Actions>>(method: K, handler: TypedRpcActionHandler<Actions, K>): void;
203
+ /** Retire une action. */
204
+ unregister<K extends ActionNames<Actions>>(method: K): void;
205
+ /** Liste des actions exposées (pour annoncer au handshake, découverte côté pair). */
206
+ get methods(): string[];
207
+ /** Requête SORTANTE — `Promise` résolue avec le `result` (rejette sur `error`/timeout). */
208
+ request<K extends ActionNames<Actions>>(method: K, params?: ActionParams<Actions, K>, timeoutMs?: number): Promise<ActionResult<Actions, K>>;
209
+ /**
210
+ * Requête SORTANTE **tracée** — rend `{ result, meta }` au lieu du `result` nu.
211
+ *
212
+ * Même appel que {@link request} : la seule différence est que l'appelant
213
+ * garde la méta serveur (en dev, le `requestId` du profil de la frame → sa
214
+ * radiographie). Un serveur qui n'en émet pas laisse simplement `meta`
215
+ * absent.
216
+ */
217
+ requestTraced<K extends ActionNames<Actions>>(method: K, params?: ActionParams<Actions, K>, timeoutMs?: number): Promise<RpcTracedResult<ActionResult<Actions, K>>>;
218
+ /**
219
+ * Frame d'une notification sortante — **source unique** de sa forme.
220
+ *
221
+ * Extraite pour que le fan-out d'un canal diffusé puisse sérialiser la frame
222
+ * **une seule fois** pour N abonnés, sans jamais risquer de diverger du format
223
+ * qu'émet {@link notify} : les deux voies passent par ici.
224
+ *
225
+ * @param method - nom de la méthode (côté canal : le nom du canal).
226
+ * @param params - charge applicative ; omise de la frame si `undefined`.
227
+ * @returns la frame JSON-RPC 2.0, prête à sérialiser.
228
+ */
229
+ static buildNotification(method: string, params?: unknown): JsonRpcNotification;
230
+ /**
231
+ * Notification SORTANTE (pas de réponse attendue).
232
+ *
233
+ * @returns `false` si le transport a signalé qu'il n'a pas émis. Une
234
+ * notification n'attend rien en retour : sans cette valeur, une frame perdue
235
+ * ne laisserait aucune trace chez l'appelant. Les appels qui se rattrapent
236
+ * seuls (ré-abonnement au reconnect) peuvent l'ignorer.
237
+ */
238
+ notify<K extends EventNames<Emit>>(method: K, params?: EventPayload<Emit, K>): boolean;
239
+ /**
240
+ * Ingestion d'une frame ENTRANTE déjà parsée → classe (request/notification/
241
+ * response) et route. Renvoie la nature (utile log/tests). Ne lève jamais.
242
+ * (Le pendant sortant = `request`/`notify` ; le `send` brut est injecté.)
243
+ */
244
+ receive(msg: unknown): JsonRpcFrameKind;
245
+ /** Annule tous les pending (fermeture du transport). */
246
+ dispose(reason?: string): void;
247
+ private startCall;
248
+ private handleRequest;
249
+ private handleResponse;
250
+ }
251
+ export default JsonRpcPeer;
@@ -0,0 +1,269 @@
1
+ /**
2
+ * Types partagés pour le contrat **realtime** Nodefony — pattern « typed events »
3
+ * (Socket.IO §emitter-typing) appliqué à JSON-RPC 2.0.
4
+ *
5
+ * Le contrat (canaux pub/sub + RPC) est déclaré UNE fois côté partagé, puis injecté
6
+ * en générique sur `IRealtimePeer<Emit, Listen, Actions>`, `JsonRpcPeer<...>` et
7
+ * `RealtimeClient<...>`. Bénéfices : autocomplétion IDE, refactor safe (rename canal
8
+ * → erreur compile partout), doc-as-code. **0 coût runtime** — génériques effacés
9
+ * à la compile.
10
+ *
11
+ * Convention :
12
+ * - `Emit` = ce que CE peer ENVOIE (notifications sortantes).
13
+ * - `Listen` = ce que CE peer REÇOIT (notifications entrantes).
14
+ * - `Actions` = contrat RPC bidirectionnel (les 2 pairs respectent la même map :
15
+ * `request()` typé sortant + `register()` typé entrant).
16
+ *
17
+ * Pour un échange `client ↔ serveur` : symétrie naturelle.
18
+ * Côté client : `Emit = ClientToServer`, `Listen = ServerToClient`.
19
+ * Côté serveur : `Emit = ServerToClient`, `Listen = ClientToServer`.
20
+ */
21
+ /**
22
+ * Map des canaux pub/sub — nom de canal → forme du payload.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * interface ServerToClient extends EventsMap {
27
+ * "chat:room42": { ts: number; msg: string };
28
+ * "presence": { user: string; online: boolean };
29
+ * }
30
+ * ```
31
+ */
32
+ export type EventsMap = Record<string, unknown>;
33
+ /**
34
+ * Map des RPC — nom de méthode → `{ in: paramètres, out: résultat }`.
35
+ *
36
+ * Utilisée par `request()` (sortant) ET `register()` (entrant) : les 2 pairs
37
+ * respectent le même contrat (JSON-RPC 2.0 est symétrique).
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * interface ChatActions extends ActionsMap {
42
+ * "chat:ping": { in: void; out: { pong: boolean; ts: number } };
43
+ * "chat:fetch": { in: { id: string }; out: { msg: string } };
44
+ * }
45
+ * ```
46
+ */
47
+ export type ActionsMap = Record<string, {
48
+ in?: unknown;
49
+ out: unknown;
50
+ }>;
51
+ /**
52
+ * Défaut **permissif** pour `EventsMap` — toute clé `string`, payload `unknown`.
53
+ * Code instancié sans paramétrage (`new JsonRpcPeer(opts)`) → comportement
54
+ * pré-types-partagés inchangé. **Sécurité rétro-compat 100%**.
55
+ */
56
+ export interface DefaultEventsMap {
57
+ [event: string]: unknown;
58
+ }
59
+ /** Défaut **permissif** pour `ActionsMap` (rétro-compat). */
60
+ export interface DefaultActionsMap {
61
+ [method: string]: {
62
+ in?: unknown;
63
+ out: unknown;
64
+ };
65
+ }
66
+ /**
67
+ * Retire l'index signature (`[k: string]: …`) d'un type, en ne gardant que les
68
+ * clés LITTÉRALES déclarées.
69
+ *
70
+ * Indispensable ici : la convention documentée est `interface App extends
71
+ * ActionsMap`, or `extends` fait HÉRITER le `[k: string]` de `Record<string, …>`.
72
+ * Sans ce filtre, `keyof App` vaut `string` — donc tout nom inconnu passe la
73
+ * compile, et la branche « hors map » des types conditionnels devient
74
+ * INATTEIGNABLE (`K extends EventNames<M>` toujours vrai). C'est ce qui typait le
75
+ * handler wildcard `on("*")` à UN argument alors que le runtime l'appelle avec
76
+ * `(method, params)`.
77
+ *
78
+ * Les maps par défaut ({@link DefaultEventsMap}, {@link DefaultActionsMap}) n'ont
79
+ * QUE l'index signature → elles se réduisent à `never`, ce qui fait tomber le
80
+ * code non paramétré dans la branche permissive : rétro-compat préservée.
81
+ */
82
+ type RemoveIndexSignature<T> = {
83
+ [K in keyof T as string extends K ? never : number extends K ? never : symbol extends K ? never : K]: T[K];
84
+ };
85
+ /**
86
+ * Clés LITTÉRALES d'une map, ou `never` si elle n'en déclare aucune (map
87
+ * purement permissive comme {@link DefaultEventsMap}).
88
+ */
89
+ type LiteralKeys<M> = keyof RemoveIndexSignature<M> & string;
90
+ /**
91
+ * Nom valide dans une `EventsMap`.
92
+ *
93
+ * Map qui DÉCLARE des canaux → union stricte de ses noms (autocomplétion, et un
94
+ * nom inconnu est refusé). Map SANS aucune clé littérale (les défauts permissifs)
95
+ * → `string` : le code non paramétré garde son comportement d'avant les types
96
+ * partagés. Le `[…] extends […]` en tuple empêche la distribution du conditionnel
97
+ * sur `never` (qui rendrait `never` au lieu de `string`).
98
+ */
99
+ export type EventNames<M extends EventsMap> = [LiteralKeys<M>] extends [never] ? string : LiteralKeys<M>;
100
+ /** Payload typé d'un canal. */
101
+ export type EventPayload<M extends EventsMap, K extends keyof M> = M[K];
102
+ /** Nom valide dans une `ActionsMap` — même règle que {@link EventNames}. */
103
+ export type ActionNames<M extends ActionsMap> = [LiteralKeys<M>] extends [never] ? string : LiteralKeys<M>;
104
+ /**
105
+ * Paramètres entrants d'une RPC, lus sur le `in` de la déclaration.
106
+ *
107
+ * On teste la PRÉSENCE de la clé (`"in" extends keyof M[K]`) avant d'inférer, au
108
+ * lieu de `M[K] extends { in: infer I }` : un `in` **optionnel** ne satisfait pas
109
+ * une contrainte qui l'exige, et {@link DefaultActionsMap} déclare précisément
110
+ * `in?`. La forme naïve retombait donc sur `undefined` pour tout peer NON
111
+ * paramétré — impossible de passer le moindre paramètre, alors que ce défaut
112
+ * promet une rétro-compat permissive. Zéro impact runtime (types effacés), d'où
113
+ * la survie du trou jusqu'au type-check des tests.
114
+ *
115
+ * - `{ in: { id: string } }` → `{ id: string }`
116
+ * - `{ in: void }` → `void` (appel sans argument)
117
+ * - `{ out: X }` (pas de `in`) → `undefined` (la RPC ne prend rien)
118
+ * - `DefaultActionsMap` (`in?: unknown`) → `unknown` (permissif)
119
+ */
120
+ export type ActionParams<M extends ActionsMap, K extends keyof M> = "in" extends keyof M[K] ? M[K] extends {
121
+ in?: infer I;
122
+ } ? I : undefined : undefined;
123
+ /** Résultat attendu d'une RPC (`out`). */
124
+ export type ActionResult<M extends ActionsMap, K extends keyof M> = M[K]["out"];
125
+ /**
126
+ * Noms d'actions RÉELLEMENT déclarés par le contrat — `never` quand la map n'en
127
+ * déclare aucune ({@link DefaultActionsMap}).
128
+ *
129
+ * ⚠️ À ne pas confondre avec {@link ActionNames}, qui vaut `string` sur une map
130
+ * non paramétrée : ce repli est ce qu'il faut pour une CONTRAINTE (accepter
131
+ * n'importe quelle méthode), mais il rend toujours VRAIE la condition d'un type
132
+ * conditionnel — la branche permissive devient alors inatteignable et le type de
133
+ * résultat demandé par l'appelant est écrasé en `unknown`.
134
+ */
135
+ export type ContractActionNames<M extends ActionsMap> = LiteralKeys<M>;
136
+ /**
137
+ * `params` d'une RPC : dictés par le contrat quand `K` lui appartient, libres
138
+ * sinon. Règle UNIQUE — `IRealtimeSocket`, `RealtimeClient` et
139
+ * `ServerRealtimeSocket` la partagent au lieu de la recopier.
140
+ */
141
+ export type ContractParams<M extends ActionsMap, K> = K extends ContractActionNames<M> ? ActionParams<M, K & keyof M> : unknown;
142
+ /**
143
+ * Résultat d'une RPC : dicté par le contrat quand `K` lui appartient, sinon le
144
+ * `T` que l'appelant demande. Pendant de {@link ContractParams}.
145
+ */
146
+ export type ContractResult<M extends ActionsMap, K, T> = K extends ContractActionNames<M> ? ActionResult<M, K & keyof M> : T;
147
+ /**
148
+ * Handler typé pour une RPC entrante (côté qui expose via `register`).
149
+ * Sync ou async — JSON-RPC 2.0 §5.1 : throw → réponse `-32603 internal_error`.
150
+ */
151
+ export type TypedRpcActionHandler<M extends ActionsMap, K extends keyof M & string> = (params: ActionParams<M, K>) => ActionResult<M, K> | Promise<ActionResult<M, K>>;
152
+ /**
153
+ * Assertion type **compile-time** : `expectType<T>(value)` échoue à la compilation
154
+ * si `value` n'est pas assignable à `T`. **0 coût runtime** (fonction vide).
155
+ *
156
+ * @example
157
+ * ```ts
158
+ * const x = peer.request("chat:ping");
159
+ * expectType<Promise<{ pong: boolean }>>(x); // ✅
160
+ * expectType<Promise<string>>(x); // ❌ TS error
161
+ * ```
162
+ */
163
+ export declare function expectType<T>(_value: T): void;
164
+ /**
165
+ * Identité d'une connexion temps réel, telle que **résolue par le serveur au
166
+ * handshake** (token neutre `IRealtimeToken` côté back) et **annoncée au client**
167
+ * dans la notification système `realtime:welcome`.
168
+ *
169
+ * Le client la lit pour savoir QUI il est **sans taper une route** : anonyme →
170
+ * écran de login (au lieu de deviner via un 401), authentifié → app. Rafraîchie à
171
+ * chaque (re)connexion (un nouveau welcome ⇒ une nouvelle identité). C'est une vue
172
+ * « sur soi » (équivalent `/auth/me`) — **aucun secret** : seulement l'état d'auth
173
+ * et les rôles/scopes du porteur, qu'il connaît déjà.
174
+ */
175
+ export interface RealtimeIdentity {
176
+ /** Type de token résolu (`"anonymous"`, `"session"`, `"jwt"`, …) — discriminator. */
177
+ type: string;
178
+ /** `false` pour un visiteur anonyme (Zero Trust : toujours présent, jamais `null`). */
179
+ authenticated: boolean;
180
+ /** Identifiant logique du porteur (`"anonymous"`, `"user-42"`, …). */
181
+ userIdentifier: string;
182
+ /** Rôles **plats** (RBAC, sans hiérarchie résolue) — `["ROLE_ANONYMOUS"]` si anonyme. */
183
+ roles: string[];
184
+ /** Scopes accordés (clés API / OAuth) — `[]` en session BFF web. */
185
+ scopes: string[];
186
+ }
187
+ /**
188
+ * Payload de la notification système `realtime:welcome` — **1ʳᵉ frame** poussée par
189
+ * le serveur juste après le handshake. Annonce le protocole, les canaux/actions
190
+ * **découvrables** de l'endpoint et l'{@link RealtimeIdentity} résolue de la
191
+ * connexion. Cold path (1×/connexion).
192
+ */
193
+ export interface IRealtimeWelcome {
194
+ /** Timestamp serveur (ms epoch). */
195
+ ts: number;
196
+ /** Étiquette de protocole (`"jsonrpc-2.0"`). */
197
+ protocol: string;
198
+ /** Canaux pub/sub annoncés par l'endpoint (découverte). */
199
+ channels: string[];
200
+ /** Actions RPC exposées par l'endpoint (découverte). */
201
+ methods: string[];
202
+ /** Identité résolue de CETTE connexion (cf {@link RealtimeIdentity}). */
203
+ identity: RealtimeIdentity;
204
+ /**
205
+ * Mode d'exécution du serveur — **posé UNIQUEMENT hors production**.
206
+ *
207
+ * Il existe parce que le client ne dispose sinon que de `import.meta.env.DEV`,
208
+ * qui dit le mode du BUNDLE : une application bâtie pour la production mais
209
+ * servie par un serveur de développement (banc, cluster local, image testée
210
+ * sur le poste) restait muette dans la console alors qu'on avait tout intérêt
211
+ * à la faire parler. Le serveur, lui, sait.
212
+ *
213
+ * ⚠️ **Une absence vaut production, jamais l'inverse.** Un serveur publié
214
+ * n'émet pas ce champ : ce n'est pas un réglage qu'on lit, c'est une
215
+ * permission de parler — et on ne l'accorde pas par défaut.
216
+ */
217
+ env?: string;
218
+ }
219
+ /**
220
+ * Payload de la notification système `realtime:denied` — poussée par le serveur
221
+ * quand une frame `subscribe`/inbound est REFUSÉE par le verrou d'autorisation
222
+ * (P6). Rend le refus OBSERVABLE côté client (une notification, contrairement à
223
+ * une requête, serait sinon droppée en silence → le client resterait aveugle).
224
+ *
225
+ * Contrat de PROTOCOLE **isomorphe** : un seul type, le serveur l'émet
226
+ * (`@nodefony/realtime`), le client le parse (core → notice + event `onDenied`).
227
+ * Zero Trust : `reason` est GÉNÉRIQUE (jamais le rôle/scope manquant — pas
228
+ * d'oracle d'autorisation). Cold path (un refus est rare).
229
+ */
230
+ export interface IRealtimeDenied {
231
+ /** Canal (ou méthode inbound) refusé(e). */
232
+ channel: string;
233
+ /** Motif générique (cf {@link RealtimeDeniedReason}) — jamais le détail de la policy. */
234
+ reason: RealtimeDeniedReason;
235
+ /**
236
+ * Ce qui s'est passé, en clair — **hors production UNIQUEMENT**.
237
+ *
238
+ * `reason` est fermé et générique par construction : c'est ce qui empêche
239
+ * d'en faire un oracle. Mais un développeur qui reçoit `forbidden` n'a alors
240
+ * aucun moyen de savoir LEQUEL des cas il tient — rôle insuffisant, ou
241
+ * plancher de plateforme fermé faute de module de sécurité — ni quoi
242
+ * regarder. Il lui reste à deviner, et un signal qu'on ne sait pas lire ne
243
+ * vaut guère mieux qu'un silence.
244
+ *
245
+ * Ce champ porte donc la phrase utile, et il est posé par
246
+ * {@link deniedDetail}, sur le modèle EXACT de `welcomeEnv` : **absent en
247
+ * production**, où la même phrase deviendrait précisément l'oracle que
248
+ * `reason` refuse d'être. Une absence vaut production, jamais l'inverse.
249
+ */
250
+ detail?: string;
251
+ }
252
+ /**
253
+ * Motif d'un `realtime:denied`. Fermé exprès : le client doit pouvoir traiter
254
+ * TOUS les cas (le compilateur le lui rappelle), et un motif inventé côté
255
+ * serveur ne doit pas atteindre un écran qui ne sait pas le dire.
256
+ *
257
+ * - `"forbidden"` — décision d'AUTORISATION : le verrou de frame a refusé
258
+ * (rôle/scope insuffisant), ou le plancher du namespace de plateforme est
259
+ * fermé faute de module de sécurité. Générique par construction : dire
260
+ * lequel des deux, ou quel rôle manque, serait un oracle.
261
+ * - `"limit"` — garde de RESSOURCE : le plafond de canaux de cette connexion
262
+ * est atteint. Une borne n'est pas un secret, elle se nomme.
263
+ * - `"unknown"` — le canal n'a AUCUN producteur sur ce pod (nom mal orthographié,
264
+ * module non chargé). Ce n'est pas un refus d'accès, et le distinguer ne
265
+ * révèle rien : un canal gardé est tranché en amont, donc rendu `"forbidden"`
266
+ * qu'il existe ou non.
267
+ */
268
+ export type RealtimeDeniedReason = "forbidden" | "limit" | "unknown";
269
+ export {};
@@ -0,0 +1,55 @@
1
+ /**
2
+ * channelRate — granularité (cadence) d'un canal realtime, **convention isomorphe**
3
+ * partagée par les deux bords de la socket.
4
+ *
5
+ * La cadence d'un canal à état (stats, supervision) vit dans son **nom** : `base` nu =
6
+ * cadence serveur par défaut ; `base:<ms>` = cadence explicite. Conséquence voulue (cf
7
+ * vision « la socket Nodefony ») : **1 canal = 1 cadence = 1 ref-count** — `nodefony:orm:health:2000`
8
+ * et `nodefony:orm:health:5000` sont deux tickers distincts, jamais réconciliés.
9
+ *
10
+ * Avant ce module la convention était **dupliquée** : le front fabriquait `base:${ms}` à la
11
+ * main (3×) et le serveur la re-parsait+bornait à la main (3×) → dérive garantie (un bord
12
+ * change la borne, l'autre pas). Ici elle est **centralisée et testée** : le front fabrique
13
+ * via {@link rateChannel}, le serveur résout via {@link parseRate} — même fichier, même règle.
14
+ *
15
+ * Pur (aucune allocation hors la string résultat, uniquement quand un suffixe est requis) et
16
+ * appelé au `subscribe` (chemin froid), jamais par frame.
17
+ *
18
+ * @see {@link IRealtimeChannel} — le handle par-canal, futur point d'accroche de la cadence
19
+ * AIMD (re-subscribe adaptatif), qui s'appuiera sur cette même convention de nommage.
20
+ */
21
+ /** Bornes de cadence d'un canal cadencé (toutes en millisecondes). */
22
+ export interface RateBounds {
23
+ /** Cadence par défaut — celle du canal de base nu (sans suffixe). */
24
+ readonly default: number;
25
+ /** Borne basse (cadence minimale autorisée, anti-DoS event-loop). */
26
+ readonly min: number;
27
+ /** Borne haute (cadence maximale autorisée). */
28
+ readonly max: number;
29
+ }
30
+ /**
31
+ * Construit le nom d'un canal cadencé à partir de sa base et de la cadence demandée.
32
+ *
33
+ * `intervalMs` omis OU égal à `defaultMs` → renvoie `base` nu : on **n'émet pas** de suffixe
34
+ * pour la cadence par défaut, ce qui évite de fragmenter le canal de base entre consommateurs
35
+ * qui veulent tous la valeur par défaut (ils partagent alors un seul ticker ref-compté).
36
+ *
37
+ * @param base - canal de base (ex. `"nodefony:orm:health"`).
38
+ * @param intervalMs - cadence demandée (ms). Omise → canal de base.
39
+ * @param defaultMs - cadence par défaut du canal ; `intervalMs === defaultMs` ⇒ canal de base.
40
+ * @returns `base` ou `base:<ms>`.
41
+ */
42
+ export declare function rateChannel(base: string, intervalMs?: number, defaultMs?: number): string;
43
+ /**
44
+ * Résout la cadence (ms) d'un canal cadencé connu, côté serveur. Le serveur connaît la `base`
45
+ * qu'il vient de matcher ; ce helper en extrait le suffixe `:<ms>`, **borne** dans `bounds` et
46
+ * retombe sur `bounds.default` pour le canal de base nu ou un suffixe invalide.
47
+ *
48
+ * @param channel - canal reçu (`base` ou `base:<ms>`).
49
+ * @param base - canal de base déjà identifié par l'appelant.
50
+ * @param bounds - cadence par défaut + bornes min/max.
51
+ * @returns cadence effective (ms), garantie dans `[bounds.min, bounds.max]` (ou `bounds.default`).
52
+ */
53
+ export declare function parseRate(channel: string, base: string, bounds: RateBounds): number;
54
+ /** Vrai si `channel` est le canal de base nu OU une de ses variantes cadencées `base:<ms>`. */
55
+ export declare function isRateChannel(channel: string, base: string): boolean;