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,158 @@
|
|
|
1
|
+
import { isAdminGranted, resolveAdminRole } from "./adminRbac.js";
|
|
2
|
+
//#region src/kernel/adminPlane/catalog.ts
|
|
3
|
+
/** Variables d'un chemin de route (`module/{name}/docs/{slug}` → name, slug). */
|
|
4
|
+
const PATH_VARIABLE = /\{([^}]+)\}/gu;
|
|
5
|
+
/**
|
|
6
|
+
* Noms des variables portées par un chemin de route.
|
|
7
|
+
*
|
|
8
|
+
* @param path - chemin déclaré par le producteur.
|
|
9
|
+
* @returns les noms, dans l'ordre d'apparition.
|
|
10
|
+
*/
|
|
11
|
+
function pathParams(path) {
|
|
12
|
+
const found = [];
|
|
13
|
+
for (const match of path.matchAll(PATH_VARIABLE)) if (match[1]) found.push(match[1]);
|
|
14
|
+
return found;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Projette les capacités de page déclarées, en les ÉVALUANT.
|
|
18
|
+
*
|
|
19
|
+
* `sortable` et `search` sont des fonctions parce que la réponse dépend du
|
|
20
|
+
* store effectivement branché — un backend en curseur ne balaie pas, un
|
|
21
|
+
* annuaire en mémoire ne connaît pas `createdAt`. Les appeler ici est donc la
|
|
22
|
+
* seule façon de publier une capacité vraie ; recopier une liste constante
|
|
23
|
+
* annoncerait un tri que le premier appel refuserait.
|
|
24
|
+
*
|
|
25
|
+
* @param page - la déclaration du producteur.
|
|
26
|
+
* @returns la capacité, telle qu'elle vaut maintenant.
|
|
27
|
+
*/
|
|
28
|
+
function readPageCapabilities(page) {
|
|
29
|
+
try {
|
|
30
|
+
return {
|
|
31
|
+
sortable: page.sortable?.() ?? [],
|
|
32
|
+
filters: Object.keys(page.filters ?? {}),
|
|
33
|
+
search: page.search?.() ?? false
|
|
34
|
+
};
|
|
35
|
+
} catch {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* L'entrée répond-elle à tous les termes cherchés ?
|
|
41
|
+
*
|
|
42
|
+
* Cumulatifs, et non alternatifs : chercher « module docs » veut dire « les
|
|
43
|
+
* deux », sinon la restriction rendrait plus de lignes que l'absence de
|
|
44
|
+
* restriction.
|
|
45
|
+
*/
|
|
46
|
+
function matches(entry, terms) {
|
|
47
|
+
if (terms.length === 0) return true;
|
|
48
|
+
const haystack = `${entry.path} ${entry.summary}`.toLowerCase();
|
|
49
|
+
return terms.every((term) => haystack.includes(term));
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Les endpoints du plan d'administration qu'une porte **sans session** peut
|
|
53
|
+
* servir à cet appelant — la règle unique dont dépendent `nodefony_admin_list`
|
|
54
|
+
* ET `nodefony_admin_call`.
|
|
55
|
+
*
|
|
56
|
+
* ⭐ **Ce qui est listé est appelable, et rien d'autre ne l'est.** C'est le même
|
|
57
|
+
* patron que le filtrage des outils MCP à la collecte : un seul point de
|
|
58
|
+
* décision sert la liste et l'exécution, donc il ne peut pas exister d'entrée
|
|
59
|
+
* appelable qu'on n'aurait pas annoncée, ni d'entrée annoncée qui refuserait
|
|
60
|
+
* ensuite. Deux points de décision, c'est celui qu'on relit le moins qui
|
|
61
|
+
* devient le plus permissif.
|
|
62
|
+
*
|
|
63
|
+
* Trois exclusions, toutes comptées et donc dicibles :
|
|
64
|
+
*
|
|
65
|
+
* 1. **Les mutations.** L'idempotence des mutations du plan est une porte du
|
|
66
|
+
* transport HTTP (`AdminApiController.idempotencyGate`, qui a besoin du
|
|
67
|
+
* conteneur) ; l'exécuter d'ici sans elle ferait de cette porte une
|
|
68
|
+
* quatrième voie qui perd ce que les autres gardent — précisément ce que
|
|
69
|
+
* l'unification de l'exécution vient de supprimer. Elles se compteront tant
|
|
70
|
+
* qu'elles ne s'appelleront pas.
|
|
71
|
+
* 2. **Les endpoints `public: true`.** Ce ne sont pas des endpoints libres :
|
|
72
|
+
* ce sont des self-service scopés à `request.user` (`me`, `me/password`,
|
|
73
|
+
* `sessions/mine`) ou des sondes d'infrastructure. Une porte sans session
|
|
74
|
+
* n'a pas d'utilisateur ; les servir rendrait « les données de personne » au
|
|
75
|
+
* mieux, celles d'autrui au pire.
|
|
76
|
+
* 3. **Ce que le rôle de l'appelant n'ouvre pas** — la même décision que
|
|
77
|
+
* l'exécution ({@link isAdminGranted}), prise sur le même rôle résolu
|
|
78
|
+
* ({@link resolveAdminRole}), pour que la liste ne promette jamais ce que
|
|
79
|
+
* l'appel refuserait.
|
|
80
|
+
*
|
|
81
|
+
* @param broker - le service `adminBroker` du conteneur, ou `undefined`.
|
|
82
|
+
* @param caller - qui demande, avec ses rôles RÉELS.
|
|
83
|
+
* @param query - restriction de lecture facultative.
|
|
84
|
+
* @returns les entrées appelables, et le compte de ce qui ne l'est pas.
|
|
85
|
+
*/
|
|
86
|
+
function adminReadCatalog(broker, caller, query) {
|
|
87
|
+
const terms = query?.q?.toLowerCase().split(/\s+/u).filter((term) => term !== "") ?? [];
|
|
88
|
+
const view = {
|
|
89
|
+
entries: [],
|
|
90
|
+
total: 0,
|
|
91
|
+
mutations: 0,
|
|
92
|
+
selfService: 0,
|
|
93
|
+
denied: 0,
|
|
94
|
+
filtered: 0
|
|
95
|
+
};
|
|
96
|
+
for (const api of broker?.list() ?? []) {
|
|
97
|
+
const namespace = api.adminNamespace;
|
|
98
|
+
let endpoints;
|
|
99
|
+
try {
|
|
100
|
+
endpoints = api.adminEndpoints();
|
|
101
|
+
} catch {
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
for (const endpoint of endpoints) {
|
|
105
|
+
view.total += 1;
|
|
106
|
+
if ((endpoint.method ?? "GET") !== "GET") {
|
|
107
|
+
view.mutations += 1;
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
if (endpoint.public) {
|
|
111
|
+
view.selfService += 1;
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
if (!isAdminGranted(caller.roles, resolveAdminRole(endpoint))) {
|
|
115
|
+
view.denied += 1;
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
if (query?.namespace && query.namespace !== namespace) {
|
|
119
|
+
view.filtered += 1;
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
const entry = {
|
|
123
|
+
namespace,
|
|
124
|
+
path: endpoint.path,
|
|
125
|
+
method: "GET",
|
|
126
|
+
summary: endpoint.summary ?? "",
|
|
127
|
+
params: pathParams(endpoint.path),
|
|
128
|
+
...endpoint.page ? { page: readPageCapabilities(endpoint.page) } : {}
|
|
129
|
+
};
|
|
130
|
+
if (!matches(entry, terms)) {
|
|
131
|
+
view.filtered += 1;
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
view.entries.push(entry);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return view;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Retrouve une entrée APPELABLE par son couple producteur/chemin.
|
|
141
|
+
*
|
|
142
|
+
* Passe par {@link adminReadCatalog} plutôt que de reparcourir le registre :
|
|
143
|
+
* c'est ce qui garantit que l'appel et la liste tranchent la même chose. Une
|
|
144
|
+
* seconde traversée « équivalente » serait exactement la divergence que ce
|
|
145
|
+
* module supprime.
|
|
146
|
+
*
|
|
147
|
+
* @param broker - le service `adminBroker` du conteneur, ou `undefined`.
|
|
148
|
+
* @param caller - qui demande, avec ses rôles RÉELS.
|
|
149
|
+
* @param namespace - producteur visé.
|
|
150
|
+
* @param path - chemin visé, tel que le catalogue le nomme (variables comprises).
|
|
151
|
+
* @returns l'entrée, ou `null` si elle n'est pas appelable par cet appelant.
|
|
152
|
+
*/
|
|
153
|
+
function findAdminReadEntry(broker, caller, namespace, path) {
|
|
154
|
+
const { entries } = adminReadCatalog(broker, caller, { namespace });
|
|
155
|
+
return entries.find((entry) => entry.path === path) ?? null;
|
|
156
|
+
}
|
|
157
|
+
//#endregion
|
|
158
|
+
export { adminReadCatalog, findAdminReadEntry };
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { isAdminGranted } from "./adminRbac.js";
|
|
2
|
+
import nodefonyError from "../../Error.js";
|
|
3
|
+
//#region src/kernel/adminPlane/executeAdmin.ts
|
|
4
|
+
/**
|
|
5
|
+
* Normalise ce qu'un handler a rendu : donnée brute, ou enveloppe.
|
|
6
|
+
*
|
|
7
|
+
* Discrimination volontairement étroite — enveloppe **si et seulement si**
|
|
8
|
+
* `body` est présent AVEC `status` ou `headers`. Un objet métier qui posséderait
|
|
9
|
+
* un champ `body` (une réponse de webhook, un message stocké) n'en est pas une.
|
|
10
|
+
*
|
|
11
|
+
* @param result - le retour du handler, tel quel.
|
|
12
|
+
* @returns l'issue normalisée, statut 200 par défaut.
|
|
13
|
+
*/
|
|
14
|
+
function normalizeAdminResult(result) {
|
|
15
|
+
if (result !== null && typeof result === "object" && "body" in result && ("status" in result || "headers" in result)) {
|
|
16
|
+
const envelope = result;
|
|
17
|
+
return {
|
|
18
|
+
status: envelope.status ?? 200,
|
|
19
|
+
headers: envelope.headers,
|
|
20
|
+
body: envelope.body
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
status: 200,
|
|
25
|
+
body: result
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Exécute un endpoint du plan d'administration — **la porte unique**, sans HTTP.
|
|
30
|
+
*
|
|
31
|
+
* ⭐ **Une source, plusieurs portes.** Le data plane est un ensemble de
|
|
32
|
+
* fonctions `IAdminRequest → donnée` ; ce qui les entoure (autorisation,
|
|
33
|
+
* idempotence des mutations, normalisation du retour, traduction des erreurs)
|
|
34
|
+
* est une règle unique, et elle vit ici. La route HTTP montée par le broker, le
|
|
35
|
+
* pont WS-RPC, la commande `inspect` et le serveur MCP appellent tous cette
|
|
36
|
+
* fonction : ils ne se distinguent que par la façon de RÉSOUDRE l'endpoint (par
|
|
37
|
+
* nom de route côté framework, par couple namespace/chemin côté cœur) et par
|
|
38
|
+
* l'emballage de l'issue.
|
|
39
|
+
*
|
|
40
|
+
* Ce que la duplication précédente coûtait, concrètement : le producteur de
|
|
41
|
+
* `module/{name}/docs/{slug}` joint au refus d'une section inconnue le plan de
|
|
42
|
+
* la page (les titres réels). La seconde implémentation ne gardait que le
|
|
43
|
+
* statut — un agent lisait « introuvable » et concluait que la PAGE n'existait
|
|
44
|
+
* pas, alors que seul le nom de section était faux.
|
|
45
|
+
*
|
|
46
|
+
* @param input - endpoint, requête, rôle exigé, porte éventuelle.
|
|
47
|
+
* @returns l'issue, succès comme échec, **corps du producteur préservé**.
|
|
48
|
+
*/
|
|
49
|
+
async function executeAdminEndpoint(input) {
|
|
50
|
+
const { endpoint, request, requiredRole, gate, onServerError } = input;
|
|
51
|
+
if (!isAdminGranted(request.roles, requiredRole)) return {
|
|
52
|
+
status: 403,
|
|
53
|
+
body: {
|
|
54
|
+
error: "Forbidden",
|
|
55
|
+
required: requiredRole
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
const verdict = gate ? await gate(request) : null;
|
|
59
|
+
if (verdict?.shortCircuit) return verdict.shortCircuit;
|
|
60
|
+
try {
|
|
61
|
+
const execution = normalizeAdminResult(await endpoint.handler(request));
|
|
62
|
+
await verdict?.onSuccess?.(execution);
|
|
63
|
+
return execution;
|
|
64
|
+
} catch (error) {
|
|
65
|
+
await verdict?.onFailure?.();
|
|
66
|
+
if (error instanceof nodefonyError && typeof error.code === "number" && error.code >= 400 && error.code < 500) return {
|
|
67
|
+
status: error.code,
|
|
68
|
+
body: { error: error.message }
|
|
69
|
+
};
|
|
70
|
+
onServerError?.(error);
|
|
71
|
+
return {
|
|
72
|
+
status: 500,
|
|
73
|
+
body: { error: "Internal admin handler error" }
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//#endregion
|
|
78
|
+
export { executeAdminEndpoint, normalizeAdminResult };
|
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
import { aggregateOutdated } from "../../cli/outdated.js";
|
|
2
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { spawn } from "node:child_process";
|
|
5
|
+
//#region src/kernel/checks/deep.ts
|
|
6
|
+
/**
|
|
7
|
+
* Étage 3 de `doctor` — ce que le projet DÉCLARE, réellement exécuté.
|
|
8
|
+
*
|
|
9
|
+
* Les autres étages lisent : des fichiers, des manifestes, l'application
|
|
10
|
+
* démarrée. Celui-ci LANCE — les scripts que l'application déclare déjà
|
|
11
|
+
* (`typecheck`, `lint`, `test`) et l'interrogation du registre npm.
|
|
12
|
+
*
|
|
13
|
+
* ## Pourquoi ce n'est pas le comportement par défaut
|
|
14
|
+
*
|
|
15
|
+
* `doctor` rend son verdict en moins d'une seconde, et c'est ce qui le rend
|
|
16
|
+
* lançable en boucle courte, avant chaque commit, dans un job de forge. Lancer
|
|
17
|
+
* une suite de tests et une requête réseau le ferait passer à des dizaines de
|
|
18
|
+
* secondes — et un diagnostic qui coûte une minute cesse d'être lancé. Le dépôt
|
|
19
|
+
* en a la preuve : un lot d'auto-contrôles écrit, juste, et resté un mois sans
|
|
20
|
+
* que personne ne l'exécute, parce qu'il fallait taper huit commandes.
|
|
21
|
+
*
|
|
22
|
+
* D'où `--deep` : deux publics, deux régimes. La boucle courte veut un verdict
|
|
23
|
+
* immédiat ; celui qui prépare un déploiement veut tout.
|
|
24
|
+
*
|
|
25
|
+
* ## Ce que cet étage n'invente pas
|
|
26
|
+
*
|
|
27
|
+
* Il n'implémente AUCUN contrôle en propre. Il appelle les scripts du projet et
|
|
28
|
+
* rend leur verdict — une seule implémentation par règle, celle que le projet a
|
|
29
|
+
* déjà écrite. Redéfinir ici « ce que typecheck devrait vérifier » créerait une
|
|
30
|
+
* seconde vérité qui divergerait de la première au premier ajout.
|
|
31
|
+
*
|
|
32
|
+
* @module
|
|
33
|
+
*/
|
|
34
|
+
/**
|
|
35
|
+
* Le temps au-delà duquel on cesse d'attendre un script, en millisecondes.
|
|
36
|
+
*
|
|
37
|
+
* 🔴 Vécu, et cher : `npm audit` ne rendait pas d'erreur — il PENDAIT cinq
|
|
38
|
+
* minutes par essai et tuait le job de forge. Une commande qui n'a pas de borne
|
|
39
|
+
* de temps n'échoue pas, elle immobilise ; et l'opérateur conclut que l'outil
|
|
40
|
+
* est cassé, jamais que le réseau ne répond pas.
|
|
41
|
+
*/
|
|
42
|
+
const DEFAULT_TIMEOUT_MS = 12e4;
|
|
43
|
+
/**
|
|
44
|
+
* Bornes PAR ÉTAPE — une suite de tests n'est pas un `typecheck`.
|
|
45
|
+
*
|
|
46
|
+
* 🔴 Vécu sur ce dépôt même : une borne unique de deux minutes condamnait
|
|
47
|
+
* d'office la suite de tout projet sérieux. Ici 3 699 tests : `--deep` rendait
|
|
48
|
+
* TOUJOURS « ⏱ npm run test — interrompu », c'est-à-dire un rouge qui ne disait
|
|
49
|
+
* rien du projet et tout de l'instrument. Un outil de diagnostic qui accuse le
|
|
50
|
+
* mesuré pour un défaut de sa propre mesure est pire qu'un outil absent : on
|
|
51
|
+
* apprend à ignorer ce qu'il dit.
|
|
52
|
+
*
|
|
53
|
+
* Les valeurs sont des ORDRES DE GRANDEUR, pas des promesses : ce qui compte
|
|
54
|
+
* est qu'elles soient distinctes, et qu'un dépassement ne se lise pas comme un
|
|
55
|
+
* échec du projet (cf `outcome: "timeout"`, classé EMPÊCHÉ).
|
|
56
|
+
*/
|
|
57
|
+
const STEP_TIMEOUTS = {
|
|
58
|
+
lint: 12e4,
|
|
59
|
+
format: 12e4,
|
|
60
|
+
"format:check": 12e4,
|
|
61
|
+
typecheck: 3e5,
|
|
62
|
+
build: 6e5,
|
|
63
|
+
test: 18e5,
|
|
64
|
+
"test:unit": 18e5,
|
|
65
|
+
"test:integration": 18e5,
|
|
66
|
+
verify: 18e5
|
|
67
|
+
};
|
|
68
|
+
/** La borne à appliquer à une étape, à défaut la borne générale. */
|
|
69
|
+
function timeoutForStep(step) {
|
|
70
|
+
return STEP_TIMEOUTS[step] ?? DEFAULT_TIMEOUT_MS;
|
|
71
|
+
}
|
|
72
|
+
/** Le temps accordé au registre npm — plus court : c'est du réseau, pas du calcul. */
|
|
73
|
+
const NETWORK_TIMEOUT_MS = 3e4;
|
|
74
|
+
/**
|
|
75
|
+
* Les scripts que le manifeste déclare, parmi ceux qu'on sait lancer.
|
|
76
|
+
*
|
|
77
|
+
* On ne lance QUE ce que le projet déclare : inventer une commande qu'il n'a
|
|
78
|
+
* pas (`npx tsc`, par exemple) reviendrait à juger une application sur un
|
|
79
|
+
* outillage qu'elle n'a pas choisi.
|
|
80
|
+
*
|
|
81
|
+
* @param projectRoot - racine de l'application.
|
|
82
|
+
* @param steps - les noms de scripts à chercher, dans l'ordre d'exécution.
|
|
83
|
+
* @returns les noms présents, et ceux qui manquent.
|
|
84
|
+
*/
|
|
85
|
+
function declaredSteps(projectRoot, steps) {
|
|
86
|
+
const manifeste = path.join(projectRoot, "package.json");
|
|
87
|
+
if (!existsSync(manifeste)) return {
|
|
88
|
+
present: [],
|
|
89
|
+
missing: [...steps]
|
|
90
|
+
};
|
|
91
|
+
let scripts = {};
|
|
92
|
+
try {
|
|
93
|
+
scripts = JSON.parse(readFileSync(manifeste, "utf8")).scripts ?? {};
|
|
94
|
+
} catch {
|
|
95
|
+
return {
|
|
96
|
+
present: [],
|
|
97
|
+
missing: [...steps]
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
const present = [];
|
|
101
|
+
const missing = [];
|
|
102
|
+
for (const s of steps) if (typeof scripts[s] === "string") present.push(s);
|
|
103
|
+
else missing.push(s);
|
|
104
|
+
return {
|
|
105
|
+
present,
|
|
106
|
+
missing
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* La première ligne qui NOMME l'échec, en sautant l'annonce de l'exécuteur.
|
|
111
|
+
*
|
|
112
|
+
* 🔴 Un script lancé par `npm run` reçoit d'abord `npm notice run <app> <nom>`.
|
|
113
|
+
* Retenir cette ligne explique l'échec par le nom du script, jamais par la
|
|
114
|
+
* cause — et le rapport devient inutile sans qu'on s'en aperçoive : il a
|
|
115
|
+
* l'apparence d'une explication. Le bruit est donc sauté sur les DEUX flux
|
|
116
|
+
* avant de se rabattre sur l'un d'eux.
|
|
117
|
+
*
|
|
118
|
+
* @param stderr - canal d'erreur du script.
|
|
119
|
+
* @param stdout - sa sortie standard.
|
|
120
|
+
* @returns la ligne utile, bornée, ou une chaîne vide s'il s'est tu.
|
|
121
|
+
*/
|
|
122
|
+
function firstUsefulLine(stderr, stdout) {
|
|
123
|
+
const bruit = /^(?:npm (?:notice|warn|WARN|ERR!)\b|>\s|\$\s|yarn run |pnpm )/u;
|
|
124
|
+
const streams = [stderr, stdout];
|
|
125
|
+
for (const f of streams) {
|
|
126
|
+
const useful = f.split("\n").map((l) => l.trim()).filter((l) => l.length > 0 && !bruit.test(l));
|
|
127
|
+
if (useful.length > 0) return clamp(useful[0]);
|
|
128
|
+
}
|
|
129
|
+
for (const f of streams) {
|
|
130
|
+
const lines = f.split("\n").filter((l) => l.trim().length > 0);
|
|
131
|
+
if (lines.length > 0) return clamp(lines[0].trim());
|
|
132
|
+
}
|
|
133
|
+
return "";
|
|
134
|
+
}
|
|
135
|
+
/** Borne une explication : une trace entière rend le rapport illisible. */
|
|
136
|
+
function clamp(line) {
|
|
137
|
+
return line.length > 160 ? `${line.slice(0, 157)}…` : line;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Lance les scripts déclarés, dans l'ordre, et rend leur verdict.
|
|
141
|
+
*
|
|
142
|
+
* L'ordre compte : `typecheck` avant `test`, parce qu'un type faux fait échouer
|
|
143
|
+
* la suite pour une raison qui n'a rien à voir avec elle, et qu'on veut lire la
|
|
144
|
+
* cause d'abord.
|
|
145
|
+
*
|
|
146
|
+
* @param projectRoot - racine de l'application.
|
|
147
|
+
* @param steps - les scripts à lancer, dans l'ordre.
|
|
148
|
+
* @param run - l'exécuteur, injecté pour que la logique s'éprouve sans lancer
|
|
149
|
+
* quoi que ce soit : une fonction qui appelle `spawnSync` en dur ne se teste
|
|
150
|
+
* que sur la machine qui l'exécute, c'est-à-dire nulle part.
|
|
151
|
+
* @returns un verdict par script demandé.
|
|
152
|
+
*/
|
|
153
|
+
async function runVerifySteps(projectRoot, steps, run = (step) => runNpmScript(projectRoot, step), report) {
|
|
154
|
+
const { present } = declaredSteps(projectRoot, steps);
|
|
155
|
+
const results = [];
|
|
156
|
+
for (const step of steps) {
|
|
157
|
+
if (!present.includes(step)) {
|
|
158
|
+
results.push({
|
|
159
|
+
step,
|
|
160
|
+
outcome: "absent",
|
|
161
|
+
ms: 0
|
|
162
|
+
});
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
report?.({
|
|
166
|
+
step,
|
|
167
|
+
phase: "start"
|
|
168
|
+
});
|
|
169
|
+
const r = await run(step);
|
|
170
|
+
if (r.status === null) {
|
|
171
|
+
report?.({
|
|
172
|
+
step,
|
|
173
|
+
phase: "done",
|
|
174
|
+
outcome: "timeout",
|
|
175
|
+
ms: r.ms
|
|
176
|
+
});
|
|
177
|
+
results.push({
|
|
178
|
+
step,
|
|
179
|
+
outcome: "timeout",
|
|
180
|
+
ms: r.ms,
|
|
181
|
+
detail: `interrompu après ${Math.round(r.ms / 1e3)} s — la borne de CE contrôle (${Math.round(timeoutForStep(step) / 1e3)} s) était trop courte, ce qui ne dit rien du projet. Relance l'étape seule : npm run ${step}`
|
|
182
|
+
});
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
185
|
+
report?.({
|
|
186
|
+
step,
|
|
187
|
+
phase: "done",
|
|
188
|
+
outcome: r.status === 0 ? "passed" : "failed",
|
|
189
|
+
ms: r.ms
|
|
190
|
+
});
|
|
191
|
+
results.push(r.status === 0 ? {
|
|
192
|
+
step,
|
|
193
|
+
outcome: "passed",
|
|
194
|
+
ms: r.ms
|
|
195
|
+
} : {
|
|
196
|
+
step,
|
|
197
|
+
outcome: "failed",
|
|
198
|
+
ms: r.ms,
|
|
199
|
+
detail: firstUsefulLine(r.stderr, r.stdout)
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
return results;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Lance un script npm du projet, borné dans le temps — de façon ASYNCHRONE.
|
|
206
|
+
*
|
|
207
|
+
* 🔴 **`spawnSync` est ce qui empêchait toute animation, et rien ne le disait.**
|
|
208
|
+
* Un appel synchrone bloque la boucle d'évènements de Node : aucun `setInterval`
|
|
209
|
+
* ne s'y déclenche. Le tourniquet de `--deep` peignait donc sa PREMIÈRE image
|
|
210
|
+
* puis restait figé pendant les trente-huit secondes du `typecheck` — le point
|
|
211
|
+
* fixe exact qu'il était censé remplacer.
|
|
212
|
+
*
|
|
213
|
+
* Le défaut ne pouvait pas se voir en éprouvant le tourniquet : celui-ci est
|
|
214
|
+
* juste, et ses vingt-sept cas passent. Il ne se voyait qu'en regardant la
|
|
215
|
+
* CHAÎNE tourner dans un vrai terminal. C'est le motif « la brique éprouvée, la
|
|
216
|
+
* chaîne jamais », et il coûte à chaque fois le même prix.
|
|
217
|
+
*
|
|
218
|
+
* @param projectRoot - la racine de l'application.
|
|
219
|
+
* @param step - le script npm à lancer.
|
|
220
|
+
* @returns son code de sortie (`null` = tué par la borne), ses flux et sa durée.
|
|
221
|
+
*/
|
|
222
|
+
function runNpmScript(projectRoot, step) {
|
|
223
|
+
const timeout = timeoutForStep(step);
|
|
224
|
+
const startedAt = Date.now();
|
|
225
|
+
return new Promise((resolve) => {
|
|
226
|
+
const child = spawn("npm", ["run", step], {
|
|
227
|
+
cwd: projectRoot,
|
|
228
|
+
timeout,
|
|
229
|
+
shell: process.platform === "win32"
|
|
230
|
+
});
|
|
231
|
+
let stdout = "";
|
|
232
|
+
let stderr = "";
|
|
233
|
+
child.stdout?.setEncoding("utf8");
|
|
234
|
+
child.stderr?.setEncoding("utf8");
|
|
235
|
+
child.stdout?.on("data", (c) => stdout += c);
|
|
236
|
+
child.stderr?.on("data", (c) => stderr += c);
|
|
237
|
+
const done = (status) => resolve({
|
|
238
|
+
status,
|
|
239
|
+
stderr,
|
|
240
|
+
stdout,
|
|
241
|
+
ms: Date.now() - startedAt
|
|
242
|
+
});
|
|
243
|
+
child.on("error", (e) => {
|
|
244
|
+
stderr += `${e.message}\n`;
|
|
245
|
+
done(1);
|
|
246
|
+
});
|
|
247
|
+
child.on("close", (code, signal) => {
|
|
248
|
+
done(signal ? null : code ?? 1);
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Le résumé des paquets en retard, via la MÊME agrégation que `nodefony outdated`.
|
|
254
|
+
*
|
|
255
|
+
* `aggregateOutdated` est appelée, jamais recopiée : elle porte le classement
|
|
256
|
+
* par sévérité (majeure / mineure / correctif) et le regroupement par paquet.
|
|
257
|
+
* Une seconde implémentation ici divergerait au premier ajustement, et les deux
|
|
258
|
+
* passeraient leurs propres tests.
|
|
259
|
+
*
|
|
260
|
+
* @param projectRoot - racine de l'application.
|
|
261
|
+
* @param run - l'exécuteur, injecté pour l'épreuve.
|
|
262
|
+
* @returns le résumé, ou la raison de son absence.
|
|
263
|
+
*/
|
|
264
|
+
async function readOutdated(projectRoot, run = () => runNpmOutdated(projectRoot), report) {
|
|
265
|
+
const debut = Date.now();
|
|
266
|
+
report?.({
|
|
267
|
+
step: "outdated",
|
|
268
|
+
phase: "start"
|
|
269
|
+
});
|
|
270
|
+
const r = await run();
|
|
271
|
+
const annoncer = (outcome) => report?.({
|
|
272
|
+
step: "outdated",
|
|
273
|
+
phase: "done",
|
|
274
|
+
outcome,
|
|
275
|
+
ms: Date.now() - debut
|
|
276
|
+
});
|
|
277
|
+
if (r.failed) {
|
|
278
|
+
annoncer("unavailable");
|
|
279
|
+
return {
|
|
280
|
+
summary: null,
|
|
281
|
+
reason: "le registre npm n'a pas répondu dans le temps imparti — ce n'est pas un défaut de l'application, et rien n'en est déduit"
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
if (r.stdout.trim().length === 0) {
|
|
285
|
+
annoncer("ok");
|
|
286
|
+
return {
|
|
287
|
+
summary: aggregateOutdated({}),
|
|
288
|
+
reason: ""
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
try {
|
|
292
|
+
const summary = aggregateOutdated(JSON.parse(r.stdout));
|
|
293
|
+
annoncer("ok");
|
|
294
|
+
return {
|
|
295
|
+
summary,
|
|
296
|
+
reason: ""
|
|
297
|
+
};
|
|
298
|
+
} catch {
|
|
299
|
+
annoncer("unavailable");
|
|
300
|
+
return {
|
|
301
|
+
summary: null,
|
|
302
|
+
reason: "la réponse du registre npm n'était pas lisible"
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Interroge le registre, borné — le réseau ne se laisse pas attendre.
|
|
308
|
+
*
|
|
309
|
+
* Asynchrone pour la MÊME raison que {@link runNpmScript} : un `spawnSync` fige
|
|
310
|
+
* la boucle d'évènements, donc l'animation de l'attente. Corriger un seul des
|
|
311
|
+
* deux appels aurait laissé le tourniquet immobile pendant les trente secondes
|
|
312
|
+
* de cette étape-ci — une moitié de correctif qu'on aurait crue entière.
|
|
313
|
+
*/
|
|
314
|
+
function runNpmOutdated(projectRoot) {
|
|
315
|
+
return new Promise((resolve) => {
|
|
316
|
+
const child = spawn("npm", ["outdated", "--json"], {
|
|
317
|
+
cwd: projectRoot,
|
|
318
|
+
timeout: NETWORK_TIMEOUT_MS,
|
|
319
|
+
shell: process.platform === "win32"
|
|
320
|
+
});
|
|
321
|
+
let stdout = "";
|
|
322
|
+
child.stdout?.setEncoding("utf8");
|
|
323
|
+
child.stdout?.on("data", (c) => stdout += c);
|
|
324
|
+
child.on("error", () => resolve({
|
|
325
|
+
stdout: "",
|
|
326
|
+
failed: true
|
|
327
|
+
}));
|
|
328
|
+
child.on("close", (_code, signal) => resolve({
|
|
329
|
+
stdout,
|
|
330
|
+
failed: Boolean(signal)
|
|
331
|
+
}));
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
//#endregion
|
|
335
|
+
export { declaredSteps, firstUsefulLine, readOutdated, runVerifySteps, timeoutForStep };
|