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,326 @@
|
|
|
1
|
+
import Kernel, { ServiceConstructor } from "./Kernel.js";
|
|
2
|
+
import type { IModule, PackageJson } from "../types/IModule.js";
|
|
3
|
+
export type { PackageJson } from "../types/IModule.js";
|
|
4
|
+
import type { IMcpTool } from "../types/IMcpTool.js";
|
|
5
|
+
import type { IKernel } from "../types/IKernel.js";
|
|
6
|
+
import { JSONObject } from "../types/globals.js";
|
|
7
|
+
import Service, { DefaultOptionsService } from "../Service.js";
|
|
8
|
+
import Command from "../command/Command.js";
|
|
9
|
+
import CliKernel from "./CliKernel.js";
|
|
10
|
+
import Pdu, { Severity, Msgid, Message } from "../syslog/Pdu.js";
|
|
11
|
+
import type { Controller } from "@nodefony/framework";
|
|
12
|
+
export type TypeController<T> = new (...args: any[]) => T;
|
|
13
|
+
/**
|
|
14
|
+
* Unité fonctionnelle de Nodefony — successeur direct du concept "Bundle" (Symfony / Nodefony JS).
|
|
15
|
+
*
|
|
16
|
+
* Un Module encapsule un domaine : routes, controllers, services, entités ORM, config, commandes
|
|
17
|
+
* CLI. Il est instancié par le {@link Kernel} au boot depuis le manifeste `config.modules`
|
|
18
|
+
* (résolu/chargé à `onPreRegister`). Hérite de {@link Service} → bénéficie du DI Container,
|
|
19
|
+
* EventEmitter, Syslog.
|
|
20
|
+
*
|
|
21
|
+
* Hooks lifecycle disponibles (méthodes prototype obligatoires, jamais arrow ni property init —
|
|
22
|
+
* `super()` tourne AVANT les initializers) :
|
|
23
|
+
* - `onKernelRegister()` — phase `onRegister` (modules s'auto-déclarent)
|
|
24
|
+
* - `onKernelBoot()` — phase `onBoot` (services bootés, connexions ouvertes)
|
|
25
|
+
* - `onKernelReady()` — phase `onReady` (cross-wiring inter-modules)
|
|
26
|
+
* - `init(kernel?)` — appelé par {@link Kernel.addModule}, équivalent constructeur async
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* import { Module, services } from "nodefony";
|
|
31
|
+
*
|
|
32
|
+
* // `@services([...])` déclare les services du module ; l'ordre de la liste
|
|
33
|
+
* // n'importe pas (il est recalculé depuis les dépendances déclarées).
|
|
34
|
+
* @services([MyService])
|
|
35
|
+
* export class MyModule extends Module {
|
|
36
|
+
* static readonly path: string = import.meta.url;
|
|
37
|
+
*
|
|
38
|
+
* async onKernelBoot(): Promise<this> {
|
|
39
|
+
* this.log("Module booted", "INFO");
|
|
40
|
+
* return this;
|
|
41
|
+
* }
|
|
42
|
+
* }
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* @remarks Le constructor attache TOUJOURS **un** listener, indépendamment des hooks de la
|
|
46
|
+
* sous-classe : un `prependOnceListener("onPreBoot")` qui charge le `package.json` du module
|
|
47
|
+
* ({@link Module.setEvents}). Les hooks `onKernelRegister/Boot/Ready` ne sont attachés que si la
|
|
48
|
+
* sous-classe les définit.
|
|
49
|
+
*/
|
|
50
|
+
declare class Module<TConfig = Record<string, unknown>> extends Service implements IModule {
|
|
51
|
+
commands: Record<string, Command>;
|
|
52
|
+
static controllers: Record<string, TypeController<Controller>>;
|
|
53
|
+
/**
|
|
54
|
+
* Criticité du module pour la **résilience de boot** (Phase 3). `true` (défaut)
|
|
55
|
+
* = un échec/timeout d'un de ses hooks lifecycle interrompt le boot **en
|
|
56
|
+
* production** (le pod crashe → l'orchestrateur le redémarre, cloud-native) et
|
|
57
|
+
* émet un WARNING **en développement** (le serveur démarre quand même). `false`
|
|
58
|
+
* = fail-soft partout (le module est optionnel : un échec n'empêche jamais le
|
|
59
|
+
* boot — ex. studio, fronts de démo, mediasoup, realtime, redis).
|
|
60
|
+
*
|
|
61
|
+
* ⚠️ **Statique** (pas une propriété d'instance) : lue dans le constructeur via
|
|
62
|
+
* `Module.setEvents()`, donc AVANT que les initializers de la sous-classe ne
|
|
63
|
+
* tournent — une `critical = false` en propriété d'instance arriverait trop
|
|
64
|
+
* tard. Override déclaratif : `static override critical = false;`.
|
|
65
|
+
*/
|
|
66
|
+
static critical: boolean;
|
|
67
|
+
package?: PackageJson;
|
|
68
|
+
path: string;
|
|
69
|
+
isApp: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Noms des services enregistrés PAR ce module (via {@link addService},
|
|
72
|
+
* y compris ceux du décorateur `@services`). Alloué au 1er ajout (lazy).
|
|
73
|
+
* Sert l'introspection admin (Studio) — qui n'est pas inférable du Container
|
|
74
|
+
* partagé seul. Cf {@link getServiceNames}.
|
|
75
|
+
*/
|
|
76
|
+
private _serviceNames;
|
|
77
|
+
onKernelRegister?(): Promise<this>;
|
|
78
|
+
onKernelBoot?(): Promise<this>;
|
|
79
|
+
onKernelReady?(): Promise<this>;
|
|
80
|
+
init?(kernel?: IKernel): Promise<this>;
|
|
81
|
+
/**
|
|
82
|
+
* Outils que ce module ajoute à la porte MCP de l'application — cf
|
|
83
|
+
* {@link IModule.getMcpTools}.
|
|
84
|
+
*
|
|
85
|
+
* Déclaré ici **sans implémentation par défaut**, exactement comme les hooks
|
|
86
|
+
* de cycle de vie au-dessus : une méthode de base qui rendrait `[]` ferait
|
|
87
|
+
* payer un appel de fonction par module et par requête `tools/list`, pour
|
|
88
|
+
* rien. Le collecteur teste la présence avant d'appeler.
|
|
89
|
+
*/
|
|
90
|
+
getMcpTools?(): IMcpTool[];
|
|
91
|
+
/**
|
|
92
|
+
* Initialise le module — appelé par {@link Kernel.addModule}.
|
|
93
|
+
*
|
|
94
|
+
* @param name - nom unique du module dans le kernel (key dans `kernel.modules`).
|
|
95
|
+
* @param kernel - kernel parent (fournit container, syslog, lifecycle events).
|
|
96
|
+
* @param path - chemin source du module (généralement `import.meta.url`).
|
|
97
|
+
* @param options - config du module (merge avec defaults via `setParameters("modules.<name>")`).
|
|
98
|
+
*/
|
|
99
|
+
constructor(name: string, kernel: Kernel, path: string, options: DefaultOptionsService);
|
|
100
|
+
/**
|
|
101
|
+
* Schéma JSON (`z.toJSONSchema`) de la configuration du module, ou `null` si le
|
|
102
|
+
* module n'est pas (encore) migré vers une validation Zod.
|
|
103
|
+
*
|
|
104
|
+
* Lu par le data plane admin ({@link KernelAdminApi} endpoint `module/{name}`) :
|
|
105
|
+
* Studio affiche alors la config en mode « réglages documentés » (clé, type,
|
|
106
|
+
* défaut, valeurs possibles, état, et valeur effective issue de `options`) au
|
|
107
|
+
* lieu d'un dump brut clé→valeur. Les flags Nodefony (`reserved`,
|
|
108
|
+
* `runtimeMutable`, `kernelDerived`, `secret`) attachés via `.meta()` (natif zod) sont
|
|
109
|
+
* recopiés dans le JSON Schema par `z.toJSONSchema()` et exploités par l'UI.
|
|
110
|
+
*
|
|
111
|
+
* Défaut `null` (aucun schéma). Un module migré **override** pour renvoyer son
|
|
112
|
+
* `xConfigJsonSchema()`. Le core n'importe PAS zod : la sérialisation vit dans
|
|
113
|
+
* chaque module qui possède son schéma (0 dépendance ajoutée au cœur).
|
|
114
|
+
*
|
|
115
|
+
* @returns le JSON Schema de la config du module, ou `null`.
|
|
116
|
+
*/
|
|
117
|
+
configSchema(): unknown | null;
|
|
118
|
+
/**
|
|
119
|
+
* Config **validée + gelée** du module — point d'accès UNIFORME et typé.
|
|
120
|
+
*
|
|
121
|
+
* Renvoie `this.options` (l'objet de config du module, réassigné par sa
|
|
122
|
+
* validation Zod à `onKernelRegister`). Un module se type via
|
|
123
|
+
* `extends Module<IXConfig>` → `this.config` est alors `IXConfig` sans cast.
|
|
124
|
+
* Remplace le double idiome historique (`this.options` brut d'un côté,
|
|
125
|
+
* `this.get("<module>Config")` de l'autre) par un seul accès. Coût nul : le
|
|
126
|
+
* getter renvoie la référence, aucune allocation ni appel système.
|
|
127
|
+
*
|
|
128
|
+
* @returns la config du module, typée `TConfig` (défaut `Record<string, unknown>`).
|
|
129
|
+
*/
|
|
130
|
+
get config(): TConfig;
|
|
131
|
+
/**
|
|
132
|
+
* Résout le chemin source du module (`module.path`) — normalise URL `file://`,
|
|
133
|
+
* remonte au-dessus de `dist/` si nécessaire.
|
|
134
|
+
*
|
|
135
|
+
* @remarks Opération purement LEXICALE, volontairement : l'entrée est déjà absolue
|
|
136
|
+
* (`import.meta.url`). Remonter le dossier `dist` passait auparavant par
|
|
137
|
+
* `resolve(myPath, "..")`, qui ancre le chemin sur le répertoire courant — donc sous
|
|
138
|
+
* Windows y ajoute la lettre de lecteur et normalise les séparateurs. La racine d'un
|
|
139
|
+
* module se mettait ainsi à dépendre de l'endroit d'où l'on avait lancé le process.
|
|
140
|
+
* `dirname` donne le même résultat sur tout chemin absolu, sans cet ancrage.
|
|
141
|
+
*
|
|
142
|
+
* @param myPath - chemin brut (souvent `import.meta.url` de la classe Module).
|
|
143
|
+
* @returns chemin absolu du dossier source du module.
|
|
144
|
+
*/
|
|
145
|
+
setPath(myPath: string): string;
|
|
146
|
+
gePath(name?: string): string;
|
|
147
|
+
/**
|
|
148
|
+
* Résout le chemin d'installation d'un module npm via `require.resolve`.
|
|
149
|
+
*
|
|
150
|
+
* @param name - nom du package npm (`"@nodefony/http"`, etc.).
|
|
151
|
+
* @returns chemin absolu vers le dossier du module.
|
|
152
|
+
*/
|
|
153
|
+
static getModulePath(name: string): string;
|
|
154
|
+
/**
|
|
155
|
+
* Câble les hooks lifecycle (`onKernelRegister/Boot/Ready`) sur le kernel parent.
|
|
156
|
+
*
|
|
157
|
+
* Appelé une seule fois dans le constructor. Lit les méthodes prototype définies par
|
|
158
|
+
* la sous-classe et les attache via `kernel.once()`. Si la sous-classe ne définit pas
|
|
159
|
+
* un hook, il n'est pas attaché (pas de listener orphelin).
|
|
160
|
+
*
|
|
161
|
+
* Toujours attache un listener `onPreBoot` (prepend, donc index 0) pour charger le
|
|
162
|
+
* `package.json` du module. Les overrides de config `Module-<name>`, eux, ne passent
|
|
163
|
+
* PLUS par ici : ils sont appliqués par `Kernel.applyModuleConfigOverrides()` entre
|
|
164
|
+
* `onPreRegister` et `onRegister` (raison détaillée dans le corps de la méthode).
|
|
165
|
+
*/
|
|
166
|
+
setEvents(): void;
|
|
167
|
+
/**
|
|
168
|
+
* Pose un hook de cycle de vie du kernel **au nom de ce module** — donc avec sa
|
|
169
|
+
* politique de boot (propriétaire + criticité), comme les hooks de classe.
|
|
170
|
+
*
|
|
171
|
+
* À utiliser partout où un hook est posé « à la main » depuis le module ou
|
|
172
|
+
* depuis un de ses services (`this.module.hookKernel("onBoot", …)`) plutôt que
|
|
173
|
+
* `kernel.once(...)` directement. Pourquoi : un listener non tagué n'a pas de
|
|
174
|
+
* criticité, et {@link Kernel.isBootErrorFatal} traite l'absence de tag comme
|
|
175
|
+
* **critique**. Un module qui déclare pourtant `static critical = false`
|
|
176
|
+
* voyait donc son échec interrompre le boot en production — la déclaration ne
|
|
177
|
+
* portait que sur ses hooks de classe, pas sur ceux de ses services. Le
|
|
178
|
+
* journal ne pouvait même pas nommer le coupable (`"(anonyme)"`).
|
|
179
|
+
*
|
|
180
|
+
* @param event - nom de l'événement de cycle (`onRegister`, `onBoot`, `onReady`…).
|
|
181
|
+
* @param listener - le hook ; il hérite du nom et de la criticité du module.
|
|
182
|
+
* @returns le module (chaînable).
|
|
183
|
+
*/
|
|
184
|
+
hookKernel(event: string, listener: (...args: never[]) => unknown | Promise<unknown>): this;
|
|
185
|
+
/**
|
|
186
|
+
* Détecte les overrides de config destinés à d'autres modules (clés `Module-<name>`),
|
|
187
|
+
* les applique, puis les RETIRE des options du module porteur.
|
|
188
|
+
*
|
|
189
|
+
* Permet à un module de surcharger la config d'un autre module sans toucher au code de
|
|
190
|
+
* ce dernier. Exemple : `Module-http: { port: 8080 }` dans la config de l'app → applique
|
|
191
|
+
* `{ port: 8080 }` à `@nodefony/http`. Warn si module cible inconnu.
|
|
192
|
+
*
|
|
193
|
+
* 🔴 **La clé est CONSOMMÉE.** C'est un ordre de configuration adressé à un
|
|
194
|
+
* autre module, pas une donnée du module porteur : une fois appliquée, elle
|
|
195
|
+
* n'a plus rien à faire dans ses options. La garder cassait la validation du
|
|
196
|
+
* porteur dès lors que son schéma refuse les clés inconnues — et déclarer
|
|
197
|
+
* `module-*` dans les onze schémas du dépôt aurait recopié onze fois une règle
|
|
198
|
+
* qui vit ici. Le retrait vaut AUSSI quand la cible est introuvable : la
|
|
199
|
+
* configuration est morte, elle vient d'être signalée, et rien ne gagne à ce
|
|
200
|
+
* qu'elle fasse en plus tomber le boot du porteur.
|
|
201
|
+
*
|
|
202
|
+
* Personne d'autre ne lit ces clés (`rg` sur `regModuleName` : ce fichier
|
|
203
|
+
* seul) ; sous l'ancien `z.object` elles disparaissaient de toute façon au
|
|
204
|
+
* parse, silencieusement — ce retrait rend explicite ce qui se produisait déjà.
|
|
205
|
+
*
|
|
206
|
+
* @param deep - merge profond (`true`, défaut) vs shallow (`false`).
|
|
207
|
+
* @returns options du module courant, débarrassées des clés d'override consommées.
|
|
208
|
+
*/
|
|
209
|
+
readOverrideModuleConfig(deep?: boolean): DefaultOptionsService;
|
|
210
|
+
registerService(service: ServiceConstructor, name: string): ServiceConstructor;
|
|
211
|
+
/**
|
|
212
|
+
* Instancie un service via l'{@link Injector} et l'enregistre dans le container du module.
|
|
213
|
+
*
|
|
214
|
+
* Si le service expose une méthode `init(module)`, elle est appelée après
|
|
215
|
+
* instanciation (équivalent constructeur async). Warn si un service du même nom existe
|
|
216
|
+
* déjà (override).
|
|
217
|
+
*
|
|
218
|
+
* @param service - constructeur du service (typiquement décoré `@injectable`).
|
|
219
|
+
* @param args - arguments additionnels passés au constructeur (après les `@inject` resolved).
|
|
220
|
+
* @returns instance du service prête à l'usage.
|
|
221
|
+
*/
|
|
222
|
+
addService(service: ServiceConstructor, ...args: any[]): Promise<Service>;
|
|
223
|
+
/**
|
|
224
|
+
* Politique d'échec d'un service déclaré via `@services([...])` : la MÊME que
|
|
225
|
+
* pour le reste du boot — fatal en production (ou sur une erreur de
|
|
226
|
+
* configuration), fail-soft **ANNONCÉ** ailleurs (agrégé au BootReport, qui
|
|
227
|
+
* fait dire « boot DÉGRADÉ » au superviseur). Jamais un skip silencieux.
|
|
228
|
+
*
|
|
229
|
+
* Appelée par le décorateur `@services`, dont le `catch` se contentait de
|
|
230
|
+
* logger : l'échec n'atteignait ni la politique de criticité ni le BootReport.
|
|
231
|
+
*
|
|
232
|
+
* @param error - l'échec remonté par `addService`/`loadService`.
|
|
233
|
+
* @param service - le constructeur (ou le chemin) du service fautif.
|
|
234
|
+
* @throws l'erreur d'origine si l'échec est fatal (production + module critique).
|
|
235
|
+
*/
|
|
236
|
+
handleServiceBootError(error: unknown, service: string | ServiceConstructor): void;
|
|
237
|
+
/**
|
|
238
|
+
* Noms des services enregistrés par ce module (ordre d'ajout).
|
|
239
|
+
* Vide tant qu'aucun service n'a été ajouté.
|
|
240
|
+
*/
|
|
241
|
+
getServiceNames(): string[];
|
|
242
|
+
/**
|
|
243
|
+
* Charge dynamiquement un service depuis un chemin (`import()`) puis l'enregistre via
|
|
244
|
+
* {@link addService}.
|
|
245
|
+
*
|
|
246
|
+
* @param service - chemin/spécifier du module à importer (URL, npm package, path relatif).
|
|
247
|
+
* @param args - arguments additionnels passés au constructeur.
|
|
248
|
+
* @returns instance du service après instanciation + `init()`.
|
|
249
|
+
*/
|
|
250
|
+
loadService(service: string, ...args: any[]): Promise<Service>;
|
|
251
|
+
getPackageJson(cwd?: string): Promise<PackageJson>;
|
|
252
|
+
/**
|
|
253
|
+
* Récupère un controller enregistré **dans ce module**.
|
|
254
|
+
*
|
|
255
|
+
* Le registre `Module.controllers` est process-global mais indexé par clé
|
|
256
|
+
* **module-scopée** `${module}:${ClassName}` (posée par `Router.setController`),
|
|
257
|
+
* exactement comme l'identité d'un `forward("module:controller:action")`. Deux
|
|
258
|
+
* modules peuvent donc porter un controller homonyme sans collision.
|
|
259
|
+
*
|
|
260
|
+
* @param name - nom de classe du controller (ex. `"DefaultController"`).
|
|
261
|
+
* @returns constructeur typé du controller.
|
|
262
|
+
* @throws Si `name` est falsy ou si le controller n'est pas enregistré pour ce module.
|
|
263
|
+
*/
|
|
264
|
+
getController<T = Controller>(name: string): TypeController<T>;
|
|
265
|
+
/**
|
|
266
|
+
* Retourne les controllers enregistrés **pour ce module** (clés = nom de classe
|
|
267
|
+
* nu, préfixe module retiré). Vue jetable filtrée depuis le registre global.
|
|
268
|
+
*/
|
|
269
|
+
getControllers<T = Controller>(): Record<string, TypeController<T>>;
|
|
270
|
+
/**
|
|
271
|
+
* Liste les dépendances + peerDependencies du module (depuis son `package.json`).
|
|
272
|
+
*
|
|
273
|
+
* @returns array de noms de packages npm. **devDependencies exclus**. Doublons possibles
|
|
274
|
+
* si un même package est listé dans `dependencies` ET `peerDependencies`.
|
|
275
|
+
*/
|
|
276
|
+
getDependencies(): string[];
|
|
277
|
+
/**
|
|
278
|
+
* Variante static — extrait les deps depuis un `package.json` arbitraire.
|
|
279
|
+
*
|
|
280
|
+
* @param mypackage - objet `package.json` parsé.
|
|
281
|
+
* @returns array de noms de packages npm (deps + peerDeps, devDeps exclus).
|
|
282
|
+
*/
|
|
283
|
+
static getPackageDependencies(mypackage: PackageJson): string[];
|
|
284
|
+
getModuleName(): string | undefined;
|
|
285
|
+
getModuleVersion(): string | undefined;
|
|
286
|
+
/**
|
|
287
|
+
* Enregistre une commande CLI custom rattachée à ce module.
|
|
288
|
+
*
|
|
289
|
+
* Pattern legacy `nodefony <name>:<action>` (ex: `nodefony users:add`). Le {@link CliKernel}
|
|
290
|
+
* doit être disponible (sinon throw `Kernel not ready`). En mode cluster worker, exceptions
|
|
291
|
+
* non-primary sont silencieusement avalées (retour `void`).
|
|
292
|
+
*
|
|
293
|
+
* @param cliCommand - constructeur de la commande (extends `Command`).
|
|
294
|
+
* @returns instance de la commande enregistrée OU `void` si worker secondaire.
|
|
295
|
+
* @throws `Error("Kernel not ready")` si `kernel.cli` n'est pas instancié.
|
|
296
|
+
*/
|
|
297
|
+
addCommand(cliCommand: new (cli: CliKernel) => Command): Command | void;
|
|
298
|
+
/**
|
|
299
|
+
* Exécute `npm install` (ou yarn/pnpm) dans le dossier du module.
|
|
300
|
+
*
|
|
301
|
+
* @param force - ajoute `--force` à l'install. Défaut `false`.
|
|
302
|
+
* @returns code de retour du process (0 = succès) ou Error si crash.
|
|
303
|
+
* @throws Si `packageManager` n'est pas attaché au CliKernel.
|
|
304
|
+
*/
|
|
305
|
+
install(force?: boolean): Promise<number | Error>;
|
|
306
|
+
/**
|
|
307
|
+
* Exécute `npm outdated` dans le dossier du module.
|
|
308
|
+
*
|
|
309
|
+
* @returns code de retour du process ou Error si crash.
|
|
310
|
+
* @throws Si `packageManager` n'est pas attaché au CliKernel.
|
|
311
|
+
*/
|
|
312
|
+
outdated(): Promise<number | Error>;
|
|
313
|
+
loadJson(url: string, cwd?: string): Promise<JSONObject>;
|
|
314
|
+
/**
|
|
315
|
+
* Surcharge {@link Service.log} — `msgid` défaut = `"MODULE <name>"` pour identifier
|
|
316
|
+
* les logs de ce module dans le pipeline Syslog.
|
|
317
|
+
*
|
|
318
|
+
* @param pci - payload (string, Error, objet — narrower côté lecteur).
|
|
319
|
+
* @param severity - sévérité RFC 5424 (`"INFO"`, `"ERROR"`, etc.).
|
|
320
|
+
* @param msgid - catégorie de message. Défaut `"MODULE <name>"`.
|
|
321
|
+
* @param msg - détail libre optionnel.
|
|
322
|
+
* @returns le `Pdu` produit (utile pour audit/tests).
|
|
323
|
+
*/
|
|
324
|
+
log(pci: any, severity?: Severity, msgid?: Msgid, msg?: Message): Pdu;
|
|
325
|
+
}
|
|
326
|
+
export default Module;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Qui appelle le plan d'administration, tel qu'il se PRÉSENTE.
|
|
3
|
+
*
|
|
4
|
+
* Ce type existe pour une raison précise : les portes sans HTTP (commande
|
|
5
|
+
* `inspect`, serveur MCP) fabriquaient un administrateur au lieu de porter une
|
|
6
|
+
* identité. Le contrôle de rôle s'appliquait donc à un sujet inventé, et tout
|
|
7
|
+
* porteur d'un jeton accepté obtenait la lecture d'administration complète.
|
|
8
|
+
*
|
|
9
|
+
* L'identité se PASSE, elle ne se déduit pas : chaque porte doit dire au nom de
|
|
10
|
+
* qui elle appelle, et le compilateur l'y oblige.
|
|
11
|
+
*/
|
|
12
|
+
export interface IAdminCaller {
|
|
13
|
+
/** L'utilisateur, quand la porte en connaît un. */
|
|
14
|
+
user: unknown | null;
|
|
15
|
+
/** Ses rôles RÉELS — c'est sur eux que le contrôle d'accès tranche. */
|
|
16
|
+
roles: readonly string[];
|
|
17
|
+
/**
|
|
18
|
+
* Qui c'est, en clair. Sert au refus et au journal : « rôle X requis » sans
|
|
19
|
+
* dire À QUI il manquait oblige à deviner quelle porte a été empruntée.
|
|
20
|
+
*/
|
|
21
|
+
label: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* L'opérateur qui lance une commande sur sa propre application.
|
|
25
|
+
*
|
|
26
|
+
* Il possède déjà le processus : il lit les sources, il édite la configuration,
|
|
27
|
+
* il peut arrêter le serveur. Lui refuser la lecture d'administration
|
|
28
|
+
* n'ajouterait aucune barrière — il lui suffirait d'ouvrir un fichier — mais
|
|
29
|
+
* rendrait la commande inutile. Le rôle est donc accordé ; ce qui compte, c'est
|
|
30
|
+
* que ce soit ÉNONCÉ ici plutôt que fabriqué en silence au fond d'une lecture.
|
|
31
|
+
*
|
|
32
|
+
* @returns l'appelant à présenter depuis une commande locale.
|
|
33
|
+
*/
|
|
34
|
+
export declare function localOperatorCaller(): IAdminCaller;
|
|
35
|
+
/**
|
|
36
|
+
* Scope d'un jeton ouvrant la LECTURE du plan d'administration.
|
|
37
|
+
*
|
|
38
|
+
* Trois valeurs suffisent pour tout le plan (celle-ci, {@link ADMIN_SCOPE_WRITE},
|
|
39
|
+
* et l'absence de scope pour la topologie) : un scope par endpoint se périmerait
|
|
40
|
+
* à chaque ajout, et la granularité fine existe déjà pour les API d'une
|
|
41
|
+
* application, portée par `@RequireScope` sur ses routes.
|
|
42
|
+
*/
|
|
43
|
+
export declare const ADMIN_SCOPE_READ = "admin:read";
|
|
44
|
+
/** Scope d'un jeton ouvrant les MUTATIONS du plan d'administration. */
|
|
45
|
+
export declare const ADMIN_SCOPE_WRITE = "admin:write";
|
|
46
|
+
/**
|
|
47
|
+
* Traduit les scopes d'un jeton en rôles Nodefony.
|
|
48
|
+
*
|
|
49
|
+
* ⚠️ Les deux scopes mènent aujourd'hui au MÊME rôle, et ce n'est pas un
|
|
50
|
+
* raccourci : le contrôle d'accès du plan d'administration est uniforme — tous
|
|
51
|
+
* les endpoints exigent `ROLE_NODEFONY_ADMIN`, lectures comme mutations.
|
|
52
|
+
* Distinguer ici produirait un théâtre d'autorisation : deux scopes séparés qui
|
|
53
|
+
* ouvrent exactement la même chose, et une promesse que le code ne tient pas.
|
|
54
|
+
* La séparation deviendra réelle quand `IAdminEndpoint.role` se différenciera.
|
|
55
|
+
*
|
|
56
|
+
* Un jeton qui ne porte aucun de ces scopes n'obtient **aucun rôle** : la
|
|
57
|
+
* vérification d'audience (RFC 8707) prouve que le jeton vise cette ressource,
|
|
58
|
+
* elle ne dit rien de ce que son porteur a le droit d'y faire.
|
|
59
|
+
*
|
|
60
|
+
* ## Rôle et scope — la doctrine, et l'asymétrie qui reste
|
|
61
|
+
*
|
|
62
|
+
* Autorisation effective = **droits de l'utilisateur ∧ portée déléguée au
|
|
63
|
+
* porteur**. Un scope borne ce qu'un TIERS peut faire au nom de quelqu'un ; en
|
|
64
|
+
* session directe (cookie, Studio) il n'y a pas de tiers, donc rien à borner et
|
|
65
|
+
* le rôle suffit. Dès qu'un JETON entre en jeu, il y a délégation, et les deux
|
|
66
|
+
* doivent mordre — c'est ce que fait cette fonction, avec
|
|
67
|
+
* {@link refusedAdminScopes} qui borne l'autre bout : porter le rôle ne suffit
|
|
68
|
+
* pas à obtenir le scope, porter le scope ne suffit pas à avoir le rôle.
|
|
69
|
+
*
|
|
70
|
+
* ⚠️ **Dette nommée, non fermée** : un jeton présenté sur la porte HTTP
|
|
71
|
+
* (`ExternalJwtAuthenticator`, `subjectPolicy: "require"`) est rattaché à un
|
|
72
|
+
* compte local et hérite des rôles de ce compte **sans** intersection avec ses
|
|
73
|
+
* scopes — les routes du plan d'administration sont montées par le broker, donc
|
|
74
|
+
* ne portent aucun `@RequireScope`. Le même porteur obtient donc plus par HTTP
|
|
75
|
+
* que par MCP. Fermer cela suppose que la provenance de l'identité (session ou
|
|
76
|
+
* jeton) voyage jusqu'au contrôle de rôle, ce qu'elle ne fait pas aujourd'hui.
|
|
77
|
+
*
|
|
78
|
+
* ⚠️ Et ce n'est pas du moindre privilège : le plan d'administration n'a qu'UN
|
|
79
|
+
* rôle, qui ouvre tous ses endpoints. « Fail-closed » — pas de laissez-passer
|
|
80
|
+
* par défaut — n'est pas « Zero Trust ». La granularité réelle suppose que
|
|
81
|
+
* `IAdminEndpoint.role` se différencie ; tant qu'il ne l'est pas, découper les
|
|
82
|
+
* scopes plus finement ne serait qu'un décor.
|
|
83
|
+
*
|
|
84
|
+
* @param scopes - scopes accordés par le serveur d'autorisation.
|
|
85
|
+
* @returns les rôles à présenter, éventuellement aucun.
|
|
86
|
+
*/
|
|
87
|
+
export declare function rolesFromScopes(scopes: readonly string[]): string[];
|
|
88
|
+
/**
|
|
89
|
+
* Les scopes d'administration demandés que ce porteur **ne peut pas** obtenir.
|
|
90
|
+
*
|
|
91
|
+
* Réciproque de {@link rolesFromScopes}, et indispensable avec elle : si un
|
|
92
|
+
* scope ouvre le plan d'administration, alors l'émetteur ne peut pas le signer
|
|
93
|
+
* sur simple demande. Sans cette borne, « tout jeton vaut administrateur »
|
|
94
|
+
* devient « tout jeton QUI DEMANDE vaut administrateur » — le trou change de
|
|
95
|
+
* forme, pas de taille.
|
|
96
|
+
*
|
|
97
|
+
* Ne juge QUE les scopes d'administration du framework. Les scopes d'une
|
|
98
|
+
* application (`shop:read`, `billing:export`) ne regardent pas Nodefony : c'est
|
|
99
|
+
* à elle de dire qui peut les obtenir.
|
|
100
|
+
*
|
|
101
|
+
* @param requested - scopes demandés au grant (RFC 6749 §3.3).
|
|
102
|
+
* @param roles - rôles du porteur, tels que son compte les porte.
|
|
103
|
+
* @returns les scopes à REFUSER — vide si la demande est légitime.
|
|
104
|
+
*/
|
|
105
|
+
export declare function refusedAdminScopes(requested: readonly string[], roles: readonly string[]): string[];
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { IAdminEndpoint } from "../../types/IAdminApi.js";
|
|
2
|
+
/**
|
|
3
|
+
* Décision d'autorisation du data plane admin (Studio) — fonction **PURE**,
|
|
4
|
+
* cœur de la garantie RBAC, testée isolément (zéro dépendance runtime/DI).
|
|
5
|
+
*
|
|
6
|
+
* **Fail-closed.** Un endpoint qui exige un rôle (`requiredRole` non vide) n'est
|
|
7
|
+
* accordé QUE si l'appelant le porte. Un appelant **sans rôle** (`roles=[]` — ex.
|
|
8
|
+
* compte authentifié non doté, créé via `POST users` sans `roles`) est donc
|
|
9
|
+
* **rejeté** (403). C'était le **fail-open historique** : le 403 était court-circuité
|
|
10
|
+
* par une garde `roles.length > 0 &&` — vestige du « mode mock » d'avant P6, quand
|
|
11
|
+
* aucun rôle n'était injecté. Zero Trust : l'absence de rôle ne vaut pas
|
|
12
|
+
* laissez-passer. Le firewall (zone `nodefony-admin`) garantit l'AUTHENTIFICATION
|
|
13
|
+
* en amont ; cette fonction tranche le RÔLE.
|
|
14
|
+
*
|
|
15
|
+
* `requiredRole` vide (`""`) ou absent = endpoint **public déclaré**
|
|
16
|
+
* (`IAdminEndpoint.public`, ex. liveness `livez`) → toujours accordé : le RBAC du
|
|
17
|
+
* broker est volontairement court-circuité, la protection vit alors dans le firewall.
|
|
18
|
+
*
|
|
19
|
+
* @param roles - rôles **bruts** de l'appelant (projection ALS `IAdminRequest.roles`).
|
|
20
|
+
* @param requiredRole - rôle exigé par la route (`""`/`undefined` = public).
|
|
21
|
+
* @returns `true` si l'accès est accordé.
|
|
22
|
+
*/
|
|
23
|
+
export declare function isAdminGranted(roles: readonly string[], requiredRole: string | undefined): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Rôle exigé par défaut d'un endpoint d'administration qui n'en déclare aucun.
|
|
26
|
+
*
|
|
27
|
+
* Le défaut est **restrictif** : un producteur qui oublie de qualifier son
|
|
28
|
+
* endpoint le publie au rôle d'administrateur, jamais à l'anonyme. Ouvrir plus
|
|
29
|
+
* large se DÉCLARE (`IAdminEndpoint.public`) et se relit en revue.
|
|
30
|
+
*/
|
|
31
|
+
export declare const ADMIN_DEFAULT_ROLE = "ROLE_NODEFONY_ADMIN";
|
|
32
|
+
/**
|
|
33
|
+
* Rôle **effectif** d'un endpoint — la règle, à un seul endroit.
|
|
34
|
+
*
|
|
35
|
+
* Toutes les portes du plan d'administration (route HTTP montée par le broker,
|
|
36
|
+
* pont WS-RPC, commande `inspect`, serveur MCP) doivent trancher le même rôle
|
|
37
|
+
* pour le même endpoint. Deux résolutions séparées finiraient par diverger, et
|
|
38
|
+
* c'est la porte secondaire — celle qu'on relit le moins — qui deviendrait la
|
|
39
|
+
* plus permissive.
|
|
40
|
+
*
|
|
41
|
+
* @param endpoint - la définition telle que le producteur la déclare.
|
|
42
|
+
* @returns le rôle exigé, ou `""` pour un endpoint **public déclaré**.
|
|
43
|
+
*/
|
|
44
|
+
export declare function resolveAdminRole(endpoint: Pick<IAdminEndpoint, "public" | "role">): string;
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import type { AdminHttpMethod } from "../../types/IAdminApi.js";
|
|
2
|
+
import type { IAdminBrokerLike } from "../inspect/adminSubjects.js";
|
|
3
|
+
import type { IAdminCaller } from "./adminCaller.js";
|
|
4
|
+
/**
|
|
5
|
+
* Un endpoint du plan d'administration, tel qu'une porte sans session peut le
|
|
6
|
+
* proposer — de quoi l'APPELER, rien de plus.
|
|
7
|
+
*
|
|
8
|
+
* Ce que porte `params` mérite son existence : les chemins du plan portent des
|
|
9
|
+
* variables (`module/{name}/docs/{slug}`) et un appelant qui les devine se
|
|
10
|
+
* trompe une fois sur deux. Les nommer ici coûte une expression régulière et
|
|
11
|
+
* supprime un aller-retour.
|
|
12
|
+
*/
|
|
13
|
+
export interface IAdminCatalogEntry {
|
|
14
|
+
/** Producteur (`kernel`, `security`, `orm`…) — premier segment de la route. */
|
|
15
|
+
namespace: string;
|
|
16
|
+
/** Chemin déclaré par le producteur, variables comprises. */
|
|
17
|
+
path: string;
|
|
18
|
+
/** Méthode — toujours `"GET"` dans ce catalogue, cf {@link adminReadCatalog}. */
|
|
19
|
+
method: AdminHttpMethod;
|
|
20
|
+
/** Ce que l'endpoint rend, en une ligne, telle que son auteur l'a écrite. */
|
|
21
|
+
summary: string;
|
|
22
|
+
/** Noms des variables du chemin, dans l'ordre où elles apparaissent. */
|
|
23
|
+
params: readonly string[];
|
|
24
|
+
/**
|
|
25
|
+
* Ce que l'endpoint sait faire d'une liste, quand il en rend une.
|
|
26
|
+
*
|
|
27
|
+
* Publié parce que le défaut du plan est le REFUS : un tri ou un filtre non
|
|
28
|
+
* déclaré rend `400`, jamais une liste approximative. Sans cette
|
|
29
|
+
* publication, un appelant tente `?sort=createdAt`, se fait refuser, et
|
|
30
|
+
* conclut que l'endpoint est cassé — alors qu'il ne l'a simplement jamais
|
|
31
|
+
* annoncé. Évalué à la lecture : c'est le store branché au démarrage qui
|
|
32
|
+
* répond, pas une constante de compilation.
|
|
33
|
+
*/
|
|
34
|
+
page?: {
|
|
35
|
+
/** Champs sur lesquels `?sort=` est accepté. */
|
|
36
|
+
sortable: readonly string[];
|
|
37
|
+
/** Noms de filtre acceptés, tels que le vocabulaire de l'endpoint les nomme. */
|
|
38
|
+
filters: readonly string[];
|
|
39
|
+
/** L'endpoint honore-t-il `?q=` ? */
|
|
40
|
+
search: boolean;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/** Restriction de lecture du catalogue — sans effet sur ce qui est APPELABLE. */
|
|
44
|
+
export interface IAdminCatalogQuery {
|
|
45
|
+
/** Ne garder qu'un producteur. */
|
|
46
|
+
namespace?: string;
|
|
47
|
+
/** Termes cherchés dans le chemin et le résumé ; espaces = termes CUMULATIFS. */
|
|
48
|
+
q?: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Ce que le catalogue montre, ET ce qu'il a écarté.
|
|
52
|
+
*
|
|
53
|
+
* Les compteurs ne sont pas décoratifs : sans eux, une liste de 61 entrées se
|
|
54
|
+
* lit comme « voilà tout le plan d'administration », et un appelant conclut
|
|
55
|
+
* qu'une capacité n'existe pas alors qu'elle est seulement hors de portée de
|
|
56
|
+
* CETTE porte. Un écart se DIT, il ne se devine pas.
|
|
57
|
+
*/
|
|
58
|
+
export interface IAdminCatalogView {
|
|
59
|
+
/** Les endpoints appelables, groupés par personne — l'ordre de déclaration. */
|
|
60
|
+
entries: IAdminCatalogEntry[];
|
|
61
|
+
/** Combien d'endpoints le plan déclare en tout. */
|
|
62
|
+
total: number;
|
|
63
|
+
/** Écartés parce que ce sont des mutations (POST/PATCH/PUT/DELETE). */
|
|
64
|
+
mutations: number;
|
|
65
|
+
/** Écartés parce qu'ils sont scopés à une session (`public: true`). */
|
|
66
|
+
selfService: number;
|
|
67
|
+
/** Écartés faute du rôle exigé par l'endpoint. */
|
|
68
|
+
denied: number;
|
|
69
|
+
/** Écartés par la restriction de lecture demandée ({@link IAdminCatalogQuery}). */
|
|
70
|
+
filtered: number;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Les endpoints du plan d'administration qu'une porte **sans session** peut
|
|
74
|
+
* servir à cet appelant — la règle unique dont dépendent `nodefony_admin_list`
|
|
75
|
+
* ET `nodefony_admin_call`.
|
|
76
|
+
*
|
|
77
|
+
* ⭐ **Ce qui est listé est appelable, et rien d'autre ne l'est.** C'est le même
|
|
78
|
+
* patron que le filtrage des outils MCP à la collecte : un seul point de
|
|
79
|
+
* décision sert la liste et l'exécution, donc il ne peut pas exister d'entrée
|
|
80
|
+
* appelable qu'on n'aurait pas annoncée, ni d'entrée annoncée qui refuserait
|
|
81
|
+
* ensuite. Deux points de décision, c'est celui qu'on relit le moins qui
|
|
82
|
+
* devient le plus permissif.
|
|
83
|
+
*
|
|
84
|
+
* Trois exclusions, toutes comptées et donc dicibles :
|
|
85
|
+
*
|
|
86
|
+
* 1. **Les mutations.** L'idempotence des mutations du plan est une porte du
|
|
87
|
+
* transport HTTP (`AdminApiController.idempotencyGate`, qui a besoin du
|
|
88
|
+
* conteneur) ; l'exécuter d'ici sans elle ferait de cette porte une
|
|
89
|
+
* quatrième voie qui perd ce que les autres gardent — précisément ce que
|
|
90
|
+
* l'unification de l'exécution vient de supprimer. Elles se compteront tant
|
|
91
|
+
* qu'elles ne s'appelleront pas.
|
|
92
|
+
* 2. **Les endpoints `public: true`.** Ce ne sont pas des endpoints libres :
|
|
93
|
+
* ce sont des self-service scopés à `request.user` (`me`, `me/password`,
|
|
94
|
+
* `sessions/mine`) ou des sondes d'infrastructure. Une porte sans session
|
|
95
|
+
* n'a pas d'utilisateur ; les servir rendrait « les données de personne » au
|
|
96
|
+
* mieux, celles d'autrui au pire.
|
|
97
|
+
* 3. **Ce que le rôle de l'appelant n'ouvre pas** — la même décision que
|
|
98
|
+
* l'exécution ({@link isAdminGranted}), prise sur le même rôle résolu
|
|
99
|
+
* ({@link resolveAdminRole}), pour que la liste ne promette jamais ce que
|
|
100
|
+
* l'appel refuserait.
|
|
101
|
+
*
|
|
102
|
+
* @param broker - le service `adminBroker` du conteneur, ou `undefined`.
|
|
103
|
+
* @param caller - qui demande, avec ses rôles RÉELS.
|
|
104
|
+
* @param query - restriction de lecture facultative.
|
|
105
|
+
* @returns les entrées appelables, et le compte de ce qui ne l'est pas.
|
|
106
|
+
*/
|
|
107
|
+
export declare function adminReadCatalog(broker: IAdminBrokerLike | undefined, caller: IAdminCaller, query?: IAdminCatalogQuery): IAdminCatalogView;
|
|
108
|
+
/**
|
|
109
|
+
* Retrouve une entrée APPELABLE par son couple producteur/chemin.
|
|
110
|
+
*
|
|
111
|
+
* Passe par {@link adminReadCatalog} plutôt que de reparcourir le registre :
|
|
112
|
+
* c'est ce qui garantit que l'appel et la liste tranchent la même chose. Une
|
|
113
|
+
* seconde traversée « équivalente » serait exactement la divergence que ce
|
|
114
|
+
* module supprime.
|
|
115
|
+
*
|
|
116
|
+
* @param broker - le service `adminBroker` du conteneur, ou `undefined`.
|
|
117
|
+
* @param caller - qui demande, avec ses rôles RÉELS.
|
|
118
|
+
* @param namespace - producteur visé.
|
|
119
|
+
* @param path - chemin visé, tel que le catalogue le nomme (variables comprises).
|
|
120
|
+
* @returns l'entrée, ou `null` si elle n'est pas appelable par cet appelant.
|
|
121
|
+
*/
|
|
122
|
+
export declare function findAdminReadEntry(broker: IAdminBrokerLike | undefined, caller: IAdminCaller, namespace: string, path: string): IAdminCatalogEntry | null;
|