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.
- package/.ai/symbols.json +36135 -0
- package/LICENSE +544 -0
- package/README.md +316 -694
- package/bin/nodefony +2183 -85
- package/dist/client/Container.js +367 -0
- package/dist/client/Event.js +198 -0
- package/dist/client/Service.js +344 -0
- package/dist/client/Tools.js +162 -0
- package/dist/client/client/ClientKernel.js +276 -0
- package/dist/client/client/angular/index.js +352 -0
- package/dist/client/client/announce.js +212 -0
- package/dist/client/client/debugbar/DebugBar.js +1624 -0
- package/dist/client/client/debugbar/format.js +103 -0
- package/dist/client/client/debugbar/hmr.js +37 -0
- package/dist/client/client/debugbar/index.js +29 -0
- package/dist/client/client/debugbar/model.js +133 -0
- package/dist/client/client/debugbar/network.js +173 -0
- package/dist/client/client/debugbar/profile.js +114 -0
- package/dist/client/client/index.js +34 -0
- package/dist/client/client/react/index.js +268 -0
- package/dist/client/client/realtime/AdaptiveRate.js +240 -0
- package/dist/client/client/realtime/BrowserWsTransport.js +57 -0
- package/dist/client/client/realtime/RealtimeClient.js +898 -0
- package/dist/client/client/realtime/localEvents.js +56 -0
- package/dist/client/client/realtime/notice.js +125 -0
- package/dist/client/client/realtime/observe.js +280 -0
- package/dist/client/client/roles/index.js +3 -0
- package/dist/client/client/roles/registry.js +97 -0
- package/dist/client/client/roles/roles.js +91 -0
- package/dist/client/client/shim/events.js +88 -0
- package/dist/client/client/shim/util.js +20 -0
- package/dist/client/client/svelte/index.js +319 -0
- package/dist/client/client/syslog/context.js +122 -0
- package/dist/client/client/syslog/errors.js +49 -0
- package/dist/client/client/syslog/uplink.js +106 -0
- package/dist/client/client/vue/index.js +321 -0
- package/dist/client/colors.js +63 -0
- package/dist/client/debugbar.standalone.js +4274 -0
- package/dist/client/realtime/IRealtimeTransport.js +32 -0
- package/dist/client/realtime/JsonRpcPeer.js +251 -0
- package/dist/client/realtime/channelRate.js +39 -0
- package/dist/client/realtime/platformChannels.js +155 -0
- package/dist/client/syslog/Pdu.js +224 -0
- package/dist/client/syslog/Syslog.js +1159 -0
- package/dist/client/syslog/drivers/pduFlow.js +106 -0
- package/dist/client/syslog/drivers/pduProtocol.js +28 -0
- package/dist/client/syslog/logColor.js +80 -0
- package/dist/client/types/src/Container.d.ts +221 -0
- package/dist/client/types/src/Event.d.ts +171 -0
- package/dist/client/types/src/FileClass.d.ts +184 -0
- package/dist/client/types/src/Service.d.ts +165 -0
- package/dist/client/types/src/Tools.d.ts +116 -0
- package/dist/client/types/src/client/ClientKernel.d.ts +90 -0
- package/dist/client/types/src/client/IClientKernel.d.ts +195 -0
- package/dist/client/types/src/client/angular/index.d.ts +273 -0
- package/dist/client/types/src/client/announce.d.ts +74 -0
- package/dist/client/types/src/client/debugbar/DebugBar.d.ts +279 -0
- package/dist/client/types/src/client/debugbar/format.d.ts +48 -0
- package/dist/client/types/src/client/debugbar/hmr.d.ts +16 -0
- package/dist/client/types/src/client/debugbar/index.d.ts +30 -0
- package/dist/client/types/src/client/debugbar/model.d.ts +158 -0
- package/dist/client/types/src/client/debugbar/network.d.ts +55 -0
- package/dist/client/types/src/client/debugbar/profile.d.ts +99 -0
- package/dist/client/types/src/client/index.d.ts +47 -0
- package/dist/client/types/src/client/react/index.d.ts +207 -0
- package/dist/client/types/src/client/realtime/AdaptiveRate.d.ts +138 -0
- package/dist/client/types/src/client/realtime/BrowserWsTransport.d.ts +27 -0
- package/dist/client/types/src/client/realtime/RealtimeClient.d.ts +573 -0
- package/dist/client/types/src/client/realtime/localEvents.d.ts +53 -0
- package/dist/client/types/src/client/realtime/notice.d.ts +70 -0
- package/dist/client/types/src/client/realtime/observe.d.ts +284 -0
- package/dist/client/types/src/client/roles/index.d.ts +15 -0
- package/dist/client/types/src/client/roles/registry.d.ts +72 -0
- package/dist/client/types/src/client/roles/roles.d.ts +68 -0
- package/dist/client/types/src/client/shim/cli-color.d.ts +2 -0
- package/dist/client/types/src/client/shim/events.d.ts +39 -0
- package/dist/client/types/src/client/shim/util.d.ts +14 -0
- package/dist/client/types/src/client/svelte/index.d.ts +216 -0
- package/dist/client/types/src/client/syslog/context.d.ts +76 -0
- package/dist/client/types/src/client/syslog/errors.d.ts +46 -0
- package/dist/client/types/src/client/syslog/uplink.d.ts +89 -0
- package/dist/client/types/src/client/transport/websocket.d.ts +5 -0
- package/dist/client/types/src/client/vue/index.d.ts +234 -0
- package/dist/client/types/src/colors.d.ts +32 -0
- package/dist/client/types/src/config/infra.d.ts +171 -0
- package/dist/client/types/src/kernel/bootReport.d.ts +112 -0
- package/dist/client/types/src/kernel/readinessRegistry.d.ts +104 -0
- package/dist/client/types/src/realtime/IRealtimeSocket.d.ts +142 -0
- package/dist/client/types/src/realtime/IRealtimeTransport.d.ts +50 -0
- package/dist/client/types/src/realtime/JsonRpcPeer.d.ts +251 -0
- package/dist/client/types/src/realtime/RealtimeEventMap.d.ts +269 -0
- package/dist/client/types/src/realtime/channelRate.d.ts +55 -0
- package/dist/client/types/src/realtime/platformChannels.d.ts +147 -0
- package/dist/client/types/src/syslog/Pdu.d.ts +134 -0
- package/dist/client/types/src/syslog/Syslog.d.ts +482 -0
- package/dist/client/types/src/syslog/drivers/ILogDriver.d.ts +177 -0
- package/dist/client/types/src/syslog/drivers/pduFlow.d.ts +53 -0
- package/dist/client/types/src/syslog/drivers/pduProtocol.d.ts +20 -0
- package/dist/client/types/src/syslog/logColor.d.ts +59 -0
- package/dist/client/types/src/types/ICliKernel.d.ts +28 -0
- package/dist/client/types/src/types/ICommand.d.ts +14 -0
- package/dist/client/types/src/types/IContainer.d.ts +35 -0
- package/dist/client/types/src/types/IKernel.d.ts +138 -0
- package/dist/client/types/src/types/IMcpTool.d.ts +157 -0
- package/dist/client/types/src/types/IModule.d.ts +73 -0
- package/dist/client/types/src/types/IPage.d.ts +119 -0
- package/dist/client/types/src/types/IService.d.ts +62 -0
- package/dist/client/types/src/types/ISyslog.d.ts +58 -0
- package/dist/client/types/src/types/ITransport.d.ts +5 -0
- package/dist/client/types/src/types/globals.d.ts +47 -0
- package/dist/node/Cli.js +750 -0
- package/dist/node/Container.js +367 -0
- package/dist/node/Error.js +309 -0
- package/dist/node/Event.js +198 -0
- package/dist/node/FileClass.js +308 -0
- package/dist/node/Nodefony.js +78 -0
- package/dist/node/Service.js +344 -0
- package/dist/node/Tools.js +205 -0
- package/dist/node/bin/resolveLocalCli.js +10 -0
- package/dist/node/bundler/index.js +103 -0
- package/dist/node/cli/agentTargets.js +461 -0
- package/dist/node/cli/aiMcp.js +553 -0
- package/dist/node/cli/aiMcpReport.js +129 -0
- package/dist/node/cli/aiSync.js +323 -0
- package/dist/node/cli/aiSyncReport.js +142 -0
- package/dist/node/cli/card.js +186 -0
- package/dist/node/cli/cardReport.js +110 -0
- package/dist/node/cli/completion.js +415 -0
- package/dist/node/cli/create.js +805 -0
- package/dist/node/cli/env.js +332 -0
- package/dist/node/cli/envReport.js +159 -0
- package/dist/node/cli/execPortable.js +60 -0
- package/dist/node/cli/gitHooks.js +191 -0
- package/dist/node/cli/gitHooksReport.js +119 -0
- package/dist/node/cli/globalFlags.js +67 -0
- package/dist/node/cli/helpReport.js +288 -0
- package/dist/node/cli/manPage.js +165 -0
- package/dist/node/cli/nodefonyBin.js +61 -0
- package/dist/node/cli/outdated.js +144 -0
- package/dist/node/cli/progress.js +555 -0
- package/dist/node/cli/projectRoot.js +32 -0
- package/dist/node/cli/promptPassword.js +44 -0
- package/dist/node/cli/prompts.js +86 -0
- package/dist/node/cli/scaffold/destination.js +92 -0
- package/dist/node/cli/scaffold/engine.js +2156 -0
- package/dist/node/cli/scaffold/entityFields.js +589 -0
- package/dist/node/cli/scaffold/format.js +243 -0
- package/dist/node/cli/scaffold/interactive.js +124 -0
- package/dist/node/cli/scaffold/moduleLayout.js +38 -0
- package/dist/node/cli/scaffold/reservedEntities.js +74 -0
- package/dist/node/cli/scaffold/spec.js +704 -0
- package/dist/node/cli/scaffold/steps.js +40 -0
- package/dist/node/cli/scaffold/userContractSource.js +133 -0
- package/dist/node/cli/scaffold/versions.js +57 -0
- package/dist/node/cli/scaffold/writer.js +172 -0
- package/dist/node/cli/startMenu.js +496 -0
- package/dist/node/cli/symbols.js +205 -0
- package/dist/node/cli/sysexits.js +34 -0
- package/dist/node/cli/tableReport.js +184 -0
- package/dist/node/cli/usageReport.js +144 -0
- package/dist/node/colors.js +63 -0
- package/dist/node/command/Builder.js +153 -0
- package/dist/node/command/Command.js +348 -0
- package/dist/node/config/configProvenance.js +101 -0
- package/dist/node/config/defaults.js +39 -0
- package/dist/node/config/defineConfig.js +129 -0
- package/dist/node/config/defineEnv.js +264 -0
- package/dist/node/config/envExample.js +41 -0
- package/dist/node/config/envOverride.js +423 -0
- package/dist/node/config/infra.js +163 -0
- package/dist/node/config/reactivity.js +23 -0
- package/dist/node/config/reservedEnv.js +118 -0
- package/dist/node/config/schema.js +134 -0
- package/dist/node/config/use.js +24 -0
- package/dist/node/finder/File.js +49 -0
- package/dist/node/finder/FileResult.js +86 -0
- package/dist/node/finder/Finder.js +201 -0
- package/dist/node/finder/Result.js +45 -0
- package/dist/node/index.js +121 -0
- package/dist/node/kernel/BootConfigurationError.js +54 -0
- package/dist/node/kernel/CliKernel.js +630 -0
- package/dist/node/kernel/Kernel.js +2198 -0
- package/dist/node/kernel/Module.js +453 -0
- package/dist/node/kernel/adminPlane/adminCaller.js +98 -0
- package/dist/node/kernel/adminPlane/adminRbac.js +51 -0
- package/dist/node/kernel/adminPlane/catalog.js +158 -0
- package/dist/node/kernel/adminPlane/executeAdmin.js +78 -0
- package/dist/node/kernel/checks/deep.js +335 -0
- package/dist/node/kernel/checks/freshness.js +139 -0
- package/dist/node/kernel/checks/gating.js +231 -0
- package/dist/node/kernel/checks/guards.js +232 -0
- package/dist/node/kernel/checks/lastBoot.js +136 -0
- package/dist/node/kernel/checks/live.js +330 -0
- package/dist/node/kernel/checks/packageDeps.js +292 -0
- package/dist/node/kernel/checks/readiness.js +153 -0
- package/dist/node/kernel/checks/renderReport.js +780 -0
- package/dist/node/kernel/checks/report.js +421 -0
- package/dist/node/kernel/checks/runDoctor.js +731 -0
- package/dist/node/kernel/checks/surface.js +364 -0
- package/dist/node/kernel/checks/walk.js +100 -0
- package/dist/node/kernel/checks/wiring.js +450 -0
- package/dist/node/kernel/commands/AiMcpCommand.js +65 -0
- package/dist/node/kernel/commands/AiSyncCommand.js +48 -0
- package/dist/node/kernel/commands/BuildCommand.js +49 -0
- package/dist/node/kernel/commands/CardCommand.js +50 -0
- package/dist/node/kernel/commands/ClusterCommand.js +58 -0
- package/dist/node/kernel/commands/CompletionCommand.js +31 -0
- package/dist/node/kernel/commands/CreateCommand.js +45 -0
- package/dist/node/kernel/commands/DevCommand.js +99 -0
- package/dist/node/kernel/commands/DoctorCommand.js +115 -0
- package/dist/node/kernel/commands/EnvCommand.js +52 -0
- package/dist/node/kernel/commands/GitHooksCommand.js +47 -0
- package/dist/node/kernel/commands/InspectCommand.js +153 -0
- package/dist/node/kernel/commands/InstallCommand.js +20 -0
- package/dist/node/kernel/commands/MenuCommand.js +261 -0
- package/dist/node/kernel/commands/OutdatedCommand.js +164 -0
- package/dist/node/kernel/commands/ProdCommand.js +60 -0
- package/dist/node/kernel/commands/StatusCommand.js +30 -0
- package/dist/node/kernel/commands/StopCommand.js +35 -0
- package/dist/node/kernel/commands/SymbolsCommand.js +45 -0
- package/dist/node/kernel/commands/runtimeLauncher.js +95 -0
- package/dist/node/kernel/decorators/kernelDecorator.js +110 -0
- package/dist/node/kernel/injector/injector.js +137 -0
- package/dist/node/kernel/injector/serviceOrder.js +106 -0
- package/dist/node/kernel/inspect/adminSubjects.js +194 -0
- package/dist/node/kernel/inspect/docOutline.js +86 -0
- package/dist/node/kernel/lifecycleTags.js +76 -0
- package/dist/node/kernel/moduleConfig.js +75 -0
- package/dist/node/kernel/moduleGating.js +68 -0
- package/dist/node/kernel/readinessRegistry.js +98 -0
- package/dist/node/kernel/resolveModuleEntry.js +61 -0
- package/dist/node/mcp/caller.js +40 -0
- package/dist/node/mcp/guard.js +51 -0
- package/dist/node/mcp/protocol.js +157 -0
- package/dist/node/mcp/server.js +216 -0
- package/dist/node/mcp/tools.js +861 -0
- package/dist/node/oauth/authorizationServer.js +221 -0
- package/dist/node/oauth/protectedResource.js +293 -0
- package/dist/node/package.js +4 -0
- package/dist/node/realtime/IRealtimeTransport.js +32 -0
- package/dist/node/realtime/JsonRpcPeer.js +251 -0
- package/dist/node/realtime/RealtimeEventMap.js +15 -0
- package/dist/node/realtime/channelRate.js +39 -0
- package/dist/node/realtime/platformChannels.js +155 -0
- package/dist/node/runtime/GcScheduler.js +92 -0
- package/dist/node/runtime/RequestContext.js +76 -0
- package/dist/node/runtime/bearer.js +84 -0
- package/dist/node/runtime/engineEnvironment.js +79 -0
- package/dist/node/runtime/loadEnv.js +105 -0
- package/dist/node/runtime/pageFacets.js +85 -0
- package/dist/node/runtime/pageFilters.js +103 -0
- package/dist/node/runtime/pageGuard.js +84 -0
- package/dist/node/runtime/pageQuery.js +160 -0
- package/dist/node/runtime/pageSort.js +114 -0
- package/dist/node/runtime/redact.js +43 -0
- package/dist/node/runtime/withTimeout.js +71 -0
- package/dist/node/service/cluster/ClusterManager.js +202 -0
- package/dist/node/service/cluster/ClusterProbeAggregator.js +120 -0
- package/dist/node/service/cluster/ClusterRelay.js +74 -0
- package/dist/node/service/cluster/clusterMaster.js +65 -0
- package/dist/node/service/cluster/clusterMessage.js +70 -0
- package/dist/node/service/cluster/cpuQuota.js +59 -0
- package/dist/node/service/cluster/instanceProbe.js +52 -0
- package/dist/node/service/cluster/podEnvironment.js +48 -0
- package/dist/node/service/cluster/processProbe.js +70 -0
- package/dist/node/service/cluster/richProcessProbe.js +115 -0
- package/dist/node/service/cluster/topology.js +71 -0
- package/dist/node/service/dev/BootReporter.js +490 -0
- package/dist/node/service/dev/DevSupervisor.js +1004 -0
- package/dist/node/service/dev/bootVerdict.js +158 -0
- package/dist/node/service/dev/detachedStart.js +372 -0
- package/dist/node/service/dev/devProcess.js +1137 -0
- package/dist/node/service/dev/devProjects.js +138 -0
- package/dist/node/service/dev/devStatusReport.js +395 -0
- package/dist/node/service/dev/devStop.js +263 -0
- package/dist/node/service/fetchService.js +35 -0
- package/dist/node/service/gitService.js +62 -0
- package/dist/node/syslog/Pdu.js +224 -0
- package/dist/node/syslog/Syslog.js +1159 -0
- package/dist/node/syslog/drivers/ClusterFileLogDriver.js +114 -0
- package/dist/node/syslog/drivers/FileLogDriver.js +127 -0
- package/dist/node/syslog/drivers/ILogDriver.js +26 -0
- package/dist/node/syslog/drivers/LokiLogDriver.js +144 -0
- package/dist/node/syslog/drivers/MemoryLogDriver.js +33 -0
- package/dist/node/syslog/drivers/OpenSearchLogDriver.js +159 -0
- package/dist/node/syslog/drivers/builtinLogDrivers.js +114 -0
- package/dist/node/syslog/drivers/filterPdus.js +71 -0
- package/dist/node/syslog/drivers/logDriverRegistry.js +83 -0
- package/dist/node/syslog/drivers/opensearchShared.js +17 -0
- package/dist/node/syslog/drivers/pduFlow.js +106 -0
- package/dist/node/syslog/drivers/pduProtocol.js +28 -0
- package/dist/node/syslog/httpFetch.js +43 -0
- package/dist/node/syslog/logColor.js +80 -0
- package/dist/node/syslog/sinks/FileSink.js +142 -0
- package/dist/node/syslog/transports/BatchingHttpTransport.js +98 -0
- package/dist/node/syslog/transports/ConsoleTransport.js +14 -0
- package/dist/node/syslog/transports/FileTransport.js +17 -0
- package/dist/node/syslog/transports/HttpTransport.js +44 -0
- package/dist/node/syslog/transports/LokiTransport.js +80 -0
- package/dist/node/syslog/transports/OpenSearchTransport.js +53 -0
- package/dist/node/syslog/transports/SyslogTransport.js +13 -0
- package/dist/node/syslog/transports/index.js +8 -0
- package/dist/node/testing/index.js +190 -0
- package/dist/types/Cli.d.ts +177 -0
- package/dist/types/Container.d.ts +221 -0
- package/dist/types/Error.d.ts +162 -0
- package/dist/types/Event.d.ts +171 -0
- package/dist/types/FileClass.d.ts +184 -0
- package/dist/types/Nodefony.d.ts +66 -0
- package/dist/types/Service.d.ts +165 -0
- package/dist/types/Tools.d.ts +116 -0
- package/dist/types/bin/resolveLocalCli.d.ts +49 -0
- package/dist/types/bundler/index.d.ts +66 -0
- package/dist/types/cli/agentTargets.d.ts +378 -0
- package/dist/types/cli/aiMcp.d.ts +239 -0
- package/dist/types/cli/aiMcpReport.d.ts +113 -0
- package/dist/types/cli/aiSync.d.ts +68 -0
- package/dist/types/cli/aiSyncReport.d.ts +149 -0
- package/dist/types/cli/card.d.ts +49 -0
- package/dist/types/cli/cardReport.d.ts +127 -0
- package/dist/types/cli/completion.d.ts +154 -0
- package/dist/types/cli/create.d.ts +177 -0
- package/dist/types/cli/env.d.ts +103 -0
- package/dist/types/cli/envReport.d.ts +153 -0
- package/dist/types/cli/execPortable.d.ts +54 -0
- package/dist/types/cli/gitHooks.d.ts +48 -0
- package/dist/types/cli/gitHooksReport.d.ts +101 -0
- package/dist/types/cli/globalFlags.d.ts +48 -0
- package/dist/types/cli/helpReport.d.ts +110 -0
- package/dist/types/cli/manPage.d.ts +21 -0
- package/dist/types/cli/nodefonyBin.d.ts +45 -0
- package/dist/types/cli/outdated.d.ts +119 -0
- package/dist/types/cli/progress.d.ts +349 -0
- package/dist/types/cli/projectRoot.d.ts +19 -0
- package/dist/types/cli/promptPassword.d.ts +22 -0
- package/dist/types/cli/prompts.d.ts +102 -0
- package/dist/types/cli/scaffold/destination.d.ts +70 -0
- package/dist/types/cli/scaffold/engine.d.ts +545 -0
- package/dist/types/cli/scaffold/entityFields.d.ts +238 -0
- package/dist/types/cli/scaffold/format.d.ts +78 -0
- package/dist/types/cli/scaffold/interactive.d.ts +11 -0
- package/dist/types/cli/scaffold/moduleLayout.d.ts +69 -0
- package/dist/types/cli/scaffold/reservedEntities.d.ts +49 -0
- package/dist/types/cli/scaffold/spec.d.ts +159 -0
- package/dist/types/cli/scaffold/steps.d.ts +24 -0
- package/dist/types/cli/scaffold/userContractSource.d.ts +86 -0
- package/dist/types/cli/scaffold/versions.d.ts +14 -0
- package/dist/types/cli/scaffold/writer.d.ts +100 -0
- package/dist/types/cli/startMenu.d.ts +195 -0
- package/dist/types/cli/symbols.d.ts +84 -0
- package/dist/types/cli/sysexits.d.ts +31 -0
- package/dist/types/cli/tableReport.d.ts +44 -0
- package/dist/types/cli/usageReport.d.ts +108 -0
- package/dist/types/client/ClientKernel.d.ts +90 -0
- package/dist/types/client/IClientKernel.d.ts +195 -0
- package/dist/types/client/angular/index.d.ts +273 -0
- package/dist/types/client/announce.d.ts +74 -0
- package/dist/types/client/debugbar/DebugBar.d.ts +279 -0
- package/dist/types/client/debugbar/format.d.ts +48 -0
- package/dist/types/client/debugbar/hmr.d.ts +16 -0
- package/dist/types/client/debugbar/index.d.ts +30 -0
- package/dist/types/client/debugbar/model.d.ts +158 -0
- package/dist/types/client/debugbar/network.d.ts +55 -0
- package/dist/types/client/debugbar/profile.d.ts +99 -0
- package/dist/types/client/index.d.ts +47 -0
- package/dist/types/client/react/index.d.ts +207 -0
- package/dist/types/client/realtime/AdaptiveRate.d.ts +138 -0
- package/dist/types/client/realtime/BrowserWsTransport.d.ts +27 -0
- package/dist/types/client/realtime/RealtimeClient.d.ts +573 -0
- package/dist/types/client/realtime/localEvents.d.ts +53 -0
- package/dist/types/client/realtime/notice.d.ts +70 -0
- package/dist/types/client/realtime/observe.d.ts +284 -0
- package/dist/types/client/roles/index.d.ts +15 -0
- package/dist/types/client/roles/registry.d.ts +72 -0
- package/dist/types/client/roles/roles.d.ts +68 -0
- package/dist/types/client/shim/cli-color.d.ts +2 -0
- package/dist/types/client/shim/events.d.ts +39 -0
- package/dist/types/client/shim/util.d.ts +14 -0
- package/dist/types/client/svelte/index.d.ts +216 -0
- package/dist/types/client/syslog/context.d.ts +76 -0
- package/dist/types/client/syslog/errors.d.ts +46 -0
- package/dist/types/client/syslog/uplink.d.ts +89 -0
- package/dist/types/client/transport/websocket.d.ts +5 -0
- package/dist/types/client/vue/index.d.ts +234 -0
- package/dist/types/colors.d.ts +32 -0
- package/dist/types/command/Builder.d.ts +47 -0
- package/dist/types/command/Command.d.ts +268 -0
- package/dist/types/config/configMeta.d.ts +53 -0
- package/dist/types/config/configProvenance.d.ts +58 -0
- package/dist/types/config/defaults.d.ts +33 -0
- package/dist/types/config/defineConfig.d.ts +70 -0
- package/dist/types/config/defineEnv.d.ts +170 -0
- package/dist/types/config/envExample.d.ts +23 -0
- package/dist/types/config/envOverride.d.ts +236 -0
- package/dist/types/config/index.d.ts +23 -0
- package/dist/types/config/infra.d.ts +171 -0
- package/dist/types/config/reactivity.d.ts +36 -0
- package/dist/types/config/reservedEnv.d.ts +145 -0
- package/dist/types/config/schema.d.ts +113 -0
- package/dist/types/config/types.d.ts +374 -0
- package/dist/types/config/use.d.ts +80 -0
- package/dist/types/finder/File.d.ts +26 -0
- package/dist/types/finder/FileResult.d.ts +14 -0
- package/dist/types/finder/Finder.d.ts +51 -0
- package/dist/types/finder/Result.d.ts +10 -0
- package/dist/types/index.d.ts +205 -0
- package/dist/types/kernel/BootConfigurationError.d.ts +50 -0
- package/dist/types/kernel/CliKernel.d.ts +289 -0
- package/dist/types/kernel/Kernel.d.ts +1255 -0
- package/dist/types/kernel/Module.d.ts +326 -0
- package/dist/types/kernel/adminPlane/adminCaller.d.ts +105 -0
- package/dist/types/kernel/adminPlane/adminRbac.d.ts +44 -0
- package/dist/types/kernel/adminPlane/catalog.d.ts +122 -0
- package/dist/types/kernel/adminPlane/executeAdmin.d.ts +99 -0
- package/dist/types/kernel/bootReport.d.ts +112 -0
- package/dist/types/kernel/checks/deep.d.ts +122 -0
- package/dist/types/kernel/checks/freshness.d.ts +49 -0
- package/dist/types/kernel/checks/gating.d.ts +134 -0
- package/dist/types/kernel/checks/guards.d.ts +57 -0
- package/dist/types/kernel/checks/lastBoot.d.ts +189 -0
- package/dist/types/kernel/checks/live.d.ts +110 -0
- package/dist/types/kernel/checks/packageDeps.d.ts +44 -0
- package/dist/types/kernel/checks/readiness.d.ts +97 -0
- package/dist/types/kernel/checks/renderReport.d.ts +107 -0
- package/dist/types/kernel/checks/report.d.ts +414 -0
- package/dist/types/kernel/checks/runDoctor.d.ts +361 -0
- package/dist/types/kernel/checks/surface.d.ts +148 -0
- package/dist/types/kernel/checks/walk.d.ts +45 -0
- package/dist/types/kernel/checks/wiring.d.ts +54 -0
- package/dist/types/kernel/commands/AiMcpCommand.d.ts +39 -0
- package/dist/types/kernel/commands/AiSyncCommand.d.ts +28 -0
- package/dist/types/kernel/commands/BuildCommand.d.ts +13 -0
- package/dist/types/kernel/commands/CardCommand.d.ts +34 -0
- package/dist/types/kernel/commands/ClusterCommand.d.ts +29 -0
- package/dist/types/kernel/commands/CompletionCommand.d.ts +17 -0
- package/dist/types/kernel/commands/CreateCommand.d.ts +16 -0
- package/dist/types/kernel/commands/DevCommand.d.ts +40 -0
- package/dist/types/kernel/commands/DoctorCommand.d.ts +55 -0
- package/dist/types/kernel/commands/EnvCommand.d.ts +35 -0
- package/dist/types/kernel/commands/GitHooksCommand.d.ts +27 -0
- package/dist/types/kernel/commands/InspectCommand.d.ts +59 -0
- package/dist/types/kernel/commands/InstallCommand.d.ts +7 -0
- package/dist/types/kernel/commands/MenuCommand.d.ts +58 -0
- package/dist/types/kernel/commands/OutdatedCommand.d.ts +47 -0
- package/dist/types/kernel/commands/ProdCommand.d.ts +29 -0
- package/dist/types/kernel/commands/StatusCommand.d.ts +17 -0
- package/dist/types/kernel/commands/StopCommand.d.ts +17 -0
- package/dist/types/kernel/commands/SymbolsCommand.d.ts +29 -0
- package/dist/types/kernel/commands/runtimeLauncher.d.ts +76 -0
- package/dist/types/kernel/decorators/kernelDecorator.d.ts +76 -0
- package/dist/types/kernel/injector/injector.d.ts +47 -0
- package/dist/types/kernel/injector/serviceOrder.d.ts +29 -0
- package/dist/types/kernel/inspect/adminSubjects.d.ts +169 -0
- package/dist/types/kernel/inspect/docOutline.d.ts +53 -0
- package/dist/types/kernel/lifecycleTags.d.ts +79 -0
- package/dist/types/kernel/moduleConfig.d.ts +35 -0
- package/dist/types/kernel/moduleGating.d.ts +78 -0
- package/dist/types/kernel/readinessRegistry.d.ts +104 -0
- package/dist/types/kernel/resolveModuleEntry.d.ts +46 -0
- package/dist/types/mcp/caller.d.ts +55 -0
- package/dist/types/mcp/guard.d.ts +66 -0
- package/dist/types/mcp/protocol.d.ts +163 -0
- package/dist/types/mcp/server.d.ts +70 -0
- package/dist/types/mcp/tools.d.ts +209 -0
- package/dist/types/oauth/authorizationServer.d.ts +204 -0
- package/dist/types/oauth/protectedResource.d.ts +339 -0
- package/dist/types/realtime/IRealtimeSocket.d.ts +142 -0
- package/dist/types/realtime/IRealtimeTransport.d.ts +50 -0
- package/dist/types/realtime/JsonRpcPeer.d.ts +251 -0
- package/dist/types/realtime/RealtimeEventMap.d.ts +269 -0
- package/dist/types/realtime/channelRate.d.ts +55 -0
- package/dist/types/realtime/platformChannels.d.ts +147 -0
- package/dist/types/runtime/GcScheduler.d.ts +96 -0
- package/dist/types/runtime/RequestContext.d.ts +152 -0
- package/dist/types/runtime/bearer.d.ts +88 -0
- package/dist/types/runtime/engineEnvironment.d.ts +115 -0
- package/dist/types/runtime/loadEnv.d.ts +86 -0
- package/dist/types/runtime/pageFacets.d.ts +104 -0
- package/dist/types/runtime/pageFilters.d.ts +139 -0
- package/dist/types/runtime/pageGuard.d.ts +78 -0
- package/dist/types/runtime/pageQuery.d.ts +138 -0
- package/dist/types/runtime/pageSort.d.ts +86 -0
- package/dist/types/runtime/redact.d.ts +27 -0
- package/dist/types/runtime/withTimeout.d.ts +51 -0
- package/dist/types/service/cluster/ClusterManager.d.ts +112 -0
- package/dist/types/service/cluster/ClusterProbeAggregator.d.ts +68 -0
- package/dist/types/service/cluster/ClusterRelay.d.ts +57 -0
- package/dist/types/service/cluster/clusterMaster.d.ts +40 -0
- package/dist/types/service/cluster/clusterMessage.d.ts +94 -0
- package/dist/types/service/cluster/cpuQuota.d.ts +37 -0
- package/dist/types/service/cluster/instanceProbe.d.ts +82 -0
- package/dist/types/service/cluster/podEnvironment.d.ts +35 -0
- package/dist/types/service/cluster/processProbe.d.ts +53 -0
- package/dist/types/service/cluster/richProcessProbe.d.ts +77 -0
- package/dist/types/service/cluster/topology.d.ts +64 -0
- package/dist/types/service/dev/BootReporter.d.ts +67 -0
- package/dist/types/service/dev/DevSupervisor.d.ts +117 -0
- package/dist/types/service/dev/bootVerdict.d.ts +99 -0
- package/dist/types/service/dev/detachedStart.d.ts +164 -0
- package/dist/types/service/dev/devProcess.d.ts +638 -0
- package/dist/types/service/dev/devProjects.d.ts +121 -0
- package/dist/types/service/dev/devStatusReport.d.ts +141 -0
- package/dist/types/service/dev/devStop.d.ts +57 -0
- package/dist/types/service/fetchService.d.ts +29 -0
- package/dist/types/service/gitService.d.ts +24 -0
- package/dist/types/syslog/Pdu.d.ts +134 -0
- package/dist/types/syslog/Syslog.d.ts +482 -0
- package/dist/types/syslog/drivers/ClusterFileLogDriver.d.ts +40 -0
- package/dist/types/syslog/drivers/FileLogDriver.d.ts +55 -0
- package/dist/types/syslog/drivers/ILogDriver.d.ts +177 -0
- package/dist/types/syslog/drivers/LokiLogDriver.d.ts +44 -0
- package/dist/types/syslog/drivers/MemoryLogDriver.d.ts +20 -0
- package/dist/types/syslog/drivers/OpenSearchLogDriver.d.ts +40 -0
- package/dist/types/syslog/drivers/builtinLogDrivers.d.ts +43 -0
- package/dist/types/syslog/drivers/filterPdus.d.ts +21 -0
- package/dist/types/syslog/drivers/logDriverRegistry.d.ts +100 -0
- package/dist/types/syslog/drivers/opensearchShared.d.ts +11 -0
- package/dist/types/syslog/drivers/pduFlow.d.ts +53 -0
- package/dist/types/syslog/drivers/pduProtocol.d.ts +20 -0
- package/dist/types/syslog/httpFetch.d.ts +48 -0
- package/dist/types/syslog/logColor.d.ts +59 -0
- package/dist/types/syslog/sinks/FileSink.d.ts +78 -0
- package/dist/types/syslog/transports/BatchingHttpTransport.d.ts +59 -0
- package/dist/types/syslog/transports/ConsoleTransport.d.ts +8 -0
- package/dist/types/syslog/transports/FileTransport.d.ts +13 -0
- package/dist/types/syslog/transports/HttpTransport.d.ts +15 -0
- package/dist/types/syslog/transports/LokiTransport.d.ts +45 -0
- package/dist/types/syslog/transports/OpenSearchTransport.d.ts +40 -0
- package/dist/types/syslog/transports/SyslogTransport.d.ts +9 -0
- package/dist/types/syslog/transports/index.d.ts +12 -0
- package/dist/types/testing/index.d.ts +197 -0
- package/dist/types/types/IAdminApi.d.ts +246 -0
- package/dist/types/types/ICliKernel.d.ts +28 -0
- package/dist/types/types/ICommand.d.ts +14 -0
- package/dist/types/types/IContainer.d.ts +35 -0
- package/dist/types/types/IIdempotencyStore.d.ts +159 -0
- package/dist/types/types/IKernel.d.ts +138 -0
- package/dist/types/types/IMcpTool.d.ts +157 -0
- package/dist/types/types/IModule.d.ts +73 -0
- package/dist/types/types/IModuleManifest.d.ts +49 -0
- package/dist/types/types/IPage.d.ts +119 -0
- package/dist/types/types/IService.d.ts +62 -0
- package/dist/types/types/ISyslog.d.ts +58 -0
- package/dist/types/types/ITransport.d.ts +5 -0
- package/dist/types/types/globals.d.ts +47 -0
- package/docs/angular-services.md +318 -0
- package/docs/catalogue.md +184 -0
- package/docs/cli.md +369 -0
- package/docs/client.md +616 -0
- package/docs/debugbar.md +218 -0
- package/docs/environnement.md +308 -0
- package/docs/index.md +388 -0
- package/docs/kernel.md +670 -0
- package/docs/progression.md +228 -0
- package/docs/react-hooks.md +686 -0
- package/docs/request-context.md +507 -0
- package/docs/service.md +590 -0
- package/docs/svelte-reactivite.md +293 -0
- package/docs/syslog.md +848 -0
- package/docs/testing.md +203 -0
- package/docs/vue-composables.md +255 -0
- package/man/nodefony.1 +152 -0
- package/package.json +163 -83
- package/templates/app/agents/AGENTS.md.tpl +967 -0
- package/templates/app/agents/POINTEUR.md.tpl +12 -0
- package/templates/app/base/Dockerfile.tpl +104 -0
- package/templates/app/base/README.md.tpl +314 -0
- package/templates/app/base/dockerignore.tpl +28 -0
- package/templates/app/base/env.ts.tpl +130 -0
- package/templates/app/base/gitattributes.tpl +28 -0
- package/templates/app/base/github/workflows/ci.yml.tpl +91 -0
- package/templates/app/base/gitignore.tpl +46 -0
- package/templates/app/base/gitlab-ci.yml.tpl +42 -0
- package/templates/app/base/index.ts.tpl +69 -0
- package/templates/app/base/nodefony.config.ts.tpl +342 -0
- package/templates/app/base/oxlintrc.json.tpl +127 -0
- package/templates/app/base/package.json.tpl +75 -0
- package/templates/app/base/prettierignore.tpl +24 -0
- package/templates/app/base/prettierrc.json.tpl +12 -0
- package/templates/app/base/rolldown.config.ts.tpl +8 -0
- package/templates/app/base/tests/config.test.ts.tpl +29 -0
- package/templates/app/base/tests/e2e.setup.ts.tpl +181 -0
- package/templates/app/base/tests/e2e.test.ts.tpl +105 -0
- package/templates/app/base/tests/migrations.e2e.test.ts.tpl +579 -0
- package/templates/app/base/tsconfig.json.tpl +47 -0
- package/templates/app/base/vitest.config.ts.tpl +88 -0
- package/templates/app/base/vitest.e2e.config.ts.tpl +39 -0
- package/templates/app/complete/compose.yaml.tpl +328 -0
- package/templates/app/complete/deploy/migrate-job.yaml.tpl +100 -0
- package/templates/app/complete/docker/db/init-nodefony-e2e.sql.tpl +30 -0
- package/templates/app/complete/docker/grafana/provisioning/datasources/loki.yaml.tpl +15 -0
- package/templates/app/complete/env.local.tpl +11 -0
- package/templates/app/complete/env.tpl +53 -0
- package/templates/app/complete/nodefony/entity/User.ts.tpl +69 -0
- package/templates/app/complete/nodefony/security/provisionUsers.ts.tpl +124 -0
- package/templates/app/complete/nodefony/service/AppBannerService.ts.tpl +98 -0
- package/templates/app/complete/nodefony/service/AppInfoService.ts.tpl +85 -0
- package/templates/app/frontend/angular/frontend/src/accent.css.tpl +34 -0
- package/templates/app/frontend/angular/frontend/src/app/app.component.ts.tpl +400 -0
- package/templates/app/frontend/react/frontend/src/App.tsx.tpl +421 -0
- package/templates/app/frontend/react/frontend/src/accent.css.tpl +30 -0
- package/templates/app/frontend/shared/frontend/src/brand.ts.tpl +3 -0
- package/templates/app/frontend/shared/frontend/src/showcase.css.tpl +224 -0
- package/templates/app/frontend/shared/nodefony/controllers/AppController.ts.tpl +45 -0
- package/templates/app/frontend/svelte/frontend/src/App.svelte.tpl +371 -0
- package/templates/app/frontend/svelte/frontend/src/accent.css.tpl +34 -0
- package/templates/app/frontend/vue/frontend/src/App.vue.tpl +367 -0
- package/templates/app/frontend/vue/frontend/src/accent.css.tpl +34 -0
- package/templates/app/home/nodefony/controllers/HomeController.ts.tpl +38 -0
- package/templates/command/nodefony/command/__NAME__.ts.tpl +132 -0
- package/templates/controller/duplex/nodefony/controllers/__NAME__.ts.tpl +188 -0
- package/templates/controller/example/nodefony/controllers/__NAME__.ts.tpl +348 -0
- package/templates/controller/hello/nodefony/controllers/__NAME__.ts.tpl +143 -0
- package/templates/controller/realtime/nodefony/controllers/__NAME__.ts.tpl +153 -0
- package/templates/controller/realtime/tests/__KEBAB__-realtime.test.ts.tpl +79 -0
- package/templates/controller/rest/nodefony/controllers/__NAME__.ts.tpl +159 -0
- package/templates/entity/base/nodefony/entity/__PASCAL__.schema.ts.tpl +31 -0
- package/templates/entity/base/nodefony/entity/__PASCAL__.ts.tpl +68 -0
- package/templates/entity/controller/nodefony/controllers/__PASCAL__Controller.ts.tpl +335 -0
- package/templates/entity/service/nodefony/service/__PASCAL__Service.ts.tpl +126 -0
- package/templates/entity/tests/tests/__KEBAB__.e2e.test.ts.tpl +358 -0
- package/templates/entity/tests/tests/__KEBAB__.test.ts.tpl +87 -0
- package/templates/front/angular/frontend/src/app/app.component.ts.tpl +30 -0
- package/templates/front/base/nodefony/controllers/__NAME__.ts.tpl +60 -0
- package/templates/front/react/frontend/src/App.tsx.tpl +26 -0
- package/templates/front/svelte/frontend/src/App.svelte.tpl +19 -0
- package/templates/front/vue/frontend/src/App.vue.tpl +23 -0
- package/templates/module/ai/AGENTS.md.tpl +71 -0
- package/templates/module/base/README.md.tpl +62 -0
- package/templates/module/base/docs/index.md.tpl +55 -0
- package/templates/module/base/index.ts.tpl +50 -0
- package/templates/module/base/nodefony/config/config.ts.tpl +60 -0
- package/templates/module/base/nodefony/config/defineModuleConfig.ts.tpl +55 -0
- package/templates/module/base/nodefony/src/errors/__PASCAL__Error.ts.tpl +20 -0
- package/templates/module/base/package.json.tpl +53 -0
- package/templates/module/base/rolldown.config.ts.tpl +14 -0
- package/templates/module/base/tests/__KEBAB__.test.ts.tpl +39 -0
- package/templates/module/base/tsconfig.json.tpl +42 -0
- package/templates/module/base/vitest.config.ts.tpl +27 -0
- package/templates/module/packages/CLAUDE.md.tpl +51 -0
- package/templates/module/packages/MEMORY.md.tpl +39 -0
- package/templates/module/packages/tsconfig.declarations.json.tpl +19 -0
- package/templates/module/packages/tsconfig.tests.json.tpl +11 -0
- package/templates/module/service/nodefony/interfaces/I__PASCAL__Service.ts.tpl +14 -0
- package/templates/module/service/nodefony/interfaces/index.ts.tpl +1 -0
- package/templates/module/service/nodefony/service/__PASCAL__Service.ts.tpl +116 -0
- package/templates/service/nodefony/interfaces/I__PASCAL__Service.ts.tpl +19 -0
- package/templates/service/nodefony/service/__PASCAL__Service.ts.tpl +136 -0
- package/templates/service/tests/__PASCAL__Service.test.ts.tpl +53 -0
- package/templates/shared/front-entry/angular/frontend/src/main.ts.tpl +17 -0
- package/templates/shared/front-entry/react/frontend/src/main.tsx.tpl +11 -0
- package/templates/shared/front-entry/svelte/frontend/src/main.ts.tpl +13 -0
- package/templates/shared/front-entry/vue/frontend/src/main.ts.tpl +12 -0
- package/templates/shared/front-registrar/nodefony/frontend/register__PASCAL__Entry.ts.tpl +40 -0
- package/templates/shared/front-shell/frontend/index.html.tpl +39 -0
- package/templates/shared/ng-app-tsconfig/frontend/tsconfig.app.json.tpl +18 -0
- package/templates/shared/svelte-shim/frontend/src/env.d.ts.tpl +12 -0
- package/templates/shared/vue-shim/frontend/src/env.d.ts.tpl +15 -0
- package/.yarnclean +0 -45
- package/CHANGELOG.md +0 -406
- package/autoloader.es6 +0 -253
- package/builder.es6 +0 -366
- package/cli/builder/bundles/bundle.js +0 -328
- package/cli/builder/bundles/controller.js +0 -73
- package/cli/builder/bundles/users-bundle/.yarnclean +0 -45
- package/cli/builder/bundles/users-bundle/Command/fixtureTask.js +0 -47
- package/cli/builder/bundles/users-bundle/Command/usersCommand.js +0 -105
- package/cli/builder/bundles/users-bundle/Entity/mongoose/userEntity.js +0 -168
- package/cli/builder/bundles/users-bundle/Entity/sequelize/userEntity.js +0 -231
- package/cli/builder/bundles/users-bundle/Fixtures/users.js +0 -117
- package/cli/builder/bundles/users-bundle/Fixtures/usersFixtures.js +0 -114
- package/cli/builder/bundles/users-bundle/Resources/config/config.js +0 -90
- package/cli/builder/bundles/users-bundle/Resources/config/routing.js +0 -17
- package/cli/builder/bundles/users-bundle/Resources/config/security.js +0 -96
- package/cli/builder/bundles/users-bundle/Resources/config/services.js +0 -7
- package/cli/builder/bundles/users-bundle/Resources/config/webpack/webpack.dev.config.js +0 -13
- package/cli/builder/bundles/users-bundle/Resources/config/webpack/webpack.prod.config.js +0 -31
- package/cli/builder/bundles/users-bundle/Resources/config/webpack.config.js +0 -146
- package/cli/builder/bundles/users-bundle/Resources/js/users.js +0 -153
- package/cli/builder/bundles/users-bundle/Resources/public/favicon.ico +0 -0
- package/cli/builder/bundles/users-bundle/Resources/public/images/users-logo.png +0 -0
- package/cli/builder/bundles/users-bundle/Resources/scss/awesome/font-awesome.config.js +0 -11
- package/cli/builder/bundles/users-bundle/Resources/scss/custom.scss +0 -23
- package/cli/builder/bundles/users-bundle/Resources/scss/users.scss +0 -59
- package/cli/builder/bundles/users-bundle/Resources/swagger/openapi/login.js +0 -235
- package/cli/builder/bundles/users-bundle/Resources/swagger/openapi/users.js +0 -232
- package/cli/builder/bundles/users-bundle/Resources/translations/login.en_en.yml +0 -14
- package/cli/builder/bundles/users-bundle/Resources/translations/login.fr_fr.yml +0 -14
- package/cli/builder/bundles/users-bundle/Resources/translations/users.en_en.yml +0 -35
- package/cli/builder/bundles/users-bundle/Resources/translations/users.fr_fr.yml +0 -36
- package/cli/builder/bundles/users-bundle/Resources/views/base.html.twig +0 -32
- package/cli/builder/bundles/users-bundle/Resources/views/footer.html.twig +0 -7
- package/cli/builder/bundles/users-bundle/Resources/views/header.html.twig +0 -90
- package/cli/builder/bundles/users-bundle/Resources/views/login/login.html.twig +0 -43
- package/cli/builder/bundles/users-bundle/Resources/views/users/createUser.html.twig +0 -296
- package/cli/builder/bundles/users-bundle/Resources/views/users/readUsers.html.twig +0 -94
- package/cli/builder/bundles/users-bundle/controller/api/graphql/graphqlController.js +0 -56
- package/cli/builder/bundles/users-bundle/controller/api/graphql/userResolver.js +0 -121
- package/cli/builder/bundles/users-bundle/controller/api/graphql/usertype.js +0 -58
- package/cli/builder/bundles/users-bundle/controller/api/openapi/loginApiController.js +0 -210
- package/cli/builder/bundles/users-bundle/controller/api/openapi/restUserController.js +0 -244
- package/cli/builder/bundles/users-bundle/controller/loginController.js +0 -91
- package/cli/builder/bundles/users-bundle/controller/usersController.js +0 -332
- package/cli/builder/bundles/users-bundle/package.json +0 -58
- package/cli/builder/bundles/users-bundle/readme.md +0 -360
- package/cli/builder/bundles/users-bundle/services/usersService.js +0 -411
- package/cli/builder/bundles/users-bundle/src/providers/mongoose/userProvider.js +0 -47
- package/cli/builder/bundles/users-bundle/src/providers/sequelize/userProvider.js +0 -48
- package/cli/builder/bundles/users-bundle/tests/loginTest.js +0 -182
- package/cli/builder/bundles/users-bundle/usersBundle.js +0 -26
- package/cli/builder/microService/microService.js +0 -261
- package/cli/builder/microService/skeletons/.editorconfig +0 -18
- package/cli/builder/microService/skeletons/.env-cmdrc.js +0 -32
- package/cli/builder/microService/skeletons/.jshintrc +0 -37
- package/cli/builder/microService/skeletons/README.md +0 -117
- package/cli/builder/microService/skeletons/bin/bash/hello.sh +0 -5
- package/cli/builder/microService/skeletons/bin/cli +0 -13
- package/cli/builder/microService/skeletons/bin/python/hello.py +0 -20
- package/cli/builder/microService/skeletons/config/config.js +0 -29
- package/cli/builder/microService/skeletons/config/pm2.config.js +0 -72
- package/cli/builder/microService/skeletons/config/webpack/webpack.config.dev.js +0 -8
- package/cli/builder/microService/skeletons/config/webpack/webpack.config.prod.js +0 -25
- package/cli/builder/microService/skeletons/config/webpack.config.js +0 -114
- package/cli/builder/microService/skeletons/package.json +0 -76
- package/cli/builder/microService/skeletons/src/browser/index.css +0 -3
- package/cli/builder/microService/skeletons/src/browser/index.js +0 -16
- package/cli/builder/microService/skeletons/src/browser/socketio.js +0 -46
- package/cli/builder/microService/skeletons/src/cli/cli.js +0 -224
- package/cli/builder/microService/skeletons/src/cli/menu.js +0 -28
- package/cli/builder/microService/skeletons/src/n-api/README.md +0 -1
- package/cli/builder/microService/skeletons/src/n-api/binding.gyp +0 -14
- package/cli/builder/microService/skeletons/src/n-api/hello.cc +0 -14
- package/cli/builder/microService/skeletons/src/n-api/hello.js +0 -23
- package/cli/builder/microService/skeletons/src/n-api/package.json +0 -15
- package/cli/builder/microService/skeletons/src/node/examples/index.js +0 -120
- package/cli/builder/microService/skeletons/src/node/index.js +0 -102
- package/cli/builder/microService/skeletons/src/node/services/markdown/markdown.js +0 -27
- package/cli/builder/microService/skeletons/src/node/services/servers/http.js +0 -45
- package/cli/builder/microService/skeletons/src/node/services/servers/https.js +0 -44
- package/cli/builder/microService/skeletons/src/node/services/socketio/socketio.js +0 -46
- package/cli/builder/microService/skeletons/src/node/services/syscall/syscall.js +0 -111
- package/cli/builder/microService/skeletons/src/node/services/worker/thread.js +0 -59
- package/cli/builder/microService/skeletons/src/node/services/worker/worker.js +0 -60
- package/cli/builder/microService/skeletons/src/templates/base.html +0 -12
- package/cli/builder/microService/skeletons/src/templates/socket.html +0 -23
- package/cli/builder/microService/skeletons/tests/unit/serviceTest.js +0 -30
- package/cli/builder/project/project.js +0 -474
- package/cli/builder/project/skeletons/README.md +0 -778
- package/cli/builder/project/skeletons/bin/dev-deploy.sh +0 -5
- package/cli/builder/project/skeletons/bin/generateCertificates.sh.skeleton +0 -180
- package/cli/builder/project/skeletons/bin/prod-deploy.sh +0 -3
- package/cli/builder/project/skeletons/config/config.js.skeleton +0 -178
- package/cli/builder/project/skeletons/config/openssl/ca/openssl.cnf.skeleton +0 -150
- package/cli/builder/project/skeletons/config/openssl/ca_intermediate/openssl.cnf.skeleton +0 -152
- package/cli/builder/project/skeletons/config/pm2.config.js.skeleton +0 -62
- package/cli/builder/project/skeletons/documentation.html.twig +0 -24
- package/cli/builder/project/skeletons/editorconfig.skeleton +0 -18
- package/cli/builder/project/skeletons/eslintignore.skeleton +0 -15
- package/cli/builder/project/skeletons/eslintrc.js.skeleton +0 -97
- package/cli/builder/project/skeletons/gitignore.skeleton +0 -32
- package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.37.entity-user.js +0 -137
- package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.38.entity-session.js +0 -97
- package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.39.entity-requests.js +0 -115
- package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.40.entity-jwts.js +0 -97
- package/cli/builder/project/skeletons/migrations/migrations.skeleton.js +0 -101
- package/cli/builder/project/skeletons/package.json.twig +0 -71
- package/cli/builder/react/reactBuilder.js +0 -224
- package/cli/builder/react/skeletons/app/Resources/databases/nodefony.db +0 -0
- package/cli/builder/react/skeletons/app/Resources/translations/messages.en_en.yml +0 -5
- package/cli/builder/react/skeletons/app/Resources/translations/messages.fr_fr.yml +0 -5
- package/cli/builder/react/skeletons/app/Resources/views/base.html.twig +0 -33
- package/cli/builder/react/skeletons/app/config/config.js +0 -392
- package/cli/builder/react/skeletons/app/config/routing.js +0 -10
- package/cli/builder/react/skeletons/app/config/security.js +0 -74
- package/cli/builder/react/skeletons/app/controller/appController.js +0 -22
- package/cli/builder/sandbox/sandBoxBuilder.js +0 -610
- package/cli/builder/sandbox/skeletons/Resources/css/entry.css +0 -48
- package/cli/builder/sandbox/skeletons/Resources/js/entry.js +0 -60
- package/cli/builder/sandbox/skeletons/Resources/public/manifest.json +0 -32
- package/cli/builder/sandbox/skeletons/Resources/translations/messages.en_en.yml +0 -5
- package/cli/builder/sandbox/skeletons/Resources/translations/messages.fr_fr.yml +0 -5
- package/cli/builder/sandbox/skeletons/Resources/views/base.html.twig +0 -46
- package/cli/builder/sandbox/skeletons/Resources/views/index.html.twig +0 -34
- package/cli/builder/sandbox/skeletons/bootstrap/custom.scss +0 -27
- package/cli/builder/sandbox/skeletons/bootstrap/entry.scss +0 -60
- package/cli/builder/sandbox/skeletons/workbox/templates/index.html.twig +0 -32
- package/cli/builder/sandbox/skeletons/workbox/workers/service-worker.js +0 -196
- package/cli/builder/skeletons/Resources/public/favicon.ico +0 -0
- package/cli/builder/skeletons/Resources/public/images/app-logo.png +0 -0
- package/cli/builder/skeletons/Resources/views/framework-bundle/views/401.html.twig +0 -1
- package/cli/builder/skeletons/Resources/views/framework-bundle/views/401.json.twig +0 -24
- package/cli/builder/skeletons/Resources/views/framework-bundle/views/403.html.twig +0 -1
- package/cli/builder/skeletons/Resources/views/framework-bundle/views/403.json.twig +0 -20
- package/cli/builder/skeletons/Resources/views/framework-bundle/views/404.html.twig +0 -1
- package/cli/builder/skeletons/Resources/views/framework-bundle/views/404.json.twig +0 -20
- package/cli/builder/skeletons/Resources/views/framework-bundle/views/500.html.twig +0 -1
- package/cli/builder/skeletons/Resources/views/framework-bundle/views/base.html.twig +0 -30
- package/cli/builder/skeletons/Resources/views/framework-bundle/views/exception.html.twig +0 -1
- package/cli/builder/skeletons/Resources/views/framework-bundle/views/exception.json.twig +0 -24
- package/cli/builder/skeletons/Resources/views/framework-bundle/views/footer.html.twig +0 -33
- package/cli/builder/skeletons/Resources/views/framework-bundle/views/header.html.twig +0 -6
- package/cli/builder/skeletons/Resources/views/framework-bundle/views/index.html.twig +0 -6
- package/cli/builder/skeletons/Resources/views/framework-bundle/views/index.json.twig +0 -1
- package/cli/builder/skeletons/Resources/views/framework-bundle/views/layout.html.twig +0 -125
- package/cli/builder/skeletons/Resources/views/framework-bundle/views/layout.json.twig +0 -5
- package/cli/builder/skeletons/Resources/views/framework-bundle/views/timeout.html.twig +0 -1
- package/cli/builder/skeletons/Resources/views/framework-bundle/views/timeout.json.twig +0 -24
- package/cli/builder/skeletons/app/appKernel.js +0 -133
- package/cli/builder/skeletons/binding/binding.cc +0 -26
- package/cli/builder/skeletons/binding/binding.skeleton +0 -8
- package/cli/builder/skeletons/bundle/bundleClass.js +0 -37
- package/cli/builder/skeletons/command/commandClass.js +0 -11
- package/cli/builder/skeletons/command/taskClass.js +0 -20
- package/cli/builder/skeletons/config/config.js +0 -138
- package/cli/builder/skeletons/config/nodefony/elastic-bundle.js +0 -37
- package/cli/builder/skeletons/config/nodefony/framework-bundle.js +0 -22
- package/cli/builder/skeletons/config/nodefony/http-bundle.js +0 -104
- package/cli/builder/skeletons/config/nodefony/mail-bundle.js +0 -44
- package/cli/builder/skeletons/config/nodefony/mongoose-bundle.js +0 -51
- package/cli/builder/skeletons/config/nodefony/monitoring-bundle.js +0 -34
- package/cli/builder/skeletons/config/nodefony/realtime-bundle.js +0 -15
- package/cli/builder/skeletons/config/nodefony/redis-bundle.js +0 -44
- package/cli/builder/skeletons/config/nodefony/security-bundle.js +0 -25
- package/cli/builder/skeletons/config/nodefony/sequelize-bundle.js +0 -156
- package/cli/builder/skeletons/config/routing.js +0 -55
- package/cli/builder/skeletons/config/security.js +0 -102
- package/cli/builder/skeletons/config/services.js +0 -1
- package/cli/builder/skeletons/config/webpack/webpack.dev.config.js +0 -13
- package/cli/builder/skeletons/config/webpack/webpack.prod.config.js +0 -20
- package/cli/builder/skeletons/config/webpack.config.js +0 -148
- package/cli/builder/skeletons/controller/controllerClass.js +0 -75
- package/cli/builder/skeletons/package.json.twig +0 -57
- package/cli/builder/skeletons/unittest/testFile.js +0 -46
- package/cli/builder/vue/skeletons/Resources/public/images/app-logo.png +0 -0
- package/cli/builder/vue/skeletons/Resources/translations/messages.en_en.yml +0 -5
- package/cli/builder/vue/skeletons/Resources/translations/messages.fr_fr.yml +0 -5
- package/cli/builder/vue/skeletons/vue.config.js +0 -129
- package/cli/builder/vue/vueBuilder.js +0 -410
- package/cli/generate/generate.es6 +0 -103
- package/cli/install/install.js +0 -190
- package/cli/sequelize/sequelize.js +0 -94
- package/cli/start.js +0 -702
- package/cli/tools/pm2.es6 +0 -112
- package/cli/tools/tools.es6 +0 -97
- package/cli.es6 +0 -925
- package/container.es6 +0 -272
- package/error.es6 +0 -293
- package/fileClass.es6 +0 -242
- package/finder/file.es6 +0 -33
- package/finder/fileResult.es6 +0 -138
- package/finder/finder2.es6 +0 -275
- package/finder.es6 +0 -427
- package/kernel/annotations/annotations.es6 +0 -286
- package/kernel/api/api.es6 +0 -61
- package/kernel/api/graphqlApi.es6 +0 -107
- package/kernel/api/jsonApi.es6 +0 -177
- package/kernel/api/openApi.es6 +0 -139
- package/kernel/api/schemas/openApiSchema.js +0 -394
- package/kernel/babylon.es6 +0 -162
- package/kernel/bundle.es6 +0 -1200
- package/kernel/cliKernel.es6 +0 -869
- package/kernel/command.es6 +0 -78
- package/kernel/commands/nodefonyCommand.es6 +0 -247
- package/kernel/commands/tasks/bundlesTask.es6 +0 -59
- package/kernel/controllers/controller.es6 +0 -791
- package/kernel/fixture.es6 +0 -19
- package/kernel/injections/injections.es6 +0 -424
- package/kernel/kernel.es6 +0 -1960
- package/kernel/kernelWatcher.es6 +0 -387
- package/kernel/orm/entity.es6 +0 -59
- package/kernel/orm/orm.es6 +0 -139
- package/kernel/reader.es6 +0 -290
- package/kernel/security/encoder.es6 +0 -17
- package/kernel/security/factories/factory.es6 +0 -111
- package/kernel/security/factories/passeportFactory.es6 +0 -61
- package/kernel/security/provider.es6 +0 -58
- package/kernel/security/providers/chainProvider.es6 +0 -99
- package/kernel/security/providers/memoryProvider.es6 +0 -55
- package/kernel/security/providers/providerManager.es6 +0 -67
- package/kernel/security/providers/userEntityProvider.es6 +0 -50
- package/kernel/security/role.es6 +0 -12
- package/kernel/security/secureArea.es6 +0 -431
- package/kernel/security/tokens/token.es6 +0 -171
- package/kernel/security/user.es6 +0 -106
- package/kernel/serviceRealTime.es6 +0 -21
- package/kernel/services/connectionsService.es6 +0 -93
- package/kernel/services/cron/cronService.es6 +0 -123
- package/kernel/task.es6 +0 -80
- package/kernel/templates.es6 +0 -22
- package/kernel/templating/twig.es6 +0 -218
- package/kernel/tests/cliTest.js +0 -59
- package/kernel/tests/containerTest.js +0 -232
- package/kernel/tests/kernelTest.js +0 -39
- package/nodefony.es6 +0 -1084
- package/notificationsCenter.es6 +0 -118
- package/protocol.es6 +0 -86
- package/protocols/bayeux.es6 +0 -174
- package/protocols/jsonRpc/jsonrpc.es6 +0 -56
- package/result.es6 +0 -99
- package/service.es6 +0 -288
- package/syslog/pdu.es6 +0 -141
- package/syslog/syslog.es6 +0 -754
- package/watcher.es6 +0 -113
|
@@ -0,0 +1,573 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RealtimeClient — Core isomorphe Nodefony côté navigateur (P14.11).
|
|
3
|
+
*
|
|
4
|
+
* Protocole : JSON-RPC 2.0 maison sur WebSocket (+ HTTP long-polling fallback TODO P13).
|
|
5
|
+
* State machine : disconnected → connecting → connected → reconnecting → error.
|
|
6
|
+
*
|
|
7
|
+
* Features :
|
|
8
|
+
* - reconnect exponentiel avec back-off
|
|
9
|
+
* - pub/sub (on/off/emit) — notifications JSON-RPC sans id
|
|
10
|
+
* - request/response — RPC bidirectionnel typé
|
|
11
|
+
* - streaming — chunks `{ id, stream: { chunk, done } }` pour LLM token-by-token
|
|
12
|
+
*
|
|
13
|
+
* Le backend WS de référence (RealtimeService) sera implémenté en P13.4.
|
|
14
|
+
* En attendant, ce client peut parler à n'importe quel serveur JSON-RPC 2.0.
|
|
15
|
+
*/
|
|
16
|
+
import { type NodefonyNotice, type IRealtimeDenied } from "./notice.js";
|
|
17
|
+
import { type IRealtimePeer, type JsonRpcFrameKind } from "../../realtime/JsonRpcPeer.js";
|
|
18
|
+
/**
|
|
19
|
+
* Enveloppe d'un appel {@link RealtimeClient.call} : la valeur rendue par la
|
|
20
|
+
* route, et l'identifiant du profil serveur de cette frame (dev — `null` en
|
|
21
|
+
* production, où le serveur n'émet aucune méta).
|
|
22
|
+
*/
|
|
23
|
+
export interface IApiCallResult<T = unknown> {
|
|
24
|
+
result: T;
|
|
25
|
+
requestId: string | null;
|
|
26
|
+
}
|
|
27
|
+
import { type RealtimeTransportFactory } from "../../realtime/IRealtimeTransport.js";
|
|
28
|
+
import type { IRealtimeSocket, IRealtimeChannel, IChannelStats, RealtimeHandler } from "../../realtime/IRealtimeSocket.js";
|
|
29
|
+
import type { ActionNames, ActionParams, ActionResult, ActionsMap, DefaultActionsMap, DefaultEventsMap, EventNames, EventPayload, EventsMap, RealtimeIdentity, TypedRpcActionHandler, ContractParams, ContractResult } from "../../realtime/RealtimeEventMap.js";
|
|
30
|
+
import { type BindAdaptiveOptions, type AdaptiveChannelBinding } from "./AdaptiveRate.js";
|
|
31
|
+
export { closeCodeToNotice, deniedToNotice, isReconnectableCloseCode, } from "./notice.js";
|
|
32
|
+
export type { NodefonyNotice, NoticeLevel, IRealtimeDenied } from "./notice.js";
|
|
33
|
+
export { RpcError } from "../../realtime/JsonRpcPeer.js";
|
|
34
|
+
export type { RealtimeIdentity, IRealtimeWelcome, } from "../../realtime/RealtimeEventMap.js";
|
|
35
|
+
export type RealtimeState = "disconnected" | "connecting" | "connected" | "reconnecting" | "error";
|
|
36
|
+
export interface RealtimeOptions {
|
|
37
|
+
url?: string;
|
|
38
|
+
token?: string | null;
|
|
39
|
+
/** Reconnexion auto. Défaut: true. */
|
|
40
|
+
autoReconnect?: boolean;
|
|
41
|
+
/** Délai initial entre tentatives (ms). Défaut: 1000. */
|
|
42
|
+
reconnectDelay?: number;
|
|
43
|
+
/** Délai max entre tentatives (ms). Défaut: 30000. */
|
|
44
|
+
reconnectDelayMax?: number;
|
|
45
|
+
/** Heartbeat ping interval (ms). Défaut: 30000. */
|
|
46
|
+
heartbeatInterval?: number;
|
|
47
|
+
/**
|
|
48
|
+
* Annoncer le framework dans la console du navigateur ? Défaut : oui.
|
|
49
|
+
*
|
|
50
|
+
* Une socket qui vit NUE — sans noyau — est souvent tout ce qu'une page monte :
|
|
51
|
+
* sans cette annonce, elle ne dit rien d'elle-même et `nodefony` reste
|
|
52
|
+
* `undefined` dans la console, ce qui se lit « le framework n'est pas chargé ».
|
|
53
|
+
* `false` fait taire l'annonce ET le handle, pour une application publiée qui
|
|
54
|
+
* ne veut rien dans la console de ses utilisateurs.
|
|
55
|
+
*/
|
|
56
|
+
banner?: boolean;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Stats d'un canal — alias historique de {@link IChannelStats} (le contrat isomorphe
|
|
60
|
+
* `IRealtimeSocket`). Conservé pour les consommateurs qui importent `MessageStats`.
|
|
61
|
+
*/
|
|
62
|
+
export type MessageStats = IChannelStats;
|
|
63
|
+
/** Une frame du protocole temps réel (JSON-RPC 2.0) — pour le log/inspecteur. */
|
|
64
|
+
export interface RealtimeFrame {
|
|
65
|
+
/** Timestamp (ms epoch). */
|
|
66
|
+
ts: number;
|
|
67
|
+
/** Sens : `out` = client→serveur, `in` = serveur→client. */
|
|
68
|
+
dir: "in" | "out";
|
|
69
|
+
/** Méthode (notification/requête) ou `response`/`error`/`stream`. */
|
|
70
|
+
kind: string;
|
|
71
|
+
/** id JSON-RPC (requêtes/réponses), si présent. */
|
|
72
|
+
id?: number;
|
|
73
|
+
/** Canal pub/sub (`params.channel`), si présent. */
|
|
74
|
+
channel?: string;
|
|
75
|
+
/** Payload affichable — champs sensibles **redactés** (token/secret…). */
|
|
76
|
+
payload: unknown;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Réponse de la méthode RPC standard `nodefony:kernel:ping` — CONVENTION Nodefony : tout
|
|
80
|
+
* endpoint realtime (Studio aujourd'hui, `RealtimeService` en P13.4) y répond.
|
|
81
|
+
* Sert de liveness + base de mesure du round-trip (cf {@link RealtimeClient.ping}).
|
|
82
|
+
*/
|
|
83
|
+
export interface KernelPingResult {
|
|
84
|
+
pong: true;
|
|
85
|
+
ts: number;
|
|
86
|
+
/** uptime process serveur (s). */
|
|
87
|
+
uptime: number;
|
|
88
|
+
pid: number;
|
|
89
|
+
version?: string;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Tentative de reconnexion programmée par le back-off — charge utile de
|
|
93
|
+
* {@link RealtimeClient.onReconnect}.
|
|
94
|
+
*/
|
|
95
|
+
export interface RealtimeReconnectInfo {
|
|
96
|
+
/** Numéro de la tentative depuis la dernière connexion réussie (1 = la première). */
|
|
97
|
+
attempt: number;
|
|
98
|
+
/** Délai retenu avant cette tentative (ms), plafonné par `reconnectDelayMax`. */
|
|
99
|
+
delay: number;
|
|
100
|
+
/** Échéance absolue de la tentative (ms epoch) — pour un compte à rebours. */
|
|
101
|
+
nextRetryAt: number;
|
|
102
|
+
}
|
|
103
|
+
export declare class RealtimeClient<Emit extends EventsMap = DefaultEventsMap, Listen extends EventsMap = DefaultEventsMap, Actions extends ActionsMap = DefaultActionsMap> implements IRealtimeSocket<Emit, Listen, Actions>, IRealtimePeer<Emit, Actions> {
|
|
104
|
+
private readonly opts;
|
|
105
|
+
private transport;
|
|
106
|
+
private readonly transportFactory;
|
|
107
|
+
private _state;
|
|
108
|
+
private readonly peer;
|
|
109
|
+
private readonly handlers;
|
|
110
|
+
private readonly _subscriptions;
|
|
111
|
+
private _welcomed;
|
|
112
|
+
private reconnectAttempt;
|
|
113
|
+
private _nextRetryAt;
|
|
114
|
+
private reconnectTimer;
|
|
115
|
+
private heartbeatTimer;
|
|
116
|
+
private intentionalClose;
|
|
117
|
+
private readonly _stats;
|
|
118
|
+
private _framesReceived;
|
|
119
|
+
private _framesUnsent;
|
|
120
|
+
private _unsentNotified;
|
|
121
|
+
private _lastFrameAt;
|
|
122
|
+
private _lastFrameMethod;
|
|
123
|
+
private statsTimer;
|
|
124
|
+
private readonly _prevSampled;
|
|
125
|
+
private _rawFrames;
|
|
126
|
+
private _identity;
|
|
127
|
+
private _serverChannels;
|
|
128
|
+
private _serverMethods;
|
|
129
|
+
constructor(opts?: RealtimeOptions, transportFactory?: RealtimeTransportFactory);
|
|
130
|
+
/**
|
|
131
|
+
* Instance de connexion **partagée par URL** (résolue en absolu) sur
|
|
132
|
+
* `globalThis`. Plusieurs consommateurs d'une même page (ex. Studio + barre de
|
|
133
|
+
* debug) obtiennent la MÊME instance → **une seule socket** WebSocket. Les
|
|
134
|
+
* options ne s'appliquent qu'à la 1ʳᵉ création (les suivantes réutilisent).
|
|
135
|
+
*
|
|
136
|
+
* @param opts - options (au moins `url`), appliquées seulement à la création.
|
|
137
|
+
* @returns l'instance partagée pour cette URL.
|
|
138
|
+
*/
|
|
139
|
+
static shared(opts?: RealtimeOptions): RealtimeClient;
|
|
140
|
+
/**
|
|
141
|
+
* Message d'une adresse manquante — LA seule formulation, employée par les
|
|
142
|
+
* deux chemins qui peuvent la constater.
|
|
143
|
+
*
|
|
144
|
+
* Il n'y a **pas** de valeur par défaut, et c'est délibéré : la route dépend
|
|
145
|
+
* de l'application, pas du framework. Deviner `/nodefony/api/realtime` — ce
|
|
146
|
+
* que faisait ce client — donnait une socket qui ne se connecte jamais et se
|
|
147
|
+
* contente de retenter, sans un mot. Un échec franc coûte trente secondes ;
|
|
148
|
+
* une socket silencieusement morte coûte une soirée.
|
|
149
|
+
*/
|
|
150
|
+
private static missingUrl;
|
|
151
|
+
/** Résout une URL (relative ou absolue) en chaîne absolue stable = clé du singleton. */
|
|
152
|
+
private static resolveUrl;
|
|
153
|
+
get state(): RealtimeState;
|
|
154
|
+
/** Nombre de tentatives de reconnexion depuis la dernière connexion réussie. */
|
|
155
|
+
get reconnectAttempts(): number;
|
|
156
|
+
/**
|
|
157
|
+
* Timestamp (ms epoch) de la prochaine tentative de reconnexion planifiée,
|
|
158
|
+
* `null` hors backoff. Permet un compte à rebours UI synchronisé au vrai délai.
|
|
159
|
+
*/
|
|
160
|
+
get nextRetryAt(): number | null;
|
|
161
|
+
/**
|
|
162
|
+
* Force une reconnexion **immédiate** (annule le backoff en cours). No-op si
|
|
163
|
+
* déjà connecté/connexion en cours.
|
|
164
|
+
*/
|
|
165
|
+
retryNow(): void;
|
|
166
|
+
/**
|
|
167
|
+
* Ouvre la connexion WS. Idempotent — si déjà ouverte, no-op.
|
|
168
|
+
* Resolve une fois `connected` ou reject sur erreur fatale.
|
|
169
|
+
*/
|
|
170
|
+
connect(url?: string): Promise<void>;
|
|
171
|
+
/** L'URL configurée, ou l'échec franc — jamais une valeur devinée. */
|
|
172
|
+
private requireUrl;
|
|
173
|
+
disconnect(): void;
|
|
174
|
+
/** Pub/sub local — handler sur un event server-pushed (notification JSON-RPC). */
|
|
175
|
+
on<K extends string>(event: K, handler: K extends EventNames<Listen> ? (payload: EventPayload<Listen, K>) => void : RealtimeHandler): () => void;
|
|
176
|
+
off<K extends string>(event: K, handler: K extends EventNames<Listen> ? (payload: EventPayload<Listen, K>) => void : RealtimeHandler): void;
|
|
177
|
+
/**
|
|
178
|
+
* S'abonne aux **notices normalisées** émises par le client : criticités qui
|
|
179
|
+
* cassent le temps réel (close codes RFC 6455 interprétés via
|
|
180
|
+
* {@link closeCodeToNotice}), erreurs serveur poussées, rétablissement de
|
|
181
|
+
* connexion. Réutilisable par toute app — le centre de notifications (snackbar
|
|
182
|
+
* Studio) s'y branche directement.
|
|
183
|
+
*
|
|
184
|
+
* @param handler - reçoit chaque {@link NodefonyNotice}.
|
|
185
|
+
* @returns dispose (désabonnement).
|
|
186
|
+
*/
|
|
187
|
+
onNotice(handler: (notice: NodefonyNotice) => void): () => void;
|
|
188
|
+
/**
|
|
189
|
+
* S'abonne aux **refus de canal** poussés par le serveur (`realtime:denied`) :
|
|
190
|
+
* un `subscribe`/push vers un canal protégé sans droit suffisant. Permet une
|
|
191
|
+
* réaction CIBLÉE par canal (griser un contrôle, demander une élévation),
|
|
192
|
+
* complémentaire de {@link onNotice} (UX générique). Event LOCAL `__denied__`.
|
|
193
|
+
*
|
|
194
|
+
* Polymorphisme CLIENT : la réaction est pluggable ici ; l'AUTORITÉ reste
|
|
195
|
+
* serveur (le firewall a déjà décidé, le motif est générique — pas d'oracle).
|
|
196
|
+
*
|
|
197
|
+
* @param handler - reçoit `{ channel, reason }`.
|
|
198
|
+
* @returns dispose (désabonnement).
|
|
199
|
+
*/
|
|
200
|
+
onDenied(handler: (denied: IRealtimeDenied) => void): () => void;
|
|
201
|
+
/**
|
|
202
|
+
* Notification one-way client → server (pas de réponse attendue).
|
|
203
|
+
*
|
|
204
|
+
* C'est la SEULE émission dont personne n'apprend l'échec autrement : une
|
|
205
|
+
* requête corrélée est rejetée, un (dés)abonnement est rejoué au reconnect —
|
|
206
|
+
* une notification applicative perdue, elle, ne laisse aucune trace. Si le
|
|
207
|
+
* transport est fermé, l'utilisateur en est donc averti (une fois par épisode
|
|
208
|
+
* de coupure, cf {@link send}).
|
|
209
|
+
*/
|
|
210
|
+
emit<K extends string>(method: K, params?: K extends EventNames<Emit> ? EventPayload<Emit, K> : unknown): void;
|
|
211
|
+
/**
|
|
212
|
+
* Émission interne sans typage strict — utilisée pour les notifications système
|
|
213
|
+
* (`subscribe`, `unsubscribe`, `ping`) qui ne figurent pas dans la map `Emit`
|
|
214
|
+
* utilisateur. Bypasse les types conditionnels de {@link emit}.
|
|
215
|
+
*
|
|
216
|
+
* Ces frames-là **ne préviennent pas** l'utilisateur quand elles se perdent :
|
|
217
|
+
* les abonnements sont rejoués à la reconnexion et le heartbeat est arrêté
|
|
218
|
+
* avec les timers. Avertir ferait paraître comme une perte ce que le client
|
|
219
|
+
* rattrape tout seul — du bruit dans le centre de notifications d'une app qui
|
|
220
|
+
* monte et démonte des vues (le cas de Studio).
|
|
221
|
+
*
|
|
222
|
+
* @returns `false` si le transport n'a pas émis la frame.
|
|
223
|
+
*/
|
|
224
|
+
private _emitRaw;
|
|
225
|
+
/**
|
|
226
|
+
* Émet sur un canal — verbe socket de {@link IRealtimeSocket.publish}. Côté client =
|
|
227
|
+
* notification au serveur (alias clair de {@link emit}).
|
|
228
|
+
*/
|
|
229
|
+
publish<K extends string>(channel: K, payload?: K extends EventNames<Emit> ? EventPayload<Emit, K> : unknown): void;
|
|
230
|
+
/**
|
|
231
|
+
* S'abonne à un canal pub/sub serveur (**ref-compté**). Émet la notification
|
|
232
|
+
* `subscribe` au serveur UNIQUEMENT au 1er consommateur du canal ; les suivants
|
|
233
|
+
* ne font qu'incrémenter le compteur. Ré-émis automatiquement à chaque
|
|
234
|
+
* `realtime:welcome` — jamais à la simple ouverture de la socket, où le serveur
|
|
235
|
+
* le jetterait sans un mot. NE remplace PAS {@link on} : `on(channel, h)` REÇOIT les
|
|
236
|
+
* messages, `subscribe(channel)` DEMANDE au serveur de les pousser.
|
|
237
|
+
*
|
|
238
|
+
* Autorité unique partagée par le binding `nodefony/react` ET le store Studio →
|
|
239
|
+
* deux consommateurs du même canal ne se coupent plus l'un l'autre.
|
|
240
|
+
*/
|
|
241
|
+
subscribe(channel: EventNames<Listen> | (string & {})): void;
|
|
242
|
+
/**
|
|
243
|
+
* Désabonne un consommateur d'un canal (ref-compté) : émet `unsubscribe` au
|
|
244
|
+
* serveur seulement au **dernier** consommateur. No-op si le canal n'est pas suivi.
|
|
245
|
+
*/
|
|
246
|
+
unsubscribe(channel: EventNames<Listen> | (string & {})): void;
|
|
247
|
+
/** Canaux actuellement abonnés (≥ 1 consommateur). Lecture seule. */
|
|
248
|
+
get subscribedChannels(): string[];
|
|
249
|
+
/**
|
|
250
|
+
* L'adresse du serveur temps réel, telle qu'elle a été donnée (ou résolue en
|
|
251
|
+
* absolu par {@link shared}). `null` tant qu'aucune n'a été fournie — le
|
|
252
|
+
* framework n'en devine aucune.
|
|
253
|
+
*
|
|
254
|
+
* Publiée pour l'auto-observation : un instantané de socket qui ne dit pas DE
|
|
255
|
+
* QUELLE socket il parle ne sert à rien dès qu'une page en tient plus d'une.
|
|
256
|
+
*/
|
|
257
|
+
get url(): string | null;
|
|
258
|
+
/**
|
|
259
|
+
* Identité de la connexion, **annoncée par le serveur** au `realtime:welcome`
|
|
260
|
+
* ({@link RealtimeIdentity}). `null` tant qu'aucun welcome n'a été reçu ; une
|
|
261
|
+
* fois reçu, un visiteur anonyme a `authenticated: false` (jamais `null`). Un
|
|
262
|
+
* consommateur (Studio) sait ainsi s'il doit afficher le login **sans taper de
|
|
263
|
+
* route**. Rafraîchie à chaque (re)connexion ; remise à `null` au
|
|
264
|
+
* {@link disconnect} volontaire (logout).
|
|
265
|
+
*/
|
|
266
|
+
get identity(): RealtimeIdentity | null;
|
|
267
|
+
/** Canaux pub/sub annoncés par le serveur au welcome (découverte). `null` si pas (encore) reçu. */
|
|
268
|
+
get serverChannels(): readonly string[] | null;
|
|
269
|
+
/** Actions RPC annoncées par le serveur au welcome (découverte). `null` si pas (encore) reçu. */
|
|
270
|
+
get serverMethods(): readonly string[] | null;
|
|
271
|
+
/**
|
|
272
|
+
* S'abonne à l'identité résolue (event LOCAL `__identity__`, jamais réseau) :
|
|
273
|
+
* le handler est rappelé à chaque (re)welcome et au `disconnect()`. Permet à
|
|
274
|
+
* l'UI de basculer anonyme↔authentifié sans polling ni route `/auth/me`.
|
|
275
|
+
*
|
|
276
|
+
* @param handler - reçoit la {@link RealtimeIdentity} courante (ou `null`).
|
|
277
|
+
* @returns dispose (désabonnement).
|
|
278
|
+
*/
|
|
279
|
+
onIdentity(handler: (identity: RealtimeIdentity | null) => void): () => void;
|
|
280
|
+
/**
|
|
281
|
+
* S'abonne à l'**état de la connexion** (event LOCAL `__state__`, jamais réseau) :
|
|
282
|
+
* le handler est rappelé à chaque transition (`connecting`, `connected`,
|
|
283
|
+
* `reconnecting`, `error`, `disconnected`), jamais pour un état inchangé.
|
|
284
|
+
*
|
|
285
|
+
* C'est la porte à employer partout — un badge de connexion, une liaison de vue,
|
|
286
|
+
* une barre de debug. Écrire `on("__state__", …)` en clair marche aussi, mais
|
|
287
|
+
* recopie un nom d'événement interne dans du code applicatif : c'est ce qui a
|
|
288
|
+
* fait diverger les trois gabarits d'application.
|
|
289
|
+
*
|
|
290
|
+
* @param handler - reçoit le nouvel {@link RealtimeState}.
|
|
291
|
+
* @returns dispose (désabonnement).
|
|
292
|
+
*/
|
|
293
|
+
onState(handler: (state: RealtimeState) => void): () => void;
|
|
294
|
+
/**
|
|
295
|
+
* S'abonne au **tick d'échantillonnage des statistiques** (event LOCAL
|
|
296
|
+
* `__stats__`, jamais réseau), émis une fois par seconde après recalcul des
|
|
297
|
+
* débits par canal. Sans charge utile : lire ensuite {@link getChannelStats}
|
|
298
|
+
* ou {@link getStats}, dont les valeurs viennent d'être rafraîchies.
|
|
299
|
+
*
|
|
300
|
+
* @param handler - appelé à chaque échantillon.
|
|
301
|
+
* @returns dispose (désabonnement).
|
|
302
|
+
*/
|
|
303
|
+
onStats(handler: () => void): () => void;
|
|
304
|
+
/**
|
|
305
|
+
* S'abonne aux **tentatives de reconnexion programmées** (event LOCAL
|
|
306
|
+
* `__reconnect__`, jamais réseau) : numéro d'essai, délai retenu par le
|
|
307
|
+
* back-off, et échéance absolue. De quoi afficher un compte à rebours plutôt
|
|
308
|
+
* qu'un « déconnecté » muet.
|
|
309
|
+
*
|
|
310
|
+
* @param handler - reçoit `{ attempt, delay, nextRetryAt }`.
|
|
311
|
+
* @returns dispose (désabonnement).
|
|
312
|
+
*/
|
|
313
|
+
onReconnect(handler: (info: RealtimeReconnectInfo) => void): () => void;
|
|
314
|
+
/**
|
|
315
|
+
* Handle « socket-like » d'un canal ({@link IRealtimeChannel}) — fine liaison sur
|
|
316
|
+
* les primitives (`subscribe`/`on`/`publish`/`unsubscribe`), forme naturelle des
|
|
317
|
+
* canaux à état (SIP, bridge) et point d'accroche des couches à venir (codec,
|
|
318
|
+
* cadence, politique). N'ouvre rien : appeler `.open()` pour s'abonner. `kind` reste
|
|
319
|
+
* indéfini côté client tant que le serveur ne l'annonce pas.
|
|
320
|
+
*/
|
|
321
|
+
channel(name: string): IRealtimeChannel;
|
|
322
|
+
/**
|
|
323
|
+
* S'abonne à un canal d'ÉTAT en **cadence adaptative** (AIMD client-driven) : la lib
|
|
324
|
+
* mesure la gigue d'arrivée et ré-abonne automatiquement à une cadence plus grossière en
|
|
325
|
+
* cas de famine, plus fine quand c'est sain — sans changement serveur. `handler` reçoit
|
|
326
|
+
* les frames à travers les changements de cadence. Réservé aux canaux latest-wins.
|
|
327
|
+
*
|
|
328
|
+
* @param base - canal de base (sans suffixe de cadence).
|
|
329
|
+
* @param handler - reçoit le payload de chaque frame.
|
|
330
|
+
* @param options - cadence désirée + réglages AIMD (cf {@link BindAdaptiveOptions}).
|
|
331
|
+
* @returns une poignée {@link AdaptiveChannelBinding} (cadence courante + `dispose`).
|
|
332
|
+
*/
|
|
333
|
+
adaptiveChannel(base: string, handler: RealtimeHandler, options: BindAdaptiveOptions): AdaptiveChannelBinding;
|
|
334
|
+
/**
|
|
335
|
+
* Requête API par **path** — la MÊME action controller que le GET REST, via
|
|
336
|
+
* la socket (« API souveraine » : 1 action = N transports). Sucre au-dessus
|
|
337
|
+
* de la méthode RPC `api.request` (protocole caché — convention dans la lib,
|
|
338
|
+
* comme `nodefony:kernel:ping`/`ping()`) :
|
|
339
|
+
* ```ts
|
|
340
|
+
* const modules = await socket.request("/nodefony/kernel/api/modules");
|
|
341
|
+
* ```
|
|
342
|
+
* Échec → rejet {@link RpcError} (`data.status` = statut HTTP équivalent :
|
|
343
|
+
* 404 path inconnu, 403 refus…). Un path commence toujours par `/`, une
|
|
344
|
+
* méthode JSON-RPC jamais → zéro collision avec la forme `request(method)`.
|
|
345
|
+
*/
|
|
346
|
+
request<T = unknown>(path: `/${string}`, timeoutMs?: number): Promise<T>;
|
|
347
|
+
/**
|
|
348
|
+
* Request/response JSON-RPC 2.0 — `Promise` résolue avec le `result`.
|
|
349
|
+
*
|
|
350
|
+
* Le 1ᵉʳ générique est le **nom de la méthode**, le 2ᵉ le type du résultat :
|
|
351
|
+
* ```ts
|
|
352
|
+
* const r = await socket.request<"nodefony:kernel:ping", { pong: boolean }>(
|
|
353
|
+
* "nodefony:kernel:ping",
|
|
354
|
+
* );
|
|
355
|
+
* ```
|
|
356
|
+
* Quand `method` appartient au contrat `Actions`, `params` ET le résultat en
|
|
357
|
+
* sont déduits — un payload hors contrat est REFUSÉ à la compilation.
|
|
358
|
+
*
|
|
359
|
+
* ⚠️ **Rupture 10.0.0** : la forme `request<MonType>("ma:methode")` (`<T>` =
|
|
360
|
+
* résultat) n'existe plus. Elle était un attrape-tout qui rendait inopérant le
|
|
361
|
+
* contrôle des `params`. La réécrire en `request<"ma:methode", MonType>`.
|
|
362
|
+
*/
|
|
363
|
+
request<K extends string, T = unknown>(method: K, params?: ContractParams<Actions, K>, timeoutMs?: number): Promise<ContractResult<Actions, K, T>>;
|
|
364
|
+
/**
|
|
365
|
+
* Contrat {@link IRealtimePeer} rendu EXPLICITE — `method` et `params` sont
|
|
366
|
+
* tous deux bornés par le contrat `Actions`. Sans elle, la liste de surcharges
|
|
367
|
+
* (qui type `params` par un conditionnel non résolu) n'est pas assignable à la
|
|
368
|
+
* signature du peer et TS2416 tombe.
|
|
369
|
+
*/
|
|
370
|
+
request<K extends ActionNames<Actions>>(method: K, params?: ActionParams<Actions, K>, timeoutMs?: number): Promise<ActionResult<Actions, K>>;
|
|
371
|
+
/**
|
|
372
|
+
* **Mutation** API par le pont `api.request` (POST/PUT/PATCH/DELETE) — pendant
|
|
373
|
+
* d'écriture de {@link request} (qui ne fait que des lectures GET). Transporte
|
|
374
|
+
* la méthode HTTP **logique**, le corps, et une **clé d'idempotence**
|
|
375
|
+
* (OBLIGATOIRE côté serveur : une socket reconnecte et peut rejouer une frame
|
|
376
|
+
* en vol → la clé dédoublonne le rejeu, anti double-effet) :
|
|
377
|
+
* ```ts
|
|
378
|
+
* await socket.mutate("/nodefony/security/api/apikeys/42/revoke", {
|
|
379
|
+
* method: "POST", idempotencyKey: crypto.randomUUID(),
|
|
380
|
+
* });
|
|
381
|
+
* ```
|
|
382
|
+
* Échec → rejet {@link RpcError} (`data.status` = statut HTTP équivalent :
|
|
383
|
+
* 400 clé absente, 409 rejeu concurrent, 403 refus, 404 path inconnu…).
|
|
384
|
+
*/
|
|
385
|
+
mutate<T = unknown>(path: `/${string}`, init: {
|
|
386
|
+
method: "POST" | "PUT" | "PATCH" | "DELETE";
|
|
387
|
+
body?: unknown;
|
|
388
|
+
idempotencyKey: string;
|
|
389
|
+
timeoutMs?: number;
|
|
390
|
+
}): Promise<T>;
|
|
391
|
+
/**
|
|
392
|
+
* Appel API par la socket rendant l'**enveloppe complète** — le résultat ET
|
|
393
|
+
* la méta serveur — là où {@link request}/{@link mutate} ne rendent que la
|
|
394
|
+
* valeur (forme courante, contrat « snapshot ≡ GET REST »).
|
|
395
|
+
*
|
|
396
|
+
* Utile à l'outillage plus qu'aux applications : en développement, le serveur
|
|
397
|
+
* joint le `requestId` du profil de CETTE frame, ce qui permet d'aller lire sa
|
|
398
|
+
* radiographie (`GET /nodefony/profiler/api/{requestId}` — phases, SQL,
|
|
399
|
+
* décision du firewall). En production le serveur n'émet aucune méta :
|
|
400
|
+
* `requestId` vaut alors `null`, et l'appel coûte exactement le même trafic.
|
|
401
|
+
*
|
|
402
|
+
* ```ts
|
|
403
|
+
* const { result, requestId } = await socket.call("/nodefony/kernel/api/modules");
|
|
404
|
+
* ```
|
|
405
|
+
*
|
|
406
|
+
* Échec → rejet {@link RpcError}, comme {@link request} ; l'id du profil, lui,
|
|
407
|
+
* voyage dans `error.data.requestId` (un refus se radiographie aussi).
|
|
408
|
+
*
|
|
409
|
+
* @param path - chemin de la route (transport WEBSOCKET requis côté serveur).
|
|
410
|
+
* @param init - méthode logique (défaut `GET`), corps, clé d'idempotence.
|
|
411
|
+
*/
|
|
412
|
+
call<T = unknown>(path: `/${string}`, init?: {
|
|
413
|
+
method?: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
|
|
414
|
+
body?: unknown;
|
|
415
|
+
idempotencyKey?: string;
|
|
416
|
+
timeoutMs?: number;
|
|
417
|
+
}): Promise<IApiCallResult<T>>;
|
|
418
|
+
/**
|
|
419
|
+
* Mesure le round-trip WS via la méthode RPC standard `nodefony:kernel:ping` — helper
|
|
420
|
+
* RÉUTILISABLE par tout consommateur (topbar Studio, debug bar, app user) :
|
|
421
|
+
* la mesure du RTT et la convention `nodefony:kernel:ping` vivent dans la lib cliente,
|
|
422
|
+
* pas dupliquées dans chaque front. Renvoie le payload serveur enrichi de `rtt`
|
|
423
|
+
* (ms, aller-retour mesuré côté client). Lève si le serveur ne répond pas
|
|
424
|
+
* (`request` timeout) ou ne connaît pas la méthode (`-32601`).
|
|
425
|
+
*/
|
|
426
|
+
ping(timeoutMs?: number): Promise<KernelPingResult & {
|
|
427
|
+
rtt: number;
|
|
428
|
+
}>;
|
|
429
|
+
/** Notification SORTANTE typée (pas de réponse). Pendant de {@link emit}/{@link publish}. */
|
|
430
|
+
notify<K extends EventNames<Emit>>(method: K, params?: EventPayload<Emit, K>): void;
|
|
431
|
+
/**
|
|
432
|
+
* Expose une action appelable PAR LE PAIR (requête entrante serveur→client).
|
|
433
|
+
* Cœur du duplex débloqué par L0 : sans handler, une requête entrante reçoit
|
|
434
|
+
* `-32601` ; avec, le `result` repart au serveur (confirmation d'action,
|
|
435
|
+
* invalidation de cache poussée, health applicatif serveur→client).
|
|
436
|
+
*/
|
|
437
|
+
register<K extends ActionNames<Actions>>(method: K, handler: TypedRpcActionHandler<Actions, K>): void;
|
|
438
|
+
/** Retire une action exposée. */
|
|
439
|
+
unregister<K extends ActionNames<Actions>>(method: K): void;
|
|
440
|
+
/** Actions exposées par CE client (découverte). ≠ {@link serverMethods} (côté serveur). */
|
|
441
|
+
get methods(): string[];
|
|
442
|
+
/**
|
|
443
|
+
* Ingestion d'une frame ENTRANTE déjà parsée → log + classification/route par le
|
|
444
|
+
* moteur. Renvoie sa nature. Une frame `invalid` peut porter une erreur GLOBALE
|
|
445
|
+
* serveur (`{jsonrpc, error}` hors spec JSON-RPC) → notice (cf {@link handleServerError}).
|
|
446
|
+
*/
|
|
447
|
+
receive(frame: unknown): JsonRpcFrameKind;
|
|
448
|
+
/** Annule les requêtes sortantes en attente (fermeture transport / logout). */
|
|
449
|
+
dispose(reason?: string): void;
|
|
450
|
+
/** Total de notifications reçues, tous canaux confondus (welcome inclus). */
|
|
451
|
+
get framesReceived(): number;
|
|
452
|
+
/**
|
|
453
|
+
* Total de frames qui n'ont **pas** pu partir depuis la création du client
|
|
454
|
+
* (transport fermé au moment de l'émission). Reste à `0` en fonctionnement
|
|
455
|
+
* normal ; toute valeur non nulle date d'une coupure ou d'une émission
|
|
456
|
+
* antérieure à la première connexion.
|
|
457
|
+
*/
|
|
458
|
+
get framesUnsent(): number;
|
|
459
|
+
/** Timestamp (ms) de la dernière notification reçue. */
|
|
460
|
+
get lastFrameAt(): number | null;
|
|
461
|
+
/** `method`/canal de la dernière notification reçue. */
|
|
462
|
+
get lastFrameMethod(): string | null;
|
|
463
|
+
/** Snapshot des stats par canal (msgCount/rate/series). Les objets sont les
|
|
464
|
+
* refs internes — à LIRE, pas à muter (copier les valeurs si besoin). */
|
|
465
|
+
getStats(): MessageStats[];
|
|
466
|
+
/** Stats d'un canal précis (== method JSON-RPC) ou `undefined`. */
|
|
467
|
+
getChannelStats(method: string): MessageStats | undefined;
|
|
468
|
+
/** Comptabilise une notification entrante (avant dispatch aux handlers). */
|
|
469
|
+
private trackFrame;
|
|
470
|
+
/**
|
|
471
|
+
* (Ré)émet un `subscribe` pour chaque canal ref-compté, à la réception du
|
|
472
|
+
* `realtime:welcome` — le seul instant où le serveur est prêt à l'enregistrer.
|
|
473
|
+
*
|
|
474
|
+
* Ouvrir la socket ne suffit pas : pendant que le serveur authentifie, son
|
|
475
|
+
* transport JSON-RPC n'est pas encore branché et il **jette** les frames
|
|
476
|
+
* entrantes, sans pouvoir répondre — c'est le contrat écrit par
|
|
477
|
+
* `RealtimeController.handleRealtime`. Rejouer sur `onOpen` revenait à parler
|
|
478
|
+
* dans le vide, et perdait en silence deux cas entiers : un `subscribe` posé
|
|
479
|
+
* avant `start()`, et TOUS les abonnements après une reconnexion.
|
|
480
|
+
*
|
|
481
|
+
* Cold path (1×/connexion) : ne parcourt que les canaux réellement suivis, et
|
|
482
|
+
* n'alloue rien.
|
|
483
|
+
*/
|
|
484
|
+
private replaySubscriptions;
|
|
485
|
+
/**
|
|
486
|
+
* Ingère le `realtime:welcome` : mémorise l'identité résolue + les capabilities
|
|
487
|
+
* annoncées (canaux/actions découvrables) et émet `__identity__`. Tolérant à un
|
|
488
|
+
* welcome partiel/legacy (champs absents → `null`). Cold path (1×/connexion).
|
|
489
|
+
*/
|
|
490
|
+
private ingestWelcome;
|
|
491
|
+
/**
|
|
492
|
+
* Détail de la socket dans la console — le pendant, pour une page SANS noyau,
|
|
493
|
+
* du groupe que le noyau émet quand il y en a un (#136).
|
|
494
|
+
*
|
|
495
|
+
* Une vitrine ne compose rien : sans ceci, elle n'a aucun endroit où lire son
|
|
496
|
+
* adresse, ses canaux ou son identité, alors que c'est exactement ce qu'on
|
|
497
|
+
* cherche quand une socket ne pousse rien. Émis au premier accueil, une seule
|
|
498
|
+
* fois par page, et jamais en production.
|
|
499
|
+
*/
|
|
500
|
+
private detailsSocket;
|
|
501
|
+
/**
|
|
502
|
+
* Ingère un `realtime:denied` (refus d'abonnement/push poussé par le serveur) :
|
|
503
|
+
* émet une notice normalisée ({@link onNotice}) ET un event ciblé `__denied__`
|
|
504
|
+
* ({@link onDenied}) pour une réaction polymorphe de l'app. Tolérant à un
|
|
505
|
+
* payload partiel (motif par défaut `forbidden`). Cold path (refus rare).
|
|
506
|
+
*/
|
|
507
|
+
private ingestDenied;
|
|
508
|
+
/**
|
|
509
|
+
* Dispatch d'une NOTIFICATION entrante — appelé par le moteur via `onNotification`.
|
|
510
|
+
* Ordre figé : ingestion welcome (1ʳᵉ frame) → stats → handlers locaux + wildcard
|
|
511
|
+
* (un handler `on("realtime:welcome")` voit donc l'identité déjà ingérée).
|
|
512
|
+
*/
|
|
513
|
+
private dispatchNotification;
|
|
514
|
+
/**
|
|
515
|
+
* Frame `invalid` (JSON-RPC strict) portant un `error` sans `id`/`method` = erreur
|
|
516
|
+
* GLOBALE serveur (extension Nodefony hors spec, ex. refus tardif) → notice pour le
|
|
517
|
+
* centre de notifications. Frame réellement malformée (sans `.error`) → no-op.
|
|
518
|
+
*/
|
|
519
|
+
private handleServerError;
|
|
520
|
+
/** Échantillonne le débit (msg/s) + série par canal, 1×/s, puis émet
|
|
521
|
+
* `__stats__` (event local) pour notifier les consommateurs réactifs. */
|
|
522
|
+
private startStatsSampler;
|
|
523
|
+
/** Émet une notice normalisée aux abonnés `onNotice` (event local, pas réseau). */
|
|
524
|
+
private fireNotice;
|
|
525
|
+
/** Déclenche les handlers locaux d'un event interne (pas d'envoi réseau). */
|
|
526
|
+
private fireLocal;
|
|
527
|
+
private openSocket;
|
|
528
|
+
private scheduleReconnect;
|
|
529
|
+
private startHeartbeat;
|
|
530
|
+
private clearTimers;
|
|
531
|
+
/**
|
|
532
|
+
* Log protocole : les `FRAME_LOG_MAX` dernières frames JSON-RPC (redactées),
|
|
533
|
+
* enregistrées EN CONTINU → la console « retrace l'instant » dès l'ouverture
|
|
534
|
+
* (jamais de démarrage à vide). Construction + redaction faites ici, à la lecture.
|
|
535
|
+
*/
|
|
536
|
+
get frameLog(): readonly RealtimeFrame[];
|
|
537
|
+
/** Purge le log protocole. */
|
|
538
|
+
clearFrameLog(): void;
|
|
539
|
+
/**
|
|
540
|
+
* Enregistre une frame dans le ring — coût = 1 push de réf (construction +
|
|
541
|
+
* redaction DIFFÉRÉES). Émet `__frame__` (frame construite) seulement si la
|
|
542
|
+
* console écoute.
|
|
543
|
+
*/
|
|
544
|
+
private recordFrame;
|
|
545
|
+
/** Construit une frame affichable (kind/canal/id + payload redacté). */
|
|
546
|
+
private static buildFrame;
|
|
547
|
+
/**
|
|
548
|
+
* Émet une frame si — et seulement si — le transport est ouvert.
|
|
549
|
+
*
|
|
550
|
+
* La frame n'est **pas** mise en file d'attente : rejouer une intention après
|
|
551
|
+
* coup peut être pire que la perdre (une commande obsolète appliquée en
|
|
552
|
+
* retard, un abonnement rétabli sur un écran déjà quitté). Ce qui n'est plus
|
|
553
|
+
* accepté, c'est de la perdre **en silence** — l'appelant reçoit `false`, une
|
|
554
|
+
* requête corrélée est rejetée aussitôt par {@link JsonRpcPeer} plutôt qu'au
|
|
555
|
+
* bout de son timeout, et l'utilisateur est prévenu une fois par épisode.
|
|
556
|
+
*
|
|
557
|
+
* @param msg - la frame JSON-RPC à sérialiser.
|
|
558
|
+
* @returns `true` si la frame est partie, `false` si le transport était fermé.
|
|
559
|
+
*/
|
|
560
|
+
private send;
|
|
561
|
+
/**
|
|
562
|
+
* Avertit que des notifications applicatives se perdent — **une fois par
|
|
563
|
+
* épisode** de coupure, jamais par frame : une vue qui pousse en boucle
|
|
564
|
+
* remplirait sinon le centre de notifications à elle seule.
|
|
565
|
+
*
|
|
566
|
+
* Appelé depuis {@link emit} uniquement. Les requêtes corrélées et les
|
|
567
|
+
* (dés)abonnements ont déjà leur propre voie (rejet, rejeu au reconnect).
|
|
568
|
+
*/
|
|
569
|
+
private noticeUnsent;
|
|
570
|
+
private handleMessage;
|
|
571
|
+
private setState;
|
|
572
|
+
}
|
|
573
|
+
export default RealtimeClient;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* localEvents — **noms des événements LOCAUX du client temps réel**.
|
|
3
|
+
*
|
|
4
|
+
* Ces six noms ne voyagent jamais sur le fil : ils ne servent qu'à propager, dans
|
|
5
|
+
* la page, ce que le client vient d'apprendre (changement d'état de connexion,
|
|
6
|
+
* identité résolue au welcome, échantillon de statistiques, notice normalisée,
|
|
7
|
+
* refus de canal). Ils partagent la table de `on()`/`off()` avec les canaux
|
|
8
|
+
* réseau ; le double soulignement est ce qui les en distingue.
|
|
9
|
+
*
|
|
10
|
+
* **La table est la source unique**, exactement pour la même raison que
|
|
11
|
+
* {@link PLATFORM_CHANNELS} l'est pour les canaux réseau : une chaîne recopiée
|
|
12
|
+
* dans un écran est une chaîne qui survivra au renommage suivant. Celle-ci avait
|
|
13
|
+
* déjà divergé — `"__state__"` était écrit en clair dans les trois gabarits
|
|
14
|
+
* d'application, dans la barre de debug et dans la console d'administration,
|
|
15
|
+
* sans qu'aucune constante ne l'exporte.
|
|
16
|
+
*
|
|
17
|
+
* Un consommateur n'a d'ailleurs pas à les connaître : `onState`, `onIdentity`,
|
|
18
|
+
* `onStats`, `onNotice`, `onDenied` et `onReconnect` sont les portes publiques. La table existe
|
|
19
|
+
* pour les implémentations (le client lui-même, ses observateurs agnostiques) et
|
|
20
|
+
* pour un test qui veut se brancher au plus bas niveau.
|
|
21
|
+
*
|
|
22
|
+
* Pur et isomorphe (aucun import, aucune allocation).
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* Événements locaux du {@link RealtimeClient} — jamais émis ni reçus par le réseau.
|
|
26
|
+
*
|
|
27
|
+
* @see {@link RealtimeClient.onState} · {@link RealtimeClient.onIdentity} ·
|
|
28
|
+
* {@link RealtimeClient.onStats} · {@link RealtimeClient.onNotice} ·
|
|
29
|
+
* {@link RealtimeClient.onDenied} — les portes publiques à préférer partout.
|
|
30
|
+
*/
|
|
31
|
+
export declare const LOCAL_EVENTS: {
|
|
32
|
+
/** État de la connexion (`"connected" | "reconnecting" | …`), à chaque transition. */
|
|
33
|
+
readonly state: "__state__";
|
|
34
|
+
/** Identité résolue par le serveur au welcome ; `null` après un `disconnect()`. */
|
|
35
|
+
readonly identity: "__identity__";
|
|
36
|
+
/** Tick d'échantillonnage des statistiques par canal (1×/s), sans charge utile. */
|
|
37
|
+
readonly stats: "__stats__";
|
|
38
|
+
/** Notice normalisée (criticité temps réel interprétée). */
|
|
39
|
+
readonly notice: "__notice__";
|
|
40
|
+
/** Refus d'un canal poussé par le serveur (`realtime:denied`). */
|
|
41
|
+
readonly denied: "__denied__";
|
|
42
|
+
/** Tentative de reconnexion programmée (numéro d'essai, délai, échéance). */
|
|
43
|
+
readonly reconnect: "__reconnect__";
|
|
44
|
+
};
|
|
45
|
+
/** Un des noms d'événement local de la table {@link LOCAL_EVENTS}. */
|
|
46
|
+
export type LocalEvent = (typeof LOCAL_EVENTS)[keyof typeof LOCAL_EVENTS];
|
|
47
|
+
/**
|
|
48
|
+
* Vrai si `event` est un événement local du client (jamais un canal réseau).
|
|
49
|
+
*
|
|
50
|
+
* Sert aux couches qui inspectent la table des abonnements — une barre de debug,
|
|
51
|
+
* un inventaire de canaux — et qui doivent écarter ce qui n'est pas du trafic.
|
|
52
|
+
*/
|
|
53
|
+
export declare function isLocalEvent(event: string): event is LocalEvent;
|