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,367 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { onMounted, onUnmounted, ref, version as vueVersion } from "vue";
|
|
3
|
+
<% if (it.complete) { %>// FAÇADE temps réel isomorphe du framework — reconnexion, re-subscribe, état :
|
|
4
|
+
// gérés par le client. Aucun `new WebSocket` à la main. Subpath `nodefony/vue` :
|
|
5
|
+
// les COMPOSABLES du framework, de minces enveloppes sur le socle agnostique
|
|
6
|
+
// que React, Angular et Svelte consomment aussi. Le plugin s'installe dans
|
|
7
|
+
// `main.ts` — c'est là, et là seulement, que l'adresse du serveur est écrite.
|
|
8
|
+
import {
|
|
9
|
+
useNodefony,
|
|
10
|
+
useNodefonyChannelData,
|
|
11
|
+
useNodefonyState,
|
|
12
|
+
} from "nodefony/vue";
|
|
13
|
+
<% } %>import { NODEFONY_LOGO } from "./brand";
|
|
14
|
+
// Mise en page et palette de la démonstration — feuille PARTAGÉE par les trois
|
|
15
|
+
// vitrines ; `accent.css` n'y ajoute que la couleur du framework.
|
|
16
|
+
import "./showcase.css";
|
|
17
|
+
import "./accent.css";
|
|
18
|
+
|
|
19
|
+
interface ApiData {
|
|
20
|
+
hello: string;
|
|
21
|
+
pid: number;
|
|
22
|
+
/** Identité résolue par la zone firewall `main` (^/api) — « anonyme » sinon. */
|
|
23
|
+
who?: string;
|
|
24
|
+
}
|
|
25
|
+
<% if (it.complete) { %>
|
|
26
|
+
/** Réponse de la route PROTÉGÉE /api/secure/hello (zone `secure`, 401 sans session). */
|
|
27
|
+
interface SecureData {
|
|
28
|
+
message: string;
|
|
29
|
+
zone: string;
|
|
30
|
+
pid: number;
|
|
31
|
+
}
|
|
32
|
+
<% } %>
|
|
33
|
+
/**
|
|
34
|
+
* Page d'accueil de l'app — vitrine AUTONOME (zéro dépendance UI) :
|
|
35
|
+
* - panneau de marque (même design que le login de Studio : dégradé, glow,
|
|
36
|
+
* logo, slogan, 3 piliers du framework) ;
|
|
37
|
+
* - preuves INTERACTIVES : fetch HTTP, echo WebSocket live sur le MÊME
|
|
38
|
+
* controller (le différenciateur Nodefony), compteur HMR.
|
|
39
|
+
* Édite ce fichier : Vite recompile à la volée.
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
const data = ref<ApiData | null>(null);
|
|
43
|
+
const error = ref<string | null>(null);
|
|
44
|
+
const count = ref(0);
|
|
45
|
+
<% if (it.complete) { %>
|
|
46
|
+
/** Un message du canal `live:events` (cf `nodefony/controllers/LiveController.ts`). */
|
|
47
|
+
interface LiveEvent {
|
|
48
|
+
text: string;
|
|
49
|
+
ts: number;
|
|
50
|
+
pid: number;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// La socket de la page, fournie par le plugin — UNE seule pour tout le monde.
|
|
54
|
+
// Les deux composables ci-dessous s'abonnent au montage et RENDENT l'abonnement
|
|
55
|
+
// au démontage, sans une ligne à écrire : c'est la portée du composant qui
|
|
56
|
+
// libère. L'abonnement serveur est ref-compté et rejoué à chaque reconnexion.
|
|
57
|
+
const live = useNodefony();
|
|
58
|
+
const liveState = useNodefonyState();
|
|
59
|
+
const last = useNodefonyChannelData<LiveEvent>("live:events");
|
|
60
|
+
const pingMs = ref<number | null>(null);
|
|
61
|
+
<% } else { %>const wsInput = ref("ping");
|
|
62
|
+
const wsLog = ref<string[]>([]);
|
|
63
|
+
let ws: WebSocket | null = null;
|
|
64
|
+
<% } %>
|
|
65
|
+
<% if (it.complete) { %>const username = ref("admin");
|
|
66
|
+
const password = ref("admin");
|
|
67
|
+
const authMsg = ref<string | null>(null);
|
|
68
|
+
const secureData = ref<SecureData | null>(null);
|
|
69
|
+
<% } %>
|
|
70
|
+
// Rappelé après login/logout : la zone firewall `main` (^/api) résout
|
|
71
|
+
// l'identité par requête → `who` change sans recharger la page.
|
|
72
|
+
const refreshHello = () =>
|
|
73
|
+
fetch("/api/hello")
|
|
74
|
+
.then((r) => r.json())
|
|
75
|
+
.then((j) => {
|
|
76
|
+
const d = (j.result ?? j) as ApiData; // Nodefony wrappe `{ result }`
|
|
77
|
+
data.value = d;
|
|
78
|
+
<% if (it.complete) { %> // Connecté → la route PROTÉGÉE prend le relais (zone `secure`,
|
|
79
|
+
// ^/api/secure : sans session le firewall répond 401 avant le controller).
|
|
80
|
+
if (d.who && d.who !== "anonyme") {
|
|
81
|
+
fetch("/api/secure/hello", { credentials: "same-origin" })
|
|
82
|
+
.then((r) => (r.ok ? r.json() : null))
|
|
83
|
+
// Le corps d'un `then` REND une valeur : un bloc muet est signalé par
|
|
84
|
+
// le lint (`promise/always-return`) — dans l'application générée, donc
|
|
85
|
+
// chez l'utilisateur, dont la passe naît rouge.
|
|
86
|
+
.then((s) => (secureData.value = s ? ((s.result ?? s) as SecureData) : null))
|
|
87
|
+
.catch(() => (secureData.value = null));
|
|
88
|
+
} else {
|
|
89
|
+
secureData.value = null;
|
|
90
|
+
}
|
|
91
|
+
<% } %> // Un `then` REND une valeur — sinon le lint de l'application
|
|
92
|
+
// GÉNÉRÉE la refuse (`promise/always-return`), et sa passe naît rouge.
|
|
93
|
+
return d;
|
|
94
|
+
})
|
|
95
|
+
.catch((e) => {
|
|
96
|
+
error.value = e instanceof Error ? e.message : String(e);
|
|
97
|
+
});
|
|
98
|
+
<% if (it.complete) { %>
|
|
99
|
+
// Flux session BFF du framework (cookie opaque HttpOnly — le front ne voit
|
|
100
|
+
// jamais de token) : mêmes endpoints que le login de la console /nodefony.
|
|
101
|
+
const doLogin = async () => {
|
|
102
|
+
authMsg.value = null;
|
|
103
|
+
const r = await fetch("/nodefony/security/api/auth/login", {
|
|
104
|
+
method: "POST",
|
|
105
|
+
headers: { "Content-Type": "application/json" },
|
|
106
|
+
credentials: "same-origin",
|
|
107
|
+
body: JSON.stringify({ username: username.value, password: password.value }),
|
|
108
|
+
});
|
|
109
|
+
const j = (await r.json()) as {
|
|
110
|
+
result?: { user?: { username?: string } };
|
|
111
|
+
user?: { username?: string };
|
|
112
|
+
};
|
|
113
|
+
if (!r.ok) {
|
|
114
|
+
authMsg.value = "identifiants invalides";
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
const u = j.result?.user ?? j.user;
|
|
118
|
+
authMsg.value = `session ouverte — ${u?.username ?? username.value}`;
|
|
119
|
+
refreshHello();
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
const doLogout = async () => {
|
|
123
|
+
await fetch("/nodefony/security/api/auth/logout", {
|
|
124
|
+
method: "POST",
|
|
125
|
+
credentials: "same-origin",
|
|
126
|
+
});
|
|
127
|
+
authMsg.value = "session fermée";
|
|
128
|
+
refreshHello();
|
|
129
|
+
};
|
|
130
|
+
<% } %>
|
|
131
|
+
onMounted(() => {
|
|
132
|
+
refreshHello();
|
|
133
|
+
<% if (it.complete) { %>
|
|
134
|
+
// Rien à brancher ici pour le temps réel : les composables l'ont fait au
|
|
135
|
+
// `setup`, et le défont à la mort du composant. Ce qui reste dans ce hook
|
|
136
|
+
// n'est que du HTTP.
|
|
137
|
+
<% } else { %>
|
|
138
|
+
// WS même origine que la page (ws en http, wss en https).
|
|
139
|
+
// ⚠ Echo BRUT = démo du pipeline HTTP/WS partagé, pas un modèle : pour du WS
|
|
140
|
+
// métier, génère la bonne couche (`nodefony create controller <nom> --kind
|
|
141
|
+
// realtime`) et consomme-la par la FAÇADE client (`RealtimeClient`) au lieu
|
|
142
|
+
// d'un `new WebSocket` à la main.
|
|
143
|
+
const scheme = location.protocol === "https:" ? "wss" : "ws";
|
|
144
|
+
const socket = new WebSocket(`${scheme}://${location.host}/api/echo`);
|
|
145
|
+
socket.addEventListener("message", (ev) => {
|
|
146
|
+
wsLog.value = [...wsLog.value.slice(-4), `← ${String(ev.data)}`];
|
|
147
|
+
});
|
|
148
|
+
socket.addEventListener("error", () => {
|
|
149
|
+
wsLog.value = [...wsLog.value, "⚠ connexion WS impossible"];
|
|
150
|
+
});
|
|
151
|
+
ws = socket;
|
|
152
|
+
<% } %>});
|
|
153
|
+
|
|
154
|
+
onUnmounted(() => {
|
|
155
|
+
<% if (it.complete) { %> // Rien à libérer : le rechargement à chaud remonte le composant, et sa portée
|
|
156
|
+
// a déjà rendu les abonnements. La socket PARTAGÉE, elle, reste ouverte pour
|
|
157
|
+
// la page — la couper ici trancherait les requêtes en vol des autres.
|
|
158
|
+
<% } else { %> // HMR remonte le composant : fermer une socket encore en CONNECTING lève un
|
|
159
|
+
// warning navigateur (« closed before the connection is established ») —
|
|
160
|
+
// on attend l'open pour fermer proprement.
|
|
161
|
+
const socket = ws;
|
|
162
|
+
ws = null;
|
|
163
|
+
if (!socket) return;
|
|
164
|
+
if (socket.readyState === WebSocket.CONNECTING) {
|
|
165
|
+
socket.addEventListener("open", () => socket.close());
|
|
166
|
+
} else {
|
|
167
|
+
socket.close();
|
|
168
|
+
}
|
|
169
|
+
<% } %>});
|
|
170
|
+
|
|
171
|
+
<% if (it.complete) { %>const doPing = async () => {
|
|
172
|
+
const t0 = performance.now();
|
|
173
|
+
await live.request("live:ping", {});
|
|
174
|
+
pingMs.value = Math.round(performance.now() - t0);
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
// Ce que CETTE page envoie, TOUTES les pages abonnées le reçoivent : ouvrir un
|
|
178
|
+
// second onglet et cliquer suffit à le voir. C'est ce partage qui fait l'intérêt
|
|
179
|
+
// d'une socket — pas un battement qui parlerait pour ne rien dire.
|
|
180
|
+
const doSay = () =>
|
|
181
|
+
live.emit("live:say", {
|
|
182
|
+
text: `bonjour de la page (${Date.now() % 1000})`,
|
|
183
|
+
});
|
|
184
|
+
<% } else { %>const sendWs = () => {
|
|
185
|
+
if (ws?.readyState === WebSocket.OPEN) {
|
|
186
|
+
ws.send(wsInput.value);
|
|
187
|
+
wsLog.value = [...wsLog.value.slice(-4), `→ ${wsInput.value}`];
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
<% } %>
|
|
191
|
+
</script>
|
|
192
|
+
|
|
193
|
+
<template>
|
|
194
|
+
<div class="nf-split">
|
|
195
|
+
<!-- ── Panneau de marque (même design que le login Studio) ─────────── -->
|
|
196
|
+
<aside class="nf-hero">
|
|
197
|
+
<div class="nf-glow" aria-hidden="true"></div>
|
|
198
|
+
<div style="display: flex; gap: 14px; align-items: center; position: relative">
|
|
199
|
+
<img :src="NODEFONY_LOGO" alt="Nodefony" height="42" draggable="false" />
|
|
200
|
+
<span style="font-weight: 700; font-size: 26px"><%= it.appName %></span>
|
|
201
|
+
</div>
|
|
202
|
+
|
|
203
|
+
<div style="max-width: 480px; position: relative">
|
|
204
|
+
<h2>Le temps réel, nativement.</h2>
|
|
205
|
+
<p class="nf-sub">
|
|
206
|
+
Observez, comprenez et contrôlez chaque sous-système de Nodefony —
|
|
207
|
+
en direct.
|
|
208
|
+
</p>
|
|
209
|
+
<div class="nf-feature">
|
|
210
|
+
<div class="nf-ficon">
|
|
211
|
+
<!-- éclair (bolt) -->
|
|
212
|
+
<svg viewBox="0 0 24 24"><path d="M13 2 4.5 12.5H11L9.5 22 18 11.5h-6.5L13 2z" /></svg>
|
|
213
|
+
</div>
|
|
214
|
+
<div>
|
|
215
|
+
<div style="font-weight: 600">Temps réel natif</div>
|
|
216
|
+
<div class="nf-fdesc">HTTP et WebSocket, co-citoyens dans le même contexte.</div>
|
|
217
|
+
</div>
|
|
218
|
+
</div>
|
|
219
|
+
<div class="nf-feature">
|
|
220
|
+
<div class="nf-ficon">
|
|
221
|
+
<!-- pulse (activity) -->
|
|
222
|
+
<svg viewBox="0 0 24 24"><path d="M3 12h4l2.5-7 5 14 2.5-7h4" fill="none" stroke-width="2" /></svg>
|
|
223
|
+
</div>
|
|
224
|
+
<div>
|
|
225
|
+
<div style="font-weight: 600">Observabilité totale</div>
|
|
226
|
+
<div class="nf-fdesc">Métriques, logs et traces — en direct.</div>
|
|
227
|
+
</div>
|
|
228
|
+
</div>
|
|
229
|
+
<div class="nf-feature">
|
|
230
|
+
<div class="nf-ficon">
|
|
231
|
+
<!-- bouclier -->
|
|
232
|
+
<svg viewBox="0 0 24 24"><path d="M12 2 5 5v6c0 5 3.5 8.5 7 11 3.5-2.5 7-6 7-11V5l-7-3z" /></svg>
|
|
233
|
+
</div>
|
|
234
|
+
<div>
|
|
235
|
+
<div style="font-weight: 600">Zero Trust</div>
|
|
236
|
+
<div class="nf-fdesc">Sécurité par défaut, vos données protégées.</div>
|
|
237
|
+
</div>
|
|
238
|
+
</div>
|
|
239
|
+
</div>
|
|
240
|
+
|
|
241
|
+
<div style="display: flex; justify-content: space-between; position: relative">
|
|
242
|
+
<span style="font-size: 12px; color: rgba(255, 255, 255, 0.65)">
|
|
243
|
+
Nodefony 10 · licence CeCILL-B
|
|
244
|
+
</span>
|
|
245
|
+
<a
|
|
246
|
+
href="https://github.com/nodefony/nodefony-core"
|
|
247
|
+
target="_blank"
|
|
248
|
+
rel="noreferrer noopener"
|
|
249
|
+
style="font-size: 12px; color: rgba(255, 255, 255, 0.7)"
|
|
250
|
+
>
|
|
251
|
+
GitHub
|
|
252
|
+
</a>
|
|
253
|
+
</div>
|
|
254
|
+
</aside>
|
|
255
|
+
|
|
256
|
+
<!-- ── Preuves interactives — TON app tourne ────────────────────────── -->
|
|
257
|
+
<main class="nf-main">
|
|
258
|
+
<header class="nf-fwhead">
|
|
259
|
+
<!-- Logo officiel Vue — SVG inline (aucun asset externe). -->
|
|
260
|
+
<svg
|
|
261
|
+
class="nf-fwlogo"
|
|
262
|
+
viewBox="0 0 256 221"
|
|
263
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
264
|
+
aria-label="Vue"
|
|
265
|
+
>
|
|
266
|
+
<path d="M204.8 0H256L128 220.8 0 0h97.92L128 51.2 157.44 0z" fill="#41B883" />
|
|
267
|
+
<path d="m0 0 128 220.8L256 0h-51.2L128 132.48 50.56 0z" fill="#41B883" />
|
|
268
|
+
<path d="M50.56 0 128 133.12 204.8 0h-47.36L128 51.2 97.92 0z" fill="#35495E" />
|
|
269
|
+
</svg>
|
|
270
|
+
<div>
|
|
271
|
+
<h1>Votre app est en ligne.</h1>
|
|
272
|
+
<span class="nf-fwbadge">Vue v{{ vueVersion }} · Vite HMR</span>
|
|
273
|
+
</div>
|
|
274
|
+
<% if (it.complete) { %> <!-- Réponse de la route PROTÉGÉE — visible uniquement session ouverte. -->
|
|
275
|
+
<span v-if="secureData" class="nf-hello">👋 {{ secureData.message }}</span>
|
|
276
|
+
<% } %> </header>
|
|
277
|
+
<p class="nf-dim">
|
|
278
|
+
<%= it.complete ? "Quatre" : "Trois" %> preuves interactives — édite <code>frontend/src/App.vue</code>,
|
|
279
|
+
Vite recompile la page à la volée.
|
|
280
|
+
</p>
|
|
281
|
+
|
|
282
|
+
<div class="nf-card">
|
|
283
|
+
<% if (it.complete) { %> <h2>1. Backend HTTP — <code>GET {{ secureData ? "/api/secure/hello" : "/api/hello" }}</code></h2>
|
|
284
|
+
<% } else { %> <h2>1. Backend HTTP — <code>GET /api/hello</code></h2>
|
|
285
|
+
<% } %> <pre v-if="error" style="color: crimson">{{ error }}</pre>
|
|
286
|
+
<pre v-else-if="data">{{ JSON.stringify(<%= it.complete ? "secureData ?? data" : "data" %>, null, 2) }}</pre>
|
|
287
|
+
<p v-else>loading…</p>
|
|
288
|
+
</div>
|
|
289
|
+
<% if (it.complete) { %>
|
|
290
|
+
<div class="nf-card">
|
|
291
|
+
<h2>2. Firewall — l'identité vit dans la zone <code>^/api</code></h2>
|
|
292
|
+
<p class="nf-dim">
|
|
293
|
+
Deux zones dans <code>nodefony.config.ts</code> : <code>main</code>
|
|
294
|
+
(<code>^/api</code>, session → anonymous, jamais bloquante) et
|
|
295
|
+
<code>secure</code> (<code>^/api/secure</code>, session SEULE —
|
|
296
|
+
pattern plus spécifique, il gagne le match ; sans session le
|
|
297
|
+
firewall répond 401). Connecte-toi (compte dev seedé
|
|
298
|
+
<code>admin / admin</code>) : la carte 1 bascule sur
|
|
299
|
+
<code>GET /api/secure/hello</code> → « Bonjour admin ».
|
|
300
|
+
</p>
|
|
301
|
+
<template v-if="data?.who && data.who !== 'anonyme'">
|
|
302
|
+
<span style="margin-right: 8px">connecté — <strong>{{ data.who }}</strong></span>
|
|
303
|
+
<button @click="doLogout">Se déconnecter</button>
|
|
304
|
+
</template>
|
|
305
|
+
<template v-else>
|
|
306
|
+
<input v-model="username" autocomplete="username" aria-label="utilisateur" />
|
|
307
|
+
<input
|
|
308
|
+
v-model="password"
|
|
309
|
+
type="password"
|
|
310
|
+
autocomplete="current-password"
|
|
311
|
+
aria-label="mot de passe"
|
|
312
|
+
@keydown.enter="doLogin"
|
|
313
|
+
/>
|
|
314
|
+
<button @click="doLogin">Se connecter</button>
|
|
315
|
+
</template>
|
|
316
|
+
<p v-if="authMsg" class="nf-dim">{{ authMsg }}</p>
|
|
317
|
+
</div>
|
|
318
|
+
<% } %>
|
|
319
|
+
<% if (it.complete) { %> <div class="nf-card">
|
|
320
|
+
<h2>3. Temps réel — la socket Nodefony</h2>
|
|
321
|
+
<p class="nf-dim">
|
|
322
|
+
<code>LiveController</code> (<code>--kind realtime</code>) publie le
|
|
323
|
+
canal <code>live:events</code> quand il se passe quelque chose —
|
|
324
|
+
jamais sur une horloge ; la page le consomme par la façade
|
|
325
|
+
<code>RealtimeClient</code> — zéro <code>WebSocket</code> à la main.
|
|
326
|
+
Ouvrez un second onglet pour voir arriver ce que celui-ci envoie.
|
|
327
|
+
</p>
|
|
328
|
+
<p>
|
|
329
|
+
état : <strong>{{ liveState }}</strong>
|
|
330
|
+
<template v-if="last"> · reçu <strong>{{ last.text }}</strong> (pid {{ last.pid }})</template>
|
|
331
|
+
</p>
|
|
332
|
+
<button @click="doPing">RPC live:ping</button>
|
|
333
|
+
<button @click="doSay">envoyer sur le canal</button>
|
|
334
|
+
<span v-if="pingMs !== null" class="nf-dim"> pong en {{ pingMs }} ms</span>
|
|
335
|
+
</div>
|
|
336
|
+
<% } else { %> <div class="nf-card">
|
|
337
|
+
<h2>2. WebSocket — MÊME controller que le HTTP</h2>
|
|
338
|
+
<p class="nf-dim">
|
|
339
|
+
<code>HelloController</code> porte la route GET <em>et</em> la route
|
|
340
|
+
WEBSOCKET : un seul pipeline (firewall, audit, logs).
|
|
341
|
+
</p>
|
|
342
|
+
<input
|
|
343
|
+
v-model="wsInput"
|
|
344
|
+
@keydown.enter="sendWs"
|
|
345
|
+
aria-label="message à envoyer"
|
|
346
|
+
/>
|
|
347
|
+
<button @click="sendWs">Envoyer en WS</button>
|
|
348
|
+
<pre>{{ wsLog.join("\n") || "(envoie un message)" }}</pre>
|
|
349
|
+
</div>
|
|
350
|
+
<% } %>
|
|
351
|
+
|
|
352
|
+
<div class="nf-card">
|
|
353
|
+
<h2><%= it.complete ? 4 : 3 %>. ♻️ HMR check — état Vue préservé</h2>
|
|
354
|
+
<button @click="count++">count is {{ count }}</button>
|
|
355
|
+
<p class="nf-dim">
|
|
356
|
+
Édite le <code><template></code> de <code>frontend/src/App.vue</code> —
|
|
357
|
+
Vite recompile à la volée, la page se met à jour <em>sans recharger</em>
|
|
358
|
+
et le compteur est conservé.
|
|
359
|
+
</p>
|
|
360
|
+
</div>
|
|
361
|
+
|
|
362
|
+
<% if (it.complete) { %> <p class="nf-dim">
|
|
363
|
+
Console d'administration : <a href="/nodefony">/nodefony</a> (Studio, en dev)
|
|
364
|
+
</p>
|
|
365
|
+
<% } %> </main>
|
|
366
|
+
</div>
|
|
367
|
+
</template>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Accent Vue — sa couleur et l'animation de son logo.
|
|
3
|
+
*
|
|
4
|
+
* La mise en page et la palette de la démonstration vivent dans
|
|
5
|
+
* `showcase.css`, PARTAGÉE par les trois vitrines : seules ces variables
|
|
6
|
+
* changent d'un framework à l'autre.
|
|
7
|
+
*
|
|
8
|
+
* Pourquoi un fichier CSS et non le bloc de styles du composant : Angular
|
|
9
|
+
* renomme les `@keyframes` déclarés dans `styles: [...]` (encapsulation de
|
|
10
|
+
* vue) — l'animation nommée par la variable ne serait alors plus trouvée.
|
|
11
|
+
* Les trois vitrines utilisent donc le même mécanisme, un import CSS que
|
|
12
|
+
* Vite injecte globalement.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
:root {
|
|
16
|
+
--nf-accent: #41b883;
|
|
17
|
+
/* Encre : la MÊME teinte, assez foncée pour être lue SUR le lavis.
|
|
18
|
+
La couleur de marque ne se négocie pas ; sa luminosité, si — écrire
|
|
19
|
+
`--nf-accent` sur `--nf-accent-wash` donnait 2,78:1, sous le seuil AA. */
|
|
20
|
+
--nf-accent-ink: #17714b;
|
|
21
|
+
--nf-accent-glow: rgba(66, 184, 131, 0.35);
|
|
22
|
+
--nf-accent-wash: rgba(66, 184, 131, 0.14);
|
|
23
|
+
--nf-accent-line: rgba(66, 184, 131, 0.35);
|
|
24
|
+
--nf-logo-anim: nf-float 4s ease-in-out infinite;
|
|
25
|
+
}
|
|
26
|
+
@keyframes nf-float {
|
|
27
|
+
0%,
|
|
28
|
+
100% {
|
|
29
|
+
transform: translateY(0);
|
|
30
|
+
}
|
|
31
|
+
50% {
|
|
32
|
+
transform: translateY(-6px);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { route, controller, Controller } from "@nodefony/framework";
|
|
2
|
+
import type { ContextType } from "@nodefony/http";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Accueil `GET /` — la racine de TON application.
|
|
6
|
+
*
|
|
7
|
+
* Sans frontend, une racine muette répond 404 : la première URL qu'on ouvre
|
|
8
|
+
* après `npm run dev` dirait « rien ici ». Cette route dit QUI répond, et rien
|
|
9
|
+
* de plus. Elle n'est générée que pour une app SANS frontend — avec un front,
|
|
10
|
+
* c'est `AppController` qui tient `/`.
|
|
11
|
+
*
|
|
12
|
+
* ⚠️ **Volontairement sobre, et c'est une décision de sécurité.** Ce que cette
|
|
13
|
+
* réponse contient part en PRODUCTION, vers n'importe qui. Énumérer les routes
|
|
14
|
+
* internes, la console d'administration ou les chemins de documentation
|
|
15
|
+
* décrirait ton architecture à qui la demande : c'est une divulgation, pas une
|
|
16
|
+
* fonctionnalité. Ces informations se demandent au TERMINAL, où seul celui qui
|
|
17
|
+
* a déjà la main les obtient : `npx nodefony card` (et sa porte HTTP de
|
|
18
|
+
* développement, `@nodefony/devkit`, `policy: "dev"`, absente de la production).
|
|
19
|
+
*
|
|
20
|
+
* Tu ajoutes un frontend plus tard (`nodefony create front`) ? Sa page vivra
|
|
21
|
+
* sous sa propre route ; garde cet accueil JSON ou remplace-le, c'est TA racine.
|
|
22
|
+
*/
|
|
23
|
+
@controller("")
|
|
24
|
+
class HomeController extends Controller {
|
|
25
|
+
constructor(context: ContextType) {
|
|
26
|
+
super("home", context);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@route("app-home", { path: "/", method: "GET" })
|
|
30
|
+
async home() {
|
|
31
|
+
return this.renderJson({
|
|
32
|
+
app: "<%= it.appName %>",
|
|
33
|
+
nodefony: "<%= it.nodefonyVersion %>",
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export default HomeController;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { Command, CliKernel, type OptionsCommandInterface } from "nodefony";
|
|
2
|
+
<% if (it.service) { %>import type <%= it.service.pascal %> from "../service/<%= it.service.pascal %>";
|
|
3
|
+
<% } %>
|
|
4
|
+
/**
|
|
5
|
+
* `kernelEvent` = point d'ARRÊT du boot : le kernel s'arrête à cette phase, et
|
|
6
|
+
* c'est là que la commande s'exécute.
|
|
7
|
+
*
|
|
8
|
+
* - `onReady` (défaut) — services prêts, AUCUN serveur en écoute : une commande
|
|
9
|
+
* qui lit ou écrit des données n'a pas à ouvrir un port.
|
|
10
|
+
* - `onRegister` — modules enregistrés, services pas encore construits (léger).
|
|
11
|
+
* - `onPostReady` — serveurs HTTP/WS en écoute. Seulement si la commande doit
|
|
12
|
+
* parler à ses propres serveurs.
|
|
13
|
+
*/
|
|
14
|
+
const options: OptionsCommandInterface = {
|
|
15
|
+
showBanner: false,
|
|
16
|
+
kernelEvent: "<%= it.phase %>",
|
|
17
|
+
// Le journal de cycle de vie n'est PAS la sortie d'une commande. Sans ceci,
|
|
18
|
+
// ta commande rend d'abord trente lignes de boot (`MODULE ADD`, stores
|
|
19
|
+
// résolus, certificats) et sa réponse arrive en dernier, sous un mur que
|
|
20
|
+
// personne n'a demandé. Seuls NOTICE et INFO tombent : `EMERGENCY..ERROR`
|
|
21
|
+
// restent visibles, et `-d/--debug` rétablit tout.
|
|
22
|
+
// À RETIRER si ta commande LANCE quelque chose dont le journal EST la sortie
|
|
23
|
+
// (un serveur, une migration qu'on regarde se dérouler).
|
|
24
|
+
quietBoot: true,
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* <%= it.description %> — `nodefony <%= it.commandName %> [who]`.
|
|
29
|
+
*
|
|
30
|
+
* Convention Nodefony : `<module>:<action>`. La commande vit AVEC le module qui
|
|
31
|
+
* la porte (elle disparaît si le module n'est pas chargé) et parle au même
|
|
32
|
+
* service que les controllers — une seule logique, deux portes d'entrée.
|
|
33
|
+
<% if (!it.service) { %> *
|
|
34
|
+
* Pour atteindre un service depuis ici : `this.kernel?.container?.get("<clé>")`,
|
|
35
|
+
* où la clé est celle du `super("<clé>", …)` du service — jamais le nom de sa
|
|
36
|
+
* classe.
|
|
37
|
+
<% } %> */
|
|
38
|
+
class <%= it.nameClass %> extends Command {
|
|
39
|
+
constructor(cli: CliKernel) {
|
|
40
|
+
super("<%= it.commandName %>", "<%= it.description %>", cli, options);
|
|
41
|
+
// Argument POSITIONNEL optionnel : sans déclaration, Commander refuse le mot
|
|
42
|
+
// (« too many arguments ») — un argument non déclaré n'existe pas.
|
|
43
|
+
//
|
|
44
|
+
// 🔴 Garde les crochets `[…]`, même pour un argument INDISPENSABLE. Déclaré
|
|
45
|
+
// `<obligatoire>`, Commander refuse la commande AVANT qu'elle existe
|
|
46
|
+
// (« error: missing required argument ») — y compris quand l'utilisateur
|
|
47
|
+
// l'a CHOISIE dans `nodefony menu`, où l'on ne peut taper aucun argument.
|
|
48
|
+
// Réclame-le plutôt avec `askArgument` (voir `generate` ci-dessous) : il
|
|
49
|
+
// demande en terminal, et hors terminal il échoue en montrant la ligne à
|
|
50
|
+
// taper — jamais une question qui pend dans un pipeline.
|
|
51
|
+
this.addArgument("[who]", "qui saluer (défaut : monde)");
|
|
52
|
+
this.addOption("-j, --json", "sortie JSON (scriptable)");
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
override async generate(
|
|
56
|
+
who: string | undefined,
|
|
57
|
+
opts: { json?: boolean },
|
|
58
|
+
): Promise<this> {
|
|
59
|
+
<% if (it.service) { %> // On demande le service par sa CLÉ de conteneur — celle du `super("<%= it.service.key %>", …)`
|
|
60
|
+
// du service, pas le nom de sa classe. (Depuis le DI, `@inject("<%= it.service.pascal %>")`
|
|
61
|
+
// mènerait à la même instance ; mais hors injection, c'est la clé qui sert.)
|
|
62
|
+
const svc = this.kernel?.container?.get("<%= it.service.key %>") as <%= it.service.pascal %> | undefined;
|
|
63
|
+
if (!svc) {
|
|
64
|
+
// Absent = le module n'est pas chargé, ou son service a échoué au boot (le
|
|
65
|
+
// kernel l'aura annoncé : « boot DÉGRADÉ »). On le dit, on ne devine pas.
|
|
66
|
+
this.log("service « <%= it.service.key %> » non enregistré", "ERROR");
|
|
67
|
+
return this;
|
|
68
|
+
}
|
|
69
|
+
// Remplace cet appel par le tien : ce que ces lignes MONTRENT, c'est comment
|
|
70
|
+
// on obtient le service — le reste est de la mise en forme.
|
|
71
|
+
const result = await svc.<%= it.service.method %>();
|
|
72
|
+
const message =
|
|
73
|
+
typeof result === "string" ? result : JSON.stringify(result, null, 2);
|
|
74
|
+
if (who) {
|
|
75
|
+
this.log(`argument reçu : ${who}`, "DEBUG");
|
|
76
|
+
}
|
|
77
|
+
<% } else { %> // Un argument dont tu ne peux pas te passer se DEMANDE, il ne se refuse pas :
|
|
78
|
+
// const cible = await this.askArgument(who, {
|
|
79
|
+
// name: "who",
|
|
80
|
+
// message: "Qui saluer ?",
|
|
81
|
+
// // choices: ["monde", "toi"], // → une liste plutôt qu'une saisie
|
|
82
|
+
// });
|
|
83
|
+
// En terminal il pose la question ; sans terminal (CI, script) il échoue
|
|
84
|
+
// avec la ligne exacte à taper. Ici l'argument a un défaut, donc rien à
|
|
85
|
+
// demander.
|
|
86
|
+
const message = `Bonjour, ${who ?? "monde"} !`;
|
|
87
|
+
<% } %> // 🔴 La SORTIE va sur la sortie standard, JAMAIS dans le journal.
|
|
88
|
+
// `this.log(message, "INFO")` semble marcher — jusqu'au jour où un filtre
|
|
89
|
+
// de journal (`quietBoot` ci-dessus, `--json`, une commande lancée depuis
|
|
90
|
+
// le menu) coupe INFO : la réponse disparaît avec lui. Le journal RACONTE
|
|
91
|
+
// l'exécution, la sortie EST le résultat ; `this.log` reste pour ce qui
|
|
92
|
+
// relève du récit (avertissements, erreurs, détail sous `--debug`).
|
|
93
|
+
if (opts.json) {
|
|
94
|
+
process.stdout.write(`${JSON.stringify({ message })}\n`);
|
|
95
|
+
} else {
|
|
96
|
+
process.stdout.write(`${message}\n`);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// ── ENCHAÎNER sur une autre commande ────────────────────────────────────
|
|
100
|
+
//
|
|
101
|
+
// Quand le geste suivant appartient à une AUTRE commande (souvent d'un
|
|
102
|
+
// autre module), ne le réimplémente pas : APPELLE-la. Un process neuf,
|
|
103
|
+
// comme le fait le menu — commander ne connaît pas toujours la cible au
|
|
104
|
+
// moment où l'on décide.
|
|
105
|
+
//
|
|
106
|
+
// const { spawnSync } = await import("node:child_process");
|
|
107
|
+
// spawnSync(process.execPath, [process.argv[1]!, "autre:commande", "--write"], {
|
|
108
|
+
// stdio: "inherit", // (3)
|
|
109
|
+
// cwd: this.kernel?.path ?? process.cwd(), // (2)
|
|
110
|
+
// env: { ...process.env, NODE_ENV: "development" }, // (1)
|
|
111
|
+
// });
|
|
112
|
+
//
|
|
113
|
+
// 🔴 TROIS choses ne suivent PAS toutes seules d'un process à l'autre, et
|
|
114
|
+
// chacune a déjà produit un échec quand elle manquait :
|
|
115
|
+
// (1) l'ENVIRONNEMENT — un enfant ne reçoit QUE ce qu'on lui donne.
|
|
116
|
+
// Sans le report, il part sans PATH ; et si la cible n'existe qu'en
|
|
117
|
+
// développement (module `policy: "dev"`), pose `NODE_ENV`, sinon
|
|
118
|
+
// elle échouera sur une ressource que l'application ne sert pas ;
|
|
119
|
+
// (2) le RÉPERTOIRE — ce qui s'écrit doit l'être dans le PROJET, pas là
|
|
120
|
+
// où la commande a été tapée ;
|
|
121
|
+
// (3) le TERMINAL — `stdio: "inherit"` le transmet. Sans lui, l'enfant
|
|
122
|
+
// voit `isTTY` faux, ne peut poser aucune question, et échoue.
|
|
123
|
+
//
|
|
124
|
+
// Et n'enchaîne PAS sous `--json` ni `--dry-run` : le premier part vers un
|
|
125
|
+
// script qu'une question romprait, le second ne doit rien produire. Isole
|
|
126
|
+
// cette décision dans une fonction PURE — le `spawn` est de la plomberie,
|
|
127
|
+
// la décision est ce qui peut être faux, et c'est elle qui se teste.
|
|
128
|
+
return this;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export default <%= it.nameClass %>;
|