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,71 @@
|
|
|
1
|
+
# AGENTS.md — <%= it.pkgName %>
|
|
2
|
+
|
|
3
|
+
> Instructions agent de CE module. Standard AGENTS.md : **le fichier le plus
|
|
4
|
+
> proche gagne** — quand tu travailles dans ce dossier, il prime sur celui de
|
|
5
|
+
> l'app. Vérité COURANTE, jamais un journal : pas de dates, pas de TODO ni
|
|
6
|
+
> d'historique (ça vit dans `git log`) ; un fait périmé se CORRIGE.
|
|
7
|
+
|
|
8
|
+
## Rôle
|
|
9
|
+
|
|
10
|
+
<%= it.description %>
|
|
11
|
+
|
|
12
|
+
## Composants
|
|
13
|
+
|
|
14
|
+
- `index.ts` — `<%= it.pascal %>Module extends Module`, nom kernel `<%= it.name %>`. Valide sa config à `onKernelRegister`.
|
|
15
|
+
<% if (it.service) { %>- `<%= it.pascal %>Service` — `@injectable`, nom `<%= it.name %>`. Se récupère par `container.get("<%= it.name %>")`.
|
|
16
|
+
<% } %><% if (it.command) { %>- `<%= it.pascal %>Command` — CLI `nodefony <%= it.name %>:hello`, `kernelEvent: onReady` (zéro serveur).
|
|
17
|
+
<% } %><% if (it.controller !== "none") { %>- `<%= it.pascal %>Controller` — saveur `<%= it.controller %>`, monté sous `/api/<%= it.name %>`<% if (it.needsRealtime) { %> (socket Nodefony : canaux pub/sub + actions RPC)<% } %>. Un controller TRADUIT (HTTP/WS ↔ service), il ne décide pas.
|
|
18
|
+
<% } %><% if (it.front) { %>- `frontend/` — entry Vite <%= it.frontend %> (HMR en dev, statics buildés en prod).
|
|
19
|
+
<% } %>- `nodefony/config/config.ts` — schéma Zod = **source unique des défauts**. `defineModuleConfig.ts` = builder pur (valide et gèle, ne retape jamais une valeur).
|
|
20
|
+
|
|
21
|
+
## Config
|
|
22
|
+
|
|
23
|
+
| Clé | Type | Défaut |
|
|
24
|
+
| ---------- | --------- | -------------------------------- |
|
|
25
|
+
| `enabled` | `boolean` | `true` |
|
|
26
|
+
| `greeting` | `string` | `"Bonjour de <%= it.name %>"` |
|
|
27
|
+
|
|
28
|
+
Chargement : `use("<%= it.pkgName %>", { … })` dans le `nodefony.config.ts` de
|
|
29
|
+
l'app. Config invalide → boot FATAL, champ nommé.
|
|
30
|
+
|
|
31
|
+
## Décisions figées
|
|
32
|
+
|
|
33
|
+
- **La logique vit dans le service**, pas dans les controllers : un controller
|
|
34
|
+
traduit du HTTP/WS, un service est réutilisable (CLI, job, autre module).
|
|
35
|
+
- **Jamais `Nodefony.getKernel()` au top-level** d'un fichier chargé à l'import :
|
|
36
|
+
le module deviendrait impossible à importer — donc à tester — sans serveur.
|
|
37
|
+
- Workspace npm (`modules/<%= it.name %>/`) : le Kernel charge le module PAR SON
|
|
38
|
+
NOM → il doit rester résolvable (symlink npm workspaces).
|
|
39
|
+
- **Le container DI est PROTOTYPAL** : un service posé ici est visible du
|
|
40
|
+
kernel ENTIER et de chaque scope de requête (chaîne de prototypes, zéro
|
|
41
|
+
copie par requête) ; ce qu'un scope `set()` meurt avec sa requête. Ni cache
|
|
42
|
+
de services maison, ni singleton maison — `container.get("<nom>")` EST le
|
|
43
|
+
mécanisme. Réf : `node_modules/nodefony/docs/service.md`.
|
|
44
|
+
- **Isomorphisme** : pour tout code NAVIGATEUR de ce module, le client temps
|
|
45
|
+
réel et les types du protocole s'importent du cœur (`nodefony`,
|
|
46
|
+
`nodefony/client`, `nodefony/react`) — jamais un client WS à la main, jamais
|
|
47
|
+
un type dupliqué front/back. Réf : `node_modules/nodefony/docs/client.md`.
|
|
48
|
+
- **WS métier = socket Nodefony** : `nodefony create controller <nom>
|
|
49
|
+
--kind realtime --module <%= it.name %>` (canaux + actions RPC + policies) —
|
|
50
|
+
l'echo WS brut des exemples est une démo du pipeline, pas un modèle.
|
|
51
|
+
|
|
52
|
+
## Interdits sans accord
|
|
53
|
+
|
|
54
|
+
- Modifier `rolldown.config.ts` / `tsconfig.json`.
|
|
55
|
+
- Ajouter une dépendance npm runtime sans en peser le coût.
|
|
56
|
+
- Allouer par requête ce qui ne sert qu'à une minorité de requêtes (préférer
|
|
57
|
+
`null` + init au premier usage), ou attacher un listener sans prévoir son retrait.
|
|
58
|
+
|
|
59
|
+
## Gotchas
|
|
60
|
+
|
|
61
|
+
- Ne pas redéclarer `options` dans le service (la classe `Service` l'assigne via `super()`).
|
|
62
|
+
- Ajouter un controller/front : `nodefony create controller|front <nom> --module <%= it.name %>` (câble l'`index.ts` seul).
|
|
63
|
+
- Ajouter une commande CLI : `nodefony create command <action> --module <%= it.pkgName %>` → `nodefony <%= it.name %>:<action>` (le préfixe est ajouté seul, le `this.addCommand(…)` aussi).
|
|
64
|
+
- Ajouter un service : `nodefony create service <Nom> --module <%= it.pkgName %>` (câble le `@services([…])` seul). Un service Nodefony est `@injectable()` + `extends Service` — une classe à méthodes `static` compile mais reste invisible au conteneur.
|
|
65
|
+
- Build : `rolldown` → `dist/index.js` (chargé par le Kernel). En dev, le superviseur rebuild tout seul.
|
|
66
|
+
|
|
67
|
+
## Gates avant commit
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
npm run typecheck && npm test && npm run build
|
|
71
|
+
```
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# <%= it.pkgName %>
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
<%= it.description %>
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
Module applicatif Nodefony — un **workspace npm**
|
|
8
|
+
(`<%= it.moduleDir %>/<%= it.name %>/`) chargé par le
|
|
9
|
+
manifeste `modules` de `nodefony.config.ts` de l'app :
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
use("<%= it.pkgName %>", { enabled: true }),
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Configuration
|
|
16
|
+
|
|
17
|
+
| Clé | Type | Défaut | Rôle |
|
|
18
|
+
| ---------- | --------- | -------------------------------- | ------------------------------------------- |
|
|
19
|
+
| `enabled` | `boolean` | `true` | Interrupteur du module |
|
|
20
|
+
| `greeting` | `string` | `"Bonjour de <%= it.name %>"` | Exemple de champ — à remplacer par la vôtre |
|
|
21
|
+
|
|
22
|
+
La source unique est le schéma Zod de `nodefony/config/config.ts` : c'est lui qui porte
|
|
23
|
+
les défauts, les descriptions et la validation. Une clé inconnue ou mal typée fait échouer
|
|
24
|
+
le **boot**, en nommant le champ fautif.
|
|
25
|
+
|
|
26
|
+
## Développer
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npm run build # rolldown → dist/ (le Kernel charge dist/index.js)
|
|
30
|
+
npm run typecheck # tsgo --noEmit
|
|
31
|
+
npm test # vitest
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
En développement, le serveur (`npm run dev` à la racine de l'app) surveille les sources et
|
|
35
|
+
reconstruit tout seul : pas besoin de builder à la main à chaque changement.
|
|
36
|
+
|
|
37
|
+
## Ajouter des briques
|
|
38
|
+
|
|
39
|
+
Depuis la **racine de l'app** :
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
nodefony create controller articles --module <%= it.name %> # HTTP + WebSocket
|
|
43
|
+
nodefony create front dashboard --module <%= it.name %> # page Vite (React/Vue/Angular)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Les deux commandes câblent elles-mêmes l'`index.ts` du module.
|
|
47
|
+
|
|
48
|
+
## Structure
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
modules/<%= it.name %>/
|
|
52
|
+
├── index.ts ← la classe Module (controllers, services, config)
|
|
53
|
+
├── nodefony/
|
|
54
|
+
│ ├── config/config.ts ← schéma Zod = source unique des défauts
|
|
55
|
+
│ ├── config/defineModuleConfig.ts ← builder pur (valide, gèle)
|
|
56
|
+
<% if (it.service) { %>│ ├── service/<%= it.pascal %>Service.ts ← la logique, injectable (`container.get("<%= it.name %>")`)
|
|
57
|
+
│ ├── interfaces/ ← l'API publique du service
|
|
58
|
+
<% } %><% if (it.command) { %>│ ├── command/<%= it.pascal %>Command.ts ← commande CLI `nodefony <%= it.name %>:hello`
|
|
59
|
+
<% } %>│ └── src/errors/ ← erreurs typées (code machine + contexte)
|
|
60
|
+
├── docs/ ← documentation, surfacée dans Studio
|
|
61
|
+
└── tests/
|
|
62
|
+
```
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
module: "<%= it.pkgName %>"
|
|
3
|
+
topic: overview
|
|
4
|
+
audience: [human, ai]
|
|
5
|
+
tags: [module]
|
|
6
|
+
status: draft
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# <%= it.name %>
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
> <%= it.description %>
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
Cette page est **surfacée dans Studio** (onglet Docs du module) : ce que vous écrivez ici,
|
|
16
|
+
l'équipe le lit dans l'admin, sans quitter l'application.
|
|
17
|
+
|
|
18
|
+
## Ce que fait le module
|
|
19
|
+
|
|
20
|
+
À remplir : le problème que ce module résout, et pour qui.
|
|
21
|
+
|
|
22
|
+
## Configuration
|
|
23
|
+
|
|
24
|
+
Le module se charge et se configure depuis le manifeste de l'app (`nodefony.config.ts`) :
|
|
25
|
+
|
|
26
|
+
```ts
|
|
27
|
+
use("<%= it.pkgName %>", {
|
|
28
|
+
enabled: true,
|
|
29
|
+
greeting: "Bonjour",
|
|
30
|
+
}),
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Les clés disponibles, leurs types et leurs défauts viennent du schéma Zod
|
|
34
|
+
(`nodefony/config/config.ts`) — c'est la **source unique** : la doc, la validation au boot et
|
|
35
|
+
le formulaire d'édition de Studio en dérivent tous les trois.
|
|
36
|
+
<% if (it.service) { %>
|
|
37
|
+
## Service
|
|
38
|
+
|
|
39
|
+
`<%= it.pascal %>Service` est injectable sous le nom `<%= it.name %>` :
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
const svc = container.get<<%= it.pascal %>Service>("<%= it.name %>");
|
|
43
|
+
svc.status(); // { ready: true }
|
|
44
|
+
```
|
|
45
|
+
<% } %><% if (it.command) { %>
|
|
46
|
+
## Commande CLI
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
nodefony <%= it.name %>:hello
|
|
50
|
+
```
|
|
51
|
+
<% } %>
|
|
52
|
+
## À suivre
|
|
53
|
+
|
|
54
|
+
- Les routes exposées (une fois vos controllers écrits).
|
|
55
|
+
- Les décisions d'architecture qui méritent d'être expliquées plutôt que devinées.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Kernel, Module<% if (it.service) { %>, services<% } %> } from "nodefony";
|
|
2
|
+
import { controllers } from "@nodefony/framework";
|
|
3
|
+
import config, { type <%= it.pascal %>ConfigInput } from "./nodefony/config/config";
|
|
4
|
+
import { define<%= it.pascal %>Config } from "./nodefony/config/defineModuleConfig";
|
|
5
|
+
<% if (it.service) { %>import <%= it.pascal %>Service from "./nodefony/service/<%= it.pascal %>Service";
|
|
6
|
+
<% } %>
|
|
7
|
+
/**
|
|
8
|
+
* <%= it.pkgName %> — <%= it.description %>
|
|
9
|
+
|
|
10
|
+
*
|
|
11
|
+
* Module applicatif : un workspace npm à part entière
|
|
12
|
+
* (`<%= it.moduleDir %>/<%= it.name %>/`), chargé par le manifeste `modules` de
|
|
13
|
+
* `nodefony.config.ts`. Le Kernel l'importe PAR SON NOM (`<%= it.pkgName %>`) —
|
|
14
|
+
* d'où le workspace, qui le rend résolvable.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Rend la config du module typée à l'appel : `use("<%= it.pkgName %>", { … })`
|
|
19
|
+
* dans `nodefony.config.ts` propose les clés du schéma et refuse les fautes de
|
|
20
|
+
* frappe, au lieu d'avaler un `Record<string, unknown>`.
|
|
21
|
+
*/
|
|
22
|
+
declare module "nodefony" {
|
|
23
|
+
interface NodefonyModuleConfig {
|
|
24
|
+
"<%= it.pkgName %>": <%= it.pascal %>ConfigInput;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Les controllers du module se déclarent ici — `nodefony create controller <nom>
|
|
29
|
+
// --module <%= it.name %>` les ajoute à cette liste (et à ce dossier) tout seul.
|
|
30
|
+
@controllers([])
|
|
31
|
+
<% if (it.service) { %>@services([<%= it.pascal %>Service])
|
|
32
|
+
<% } %>class <%= it.pascal %>Module extends Module {
|
|
33
|
+
constructor(kernel: Kernel) {
|
|
34
|
+
super("<%= it.name %>", kernel, import.meta.url, config);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Valide la config au boot — défauts du schéma fusionnés avec ce que l'app
|
|
39
|
+
* passe dans `use()`. Une clé inconnue ou mal typée plante ICI, avec le champ
|
|
40
|
+
* fautif nommé, plutôt qu'en `undefined.x` au premier appel en production.
|
|
41
|
+
*/
|
|
42
|
+
override async onKernelRegister(): Promise<this> {
|
|
43
|
+
this.options = define<%= it.pascal %>Config(
|
|
44
|
+
(this.options as <%= it.pascal %>ConfigInput) ?? {},
|
|
45
|
+
);
|
|
46
|
+
return this;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export default <%= it.pascal %>Module;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* <%= it.pkgName %> — CONFIGURATION DU MODULE (schéma Zod = source unique).
|
|
5
|
+
*
|
|
6
|
+
* ⭐ TL;DR : CE SCHÉMA EST LA CONFIG. Chaque `.default(...)` est la valeur d'usine ;
|
|
7
|
+
* changer un défaut du module = ÉDITER ICI (et nulle part ailleurs). L'app, elle,
|
|
8
|
+
* ne surcharge que ses écarts, via `use("<%= it.pkgName %>", { … })`.
|
|
9
|
+
*
|
|
10
|
+
* RÈGLE D'OR (ADR-0006) : ce fichier porte le schéma commenté (type + validation +
|
|
11
|
+
* défaut + doc) ET matérialise les défauts par `parse({})`. Le builder
|
|
12
|
+
* (`define<%= it.pascal %>Config`) importe le schéma d'ici et ne retape aucune valeur —
|
|
13
|
+
* un défaut écrit à deux endroits finit toujours par diverger.
|
|
14
|
+
*
|
|
15
|
+
* SURCHARGE (précédence croissante) :
|
|
16
|
+
* • défauts du schéma (ce fichier) ;
|
|
17
|
+
* • app : `use("<%= it.pkgName %>", { … })` dans `nodefony.config.ts` ;
|
|
18
|
+
* • déploiement : `NF__<%= it.upper %>__<CHEMIN>=valeur` (override env générique, `__` = niveau).
|
|
19
|
+
*
|
|
20
|
+
* Le schéma reste **PUR** : aucune lecture de `process.env`, aucun accès au kernel
|
|
21
|
+
* (il est évalué à l'import — le kernel n'existe pas encore).
|
|
22
|
+
*
|
|
23
|
+
* Champ sensible (clé, mot de passe) → `.meta({ secret: true })` EN DERNIER de la
|
|
24
|
+
* chaîne : chaque méthode zod clone, une `.default()` posée après `.meta()` perdrait
|
|
25
|
+
* la métadonnée. Ces flags ressortent dans le JSON Schema lu par Studio.
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* ⚠️ `strictObject`, et non `object` : une clé INCONNUE doit être REFUSÉE, pas
|
|
29
|
+
* retirée en silence. C'est le défaut par défaut de Zod, et il coûte cher —
|
|
30
|
+
* `use("<%= it.pkgName %>", { gretting: "…" })` produisait une application qui
|
|
31
|
+
* démarre en IGNORANT ce que l'utilisateur a écrit, sans un mot. Le typage du
|
|
32
|
+
* registre `NodefonyModuleConfig` attrape la faute de frappe à la COMPILATION ;
|
|
33
|
+
* ceci l'attrape au DÉMARRAGE, pour tout ce qui contourne le compilateur — une
|
|
34
|
+
* config chargée d'un fichier, un `as never`, un override d'environnement.
|
|
35
|
+
*/
|
|
36
|
+
export const <%= it.camel %>ConfigSchema = z.strictObject({
|
|
37
|
+
/** Interrupteur du module — l'app peut le charger sans l'activer. */
|
|
38
|
+
enabled: z
|
|
39
|
+
.boolean()
|
|
40
|
+
.default(true)
|
|
41
|
+
.describe("Active les fonctionnalités du module <%= it.name %>"),
|
|
42
|
+
|
|
43
|
+
/** Exemple : à remplacer par la vraie config du module. */
|
|
44
|
+
greeting: z
|
|
45
|
+
.string()
|
|
46
|
+
.min(1)
|
|
47
|
+
.default("Bonjour de <%= it.name %>")
|
|
48
|
+
.describe("Message renvoyé par le service (exemple de champ configurable)"),
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
/** Config telle que l'APP l'écrit dans `use()` — tous les champs optionnels. */
|
|
52
|
+
export type <%= it.pascal %>ConfigInput = z.input<typeof <%= it.camel %>ConfigSchema>;
|
|
53
|
+
|
|
54
|
+
/** Config telle que le CODE la lit — défauts appliqués, rien d'optionnel. */
|
|
55
|
+
export type <%= it.pascal %>Config = z.output<typeof <%= it.camel %>ConfigSchema>;
|
|
56
|
+
|
|
57
|
+
/** Défauts matérialisés (passés au `super()` du Module). */
|
|
58
|
+
const defaults: <%= it.pascal %>Config = <%= it.camel %>ConfigSchema.parse({});
|
|
59
|
+
|
|
60
|
+
export default defaults;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { parseModuleConfig } from "nodefony";
|
|
3
|
+
import { <%= it.camel %>ConfigSchema } from "./config";
|
|
4
|
+
import type { <%= it.pascal %>Config, <%= it.pascal %>ConfigInput } from "./config";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* <%= it.pkgName %> — LE COMMENT : builder PUR de la config.
|
|
8
|
+
*
|
|
9
|
+
* ⭐ TL;DR : ce fichier VALIDE et GÈLE. Il ne porte AUCUNE valeur — les défauts
|
|
10
|
+
* vivent dans le schéma de `./config.ts` (règle d'or ADR-0006). Pour changer un
|
|
11
|
+
* défaut, c'est là-bas ; ici, on ne fait que le faire respecter.
|
|
12
|
+
*
|
|
13
|
+
* Le nom du FICHIER est le même dans tous les modules Nodefony
|
|
14
|
+
* (`defineModuleConfig.ts`) ; la FONCTION, elle, est préfixée par le module —
|
|
15
|
+
* deux modules importés côte à côte ne se marchent pas dessus.
|
|
16
|
+
*
|
|
17
|
+
* L'override env générique (`NF__<%= it.upper %>__<CHEMIN>`) est appliqué par le core,
|
|
18
|
+
* pas ici. Si le module a besoin d'une variable d'env DÉDIÉE, elle s'applique
|
|
19
|
+
* APRÈS le parse, dans cette fonction, pour que le schéma reste pur.
|
|
20
|
+
*
|
|
21
|
+
* 🔴 **La validation passe par `parseModuleConfig`, du cœur** — un seul endroit
|
|
22
|
+
* pour une seule règle. Il lève une `BootConfigurationError`, et pas une `Error`
|
|
23
|
+
* ordinaire : le kernel distingue les deux. Un hook de cycle de vie qui lève une
|
|
24
|
+
* erreur QUELCONQUE est absorbé en développement (fail-soft — il protège la DX
|
|
25
|
+
* d'un module optionnel cassé), tandis qu'une erreur de CONFIGURATION interrompt
|
|
26
|
+
* le boot dans TOUS les environnements. Mesuré sur un module généré : avec une
|
|
27
|
+
* `Error`, `use("<%= it.pkgName %>", { gretting: "…" })` laissait l'application
|
|
28
|
+
* démarrer, servir, et rendre 0 — la faute de frappe n'atteignait personne. Une
|
|
29
|
+
* configuration explicite qu'on ne peut pas honorer ne se répare pas en
|
|
30
|
+
* continuant.
|
|
31
|
+
*
|
|
32
|
+
* ⚠️ Ne PAS réécrire ce bloc à la main : les dix modules du framework portaient
|
|
33
|
+
* chacun leur copie du `try`/`catch`, et elles avaient divergé sur les deux
|
|
34
|
+
* points qui comptent — le type de l'erreur levée et la langue du message.
|
|
35
|
+
*
|
|
36
|
+
* @param config - config brute venue de `use("<%= it.pkgName %>", { … })`.
|
|
37
|
+
* @returns config validée et gelée.
|
|
38
|
+
* @throws BootConfigurationError si un champ est invalide ou inconnu (toutes les
|
|
39
|
+
* erreurs Zod agrégées, par champ) — le boot s'interrompt, en dev comme en prod.
|
|
40
|
+
*/
|
|
41
|
+
export function define<%= it.pascal %>Config(
|
|
42
|
+
config: <%= it.pascal %>ConfigInput = {},
|
|
43
|
+
): <%= it.pascal %>Config {
|
|
44
|
+
return Object.freeze(
|
|
45
|
+
parseModuleConfig(<%= it.camel %>ConfigSchema, config, "<%= it.pkgName %>"),
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* JSON Schema de la config — Studio en dérive son formulaire d'édition
|
|
51
|
+
* (libellés, types, défauts, descriptions), sans une ligne d'UI écrite à la main.
|
|
52
|
+
*/
|
|
53
|
+
export function <%= it.camel %>ConfigJsonSchema(): unknown {
|
|
54
|
+
return z.toJSONSchema(<%= it.camel %>ConfigSchema);
|
|
55
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Erreur du module <%= it.name %>.
|
|
3
|
+
*
|
|
4
|
+
* Deux champs qui font la différence en production :
|
|
5
|
+
* - `code` : identifiant MACHINE (stable, grep-able, consommé par Studio et
|
|
6
|
+
* l'audit) — le message, lui, peut changer sans rien casser ;
|
|
7
|
+
* - `context` : payload structuré joint au log (jamais de secret ici).
|
|
8
|
+
*/
|
|
9
|
+
export class <%= it.pascal %>Error extends Error {
|
|
10
|
+
constructor(
|
|
11
|
+
message: string,
|
|
12
|
+
public readonly code: string = "<%= it.upper %>_ERROR",
|
|
13
|
+
public readonly context?: Record<string, unknown>,
|
|
14
|
+
) {
|
|
15
|
+
super(message);
|
|
16
|
+
this.name = "<%= it.pascal %>Error";
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export default <%= it.pascal %>Error;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "<%= it.pkgName %>",
|
|
3
|
+
"version": "<%= it.version %>",
|
|
4
|
+
<% if (it.publishable) { %> "type": "module",
|
|
5
|
+
"description": "<%= it.description %>",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/types/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/types/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"docs"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "rolldown -c rolldown.config.ts && tsgo -p tsconfig.declarations.json",
|
|
20
|
+
"typecheck": "tsgo --noEmit -p tsconfig.json && tsgo --noEmit -p tsconfig.tests.json",
|
|
21
|
+
"test": "vitest run"
|
|
22
|
+
},
|
|
23
|
+
<% } else { %> "private": true,
|
|
24
|
+
"type": "module",
|
|
25
|
+
"description": "<%= it.description %>",
|
|
26
|
+
"main": "dist/index.js",
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "rolldown -c rolldown.config.ts",
|
|
29
|
+
"typecheck": "tsgo --noEmit",
|
|
30
|
+
"test": "vitest run"
|
|
31
|
+
},
|
|
32
|
+
<% } %> "peerDependencies": {
|
|
33
|
+
"nodefony": "*",
|
|
34
|
+
"@nodefony/framework": "*",
|
|
35
|
+
<% if (it.needsRealtime) { %> "@nodefony/realtime": "*",
|
|
36
|
+
<% } %><% if (it.front) { %> "@nodefony/frontend": "*",
|
|
37
|
+
<% } %><% if (it.publishable) { %> "zod": "<%= it.pkg["zod"] %>",
|
|
38
|
+
<% } %> "@nodefony/http": "*"
|
|
39
|
+
},
|
|
40
|
+
<% if (it.publishable) { %> "devDependencies": {
|
|
41
|
+
"nodefony": "*",
|
|
42
|
+
"@nodefony/framework": "*",
|
|
43
|
+
<% if (it.needsRealtime) { %> "@nodefony/realtime": "*",
|
|
44
|
+
<% } %><% if (it.front) { %> "@nodefony/frontend": "*",
|
|
45
|
+
<% } %> "@nodefony/http": "*"
|
|
46
|
+
},
|
|
47
|
+
"dependencies": {
|
|
48
|
+
"tslib": "<%= it.pkg["tslib"] %>"
|
|
49
|
+
}
|
|
50
|
+
<% } else { %> "dependencies": {
|
|
51
|
+
"zod": "<%= it.pkg["zod"] %>"
|
|
52
|
+
}
|
|
53
|
+
<% } %>}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { defineNodefonyRolldownConfig } from "nodefony/bundler";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Build du module — socle rolldown PARTAGÉ du framework (`nodefony/bundler`),
|
|
5
|
+
* exactement comme l'app : `preserveModules` (l'arborescence source est
|
|
6
|
+
* reproduite dans `dist/`), plateforme node, ESM.
|
|
7
|
+
*
|
|
8
|
+
* `externalDeps` externalise tout ce que le module DÉCLARE (peerDependencies +
|
|
9
|
+
* dependencies) : `nodefony`, `@nodefony/*` et `zod` ne sont pas recopiés dans
|
|
10
|
+
* le bundle — ils sont résolus au runtime depuis les node_modules de l'app.
|
|
11
|
+
* Le Kernel charge ensuite `dist/index.js` par le nom du paquet
|
|
12
|
+
* (manifeste `modules` de `nodefony.config.ts`).
|
|
13
|
+
*/
|
|
14
|
+
export default defineNodefonyRolldownConfig({ externalDeps: true });
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { define<%= it.pascal %>Config } from "../nodefony/config/defineModuleConfig";
|
|
3
|
+
import defaults from "../nodefony/config/config";
|
|
4
|
+
import <%= it.pascal %>Module from "../index";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Ce que ce test prouve (et pourquoi il existe dès la naissance du module) :
|
|
8
|
+
* 1. le module s'IMPORTE sans kernel — donc il reste testable hors serveur
|
|
9
|
+
* (un module qui déréférence le kernel au chargement est intestable) ;
|
|
10
|
+
* 2. sa config a des défauts sûrs et REFUSE ce qui est invalide — la panne
|
|
11
|
+
* arrive au boot, nommée, pas en production sur un `undefined`.
|
|
12
|
+
*/
|
|
13
|
+
describe("<%= it.name %>", () => {
|
|
14
|
+
it("s'importe sans kernel", () => {
|
|
15
|
+
expect(<%= it.pascal %>Module).toBeTypeOf("function");
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it("applique ses défauts", () => {
|
|
19
|
+
const config = define<%= it.pascal %>Config({});
|
|
20
|
+
expect(config.enabled).toBe(true);
|
|
21
|
+
expect(config.greeting).toBe(defaults.greeting);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it("refuse une config invalide", () => {
|
|
25
|
+
expect(() =>
|
|
26
|
+
define<%= it.pascal %>Config({ greeting: "" } as never),
|
|
27
|
+
).toThrow(/greeting/u);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
// Une faute de frappe n'est pas une valeur invalide : Zod retire par défaut
|
|
31
|
+
// les clés qu'il ne connaît PAS, si bien que l'application démarrerait en
|
|
32
|
+
// ignorant ce qui a été écrit. Le schéma est `strictObject` pour cette raison,
|
|
33
|
+
// et ce cas est ce qui l'empêche de redevenir un `object` au premier refactor.
|
|
34
|
+
it("refuse une clé INCONNUE plutôt que de l'ignorer", () => {
|
|
35
|
+
expect(() =>
|
|
36
|
+
define<%= it.pascal %>Config({ gretting: "faute de frappe" } as never),
|
|
37
|
+
).toThrow(/gretting/u);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2024",
|
|
4
|
+
"module": "ESNext",
|
|
5
|
+
"moduleResolution": "Bundler",
|
|
6
|
+
"lib": ["ESNext", "DOM", "DOM.Iterable"],
|
|
7
|
+
"types": ["node"],
|
|
8
|
+
"rootDir": "./",
|
|
9
|
+
"outDir": "./dist",
|
|
10
|
+
"strict": true,
|
|
11
|
+
"experimentalDecorators": true,
|
|
12
|
+
"emitDecoratorMetadata": true,
|
|
13
|
+
"esModuleInterop": true,
|
|
14
|
+
"skipLibCheck": true,
|
|
15
|
+
"resolveJsonModule": true,
|
|
16
|
+
"forceConsistentCasingInFileNames": true,
|
|
17
|
+
<% if (it.frontend === "react") { %> "jsx": "react-jsx",
|
|
18
|
+
<% } %><% if (it.publishable) { %> "stripInternal": true,
|
|
19
|
+
"noUnusedLocals": true,
|
|
20
|
+
"noUnusedParameters": true,
|
|
21
|
+
"declaration": true,
|
|
22
|
+
"declarationDir": "./dist/types"
|
|
23
|
+
<% } else { %> "noEmit": true
|
|
24
|
+
<% } %> },
|
|
25
|
+
"include": [
|
|
26
|
+
"index.ts",
|
|
27
|
+
"rolldown.config.ts",
|
|
28
|
+
<% if (!it.publishable) { %> "vitest.config.ts",
|
|
29
|
+
<% } %> "nodefony/**/*.ts"<% if (it.frontend === "react") { %>,
|
|
30
|
+
"frontend/src/**/*"<% } %><% if (it.frontend === "vue" || it.frontend === "angular" || it.frontend === "svelte") { %>,
|
|
31
|
+
"frontend/src/**/*.ts"<% } %><% if (!it.publishable) { %>,
|
|
32
|
+
"tests/**/*.ts"<% } %>
|
|
33
|
+
],
|
|
34
|
+
<% if (it.publishable) { %> "exclude": [
|
|
35
|
+
"node_modules",
|
|
36
|
+
"dist",
|
|
37
|
+
"tests/**",
|
|
38
|
+
"**/*.test.ts",
|
|
39
|
+
"vitest.config.ts"
|
|
40
|
+
]
|
|
41
|
+
<% } else { %> "exclude": ["node_modules", "dist"]
|
|
42
|
+
<% } %>}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { defineConfig } from "vitest/config";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Config Vitest du module — suite UNITAIRE, qui ne frappe jamais le réseau.
|
|
5
|
+
*
|
|
6
|
+
* ⚠️ Le bloc `oxc` est OBLIGATOIRE : Vitest transforme les tests via oxc/rolldown,
|
|
7
|
+
* qui ne lit PAS le `experimentalDecorators` du tsconfig. Sans lui, les décorateurs
|
|
8
|
+
* (@controller, @route, @services, DI) sortiraient bruts et Node lèverait
|
|
9
|
+
* `SyntaxError` au chargement. `emitDecoratorMetadata` est requis par l'injection
|
|
10
|
+
* de dépendances (résolution des types constructeur via `design:paramtypes`).
|
|
11
|
+
*
|
|
12
|
+
* ⚠️ Les `*.e2e.test.ts` sont EXCLUS, exactement comme dans l'application.
|
|
13
|
+
* `nodefony create entity --module <ce module>` en pose un par ressource, et un
|
|
14
|
+
* test de bout en bout suppose un serveur DÉMARRÉ : c'est la suite e2e de
|
|
15
|
+
* l'application qui le lance, une fois pour toutes, puisqu'un module ne démarre
|
|
16
|
+
* pas seul. Sans cette exclusion, `npm test` du module frappe un serveur absent
|
|
17
|
+
* et échoue — chaque gabarit étant pourtant juste isolément.
|
|
18
|
+
*/
|
|
19
|
+
export default defineConfig({
|
|
20
|
+
test: {
|
|
21
|
+
include: ["tests/**/*.test.ts"],
|
|
22
|
+
exclude: ["**/node_modules/**", "**/dist/**", "tests/**/*.e2e.test.ts"],
|
|
23
|
+
},
|
|
24
|
+
oxc: {
|
|
25
|
+
decorator: { legacy: true, emitDecoratorMetadata: true },
|
|
26
|
+
},
|
|
27
|
+
});
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# CLAUDE.md — <%= it.pkgName %>
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
> Fiche d'INSTRUCTIONS pour une IA qui va coder dans ce paquet. À lire AVANT
|
|
5
|
+
> d'éditer. Compléments : [`MEMORY.md`](./MEMORY.md) (internals, gotchas),
|
|
6
|
+
> [`README.md`](./README.md) (usage humain), [`AGENTS.md`](./AGENTS.md)
|
|
7
|
+
> (contexte agent, standard « le plus proche gagne »).
|
|
8
|
+
|
|
9
|
+
## Rôle du module
|
|
10
|
+
|
|
11
|
+
<%= it.description %>
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## Structure
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
<%= it.name %>/
|
|
18
|
+
├── index.ts ← classe Module + @services + re-exports publics
|
|
19
|
+
├── nodefony/
|
|
20
|
+
│ ├── config/{config.ts,defineModuleConfig.ts} ← schéma Zod (source unique) + builder
|
|
21
|
+
│ ├── service/<%= it.pascal %>Service.ts ← service injectable
|
|
22
|
+
│ ├── interfaces/I<%= it.pascal %>Service.ts ← contrat public
|
|
23
|
+
│ └── src/errors/<%= it.pascal %>Error.ts ← erreurs typées
|
|
24
|
+
├── tests/ ← vitest
|
|
25
|
+
└── docs/ ← doc du module (surfacée dans Studio)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Décisions figées
|
|
29
|
+
|
|
30
|
+
- **Paquet PUBLIABLE** : `exports`/`types` pointent vers du GÉNÉRÉ (`dist/`,
|
|
31
|
+
`dist/types/`) — jamais un `.d.ts` écrit à la main. `files` borne ce qui part
|
|
32
|
+
sur npm.
|
|
33
|
+
- **Config Zod** : `config/config.ts` est la SOURCE UNIQUE (type + validation +
|
|
34
|
+
défaut + doc). Un défaut ne se retape nulle part ailleurs. Validée au boot
|
|
35
|
+
(`onKernelRegister`) → plante propre, jamais un `undefined.x` silencieux.
|
|
36
|
+
- **TypeScript strict** — zéro `any`, zéro `@ts-ignore`, ESM seul, imports Node
|
|
37
|
+
préfixés `node:`, interfaces préfixées `I`.
|
|
38
|
+
|
|
39
|
+
## Ce qu'il ne faut JAMAIS faire sans accord
|
|
40
|
+
|
|
41
|
+
- Modifier `rolldown.config.ts` / `tsconfig*.json`.
|
|
42
|
+
- Retaper un défaut de config ailleurs que dans le schéma Zod.
|
|
43
|
+
- Ajouter une dépendance runtime sans peser son coût (taille + mémoire).
|
|
44
|
+
|
|
45
|
+
## Tests / build
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
npm test # vitest run
|
|
49
|
+
npm run build # rolldown + déclarations .d.ts
|
|
50
|
+
npm run typecheck
|
|
51
|
+
```
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# MEMORY.md — <%= it.pkgName %>
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
> Internals pour une IA en cours de session. Ultra-concis, zéro prose, zéro
|
|
5
|
+
> date : ce fichier décrit la vérité COURANTE du code — l'historique est dans
|
|
6
|
+
> `git log`. Mettre à jour = éditer la section concernée EN PLACE.
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
<%= it.description %>
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## Core Components
|
|
14
|
+
|
|
15
|
+
| Symbole | Fichier | Rôle |
|
|
16
|
+
| --- | --- | --- |
|
|
17
|
+
| `<%= it.pascal %>` | `index.ts` | classe Module — déclare `@services`, valide la config |
|
|
18
|
+
| `<%= it.pascal %>Service` | `nodefony/service/<%= it.pascal %>Service.ts` | service injectable, clé conteneur `<%= it.name %>` |
|
|
19
|
+
| `<%= it.camel %>ConfigSchema` | `nodefony/config/config.ts` | schéma Zod = source unique des défauts |
|
|
20
|
+
| `define<%= it.pascal %>Config` | `nodefony/config/defineModuleConfig.ts` | parse + freeze au boot |
|
|
21
|
+
| `<%= it.pascal %>Error` | `nodefony/src/errors/<%= it.pascal %>Error.ts` | erreurs typées du module |
|
|
22
|
+
|
|
23
|
+
## Config
|
|
24
|
+
|
|
25
|
+
- Surcharge par l'app : `use("<%= it.pkgName %>", { … })` dans son `nodefony.config.ts`.
|
|
26
|
+
- Surcharge par l'environnement : `NF__<%= it.upper %>__<CHEMIN>`.
|
|
27
|
+
- Défauts matérialisés par `<%= it.camel %>ConfigSchema.parse({})` — ne jamais les retaper.
|
|
28
|
+
|
|
29
|
+
## Behaviors
|
|
30
|
+
|
|
31
|
+
- `onKernelRegister` valide la config et réassigne `this.options` AVANT que les
|
|
32
|
+
`@services` ne soient instanciés (`onBoot`).
|
|
33
|
+
|
|
34
|
+
## Gotchas
|
|
35
|
+
|
|
36
|
+
- La clé de CONTENEUR (`super("<%= it.name %>", …)`) n'est pas le nom de la CLASSE :
|
|
37
|
+
`container.get("<%= it.name %>")`.
|
|
38
|
+
- Ne jamais déréférencer le Kernel au top-level d'un fichier chargé à l'import
|
|
39
|
+
(`Nodefony.getKernel()` rend `null` avant le boot) — passer par un getter.
|