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,91 @@
|
|
|
1
|
+
# CI de <%= it.appName %> — générée par `nodefony create app`.
|
|
2
|
+
#
|
|
3
|
+
# C'est ICI que vit le filet complet, pas dans des hooks git : `verify`
|
|
4
|
+
# enchaîne typecheck, lint, tests et `nodefony doctor`, puis la suite e2e
|
|
5
|
+
# démarre l'application POUR DE VRAI (--detach --wait) et l'interroge en HTTP.
|
|
6
|
+
# Un hook local est un doublon contournable (--no-verify) ; la forge, non.
|
|
7
|
+
name: CI
|
|
8
|
+
|
|
9
|
+
on:
|
|
10
|
+
push:
|
|
11
|
+
pull_request:
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
verify:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
<% if (it.db) { %> # La base retenue à la création (`NF_DATABASE_URL` du `.env` la joint sur
|
|
17
|
+
# 127.0.0.1) — même image que le compose : les deux viennent du MÊME
|
|
18
|
+
# catalogue du générateur, elles ne peuvent pas diverger.
|
|
19
|
+
services:
|
|
20
|
+
<%= it.db.service %>:
|
|
21
|
+
image: <%= it.db.image %>
|
|
22
|
+
ports:
|
|
23
|
+
- "127.0.0.1:<%= it.db.port %>:<%= it.db.port %>"
|
|
24
|
+
<% if (it.db.choice === "postgres") { %> env:
|
|
25
|
+
POSTGRES_USER: <%= it.appName %>
|
|
26
|
+
POSTGRES_PASSWORD: <%= it.appName %>-dev
|
|
27
|
+
POSTGRES_DB: <%= it.appName %>
|
|
28
|
+
options: >-
|
|
29
|
+
--health-cmd "pg_isready -U <%= it.appName %> -d <%= it.appName %>"
|
|
30
|
+
--health-interval 5s
|
|
31
|
+
--health-timeout 3s
|
|
32
|
+
--health-retries 10
|
|
33
|
+
<% } %><% if (it.db.choice === "mariadb") { %> env:
|
|
34
|
+
MARIADB_ROOT_PASSWORD: <%= it.appName %>-dev
|
|
35
|
+
MARIADB_USER: <%= it.appName %>
|
|
36
|
+
MARIADB_PASSWORD: <%= it.appName %>-dev
|
|
37
|
+
MARIADB_DATABASE: <%= it.appName %>
|
|
38
|
+
options: >-
|
|
39
|
+
--health-cmd "healthcheck.sh --connect --innodb_initialized"
|
|
40
|
+
--health-interval 5s
|
|
41
|
+
--health-timeout 3s
|
|
42
|
+
--health-retries 10
|
|
43
|
+
<% } %><% if (it.db.choice === "mysql") { %> env:
|
|
44
|
+
MYSQL_ROOT_PASSWORD: <%= it.appName %>-dev
|
|
45
|
+
MYSQL_USER: <%= it.appName %>
|
|
46
|
+
MYSQL_PASSWORD: <%= it.appName %>-dev
|
|
47
|
+
MYSQL_DATABASE: <%= it.appName %>
|
|
48
|
+
options: >-
|
|
49
|
+
--health-cmd "mysqladmin ping -h 127.0.0.1 -u<%= it.appName %> -p<%= it.appName %>-dev --silent"
|
|
50
|
+
--health-interval 5s
|
|
51
|
+
--health-timeout 3s
|
|
52
|
+
--health-retries 10
|
|
53
|
+
<% } %><% } %> steps:
|
|
54
|
+
- uses: actions/checkout@v7
|
|
55
|
+
|
|
56
|
+
- uses: actions/setup-node@v7
|
|
57
|
+
with:
|
|
58
|
+
# Le plancher des `engines` du framework — la forge éprouve la
|
|
59
|
+
# version la plus ANCIENNE qu'on prétend servir.
|
|
60
|
+
node-version: 24
|
|
61
|
+
cache: npm
|
|
62
|
+
|
|
63
|
+
- run: npm ci
|
|
64
|
+
<% if (it.db) { %>
|
|
65
|
+
# Les deux bases que la suite e2e exige — le service n'en crée qu'une.
|
|
66
|
+
# `CREATE DATABASE` est un privilège d'administration : c'est le décor qui
|
|
67
|
+
# les fournit, jamais la suite (elle n'aurait pas le droit, et ne doit pas
|
|
68
|
+
# l'avoir). Même raison et mêmes noms que `docker/db/init-nodefony-e2e.sql`
|
|
69
|
+
# côté compose. `shell:` est déclaré : sans lui, la forge prend celui de la
|
|
70
|
+
# plateforme.
|
|
71
|
+
- name: bases de la suite e2e
|
|
72
|
+
shell: bash
|
|
73
|
+
run: |
|
|
74
|
+
<% if (it.db.choice === "postgres") { %> export PGPASSWORD='<%= it.appName %>-dev'
|
|
75
|
+
for base in <%= it.db.databaseE2e %> <%= it.db.databaseScratch %>; do
|
|
76
|
+
psql -h 127.0.0.1 -p <%= it.db.port %> -U <%= it.appName %> -d <%= it.appName %> \
|
|
77
|
+
-c "CREATE DATABASE \"$base\""
|
|
78
|
+
done
|
|
79
|
+
<% } else { %> mysql -h 127.0.0.1 -P <%= it.db.port %> -uroot -p'<%= it.appName %>-dev' <<'SQL'
|
|
80
|
+
CREATE DATABASE IF NOT EXISTS `<%= it.db.databaseE2e %>`;
|
|
81
|
+
CREATE DATABASE IF NOT EXISTS `<%= it.db.databaseScratch %>`;
|
|
82
|
+
GRANT ALL PRIVILEGES ON `<%= it.db.databaseE2e %>`.* TO '<%= it.appName %>'@'%';
|
|
83
|
+
GRANT ALL PRIVILEGES ON `<%= it.db.databaseScratch %>`.* TO '<%= it.appName %>'@'%';
|
|
84
|
+
FLUSH PRIVILEGES;
|
|
85
|
+
SQL
|
|
86
|
+
<% } %><% } %>
|
|
87
|
+
# typecheck + lint + tests + `nodefony doctor` — l'ordre du script.
|
|
88
|
+
- run: npm run verify
|
|
89
|
+
|
|
90
|
+
# L'application DÉMARRE et répond en HTTP : la seule preuve qui compte.
|
|
91
|
+
- run: npm run test:e2e
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
node_modules/
|
|
2
|
+
dist/
|
|
3
|
+
var/
|
|
4
|
+
public/dist/
|
|
5
|
+
*.log
|
|
6
|
+
|
|
7
|
+
# vitest ≥ 5 : racine unique de ses artefacts (pièces jointes, blobs, rapports
|
|
8
|
+
# json/junit/html). Elle apparaît dès le premier `npm test` — sans cette ligne,
|
|
9
|
+
# une application fraîche naît avec un dossier non suivi que rien n'explique.
|
|
10
|
+
.vitest/
|
|
11
|
+
|
|
12
|
+
# Artefacts jetables — captures d'écran, journaux de console et arbres produits
|
|
13
|
+
# par le navigateur du compose (`--profile browser`). Ce sont des PHOTOS d'un
|
|
14
|
+
# instant : elles se refont, elles ne se versionnent pas.
|
|
15
|
+
tmp/
|
|
16
|
+
|
|
17
|
+
# Fichiers d'environnement — convention B (Vite/Next), celle du framework :
|
|
18
|
+
# COMMITÉS (défauts NON-secrets) : .env, .env.<env>, .env.example
|
|
19
|
+
# GITIGNORÉS (secrets / machine) : *.local → .env.local, .env.<env>.local
|
|
20
|
+
# Les clés de chiffrement générées à la création de l'app vivent dans
|
|
21
|
+
# .env.local — ne JAMAIS les committer (rotation : nodefony security:secrets).
|
|
22
|
+
*.local
|
|
23
|
+
|
|
24
|
+
# Clés PRIVÉES. Le certificat public (`cert.pem`, `fullchain.pem`) peut se
|
|
25
|
+
# committer ; la clé qui va avec, jamais — un dépôt public la publie
|
|
26
|
+
# définitivement, et la retirer d'un commit ne la retire d'aucun clone.
|
|
27
|
+
# Régénérer : `npx nodefony http:certificates`.
|
|
28
|
+
*.key
|
|
29
|
+
privkey*.pem
|
|
30
|
+
*-key.pem
|
|
31
|
+
|
|
32
|
+
# Secrets posés chez les agents de développement (nodefony security:token --write).
|
|
33
|
+
# 🔴 `.gemini/.env` porte un JETON PORTEUR : la déclaration de la porte MCP,
|
|
34
|
+
# elle, reste versionnable (.gemini/settings.json, .mcp.json) — c'est la CLÉ qui
|
|
35
|
+
# ne se commite pas. Un jeton commité est un jeton publié.
|
|
36
|
+
.gemini/.env
|
|
37
|
+
.gemini/.env.*
|
|
38
|
+
|
|
39
|
+
# Agents de développement : leur dossier est le home REDIRIGÉ que `ai:mcp` leur
|
|
40
|
+
# donne pour que la porte MCP soit déclarée par PROJET (son URL porte un port —
|
|
41
|
+
# une déclaration globale ne pourrait désigner qu'une application). Ils y
|
|
42
|
+
# déposent aussi leurs fichiers de travail : seule la DÉCLARATION se versionne.
|
|
43
|
+
.vibe/*
|
|
44
|
+
!.vibe/config.toml
|
|
45
|
+
.codex/*
|
|
46
|
+
!.codex/config.toml
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# CI de <%= it.appName %> — générée par `nodefony create app` (GitLab).
|
|
2
|
+
#
|
|
3
|
+
# Même filet que le workflow GitHub, même doctrine : `verify` (typecheck +
|
|
4
|
+
# lint + tests + `nodefony doctor`) puis la suite e2e qui démarre l'application
|
|
5
|
+
# POUR DE VRAI et l'interroge en HTTP. Le fichier est inerte hors GitLab —
|
|
6
|
+
# les deux forges sont servies, le dépôt choisit en poussant.
|
|
7
|
+
|
|
8
|
+
verify:
|
|
9
|
+
image: node:24
|
|
10
|
+
cache:
|
|
11
|
+
key:
|
|
12
|
+
files:
|
|
13
|
+
- package-lock.json
|
|
14
|
+
paths:
|
|
15
|
+
- .npm/
|
|
16
|
+
<% if (it.db) { %> # La base retenue à la création — même image que le compose (même
|
|
17
|
+
# catalogue du générateur). ⚠️ Sur GitLab, un service se joint par son
|
|
18
|
+
# ALIAS, jamais par l'adresse locale du `.env` (il tourne dans un autre
|
|
19
|
+
# conteneur) : la variable ci-dessous PRIME sur le `.env` — le shell gagne
|
|
20
|
+
# toujours dans la cascade d'environnement de Nodefony.
|
|
21
|
+
services:
|
|
22
|
+
- name: <%= it.db.image %>
|
|
23
|
+
alias: <%= it.db.service %>
|
|
24
|
+
variables:
|
|
25
|
+
NF_DATABASE_URL: "<%= it.db.scheme %>://<%= it.appName %>:<%= it.appName %>-dev@<%= it.db.service %>:<%= it.db.port %>/<%= it.appName %>"
|
|
26
|
+
<% if (it.db.choice === "postgres") { %> POSTGRES_USER: <%= it.appName %>
|
|
27
|
+
POSTGRES_PASSWORD: <%= it.appName %>-dev
|
|
28
|
+
POSTGRES_DB: <%= it.appName %>
|
|
29
|
+
<% } %><% if (it.db.choice === "mariadb") { %> MARIADB_ROOT_PASSWORD: <%= it.appName %>-dev
|
|
30
|
+
MARIADB_USER: <%= it.appName %>
|
|
31
|
+
MARIADB_PASSWORD: <%= it.appName %>-dev
|
|
32
|
+
MARIADB_DATABASE: <%= it.appName %>
|
|
33
|
+
<% } %><% if (it.db.choice === "mysql") { %> MYSQL_ROOT_PASSWORD: <%= it.appName %>-dev
|
|
34
|
+
MYSQL_USER: <%= it.appName %>
|
|
35
|
+
MYSQL_PASSWORD: <%= it.appName %>-dev
|
|
36
|
+
MYSQL_DATABASE: <%= it.appName %>
|
|
37
|
+
<% } %><% } %> script:
|
|
38
|
+
- npm ci --cache .npm --prefer-offline
|
|
39
|
+
# typecheck + lint + tests + `nodefony doctor` — l'ordre du script.
|
|
40
|
+
- npm run verify
|
|
41
|
+
# L'application DÉMARRE et répond en HTTP : la seule preuve qui compte.
|
|
42
|
+
- npm run test:e2e
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Module<% if (it.complete) { %>, services<% } %> } from "nodefony";
|
|
2
|
+
import type { Kernel } from "nodefony";
|
|
3
|
+
import { controllers } from "@nodefony/framework";
|
|
4
|
+
<% if (it.complete) { %>import AppInfoService from "./nodefony/service/AppInfoService";
|
|
5
|
+
import AppBannerService from "./nodefony/service/AppBannerService";
|
|
6
|
+
<% } %>
|
|
7
|
+
<% if (it.front) { %>import { register<%= it.pascal %>Entry } from "./nodefony/frontend/register<%= it.pascal %>Entry";
|
|
8
|
+
<% } %>import config from "./nodefony.config";
|
|
9
|
+
import HelloController from "./nodefony/controllers/HelloController";
|
|
10
|
+
<% if (it.complete) { %>import LiveController from "./nodefony/controllers/LiveController";
|
|
11
|
+
<% } %><% if (it.front) { %>import AppController from "./nodefony/controllers/AppController";
|
|
12
|
+
<% } else { %>import HomeController from "./nodefony/controllers/HomeController";
|
|
13
|
+
<% } %><% if (it.complete) { %>import { entities } from "@nodefony/orm-core";
|
|
14
|
+
import { UserEntity } from "./nodefony/entity/User";
|
|
15
|
+
import { provisionUsers } from "./nodefony/security/provisionUsers";
|
|
16
|
+
<% } %>
|
|
17
|
+
/**
|
|
18
|
+
* Catalogue d'env typé, lu par le Kernel au boot pour alimenter `ctx.env`
|
|
19
|
+
* du descripteur `defineConfig`.
|
|
20
|
+
*/
|
|
21
|
+
export { env } from "./env";
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Point d'entrée de l'application (chargé par le Kernel : `dist/index.js`).
|
|
25
|
+
* L'app ne déclare ici que ce qui lui est INTRINSÈQUE : ses controllers et ses
|
|
26
|
+
* services. Les modules chargés vivent dans `nodefony.config.ts` (manifeste
|
|
27
|
+
* `modules`).
|
|
28
|
+
*
|
|
29
|
+
<% if (it.complete) { %> *
|
|
30
|
+
* ⚠️ `@services([…])` est ce qui fait EXISTER un service : écrire une classe
|
|
31
|
+
* `@injectable()` sans l'ajouter ici la laisse invisible au conteneur. Tout
|
|
32
|
+
* service que tu ajoutes — le tien, ou celui que `nodefony create service`
|
|
33
|
+
* génère — se déclare dans cette liste.
|
|
34
|
+
<% } %> */
|
|
35
|
+
<% if (it.complete) { %>@entities([UserEntity])
|
|
36
|
+
@services([AppInfoService, AppBannerService])
|
|
37
|
+
<% } %>@controllers([HelloController<% if (it.complete) { %>, LiveController<% } %><% if (it.front) { %>, AppController<% } else { %>, HomeController<% } %>])
|
|
38
|
+
class App extends Module {
|
|
39
|
+
constructor(kernel: Kernel) {
|
|
40
|
+
super("app", kernel, import.meta.url, config);
|
|
41
|
+
}
|
|
42
|
+
<% if (it.complete) { %>
|
|
43
|
+
/**
|
|
44
|
+
* Pose l'annuaire utilisateurs de l'app + seed le compte admin (idempotent).
|
|
45
|
+
* L'identité est la responsabilité de l'APPLICATION — le firewall
|
|
46
|
+
* (@nodefony/security) authentifie, mais c'est ici qu'on décide QUI sont les
|
|
47
|
+
* utilisateurs et OÙ ils vivent. Détails : nodefony/security/provisionUsers.ts
|
|
48
|
+
*/
|
|
49
|
+
override async onKernelReady(): Promise<this> {
|
|
50
|
+
await provisionUsers(this);
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
<% } %><% if (it.front) { %>
|
|
54
|
+
/**
|
|
55
|
+
* Déclare l'entry frontend <%= it.frontend %> auprès du FrontendService —
|
|
56
|
+
* AVANT `onKernelReady` pour que le superviseur Vite démarre avec elle.
|
|
57
|
+
* En dev : HMR ; en prod : build pré-compilé servi en statics.
|
|
58
|
+
*
|
|
59
|
+
* Le DÉTAIL de l'entry (type, racine Vite, proxy d'API) vit dans
|
|
60
|
+
* `nodefony/frontend/register<%= it.pascal %>Entry.ts` — même fichier, même
|
|
61
|
+
* forme que pour un module créé par `nodefony create front`.
|
|
62
|
+
*/
|
|
63
|
+
override async onKernelBoot(): Promise<this> {
|
|
64
|
+
register<%= it.pascal %>Entry(this);
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
<% } %>}
|
|
68
|
+
|
|
69
|
+
export default App;
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
import { defineConfig, use } from "nodefony";
|
|
2
|
+
import type { env } from "./env";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Configuration de l'application — UN fichier, seulement les ÉCARTS aux
|
|
6
|
+
* défauts du framework (deep-merge au boot). Le par-environnement passe par
|
|
7
|
+
* `ctx` (isProd/isDev/env typé), jamais par un fichier parallèle.
|
|
8
|
+
*
|
|
9
|
+
* Voir la config RÉSOLUE, valeur ET provenance : `npx nodefony inspect config`,
|
|
10
|
+
* ou la console Studio. Guide complet : `docs/guides/configuration.md`.
|
|
11
|
+
*/
|
|
12
|
+
export default defineConfig<typeof env>((ctx) => ({
|
|
13
|
+
/**
|
|
14
|
+
* Interface d'écoute. En container, écouter TOUTES les interfaces : le port
|
|
15
|
+
* mapping Docker/k8s n'atteint jamais un bind sur 127.0.0.1.
|
|
16
|
+
*/
|
|
17
|
+
domain: ctx.isProd ? "0.0.0.0" : "127.0.0.1",
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Écoute HTTP et HTTPS. Rien ici ⇒ défauts du framework (5151, et 5152 en
|
|
21
|
+
* HTTP/2) ; un port est une propriété du DÉPLOIEMENT et se déclare par
|
|
22
|
+
* l'environnement — cf `.env`.
|
|
23
|
+
*
|
|
24
|
+
* HTTPS est actif même en dev parce que les API navigateur modernes exigent
|
|
25
|
+
* un contexte sécurisé (WebRTC/getUserMedia, presse-papiers, service workers,
|
|
26
|
+
* notifications). Le certificat de développement est généré au premier boot —
|
|
27
|
+
* via **mkcert** s'il est installé (autorité locale de confiance, zéro
|
|
28
|
+
* avertissement navigateur), sinon auto-signé.
|
|
29
|
+
*
|
|
30
|
+
* - Ne garder qu'un port, en clair (TLS terminé à l'ingress) : `https: false`.
|
|
31
|
+
* - Inspecter ou regénérer le certificat : `npx nodefony http:certificates`.
|
|
32
|
+
*/
|
|
33
|
+
servers: {
|
|
34
|
+
...((ctx.env.NF_PORT ?? ctx.env.PORT)
|
|
35
|
+
? { http: { port: ctx.env.NF_PORT ?? ctx.env.PORT } }
|
|
36
|
+
: {}),
|
|
37
|
+
...(ctx.env.NF_PORT_HTTPS
|
|
38
|
+
? { https: { port: ctx.env.NF_PORT_HTTPS } }
|
|
39
|
+
: {}),
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
log: {
|
|
43
|
+
debug: ctx.isProd ? [] : "*",
|
|
44
|
+
/** stdout = contrat cloud-native (collecteur de logs de l'orchestrateur). */
|
|
45
|
+
driver: ctx.env.NF_LOG_DRIVER,
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Manifeste ORDONNÉ des modules — l'ordre du tableau = l'ordre de chargement.
|
|
50
|
+
* La `policy` d'une entrée FILTRE, elle ne réordonne jamais :
|
|
51
|
+
*
|
|
52
|
+
* - `"mandatory"` → socle de l'app : toujours chargé, non filtrable
|
|
53
|
+
* (déclare l'intention « sans lui, cette app n'a pas de sens ») ;
|
|
54
|
+
* - `"optional"` → défaut : chargé, sauf si sa GARDE `when` dit non ;
|
|
55
|
+
* - `"dev"` → chargé UNIQUEMENT hors production : outillage, démo, consoles
|
|
56
|
+
* (0 coût prod — un module non listé n'est même pas importé).
|
|
57
|
+
*
|
|
58
|
+
* La garde `when` rend un booléen : `false` ⇒ le module n'est pas chargé du
|
|
59
|
+
* tout. Elle reçoit la config résolue — `when: (config) => …` — mais peut
|
|
60
|
+
* l'ignorer et fermer sur `ctx`, ce que fait redis plus bas
|
|
61
|
+
* (`when: () => !!ctx.infra.cache`) : la question qu'il pose porte sur
|
|
62
|
+
* l'ENVIRONNEMENT (une URL Redis est-elle déclarée ?), pas sur sa propre
|
|
63
|
+
* configuration. Décider d'après `config` sert quand la réponse dépend d'une
|
|
64
|
+
* clé du module lui-même.
|
|
65
|
+
*/
|
|
66
|
+
modules: [
|
|
67
|
+
<% if (it.complete) { %> /**
|
|
68
|
+
* ORM Drizzle (SQL). Sans `NF_DATABASE_URL` : sqlite LOCAL, et l'app
|
|
69
|
+
* persiste out-of-the-box (users, sessions, jetons). Déclare
|
|
70
|
+
* `NF_DATABASE_URL` (postgres://…) pour pointer une vraie base.
|
|
71
|
+
*/
|
|
72
|
+
"@nodefony/drizzle",
|
|
73
|
+
|
|
74
|
+
<% } %> /** Socle serveur : HTTP/WS natifs + probes /livez /readyz. */
|
|
75
|
+
use("@nodefony/http", {}),
|
|
76
|
+
|
|
77
|
+
/** Router + controllers + décorateurs (`@controller`, `@route`). */
|
|
78
|
+
"@nodefony/framework",
|
|
79
|
+
<% if (it.complete) { %>
|
|
80
|
+
/**
|
|
81
|
+
* Socket Nodefony (canaux duplex multiplexés). Backplane `cluster` = IPC
|
|
82
|
+
* intra-pod, 0 dépendance externe ; `redis` = opt-in cross-pod.
|
|
83
|
+
*/
|
|
84
|
+
use("@nodefony/realtime", { backplane: { driver: "cluster" } }),
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Firewall applicatif + audit — chaque requête passe le pipeline sécurité.
|
|
88
|
+
* Les zones sont validées Zod au boot (config invalide = fail-closed).
|
|
89
|
+
*/
|
|
90
|
+
use("@nodefony/security", {
|
|
91
|
+
/**
|
|
92
|
+
* Jetons signés par CETTE application — le décor de DÉVELOPPEMENT.
|
|
93
|
+
*
|
|
94
|
+
* 🔴 Deux réglages sans lesquels `nodefony security:token` produit un
|
|
95
|
+
* jeton inutilisable, chacun pour une raison différente :
|
|
96
|
+
*
|
|
97
|
+
* - **`audiences`** est une liste BLANCHE de ressources qu'un client peut
|
|
98
|
+
* NOMMER (`resource`, RFC 8707). L'URI de la porte MCP doit y figurer,
|
|
99
|
+
* sinon l'émetteur REFUSE de l'inscrire (`invalid_target`) — et l'on se
|
|
100
|
+
* retrouve avec une porte que rien ne sait ouvrir. Les deux adresses
|
|
101
|
+
* sont là parce que la porte répond en clair ET en TLS : un jeton
|
|
102
|
+
* demandé pour l'une était refusé sur l'autre, la liaison d'audience
|
|
103
|
+
* faisant, à juste titre, son travail. Ces valeurs s'ÉCRIVENT, jamais
|
|
104
|
+
* ne se dérivent du `Host` — un en-tête forgé obtiendrait sinon un
|
|
105
|
+
* jeton d'audience arbitraire. En production : l'URL publique en https.
|
|
106
|
+
*
|
|
107
|
+
* - **`keystore.dir`** rend la clé de signature PERSISTANTE. Sans lui,
|
|
108
|
+
* chaque process génère la sienne au démarrage : un jeton émis par la
|
|
109
|
+
* CLI porte un `kid` que le serveur en marche ne connaît pas, et il est
|
|
110
|
+
* refusé en « autorisation requise » — sans que rien ne dise pourquoi.
|
|
111
|
+
* En production, la clé vient de l'environnement (`keySetJson`), le
|
|
112
|
+
* système de fichiers d'un pod étant éphémère.
|
|
113
|
+
*/
|
|
114
|
+
jwt: {
|
|
115
|
+
issuer: ctx.isProd
|
|
116
|
+
? undefined
|
|
117
|
+
: `https://localhost:${ctx.env.NF_PORT_HTTPS ?? 5152}`,
|
|
118
|
+
audiences: ctx.isProd
|
|
119
|
+
? []
|
|
120
|
+
: [
|
|
121
|
+
`https://localhost:${ctx.env.NF_PORT_HTTPS ?? 5152}`,
|
|
122
|
+
`http://localhost:${ctx.env.NF_PORT ?? 5151}/nodefony/mcp`,
|
|
123
|
+
`https://localhost:${ctx.env.NF_PORT_HTTPS ?? 5152}/nodefony/mcp`,
|
|
124
|
+
],
|
|
125
|
+
keystore: ctx.isProd ? {} : { dir: "var/keys" },
|
|
126
|
+
},
|
|
127
|
+
/**
|
|
128
|
+
* Zones firewall de TES routes. `main` essaie `session` (cookie BFF →
|
|
129
|
+
* `context.user` rempli) puis `anonymous` : rien n'est bloqué tel quel.
|
|
130
|
+
* Hors zone, l'identité n'est JAMAIS résolue.
|
|
131
|
+
*
|
|
132
|
+
* - EXIGER le login sur `/api` : retire `"anonymous"` de `main`.
|
|
133
|
+
* - Protéger plus large : élargis le pattern (ex. `"^/(api|compte)"`).
|
|
134
|
+
*
|
|
135
|
+
* Le firewall trie par longueur de pattern : `/api/secure/*` tombe donc
|
|
136
|
+
* dans `secure`, sans `anonymous` → 401 avant ton controller. Essaie
|
|
137
|
+
* `GET /api/secure/hello`.
|
|
138
|
+
*
|
|
139
|
+
* `main` et `secure` sont STATEFUL : l'identité tient dans une session
|
|
140
|
+
* serveur, portée par un cookie opaque et révocable — le bon modèle pour
|
|
141
|
+
* un NAVIGATEUR. `machine`, plus bas, montre l'autre cas : un appelant
|
|
142
|
+
* qui ne stocke pas de cookie ne doit RIEN recevoir qu'il faille stocker.
|
|
143
|
+
*
|
|
144
|
+
* ⚠️ `stateless: false` (le défaut) sur une zone de service NE FAIT PAS
|
|
145
|
+
* ÉCHOUER l'essai — et c'est le piège. Depuis un navigateur, ou avec un
|
|
146
|
+
* `curl -c`, le cookie posé est renvoyé aux appels suivants et tout
|
|
147
|
+
* marche ; le vrai client, lui, ne stocke rien. Ce qu'il en coûte n'est
|
|
148
|
+
* pas un refus mais un REGISTRE : chaque appel porteur d'un cookie
|
|
149
|
+
* inconnu fait reprendre, puis réécrire une session serveur — et
|
|
150
|
+
* renvoyer un `Set-Cookie` — pour un appelant qui ne la relira jamais.
|
|
151
|
+
*
|
|
152
|
+
* `stateless: true` ferme cela : la zone n'ouvre ni ne reprend de
|
|
153
|
+
* session, le cookie entrant est ignoré, et l'identité tient tout
|
|
154
|
+
* entière dans la preuve portée par la requête. Corollaire, appliqué au
|
|
155
|
+
* DÉMARRAGE : lister `"session"` dans une zone stateless est une
|
|
156
|
+
* contradiction, et l'application REFUSE de démarrer en nommant la zone.
|
|
157
|
+
* Une zone sert un navigateur (session) ou un porteur de preuve (clé,
|
|
158
|
+
* jeton) — jamais les deux sous le même drapeau.
|
|
159
|
+
*/
|
|
160
|
+
/**
|
|
161
|
+
* ⚠️ Un `pattern` couvre un PRÉFIXE, pas les routes qu'on a en tête —
|
|
162
|
+
* et c'est TOUT l'intérêt : les routes ajoutées demain sous ce préfixe
|
|
163
|
+
* naissent protégées, sans que personne ait à y penser.
|
|
164
|
+
*
|
|
165
|
+
* D'où le piège, mesuré : pour fermer `/api/account/profile` et
|
|
166
|
+
* `/api/account/invoices`, on écrit
|
|
167
|
+
* `pattern: "^/api/account/(profile|invoices)"`. Les deux routes
|
|
168
|
+
* refusent bien l'anonyme, l'essai est vert, la revue passe — et la
|
|
169
|
+
* TROISIÈME route du compte, ajoutée un mois plus tard, est PUBLIQUE.
|
|
170
|
+
* Rien ne le signale : la zone existe, elle a l'air de couvrir l'espace.
|
|
171
|
+
* Le bon pattern est `"^/api/account"`.
|
|
172
|
+
*
|
|
173
|
+
* La zone retenue est celle dont le pattern est le plus LONG parmi
|
|
174
|
+
* celles qui correspondent (`firewall.ts:245`) — pas la première
|
|
175
|
+
* déclarée. C'est ainsi que `^/api/secure` l'emporte sur `^/api`
|
|
176
|
+
* ci-dessous. Un pattern énuméré gagne donc lui aussi sur ses propres
|
|
177
|
+
* routes, ce qui rend l'erreur silencieuse : ce qu'on teste marche.
|
|
178
|
+
*/
|
|
179
|
+
areas: {
|
|
180
|
+
main: {
|
|
181
|
+
pattern: "^/api",
|
|
182
|
+
authenticators: ["session", "anonymous"],
|
|
183
|
+
},
|
|
184
|
+
// AJOUTER une route ici ne demande RIEN de plus : le préfixe est déjà
|
|
185
|
+
// couvert, la zone authentifie, et `context.user` est garanti dans le
|
|
186
|
+
// controller. Une route neuve sous `/api/secure` naît protégée.
|
|
187
|
+
//
|
|
188
|
+
// ⚠️ Un appelant qui reçoit 401 sur une route de cette zone ne dit PAS
|
|
189
|
+
// que la zone est mal réglée : il dit qu'il ne s'authentifie pas. Les
|
|
190
|
+
// deux réflexes qui suivent affaiblissent l'application ENTIÈRE pour un
|
|
191
|
+
// seul appelant, et rien ne le signalera :
|
|
192
|
+
// · ajouter `"anonymous"` ici — toutes les routes de la zone
|
|
193
|
+
// deviennent publiques, pas seulement la nouvelle ;
|
|
194
|
+
// · poser `@BypassFirewall`/`@Anonymous` sur l'action — même effet,
|
|
195
|
+
// en plus discret, puisque la zone a toujours l'air fermée.
|
|
196
|
+
// Fais plutôt s'authentifier l'appelant (session pour un navigateur,
|
|
197
|
+
// zone `machine` ci-dessous pour un service), ou donne-lui sa propre
|
|
198
|
+
// zone. Restreindre DAVANTAGE reste possible sans rien ouvrir :
|
|
199
|
+
// `@IsGranted(["ROLE_ADMIN"])` sur l'action.
|
|
200
|
+
secure: {
|
|
201
|
+
pattern: "^/api/secure",
|
|
202
|
+
authenticators: ["session"],
|
|
203
|
+
},
|
|
204
|
+
// Appelant qui n'est PAS un navigateur — service partenaire, script,
|
|
205
|
+
// agent. Zone ACTIVE, et non un exemple en commentaire : c'est le code
|
|
206
|
+
// qu'on a sous les yeux qu'on recopie, jamais celui qu'on lit à côté.
|
|
207
|
+
// Rien ne tombe ici tant qu'aucune route ne commence par `/api/machine`.
|
|
208
|
+
machine: {
|
|
209
|
+
pattern: "^/api/machine",
|
|
210
|
+
authenticators: ["apikey"], // PAS "session" — ce client n'a pas de cookie
|
|
211
|
+
stateless: true, // false ⇒ l'app ouvre une session qu'il ne renverra jamais
|
|
212
|
+
},
|
|
213
|
+
},
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Clés de chiffrement au repos — les VALEURS vivent dans `.env.local`
|
|
217
|
+
* (gitignoré), générées à la création de l'app. Rotation ou rattrapage :
|
|
218
|
+
* `npx nodefony security:secrets --write`.
|
|
219
|
+
*/
|
|
220
|
+
totp: { encryptionKey: ctx.env.NF_TOTP_KEY },
|
|
221
|
+
webhooks: { encryptionKey: ctx.env.NF_WEBHOOK_KEY },
|
|
222
|
+
csrf: { secret: ctx.env.NF_CSRF_SECRET },
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Hiérarchie de rôles — un rôle COUVRE ceux qu'il liste, transitivement.
|
|
226
|
+
* `ROLE_NODEFONY_*` = plateforme (console Studio) ; `ROLE_*` = applicatif.
|
|
227
|
+
* Le compte admin semé par `nodefony/security/provisionUsers.ts` les porte.
|
|
228
|
+
*/
|
|
229
|
+
roleHierarchy: {
|
|
230
|
+
ROLE_NODEFONY_ADMIN: ["ROLE_ADMIN", "ROLE_SUPERVISOR", "ROLE_DEV"],
|
|
231
|
+
ROLE_ADMIN: ["ROLE_USER"],
|
|
232
|
+
},
|
|
233
|
+
}),
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Builder Vite + statics : sert le frontend de l'app (HMR en dev).
|
|
237
|
+
*
|
|
238
|
+
* L'origine que le NAVIGATEUR utilise pour les assets se dérive du `Host`
|
|
239
|
+
* de la requête : rien à configurer pour développer depuis une autre
|
|
240
|
+
* machine, un conteneur ou un tunnel — chacun reçoit l'origine par
|
|
241
|
+
* laquelle il est arrivé. Codespaces/Gitpod : détection automatique.
|
|
242
|
+
*
|
|
243
|
+
* `publicOrigin: "https://mon-proxy.example.com:{port}"` force une origine
|
|
244
|
+
* unique quand un frontal la réécrit ; `{port}` suit le port réel de Vite.
|
|
245
|
+
* Un réglage explicite gagne toujours sur la dérivation.
|
|
246
|
+
*/
|
|
247
|
+
use("@nodefony/frontend", {
|
|
248
|
+
publicOrigin: "",
|
|
249
|
+
}),
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Console d'administration → `/nodefony` : modules chargés, routes, config
|
|
253
|
+
* résolue, sessions, logs.
|
|
254
|
+
*
|
|
255
|
+
* `policy: "dev"` parce que c'est une surface d'ADMIN : absente de la
|
|
256
|
+
* production. Pour l'y garder — choix ASSUMÉ — protège `/nodefony` par une
|
|
257
|
+
* zone firewall, PUIS passe la policy à `"mandatory"`.
|
|
258
|
+
*
|
|
259
|
+
* `ui: "static"` sert les assets pré-buildés du paquet npm (rien à
|
|
260
|
+
* recompiler). `"auto"`/`"vite"` feraient passer l'UI Studio par TON serveur
|
|
261
|
+
* Vite — pour développer Studio lui-même — et exigeraient ses plugins dans
|
|
262
|
+
* TES devDependencies (une app Vue/Angular n'a pas `@vitejs/plugin-react`).
|
|
263
|
+
*/
|
|
264
|
+
use("@nodefony/studio", { ui: "static" }, { policy: "dev" }),
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Accès Redis générique — chargé par la DÉCLARATION de l'infra cache :
|
|
268
|
+
* `NF_REDIS_URL` présente ⇔ module chargé (un seul signal, pas de magie
|
|
269
|
+
* localhost). Consommateurs : backplane realtime `redis`, sessions,
|
|
270
|
+
* idempotence.
|
|
271
|
+
*/
|
|
272
|
+
use("@nodefony/redis", undefined, {
|
|
273
|
+
when: () => !!ctx.infra.cache,
|
|
274
|
+
}),
|
|
275
|
+
<% } else if (it.front) { %>
|
|
276
|
+
/**
|
|
277
|
+
* Builder Vite + statics : sert le frontend <%= it.frontend %> de l'app
|
|
278
|
+
* (HMR en dev, build pré-compilé en prod).
|
|
279
|
+
*
|
|
280
|
+
* L'origine que le NAVIGATEUR utilise pour les assets se dérive du `Host`
|
|
281
|
+
* de la requête : rien à configurer pour développer depuis une autre
|
|
282
|
+
* machine, un conteneur ou un tunnel — chacun reçoit l'origine par
|
|
283
|
+
* laquelle il est arrivé. Codespaces/Gitpod : détection automatique.
|
|
284
|
+
*
|
|
285
|
+
* `publicOrigin: "https://mon-proxy.example.com:{port}"` force une origine
|
|
286
|
+
* unique quand un frontal la réécrit ; `{port}` suit le port réel de Vite.
|
|
287
|
+
* Un réglage explicite gagne toujours sur la dérivation.
|
|
288
|
+
*/
|
|
289
|
+
use("@nodefony/frontend", {
|
|
290
|
+
publicOrigin: "",
|
|
291
|
+
}),
|
|
292
|
+
<% } %>
|
|
293
|
+
/**
|
|
294
|
+
* Outillage de DÉVELOPPEMENT — la porte HTTP de la carte de visite de cette
|
|
295
|
+
* application (`/nodefony/devkit`). La même carte au terminal ne dépend PAS
|
|
296
|
+
* de ce module : `npx nodefony card` est servie par le cœur et répond même
|
|
297
|
+
* ici retiré, application non construite ou environnement non posé.
|
|
298
|
+
*
|
|
299
|
+
* `policy: "dev"` : ce qu'il expose (modules chargés, chemins de
|
|
300
|
+
* documentation, commandes à lancer) aide pendant le développement et n'est,
|
|
301
|
+
* en production, qu'une divulgation de ton architecture. Un module non chargé
|
|
302
|
+
* n'est même pas importé — le coût en production est nul, pas « faible ».
|
|
303
|
+
*
|
|
304
|
+
* Il est en `devDependencies` : `npm ci --omit=dev` ne l'installe pas.
|
|
305
|
+
*/
|
|
306
|
+
use(
|
|
307
|
+
"@nodefony/devkit",
|
|
308
|
+
{
|
|
309
|
+
mcp: {
|
|
310
|
+
authorization: {
|
|
311
|
+
/**
|
|
312
|
+
* 🔴 L'audience attendue des jetons de la porte MCP — elle
|
|
313
|
+
* s'ÉCRIT, jamais ne se dérive du `Host` : un en-tête forgé
|
|
314
|
+
* obtiendrait sinon un jeton d'audience arbitraire ET passerait la
|
|
315
|
+
* vérification, ce qui viderait la liaison d'audience (RFC 8707) de
|
|
316
|
+
* son unique raison d'être.
|
|
317
|
+
*
|
|
318
|
+
* Sans cette ligne, l'émetteur de cette application REFUSE de
|
|
319
|
+
* signer un jeton pour sa propre porte (`invalid_target`) — et
|
|
320
|
+
* `npx nodefony ai:mcp --auth` livre alors une porte que rien ne
|
|
321
|
+
* peut franchir.
|
|
322
|
+
*
|
|
323
|
+
* Ce sont les adresses de DÉVELOPPEMENT (la porte répond en clair
|
|
324
|
+
* et en TLS). En production, mets ici l'URL publique en https.
|
|
325
|
+
*
|
|
326
|
+
* ⚠️ Le PORT suit ta configuration (`NF_PORT`), il n'est pas figé :
|
|
327
|
+
* une application lancée ailleurs verrait sinon son propre jeton
|
|
328
|
+
* refusé — l'audience désignant une adresse où elle ne répond pas.
|
|
329
|
+
* Lire une variable de configuration n'est PAS dériver du `Host` :
|
|
330
|
+
* l'une t'appartient, l'autre vient du client.
|
|
331
|
+
*/
|
|
332
|
+
resource: `http://localhost:${ctx.env.NF_PORT ?? 5151}/nodefony/mcp`,
|
|
333
|
+
additionalResources: [
|
|
334
|
+
`https://localhost:${ctx.env.NF_PORT_HTTPS ?? 5152}/nodefony/mcp`,
|
|
335
|
+
],
|
|
336
|
+
},
|
|
337
|
+
},
|
|
338
|
+
},
|
|
339
|
+
{ policy: "dev" },
|
|
340
|
+
),
|
|
341
|
+
],
|
|
342
|
+
}));
|