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,268 @@
|
|
|
1
|
+
import { isRateChannel, parseRate, rateChannel } from "../../realtime/channelRate.js";
|
|
2
|
+
import { adaptiveRebindKey, connectShared, observeChannel, observeChannelStats, observeIdentity, observeNoticeLog, observeNotices, observeSnapshot, observeState, observeSyslog } from "../realtime/observe.js";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
//#region src/client/react/index.ts
|
|
5
|
+
/**
|
|
6
|
+
* `nodefony/react` — bindings React **fins** du client temps réel isomorphe.
|
|
7
|
+
*
|
|
8
|
+
* Adapte le {@link RealtimeClient} (agnostique : `on()`/`emit()`/`state`) à la
|
|
9
|
+
* réactivité React, sans MobX ni glue à recopier dans chaque app. Réutilisable
|
|
10
|
+
* par Studio ET n'importe quelle app React servie par `@nodefony/frontend`.
|
|
11
|
+
*
|
|
12
|
+
* Principe : des hooks **ciblés et composables** (un hook = une responsabilité),
|
|
13
|
+
* tous **marqués `nodefony`** (`useNodefony*`) pour les repérer d'un coup d'œil.
|
|
14
|
+
* Pas un god-hook : on compose ce dont la vue a besoin. `react` est une peerDep
|
|
15
|
+
* **optionnelle** (ce module n'est tiré que si on importe `nodefony/react`).
|
|
16
|
+
* Aucun JSX (provider via `createElement`) → le build Core ne dépend pas d'un
|
|
17
|
+
* transform JSX.
|
|
18
|
+
*
|
|
19
|
+
* **Ce fichier ne contient PLUS de règle temps réel.** Souscrire, tenir un
|
|
20
|
+
* dernier reçu, borner un anneau, décoder le format coalescé du journal, ne
|
|
21
|
+
* jamais couper une socket partagée : tout cela vit dans le socle agnostique
|
|
22
|
+
* `nodefony/client` (`observe*`, `connectShared`), que les liaisons Vue, Angular
|
|
23
|
+
* et Svelte consomment à l'identique. Ici ne reste que la traduction *rappel +
|
|
24
|
+
* libération → réactivité React* — la seule chose qu'une liaison a le droit de
|
|
25
|
+
* contenir. Un hook qui réencoderait une règle la ferait diverger des trois
|
|
26
|
+
* autres fronts, en silence.
|
|
27
|
+
*
|
|
28
|
+
* L'app reste maîtresse du **cycle de connexion** (`client.connect()`), montée
|
|
29
|
+
* une fois (ex. au shell). Les hooks ne gèrent QUE l'abonnement aux canaux.
|
|
30
|
+
*
|
|
31
|
+
* @module nodefony/react
|
|
32
|
+
*/
|
|
33
|
+
const NodefonyContext = React.createContext(null);
|
|
34
|
+
/**
|
|
35
|
+
* Injecte le client temps réel Nodefony dans le sous-arbre. À monter une fois,
|
|
36
|
+
* au-dessus des composants qui consomment les hooks `useNodefony*`.
|
|
37
|
+
*
|
|
38
|
+
* @example Cas simple — deux concepts, ce Provider et un hook :
|
|
39
|
+
* ```tsx
|
|
40
|
+
* <NodefonyProvider url="/api/live/realtime">
|
|
41
|
+
* <Chat />
|
|
42
|
+
* </NodefonyProvider>
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* @example Cas avancé — l'application possède le cycle de connexion :
|
|
46
|
+
* ```tsx
|
|
47
|
+
* <NodefonyProvider client={monClient}>…</NodefonyProvider>
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
function NodefonyProvider(props) {
|
|
51
|
+
const { url, client } = props;
|
|
52
|
+
const connection = React.useMemo(() => connectShared({
|
|
53
|
+
url,
|
|
54
|
+
client
|
|
55
|
+
}), [client, url]);
|
|
56
|
+
React.useEffect(() => connection.start(), [connection]);
|
|
57
|
+
return React.createElement(NodefonyContext.Provider, { value: connection.socket }, props.children);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* `useNodefony()` — le client temps réel brut (hub : canaux, syslog, stats…).
|
|
61
|
+
* Tête de gondole + échappatoire pour les cas avancés. Référence stable (pas de
|
|
62
|
+
* re-render) ; pour l'état réactif, utiliser les hooks dédiés ci-dessous.
|
|
63
|
+
*
|
|
64
|
+
* @throws si appelé hors d'un `<NodefonyProvider>`.
|
|
65
|
+
*/
|
|
66
|
+
function useNodefony() {
|
|
67
|
+
const client = React.useContext(NodefonyContext);
|
|
68
|
+
if (!client) throw new Error("useNodefony() doit être utilisé dans un <NodefonyProvider>.");
|
|
69
|
+
return client;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* `useNodefonyState()` — état de la connexion (`"connected" | "reconnecting" | …`).
|
|
73
|
+
* `useSyncExternalStore` : re-render UNIQUEMENT au changement d'état (snapshot
|
|
74
|
+
* primitif, sans tearing en mode concurrent).
|
|
75
|
+
*
|
|
76
|
+
* Branché sur `onState` — la porte publique — et non sur le nom de l'événement
|
|
77
|
+
* local, qui n'a pas à sortir du client.
|
|
78
|
+
*/
|
|
79
|
+
function useNodefonyState() {
|
|
80
|
+
const client = useNodefony();
|
|
81
|
+
return React.useSyncExternalStore((cb) => observeState(client, () => cb()), () => client.state, () => client.state);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* `useNodefonyIdentity()` — l'**identité résolue** de la connexion, annoncée par
|
|
85
|
+
* le serveur au `realtime:welcome` (`authenticated`, `roles`, `userIdentifier`,
|
|
86
|
+
* `scopes`). `null` tant qu'aucun welcome n'a été reçu ; une fois reçu, un
|
|
87
|
+
* visiteur anonyme a `authenticated: false`. `useSyncExternalStore` → re-render
|
|
88
|
+
* uniquement quand l'identité change ((re)welcome ou logout). Brique du gating
|
|
89
|
+
* front : `authenticated:false` → écran login, **sans** route `/auth/me`.
|
|
90
|
+
*/
|
|
91
|
+
function useNodefonyIdentity() {
|
|
92
|
+
const client = useNodefony();
|
|
93
|
+
return React.useSyncExternalStore((cb) => observeIdentity(client, () => cb()), () => client.identity, () => client.identity);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* `useNodefonyChannel()` — s'abonne à un canal pub/sub : `onMessage` est appelé
|
|
97
|
+
* à chaque message. Le socle apparie subscribe/unsubscribe serveur (ref-comptés)
|
|
98
|
+
* et le re-subscribe au reconnect. Le handler peut changer à chaque render sans
|
|
99
|
+
* re-déclencher l'abonnement (capturé via ref) ; passer `deps` si le canal
|
|
100
|
+
* effectif dépend d'autres valeurs.
|
|
101
|
+
*/
|
|
102
|
+
function useNodefonyChannel(channel, onMessage, deps = []) {
|
|
103
|
+
const client = useNodefony();
|
|
104
|
+
const handlerRef = React.useRef(onMessage);
|
|
105
|
+
handlerRef.current = onMessage;
|
|
106
|
+
React.useEffect(() => {
|
|
107
|
+
return observeChannel(client, channel, (payload) => handlerRef.current(payload));
|
|
108
|
+
}, [
|
|
109
|
+
client,
|
|
110
|
+
channel,
|
|
111
|
+
...deps
|
|
112
|
+
]);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* `useNodefonyChannelData()` — la **dernière valeur** reçue sur un canal (cas le
|
|
116
|
+
* plus courant : dernière mesure d'un flux de stats). `null` tant que rien n'est
|
|
117
|
+
* arrivé.
|
|
118
|
+
*/
|
|
119
|
+
function useNodefonyChannelData(channel, initial = null) {
|
|
120
|
+
const [data, setData] = React.useState(initial);
|
|
121
|
+
useNodefonyChannel(channel, (payload) => setData(payload), []);
|
|
122
|
+
return data;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* `useNodefonyAdaptiveChannel()` — équivalent **handler-based** de {@link useNodefonyChannel}
|
|
126
|
+
* mais en **cadence adaptative** (AIMD client-driven, cf {@link RealtimeClient.adaptiveChannel}) :
|
|
127
|
+
* la lib recule la cadence sous famine puis la remonte quand c'est sain. `onMessage` reçoit
|
|
128
|
+
* chaque frame (handler riche autorisé) ; **renvoie la cadence effective** (ms) pour un badge.
|
|
129
|
+
* Primitif commun à tous les dashboards d'état (Supervision, ORM…) → **logique live identique**.
|
|
130
|
+
* Réservé aux canaux d'ÉTAT (latest-wins). Réglage `enabled` (off = abonnement fixe).
|
|
131
|
+
*
|
|
132
|
+
* Le ré-abonnement n'est relancé que si `base`, `desiredMs`, `enabled` ou `deps` changent —
|
|
133
|
+
* la clé vient de {@link adaptiveRebindKey}, la MÊME que celle des autres liaisons (le
|
|
134
|
+
* handler + les `opts` sont capturés par ref → identité instable sans re-bind).
|
|
135
|
+
*/
|
|
136
|
+
function useNodefonyAdaptiveChannel(base, onMessage, desiredMs, opts = {}, deps = []) {
|
|
137
|
+
const client = useNodefony();
|
|
138
|
+
const handlerRef = React.useRef(onMessage);
|
|
139
|
+
handlerRef.current = onMessage;
|
|
140
|
+
const optsRef = React.useRef(opts);
|
|
141
|
+
optsRef.current = opts;
|
|
142
|
+
const [intervalMs, setIntervalMs] = React.useState(desiredMs);
|
|
143
|
+
const enabled = opts.enabled !== false;
|
|
144
|
+
const rebindKey = adaptiveRebindKey(base, desiredMs, enabled);
|
|
145
|
+
React.useEffect(() => {
|
|
146
|
+
const binding = client.adaptiveChannel(base, (...args) => handlerRef.current(args[0]), {
|
|
147
|
+
...optsRef.current,
|
|
148
|
+
intervalMs: desiredMs,
|
|
149
|
+
enabled,
|
|
150
|
+
onRate: (ms) => setIntervalMs(ms)
|
|
151
|
+
});
|
|
152
|
+
return () => binding.dispose();
|
|
153
|
+
}, [
|
|
154
|
+
client,
|
|
155
|
+
rebindKey,
|
|
156
|
+
...deps
|
|
157
|
+
]);
|
|
158
|
+
return intervalMs;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* `useNodefonyAdaptiveChannelData()` — comme {@link useNodefonyChannelData} mais en cadence
|
|
162
|
+
* adaptative. Mince surcouche de {@link useNodefonyAdaptiveChannel} : garde la **dernière
|
|
163
|
+
* valeur** reçue + renvoie la cadence effective (badge UI). Réservé aux canaux d'ÉTAT.
|
|
164
|
+
*/
|
|
165
|
+
function useNodefonyAdaptiveChannelData(base, desiredMs, opts = {}, deps = []) {
|
|
166
|
+
const [data, setData] = React.useState(null);
|
|
167
|
+
return {
|
|
168
|
+
data,
|
|
169
|
+
intervalMs: useNodefonyAdaptiveChannel(base, (payload) => setData(payload), desiredMs, opts, deps)
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* `useNodefonyChannelStats()` — stats live d'un canal (débit, série VU-mètre,
|
|
174
|
+
* total). Source = le client Core (`getChannelStats`, échantillonné 1×/s).
|
|
175
|
+
* Implémenté en `state`+effet (pas `useSyncExternalStore`) car le snapshot est
|
|
176
|
+
* un objet recréé → la stabilité de référence requise par le store externe ne
|
|
177
|
+
* tiendrait pas.
|
|
178
|
+
*/
|
|
179
|
+
function useNodefonyChannelStats(channel) {
|
|
180
|
+
const client = useNodefony();
|
|
181
|
+
const [stats, setStats] = React.useState(null);
|
|
182
|
+
React.useEffect(() => observeChannelStats(client, channel, setStats), [client, channel]);
|
|
183
|
+
return stats;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* `useNodefonySnapshot()` — ce que la socket sait d'ELLE-MÊME : état, canaux
|
|
187
|
+
* tenus, trames reçues, trames perdues, dernière trame. Rafraîchi par
|
|
188
|
+
* l'échantillonneur déjà en place — aucune horloge de plus, aucune trame émise
|
|
189
|
+
* pour mesurer.
|
|
190
|
+
*
|
|
191
|
+
* La donnée est au socle, la **boîte qui l'affiche** reste à chaque front : les
|
|
192
|
+
* quatre vitrines lisaient ces cinq champs à la main, c'est-à-dire quatre
|
|
193
|
+
* lectures qui divergeront.
|
|
194
|
+
*/
|
|
195
|
+
function useNodefonySnapshot() {
|
|
196
|
+
const client = useNodefony();
|
|
197
|
+
const [snapshot, setSnapshot] = React.useState(null);
|
|
198
|
+
React.useEffect(() => observeSnapshot(client, setSnapshot), [client]);
|
|
199
|
+
return snapshot;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* `useNodefonySyslog()` — flux syslog prêt à l'emploi : ring buffer borné +
|
|
203
|
+
* filtre de sévérité. Le format **coalescé** du canal (`{ logs: Pdu[], dropped }`),
|
|
204
|
+
* l'entrée unique, la taille de l'anneau et le canal par défaut viennent du
|
|
205
|
+
* socle ({@link observeSyslog}) : ce hook n'en connaît aucun. Brique de la page
|
|
206
|
+
* Logs — un seul appel remplace l'effet + le buffer manuels.
|
|
207
|
+
*/
|
|
208
|
+
function useNodefonySyslog(opts = {}) {
|
|
209
|
+
const { max, severities, channel } = opts;
|
|
210
|
+
const client = useNodefony();
|
|
211
|
+
const sevKey = severities ? severities.join(",") : "";
|
|
212
|
+
const [entries, setEntries] = React.useState([]);
|
|
213
|
+
React.useEffect(() => {
|
|
214
|
+
return observeSyslog(client, setEntries, {
|
|
215
|
+
max,
|
|
216
|
+
severities,
|
|
217
|
+
channel
|
|
218
|
+
});
|
|
219
|
+
}, [
|
|
220
|
+
client,
|
|
221
|
+
channel,
|
|
222
|
+
max,
|
|
223
|
+
sevKey
|
|
224
|
+
]);
|
|
225
|
+
return entries;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* `useNodefonyNotifications()` — s'abonne au flux de **notices normalisées** du
|
|
229
|
+
* client : criticités qui cassent le temps réel (close codes RFC 6455 interprétés),
|
|
230
|
+
* erreurs serveur poussées, rétablissement de connexion. `onNotice` est appelé
|
|
231
|
+
* pour CHAQUE notice → brancher un centre de notifications (snackbar). Le handler
|
|
232
|
+
* peut changer à chaque render sans re-déclencher l'abonnement (capturé via ref).
|
|
233
|
+
*
|
|
234
|
+
* À monter **une seule fois** (shell de l'app) pour ne pas dupliquer les toasts.
|
|
235
|
+
*/
|
|
236
|
+
function useNodefonyNotifications(onNotice, deps = []) {
|
|
237
|
+
const client = useNodefony();
|
|
238
|
+
const handlerRef = React.useRef(onNotice);
|
|
239
|
+
handlerRef.current = onNotice;
|
|
240
|
+
React.useEffect(() => {
|
|
241
|
+
return observeNotices(client, (notice) => handlerRef.current(notice));
|
|
242
|
+
}, [client, ...deps]);
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* `useNodefonyNoticeLog()` — ring buffer borné des dernières notices, filtrable
|
|
246
|
+
* par source. Brique du hub temps réel (« incidents temps réel ») : un historique
|
|
247
|
+
* léger des criticités realtime, distinct des toasts éphémères. La taille de
|
|
248
|
+
* l'anneau et le filtrage viennent du socle ({@link observeNoticeLog}).
|
|
249
|
+
*/
|
|
250
|
+
function useNodefonyNoticeLog(opts = {}) {
|
|
251
|
+
const { max, sources } = opts;
|
|
252
|
+
const client = useNodefony();
|
|
253
|
+
const srcKey = sources ? sources.join(",") : "";
|
|
254
|
+
const [notices, setNotices] = React.useState([]);
|
|
255
|
+
React.useEffect(() => {
|
|
256
|
+
return observeNoticeLog(client, setNotices, {
|
|
257
|
+
max,
|
|
258
|
+
sources
|
|
259
|
+
});
|
|
260
|
+
}, [
|
|
261
|
+
client,
|
|
262
|
+
max,
|
|
263
|
+
srcKey
|
|
264
|
+
]);
|
|
265
|
+
return notices;
|
|
266
|
+
}
|
|
267
|
+
//#endregion
|
|
268
|
+
export { NodefonyProvider, isRateChannel, parseRate, rateChannel, useNodefony, useNodefonyAdaptiveChannel, useNodefonyAdaptiveChannelData, useNodefonyChannel, useNodefonyChannelData, useNodefonyChannelStats, useNodefonyIdentity, useNodefonyNoticeLog, useNodefonyNotifications, useNodefonySnapshot, useNodefonyState, useNodefonySyslog };
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { rateChannel } from "../../realtime/channelRate.js";
|
|
2
|
+
//#region src/client/realtime/AdaptiveRate.ts
|
|
3
|
+
/**
|
|
4
|
+
* AdaptiveRate — cadence ADAPTATIVE automatique d'un canal d'ÉTAT, **client-driven**
|
|
5
|
+
* (niveau 1, zéro changement serveur). Pendant exact de l'ABR vidéo (HLS/DASH ajustent
|
|
6
|
+
* la qualité selon le buffer) et du contrôle de congestion réseau (TCP **AIMD**).
|
|
7
|
+
*
|
|
8
|
+
* Idée : la cadence vit dans le nom du canal (cf {@link rateChannel} — 1 canal = 1 cadence
|
|
9
|
+
* = 1 ticker serveur). Si le client observe que les frames arrivent **plus lentement** que
|
|
10
|
+
* demandé (famine ⇒ event-loop serveur ou réseau sous pression), il se ré-abonne à une
|
|
11
|
+
* cadence **plus grossière** (`1s→2s→5s`) → moins de pushes → la pression retombe → le flux
|
|
12
|
+
* récupère ; quand c'est sain durablement, il remonte **doucement** vers la cadence désirée.
|
|
13
|
+
*
|
|
14
|
+
* AIMD (asymétrie anti-oscillation, comme TCP) :
|
|
15
|
+
* - **Multiplicative Decrease** : famine ⇒ on monte d'un cran l'échelle (cadence grossie),
|
|
16
|
+
* immédiat. L'échelle géométrique (×2) rend la décrue multiplicative.
|
|
17
|
+
* - **Additive Increase** : on ne redescend d'un cran (cadence affinée) qu'après une
|
|
18
|
+
* **fenêtre** de N échantillons sains → reprise lente.
|
|
19
|
+
* - **bande morte** (hystérésis) entre « sain » et « famine » : aucun changement → pas de
|
|
20
|
+
* flip-flop.
|
|
21
|
+
*
|
|
22
|
+
* Réservé aux canaux d'**ÉTAT** (latest-wins : supervision, stats) où décimer est sans perte.
|
|
23
|
+
* PAS pour les canaux d'**ÉVÉNEMENTS** (syslog, frames protocole) où chaque item compte
|
|
24
|
+
* (eux se batchent, pas se décimer).
|
|
25
|
+
*
|
|
26
|
+
* Cette classe est la **machine à états pure** (aucun timer, aucune socket) → déterministe
|
|
27
|
+
* et testable. Le câblage à une socket réelle vit dans {@link bindAdaptiveChannel}.
|
|
28
|
+
*
|
|
29
|
+
* @see {@link bindAdaptiveChannel} — glue socket + watchdog.
|
|
30
|
+
* @see {@link rateChannel} — convention de nommage cadencé partagée client↔serveur.
|
|
31
|
+
*/
|
|
32
|
+
/** Construit une échelle géométrique ×2 de `intervalMs` à `maxMs` (bornes incluses). */
|
|
33
|
+
function deriveLadder(intervalMs, maxMs) {
|
|
34
|
+
const ladder = [];
|
|
35
|
+
let ms = intervalMs;
|
|
36
|
+
while (ms < maxMs) {
|
|
37
|
+
ladder.push(ms);
|
|
38
|
+
ms *= 2;
|
|
39
|
+
}
|
|
40
|
+
ladder.push(maxMs);
|
|
41
|
+
return ladder;
|
|
42
|
+
}
|
|
43
|
+
var AdaptiveRate = class {
|
|
44
|
+
ladder;
|
|
45
|
+
starvationFactor;
|
|
46
|
+
healthyFactor;
|
|
47
|
+
recoveryWindow;
|
|
48
|
+
/** Position dans l'échelle (0 = cadence la plus fine = désirée). */
|
|
49
|
+
idx = 0;
|
|
50
|
+
/** Échantillons sains consécutifs depuis le dernier changement. */
|
|
51
|
+
healthy = 0;
|
|
52
|
+
/** Timestamp (ms) de la dernière frame ; `null` = pas de référence (post-switch/init). */
|
|
53
|
+
lastFrameTs = null;
|
|
54
|
+
constructor(options) {
|
|
55
|
+
const maxMs = options.maxMs ?? 6e4;
|
|
56
|
+
const ladder = options.ladder && options.ladder.length > 0 ? [...options.ladder].sort((a, b) => a - b) : deriveLadder(options.intervalMs, Math.max(options.intervalMs, maxMs));
|
|
57
|
+
this.ladder = ladder;
|
|
58
|
+
this.starvationFactor = options.starvationFactor ?? 1.8;
|
|
59
|
+
this.healthyFactor = options.healthyFactor ?? 1.25;
|
|
60
|
+
this.recoveryWindow = options.recoveryWindow ?? 4;
|
|
61
|
+
}
|
|
62
|
+
/** Cadence courante (ms). */
|
|
63
|
+
current() {
|
|
64
|
+
return this.ladder[this.idx];
|
|
65
|
+
}
|
|
66
|
+
/** Décale d'un cran vers le grossier (MD) ; renvoie `true` si la cadence a changé. */
|
|
67
|
+
decrease() {
|
|
68
|
+
if (this.idx >= this.ladder.length - 1) return false;
|
|
69
|
+
this.idx += 1;
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
/** Décale d'un cran vers le fin (AI) ; renvoie `true` si la cadence a changé. */
|
|
73
|
+
increase() {
|
|
74
|
+
if (this.idx <= 0) return false;
|
|
75
|
+
this.idx -= 1;
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
/** Réamorce la mesure (après un changement de cadence). */
|
|
79
|
+
resetSample() {
|
|
80
|
+
this.lastFrameTs = null;
|
|
81
|
+
this.healthy = 0;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* À appeler à CHAQUE frame reçue. Pilote l'**AI** (reprise) et détecte aussi la famine
|
|
85
|
+
* sur frames lentes (**MD**).
|
|
86
|
+
*
|
|
87
|
+
* @param now - horloge (ms).
|
|
88
|
+
* @returns une {@link RateDecision} si la cadence doit changer, sinon `null`.
|
|
89
|
+
*/
|
|
90
|
+
noteFrame(now) {
|
|
91
|
+
const prev = this.lastFrameTs;
|
|
92
|
+
this.lastFrameTs = now;
|
|
93
|
+
if (prev === null) return null;
|
|
94
|
+
const gap = now - prev;
|
|
95
|
+
const cur = this.current();
|
|
96
|
+
if (gap > this.starvationFactor * cur) {
|
|
97
|
+
if (this.decrease()) {
|
|
98
|
+
this.resetSample();
|
|
99
|
+
return {
|
|
100
|
+
intervalMs: this.current(),
|
|
101
|
+
reason: "decrease"
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
this.healthy = 0;
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
if (gap <= this.healthyFactor * cur) {
|
|
108
|
+
this.healthy += 1;
|
|
109
|
+
if (this.healthy >= this.recoveryWindow && this.increase()) {
|
|
110
|
+
this.resetSample();
|
|
111
|
+
return {
|
|
112
|
+
intervalMs: this.current(),
|
|
113
|
+
reason: "increase"
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
this.healthy = 0;
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Watchdog : à appeler périodiquement. Détecte la famine **totale** (plus aucune frame)
|
|
123
|
+
* que {@link noteFrame} ne verrait pas (faute de frame).
|
|
124
|
+
*
|
|
125
|
+
* @param now - horloge (ms).
|
|
126
|
+
* @returns une {@link RateDecision} (toujours `"decrease"`) si la cadence doit grossir.
|
|
127
|
+
*/
|
|
128
|
+
checkStarvation(now) {
|
|
129
|
+
if (this.lastFrameTs === null) return null;
|
|
130
|
+
if (now - this.lastFrameTs > this.starvationFactor * this.current()) {
|
|
131
|
+
if (this.decrease()) {
|
|
132
|
+
this.resetSample();
|
|
133
|
+
return {
|
|
134
|
+
intervalMs: this.current(),
|
|
135
|
+
reason: "decrease"
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
const defaultScheduler = {
|
|
143
|
+
set: (cb, ms) => setInterval(cb, ms),
|
|
144
|
+
clear: (h) => clearInterval(h)
|
|
145
|
+
};
|
|
146
|
+
const defaultClock = () => typeof performance !== "undefined" && typeof performance.now === "function" ? performance.now() : Date.now();
|
|
147
|
+
/**
|
|
148
|
+
* Câble un {@link AdaptiveRate} à une socket réelle : abonne `base` à sa cadence désirée,
|
|
149
|
+
* mesure la gigue d'arrivée, et **ré-abonne** automatiquement à une cadence plus grossière
|
|
150
|
+
* en cas de famine (MD) puis plus fine quand c'est sain (AI). Les frames continuent d'être
|
|
151
|
+
* livrées à `handler` à travers les changements de cadence.
|
|
152
|
+
*
|
|
153
|
+
* Réservé aux canaux d'ÉTAT (latest-wins). Pour les canaux d'événements, ne pas décimer.
|
|
154
|
+
*
|
|
155
|
+
* @param socket - la socket Nodefony ({@link IRealtimeSocket}).
|
|
156
|
+
* @param base - canal de base (sans suffixe de cadence).
|
|
157
|
+
* @param handler - reçoit le payload de chaque frame.
|
|
158
|
+
* @param options - cadence désirée + réglages AIMD + injections.
|
|
159
|
+
* @returns une {@link AdaptiveChannelBinding} (cadence courante + `dispose`).
|
|
160
|
+
*/
|
|
161
|
+
function bindAdaptiveChannel(socket, base, handler, options) {
|
|
162
|
+
if (options.enabled === false) {
|
|
163
|
+
const channel = rateChannel(base, options.intervalMs, options.defaultMs);
|
|
164
|
+
socket.subscribe(channel);
|
|
165
|
+
const offFixed = socket.on(channel, handler);
|
|
166
|
+
options.onRate?.(options.intervalMs, "init");
|
|
167
|
+
let downFixed = false;
|
|
168
|
+
return {
|
|
169
|
+
get intervalMs() {
|
|
170
|
+
return options.intervalMs;
|
|
171
|
+
},
|
|
172
|
+
get channel() {
|
|
173
|
+
return channel;
|
|
174
|
+
},
|
|
175
|
+
dispose() {
|
|
176
|
+
if (downFixed) return;
|
|
177
|
+
downFixed = true;
|
|
178
|
+
offFixed();
|
|
179
|
+
socket.unsubscribe(channel);
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
const clock = options.clock ?? defaultClock;
|
|
184
|
+
const scheduler = options.scheduler ?? defaultScheduler;
|
|
185
|
+
const ar = new AdaptiveRate(options);
|
|
186
|
+
let currentMs = ar.current();
|
|
187
|
+
let currentChannel = rateChannel(base, currentMs, options.defaultMs);
|
|
188
|
+
let off = null;
|
|
189
|
+
let watchdog;
|
|
190
|
+
let disposed = false;
|
|
191
|
+
const wrapped = (...args) => {
|
|
192
|
+
const decision = ar.noteFrame(clock());
|
|
193
|
+
handler(...args);
|
|
194
|
+
if (decision) applyDecision(decision);
|
|
195
|
+
};
|
|
196
|
+
const armWatchdog = () => {
|
|
197
|
+
if (watchdog !== void 0) scheduler.clear(watchdog);
|
|
198
|
+
watchdog = scheduler.set(() => {
|
|
199
|
+
const decision = ar.checkStarvation(clock());
|
|
200
|
+
if (decision) applyDecision(decision);
|
|
201
|
+
}, currentMs);
|
|
202
|
+
};
|
|
203
|
+
function applyDecision(decision) {
|
|
204
|
+
if (disposed) return;
|
|
205
|
+
const nextChannel = rateChannel(base, decision.intervalMs, options.defaultMs);
|
|
206
|
+
currentMs = decision.intervalMs;
|
|
207
|
+
if (nextChannel !== currentChannel) {
|
|
208
|
+
const oldChannel = currentChannel;
|
|
209
|
+
const oldOff = off;
|
|
210
|
+
socket.subscribe(nextChannel);
|
|
211
|
+
off = socket.on(nextChannel, wrapped);
|
|
212
|
+
oldOff?.();
|
|
213
|
+
socket.unsubscribe(oldChannel);
|
|
214
|
+
currentChannel = nextChannel;
|
|
215
|
+
}
|
|
216
|
+
armWatchdog();
|
|
217
|
+
options.onRate?.(currentMs, decision.reason);
|
|
218
|
+
}
|
|
219
|
+
socket.subscribe(currentChannel);
|
|
220
|
+
off = socket.on(currentChannel, wrapped);
|
|
221
|
+
armWatchdog();
|
|
222
|
+
options.onRate?.(currentMs, "init");
|
|
223
|
+
return {
|
|
224
|
+
get intervalMs() {
|
|
225
|
+
return currentMs;
|
|
226
|
+
},
|
|
227
|
+
get channel() {
|
|
228
|
+
return currentChannel;
|
|
229
|
+
},
|
|
230
|
+
dispose() {
|
|
231
|
+
if (disposed) return;
|
|
232
|
+
disposed = true;
|
|
233
|
+
if (watchdog !== void 0) scheduler.clear(watchdog);
|
|
234
|
+
off?.();
|
|
235
|
+
socket.unsubscribe(currentChannel);
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
//#endregion
|
|
240
|
+
export { AdaptiveRate, AdaptiveRate as default, bindAdaptiveChannel };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { TransportState } from "../../realtime/IRealtimeTransport.js";
|
|
2
|
+
//#region src/client/realtime/BrowserWsTransport.ts
|
|
3
|
+
/**
|
|
4
|
+
* BrowserWsTransport — transport {@link IRealtimeTransport} pour le navigateur :
|
|
5
|
+
* wrap d'un `WebSocket` natif. Volontairement « bête » : il ouvre/envoie/ferme et
|
|
6
|
+
* relaie les events. L'orchestration (reconnect, backoff, heartbeat, state machine)
|
|
7
|
+
* vit AU-DESSUS dans `RealtimeClient` — qui crée un transport NEUF à chaque tentative.
|
|
8
|
+
*
|
|
9
|
+
* L'URL reçue est déjà normalisée (ws/wss, token) par l'appelant.
|
|
10
|
+
*/
|
|
11
|
+
var BrowserWsTransport = class {
|
|
12
|
+
url;
|
|
13
|
+
ws = null;
|
|
14
|
+
_onOpen = null;
|
|
15
|
+
_onMessage = null;
|
|
16
|
+
_onClose = null;
|
|
17
|
+
_onError = null;
|
|
18
|
+
constructor(url) {
|
|
19
|
+
this.url = url;
|
|
20
|
+
}
|
|
21
|
+
connect() {
|
|
22
|
+
const ws = new WebSocket(this.url);
|
|
23
|
+
this.ws = ws;
|
|
24
|
+
ws.addEventListener("open", () => this._onOpen?.());
|
|
25
|
+
ws.addEventListener("message", (ev) => {
|
|
26
|
+
if (typeof ev.data === "string") this._onMessage?.(ev.data);
|
|
27
|
+
});
|
|
28
|
+
ws.addEventListener("close", (ev) => {
|
|
29
|
+
this.ws = null;
|
|
30
|
+
this._onClose?.(ev.code, ev.reason);
|
|
31
|
+
});
|
|
32
|
+
ws.addEventListener("error", () => this._onError?.(/* @__PURE__ */ new Error("websocket error")));
|
|
33
|
+
}
|
|
34
|
+
send(raw) {
|
|
35
|
+
if (this.ws?.readyState === TransportState.OPEN) this.ws.send(raw);
|
|
36
|
+
}
|
|
37
|
+
close(code, reason) {
|
|
38
|
+
this.ws?.close(code, reason);
|
|
39
|
+
}
|
|
40
|
+
get readyState() {
|
|
41
|
+
return this.ws?.readyState ?? TransportState.CLOSED;
|
|
42
|
+
}
|
|
43
|
+
onOpen(cb) {
|
|
44
|
+
this._onOpen = cb;
|
|
45
|
+
}
|
|
46
|
+
onMessage(cb) {
|
|
47
|
+
this._onMessage = cb;
|
|
48
|
+
}
|
|
49
|
+
onClose(cb) {
|
|
50
|
+
this._onClose = cb;
|
|
51
|
+
}
|
|
52
|
+
onError(cb) {
|
|
53
|
+
this._onError = cb;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
//#endregion
|
|
57
|
+
export { BrowserWsTransport, BrowserWsTransport as default };
|