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,339 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Métadonnées publiées d'une ressource protégée — RFC 9728 §2.
|
|
3
|
+
*
|
|
4
|
+
* Les noms de champs sont ceux du registre IANA, en `snake_case` : c'est un
|
|
5
|
+
* document de protocole, pas un objet interne. Le renommer « pour la
|
|
6
|
+
* cohérence » le rendrait illisible par tout client conforme.
|
|
7
|
+
*
|
|
8
|
+
* Seul `resource` est REQUIS par la RFC. `authorization_servers` y est optionnel
|
|
9
|
+
* — mais un consommateur peut en faire une exigence (le Model Context Protocol
|
|
10
|
+
* l'impose : « MUST include the `authorization_servers` field containing at
|
|
11
|
+
* least one authorization server »), et c'est ce que
|
|
12
|
+
* {@link buildProtectedResourceMetadata} applique : sans serveur d'autorisation,
|
|
13
|
+
* le document ne mène nulle part, donc il ne se publie pas.
|
|
14
|
+
*/
|
|
15
|
+
export interface IProtectedResourceMetadata {
|
|
16
|
+
/** URI canonique de la ressource — l'audience que les jetons doivent porter. */
|
|
17
|
+
resource: string;
|
|
18
|
+
/** Serveurs d'autorisation capables d'émettre un jeton pour elle. */
|
|
19
|
+
authorization_servers: string[];
|
|
20
|
+
/** Scopes que la ressource comprend — guide le client (RECOMMENDED). */
|
|
21
|
+
scopes_supported?: string[];
|
|
22
|
+
/**
|
|
23
|
+
* Comment présenter le jeton. Toujours `["header"]` ici, et c'est normatif :
|
|
24
|
+
* la spécification MCP interdit la chaîne de requête (« Access tokens MUST NOT
|
|
25
|
+
* be included in the URI query string ») — une URL finit dans les journaux,
|
|
26
|
+
* l'historique et le `Referer`.
|
|
27
|
+
*/
|
|
28
|
+
bearer_methods_supported?: string[];
|
|
29
|
+
/** Nom lisible, affiché par le client pendant le consentement. */
|
|
30
|
+
resource_name?: string;
|
|
31
|
+
/** Où un humain lit ce que fait cette ressource. */
|
|
32
|
+
resource_documentation?: string;
|
|
33
|
+
}
|
|
34
|
+
/** De quoi composer le document — ce que l'application, seule, connaît. */
|
|
35
|
+
export interface IProtectedResourceInput {
|
|
36
|
+
/**
|
|
37
|
+
* URI canonique de la ressource, telle qu'un client l'atteint.
|
|
38
|
+
*
|
|
39
|
+
* 🔴 **Elle s'ÉCRIT, elle ne se dérive pas de l'en-tête `Host`.** Si l'URI
|
|
40
|
+
* publiée et l'audience attendue venaient toutes deux de la requête, un `Host`
|
|
41
|
+
* forgé obtiendrait un jeton d'audience arbitraire *et* passerait la
|
|
42
|
+
* vérification : la liaison d'audience (RFC 8707), dont c'est l'unique raison
|
|
43
|
+
* d'être, ne protégerait plus rien. Un déploiement derrière un relais doit de
|
|
44
|
+
* toute façon déclarer son URL publique.
|
|
45
|
+
*/
|
|
46
|
+
resource: string;
|
|
47
|
+
/** Au moins un serveur d'autorisation — sinon le document ne mène nulle part. */
|
|
48
|
+
authorizationServers: readonly string[];
|
|
49
|
+
/** Scopes compris par la ressource (facultatif, mais recommandé). */
|
|
50
|
+
scopesSupported?: readonly string[];
|
|
51
|
+
/** Nom lisible par un humain. */
|
|
52
|
+
resourceName?: string;
|
|
53
|
+
/** URL d'une documentation destinée à un humain. */
|
|
54
|
+
resourceDocumentation?: string;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Normalise et contrôle une URI canonique de ressource (RFC 8707 §2).
|
|
58
|
+
*
|
|
59
|
+
* Trois refus, tous vécus comme des sources d'erreur silencieuse ailleurs :
|
|
60
|
+
* l'absence de schéma (une audience relative ne se compare à rien), un fragment
|
|
61
|
+
* (interdit — il ne voyage jamais jusqu'au serveur, donc deux URI distinctes
|
|
62
|
+
* seraient reçues identiques), et un schéma non `http(s)`.
|
|
63
|
+
*
|
|
64
|
+
* La barre oblique terminale est retirée : les deux formes sont des URI
|
|
65
|
+
* valides, mais l'audience se compare par **chaîne exacte** — publier une forme
|
|
66
|
+
* et valider l'autre produit un refus que rien n'explique.
|
|
67
|
+
*
|
|
68
|
+
* @param raw - URI telle qu'écrite en configuration
|
|
69
|
+
* @returns l'URI canonique, sans barre terminale
|
|
70
|
+
* @throws Error si l'URI ne peut pas servir d'audience
|
|
71
|
+
*/
|
|
72
|
+
export declare function canonicalResourceUri(raw: string): string;
|
|
73
|
+
/**
|
|
74
|
+
* Compose le CHEMIN où publier les métadonnées, à partir de l'URI de la
|
|
75
|
+
* ressource (RFC 9728 §3.1).
|
|
76
|
+
*
|
|
77
|
+
* La règle est une insertion, pas une concaténation : le suffixe bien connu se
|
|
78
|
+
* place **entre l'hôte et le chemin** de la ressource. Une application qui
|
|
79
|
+
* publierait `…/nodefony/mcp/.well-known/…` servirait un document que personne
|
|
80
|
+
* ne demande jamais.
|
|
81
|
+
*
|
|
82
|
+
* @param resource - URI canonique de la ressource (ou son seul chemin)
|
|
83
|
+
* @returns le chemin absolu à servir en `GET`
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```ts
|
|
87
|
+
* protectedResourceMetadataPath("https://app.example/nodefony/mcp");
|
|
88
|
+
* // → "/.well-known/oauth-protected-resource/nodefony/mcp"
|
|
89
|
+
* protectedResourceMetadataPath("https://app.example");
|
|
90
|
+
* // → "/.well-known/oauth-protected-resource"
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
export declare function protectedResourceMetadataPath(resource: string): string;
|
|
94
|
+
/**
|
|
95
|
+
* Compose l'URL ABSOLUE des métadonnées — celle qui part dans le défi.
|
|
96
|
+
*
|
|
97
|
+
* @param resource - URI canonique de la ressource
|
|
98
|
+
* @returns l'URL complète du document de métadonnées
|
|
99
|
+
*/
|
|
100
|
+
export declare function protectedResourceMetadataUrl(resource: string): string;
|
|
101
|
+
/**
|
|
102
|
+
* Compose le document de métadonnées.
|
|
103
|
+
*
|
|
104
|
+
* @param input - ce que l'application déclare de sa ressource
|
|
105
|
+
* @returns le document, prêt à sérialiser
|
|
106
|
+
* @throws Error si aucun serveur d'autorisation n'est déclaré, ou si l'URI de
|
|
107
|
+
* ressource ne peut pas servir d'audience
|
|
108
|
+
*/
|
|
109
|
+
export declare function buildProtectedResourceMetadata(input: IProtectedResourceInput): IProtectedResourceMetadata;
|
|
110
|
+
/** Codes d'erreur d'un porteur — RFC 6750 §3.1. */
|
|
111
|
+
export declare const BearerError: {
|
|
112
|
+
/**
|
|
113
|
+
* Requête mal formée (schéma inconnu, jeton absent après `Bearer`).
|
|
114
|
+
* La RFC veut **400**, pas 401 : rien n'a été présenté qu'on puisse juger.
|
|
115
|
+
*/
|
|
116
|
+
readonly INVALID_REQUEST: "invalid_request";
|
|
117
|
+
/** Jeton expiré, révoqué, mal formé, ou d'une autre audience → **401**. */
|
|
118
|
+
readonly INVALID_TOKEN: "invalid_token";
|
|
119
|
+
/** Identité prouvée, droits insuffisants → **403**. */
|
|
120
|
+
readonly INSUFFICIENT_SCOPE: "insufficient_scope";
|
|
121
|
+
};
|
|
122
|
+
/** Un des codes de {@link BearerError}. */
|
|
123
|
+
export type BearerErrorCode = (typeof BearerError)[keyof typeof BearerError];
|
|
124
|
+
/** De quoi composer un défi `WWW-Authenticate`. */
|
|
125
|
+
export interface IBearerChallenge {
|
|
126
|
+
/** URL du document de métadonnées — RFC 9728 §5.1. */
|
|
127
|
+
resourceMetadataUrl: string;
|
|
128
|
+
/** Scopes nécessaires à l'opération en cours. */
|
|
129
|
+
scopes?: readonly string[];
|
|
130
|
+
/** Code d'erreur, ABSENT quand la requête ne portait aucune information. */
|
|
131
|
+
error?: BearerErrorCode;
|
|
132
|
+
/** Explication lisible, jamais une cause fine (anti-oracle). */
|
|
133
|
+
description?: string;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Compose l'en-tête `WWW-Authenticate` d'un refus.
|
|
137
|
+
*
|
|
138
|
+
* ⭐ **C'est cet en-tête qui rend l'autorisation apprenable.** Sans lui, un
|
|
139
|
+
* refus est un mur : le client ignore qu'un jeton existe, où le demander et pour
|
|
140
|
+
* quels droits. Avec `resource_metadata`, il remonte seul jusqu'au serveur
|
|
141
|
+
* d'autorisation — c'est le seul mécanisme normalisé pour cela.
|
|
142
|
+
*
|
|
143
|
+
* 🔴 **Le code d'erreur est OMIS quand la requête ne portait aucune information
|
|
144
|
+
* d'authentification** — la RFC 6750 §3 le demande explicitement (« the resource
|
|
145
|
+
* server SHOULD NOT include an error code or other error information »). Un
|
|
146
|
+
* `invalid_token` sur une requête sans jeton ferait croire au client que son
|
|
147
|
+
* jeton est mauvais, et le pousserait à le renouveler en boucle.
|
|
148
|
+
*
|
|
149
|
+
* @param challenge - de quoi composer le défi
|
|
150
|
+
* @returns la valeur de l'en-tête `WWW-Authenticate`
|
|
151
|
+
*/
|
|
152
|
+
export declare function buildBearerChallenge(challenge: IBearerChallenge): string;
|
|
153
|
+
/**
|
|
154
|
+
* Ce qu'une vérification de jeton RÉUSSIE établit.
|
|
155
|
+
*
|
|
156
|
+
* Il n'y a pas de drapeau `authenticated` : ce type n'existe que lorsqu'une
|
|
157
|
+
* identité a été prouvée. Un booléen aurait permis de fabriquer un principal
|
|
158
|
+
* « non authentifié » et de le passer plus loin — exactement l'erreur que le
|
|
159
|
+
* type doit rendre impossible.
|
|
160
|
+
*/
|
|
161
|
+
export interface IAccessPrincipal {
|
|
162
|
+
/**
|
|
163
|
+
* Émetteur VÉRIFIÉ du jeton (`iss`), sous sa forme canonique.
|
|
164
|
+
*
|
|
165
|
+
* 🔴 **Un `sub` seul ne désigne personne.** OpenID Connect ne le garantit
|
|
166
|
+
* unique et non réassigné QUE dans l'espace de son émetteur : l'identité est
|
|
167
|
+
* la paire `(iss, sub)`. Transporter le sujet sans son émetteur revient à
|
|
168
|
+
* verser des identifiants étrangers dans l'espace de noms local — et un
|
|
169
|
+
* annuaire où l'utilisateur choisit son identifiant suffit alors à réclamer
|
|
170
|
+
* `admin`.
|
|
171
|
+
*
|
|
172
|
+
* REQUIS, et non optionnel : un vérificateur incapable de dire d'où vient une
|
|
173
|
+
* identité ne doit pas pouvoir en produire une. Le rendre facultatif
|
|
174
|
+
* laisserait chaque appelant décider de s'en passer, ce qui est exactement la
|
|
175
|
+
* façon dont ce trou est né.
|
|
176
|
+
*
|
|
177
|
+
* ⚠️ C'est l'émetteur de l'ALLOWLIST — celui contre lequel la signature a été
|
|
178
|
+
* vérifiée — jamais la valeur brute lue dans le jeton.
|
|
179
|
+
*/
|
|
180
|
+
issuer: string;
|
|
181
|
+
/** Sujet du jeton (`sub`) — pour l'audit, et pour borner ce qu'on rend. */
|
|
182
|
+
subject?: string;
|
|
183
|
+
/** Scopes réellement accordés. */
|
|
184
|
+
scopes: readonly string[];
|
|
185
|
+
/**
|
|
186
|
+
* Expiration du jeton (`exp`), en **secondes** epoch — RFC 7519 §4.1.4.
|
|
187
|
+
*
|
|
188
|
+
* Elle a déjà été vérifiée au moment de la validation ; si elle est ici, c'est
|
|
189
|
+
* pour ce qui vient APRÈS. Une requête HTTP se termine avant que la question
|
|
190
|
+
* se pose, mais une connexion durable — une socket ouverte au nom de ce jeton
|
|
191
|
+
* — doit pouvoir mourir avec lui. Sans cette borne transportée jusqu'à
|
|
192
|
+
* l'appelant, une identité vérifiée une fois vaut indéfiniment : le jeton
|
|
193
|
+
* expire, la connexion reste.
|
|
194
|
+
*
|
|
195
|
+
* ⚠️ **Secondes**, comme le claim JWT dont elle vient — pas des millisecondes.
|
|
196
|
+
*/
|
|
197
|
+
expiresAt?: number;
|
|
198
|
+
/** Émission du jeton (`iat`), en **secondes** epoch — révocation en masse. */
|
|
199
|
+
issuedAt?: number;
|
|
200
|
+
/**
|
|
201
|
+
* Identifiant unique du jeton (`jti`) — révocation CIBLÉE avant terme.
|
|
202
|
+
*
|
|
203
|
+
* Il vient d'un émetteur étranger : il ne désigne rien dans nos registres, et
|
|
204
|
+
* ne sert qu'à interroger une liste de révocation qui, elle, peut le connaître.
|
|
205
|
+
*/
|
|
206
|
+
tokenId?: string;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Ce qui sait valider un jeton — implémenté ailleurs, jamais ici.
|
|
210
|
+
*
|
|
211
|
+
* Le cœur ne valide aucune signature : cela demande un fournisseur de clés, une
|
|
212
|
+
* dépendance cryptographique et une politique, qui vivent dans le module de
|
|
213
|
+
* sécurité. Le contrat est ici pour que la porte n'ait pas à connaître son
|
|
214
|
+
* implémentation, et pour qu'une application puisse en fournir une autre.
|
|
215
|
+
*
|
|
216
|
+
* @param token - le jeton présenté, brut
|
|
217
|
+
* @param audience - l'URI canonique de CETTE ressource ; l'implémentation
|
|
218
|
+
* **doit** refuser un jeton qui ne la porte pas (RFC 8707 §2) — c'est
|
|
219
|
+
* ce qui empêche un jeton émis pour un autre service d'être rejoué ici
|
|
220
|
+
* @returns le principal établi, ou `null` — jamais une exception pour un refus
|
|
221
|
+
*/
|
|
222
|
+
export type IAccessTokenVerifier = (token: string, audience: string) => Promise<IAccessPrincipal | null>;
|
|
223
|
+
/**
|
|
224
|
+
* Nom sous lequel un {@link IAccessTokenVerifier} se pose dans le conteneur.
|
|
225
|
+
*
|
|
226
|
+
* ⭐ **La constante vit ICI, avec le contrat, et pas ailleurs.** Le nom est le
|
|
227
|
+
* point de rendez-vous entre deux paquets qui ne se connaissent pas : celui qui
|
|
228
|
+
* POSE le vérificateur (la sécurité, qui porte la cryptographie) et ceux qui le
|
|
229
|
+
* LISENT (toute porte protégée). Écrit en dur de chaque côté, il vaut jusqu'au
|
|
230
|
+
* jour où l'un des deux le renomme — un littéral ne casse aucune compilation,
|
|
231
|
+
* et la porte cherche alors un service que personne ne pose. Importé, un
|
|
232
|
+
* renommage devient une erreur de type.
|
|
233
|
+
*
|
|
234
|
+
* Le nom est **générique** à dessein : le contrat prend l'audience en
|
|
235
|
+
* paramètre, donc une seule implémentation sert autant de ressources protégées
|
|
236
|
+
* que l'application en publie (RFC 9728 §3.1).
|
|
237
|
+
*/
|
|
238
|
+
export declare const ACCESS_TOKEN_VERIFIER = "accessTokenVerifier";
|
|
239
|
+
/** Politique appliquée à une requête vers une ressource protégée. */
|
|
240
|
+
export interface IProtectedResourcePolicy {
|
|
241
|
+
/** URI canonique de la ressource — l'audience PUBLIÉE, et la première essayée. */
|
|
242
|
+
resource: string;
|
|
243
|
+
/**
|
|
244
|
+
* Autres URI sous lesquelles CETTE MÊME ressource est joignable, et dont les
|
|
245
|
+
* jetons sont acceptés.
|
|
246
|
+
*
|
|
247
|
+
* ⭐ Une ressource peut avoir plusieurs adresses sans cesser d'être une : la
|
|
248
|
+
* même porte servie en clair sur un port et en TLS sur un autre est un cas
|
|
249
|
+
* courant en développement, et un jeton émis pour l'une était refusé sur
|
|
250
|
+
* l'autre — la liaison d'audience faisant, à juste titre, son travail. La
|
|
251
|
+
* réponse n'est pas de relâcher la liaison, c'est de DIRE quelles adresses
|
|
252
|
+
* désignent cette ressource.
|
|
253
|
+
*
|
|
254
|
+
* 🔴 Ces valeurs s'ÉCRIVENT, elles ne se dérivent jamais du `Host` de la
|
|
255
|
+
* requête : dérivées, un `Host` forgé obtiendrait un jeton d'audience
|
|
256
|
+
* arbitraire *et* passerait la vérification, ce qui viderait la liaison de sa
|
|
257
|
+
* seule raison d'être. La liste reste FERMÉE.
|
|
258
|
+
*
|
|
259
|
+
* Le document RFC 9728 ne publie que {@link IProtectedResourcePolicy.resource}
|
|
260
|
+
* — la RFC n'y admet qu'une valeur, et un client n'a besoin que d'une adresse
|
|
261
|
+
* pour demander son jeton.
|
|
262
|
+
*/
|
|
263
|
+
acceptedResources?: readonly string[];
|
|
264
|
+
/** URL du document de métadonnées, citée dans chaque refus. */
|
|
265
|
+
metadataUrl: string;
|
|
266
|
+
/** Scopes annoncés au client quand on le refuse. */
|
|
267
|
+
scopes?: readonly string[];
|
|
268
|
+
/**
|
|
269
|
+
* Servir une requête sans jeton comme anonyme, au lieu de la refuser.
|
|
270
|
+
*
|
|
271
|
+
* Défaut attendu : `false`. Ouvrir est un choix qui s'écrit, jamais un
|
|
272
|
+
* comportement qu'on hérite.
|
|
273
|
+
*/
|
|
274
|
+
allowAnonymous: boolean;
|
|
275
|
+
}
|
|
276
|
+
/** Verdict rendu à la porte — à elle de le traduire en réponse. */
|
|
277
|
+
export type ProtectedResourceOutcome =
|
|
278
|
+
/** Aucun jeton, et la politique l'accepte. */
|
|
279
|
+
{
|
|
280
|
+
outcome: "anonymous";
|
|
281
|
+
/**
|
|
282
|
+
* Un jeton a été présenté et REJETÉ, et la porte sert quand même
|
|
283
|
+
* l'anonyme — pour le JOURNAL seul, jamais pour le client.
|
|
284
|
+
*
|
|
285
|
+
* Sans ce champ, un jeton expiré devenait indistinguable d'une requête
|
|
286
|
+
* muette : l'agent perdait ses outils réservés sans que rien ne dise
|
|
287
|
+
* pourquoi, et l'exploitant ne voyait aucune trace d'un porteur refusé.
|
|
288
|
+
*/
|
|
289
|
+
rejected?: true;
|
|
290
|
+
}
|
|
291
|
+
/** Jeton validé. */
|
|
292
|
+
| {
|
|
293
|
+
outcome: "authenticated";
|
|
294
|
+
principal: IAccessPrincipal;
|
|
295
|
+
}
|
|
296
|
+
/** Refus : statut et en-tête à poser tels quels. */
|
|
297
|
+
| {
|
|
298
|
+
outcome: "challenge";
|
|
299
|
+
status: 400 | 401;
|
|
300
|
+
wwwAuthenticate: string;
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* La ressource se dit protégée, mais rien ne peut vérifier un jeton.
|
|
304
|
+
* La porte DOIT alors refuser de servir — laisser passer reviendrait à
|
|
305
|
+
* accepter n'importe quel porteur.
|
|
306
|
+
*
|
|
307
|
+
* Deux causes, que `why` distingue POUR LE JOURNAL seul : aucun vérificateur
|
|
308
|
+
* n'est posé (faute de configuration), ou le vérificateur a ÉCHOUÉ — émetteur
|
|
309
|
+
* injoignable, jeu de clés illisible. Le client, lui, reçoit le même refus
|
|
310
|
+
* dans les deux cas : ce qui empêche de le servir ne le regarde pas.
|
|
311
|
+
*/
|
|
312
|
+
| {
|
|
313
|
+
outcome: "unverifiable";
|
|
314
|
+
why?: string;
|
|
315
|
+
};
|
|
316
|
+
/**
|
|
317
|
+
* Décide du sort d'une requête d'après l'en-tête `Authorization`.
|
|
318
|
+
*
|
|
319
|
+
* **Fonction pure** (hors l'appel au vérificateur) : elle ne touche ni au
|
|
320
|
+
* socket, ni au conteneur, ni à l'horloge — d'où le fait que chacun de ses
|
|
321
|
+
* verdicts, statuts et en-têtes compris, s'éprouve sans démarrer de serveur.
|
|
322
|
+
*
|
|
323
|
+
* @param authorizationHeader - valeur brute de l'en-tête, ou rien
|
|
324
|
+
* @param policy - ce que la ressource exige
|
|
325
|
+
* @param verify - ce qui sait valider un jeton, s'il y a quelque chose
|
|
326
|
+
* @returns le verdict à appliquer
|
|
327
|
+
*/
|
|
328
|
+
export declare function authorizeProtectedResource(authorizationHeader: unknown, policy: IProtectedResourcePolicy, verify: IAccessTokenVerifier | undefined): Promise<ProtectedResourceOutcome>;
|
|
329
|
+
/**
|
|
330
|
+
* L'appelant présente-t-il TOUS les scopes exigés ?
|
|
331
|
+
*
|
|
332
|
+
* « Tous », et pas « au moins un » : un scope borne un pouvoir, et les cumuler
|
|
333
|
+
* par disjonction reviendrait à accorder le plus large de la liste.
|
|
334
|
+
*
|
|
335
|
+
* @param granted - scopes accordés au porteur
|
|
336
|
+
* @param required - scopes exigés par l'opération
|
|
337
|
+
* @returns les scopes MANQUANTS — tableau vide si rien ne manque
|
|
338
|
+
*/
|
|
339
|
+
export declare function missingScopes(granted: readonly string[], required: readonly string[]): string[];
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IRealtimeSocket — « la socket Nodefony » : la prise temps réel **ISOMORPHE** client↔back.
|
|
3
|
+
*
|
|
4
|
+
* C'est LA brique du realtime Nodefony (cf vision « la socket Nodefony ») : un seul lien,
|
|
5
|
+
* qui a une **existence identique côté back et côté front** (fusionnel), dont le **plan de
|
|
6
|
+
* contrôle parle JSON-RPC 2.0** ({@link IRealtimePeer}) et qui **multiplexe N canaux** par
|
|
7
|
+
* souscription. Un consommateur — page front OU service back — tient **UN handle**
|
|
8
|
+
* (`subscribe / on / publish / request`) : c'est SA socket. Il ignore quel transport porte
|
|
9
|
+
* les octets, si le pair est local ou distant, et comment chaque canal est servi.
|
|
10
|
+
*
|
|
11
|
+
* Vocabulaire : la **socket** est la prise (ce qu'on tient) ; derrière elle, côté serveur,
|
|
12
|
+
* un **hub** ({@link RealtimeHub}) aiguille entre les N sockets des clients et, à terme,
|
|
13
|
+
* entre les pods (backplane Redis). La socket multiplexe des canaux ; le hub aiguille entre
|
|
14
|
+
* les sockets. La couche octets, elle, est le {@link IRealtimeTransport} (≠ « socket » ici).
|
|
15
|
+
*
|
|
16
|
+
* ── Un canal = un sous-flux nommé DUPLEX ──
|
|
17
|
+
* Chaque canal est un tuyau bidirectionnel multiplexé sur la socket. Son **backing est
|
|
18
|
+
* pluggable côté serveur**, transparent pour le consommateur :
|
|
19
|
+
* - **pub/sub** (défaut) : notifications JSON-RPC (ex. `nodefony:dashboard`).
|
|
20
|
+
* - **encapsulation de protocole** : le canal transporte un AUTRE langage tunnelé dans la
|
|
21
|
+
* socket (ex. **SIP** sur `sip:line1`).
|
|
22
|
+
* - **bridge** : le canal est câblé vers une autre couche de transport (**TCP/UDP**).
|
|
23
|
+
* - **proxy** : le canal relaie vers un autre service.
|
|
24
|
+
* Le **backplane Redis** (fan-out cross-pod cloud-native) n'est qu'UN backing parmi ceux-là.
|
|
25
|
+
*
|
|
26
|
+
* ── Sémantique des verbes (identique des deux côtés, cible différente) ──
|
|
27
|
+
* - `publish(channel, payload)` : émet sur un canal (duplex). Côté **client** → vers le
|
|
28
|
+
* serveur (1 pair) ; côté **serveur** → fan-out aux abonnés via le hub (+ backplane).
|
|
29
|
+
* - `subscribe` / `unsubscribe` : DEMANDE / arrête un flux (ref-compté).
|
|
30
|
+
* - `on` / `off` : REÇOIT (`on` ≠ `subscribe` : l'un branche le handler local, l'autre
|
|
31
|
+
* demande au pair de pousser).
|
|
32
|
+
* - `request(method, params?)` : RPC corrélé (`Promise` du `result`).
|
|
33
|
+
* - `channel(name)` : renvoie un {@link IRealtimeChannel} (objet par canal) — forme
|
|
34
|
+
* naturelle des canaux à état (SIP, bridge) et point d'accroche des futures couches
|
|
35
|
+
* (codec, cadence AIMD, politique drop/coalesce/batch par canal).
|
|
36
|
+
*
|
|
37
|
+
* Impl de référence : {@link RealtimeClient} (navigateur). Côté serveur, le hub à canaux
|
|
38
|
+
* partagés ({@link RealtimeHub}, fan-out + backings) et une façade consommateur dériveront
|
|
39
|
+
* de ce même contrat.
|
|
40
|
+
*
|
|
41
|
+
* @see {@link IRealtimePeer} — la couche protocole (JSON-RPC 2.0) en dessous.
|
|
42
|
+
* @see {@link IRealtimeTransport} — la couche octets (le seul maillon client/serveur).
|
|
43
|
+
*/
|
|
44
|
+
import type { ActionsMap, DefaultActionsMap, DefaultEventsMap, EventNames, EventPayload, EventsMap, ContractParams, ContractResult } from "./RealtimeEventMap.js";
|
|
45
|
+
/** Handler d'un canal pub/sub — reçoit le `params` de la notification (ou `(method, params)` sur `"*"`). */
|
|
46
|
+
export type RealtimeHandler = (...args: unknown[]) => void;
|
|
47
|
+
/**
|
|
48
|
+
* Compteurs d'un canal — **génériques**, calculés au point d'arrivée des frames donc
|
|
49
|
+
* fiables et réutilisables par toute app. (`RealtimeClient.MessageStats` en est l'alias.)
|
|
50
|
+
*/
|
|
51
|
+
export interface IChannelStats {
|
|
52
|
+
/** Méthode JSON-RPC == nom du canal pub/sub. */
|
|
53
|
+
method: string;
|
|
54
|
+
/** Total de notifications reçues sur ce canal. */
|
|
55
|
+
msgCount: number;
|
|
56
|
+
/** Timestamp (ms) de la dernière notification, `null` si aucune. */
|
|
57
|
+
lastMessage: number | null;
|
|
58
|
+
/** Débit instantané (msg/s), échantillonné 1×/s. */
|
|
59
|
+
rate: number;
|
|
60
|
+
/** Historique du débit (VU-mètre) — fenêtre glissante. */
|
|
61
|
+
series: number[];
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Handle d'UN canal — vue par-canal d'un sous-flux duplex multiplexé sur la
|
|
65
|
+
* {@link IRealtimeSocket}. Forme naturelle des canaux à état (un appel SIP, une connexion
|
|
66
|
+
* bridgée) : il porte son nom, sa nature et son cycle de vie. C'est le **point d'accroche**
|
|
67
|
+
* des couches à venir (codec de protocole, cadence AIMD, politique `drop|coalesce|batch`) —
|
|
68
|
+
* elles enrichiront ce handle SANS retoucher la socket.
|
|
69
|
+
*
|
|
70
|
+
* N'introduit AUCUN protocole nouveau : fine liaison au-dessus des primitives de la socket
|
|
71
|
+
* (`subscribe`/`on`/`publish`).
|
|
72
|
+
*/
|
|
73
|
+
export interface IRealtimeChannel {
|
|
74
|
+
/** Nom du canal (clé de multiplexage == method JSON-RPC des notifications). */
|
|
75
|
+
readonly name: string;
|
|
76
|
+
/**
|
|
77
|
+
* Nature du backing serveur (`pubsub` | `protocol` | `bridge` | `proxy` | …), annoncée
|
|
78
|
+
* par le serveur. `undefined` tant qu'inconnue (ex. côté client avant découverte).
|
|
79
|
+
*/
|
|
80
|
+
readonly kind?: string;
|
|
81
|
+
/** Branche un handler de réception sur ce canal. Renvoie un `dispose`. */
|
|
82
|
+
on(handler: RealtimeHandler): () => void;
|
|
83
|
+
/** Émet sur ce canal (duplex, one-way). */
|
|
84
|
+
send(payload?: unknown): void;
|
|
85
|
+
/** Ouvre le flux : `subscribe` ref-compté (demande au pair de pousser). */
|
|
86
|
+
open(): void;
|
|
87
|
+
/** Ferme : `unsubscribe` ref-compté + retire les handlers branchés via ce handle. */
|
|
88
|
+
close(): void;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Contrat de « la socket Nodefony » — voir le bloc de tête du fichier. Implémenté par
|
|
92
|
+
* {@link RealtimeClient} (front) et, à terme, par une façade serveur au-dessus du hub.
|
|
93
|
+
*
|
|
94
|
+
* @typeParam Emit — canaux pub/sub SORTANTS (typage de `publish`).
|
|
95
|
+
* @typeParam Listen — canaux pub/sub RÉCEPTIONNÉS (typage de `subscribe`/`on`/`off`).
|
|
96
|
+
* @typeParam Actions — contrat RPC bidirectionnel (typage de `request`).
|
|
97
|
+
*
|
|
98
|
+
* Défauts permissifs sur les 3 → rétro-compat 100% pour le code non paramétré.
|
|
99
|
+
*
|
|
100
|
+
* **Pattern « type conditionnel inline »** : chaque méthode a UNE signature unique
|
|
101
|
+
* paramétrée par un `K extends string`. Si `K` matche la map (`EventNames<Listen>`,
|
|
102
|
+
* `EventNames<Emit>`, `ActionNames<Actions>`) → typage strict ; sinon → fallback
|
|
103
|
+
* permissif (`unknown`/`RealtimeHandler`). Permet les noms système (`__notice__`,
|
|
104
|
+
* `*`, `subscribe`/`unsubscribe` internes) à côté du contrat applicatif typé sans
|
|
105
|
+
* 2 overloads incompatibles en variance.
|
|
106
|
+
*/
|
|
107
|
+
export interface IRealtimeSocket<Emit extends EventsMap = DefaultEventsMap, Listen extends EventsMap = DefaultEventsMap, Actions extends ActionsMap = DefaultActionsMap> {
|
|
108
|
+
/**
|
|
109
|
+
* S'abonne à un canal (ref-compté) : émet la demande au pair UNIQUEMENT au 1ᵉʳ
|
|
110
|
+
* consommateur ; ré-émise automatiquement à chaque (re)connexion. Ne REÇOIT pas —
|
|
111
|
+
* brancher {@link IRealtimeSocket.on} pour ça.
|
|
112
|
+
*/
|
|
113
|
+
subscribe(channel: EventNames<Listen> | (string & {})): void;
|
|
114
|
+
/** Désabonne un consommateur (ref-compté) : coupe le flux réseau au DERNIER. No-op si non suivi. */
|
|
115
|
+
unsubscribe(channel: EventNames<Listen> | (string & {})): void;
|
|
116
|
+
/**
|
|
117
|
+
* Branche un handler sur un canal (réception). Renvoie un `dispose` (désabonnement
|
|
118
|
+
* local). Plusieurs handlers par canal autorisés.
|
|
119
|
+
*/
|
|
120
|
+
on<K extends string>(channel: K, handler: K extends EventNames<Listen> ? (payload: EventPayload<Listen, K>) => void : RealtimeHandler): () => void;
|
|
121
|
+
/** Retire un handler d'un canal. */
|
|
122
|
+
off<K extends string>(channel: K, handler: K extends EventNames<Listen> ? (payload: EventPayload<Listen, K>) => void : RealtimeHandler): void;
|
|
123
|
+
/**
|
|
124
|
+
* Émet sur un canal (one-way, pas de réponse). Côté client → notification au serveur ;
|
|
125
|
+
* côté serveur → fan-out aux abonnés via le hub (+ backplane). No-op si non connecté.
|
|
126
|
+
*/
|
|
127
|
+
publish<K extends string>(channel: K, payload?: K extends EventNames<Emit> ? EventPayload<Emit, K> : unknown): void;
|
|
128
|
+
/** RPC corrélé — `Promise` résolue avec le `result` (rejette sur `error`/timeout). */
|
|
129
|
+
request<K extends string, T = unknown>(method: K, params?: ContractParams<Actions, K>, timeoutMs?: number): Promise<ContractResult<Actions, K, T>>;
|
|
130
|
+
/**
|
|
131
|
+
* Vue par-canal — voir {@link IRealtimeChannel}. Fine liaison sur les primitives
|
|
132
|
+
* ci-dessus ; forme cible pour SIP/bridge/proxy et les concerns par-canal.
|
|
133
|
+
*/
|
|
134
|
+
channel(name: string): IRealtimeChannel;
|
|
135
|
+
/** Snapshot des compteurs par canal (refs internes — à LIRE, pas à muter). */
|
|
136
|
+
getStats(): IChannelStats[];
|
|
137
|
+
/** Compteurs d'un canal précis (== method JSON-RPC) ou `undefined`. */
|
|
138
|
+
getChannelStats(channel: string): IChannelStats | undefined;
|
|
139
|
+
/** Canaux actuellement abonnés (≥ 1 consommateur). Lecture seule. */
|
|
140
|
+
readonly subscribedChannels: string[];
|
|
141
|
+
}
|
|
142
|
+
export default IRealtimeSocket;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IRealtimeTransport — le SEUL maillon qui diffère client/serveur.
|
|
3
|
+
*
|
|
4
|
+
* Le protocole ({@link JsonRpcPeer}) et les « smarts » (stats, pub/sub) sont
|
|
5
|
+
* isomorphes ; seule la façon dont les **octets** entrent et sortent change. On
|
|
6
|
+
* isole donc le transport derrière cette interface : un même endpoint compose
|
|
7
|
+
* N transports.
|
|
8
|
+
*
|
|
9
|
+
* Implémentations :
|
|
10
|
+
* - `BrowserWsTransport` (navigateur, `WebSocket` + reconnect géré au-dessus)
|
|
11
|
+
* - `WsConnectionTransport` (serveur, wrap d'une connexion `ws` — P… RealtimeController)
|
|
12
|
+
* - futurs P13 : `Tcp`/`Udp`/`Redis`/`SipTransport` (RealtimeService / IRealtimeHub)
|
|
13
|
+
*
|
|
14
|
+
* Les états suivent les constantes `WebSocket` (0..3) pour rester universels —
|
|
15
|
+
* voir {@link TransportState}.
|
|
16
|
+
*
|
|
17
|
+
* ── Sens des flux ──
|
|
18
|
+
* Sortant : `send` (frame brute déjà sérialisée), `close`.
|
|
19
|
+
* Entrant : le owner branche `onMessage` (chaque frame reçue) ; `onOpen`/`onClose`/
|
|
20
|
+
* `onError` pilotent le cycle de vie (l'orchestration reconnect/heartbeat vit
|
|
21
|
+
* AU-DESSUS, dans l'endpoint — le transport reste « bête »).
|
|
22
|
+
*/
|
|
23
|
+
/** États d'un transport — alignés sur les constantes `WebSocket`. */
|
|
24
|
+
export declare const TransportState: {
|
|
25
|
+
readonly CONNECTING: 0;
|
|
26
|
+
readonly OPEN: 1;
|
|
27
|
+
readonly CLOSING: 2;
|
|
28
|
+
readonly CLOSED: 3;
|
|
29
|
+
};
|
|
30
|
+
export type TransportStateValue = (typeof TransportState)[keyof typeof TransportState];
|
|
31
|
+
export interface IRealtimeTransport {
|
|
32
|
+
/** Ouvre le transport (asynchrone — l'ouverture effective est signalée par `onOpen`). */
|
|
33
|
+
connect(): void;
|
|
34
|
+
/** Envoie une frame brute (déjà sérialisée). No-op si non ouvert. */
|
|
35
|
+
send(raw: string): void;
|
|
36
|
+
/** Ferme le transport (déclenche `onClose`). */
|
|
37
|
+
close(code?: number, reason?: string): void;
|
|
38
|
+
/** État courant (0..3, cf {@link TransportState}). */
|
|
39
|
+
readonly readyState: number;
|
|
40
|
+
/** Branche le handler d'ouverture (le owner relance subscribe/heartbeat). */
|
|
41
|
+
onOpen(cb: () => void): void;
|
|
42
|
+
/** Branche le pump entrant : appelé pour chaque frame brute reçue. */
|
|
43
|
+
onMessage(cb: (raw: string) => void): void;
|
|
44
|
+
/** Branche la fermeture (le owner relance le backoff ou nettoie). */
|
|
45
|
+
onClose(cb: (code: number, reason: string) => void): void;
|
|
46
|
+
/** Branche les erreurs transport (la fermeture qui suit gère le reconnect). */
|
|
47
|
+
onError(cb: (err: unknown) => void): void;
|
|
48
|
+
}
|
|
49
|
+
/** Fabrique d'un transport pour une URL — injectable (tests, transports alternatifs). */
|
|
50
|
+
export type RealtimeTransportFactory = (url: string) => IRealtimeTransport;
|