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,170 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/** Nature coercée d'une variable d'env du catalogue. */
|
|
3
|
+
export type EnvVarKind = "string" | "number" | "boolean" | "enum";
|
|
4
|
+
/**
|
|
5
|
+
* Métadonnées INTROSPECTABLES d'une variable du catalogue — capturées à la
|
|
6
|
+
* déclaration (le défaut serait sinon piégé dans la closure `z.preprocess`).
|
|
7
|
+
* Portées par le schéma Zod (clé non-énumérable) puis agrégées par `defineEnv`
|
|
8
|
+
* sur l'objet `env` retourné → alimentent la génération de `.env.example`.
|
|
9
|
+
*/
|
|
10
|
+
export interface EnvVarMeta {
|
|
11
|
+
/** Nature coercée (`string`/`number`/`boolean`/`enum`). */
|
|
12
|
+
readonly kind: EnvVarKind;
|
|
13
|
+
/** La variable peut-elle être absente (→ `undefined`) ? */
|
|
14
|
+
readonly optional: boolean;
|
|
15
|
+
/** Valeur par défaut déclarée (`undefined` si aucune). */
|
|
16
|
+
readonly default?: unknown;
|
|
17
|
+
/** Doc (`.describe()`), reprise telle quelle dans `.env.example`. */
|
|
18
|
+
readonly description?: string;
|
|
19
|
+
/** Valeurs autorisées (enum uniquement). */
|
|
20
|
+
readonly values?: readonly string[];
|
|
21
|
+
/**
|
|
22
|
+
* Environnements où la variable est REQUISE, même déclarée `optional`.
|
|
23
|
+
*
|
|
24
|
+
* Une variable requise « en production seulement » n'existait pas dans cette
|
|
25
|
+
* grammaire : on la déclarait `optional` — vrai sur le poste de développement,
|
|
26
|
+
* faux là où ça compte — et rien ne le disait avant le déploiement. Le cas
|
|
27
|
+
* n'est pas théorique : les secrets absents sont GÉNÉRÉS à la volée en
|
|
28
|
+
* développement, si bien qu'un secret éphémère en cluster fait refuser par un
|
|
29
|
+
* pod le jeton qu'un autre vient d'émettre, sans le moindre message.
|
|
30
|
+
*
|
|
31
|
+
* Les noms sont libres (`"production"`, `"staging"`, un environnement maison) :
|
|
32
|
+
* ils se comparent aux étiquettes de l'environnement courant, cf
|
|
33
|
+
* {@link resolveEnvStages}.
|
|
34
|
+
*/
|
|
35
|
+
readonly requiredIn?: readonly string[];
|
|
36
|
+
}
|
|
37
|
+
/** {@link EnvVarMeta} + le nom de la variable (clé du catalogue). */
|
|
38
|
+
export interface NamedEnvVarMeta extends EnvVarMeta {
|
|
39
|
+
readonly name: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Catalogue introspectable des variables déclarées par {@link defineEnv}, lu sur
|
|
43
|
+
* l'objet `env` retourné. Source unique pour générer `.env.example` (anti-dérive).
|
|
44
|
+
*
|
|
45
|
+
* @param env - l'objet retourné par `defineEnv` (catalogue de l'app).
|
|
46
|
+
* @returns la liste ordonnée des métadonnées par variable (vide si non reconnu).
|
|
47
|
+
*/
|
|
48
|
+
export declare function getEnvCatalog(env: unknown): readonly NamedEnvVarMeta[];
|
|
49
|
+
interface BaseOpts {
|
|
50
|
+
/** Doc de la variable (attachée via `.describe()` → introspection Studio). */
|
|
51
|
+
description?: string;
|
|
52
|
+
/**
|
|
53
|
+
* Environnements où la variable devient REQUISE (`["production"]`).
|
|
54
|
+
*
|
|
55
|
+
* Elle reste `optional` partout ailleurs : le poste de développement démarre
|
|
56
|
+
* sans elle, le déploiement visé refuse de démarrer sans elle, et
|
|
57
|
+
* `nodefony doctor --env production` la nomme avant qu'on y aille.
|
|
58
|
+
*/
|
|
59
|
+
requiredIn?: readonly string[];
|
|
60
|
+
}
|
|
61
|
+
interface StrOpts extends BaseOpts {
|
|
62
|
+
/** Valeur par défaut si la variable est absente. */
|
|
63
|
+
default?: string;
|
|
64
|
+
/** Autorise l'absence (résultat `undefined`) — sinon variable requise. */
|
|
65
|
+
optional?: boolean;
|
|
66
|
+
}
|
|
67
|
+
interface NumOpts extends BaseOpts {
|
|
68
|
+
default?: number;
|
|
69
|
+
optional?: boolean;
|
|
70
|
+
}
|
|
71
|
+
interface BoolOpts extends BaseOpts {
|
|
72
|
+
/** Valeur par défaut si absente (défaut : `false`). */
|
|
73
|
+
default?: boolean;
|
|
74
|
+
}
|
|
75
|
+
interface EnumOpts<T extends string> extends BaseOpts {
|
|
76
|
+
default?: T;
|
|
77
|
+
optional?: boolean;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Variable d'env STRING. Avec `default` → toujours présente ; `optional:true` →
|
|
81
|
+
* `string | undefined` ; sinon requise (absente → erreur au boot).
|
|
82
|
+
*/
|
|
83
|
+
export declare function envString(opts: StrOpts & {
|
|
84
|
+
optional: true;
|
|
85
|
+
}): z.ZodType<string | undefined>;
|
|
86
|
+
export declare function envString(opts?: StrOpts): z.ZodType<string>;
|
|
87
|
+
/**
|
|
88
|
+
* Variable d'env NUMBER (coercée). Valeur non numérique → erreur au boot.
|
|
89
|
+
*/
|
|
90
|
+
export declare function envNumber(opts: NumOpts & {
|
|
91
|
+
optional: true;
|
|
92
|
+
}): z.ZodType<number | undefined>;
|
|
93
|
+
export declare function envNumber(opts?: NumOpts): z.ZodType<number>;
|
|
94
|
+
/**
|
|
95
|
+
* Variable d'env BOOLEAN 12-factor : `1/true/yes/on` → true, `0/false/no/off` →
|
|
96
|
+
* false (insensible à la casse). Absente → `default` (défaut `false`). Valeur hors
|
|
97
|
+
* de ces ensembles → erreur au boot (typo détectée, ex. `tru`).
|
|
98
|
+
*/
|
|
99
|
+
export declare function envBoolean(opts?: BoolOpts): z.ZodType<boolean>;
|
|
100
|
+
/**
|
|
101
|
+
* Variable d'env ENUM (ensemble fermé). Valeur hors liste → erreur au boot.
|
|
102
|
+
* Le type littéral est préservé (`env.X` typé sur l'union exacte).
|
|
103
|
+
*/
|
|
104
|
+
export declare function envEnum<T extends readonly [string, ...string[]]>(values: T, opts: EnumOpts<T[number]> & {
|
|
105
|
+
optional: true;
|
|
106
|
+
}): z.ZodType<T[number] | undefined>;
|
|
107
|
+
export declare function envEnum<T extends readonly [string, ...string[]]>(values: T, opts?: EnumOpts<T[number]>): z.ZodType<T[number]>;
|
|
108
|
+
/**
|
|
109
|
+
* Les ÉTIQUETTES de l'environnement décrit par une source de variables.
|
|
110
|
+
*
|
|
111
|
+
* Deux notions cohabitent et ne se confondent pas : le MODE d'exécution
|
|
112
|
+
* (`NODE_ENV`, que Node et les outils lisent) et l'environnement de DÉPLOIEMENT
|
|
113
|
+
* (`NF_ENV`, ou l'alias de plateforme `APP_ENV`), qui distingue une préproduction
|
|
114
|
+
* d'une production alors que les deux tournent en `production`. Une variable
|
|
115
|
+
* requise « en preprod » doit donc pouvoir viser l'un ou l'autre — on rend les
|
|
116
|
+
* DEUX étiquettes plutôt que d'en élire une, et `requiredIn` mord si l'une
|
|
117
|
+
* d'elles correspond.
|
|
118
|
+
*
|
|
119
|
+
* Fonction PURE : la source est injectée, jamais `process.env` lu ici — c'est ce
|
|
120
|
+
* qui la rend éprouvable ailleurs que dans l'environnement où elle tourne.
|
|
121
|
+
*
|
|
122
|
+
* @param source - la source de variables (`process.env`, ou une source de test).
|
|
123
|
+
* @returns les étiquettes, sans doublon (`["production"]`, `["production", "preprod"]`).
|
|
124
|
+
*/
|
|
125
|
+
export declare function resolveEnvStages(source: Record<string, string | undefined>): readonly string[];
|
|
126
|
+
/**
|
|
127
|
+
* `true` si la variable est REQUISE dans l'environnement décrit par `stages`.
|
|
128
|
+
*
|
|
129
|
+
* Le « ou » est volontaire : une variable sans défaut et non optionnelle est
|
|
130
|
+
* requise PARTOUT (grammaire d'origine) ; `requiredIn` n'ajoute une exigence
|
|
131
|
+
* que là où elle est nommée.
|
|
132
|
+
*
|
|
133
|
+
* 🔴 Une seule implémentation, et c'est tout l'enjeu du ticket : le boot
|
|
134
|
+
* (`defineEnv`), le rapport (`nodefony env`) et le diagnostic (`nodefony doctor
|
|
135
|
+
* --env production`) lisent CETTE fonction. Deux copies de la règle
|
|
136
|
+
* divergeraient au premier cas particulier, chacune en passant ses propres
|
|
137
|
+
* tests — le défaut que ce dépôt a déjà payé plusieurs fois.
|
|
138
|
+
*
|
|
139
|
+
* @param meta - les métadonnées de la variable.
|
|
140
|
+
* @param stages - les étiquettes de l'environnement visé (cf {@link resolveEnvStages}).
|
|
141
|
+
* @returns `true` si son absence doit être signalée dans cet environnement.
|
|
142
|
+
*/
|
|
143
|
+
export declare function isEnvVarRequired(meta: Pick<EnvVarMeta, "optional" | "default" | "requiredIn">, stages: readonly string[]): boolean;
|
|
144
|
+
/**
|
|
145
|
+
* L'exigence qui vient de `requiredIn` SEULE — sans la règle d'origine.
|
|
146
|
+
*
|
|
147
|
+
* Séparée parce que les deux exigences ne se rapportent pas de la même façon :
|
|
148
|
+
* une variable requise partout absente est déjà rejetée par le schéma, avec le
|
|
149
|
+
* bon message ; une variable requise par l'ENVIRONNEMENT mérite le sien, qui
|
|
150
|
+
* nomme cet environnement. Les confondre ferait dire « requise en production »
|
|
151
|
+
* d'une variable qui l'était de toute façon.
|
|
152
|
+
*
|
|
153
|
+
* @param meta - les métadonnées de la variable.
|
|
154
|
+
* @param stages - les étiquettes de l'environnement visé.
|
|
155
|
+
* @returns `true` si l'exigence vient de l'environnement.
|
|
156
|
+
*/
|
|
157
|
+
export declare function isRequiredByStage(meta: Pick<EnvVarMeta, "requiredIn">, stages: readonly string[]): boolean;
|
|
158
|
+
/**
|
|
159
|
+
* Lit + valide un catalogue de variables d'environnement, une fois, au boot.
|
|
160
|
+
*
|
|
161
|
+
* @typeParam M - map `{ NOM_VAR: <helper env> }`.
|
|
162
|
+
* @param catalog - déclaration des variables (clé = nom de la variable d'env).
|
|
163
|
+
* @param source - source des valeurs (défaut `process.env` ; injectable pour les tests).
|
|
164
|
+
* @returns objet **figé** + typé : `{ [NOM]: valeur coercée }`.
|
|
165
|
+
* @throws Error (message agrégé nommant chaque variable fautive) si invalide.
|
|
166
|
+
*/
|
|
167
|
+
export declare function defineEnv<M extends Record<string, z.ZodTypeAny>>(catalog: M, source?: Record<string, string | undefined>): {
|
|
168
|
+
readonly [K in keyof M]: z.infer<M[K]>;
|
|
169
|
+
};
|
|
170
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Générateur de `.env.example` depuis le catalogue introspectable `defineEnv`
|
|
3
|
+
* (ADR-0006 — une seule source de vérité). Pur : prend les métadonnées
|
|
4
|
+
* ({@link NamedEnvVarMeta} via `getEnvCatalog`) et rend le modèle d'onboarding —
|
|
5
|
+
* toutes les variables COMMENTÉES (un `.example` ne pose rien, il documente).
|
|
6
|
+
*
|
|
7
|
+
* Anti-dérive : `env.ts` (le catalogue) est la SEULE liste de variables,
|
|
8
|
+
* `.env.example` en est DÉRIVÉ. La commande `nodefony env --example` écrit le
|
|
9
|
+
* fichier (en-tête curé possible : `.env.example.head`) ; son `--check` échoue
|
|
10
|
+
* si le fichier diverge du catalogue — pre-commit, CI.
|
|
11
|
+
*/
|
|
12
|
+
import type { NamedEnvVarMeta } from "./defineEnv.js";
|
|
13
|
+
/**
|
|
14
|
+
* Rend le contenu complet de `.env.example` depuis le catalogue.
|
|
15
|
+
*
|
|
16
|
+
* @param catalog - métadonnées des variables (via `getEnvCatalog(env)`).
|
|
17
|
+
* @param opts.header - en-tête d'onboarding curé (préambule + précédence), placé en
|
|
18
|
+
* tête tel quel. Le corps (les variables) est, lui, entièrement dérivé.
|
|
19
|
+
* @returns le texte du fichier (terminé par un seul saut de ligne).
|
|
20
|
+
*/
|
|
21
|
+
export declare function renderEnvExample(catalog: readonly NamedEnvVarMeta[], opts?: {
|
|
22
|
+
header?: string;
|
|
23
|
+
}): string;
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Override générique de configuration par variable d'environnement (ADR-0006 D3).
|
|
3
|
+
*
|
|
4
|
+
* Forme : `NF__<MODULE>__<CHEMIN…>=valeur`. Le **double underscore `__`** sépare
|
|
5
|
+
* les niveaux (choix .NET Core / Docker — explicite, sans ambiguïté avec le
|
|
6
|
+
* camelCase). Le 1ᵉʳ segment = le module (`SECURITY` → `@nodefony/security`), les
|
|
7
|
+
* suivants = le chemin dans sa config. Les segments sont **insensibles à la casse**
|
|
8
|
+
* et résolus contre les clés RÉELLES de la config (`ACCESSTTLS` → `accessTtlS`).
|
|
9
|
+
*
|
|
10
|
+
* Précédence (cf ADR-0006 D5) : appliqué APRÈS le merge de l'app (`use()` /
|
|
11
|
+
* `module-<name>`) et AVANT la validation Zod du module → le schéma valide/rejette
|
|
12
|
+
* la valeur surchargée (fail-closed). Résolu **1× au boot** (hors hot path).
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```bash
|
|
16
|
+
* NF__SECURITY__JWT__ACCESSTTLS=300
|
|
17
|
+
* NF__HTTP__SERVERS__HTTPS__PORT=8443
|
|
18
|
+
* NF__SECURITY__CORS__ORIGINS=https://a.com,https://b.com # CSV → array
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
/** Un override d'environnement résolu (issu d'une variable `NF__…`). */
|
|
22
|
+
export interface NfEnvOverride {
|
|
23
|
+
/** Variable d'env d'origine (ex. `NF__SECURITY__JWT__ACCESSTTLS`). */
|
|
24
|
+
readonly envKey: string;
|
|
25
|
+
/** Segment module normalisé minuscule (ex. `security`). */
|
|
26
|
+
readonly moduleSeg: string;
|
|
27
|
+
/** Chemin dans la config du module, segments minuscules (ex. `["jwt","accessttls"]`). */
|
|
28
|
+
readonly path: string[];
|
|
29
|
+
/** Valeur coercée (booléen / nombre / tableau CSV / objet JSON / chaîne). */
|
|
30
|
+
readonly value: unknown;
|
|
31
|
+
/**
|
|
32
|
+
* La chaîne BRUTE, telle que l'environnement la porte.
|
|
33
|
+
*
|
|
34
|
+
* Gardée parce que {@link coerceEnvValue} devine le type sans connaître la
|
|
35
|
+
* cible : au moment d'APPLIQUER l'override, la config remplacée révèle le type
|
|
36
|
+
* attendu, et seule la chaîne d'origine permet alors de convertir juste
|
|
37
|
+
* ({@link coerceEnvValueLike}). Sans elle, `"1"` était perdu en `Number(1)`
|
|
38
|
+
* avant même qu'on sache qu'une clé booléenne l'attendait.
|
|
39
|
+
*/
|
|
40
|
+
readonly raw: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Coerce une valeur d'environnement (toujours une chaîne) vers son type probable.
|
|
44
|
+
*
|
|
45
|
+
* Coercion **explicite** (le piège `z.coerce.boolean("false") === true` est évité) :
|
|
46
|
+
* `"true"/"false"` → booléen ; entier/décimal → nombre ; `[…]`/`{…}` → JSON ;
|
|
47
|
+
* une chaîne contenant `,` → tableau de chaînes (CSV) ; sinon la chaîne brute.
|
|
48
|
+
*
|
|
49
|
+
* @param raw - valeur brute de la variable d'environnement.
|
|
50
|
+
* @returns la valeur typée.
|
|
51
|
+
*/
|
|
52
|
+
export declare function coerceEnvValue(raw: string): unknown;
|
|
53
|
+
/**
|
|
54
|
+
* Scanne `env` et extrait tous les overrides `NF__<MODULE>__<CHEMIN…>`.
|
|
55
|
+
*
|
|
56
|
+
* Ignore les clés sans au moins un module + un champ (`NF__X` seul), et les
|
|
57
|
+
* valeurs `undefined`. Ne touche PAS `env` (lecture seule).
|
|
58
|
+
*
|
|
59
|
+
* @param env - source d'environnement (typiquement `process.env`).
|
|
60
|
+
* @returns la liste des overrides résolus (vide si aucun).
|
|
61
|
+
*/
|
|
62
|
+
export declare function parseNfEnvOverrides(env: NodeJS.ProcessEnv): NfEnvOverride[];
|
|
63
|
+
/**
|
|
64
|
+
* La valeur d'environnement convertie vers le type de ce qu'elle REMPLACE.
|
|
65
|
+
*
|
|
66
|
+
* Une variable d'environnement est toujours une chaîne ; seul le schéma sait ce
|
|
67
|
+
* qu'il attend. {@link coerceEnvValue} devine sans lui, et sa devinette rendait
|
|
68
|
+
* un type FAUX que la validation Zod refusait ensuite : `NF__HTTP__TRUSTPROXY=1`
|
|
69
|
+
* donnait `Number(1)`, qu'aucun membre de `z.union([boolean, string, array])`
|
|
70
|
+
* n'accepte — une variable DOCUMENTÉE faisait échouer le boot, à rebours du
|
|
71
|
+
* 12-factor que l'ADR-0006 revendique.
|
|
72
|
+
*
|
|
73
|
+
* L'information manquante est pourtant à portée : la config porte déjà le
|
|
74
|
+
* DÉFAUT du schéma à cet endroit, et son type dit ce qui est attendu.
|
|
75
|
+
*
|
|
76
|
+
* ⚠️ **Le type existant ORIENTE, il ne décide pas.** Convertir aveuglément vers
|
|
77
|
+
* le type de la valeur remplacée serait une faille : `trustProxy` a pour défaut
|
|
78
|
+
* `false` mais accepte aussi une CIDR, et `10.0.0.0/8` deviendrait `true`,
|
|
79
|
+
* c'est-à-dire une confiance TOTALE envers les `X-Forwarded-*`. Seuls des
|
|
80
|
+
* littéraux booléens reconnus sont convertis ; tout le reste retombe sur la
|
|
81
|
+
* devinette, qui garde la chaîne.
|
|
82
|
+
*
|
|
83
|
+
* Les cibles NON ambiguës (nombre, tableau, objet, valeur absente) gardent la
|
|
84
|
+
* devinette : elle y est juste, et le CSV → tableau documenté en dépend.
|
|
85
|
+
*
|
|
86
|
+
* @param raw - la chaîne brute de la variable d'environnement.
|
|
87
|
+
* @param existing - la valeur actuellement en place (le défaut du schéma).
|
|
88
|
+
* @returns la valeur à poser.
|
|
89
|
+
*/
|
|
90
|
+
export declare function coerceEnvValueLike(raw: string, existing: unknown): unknown;
|
|
91
|
+
/**
|
|
92
|
+
* Type déclaré par un JSON Schema pour un chemin — `null` si le chemin n'y est
|
|
93
|
+
* pas déclaré, ou si le schéma prend une forme que cette lecture ne comprend pas.
|
|
94
|
+
*
|
|
95
|
+
* **Le schéma dit ce que la VALEUR ignore.** Une clé optionnelle sans défaut
|
|
96
|
+
* n'existe pas dans l'objet de configuration : la résolution par les clés
|
|
97
|
+
* présentes la déclare donc « inconnue » et refuse la surcharge, pour une clé
|
|
98
|
+
* pourtant déclarée, documentée et lue par le code. Ce sont précisément les
|
|
99
|
+
* réglages dont l'ABSENCE est signifiante — ceux que le framework résout par
|
|
100
|
+
* environnement quand on ne les écrit pas — et donc ceux qu'un exploitant a le
|
|
101
|
+
* plus besoin de poser sur une image déjà construite.
|
|
102
|
+
*
|
|
103
|
+
* Le core n'importe PAS zod : chaque module publie son schéma en JSON pur
|
|
104
|
+
* (`Module.configSchema()`), et cette fonction n'y navigue que par `properties`.
|
|
105
|
+
* Toute autre forme — `anyOf`, `$ref`, union — rend `null` : on n'assouplit que
|
|
106
|
+
* ce qu'on COMPREND, et le refus d'aujourd'hui reste le comportement par défaut.
|
|
107
|
+
*
|
|
108
|
+
* @param schema - JSON Schema du module, tel que `Module.configSchema()` le rend.
|
|
109
|
+
* @param path - segments du chemin (minuscules).
|
|
110
|
+
* @returns le `type` JSON Schema de la feuille, `"unknown"` si déclarée sans type, ou `null`.
|
|
111
|
+
*/
|
|
112
|
+
export declare function declaredTypeAtPath(schema: unknown, path: string[]): string | null;
|
|
113
|
+
/**
|
|
114
|
+
* Convertit une chaîne d'environnement vers le type que le SCHÉMA déclare.
|
|
115
|
+
*
|
|
116
|
+
* Sert quand la clé est absente de la valeur : il n'y a alors rien à imiter, et
|
|
117
|
+
* {@link coerceEnvValueLike} devinerait — `"1"` deviendrait le nombre `1` là où
|
|
118
|
+
* un booléen est attendu, et le parse du module refuserait une surcharge
|
|
119
|
+
* pourtant correcte.
|
|
120
|
+
*
|
|
121
|
+
* @param raw - la chaîne d'environnement.
|
|
122
|
+
* @param type - le `type` JSON Schema de la feuille.
|
|
123
|
+
* @returns la valeur convertie ; la devinette générique si le type est inconnu.
|
|
124
|
+
*/
|
|
125
|
+
export declare function coerceEnvValueForType(raw: string, type: string): unknown;
|
|
126
|
+
/**
|
|
127
|
+
* Pose `value` dans `target` au `path` donné, en résolvant chaque segment contre
|
|
128
|
+
* les clés EXISTANTES (insensible à la casse). N'altère QUE des chemins déjà
|
|
129
|
+
* présents dans la config (= champs ayant un défaut) — un chemin inconnu n'est pas
|
|
130
|
+
* créé (évite une clé fantôme à la mauvaise casse que le Zod ignorerait
|
|
131
|
+
* silencieusement) : la fonction renvoie alors `false` pour signalement.
|
|
132
|
+
*
|
|
133
|
+
* Quand `raw` est fourni, la valeur posée est RECALCULÉE contre celle qu'elle
|
|
134
|
+
* remplace ({@link coerceEnvValueLike}) : c'est ici, et nulle part ailleurs,
|
|
135
|
+
* qu'on connaît à la fois la chaîne d'origine et le type attendu. Sans `raw`, le
|
|
136
|
+
* comportement est inchangé — aucun appelant existant ne bouge.
|
|
137
|
+
*
|
|
138
|
+
* Quand `schema` est fourni, un chemin ABSENT de la valeur mais DÉCLARÉ par le
|
|
139
|
+
* schéma est créé — c'est le cas d'une clé optionnelle sans défaut, dont
|
|
140
|
+
* l'absence est signifiante et que rien ne permettait de poser jusqu'ici. La
|
|
141
|
+
* garde reste entière pour ce qui n'est ni présent ni déclaré : c'est elle qui
|
|
142
|
+
* empêche une clé fantôme à la mauvaise casse, que le parse du module
|
|
143
|
+
* strippe ensuite SANS un mot.
|
|
144
|
+
*
|
|
145
|
+
* @param target - objet de config du module (muté en place).
|
|
146
|
+
* @param path - segments du chemin (minuscules).
|
|
147
|
+
* @param value - valeur à poser (devinée par {@link coerceEnvValue}).
|
|
148
|
+
* @param raw - la chaîne d'environnement d'origine, quand elle est connue.
|
|
149
|
+
* @param schema - JSON Schema du module ({@link declaredTypeAtPath}), s'il en publie un.
|
|
150
|
+
* @returns `true` si appliqué, `false` si le chemin n'est ni présent ni déclaré.
|
|
151
|
+
*/
|
|
152
|
+
export declare function applyResolvedPath(target: Record<string, unknown>, path: string[], value: unknown, raw?: string, schema?: unknown): boolean;
|
|
153
|
+
/**
|
|
154
|
+
* Relit la valeur posée à `path` — la SYMÉTRIQUE de {@link applyResolvedPath}.
|
|
155
|
+
*
|
|
156
|
+
* Sert au journal du boot : depuis que la valeur est convertie contre le type
|
|
157
|
+
* attendu, ce qui est écrit dans la config n'est plus forcément ce que
|
|
158
|
+
* `coerceEnvValue` avait deviné. Journaliser la devinette afficherait
|
|
159
|
+
* `TRUSTPROXY = 1` sur une config qui porte `true` — le genre d'écart qu'on
|
|
160
|
+
* poursuit une heure avant de comprendre qu'il vient du journal.
|
|
161
|
+
*
|
|
162
|
+
* @param target - objet de config du module.
|
|
163
|
+
* @param path - segments du chemin (minuscules).
|
|
164
|
+
* @returns la valeur en place, ou `undefined` si le chemin ne résout pas.
|
|
165
|
+
*/
|
|
166
|
+
export declare function readResolvedPath(target: Record<string, unknown>, path: string[]): unknown;
|
|
167
|
+
/** Heuristique : ce chemin porte-t-il un secret (à rédiger dans les logs) ? */
|
|
168
|
+
export declare function pathLooksSecret(path: string[]): boolean;
|
|
169
|
+
/**
|
|
170
|
+
* Distance d'édition de Levenshtein entre deux chaînes (2 lignes glissantes, pas
|
|
171
|
+
* de matrice complète). Sert au « did you mean » : proposer la clé la plus proche
|
|
172
|
+
* quand un segment d'override `NF__*` est mal orthographié.
|
|
173
|
+
*
|
|
174
|
+
* @param a - première chaîne.
|
|
175
|
+
* @param b - seconde chaîne.
|
|
176
|
+
* @returns le nombre minimal d'insertions/suppressions/substitutions.
|
|
177
|
+
*/
|
|
178
|
+
export declare function editDistance(a: string, b: string): number;
|
|
179
|
+
/**
|
|
180
|
+
* Parmi `candidates`, renvoie le plus proche de `target` (insensible à la casse)
|
|
181
|
+
* SI la distance d'édition reste plausible (≤ 40 % de la plus longue, plancher 2)
|
|
182
|
+
* — sinon `null` (ne jamais suggérer une correspondance absurde). Calque le « the
|
|
183
|
+
* most similar command is » de git : aide au debug d'un nom de variable d'env mal tapé.
|
|
184
|
+
*
|
|
185
|
+
* @param target - segment fourni par l'utilisateur (issu d'un `NF__…`).
|
|
186
|
+
* @param candidates - clés réelles existantes à comparer.
|
|
187
|
+
* @returns la meilleure suggestion, ou `null` si trop éloignée.
|
|
188
|
+
*/
|
|
189
|
+
export declare function closestMatch(target: string, candidates: string[]): string | null;
|
|
190
|
+
/** Échec de résolution d'un chemin d'override : où ça a cassé + ce qui existait. */
|
|
191
|
+
export interface ResolveFailure {
|
|
192
|
+
/** Index (dans `path`) du segment qui n'a pas résolu. */
|
|
193
|
+
readonly index: number;
|
|
194
|
+
/** Segment fautif (minuscule, tel que fourni). */
|
|
195
|
+
readonly segment: string;
|
|
196
|
+
/** Clés réelles disponibles au niveau où la résolution a échoué. */
|
|
197
|
+
readonly available: string[];
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Rejoue la résolution de `path` contre `target` pour DIAGNOSTIQUER un échec :
|
|
201
|
+
* renvoie le 1ᵉʳ segment qui ne correspond à aucune clé (ou qui traverse un
|
|
202
|
+
* non-objet) + les clés disponibles à ce niveau. `null` si tout résout (pas un
|
|
203
|
+
* échec). Miroir de lecture seule de {@link applyResolvedPath} — ne mute rien.
|
|
204
|
+
*
|
|
205
|
+
* @param target - objet de config du module (non muté).
|
|
206
|
+
* @param path - segments du chemin (minuscules).
|
|
207
|
+
* @returns le détail de l'échec, ou `null` si le chemin résout entièrement.
|
|
208
|
+
*/
|
|
209
|
+
export declare function diagnoseResolveFailure(target: Record<string, unknown>, path: string[]): ResolveFailure | null;
|
|
210
|
+
/**
|
|
211
|
+
* Clés déclarées par le schéma au niveau `prefix` — vide si le schéma ne dit
|
|
212
|
+
* rien de ce niveau, ou s'il prend une forme que cette lecture ne comprend pas.
|
|
213
|
+
*
|
|
214
|
+
* @param schema - JSON Schema du module, ou `undefined`.
|
|
215
|
+
* @param prefix - segments déjà traversés (minuscules).
|
|
216
|
+
* @returns les noms de propriétés déclarés à ce niveau.
|
|
217
|
+
*/
|
|
218
|
+
export declare function declaredKeysAtPath(schema: unknown, prefix: string[]): string[];
|
|
219
|
+
/**
|
|
220
|
+
* Construit le suffixe de message « did you mean » d'un chemin d'override qui n'a
|
|
221
|
+
* pas résolu contre `target` : nomme le segment fautif, propose la clé la plus
|
|
222
|
+
* proche et liste les clés disponibles. Chaîne vide si rien d'exploitable.
|
|
223
|
+
* Partagé par les overrides de MODULE (Kernel) et d'APP (defineConfig).
|
|
224
|
+
*
|
|
225
|
+
* **Les clés DÉCLARÉES comptent autant que les présentes.** Une clé optionnelle
|
|
226
|
+
* sans défaut n'existe pas dans la valeur : ne lister que celle-ci proposerait à
|
|
227
|
+
* l'utilisateur une liste amputée, et lui ferait chercher une faute de frappe
|
|
228
|
+
* dans un nom parfaitement écrit — l'inverse du service qu'un « did you mean »
|
|
229
|
+
* doit rendre.
|
|
230
|
+
*
|
|
231
|
+
* @param target - objet de config cible (lu seul, non muté).
|
|
232
|
+
* @param path - segments du chemin de l'override (minuscules).
|
|
233
|
+
* @param schema - JSON Schema du module, quand il en publie un.
|
|
234
|
+
* @returns un suffixe commençant par ` — …`, ou `""`.
|
|
235
|
+
*/
|
|
236
|
+
export declare function resolveFailureHint(target: Record<string, unknown>, path: string[], schema?: unknown): string;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Barrel du moteur de configuration `defineConfig` (back-only, D1).
|
|
3
|
+
* Ré-exporté par le barrel node `src/index.ts` → `import { defineConfig } from "nodefony"`.
|
|
4
|
+
*/
|
|
5
|
+
export { defineConfig, isConfigDescriptor } from "./defineConfig.js";
|
|
6
|
+
export type { AppConfigDescriptor } from "./defineConfig.js";
|
|
7
|
+
export { use } from "./use.js";
|
|
8
|
+
export type { NodefonyModuleConfig, ConfigOf, UseOptions } from "./use.js";
|
|
9
|
+
export { defineEnv, envString, envNumber, envBoolean, envEnum, getEnvCatalog, } from "./defineEnv.js";
|
|
10
|
+
export type { EnvVarKind, EnvVarMeta, NamedEnvVarMeta } from "./defineEnv.js";
|
|
11
|
+
export { renderEnvExample } from "./envExample.js";
|
|
12
|
+
export { defaultAppConfig } from "./defaults.js";
|
|
13
|
+
export { parseNfEnvOverrides } from "./envOverride.js";
|
|
14
|
+
export type { NfEnvOverride } from "./envOverride.js";
|
|
15
|
+
export { computeConfigProvenance, extractJsonSchemaDefaults, } from "./configProvenance.js";
|
|
16
|
+
export type { ConfigOrigin } from "./configProvenance.js";
|
|
17
|
+
export { appConfigSchema, appConfigJsonSchema, validateAppConfig, } from "./schema.js";
|
|
18
|
+
export type { AppConfig } from "./schema.js";
|
|
19
|
+
export { resolveInfra, resolveAutoStore, readStoreLocation, parseDatabaseUrl, sqliteFilenameFromUrl, AUTO_STORE, EMPTY_INFRA, } from "./infra.js";
|
|
20
|
+
export type { IInfra, IInfraDatabase, IInfraCache, IInfraLogs, IAutoStoreResolution, InfraSqlDialect, DatabaseFamily, StoreKind, InfraEnvSource, } from "./infra.js";
|
|
21
|
+
export { configReactivity, getConfigReactivity } from "./reactivity.js";
|
|
22
|
+
export type { Reactivity } from "./reactivity.js";
|
|
23
|
+
export type { AppConfigInput, ResolvedAppConfig, ConfigInput, ConfigContext, KnownModule, ModuleEntryInput, ModuleManifestInput, AppMeta, ServersConfig, HttpServerConfig, HttpsServerConfig, LogConfig, LogFileConfig, LogDestinationConfig, } from "./types.js";
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Résolution de l'INFRA DÉCLARÉE depuis l'environnement (modèle « infra déclarée »).
|
|
3
|
+
*
|
|
4
|
+
* L'utilisateur ne configure pas chaque brique : il déclare son infra via des
|
|
5
|
+
* URLs (pattern Rails/Django/Symfony) :
|
|
6
|
+
* - `NF_DATABASE_URL` (alias plateforme `DATABASE_URL`) → infra `database` (durable)
|
|
7
|
+
* - `NF_REDIS_URL` (alias plateforme `REDIS_URL`) → infra `cache` (éphémère partagé)
|
|
8
|
+
* - `NF_LOKI_URL` / `NF_OPENSEARCH_URL` → infra `logs` (relecture backplane)
|
|
9
|
+
*
|
|
10
|
+
* Les briques dont le store vaut `"auto"` sont résolues par l'infra déclarée
|
|
11
|
+
* ({@link resolveAutoStore}) ; une valeur explicite gagne toujours (moindre
|
|
12
|
+
* surprise, 12-factor). Aucune cascade runtime implicite : charger un module
|
|
13
|
+
* ne déplace jamais une brique — seule la déclaration d'infra le fait.
|
|
14
|
+
*/
|
|
15
|
+
/** Dialecte SQL déduit du scheme de l'URL du infra `database`. */
|
|
16
|
+
export type InfraSqlDialect = "sqlite" | "postgres" | "mysql";
|
|
17
|
+
/** Famille du infra `database` — pilote le choix de l'adapter (drizzle/mongoose). */
|
|
18
|
+
export type DatabaseFamily = "sql" | "mongo";
|
|
19
|
+
/** Infra `database` résolu depuis `NF_DATABASE_URL`/`DATABASE_URL`. */
|
|
20
|
+
export interface IInfraDatabase {
|
|
21
|
+
/** URL déclarée telle quelle (peut porter des credentials — ne jamais logger brute). */
|
|
22
|
+
url: string;
|
|
23
|
+
/** Scheme normalisé en minuscules, sans `:` (ex. `postgres`, `sqlite`, `mongodb`). */
|
|
24
|
+
scheme: string;
|
|
25
|
+
family: DatabaseFamily;
|
|
26
|
+
/** Dialecte SQL (famille `sql`) — `null` pour la famille `mongo`. */
|
|
27
|
+
dialect: InfraSqlDialect | null;
|
|
28
|
+
}
|
|
29
|
+
/** Infra `cache` résolu depuis `NF_REDIS_URL`/`REDIS_URL`. */
|
|
30
|
+
export interface IInfraCache {
|
|
31
|
+
/** URL redis déclarée (peut porter des credentials — ne jamais logger brute). */
|
|
32
|
+
url: string;
|
|
33
|
+
}
|
|
34
|
+
/** Infra `logs` (relecture backplane) — les DEUX URLs peuvent être présentes. */
|
|
35
|
+
export interface IInfraLogs {
|
|
36
|
+
lokiUrl?: string;
|
|
37
|
+
opensearchUrl?: string;
|
|
38
|
+
}
|
|
39
|
+
/** L'infra déclarée — `null` = non déclarée. */
|
|
40
|
+
export interface IInfra {
|
|
41
|
+
database: IInfraDatabase | null;
|
|
42
|
+
cache: IInfraCache | null;
|
|
43
|
+
logs: IInfraLogs | null;
|
|
44
|
+
/**
|
|
45
|
+
* Override GLOBAL de sélection de store (`NF_STORE`) — force TOUTE brique `auto`
|
|
46
|
+
* vers ce backend, en amont de toute préférence d'infra. Cas d'usage : `memory`
|
|
47
|
+
* pour un banc de CHARGE (mesurer le framework sans le goulot sqlite/disque), sans
|
|
48
|
+
* toucher aux configs par brique. `undefined`/`null` = pas d'override. N'affecte
|
|
49
|
+
* JAMAIS un store configuré EXPLICITEMENT (celui-ci ne passe pas par `auto`).
|
|
50
|
+
*/
|
|
51
|
+
forceStore?: string | null;
|
|
52
|
+
}
|
|
53
|
+
/** Source d'environnement (forme de `process.env`) — injectable pour les tests. */
|
|
54
|
+
export type InfraEnvSource = Record<string, string | undefined>;
|
|
55
|
+
/**
|
|
56
|
+
* Parse l'URL du infra `database` : scheme → famille + dialecte.
|
|
57
|
+
*
|
|
58
|
+
* @throws Error si le scheme n'est pas supporté — fail-loud au boot : une URL
|
|
59
|
+
* de base inconnue ne doit JAMAIS retomber silencieusement sur sqlite.
|
|
60
|
+
*/
|
|
61
|
+
export declare function parseDatabaseUrl(url: string): IInfraDatabase;
|
|
62
|
+
/**
|
|
63
|
+
* Fichier SQLite d'une URL `sqlite:` du infra `database`.
|
|
64
|
+
* Formes acceptées : `sqlite::memory:`, `sqlite:./relatif.db`, `sqlite:/abs.db`,
|
|
65
|
+
* `sqlite:///abs.db`. URL vide après le scheme → `:memory:`.
|
|
66
|
+
*/
|
|
67
|
+
export declare function sqliteFilenameFromUrl(url: string): string;
|
|
68
|
+
/**
|
|
69
|
+
* Résout les 3 infra déclarée depuis l'environnement. Fonction PURE
|
|
70
|
+
* (aucun kernel) : consommée par le Kernel (1 fois, mémoïsé), par le contexte
|
|
71
|
+
* `defineConfig` (`ctx.infra`) et par les builders de config des modules
|
|
72
|
+
* adapters (drizzle/mongoose/redis) dans leur couche env.
|
|
73
|
+
*
|
|
74
|
+
* @param env - source d'environnement (défaut `process.env`).
|
|
75
|
+
* @throws Error si l'URL du infra `database` a un scheme non supporté.
|
|
76
|
+
*/
|
|
77
|
+
export declare function resolveInfra(env?: InfraEnvSource): IInfra;
|
|
78
|
+
/** Sentinelle des champs `store` : « laisser le framework choisir selon l'infra déclarée ». */
|
|
79
|
+
export declare const AUTO_STORE = "auto";
|
|
80
|
+
/** Infra vide (rien de déclaré) — fallback sûr quand le kernel est absent (tests). */
|
|
81
|
+
export declare const EMPTY_INFRA: IInfra;
|
|
82
|
+
/**
|
|
83
|
+
* Nature de la donnée d'une brique — pilote l'ordre de préférence des backends :
|
|
84
|
+
* - `durable` (tokens, passkeys, audit, webhooks, user) → infra database.
|
|
85
|
+
* - `ephemeral` (idempotence) → infra cache, sinon database.
|
|
86
|
+
* - `session` → cache, sinon database, sinon fallback fichier.
|
|
87
|
+
*/
|
|
88
|
+
export type StoreKind = "durable" | "ephemeral" | "session";
|
|
89
|
+
/** Choix d'un backend pour `"auto"` + provenance lisible (log de boot, Studio). */
|
|
90
|
+
export interface IAutoStoreResolution {
|
|
91
|
+
store: string;
|
|
92
|
+
reason: string;
|
|
93
|
+
}
|
|
94
|
+
/** Catégorie de provenance d'un store résolu (dérivée de la valeur configurée). */
|
|
95
|
+
export type StoreProvenance = "infra" | "explicit";
|
|
96
|
+
/**
|
|
97
|
+
* Résolution EFFECTIVE d'une brique de persistance, capturée au boot par le
|
|
98
|
+
* consommateur (au moment exact où il pose son store au container) et retenue
|
|
99
|
+
* dans le registre du Kernel ({@link IKernel.registerStoreResolution}). C'est la
|
|
100
|
+
* VÉRITÉ vécue — y compris les replis annoncés du lot 4 (session → `"files"` en
|
|
101
|
+
* dev) — pas une re-dérivation à la volée. Alimente l'écran Studio « Stores ».
|
|
102
|
+
*/
|
|
103
|
+
export interface IStoreResolution {
|
|
104
|
+
/** Identifiant de la brique (ex. `"tokens"`, `"session"`, `"audit"`). */
|
|
105
|
+
brick: string;
|
|
106
|
+
/** Nature de la donnée — pilote la durabilité affichée ({@link StoreKind}). */
|
|
107
|
+
nature: StoreKind;
|
|
108
|
+
/** Valeur configurée telle quelle : `"auto"` (sentinelle) ou un backend explicite. */
|
|
109
|
+
configured: string;
|
|
110
|
+
/** Backend effectivement résolu et posé au runtime. */
|
|
111
|
+
resolved: string;
|
|
112
|
+
/**
|
|
113
|
+
* Backends RÉELLEMENT enregistrés pour cette brique (`listXStores()`), capturés
|
|
114
|
+
* par le consommateur — évite à l'endpoint d'importer les registres (le cœur
|
|
115
|
+
* `@nodefony/framework` ne peut pas dépendre de `@nodefony/security`/`http`).
|
|
116
|
+
*/
|
|
117
|
+
available: readonly string[];
|
|
118
|
+
/**
|
|
119
|
+
* Provenance : `"infra"` (résolu depuis l'infra déclarée, `configured === "auto"`)
|
|
120
|
+
* ou `"explicit"` (backend nommé dans la config/env de l'app).
|
|
121
|
+
*/
|
|
122
|
+
provenance: StoreProvenance;
|
|
123
|
+
/** Raison lisible (FR) de la résolution — de `resolveAutoStore` ou construite. */
|
|
124
|
+
reason: string;
|
|
125
|
+
/** Chemin du champ de config (ex. `"security.tokenStore.store"`) — croise la provenance de champ Studio. */
|
|
126
|
+
configPath?: string;
|
|
127
|
+
/**
|
|
128
|
+
* Emplacement PHYSIQUE lisible du store, lu depuis l'instance au boot
|
|
129
|
+
* ({@link readStoreLocation}) — base SQLite pour `drizzle`. `undefined`
|
|
130
|
+
* pour un store `memory` (volatil) ou un backend réseau (l'emplacement = l'infra
|
|
131
|
+
* déclarée, déjà surfacée à part). Répond à « où sont écrites mes données ? » dans Studio.
|
|
132
|
+
*/
|
|
133
|
+
location?: string;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Résout la sentinelle `"auto"` d'une brique en nom de backend, borné aux
|
|
137
|
+
* backends RÉELLEMENT enregistrés (`available` = `listXStores()` du registre —
|
|
138
|
+
* reflète l'auto-register des adapters chargés). Couverture partielle d'une infra
|
|
139
|
+
* (ex. audit sans impl mongoose) → repli `fallback` avec raison ANNONCÉE,
|
|
140
|
+
* jamais d'échec : le principe « fallback annoncé, pas de dégradation
|
|
141
|
+
* silencieuse » vit dans la raison retournée, que l'appelant DOIT logger.
|
|
142
|
+
*
|
|
143
|
+
* @param kind - nature de la donnée ({@link StoreKind}).
|
|
144
|
+
* @param infra - infra résolue ({@link resolveInfra}).
|
|
145
|
+
* @param available - backends enregistrés dans le registre de la brique.
|
|
146
|
+
* @param fallback - backend de repli (défaut `"memory"` — c'est aussi ce que passe
|
|
147
|
+
* le service de session : aucun appelant ne demande un autre repli).
|
|
148
|
+
*/
|
|
149
|
+
export declare function resolveAutoStore(kind: StoreKind, infra: IInfra, available: readonly string[], fallback?: string): IAutoStoreResolution;
|
|
150
|
+
/**
|
|
151
|
+
* Déduit le nom court du backend d'un store à partir de la classe concrète de
|
|
152
|
+
* son instance (convention de nommage `<Backend>XxxStore` → `drizzle`, `mongoose`,
|
|
153
|
+
* `redis`, `memory`, `file`). Sert à retrouver le backend RÉEL d'un adapter posé
|
|
154
|
+
* au container quand la brique a été résolue en `"auto"` (l'adapter court-circuite
|
|
155
|
+
* la fabrique nommée). Classe non reconnue → nom de classe brut (honnête).
|
|
156
|
+
*
|
|
157
|
+
* @param store - instance de store (lue défensivement — seul `constructor.name`).
|
|
158
|
+
* @returns nom court du backend, ou `"inconnu"` si l'instance n'expose pas de classe.
|
|
159
|
+
*/
|
|
160
|
+
export declare function deriveStoreBackend(store: unknown): string;
|
|
161
|
+
/**
|
|
162
|
+
* Lit l'emplacement PHYSIQUE d'un store depuis son instance (getter public
|
|
163
|
+
* `location`), pour l'écran Studio « Stores » — répond à « où mes données sont-elles
|
|
164
|
+
* écrites ? ». Un store fichier (passkeys, TOTP, sessions) expose le chemin de son
|
|
165
|
+
* fichier/dossier ; un store `memory` ou un backend réseau (drizzle/redis/mongoose)
|
|
166
|
+
* n'expose rien → `undefined` (l'UI dérive « en mémoire » ou renvoie à l'infra).
|
|
167
|
+
*
|
|
168
|
+
* @param store - instance de store (lue défensivement — seul un getter `location` string).
|
|
169
|
+
* @returns chemin lisible, ou `undefined` si le store n'expose pas d'emplacement.
|
|
170
|
+
*/
|
|
171
|
+
export declare function readStoreLocation(store: unknown): string | undefined;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RÉACTIVITÉ déclarée de chaque champ de config (pilier #2 du chantier).
|
|
3
|
+
*
|
|
4
|
+
* Certaines options s'appliquent À CHAUD (sans redémarrer — niveau de log, format
|
|
5
|
+
* de requête, sources debug) ; d'autres sont FIGÉES AU BOOT (ports, protocole,
|
|
6
|
+
* liste modules, TLS, cluster). Le dev et Studio doivent le savoir sans deviner.
|
|
7
|
+
*
|
|
8
|
+
* Ce module porte la **vérité déclarée** (quel champ est `hot`), co-localisée au
|
|
9
|
+
* schéma et aussi taggée `@reactivity` en TSDoc sur {@link AppConfigInput} (hover
|
|
10
|
+
* éditeur). L'APPLICATION live (`Kernel.applyConfigPatch` + setters services + UI
|
|
11
|
+
* Studio avec badge `🔥 à chaud` / `🔒 redémarrage requis`) est un follow-up : ici
|
|
12
|
+
* on ne fait que CLASSER, pas appliquer.
|
|
13
|
+
*
|
|
14
|
+
* Défaut SÛR : un champ non listé = `boot` (conservateur — on ne prétend jamais
|
|
15
|
+
* `hot` par erreur).
|
|
16
|
+
*/
|
|
17
|
+
/** Réactivité d'un champ de config. */
|
|
18
|
+
export type Reactivity = "hot" | "boot";
|
|
19
|
+
/**
|
|
20
|
+
* Champs applicables À CHAUD (chemin en dot-notation). Tout champ absent est `boot`.
|
|
21
|
+
*
|
|
22
|
+
* `log.active` / `log.debug` / `log.requestFormat` = exactement le cadre de la
|
|
23
|
+
* « fenêtre d'audit » (élever la verbosité prod temporairement sans reboot).
|
|
24
|
+
*/
|
|
25
|
+
export declare const configReactivity: {
|
|
26
|
+
readonly "log.active": "hot";
|
|
27
|
+
readonly "log.debug": "hot";
|
|
28
|
+
readonly "log.requestFormat": "hot";
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Réactivité d'un champ par son chemin dot-notation ; `boot` par défaut (sûr).
|
|
32
|
+
*
|
|
33
|
+
* @param path - chemin du champ, ex. `"log.debug"` ou `"servers.http.port"`.
|
|
34
|
+
* @returns `"hot"` si le champ peut s'appliquer à chaud, sinon `"boot"`.
|
|
35
|
+
*/
|
|
36
|
+
export declare function getConfigReactivity(path: string): Reactivity;
|