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,139 @@
|
|
|
1
|
+
import { formatDuration } from "./report.js";
|
|
2
|
+
import { isSkippedDir, isTestFile } from "./walk.js";
|
|
3
|
+
import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
//#region src/kernel/checks/freshness.ts
|
|
6
|
+
/**
|
|
7
|
+
* Contrôle de FRAÎCHEUR — ce qui tourne n'est pas ce qui est écrit.
|
|
8
|
+
*
|
|
9
|
+
* Le runtime charge `dist/`, jamais les sources. Une route ajoutée et non
|
|
10
|
+
* bâtie répond donc 404, un export retiré reste servi, et rien ne le dit :
|
|
11
|
+
* le fichier existe, il compile, le test qui l'importe directement passe.
|
|
12
|
+
* C'est la cause perdue la plus fréquente de ce framework — au point que le
|
|
13
|
+
* noyau la devine déjà, mais seulement APRÈS un échec de démarrage, dans son
|
|
14
|
+
* conseil de remédiation. Ici, on la voit AVANT.
|
|
15
|
+
*
|
|
16
|
+
* Même famille pour le plancher de Node : une version trop basse ne se
|
|
17
|
+
* manifeste qu'au premier octet de syntaxe non reconnue, à un endroit qui
|
|
18
|
+
* n'a aucun rapport avec la cause.
|
|
19
|
+
*
|
|
20
|
+
* Lecture PURE, comme le reste de `nodefony doctor` : des dates de fichiers
|
|
21
|
+
* et deux manifestes, aucun boot, aucun import du code analysé.
|
|
22
|
+
*
|
|
23
|
+
* ⚠️ La date d'un `dist/` est un INDICE, pas une preuve. Un cache de build
|
|
24
|
+
* peut restaurer un artefact avec un horodatage neuf sans que son contenu
|
|
25
|
+
* corresponde aux sources ; l'inverse — sources plus récentes que le build —
|
|
26
|
+
* reste, lui, toujours vrai. C'est pourquoi ce contrôle n'accuse QUE dans ce
|
|
27
|
+
* sens, et le dit dans son message.
|
|
28
|
+
*/
|
|
29
|
+
/** Dossiers de sources d'une application, dans l'ordre où on les rencontre. */
|
|
30
|
+
const SOURCES = [
|
|
31
|
+
"nodefony",
|
|
32
|
+
"src",
|
|
33
|
+
"index.ts",
|
|
34
|
+
"nodefony.config.ts",
|
|
35
|
+
"env.ts"
|
|
36
|
+
];
|
|
37
|
+
/**
|
|
38
|
+
* Ce fichier entre-t-il dans le build ?
|
|
39
|
+
*
|
|
40
|
+
* Un test n'y entre PAS : le bundler ne l'emporte pas, et le `dist/` n'a
|
|
41
|
+
* aucune raison d'être plus récent que lui. Le compter faisait réclamer un
|
|
42
|
+
* `npm run build` après chaque test écrit — un geste inutile, réclamé par un
|
|
43
|
+
* outil de diagnostic, donc un outil qu'on apprend à ignorer.
|
|
44
|
+
*
|
|
45
|
+
* @param filePath - chemin relatif, écrit en `/`.
|
|
46
|
+
* @returns `true` si une modification de ce fichier périme le build.
|
|
47
|
+
*/
|
|
48
|
+
function isBuiltSource(filePath) {
|
|
49
|
+
if (!filePath.endsWith(".ts") || filePath.endsWith(".d.ts")) return false;
|
|
50
|
+
if (isTestFile(filePath)) return false;
|
|
51
|
+
return !filePath.split("/").some((segment) => isSkippedDir(segment));
|
|
52
|
+
}
|
|
53
|
+
/** La source la plus RÉCEMMENT modifiée sous un chemin, et laquelle. */
|
|
54
|
+
function newestUnder(root, rel) {
|
|
55
|
+
const rien = {
|
|
56
|
+
mtime: 0,
|
|
57
|
+
file: ""
|
|
58
|
+
};
|
|
59
|
+
const target = path.join(root, rel);
|
|
60
|
+
const stat = statSync(target, { throwIfNoEntry: false });
|
|
61
|
+
if (!stat) return rien;
|
|
62
|
+
if (stat.isFile()) return isBuiltSource(rel) ? {
|
|
63
|
+
mtime: stat.mtimeMs,
|
|
64
|
+
file: rel
|
|
65
|
+
} : rien;
|
|
66
|
+
let found = rien;
|
|
67
|
+
for (const entry of readdirSync(target, {
|
|
68
|
+
recursive: true,
|
|
69
|
+
encoding: "utf8"
|
|
70
|
+
})) {
|
|
71
|
+
const filePath = entry.split(path.sep).join("/");
|
|
72
|
+
if (!isBuiltSource(filePath)) continue;
|
|
73
|
+
const s = statSync(path.join(target, entry), { throwIfNoEntry: false });
|
|
74
|
+
if (s?.isFile() && s.mtimeMs > found.mtime) found = {
|
|
75
|
+
mtime: s.mtimeMs,
|
|
76
|
+
file: `${rel}/${filePath}`
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
return found;
|
|
80
|
+
}
|
|
81
|
+
/** La version majeure exigée par `engines.node`, ou `null` si non déclarée. */
|
|
82
|
+
function requiredNodeMajor(engines) {
|
|
83
|
+
if (typeof engines !== "object" || engines === null) return null;
|
|
84
|
+
const brut = engines.node;
|
|
85
|
+
if (typeof brut !== "string") return null;
|
|
86
|
+
const m = /(\d+)/u.exec(brut);
|
|
87
|
+
return m ? Number.parseInt(m[1], 10) : null;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Confronte les sources au build, et la version de Node au plancher déclaré.
|
|
91
|
+
*
|
|
92
|
+
* @param projectRoot - racine de l'application.
|
|
93
|
+
* @param nodeVersion - version du runtime (injectée : une fonction qui lit
|
|
94
|
+
* `process.version` ne s'éprouve que sur la version qu'elle décrit).
|
|
95
|
+
* @returns les écarts, et si la comparaison a pu avoir lieu.
|
|
96
|
+
*/
|
|
97
|
+
function checkFreshness(projectRoot, nodeVersion = process.version) {
|
|
98
|
+
const findings = [];
|
|
99
|
+
const dist = path.join(projectRoot, "dist", "index.js");
|
|
100
|
+
const distStat = statSync(dist, { throwIfNoEntry: false });
|
|
101
|
+
let plusRecente = 0;
|
|
102
|
+
let porteuse = "";
|
|
103
|
+
for (const rel of SOURCES) {
|
|
104
|
+
const when = newestUnder(projectRoot, rel);
|
|
105
|
+
if (when.mtime > plusRecente) {
|
|
106
|
+
plusRecente = when.mtime;
|
|
107
|
+
porteuse = when.file;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (plusRecente > 0 && !distStat) findings.push({
|
|
111
|
+
kind: "dist-missing",
|
|
112
|
+
message: "l'application n'est pas construite (`dist/index.js` absent) : le runtime charge le build, pas les sources — toute route répondra 404. → `npm run build`",
|
|
113
|
+
file: "dist/index.js"
|
|
114
|
+
});
|
|
115
|
+
else if (distStat && plusRecente > distStat.mtimeMs) {
|
|
116
|
+
const gap = formatDuration((plusRecente - distStat.mtimeMs) / 1e3);
|
|
117
|
+
findings.push({
|
|
118
|
+
kind: "dist-stale",
|
|
119
|
+
message: `des sources ont changé APRÈS le dernier build (\`${porteuse}\` est plus récent de ${gap} que \`dist/index.js\`) : le runtime sert encore l'ancien code — une route neuve répondra 404, un export retiré restera servi. → \`npm run build\``,
|
|
120
|
+
file: porteuse
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
const manifeste = path.join(projectRoot, "package.json");
|
|
124
|
+
if (existsSync(manifeste)) try {
|
|
125
|
+
const exige = requiredNodeMajor(JSON.parse(readFileSync(manifeste, "utf8")).engines);
|
|
126
|
+
const current = Number.parseInt(nodeVersion.replace(/^v/u, ""), 10);
|
|
127
|
+
if (exige !== null && Number.isFinite(current) && current < exige) findings.push({
|
|
128
|
+
kind: "node-below-engines",
|
|
129
|
+
message: `Node ${nodeVersion} est en deçà du plancher déclaré par cette application (\`engines.node\` exige ${exige} ou plus) : l'échec arrivera sur une syntaxe non reconnue, loin de sa cause. → installer Node ${exige}, ou relever \`engines.node\` en connaissance de cause`,
|
|
130
|
+
file: "package.json"
|
|
131
|
+
});
|
|
132
|
+
} catch {}
|
|
133
|
+
return {
|
|
134
|
+
findings,
|
|
135
|
+
notComparable: plusRecente === 0 && !distStat
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
//#endregion
|
|
139
|
+
export { checkFreshness, requiredNodeMajor };
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import { engineModeOf } from "../../runtime/engineEnvironment.js";
|
|
2
|
+
import { gateModuleManifest } from "../moduleGating.js";
|
|
3
|
+
import { spawn } from "node:child_process";
|
|
4
|
+
//#region src/kernel/checks/gating.ts
|
|
5
|
+
/**
|
|
6
|
+
* `doctor --env <e>` — ce qui DISPARAÎTRA là-bas, dit depuis ici.
|
|
7
|
+
*
|
|
8
|
+
* Un module `policy: "dev"` est retiré en production. Ce qu'il fournissait
|
|
9
|
+
* disparaît avec lui — un service, un encodeur de mots de passe, une surcharge
|
|
10
|
+
* de configuration — **et le boot continue**. L'application démarre, sert, et
|
|
11
|
+
* une brique manque. Le dépôt a déjà payé ce défaut deux fois, assez pour lui
|
|
12
|
+
* avoir écrit une règle : « une brique requise en production n'est jamais
|
|
13
|
+
* fournie par un seul module `policy:"dev"` ». Rien ne l'attrapait avant la
|
|
14
|
+
* production : le gating n'apparaît dans le bilan que si le DERNIER démarrage
|
|
15
|
+
* était un démarrage de production — c'est-à-dire jamais, sur un poste de
|
|
16
|
+
* développement.
|
|
17
|
+
*
|
|
18
|
+
* 🔴 **Rien n'est déduit, tout est CONSTATÉ.** La question « ce service
|
|
19
|
+
* a-t-il un autre fournisseur là-bas ? » n'a pas de réponse lisible dans un
|
|
20
|
+
* fichier : un défaut du framework et un module de développement posent le même
|
|
21
|
+
* nom, et seul le second l'écrase. On ne la devine donc pas — on demande à un
|
|
22
|
+
* boot console visant l'environnement cible, et on DIFFÉRENCIE les deux vues.
|
|
23
|
+
* Un service encore là-bas est le cas sain, sans qu'aucune règle n'ait eu à le
|
|
24
|
+
* dire.
|
|
25
|
+
*
|
|
26
|
+
* Le boot cible tourne dans un PROCESSUS À PART, et c'est structurel : poser
|
|
27
|
+
* `NODE_ENV=production` dans celui-ci basculerait tout le diagnostic en
|
|
28
|
+
* production — le catalogue de l'application, la fraîcheur du build, jusqu'à la
|
|
29
|
+
* lecture des sources. On l'a déjà vécu une fois, et le rapport était faux sans
|
|
30
|
+
* le dire.
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* L'état d'exécution quand aucun environnement n'est visé.
|
|
34
|
+
*
|
|
35
|
+
* Une seule rédaction, parce que deux chemins y mènent — la commande sans
|
|
36
|
+
* `--env`, et la famille appelée sans cible — et que deux formulations du même
|
|
37
|
+
* fait finiraient par se contredire.
|
|
38
|
+
*/
|
|
39
|
+
const NO_TARGET = {
|
|
40
|
+
ran: false,
|
|
41
|
+
reason: "aucun environnement visé : il n'y a rien à comparer tant qu'on ne dit pas OÙ l'on va",
|
|
42
|
+
short: "aucune cible",
|
|
43
|
+
notApplicable: true,
|
|
44
|
+
unlock: "`nodefony doctor --live --env production`"
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Les services que l'environnement visé ne fournira plus.
|
|
48
|
+
*
|
|
49
|
+
* Fonction PURE : c'est un DIFF de deux listes, rien de plus. Un service encore
|
|
50
|
+
* présent là-bas ne lève rien, quel que soit le module qui le porte — un défaut
|
|
51
|
+
* du framework qui reprend la main est exactement le cas sain que ce contrôle
|
|
52
|
+
* ne doit pas signaler.
|
|
53
|
+
*
|
|
54
|
+
* @param here - les services de l'application telle qu'elle tourne ici.
|
|
55
|
+
* @param there - les services de l'application dans l'environnement visé.
|
|
56
|
+
* @param targetEnv - le nom de l'environnement visé, pour la phrase rendue.
|
|
57
|
+
* @returns un manquement par service perdu, dans l'ordre alphabétique.
|
|
58
|
+
*/
|
|
59
|
+
function lostServices(here, there, targetEnv) {
|
|
60
|
+
const survivors = new Set(there.map((s) => s.name));
|
|
61
|
+
/** Les modules qui portent chaque service perdu, sans doublon. */
|
|
62
|
+
const providers = /* @__PURE__ */ new Map();
|
|
63
|
+
for (const service of here) {
|
|
64
|
+
if (survivors.has(service.name)) continue;
|
|
65
|
+
const list = providers.get(service.name);
|
|
66
|
+
if (list) {
|
|
67
|
+
if (!list.includes(service.module)) list.push(service.module);
|
|
68
|
+
} else providers.set(service.name, [service.module]);
|
|
69
|
+
}
|
|
70
|
+
return [...providers.entries()].sort(([a], [b]) => a.localeCompare(b)).map(([name, from]) => ({
|
|
71
|
+
kind: "service-lost",
|
|
72
|
+
service: name,
|
|
73
|
+
providers: from,
|
|
74
|
+
message: `« ${name} » — fourni ici par ${from.map((m) => `« ${m} »`).join(", ")}, absent en ${targetEnv}`
|
|
75
|
+
}));
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Confronte ce que l'application fournit ICI à ce qu'elle fournira LÀ-BAS.
|
|
79
|
+
*
|
|
80
|
+
* Ne lève jamais : un boot cible impossible devient un état d'exécution
|
|
81
|
+
* lisible. C'est la doctrine de tout l'étage 2 — le rapport statique est celui
|
|
82
|
+
* dont on a besoin quand l'application va mal, et une exception l'emporterait
|
|
83
|
+
* au pire moment.
|
|
84
|
+
*
|
|
85
|
+
* @param input - l'environnement visé, le manifeste, et les deux vues.
|
|
86
|
+
* @returns les briques perdues, les modules écartés, et l'état d'exécution.
|
|
87
|
+
*/
|
|
88
|
+
async function checkGating(input) {
|
|
89
|
+
if (!input.targetEnv) return {
|
|
90
|
+
findings: [],
|
|
91
|
+
gated: [],
|
|
92
|
+
execution: NO_TARGET
|
|
93
|
+
};
|
|
94
|
+
const target = input.targetEnv;
|
|
95
|
+
const { gated } = gateModuleManifest(input.manifest, {
|
|
96
|
+
isProduction: engineModeOf(target) === "production",
|
|
97
|
+
forceDevModules: false,
|
|
98
|
+
config: input.config
|
|
99
|
+
});
|
|
100
|
+
const there = await input.readTarget(target);
|
|
101
|
+
if (!there.ok) return {
|
|
102
|
+
findings: [],
|
|
103
|
+
gated,
|
|
104
|
+
execution: {
|
|
105
|
+
ran: false,
|
|
106
|
+
reason: there.reason,
|
|
107
|
+
short: there.short,
|
|
108
|
+
...there.unlock ? { unlock: there.unlock } : {}
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
return {
|
|
112
|
+
findings: lostServices(input.here, there.services, target),
|
|
113
|
+
gated,
|
|
114
|
+
execution: { ran: true }
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/** Le délai au-delà duquel un boot cible qui n'a pas répondu est abandonné. */
|
|
118
|
+
const TARGET_BOOT_TIMEOUT_MS = 12e4;
|
|
119
|
+
/**
|
|
120
|
+
* Demande à un boot console visant `env` ce qu'il fournit.
|
|
121
|
+
*
|
|
122
|
+
* `nodefony inspect services --json` et rien d'autre : c'est le producteur que
|
|
123
|
+
* la console d'administration et `inspect` lisent déjà, et le dépôt interdit
|
|
124
|
+
* d'en écrire une seconde version. Le sous-processus n'ouvre aucun port (profil
|
|
125
|
+
* console) — il cohabite donc avec un serveur de développement en marche.
|
|
126
|
+
*
|
|
127
|
+
* ⚠️ Les deux étiquettes sont posées ENSEMBLE (`NODE_ENV` et `NF_ENV`) : le
|
|
128
|
+
* mode d'exécution décide du gating `policy`, l'environnement de déploiement
|
|
129
|
+
* décide des surcharges de configuration et des `when()`. N'en poser qu'une
|
|
130
|
+
* ferait diagnostiquer un environnement qui n'existe nulle part.
|
|
131
|
+
*
|
|
132
|
+
* @param input - de quoi relancer le binaire courant.
|
|
133
|
+
* @returns ce que l'environnement visé fournit, ou la raison de son silence.
|
|
134
|
+
*/
|
|
135
|
+
/**
|
|
136
|
+
* L'environnement du boot cible, dérivé de celui d'ici.
|
|
137
|
+
*
|
|
138
|
+
* Extrait pour être ÉPROUVÉ : la seule autre façon de constater ce qu'un
|
|
139
|
+
* sous-processus reçoit est de le démarrer, c'est-à-dire de ne le vérifier que
|
|
140
|
+
* là où il aboutit.
|
|
141
|
+
*
|
|
142
|
+
* @param env - l'environnement du processus courant.
|
|
143
|
+
* @param target - l'environnement visé.
|
|
144
|
+
* @returns l'environnement à donner au boot cible.
|
|
145
|
+
*/
|
|
146
|
+
function targetEnvironment(env, target) {
|
|
147
|
+
return {
|
|
148
|
+
...env,
|
|
149
|
+
NODE_ENV: target,
|
|
150
|
+
NF_ENV: target
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
function readTargetProvision(input) {
|
|
154
|
+
return (env) => new Promise((resolve) => {
|
|
155
|
+
const child = spawn(input.execPath, [
|
|
156
|
+
input.binPath,
|
|
157
|
+
"inspect",
|
|
158
|
+
"services",
|
|
159
|
+
"--json"
|
|
160
|
+
], {
|
|
161
|
+
cwd: input.cwd,
|
|
162
|
+
env: targetEnvironment(input.env, env),
|
|
163
|
+
stdio: [
|
|
164
|
+
"ignore",
|
|
165
|
+
"pipe",
|
|
166
|
+
"pipe"
|
|
167
|
+
]
|
|
168
|
+
});
|
|
169
|
+
let out = "";
|
|
170
|
+
let err = "";
|
|
171
|
+
child.stdout.on("data", (c) => out += c.toString());
|
|
172
|
+
child.stderr.on("data", (c) => err += c.toString());
|
|
173
|
+
const timer = setTimeout(() => {
|
|
174
|
+
child.kill("SIGKILL");
|
|
175
|
+
}, input.timeoutMs ?? 12e4);
|
|
176
|
+
timer.unref?.();
|
|
177
|
+
child.on("error", (e) => {
|
|
178
|
+
clearTimeout(timer);
|
|
179
|
+
resolve({
|
|
180
|
+
ok: false,
|
|
181
|
+
reason: `le démarrage visant ${env} n'a pas pu être lancé — ${e.message}`,
|
|
182
|
+
short: "boot impossible"
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
child.on("close", (code) => {
|
|
186
|
+
clearTimeout(timer);
|
|
187
|
+
if (code !== 0) return resolve({
|
|
188
|
+
ok: false,
|
|
189
|
+
reason: `l'application ne démarre pas en ${env} (code ${code ?? "tué"}) — il n'y a rien à comparer tant qu'elle ne démarre pas${lastLine(err)}`,
|
|
190
|
+
short: "boot en échec",
|
|
191
|
+
unlock: `NODE_ENV=${env} npx nodefony inspect services`
|
|
192
|
+
});
|
|
193
|
+
try {
|
|
194
|
+
const parsed = JSON.parse(out);
|
|
195
|
+
if (!Array.isArray(parsed)) throw new Error("liste attendue");
|
|
196
|
+
return resolve({
|
|
197
|
+
ok: true,
|
|
198
|
+
services: parsed.map(toService)
|
|
199
|
+
});
|
|
200
|
+
} catch (e) {
|
|
201
|
+
return resolve({
|
|
202
|
+
ok: false,
|
|
203
|
+
reason: `le démarrage visant ${env} a répondu autre chose qu'une liste de services — ${e.message}`,
|
|
204
|
+
short: "réponse illisible"
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
/** Un élément de la réponse, sans rien affirmer de sa forme. */
|
|
211
|
+
function toService(row) {
|
|
212
|
+
const bag = row ?? {};
|
|
213
|
+
return {
|
|
214
|
+
name: typeof bag.name === "string" ? bag.name : "",
|
|
215
|
+
module: typeof bag.module === "string" ? bag.module : ""
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* La dernière ligne utile d'un journal d'erreur, pour EXPLIQUER un échec.
|
|
220
|
+
*
|
|
221
|
+
* Un boot qui échoue écrit des dizaines de lignes ; les rendre toutes noierait
|
|
222
|
+
* le rapport, n'en rendre aucune laisserait « ça ne démarre pas » sans la
|
|
223
|
+
* moindre piste. Une ligne, et le geste pour voir le reste.
|
|
224
|
+
*/
|
|
225
|
+
function lastLine(stderr) {
|
|
226
|
+
const lines = stderr.split("\n").map((l) => l.trim()).filter((l) => l.length > 0);
|
|
227
|
+
const last = lines[lines.length - 1];
|
|
228
|
+
return last ? ` : ${last}` : "";
|
|
229
|
+
}
|
|
230
|
+
//#endregion
|
|
231
|
+
export { NO_TARGET, TARGET_BOOT_TIMEOUT_MS, checkGating, lostServices, readTargetProvision, targetEnvironment };
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
//#region src/kernel/checks/guards.ts
|
|
4
|
+
/**
|
|
5
|
+
* `doctor` — les GARDES du projet sont-elles armées ?
|
|
6
|
+
*
|
|
7
|
+
* 🔴 Ce contrôle ne signale JAMAIS une occurrence de code. Le linter et le
|
|
8
|
+
* vérificateur de types détectent déjà `any` explicite et `@ts-ignore`, et ils
|
|
9
|
+
* le font correctement : un contrôle recopié en expression régulière se
|
|
10
|
+
* tromperait sur les commentaires et les chaînes, et divergerait de la règle au
|
|
11
|
+
* premier cas particulier. C'est écrit ici en toutes lettres pour que personne
|
|
12
|
+
* ne l'ajoute plus tard.
|
|
13
|
+
*
|
|
14
|
+
* Ce que `doctor` apporte, et que personne ne fait : vérifier que la garde
|
|
15
|
+
* EXISTE. Une application où quelqu'un a mis `"no-explicit-any": "off"`, retiré
|
|
16
|
+
* `--deny-warnings`, ou cassé la chaîne `verify` n'a plus de filet — et rien ne
|
|
17
|
+
* le signale, puisque le lint passe. Un filet décroché ne fait pas de bruit ;
|
|
18
|
+
* c'est toute la difficulté.
|
|
19
|
+
*
|
|
20
|
+
* ⚠️ La désactivation SOUS les tests, la configuration et les scripts est
|
|
21
|
+
* VOULUE : un décor écrit `any` à dessein. C'est ce qui rend un `off` global
|
|
22
|
+
* difficile à repérer à l'œil — il ressemble à ceux-là.
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* Les règles dont la désactivation retire un filet, et pourquoi.
|
|
26
|
+
*
|
|
27
|
+
* Nommées ici plutôt que devinées : ce sont celles que le projet a choisies et
|
|
28
|
+
* que sa doctrine cite (« 0 `any`, 0 `@ts-ignore` »). Une liste dérivée de la
|
|
29
|
+
* configuration ne dirait rien — c'est justement l'absence qu'on cherche.
|
|
30
|
+
*/
|
|
31
|
+
const REQUIRED_RULES = [{
|
|
32
|
+
name: "typescript/no-explicit-any",
|
|
33
|
+
why: "un `any` explicite éteint le typage là où il compte le plus",
|
|
34
|
+
category: "restriction"
|
|
35
|
+
}, {
|
|
36
|
+
name: "typescript/ban-ts-comment",
|
|
37
|
+
why: "`@ts-ignore` fait taire le compilateur sans laisser de trace",
|
|
38
|
+
category: "pedantic"
|
|
39
|
+
}];
|
|
40
|
+
/**
|
|
41
|
+
* Les chemins où la désactivation d'une règle est VOULUE.
|
|
42
|
+
*
|
|
43
|
+
* Un décor de test écrit `any` à dessein, une configuration d'outil aussi. Un
|
|
44
|
+
* `off` qui ne vise que ces chemins n'est pas un filet décroché — le confondre
|
|
45
|
+
* avec un `off` global ferait crier `doctor` sur une configuration saine.
|
|
46
|
+
*/
|
|
47
|
+
const ALLOWED_OFF = [
|
|
48
|
+
"test",
|
|
49
|
+
"spec",
|
|
50
|
+
"config",
|
|
51
|
+
"scripts",
|
|
52
|
+
"skills"
|
|
53
|
+
];
|
|
54
|
+
/** Ce que la chaîne `verify` doit enchaîner pour mériter son nom. */
|
|
55
|
+
const VERIFY_STEPS = [
|
|
56
|
+
"typecheck",
|
|
57
|
+
"lint",
|
|
58
|
+
"test"
|
|
59
|
+
];
|
|
60
|
+
/** Les sévérités qui n'arment RIEN. `allow` est le mot d'oxlint pour `off`. */
|
|
61
|
+
const SILENT_SEVERITIES = /* @__PURE__ */ new Set([
|
|
62
|
+
"off",
|
|
63
|
+
"allow",
|
|
64
|
+
0
|
|
65
|
+
]);
|
|
66
|
+
/** Une valeur de règle qui NE garde plus rien. */
|
|
67
|
+
function isOff(value) {
|
|
68
|
+
if (SILENT_SEVERITIES.has(value)) return true;
|
|
69
|
+
if (Array.isArray(value)) return SILENT_SEVERITIES.has(value[0]);
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Le nom d'une règle réduit à ce qui l'identifie vraiment.
|
|
74
|
+
*
|
|
75
|
+
* `typescript/no-explicit-any`, `@typescript-eslint/no-explicit-any` et
|
|
76
|
+
* `no-explicit-any` désignent la MÊME règle — oxlint accepte les trois formes
|
|
77
|
+
* (constaté en l'exécutant). Comparer les chaînes brutes faisait donc déclarer
|
|
78
|
+
* « absente » une règle écrite sous un autre de ses noms.
|
|
79
|
+
*
|
|
80
|
+
* @param name - le nom tel que la configuration l'écrit.
|
|
81
|
+
* @returns le segment qui suit le dernier `/`.
|
|
82
|
+
*/
|
|
83
|
+
function ruleKey(name) {
|
|
84
|
+
const at = name.lastIndexOf("/");
|
|
85
|
+
return at === -1 ? name : name.slice(at + 1);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* La valeur déclarée pour une règle, quel que soit l'alias employé.
|
|
89
|
+
*
|
|
90
|
+
* @param rules - le bloc `rules` de la configuration.
|
|
91
|
+
* @param name - la règle cherchée.
|
|
92
|
+
* @returns la valeur déclarée, ou `undefined` si la règle n'est pas nommée.
|
|
93
|
+
*/
|
|
94
|
+
function declaredRule(rules, name) {
|
|
95
|
+
const wanted = ruleKey(name);
|
|
96
|
+
let found;
|
|
97
|
+
for (const key of Object.keys(rules)) if (ruleKey(key) === wanted) found = rules[key];
|
|
98
|
+
return found;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* La catégorie qui armerait la règle est-elle activée ?
|
|
102
|
+
*
|
|
103
|
+
* @param linter - la configuration du linter.
|
|
104
|
+
* @param category - la catégorie oxlint de la règle.
|
|
105
|
+
* @returns `true` si la catégorie est déclarée avec une sévérité qui mord.
|
|
106
|
+
*/
|
|
107
|
+
function categoryArms(linter, category) {
|
|
108
|
+
const severity = (linter.categories ?? {})[category];
|
|
109
|
+
return severity !== void 0 && !isOff(severity);
|
|
110
|
+
}
|
|
111
|
+
/** `true` si ce motif de fichiers ne vise que des zones où le `off` est voulu. */
|
|
112
|
+
function isAllowedScope(files) {
|
|
113
|
+
const list = Array.isArray(files) ? files : [files];
|
|
114
|
+
if (list.length === 0) return false;
|
|
115
|
+
return list.every((f) => typeof f === "string" && ALLOWED_OFF.some((word) => f.toLowerCase().includes(word)));
|
|
116
|
+
}
|
|
117
|
+
/** Lit un JSON qui tolère les commentaires — la configuration du linter en a. */
|
|
118
|
+
function readJsonc(file) {
|
|
119
|
+
try {
|
|
120
|
+
const raw = readFileSync(file, "utf8").replace(/^\s*\/\/[^\n]*$/gmu, "");
|
|
121
|
+
return JSON.parse(raw);
|
|
122
|
+
} catch {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Constate que les gardes du projet sont armées.
|
|
128
|
+
*
|
|
129
|
+
* @param options - la racine du projet.
|
|
130
|
+
* @returns les gardes décrochées, et le nombre de celles qui tiennent.
|
|
131
|
+
*/
|
|
132
|
+
function checkGuards(options) {
|
|
133
|
+
const findings = [];
|
|
134
|
+
let armed = 0;
|
|
135
|
+
const armedNames = [];
|
|
136
|
+
const manifestPath = path.join(options.projectRoot, "package.json");
|
|
137
|
+
const linterPath = path.join(options.projectRoot, ".oxlintrc.json");
|
|
138
|
+
const manifest = readJsonc(manifestPath);
|
|
139
|
+
const linter = readJsonc(linterPath);
|
|
140
|
+
const manifestFile = "package.json";
|
|
141
|
+
const linterFile = ".oxlintrc.json";
|
|
142
|
+
if (manifest) {
|
|
143
|
+
const scripts = manifest.scripts ?? {};
|
|
144
|
+
const lint = typeof scripts.lint === "string" ? scripts.lint : "";
|
|
145
|
+
const typecheck = typeof scripts.typecheck === "string" ? scripts.typecheck : "";
|
|
146
|
+
const verify = typeof scripts.verify === "string" ? scripts.verify : "";
|
|
147
|
+
if (!lint) findings.push({
|
|
148
|
+
kind: "lint-missing",
|
|
149
|
+
file: manifestFile,
|
|
150
|
+
message: "aucun script `lint` : les règles du projet ne sont exécutées par personne — ni en local, ni dans une forge, et leur configuration ne garde alors plus rien. → `npm pkg set scripts.lint=\"oxlint --deny-warnings\"`"
|
|
151
|
+
});
|
|
152
|
+
else if (!lint.includes("--deny-warnings")) findings.push({
|
|
153
|
+
kind: "lint-not-blocking",
|
|
154
|
+
file: manifestFile,
|
|
155
|
+
message: "le script `lint` ne porte pas `--deny-warnings` : les règles du projet sont en `warn`, donc le linter passe même quand elles mordent — la garde est là, mais elle ne retient rien"
|
|
156
|
+
});
|
|
157
|
+
else {
|
|
158
|
+
armed++;
|
|
159
|
+
armedNames.push("lint");
|
|
160
|
+
}
|
|
161
|
+
if (!typecheck) findings.push({
|
|
162
|
+
kind: "typecheck-missing",
|
|
163
|
+
file: manifestFile,
|
|
164
|
+
message: "aucun script `typecheck` : le bundler ne vérifie PAS les types, et rien d'autre ne le fait — du code qui ne compile pas peut être publié sans qu'aucune barrière ne s'y oppose. → `npm pkg set scripts.typecheck=\"tsgo --noEmit\"`"
|
|
165
|
+
});
|
|
166
|
+
else {
|
|
167
|
+
armed++;
|
|
168
|
+
armedNames.push("typecheck");
|
|
169
|
+
}
|
|
170
|
+
const missing = VERIFY_STEPS.filter((step) => !verify.includes(step));
|
|
171
|
+
if (!verify) findings.push({
|
|
172
|
+
kind: "verify-missing",
|
|
173
|
+
file: manifestFile,
|
|
174
|
+
message: `aucune chaîne \`verify\` : rien n'enchaîne ${VERIFY_STEPS.join(", ")} en une seule commande — c'est celle qu'une forge appelle, et celle qu'on tape avant de publier. → \`npm pkg set scripts.verify="${VERIFY_STEPS.map((e) => `npm run ${e}`).join(" && ")}"\``
|
|
175
|
+
});
|
|
176
|
+
else if (missing.length > 0) findings.push({
|
|
177
|
+
kind: "verify-broken",
|
|
178
|
+
file: manifestFile,
|
|
179
|
+
message: `la chaîne \`verify\` n'enchaîne plus ${missing.join(", ")} : elle passe donc en ignorant ce qu'elle est censée contrôler, et c'est elle qu'une forge appelle`
|
|
180
|
+
});
|
|
181
|
+
else if (verify) {
|
|
182
|
+
armed++;
|
|
183
|
+
armedNames.push("verify");
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (linter) {
|
|
187
|
+
const rules = linter.rules ?? {};
|
|
188
|
+
const overrides = Array.isArray(linter.overrides) ? linter.overrides : [];
|
|
189
|
+
for (const { name, why, category } of REQUIRED_RULES) {
|
|
190
|
+
if (isOff(declaredRule(rules, name))) {
|
|
191
|
+
findings.push({
|
|
192
|
+
kind: "rule-disabled",
|
|
193
|
+
file: linterFile,
|
|
194
|
+
message: `la règle \`${name}\` est désactivée GLOBALEMENT — ${why}`
|
|
195
|
+
});
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
const large = overrides.find((o) => {
|
|
199
|
+
const bag = o ?? {};
|
|
200
|
+
return isOff(declaredRule(bag.rules ?? {}, name)) && !isAllowedScope(bag.files);
|
|
201
|
+
});
|
|
202
|
+
if (large) {
|
|
203
|
+
const target = large.files;
|
|
204
|
+
findings.push({
|
|
205
|
+
kind: "rule-disabled",
|
|
206
|
+
file: linterFile,
|
|
207
|
+
message: `la règle \`${name}\` est désactivée sur ${JSON.stringify(target)} — hors des zones où c'est voulu (tests, configuration, scripts). ${why}`
|
|
208
|
+
});
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
if (declaredRule(rules, name) === void 0 && !categoryArms(linter, category)) {
|
|
212
|
+
findings.push({
|
|
213
|
+
kind: "rule-missing",
|
|
214
|
+
file: linterFile,
|
|
215
|
+
message: `la règle \`${name}\` n'est déclarée nulle part, et la catégorie \`${category}\` qui l'activerait n'est pas retenue : elle ne dit donc rien. ${why}`
|
|
216
|
+
});
|
|
217
|
+
continue;
|
|
218
|
+
}
|
|
219
|
+
armed++;
|
|
220
|
+
armedNames.push(name);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return {
|
|
224
|
+
findings,
|
|
225
|
+
armed,
|
|
226
|
+
armedNames,
|
|
227
|
+
linterUnreadable: linter === null,
|
|
228
|
+
manifestUnreadable: manifest === null
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
//#endregion
|
|
232
|
+
export { REQUIRED_RULES, VERIFY_STEPS, checkGuards };
|