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,579 @@
|
|
|
1
|
+
<% if (it.hasOrm) { %>import assert from "node:assert/strict";
|
|
2
|
+
import { execFile<% if (it.db) { %>, execFileSync<% } %> } from "node:child_process";
|
|
3
|
+
import {
|
|
4
|
+
appendFileSync,
|
|
5
|
+
cpSync,
|
|
6
|
+
mkdirSync,
|
|
7
|
+
mkdtempSync,
|
|
8
|
+
readFileSync,
|
|
9
|
+
rmSync,
|
|
10
|
+
} from "node:fs";
|
|
11
|
+
import net from "node:net";
|
|
12
|
+
import os from "node:os";
|
|
13
|
+
import path from "node:path";
|
|
14
|
+
import { promisify } from "node:util";
|
|
15
|
+
import { nodefonyBin, runningAppPort, startSpareApp } from "nodefony/testing";
|
|
16
|
+
// Une application générée importe ses primitives de test EXPLICITEMENT : sa
|
|
17
|
+
// configuration Vitest ne pose pas `globals`, contrairement à celle du dépôt du
|
|
18
|
+
// framework. Un fichier écrit avec la convention du dépôt échoue ici sur un
|
|
19
|
+
// `beforeAll is not defined` — mesuré, pas déduit.
|
|
20
|
+
import { afterAll, beforeAll, describe, it } from "vitest";
|
|
21
|
+
import { URL_BASE_E2E } from "./e2e.setup";
|
|
22
|
+
|
|
23
|
+
const lancer = promisify(execFile);
|
|
24
|
+
const bin = nodefonyBin();
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Les migrations de CETTE application, éprouvées là où elles tourneront.
|
|
28
|
+
*
|
|
29
|
+
* ## Pourquoi cette suite existe
|
|
30
|
+
*
|
|
31
|
+
* Le framework éprouve ses migrations dans son propre dépôt, avec son décor,
|
|
32
|
+
* ses variables et ses conteneurs. Mais l'endroit où elles tournent vraiment,
|
|
33
|
+
* c'est ICI — une application installée, avec ses entités, sa configuration et
|
|
34
|
+
* son environnement. Une chaîne de migration qui marche chez le framework et
|
|
35
|
+
* casse chez vous revient au même que ne rien avoir livré.
|
|
36
|
+
*
|
|
37
|
+
* Ce qui est vérifié tient en une phrase : **le schéma est en place, la
|
|
38
|
+
* commande le dit, et l'application sert**. Chacun de ces trois faits a déjà
|
|
39
|
+
* été faux séparément pendant que les deux autres étaient vrais.
|
|
40
|
+
*
|
|
41
|
+
* ## Ce que ces cas vous donnent
|
|
42
|
+
*
|
|
43
|
+
* Le code de sortie de `orm:migrate:status` est votre **barrière de
|
|
44
|
+
* déploiement** : `0` quand la base est à jour, `1` quand elle est en retard.
|
|
45
|
+
* Un travail d'intégration continue s'arrête dessus, et cette suite prouve que
|
|
46
|
+
* les deux valeurs arrivent — un code de sortie qui ne distinguerait rien
|
|
47
|
+
* laisserait passer un déploiement sur une base non migrée.
|
|
48
|
+
*
|
|
49
|
+
* ## Comment l'étendre
|
|
50
|
+
*
|
|
51
|
+
* Ajoutez vos propres cas ici quand une migration porte une transformation de
|
|
52
|
+
* données : c'est le seul endroit où vous pouvez vérifier que la donnée est
|
|
53
|
+
* arrivée telle que vous l'attendiez, sur la base réelle.
|
|
54
|
+
*/
|
|
55
|
+
|
|
56
|
+
/** Résultat d'un appel à la ligne de commande. */
|
|
57
|
+
interface IRun {
|
|
58
|
+
code: number;
|
|
59
|
+
stdout: string;
|
|
60
|
+
stderr: string;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Lance une commande de l'application et rend ce que le PROCESSUS a produit.
|
|
65
|
+
*
|
|
66
|
+
* Le code de sortie se lit sur le processus, jamais sur une valeur de retour :
|
|
67
|
+
* c'est exactement là qu'il se perd, et c'est lui qui part dans votre chaîne de
|
|
68
|
+
* déploiement.
|
|
69
|
+
*
|
|
70
|
+
* @param args - arguments de la commande.
|
|
71
|
+
* @param env - variables à ajouter à l'environnement.
|
|
72
|
+
* @returns le code de sortie et les deux flux.
|
|
73
|
+
*/
|
|
74
|
+
async function cli(args: string[], env: NodeJS.ProcessEnv = {}): Promise<IRun> {
|
|
75
|
+
try {
|
|
76
|
+
const { stdout, stderr } = await lancer(process.execPath, [bin, ...args], {
|
|
77
|
+
env: {
|
|
78
|
+
...process.env,
|
|
79
|
+
NODE_ENV: "production",
|
|
80
|
+
// La base de la SUITE, jamais celle du développement. Sans cette
|
|
81
|
+
// ligne, la commande inspecte une base que le décor n'a pas migrée et
|
|
82
|
+
// rend « en retard » — un verdict juste, sur la mauvaise base.
|
|
83
|
+
NF_DATABASE_URL: URL_BASE_E2E,
|
|
84
|
+
...env,
|
|
85
|
+
},
|
|
86
|
+
maxBuffer: 16 * 1024 * 1024,
|
|
87
|
+
});
|
|
88
|
+
return { code: 0, stdout, stderr };
|
|
89
|
+
} catch (e) {
|
|
90
|
+
const err = e as { code?: number; stdout?: string; stderr?: string };
|
|
91
|
+
return {
|
|
92
|
+
code: typeof err.code === "number" ? err.code : -1,
|
|
93
|
+
stdout: err.stdout ?? "",
|
|
94
|
+
stderr: err.stderr ?? "",
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Lit l'objet JSON d'une sortie standard.
|
|
101
|
+
*
|
|
102
|
+
* La sortie ENTIÈRE doit se parser : c'est ce que veut dire « flux pur ». Aller
|
|
103
|
+
* chercher « la ligne qui ressemble à du JSON » reviendrait à accepter la
|
|
104
|
+
* pollution que l'on prétend interdire, et votre `| jq` casserait quand même.
|
|
105
|
+
*
|
|
106
|
+
* @param stdout - sortie standard de la commande.
|
|
107
|
+
* @returns l'objet rendu.
|
|
108
|
+
*/
|
|
109
|
+
function json(stdout: string): Record<string, unknown> {
|
|
110
|
+
return JSON.parse(stdout.trim()) as Record<string, unknown>;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
<% if (it.db) { %>/**
|
|
114
|
+
* La base JETABLE de cette suite — celle qu'on a le droit de salir.
|
|
115
|
+
*
|
|
116
|
+
* Elle est FOURNIE par le décor (`<%= it.db.databaseScratch %>`), jamais
|
|
117
|
+
* fabriquée ici : sur un moteur serveur, `CREATE DATABASE` est un privilège
|
|
118
|
+
* d'administration que l'utilisateur applicatif n'a pas. Le compose généré la
|
|
119
|
+
* crée ; votre recette doit faire de même.
|
|
120
|
+
*/
|
|
121
|
+
const URL_JETABLE =
|
|
122
|
+
process.env.NF_E2E_SCRATCH_DATABASE_URL ?? "<%= it.db.urlScratch %>";
|
|
123
|
+
|
|
124
|
+
<% } %>/**
|
|
125
|
+
* Une base jetable VIERGE, prête à recevoir des migrations.
|
|
126
|
+
*
|
|
127
|
+
<% if (it.db) { %> * Une base de serveur ne s'efface pas comme un fichier : on retire ses TABLES,
|
|
128
|
+
* par le geste que le framework prévoit pour ça et qui n'existe qu'en
|
|
129
|
+
* développement. Elle est partagée par tous les cas de cette suite, qui
|
|
130
|
+
* s'exécutent l'un après l'autre — d'où la remise à zéro AVANT chaque usage,
|
|
131
|
+
* et jamais après : un cas qui échoue laisse alors sa base à inspecter.
|
|
132
|
+
<% } else { %> * Un fichier neuf par appel : rien à nettoyer, rien à partager.
|
|
133
|
+
<% } %> *
|
|
134
|
+
* @param dir - dossier de travail du cas appelant.
|
|
135
|
+
* @returns l'URL de la base.
|
|
136
|
+
*/
|
|
137
|
+
function baseVierge(dir: string): string {
|
|
138
|
+
<% if (it.db) { %> void dir; // aucun fichier à poser : la base vit sur le serveur.
|
|
139
|
+
execFileSync(process.execPath, [bin, "orm:reset", "--yes"], {
|
|
140
|
+
stdio: "ignore",
|
|
141
|
+
timeout: 120_000,
|
|
142
|
+
env: {
|
|
143
|
+
...process.env,
|
|
144
|
+
NODE_ENV: "development",
|
|
145
|
+
NF_DATABASE_URL: URL_JETABLE,
|
|
146
|
+
},
|
|
147
|
+
});
|
|
148
|
+
return URL_JETABLE;
|
|
149
|
+
<% } else { %> return `sqlite:${path.join(dir, "base.db")}`;
|
|
150
|
+
<% } %>}
|
|
151
|
+
|
|
152
|
+
/** Base jetable, pour éprouver le cas « en retard » sans toucher à celle des tests. */
|
|
153
|
+
let jetable: { dir: string; url: string };
|
|
154
|
+
|
|
155
|
+
beforeAll(() => {
|
|
156
|
+
const dir = mkdtempSync(path.join(os.tmpdir(), "e2e-migrations-"));
|
|
157
|
+
jetable = { dir, url: baseVierge(dir) };
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
afterAll(() => {
|
|
161
|
+
rmSync(jetable.dir, { recursive: true, force: true });
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
describe("migrations — la base de cette application", () => {
|
|
165
|
+
it("est à jour : `orm:migrate:status` rend 0 et le dit", async () => {
|
|
166
|
+
// Le décor de la suite (`tests/e2e.setup.ts`) a appliqué les migrations
|
|
167
|
+
// avant de démarrer, comme le ferait un orchestrateur avant de lancer vos
|
|
168
|
+
// exemplaires. On vérifie ici que la commande le CONSTATE.
|
|
169
|
+
const r = await cli(["orm:migrate:status", "--json"]);
|
|
170
|
+
assert.equal(r.code, 0, r.stderr.slice(-800));
|
|
171
|
+
|
|
172
|
+
const doc = json(r.stdout);
|
|
173
|
+
assert.equal(doc.verdict, "up-to-date");
|
|
174
|
+
assert.equal(
|
|
175
|
+
doc.formatVersion,
|
|
176
|
+
1,
|
|
177
|
+
"la sortie machine doit annoncer sa version de format",
|
|
178
|
+
);
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
it("le flux `--json` est PUR — un `| jq` ne casse sur aucune ligne", async () => {
|
|
182
|
+
// Le journal du démarrage part sur la sortie d'erreur. S'il se déversait
|
|
183
|
+
// sur la sortie standard, votre traitement casserait sur la première ligne
|
|
184
|
+
// et vous conclueriez à une panne de la commande.
|
|
185
|
+
const r = await cli(["orm:migrate:status", "--json"]);
|
|
186
|
+
assert.doesNotThrow(() => json(r.stdout));
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
it("rejouer `orm:migrate` n'applique rien et reste à 0", async () => {
|
|
190
|
+
// L'idempotence est ce qui rend la commande sûre dans un déploiement : elle
|
|
191
|
+
// peut être lancée par plusieurs exemplaires, ou relancée après un incident.
|
|
192
|
+
const r = await cli(["orm:migrate", "--json"]);
|
|
193
|
+
assert.equal(r.code, 0, r.stderr.slice(-800));
|
|
194
|
+
assert.equal(json(r.stdout).verdict, "up-to-date");
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
it("`--dry-run` n'écrit rien et laisse la base à jour", async () => {
|
|
198
|
+
const essai = await cli(["orm:migrate", "--dry-run", "--json"]);
|
|
199
|
+
assert.equal(essai.code, 0, essai.stderr.slice(-800));
|
|
200
|
+
|
|
201
|
+
const apres = await cli(["orm:migrate:status", "--json"]);
|
|
202
|
+
assert.equal(json(apres.stdout).verdict, "up-to-date");
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
it("🔴 sur une base VIERGE, le statut rend 1 — votre barrière de déploiement", async () => {
|
|
206
|
+
// C'est le cas qui protège la production : une base en retard doit ARRÊTER
|
|
207
|
+
// un déploiement. Un code de sortie qui ne distinguerait pas « à jour » de
|
|
208
|
+
// « en retard » laisserait passer une mise en service sur un schéma absent.
|
|
209
|
+
const enRetard = await cli(["orm:migrate:status", "--json"], {
|
|
210
|
+
NF_DATABASE_URL: jetable.url,
|
|
211
|
+
});
|
|
212
|
+
assert.equal(
|
|
213
|
+
enRetard.code,
|
|
214
|
+
1,
|
|
215
|
+
`une base vierge doit exiger une action :\n${enRetard.stdout}`,
|
|
216
|
+
);
|
|
217
|
+
assert.notEqual(json(enRetard.stdout).verdict, "up-to-date");
|
|
218
|
+
|
|
219
|
+
// Puis la même base, migrée, redevient verte : le cycle complet, sur une
|
|
220
|
+
// base que cette suite a créée elle-même.
|
|
221
|
+
const migre = await cli(["orm:migrate", "--json"], {
|
|
222
|
+
NF_DATABASE_URL: jetable.url,
|
|
223
|
+
});
|
|
224
|
+
assert.equal(migre.code, 0, migre.stderr.slice(-800));
|
|
225
|
+
|
|
226
|
+
const apres = await cli(["orm:migrate:status", "--json"], {
|
|
227
|
+
NF_DATABASE_URL: jetable.url,
|
|
228
|
+
});
|
|
229
|
+
assert.equal(apres.code, 0);
|
|
230
|
+
assert.equal(json(apres.stdout).verdict, "up-to-date");
|
|
231
|
+
});
|
|
232
|
+
|
|
233
|
+
it("🔴 `orm:reset` est REFUSÉ hors développement, et dit quoi faire", async () => {
|
|
234
|
+
// La commande qui vide une base ne doit jamais s'exécuter ailleurs qu'en
|
|
235
|
+
// développement, et le refus doit être utilisable : une phrase, et un geste.
|
|
236
|
+
const r = await cli(["orm:reset", "--yes", "--json"]);
|
|
237
|
+
assert.notEqual(
|
|
238
|
+
r.code,
|
|
239
|
+
0,
|
|
240
|
+
"un effacement ne doit PAS réussir en production",
|
|
241
|
+
);
|
|
242
|
+
|
|
243
|
+
const doc = json(r.stdout);
|
|
244
|
+
const erreur = (doc.error ?? {}) as Record<string, unknown>;
|
|
245
|
+
assert.ok(
|
|
246
|
+
typeof erreur.code === "string" && erreur.code.length > 0,
|
|
247
|
+
"un refus doit rester un verdict structuré, pas un crash",
|
|
248
|
+
);
|
|
249
|
+
const gestes = (erreur.nextActions ?? []) as { command?: string }[];
|
|
250
|
+
assert.ok(
|
|
251
|
+
gestes.some((g) => typeof g.command === "string" && g.command.length > 0),
|
|
252
|
+
"un refus doit proposer au moins un geste",
|
|
253
|
+
);
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
it("🔴 le schéma en place, l'application SERT vraiment", async () => {
|
|
257
|
+
// Les trois faits qui vont ensemble : la base est migrée, la commande le
|
|
258
|
+
// dit, et le serveur répond. Le dernier est celui qu'on oublie de vérifier —
|
|
259
|
+
// une application peut très bien porter toutes ses tables et rendre 500 sur
|
|
260
|
+
// chacune de ses routes.
|
|
261
|
+
const port = runningAppPort();
|
|
262
|
+
const res = await fetch(`http://127.0.0.1:${port}/`);
|
|
263
|
+
assert.ok(
|
|
264
|
+
res.status < 500,
|
|
265
|
+
`l'application rend ${res.status} : le schéma est en place mais elle ne sert pas`,
|
|
266
|
+
);
|
|
267
|
+
});
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Un port LIBRE, demandé au système.
|
|
272
|
+
*
|
|
273
|
+
* L'application de la suite tient déjà le sien ; un exemplaire jetable doit en
|
|
274
|
+
* prendre un autre, et un port écrit en dur finit toujours par tomber sur le
|
|
275
|
+
* décor de quelqu'un d'autre.
|
|
276
|
+
*/
|
|
277
|
+
async function portLibre(): Promise<number> {
|
|
278
|
+
return await new Promise((resolve, reject) => {
|
|
279
|
+
const serveur = net.createServer();
|
|
280
|
+
serveur.once("error", reject);
|
|
281
|
+
serveur.listen(0, "127.0.0.1", () => {
|
|
282
|
+
const adresse = serveur.address();
|
|
283
|
+
const port = typeof adresse === "object" && adresse ? adresse.port : 0;
|
|
284
|
+
serveur.close(() =>
|
|
285
|
+
port > 0 ? resolve(port) : reject(new Error("aucun port libre")),
|
|
286
|
+
);
|
|
287
|
+
});
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* Cite un identifiant pour le moteur visé.
|
|
293
|
+
*
|
|
294
|
+
* MySQL cite à l'accent grave, les deux autres au guillemet droit. Écrire une
|
|
295
|
+
* seule des deux formes rendrait ce fichier juste sur votre machine et faux
|
|
296
|
+
* chez celui qui déploie sur l'autre moteur.
|
|
297
|
+
*
|
|
298
|
+
* @param dialecte - moteur, tel que la commande l'annonce (`driver.dialect`).
|
|
299
|
+
* @param nom - identifiant à citer.
|
|
300
|
+
* @returns l'identifiant cité.
|
|
301
|
+
*/
|
|
302
|
+
function citer(dialecte: string, nom: string): string {
|
|
303
|
+
return dialecte === "mysql" ? `\`${nom}\`` : `"${nom}"`;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
/** Le moteur de CETTE application, tel que la commande l'annonce. */
|
|
307
|
+
async function dialecte(): Promise<string> {
|
|
308
|
+
const r = await cli(["orm:migrate:status", "--json"]);
|
|
309
|
+
const driver = json(r.stdout).driver as { dialect?: string } | undefined;
|
|
310
|
+
assert.ok(driver?.dialect, "la commande n'annonce pas son moteur");
|
|
311
|
+
return driver.dialect;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* Un dossier de migrations JETABLE, et la base qui va avec.
|
|
316
|
+
*
|
|
317
|
+
* Rien n'est écrit dans le dossier `migrations/` de l'application : il est
|
|
318
|
+
* versionné, et un cas de test qui y dépose un fichier laisse derrière lui une
|
|
319
|
+
* migration que quelqu'un finira par appliquer en production.
|
|
320
|
+
*
|
|
321
|
+
* @param avecExistantes - partir des migrations déjà écrites (défaut), ou d'un
|
|
322
|
+
* dossier vide pour voir ce que la génération produit SEULE.
|
|
323
|
+
* @returns le dossier, l'URL de la base jetable, et l'environnement à passer.
|
|
324
|
+
*/
|
|
325
|
+
function decorJetable(avecExistantes = true): {
|
|
326
|
+
dir: string;
|
|
327
|
+
migrations: string;
|
|
328
|
+
env: NodeJS.ProcessEnv;
|
|
329
|
+
} {
|
|
330
|
+
const dir = mkdtempSync(path.join(os.tmpdir(), "e2e-migr-"));
|
|
331
|
+
const migrations = path.join(dir, "migrations");
|
|
332
|
+
if (avecExistantes) {
|
|
333
|
+
cpSync(path.resolve("migrations"), migrations, { recursive: true });
|
|
334
|
+
} else {
|
|
335
|
+
mkdirSync(migrations, { recursive: true });
|
|
336
|
+
}
|
|
337
|
+
return {
|
|
338
|
+
dir,
|
|
339
|
+
migrations,
|
|
340
|
+
env: {
|
|
341
|
+
NF_DATABASE_URL: baseVierge(dir),
|
|
342
|
+
NF__DRIZZLE__MIGRATIONS__DIR: migrations,
|
|
343
|
+
},
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
describe("migrations — générer, retenir le trafic, constater une dérive", () => {
|
|
348
|
+
it("🔴 `orm:generate` écrit les migrations des entités de CETTE application", async () => {
|
|
349
|
+
// Le geste du développeur juste après avoir créé une entité. Ce qu'il
|
|
350
|
+
// produit est vérifié sur le MOTEUR de cette application — pas sur SQLite
|
|
351
|
+
// par commodité : c'est la configuration qui décide du dialecte, et le SQL
|
|
352
|
+
// d'un `CREATE TABLE` n'est pas le même d'un moteur à l'autre.
|
|
353
|
+
const decor = decorJetable(false);
|
|
354
|
+
try {
|
|
355
|
+
const moteur = await dialecte();
|
|
356
|
+
const gen = await cli(
|
|
357
|
+
["orm:generate", "--name", "schema_de_lapplication", "--json"],
|
|
358
|
+
decor.env,
|
|
359
|
+
);
|
|
360
|
+
assert.equal(gen.code, 0, gen.stderr.slice(-800));
|
|
361
|
+
|
|
362
|
+
const rapport = json(gen.stdout);
|
|
363
|
+
assert.equal(
|
|
364
|
+
rapport.generated,
|
|
365
|
+
true,
|
|
366
|
+
"aucune migration écrite : les entités de l'application ne sont pas vues",
|
|
367
|
+
);
|
|
368
|
+
assert.equal(
|
|
369
|
+
(rapport.driver as { dialect?: string }).dialect,
|
|
370
|
+
moteur,
|
|
371
|
+
"la migration est écrite pour un AUTRE moteur que celui configuré",
|
|
372
|
+
);
|
|
373
|
+
|
|
374
|
+
// Le fichier existe, et il CRÉE quelque chose. Un rapport qui annonce une
|
|
375
|
+
// migration vide passerait l'assertion précédente sans rien avoir écrit.
|
|
376
|
+
const fichiers = rapport.files as string[];
|
|
377
|
+
assert.ok(fichiers.length > 0, "le rapport n'annonce aucun fichier");
|
|
378
|
+
const sql = readFileSync(
|
|
379
|
+
path.join(decor.migrations, moteur, `${String(rapport.tag)}.sql`),
|
|
380
|
+
"utf8",
|
|
381
|
+
);
|
|
382
|
+
assert.match(sql, /CREATE TABLE/i);
|
|
383
|
+
|
|
384
|
+
// …et ce qui est écrit S'APPLIQUE : une migration qu'on n'a jamais fait
|
|
385
|
+
// tourner n'est qu'un fichier. Le framework passe d'abord (ses tables
|
|
386
|
+
// sont celles auxquelles les vôtres se réfèrent), puis celle-ci.
|
|
387
|
+
const applique = await cli(["orm:migrate", "--json"], decor.env);
|
|
388
|
+
assert.equal(applique.code, 0, applique.stderr.slice(-800));
|
|
389
|
+
assert.equal(json(applique.stdout).verdict, "up-to-date");
|
|
390
|
+
} finally {
|
|
391
|
+
rmSync(decor.dir, { recursive: true, force: true });
|
|
392
|
+
}
|
|
393
|
+
}, 180_000);
|
|
394
|
+
|
|
395
|
+
it("🔴 la migration de l'application MANQUE — le produit NOMME les tables, et retient", async () => {
|
|
396
|
+
// Le geste qu'on oublie : générer la migration après avoir créé une entité,
|
|
397
|
+
// ou la commiter. Le schéma du framework se pose alors normalement, les
|
|
398
|
+
// commandes disent « à jour » sur ce qu'elles connaissent… et l'application
|
|
399
|
+
// rend 500 sur chacune de ses routes d'entités.
|
|
400
|
+
//
|
|
401
|
+
// Ce que ce cas exige, c'est que le produit le dise AVANT : les tables
|
|
402
|
+
// absentes sont nommées, et l'exemplaire ne se déclare pas prêt.
|
|
403
|
+
const decor = decorJetable(false);
|
|
404
|
+
try {
|
|
405
|
+
// Les migrations du framework s'appliquent — elles, elles sont là. C'est
|
|
406
|
+
// le schéma de VOS entités qui manque.
|
|
407
|
+
const applique = await cli(["orm:migrate", "--json"], decor.env);
|
|
408
|
+
const doc = json(applique.stdout);
|
|
409
|
+
assert.equal(
|
|
410
|
+
doc.verdict,
|
|
411
|
+
"divergent",
|
|
412
|
+
"un schéma applicatif absent est passé pour « à jour »",
|
|
413
|
+
);
|
|
414
|
+
|
|
415
|
+
const ecart = doc.divergence as { missingTables: string[] } | undefined;
|
|
416
|
+
assert.ok(
|
|
417
|
+
ecart && ecart.missingTables.length > 0,
|
|
418
|
+
"les tables absentes ne sont pas nommées : il faudrait ouvrir un client SQL",
|
|
419
|
+
);
|
|
420
|
+
|
|
421
|
+
// 🔴 Le code de sortie MORD. C'est votre barrière de déploiement — sans
|
|
422
|
+
// elle, la mise en service passerait, et le 500 arriverait chez
|
|
423
|
+
// l'utilisateur au lieu d'ici.
|
|
424
|
+
assert.equal(
|
|
425
|
+
applique.code,
|
|
426
|
+
1,
|
|
427
|
+
`un schéma applicatif absent a laissé passer un déploiement :\n${doc.summary as string}`,
|
|
428
|
+
);
|
|
429
|
+
|
|
430
|
+
// …et le geste proposé est celui qui MARCHE : le générateur sait écrire
|
|
431
|
+
// ce que le code déclare.
|
|
432
|
+
const gestes = (doc.nextActions as { command: string }[]).map(
|
|
433
|
+
(a) => a.command,
|
|
434
|
+
);
|
|
435
|
+
assert.ok(
|
|
436
|
+
gestes.some((g) => g.includes("orm:generate")),
|
|
437
|
+
`aucun geste ne mène au schéma manquant : ${JSON.stringify(gestes)}`,
|
|
438
|
+
);
|
|
439
|
+
} finally {
|
|
440
|
+
rmSync(decor.dir, { recursive: true, force: true });
|
|
441
|
+
}
|
|
442
|
+
}, 180_000);
|
|
443
|
+
|
|
444
|
+
it("🔴 un schéma en RETARD retient la mise en service — /readyz 503, /livez 200", async () => {
|
|
445
|
+
// La barrière que voit votre orchestrateur. Elle ne peut s'observer que sur
|
|
446
|
+
// un exemplaire qui DÉMARRE dans cet état : celui de la suite a démarré sur
|
|
447
|
+
// une base migrée, et c'est ce qu'on veut pour tous les autres cas.
|
|
448
|
+
//
|
|
449
|
+
// La distinction entre les deux sondes est le cœur du mécanisme : un schéma
|
|
450
|
+
// en retard est un état EXTERNE, redémarrer le processus ne le répare pas.
|
|
451
|
+
// Un `/livez` qui tomberait provoquerait une cascade de redémarrages
|
|
452
|
+
// inutiles, et le pod n'en sortirait jamais.
|
|
453
|
+
const decor = decorJetable();
|
|
454
|
+
// Relevé AVANT : un second exemplaire écrase l'état d'exécution du projet,
|
|
455
|
+
// et c'est ce que `stop()` s'engage à rendre. Sans ce contrôle, la panne
|
|
456
|
+
// n'apparaîtrait pas ici mais dans le cas SUIVANT, qui accuserait une route
|
|
457
|
+
// n'ayant rien fait.
|
|
458
|
+
const portDeLaSuite = runningAppPort();
|
|
459
|
+
const jetable = await startSpareApp({
|
|
460
|
+
port: await portLibre(),
|
|
461
|
+
httpsPort: await portLibre(),
|
|
462
|
+
env: { NODE_ENV: "production", ...decor.env },
|
|
463
|
+
});
|
|
464
|
+
try {
|
|
465
|
+
const readyz = await fetch(`http://127.0.0.1:${jetable.port}/readyz`);
|
|
466
|
+
assert.equal(
|
|
467
|
+
readyz.status,
|
|
468
|
+
503,
|
|
469
|
+
"un exemplaire dont le schéma est en retard s'est déclaré PRÊT",
|
|
470
|
+
);
|
|
471
|
+
|
|
472
|
+
const livez = await fetch(`http://127.0.0.1:${jetable.port}/livez`);
|
|
473
|
+
assert.equal(
|
|
474
|
+
livez.status,
|
|
475
|
+
200,
|
|
476
|
+
"le processus se déclare MALADE — un redémarrage ne réparera pas un schéma",
|
|
477
|
+
);
|
|
478
|
+
|
|
479
|
+
// 🔴 « et le DIT » : la rétention nomme sa cause et donne le geste. Un 503
|
|
480
|
+
// muet enverrait chercher la panne dans le réseau, le proxy ou l'image.
|
|
481
|
+
const dit = jetable.output();
|
|
482
|
+
assert.match(dit, /migrations? à appliquer/u);
|
|
483
|
+
assert.match(dit, /nodefony orm:migrate/u);
|
|
484
|
+
} finally {
|
|
485
|
+
await jetable.stop();
|
|
486
|
+
rmSync(decor.dir, { recursive: true, force: true });
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
assert.equal(
|
|
490
|
+
runningAppPort(),
|
|
491
|
+
portDeLaSuite,
|
|
492
|
+
"l'exemplaire jetable a emporté l'état d'exécution de l'application",
|
|
493
|
+
);
|
|
494
|
+
}, 180_000);
|
|
495
|
+
|
|
496
|
+
it("🔴 une base modifiée HORS migration est vue `divergent`, et l'écart est NOMMÉ", async () => {
|
|
497
|
+
// La troisième source de vérité. Les deux premières — les fichiers et
|
|
498
|
+
// l'historique — s'accordent à dire « tout est appliqué » ; la base, elle,
|
|
499
|
+
// ne correspond plus au code. C'est l'incident qu'aucun outil de migration
|
|
500
|
+
// ne rend en continu, et il arrive banalement : un correctif d'urgence
|
|
501
|
+
// passé à la main, deux environnements qui ont divergé.
|
|
502
|
+
//
|
|
503
|
+
// On le provoque par le seul canal que possède une application : une
|
|
504
|
+
// migration LIBRE, celle que `--custom` sert à écrire.
|
|
505
|
+
const decor = decorJetable();
|
|
506
|
+
try {
|
|
507
|
+
const moteur = await dialecte();
|
|
508
|
+
const gen = await cli(
|
|
509
|
+
["orm:generate", "--custom", "--name", "retrait_a_la_main", "--json"],
|
|
510
|
+
decor.env,
|
|
511
|
+
);
|
|
512
|
+
assert.equal(gen.code, 0, gen.stderr.slice(-800));
|
|
513
|
+
const fichier = path.join(
|
|
514
|
+
decor.migrations,
|
|
515
|
+
moteur,
|
|
516
|
+
`${String(json(gen.stdout).tag)}.sql`,
|
|
517
|
+
);
|
|
518
|
+
appendFileSync(
|
|
519
|
+
fichier,
|
|
520
|
+
`ALTER TABLE ${citer(moteur, "audit_event")} ` +
|
|
521
|
+
`DROP COLUMN ${citer(moteur, "metadata")};\n`,
|
|
522
|
+
"utf8",
|
|
523
|
+
);
|
|
524
|
+
|
|
525
|
+
// Premier fait : elle est REFUSÉE tant que personne ne l'assume. Une
|
|
526
|
+
// suppression de colonne ne se rattrape que par une restauration de la
|
|
527
|
+
// base — c'est-à-dire une interruption de service et une décision.
|
|
528
|
+
const refus = await cli(["orm:migrate", "--json"], decor.env);
|
|
529
|
+
assert.equal(refus.code, 1, "une migration destructive est passée seule");
|
|
530
|
+
const erreur = (json(refus.stdout).error ?? {}) as {
|
|
531
|
+
code?: string;
|
|
532
|
+
nextActions?: { command?: string }[];
|
|
533
|
+
};
|
|
534
|
+
assert.equal(erreur.code, "NF_MIGRATE_DESTRUCTIVE");
|
|
535
|
+
assert.ok(
|
|
536
|
+
(erreur.nextActions ?? []).some((a) =>
|
|
537
|
+
a.command?.includes("--allow-destructive"),
|
|
538
|
+
),
|
|
539
|
+
"le refus ne donne pas la commande qui l'assume",
|
|
540
|
+
);
|
|
541
|
+
|
|
542
|
+
// Assumée, elle passe — le garde informe, il n'interdit pas.
|
|
543
|
+
const assume = await cli(
|
|
544
|
+
["orm:migrate", "--allow-destructive", "--json"],
|
|
545
|
+
decor.env,
|
|
546
|
+
);
|
|
547
|
+
assert.equal(assume.code, 0, assume.stderr.slice(-800));
|
|
548
|
+
|
|
549
|
+
// Second fait, celui qui compte : le verdict n'est PAS « à jour ». La
|
|
550
|
+
// colonne retirée est toujours déclarée par le code, donc la base s'écarte
|
|
551
|
+
// vraiment de lui — et le produit le SAIT.
|
|
552
|
+
const etat = await cli(["orm:migrate:status", "--json"], decor.env);
|
|
553
|
+
const doc = json(etat.stdout);
|
|
554
|
+
assert.equal(doc.verdict, "divergent");
|
|
555
|
+
|
|
556
|
+
// 🔴 Le verdict dit qu'il y a un écart ; la charge utile doit dire LEQUEL.
|
|
557
|
+
// Sans elle, on ouvre un client SQL et on compare table par table, sur une
|
|
558
|
+
// base de production, au pire moment — pour une réponse déjà calculée.
|
|
559
|
+
const ecart = doc.divergence as
|
|
560
|
+
| {
|
|
561
|
+
additive: { table: string; column: string }[];
|
|
562
|
+
blocking: { table: string; column: string }[];
|
|
563
|
+
missingTables: string[];
|
|
564
|
+
}
|
|
565
|
+
| undefined;
|
|
566
|
+
assert.ok(ecart, "`divergence` absente du verdict `divergent`");
|
|
567
|
+
assert.ok(
|
|
568
|
+
[...ecart.additive, ...ecart.blocking].some(
|
|
569
|
+
(g) => g.table === "audit_event" && g.column === "metadata",
|
|
570
|
+
),
|
|
571
|
+
`la colonne retirée n'est pas nommée : ${JSON.stringify(ecart)}`,
|
|
572
|
+
);
|
|
573
|
+
assert.match(String(doc.summary), /audit_event\.metadata/u);
|
|
574
|
+
} finally {
|
|
575
|
+
rmSync(decor.dir, { recursive: true, force: true });
|
|
576
|
+
}
|
|
577
|
+
}, 240_000);
|
|
578
|
+
});
|
|
579
|
+
<% } %>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2024",
|
|
4
|
+
"module": "ESNext",
|
|
5
|
+
"moduleResolution": "Bundler",
|
|
6
|
+
// ESNext (pas le défaut du target) : en mode --link les types des paquets
|
|
7
|
+
// nodefony sont leurs SOURCES TS, qui utilisent des APIs ES2025+
|
|
8
|
+
// (RegExp.escape…) — même choix que les tsconfigs du framework.
|
|
9
|
+
"lib": ["ESNext", "DOM", "DOM.Iterable"],
|
|
10
|
+
<% if (it.front) { %> // `vite/client` déclare ce que Vite sait importer et que TypeScript ignore :
|
|
11
|
+
// les feuilles de style, les images, `import.meta.env`. Sans lui, un
|
|
12
|
+
// `import "./styles.css"` fait échouer `npm run typecheck` (TS2882) alors
|
|
13
|
+
// que la page se construit et s'affiche parfaitement.
|
|
14
|
+
"types": ["node", "vite/client"],
|
|
15
|
+
<% } else { %> "types": ["node"],
|
|
16
|
+
<% } %>
|
|
17
|
+
"rootDir": "./",
|
|
18
|
+
"outDir": "./dist",
|
|
19
|
+
"strict": true,
|
|
20
|
+
"experimentalDecorators": true,
|
|
21
|
+
"emitDecoratorMetadata": true,
|
|
22
|
+
"esModuleInterop": true,
|
|
23
|
+
"skipLibCheck": true,
|
|
24
|
+
"resolveJsonModule": true,
|
|
25
|
+
"forceConsistentCasingInFileNames": true,
|
|
26
|
+
<% if (it.frontend === "react") { %> "jsx": "react-jsx",
|
|
27
|
+
<% } %> "noEmit": true
|
|
28
|
+
},
|
|
29
|
+
"include": [
|
|
30
|
+
"index.ts",
|
|
31
|
+
"env.ts",
|
|
32
|
+
"nodefony.config.ts",
|
|
33
|
+
"rolldown.config.ts",
|
|
34
|
+
"vitest.config.ts",
|
|
35
|
+
"nodefony/**/*.ts",
|
|
36
|
+
<% if (it.frontend === "react") { %> "frontend/src/**/*",
|
|
37
|
+
<% } %><% if (it.frontend === "vue" || it.frontend === "angular" || it.frontend === "svelte") { %> "frontend/src/**/*.ts",
|
|
38
|
+
<% } %> "tests/**/*.ts"
|
|
39
|
+
],
|
|
40
|
+
<% if (it.frontend === "angular") { %> // tsgo checke le TS du front ; les TEMPLATES Angular sont vérifiés par ngtsc
|
|
41
|
+
// au build Vite (plugin AnalogJS, cf frontend/tsconfig.app.json strictTemplates).
|
|
42
|
+
<% } %><% if (it.frontend === "vue") { %> // tsgo checke le TS du front (main.ts + shim env.d.ts) ; l'INTÉRIEUR des SFC
|
|
43
|
+
// .vue relève de vue-tsc (hors scope tsgo backend).
|
|
44
|
+
<% } %><% if (it.frontend === "svelte") { %> // tsgo checke le TS du front (main.ts + shim env.d.ts) ; l'INTÉRIEUR des
|
|
45
|
+
// .svelte relève de svelte-check (hors scope tsgo backend).
|
|
46
|
+
<% } %> "exclude": ["node_modules", "dist"]
|
|
47
|
+
}
|