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,86 @@
|
|
|
1
|
+
//#region src/kernel/inspect/docOutline.ts
|
|
2
|
+
/** Un titre atx, hors bloc de code. */
|
|
3
|
+
const HEADING_RE = /^(#{1,6})[^\S\n](.*)$/;
|
|
4
|
+
/** Les `#` de fermeture, forme ATX facultative : `## Titre ##`. */
|
|
5
|
+
const HEADING_CLOSING_RE = /[^\S\n]#+$/;
|
|
6
|
+
/** Ouverture ou fermeture d'un bloc de code clôturé. */
|
|
7
|
+
const FENCE_RE = /^\s*(?:```|~~~)/;
|
|
8
|
+
/**
|
|
9
|
+
* Forme comparable d'un titre : minuscules, sans diacritiques ni ponctuation
|
|
10
|
+
* de décoration — un agent recopie rarement « 🔴 Règle ABSOLUE » à l'identique.
|
|
11
|
+
*/
|
|
12
|
+
function foldTitle(text) {
|
|
13
|
+
return text.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Repère les titres d'un markdown, **en ignorant les blocs de code**.
|
|
17
|
+
*
|
|
18
|
+
* Cette exclusion n'est pas un détail de forme : la documentation du framework
|
|
19
|
+
* est pleine d'exemples shell, où un `# commentaire` en début de ligne serait
|
|
20
|
+
* lu comme un titre de niveau 1 — et découperait le document à des endroits qui
|
|
21
|
+
* n'existent pas.
|
|
22
|
+
*
|
|
23
|
+
* @param markdown - corps du document (frontmatter déjà retiré)
|
|
24
|
+
* @returns les titres dans l'ordre du document, avec le poids de leur section
|
|
25
|
+
*/
|
|
26
|
+
function outlineMarkdown(markdown) {
|
|
27
|
+
const lines = markdown.split("\n");
|
|
28
|
+
const sections = [];
|
|
29
|
+
let inFence = false;
|
|
30
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
31
|
+
if (FENCE_RE.test(lines[i])) {
|
|
32
|
+
inFence = !inFence;
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if (inFence) continue;
|
|
36
|
+
const m = HEADING_RE.exec(lines[i]);
|
|
37
|
+
if (m) sections.push({
|
|
38
|
+
level: m[1].length,
|
|
39
|
+
title: m[2].trim().replace(HEADING_CLOSING_RE, "").trim(),
|
|
40
|
+
line: i + 1,
|
|
41
|
+
chars: 0
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
for (let s = 0; s < sections.length; s += 1) {
|
|
45
|
+
const start = sections[s].line - 1;
|
|
46
|
+
let end = lines.length;
|
|
47
|
+
for (let n = s + 1; n < sections.length; n += 1) if (sections[n].level <= sections[s].level) {
|
|
48
|
+
end = sections[n].line - 1;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
sections[s].chars = lines.slice(start, end).join("\n").length;
|
|
52
|
+
}
|
|
53
|
+
return sections;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Extrait UNE section d'un markdown, sous-sections comprises.
|
|
57
|
+
*
|
|
58
|
+
* Le titre demandé est reconnu sans casse, sans accents et sans ponctuation
|
|
59
|
+
* décorative ({@link foldTitle}) : « securite » retrouve « 🔐 Sécurité ». À
|
|
60
|
+
* défaut d'égalité, une inclusion suffit — un agent cite plus souvent un bout
|
|
61
|
+
* de titre que sa forme exacte.
|
|
62
|
+
*
|
|
63
|
+
* @param markdown - corps du document (frontmatter déjà retiré)
|
|
64
|
+
* @param wanted - titre cherché, sous n'importe quelle forme approchante
|
|
65
|
+
* @returns le titre RÉEL et le corps de sa section, ou `null` si rien ne matche
|
|
66
|
+
*/
|
|
67
|
+
function extractMarkdownSection(markdown, wanted) {
|
|
68
|
+
const sections = outlineMarkdown(markdown);
|
|
69
|
+
const target = foldTitle(wanted);
|
|
70
|
+
if (target === "") return null;
|
|
71
|
+
const found = sections.find((s) => foldTitle(s.title) === target) ?? sections.find((s) => foldTitle(s.title).includes(target));
|
|
72
|
+
if (!found) return null;
|
|
73
|
+
const lines = markdown.split("\n");
|
|
74
|
+
const start = found.line - 1;
|
|
75
|
+
let end = lines.length;
|
|
76
|
+
for (const s of sections) if (s.line > found.line && s.level <= found.level) {
|
|
77
|
+
end = s.line - 1;
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
title: found.title,
|
|
82
|
+
markdown: lines.slice(start, end).join("\n")
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
//#endregion
|
|
86
|
+
export { extractMarkdownSection, outlineMarkdown };
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
//#region src/kernel/lifecycleTags.ts
|
|
2
|
+
/**
|
|
3
|
+
* Pose `owner` + `critical` sur une fonction listener, **en place**, et la renvoie.
|
|
4
|
+
*
|
|
5
|
+
* @typeParam F - type de la fonction (préservé).
|
|
6
|
+
* @param fn - listener (typiquement `hook.bind(module)`).
|
|
7
|
+
* @param owner - nom du module propriétaire.
|
|
8
|
+
* @param critical - criticité du module (cf `Module.critical`).
|
|
9
|
+
* @returns la même fonction `fn`, taguée.
|
|
10
|
+
*/
|
|
11
|
+
function tagListener(fn, owner, critical) {
|
|
12
|
+
const tagged = fn;
|
|
13
|
+
tagged.__nodefony_owner = owner;
|
|
14
|
+
tagged.__nodefony_critical = critical;
|
|
15
|
+
return fn;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Marque un listener comme n'étant PAS soumis à la borne de temps du boot.
|
|
19
|
+
*
|
|
20
|
+
* 🔴 Vécu, et c'est le pire mode de panne qui soit : l'action d'une commande est
|
|
21
|
+
* câblée comme un écouteur de cycle de vie (`Command.setEvents`), donc bornée
|
|
22
|
+
* comme un hook de module. Passé vingt secondes, la garde abandonnait
|
|
23
|
+
* l'écouteur en fail-soft, le boot enchaînait sur `finishOrPark(0)` et le
|
|
24
|
+
* processus sortait en **0 au milieu du travail**, sans un mot — `doctor
|
|
25
|
+
* --deep` rendait ainsi un succès muet en plein `npm run test`.
|
|
26
|
+
*
|
|
27
|
+
* La distinction est de NATURE, pas de durée : la borne existe pour qu'un module
|
|
28
|
+
* qui se fige ne gèle pas le DÉMARRAGE. Une commande, elle, EST le programme —
|
|
29
|
+
* une migration, une construction, une suite de tests ou une question posée à
|
|
30
|
+
* l'utilisateur dépassent vingt secondes sans rien avoir d'anormal.
|
|
31
|
+
*
|
|
32
|
+
* @typeParam F - type de la fonction (préservé).
|
|
33
|
+
* @param fn - le listener à marquer.
|
|
34
|
+
* @returns la même fonction `fn`, marquée.
|
|
35
|
+
*/
|
|
36
|
+
function tagUnboundedListener(fn) {
|
|
37
|
+
fn.__nodefony_unbounded = true;
|
|
38
|
+
return fn;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Dit si un listener a été marqué par {@link tagUnboundedListener}.
|
|
42
|
+
*
|
|
43
|
+
* **Déballe le wrapper `once`** pour la même raison que {@link readListenerTags} :
|
|
44
|
+
* les actions de commande sont câblées via `kernel.once(...)`, et lire le
|
|
45
|
+
* marquage sur le wrapper interne de Node rendrait toujours `false`.
|
|
46
|
+
*
|
|
47
|
+
* @param fn - listener (wrapper `once` ou fonction directe).
|
|
48
|
+
* @returns `true` si ce listener échappe à la borne de temps du boot.
|
|
49
|
+
*/
|
|
50
|
+
function isUnboundedListener(fn) {
|
|
51
|
+
if (fn == null) return false;
|
|
52
|
+
const wrapper = fn;
|
|
53
|
+
return (wrapper.listener ?? wrapper).__nodefony_unbounded === true;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Relit les tags d'un listener. **Déballe le wrapper `once`** : `rawListeners()`
|
|
57
|
+
* renvoie le wrapper interne d'`EventEmitter.once` (qui porte `.listener` =
|
|
58
|
+
* fonction d'origine) — les hooks de module étant câblés via `kernel.once(...)`,
|
|
59
|
+
* lire les tags directement sur le wrapper renverrait toujours `undefined`.
|
|
60
|
+
*
|
|
61
|
+
* @param fn - listener (wrapper `once` ou fonction directe).
|
|
62
|
+
* @returns `{ owner, critical }` (valeurs `undefined` si non tagué).
|
|
63
|
+
*/
|
|
64
|
+
function readListenerTags(fn) {
|
|
65
|
+
if (fn == null) return {};
|
|
66
|
+
const wrapper = fn;
|
|
67
|
+
const target = wrapper.listener ?? wrapper;
|
|
68
|
+
const rawName = target.name;
|
|
69
|
+
return {
|
|
70
|
+
owner: target.__nodefony_owner,
|
|
71
|
+
critical: target.__nodefony_critical,
|
|
72
|
+
name: typeof rawName === "string" && rawName !== "" ? rawName : void 0
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//#endregion
|
|
76
|
+
export { isUnboundedListener, readListenerTags, tagListener, tagUnboundedListener };
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { BootConfigurationError } from "./BootConfigurationError.js";
|
|
2
|
+
//#region src/kernel/moduleConfig.ts
|
|
3
|
+
/**
|
|
4
|
+
* Rend une anomalie Zod lisible par celui qui a écrit la configuration.
|
|
5
|
+
*
|
|
6
|
+
* Le cas `unrecognized_keys` est traité à part : le message natif de zod
|
|
7
|
+
* (`Unrecognized key: "x"`) ne dit ni où se trouve la clé dans l'arbre, ni ce
|
|
8
|
+
* qu'il faut en faire, et il est en anglais alors que tout ce que Nodefony
|
|
9
|
+
* affiche est en français. Une faute de frappe se corrige d'autant plus vite
|
|
10
|
+
* qu'on lit le chemin COMPLET de la clé refusée.
|
|
11
|
+
*
|
|
12
|
+
* @param issue - anomalie brute remontée par zod.
|
|
13
|
+
* @returns une ligne de message, chemin compris.
|
|
14
|
+
*/
|
|
15
|
+
function formatConfigIssue(issue) {
|
|
16
|
+
const path = (issue.path ?? []).join(".");
|
|
17
|
+
if (issue.code === "unrecognized_keys" && issue.keys?.length) {
|
|
18
|
+
const keys = issue.keys.map((k) => path ? `${path}.${k}` : k).map((k) => `\`${k}\``).join(", ");
|
|
19
|
+
const plural = issue.keys.length > 1 ? "s" : "";
|
|
20
|
+
return `clé${plural} inconnue${plural} : ${keys} — retire-la${plural} ou corrige l'orthographe`;
|
|
21
|
+
}
|
|
22
|
+
return `${path || "(racine)"} : ${issue.message ?? "invalide"}`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Extrait les anomalies d'une erreur Zod, quelle que soit la copie de zod qui
|
|
26
|
+
* l'a levée (`issues` est une propriété de données, pas une méthode de classe).
|
|
27
|
+
*
|
|
28
|
+
* @param error - erreur levée par `schema.parse()`.
|
|
29
|
+
* @returns le message agrégé, une ligne par anomalie.
|
|
30
|
+
*/
|
|
31
|
+
function formatConfigIssues(error) {
|
|
32
|
+
if (error instanceof Error && "issues" in error && Array.isArray(error.issues)) return error.issues.map(formatConfigIssue).join(" · ");
|
|
33
|
+
return error instanceof Error ? error.message : String(error);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Valide la configuration d'un module contre son schéma Zod, et transforme un
|
|
37
|
+
* refus en {@link BootConfigurationError} nommant le module et la clé fautive.
|
|
38
|
+
*
|
|
39
|
+
* ⭐ TL;DR : c'est LA porte par laquelle toute config de module est validée.
|
|
40
|
+
* Chaque module l'appelle depuis son `define<X>Config()` ; aucun ne réécrit le
|
|
41
|
+
* bloc `try`/`catch`.
|
|
42
|
+
*
|
|
43
|
+
* **Pourquoi une fonction du cœur, et pas un bloc recopié par module.** Les dix
|
|
44
|
+
* modules du framework portaient le même `catch` à l'identique, et il avait
|
|
45
|
+
* divergé sur les deux points qui comptent : le TYPE de l'erreur levée et la
|
|
46
|
+
* LANGUE du message. Une règle écrite à dix endroits diverge au premier ajout.
|
|
47
|
+
*
|
|
48
|
+
* **Pourquoi `BootConfigurationError` et pas une `Error` ordinaire.** Le kernel
|
|
49
|
+
* distingue les deux ({@link BootConfigurationError}) : un hook de cycle de vie
|
|
50
|
+
* qui lève une erreur QUELCONQUE est absorbé en développement — c'est le
|
|
51
|
+
* fail-soft, il protège la DX d'un module optionnel cassé — tandis qu'une
|
|
52
|
+
* erreur de CONFIGURATION interrompt le boot dans TOUS les environnements. Une
|
|
53
|
+
* `Error` nue rendait donc le refus INVISIBLE là où il est le plus utile :
|
|
54
|
+
* sur le poste de celui qui vient d'écrire la faute de frappe.
|
|
55
|
+
*
|
|
56
|
+
* ⚠️ Ne gèle rien — le gel est la décision du module appelant. `@nodefony/http`
|
|
57
|
+
* ne peut PAS geler sa config (ses services la mutent au boot : `uploadDir`,
|
|
58
|
+
* `serialNumber`), quand les autres le font.
|
|
59
|
+
*
|
|
60
|
+
* @param schema - schéma Zod du module (source unique des défauts).
|
|
61
|
+
* @param input - configuration brute venue de `use("<paquet>", { … })`.
|
|
62
|
+
* @param packageName - nom du paquet, préfixe du message (`@nodefony/http`).
|
|
63
|
+
* @returns la configuration validée, défauts appliqués.
|
|
64
|
+
* @throws BootConfigurationError si un champ est invalide ou une clé inconnue —
|
|
65
|
+
* toutes les anomalies agrégées, chacune avec son chemin.
|
|
66
|
+
*/
|
|
67
|
+
function parseModuleConfig(schema, input, packageName) {
|
|
68
|
+
try {
|
|
69
|
+
return schema.parse(input);
|
|
70
|
+
} catch (e) {
|
|
71
|
+
throw new BootConfigurationError(`[${packageName}] configuration invalide — ${formatConfigIssues(e)}`, { cause: e });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//#endregion
|
|
75
|
+
export { parseModuleConfig as default, parseModuleConfig };
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
//#region src/kernel/moduleGating.ts
|
|
2
|
+
/** La raison affichée quand la politique du module l'écarte d'un runtime de production. */
|
|
3
|
+
const GATED_BY_POLICY = "policy \"dev\" — runtime production";
|
|
4
|
+
/** La raison affichée quand la garde `when(config)` du module refuse. */
|
|
5
|
+
const GATED_BY_CONDITION = "condition when(config) non remplie";
|
|
6
|
+
/**
|
|
7
|
+
* Applique la règle de gating à un manifeste.
|
|
8
|
+
*
|
|
9
|
+
* `policy`/`when` ne font que FILTRER — jamais réordonner : l'ordre du tableau
|
|
10
|
+
* est la priorité de chargement, et un tri introduirait une dépendance que
|
|
11
|
+
* personne n'a écrite.
|
|
12
|
+
*
|
|
13
|
+
* @param manifest - le manifeste `config.modules`, tel qu'il est déclaré.
|
|
14
|
+
* @param input - ce qu'il faut savoir de l'environnement visé.
|
|
15
|
+
* @returns les entrées retenues, celles écartées, et les dérogations.
|
|
16
|
+
*/
|
|
17
|
+
function gateModuleManifest(manifest, input) {
|
|
18
|
+
const entries = [];
|
|
19
|
+
const gated = [];
|
|
20
|
+
const derogated = [];
|
|
21
|
+
if (!Array.isArray(manifest)) return {
|
|
22
|
+
entries,
|
|
23
|
+
gated,
|
|
24
|
+
derogated
|
|
25
|
+
};
|
|
26
|
+
for (const item of manifest) {
|
|
27
|
+
const entry = typeof item === "string" ? { name: item } : item;
|
|
28
|
+
if (!entry?.name) continue;
|
|
29
|
+
if (entry.policy === "dev" && input.isProduction) {
|
|
30
|
+
if (input.forceDevModules) derogated.push(entry.name);
|
|
31
|
+
else {
|
|
32
|
+
gated.push({
|
|
33
|
+
module: entry.name,
|
|
34
|
+
reason: GATED_BY_POLICY
|
|
35
|
+
});
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
let allowed = true;
|
|
40
|
+
if (typeof entry.when === "function") try {
|
|
41
|
+
allowed = Boolean(entry.when(input.config));
|
|
42
|
+
} catch (e) {
|
|
43
|
+
gated.push({
|
|
44
|
+
module: entry.name,
|
|
45
|
+
reason: `condition when(config) en erreur — ${e.message}`
|
|
46
|
+
});
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (!allowed) {
|
|
50
|
+
gated.push({
|
|
51
|
+
module: entry.name,
|
|
52
|
+
reason: GATED_BY_CONDITION
|
|
53
|
+
});
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
entries.push({
|
|
57
|
+
name: entry.name,
|
|
58
|
+
config: entry.config
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
entries,
|
|
63
|
+
gated,
|
|
64
|
+
derogated
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
//#endregion
|
|
68
|
+
export { GATED_BY_CONDITION, GATED_BY_POLICY, gateModuleManifest };
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
//#region src/kernel/readinessRegistry.ts
|
|
2
|
+
/**
|
|
3
|
+
* Les contributeurs et le compte de ceux qui retiennent la mise en service.
|
|
4
|
+
*
|
|
5
|
+
* Objet nu (`Object.create(null)`) plutôt que `Map` : quelques entrées, accès
|
|
6
|
+
* ponctuel, aucun héritage de prototype à craindre sur un nom venu d'un module.
|
|
7
|
+
* Le compte des non-prêts est tenu À L'ÉCRITURE — il n'est jamais recalculé par
|
|
8
|
+
* parcours, puisque c'est la lecture qui doit rester gratuite.
|
|
9
|
+
*/
|
|
10
|
+
var ReadinessRegistry = class {
|
|
11
|
+
entries = Object.create(null);
|
|
12
|
+
notReady = 0;
|
|
13
|
+
tracked = 0;
|
|
14
|
+
/** Nombre de contributeurs qui retiennent la mise en service (0 = disponible). */
|
|
15
|
+
get blocked() {
|
|
16
|
+
return this.notReady;
|
|
17
|
+
}
|
|
18
|
+
/** Nombre de contributeurs inscrits, prêts ou non. */
|
|
19
|
+
get size() {
|
|
20
|
+
return this.tracked;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Inscrit ou met à jour un contributeur nommé. Idempotent par nom : un même
|
|
24
|
+
* nom réenregistré remplace son verdict, il n'ajoute jamais une seconde voix.
|
|
25
|
+
*
|
|
26
|
+
* @param name - nom du contributeur (`"drizzle:schema"`, `"cache"`…)
|
|
27
|
+
* @param ready - verdict DÉJÀ calculé ; `false` retient la mise en service
|
|
28
|
+
* @param reason - ce qui retient, en clair — ignoré quand `ready` est vrai
|
|
29
|
+
* @param blocking - `false` pour PUBLIER l'état sans retenir le trafic ; le
|
|
30
|
+
* contributeur apparaît alors au diagnostic (et le noyau sait qu'un état
|
|
31
|
+
* externe est en cours), mais `/readyz` continue de répondre 200.
|
|
32
|
+
* @returns `true` si le verdict AGRÉGÉ a basculé (retenu ⇄ disponible)
|
|
33
|
+
*/
|
|
34
|
+
set(name, ready, reason, blocking = true) {
|
|
35
|
+
const wasBlocked = this.notReady > 0;
|
|
36
|
+
const entry = this.entries[name];
|
|
37
|
+
const weighs = (e) => !e.ready && e.blocking;
|
|
38
|
+
if (entry === void 0) {
|
|
39
|
+
const neuf = {
|
|
40
|
+
ready,
|
|
41
|
+
reason: ready ? void 0 : reason,
|
|
42
|
+
blocking
|
|
43
|
+
};
|
|
44
|
+
this.entries[name] = neuf;
|
|
45
|
+
this.tracked += 1;
|
|
46
|
+
if (weighs(neuf)) this.notReady += 1;
|
|
47
|
+
} else {
|
|
48
|
+
const weighedBefore = weighs(entry);
|
|
49
|
+
entry.ready = ready;
|
|
50
|
+
entry.blocking = blocking;
|
|
51
|
+
entry.reason = ready ? void 0 : reason;
|
|
52
|
+
const weighsNow = weighs(entry);
|
|
53
|
+
if (weighedBefore !== weighsNow) this.notReady += weighsNow ? 1 : -1;
|
|
54
|
+
}
|
|
55
|
+
return wasBlocked !== this.notReady > 0;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Retire un contributeur — sa voix ne compte plus, ni pour retenir ni pour
|
|
59
|
+
* libérer. C'est le geste d'un module qui s'arrête.
|
|
60
|
+
*
|
|
61
|
+
* @param name - nom du contributeur
|
|
62
|
+
* @returns `true` si le verdict AGRÉGÉ a basculé (retenu ⇄ disponible)
|
|
63
|
+
*/
|
|
64
|
+
clear(name) {
|
|
65
|
+
const entry = this.entries[name];
|
|
66
|
+
if (entry === void 0) return false;
|
|
67
|
+
const wasBlocked = this.notReady > 0;
|
|
68
|
+
if (!entry.ready && entry.blocking) this.notReady -= 1;
|
|
69
|
+
delete this.entries[name];
|
|
70
|
+
this.tracked -= 1;
|
|
71
|
+
return wasBlocked !== this.notReady > 0;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Restitue les contributeurs pour un diagnostic (journal, `status`, console
|
|
75
|
+
* d'administration) — hors du chemin de la sonde, qui ne lit que
|
|
76
|
+
* {@link ReadinessRegistry.blocked}.
|
|
77
|
+
*
|
|
78
|
+
* @returns un contributeur par entrée, triés par nom (ordre stable)
|
|
79
|
+
*/
|
|
80
|
+
report() {
|
|
81
|
+
const out = [];
|
|
82
|
+
for (const name of Object.keys(this.entries).sort()) {
|
|
83
|
+
const entry = this.entries[name];
|
|
84
|
+
const base = {
|
|
85
|
+
name,
|
|
86
|
+
ready: entry.ready
|
|
87
|
+
};
|
|
88
|
+
out.push({
|
|
89
|
+
...base,
|
|
90
|
+
...entry.reason === void 0 ? {} : { reason: entry.reason },
|
|
91
|
+
...entry.blocking ? {} : { blocking: false }
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
return out;
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
//#endregion
|
|
98
|
+
export { ReadinessRegistry };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { pathToFileURL } from "node:url";
|
|
4
|
+
//#region src/kernel/resolveModuleEntry.ts
|
|
5
|
+
/**
|
|
6
|
+
* Rend un chemin importable par `import()`, et laisse tout le reste intact.
|
|
7
|
+
*
|
|
8
|
+
* POURQUOI : le spécificateur d'un `import()` dynamique est une **URL**, pas un chemin.
|
|
9
|
+
* Sous POSIX la confusion est sans conséquence — `/a/b/c.js` n'est l'URL de rien, alors
|
|
10
|
+
* Node le traite en chemin. Sous Windows elle est fatale : dans `D:\app\index.js`, `d:`
|
|
11
|
+
* EST un schéma d'URL syntaxiquement valide, et Node refuse net —
|
|
12
|
+
* `ERR_UNSUPPORTED_ESM_URL_SCHEME: Received protocol 'd:'`. Le chargement des modules
|
|
13
|
+
* échouait donc à chaque démarrage, ce qui ne se voyait pas : le code compile, il ne
|
|
14
|
+
* s'exécute simplement jamais.
|
|
15
|
+
*
|
|
16
|
+
* Ce que la fonction NE touche pas : un nom de paquet (`@nodefony/http`), un chemin
|
|
17
|
+
* relatif, une URL déjà formée (`file:`, `data:`, `node:`) — aucun n'est absolu au sens
|
|
18
|
+
* de `path`, tous sont rendus tels quels. Le test d'absoluité vient donc AVANT toute
|
|
19
|
+
* lecture de schéma : l'inverse reprendrait `d:` pour un protocole, ce qui est
|
|
20
|
+
* précisément le défaut qu'on ferme.
|
|
21
|
+
*
|
|
22
|
+
* @param spec - chemin de fichier, nom de paquet ou URL.
|
|
23
|
+
* @returns une URL `file://` si `spec` est un chemin absolu, `spec` inchangé sinon.
|
|
24
|
+
*/
|
|
25
|
+
function toImportSpecifier(spec) {
|
|
26
|
+
return path.isAbsolute(spec) ? pathToFileURL(spec).href : spec;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Résout le point d'entrée d'un module Nodefony **depuis l'application**, et non
|
|
30
|
+
* depuis le paquet `nodefony`.
|
|
31
|
+
*
|
|
32
|
+
* POURQUOI cette fonction existe : un `import("@app/blog")` écrit dans le code du
|
|
33
|
+
* core est résolu par Node relativement au FICHIER qui l'écrit. Dès que le paquet
|
|
34
|
+
* `nodefony` n'habite pas l'arbre `node_modules` de l'app — mode `--link` (symlink
|
|
35
|
+
* vers un checkout), monorepo, pnpm, hoisting — les modules LOCAUX de l'app
|
|
36
|
+
* (`modules/*`, workspaces npm) deviennent introuvables (« Cannot find package »),
|
|
37
|
+
* alors qu'ils sont parfaitement résolvables depuis l'app. Le repo self-hosted
|
|
38
|
+
* masquait le défaut par accident de topologie : tout y vit sous le même
|
|
39
|
+
* `node_modules`.
|
|
40
|
+
*
|
|
41
|
+
* La règle est donc : **c'est l'app qui décide où sont ses modules**. On résout à
|
|
42
|
+
* partir de son `package.json`, et on rend une URL `file://` absolue, directement
|
|
43
|
+
* importable.
|
|
44
|
+
*
|
|
45
|
+
* @param appRoot - racine de l'application (`kernel.path`).
|
|
46
|
+
* @param moduleName - nom du paquet, tel qu'écrit dans le manifeste `modules`.
|
|
47
|
+
* @returns URL `file://` absolue du point d'entrée, ou le spécificateur NU si la
|
|
48
|
+
* résolution depuis l'app échoue (paquet absent, ou n'exposant que la condition
|
|
49
|
+
* `import` — un cas où `require.resolve` refuse). Le repli rend le comportement
|
|
50
|
+
* historique : c'est alors `import()` qui produira l'erreur, avec son message.
|
|
51
|
+
*/
|
|
52
|
+
function resolveModuleEntry(appRoot, moduleName) {
|
|
53
|
+
try {
|
|
54
|
+
const require = createRequire(path.join(appRoot, "package.json"));
|
|
55
|
+
return pathToFileURL(require.resolve(moduleName)).href;
|
|
56
|
+
} catch {
|
|
57
|
+
return moduleName;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//#endregion
|
|
61
|
+
export { resolveModuleEntry, toImportSpecifier };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ADMIN_DEFAULT_ROLE } from "../kernel/adminPlane/adminRbac.js";
|
|
2
|
+
import { rolesFromScopes } from "../kernel/adminPlane/adminCaller.js";
|
|
3
|
+
//#region src/mcp/caller.ts
|
|
4
|
+
/**
|
|
5
|
+
* Quels rôles porte l'appelant d'une porte MCP — **la règle, à un seul endroit**.
|
|
6
|
+
*
|
|
7
|
+
* ⭐ Toute porte MCP passe par ici, y compris celles qu'un module créera plus
|
|
8
|
+
* tard (gestion d'agents, passerelles métier). C'est délibéré : la question
|
|
9
|
+
* « que vaut un appelant sur ma porte » a exactement une bonne réponse, et
|
|
10
|
+
* laisser chaque porte la réécrire garantit qu'une copie finira plus permissive
|
|
11
|
+
* que les autres sans que rien ne le signale — c'est déjà ce qui s'est produit
|
|
12
|
+
* quand la lecture d'administration fabriquait un administrateur.
|
|
13
|
+
*
|
|
14
|
+
* Les trois postures :
|
|
15
|
+
*
|
|
16
|
+
* | La porte | L'appelant | Ce qu'il porte |
|
|
17
|
+
* | --- | --- | --- |
|
|
18
|
+
* | non protégée | quiconque l'atteint | `operatorRoles` — sa protection est son PÉRIMÈTRE |
|
|
19
|
+
* | protégée | jeton vérifié | ce que ses SCOPES ouvrent, rien de plus |
|
|
20
|
+
* | protégée | anonyme toléré | **rien** — la déclaration d'autorisation serait vidée de son sens |
|
|
21
|
+
*
|
|
22
|
+
* Le premier cas n'est pas du laxisme : une porte sans serveur d'autorisation
|
|
23
|
+
* est bornée par son module (`policy: "dev"`) et par ses gardes de transport,
|
|
24
|
+
* et qui l'atteint lit déjà les sources de l'application. Lui refuser la
|
|
25
|
+
* lecture n'ajouterait aucune barrière et rendrait l'outillage inutile. Ce qui
|
|
26
|
+
* compte, c'est que ce soit un CHOIX écrit — pas un administrateur fabriqué au
|
|
27
|
+
* fond d'une fonction de lecture.
|
|
28
|
+
*
|
|
29
|
+
* @param posture - ce que la porte sait d'elle-même et de cet appel.
|
|
30
|
+
* @param operatorRoles - ce qu'accorde une porte NON protégée. Une porte qui
|
|
31
|
+
* veut être plus stricte passe une liste plus courte, voire vide ; elle n'a
|
|
32
|
+
* pas à réécrire la règle pour autant.
|
|
33
|
+
* @returns les rôles à poser sur `IMcpCaller.roles`.
|
|
34
|
+
*/
|
|
35
|
+
function mcpCallerRoles(posture, operatorRoles = [ADMIN_DEFAULT_ROLE]) {
|
|
36
|
+
if (!posture.protected) return operatorRoles;
|
|
37
|
+
return posture.authenticated ? rolesFromScopes(posture.scopes) : [];
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
export { mcpCallerRoles };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
//#region src/mcp/guard.ts
|
|
2
|
+
/**
|
|
3
|
+
* Une adresse est-elle celle de la machine locale ?
|
|
4
|
+
*
|
|
5
|
+
* Couvre les trois formes que Node rend selon la pile réseau : IPv4
|
|
6
|
+
* (`127.x.x.x`), IPv6 (`::1`), et l'IPv4 encapsulée en IPv6
|
|
7
|
+
* (`::ffff:127.0.0.1`) — la plus fréquente sur un serveur à double pile, et
|
|
8
|
+
* celle qu'une comparaison naïve à `"127.0.0.1"` rate.
|
|
9
|
+
*
|
|
10
|
+
* @param address - `socket.remoteAddress`, éventuellement absent
|
|
11
|
+
* @returns `true` si l'appel vient de cette machine
|
|
12
|
+
*/
|
|
13
|
+
function isLocalAddress(address) {
|
|
14
|
+
if (!address) return false;
|
|
15
|
+
const bare = address.startsWith("::ffff:") ? address.slice(7) : address;
|
|
16
|
+
if (bare === "::1" || bare === "localhost") return true;
|
|
17
|
+
return /^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(bare);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Décide si un appel MCP peut être servi.
|
|
21
|
+
*
|
|
22
|
+
* ⭐ **La règle sur `Origin` est contre-intuitive, et c'est elle qui protège.**
|
|
23
|
+
* Un client MCP légitime est un *process* (Cursor, Claude Code, un agent tiers)
|
|
24
|
+
* : il n'envoie **aucun** `Origin`, cet en-tête étant posé par les navigateurs.
|
|
25
|
+
* Une page web malveillante, elle, en pose **toujours** un lorsqu'elle vise
|
|
26
|
+
* `https://localhost:5152`. Donc : *absent* → on passe ; *présent et hors
|
|
27
|
+
* allowlist* → `403`. C'est ce qui referme le DNS rebinding, le seul vecteur
|
|
28
|
+
* réel contre un serveur MCP local.
|
|
29
|
+
*
|
|
30
|
+
* L'ordre des contrôles est délibéré : la localité d'abord, parce qu'un appel
|
|
31
|
+
* distant ne doit même pas apprendre quelles origines sont admises.
|
|
32
|
+
*
|
|
33
|
+
* @param input - ce que la requête présente
|
|
34
|
+
* @param policy - les réglages du module
|
|
35
|
+
* @returns le verdict, avec le motif quand il refuse
|
|
36
|
+
*/
|
|
37
|
+
function checkMcpAccess(input, policy) {
|
|
38
|
+
if (!policy.allowRemote && !isLocalAddress(input.remoteAddress)) return {
|
|
39
|
+
allowed: false,
|
|
40
|
+
why: `adresse non locale (${input.remoteAddress ?? "inconnue"}) — voir l'option \`allowRemote\` du serveur MCP`
|
|
41
|
+
};
|
|
42
|
+
if (input.origin !== void 0 && input.origin !== "") {
|
|
43
|
+
if (!policy.allowedOrigins.includes(input.origin)) return {
|
|
44
|
+
allowed: false,
|
|
45
|
+
why: `origine « ${input.origin} » non admise — voir l'option \`allowedOrigins\` du serveur MCP`
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
return { allowed: true };
|
|
49
|
+
}
|
|
50
|
+
//#endregion
|
|
51
|
+
export { checkMcpAccess, isLocalAddress };
|