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,158 @@
|
|
|
1
|
+
import http from "node:http";
|
|
2
|
+
//#region src/service/dev/bootVerdict.ts
|
|
3
|
+
/**
|
|
4
|
+
* Le verdict de boot d'un runtime, OBSERVÉ DE L'EXTÉRIEUR — une seule implémentation.
|
|
5
|
+
*
|
|
6
|
+
* POURQUOI ce fichier existe : deux appelants ont besoin de la même réponse à la même
|
|
7
|
+
* question, « cette application est-elle AMPUTÉE ? », et ils y répondaient séparément —
|
|
8
|
+
* le superviseur de développement en la journalisant, le lancement détaché pas du tout.
|
|
9
|
+
* Or c'est le second qui sert la production et la suite e2e de toute application
|
|
10
|
+
* générée : la question y était posée par personne, et un module déclaré au manifeste
|
|
11
|
+
* qui ne charge pas rendait 404 sur toutes ses routes, sans un mot.
|
|
12
|
+
*
|
|
13
|
+
* Le canal est HTTP en boucle locale (`/nodefony/kernel/api/livez`), jamais une IPC :
|
|
14
|
+
* c'est une OBSERVATION du process réellement en train de servir, pas une confidence
|
|
15
|
+
* qu'il se fait à lui-même. La route est publique par dessein (sonde k8s) et son champ
|
|
16
|
+
* `degraded` ne nomme personne — les noms restent réservés à l'appelant authentifié.
|
|
17
|
+
* Ici on ne lit qu'un booléen ; les noms, on va les chercher dans le JOURNAL.
|
|
18
|
+
*/
|
|
19
|
+
/** Intervalle de re-sonde tant que le verdict reste inconclusif. */
|
|
20
|
+
const POLL_MS = 250;
|
|
21
|
+
/**
|
|
22
|
+
* Interroge `livez` et rend le verdict de boot, ou pourquoi il n'y en a pas.
|
|
23
|
+
*
|
|
24
|
+
* Aucune de ces situations ne se confond avec « sain » : une sonde muette ne doit ni
|
|
25
|
+
* bloquer un démarrage, ni le certifier.
|
|
26
|
+
*
|
|
27
|
+
* @param port - port en clair du runtime (boucle locale).
|
|
28
|
+
* @param deps - injection du client HTTP, pour éprouver sans réseau.
|
|
29
|
+
* @returns `true` (dégradé), `false` (sain), `"booting"` (verdict pas encore stable),
|
|
30
|
+
* `"unreachable"` (aucune réponse exploitable).
|
|
31
|
+
*/
|
|
32
|
+
function probeBootDegraded(port, deps = {}) {
|
|
33
|
+
if (!port || !Number.isInteger(port) || port < 1 || port > 65535) return Promise.resolve("unreachable");
|
|
34
|
+
return (deps.fetchLivez ?? httpGetLivez)(port).then((body) => {
|
|
35
|
+
if (body === null) return "unreachable";
|
|
36
|
+
try {
|
|
37
|
+
const j = JSON.parse(body);
|
|
38
|
+
return j.booted ? Boolean(j.degraded) : "booting";
|
|
39
|
+
} catch {
|
|
40
|
+
return "unreachable";
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Re-sonde jusqu'à obtenir un verdict STABLE, ou jusqu'à l'échéance.
|
|
46
|
+
*
|
|
47
|
+
* Sans cette attente, la sonde tomberait dans la course entre l'ouverture des ports et
|
|
48
|
+
* la fin du boot, et crierait « dégradé » sur une application parfaitement saine —
|
|
49
|
+
* c'est-à-dire qu'elle deviendrait une alarme qu'on apprend à ignorer.
|
|
50
|
+
*
|
|
51
|
+
* @param port - port en clair du runtime.
|
|
52
|
+
* @param settleMs - durée maximale d'attente d'un verdict.
|
|
53
|
+
* @param deps - injection du client HTTP et de l'attente, pour éprouver sans réseau.
|
|
54
|
+
* @returns le verdict, ou `null` s'il ne s'est pas stabilisé à temps.
|
|
55
|
+
*/
|
|
56
|
+
async function waitBootVerdict(port, settleMs, deps = {}) {
|
|
57
|
+
const now = deps.now ?? (() => Date.now());
|
|
58
|
+
const wait = deps.delay ?? ((ms) => new Promise((r) => {
|
|
59
|
+
setTimeout(r, ms);
|
|
60
|
+
}));
|
|
61
|
+
const deadline = now() + settleMs;
|
|
62
|
+
for (;;) {
|
|
63
|
+
if (deps.aborted?.()) return null;
|
|
64
|
+
const probe = await probeBootDegraded(port, deps);
|
|
65
|
+
if (probe === "unreachable") return null;
|
|
66
|
+
if (probe !== "booting") return probe;
|
|
67
|
+
if (now() >= deadline) return null;
|
|
68
|
+
await wait(POLL_MS);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Extrait du journal d'un runtime les modules que le boot a IGNORÉS, avec leur motif.
|
|
73
|
+
*
|
|
74
|
+
* POURQUOI lire le journal plutôt que la route : `livez` ne nomme les modules qu'à un
|
|
75
|
+
* appelant authentifié, et une sonde de démarrage n'a pas d'identité à présenter. Le
|
|
76
|
+
* journal, lui, est le fichier qu'on vient d'écrire — il porte le message que le Kernel
|
|
77
|
+
* a émis en écartant le module, motif compris. Le format lu est celui de
|
|
78
|
+
* `Kernel.loadModulesFromManifest` ; le motif est ce qui suit le tiret cadratin.
|
|
79
|
+
*
|
|
80
|
+
* Fonction PURE : c'est ce qui la rend éprouvable sans démarrer quoi que ce soit.
|
|
81
|
+
*
|
|
82
|
+
* @param journal - contenu brut du journal (les couleurs sont tolérées).
|
|
83
|
+
* @returns une ligne par module ignoré, `nom — motif`, sans doublon et dans l'ordre.
|
|
84
|
+
*/
|
|
85
|
+
function extractSkippedModules(journal) {
|
|
86
|
+
const withoutColors = journal.replace(/\x1b\[[0-9;]*m/gu, "");
|
|
87
|
+
const pattern = /MODULE LOAD: échec non bloquant \(fail-soft\) de "([^"]+)" — (.*)$/gmu;
|
|
88
|
+
const vus = /* @__PURE__ */ new Set();
|
|
89
|
+
for (const m of withoutColors.matchAll(pattern)) vus.add(`${m[1]} — ${m[2].trim()}`);
|
|
90
|
+
return [...vus];
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Demande au runtime s'il peut SERVIR — question distincte de « ses ports
|
|
94
|
+
* répondent-ils ». Un pod dont le schéma de base est en retard écoute
|
|
95
|
+
* parfaitement et ne sert rien : l'orchestrateur le tient hors du répartiteur de
|
|
96
|
+
* charge, et un rapport qui n'annoncerait que « 2/2 ports UP » serait faux et
|
|
97
|
+
* rassurant à tort — exactement le défaut que ce fichier existe pour éviter.
|
|
98
|
+
*
|
|
99
|
+
* Même canal que {@link probeBootDegraded} (le `livez` du plan d'administration,
|
|
100
|
+
* en boucle locale) : une seule sonde, un seul endroit à corriger.
|
|
101
|
+
*
|
|
102
|
+
* @param port - port en clair du runtime (boucle locale).
|
|
103
|
+
* @param deps - injection du client HTTP, pour éprouver sans réseau.
|
|
104
|
+
* @returns le verdict, ou `null` si rien d'exploitable n'a été obtenu — une
|
|
105
|
+
* sonde muette ne certifie RIEN, elle se dit muette.
|
|
106
|
+
*/
|
|
107
|
+
function probeReadiness(port, deps = {}) {
|
|
108
|
+
if (!port || !Number.isInteger(port) || port < 1 || port > 65535) return Promise.resolve(null);
|
|
109
|
+
return (deps.fetchLivez ?? httpGetLivez)(port).then((body) => {
|
|
110
|
+
if (body === null) return null;
|
|
111
|
+
try {
|
|
112
|
+
const j = JSON.parse(body);
|
|
113
|
+
if (typeof j.ready !== "boolean") return null;
|
|
114
|
+
return {
|
|
115
|
+
ready: j.ready,
|
|
116
|
+
blocked: j.readinessBlocked ?? 0
|
|
117
|
+
};
|
|
118
|
+
} catch {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* GET `livez` en boucle locale, en clair. Rend `null` sur tout échec — c'est une
|
|
125
|
+
* observation best-effort, jamais un point de rupture du démarrage.
|
|
126
|
+
*
|
|
127
|
+
* @param port - port en clair du runtime.
|
|
128
|
+
* @returns le corps de la réponse, ou `null`.
|
|
129
|
+
*/
|
|
130
|
+
function httpGetLivez(port) {
|
|
131
|
+
return new Promise((resolve) => {
|
|
132
|
+
let repondu = false;
|
|
133
|
+
const conclure = (v) => {
|
|
134
|
+
if (!repondu) {
|
|
135
|
+
repondu = true;
|
|
136
|
+
resolve(v);
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
const req = http.get({
|
|
140
|
+
host: "127.0.0.1",
|
|
141
|
+
port,
|
|
142
|
+
path: "/nodefony/kernel/api/livez",
|
|
143
|
+
timeout: 1500
|
|
144
|
+
}, (res) => {
|
|
145
|
+
let data = "";
|
|
146
|
+
res.setEncoding("utf8");
|
|
147
|
+
res.on("data", (c) => data += c);
|
|
148
|
+
res.on("end", () => conclure(data));
|
|
149
|
+
});
|
|
150
|
+
req.once("error", () => conclure(null));
|
|
151
|
+
req.once("timeout", () => {
|
|
152
|
+
req.destroy();
|
|
153
|
+
conclure(null);
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
//#endregion
|
|
158
|
+
export { extractSkippedModules, probeBootDegraded, probeReadiness, waitBootVerdict };
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
import "../../cli/sysexits.js";
|
|
2
|
+
import { clearRuntimeState, defaultDevPorts, discoverDevProcesses, formatForeignRuntimes, probePorts, readRuntimeState, signalProcessGroup, splitByProject } from "./devProcess.js";
|
|
3
|
+
import { extractSkippedModules, waitBootVerdict } from "./bootVerdict.js";
|
|
4
|
+
import { DELEGATED_ENV } from "../../bin/resolveLocalCli.js";
|
|
5
|
+
import { closeSync, mkdirSync, openSync, readFileSync, writeSync } from "node:fs";
|
|
6
|
+
import path from "node:path";
|
|
7
|
+
import { spawn } from "node:child_process";
|
|
8
|
+
import http from "node:http";
|
|
9
|
+
import https from "node:https";
|
|
10
|
+
//#region src/service/dev/detachedStart.ts
|
|
11
|
+
/** Marqueur env anti-récursion : posé sur le child pour couper tout re-détachement. */
|
|
12
|
+
const DETACH_CHILD_ENV = "NF_DETACH_CHILD";
|
|
13
|
+
/**
|
|
14
|
+
* Environnement du child détaché — hérité du parent, MOINS ce qui ne se
|
|
15
|
+
* transmet pas.
|
|
16
|
+
*
|
|
17
|
+
* `DELEGATED_ENV` est une garde **anti-boucle de process** : le CLI global la
|
|
18
|
+
* pose sur lui-même juste avant de charger le CLI de l'application, pour que
|
|
19
|
+
* celui-ci exécute au lieu de redéléguer à l'infini. Elle décrit donc un état
|
|
20
|
+
* du process COURANT, pas une intention à propager.
|
|
21
|
+
*
|
|
22
|
+
* La transmettre au child était une panne silencieuse, et coûteuse à lire : le
|
|
23
|
+
* child est relancé sur le binaire d'ENTRÉE (`argv[1]`, le CLI global), et la
|
|
24
|
+
* garde héritée lui interdit précisément la délégation qui l'aurait renvoyé
|
|
25
|
+
* vers le CLI de l'application. Le framework du CLI global bootait alors
|
|
26
|
+
* l'application locale. Mesuré sur une application installée depuis les
|
|
27
|
+
* tarballs : **un seul module chargé sur huit**, puis « profil serveur mais
|
|
28
|
+
* aucun serveur en écoute » — un diagnostic qui ne parle jamais de délégation.
|
|
29
|
+
* Invisible en monorepo lié, où les deux CLI sont le même code.
|
|
30
|
+
*
|
|
31
|
+
* Le child repart donc du binaire d'entrée SANS la garde : il refait le chemin
|
|
32
|
+
* complet du parent, redélègue de lui-même, et exécute le CLI de l'application.
|
|
33
|
+
*
|
|
34
|
+
* @param parent - environnement du process appelant (`process.env`).
|
|
35
|
+
* @param extra - variables propres au lancement (cf `DetachedStartOptions.env`).
|
|
36
|
+
* @returns l'environnement à passer au child.
|
|
37
|
+
*/
|
|
38
|
+
function childEnv(parent, extra) {
|
|
39
|
+
const env = {
|
|
40
|
+
...parent,
|
|
41
|
+
...extra,
|
|
42
|
+
[DETACH_CHILD_ENV]: "1"
|
|
43
|
+
};
|
|
44
|
+
delete env[DELEGATED_ENV];
|
|
45
|
+
return env;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Drapeaux `node` qui TIENNENT un port — les seuls à ne pas suivre le child.
|
|
49
|
+
*
|
|
50
|
+
* Tout le reste de `process.execArgv` doit le suivre : `--expose-gc`,
|
|
51
|
+
* `--max-old-space-size`, `--import`, `--loader`… Un runtime lancé
|
|
52
|
+
* `node --expose-gc bin/nodefony production --detach` obtenait sinon un serveur SANS
|
|
53
|
+
* ce drapeau, et toute sonde mémoire y devenait un no-op parfaitement muet — le
|
|
54
|
+
* banc mesurait alors le déchet en attente de collecte au lieu du heap retenu.
|
|
55
|
+
*
|
|
56
|
+
* L'inspection fait exception parce que le parent est encore VIVANT pendant que
|
|
57
|
+
* l'enfant démarre (il attend sa readiness) : hériter le même port d'inspection tue
|
|
58
|
+
* l'enfant sur une adresse déjà prise, et le diagnostic ne parle jamais de débogueur.
|
|
59
|
+
*/
|
|
60
|
+
const PORT_HOLDING_FLAGS = /^--(inspect|debug)(-brk|-port|-publish-uid)?(=|$)/u;
|
|
61
|
+
/**
|
|
62
|
+
* Drapeaux `node` à transmettre au runtime détaché.
|
|
63
|
+
*
|
|
64
|
+
* Fonction PURE — c'est ce qui permet de l'éprouver sans lancer de process.
|
|
65
|
+
*
|
|
66
|
+
* @param parentExecArgv - `process.execArgv` du lanceur.
|
|
67
|
+
* @returns les drapeaux à replacer devant le binaire du child.
|
|
68
|
+
*/
|
|
69
|
+
function childExecArgv(parentExecArgv) {
|
|
70
|
+
return parentExecArgv.filter((a) => !PORT_HOLDING_FLAGS.test(a));
|
|
71
|
+
}
|
|
72
|
+
/** Fenêtre de tick de la boucle d'attente (ms). */
|
|
73
|
+
const TICK_MS = 500;
|
|
74
|
+
/** Nombre de lignes de log remontées au diagnostic d'échec. */
|
|
75
|
+
const TAIL_LINES = 10;
|
|
76
|
+
/**
|
|
77
|
+
* Fenêtre laissée au verdict de boot pour se STABILISER (ms).
|
|
78
|
+
*
|
|
79
|
+
* Les ports TCP acceptent avant que les modules soient debout : sonder trop tôt
|
|
80
|
+
* rendrait « dégradé » sur une application saine, c'est-à-dire une alarme qu'on
|
|
81
|
+
* apprend à ignorer.
|
|
82
|
+
*/
|
|
83
|
+
const DEGRADED_SETTLE_MS = 3e3;
|
|
84
|
+
/**
|
|
85
|
+
* Parse les flags du détacheur depuis argv (après node + bin) et STRIP ces flags
|
|
86
|
+
* des args relayés au child — un `--detach` relayé re-détacherait à l'infini.
|
|
87
|
+
* Fonction PURE (testable sans process).
|
|
88
|
+
*
|
|
89
|
+
* @param args - `process.argv.slice(2)`.
|
|
90
|
+
*/
|
|
91
|
+
function parseDetachArgs(args) {
|
|
92
|
+
const relayArgs = [];
|
|
93
|
+
let detach = false;
|
|
94
|
+
let waitSec = 120;
|
|
95
|
+
let healthPath;
|
|
96
|
+
let logFile;
|
|
97
|
+
let allowDegraded = false;
|
|
98
|
+
for (let i = 0; i < args.length; i++) {
|
|
99
|
+
const a = args[i];
|
|
100
|
+
if (a === "--detach") detach = true;
|
|
101
|
+
else if (a === "--allow-degraded") allowDegraded = true;
|
|
102
|
+
else if (a === "--wait" || a.startsWith("--wait=")) {
|
|
103
|
+
const v = a.includes("=") ? a.split("=")[1] : args[++i];
|
|
104
|
+
const n = Number.parseInt(v ?? "", 10);
|
|
105
|
+
if (Number.isInteger(n) && n > 0) waitSec = n;
|
|
106
|
+
} else if (a === "--health" || a.startsWith("--health=")) healthPath = a.includes("=") ? a.split("=")[1] : args[++i];
|
|
107
|
+
else if (a === "--log" || a.startsWith("--log=")) logFile = a.includes("=") ? a.split("=")[1] : args[++i];
|
|
108
|
+
else relayArgs.push(a);
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
detach,
|
|
112
|
+
waitSec,
|
|
113
|
+
healthPath,
|
|
114
|
+
logFile,
|
|
115
|
+
allowDegraded,
|
|
116
|
+
relayArgs
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/** `true` si l'invocation demande un lancement détaché (et n'est PAS déjà le child). */
|
|
120
|
+
function isDetachRequested(args) {
|
|
121
|
+
return args.includes("--detach") && process.env["NF_DETACH_CHILD"] !== "1";
|
|
122
|
+
}
|
|
123
|
+
/** Contenu brut du journal, ou chaîne vide s'il est illisible. */
|
|
124
|
+
function readLog(logFile) {
|
|
125
|
+
try {
|
|
126
|
+
return readFileSync(logFile, "utf8");
|
|
127
|
+
} catch {
|
|
128
|
+
return "";
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/** Dernières lignes non vides d'un fichier de log, ANSI strippé (diagnostic). */
|
|
132
|
+
function tailLog(logFile, n = TAIL_LINES) {
|
|
133
|
+
try {
|
|
134
|
+
return readFileSync(logFile, "utf8").replace(/\x1b\[[0-9;]*m/g, "").split("\n").filter((l) => l.trim().length > 0).slice(-n);
|
|
135
|
+
} catch {
|
|
136
|
+
return [];
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/** Dernière ligne de phase du DevSupervisor (`[dev] …`) pour la progression. */
|
|
140
|
+
function lastPhaseLine(logFile) {
|
|
141
|
+
const lines = tailLog(logFile, 40).filter((l) => l.startsWith("[dev]"));
|
|
142
|
+
return lines.length > 0 ? lines[lines.length - 1].slice(0, 70) : "";
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* GET de santé best-effort après readiness des ports : https insecure sur le DERNIER
|
|
146
|
+
* port (convention dev : TLS), fallback http sur le premier. 2 tentatives (le watch
|
|
147
|
+
* peut occuper l'event loop juste après le boot) — n'échoue JAMAIS le lancement :
|
|
148
|
+
* les ports écoutent déjà, un health raté = information, pas un verdict.
|
|
149
|
+
*/
|
|
150
|
+
function probeHealth(ports, healthPath) {
|
|
151
|
+
const tlsPort = ports[ports.length - 1];
|
|
152
|
+
const plainPort = ports[0];
|
|
153
|
+
const attempt = (useTls, tries, resolve) => {
|
|
154
|
+
const req = (useTls ? https : http).request({
|
|
155
|
+
hostname: "127.0.0.1",
|
|
156
|
+
port: useTls ? tlsPort : plainPort,
|
|
157
|
+
path: healthPath,
|
|
158
|
+
rejectUnauthorized: false,
|
|
159
|
+
timeout: 4e3
|
|
160
|
+
}, (res) => {
|
|
161
|
+
res.resume();
|
|
162
|
+
resolve(String(res.statusCode));
|
|
163
|
+
req.destroy();
|
|
164
|
+
});
|
|
165
|
+
const retry = (why) => {
|
|
166
|
+
if (useTls) attempt(false, tries, resolve);
|
|
167
|
+
else if (tries > 1) setTimeout(() => attempt(true, tries - 1, resolve), 1500);
|
|
168
|
+
else resolve(`skipped (${why}) — servers listen OK`);
|
|
169
|
+
};
|
|
170
|
+
req.on("error", (e) => {
|
|
171
|
+
if (e.code !== "ECONNRESET") retry(`ERR ${e.code}`);
|
|
172
|
+
});
|
|
173
|
+
req.on("timeout", () => {
|
|
174
|
+
req.destroy();
|
|
175
|
+
retry("TIMEOUT");
|
|
176
|
+
});
|
|
177
|
+
req.end();
|
|
178
|
+
};
|
|
179
|
+
return new Promise((resolve) => attempt(true, 2, resolve));
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Spawn le runtime détaché puis attend sa readiness (AU MOINS UN port en écoute).
|
|
183
|
+
*
|
|
184
|
+
* « Au moins un » et pas « tous » : la liste de ports est une CONVENTION du parent
|
|
185
|
+
* (défaut `[5151, 5152]`), pas la topologie réelle de l'app — une app `https: false`
|
|
186
|
+
* n'ouvrira JAMAIS 5152 et un « tous » l'attendrait à vie (faux négatif, vécu).
|
|
187
|
+
* L'état COMPLET port par port reste dans `ports` du résultat (fail-loud : un port
|
|
188
|
+
* attendu fermé est VISIBLE dans le récap, il ne bloque juste pas la readiness).
|
|
189
|
+
*
|
|
190
|
+
* Signaux d'échec (fail-fast, cf en-tête du module) :
|
|
191
|
+
* - le child MEURT avant la readiness → `EX_UNAVAILABLE` + exit code du child + tail log ;
|
|
192
|
+
* - plafond `waitSec` dépassé → group-kill du child (pas de runtime zombie à moitié
|
|
193
|
+
* booté) + `EX_UNAVAILABLE` + tail log.
|
|
194
|
+
*
|
|
195
|
+
* @returns résultat structuré — l'appelant décide du rendu et du `process.exit`.
|
|
196
|
+
*/
|
|
197
|
+
async function launchDetached(opts) {
|
|
198
|
+
const ports = opts.ports ?? defaultDevPorts();
|
|
199
|
+
const waitSec = opts.waitSec ?? 120;
|
|
200
|
+
const logFile = path.resolve(opts.cwd ?? process.cwd(), opts.logFile);
|
|
201
|
+
const progress = opts.onProgress ?? (() => {});
|
|
202
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
203
|
+
const preflight = await probePorts(ports);
|
|
204
|
+
const busy = preflight.filter((p) => p.listening);
|
|
205
|
+
let foreignBusy = false;
|
|
206
|
+
if (busy.length > 0) {
|
|
207
|
+
let mineRunning = false;
|
|
208
|
+
let who = "";
|
|
209
|
+
try {
|
|
210
|
+
const { mine, foreign } = splitByProject(discoverDevProcesses(), cwd);
|
|
211
|
+
mineRunning = mine.length > 0;
|
|
212
|
+
if (foreign.length > 0) who = " — occupés par un AUTRE projet Nodefony :\n" + formatForeignRuntimes(foreign).join("\n");
|
|
213
|
+
} catch {}
|
|
214
|
+
if (mineRunning) return {
|
|
215
|
+
ok: false,
|
|
216
|
+
pid: null,
|
|
217
|
+
exitCode: 69,
|
|
218
|
+
ports: preflight,
|
|
219
|
+
logFile,
|
|
220
|
+
reason: `port(s) déjà en écoute : ${busy.map((p) => p.port).join(", ")} — un runtime de CE projet tourne déjà (nodefony status · nodefony stop)`
|
|
221
|
+
};
|
|
222
|
+
foreignBusy = true;
|
|
223
|
+
progress(`ports ${busy.map((p) => p.port).join(", ")} déjà pris${who}\n → cette app prendra les premiers ports libres (servers.portPolicy: "auto")`);
|
|
224
|
+
}
|
|
225
|
+
clearRuntimeState(cwd);
|
|
226
|
+
mkdirSync(path.dirname(logFile), { recursive: true });
|
|
227
|
+
const out = openSync(logFile, "w");
|
|
228
|
+
const child = spawn(opts.spawnCmd, opts.spawnArgs, {
|
|
229
|
+
cwd: opts.cwd ?? process.cwd(),
|
|
230
|
+
stdio: [
|
|
231
|
+
"ignore",
|
|
232
|
+
out,
|
|
233
|
+
out
|
|
234
|
+
],
|
|
235
|
+
detached: true,
|
|
236
|
+
env: childEnv(process.env, opts.env)
|
|
237
|
+
});
|
|
238
|
+
let fdClosed = false;
|
|
239
|
+
const closeFd = () => {
|
|
240
|
+
if (!fdClosed) {
|
|
241
|
+
fdClosed = true;
|
|
242
|
+
closeSync(out);
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
child.once("spawn", closeFd);
|
|
246
|
+
child.once("error", closeFd);
|
|
247
|
+
child.unref();
|
|
248
|
+
let exited = false;
|
|
249
|
+
let exitCode = null;
|
|
250
|
+
child.once("exit", (code) => {
|
|
251
|
+
exited = true;
|
|
252
|
+
exitCode = code;
|
|
253
|
+
});
|
|
254
|
+
child.once("error", () => {
|
|
255
|
+
exited = true;
|
|
256
|
+
});
|
|
257
|
+
const ticks = Math.ceil(waitSec * 1e3 / TICK_MS);
|
|
258
|
+
let watched = ports;
|
|
259
|
+
for (let i = 1; i <= ticks; i++) {
|
|
260
|
+
if (exited) return {
|
|
261
|
+
ok: false,
|
|
262
|
+
pid: child.pid ?? null,
|
|
263
|
+
exitCode: 69,
|
|
264
|
+
ports: await probePorts(watched),
|
|
265
|
+
logFile,
|
|
266
|
+
reason: `process mort avant la readiness (exit ${exitCode ?? "?"})`,
|
|
267
|
+
logTail: tailLog(logFile)
|
|
268
|
+
};
|
|
269
|
+
const state = readRuntimeState(cwd);
|
|
270
|
+
const published = state !== null && state.ports.length > 0;
|
|
271
|
+
if (published) watched = state.ports;
|
|
272
|
+
const states = await probePorts(watched);
|
|
273
|
+
const up = states.filter((p) => p.listening).length;
|
|
274
|
+
if (up > 0 && (published || !foreignBusy) && !exited) {
|
|
275
|
+
const health = opts.healthPath ? await probeHealth(watched, opts.healthPath) : void 0;
|
|
276
|
+
if ((opts.allowDegraded ? null : await waitBootVerdict(watched[0], DEGRADED_SETTLE_MS)) === true) {
|
|
277
|
+
const skipped = extractSkippedModules(readLog(logFile));
|
|
278
|
+
if (child.pid) try {
|
|
279
|
+
signalProcessGroup(child.pid, "SIGKILL");
|
|
280
|
+
} catch {}
|
|
281
|
+
return {
|
|
282
|
+
ok: false,
|
|
283
|
+
pid: child.pid ?? null,
|
|
284
|
+
exitCode: 69,
|
|
285
|
+
ports: states,
|
|
286
|
+
logFile,
|
|
287
|
+
modulesSkipped: skipped,
|
|
288
|
+
reason: "boot DÉGRADÉ — l'application a démarré SANS " + (skipped.length > 0 ? `${skipped.length} module(s) de son manifeste : ${skipped.join(" · ")}` : "au moins un module de son manifeste") + ". Leurs routes répondront 404. Corrige, ou assume avec --allow-degraded.",
|
|
289
|
+
logTail: tailLog(logFile)
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
const desired = state?.desiredPorts;
|
|
293
|
+
const shifted = desired !== void 0 && (desired.length !== watched.length || desired.some((p, k) => p !== watched[k]));
|
|
294
|
+
return {
|
|
295
|
+
ok: true,
|
|
296
|
+
pid: child.pid ?? null,
|
|
297
|
+
exitCode: 0,
|
|
298
|
+
ports: states,
|
|
299
|
+
logFile,
|
|
300
|
+
health,
|
|
301
|
+
desiredPorts: shifted ? desired : void 0
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
if (i % 10 === 0) {
|
|
305
|
+
const phase = lastPhaseLine(logFile);
|
|
306
|
+
const elapsed = Math.round(i * TICK_MS / 1e3);
|
|
307
|
+
progress(`booting (${up}/${watched.length} ports, ${elapsed}s)${phase ? ` — ${phase}` : ""}`);
|
|
308
|
+
}
|
|
309
|
+
await new Promise((r) => setTimeout(r, TICK_MS));
|
|
310
|
+
}
|
|
311
|
+
if (child.pid) try {
|
|
312
|
+
signalProcessGroup(child.pid, "SIGKILL");
|
|
313
|
+
} catch {}
|
|
314
|
+
return {
|
|
315
|
+
ok: false,
|
|
316
|
+
pid: child.pid ?? null,
|
|
317
|
+
exitCode: 69,
|
|
318
|
+
ports: await probePorts(ports),
|
|
319
|
+
logFile,
|
|
320
|
+
reason: `readiness non atteinte après ${waitSec}s — runtime tué (group-kill)`,
|
|
321
|
+
logTail: tailLog(logFile)
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Point d'entrée du fast-path standalone (`CliKernel.start`) : parse argv, lance le
|
|
326
|
+
* runtime détaché, rend le rapport sur stdout et retourne le code de sortie.
|
|
327
|
+
*
|
|
328
|
+
* @param argv - `process.argv` complet (node + bin + args).
|
|
329
|
+
* @returns code de sortie sémantique (`EX_OK` / `EX_UNAVAILABLE` / `EX_USAGE`).
|
|
330
|
+
*/
|
|
331
|
+
async function runDetachedStart(argv) {
|
|
332
|
+
const parsed = parseDetachArgs(argv.slice(2));
|
|
333
|
+
if (parsed.relayArgs.length === 0) {
|
|
334
|
+
writeSync(1, "--detach exige une commande de runtime (ex: development)\n");
|
|
335
|
+
return 64;
|
|
336
|
+
}
|
|
337
|
+
const cwd = process.cwd();
|
|
338
|
+
const logFile = parsed.logFile ?? path.join(cwd, "tmp", "nodefony-detached.log");
|
|
339
|
+
const say = (msg) => {
|
|
340
|
+
writeSync(1, `>>> ${msg}\n`);
|
|
341
|
+
};
|
|
342
|
+
say(`SPAWN nodefony ${parsed.relayArgs.join(" ")} (detached)`);
|
|
343
|
+
const result = await launchDetached({
|
|
344
|
+
spawnCmd: process.execPath,
|
|
345
|
+
spawnArgs: [
|
|
346
|
+
...childExecArgv(process.execArgv),
|
|
347
|
+
argv[1],
|
|
348
|
+
...parsed.relayArgs
|
|
349
|
+
],
|
|
350
|
+
cwd,
|
|
351
|
+
logFile,
|
|
352
|
+
waitSec: parsed.waitSec,
|
|
353
|
+
healthPath: parsed.healthPath,
|
|
354
|
+
allowDegraded: parsed.allowDegraded,
|
|
355
|
+
onProgress: (m) => say(`... ${m}`)
|
|
356
|
+
});
|
|
357
|
+
if (!result.ok) {
|
|
358
|
+
say(`FATAL — ${result.reason}`);
|
|
359
|
+
for (const line of result.logTail ?? []) writeSync(1, ` ${line}\n`);
|
|
360
|
+
say(`log complet : ${result.logFile}`);
|
|
361
|
+
return result.exitCode;
|
|
362
|
+
}
|
|
363
|
+
const portsUp = result.ports.filter((p) => p.listening).map((p) => p.port).join(" | ");
|
|
364
|
+
say(`READY — ports en écoute : ${portsUp}`);
|
|
365
|
+
if (result.desiredPorts) say(`⚠️ PORTS DÉCALÉS — config ${result.desiredPorts.join(", ")} déjà pris → cette app écoute sur ${portsUp}. Viser CES ports (nodefony status).`);
|
|
366
|
+
if (result.health !== void 0) say(`HEALTH ${result.health}`);
|
|
367
|
+
say(`UP — PID=${result.pid} | log : ${result.logFile}`);
|
|
368
|
+
say(`arrêt : nodefony stop · état : nodefony status`);
|
|
369
|
+
return result.exitCode;
|
|
370
|
+
}
|
|
371
|
+
//#endregion
|
|
372
|
+
export { DETACH_CHILD_ENV, childEnv, childExecArgv, isDetachRequested, launchDetached, parseDetachArgs, runDetachedStart };
|