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,251 @@
|
|
|
1
|
+
//#region src/realtime/JsonRpcPeer.ts
|
|
2
|
+
var RpcError = class extends Error {
|
|
3
|
+
name = "RpcError";
|
|
4
|
+
data;
|
|
5
|
+
constructor(message, code = -32e3, data) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.code = code;
|
|
8
|
+
if (data !== void 0) this.data = data;
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Réponse d'un handler qui veut JOINDRE des métadonnées serveur à son résultat.
|
|
13
|
+
*
|
|
14
|
+
* Un handler retourne normalement sa valeur nue (elle devient `result`). Quand
|
|
15
|
+
* il retourne une enveloppe, le peer la déballe : `result` reste la valeur nue,
|
|
16
|
+
* et `meta` voyage dans un champ frère de la trame JSON-RPC. Coût pour ceux qui
|
|
17
|
+
* ne l'utilisent pas : un `instanceof` par frame.
|
|
18
|
+
*/
|
|
19
|
+
var RpcEnvelope = class {
|
|
20
|
+
result;
|
|
21
|
+
meta;
|
|
22
|
+
constructor(result, meta) {
|
|
23
|
+
this.result = result;
|
|
24
|
+
this.meta = meta;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
var JsonRpcPeer = class JsonRpcPeer {
|
|
28
|
+
opts;
|
|
29
|
+
nextId = 1;
|
|
30
|
+
pending = null;
|
|
31
|
+
actions = null;
|
|
32
|
+
constructor(opts) {
|
|
33
|
+
this.opts = opts;
|
|
34
|
+
}
|
|
35
|
+
/** Expose une action (requête entrante `method`+`id` → `result`). Idempotent. */
|
|
36
|
+
register(method, handler) {
|
|
37
|
+
(this.actions ??= /* @__PURE__ */ new Map()).set(method, handler);
|
|
38
|
+
}
|
|
39
|
+
/** Retire une action. */
|
|
40
|
+
unregister(method) {
|
|
41
|
+
this.actions?.delete(method);
|
|
42
|
+
}
|
|
43
|
+
/** Liste des actions exposées (pour annoncer au handshake, découverte côté pair). */
|
|
44
|
+
get methods() {
|
|
45
|
+
return this.actions ? [...this.actions.keys()] : [];
|
|
46
|
+
}
|
|
47
|
+
/** Requête SORTANTE — `Promise` résolue avec le `result` (rejette sur `error`/timeout). */
|
|
48
|
+
request(method, params, timeoutMs = 3e4) {
|
|
49
|
+
return this.startCall(method, params, timeoutMs);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Requête SORTANTE **tracée** — rend `{ result, meta }` au lieu du `result` nu.
|
|
53
|
+
*
|
|
54
|
+
* Même appel que {@link request} : la seule différence est que l'appelant
|
|
55
|
+
* garde la méta serveur (en dev, le `requestId` du profil de la frame → sa
|
|
56
|
+
* radiographie). Un serveur qui n'en émet pas laisse simplement `meta`
|
|
57
|
+
* absent.
|
|
58
|
+
*/
|
|
59
|
+
requestTraced(method, params, timeoutMs = 3e4) {
|
|
60
|
+
return this.startCall(method, params, timeoutMs, true);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Frame d'une notification sortante — **source unique** de sa forme.
|
|
64
|
+
*
|
|
65
|
+
* Extraite pour que le fan-out d'un canal diffusé puisse sérialiser la frame
|
|
66
|
+
* **une seule fois** pour N abonnés, sans jamais risquer de diverger du format
|
|
67
|
+
* qu'émet {@link notify} : les deux voies passent par ici.
|
|
68
|
+
*
|
|
69
|
+
* @param method - nom de la méthode (côté canal : le nom du canal).
|
|
70
|
+
* @param params - charge applicative ; omise de la frame si `undefined`.
|
|
71
|
+
* @returns la frame JSON-RPC 2.0, prête à sérialiser.
|
|
72
|
+
*/
|
|
73
|
+
static buildNotification(method, params) {
|
|
74
|
+
return {
|
|
75
|
+
jsonrpc: "2.0",
|
|
76
|
+
method,
|
|
77
|
+
params
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Notification SORTANTE (pas de réponse attendue).
|
|
82
|
+
*
|
|
83
|
+
* @returns `false` si le transport a signalé qu'il n'a pas émis. Une
|
|
84
|
+
* notification n'attend rien en retour : sans cette valeur, une frame perdue
|
|
85
|
+
* ne laisserait aucune trace chez l'appelant. Les appels qui se rattrapent
|
|
86
|
+
* seuls (ré-abonnement au reconnect) peuvent l'ignorer.
|
|
87
|
+
*/
|
|
88
|
+
notify(method, params) {
|
|
89
|
+
return this.opts.send(JsonRpcPeer.buildNotification(method, params)) !== false;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Ingestion d'une frame ENTRANTE déjà parsée → classe (request/notification/
|
|
93
|
+
* response) et route. Renvoie la nature (utile log/tests). Ne lève jamais.
|
|
94
|
+
* (Le pendant sortant = `request`/`notify` ; le `send` brut est injecté.)
|
|
95
|
+
*/
|
|
96
|
+
receive(msg) {
|
|
97
|
+
if (!msg || typeof msg !== "object" || msg.jsonrpc !== "2.0") {
|
|
98
|
+
this.opts.onFrameAudit?.("invalid", msg, this);
|
|
99
|
+
return "invalid";
|
|
100
|
+
}
|
|
101
|
+
const id = msg.id;
|
|
102
|
+
const hasId = typeof id === "number" || typeof id === "string";
|
|
103
|
+
const rawMethod = msg.method;
|
|
104
|
+
const method = typeof rawMethod === "string" ? rawMethod : void 0;
|
|
105
|
+
const params = msg.params;
|
|
106
|
+
if (method !== void 0) {
|
|
107
|
+
if (this.opts.beforeDispatch && !this.opts.beforeDispatch(msg, this)) {
|
|
108
|
+
this.opts.onFrameAudit?.("denied", msg, this);
|
|
109
|
+
if (hasId) {
|
|
110
|
+
this.opts.send({
|
|
111
|
+
jsonrpc: "2.0",
|
|
112
|
+
id,
|
|
113
|
+
error: {
|
|
114
|
+
code: -32001,
|
|
115
|
+
message: "unauthorized"
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
return "request";
|
|
119
|
+
}
|
|
120
|
+
return "notification";
|
|
121
|
+
}
|
|
122
|
+
if (hasId) {
|
|
123
|
+
this.handleRequest(id, method, params, msg);
|
|
124
|
+
return "request";
|
|
125
|
+
}
|
|
126
|
+
this.opts.onNotification?.(method, params);
|
|
127
|
+
return "notification";
|
|
128
|
+
}
|
|
129
|
+
if (hasId) {
|
|
130
|
+
this.handleResponse(msg);
|
|
131
|
+
return "response";
|
|
132
|
+
}
|
|
133
|
+
this.opts.onFrameAudit?.("invalid", msg, this);
|
|
134
|
+
return "invalid";
|
|
135
|
+
}
|
|
136
|
+
/** Annule tous les pending (fermeture du transport). */
|
|
137
|
+
dispose(reason = "peer disposed") {
|
|
138
|
+
if (!this.pending) return;
|
|
139
|
+
for (const p of this.pending.values()) {
|
|
140
|
+
if (p.timer) clearTimeout(p.timer);
|
|
141
|
+
p.reject(new Error(reason));
|
|
142
|
+
}
|
|
143
|
+
this.pending.clear();
|
|
144
|
+
}
|
|
145
|
+
startCall(method, params, timeoutMs, withMeta) {
|
|
146
|
+
const id = this.nextId++;
|
|
147
|
+
const pending = this.pending ??= /* @__PURE__ */ new Map();
|
|
148
|
+
return new Promise((resolve, reject) => {
|
|
149
|
+
const timer = setTimeout(() => {
|
|
150
|
+
pending.delete(id);
|
|
151
|
+
reject(/* @__PURE__ */ new Error(`RPC timeout: ${method}`));
|
|
152
|
+
}, timeoutMs);
|
|
153
|
+
pending.set(id, {
|
|
154
|
+
resolve: (v) => {
|
|
155
|
+
clearTimeout(timer);
|
|
156
|
+
resolve(v);
|
|
157
|
+
},
|
|
158
|
+
reject: (e) => {
|
|
159
|
+
clearTimeout(timer);
|
|
160
|
+
reject(e);
|
|
161
|
+
},
|
|
162
|
+
timer,
|
|
163
|
+
withMeta
|
|
164
|
+
});
|
|
165
|
+
if (this.opts.send({
|
|
166
|
+
jsonrpc: "2.0",
|
|
167
|
+
id,
|
|
168
|
+
method,
|
|
169
|
+
params
|
|
170
|
+
}) === false) {
|
|
171
|
+
clearTimeout(timer);
|
|
172
|
+
pending.delete(id);
|
|
173
|
+
reject(/* @__PURE__ */ new Error(`RPC non émis (transport indisponible) : ${method}`));
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
handleRequest(id, method, params, rawFrame) {
|
|
178
|
+
const handler = this.actions?.get(method);
|
|
179
|
+
if (!handler) {
|
|
180
|
+
this.opts.onFrameAudit?.("method_not_found", rawFrame, this);
|
|
181
|
+
this.opts.send({
|
|
182
|
+
jsonrpc: "2.0",
|
|
183
|
+
id,
|
|
184
|
+
error: {
|
|
185
|
+
code: -32601,
|
|
186
|
+
message: `method not found: ${method}`
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
Promise.resolve().then(() => handler(params)).then((result) => {
|
|
192
|
+
if (result instanceof RpcEnvelope) {
|
|
193
|
+
this.opts.send({
|
|
194
|
+
jsonrpc: "2.0",
|
|
195
|
+
id,
|
|
196
|
+
result: result.result,
|
|
197
|
+
meta: result.meta
|
|
198
|
+
});
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
this.opts.send({
|
|
202
|
+
jsonrpc: "2.0",
|
|
203
|
+
id,
|
|
204
|
+
result
|
|
205
|
+
});
|
|
206
|
+
}, (err) => {
|
|
207
|
+
if (err instanceof RpcError) {
|
|
208
|
+
const error = {
|
|
209
|
+
code: err.code,
|
|
210
|
+
message: err.message
|
|
211
|
+
};
|
|
212
|
+
if (err.data !== void 0) error.data = err.data;
|
|
213
|
+
this.opts.send({
|
|
214
|
+
jsonrpc: "2.0",
|
|
215
|
+
id,
|
|
216
|
+
error
|
|
217
|
+
});
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
this.opts.onError?.(`rpc ${method}`, err);
|
|
221
|
+
this.opts.onFrameAudit?.("internal_error", rawFrame, this);
|
|
222
|
+
this.opts.send({
|
|
223
|
+
jsonrpc: "2.0",
|
|
224
|
+
id,
|
|
225
|
+
error: {
|
|
226
|
+
code: -32603,
|
|
227
|
+
message: "internal error"
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
handleResponse(msg) {
|
|
233
|
+
if (typeof msg.id !== "number" || !this.pending) return;
|
|
234
|
+
const pending = this.pending.get(msg.id);
|
|
235
|
+
if (!pending) return;
|
|
236
|
+
if (msg.error) {
|
|
237
|
+
this.pending.delete(msg.id);
|
|
238
|
+
pending.reject(new RpcError(msg.error.message, msg.error.code, msg.error.data));
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
if ("result" in msg) {
|
|
242
|
+
this.pending.delete(msg.id);
|
|
243
|
+
pending.resolve(pending.withMeta ? {
|
|
244
|
+
result: msg.result,
|
|
245
|
+
meta: msg.meta
|
|
246
|
+
} : msg.result);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
};
|
|
250
|
+
//#endregion
|
|
251
|
+
export { JsonRpcPeer, JsonRpcPeer as default, RpcEnvelope, RpcError };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/realtime/RealtimeEventMap.ts
|
|
2
|
+
/**
|
|
3
|
+
* Assertion type **compile-time** : `expectType<T>(value)` échoue à la compilation
|
|
4
|
+
* si `value` n'est pas assignable à `T`. **0 coût runtime** (fonction vide).
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* const x = peer.request("chat:ping");
|
|
9
|
+
* expectType<Promise<{ pong: boolean }>>(x); // ✅
|
|
10
|
+
* expectType<Promise<string>>(x); // ❌ TS error
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
function expectType(_value) {}
|
|
14
|
+
//#endregion
|
|
15
|
+
export { expectType };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
//#region src/realtime/channelRate.ts
|
|
2
|
+
/**
|
|
3
|
+
* Construit le nom d'un canal cadencé à partir de sa base et de la cadence demandée.
|
|
4
|
+
*
|
|
5
|
+
* `intervalMs` omis OU égal à `defaultMs` → renvoie `base` nu : on **n'émet pas** de suffixe
|
|
6
|
+
* pour la cadence par défaut, ce qui évite de fragmenter le canal de base entre consommateurs
|
|
7
|
+
* qui veulent tous la valeur par défaut (ils partagent alors un seul ticker ref-compté).
|
|
8
|
+
*
|
|
9
|
+
* @param base - canal de base (ex. `"nodefony:orm:health"`).
|
|
10
|
+
* @param intervalMs - cadence demandée (ms). Omise → canal de base.
|
|
11
|
+
* @param defaultMs - cadence par défaut du canal ; `intervalMs === defaultMs` ⇒ canal de base.
|
|
12
|
+
* @returns `base` ou `base:<ms>`.
|
|
13
|
+
*/
|
|
14
|
+
function rateChannel(base, intervalMs, defaultMs) {
|
|
15
|
+
if (intervalMs == null || intervalMs === defaultMs) return base;
|
|
16
|
+
return `${base}:${intervalMs}`;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Résout la cadence (ms) d'un canal cadencé connu, côté serveur. Le serveur connaît la `base`
|
|
20
|
+
* qu'il vient de matcher ; ce helper en extrait le suffixe `:<ms>`, **borne** dans `bounds` et
|
|
21
|
+
* retombe sur `bounds.default` pour le canal de base nu ou un suffixe invalide.
|
|
22
|
+
*
|
|
23
|
+
* @param channel - canal reçu (`base` ou `base:<ms>`).
|
|
24
|
+
* @param base - canal de base déjà identifié par l'appelant.
|
|
25
|
+
* @param bounds - cadence par défaut + bornes min/max.
|
|
26
|
+
* @returns cadence effective (ms), garantie dans `[bounds.min, bounds.max]` (ou `bounds.default`).
|
|
27
|
+
*/
|
|
28
|
+
function parseRate(channel, base, bounds) {
|
|
29
|
+
if (channel === base) return bounds.default;
|
|
30
|
+
const raw = Number.parseInt(channel.slice(base.length + 1), 10);
|
|
31
|
+
if (!Number.isFinite(raw) || raw <= 0) return bounds.default;
|
|
32
|
+
return Math.min(bounds.max, Math.max(bounds.min, raw));
|
|
33
|
+
}
|
|
34
|
+
/** Vrai si `channel` est le canal de base nu OU une de ses variantes cadencées `base:<ms>`. */
|
|
35
|
+
function isRateChannel(channel, base) {
|
|
36
|
+
return channel === base || channel.startsWith(`${base}:`);
|
|
37
|
+
}
|
|
38
|
+
//#endregion
|
|
39
|
+
export { isRateChannel, parseRate, rateChannel };
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
//#region src/realtime/platformChannels.ts
|
|
2
|
+
/**
|
|
3
|
+
* platformChannels — **espace de nommage des surfaces temps réel de la plateforme**,
|
|
4
|
+
* partagé par les deux bords de la socket (serveur et navigateur).
|
|
5
|
+
*
|
|
6
|
+
* Tout ce que Nodefony expose sur la socket pour parler **de lui-même** (journaux,
|
|
7
|
+
* santé de la base, métriques du process, supervision du cluster, journal d'audit,
|
|
8
|
+
* contrôle du pod) porte le préfixe {@link NODEFONY_CHANNEL_NAMESPACE}. Ce que
|
|
9
|
+
* l'application expose pour parler de **son métier** ne le porte pas.
|
|
10
|
+
*
|
|
11
|
+
* C'est la même convention que les routes d'administration (`/nodefony/<module>/api/*`) :
|
|
12
|
+
* une seule marque, des deux côtés du transport. Avant, chaque sonde apportait son
|
|
13
|
+
* propre namespace (`syslog:`, `orm:`, `dashboard:`, `node:`…) — neuf territoires pour
|
|
14
|
+
* une douzaine de canaux, dont un (`node:`) qui percutait le préfixe d'import des
|
|
15
|
+
* modules natifs Node et polluait tout audit.
|
|
16
|
+
*
|
|
17
|
+
* **La table est la source unique** : personne n'écrit un nom de canal de plateforme en
|
|
18
|
+
* clair, ni côté serveur (producteurs) ni côté navigateur (consommateurs). Une chaîne
|
|
19
|
+
* recopiée dans un écran est une chaîne qui survivra au renommage suivant.
|
|
20
|
+
*
|
|
21
|
+
* Pur et isomorphe (aucun import, aucune allocation) : chargé aussi bien dans le bundle
|
|
22
|
+
* navigateur que dans le pod.
|
|
23
|
+
*
|
|
24
|
+
* @see {@link rateChannel} — le suffixe de cadence (`base:<ms>`) se compose PAR-DESSUS
|
|
25
|
+
* ces bases ; ajouter un segment au préfixe ne le perturbe pas.
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* Marque des surfaces de plateforme sur la socket. Un canal qui commence par ce préfixe
|
|
29
|
+
* décrit le serveur, jamais le métier de l'application.
|
|
30
|
+
*
|
|
31
|
+
* Conséquence côté sécurité : ces canaux ont un **plancher irréductible**
|
|
32
|
+
* (authentification exigée, et sans module de sécurité ils sont purement fermés aux
|
|
33
|
+
* connexions clientes). Une application ne peut pas se les approprier par accident —
|
|
34
|
+
* c'est tout l'intérêt d'une marque en toutes lettres plutôt que d'un mot courant.
|
|
35
|
+
*/
|
|
36
|
+
const NODEFONY_CHANNEL_NAMESPACE = "nodefony:";
|
|
37
|
+
/**
|
|
38
|
+
* Canaux de **diffusion** de la plateforme (le serveur pousse, les écrans regardent).
|
|
39
|
+
*
|
|
40
|
+
* Les valeurs sont des **bases** : trois d'entre elles se déclinent par cible
|
|
41
|
+
* (`…@<pid>` pour un forage sur un process, `…@<id>` pour un job) et toutes acceptent
|
|
42
|
+
* le suffixe de cadence `:<ms>` (cf {@link rateChannel}). Composer, jamais concaténer
|
|
43
|
+
* un préfixe à la main.
|
|
44
|
+
*/
|
|
45
|
+
const PLATFORM_CHANNELS = {
|
|
46
|
+
/** Journaux du pod (flux de `Pdu`, coalescé par le pont syslog). */
|
|
47
|
+
syslog: "nodefony:syslog",
|
|
48
|
+
/** Journal d'audit sécurité — plancher super-admin, un cran au-dessus des autres. */
|
|
49
|
+
audit: "nodefony:audit",
|
|
50
|
+
/** Métriques agrégées du tableau de bord (vue d'ensemble). */
|
|
51
|
+
dashboard: "nodefony:dashboard",
|
|
52
|
+
/** Supervision des process du cluster ; forage par process : `…@<pid>`. */
|
|
53
|
+
supervision: "nodefony:supervision",
|
|
54
|
+
/** Sondes de la barre de debug (mêmes mesures que la supervision, ticker séparé). */
|
|
55
|
+
debugbar: "nodefony:debugbar",
|
|
56
|
+
/** Auto-observabilité de la socket elle-même (canaux, abonnés, fan-out, backpressure). */
|
|
57
|
+
socket: "nodefony:socket",
|
|
58
|
+
/** Santé des connecteurs de base (état, ping). */
|
|
59
|
+
ormHealth: "nodefony:orm:health",
|
|
60
|
+
/** Flux ORM (débit de requêtes, latence, requêtes lentes) — plus dynamique que la santé. */
|
|
61
|
+
ormFlow: "nodefony:orm:flow",
|
|
62
|
+
/** Forage détaillé d'un connecteur sur un process donné : `…@<pid>`. */
|
|
63
|
+
ormRich: "nodefony:orm:rich",
|
|
64
|
+
/** Sortie d'un job de génération de code : `…@<jobId>` (développement uniquement). */
|
|
65
|
+
scaffoldJob: "nodefony:scaffold:job"
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Canaux **MONTANTS** de la plateforme (le navigateur pousse, le pod reçoit).
|
|
69
|
+
*
|
|
70
|
+
* Ils vivent dans une table à part parce qu'ils sont l'inverse de
|
|
71
|
+
* {@link PLATFORM_CHANNELS} : là un écran regarde, ici un écran ÉCRIT. Les mélanger
|
|
72
|
+
* ferait passer une surface d'écriture pour une surface de lecture au premier coup
|
|
73
|
+
* d'œil — et c'est précisément la distinction qui décide des bornes à poser.
|
|
74
|
+
*
|
|
75
|
+
* Ils portent la même marque `nodefony:`, donc le même **plancher irréductible**
|
|
76
|
+
* (authentification exigée ; sans module de sécurité, fermés aux connexions
|
|
77
|
+
* clientes). C'est le défaut voulu : un journal d'exploitation ouvert en écriture
|
|
78
|
+
* anonyme se noie et se falsifie. Une application qui veut capter les erreurs de
|
|
79
|
+
* visiteurs non authentifiés le déclare explicitement, et hérite des bornes.
|
|
80
|
+
*/
|
|
81
|
+
const PLATFORM_INBOUND = {
|
|
82
|
+
/** Journaux du navigateur remontés vers le `Syslog` du pod (lots de `Pdu`). */
|
|
83
|
+
syslogUplink: "nodefony:syslog:uplink" };
|
|
84
|
+
/**
|
|
85
|
+
* Méthodes **RPC** de la plateforme (le client demande, le serveur répond).
|
|
86
|
+
*
|
|
87
|
+
* Elles portent la même marque que les canaux pour la même raison : ce sont des
|
|
88
|
+
* surfaces du serveur, pas de l'application. `nodefony:kernel:gc` déclenche un cycle
|
|
89
|
+
* de ramasse-miettes bloquant — un nom aussi lourd de conséquences n'a rien à faire
|
|
90
|
+
* dans l'espace de nommage où une application déclare ses propres actions.
|
|
91
|
+
*
|
|
92
|
+
* ⚠️ À ne pas confondre avec les **notifications du protocole** (`realtime:welcome`,
|
|
93
|
+
* `realtime:denied`) : celles-là décrivent la mécanique de la socket elle-même, pas
|
|
94
|
+
* une surface de la plateforme, et ne sont ni des canaux ni des actions.
|
|
95
|
+
*/
|
|
96
|
+
const PLATFORM_METHODS = {
|
|
97
|
+
/** Liveness + mesure du temps d'aller-retour. */
|
|
98
|
+
ping: "nodefony:kernel:ping",
|
|
99
|
+
/** Force un cycle GC (seulement si le pod tourne avec `--expose-gc`). */
|
|
100
|
+
gc: "nodefony:kernel:gc",
|
|
101
|
+
/** Ce qu'un scaffold écrirait — fichiers créés, diff des réécritures — sans rien écrire. */
|
|
102
|
+
scaffoldPreview: "nodefony:scaffold:preview",
|
|
103
|
+
/** Démarre un job de génération de code et rend son identifiant. */
|
|
104
|
+
scaffoldRun: "nodefony:scaffold:run",
|
|
105
|
+
/** Demande l'arrêt d'un job de génération en cours. */
|
|
106
|
+
scaffoldCancel: "nodefony:scaffold:cancel"
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Événements **DOM** de la plateforme (`window`), dans le même espace de nommage.
|
|
110
|
+
*
|
|
111
|
+
* Ils ne passent pas par la socket — ce sont des `CustomEvent` que le navigateur
|
|
112
|
+
* fait circuler entre la barre de debug, le pont HMR et l'écran qui les écoute.
|
|
113
|
+
* Ils portent la marque pour la même raison que les canaux : `window` est un
|
|
114
|
+
* espace partagé avec l'application, et un nom d'événement générique s'y
|
|
115
|
+
* télescoperait.
|
|
116
|
+
*/
|
|
117
|
+
const PLATFORM_EVENTS = {
|
|
118
|
+
/** Un hot-update Vite vient d'être appliqué (émis par le pont du template). */
|
|
119
|
+
hmr: "nodefony:hmr",
|
|
120
|
+
/** L'utilisateur a choisi une entrée dans la barre de debug. */
|
|
121
|
+
debugbarSelect: "nodefony:debugbar:select"
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* `s` commence-t-il par `prefix`, **insensible à la casse** et sans allocation ?
|
|
125
|
+
*
|
|
126
|
+
* La casse doit être neutralisée : sinon `NODEFONY:syslog` échapperait au plancher que
|
|
127
|
+
* `nodefony:syslog` subit — un contournement à un `toUpperCase()` près. Comparaison
|
|
128
|
+
* caractère par caractère plutôt que `toLowerCase()` : ce test est sur le chemin
|
|
129
|
+
* d'abonnement, on n'y alloue pas de chaîne.
|
|
130
|
+
*/
|
|
131
|
+
function startsWithCI(s, prefix) {
|
|
132
|
+
if (s.length < prefix.length) return false;
|
|
133
|
+
for (let i = 0; i < prefix.length; i += 1) {
|
|
134
|
+
let a = s.charCodeAt(i);
|
|
135
|
+
if (a >= 65 && a <= 90) a += 32;
|
|
136
|
+
let b = prefix.charCodeAt(i);
|
|
137
|
+
if (b >= 65 && b <= 90) b += 32;
|
|
138
|
+
if (a !== b) return false;
|
|
139
|
+
}
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Le nom désigne-t-il une surface de la plateforme (canal OU méthode) ?
|
|
144
|
+
*
|
|
145
|
+
* Un seul `startsWith` insensible à la casse, là où il fallait auparavant parcourir
|
|
146
|
+
* neuf préfixes à chaque abonnement.
|
|
147
|
+
*
|
|
148
|
+
* @param name - nom du canal demandé (suffixes de cadence/forage inclus) ou de la
|
|
149
|
+
* méthode RPC appelée.
|
|
150
|
+
*/
|
|
151
|
+
function isPlatformChannel(name) {
|
|
152
|
+
return startsWithCI(name, NODEFONY_CHANNEL_NAMESPACE);
|
|
153
|
+
}
|
|
154
|
+
//#endregion
|
|
155
|
+
export { NODEFONY_CHANNEL_NAMESPACE, PLATFORM_CHANNELS, PLATFORM_EVENTS, PLATFORM_INBOUND, PLATFORM_METHODS, isPlatformChannel, startsWithCI };
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
//#region src/runtime/GcScheduler.ts
|
|
2
|
+
const DEFAULT_INITIAL_DELAY_MS = 3e4;
|
|
3
|
+
const DEFAULT_JITTER_CAP_MS = 6e4;
|
|
4
|
+
/**
|
|
5
|
+
* Timer de maintenance déterministe, jittéré et désarmable. Voir la doc du
|
|
6
|
+
* module pour le rationnel complet.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* const gc = new GcScheduler({
|
|
11
|
+
* intervalS: config.gcIntervalS,
|
|
12
|
+
* jitter: config.gcJitter,
|
|
13
|
+
* run: () => store.gc(),
|
|
14
|
+
* onError: (e) => this.log(e, "WARNING"),
|
|
15
|
+
* });
|
|
16
|
+
* gc.start(); // au boot / onReady
|
|
17
|
+
* // …
|
|
18
|
+
* gc.stop(); // au onTerminate
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
var GcScheduler = class {
|
|
22
|
+
/** Timer du délai initial (jittéré) — `null` tant que non armé / après tir. */
|
|
23
|
+
#start = null;
|
|
24
|
+
/** Timer récurrent — `null` tant que la 1ʳᵉ passe n'a pas eu lieu / après stop. */
|
|
25
|
+
#timer = null;
|
|
26
|
+
/** Garde-fou anti-empilement : `true` pendant qu'une passe court. */
|
|
27
|
+
#running = false;
|
|
28
|
+
#opts;
|
|
29
|
+
constructor(opts) {
|
|
30
|
+
this.#opts = opts;
|
|
31
|
+
}
|
|
32
|
+
/** `true` si l'ordonnanceur est armé (délai initial en cours OU timer récurrent). */
|
|
33
|
+
get armed() {
|
|
34
|
+
return this.#start !== null || this.#timer !== null;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Arme l'ordonnanceur. Idempotent (no-op si déjà armé). Retourne `false` si
|
|
38
|
+
* `intervalS ≤ 0` (désarmé volontaire — délégation cron / TTL natif), `true`
|
|
39
|
+
* si un timer a été posé. Premier balayage après `initialDelayMs (+ jitter)`,
|
|
40
|
+
* puis tous les `intervalS`.
|
|
41
|
+
*/
|
|
42
|
+
start() {
|
|
43
|
+
if (this.armed) return true;
|
|
44
|
+
const intervalS = this.#opts.intervalS;
|
|
45
|
+
if (!Number.isFinite(intervalS) || intervalS <= 0) return false;
|
|
46
|
+
const base = intervalS * 1e3;
|
|
47
|
+
const cap = this.#opts.jitterCapMs ?? DEFAULT_JITTER_CAP_MS;
|
|
48
|
+
const initial = this.#opts.initialDelayMs ?? DEFAULT_INITIAL_DELAY_MS;
|
|
49
|
+
const phase = this.#opts.jitter === false ? 0 : Math.floor(Math.random() * Math.min(base, cap));
|
|
50
|
+
const start = setTimeout(() => {
|
|
51
|
+
this.#start = null;
|
|
52
|
+
this.runNow();
|
|
53
|
+
const timer = setInterval(() => void this.runNow(), base);
|
|
54
|
+
timer.unref?.();
|
|
55
|
+
this.#timer = timer;
|
|
56
|
+
}, initial + phase);
|
|
57
|
+
start.unref?.();
|
|
58
|
+
this.#start = start;
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Exécute une passe **immédiatement** — point d'entrée public (le timer
|
|
63
|
+
* l'appelle ; un worker cron / une commande batch peut l'appeler à sa place).
|
|
64
|
+
* Anti-empilement : ignore l'appel si une passe court déjà. **Ne lève jamais**
|
|
65
|
+
* — une erreur va à `onError`, pour ne pas tuer le déclencheur (retry au tick
|
|
66
|
+
* suivant).
|
|
67
|
+
*/
|
|
68
|
+
async runNow() {
|
|
69
|
+
if (this.#running) return;
|
|
70
|
+
this.#running = true;
|
|
71
|
+
try {
|
|
72
|
+
await this.#opts.run();
|
|
73
|
+
} catch (error) {
|
|
74
|
+
this.#opts.onError?.(error);
|
|
75
|
+
} finally {
|
|
76
|
+
this.#running = false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/** Désarme les timers (idempotent) — à appeler au shutdown. */
|
|
80
|
+
stop() {
|
|
81
|
+
if (this.#start) {
|
|
82
|
+
clearTimeout(this.#start);
|
|
83
|
+
this.#start = null;
|
|
84
|
+
}
|
|
85
|
+
if (this.#timer) {
|
|
86
|
+
clearInterval(this.#timer);
|
|
87
|
+
this.#timer = null;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
//#endregion
|
|
92
|
+
export { GcScheduler };
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
+
//#region src/runtime/RequestContext.ts
|
|
3
|
+
/**
|
|
4
|
+
* AsyncLocalStorage facade — single shared instance per process. Lazily
|
|
5
|
+
* constructed so importing this module has zero cost if `run()` is never
|
|
6
|
+
* called (the ALS allocation is the only cost).
|
|
7
|
+
*
|
|
8
|
+
* Perf : `als.run` adds ~50-100 ns per request on Node 22+. `.getStore()`
|
|
9
|
+
* is a hot-path read — keep it cheap.
|
|
10
|
+
*/
|
|
11
|
+
var RequestContext = class {
|
|
12
|
+
static _als = null;
|
|
13
|
+
static get als() {
|
|
14
|
+
if (this._als === null) this._als = new AsyncLocalStorage();
|
|
15
|
+
return this._als;
|
|
16
|
+
}
|
|
17
|
+
/** Enter a new request scope. All `await`s inside `fn` see the payload. */
|
|
18
|
+
static run(payload, fn) {
|
|
19
|
+
return this.als.run(payload, fn);
|
|
20
|
+
}
|
|
21
|
+
/** Returns the current payload, or `undefined` outside any request scope. */
|
|
22
|
+
static get() {
|
|
23
|
+
if (this._als === null) return void 0;
|
|
24
|
+
return this._als.getStore();
|
|
25
|
+
}
|
|
26
|
+
/** Shortcut — returns the current requestId or `undefined`. */
|
|
27
|
+
static getRequestId() {
|
|
28
|
+
return this.get()?.requestId;
|
|
29
|
+
}
|
|
30
|
+
/** Shortcut — returns the current authenticated user (P6) or `undefined`. */
|
|
31
|
+
static getUser() {
|
|
32
|
+
return this.get()?.user;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Shortcut — returns the current transport context (V4.1) or `undefined`.
|
|
36
|
+
* Générique car le core ne connaît pas les types de `@nodefony/http` :
|
|
37
|
+
* `RequestContext.getContext<ContextType>()` côté framework.
|
|
38
|
+
*/
|
|
39
|
+
static getContext() {
|
|
40
|
+
return this.get()?.context;
|
|
41
|
+
}
|
|
42
|
+
/** Shortcut — returns the current userId (P6) or `undefined`. */
|
|
43
|
+
static getUserId() {
|
|
44
|
+
return this.get()?.userId;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Mutate the current payload in place. No-op outside a scope.
|
|
48
|
+
* Used by security after login to inject `user`/`userId` without re-running.
|
|
49
|
+
*/
|
|
50
|
+
static set(key, value) {
|
|
51
|
+
const store = this.get();
|
|
52
|
+
if (store) store[key] = value;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* `true` si un buffer de profiling de requêtes ORM est actif sur le scope
|
|
56
|
+
* courant (dev + `HttpKernel` profiler activé). Les adapters ORM lisent ce
|
|
57
|
+
* flag AVANT de mesurer (`performance.now()`) pour rester gratuits en prod.
|
|
58
|
+
*
|
|
59
|
+
* @returns `true` si `pushQuery` aura un effet, `false` sinon.
|
|
60
|
+
*/
|
|
61
|
+
static isProfiling() {
|
|
62
|
+
return this.get()?.queries !== void 0;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Pousse une requête ORM dans le buffer de profiling du scope courant.
|
|
66
|
+
* No-op hors scope ou hors dev (buffer absent) → coût nul en prod.
|
|
67
|
+
*
|
|
68
|
+
* @param query - requête capturée (sql, durée, lignes, connecteur).
|
|
69
|
+
*/
|
|
70
|
+
static pushQuery(query) {
|
|
71
|
+
const buf = this.get()?.queries;
|
|
72
|
+
if (buf) buf.push(query);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
//#endregion
|
|
76
|
+
export { RequestContext as default };
|