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,56 @@
1
+ //#region src/client/realtime/localEvents.ts
2
+ /**
3
+ * localEvents — **noms des événements LOCAUX du client temps réel**.
4
+ *
5
+ * Ces six noms ne voyagent jamais sur le fil : ils ne servent qu'à propager, dans
6
+ * la page, ce que le client vient d'apprendre (changement d'état de connexion,
7
+ * identité résolue au welcome, échantillon de statistiques, notice normalisée,
8
+ * refus de canal). Ils partagent la table de `on()`/`off()` avec les canaux
9
+ * réseau ; le double soulignement est ce qui les en distingue.
10
+ *
11
+ * **La table est la source unique**, exactement pour la même raison que
12
+ * {@link PLATFORM_CHANNELS} l'est pour les canaux réseau : une chaîne recopiée
13
+ * dans un écran est une chaîne qui survivra au renommage suivant. Celle-ci avait
14
+ * déjà divergé — `"__state__"` était écrit en clair dans les trois gabarits
15
+ * d'application, dans la barre de debug et dans la console d'administration,
16
+ * sans qu'aucune constante ne l'exporte.
17
+ *
18
+ * Un consommateur n'a d'ailleurs pas à les connaître : `onState`, `onIdentity`,
19
+ * `onStats`, `onNotice`, `onDenied` et `onReconnect` sont les portes publiques. La table existe
20
+ * pour les implémentations (le client lui-même, ses observateurs agnostiques) et
21
+ * pour un test qui veut se brancher au plus bas niveau.
22
+ *
23
+ * Pur et isomorphe (aucun import, aucune allocation).
24
+ */
25
+ /**
26
+ * Événements locaux du {@link RealtimeClient} — jamais émis ni reçus par le réseau.
27
+ *
28
+ * @see {@link RealtimeClient.onState} · {@link RealtimeClient.onIdentity} ·
29
+ * {@link RealtimeClient.onStats} · {@link RealtimeClient.onNotice} ·
30
+ * {@link RealtimeClient.onDenied} — les portes publiques à préférer partout.
31
+ */
32
+ const LOCAL_EVENTS = {
33
+ /** État de la connexion (`"connected" | "reconnecting" | …`), à chaque transition. */
34
+ state: "__state__",
35
+ /** Identité résolue par le serveur au welcome ; `null` après un `disconnect()`. */
36
+ identity: "__identity__",
37
+ /** Tick d'échantillonnage des statistiques par canal (1×/s), sans charge utile. */
38
+ stats: "__stats__",
39
+ /** Notice normalisée (criticité temps réel interprétée). */
40
+ notice: "__notice__",
41
+ /** Refus d'un canal poussé par le serveur (`realtime:denied`). */
42
+ denied: "__denied__",
43
+ /** Tentative de reconnexion programmée (numéro d'essai, délai, échéance). */
44
+ reconnect: "__reconnect__"
45
+ };
46
+ /**
47
+ * Vrai si `event` est un événement local du client (jamais un canal réseau).
48
+ *
49
+ * Sert aux couches qui inspectent la table des abonnements — une barre de debug,
50
+ * un inventaire de canaux — et qui doivent écarter ce qui n'est pas du trafic.
51
+ */
52
+ function isLocalEvent(event) {
53
+ return event === LOCAL_EVENTS.state || event === LOCAL_EVENTS.identity || event === LOCAL_EVENTS.stats || event === LOCAL_EVENTS.notice || event === LOCAL_EVENTS.denied || event === LOCAL_EVENTS.reconnect;
54
+ }
55
+ //#endregion
56
+ export { LOCAL_EVENTS, isLocalEvent };
@@ -0,0 +1,125 @@
1
+ //#region src/client/realtime/notice.ts
2
+ /**
3
+ * Traduit un refus de canal (`realtime:denied`, {@link IRealtimeDenied}) en
4
+ * {@link NodefonyNotice}. Pendant FRAME du {@link closeCodeToNotice} (qui traite
5
+ * la fermeture de la CONNEXION) : ici la connexion vit, seul l'abonnement à CE
6
+ * canal n'a pas abouti.
7
+ *
8
+ * Le message SUIT le motif, parce que les trois n'appellent pas le même geste :
9
+ * un accès refusé demande une élévation de droits, un plafond atteint demande de
10
+ * libérer un abonnement, un canal sans producteur demande de relire son nom. Un
11
+ * « accès refusé » affiché sur une faute de frappe envoie chercher un droit qui
12
+ * n'a jamais manqué. Ce qui reste générique, et le restera, c'est le DÉTAIL de la
13
+ * politique : le serveur ne dit jamais quel rôle ou quel scope manque.
14
+ *
15
+ * @param denied - `{ channel, reason }` reçu du serveur.
16
+ * @returns une notice prête à afficher (toujours, contrairement au close-code).
17
+ */
18
+ function deniedToNotice(denied) {
19
+ const message = denied.reason === "unknown" ? `Canal « ${denied.channel} » inconnu du serveur : personne ne le produit (nom exact ? module chargé ?)` : denied.reason === "limit" ? `Canal « ${denied.channel} » non ouvert : trop d'abonnements sur cette connexion` : `Accès au canal « ${denied.channel} » refusé`;
20
+ return {
21
+ level: denied.reason === "unknown" ? "warning" : "error",
22
+ title: "Temps réel",
23
+ message,
24
+ source: "realtime",
25
+ ts: Date.now()
26
+ };
27
+ }
28
+ /**
29
+ * Traduit un **code de fermeture WebSocket** (RFC 6455 §7.4) en {@link NodefonyNotice}
30
+ * — pendant CLIENT du `toWsCloseCode` serveur (`@nodefony/http`). Pur, sans état,
31
+ * donc trivialement testable et réutilisable.
32
+ *
33
+ * Retourne `null` pour une fermeture **propre** (1000) ou **attendue** (1001 going
34
+ * away = restart serveur, le reconnect rétablit) : pas de bruit inutile.
35
+ *
36
+ * @param code - code de fermeture reçu (`CloseEvent.code`).
37
+ * @param reason - description optionnelle (`CloseEvent.reason`), ajoutée au message.
38
+ * @returns une notice à afficher, ou `null` si la fermeture ne mérite aucune alerte.
39
+ */
40
+ function closeCodeToNotice(code, reason) {
41
+ if (code === 1e3 || code === 1001) return null;
42
+ let level = "warning";
43
+ let message;
44
+ switch (code) {
45
+ case 1002:
46
+ level = "error";
47
+ message = "Erreur de protocole temps réel";
48
+ break;
49
+ case 1003:
50
+ level = "error";
51
+ message = "Données temps réel non supportées";
52
+ break;
53
+ case 1006:
54
+ message = "Connexion temps réel perdue";
55
+ break;
56
+ case 1007:
57
+ level = "error";
58
+ message = "Trame temps réel invalide";
59
+ break;
60
+ case 1008:
61
+ level = "error";
62
+ message = "Accès temps réel refusé";
63
+ break;
64
+ case 1009:
65
+ message = "Message temps réel trop volumineux";
66
+ break;
67
+ case 1010:
68
+ level = "error";
69
+ message = "Extension temps réel requise manquante";
70
+ break;
71
+ case 1011:
72
+ level = "error";
73
+ message = "Erreur serveur temps réel";
74
+ break;
75
+ case 4004:
76
+ level = "error";
77
+ message = "Ressource temps réel introuvable";
78
+ break;
79
+ default: message = typeof code === "number" ? `Connexion temps réel fermée (code ${code})` : "Connexion temps réel fermée";
80
+ }
81
+ const trimmed = reason?.trim();
82
+ return {
83
+ level,
84
+ title: "Temps réel",
85
+ message: trimmed ? `${message} : ${trimmed}` : message,
86
+ source: "realtime",
87
+ code,
88
+ ts: Date.now()
89
+ };
90
+ }
91
+ /**
92
+ * Close codes (RFC 6455 §7.4 + privés Nodefony 4xxx) après lesquels une
93
+ * reconnexion automatique est INUTILE ou NUISIBLE — la cause ne disparaît pas en
94
+ * réessayant : fin propre (1000), erreurs de protocole/négociation
95
+ * (1002/1003/1007/1010), violation de politique = 401/403 mappés (1008), et
96
+ * ressource introuvable (4004, privé Nodefony). Une boucle de reco sur ces codes
97
+ * martèle le serveur pour rien (vécu : un anonyme sur un endpoint protégé).
98
+ */
99
+ const FATAL_CLOSE_CODES = /* @__PURE__ */ new Set([
100
+ 1e3,
101
+ 1002,
102
+ 1003,
103
+ 1007,
104
+ 1008,
105
+ 1010,
106
+ 4004
107
+ ]);
108
+ /**
109
+ * Faut-il tenter une reconnexion après ce close code WebSocket ? Pendant CLIENT
110
+ * de la sémantique RFC 6455 §7.4 émise par le serveur (`toWsCloseCode`).
111
+ *
112
+ * `false` pour les fermetures DÉFINITIVES (cf {@link FATAL_CLOSE_CODES}) : l'app
113
+ * doit agir (ex. login après un 1008) puis rétablir explicitement (`connect()` /
114
+ * `retryNow()`). `true` pour les transitoires (1001 restart, 1006 perte réseau,
115
+ * 1011 erreur serveur, code absent/inconnu) où la reconnexion a une chance.
116
+ *
117
+ * @param code - close code reçu (`CloseEvent.code`), ou `undefined` (anormal).
118
+ * @returns `true` si une reconnexion auto est pertinente.
119
+ */
120
+ function isReconnectableCloseCode(code) {
121
+ if (code === void 0) return true;
122
+ return !FATAL_CLOSE_CODES.has(code);
123
+ }
124
+ //#endregion
125
+ export { closeCodeToNotice, deniedToNotice, isReconnectableCloseCode };
@@ -0,0 +1,280 @@
1
+ import { PLATFORM_CHANNELS } from "../../realtime/platformChannels.js";
2
+ import { RealtimeClient } from "./RealtimeClient.js";
3
+ //#region src/client/realtime/observe.ts
4
+ /**
5
+ * observe — **socle agnostique des liaisons de vue** du client temps réel.
6
+ *
7
+ * Souscrire à un canal, tenir une dernière valeur, borner un journal, filtrer par
8
+ * sévérité, se désabonner proprement : rien de tout cela n'appartient à React, à
9
+ * Vue, à Angular ni à Svelte. Ce qui leur appartient — la SEULE chose qu'une
10
+ * liaison a le droit de contenir — c'est la traduction *rappel + libération →
11
+ * réactivité locale* : un `useState`, un `ref`, un `signal`, une rune.
12
+ *
13
+ * Chaque fonction de ce module a donc la même forme, et c'est tout le contrat :
14
+ *
15
+ * ```
16
+ * observeX(client, …arguments, emit) → dispose
17
+ * ```
18
+ *
19
+ * `emit` est appelé avec la valeur courante ; `dispose` coupe tout. Une liaison
20
+ * s'écrit alors en trois lignes dans n'importe quel framework, et les onze règles
21
+ * qui vivaient dans les hooks React — précédence de la socket fournie, cycle de
22
+ * connexion, appariement `on`↔`subscribe`, format coalescé du journal, tailles
23
+ * d'anneau, canal par défaut — n'existent qu'ICI.
24
+ *
25
+ * Pourquoi ce module existe : sans lui, porter les douze hooks vers trois autres
26
+ * fronts donnait **quatre implémentations de la même règle**, qui divergent en
27
+ * silence. Le dépôt l'a déjà payé — `"__state__"` était recopié en dur dans les
28
+ * trois gabarits, et la convention de cadence avait été fabriquée à la main trois
29
+ * fois côté navigateur avant d'être centralisée.
30
+ *
31
+ * Zéro dépendance à un framework de vue, zéro DOM : ce fichier tourne dans un
32
+ * test Node comme dans un bundle navigateur.
33
+ *
34
+ * @module nodefony/client
35
+ */
36
+ /**
37
+ * Résout la socket partagée d'une adresse — ou adopte celle qu'on lui donne —
38
+ * et rend de quoi la démarrer sans jamais la couper.
39
+ *
40
+ * Trois règles tiennent dans cette fonction, et c'est pour cela qu'elle existe :
41
+ *
42
+ * 1. **`client` l'emporte sur `url`** ; une socket fournie appartient à
43
+ * l'application.
44
+ * 2. **`connect()` est idempotent et son rejet est avalé** — le double montage
45
+ * du mode strict de React n'ouvre pas deux sockets, et un serveur absent au
46
+ * premier essai ne remonte pas une erreur non gérée.
47
+ * 3. **Jamais de `disconnect()` au démontage.** La connexion appartient à la
48
+ * PAGE, pas au composant : couper ici tranche les requêtes en vol des autres
49
+ * consommateurs de la même socket partagée. C'est une régression déjà vécue.
50
+ *
51
+ * Recopiée dans une quatrième liaison, la règle 3 se perd — elle est en creux
52
+ * (« ne pas faire »), donc invisible à la relecture.
53
+ *
54
+ * @example La voie simple, dans n'importe quel framework :
55
+ * ```ts
56
+ * const live = connectShared({ url: "/api/live/realtime" });
57
+ * live.start();
58
+ * observeChannelData(live.socket, "live:events", (e) => setDernier(e));
59
+ * ```
60
+ *
61
+ * @throws si ni `url` ni `client` ne sont fournis — l'adresse dépend de
62
+ * l'application, le framework n'en devine aucune.
63
+ */
64
+ function connectShared(opts) {
65
+ const provided = opts.client;
66
+ const socket = provided ?? RealtimeClient.shared({ url: opts.url });
67
+ const owned = !provided;
68
+ return {
69
+ socket,
70
+ owned,
71
+ start() {
72
+ if (!owned) return;
73
+ socket.connect().catch(() => {});
74
+ }
75
+ };
76
+ }
77
+ /**
78
+ * Observe l'état de la connexion. `emit` reçoit l'état courant **immédiatement**,
79
+ * puis à chaque transition — une liaison n'a donc rien à initialiser à part.
80
+ */
81
+ function observeState(client, emit) {
82
+ emit(client.state);
83
+ return client.onState(emit);
84
+ }
85
+ /**
86
+ * Observe l'identité résolue par le serveur au welcome (`null` tant qu'aucun
87
+ * welcome n'est arrivé, et après un `disconnect()` volontaire). `emit` reçoit la
88
+ * valeur courante immédiatement, puis à chaque (re)welcome.
89
+ *
90
+ * Brique du gating d'écran : `authenticated: false` → écran de connexion, sans
91
+ * route `/auth/me`.
92
+ */
93
+ function observeIdentity(client, emit) {
94
+ emit(client.identity);
95
+ return client.onIdentity(emit);
96
+ }
97
+ /**
98
+ * Observe les **tentatives de reconnexion** programmées par le back-off :
99
+ * numéro d'essai, délai retenu, échéance absolue. De quoi rendre un compte à
100
+ * rebours plutôt qu'un « déconnecté » muet.
101
+ *
102
+ * Contrairement aux autres observateurs, rien n'est émis à la souscription : une
103
+ * tentative est un ÉVÉNEMENT, pas un état — il n'y a pas de « valeur courante »
104
+ * à rejouer, et en inventer une afficherait un compte à rebours périmé.
105
+ */
106
+ function observeReconnect(client, emit) {
107
+ return client.onReconnect(emit);
108
+ }
109
+ /**
110
+ * Observe un canal pub/sub : `emit` est appelé pour chaque message reçu.
111
+ *
112
+ * L'appariement `on`↔`subscribe` et `dispose`↔`unsubscribe` n'est pas réécrit
113
+ * ici : c'est {@link RealtimeClient.channel} qui l'encapsule, et le rejouer
114
+ * mettrait la même règle deux fois dans le cœur. L'abonnement serveur est
115
+ * ref-compté (N observateurs du même canal = un seul abonnement réseau) et
116
+ * rejoué à chaque reconnexion.
117
+ */
118
+ function observeChannel(client, channel, emit) {
119
+ const handle = client.channel(channel);
120
+ handle.on((payload) => emit(payload));
121
+ handle.open();
122
+ return () => handle.close();
123
+ }
124
+ /**
125
+ * Observe la **dernière valeur** reçue sur un canal — le cas le plus courant
126
+ * (dernière mesure d'un flux d'état). `emit` reçoit `initial` immédiatement,
127
+ * puis chaque nouvelle valeur : dernier arrivé gagne.
128
+ */
129
+ function observeChannelData(client, channel, emit, initial = null) {
130
+ emit(initial);
131
+ return observeChannel(client, channel, (payload) => emit(payload));
132
+ }
133
+ /**
134
+ * Observe les **statistiques** d'un canal (débit, série du VU-mètre, total),
135
+ * rafraîchies par l'échantillonneur du client une fois par seconde. `emit`
136
+ * reçoit l'instantané courant immédiatement, puis à chaque échantillon.
137
+ *
138
+ * L'instantané est un objet recréé à chaque lecture : une liaison qui exige une
139
+ * référence stable (le store externe de React) ne doit pas s'y brancher
140
+ * directement — c'est pourquoi le hook correspondant tient un état local.
141
+ */
142
+ function observeChannelStats(client, channel, emit) {
143
+ const read = () => client.getChannelStats(channel) ?? null;
144
+ emit(read());
145
+ return client.onStats(() => emit(read()));
146
+ }
147
+ /**
148
+ * Clé de **re-liaison** d'un canal en cadence adaptative.
149
+ *
150
+ * Trois valeurs, et trois seulement, doivent défaire puis refaire l'abonnement :
151
+ * le canal de base, la cadence désirée et l'interrupteur adaptatif. Ni le
152
+ * gestionnaire, ni le reste des réglages — leur identité change à chaque rendu
153
+ * dans la plupart des frameworks, et re-lier à chaque rendu couperait le flux en
154
+ * boucle.
155
+ *
156
+ * Chaque liaison a besoin de cette clé sous une forme différente (liste de
157
+ * dépendances React, source d'un `watch` Vue, `$effect` Svelte) ; ce qui doit
158
+ * rester commun, c'est **ce qu'elle contient**.
159
+ */
160
+ function adaptiveRebindKey(base, desiredMs, enabled = true) {
161
+ return `${base}|${desiredMs}|${enabled ? 1 : 0}`;
162
+ }
163
+ /**
164
+ * Observe un canal d'ÉTAT en **cadence adaptative** (AIMD piloté par le client) :
165
+ * la cadence recule sous famine et remonte quand c'est sain, sans changement
166
+ * serveur. `emit` reçoit chaque frame à travers les changements de cadence.
167
+ *
168
+ * Réservé aux canaux latest-wins : décimer un canal d'événements perd des
169
+ * messages.
170
+ *
171
+ * @param desiredMs - cadence souhaitée (ms).
172
+ * @param options - réglages AIMD ; `onRate` reste disponible pour afficher la
173
+ * cadence effective dans un badge.
174
+ * @returns la poignée du binding (cadence courante, canal effectif, `dispose`).
175
+ */
176
+ function observeAdaptiveChannel(client, base, emit, desiredMs, options = {}) {
177
+ return client.adaptiveChannel(base, (...args) => emit(args[0]), {
178
+ ...options,
179
+ intervalMs: desiredMs
180
+ });
181
+ }
182
+ /**
183
+ * Lit l'instantané courant. Purement local : aucune trame n'est émise, rien
184
+ * n'est demandé au serveur — afficher cet état ne coûte donc rien au réseau.
185
+ */
186
+ function socketSnapshot(client) {
187
+ return {
188
+ url: client.url,
189
+ state: client.state,
190
+ channels: client.subscribedChannels,
191
+ frames: client.framesReceived,
192
+ unsent: client.framesUnsent,
193
+ lastFrame: {
194
+ method: client.lastFrameMethod,
195
+ at: client.lastFrameAt
196
+ },
197
+ reconnectAttempts: client.reconnectAttempts,
198
+ nextRetryAt: client.nextRetryAt,
199
+ identity: client.identity
200
+ };
201
+ }
202
+ /**
203
+ * Observe l'instantané : `emit` reçoit la valeur courante immédiatement, puis à
204
+ * chaque échantillon du client (une fois par seconde) et à chaque changement
205
+ * d'état — les deux seuls moments où il peut avoir bougé de façon visible.
206
+ *
207
+ * L'horloge est celle de l'échantillonneur DÉJÀ en place ; une liaison qui
208
+ * poserait son propre `setInterval` ajouterait un second réveil par seconde
209
+ * pour la même mesure.
210
+ */
211
+ function observeSnapshot(client, emit) {
212
+ const pousser = () => emit(socketSnapshot(client));
213
+ pousser();
214
+ const offStats = client.onStats(pousser);
215
+ const offState = client.onState(pousser);
216
+ return () => {
217
+ offStats();
218
+ offState();
219
+ };
220
+ }
221
+ /** Taille par défaut de l'anneau du journal. */
222
+ const SYSLOG_RING_DEFAULT = 500;
223
+ /** Taille par défaut de l'anneau des notices. */
224
+ const NOTICE_RING_DEFAULT = 50;
225
+ /**
226
+ * Observe le **journal du serveur** : anneau borné, filtre de sévérité, et
227
+ * surtout le format **coalescé** du canal (`{ logs: Pdu[], dropped }`) autant que
228
+ * l'entrée unique. `emit` reçoit le tableau complet à chaque changement — une
229
+ * nouvelle référence, directement affichable.
230
+ *
231
+ * Le format coalescé est du **protocole serveur** : le décoder dans une liaison
232
+ * de vue, c'est le redécoder dans les trois suivantes. C'est la pire des règles
233
+ * qui vivaient côté React.
234
+ *
235
+ * Le canal par défaut vient de la table des canaux de plateforme — jamais d'une
236
+ * chaîne écrite en clair, que le prochain renommage laisserait derrière lui.
237
+ */
238
+ function observeSyslog(client, emit, opts = {}) {
239
+ const { max = SYSLOG_RING_DEFAULT, severities, channel = PLATFORM_CHANNELS.syslog } = opts;
240
+ let entries = [];
241
+ emit(entries);
242
+ return observeChannel(client, channel, (payload) => {
243
+ const record = payload;
244
+ const incoming = record && Array.isArray(record.logs) ? record.logs : [payload];
245
+ const kept = severities ? incoming.filter((entry) => severities.includes(entry.severity ?? "")) : incoming;
246
+ if (kept.length === 0) return;
247
+ const next = entries.concat(kept);
248
+ entries = next.length > max ? next.slice(-max) : next;
249
+ emit(entries);
250
+ });
251
+ }
252
+ /**
253
+ * Observe les **notices normalisées** du client : criticités qui cassent le temps
254
+ * réel (codes de fermeture RFC 6455 interprétés), erreurs poussées par le
255
+ * serveur, rétablissement de connexion. `emit` est appelé pour CHAQUE notice —
256
+ * de quoi brancher un centre de notifications.
257
+ *
258
+ * À monter **une seule fois** par page, sans quoi les notifications se dupliquent.
259
+ */
260
+ function observeNotices(client, emit) {
261
+ return client.onNotice(emit);
262
+ }
263
+ /**
264
+ * Observe un **historique borné** des dernières notices, filtrable par source :
265
+ * un journal léger des incidents temps réel, distinct des notifications
266
+ * éphémères. `emit` reçoit le tableau complet à chaque changement.
267
+ */
268
+ function observeNoticeLog(client, emit, opts = {}) {
269
+ const { max = NOTICE_RING_DEFAULT, sources } = opts;
270
+ let notices = [];
271
+ emit(notices);
272
+ return observeNotices(client, (notice) => {
273
+ if (sources && !sources.includes(notice.source)) return;
274
+ const next = notices.concat(notice);
275
+ notices = next.length > max ? next.slice(-max) : next;
276
+ emit(notices);
277
+ });
278
+ }
279
+ //#endregion
280
+ export { adaptiveRebindKey, connectShared, observeAdaptiveChannel, observeChannel, observeChannelData, observeChannelStats, observeIdentity, observeNoticeLog, observeNotices, observeReconnect, observeSnapshot, observeState, observeSyslog, socketSnapshot };
@@ -0,0 +1,3 @@
1
+ import { RoleSet, hasAllRoles, hasAnyRole, hasRole } from "./roles.js";
2
+ import { ROLE_MASK_CAPACITY, RoleRegistry } from "./registry.js";
3
+ export { ROLE_MASK_CAPACITY, RoleRegistry, RoleSet, hasAllRoles, hasAnyRole, hasRole };
@@ -0,0 +1,97 @@
1
+ //#region src/client/roles/registry.ts
2
+ /**
3
+ * Nombre maximum de rôles qu'un {@link RoleRegistry} peut indexer en masque `number`.
4
+ *
5
+ * Les opérateurs bit-à-bit de JavaScript travaillent sur des entiers **32 bits signés** :
6
+ * `1 << 31` devient négatif et `1 << 32` repart à `1`. On réserve donc les bits 0..30
7
+ * (31 rôles) pour rester sur des masques positifs sûrs. Au-delà → utiliser les chaînes
8
+ * ({@link RoleSet}) ou un futur registre `BigInt`.
9
+ */
10
+ const ROLE_MASK_CAPACITY = 31;
11
+ /**
12
+ * Registre OPTIONNEL qui assigne un bit à chaque rôle d'un ENSEMBLE FIXE, pour des
13
+ * contrôles d'autorisation en masque (`&`/`|`) — O(1), sans allocation, adapté au hot path
14
+ * serveur (voters, pipeline sécurité) quand les rôles sont connus à l'avance.
15
+ *
16
+ * ⚠️ Inadapté aux rôles DYNAMIQUES (créés en base à l'exécution) : ils n'ont pas de bit
17
+ * fixe → rester sur les chaînes ({@link hasRole}, {@link RoleSet}).
18
+ * ⚠️ Capacité = {@link ROLE_MASK_CAPACITY} rôles (limite 32 bits de JS).
19
+ *
20
+ * @example
21
+ * const reg = new RoleRegistry().define("ROLE_DEV", "ROLE_SUPERVISOR");
22
+ * const userMask = reg.mask(["ROLE_DEV"]);
23
+ * RoleRegistry.hasAny(userMask, reg.mask(["ROLE_DEV", "ROLE_SUPERVISOR"])); // true
24
+ */
25
+ var RoleRegistry = class {
26
+ #bits = /* @__PURE__ */ new Map();
27
+ #next = 0;
28
+ /**
29
+ * Déclare un ou plusieurs rôles et leur assigne un bit (idempotent : un rôle déjà
30
+ * connu conserve son bit).
31
+ *
32
+ * @param roles - rôles à enregistrer
33
+ * @returns le registre (chaînable)
34
+ * @throws {RangeError} si la capacité {@link ROLE_MASK_CAPACITY} est dépassée
35
+ */
36
+ define(...roles) {
37
+ for (const role of roles) {
38
+ if (this.#bits.has(role)) continue;
39
+ if (this.#next >= 31) throw new RangeError(`RoleRegistry: capacité dépassée (31 rôles max en masque 32 bits)`);
40
+ this.#bits.set(role, 1 << this.#next);
41
+ this.#next += 1;
42
+ }
43
+ return this;
44
+ }
45
+ /**
46
+ * @param role - rôle recherché
47
+ * @returns le bit du rôle (puissance de 2), ou `0` si inconnu
48
+ */
49
+ bit(role) {
50
+ return this.#bits.get(role) ?? 0;
51
+ }
52
+ /**
53
+ * Compile une liste de rôles en masque (OR des bits). Les rôles inconnus sont ignorés
54
+ * (bit 0) — les déclarer d'abord via {@link RoleRegistry.define}.
55
+ *
56
+ * @param roles - rôles à encoder
57
+ * @returns le masque binaire
58
+ */
59
+ mask(roles) {
60
+ let m = 0;
61
+ for (const r of roles) m |= this.#bits.get(r) ?? 0;
62
+ return m;
63
+ }
64
+ /**
65
+ * Décode un masque en liste de rôles (ordre de déclaration).
66
+ *
67
+ * @param mask - masque binaire
68
+ * @returns les rôles dont le bit est positionné
69
+ */
70
+ roles(mask) {
71
+ const out = [];
72
+ for (const [role, bit] of this.#bits) if ((mask & bit) !== 0) out.push(role);
73
+ return out;
74
+ }
75
+ /**
76
+ * Test OR sur masques.
77
+ *
78
+ * @param userMask - masque des rôles de l'utilisateur
79
+ * @param requiredMask - masque des rôles acceptés
80
+ * @returns `true` si l'utilisateur a au moins un des rôles requis
81
+ */
82
+ static hasAny(userMask, requiredMask) {
83
+ return (userMask & requiredMask) !== 0;
84
+ }
85
+ /**
86
+ * Test AND sur masques.
87
+ *
88
+ * @param userMask - masque des rôles de l'utilisateur
89
+ * @param requiredMask - masque des rôles requis
90
+ * @returns `true` si l'utilisateur a tous les rôles requis
91
+ */
92
+ static hasAll(userMask, requiredMask) {
93
+ return (userMask & requiredMask) === requiredMask;
94
+ }
95
+ };
96
+ //#endregion
97
+ export { ROLE_MASK_CAPACITY, RoleRegistry };
@@ -0,0 +1,91 @@
1
+ //#region src/client/roles/roles.ts
2
+ /**
3
+ * Indique si l'utilisateur possède `role`.
4
+ *
5
+ * Implémentation sans allocation (parcours linéaire) : optimale pour un contrôle
6
+ * ponctuel sur un petit tableau (cas courant : 1 à 5 rôles dans un JWT). Pour des
7
+ * contrôles répétés contre le même utilisateur, préférer {@link RoleSet} (O(1) après
8
+ * une unique allocation).
9
+ *
10
+ * @param userRoles - rôles portés par l'utilisateur (ex. claim `roles` du JWT)
11
+ * @param role - rôle recherché
12
+ * @returns `true` si `userRoles` contient `role`
13
+ */
14
+ function hasRole(userRoles, role) {
15
+ return userRoles != null && userRoles.includes(role);
16
+ }
17
+ /**
18
+ * Indique si l'utilisateur possède AU MOINS UN des `roles` (OR logique).
19
+ *
20
+ * @param userRoles - rôles de l'utilisateur
21
+ * @param roles - rôles acceptés (l'un suffit)
22
+ * @returns `true` si l'intersection est non vide ; `false` si `roles` est vide
23
+ * (aucune exigence ne peut être satisfaite)
24
+ */
25
+ function hasAnyRole(userRoles, roles) {
26
+ if (userRoles == null || roles.length === 0) return false;
27
+ for (const r of roles) if (userRoles.includes(r)) return true;
28
+ return false;
29
+ }
30
+ /**
31
+ * Indique si l'utilisateur possède TOUS les `roles` (AND logique).
32
+ *
33
+ * @param userRoles - rôles de l'utilisateur
34
+ * @param roles - rôles tous requis
35
+ * @returns `true` si chaque rôle requis est présent ; `true` si `roles` est vide
36
+ * (aucune exigence — convention de `Array.every`)
37
+ */
38
+ function hasAllRoles(userRoles, roles) {
39
+ if (roles.length === 0) return true;
40
+ if (userRoles == null) return false;
41
+ for (const r of roles) if (!userRoles.includes(r)) return false;
42
+ return true;
43
+ }
44
+ /**
45
+ * Ensemble de rôles indexé pour des contrôles répétés en O(1).
46
+ *
47
+ * À utiliser quand on teste plusieurs fois les rôles d'un même utilisateur (filtrage
48
+ * d'une navigation, rendu conditionnel de N panneaux) : une seule allocation de `Set`,
49
+ * puis chaque `has`/`hasAny`/`hasAll` est O(1)/O(k). Pour un contrôle unique, préférer
50
+ * les fonctions {@link hasRole} & co (zéro allocation).
51
+ */
52
+ var RoleSet = class {
53
+ #roles;
54
+ /** @param roles - rôles de l'utilisateur (dédoublonnés à la construction) */
55
+ constructor(roles) {
56
+ this.#roles = new Set(roles ?? void 0);
57
+ }
58
+ /** Nombre de rôles distincts. */
59
+ get size() {
60
+ return this.#roles.size;
61
+ }
62
+ /**
63
+ * @param role - rôle recherché
64
+ * @returns `true` si le rôle est présent (O(1))
65
+ */
66
+ has(role) {
67
+ return this.#roles.has(role);
68
+ }
69
+ /**
70
+ * @param roles - rôles acceptés
71
+ * @returns `true` si AU MOINS UN des `roles` est présent (OR)
72
+ */
73
+ hasAny(roles) {
74
+ for (const r of roles) if (this.#roles.has(r)) return true;
75
+ return false;
76
+ }
77
+ /**
78
+ * @param roles - rôles requis
79
+ * @returns `true` si TOUS les `roles` sont présents (AND ; `true` si liste vide)
80
+ */
81
+ hasAll(roles) {
82
+ for (const r of roles) if (!this.#roles.has(r)) return false;
83
+ return true;
84
+ }
85
+ /** Copie triée des rôles (affichage / sérialisation déterministe). */
86
+ toArray() {
87
+ return [...this.#roles].sort();
88
+ }
89
+ };
90
+ //#endregion
91
+ export { RoleSet, hasAllRoles, hasAnyRole, hasRole };