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,88 @@
|
|
|
1
|
+
import { existsSync, readdirSync } from "node:fs";
|
|
2
|
+
import { defineConfig } from "vitest/config";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Dit, à la fin d'un run, ce que ce run n'a PAS exercé.
|
|
6
|
+
*
|
|
7
|
+
* Sortir les e2e du glob évite un rapport « skipped » qui ferait croire qu'ils
|
|
8
|
+
* ont prouvé quelque chose — mais un rapport tout vert fait croire, tout autant,
|
|
9
|
+
* qu'il n'y avait rien d'autre à lancer. C'est arrivé, et ça a coûté cher : des
|
|
10
|
+
* tests e2e justes, écrits pour une route cassée, laissés dans le fichier que
|
|
11
|
+
* `npm test` exclut ; `npm test` vert ; « les tests passent » ; la route rendait
|
|
12
|
+
* 500 et ne répondait jamais.
|
|
13
|
+
*
|
|
14
|
+
* Le rappel s'affiche donc là où la personne — ou l'agent — regarde déjà : la
|
|
15
|
+
* sortie de la commande qu'elle vient de lancer. Il n'échoue pas : `npm test`
|
|
16
|
+
* doit rester le geste rapide. Il énonce.
|
|
17
|
+
*/
|
|
18
|
+
const direCeQuiNaPasTourné = {
|
|
19
|
+
// `onTestRunEnd` — et NON `onFinished`, qui subsiste dans les types de
|
|
20
|
+
// vitest 4 sans plus jamais être appelé : le rappel serait resté muet en
|
|
21
|
+
// passant le typecheck.
|
|
22
|
+
onTestRunEnd() {
|
|
23
|
+
if (!existsSync("tests")) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
// Filtrer sur le NOM, jamais sur le chemin : `recursive` rend des chemins au
|
|
27
|
+
// séparateur natif, et un motif écrit en `/` ne mordrait pas sous Windows.
|
|
28
|
+
const nonExercés = readdirSync("tests", {
|
|
29
|
+
withFileTypes: true,
|
|
30
|
+
recursive: true,
|
|
31
|
+
})
|
|
32
|
+
.filter((e) => e.isFile() && /(^|\.)e2e\.test\.ts$/.test(e.name))
|
|
33
|
+
.map((e) => e.name)
|
|
34
|
+
// `toSorted` et non `sort` : le lint de l'application refuse les
|
|
35
|
+
// avertissements (`--deny-warnings`), et une app fraîche doit passer ses
|
|
36
|
+
// propres portes dès la première minute.
|
|
37
|
+
.toSorted();
|
|
38
|
+
if (nonExercés.length === 0) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
console.log(
|
|
42
|
+
`\n⚠ npm test n'exécute PAS les tests de bout en bout — ` +
|
|
43
|
+
`${nonExercés.length} fichier(s) non exercé(s) :\n` +
|
|
44
|
+
` ${nonExercés.join(", ")}\n` +
|
|
45
|
+
` → npm run test:e2e (build, puis boot RÉEL de l'app)\n` +
|
|
46
|
+
` Ce run ne dit donc rien de ce que ces fichiers vérifient.\n`,
|
|
47
|
+
);
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Config Vitest de l'app.
|
|
53
|
+
*
|
|
54
|
+
* ⚠️ Le bloc `oxc` est OBLIGATOIRE : Vitest transforme les tests via oxc/rolldown,
|
|
55
|
+
* qui ne lit PAS le `experimentalDecorators` du tsconfig. Sans lui, les décorateurs
|
|
56
|
+
* (@controller, @route, DI) sortiraient bruts et Node lèverait `SyntaxError` au
|
|
57
|
+
* chargement. `emitDecoratorMetadata` est requis par l'injection de dépendances
|
|
58
|
+
* (résolution des types constructeur via `design:paramtypes`).
|
|
59
|
+
*
|
|
60
|
+
* Deux suites, deux configs :
|
|
61
|
+
* npm test → tests unitaires (rapides, zéro serveur) — CETTE config
|
|
62
|
+
* npm run test:e2e → build + boot RÉEL de l'app + HTTP/WS (vitest.e2e.config.ts)
|
|
63
|
+
*
|
|
64
|
+
* Les e2e sont SORTIS du glob par défaut, pas « skippés » : un rapport qui
|
|
65
|
+
* affiche des tests skipped et sort vert fait croire qu'ils ont prouvé quelque
|
|
66
|
+
* chose. Ici `npm test` ne montre QUE ce qu'il a réellement exécuté — et le
|
|
67
|
+
* rappelle en fin de run, plutôt que de laisser son vert parler pour les suites
|
|
68
|
+
* qu'il n'a pas lancées (cf {@link direCeQuiNaPasTourné}).
|
|
69
|
+
*/
|
|
70
|
+
export default defineConfig({
|
|
71
|
+
test: {
|
|
72
|
+
reporters: ["default", direCeQuiNaPasTourné],
|
|
73
|
+
include: ["tests/**/*.test.ts"],
|
|
74
|
+
exclude: [
|
|
75
|
+
"**/node_modules/**",
|
|
76
|
+
"**/dist/**",
|
|
77
|
+
"tests/e2e.test.ts",
|
|
78
|
+
// Tout fichier `*.e2e.test.ts` — `create entity` en ajoute un par
|
|
79
|
+
// ressource. Sans cette ligne, `npm test` les lancerait sans serveur et
|
|
80
|
+
// échouerait sur des `fetch` refusés, pour une raison sans rapport avec
|
|
81
|
+
// le code testé.
|
|
82
|
+
"tests/**/*.e2e.test.ts",
|
|
83
|
+
],
|
|
84
|
+
},
|
|
85
|
+
oxc: {
|
|
86
|
+
decorator: { legacy: true, emitDecoratorMetadata: true },
|
|
87
|
+
},
|
|
88
|
+
});
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { defineConfig } from "vitest/config";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Config Vitest des tests E2E — la SEULE porte vers les tests à boot réel
|
|
5
|
+
* (exclus de `vitest.config.ts`). L'invoquer, c'est vouloir un boot réel :
|
|
6
|
+
* `npm run test:e2e` (le build précède — un serveur spawné valide le DIST).
|
|
7
|
+
*
|
|
8
|
+
* L'application est démarrée UNE fois par `tests/e2e.setup.ts`, pas par chaque
|
|
9
|
+
* fichier : `create entity` ajoute un fichier E2E par ressource, et un
|
|
10
|
+
* démarrage par fichier rendrait la suite inutilisable.
|
|
11
|
+
*
|
|
12
|
+
* Les ressources posées dans un MODULE local sont ramassées ici aussi, et c'est
|
|
13
|
+
* la seule place possible : un module ne démarre pas seul, ses routes ne
|
|
14
|
+
* répondent que servies par l'application qui le charge. Sa suite unitaire les
|
|
15
|
+
* exclut donc, et c'est ce serveur-ci qui les sert.
|
|
16
|
+
*
|
|
17
|
+
* `fileParallelism: false` : tous les fichiers parlent au MÊME serveur. En
|
|
18
|
+
* parallèle, deux fichiers qui créent puis comptent des enregistrements se
|
|
19
|
+
* verraient mutuellement — les listes paginées deviendraient instables.
|
|
20
|
+
*
|
|
21
|
+
* Timeouts larges : un `nodefony production --detach --wait` compile puis
|
|
22
|
+
* sonde la readiness — c'est un vrai démarrage, pas un test unitaire.
|
|
23
|
+
*/
|
|
24
|
+
export default defineConfig({
|
|
25
|
+
test: {
|
|
26
|
+
include: [
|
|
27
|
+
"tests/e2e.test.ts",
|
|
28
|
+
"tests/**/*.e2e.test.ts",
|
|
29
|
+
"modules/*/tests/**/*.e2e.test.ts",
|
|
30
|
+
],
|
|
31
|
+
globalSetup: ["tests/e2e.setup.ts"],
|
|
32
|
+
fileParallelism: false,
|
|
33
|
+
testTimeout: 180_000,
|
|
34
|
+
hookTimeout: 180_000,
|
|
35
|
+
},
|
|
36
|
+
oxc: {
|
|
37
|
+
decorator: { legacy: true, emitDecoratorMetadata: true },
|
|
38
|
+
},
|
|
39
|
+
});
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
# <%= it.appName %> — infra de développement (docker compose)
|
|
2
|
+
#
|
|
3
|
+
# Ce fichier ne porte QUE ce que ton app utilise : le dialecte SQL a été retenu à
|
|
4
|
+
# la création, les deux autres ne sont pas là. Ce qu'il fournit :
|
|
5
|
+
# - Redis → sessions/idempotence partagées + backplane realtime multi-process
|
|
6
|
+
<% if (it.db) { %># - <%= it.db.label %> → LA base de l'app — `NF_DATABASE_URL` est déjà posée dans
|
|
7
|
+
# `.env` sur ce service, il n'y a rien à câbler
|
|
8
|
+
<% } %># - Loki + Grafana → centralisation des logs (driver `loki` du framework)
|
|
9
|
+
#
|
|
10
|
+
# Usage :
|
|
11
|
+
# docker compose up -d # Redis<%= it.db ? " + " + it.db.label : "" %> (ce qu'il faut à l'app)
|
|
12
|
+
# docker compose --profile tools up -d # + RedisInsight (UI Redis)
|
|
13
|
+
# docker compose --profile loki up -d # + Loki + Grafana (logs)
|
|
14
|
+
# docker compose --profile browser up -d # + navigateur jetable (voir tes écrans)
|
|
15
|
+
# docker compose down # arrêt (volumes conservés)
|
|
16
|
+
# docker compose down -v # arrêt + PURGE des données
|
|
17
|
+
#
|
|
18
|
+
<% if (it.db) { %># Câblage côté app (env.ts est le SEUL lecteur de process.env) — `.env` porte
|
|
19
|
+
# déjà l'URL de la base ; Redis reste commenté tant que tu n'en as pas besoin :
|
|
20
|
+
# NF_DATABASE_URL="<%= it.db.url %>"
|
|
21
|
+
# NF_REDIS_URL="redis://:<%= it.appName %>-dev@127.0.0.1:6379"
|
|
22
|
+
<% } else { %># Base SQL : aucune ici — l'app persiste en sqlite local (`var/databases/`), ce
|
|
23
|
+
# qui la fait démarrer sans rien allumer. Pour passer sur une vraie base, ajoute
|
|
24
|
+
# son service et déclare `NF_DATABASE_URL` : l'ORM déduit le dialecte du scheme
|
|
25
|
+
# (`postgres://`, `mysql://`) et RIEN d'autre ne change dans l'app.
|
|
26
|
+
#
|
|
27
|
+
# Câblage côté app (env.ts est le SEUL lecteur de process.env) :
|
|
28
|
+
# NF_REDIS_URL="redis://:<%= it.appName %>-dev@127.0.0.1:6379"
|
|
29
|
+
<% } %>#
|
|
30
|
+
# Config : chaque valeur a un défaut inline `${VAR:-défaut}` → AUCUN fichier .env requis.
|
|
31
|
+
# Pour surcharger (autre port, vrai secret) : `export VAR=…` avant le `up`.
|
|
32
|
+
# Les mots de passe dev sont PUBLICS — JAMAIS en production.
|
|
33
|
+
#
|
|
34
|
+
# Réseau : un bridge nommé unique ; les conteneurs se parlent par NOM de service
|
|
35
|
+
# (DNS interne Docker), jamais par localhost. Les ports ne sont publiés que sur
|
|
36
|
+
# 127.0.0.1 : l'app tourne sur l'HÔTE et joint l'infra via 127.0.0.1:<port>.
|
|
37
|
+
|
|
38
|
+
name: <%= it.appName %>
|
|
39
|
+
|
|
40
|
+
services:
|
|
41
|
+
# --- Redis (défaut — sessions, idempotence, backplane realtime) ---
|
|
42
|
+
# Auth obligatoire même en dev (Zero Trust). AOF : survit au restart du conteneur.
|
|
43
|
+
redis:
|
|
44
|
+
image: redis:7-alpine
|
|
45
|
+
container_name: <%= it.appName %>-redis
|
|
46
|
+
restart: unless-stopped
|
|
47
|
+
networks: [<%= it.appName %>]
|
|
48
|
+
command: >
|
|
49
|
+
redis-server
|
|
50
|
+
--requirepass ${REDIS_PASSWORD:-<%= it.appName %>-dev}
|
|
51
|
+
--appendonly yes
|
|
52
|
+
--maxmemory 256mb
|
|
53
|
+
--maxmemory-policy noeviction
|
|
54
|
+
ports:
|
|
55
|
+
# Loopback uniquement — surface réseau minimale en dev.
|
|
56
|
+
- "127.0.0.1:${REDIS_PORT:-6379}:6379"
|
|
57
|
+
volumes:
|
|
58
|
+
- redis-data:/data
|
|
59
|
+
healthcheck:
|
|
60
|
+
# -a : sans auth, PING renvoie NOAUTH. « healthy » = Redis répond PONG.
|
|
61
|
+
test:
|
|
62
|
+
[
|
|
63
|
+
"CMD-SHELL",
|
|
64
|
+
"redis-cli -a ${REDIS_PASSWORD:-<%= it.appName %>-dev} ping | grep -q PONG",
|
|
65
|
+
]
|
|
66
|
+
interval: 5s
|
|
67
|
+
timeout: 3s
|
|
68
|
+
retries: 5
|
|
69
|
+
start_period: 5s
|
|
70
|
+
|
|
71
|
+
<% if (it.db && it.db.choice === "postgres") { %> # --- PostgreSQL 16 — LA base de l'app (dialecte retenu à la création) ---
|
|
72
|
+
# Pas de `profiles:` : ce service n'est pas une option, c'est la base que
|
|
73
|
+
# `NF_DATABASE_URL` joint. `docker compose up -d` le monte avec Redis.
|
|
74
|
+
postgres:
|
|
75
|
+
image: <%= it.db.image %>
|
|
76
|
+
container_name: <%= it.appName %>-postgres
|
|
77
|
+
restart: unless-stopped
|
|
78
|
+
networks: [<%= it.appName %>]
|
|
79
|
+
environment:
|
|
80
|
+
POSTGRES_USER: ${POSTGRES_USER:-<%= it.appName %>}
|
|
81
|
+
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-<%= it.appName %>-dev}
|
|
82
|
+
POSTGRES_DB: ${POSTGRES_DB:-<%= it.appName %>}
|
|
83
|
+
ports:
|
|
84
|
+
- "127.0.0.1:${POSTGRES_PORT:-5432}:5432"
|
|
85
|
+
volumes:
|
|
86
|
+
- postgres-data:/var/lib/postgresql/data
|
|
87
|
+
# Les deux bases de la suite e2e (du SQL, pas un script shell : un `.sh`
|
|
88
|
+
# exécutable dont le montage perd le bit tue le serveur au démarrage),
|
|
89
|
+
# créées à la PREMIÈRE initialisation du volume (`down -v` pour rejouer).
|
|
90
|
+
- ./docker/db:/docker-entrypoint-initdb.d:ro
|
|
91
|
+
healthcheck:
|
|
92
|
+
test:
|
|
93
|
+
[
|
|
94
|
+
"CMD-SHELL",
|
|
95
|
+
"pg_isready -U ${POSTGRES_USER:-<%= it.appName %>} -d ${POSTGRES_DB:-<%= it.appName %>}",
|
|
96
|
+
]
|
|
97
|
+
interval: 5s
|
|
98
|
+
timeout: 3s
|
|
99
|
+
retries: 5
|
|
100
|
+
start_period: 5s
|
|
101
|
+
|
|
102
|
+
<% } %><% if (it.db && it.db.choice === "mariadb") { %> # --- MariaDB 11.4 — LA base de l'app (fork libre de MySQL, même dialecte) ---
|
|
103
|
+
# Pas de `profiles:` : ce service n'est pas une option, c'est la base que
|
|
104
|
+
# `NF_DATABASE_URL` joint. `docker compose up -d` le monte avec Redis.
|
|
105
|
+
mariadb:
|
|
106
|
+
image: <%= it.db.image %>
|
|
107
|
+
container_name: <%= it.appName %>-mariadb
|
|
108
|
+
restart: unless-stopped
|
|
109
|
+
networks: [<%= it.appName %>]
|
|
110
|
+
environment:
|
|
111
|
+
MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD:-<%= it.appName %>-dev}
|
|
112
|
+
MARIADB_USER: ${MARIADB_USER:-<%= it.appName %>}
|
|
113
|
+
MARIADB_PASSWORD: ${MARIADB_PASSWORD:-<%= it.appName %>-dev}
|
|
114
|
+
MARIADB_DATABASE: ${MARIADB_DATABASE:-<%= it.appName %>}
|
|
115
|
+
ports:
|
|
116
|
+
- "127.0.0.1:${MARIADB_PORT:-3306}:3306"
|
|
117
|
+
volumes:
|
|
118
|
+
- mariadb-data:/var/lib/mysql
|
|
119
|
+
# Les deux bases de la suite e2e (du SQL, pas un script shell : un `.sh`
|
|
120
|
+
# exécutable dont le montage perd le bit tue le serveur au démarrage),
|
|
121
|
+
# créées à la PREMIÈRE initialisation du volume (`down -v` pour rejouer).
|
|
122
|
+
- ./docker/db:/docker-entrypoint-initdb.d:ro
|
|
123
|
+
healthcheck:
|
|
124
|
+
# healthcheck.sh = outil officiel de l'image mariadb.
|
|
125
|
+
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
|
126
|
+
interval: 5s
|
|
127
|
+
timeout: 3s
|
|
128
|
+
retries: 10
|
|
129
|
+
start_period: 10s
|
|
130
|
+
|
|
131
|
+
<% } %><% if (it.db && it.db.choice === "mysql") { %> # --- MySQL 8.4 — LA base de l'app (dialecte retenu à la création) ---
|
|
132
|
+
# Pas de `profiles:` : ce service n'est pas une option, c'est la base que
|
|
133
|
+
# `NF_DATABASE_URL` joint. `docker compose up -d` le monte avec Redis.
|
|
134
|
+
mysql:
|
|
135
|
+
image: <%= it.db.image %>
|
|
136
|
+
container_name: <%= it.appName %>-mysql
|
|
137
|
+
restart: unless-stopped
|
|
138
|
+
networks: [<%= it.appName %>]
|
|
139
|
+
environment:
|
|
140
|
+
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-<%= it.appName %>-dev}
|
|
141
|
+
MYSQL_USER: ${MYSQL_USER:-<%= it.appName %>}
|
|
142
|
+
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-<%= it.appName %>-dev}
|
|
143
|
+
MYSQL_DATABASE: ${MYSQL_DATABASE:-<%= it.appName %>}
|
|
144
|
+
ports:
|
|
145
|
+
# 3306 : le port décalé n'existait que pour cohabiter avec MariaDB dans un
|
|
146
|
+
# compose qui portait les deux — une app retient UN dialecte.
|
|
147
|
+
- "127.0.0.1:${MYSQL_PORT:-3306}:3306"
|
|
148
|
+
volumes:
|
|
149
|
+
- mysql-data:/var/lib/mysql
|
|
150
|
+
# Les deux bases de la suite e2e (du SQL, pas un script shell : un `.sh`
|
|
151
|
+
# exécutable dont le montage perd le bit tue le serveur au démarrage),
|
|
152
|
+
# créées à la PREMIÈRE initialisation du volume (`down -v` pour rejouer).
|
|
153
|
+
- ./docker/db:/docker-entrypoint-initdb.d:ro
|
|
154
|
+
healthcheck:
|
|
155
|
+
test:
|
|
156
|
+
[
|
|
157
|
+
"CMD-SHELL",
|
|
158
|
+
"mysqladmin ping -h 127.0.0.1 -u${MYSQL_USER:-<%= it.appName %>} -p${MYSQL_PASSWORD:-<%= it.appName %>-dev} --silent",
|
|
159
|
+
]
|
|
160
|
+
interval: 5s
|
|
161
|
+
timeout: 3s
|
|
162
|
+
retries: 10
|
|
163
|
+
start_period: 10s
|
|
164
|
+
|
|
165
|
+
<% } %> # --- RedisInsight (profile tools — UI de debug Redis, jamais en prod) ---
|
|
166
|
+
redisinsight:
|
|
167
|
+
image: redis/redisinsight:latest
|
|
168
|
+
container_name: <%= it.appName %>-redisinsight
|
|
169
|
+
restart: unless-stopped
|
|
170
|
+
profiles: ["tools"]
|
|
171
|
+
networks: [<%= it.appName %>]
|
|
172
|
+
ports:
|
|
173
|
+
- "127.0.0.1:${REDISINSIGHT_PORT:-5540}:5540"
|
|
174
|
+
# Il garde SON état : la connexion enregistrée, les requêtes gardées, les
|
|
175
|
+
# préférences. Sans volume, on la ressaisit à chaque `compose down` — et un
|
|
176
|
+
# outil qu'on doit reconfigurer à chaque usage finit par ne plus servir.
|
|
177
|
+
volumes:
|
|
178
|
+
- redisinsight-data:/data
|
|
179
|
+
depends_on:
|
|
180
|
+
redis:
|
|
181
|
+
condition: service_healthy
|
|
182
|
+
|
|
183
|
+
# --- Loki (profile loki — centralisation des logs, driver `loki` du framework) ---
|
|
184
|
+
# Léger : Loki indexe les LABELS (basse cardinalité), pas le texte → peu de RAM.
|
|
185
|
+
loki:
|
|
186
|
+
image: grafana/loki:3.7.2
|
|
187
|
+
container_name: <%= it.appName %>-loki
|
|
188
|
+
restart: unless-stopped
|
|
189
|
+
profiles: ["loki"]
|
|
190
|
+
networks: [<%= it.appName %>]
|
|
191
|
+
command: -config.file=/etc/loki/local-config.yaml
|
|
192
|
+
ports:
|
|
193
|
+
- "127.0.0.1:${LOKI_PORT:-3100}:3100"
|
|
194
|
+
volumes:
|
|
195
|
+
- loki-data:/loki
|
|
196
|
+
# PAS de healthcheck : image DISTROLESS (aucun shell dans le conteneur) — un
|
|
197
|
+
# healthcheck Docker la marquerait « unhealthy » à tort. Santé côté hôte :
|
|
198
|
+
# curl http://127.0.0.1:3100/ready
|
|
199
|
+
|
|
200
|
+
# --- Grafana (profile loki — visualisation des logs, datasource auto-provisionnée) ---
|
|
201
|
+
# Anonyme + rôle Admin pour un dev sans friction (JAMAIS en prod).
|
|
202
|
+
grafana:
|
|
203
|
+
image: grafana/grafana:latest
|
|
204
|
+
container_name: <%= it.appName %>-grafana
|
|
205
|
+
restart: unless-stopped
|
|
206
|
+
profiles: ["loki"]
|
|
207
|
+
networks: [<%= it.appName %>]
|
|
208
|
+
environment:
|
|
209
|
+
GF_AUTH_ANONYMOUS_ENABLED: "true"
|
|
210
|
+
GF_AUTH_ANONYMOUS_ORG_ROLE: Admin
|
|
211
|
+
GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_PASSWORD:-<%= it.appName %>-dev}
|
|
212
|
+
GF_ANALYTICS_REPORTING_ENABLED: "false"
|
|
213
|
+
GF_ANALYTICS_CHECK_FOR_UPDATES: "false"
|
|
214
|
+
ports:
|
|
215
|
+
- "127.0.0.1:${GRAFANA_PORT:-3000}:3000"
|
|
216
|
+
volumes:
|
|
217
|
+
- grafana-data:/var/lib/grafana
|
|
218
|
+
# Datasource Loki pré-câblée (lecture seule) → Grafana ouvre prêt, 0 setup.
|
|
219
|
+
- ./docker/grafana/provisioning:/etc/grafana/provisioning:ro
|
|
220
|
+
depends_on:
|
|
221
|
+
# service_started (pas healthy) : Loki est distroless, pas de healthcheck.
|
|
222
|
+
loki:
|
|
223
|
+
condition: service_started
|
|
224
|
+
|
|
225
|
+
# --- browser (profil browser — VOIR tes écrans, sans navigateur sur ta machine) ---
|
|
226
|
+
#
|
|
227
|
+
# Un navigateur jetable, piloté par un agent (ou par un script) : il ouvre une
|
|
228
|
+
# page, lit la CONSOLE, l'arbre d'ACCESSIBILITÉ et les REQUÊTES réelles, et
|
|
229
|
+
# dépose captures et journaux dans `tmp/browser/`. Sert à répondre « l'écran se
|
|
230
|
+
# monte-t-il et s'alimente-t-il ? » sans que quelqu'un ait à regarder pour toi.
|
|
231
|
+
#
|
|
232
|
+
# Pourquoi en conteneur plutôt que sur le poste : un navigateur automatisé lancé
|
|
233
|
+
# à nu peut saturer une machine de développement. Ici il est plafonné et meurt
|
|
234
|
+
# au `down`. Rien à installer non plus : ni Chromium, ni pilote.
|
|
235
|
+
#
|
|
236
|
+
# TROIS RÈGLES qui ne se devinent pas — sans elles la page reste blanche ou
|
|
237
|
+
# refusée, alors que le réseau, lui, passe :
|
|
238
|
+
# 1. Joindre ton app par `host.docker.internal`, JAMAIS `localhost` : dans un
|
|
239
|
+
# conteneur ce nom désigne le conteneur lui-même. Si tu actives la barrière
|
|
240
|
+
# Host (`domainCheck`), ajoute ce nom aux `trustedHosts` en développement —
|
|
241
|
+
# sinon elle répond `421` alors que le réseau, lui, passe.
|
|
242
|
+
# 2. Passer par HTTPS : le cookie de session est `secure`, donc IGNORÉ sur une
|
|
243
|
+
# origine `http://` qui n'est pas `localhost` — toutes les requêtes
|
|
244
|
+
# authentifiées reviendraient en `401`, ce qui se lit à tort comme un échec
|
|
245
|
+
# de connexion. Le certificat auto-signé de développement est accepté ici.
|
|
246
|
+
# 3. Rien à poser pour Vite : l'origine des assets se DÉRIVE du `Host` de la
|
|
247
|
+
# requête. Arriver par `host.docker.internal` suffit — l'allowlist Vite et
|
|
248
|
+
# le WebSocket du HMR suivent le même nom, et ton poste continue d'être
|
|
249
|
+
# servi sur `127.0.0.1` en même temps. Pour forcer une origine unique
|
|
250
|
+
# (proxy frontal), écris `publicOrigin` dans `nodefony.config.ts`.
|
|
251
|
+
#
|
|
252
|
+
# DEUX façons de s'en servir, et elles ne se valent pas :
|
|
253
|
+
# - PILOTER directement — l'image embarque Chromium ET Playwright, on y copie
|
|
254
|
+
# un script et on l'exécute (`docker cp … && docker exec … node …`). C'est
|
|
255
|
+
# la voie normale : une commande, un JSON, un code de retour, quelques
|
|
256
|
+
# secondes. Le devkit livre deux sondes prêtes (voir `AGENTS.md`), dont la
|
|
257
|
+
# MESURE des contrastes et tailles réellement calculés par le moteur.
|
|
258
|
+
# - EXPLORER par MCP — le conteneur est aussi un serveur MCP, joignable sur
|
|
259
|
+
# `http://127.0.0.1:${BROWSER_PORT:-3001}/mcp` (il imprime la config à
|
|
260
|
+
# coller dans ses journaux au démarrage). Utile pour fouiller une page à la
|
|
261
|
+
# main ; plus lent et non scriptable pour tout le reste.
|
|
262
|
+
browser:
|
|
263
|
+
# Épinglée par empreinte : un `latest` mouvant sous un banc d'observation
|
|
264
|
+
# ferait varier le rendu sans qu'on le sache.
|
|
265
|
+
image: mcp/playwright@sha256:097d978439237cc9b12e10825836a97245add2be0479272cce9d98c368f024d1
|
|
266
|
+
container_name: <%= it.appName %>-browser
|
|
267
|
+
restart: unless-stopped
|
|
268
|
+
profiles: ["browser"]
|
|
269
|
+
networks: [<%= it.appName %>]
|
|
270
|
+
ports:
|
|
271
|
+
- "127.0.0.1:${BROWSER_PORT:-3001}:3000"
|
|
272
|
+
# L'ENTRYPOINT de l'image fixe déjà `--headless --browser chromium
|
|
273
|
+
# --no-sandbox` ; la commande le COMPLÈTE, elle ne le remplace pas.
|
|
274
|
+
command:
|
|
275
|
+
# Sans `--port`, le serveur parle en stdio : personne au bout d'un service.
|
|
276
|
+
- "--port=3000"
|
|
277
|
+
# Le défaut `localhost` ne serait pas joignable depuis l'hôte, même avec la
|
|
278
|
+
# publication de port ci-dessus.
|
|
279
|
+
- "--host=0.0.0.0"
|
|
280
|
+
# Le port n'est publié que sur 127.0.0.1 : la vérification d'hôte ferait
|
|
281
|
+
# doublon et refuserait l'accès par le nom du service.
|
|
282
|
+
- "--allowed-hosts=*"
|
|
283
|
+
# Certificat de développement auto-signé (cf règle 2 ci-dessus).
|
|
284
|
+
- "--ignore-https-errors"
|
|
285
|
+
# Captures, console et arbres écrits en FICHIERS dans le volume monté.
|
|
286
|
+
- "--output-dir=/output"
|
|
287
|
+
- "--output-mode=file"
|
|
288
|
+
# Profil en mémoire : rien sur le disque du conteneur, et un `down` efface
|
|
289
|
+
# l'état d'authentification avec lui.
|
|
290
|
+
- "--isolated"
|
|
291
|
+
# Un seul contexte pour tous les clients : une session ouverte reste ouverte
|
|
292
|
+
# d'un appel à l'autre. Ne survit pas à un `restart` (profil en mémoire).
|
|
293
|
+
- "--shared-browser-context"
|
|
294
|
+
- "--viewport-size=1440x900"
|
|
295
|
+
volumes:
|
|
296
|
+
# `tmp/` est ignoré par git — une capture est une PHOTO, jamais du versionné.
|
|
297
|
+
- ./tmp/browser:/output
|
|
298
|
+
# Le répertoire courant, pas seulement `--output-dir` : une capture demandée
|
|
299
|
+
# sous un nom relatif est résolue par Playwright contre le répertoire COURANT.
|
|
300
|
+
# Sans cette ligne elle reste dans le conteneur pendant que l'appel répond OK.
|
|
301
|
+
working_dir: /output
|
|
302
|
+
extra_hosts:
|
|
303
|
+
# Le nom par lequel le conteneur joint l'app qui tourne sur l'hôte.
|
|
304
|
+
- "host.docker.internal:host-gateway"
|
|
305
|
+
# Précaution : le `/dev/shm` par défaut de Docker (64 Mo) est connu pour faire
|
|
306
|
+
# mourir un onglet Chromium sans message sur une page lourde.
|
|
307
|
+
shm_size: "1gb"
|
|
308
|
+
# Bornes de ressources : c'est ce qui rend « jetable » vérifiable — un
|
|
309
|
+
# navigateur emballé ne peut pas prendre la machine, il se fait tuer.
|
|
310
|
+
deploy:
|
|
311
|
+
resources:
|
|
312
|
+
limits:
|
|
313
|
+
cpus: "2.0"
|
|
314
|
+
memory: 2g
|
|
315
|
+
|
|
316
|
+
# Bridge nommé explicite : résolution DNS par nom de service, isolation des autres
|
|
317
|
+
# projets compose, nettoyage propre au down. Pas de sous-réseau figé (anti-collision).
|
|
318
|
+
networks:
|
|
319
|
+
<%= it.appName %>:
|
|
320
|
+
name: <%= it.appName %>-net
|
|
321
|
+
driver: bridge
|
|
322
|
+
|
|
323
|
+
volumes:
|
|
324
|
+
redis-data:
|
|
325
|
+
<% if (it.db) { %> <%= it.db.service %>-data:
|
|
326
|
+
<% } %> redisinsight-data:
|
|
327
|
+
loki-data:
|
|
328
|
+
grafana-data:
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
<% if (it.db) { %># <%= it.appName %> — migration du schéma AVANT le déploiement (Kubernetes)
|
|
2
|
+
#
|
|
3
|
+
# Ce fichier est rendu à TON nom : image, secret et libellés portent déjà
|
|
4
|
+
# « <%= it.appName %> ». Il n'y a rien à recopier depuis une page de documentation.
|
|
5
|
+
#
|
|
6
|
+
# ── Pourquoi un travail séparé, et pas autre chose ───────────────────────────
|
|
7
|
+
# Au démarrage, N exemplaires partent EN MÊME TEMPS : appliquer les migrations
|
|
8
|
+
# depuis les pods, c'est N exécutions concurrentes, des privilèges de
|
|
9
|
+
# modification du schéma dans le processus qui sert le trafic, et un
|
|
10
|
+
# redémarrage en boucle généralisé si une migration échoue. Le verrou de
|
|
11
|
+
# Nodefony rend ces variantes SÛRES — elles restent le mauvais endroit. Un
|
|
12
|
+
# conteneur d'initialisation a le même défaut (une exécution par exemplaire).
|
|
13
|
+
# Ici : UN travail, avant le déploiement, avec son propre compte.
|
|
14
|
+
#
|
|
15
|
+
# ── La règle dure ────────────────────────────────────────────────────────────
|
|
16
|
+
# MÊME image et MÊME étiquette que le Deployment qui suit. Une migration jouée
|
|
17
|
+
# depuis une autre version applique un schéma que le code déployé ne connaît
|
|
18
|
+
# pas — et personne ne le voit avant la première requête.
|
|
19
|
+
#
|
|
20
|
+
# ── Le compte qui migre n'est pas le compte qui sert ─────────────────────────
|
|
21
|
+
# `NF_MIGRATE_DATABASE_URL` remplace la connexion du connecteur POUR CETTE
|
|
22
|
+
# COMMANDE SEULEMENT : le secret qui a le droit de modifier le schéma est monté
|
|
23
|
+
# ici, et nulle part ailleurs. Elle doit désigner une connexion DIRECTE — un
|
|
24
|
+
# répartiteur de connexions en mode transaction casse le verrou.
|
|
25
|
+
#
|
|
26
|
+
# kubectl create secret generic <%= it.appName %>-db-migrator \
|
|
27
|
+
# --from-literal=url='<%= it.db.scheme %>://migrator:MOT_DE_PASSE@db:<%= it.db.port %>/<%= it.appName %>'
|
|
28
|
+
#
|
|
29
|
+
# ── Le déroulé ───────────────────────────────────────────────────────────────
|
|
30
|
+
# JOB=$(IMAGE_TAG=1.4.0 envsubst < deploy/migrate-job.yaml | kubectl create -f - -o name)
|
|
31
|
+
# kubectl wait --for=condition=complete --timeout=10m "$JOB" \
|
|
32
|
+
# || { kubectl logs "$JOB"; exit 1; }
|
|
33
|
+
# kubectl set image deployment/<%= it.appName %> <%= it.appName %>=<%= it.appName %>:1.4.0
|
|
34
|
+
#
|
|
35
|
+
# Le travail échoue → le déploiement n'a PAS lieu, l'ancienne version continue
|
|
36
|
+
# de servir. Il réussit → les pods démarrent en `ddl: "none"` et leur sonde de
|
|
37
|
+
# disponibilité les met en service dès que le schéma est à jour.
|
|
38
|
+
#
|
|
39
|
+
# Si tu as un chart Helm, ce même corps se pose en accroche :
|
|
40
|
+
# annotations: { "helm.sh/hook": pre-install,pre-upgrade }
|
|
41
|
+
# En ArgoCD : `argocd.argoproj.io/hook: PreSync` + `sync-wave: "-1"`.
|
|
42
|
+
#
|
|
43
|
+
# Le pourquoi complet, les droits SQL exacts des deux comptes et la règle N-1
|
|
44
|
+
# (compatibilité entre l'ancienne et la nouvelle version pendant le
|
|
45
|
+
# remplacement) : `node_modules/@nodefony/drizzle/docs/migrations.md`.
|
|
46
|
+
apiVersion: batch/v1
|
|
47
|
+
kind: Job
|
|
48
|
+
metadata:
|
|
49
|
+
# `generateName`, pas `name` : un Job est IMMUABLE. Un nom fixe fait échouer
|
|
50
|
+
# le second déploiement sur « existe déjà », et l'on croit à une panne de
|
|
51
|
+
# migration. Le nom réel est rendu par `kubectl create -o name`.
|
|
52
|
+
generateName: <%= it.appName %>-migrate-
|
|
53
|
+
labels:
|
|
54
|
+
app.kubernetes.io/name: <%= it.appName %>
|
|
55
|
+
app.kubernetes.io/component: migrate
|
|
56
|
+
spec:
|
|
57
|
+
# Aucune reprise : une migration qui échoue laisse un état à comprendre, pas
|
|
58
|
+
# à rejouer en aveugle. Le travail est idempotent (rejouer n'applique rien),
|
|
59
|
+
# mais c'est une DÉCISION humaine, pas un réflexe de l'orchestrateur.
|
|
60
|
+
backoffLimit: 0
|
|
61
|
+
# Borne dure. Le délai d'attente de ton outil de déploiement doit rester
|
|
62
|
+
# AU-DESSUS, sinon il abandonne un travail qui, lui, tient toujours le verrou.
|
|
63
|
+
activeDeadlineSeconds: 600
|
|
64
|
+
# Le travail terminé s'efface seul — ses journaux restent le temps de les lire.
|
|
65
|
+
ttlSecondsAfterFinished: 3600
|
|
66
|
+
template:
|
|
67
|
+
metadata:
|
|
68
|
+
labels:
|
|
69
|
+
app.kubernetes.io/name: <%= it.appName %>
|
|
70
|
+
app.kubernetes.io/component: migrate
|
|
71
|
+
spec:
|
|
72
|
+
restartPolicy: Never
|
|
73
|
+
securityContext:
|
|
74
|
+
runAsNonRoot: true
|
|
75
|
+
containers:
|
|
76
|
+
- name: migrate
|
|
77
|
+
image: <%= it.appName %>:${IMAGE_TAG}
|
|
78
|
+
# Même forme que le `CMD` du Dockerfile : le binaire vit dans les
|
|
79
|
+
# `node_modules` de l'image, jamais dans le PATH.
|
|
80
|
+
command: ["node_modules/.bin/nodefony", "orm:migrate", "--json"]
|
|
81
|
+
env:
|
|
82
|
+
- name: NODE_ENV
|
|
83
|
+
value: production
|
|
84
|
+
- name: NF_MIGRATE_DATABASE_URL
|
|
85
|
+
valueFrom:
|
|
86
|
+
secretKeyRef:
|
|
87
|
+
name: <%= it.appName %>-db-migrator
|
|
88
|
+
key: url
|
|
89
|
+
resources:
|
|
90
|
+
requests:
|
|
91
|
+
cpu: 100m
|
|
92
|
+
memory: 128Mi
|
|
93
|
+
limits:
|
|
94
|
+
memory: 512Mi
|
|
95
|
+
securityContext:
|
|
96
|
+
allowPrivilegeEscalation: false
|
|
97
|
+
readOnlyRootFilesystem: false
|
|
98
|
+
capabilities:
|
|
99
|
+
drop: ["ALL"]
|
|
100
|
+
<% } %>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<% if (it.db) { %>-- Les DEUX bases que la suite e2e de <%= it.appName %> exige, créées à
|
|
2
|
+
-- l'initialisation du serveur.
|
|
3
|
+
--
|
|
4
|
+
-- Pourquoi elles ne se créent pas toutes seules au moment des tests : sur un
|
|
5
|
+
-- moteur SERVEUR, `CREATE DATABASE` est un privilège d'administration que
|
|
6
|
+
-- l'utilisateur applicatif n'a pas — et ne doit pas avoir. Une suite de tests
|
|
7
|
+
-- ne fabrique donc pas sa base ; le décor la FOURNIT, ici comme en recette.
|
|
8
|
+
-- (Sur SQLite il n'y a rien de tout ça : un fichier s'efface.)
|
|
9
|
+
--
|
|
10
|
+
-- <%= it.db.databaseE2e %> → la base de la suite e2e, jamais celle du développement
|
|
11
|
+
-- <%= it.db.databaseScratch %> → la base VIERGE que la suite de migrations salit puis remet à zéro
|
|
12
|
+
--
|
|
13
|
+
-- Du SQL, et pas un script shell : l'entrée d'initialisation EXÉCUTE un `.sh`
|
|
14
|
+
-- dès qu'il porte le bit exécutable, et un montage qui ne le transmet pas fait
|
|
15
|
+
-- mourir le serveur au démarrage (`bad interpreter`, code 126) — constaté. Un
|
|
16
|
+
-- `.sql` est joué par le client, sans aucune question de permission.
|
|
17
|
+
--
|
|
18
|
+
-- ⚠️ Ce fichier n'est joué qu'à la PREMIÈRE initialisation du volume. Sur une
|
|
19
|
+
-- infra déjà montée : `docker compose down -v` (PURGE les données), ou créer
|
|
20
|
+
-- les deux bases à la main.
|
|
21
|
+
<% if (it.db.choice === "postgres") { %>CREATE DATABASE "<%= it.db.databaseE2e %>" OWNER "<%= it.appName %>";
|
|
22
|
+
CREATE DATABASE "<%= it.db.databaseScratch %>" OWNER "<%= it.appName %>";
|
|
23
|
+
<% } else { %>-- L'utilisateur applicatif n'a de droits QUE sur sa base : les deux nouvelles
|
|
24
|
+
-- lui sont accordées explicitement, sinon il ne pourrait pas y créer ses tables.
|
|
25
|
+
CREATE DATABASE IF NOT EXISTS `<%= it.db.databaseE2e %>`;
|
|
26
|
+
CREATE DATABASE IF NOT EXISTS `<%= it.db.databaseScratch %>`;
|
|
27
|
+
GRANT ALL PRIVILEGES ON `<%= it.db.databaseE2e %>`.* TO '<%= it.appName %>'@'%';
|
|
28
|
+
GRANT ALL PRIVILEGES ON `<%= it.db.databaseScratch %>`.* TO '<%= it.appName %>'@'%';
|
|
29
|
+
FLUSH PRIVILEGES;
|
|
30
|
+
<% } %><% } %>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Datasource Loki auto-provisionnée pour Grafana (dev) — montée en lecture seule par
|
|
2
|
+
# le compose (./docker/grafana/provisioning:/etc/grafana/provisioning:ro). Pointe le
|
|
3
|
+
# service `loki` via le DNS INTERNE du réseau <%= it.appName %>-net (conteneur→conteneur),
|
|
4
|
+
# JAMAIS localhost. Grafana ouvre donc directement sur Loki, 0 configuration manuelle.
|
|
5
|
+
apiVersion: 1
|
|
6
|
+
datasources:
|
|
7
|
+
- name: Loki
|
|
8
|
+
type: loki
|
|
9
|
+
access: proxy
|
|
10
|
+
uid: <%= it.appName %>-loki
|
|
11
|
+
url: http://loki:3100
|
|
12
|
+
isDefault: true
|
|
13
|
+
editable: true
|
|
14
|
+
jsonData:
|
|
15
|
+
maxLines: 1000
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# ══════════════════════════════════════════════════════════════════════════
|
|
2
|
+
# Secrets & valeurs MACHINE de <%= it.appName %> — GITIGNORÉ (règle *.local)
|
|
3
|
+
# ══════════════════════════════════════════════════════════════════════════
|
|
4
|
+
# Généré par `nodefony create app`. Ne JAMAIS committer ce fichier ; en
|
|
5
|
+
# production les secrets viennent du secret-manager (Secret k8s, vault…).
|
|
6
|
+
# Rotation / rattrapage : npx nodefony security:secrets --write
|
|
7
|
+
|
|
8
|
+
# Clés de chiffrement au repos (32 octets aléatoires, base64) :
|
|
9
|
+
<%= Object.entries(it.secrets).map(([k, v]) => k + "=" + v).join("\n") + "\n" %>
|
|
10
|
+
# Compte admin local : admin / admin par défaut — décommente pour changer :
|
|
11
|
+
# NF_ADMIN_PASSWORD=change-me
|