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,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Façade couleur ANSI **chainable** et **isomorphe** — remplace la dépendance
|
|
3
|
+
* `cli-color` (retirée) en s'appuyant sur `util.styleText` natif (Node 22.13+).
|
|
4
|
+
*
|
|
5
|
+
* - **Node** : `clc.red("x")`, `clc.cyan.bgBlue("x")`, `clc.blueBright.bold("x")`
|
|
6
|
+
* rendent via `util.styleText` (les styles s'accumulent par accès de propriété,
|
|
7
|
+
* appliqués au moment de l'appel). `validateStream: false` → on émet toujours
|
|
8
|
+
* les codes ; le gate TTY/`NO_COLOR` est géré en amont (cf {@link setLogColor}
|
|
9
|
+
* dans `syslog/logColor.ts`), comme le faisait `cli-color`.
|
|
10
|
+
* - **Navigateur** : `node:util` est aliasé vers le shim (`client/shim/util.ts`)
|
|
11
|
+
* dont le `styleText` est l'identité → jamais d'ANSI (parité ancien shim
|
|
12
|
+
* `cli-color` identity Proxy).
|
|
13
|
+
*
|
|
14
|
+
* `clc.reset` est la **chaîne brute** `\x1b[0m` (et non une fonction), pour la
|
|
15
|
+
* parité avec `cli-color` (ex. `process.stdout.write(clc.reset)`).
|
|
16
|
+
*/
|
|
17
|
+
/** Noms de style reconnus (sous-ensemble `util.styleText` utilisé par Nodefony). */
|
|
18
|
+
type StyleName = "reset" | "bold" | "dim" | "italic" | "underline" | "inverse" | "strikethrough" | "black" | "red" | "green" | "yellow" | "blue" | "magenta" | "cyan" | "white" | "gray" | "blackBright" | "redBright" | "greenBright" | "yellowBright" | "blueBright" | "magentaBright" | "cyanBright" | "whiteBright" | "bgBlack" | "bgRed" | "bgGreen" | "bgYellow" | "bgBlue" | "bgMagenta" | "bgCyan" | "bgWhite" | "bgGray";
|
|
19
|
+
/**
|
|
20
|
+
* Fonction de coloration chainable : appelable (`fn(text)`) et indexable
|
|
21
|
+
* (`fn.bold`, `fn.bgBlue`…), chaque accès renvoyant une nouvelle `ColorFn` aux
|
|
22
|
+
* styles accumulés.
|
|
23
|
+
*/
|
|
24
|
+
export type ColorFn = ((s: string | number) => string) & {
|
|
25
|
+
[K in StyleName]: ColorFn;
|
|
26
|
+
};
|
|
27
|
+
/** Racine `clc` : une {@link ColorFn} + la constante brute `reset`. */
|
|
28
|
+
export type Clc = ColorFn & {
|
|
29
|
+
readonly reset: string;
|
|
30
|
+
};
|
|
31
|
+
declare const clc: Clc;
|
|
32
|
+
export default clc;
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Résolution de l'INFRA DÉCLARÉE depuis l'environnement (modèle « infra déclarée »).
|
|
3
|
+
*
|
|
4
|
+
* L'utilisateur ne configure pas chaque brique : il déclare son infra via des
|
|
5
|
+
* URLs (pattern Rails/Django/Symfony) :
|
|
6
|
+
* - `NF_DATABASE_URL` (alias plateforme `DATABASE_URL`) → infra `database` (durable)
|
|
7
|
+
* - `NF_REDIS_URL` (alias plateforme `REDIS_URL`) → infra `cache` (éphémère partagé)
|
|
8
|
+
* - `NF_LOKI_URL` / `NF_OPENSEARCH_URL` → infra `logs` (relecture backplane)
|
|
9
|
+
*
|
|
10
|
+
* Les briques dont le store vaut `"auto"` sont résolues par l'infra déclarée
|
|
11
|
+
* ({@link resolveAutoStore}) ; une valeur explicite gagne toujours (moindre
|
|
12
|
+
* surprise, 12-factor). Aucune cascade runtime implicite : charger un module
|
|
13
|
+
* ne déplace jamais une brique — seule la déclaration d'infra le fait.
|
|
14
|
+
*/
|
|
15
|
+
/** Dialecte SQL déduit du scheme de l'URL du infra `database`. */
|
|
16
|
+
export type InfraSqlDialect = "sqlite" | "postgres" | "mysql";
|
|
17
|
+
/** Famille du infra `database` — pilote le choix de l'adapter (drizzle/mongoose). */
|
|
18
|
+
export type DatabaseFamily = "sql" | "mongo";
|
|
19
|
+
/** Infra `database` résolu depuis `NF_DATABASE_URL`/`DATABASE_URL`. */
|
|
20
|
+
export interface IInfraDatabase {
|
|
21
|
+
/** URL déclarée telle quelle (peut porter des credentials — ne jamais logger brute). */
|
|
22
|
+
url: string;
|
|
23
|
+
/** Scheme normalisé en minuscules, sans `:` (ex. `postgres`, `sqlite`, `mongodb`). */
|
|
24
|
+
scheme: string;
|
|
25
|
+
family: DatabaseFamily;
|
|
26
|
+
/** Dialecte SQL (famille `sql`) — `null` pour la famille `mongo`. */
|
|
27
|
+
dialect: InfraSqlDialect | null;
|
|
28
|
+
}
|
|
29
|
+
/** Infra `cache` résolu depuis `NF_REDIS_URL`/`REDIS_URL`. */
|
|
30
|
+
export interface IInfraCache {
|
|
31
|
+
/** URL redis déclarée (peut porter des credentials — ne jamais logger brute). */
|
|
32
|
+
url: string;
|
|
33
|
+
}
|
|
34
|
+
/** Infra `logs` (relecture backplane) — les DEUX URLs peuvent être présentes. */
|
|
35
|
+
export interface IInfraLogs {
|
|
36
|
+
lokiUrl?: string;
|
|
37
|
+
opensearchUrl?: string;
|
|
38
|
+
}
|
|
39
|
+
/** L'infra déclarée — `null` = non déclarée. */
|
|
40
|
+
export interface IInfra {
|
|
41
|
+
database: IInfraDatabase | null;
|
|
42
|
+
cache: IInfraCache | null;
|
|
43
|
+
logs: IInfraLogs | null;
|
|
44
|
+
/**
|
|
45
|
+
* Override GLOBAL de sélection de store (`NF_STORE`) — force TOUTE brique `auto`
|
|
46
|
+
* vers ce backend, en amont de toute préférence d'infra. Cas d'usage : `memory`
|
|
47
|
+
* pour un banc de CHARGE (mesurer le framework sans le goulot sqlite/disque), sans
|
|
48
|
+
* toucher aux configs par brique. `undefined`/`null` = pas d'override. N'affecte
|
|
49
|
+
* JAMAIS un store configuré EXPLICITEMENT (celui-ci ne passe pas par `auto`).
|
|
50
|
+
*/
|
|
51
|
+
forceStore?: string | null;
|
|
52
|
+
}
|
|
53
|
+
/** Source d'environnement (forme de `process.env`) — injectable pour les tests. */
|
|
54
|
+
export type InfraEnvSource = Record<string, string | undefined>;
|
|
55
|
+
/**
|
|
56
|
+
* Parse l'URL du infra `database` : scheme → famille + dialecte.
|
|
57
|
+
*
|
|
58
|
+
* @throws Error si le scheme n'est pas supporté — fail-loud au boot : une URL
|
|
59
|
+
* de base inconnue ne doit JAMAIS retomber silencieusement sur sqlite.
|
|
60
|
+
*/
|
|
61
|
+
export declare function parseDatabaseUrl(url: string): IInfraDatabase;
|
|
62
|
+
/**
|
|
63
|
+
* Fichier SQLite d'une URL `sqlite:` du infra `database`.
|
|
64
|
+
* Formes acceptées : `sqlite::memory:`, `sqlite:./relatif.db`, `sqlite:/abs.db`,
|
|
65
|
+
* `sqlite:///abs.db`. URL vide après le scheme → `:memory:`.
|
|
66
|
+
*/
|
|
67
|
+
export declare function sqliteFilenameFromUrl(url: string): string;
|
|
68
|
+
/**
|
|
69
|
+
* Résout les 3 infra déclarée depuis l'environnement. Fonction PURE
|
|
70
|
+
* (aucun kernel) : consommée par le Kernel (1 fois, mémoïsé), par le contexte
|
|
71
|
+
* `defineConfig` (`ctx.infra`) et par les builders de config des modules
|
|
72
|
+
* adapters (drizzle/mongoose/redis) dans leur couche env.
|
|
73
|
+
*
|
|
74
|
+
* @param env - source d'environnement (défaut `process.env`).
|
|
75
|
+
* @throws Error si l'URL du infra `database` a un scheme non supporté.
|
|
76
|
+
*/
|
|
77
|
+
export declare function resolveInfra(env?: InfraEnvSource): IInfra;
|
|
78
|
+
/** Sentinelle des champs `store` : « laisser le framework choisir selon l'infra déclarée ». */
|
|
79
|
+
export declare const AUTO_STORE = "auto";
|
|
80
|
+
/** Infra vide (rien de déclaré) — fallback sûr quand le kernel est absent (tests). */
|
|
81
|
+
export declare const EMPTY_INFRA: IInfra;
|
|
82
|
+
/**
|
|
83
|
+
* Nature de la donnée d'une brique — pilote l'ordre de préférence des backends :
|
|
84
|
+
* - `durable` (tokens, passkeys, audit, webhooks, user) → infra database.
|
|
85
|
+
* - `ephemeral` (idempotence) → infra cache, sinon database.
|
|
86
|
+
* - `session` → cache, sinon database, sinon fallback fichier.
|
|
87
|
+
*/
|
|
88
|
+
export type StoreKind = "durable" | "ephemeral" | "session";
|
|
89
|
+
/** Choix d'un backend pour `"auto"` + provenance lisible (log de boot, Studio). */
|
|
90
|
+
export interface IAutoStoreResolution {
|
|
91
|
+
store: string;
|
|
92
|
+
reason: string;
|
|
93
|
+
}
|
|
94
|
+
/** Catégorie de provenance d'un store résolu (dérivée de la valeur configurée). */
|
|
95
|
+
export type StoreProvenance = "infra" | "explicit";
|
|
96
|
+
/**
|
|
97
|
+
* Résolution EFFECTIVE d'une brique de persistance, capturée au boot par le
|
|
98
|
+
* consommateur (au moment exact où il pose son store au container) et retenue
|
|
99
|
+
* dans le registre du Kernel ({@link IKernel.registerStoreResolution}). C'est la
|
|
100
|
+
* VÉRITÉ vécue — y compris les replis annoncés du lot 4 (session → `"files"` en
|
|
101
|
+
* dev) — pas une re-dérivation à la volée. Alimente l'écran Studio « Stores ».
|
|
102
|
+
*/
|
|
103
|
+
export interface IStoreResolution {
|
|
104
|
+
/** Identifiant de la brique (ex. `"tokens"`, `"session"`, `"audit"`). */
|
|
105
|
+
brick: string;
|
|
106
|
+
/** Nature de la donnée — pilote la durabilité affichée ({@link StoreKind}). */
|
|
107
|
+
nature: StoreKind;
|
|
108
|
+
/** Valeur configurée telle quelle : `"auto"` (sentinelle) ou un backend explicite. */
|
|
109
|
+
configured: string;
|
|
110
|
+
/** Backend effectivement résolu et posé au runtime. */
|
|
111
|
+
resolved: string;
|
|
112
|
+
/**
|
|
113
|
+
* Backends RÉELLEMENT enregistrés pour cette brique (`listXStores()`), capturés
|
|
114
|
+
* par le consommateur — évite à l'endpoint d'importer les registres (le cœur
|
|
115
|
+
* `@nodefony/framework` ne peut pas dépendre de `@nodefony/security`/`http`).
|
|
116
|
+
*/
|
|
117
|
+
available: readonly string[];
|
|
118
|
+
/**
|
|
119
|
+
* Provenance : `"infra"` (résolu depuis l'infra déclarée, `configured === "auto"`)
|
|
120
|
+
* ou `"explicit"` (backend nommé dans la config/env de l'app).
|
|
121
|
+
*/
|
|
122
|
+
provenance: StoreProvenance;
|
|
123
|
+
/** Raison lisible (FR) de la résolution — de `resolveAutoStore` ou construite. */
|
|
124
|
+
reason: string;
|
|
125
|
+
/** Chemin du champ de config (ex. `"security.tokenStore.store"`) — croise la provenance de champ Studio. */
|
|
126
|
+
configPath?: string;
|
|
127
|
+
/**
|
|
128
|
+
* Emplacement PHYSIQUE lisible du store, lu depuis l'instance au boot
|
|
129
|
+
* ({@link readStoreLocation}) — base SQLite pour `drizzle`. `undefined`
|
|
130
|
+
* pour un store `memory` (volatil) ou un backend réseau (l'emplacement = l'infra
|
|
131
|
+
* déclarée, déjà surfacée à part). Répond à « où sont écrites mes données ? » dans Studio.
|
|
132
|
+
*/
|
|
133
|
+
location?: string;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Résout la sentinelle `"auto"` d'une brique en nom de backend, borné aux
|
|
137
|
+
* backends RÉELLEMENT enregistrés (`available` = `listXStores()` du registre —
|
|
138
|
+
* reflète l'auto-register des adapters chargés). Couverture partielle d'une infra
|
|
139
|
+
* (ex. audit sans impl mongoose) → repli `fallback` avec raison ANNONCÉE,
|
|
140
|
+
* jamais d'échec : le principe « fallback annoncé, pas de dégradation
|
|
141
|
+
* silencieuse » vit dans la raison retournée, que l'appelant DOIT logger.
|
|
142
|
+
*
|
|
143
|
+
* @param kind - nature de la donnée ({@link StoreKind}).
|
|
144
|
+
* @param infra - infra résolue ({@link resolveInfra}).
|
|
145
|
+
* @param available - backends enregistrés dans le registre de la brique.
|
|
146
|
+
* @param fallback - backend de repli (défaut `"memory"` — c'est aussi ce que passe
|
|
147
|
+
* le service de session : aucun appelant ne demande un autre repli).
|
|
148
|
+
*/
|
|
149
|
+
export declare function resolveAutoStore(kind: StoreKind, infra: IInfra, available: readonly string[], fallback?: string): IAutoStoreResolution;
|
|
150
|
+
/**
|
|
151
|
+
* Déduit le nom court du backend d'un store à partir de la classe concrète de
|
|
152
|
+
* son instance (convention de nommage `<Backend>XxxStore` → `drizzle`, `mongoose`,
|
|
153
|
+
* `redis`, `memory`, `file`). Sert à retrouver le backend RÉEL d'un adapter posé
|
|
154
|
+
* au container quand la brique a été résolue en `"auto"` (l'adapter court-circuite
|
|
155
|
+
* la fabrique nommée). Classe non reconnue → nom de classe brut (honnête).
|
|
156
|
+
*
|
|
157
|
+
* @param store - instance de store (lue défensivement — seul `constructor.name`).
|
|
158
|
+
* @returns nom court du backend, ou `"inconnu"` si l'instance n'expose pas de classe.
|
|
159
|
+
*/
|
|
160
|
+
export declare function deriveStoreBackend(store: unknown): string;
|
|
161
|
+
/**
|
|
162
|
+
* Lit l'emplacement PHYSIQUE d'un store depuis son instance (getter public
|
|
163
|
+
* `location`), pour l'écran Studio « Stores » — répond à « où mes données sont-elles
|
|
164
|
+
* écrites ? ». Un store fichier (passkeys, TOTP, sessions) expose le chemin de son
|
|
165
|
+
* fichier/dossier ; un store `memory` ou un backend réseau (drizzle/redis/mongoose)
|
|
166
|
+
* n'expose rien → `undefined` (l'UI dérive « en mémoire » ou renvoie à l'infra).
|
|
167
|
+
*
|
|
168
|
+
* @param store - instance de store (lue défensivement — seul un getter `location` string).
|
|
169
|
+
* @returns chemin lisible, ou `undefined` si le store n'expose pas d'emplacement.
|
|
170
|
+
*/
|
|
171
|
+
export declare function readStoreLocation(store: unknown): string | undefined;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rapport de boot — **vérité unique** sur le résultat du démarrage du Kernel,
|
|
3
|
+
* calculé une fois à `onPostReady` et consommé par N canaux (rendu écran dev via
|
|
4
|
+
* `BootReporter`, log structuré prod, code de sortie pour l'orchestrateur/superviseur,
|
|
5
|
+
* canal RPC dev, futur endpoint Studio `/nodefony/kernel/api/boot`).
|
|
6
|
+
*
|
|
7
|
+
* Objectif : **plus aucun boot qui meurt en silence**. Un profil serveur qui finit
|
|
8
|
+
* sans aucun serveur en écoute est un échec VISIBLE (`healthy=false`), pas un
|
|
9
|
+
* « arrêt propre (code 0) » trompeur.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Un module ignoré ou en échec **non fatal** pendant le boot (fail-soft). Agrégé
|
|
13
|
+
* par le Kernel pour expliquer, en une ligne par module, pourquoi le boot est
|
|
14
|
+
* dégradé — au lieu de N WARNING enterrés dans le JSONL.
|
|
15
|
+
*/
|
|
16
|
+
export interface IBootFailure {
|
|
17
|
+
/** Nom du module/service en échec (tag `owner`, ou nom d'entrée du manifeste). */
|
|
18
|
+
module: string;
|
|
19
|
+
/** Message d'erreur condensé (1ʳᵉ ligne). */
|
|
20
|
+
reason: string;
|
|
21
|
+
/**
|
|
22
|
+
* Étape du boot où l'échec s'est produit :
|
|
23
|
+
* - `load` — `import()` du module (manifeste) a throw (ex. « Cannot find package »).
|
|
24
|
+
* - `lifecycle` — un hook `onKernelRegister`/`Boot`/`Ready` a throw/timeout.
|
|
25
|
+
* - `init` — l'`initialize()` d'un service/module a throw/timeout.
|
|
26
|
+
*/
|
|
27
|
+
phase: "load" | "lifecycle" | "init";
|
|
28
|
+
/** `true` si l'échec est un dépassement du timeout de boot. */
|
|
29
|
+
timedOut?: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Un module du manifeste **volontairement NON chargé** par le gating
|
|
33
|
+
* `policy`/`when` de `config.modules`. Ce n'est PAS un échec (cf {@link IBootFailure})
|
|
34
|
+
* — mais un gating silencieux se lit comme un module perdu : le bilan de boot
|
|
35
|
+
* l'affiche AVEC sa raison pour que le dev sache pourquoi son module manque.
|
|
36
|
+
*/
|
|
37
|
+
export interface IBootModuleGated {
|
|
38
|
+
/** Nom d'entrée du manifeste (`config.modules`). */
|
|
39
|
+
module: string;
|
|
40
|
+
/** Raison lisible du non-chargement (ex. `policy "dev" — runtime production`). */
|
|
41
|
+
reason: string;
|
|
42
|
+
}
|
|
43
|
+
/** Un serveur réseau réellement en écoute à la fin du boot. */
|
|
44
|
+
export interface IBootServerInfo {
|
|
45
|
+
/** Nom de service interne (`http` | `https` | `websocket` | `websocket-secure`). */
|
|
46
|
+
type: string;
|
|
47
|
+
/** Scheme d'URL court et conventionnel (`http` | `https` | `ws` | `wss`). */
|
|
48
|
+
scheme: string;
|
|
49
|
+
/** Port d'écoute effectif. */
|
|
50
|
+
port: number;
|
|
51
|
+
/** Adresse de bind (`127.0.0.1`, `0.0.0.0`…), si connue. */
|
|
52
|
+
address?: string;
|
|
53
|
+
/** URL complète d'accès (`scheme://host:port`) — cliquable au terminal. */
|
|
54
|
+
url: string;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Verdict agrégé du dernier boot. `healthy=false` ⇒ le boot est raté ou dégradé de
|
|
58
|
+
* façon bloquante (typiquement : profil serveur attendu mais 0 serveur en écoute).
|
|
59
|
+
*/
|
|
60
|
+
export interface IBootReport {
|
|
61
|
+
/** Durée approximative du boot (ms). */
|
|
62
|
+
durationMs: number;
|
|
63
|
+
/** Modules effectivement chargés et enregistrés. */
|
|
64
|
+
modulesLoaded: string[];
|
|
65
|
+
/**
|
|
66
|
+
* Nombre d'entrées DÉCLARÉES au manifeste `config.modules`, avant tout gating.
|
|
67
|
+
*
|
|
68
|
+
* Distinct de `modulesLoaded` (ce qui a été chargé), de `modulesSkipped` (ce qui
|
|
69
|
+
* a échoué) et de `modulesGated` (ce qui a été écarté à dessein) : c'est ce que
|
|
70
|
+
* la configuration LUE demandait. Un manifeste à `0` alors que le profil attend
|
|
71
|
+
* des serveurs est un état muet — aucune de ces trois listes ne le contient, et
|
|
72
|
+
* rien n'a été tenté. Vécu : une application dont le manifeste résolu était vide
|
|
73
|
+
* bootait avec son seul module local puis échouait sur « aucun serveur en
|
|
74
|
+
* écoute », un diagnostic qui ne menait nulle part.
|
|
75
|
+
*/
|
|
76
|
+
manifestEntries: number;
|
|
77
|
+
/** Modules ignorés/échoués en fail-soft (avec la raison). */
|
|
78
|
+
modulesSkipped: IBootFailure[];
|
|
79
|
+
/** Modules volontairement non chargés (gating `policy`/`when`) — pas des échecs. */
|
|
80
|
+
modulesGated: IBootModuleGated[];
|
|
81
|
+
/**
|
|
82
|
+
* Logs `WARNING` émis pendant le boot (comptés dans le ring buffer syslog ;
|
|
83
|
+
* figés à `onPostReady`, comptage à la volée tant que le boot est en cours).
|
|
84
|
+
*/
|
|
85
|
+
warnings: number;
|
|
86
|
+
/** Logs `ERROR` et pire (`CRITIC`/`ALERT`/`EMERGENCY`) émis pendant le boot. */
|
|
87
|
+
errors: number;
|
|
88
|
+
/**
|
|
89
|
+
* Les PREMIERS de ces messages, condensés — `null` quand il n'y en a aucun.
|
|
90
|
+
*
|
|
91
|
+
* `errors: 1` sans un mot était le cas le plus frustrant du bilan : le
|
|
92
|
+
* lecteur savait qu'il s'était passé quelque chose, pas quoi. Alloué
|
|
93
|
+
* seulement s'il y a matière.
|
|
94
|
+
*/
|
|
95
|
+
criticals: string[] | null;
|
|
96
|
+
/** `true` si le profil d'exécution attendait des serveurs réseau. */
|
|
97
|
+
serversExpected: boolean;
|
|
98
|
+
/** Serveurs réellement en écoute. */
|
|
99
|
+
serversListening: IBootServerInfo[];
|
|
100
|
+
/**
|
|
101
|
+
* Verdict global : `false` si un profil serveur a fini sans aucun serveur en
|
|
102
|
+
* écoute (garde-fou 0-serveur). Les modules ignorés seuls ne rendent PAS le boot
|
|
103
|
+
* `unhealthy` (dégradé mais vivant) — seul le 0-serveur attendu est bloquant.
|
|
104
|
+
*/
|
|
105
|
+
healthy: boolean;
|
|
106
|
+
/**
|
|
107
|
+
* Action corrective suggérée d'après les raisons d'échec (ex. « dist périmé ⇒
|
|
108
|
+
* npm run clean && npm run build » quand un `import()` échoue). `undefined` si
|
|
109
|
+
* aucune heuristique ne matche. Source unique partagée par le log et l'écran.
|
|
110
|
+
*/
|
|
111
|
+
remediation?: string;
|
|
112
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registre de disponibilité — ce qui RETIENT la mise en service d'un processus.
|
|
3
|
+
*
|
|
4
|
+
* Un pod qui écoute n'est pas un pod qui peut servir : son schéma de base peut
|
|
5
|
+
* être en retard, un cache peut n'être pas chaud, un service tiers peut n'avoir
|
|
6
|
+
* pas encore répondu. Ce registre donne à ces composants le seul mot qui leur
|
|
7
|
+
* manquait — « pas encore » — et l'orchestrateur en tire la conséquence : il
|
|
8
|
+
* n'envoie pas de trafic, l'ancien exemplaire continue de servir.
|
|
9
|
+
*
|
|
10
|
+
* ## La forme est imposée par le chemin sur lequel elle est lue
|
|
11
|
+
*
|
|
12
|
+
* La sonde `/readyz` est interrogée toutes les 2 à 10 secondes par le kubelet et
|
|
13
|
+
* court-circuite TOUT le pipeline (pas de contexte, pas de portée d'injection,
|
|
14
|
+
* réponses pré-allouées). Le registre stocke donc un **verdict déjà calculé** :
|
|
15
|
+
* un booléen posé par le contributeur, jamais une fonction que la sonde
|
|
16
|
+
* attendrait. Lire la disponibilité coûte une comparaison d'entier — zéro
|
|
17
|
+
* `await`, zéro allocation, zéro appel système.
|
|
18
|
+
*
|
|
19
|
+
* Conséquence directe, et c'est la propriété qui fait tout l'intérêt du
|
|
20
|
+
* mécanisme : **une sonde qui interroge une base tombe avec elle.** Ici elle ne
|
|
21
|
+
* peut pas : elle lit ce que le contributeur a déjà décidé, à son propre rythme.
|
|
22
|
+
* Et dès que la cause extérieure est levée — le travail de migration appliqué,
|
|
23
|
+
* par exemple —, le contributeur repose son verdict et le processus redevient
|
|
24
|
+
* disponible **tout seul**, sans redéploiement.
|
|
25
|
+
*
|
|
26
|
+
* Ce registre n'est pas alloué tant que personne ne s'inscrit : le Kernel le
|
|
27
|
+
* garde à `null` et le libère quand le dernier contributeur se retire (cf
|
|
28
|
+
* {@link Kernel.setReadiness}).
|
|
29
|
+
*
|
|
30
|
+
* @remarks
|
|
31
|
+
* À ne pas confondre avec `checks/readiness.ts`, qui regarde une tout autre
|
|
32
|
+
* question — ce qui empêchera l'application de DÉMARRER sur cette machine
|
|
33
|
+
* (variable absente, module non installé), constaté par la commande `check`
|
|
34
|
+
* avant tout démarrage. Ici il s'agit d'un processus DÉJÀ démarré, et de savoir
|
|
35
|
+
* s'il peut recevoir du trafic maintenant.
|
|
36
|
+
*/
|
|
37
|
+
/** Un contributeur et son verdict, tels qu'un diagnostic les restitue. */
|
|
38
|
+
export interface IReadinessContributor {
|
|
39
|
+
/** Nom du contributeur — celui qui apparaît au journal et au diagnostic. */
|
|
40
|
+
readonly name: string;
|
|
41
|
+
/** Verdict déjà calculé : `false` retient la mise en service. */
|
|
42
|
+
readonly ready: boolean;
|
|
43
|
+
/** Ce qui retient, en clair — absent quand le contributeur est prêt. */
|
|
44
|
+
readonly reason?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Ce verdict retient-il le trafic ? `false` = l'état est PUBLIÉ sans être
|
|
47
|
+
* opposable — le processus sert quand même.
|
|
48
|
+
*
|
|
49
|
+
* Cette distinction existe parce que « ce composant va mal » et « n'envoyez
|
|
50
|
+
* plus de trafic » sont deux affirmations différentes, et que les confondre
|
|
51
|
+
* a un coût : le noyau garde vivant un exemplaire dont la mise en service est
|
|
52
|
+
* retenue (il ne sert personne, le tuer ne répare rien et rend inatteignable
|
|
53
|
+
* la commande qui lèverait la cause). Un composant réglé pour ne PAS retenir
|
|
54
|
+
* perdait donc, du même geste, cette protection — sans que personne puisse
|
|
55
|
+
* le deviner.
|
|
56
|
+
*/
|
|
57
|
+
readonly blocking?: boolean;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Les contributeurs et le compte de ceux qui retiennent la mise en service.
|
|
61
|
+
*
|
|
62
|
+
* Objet nu (`Object.create(null)`) plutôt que `Map` : quelques entrées, accès
|
|
63
|
+
* ponctuel, aucun héritage de prototype à craindre sur un nom venu d'un module.
|
|
64
|
+
* Le compte des non-prêts est tenu À L'ÉCRITURE — il n'est jamais recalculé par
|
|
65
|
+
* parcours, puisque c'est la lecture qui doit rester gratuite.
|
|
66
|
+
*/
|
|
67
|
+
export declare class ReadinessRegistry {
|
|
68
|
+
private entries;
|
|
69
|
+
private notReady;
|
|
70
|
+
private tracked;
|
|
71
|
+
/** Nombre de contributeurs qui retiennent la mise en service (0 = disponible). */
|
|
72
|
+
get blocked(): number;
|
|
73
|
+
/** Nombre de contributeurs inscrits, prêts ou non. */
|
|
74
|
+
get size(): number;
|
|
75
|
+
/**
|
|
76
|
+
* Inscrit ou met à jour un contributeur nommé. Idempotent par nom : un même
|
|
77
|
+
* nom réenregistré remplace son verdict, il n'ajoute jamais une seconde voix.
|
|
78
|
+
*
|
|
79
|
+
* @param name - nom du contributeur (`"drizzle:schema"`, `"cache"`…)
|
|
80
|
+
* @param ready - verdict DÉJÀ calculé ; `false` retient la mise en service
|
|
81
|
+
* @param reason - ce qui retient, en clair — ignoré quand `ready` est vrai
|
|
82
|
+
* @param blocking - `false` pour PUBLIER l'état sans retenir le trafic ; le
|
|
83
|
+
* contributeur apparaît alors au diagnostic (et le noyau sait qu'un état
|
|
84
|
+
* externe est en cours), mais `/readyz` continue de répondre 200.
|
|
85
|
+
* @returns `true` si le verdict AGRÉGÉ a basculé (retenu ⇄ disponible)
|
|
86
|
+
*/
|
|
87
|
+
set(name: string, ready: boolean, reason?: string, blocking?: boolean): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Retire un contributeur — sa voix ne compte plus, ni pour retenir ni pour
|
|
90
|
+
* libérer. C'est le geste d'un module qui s'arrête.
|
|
91
|
+
*
|
|
92
|
+
* @param name - nom du contributeur
|
|
93
|
+
* @returns `true` si le verdict AGRÉGÉ a basculé (retenu ⇄ disponible)
|
|
94
|
+
*/
|
|
95
|
+
clear(name: string): boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Restitue les contributeurs pour un diagnostic (journal, `status`, console
|
|
98
|
+
* d'administration) — hors du chemin de la sonde, qui ne lit que
|
|
99
|
+
* {@link ReadinessRegistry.blocked}.
|
|
100
|
+
*
|
|
101
|
+
* @returns un contributeur par entrée, triés par nom (ordre stable)
|
|
102
|
+
*/
|
|
103
|
+
report(): IReadinessContributor[];
|
|
104
|
+
}
|
|
@@ -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;
|