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,12 @@
|
|
|
1
|
+
# <%= it.pointeur %>
|
|
2
|
+
|
|
3
|
+
> **Lis `AGENTS.md`** — les instructions agent de cette application vivent
|
|
4
|
+
> là-bas (standard **Agentic AI Foundation** / Linux Foundation, précédence
|
|
5
|
+
> « le plus proche gagne »). <%= it.agents %> ne le lit pas d'office : ce
|
|
6
|
+
> fichier n'est qu'un pointeur, et ce qu'on y recopierait divergerait en
|
|
7
|
+
> silence.
|
|
8
|
+
>
|
|
9
|
+
> Deux réflexes gouvernent les autres, et `AGENTS.md` les détaille : **avant
|
|
10
|
+
> d'écrire un fichier, vérifie qu'un générateur ne le produit pas**
|
|
11
|
+
> (`npx nodefony create --help`) — et **avant de dire « fait »,
|
|
12
|
+
> `npm run verify`** : un `npm test` vert ne typecheck RIEN.
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# syntax=docker/dockerfile:1
|
|
2
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
3
|
+
# Image de <%= it.appName %> — Nodefony, doctrine cloud-native.
|
|
4
|
+
#
|
|
5
|
+
# 1 process = 1 container. La montée en charge se fait par RÉPLIQUES de
|
|
6
|
+
# l'orchestrateur (k8s, Swarm, Nomad, Cloud Run, Fargate), jamais par un
|
|
7
|
+
# gestionnaire de process dans l'image.
|
|
8
|
+
#
|
|
9
|
+
# Le container DIALOGUE avec l'orchestrateur par SIGTERM (`docker stop`,
|
|
10
|
+
# éviction k8s) : le framework draine — `/readyz` passe en 503, les sockets
|
|
11
|
+
# ferment en 1001, les requêtes en vol vont à leur terme, puis exit 0 — sous
|
|
12
|
+
# `shutdownDeadline` (15 s par défaut). Garder la période de grâce AU-DESSUS :
|
|
13
|
+
# k8s donne 30 s, `docker stop` 10 s (`-t 20` pour être large).
|
|
14
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
15
|
+
|
|
16
|
+
# ── Étape de construction : la chaîne de compilation ne descend PAS en prod ───
|
|
17
|
+
FROM node:24-slim AS build
|
|
18
|
+
WORKDIR /app
|
|
19
|
+
|
|
20
|
+
# Les sources d'ABORD, en un seul geste — et non le manifeste seul comme le
|
|
21
|
+
# veut l'usage. Une dépendance d'application Nodefony peut être LOCALE : les
|
|
22
|
+
# workspaces `modules/*` que pose `nodefony create module`, ou une archive
|
|
23
|
+
# `file:` avant publication. Installer avant de les avoir copiées échouerait
|
|
24
|
+
# sur elles. Ce qui ne doit pas entrer est listé dans `.dockerignore` — c'est
|
|
25
|
+
# lui qui tient les secrets (`*.local`) et le `dist/` de la machine dehors.
|
|
26
|
+
COPY . ./
|
|
27
|
+
|
|
28
|
+
# Le cache npm est monté plutôt que gravé : la couche est invalidée dès qu'une
|
|
29
|
+
# source change, mais les paquets déjà téléchargés ne le sont pas. On garde
|
|
30
|
+
# donc une installation VIERGE, sans la repayer en réseau à chaque build.
|
|
31
|
+
#
|
|
32
|
+
# 🔴 `--ignore-scripts` n'est PAS une précaution de confort — sans lui, cette
|
|
33
|
+
# image ne se construit pas dès que le dépôt porte un `package-lock.json`,
|
|
34
|
+
# c'est-à-dire dès le premier `npm install` du développeur. La cause est un
|
|
35
|
+
# défaut de npm, ouvert en amont : `npm/cli#9837`, dont le correctif proposé
|
|
36
|
+
# est `npm/cli#9859`. `better-sqlite3` (tiré par `@nodefony/drizzle`)
|
|
37
|
+
# embarque ses binaires prébâtis et pose `gypfile: false` pour interdire à npm
|
|
38
|
+
# de SYNTHÉTISER un `install: node-gyp rebuild` à la vue de son `binding.gyp`.
|
|
39
|
+
# Or ce refus n'est lu que sur un arbre bâti depuis le registre : un nœud venu
|
|
40
|
+
# d'un LOCKFILE ne porte pas le champ, donc npm invente le script — et le
|
|
41
|
+
# paquet se fait recompiler contre sa volonté.
|
|
42
|
+
#
|
|
43
|
+
# Mesuré dans `node:24-slim` : SANS verrou, aucun script et aucun message ;
|
|
44
|
+
# AVEC verrou, npm 11.16 exécute `node-gyp rebuild`, qui meurt faute de Python
|
|
45
|
+
# et de chaîne de compilation. npm 12 le refuserait — sa politique
|
|
46
|
+
# `allowScripts` BLOQUE un script non approuvé, là où celle de npm 11 se
|
|
47
|
+
# contente d'avertir — mais c'est npm 11.16 que `node:24-slim` embarque.
|
|
48
|
+
#
|
|
49
|
+
# Le sauter est de toute façon ce qu'il faut faire : les paquets natifs d'une
|
|
50
|
+
# application Nodefony embarquent leurs binaires prébâtis (vérifié —
|
|
51
|
+
# `better-sqlite3` ouvre et interroge une base après une installation sans
|
|
52
|
+
# scripts). Et c'est un durcissement : un script d'installation est le vecteur
|
|
53
|
+
# des compromissions de chaîne d'approvisionnement, et une image de production
|
|
54
|
+
# n'a aucune raison d'en exécuter.
|
|
55
|
+
RUN --mount=type=cache,target=/root/.npm npm install --ignore-scripts --no-audit --no-fund
|
|
56
|
+
|
|
57
|
+
# Le build passe par le script de l'application (`rolldown`, plus le build du
|
|
58
|
+
# frontend quand il y en a un) : ce Dockerfile n'a donc jamais à connaître la
|
|
59
|
+
# forme de la compilation. `prune` retire ensuite ce qui n'est que du
|
|
60
|
+
# développement — la toolchain a fini son travail.
|
|
61
|
+
#
|
|
62
|
+
# ⚠️ Une application à FRONTEND garde malgré tout Vite : son plugin est une
|
|
63
|
+
# devDependency, et `prune` ne retire pas ce qui satisfait la dépendance de
|
|
64
|
+
# pair (optionnelle) d'un paquet de production. Refaire l'arbre depuis zéro
|
|
65
|
+
# n'y change rien — le `package-lock.json` l'a figé, et c'est mesuré : 161 Mo
|
|
66
|
+
# dans les deux cas. Le jour où cela se corrige, ce sera en amont, dans la
|
|
67
|
+
# façon dont `@nodefony/frontend` déclare Vite.
|
|
68
|
+
RUN npm run build && npm prune --omit=dev
|
|
69
|
+
|
|
70
|
+
# ── Étape d'exécution : minimale, non-root ───────────────────────────────────
|
|
71
|
+
FROM node:24-slim
|
|
72
|
+
ENV NODE_ENV=production
|
|
73
|
+
WORKDIR /app
|
|
74
|
+
|
|
75
|
+
# `/app` doit appartenir à `node` : le démarrage écrit (tmp/, journaux, var/).
|
|
76
|
+
RUN chown node:node /app
|
|
77
|
+
|
|
78
|
+
# Un seul COPY, et c'est délibéré : il emporte `dist/`, les `node_modules`
|
|
79
|
+
# élagués, les assets du frontend et les workspaces `modules/*` — dont
|
|
80
|
+
# l'existence n'est pas connue au moment où ce fichier est généré. Nommer les
|
|
81
|
+
# chemins un à un ferait échouer la construction sur le premier dossier absent.
|
|
82
|
+
COPY --from=build --chown=node:node /app ./
|
|
83
|
+
|
|
84
|
+
# Jamais root : les ports de Nodefony (5151, 5152) n'exigent aucun privilège.
|
|
85
|
+
USER node
|
|
86
|
+
EXPOSE 5151
|
|
87
|
+
|
|
88
|
+
# Sonde de Docker / compose / Swarm sur `/readyz`, la route native du framework.
|
|
89
|
+
# ⚠️ k8s IGNORE HEALTHCHECK : y déclarer `livenessProbe: /livez` (le process
|
|
90
|
+
# est-il vivant ?) et `readinessProbe: /readyz` (peut-il recevoir du trafic ?).
|
|
91
|
+
# ⚠️ PODMAN construit en format OCI par défaut, et l'OCI ne porte PAS cette
|
|
92
|
+
# directive : la sonde est retirée de l'image SANS erreur (`podman inspect
|
|
93
|
+
# --format '{{.HealthCheck}}'` rend alors `<nil>`). Constaté, avec son remède :
|
|
94
|
+
# podman build --format docker -t <image> .
|
|
95
|
+
# Le reste passe tel quel sous Podman — cache monté, forme exec, node en PID 1,
|
|
96
|
+
# arrêt gracieux en 0.
|
|
97
|
+
HEALTHCHECK --interval=10s --timeout=2s --start-period=20s --retries=3 \
|
|
98
|
+
CMD ["node", "-e", "fetch('http://127.0.0.1:5151/readyz').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"]
|
|
99
|
+
|
|
100
|
+
# Forme EXEC obligatoire : `node` devient PID 1 et reçoit le SIGTERM. En forme
|
|
101
|
+
# shell (`CMD npx nodefony production`), c'est `/bin/sh` qui est PID 1 — il ne
|
|
102
|
+
# transmet pas les signaux, donc plus aucun arrêt gracieux et un SIGKILL à
|
|
103
|
+
# chaque déploiement. L'image marcherait, et rien ne signalerait la perte.
|
|
104
|
+
CMD ["node_modules/.bin/nodefony", "production"]
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
# <%= it.appName %>
|
|
2
|
+
|
|
3
|
+
Application [Nodefony](https://github.com/nodefony/nodefony-core) — générée par `nodefony create app`.
|
|
4
|
+
|
|
5
|
+
<% if (it.complete) { %>Cette app n'est pas un « hello world » : c'est le **framework complet, câblé et
|
|
6
|
+
prouvé** — HTTP + WebSocket dans le même controller, ORM avec persistance
|
|
7
|
+
out-of-the-box, firewall applicatif, temps réel, console d'administration,
|
|
8
|
+
tests, lint, infra docker. Chaque fichier est commenté : lis-les, ils expliquent
|
|
9
|
+
le POURQUOI, pas juste le quoi.
|
|
10
|
+
<% } else { %>App **minimale** : le socle serveur (`@nodefony/http`) + le router et les
|
|
11
|
+
controllers (`@nodefony/framework`)<% if (it.front) { %> + le frontend <%= it.frontend %> servi par Vite<% } %> — la
|
|
12
|
+
base saine, à faire grandir. Pour la vitrine complète (ORM, firewall, realtime,
|
|
13
|
+
Studio, infra docker) : régénère avec `--preset complete`.
|
|
14
|
+
<% } %>
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 1. Démarrage express (60 secondes)
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install
|
|
21
|
+
npm run build # bundle rolldown → dist/
|
|
22
|
+
npm run dev # serveur de développement
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Puis :
|
|
26
|
+
|
|
27
|
+
- http://127.0.0.1:5151/api/hello — ta première route
|
|
28
|
+
<% if (it.front) { %>- http://127.0.0.1:5151/ — ton app <%= it.frontend %> (HMR Vite en dev)
|
|
29
|
+
<% } %><% if (it.complete) { %>- http://127.0.0.1:5151/nodefony — **Studio**, la console d'administration (dev)
|
|
30
|
+
|
|
31
|
+
> L'app **persiste déjà** : sans aucune base déclarée, l'ORM Drizzle crée une
|
|
32
|
+
> sqlite locale (`var/databases/`) — users, sessions et jetons y survivent aux
|
|
33
|
+
> redémarrages. Aucun service externe requis pour commencer.
|
|
34
|
+
<% } %>
|
|
35
|
+
## 2. Visite guidée — ce que l'app démontre
|
|
36
|
+
|
|
37
|
+
- **Route HTTP** — `curl http://127.0.0.1:5151/api/hello`
|
|
38
|
+
- **WebSocket, _même controller_** — `npx wscat -c ws://127.0.0.1:5151/api/echo` puis tape un message
|
|
39
|
+
<% if (it.front) { %>- **Frontend <%= it.frontend %> (Vite + HMR)** — http://127.0.0.1:5151/ — l'app fetch le backend via `/api`
|
|
40
|
+
<% } %><% if (it.complete) { %>- **Studio (console admin, dev)** — http://127.0.0.1:5151/nodefony — config, sessions, logs, routes
|
|
41
|
+
- **ORM + persistance** — Drizzle : sans `NF_DATABASE_URL`, sqlite locale automatique
|
|
42
|
+
- **Firewall + audit** — chaque requête traverse le pipeline sécurité (logs `audit`)
|
|
43
|
+
- **Temps réel — socket Nodefony** — `nodefony/controllers/LiveController.ts` : canal `live:events` (alimenté par `live:say`, jamais par une horloge) + RPC `live:ping`<% if (it.front) { %> — la carte « Temps réel » de la page d'accueil le consomme par la façade client<% } %>
|
|
44
|
+
- **Redis (opt-in)** — `NF_REDIS_URL` présente ⇔ module chargé, stores basculent dessus
|
|
45
|
+
<% } %>- **Probes cloud-native** — `curl http://127.0.0.1:5151/livez` (liveness k8s)
|
|
46
|
+
|
|
47
|
+
Le différenciateur Nodefony tient dans `nodefony/controllers/HelloController.ts` :
|
|
48
|
+
**une route GET et une route WEBSOCKET dans la même classe** — même pipeline,
|
|
49
|
+
pas deux mondes séparés.
|
|
50
|
+
|
|
51
|
+
## 3. Structure du projet
|
|
52
|
+
|
|
53
|
+
- `nodefony.config.ts` — LA config de l'app : uniquement les ÉCARTS aux défauts du framework
|
|
54
|
+
- `env.ts` — catalogue **typé** des variables d'environnement (seul lecteur de `process.env`, validé au boot)
|
|
55
|
+
- `index.ts` — point d'entrée : la classe `App` (module racine) + ses controllers<% if (it.front) { %> + l'entry frontend (`registerEntry`)<% } %>
|
|
56
|
+
- `nodefony/controllers/` — tes controllers (`@controller` + `@route`, HTTP **et** WS)
|
|
57
|
+
<% if (it.front) { %>- `frontend/src/` — ton app <%= it.frontend %>, servie par Vite (HMR dev, build prod)
|
|
58
|
+
<% } %>- `tests/` — tests vitest : unitaires (`npm test`) + e2e réel (`npm run test:e2e`)
|
|
59
|
+
- `AGENTS.md` — instructions pour un agent IA, 100 % généré (régénéré par `create`) ; tes notes vivent dans sa zone préservée
|
|
60
|
+
<% if (it.complete) { %>- `compose.yaml` — infra de dev docker : Redis<% if (it.db) { %>, <%= it.db.label %><% } %>, Loki/Grafana (profil)
|
|
61
|
+
<% } %>- `rolldown.config.ts` — build : 3 lignes, délègue tout au socle publié `nodefony/bundler`
|
|
62
|
+
- `.oxlintrc.json` — lint non-intrusif (warn) ; le style est délégué à Prettier
|
|
63
|
+
- `vitest.config.ts` — tests unitaires ; porte le bloc `oxc` décorateurs (OBLIGATOIRE, commenté)
|
|
64
|
+
- `vitest.e2e.config.ts` — tests e2e, config séparée : `npm test` ne montre que ce qu'il exécute
|
|
65
|
+
- `var/` — données locales (sqlite, logs fichiers), gitignoré
|
|
66
|
+
<% if (it.complete) { %>
|
|
67
|
+
## 4. Infra de développement (docker)
|
|
68
|
+
|
|
69
|
+
<% if (it.db) { %>Tu as retenu **<%= it.db.label %>** à la création : le `compose.yaml` ne porte que
|
|
70
|
+
ce service (plus Redis), et `.env` déclare déjà `NF_DATABASE_URL` dessus. Lance
|
|
71
|
+
l'infra **avant** l'app :
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
npm run infra:up # docker : Redis + <%= it.db.label %> (le compose ne porte qu'eux)
|
|
75
|
+
npm run dev
|
|
76
|
+
npm run infra:down # arrêt (les volumes survivent)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Redis n'est utilisé que si `NF_REDIS_URL` est déclarée — sinon l'app reste en
|
|
80
|
+
mémoire de process, ce qui suffit tant qu'elle tourne en un seul exemplaire :
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
NF_REDIS_URL="redis://:<%= it.appName %>-dev@127.0.0.1:6379" # dans .env
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Repasser en **sqlite locale** : commente `NF_DATABASE_URL` dans `.env`, rien
|
|
87
|
+
d'autre. Le dialecte SQL est déduit du **scheme de l'URL** (`postgres://`,
|
|
88
|
+
`mysql://`, `sqlite:`) — changer de base ne change **rien d'autre** dans l'app.
|
|
89
|
+
Les mots de passe par défaut du compose sont publics, pour le dev local uniquement.
|
|
90
|
+
<% } else { %>L'app démarre **sans docker** : la base est une **sqlite locale** (`var/databases/`),
|
|
91
|
+
retenue à la création. Le `compose.yaml` fournit le cran au-dessus :
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
npm run infra:up # Redis (sessions partagées, realtime multi-process)
|
|
95
|
+
docker compose --profile loki up -d # + Loki + Grafana (logs centralisés)
|
|
96
|
+
npm run infra:down # arrêt (les volumes survivent)
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Câblage côté app — une variable, tout le reste se dérive (`store: "auto"`) :
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
NF_REDIS_URL="redis://:<%= it.appName %>-dev@127.0.0.1:6379" # dans .env
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Pour passer sur une vraie base SQL : déclare `NF_DATABASE_URL`. Le dialecte est
|
|
106
|
+
déduit du **scheme de l'URL** (`postgres://`, `mysql://`, `sqlite:`) — changer de
|
|
107
|
+
base ne change **rien d'autre** dans l'app. Le service docker correspondant n'est
|
|
108
|
+
pas dans ce `compose.yaml` (une app y retient un seul dialecte) : ajoute-le, ou
|
|
109
|
+
recrée une app avec `nodefony create app <nom> --database postgres`.
|
|
110
|
+
<% } %><% } %>
|
|
111
|
+
## 5. Tests — `npm test` est ton PREMIER diagnostic
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
npm test # unitaires : l'app se CHARGE (imports, décorateurs, config) — < 1 s
|
|
115
|
+
npm run test:e2e # build + boot RÉEL (production --detach --wait) + HTTP + WS + probes
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
<% if (it.db) { %>> **Les e2e ont besoin de DEUX bases de plus**, sur ton serveur
|
|
119
|
+
> <%= it.db.label %> : `<%= it.db.databaseE2e %>` (la suite ne touche jamais
|
|
120
|
+
> celle du développement) et `<%= it.db.databaseScratch %>` (la base vierge que
|
|
121
|
+
> la suite de migrations salit puis remet à zéro). Le compose les crée à sa
|
|
122
|
+
> PREMIÈRE initialisation — sur une infra déjà montée, `docker compose down -v`
|
|
123
|
+
> les fera naître, ou crée-les à la main. Elles ne se fabriquent pas toutes
|
|
124
|
+
> seules au moment des tests : `CREATE DATABASE` est un privilège
|
|
125
|
+
> d'administration, que ton compte applicatif n'a pas — et ne doit pas avoir.
|
|
126
|
+
|
|
127
|
+
<% } %>**Réflexe** : quelque chose semble cassé → `npm test` AVANT de relire du code ou
|
|
128
|
+
de redémarrer. En une seconde il prouve que l'app s'importe, que les décorateurs
|
|
129
|
+
compilent et que la config valide — ou te donne le fichier exact qui casse.
|
|
130
|
+
|
|
131
|
+
Le rapport est **franc** : les e2e ont leur propre config (`vitest.e2e.config.ts`),
|
|
132
|
+
`npm test` n'affiche jamais de tests « skipped » qui semblent verts sans avoir
|
|
133
|
+
rien prouvé. Le test e2e utilise le lancement détaché natif du framework :
|
|
134
|
+
`--wait` ne rend la main que quand la readiness est sondée (aucun `sleep`
|
|
135
|
+
arbitraire), et `nodefony stop` arrête proprement. Le client WebSocket est le
|
|
136
|
+
`WebSocket` **natif** de Node — zéro dépendance de test.
|
|
137
|
+
|
|
138
|
+
## 6. Qualité du code
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
npm run typecheck # tsgo — le bundler ne type-check PAS : gate séparé, obligatoire
|
|
142
|
+
npm run doctor # cohérence du projet : config, modules déclarés, wiring
|
|
143
|
+
npm run lint # oxlint — garde-fous en warn, non-intrusif
|
|
144
|
+
npm run format # prettier — le style, c'est lui qui décide
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Le lint et le typecheck sont **deux gates distincts**, et c'est volontaire :
|
|
148
|
+
`tsgo` juge les TYPES, `oxlint` juge tout ce qu'un type ne dit pas — code mort,
|
|
149
|
+
promesse mal formée, import Node sans son préfixe. Aucun des deux ne remplace
|
|
150
|
+
l'autre.
|
|
151
|
+
|
|
152
|
+
`oxlint` s'appuie sur le même analyseur que le bundler (`rolldown`) : un seul
|
|
153
|
+
lecteur de ta syntaxe, donc aucun risque que l'un accepte ce que l'autre refuse.
|
|
154
|
+
Il n'a **pas** besoin du paquet `typescript` — celui-ci ne reste dans les
|
|
155
|
+
dépendances que pour ton éditeur.
|
|
156
|
+
|
|
157
|
+
Les règles sont dans `.oxlintrc.json`, commentées par leur intention. Deux
|
|
158
|
+
familles ne pardonnent pas : le code mort (il finit par mentir) et le préfixe
|
|
159
|
+
`node:` sur les modules du runtime (sans lui, un paquet npm homonyme peut prendre
|
|
160
|
+
la place d'un module natif). Le reste avertit sans bloquer.
|
|
161
|
+
|
|
162
|
+
## 7. Quand ça casse (troubleshooting)
|
|
163
|
+
|
|
164
|
+
Dans l'ordre — chaque étape isole un étage, du moins cher au plus cher :
|
|
165
|
+
|
|
166
|
+
1. **`npm test`** — l'app se charge-t-elle ? Import cassé, décorateur, config
|
|
167
|
+
invalide : le fichier fautif est nommé.
|
|
168
|
+
2. **`npm run typecheck`** — un vert vitest ne type-check RIEN (les types sont
|
|
169
|
+
effacés à la transpilation) ; `tsgo` attrape ce que le build laisse passer.
|
|
170
|
+
3. **`npx nodefony status`** — un serveur tourne-t-il déjà ? (port occupé,
|
|
171
|
+
vieux process détaché). `npx nodefony stop` arrête proprement. Si le port est
|
|
172
|
+
tenu par une AUTRE application Nodefony, `status` la nomme :
|
|
173
|
+
`npx nodefony stop <nom>` l'arrête sans changer de dossier.
|
|
174
|
+
4. **Rebuild** — comportement fantôme après un gros changement : `npm run build`
|
|
175
|
+
puis relance (le serveur charge `dist/`, pas tes sources).
|
|
176
|
+
<% if (it.complete) { %>
|
|
177
|
+
### `npm install` s'arrête sur « gyp ERR! find Python »
|
|
178
|
+
|
|
179
|
+
Ton manifeste porte ceci, et il faut l'y laisser :
|
|
180
|
+
|
|
181
|
+
```json
|
|
182
|
+
"allowScripts": { "better-sqlite3": false }
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
`better-sqlite3` (le pilote SQLite, tiré par `@nodefony/drizzle`) livre ses
|
|
186
|
+
binaires **déjà compilés** et demande à npm de ne pas le recompiler. npm oublie
|
|
187
|
+
cette demande dès qu'un `package-lock.json` existe — donc dès ton premier
|
|
188
|
+
`npm install` — et lance alors `node-gyp rebuild`, qui exige Python et un
|
|
189
|
+
compilateur C++ ([npm/cli#9837](https://github.com/npm/cli/issues/9837)). La
|
|
190
|
+
ligne ci-dessus le lui interdit explicitement, ce qu'il respecte dans toutes
|
|
191
|
+
les versions.
|
|
192
|
+
|
|
193
|
+
Si tu l'as retirée et que l'installation casse : remets-la, supprime
|
|
194
|
+
`node_modules`, relance `npm install`. Rien à compiler, SQLite fonctionne.
|
|
195
|
+
<% } %>
|
|
196
|
+
## 8. Production (cloud-native)
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
npm run build # backend (rolldown)<% if (it.front) { %> + frontend (vite → public/dist, fingerprinté)<% } %>
|
|
200
|
+
npm start # nodefony production — bind 0.0.0.0, logs stdout, probes /livez /readyz
|
|
201
|
+
```
|
|
202
|
+
<% if (it.front) { %>
|
|
203
|
+
> Le front de production est un build Vite figé (`public/dist/`), servi en
|
|
204
|
+
> statics par Nodefony — `npm run build` le produit (il chaîne
|
|
205
|
+
> `nodefony frontend:build`). Si tu lances `npm start` sans build, le boot le
|
|
206
|
+
> construit une fois pour toi quand Vite est installé (poste de dev) et le DIT
|
|
207
|
+
> dans les logs ; dans une image de production sans devDependencies, builde à
|
|
208
|
+
> l'image — sinon la page est servie sans interface et le boot le signale en
|
|
209
|
+
> ERROR.
|
|
210
|
+
<% } %>
|
|
211
|
+
### Image de container
|
|
212
|
+
|
|
213
|
+
`Dockerfile` et `.dockerignore` sont générés avec l'app ; la doctrine y est
|
|
214
|
+
commentée ligne à ligne (multi-stage, `USER node`, sonde sur `/readyz`, forme
|
|
215
|
+
exec du `CMD`).
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
docker build -t <%= it.appName %> .
|
|
219
|
+
docker run -p 5151:5151 <%= it.appName %>
|
|
220
|
+
docker stop -t 20 <container> # SIGTERM → drain → exit 0
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
> ⚠️ **La période de grâce doit rester au-dessus de `shutdownDeadline`** (15 s
|
|
224
|
+
> par défaut) : `docker stop` n'attend que 10 s sans `-t`, et k8s 30 s. En
|
|
225
|
+
> dessous, le drain est coupé par un SIGKILL et les requêtes en vol meurent —
|
|
226
|
+
> sans erreur ni trace, à chaque déploiement.
|
|
227
|
+
|
|
228
|
+
#### Si tu PUBLIES cette image
|
|
229
|
+
|
|
230
|
+
L'image emporte `node_modules` élagué : la **publier** — sur un registre public,
|
|
231
|
+
ou en la livrant à un tiers — te rend distributeur du code de tes dépendances.
|
|
232
|
+
MIT, BSD, ISC et Apache-2.0 demandent alors que leur texte et leur copyright
|
|
233
|
+
accompagnent le code. C'est déjà le cas matériellement : chaque paquet porte son
|
|
234
|
+
propre fichier de licence dans `node_modules`, et l'image les emporte avec lui.
|
|
235
|
+
|
|
236
|
+
Ce qui manque, c'est l'inventaire — npm le produit sans rien installer :
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
npm sbom --sbom-format spdx --omit=dev > sbom.spdx.json
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
> Un **déploiement interne** (ton propre registre, ton cluster) n'est pas une
|
|
243
|
+
> distribution : ces obligations ne s'y appliquent pas. Et un inventaire écrit à
|
|
244
|
+
> la main serait faux dès le premier `npm install` — c'est pourquoi il se
|
|
245
|
+
> régénère plutôt qu'il ne se commite.
|
|
246
|
+
|
|
247
|
+
<% if (it.db) { %>### Migrations de schéma
|
|
248
|
+
|
|
249
|
+
En développement, la base **suit le code** : les tables naissent au démarrage et
|
|
250
|
+
un champ facultatif ajouté est posé au boot suivant. Rien de tout cela n'a lieu
|
|
251
|
+
en production — le schéma s'y applique par des **migrations**, avant que le
|
|
252
|
+
premier exemplaire ne démarre.
|
|
253
|
+
|
|
254
|
+
Cette application **naît avec sa première migration**, sous `migrations/` : celle
|
|
255
|
+
qui crée sa table `User`. Elle est écrite à la création et entre dans le premier
|
|
256
|
+
commit, comme le lockfile — le schéma appartient au dépôt, jamais au
|
|
257
|
+
déploiement. Deux conséquences pratiques :
|
|
258
|
+
|
|
259
|
+
- **Si l'application a été créée sans installation** (`--no-install`, ou un build
|
|
260
|
+
en échec), la migration n'a pas pu être écrite : lance
|
|
261
|
+
`npx nodefony orm:generate --name init` avant ton premier déploiement, sinon
|
|
262
|
+
rien ne créera la table et les exemplaires resteront en 503.
|
|
263
|
+
- **On n'écrit pas de migration en production** : `drizzle-kit` est une
|
|
264
|
+
dépendance de développement, absente de l'image. Générer se fait ici,
|
|
265
|
+
appliquer se fait là-bas.
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
npx nodefony orm:generate # écrit les migrations des entités modifiées
|
|
269
|
+
npx nodefony orm:migrate --dry-run # ce qui serait appliqué, sans rien écrire
|
|
270
|
+
npx nodefony orm:migrate # applique (verrou + historique)
|
|
271
|
+
npx nodefony orm:migrate:status # 0 = à jour · 1 = en retard — ta barrière de déploiement
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
`deploy/migrate-job.yaml` est le **travail Kubernetes** correspondant, déjà rendu
|
|
275
|
+
au nom de cette application : même image que le Deployment, secret DDL séparé du
|
|
276
|
+
compte qui sert le trafic, mode d'emploi en tête de fichier. Sans orchestrateur
|
|
277
|
+
(un seul exemplaire), `ddl: "migrate"` dans la config du connecteur applique les
|
|
278
|
+
migrations au démarrage — c'est le seul cas où c'est sûr.
|
|
279
|
+
|
|
280
|
+
> Les pods démarrent sans jamais fabriquer le schéma : un exemplaire dont la base
|
|
281
|
+
> est en retard répond **503 sur `/readyz`** (jamais sur `/livez`) et reste hors
|
|
282
|
+
> du répartiteur de charge, l'ancienne version continuant de servir. Lance le
|
|
283
|
+
> travail de migration : les pods deviennent disponibles **seuls**.
|
|
284
|
+
|
|
285
|
+
Le détail — droits SQL des deux comptes, règle N-1, dérive d'un schéma modifié à
|
|
286
|
+
la main : `node_modules/@nodefony/drizzle/docs/migrations.md`.
|
|
287
|
+
|
|
288
|
+
<% } %>Un process Node = un pod/container ; le scaling horizontal vient de
|
|
289
|
+
l'orchestrateur (k8s, Swarm, Cloud Run…).<% if (it.complete) { %> Studio est chargé en dev seulement
|
|
290
|
+
(`policy: "dev"`) — pour l'exposer en production, protège `/nodefony` par une
|
|
291
|
+
zone firewall puis passe la policy à `"mandatory"` (la recette est commentée
|
|
292
|
+
dans `nodefony.config.ts`).<% } %>
|
|
293
|
+
|
|
294
|
+
## 9. Développer le framework lui-même (`--link`)
|
|
295
|
+
|
|
296
|
+
Si cette app a été générée avec `--link`, les dépendances `nodefony`/`@nodefony/*`
|
|
297
|
+
pointent en `file:` vers un checkout local de `nodefony-core` : tu modifies le
|
|
298
|
+
framework, tu rebuilds le checkout, ton app le voit. Ne publie pas ce
|
|
299
|
+
`package.json` tel quel — après la release npm, régénère sans `--link`
|
|
300
|
+
(versions `^<%= it.nodefonyVersion %>`).
|
|
301
|
+
|
|
302
|
+
## 10. Aller plus loin
|
|
303
|
+
|
|
304
|
+
- **Ajouter une route** : une méthode décorée `@route` dans un controller — c'est tout.
|
|
305
|
+
- **Régénérer autrement** : `nodefony create app` (interactif) ou
|
|
306
|
+
`--preset <complete|minimal> --frontend <none|react|vue|angular|svelte>`
|
|
307
|
+
`--database <sqlite|postgres|mariadb|mysql>` (scriptable).
|
|
308
|
+
<% if (it.complete) { %>- **Protéger une zone** : `use("@nodefony/security", { firewalls: { … } })` dans
|
|
309
|
+
`nodefony.config.ts` (validée Zod au boot, config invalide = échec franc).
|
|
310
|
+
- **Canaux temps réel** : le module realtime multiplexe N canaux duplex sur une
|
|
311
|
+
seule socket — voir la doc du framework.
|
|
312
|
+
- **Studio** est ta carte du territoire : modules chargés, routes, config
|
|
313
|
+
résolue, sessions, logs — tout ce que le framework sait, il te le montre.
|
|
314
|
+
<% } %>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Ce qui n'entre PAS dans le contexte de construction de l'image.
|
|
2
|
+
# Motifs relatifs à la racine du contexte — `**/` pour atteindre les modules
|
|
3
|
+
# locaux (`modules/*/node_modules`, `modules/*/dist`).
|
|
4
|
+
|
|
5
|
+
# Reconstruits DANS l'image. Entrés depuis la machine, ils masqueraient le
|
|
6
|
+
# build de l'étape et l'image partirait avec le code de la veille.
|
|
7
|
+
**/node_modules
|
|
8
|
+
**/dist
|
|
9
|
+
|
|
10
|
+
# Écritures du runtime (journaux, pid, sockets) — propres à une machine.
|
|
11
|
+
var
|
|
12
|
+
*.log
|
|
13
|
+
|
|
14
|
+
# Secrets — convention B : `*.local` n'est jamais commité, et n'entre pas
|
|
15
|
+
# davantage dans une image. Les couches d'une image sont lisibles par qui la
|
|
16
|
+
# télécharge, et un secret y reste même effacé par une couche suivante. En
|
|
17
|
+
# production, les valeurs viennent de l'orchestrateur (variables
|
|
18
|
+
# d'environnement, gestionnaire de secrets).
|
|
19
|
+
*.local
|
|
20
|
+
**/*.local
|
|
21
|
+
|
|
22
|
+
# Bruit — sans effet sur l'exécution, mais chaque octet du contexte est envoyé
|
|
23
|
+
# au démon Docker à chaque construction.
|
|
24
|
+
.git
|
|
25
|
+
.gitignore
|
|
26
|
+
Dockerfile
|
|
27
|
+
.dockerignore
|
|
28
|
+
.DS_Store
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { defineEnv, envEnum, envNumber<% if (it.complete || it.front) { %>, envString<% } %> } from "nodefony";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Catalogue typé des variables d'environnement — SEUL lecteur de `process.env`.
|
|
5
|
+
* Validé au boot (fail-fast), exposé au descripteur de config via `ctx.env`.
|
|
6
|
+
<% if (it.complete) { %> *
|
|
7
|
+
* 💾 PERSISTANCE (infra déclarée) : tu déclares une ou deux URLs, le framework
|
|
8
|
+
* DÉRIVE les stores (users, sessions, jetons, idempotence…) — `store: "auto"`.
|
|
9
|
+
<% } %> */
|
|
10
|
+
export const env = defineEnv({
|
|
11
|
+
/**
|
|
12
|
+
* Port d'écoute HTTP. Absent = défaut du framework (5151). Le déclarer est le
|
|
13
|
+
* cas du DÉPLOIEMENT : le port y est un contrat (service k8s, ingress, sonde).
|
|
14
|
+
* En dev, ne rien mettre : si 5151 est déjà pris (une autre app Nodefony),
|
|
15
|
+
* le framework prend le port libre suivant et l'ANNONCE (`portPolicy: "auto"`,
|
|
16
|
+
* défaut hors production) — en production il échoue franchement (`strict`),
|
|
17
|
+
* car un pod qui écoute ailleurs en silence est un pod injoignable.
|
|
18
|
+
*/
|
|
19
|
+
NF_PORT: envNumber({
|
|
20
|
+
optional: true,
|
|
21
|
+
description: "Port d'écoute HTTP (défaut framework 5151).",
|
|
22
|
+
}),
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Alias PLATEFORME : Cloud Run, Heroku, Railway et Fly injectent `PORT` et
|
|
26
|
+
* exigent que le process écoute dessus. On l'accepte tel quel — zéro glue de
|
|
27
|
+
* déploiement. `NF_PORT` l'emporte si les deux sont présents.
|
|
28
|
+
*/
|
|
29
|
+
PORT: envNumber({
|
|
30
|
+
optional: true,
|
|
31
|
+
description:
|
|
32
|
+
"Alias plateforme du port HTTP (Cloud Run/Heroku) — NF_PORT gagne.",
|
|
33
|
+
}),
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Port d'écoute HTTPS/HTTP2 (défaut framework 5152). Pas d'alias plateforme :
|
|
37
|
+
* en cloud, le TLS est terminé à l'ingress et le pod sert en clair.
|
|
38
|
+
*/
|
|
39
|
+
NF_PORT_HTTPS: envNumber({
|
|
40
|
+
optional: true,
|
|
41
|
+
description: "Port d'écoute HTTPS/HTTP2 (défaut framework 5152).",
|
|
42
|
+
}),
|
|
43
|
+
|
|
44
|
+
NF_LOG_DRIVER: envEnum(["stdout", "file", "null"] as const, {
|
|
45
|
+
default: "stdout",
|
|
46
|
+
}),
|
|
47
|
+
<% if (it.complete) { %>
|
|
48
|
+
/**
|
|
49
|
+
* Infra `database` : URL unique, dialecte déduit du scheme
|
|
50
|
+
* (`sqlite:./var/app.db` | `postgres://…` | `mysql://…` | `mongodb://…`).
|
|
51
|
+
* ABSENTE = profil solo : sqlite local (l'app persiste quand même).
|
|
52
|
+
* Alias plateforme accepté : `DATABASE_URL`. Secret → jamais loggée brute.
|
|
53
|
+
*/
|
|
54
|
+
NF_DATABASE_URL: envString({
|
|
55
|
+
optional: true,
|
|
56
|
+
description:
|
|
57
|
+
"Infra database : URL unique (sqlite:|postgres://|mysql://|mongodb://), dialecte déduit du scheme.",
|
|
58
|
+
}),
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Infra `cache` (éphémère partagé) : URL Redis. Sa présence CHARGE le module
|
|
62
|
+
* `@nodefony/redis` et aiguille les briques éphémères (sessions, idempotence)
|
|
63
|
+
* vers Redis. Alias plateforme accepté : `REDIS_URL`.
|
|
64
|
+
*/
|
|
65
|
+
NF_REDIS_URL: envString({
|
|
66
|
+
optional: true,
|
|
67
|
+
description:
|
|
68
|
+
"Infra cache : URL Redis (redis://…) — sa présence charge @nodefony/redis.",
|
|
69
|
+
}),
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* 🔐 Clés de chiffrement au repos (module security) — les VALEURS vivent dans
|
|
73
|
+
* `.env.local` (gitignoré), générées à la création de l'app. Rotation ou
|
|
74
|
+
* rattrapage : `npx nodefony security:secrets --write`. En production :
|
|
75
|
+
* Secret k8s / vault — jamais en git.
|
|
76
|
+
*
|
|
77
|
+
* Les deux PREMIÈRES sont `optional` À DESSEIN : absentes, la brique
|
|
78
|
+
* concernée se désactive en fail-safe (2FA, webhooks) avec un log CRITIC —
|
|
79
|
+
* une application qui n'en use pas doit pouvoir démarrer sans elles. Ne pas
|
|
80
|
+
* leur ajouter `requiredIn` par symétrie : ce serait refuser de démarrer une
|
|
81
|
+
* application qui ne s'en sert pas.
|
|
82
|
+
*/
|
|
83
|
+
NF_TOTP_KEY: envString({
|
|
84
|
+
optional: true,
|
|
85
|
+
description:
|
|
86
|
+
"Clé de chiffrement des secrets 2FA/TOTP au repos (32 octets base64).",
|
|
87
|
+
}),
|
|
88
|
+
NF_WEBHOOK_KEY: envString({
|
|
89
|
+
optional: true,
|
|
90
|
+
description:
|
|
91
|
+
"Clé de chiffrement des secrets de signature webhook (32 octets base64).",
|
|
92
|
+
}),
|
|
93
|
+
/**
|
|
94
|
+
* Celle-ci n'a PAS de repli acceptable. Absente, un secret est tiré au
|
|
95
|
+
* démarrage : chaque exemplaire en tire un différent, et chaque redémarrage
|
|
96
|
+
* en change — un pod refuse alors le jeton anti-CSRF qu'un autre vient
|
|
97
|
+
* d'émettre, et l'utilisateur voit un formulaire rejeté au hasard, sans la
|
|
98
|
+
* moindre erreur dans les journaux. `requiredIn` fait échouer le démarrage
|
|
99
|
+
* là où ça compte, et `nodefony doctor --env production` le dit AVANT.
|
|
100
|
+
*/
|
|
101
|
+
NF_CSRF_SECRET: envString({
|
|
102
|
+
optional: true,
|
|
103
|
+
requiredIn: ["production"],
|
|
104
|
+
description:
|
|
105
|
+
"Secret des jetons anti-CSRF (synchronizer) — partagé entre process en cluster.",
|
|
106
|
+
}),
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Mot de passe du compte admin seedé au premier boot (voir
|
|
110
|
+
* `nodefony/security/users.ts`). DEV : défaut `admin` (compte admin/admin,
|
|
111
|
+
* comme Grafana — pratique, LOCAL uniquement). PROD : OBLIGATOIRE — sans lui
|
|
112
|
+
* le seed refuse (jamais de mot de passe par défaut en production).
|
|
113
|
+
*
|
|
114
|
+
* Pas de `requiredIn` : l'exigence ne vaut qu'au PREMIER démarrage. Une fois
|
|
115
|
+
* le compte créé, la variable ne sert plus — la rendre requise ferait refuser
|
|
116
|
+
* de démarrer un déploiement qui tourne depuis des mois.
|
|
117
|
+
*/
|
|
118
|
+
NF_ADMIN_PASSWORD: envString({
|
|
119
|
+
optional: true,
|
|
120
|
+
description:
|
|
121
|
+
"Mot de passe du compte admin seedé au 1er boot (obligatoire en production).",
|
|
122
|
+
}),
|
|
123
|
+
<% } %><% if (it.complete || it.front) { %>
|
|
124
|
+
// L'origine publique du dev-server Vite n'est PAS une variable
|
|
125
|
+
// d'environnement : elle se dérive du `Host` de chaque requête, si bien que
|
|
126
|
+
// ton poste et un navigateur en conteneur chargent la même page en même
|
|
127
|
+
// temps, sans rien à poser. Pour un besoin durable — tunnel, proxy frontal —
|
|
128
|
+
// écris `publicOrigin` dans `nodefony.config.ts` : c'est un réglage, il gagne
|
|
129
|
+
// sur la dérivation, et il ne s'oublie pas dans un shell.
|
|
130
|
+
<% } %>});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Fins de ligne — LF PARTOUT, y compris dans la copie de travail Windows.
|
|
2
|
+
#
|
|
3
|
+
# Sans cette règle, git convertit les fichiers texte en CRLF au checkout Windows
|
|
4
|
+
# (`core.autocrlf` y vaut `true` par défaut, et sur les runners de forge). Tout
|
|
5
|
+
# ce qui compare un fichier à une sortie de générateur échoue alors sur une
|
|
6
|
+
# différence invisible à l'œil : `\r\n` contre `\n`. Le message d'erreur, lui,
|
|
7
|
+
# parle d'autre chose — d'un fichier « périmé », d'un test qui « ne correspond
|
|
8
|
+
# pas » — et envoie chercher là où il n'y a rien.
|
|
9
|
+
#
|
|
10
|
+
# C'est aussi ce qui garde un diff lisible quand l'équipe mêle Windows, macOS et
|
|
11
|
+
# Linux : sans cela, un fichier ouvert sous Windows ressort modifié en entier.
|
|
12
|
+
* text=auto eol=lf
|
|
13
|
+
|
|
14
|
+
# Binaires : jamais convertis, jamais diffés comme du texte.
|
|
15
|
+
*.png binary
|
|
16
|
+
*.jpg binary
|
|
17
|
+
*.jpeg binary
|
|
18
|
+
*.gif binary
|
|
19
|
+
*.ico binary
|
|
20
|
+
*.webp binary
|
|
21
|
+
*.woff binary
|
|
22
|
+
*.woff2 binary
|
|
23
|
+
*.ttf binary
|
|
24
|
+
*.otf binary
|
|
25
|
+
*.pdf binary
|
|
26
|
+
*.zip binary
|
|
27
|
+
*.gz binary
|
|
28
|
+
*.db binary
|