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,348 @@
|
|
|
1
|
+
import { extend } from "../Tools.js";
|
|
2
|
+
import Service from "../Service.js";
|
|
3
|
+
import { chargePrompts } from "../cli/prompts.js";
|
|
4
|
+
import { tagUnboundedListener } from "../kernel/lifecycleTags.js";
|
|
5
|
+
import { Argument, Command, Option } from "commander";
|
|
6
|
+
//#region src/command/Command.ts
|
|
7
|
+
const defaultCommandOptions = {
|
|
8
|
+
showBanner: true,
|
|
9
|
+
kernelEvent: "onRegister",
|
|
10
|
+
lifetime: "oneshot"
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Classe Command représente une commande dans l'application.
|
|
14
|
+
*
|
|
15
|
+
* @class
|
|
16
|
+
* @extends Service
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Les valeurs SUGGÉRÉES d'une option, pour la complétion du shell.
|
|
20
|
+
*
|
|
21
|
+
* Un registre à part plutôt qu'un champ posé sur l'objet de commander : ce sont
|
|
22
|
+
* ses objets, et les muter ferait dépendre le produit d'un détail non
|
|
23
|
+
* documenté. `WeakMap` parce qu'une option morte ne doit rien retenir.
|
|
24
|
+
*/
|
|
25
|
+
const OPTION_SUGGESTIONS = /* @__PURE__ */ new WeakMap();
|
|
26
|
+
var Command$1 = class extends Service {
|
|
27
|
+
cli;
|
|
28
|
+
command;
|
|
29
|
+
program;
|
|
30
|
+
json = false;
|
|
31
|
+
debug = false;
|
|
32
|
+
interactive = false;
|
|
33
|
+
forceInteractive = false;
|
|
34
|
+
builder = null;
|
|
35
|
+
/**
|
|
36
|
+
* Namespace `@inquirer/prompts` — chargé LAZY via {@link loadPrompts} (import
|
|
37
|
+
* dynamique) uniquement pour les commandes interactives. Évite ~39 ms + ~7 MB
|
|
38
|
+
* d'import eager sur CHAQUE boot non-interactif (la quasi-totalité). Garanti peuplé
|
|
39
|
+
* avant tout usage (action() le charge si interactif ; Builder le charge défensivement).
|
|
40
|
+
*/
|
|
41
|
+
prompts;
|
|
42
|
+
response = {};
|
|
43
|
+
kernelEvent = "onRegister";
|
|
44
|
+
/** Durée de vie déclarée (cf {@link OptionsCommandInterface.lifetime}). */
|
|
45
|
+
lifetime = "oneshot";
|
|
46
|
+
/** Profil d'exécution déclaré (cf {@link OptionsCommandInterface.runProfile}) — `null` si non déclaré. */
|
|
47
|
+
runProfile = null;
|
|
48
|
+
/** Boot silencieux déclaré (cf {@link OptionsCommandInterface.quietBoot}). */
|
|
49
|
+
quietBoot = false;
|
|
50
|
+
currentCommand;
|
|
51
|
+
eventsRegistered = false;
|
|
52
|
+
/**
|
|
53
|
+
* Crée une instance de Command.
|
|
54
|
+
*
|
|
55
|
+
* @constructor
|
|
56
|
+
* @param {string} name - Nom de la commande.
|
|
57
|
+
* @param {string} [description] - Description de la commande.
|
|
58
|
+
* @param {Cli} cli - Instance de la classe Cli.
|
|
59
|
+
* @param {OptionsCommandInterface} [options] - Options spécifiques à la commande.
|
|
60
|
+
*/
|
|
61
|
+
constructor(name, description = "", cli, options) {
|
|
62
|
+
const container = cli.container;
|
|
63
|
+
const myoptions = extend({}, defaultCommandOptions, options);
|
|
64
|
+
super(name, container, null, myoptions);
|
|
65
|
+
this.cli = cli;
|
|
66
|
+
this.program = this.cli.commander;
|
|
67
|
+
this.kernelEvent = this.options.kernelEvent;
|
|
68
|
+
this.lifetime = this.options.lifetime ?? "oneshot";
|
|
69
|
+
this.runProfile = this.options.runProfile ?? null;
|
|
70
|
+
this.quietBoot = this.options.quietBoot === true;
|
|
71
|
+
this.command = this.createCommand(name, description);
|
|
72
|
+
this.command?.action((...args) => {
|
|
73
|
+
if (this.kernel) {
|
|
74
|
+
this.cli.resolveCommand(this, args);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
return this.action(...args);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
setEvents(...args) {
|
|
81
|
+
if (this.kernel && !this.eventsRegistered) {
|
|
82
|
+
this.eventsRegistered = true;
|
|
83
|
+
if (this.onKernelPreStart) this.kernel.once("onPreStart", this.onKernelPreStart.bind(this, ...args));
|
|
84
|
+
if (this.onKernelStart) this.kernel.once("onStart", this.onKernelStart.bind(this, ...args));
|
|
85
|
+
if (this.onKernelPreRegister) this.kernel.once("onPreRegister", this.onKernelPreRegister.bind(this, ...args));
|
|
86
|
+
if (this.onKernelRegister) this.kernel.once("onRegister", this.onKernelRegister.bind(this, ...args));
|
|
87
|
+
if (this.onKernelPreBoot) this.kernel.once("onPreBoot", this.onKernelPreBoot.bind(this, ...args));
|
|
88
|
+
if (this.onKernelBoot) this.kernel.once("onBoot", this.onKernelBoot.bind(this, ...args));
|
|
89
|
+
if (this.onKernelReady) this.kernel.once("onReady", this.onKernelReady.bind(this, ...args));
|
|
90
|
+
if (this.onKernelServersReady) this.kernel.once("onServersReady", this.onKernelServersReady.bind(this, ...args));
|
|
91
|
+
if (this.onKernelPostReady) this.kernel.once("onPostReady", this.onKernelPostReady.bind(this, ...args));
|
|
92
|
+
if (this.onKernelTerminate) this.kernel.once("onTerminate", this.onKernelTerminate.bind(this, ...args));
|
|
93
|
+
this.kernel.once(this.kernelEvent, tagUnboundedListener(this.action.bind(this, ...args)));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
isComplete() {
|
|
97
|
+
if (this.kernel) return this.kernel.isCommandComplete(this.kernel.Events[this.kernelEvent]);
|
|
98
|
+
throw new Error(`Kernel not found`);
|
|
99
|
+
}
|
|
100
|
+
description() {
|
|
101
|
+
return this.command.description();
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Charge `@inquirer/prompts` à la demande (import dynamique, idempotent) et le pose
|
|
105
|
+
* sur {@link prompts}. Appelé pour les commandes interactives — garde l'import lourd
|
|
106
|
+
* (~39 ms / ~7 MB) HORS du boot des commandes non-interactives.
|
|
107
|
+
*/
|
|
108
|
+
async loadPrompts() {
|
|
109
|
+
if (!this.prompts) this.prompts = await chargePrompts();
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Rend un argument : celui qu'on a reçu, ou celui qu'on DEMANDE.
|
|
113
|
+
*
|
|
114
|
+
* 🔴 Une commande qui exige un argument positionnel (`<identifier>`) refuse
|
|
115
|
+
* avant même d'exister : commander répond « error: missing required argument
|
|
116
|
+
* 'identifier' » et le kernel sort en 1. C'est juste quand on TAPE la ligne
|
|
117
|
+
* et qu'on a oublié un mot ; c'est absurde quand on a CHOISI la commande dans
|
|
118
|
+
* le menu — on n'a rien oublié, on ne savait pas. Vécu sur
|
|
119
|
+
* `security:user:add` : le menu propose le geste, la commande le refuse.
|
|
120
|
+
*
|
|
121
|
+
* La règle vit ICI et pas dans chaque commande : quatre commandes du dépôt
|
|
122
|
+
* attendent un argument, et quatre copies d'une même règle divergent. Pour en
|
|
123
|
+
* profiter, une commande déclare son argument OPTIONNEL (`[identifier]` —
|
|
124
|
+
* sinon commander refuse avant nous) puis passe ce qu'elle a reçu.
|
|
125
|
+
*
|
|
126
|
+
* **Hors terminal, on ne demande RIEN** : un pipeline sans TTY resterait
|
|
127
|
+
* suspendu sur une question que personne ne lit, jusqu'au timeout du job.
|
|
128
|
+
* L'échec reste un échec — mais il montre la ligne exacte à taper.
|
|
129
|
+
*
|
|
130
|
+
* @param value - ce que la ligne de commande a fourni (souvent `undefined`)
|
|
131
|
+
* @param spec - nom de l'argument, question posée, choix éventuels ; `isTTY`
|
|
132
|
+
* est INJECTABLE pour que la règle s'éprouve sans terminal
|
|
133
|
+
* @returns la valeur, taillée
|
|
134
|
+
* @throws Si l'argument manque et qu'aucun terminal ne peut le demander
|
|
135
|
+
*/
|
|
136
|
+
async askArgument(value, spec) {
|
|
137
|
+
const trimmed = typeof value === "string" ? value.trim() : "";
|
|
138
|
+
if (trimmed.length > 0) return trimmed;
|
|
139
|
+
if (!(spec.isTTY ?? Boolean(process.stdin.isTTY))) {
|
|
140
|
+
const example = spec.choices?.length ? `<${spec.choices.join("|")}>` : `<${spec.name}>`;
|
|
141
|
+
throw new Error(`${spec.name} est requis — aucun terminal pour le demander : nodefony ${this.name} ${example}`);
|
|
142
|
+
}
|
|
143
|
+
await this.loadPrompts();
|
|
144
|
+
const answer = spec.choices?.length ? await this.prompts.select({
|
|
145
|
+
message: spec.message,
|
|
146
|
+
choices: spec.choices.map((c) => ({
|
|
147
|
+
name: c,
|
|
148
|
+
value: c
|
|
149
|
+
}))
|
|
150
|
+
}) : await this.prompts.input({
|
|
151
|
+
message: spec.message,
|
|
152
|
+
validate: (v) => v.trim().length > 0 || `${spec.name} est requis`
|
|
153
|
+
});
|
|
154
|
+
return String(answer).trim();
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Méthode d'action de la commande.
|
|
158
|
+
*
|
|
159
|
+
* @private
|
|
160
|
+
* @param {...any} args - Arguments passés à la commande.
|
|
161
|
+
* @returns {Promise<any>} Promise résolue avec le résultat de l'action.
|
|
162
|
+
*/
|
|
163
|
+
async action(...args) {
|
|
164
|
+
const current = args[args.length - 1];
|
|
165
|
+
this.getCliOptions();
|
|
166
|
+
if (this.interactive || this.forceInteractive) await this.loadPrompts();
|
|
167
|
+
if (this.options.showBanner) await this.showBanner();
|
|
168
|
+
if (this.builder) await this.builder.run(...args);
|
|
169
|
+
const res = await this.run(...args);
|
|
170
|
+
this.currentCommand = current;
|
|
171
|
+
return res;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Méthode principale pour exécuter la commande.
|
|
175
|
+
*
|
|
176
|
+
* @public
|
|
177
|
+
* @param {...any} args - Arguments passés à la commande.
|
|
178
|
+
* @returns {Promise<any>} Promise résolue avec le résultat de l'exécution.
|
|
179
|
+
*/
|
|
180
|
+
async run(...args) {
|
|
181
|
+
if (this.kernel) this.kernel.command = this;
|
|
182
|
+
if (this.interactive || this.forceInteractive) {
|
|
183
|
+
const response = await this.interaction(...args);
|
|
184
|
+
return Array.isArray(response) ? this.generate(...response) : this.generate(response);
|
|
185
|
+
}
|
|
186
|
+
return this.generate(...args);
|
|
187
|
+
}
|
|
188
|
+
forceInteractiveMode() {
|
|
189
|
+
this.forceInteractive = true;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Méthode pour l'interaction avec l'utilisateur.
|
|
193
|
+
*
|
|
194
|
+
* @public
|
|
195
|
+
* @param {...any} args - Arguments passés à la commande.
|
|
196
|
+
* @returns {Promise<any>} Promise résolue avec le résultat de l'interaction.
|
|
197
|
+
*/
|
|
198
|
+
async interaction(...args) {
|
|
199
|
+
return Promise.resolve(args);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Méthode pour générer le résultat de la commande.
|
|
203
|
+
*
|
|
204
|
+
* @public
|
|
205
|
+
* @param {...any} args - Arguments passés à la commande.
|
|
206
|
+
* @returns {Promise<any>} Promise résolue avec le résultat généré.
|
|
207
|
+
*/
|
|
208
|
+
async generate(...args) {
|
|
209
|
+
return Promise.resolve(args);
|
|
210
|
+
}
|
|
211
|
+
getCliOptions() {
|
|
212
|
+
this.debug = this.cli?.commander?.opts().debug || false;
|
|
213
|
+
this.interactive = this.cli?.commander?.opts().interactive || false;
|
|
214
|
+
}
|
|
215
|
+
createCommand(name, description) {
|
|
216
|
+
const cmd = new Command(name);
|
|
217
|
+
if (description) cmd.description(description);
|
|
218
|
+
if (this.options?.helpGroup) cmd.helpGroup(this.options.helpGroup);
|
|
219
|
+
this.program.addCommand(cmd);
|
|
220
|
+
return cmd;
|
|
221
|
+
}
|
|
222
|
+
alias(name) {
|
|
223
|
+
return this.command?.alias(name);
|
|
224
|
+
}
|
|
225
|
+
addBuilder(builder) {
|
|
226
|
+
return this.builder = new builder(this);
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Méthode pour analyser les arguments de la commande.
|
|
230
|
+
*
|
|
231
|
+
* @public
|
|
232
|
+
* @param {string[]} [argv] - Tableau d'arguments à analyser.
|
|
233
|
+
* @param {commander.ParseOptions|undefined} [options] - Options de l'analyseur.
|
|
234
|
+
* @returns {Cmd} Instance de la classe Commander.
|
|
235
|
+
* @throws {Error} Lance une erreur si Commander n'est pas prêt.
|
|
236
|
+
*/
|
|
237
|
+
parse(argv, options) {
|
|
238
|
+
if (this.program) return this.program?.parse(argv, options);
|
|
239
|
+
throw new Error(`program not found`);
|
|
240
|
+
}
|
|
241
|
+
parseAsync(argv, options) {
|
|
242
|
+
if (this.program) return this.program?.parseAsync(argv, options);
|
|
243
|
+
throw new Error(`program not found`);
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Méthode pour effacer la commande actuelle.
|
|
247
|
+
*
|
|
248
|
+
* @private
|
|
249
|
+
*/
|
|
250
|
+
clearCommand() {
|
|
251
|
+
if (this.cli) this.cli.clearCommand();
|
|
252
|
+
else while (process.argv.length > 2) process.argv.pop();
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Méthode pour exécuter une commande avec des arguments spécifiques.
|
|
256
|
+
*
|
|
257
|
+
* @public
|
|
258
|
+
* @param {string} cmd - Commande à exécuter.
|
|
259
|
+
* @param {any[]} [args=[]] - Arguments de la commande.
|
|
260
|
+
* @returns {Cmd} Instance de la classe Commander.
|
|
261
|
+
*/
|
|
262
|
+
runCommand(cmd, args = []) {
|
|
263
|
+
this.clearCommand();
|
|
264
|
+
if (cmd) process.argv.push(cmd);
|
|
265
|
+
return this.parse(process.argv.concat(args));
|
|
266
|
+
}
|
|
267
|
+
async runCommandAsync(cmd, args = []) {
|
|
268
|
+
this.clearCommand();
|
|
269
|
+
if (cmd) process.argv.push(cmd);
|
|
270
|
+
return this.parseAsync(process.argv.concat(args));
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Méthode pour ajouter une option à la commande.
|
|
274
|
+
*
|
|
275
|
+
* @public
|
|
276
|
+
* @param {string} flags - Drapeaux de l'option.
|
|
277
|
+
* @param {string|undefined} [description] - Description de l'option.
|
|
278
|
+
* @returns {Option} Instance de la classe Option.
|
|
279
|
+
* @throws {Error} Lance une erreur si Commander n'est pas prêt.
|
|
280
|
+
*/
|
|
281
|
+
addOption(flags, description, suggestions) {
|
|
282
|
+
if (this.command) {
|
|
283
|
+
const opt = new Option(flags, description);
|
|
284
|
+
if (suggestions?.length) OPTION_SUGGESTIONS.set(opt, suggestions);
|
|
285
|
+
this.command.addOption(opt);
|
|
286
|
+
return opt;
|
|
287
|
+
}
|
|
288
|
+
throw new Error(`Commander not ready`);
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Méthode pour ajouter un argument à la commande.
|
|
292
|
+
*
|
|
293
|
+
* @public
|
|
294
|
+
* @param {string} arg - Argument de la commande.
|
|
295
|
+
* @param {string|undefined} [description] - Description de l'argument.
|
|
296
|
+
* @returns {Argument} Instance de la classe Argument.
|
|
297
|
+
* @throws {Error} Lance une erreur si Commander n'est pas prêt.
|
|
298
|
+
*/
|
|
299
|
+
addArgument(arg, description) {
|
|
300
|
+
if (this.command) {
|
|
301
|
+
const Arg = new Argument(arg, description);
|
|
302
|
+
this.command.addArgument(Arg);
|
|
303
|
+
return Arg;
|
|
304
|
+
}
|
|
305
|
+
throw new Error(`Command not ready`);
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Méthode pour afficher une bannière liée à la commande.
|
|
309
|
+
*
|
|
310
|
+
* @public
|
|
311
|
+
* @returns {Promise<string>} Promise résolue avec la bannière générée.
|
|
312
|
+
*/
|
|
313
|
+
async showBanner() {
|
|
314
|
+
if (this.cli) return this.cli.asciify(` ${this.name}`).then((data) => {
|
|
315
|
+
if (this.json) return data;
|
|
316
|
+
if (this.cli) {
|
|
317
|
+
if (this.cli.options.clear) this.cli.clear();
|
|
318
|
+
const color = this.cli.clc.blueBright.bold;
|
|
319
|
+
console.log(color(data));
|
|
320
|
+
this.cli.blankLine();
|
|
321
|
+
}
|
|
322
|
+
return data;
|
|
323
|
+
}).catch((e) => e);
|
|
324
|
+
return Promise.resolve("");
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Méthode pour gérer la journalisation de la commande.
|
|
328
|
+
*
|
|
329
|
+
* @public
|
|
330
|
+
* @param {any} pci - Informations du client.
|
|
331
|
+
* @param {Severity} severity - Sévérité du message.
|
|
332
|
+
* @param {Msgid} msgid - Identifiant du message.
|
|
333
|
+
* @param {Message} msg - Contenu du message.
|
|
334
|
+
*/
|
|
335
|
+
logger(pci, severity, msgid, msg) {
|
|
336
|
+
try {
|
|
337
|
+
if (!msgid) msgid = `COMMAND ${this.name}`;
|
|
338
|
+
return super.logger(pci, severity, msgid, msg);
|
|
339
|
+
} catch (e) {
|
|
340
|
+
console.log(e, "\n", pci);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
async terminate(code) {
|
|
344
|
+
return this.cli?.terminate(code);
|
|
345
|
+
}
|
|
346
|
+
};
|
|
347
|
+
//#endregion
|
|
348
|
+
export { OPTION_SUGGESTIONS, Command$1 as default };
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
//#region src/config/configProvenance.ts
|
|
2
|
+
/** Objet « simple » (pas null, pas tableau, pas instance exotique). */
|
|
3
|
+
function isPlainObject(v) {
|
|
4
|
+
return typeof v === "object" && v !== null && !Array.isArray(v) && (Object.getPrototypeOf(v) === Object.prototype || Object.getPrototypeOf(v) === null);
|
|
5
|
+
}
|
|
6
|
+
/** Égalité structurelle suffisante pour des valeurs de config (JSON-sérialisables). */
|
|
7
|
+
function valueEquals(a, b) {
|
|
8
|
+
if (a === b) return true;
|
|
9
|
+
try {
|
|
10
|
+
return JSON.stringify(a) === JSON.stringify(b);
|
|
11
|
+
} catch {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function originOf(pathLower, resolved, def, envPaths) {
|
|
16
|
+
if (envPaths.has(pathLower)) return "env";
|
|
17
|
+
if (!valueEquals(resolved, def)) return "app";
|
|
18
|
+
return "default";
|
|
19
|
+
}
|
|
20
|
+
function walk(resolved, defaults, prefix, envPaths, out) {
|
|
21
|
+
for (const key of Object.keys(resolved)) {
|
|
22
|
+
const path = prefix ? `${prefix}.${key}` : key;
|
|
23
|
+
const rv = resolved[key];
|
|
24
|
+
const dv = defaults ? defaults[key] : void 0;
|
|
25
|
+
if (isPlainObject(rv) && isPlainObject(dv)) walk(rv, dv, path, envPaths, out);
|
|
26
|
+
else out[path] = originOf(path.toLowerCase(), rv, dv, envPaths);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Calcule l'origine de chaque valeur feuille de la config résolue d'un module.
|
|
31
|
+
*
|
|
32
|
+
* @param resolved - config effective du module (ex. `module.options` résolu).
|
|
33
|
+
* @param defaults - défauts purs du module (`schema.parse({})`).
|
|
34
|
+
* @param envPaths - chemins surchargés par env, en **dot-notation minuscule**
|
|
35
|
+
* (ex. `"jwt.accessttls"`) — typiquement dérivés de `parseNfEnvOverrides`.
|
|
36
|
+
* @returns map `{ "chemin.pointé": "default" | "app" | "env" }`.
|
|
37
|
+
*/
|
|
38
|
+
function computeConfigProvenance(resolved, defaults, envPaths = /* @__PURE__ */ new Set()) {
|
|
39
|
+
const out = {};
|
|
40
|
+
walk(resolved, defaults, "", envPaths, out);
|
|
41
|
+
return out;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Reconstruit l'objet des défauts d'un module depuis son JSON Schema
|
|
45
|
+
* (`z.toJSONSchema`, retourné par `Module.configSchema()`) — utile quand le schéma
|
|
46
|
+
* Zod n'est pas accessible (côté data plane admin). Walk récursif des `properties` :
|
|
47
|
+
* prend `default` quand présent (y compris pour un objet entier), sinon descend.
|
|
48
|
+
*
|
|
49
|
+
* @param jsonSchema - JSON Schema d'une config de module (ou `null`).
|
|
50
|
+
* @returns objet des défauts (vide si pas de schéma exploitable).
|
|
51
|
+
*/
|
|
52
|
+
function extractJsonSchemaDefaults(jsonSchema) {
|
|
53
|
+
const out = {};
|
|
54
|
+
if (!isPlainObject(jsonSchema)) return out;
|
|
55
|
+
const props = jsonSchema.properties;
|
|
56
|
+
if (!isPlainObject(props)) return out;
|
|
57
|
+
for (const key of Object.keys(props)) {
|
|
58
|
+
const node = props[key];
|
|
59
|
+
if (!isPlainObject(node)) continue;
|
|
60
|
+
if ("default" in node) out[key] = node.default;
|
|
61
|
+
else if (isPlainObject(node.properties)) out[key] = extractJsonSchemaDefaults(node);
|
|
62
|
+
}
|
|
63
|
+
return out;
|
|
64
|
+
}
|
|
65
|
+
function walkReserved(schemaProps, resolved, prefix, out) {
|
|
66
|
+
for (const key of Object.keys(schemaProps)) {
|
|
67
|
+
const node = schemaProps[key];
|
|
68
|
+
if (!isPlainObject(node)) continue;
|
|
69
|
+
const path = prefix ? `${prefix}.${key}` : key;
|
|
70
|
+
const rv = resolved ? resolved[key] : void 0;
|
|
71
|
+
if (node.reserved === true) {
|
|
72
|
+
if (rv !== void 0 && !valueEquals(rv, node.default)) out.push({
|
|
73
|
+
path,
|
|
74
|
+
description: typeof node.description === "string" ? node.description : ""
|
|
75
|
+
});
|
|
76
|
+
} else if (isPlainObject(node.properties)) walkReserved(node.properties, isPlainObject(rv) ? rv : void 0, path, out);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Trouve les clés `reserved` du JSON Schema d'un module que la config résolue a
|
|
81
|
+
* fait DÉVIER de leur défaut — i.e. qu'une application a posées en croyant régler un
|
|
82
|
+
* comportement, alors qu'elles sont inertes (le levier vit ailleurs). Le pendant, au
|
|
83
|
+
* BOOT, du drapeau `reserved` que Studio se contente de griser : sans ce filet, une
|
|
84
|
+
* clé réservée écrite reste un silence (contrairement à une clé inconnue, qui est
|
|
85
|
+
* déjà signalée — {@link computeConfigProvenance} côté env). Chaque entrée porte la
|
|
86
|
+
* `description` du champ, qui nomme la clé active de remplacement.
|
|
87
|
+
*
|
|
88
|
+
* @param jsonSchema - JSON Schema du module (`Module.configSchema()`), ou `null`.
|
|
89
|
+
* @param resolved - config effective du module (`module.options` post-validation).
|
|
90
|
+
* @returns les clés réservées posées à une valeur non-défaut (vide si aucune).
|
|
91
|
+
*/
|
|
92
|
+
function findSetReservedKeys(jsonSchema, resolved) {
|
|
93
|
+
const out = [];
|
|
94
|
+
if (!isPlainObject(jsonSchema)) return out;
|
|
95
|
+
const props = jsonSchema.properties;
|
|
96
|
+
if (!isPlainObject(props)) return out;
|
|
97
|
+
walkReserved(props, resolved, "", out);
|
|
98
|
+
return out;
|
|
99
|
+
}
|
|
100
|
+
//#endregion
|
|
101
|
+
export { computeConfigProvenance, extractJsonSchemaDefaults, findSetReservedKeys };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
//#region src/config/defaults.ts
|
|
2
|
+
/**
|
|
3
|
+
* Configuration framework par défaut, fusionnée sous la config de l'app au boot.
|
|
4
|
+
* Ne JAMAIS muter à l'exécution (le merge `extend(true, {}, defaultAppConfig, …)`
|
|
5
|
+
* clone ; l'invariant d'immutabilité est couvert par test).
|
|
6
|
+
*/
|
|
7
|
+
const defaultAppConfig = {
|
|
8
|
+
modules: [],
|
|
9
|
+
locale: "en_en",
|
|
10
|
+
templating: "eta",
|
|
11
|
+
packageManager: "npm",
|
|
12
|
+
shutdownDeadline: 15e3,
|
|
13
|
+
domain: "localhost",
|
|
14
|
+
servers: {
|
|
15
|
+
statics: true,
|
|
16
|
+
http: { port: 5151 },
|
|
17
|
+
https: {
|
|
18
|
+
port: 5152,
|
|
19
|
+
protocol: "2.0"
|
|
20
|
+
},
|
|
21
|
+
ws: {},
|
|
22
|
+
wss: {}
|
|
23
|
+
},
|
|
24
|
+
timing: {
|
|
25
|
+
enabled: null,
|
|
26
|
+
verbose: false
|
|
27
|
+
},
|
|
28
|
+
log: {
|
|
29
|
+
active: true,
|
|
30
|
+
debug: [],
|
|
31
|
+
requestFormat: "auto",
|
|
32
|
+
buffered: "auto",
|
|
33
|
+
driver: "stdout",
|
|
34
|
+
file: { sync: false },
|
|
35
|
+
queryDriver: "auto"
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
//#endregion
|
|
39
|
+
export { defaultAppConfig };
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { extend } from "../Tools.js";
|
|
2
|
+
import { applyResolvedPath, parseNfEnvOverrides, pathLooksSecret, resolveFailureHint } from "./envOverride.js";
|
|
3
|
+
import { defaultAppConfig } from "./defaults.js";
|
|
4
|
+
import { validateAppConfig } from "./schema.js";
|
|
5
|
+
//#region src/config/defineConfig.ts
|
|
6
|
+
/**
|
|
7
|
+
* Moteur `defineConfig` — builder unique de la config d'application (back-only, D1).
|
|
8
|
+
*
|
|
9
|
+
* `nodefony.config.ts` exporte `default defineConfig(obj | (ctx) => obj)`. Le
|
|
10
|
+
* builder porte TOUS les défauts (deep-merge user sur {@link defaultAppConfig}),
|
|
11
|
+
* valide (Zod) au resolve, et retourne un DESCRIPTEUR que le Kernel résout au boot
|
|
12
|
+
* avec le contexte d'environnement (`ctx`). La forme fonction permet de différencier
|
|
13
|
+
* la config par environnement sans fichier `config.<env>.ts` parallèle (D3).
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* // nodefony.config.ts
|
|
18
|
+
* import { defineConfig } from "nodefony";
|
|
19
|
+
* export default defineConfig((ctx) => ({
|
|
20
|
+
* domain: ctx.isProd ? "0.0.0.0" : "127.0.0.1",
|
|
21
|
+
* servers: { http: { port: 8080 } },
|
|
22
|
+
* modules: ["@nodefony/http", "@nodefony/framework"],
|
|
23
|
+
* }));
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
/** Segment réservé adressant la config de l'APPLICATION (vs un module). */
|
|
27
|
+
const APP_SEGMENT = "app";
|
|
28
|
+
/** Clé non-énumérable où le rapport d'override app est rangé sur la config résolue. */
|
|
29
|
+
const APP_ENV_REPORT = Symbol("nodefony.appEnvOverrideReport");
|
|
30
|
+
/**
|
|
31
|
+
* Applique les overrides `NF__APP__<CHEMIN…>` sur la config APP **fusionnée**,
|
|
32
|
+
* AVANT sa validation Zod (fail-closed : une valeur invalide sera rejetée par
|
|
33
|
+
* `validateAppConfig`). Pur (ne loggue pas) : renvoie un rapport que le Kernel
|
|
34
|
+
* surface. `app` n'est pas un nom de module → 0 collision avec `NF__<MODULE>__*`.
|
|
35
|
+
*
|
|
36
|
+
* N'altère QUE des chemins déjà présents (= champs ayant un défaut framework, cf
|
|
37
|
+
* `defaultAppConfig`) ; un champ opt-in SANS défaut (`domainCheck`, `domainAlias`)
|
|
38
|
+
* doit être déclaré par l'app pour devenir surchargeable — sinon WARNING + « did
|
|
39
|
+
* you mean ». Le schéma app étant non-strict, on ne crée jamais de clé fantôme.
|
|
40
|
+
*
|
|
41
|
+
* @param merged - config app fusionnée (mutée en place).
|
|
42
|
+
* @param env - source d'environnement (typiquement `process.env`).
|
|
43
|
+
* @returns le rapport (appliqués + warnings).
|
|
44
|
+
*/
|
|
45
|
+
function applyAppEnvOverrides(merged, env) {
|
|
46
|
+
const applied = [];
|
|
47
|
+
const warnings = [];
|
|
48
|
+
for (const ov of parseNfEnvOverrides(env)) {
|
|
49
|
+
if (ov.moduleSeg !== APP_SEGMENT) continue;
|
|
50
|
+
if (applyResolvedPath(merged, ov.path, ov.value)) applied.push({
|
|
51
|
+
path: ov.path,
|
|
52
|
+
secret: pathLooksSecret(ov.path)
|
|
53
|
+
});
|
|
54
|
+
else warnings.push(`Override env app ignoré : chemin "${ov.path.join(".")}" inconnu (${ov.envKey})` + resolveFailureHint(merged, ov.path));
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
applied,
|
|
58
|
+
warnings
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Lit le rapport d'override `NF__APP__*` rangé sur une config résolue (clé
|
|
63
|
+
* non-énumérable). `null` si absent (config legacy / pas un descripteur).
|
|
64
|
+
*
|
|
65
|
+
* @param config - config app résolue par {@link defineConfig}.
|
|
66
|
+
* @returns le rapport, ou `null`.
|
|
67
|
+
*/
|
|
68
|
+
function readAppEnvOverrideReport(config) {
|
|
69
|
+
if (config && typeof config === "object" && APP_ENV_REPORT in config) return config[APP_ENV_REPORT];
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Marque de marque (brand) interne d'un descripteur de config. Symbole privé au
|
|
74
|
+
* module : non exporté → un objet quelconque ne peut pas se faire passer pour un
|
|
75
|
+
* descripteur, et le type public {@link AppConfigDescriptor} reste propre.
|
|
76
|
+
*/
|
|
77
|
+
const CONFIG_DESCRIPTOR = Symbol("nodefony.configDescriptor");
|
|
78
|
+
/**
|
|
79
|
+
* Deep-merge la config user sous les défauts framework, puis valide.
|
|
80
|
+
*
|
|
81
|
+
* Réutilise `extend(true, {}, …)` — le merge profond standard du framework (cf
|
|
82
|
+
* `Module.readOverrideModuleConfig`, `Syslog`) : 1 seule sémantique de merge
|
|
83
|
+
* partout. Cible `{}` fraîche → ne mute NI les défauts NI l'input. Coût négligeable
|
|
84
|
+
* (boot unique, ~µs ; ce n'est pas un hot path — cf retrait de `extend` du pipeline
|
|
85
|
+
* per-requête, commit 02c32c2, hors sujet ici).
|
|
86
|
+
*
|
|
87
|
+
* @param userInput - config écrite par l'app (déjà résolue si forme fonction).
|
|
88
|
+
* @returns config fusionnée + validée.
|
|
89
|
+
*/
|
|
90
|
+
function mergeAndValidate(userInput) {
|
|
91
|
+
const merged = extend(true, {}, defaultAppConfig, userInput);
|
|
92
|
+
const report = applyAppEnvOverrides(merged, process.env);
|
|
93
|
+
validateAppConfig(merged);
|
|
94
|
+
Object.defineProperty(merged, APP_ENV_REPORT, {
|
|
95
|
+
value: report,
|
|
96
|
+
enumerable: false,
|
|
97
|
+
configurable: true
|
|
98
|
+
});
|
|
99
|
+
return merged;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Builder unique de la config d'application.
|
|
103
|
+
*
|
|
104
|
+
* @typeParam E - forme du catalogue d'env typé (inféré de `defineEnv`, Lot 2) →
|
|
105
|
+
* `ctx.env` typé + auto-complété dans la forme fonction.
|
|
106
|
+
* @param input - objet de config, ou fonction `(ctx) => objet` pour le par-env.
|
|
107
|
+
* @returns un descripteur résolvable par le Kernel au boot.
|
|
108
|
+
*/
|
|
109
|
+
function defineConfig(input) {
|
|
110
|
+
return {
|
|
111
|
+
[CONFIG_DESCRIPTOR]: true,
|
|
112
|
+
resolve(ctx) {
|
|
113
|
+
return mergeAndValidate(typeof input === "function" ? input(ctx) : input);
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Garde de type : `value` est-il un descripteur produit par {@link defineConfig} ?
|
|
119
|
+
* Utilisé par le Kernel (`loadApp`, Lot 4) pour distinguer une app moderne
|
|
120
|
+
* (`export default defineConfig(…)`) d'une config objet legacy.
|
|
121
|
+
*
|
|
122
|
+
* @param value - valeur à tester (typiquement l'export `default` de l'app).
|
|
123
|
+
* @returns `true` si c'est un descripteur de config.
|
|
124
|
+
*/
|
|
125
|
+
function isConfigDescriptor(value) {
|
|
126
|
+
return typeof value === "object" && value !== null && value[CONFIG_DESCRIPTOR] === true;
|
|
127
|
+
}
|
|
128
|
+
//#endregion
|
|
129
|
+
export { applyAppEnvOverrides, defineConfig, isConfigDescriptor, readAppEnvOverrideReport };
|