@pikku/cli 0.11.3 → 0.12.1
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/cli.schema.json +1 -1
- package/console-app/android-chrome-192x192.png +0 -0
- package/console-app/android-chrome-512x512.png +0 -0
- package/console-app/apple-touch-icon.png +0 -0
- package/console-app/assets/index-0Ui5UudO.css +1 -0
- package/console-app/assets/index-DiYPTQU_.js +676 -0
- package/console-app/favicon-16x16.png +0 -0
- package/console-app/favicon-32x32.png +0 -0
- package/console-app/favicon.ico +0 -0
- package/console-app/index.html +34 -0
- package/console-app/pikku-console-logo.png +0 -0
- package/console-app/site.webmanifest +19 -0
- package/console-app/wiring-icons/cron.svg +6 -0
- package/console-app/wiring-icons/function.png +0 -0
- package/console-app/wiring-icons/http.svg +2 -0
- package/console-app/wiring-icons/mcp.svg +1 -0
- package/console-app/wiring-icons/queue.svg +18 -0
- package/console-app/wiring-icons/sse.svg +5 -0
- package/console-app/wiring-icons/websocket.svg +8 -0
- package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +46 -0
- package/dist/.pikku/agent/pikku-agent-types.gen.js +17 -0
- package/dist/.pikku/agent/pikku-agent-wirings-meta.gen.d.ts +1 -0
- package/dist/.pikku/agent/pikku-agent-wirings-meta.gen.js +6 -0
- package/dist/.pikku/agent/pikku-agent-wirings-meta.gen.json +3 -0
- package/dist/.pikku/agent/pikku-agent-wirings.gen.d.ts +4 -0
- package/dist/.pikku/agent/pikku-agent-wirings.gen.js +4 -0
- package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +27 -14
- package/dist/.pikku/channel/pikku-channel-types.gen.js +21 -4
- package/dist/.pikku/channel/pikku-channels-meta.gen.js +2 -2
- package/dist/.pikku/channel/pikku-channels.gen.d.ts +1 -1
- package/dist/.pikku/channel/pikku-channels.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-channel.js +72 -3
- package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-client.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +9 -1
- package/dist/.pikku/cli/pikku-cli-types.gen.js +12 -2
- package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +2 -2
- package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.json +261 -11
- package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-wirings.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -5
- package/dist/.pikku/cli/pikku-cli.gen.js +1 -5
- package/dist/.pikku/console/pikku-node-types.gen.d.ts +6 -0
- package/dist/.pikku/console/pikku-node-types.gen.js +1 -0
- package/dist/.pikku/function/pikku-function-types.gen.d.ts +83 -29
- package/dist/.pikku/function/pikku-function-types.gen.js +51 -15
- package/dist/.pikku/function/pikku-functions-meta.gen.js +2 -2
- package/dist/.pikku/function/pikku-functions-meta.gen.json +896 -192
- package/dist/.pikku/function/pikku-functions.gen.d.ts +1 -0
- package/dist/.pikku/function/pikku-functions.gen.js +119 -0
- package/dist/.pikku/http/pikku-http-types.gen.d.ts +55 -19
- package/dist/.pikku/http/pikku-http-types.gen.js +11 -2
- package/dist/.pikku/http/pikku-http-wirings-meta.gen.js +2 -2
- package/dist/.pikku/http/pikku-http-wirings.gen.d.ts +1 -1
- package/dist/.pikku/http/pikku-http-wirings.gen.js +1 -1
- package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +26 -27
- package/dist/.pikku/mcp/pikku-mcp-types.gen.js +2 -12
- package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.js +2 -2
- package/dist/.pikku/mcp/pikku-mcp-wirings.gen.d.ts +1 -1
- package/dist/.pikku/mcp/pikku-mcp-wirings.gen.js +2 -2
- package/dist/.pikku/node/pikku-node-types.gen.d.ts +1 -0
- package/dist/.pikku/node/pikku-node-types.gen.js +1 -0
- package/dist/.pikku/pikku-bootstrap.gen.d.ts +5 -4
- package/dist/.pikku/pikku-bootstrap.gen.js +13 -2
- package/dist/.pikku/pikku-services.gen.d.ts +6 -1
- package/dist/.pikku/pikku-services.gen.js +5 -0
- package/dist/.pikku/pikku-types.gen.d.ts +4 -2
- package/dist/.pikku/pikku-types.gen.js +7 -3
- package/dist/.pikku/pikku-websocket.gen.d.ts +1 -1
- package/dist/.pikku/pikku-websocket.gen.js +1 -1
- package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
- package/dist/.pikku/queue/pikku-queue-types.gen.js +2 -2
- package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +2 -2
- package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +1 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +1 -1
- package/dist/.pikku/rpc/pikku-remote-rpc-workers.gen.d.ts +3 -3
- package/dist/.pikku/rpc/pikku-remote-rpc-workers.gen.js +3 -3
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.d.ts +1 -0
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +6 -0
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.json +70 -0
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +2 -2
- package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.js +2 -2
- package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.d.ts +1 -1
- package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.js +1 -1
- package/dist/.pikku/schemas/register.gen.js +43 -19
- package/dist/.pikku/schemas/schemas/BootstrapInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ConsoleCommandInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuAIAgentOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuCLIOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuConsoleFunctionsOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuFunctionsOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuHTTPOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuMCPOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuMiddlewareOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuNewAddonInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuNewFunctionInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuNewMiddlewareInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuNewPermissionInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuNewWiringInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuNodesMetaOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuPackageOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuPermissionsOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuPublicAgentOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuPublicRPCOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuRPCOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuRemoteRPCOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuSchedulerOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuTriggerOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuVersionsInitInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuWorkflowOutput.schema.json +1 -1
- package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +5 -0
- package/dist/.pikku/secrets/pikku-secret-types.gen.js +4 -0
- package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +11 -0
- package/dist/.pikku/secrets/pikku-secrets.gen.js +10 -0
- package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +113 -0
- package/dist/.pikku/trigger/pikku-trigger-types.gen.js +33 -0
- package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +5 -0
- package/dist/.pikku/variables/pikku-variable-types.gen.js +4 -0
- package/dist/.pikku/variables/pikku-variables.gen.d.ts +11 -0
- package/dist/.pikku/variables/pikku-variables.gen.js +10 -0
- package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +28 -180
- package/dist/.pikku/workflow/pikku-workflow-types.gen.js +18 -106
- package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +2 -2
- package/dist/.pikku/workflow/pikku-workflow-wirings.gen.d.ts +1 -1
- package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
- package/dist/bin/pikku.js +20 -47
- package/dist/src/cli.wiring.js +210 -2
- package/dist/src/functions/commands/all.d.ts +1 -1
- package/dist/src/functions/commands/all.js +83 -180
- package/dist/src/functions/commands/bootstrap.d.ts +1 -1
- package/dist/src/functions/commands/bootstrap.js +13 -22
- package/dist/src/functions/commands/console.d.ts +7 -0
- package/dist/src/functions/commands/console.js +106 -0
- package/dist/src/functions/commands/info.d.ts +9 -0
- package/dist/src/functions/commands/info.js +283 -0
- package/dist/src/functions/commands/new-addon.d.ts +34 -0
- package/dist/src/functions/commands/new-addon.js +636 -0
- package/dist/src/functions/commands/new-function.d.ts +10 -0
- package/dist/src/functions/commands/new-function.js +79 -0
- package/dist/src/functions/commands/new-middleware.d.ts +10 -0
- package/dist/src/functions/commands/new-middleware.js +48 -0
- package/dist/src/functions/commands/new-permission.d.ts +10 -0
- package/dist/src/functions/commands/new-permission.js +45 -0
- package/dist/src/functions/commands/new-wiring.d.ts +10 -0
- package/dist/src/functions/commands/new-wiring.js +102 -0
- package/dist/src/functions/commands/pikku-command-bootstrap.d.ts +4 -0
- package/dist/src/functions/commands/pikku-command-bootstrap.js +38 -0
- package/dist/src/functions/commands/pikku-command-summary.d.ts +1 -0
- package/dist/src/functions/commands/pikku-command-summary.js +55 -0
- package/dist/src/functions/commands/versions-check.d.ts +1 -0
- package/dist/src/functions/commands/versions-check.js +99 -0
- package/dist/src/functions/commands/versions-init.d.ts +7 -0
- package/dist/src/functions/commands/versions-init.js +15 -0
- package/dist/src/functions/commands/versions-update.d.ts +1 -0
- package/dist/src/functions/commands/versions-update.js +20 -0
- package/dist/src/functions/commands/watch.d.ts +1 -1
- package/dist/src/functions/commands/watch.js +4 -5
- package/dist/src/functions/runtimes/fetch/index.d.ts +1 -0
- package/dist/src/functions/{wirings → runtimes}/fetch/index.js +3 -3
- package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.d.ts +1 -1
- package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.js +6 -7
- package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.d.ts +1 -1
- package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.js +4 -16
- package/dist/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.js +4 -8
- package/dist/src/functions/runtimes/websocket/pikku-command-websocket-typed.d.ts +1 -0
- package/dist/src/functions/{wirings/channels → runtimes/websocket}/pikku-command-websocket-typed.js +2 -2
- package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent-types.d.ts +1 -0
- package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent-types.js +20 -0
- package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent.d.ts +1 -0
- package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent.js +68 -0
- package/dist/src/functions/wirings/ai-agent/pikku-command-public-agent.d.ts +1 -0
- package/dist/src/functions/wirings/ai-agent/pikku-command-public-agent.js +23 -0
- package/dist/src/functions/wirings/ai-agent/serialize-agent-map.d.ts +4 -0
- package/dist/src/functions/wirings/ai-agent/serialize-agent-map.js +48 -0
- package/dist/src/functions/wirings/ai-agent/serialize-ai-agent-types.d.ts +1 -0
- package/dist/src/functions/wirings/ai-agent/serialize-ai-agent-types.js +76 -0
- package/dist/src/functions/wirings/ai-agent/serialize-public-agent.d.ts +1 -0
- package/dist/src/functions/wirings/ai-agent/serialize-public-agent.js +68 -0
- package/dist/src/functions/wirings/channels/pikku-channels.d.ts +1 -1
- package/dist/src/functions/wirings/channels/pikku-channels.js +2 -2
- package/dist/src/functions/wirings/channels/pikku-command-channel-types.d.ts +1 -1
- package/dist/src/functions/wirings/channels/pikku-command-channel-types.js +3 -3
- package/dist/src/functions/wirings/channels/pikku-command-channels-map.d.ts +1 -1
- package/dist/src/functions/wirings/channels/pikku-command-channels-map.js +2 -2
- package/dist/src/functions/wirings/channels/pikku-command-channels.d.ts +1 -1
- package/dist/src/functions/wirings/channels/pikku-command-channels.js +2 -2
- package/dist/src/functions/wirings/channels/serialize-channel-types.d.ts +1 -1
- package/dist/src/functions/wirings/channels/serialize-channel-types.js +47 -17
- package/dist/src/functions/wirings/channels/serialize-typed-channel-map.d.ts +5 -4
- package/dist/src/functions/wirings/channels/serialize-typed-channel-map.js +8 -8
- package/dist/src/functions/wirings/cli/pikku-command-cli-entry.d.ts +1 -1
- package/dist/src/functions/wirings/cli/pikku-command-cli-entry.js +3 -7
- package/dist/src/functions/wirings/cli/pikku-command-cli-types.d.ts +1 -1
- package/dist/src/functions/wirings/cli/pikku-command-cli-types.js +1 -1
- package/dist/src/functions/wirings/cli/pikku-command-cli.d.ts +1 -1
- package/dist/src/functions/wirings/cli/pikku-command-cli.js +2 -2
- package/dist/src/functions/wirings/cli/serialize-channel-cli-client.d.ts +2 -2
- package/dist/src/functions/wirings/cli/serialize-channel-cli.d.ts +1 -1
- package/dist/src/functions/wirings/cli/serialize-channel-cli.js +8 -8
- package/dist/src/functions/wirings/cli/serialize-cli-types.js +14 -1
- package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.d.ts +3 -3
- package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.js +10 -11
- package/dist/src/functions/wirings/console/pikku-command-console-functions.d.ts +1 -0
- package/dist/src/functions/wirings/console/pikku-command-console-functions.js +24 -0
- package/dist/src/functions/wirings/console/pikku-command-node-types.d.ts +1 -0
- package/dist/src/functions/wirings/console/pikku-command-node-types.js +21 -0
- package/dist/src/functions/wirings/console/pikku-command-nodes-meta.d.ts +1 -0
- package/dist/src/functions/wirings/console/pikku-command-nodes-meta.js +79 -0
- package/dist/src/functions/wirings/console/serialize-console-functions.d.ts +1 -0
- package/dist/src/functions/wirings/console/serialize-console-functions.js +90 -0
- package/dist/src/functions/wirings/console/serialize-node-types.d.ts +1 -0
- package/dist/src/functions/wirings/console/serialize-node-types.js +11 -0
- package/dist/src/functions/wirings/functions/pikku-command-addon-types.d.ts +1 -0
- package/dist/src/functions/wirings/functions/pikku-command-addon-types.js +33 -0
- package/dist/src/functions/wirings/functions/pikku-command-function-types-split.d.ts +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-function-types-split.js +2 -2
- package/dist/src/functions/wirings/functions/pikku-command-function-types.d.ts +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-function-types.js +6 -6
- package/dist/src/functions/wirings/functions/pikku-command-functions.d.ts +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-functions.js +9 -15
- package/dist/src/functions/wirings/functions/pikku-command-services.d.ts +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-services.js +1 -1
- package/dist/src/functions/wirings/functions/schemas.d.ts +1 -4
- package/dist/src/functions/wirings/functions/schemas.js +8 -10
- package/dist/src/functions/wirings/functions/serialize-addon-types.d.ts +1 -0
- package/dist/src/functions/wirings/functions/serialize-addon-types.js +78 -0
- package/dist/src/functions/wirings/functions/serialize-function-imports.d.ts +3 -4
- package/dist/src/functions/wirings/functions/serialize-function-imports.js +13 -20
- package/dist/src/functions/wirings/functions/serialize-function-types.d.ts +1 -1
- package/dist/src/functions/wirings/functions/serialize-function-types.js +126 -45
- package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.d.ts +1 -1
- package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.js +5 -2
- package/dist/src/functions/wirings/http/pikku-command-http-map.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-command-http-map.js +4 -4
- package/dist/src/functions/wirings/http/pikku-command-http-routes.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-command-http-routes.js +2 -2
- package/dist/src/functions/wirings/http/pikku-command-http-types.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-command-http-types.js +1 -1
- package/dist/src/functions/wirings/http/pikku-command-openapi.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-command-openapi.js +11 -9
- package/dist/src/functions/wirings/http/pikku-http-routes.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-http-routes.js +2 -2
- package/dist/src/functions/wirings/http/serialize-http-types.js +65 -20
- package/dist/src/functions/wirings/http/serialize-typed-http-map.d.ts +7 -4
- package/dist/src/functions/wirings/http/serialize-typed-http-map.js +33 -46
- package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.d.ts +1 -1
- package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.js +5 -6
- package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.d.ts +1 -1
- package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.js +1 -1
- package/dist/src/functions/wirings/mcp/pikku-command-mcp.d.ts +1 -1
- package/dist/src/functions/wirings/mcp/pikku-command-mcp.js +14 -5
- package/dist/src/functions/wirings/mcp/serialize-mcp-types.js +27 -36
- package/dist/src/functions/wirings/middleware/pikku-command-middleware.d.ts +1 -1
- package/dist/src/functions/wirings/middleware/pikku-command-middleware.js +11 -34
- package/dist/src/functions/wirings/middleware/serialize-middleware-imports.js +19 -24
- package/dist/src/functions/wirings/package/pikku-command-package-types.d.ts +2 -0
- package/dist/src/functions/wirings/package/pikku-command-package-types.js +30 -0
- package/dist/src/functions/wirings/package/pikku-command-package.d.ts +1 -1
- package/dist/src/functions/wirings/package/pikku-command-package.js +8 -8
- package/dist/src/functions/wirings/package/serialize-package-types.d.ts +2 -0
- package/dist/src/functions/wirings/package/serialize-package-types.js +10 -0
- package/dist/src/functions/wirings/package/serialize-package.js +2 -2
- package/dist/src/functions/wirings/permissions/pikku-command-permissions.d.ts +1 -1
- package/dist/src/functions/wirings/permissions/pikku-command-permissions.js +7 -7
- package/dist/src/functions/wirings/queue/pikku-command-queue-map.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-command-queue-map.js +3 -3
- package/dist/src/functions/wirings/queue/pikku-command-queue-service.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-command-queue-service.js +2 -2
- package/dist/src/functions/wirings/queue/pikku-command-queue-types.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-command-queue-types.js +1 -1
- package/dist/src/functions/wirings/queue/pikku-command-queue.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-command-queue.js +1 -1
- package/dist/src/functions/wirings/queue/pikku-queue-map.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-queue-map.js +3 -3
- package/dist/src/functions/wirings/queue/pikku-queue.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-queue.js +1 -1
- package/dist/src/functions/wirings/queue/serialize-queue-map.d.ts +6 -3
- package/dist/src/functions/wirings/queue/serialize-queue-map.js +12 -40
- package/dist/src/functions/wirings/queue/serialize-queue-meta.d.ts +1 -1
- package/dist/src/functions/wirings/queue/serialize-queue-meta.js +9 -10
- package/dist/src/functions/wirings/queue/serialize-queue-types.js +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-public-rpc.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-public-rpc.js +2 -2
- package/dist/src/functions/wirings/rpc/pikku-command-remote-rpc.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-remote-rpc.js +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.js +2 -2
- package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.d.ts +2 -2
- package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.js +14 -9
- package/dist/src/functions/wirings/rpc/pikku-command-rpc.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-rpc.js +3 -2
- package/dist/src/functions/wirings/rpc/serialize-public-rpc.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/serialize-public-rpc.js +34 -20
- package/dist/src/functions/wirings/rpc/serialize-remote-rpc.js +2 -2
- package/dist/src/functions/wirings/rpc/serialize-rpc-wrapper.js +55 -8
- package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.d.ts +11 -3
- package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.js +106 -71
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.d.ts +1 -1
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.js +1 -1
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.d.ts +1 -1
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.js +1 -1
- package/dist/src/functions/wirings/scheduler/serialize-scheduler-meta.d.ts +2 -2
- package/dist/src/functions/wirings/scheduler/serialize-scheduler-meta.js +13 -12
- package/dist/src/functions/wirings/scheduler/serialize-scheduler-types.js +1 -1
- package/dist/src/functions/wirings/secrets/pikku-command-secrets.d.ts +1 -0
- package/dist/src/functions/wirings/secrets/pikku-command-secrets.js +31 -0
- package/dist/src/functions/wirings/secrets/serialize-secrets-types.d.ts +9 -0
- package/dist/src/functions/wirings/secrets/serialize-secrets-types.js +64 -0
- package/dist/src/functions/wirings/triggers/pikku-command-trigger-types.d.ts +1 -0
- package/dist/src/functions/wirings/triggers/pikku-command-trigger-types.js +24 -0
- package/dist/src/functions/wirings/triggers/pikku-command-trigger.d.ts +1 -0
- package/dist/src/functions/wirings/triggers/pikku-command-trigger.js +40 -0
- package/dist/src/functions/wirings/triggers/serialize-trigger-meta.d.ts +5 -0
- package/dist/src/functions/wirings/triggers/serialize-trigger-meta.js +35 -0
- package/dist/src/functions/wirings/triggers/serialize-trigger-types.d.ts +4 -0
- package/dist/src/functions/wirings/triggers/serialize-trigger-types.js +163 -0
- package/dist/src/functions/wirings/variables/pikku-command-variables.d.ts +1 -0
- package/dist/src/functions/wirings/variables/pikku-command-variables.js +31 -0
- package/dist/src/functions/wirings/variables/serialize-variables-types.d.ts +9 -0
- package/dist/src/functions/wirings/variables/serialize-variables-types.js +53 -0
- package/dist/src/functions/wirings/workflow/pikku-command-workflow.d.ts +1 -1
- package/dist/src/functions/wirings/workflow/pikku-command-workflow.js +8 -37
- package/dist/src/functions/wirings/workflow/serialize-workflow-map.d.ts +5 -3
- package/dist/src/functions/wirings/workflow/serialize-workflow-map.js +63 -12
- package/dist/src/functions/wirings/workflow/serialize-workflow-meta.js +32 -33
- package/dist/src/functions/wirings/workflow/serialize-workflow-registration.d.ts +1 -1
- package/dist/src/functions/wirings/workflow/serialize-workflow-registration.js +4 -31
- package/dist/src/functions/wirings/workflow/serialize-workflow-types.d.ts +1 -6
- package/dist/src/functions/wirings/workflow/serialize-workflow-types.js +60 -256
- package/dist/src/functions/wirings/workflow/serialize-workflow-workers.js +5 -5
- package/dist/src/services/cli-logger-forwarder.service.d.ts +4 -3
- package/dist/src/services/cli-logger-forwarder.service.js +1 -1
- package/dist/src/services/cli-logger.service.d.ts +3 -2
- package/dist/src/services/cli-logger.service.js +1 -1
- package/dist/src/services.d.ts +5 -4
- package/dist/src/services.js +53 -7
- package/dist/src/utils/check-required-types.d.ts +1 -1
- package/dist/src/utils/command-summary.d.ts +2 -1
- package/dist/src/utils/command-summary.js +2 -1
- package/dist/src/utils/contract-versions.d.ts +6 -0
- package/dist/src/utils/contract-versions.js +25 -0
- package/dist/src/utils/file-import-path.js +20 -6
- package/dist/src/utils/file-writer.d.ts +6 -1
- package/dist/src/utils/file-writer.js +14 -1
- package/dist/src/utils/generate-bootstrap-file.d.ts +2 -2
- package/dist/src/utils/openapi/codegen.d.ts +19 -0
- package/dist/src/utils/openapi/codegen.js +288 -0
- package/dist/src/utils/openapi/naming.d.ts +30 -0
- package/dist/src/utils/openapi/naming.js +167 -0
- package/dist/src/utils/openapi/parse-openapi.d.ts +36 -0
- package/dist/src/utils/openapi/parse-openapi.js +196 -0
- package/dist/src/utils/openapi/zod-codegen.d.ts +53 -0
- package/dist/src/utils/openapi/zod-codegen.js +251 -0
- package/dist/src/utils/pikku-cli-config.d.ts +2 -2
- package/dist/src/utils/pikku-cli-config.js +80 -23
- package/dist/src/utils/pikku-files-and-methods.d.ts +1 -2
- package/dist/src/utils/pikku-files-and-methods.js +15 -60
- package/dist/src/utils/serialize-import-map.d.ts +3 -2
- package/dist/src/utils/serialize-import-map.js +4 -55
- package/dist/src/utils/serialize-meta-ts.d.ts +8 -0
- package/dist/src/utils/serialize-meta-ts.js +12 -0
- package/dist/src/utils/serialize-schemas.d.ts +3 -0
- package/dist/src/utils/serialize-schemas.js +38 -0
- package/dist/src/utils/strip-verbose-meta.d.ts +5 -5
- package/dist/src/utils/strip-verbose-meta.js +15 -15
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +19 -10
- package/.pikku/channel/pikku-channel-types.gen.ts +0 -148
- package/.pikku/channel/pikku-channels-map.gen.d.ts +0 -47
- package/.pikku/channel/pikku-channels-meta.gen.json +0 -1
- package/.pikku/channel/pikku-channels-meta.gen.ts +0 -7
- package/.pikku/channel/pikku-channels.gen.ts +0 -4
- package/.pikku/cli/pikku-cli-channel.ts +0 -92
- package/.pikku/cli/pikku-cli-client.gen.ts +0 -54
- package/.pikku/cli/pikku-cli-types.gen.ts +0 -92
- package/.pikku/cli/pikku-cli-wirings-meta.gen.json +0 -147
- package/.pikku/cli/pikku-cli-wirings-meta.gen.ts +0 -7
- package/.pikku/cli/pikku-cli-wirings.gen.ts +0 -6
- package/.pikku/cli/pikku-cli.gen.ts +0 -41
- package/.pikku/forge/pikku-forge-types.gen.ts +0 -83
- package/.pikku/function/pikku-function-types.gen.ts +0 -572
- package/.pikku/function/pikku-functions-meta-verbose.gen.json +0 -1030
- package/.pikku/function/pikku-functions-meta.gen.json +0 -656
- package/.pikku/function/pikku-functions-meta.gen.ts +0 -6
- package/.pikku/http/pikku-http-types.gen.ts +0 -102
- package/.pikku/http/pikku-http-wirings-map.gen.d.ts +0 -46
- package/.pikku/http/pikku-http-wirings-meta.gen.json +0 -9
- package/.pikku/http/pikku-http-wirings-meta.gen.ts +0 -7
- package/.pikku/http/pikku-http-wirings.gen.ts +0 -4
- package/.pikku/mcp/pikku-mcp-types.gen.ts +0 -192
- package/.pikku/mcp/pikku-mcp-wirings-meta.gen.json +0 -5
- package/.pikku/mcp/pikku-mcp-wirings-meta.gen.ts +0 -9
- package/.pikku/mcp/pikku-mcp-wirings.gen.ts +0 -4
- package/.pikku/mcp/pikku-mcp.gen.json +0 -5
- package/.pikku/pikku-bootstrap.gen.ts +0 -17
- package/.pikku/pikku-services.gen.ts +0 -28
- package/.pikku/pikku-types.gen.ts +0 -30
- package/.pikku/pikku-websocket.gen.ts +0 -90
- package/.pikku/queue/pikku-queue-types.gen.ts +0 -27
- package/.pikku/queue/pikku-queue-workers-wirings-map.gen.d.ts +0 -60
- package/.pikku/queue/pikku-queue-workers-wirings-meta.gen.json +0 -1
- package/.pikku/queue/pikku-queue-workers-wirings-meta.gen.ts +0 -8
- package/.pikku/queue/pikku-queue-workers-wirings.gen.ts +0 -4
- package/.pikku/rpc/pikku-remote-rpc-workers.gen.ts +0 -30
- package/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +0 -62
- package/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +0 -105
- package/.pikku/scheduler/pikku-scheduler-types.gen.ts +0 -25
- package/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.json +0 -1
- package/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.ts +0 -8
- package/.pikku/scheduler/pikku-schedulers-wirings.gen.ts +0 -4
- package/.pikku/schemas/register.gen.ts +0 -71
- package/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuCLIOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuForgeNodesOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuFunctionsOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuHTTPOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuMCPOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuMiddlewareOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuPackageOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuPermissionsOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuPublicRPCOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuRPCOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuRemoteRPCOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuSchedulerOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuWorkflowOutput.schema.json +0 -1
- package/.pikku/services/config.gen.json +0 -104
- package/.pikku/services/getInspectorState.gen.json +0 -10
- package/.pikku/services/jwt.gen.json +0 -13
- package/.pikku/services/logger.gen.json +0 -25
- package/.pikku/services/queueService.gen.json +0 -14
- package/.pikku/services/schedulerService.gen.json +0 -17
- package/.pikku/services/schema.gen.json +0 -14
- package/.pikku/services/secrets.gen.json +0 -13
- package/.pikku/services/variables.gen.json +0 -13
- package/.pikku/services/workflowService.gen.json +0 -31
- package/.pikku/workflow/pikku-workflow-map.gen.d.ts +0 -28
- package/.pikku/workflow/pikku-workflow-types.gen.ts +0 -349
- package/.pikku/workflow/pikku-workflow-wirings-meta.gen.ts +0 -9
- package/.pikku/workflow/pikku-workflow-wirings.gen.ts +0 -3
- package/CHANGELOG.md +0 -957
- package/bin/pikku.ts +0 -88
- package/build.sh +0 -75
- package/dist/.pikku/forge/pikku-forge-types.gen.d.ts +0 -72
- package/dist/.pikku/forge/pikku-forge-types.gen.js +0 -55
- package/dist/.pikku/schemas/schemas/PikkuForgeNodesOutput.schema.json +0 -1
- package/dist/src/functions/wirings/channels/pikku-command-websocket-typed.d.ts +0 -1
- package/dist/src/functions/wirings/fetch/index.d.ts +0 -1
- package/dist/src/functions/wirings/forge/pikku-command-forge-nodes.d.ts +0 -1
- package/dist/src/functions/wirings/forge/pikku-command-forge-nodes.js +0 -90
- package/dist/src/functions/wirings/forge/pikku-command-forge-types.d.ts +0 -1
- package/dist/src/functions/wirings/forge/pikku-command-forge-types.js +0 -26
- package/dist/src/functions/wirings/forge/serialize-forge-types.d.ts +0 -4
- package/dist/src/functions/wirings/forge/serialize-forge-types.js +0 -90
- package/dist/src/functions/wirings/functions/pikku-function-types.d.ts +0 -1
- package/dist/src/functions/wirings/functions/pikku-function-types.js +0 -18
- package/dist/src/functions/wirings/http/openapi-spec-generator.d.ts +0 -81
- package/dist/src/functions/wirings/http/openapi-spec-generator.js +0 -152
- package/dist/src/functions/wirings/mcp/serialize-mcp-json.d.ts +0 -5
- package/dist/src/functions/wirings/mcp/serialize-mcp-json.js +0 -102
- package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.d.ts +0 -11
- package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.js +0 -36
- package/dist/src/functions/wirings/services/pikku-command-service-metadata.d.ts +0 -1
- package/dist/src/functions/wirings/services/pikku-command-service-metadata.js +0 -22
- package/dist/src/utils/custom-types-generator.d.ts +0 -2
- package/dist/src/utils/custom-types-generator.js +0 -41
- package/dist/src/utils/schema-generator.d.ts +0 -7
- package/dist/src/utils/schema-generator.js +0 -238
- package/pikku.config.json +0 -29
- package/run-tests.sh +0 -53
- package/src/cli.wiring.ts +0 -112
- package/src/functions/commands/all.ts +0 -313
- package/src/functions/commands/bootstrap.ts +0 -35
- package/src/functions/commands/watch.ts +0 -61
- package/src/functions/runtimes/nextjs/pikku-command-nextjs.ts +0 -131
- package/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.ts +0 -282
- package/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.ts +0 -215
- package/src/functions/wirings/channels/pikku-channels.ts +0 -59
- package/src/functions/wirings/channels/pikku-command-channel-types.ts +0 -25
- package/src/functions/wirings/channels/pikku-command-channels-map.ts +0 -26
- package/src/functions/wirings/channels/pikku-command-channels.ts +0 -83
- package/src/functions/wirings/channels/pikku-command-websocket-typed.ts +0 -37
- package/src/functions/wirings/channels/serialize-channel-types.ts +0 -151
- package/src/functions/wirings/channels/serialize-typed-channel-map.ts +0 -173
- package/src/functions/wirings/channels/serialize-websocket-wrapper.ts +0 -89
- package/src/functions/wirings/cli/pikku-command-cli-entry.ts +0 -216
- package/src/functions/wirings/cli/pikku-command-cli-types.ts +0 -48
- package/src/functions/wirings/cli/pikku-command-cli.ts +0 -81
- package/src/functions/wirings/cli/serialize-channel-cli-client.ts +0 -184
- package/src/functions/wirings/cli/serialize-channel-cli.ts +0 -134
- package/src/functions/wirings/cli/serialize-cli-types.ts +0 -101
- package/src/functions/wirings/cli/serialize-local-cli-bootstrap.ts +0 -80
- package/src/functions/wirings/fetch/index.ts +0 -36
- package/src/functions/wirings/forge/pikku-command-forge-nodes.ts +0 -135
- package/src/functions/wirings/forge/pikku-command-forge-types.ts +0 -38
- package/src/functions/wirings/forge/serialize-forge-types.ts +0 -94
- package/src/functions/wirings/functions/pikku-command-function-types-split.ts +0 -61
- package/src/functions/wirings/functions/pikku-command-function-types.ts +0 -50
- package/src/functions/wirings/functions/pikku-command-functions.ts +0 -104
- package/src/functions/wirings/functions/pikku-command-services.ts +0 -140
- package/src/functions/wirings/functions/pikku-function-types.ts +0 -45
- package/src/functions/wirings/functions/schemas.ts +0 -56
- package/src/functions/wirings/functions/serialize-function-imports.ts +0 -80
- package/src/functions/wirings/functions/serialize-function-types.ts +0 -587
- package/src/functions/wirings/functions/serialize-pikku-types-hub.ts +0 -39
- package/src/functions/wirings/http/openapi-spec-generator.ts +0 -265
- package/src/functions/wirings/http/pikku-command-http-map.ts +0 -27
- package/src/functions/wirings/http/pikku-command-http-routes.ts +0 -80
- package/src/functions/wirings/http/pikku-command-http-types.ts +0 -25
- package/src/functions/wirings/http/pikku-command-openapi.ts +0 -64
- package/src/functions/wirings/http/pikku-http-routes.ts +0 -61
- package/src/functions/wirings/http/serialize-fetch-wrapper.ts +0 -67
- package/src/functions/wirings/http/serialize-http-types.ts +0 -105
- package/src/functions/wirings/http/serialize-typed-http-map.ts +0 -178
- package/src/functions/wirings/mcp/pikku-command-mcp-json.ts +0 -33
- package/src/functions/wirings/mcp/pikku-command-mcp-types.ts +0 -25
- package/src/functions/wirings/mcp/pikku-command-mcp.ts +0 -162
- package/src/functions/wirings/mcp/serialize-mcp-json.ts +0 -161
- package/src/functions/wirings/mcp/serialize-mcp-types.ts +0 -195
- package/src/functions/wirings/middleware/pikku-command-middleware.ts +0 -89
- package/src/functions/wirings/middleware/serialize-middleware-groups-meta.ts +0 -40
- package/src/functions/wirings/middleware/serialize-middleware-imports.ts +0 -78
- package/src/functions/wirings/package/pikku-command-package.ts +0 -81
- package/src/functions/wirings/package/serialize-package.ts +0 -69
- package/src/functions/wirings/permissions/pikku-command-permissions.ts +0 -49
- package/src/functions/wirings/permissions/serialize-permissions-imports.test.ts +0 -274
- package/src/functions/wirings/permissions/serialize-permissions-imports.ts +0 -78
- package/src/functions/wirings/queue/pikku-command-queue-map.ts +0 -26
- package/src/functions/wirings/queue/pikku-command-queue-service.ts +0 -37
- package/src/functions/wirings/queue/pikku-command-queue-types.ts +0 -25
- package/src/functions/wirings/queue/pikku-command-queue.ts +0 -86
- package/src/functions/wirings/queue/pikku-queue-map.ts +0 -26
- package/src/functions/wirings/queue/pikku-queue.ts +0 -66
- package/src/functions/wirings/queue/serialize-queue-map.ts +0 -134
- package/src/functions/wirings/queue/serialize-queue-meta.ts +0 -24
- package/src/functions/wirings/queue/serialize-queue-types.ts +0 -30
- package/src/functions/wirings/queue/serialize-queue-wrapper.ts +0 -35
- package/src/functions/wirings/rpc/pikku-command-public-rpc.ts +0 -32
- package/src/functions/wirings/rpc/pikku-command-remote-rpc.ts +0 -35
- package/src/functions/wirings/rpc/pikku-command-rpc-client.ts +0 -35
- package/src/functions/wirings/rpc/pikku-command-rpc-map.ts +0 -51
- package/src/functions/wirings/rpc/pikku-command-rpc.ts +0 -49
- package/src/functions/wirings/rpc/serialize-public-rpc.ts +0 -37
- package/src/functions/wirings/rpc/serialize-remote-rpc.ts +0 -33
- package/src/functions/wirings/rpc/serialize-rpc-wrapper.ts +0 -68
- package/src/functions/wirings/rpc/serialize-typed-rpc-map.ts +0 -194
- package/src/functions/wirings/scheduler/pikku-command-scheduler-types.ts +0 -25
- package/src/functions/wirings/scheduler/pikku-command-scheduler.ts +0 -88
- package/src/functions/wirings/scheduler/serialize-scheduler-meta.ts +0 -37
- package/src/functions/wirings/scheduler/serialize-scheduler-types.ts +0 -28
- package/src/functions/wirings/services/pikku-command-service-metadata.ts +0 -25
- package/src/functions/wirings/workflow/pikku-command-workflow.ts +0 -218
- package/src/functions/wirings/workflow/serialize-workflow-map.ts +0 -121
- package/src/functions/wirings/workflow/serialize-workflow-meta.ts +0 -73
- package/src/functions/wirings/workflow/serialize-workflow-registration.ts +0 -83
- package/src/functions/wirings/workflow/serialize-workflow-types.ts +0 -357
- package/src/functions/wirings/workflow/serialize-workflow-workers.ts +0 -47
- package/src/middleware/log-command-info-and-time.ts +0 -35
- package/src/services/cli-logger-forwarder.service.ts +0 -99
- package/src/services/cli-logger.service.ts +0 -108
- package/src/services.ts +0 -322
- package/src/utils/check-required-types.ts +0 -65
- package/src/utils/command-summary.ts +0 -107
- package/src/utils/custom-types-generator.ts +0 -55
- package/src/utils/file-import-path.test.ts +0 -175
- package/src/utils/file-import-path.ts +0 -53
- package/src/utils/file-imports-serializer.ts +0 -25
- package/src/utils/file-writer.ts +0 -72
- package/src/utils/generate-bootstrap-file.ts +0 -43
- package/src/utils/get-cli-version.ts +0 -28
- package/src/utils/pikku-cli-config.ts +0 -495
- package/src/utils/pikku-files-and-methods.ts +0 -145
- package/src/utils/schema-generator.ts +0 -335
- package/src/utils/serialize-import-map.ts +0 -102
- package/src/utils/strip-verbose-meta.ts +0 -254
- package/tsconfig.json +0 -21
- package/types/application-types.d.ts +0 -27
- package/types/config.d.ts +0 -304
- /package/dist/src/functions/{wirings/channels → runtimes/websocket}/serialize-websocket-wrapper.d.ts +0 -0
- /package/dist/src/functions/{wirings/channels → runtimes/websocket}/serialize-websocket-wrapper.js +0 -0
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parses OpenAPI YAML/JSON specs, resolves $ref pointers, and produces a normalized IR.
|
|
3
|
+
*/
|
|
4
|
+
import { readFile } from 'fs/promises';
|
|
5
|
+
import { parse as parseYAML } from 'yaml';
|
|
6
|
+
/**
|
|
7
|
+
* Read and parse an OpenAPI spec from a file path.
|
|
8
|
+
* Supports both YAML (.yaml, .yml) and JSON (.json) files.
|
|
9
|
+
*/
|
|
10
|
+
export async function parseOpenAPISpec(filePath) {
|
|
11
|
+
const content = await readFile(filePath, 'utf-8');
|
|
12
|
+
let doc;
|
|
13
|
+
if (filePath.endsWith('.json')) {
|
|
14
|
+
doc = JSON.parse(content);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
doc = parseYAML(content);
|
|
18
|
+
}
|
|
19
|
+
// Resolve all $ref pointers in-place
|
|
20
|
+
resolveRefs(doc, doc);
|
|
21
|
+
const info = {
|
|
22
|
+
title: doc.info?.title ?? 'Unknown API',
|
|
23
|
+
version: doc.info?.version ?? '1.0.0',
|
|
24
|
+
description: doc.info?.description,
|
|
25
|
+
};
|
|
26
|
+
const baseUrl = extractBaseUrl(doc);
|
|
27
|
+
const authType = detectAuthType(doc);
|
|
28
|
+
// Extract component schemas
|
|
29
|
+
const componentSchemas = {};
|
|
30
|
+
if (doc.components?.schemas) {
|
|
31
|
+
for (const [name, schema] of Object.entries(doc.components.schemas)) {
|
|
32
|
+
componentSchemas[name] = schema;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// Extract operations
|
|
36
|
+
const operations = [];
|
|
37
|
+
if (doc.paths) {
|
|
38
|
+
for (const [path, pathItem] of Object.entries(doc.paths)) {
|
|
39
|
+
// Shared parameters at the path level
|
|
40
|
+
const sharedParams = pathItem.parameters ?? [];
|
|
41
|
+
for (const method of ['get', 'post', 'put', 'patch', 'delete']) {
|
|
42
|
+
const op = pathItem[method];
|
|
43
|
+
if (!op)
|
|
44
|
+
continue;
|
|
45
|
+
const allParams = [...sharedParams, ...(op.parameters ?? [])];
|
|
46
|
+
operations.push({
|
|
47
|
+
operationId: op.operationId,
|
|
48
|
+
method,
|
|
49
|
+
path,
|
|
50
|
+
summary: op.summary,
|
|
51
|
+
description: op.description,
|
|
52
|
+
tags: op.tags ?? [],
|
|
53
|
+
pathParams: extractParams(allParams, 'path'),
|
|
54
|
+
queryParams: extractParams(allParams, 'query'),
|
|
55
|
+
requestBody: extractRequestBody(op),
|
|
56
|
+
responseSchema: extractResponseSchema(op),
|
|
57
|
+
responseDescription: extractResponseDescription(op),
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return { info, baseUrl, authType, operations, componentSchemas };
|
|
63
|
+
}
|
|
64
|
+
/** Recursively resolve $ref pointers in-place */
|
|
65
|
+
function resolveRefs(node, root) {
|
|
66
|
+
if (node === null || typeof node !== 'object')
|
|
67
|
+
return node;
|
|
68
|
+
if (Array.isArray(node)) {
|
|
69
|
+
for (let i = 0; i < node.length; i++) {
|
|
70
|
+
node[i] = resolveRefs(node[i], root);
|
|
71
|
+
}
|
|
72
|
+
return node;
|
|
73
|
+
}
|
|
74
|
+
if (typeof node.$ref === 'string') {
|
|
75
|
+
const resolved = resolveRefPath(node.$ref, root);
|
|
76
|
+
if (resolved && typeof resolved === 'object') {
|
|
77
|
+
// Merge any sibling properties (like description overrides)
|
|
78
|
+
const { $ref, ...siblings } = node;
|
|
79
|
+
const result = { ...resolved, ...siblings };
|
|
80
|
+
// Don't recurse infinitely — mark as resolved
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
83
|
+
return node;
|
|
84
|
+
}
|
|
85
|
+
for (const key of Object.keys(node)) {
|
|
86
|
+
node[key] = resolveRefs(node[key], root);
|
|
87
|
+
}
|
|
88
|
+
return node;
|
|
89
|
+
}
|
|
90
|
+
function resolveRefPath(ref, root) {
|
|
91
|
+
if (!ref.startsWith('#/'))
|
|
92
|
+
return undefined;
|
|
93
|
+
const parts = ref.slice(2).split('/');
|
|
94
|
+
let current = root;
|
|
95
|
+
for (const part of parts) {
|
|
96
|
+
const decoded = part.replace(/~1/g, '/').replace(/~0/g, '~');
|
|
97
|
+
if (current == null || typeof current !== 'object')
|
|
98
|
+
return undefined;
|
|
99
|
+
current = current[decoded];
|
|
100
|
+
}
|
|
101
|
+
return current;
|
|
102
|
+
}
|
|
103
|
+
function extractBaseUrl(doc) {
|
|
104
|
+
// OpenAPI 3.x
|
|
105
|
+
if (doc.servers && doc.servers.length > 0) {
|
|
106
|
+
return doc.servers[0].url ?? '';
|
|
107
|
+
}
|
|
108
|
+
// Swagger 2.x
|
|
109
|
+
if (doc.host) {
|
|
110
|
+
const scheme = doc.schemes?.[0] ?? 'https';
|
|
111
|
+
const basePath = doc.basePath ?? '';
|
|
112
|
+
return `${scheme}://${doc.host}${basePath}`;
|
|
113
|
+
}
|
|
114
|
+
return '';
|
|
115
|
+
}
|
|
116
|
+
function detectAuthType(doc) {
|
|
117
|
+
const securitySchemes = doc.components?.securitySchemes ?? doc.securityDefinitions ?? {};
|
|
118
|
+
for (const scheme of Object.values(securitySchemes)) {
|
|
119
|
+
if (scheme.type === 'oauth2')
|
|
120
|
+
return 'oauth2';
|
|
121
|
+
if (scheme.type === 'http' && scheme.scheme === 'bearer')
|
|
122
|
+
return 'bearer';
|
|
123
|
+
if (scheme.type === 'apiKey')
|
|
124
|
+
return 'apiKey';
|
|
125
|
+
}
|
|
126
|
+
return 'none';
|
|
127
|
+
}
|
|
128
|
+
function extractParams(params, location) {
|
|
129
|
+
return params
|
|
130
|
+
.filter((p) => p.in === location)
|
|
131
|
+
.map((p) => ({
|
|
132
|
+
name: p.name,
|
|
133
|
+
required: p.required ?? location === 'path',
|
|
134
|
+
schema: (p.schema ?? { type: 'string' }),
|
|
135
|
+
description: p.description,
|
|
136
|
+
}));
|
|
137
|
+
}
|
|
138
|
+
function extractRequestBody(op) {
|
|
139
|
+
const body = op.requestBody;
|
|
140
|
+
if (!body)
|
|
141
|
+
return undefined;
|
|
142
|
+
const content = body.content;
|
|
143
|
+
if (!content)
|
|
144
|
+
return undefined;
|
|
145
|
+
// Prefer JSON
|
|
146
|
+
const jsonContent = content['application/json'];
|
|
147
|
+
if (jsonContent?.schema)
|
|
148
|
+
return jsonContent.schema;
|
|
149
|
+
// Fallback to first content type
|
|
150
|
+
const firstKey = Object.keys(content)[0];
|
|
151
|
+
if (firstKey && content[firstKey]?.schema) {
|
|
152
|
+
return content[firstKey].schema;
|
|
153
|
+
}
|
|
154
|
+
return undefined;
|
|
155
|
+
}
|
|
156
|
+
function extractResponseDescription(op) {
|
|
157
|
+
const responses = op.responses;
|
|
158
|
+
if (!responses)
|
|
159
|
+
return undefined;
|
|
160
|
+
for (const code of ['200', '201', '202']) {
|
|
161
|
+
const resp = responses[code];
|
|
162
|
+
if (resp?.description)
|
|
163
|
+
return resp.description;
|
|
164
|
+
}
|
|
165
|
+
return undefined;
|
|
166
|
+
}
|
|
167
|
+
function extractResponseSchema(op) {
|
|
168
|
+
const responses = op.responses;
|
|
169
|
+
if (!responses)
|
|
170
|
+
return undefined;
|
|
171
|
+
// Look for 2xx responses in order of preference
|
|
172
|
+
for (const code of ['200', '201', '202', '204']) {
|
|
173
|
+
const resp = responses[code];
|
|
174
|
+
if (!resp)
|
|
175
|
+
continue;
|
|
176
|
+
const content = resp.content;
|
|
177
|
+
if (!content)
|
|
178
|
+
continue;
|
|
179
|
+
const jsonContent = content['application/json'];
|
|
180
|
+
if (jsonContent?.schema)
|
|
181
|
+
return jsonContent.schema;
|
|
182
|
+
const firstKey = Object.keys(content)[0];
|
|
183
|
+
if (firstKey && content[firstKey]?.schema) {
|
|
184
|
+
return content[firstKey].schema;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// Fallback: any 2xx
|
|
188
|
+
for (const [code, resp] of Object.entries(responses)) {
|
|
189
|
+
if (code.startsWith('2') && resp.content) {
|
|
190
|
+
const jsonContent = resp.content['application/json'];
|
|
191
|
+
if (jsonContent?.schema)
|
|
192
|
+
return jsonContent.schema;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return undefined;
|
|
196
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts OpenAPI schemas into Zod code strings.
|
|
3
|
+
*
|
|
4
|
+
* Chaining order: base → refinements → .nullable() → .optional() → .default() → .describe()
|
|
5
|
+
*/
|
|
6
|
+
export interface OpenAPISchema {
|
|
7
|
+
type?: string;
|
|
8
|
+
format?: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
enum?: unknown[];
|
|
11
|
+
items?: OpenAPISchema;
|
|
12
|
+
properties?: Record<string, OpenAPISchema>;
|
|
13
|
+
required?: string[];
|
|
14
|
+
nullable?: boolean;
|
|
15
|
+
default?: unknown;
|
|
16
|
+
minimum?: number;
|
|
17
|
+
maximum?: number;
|
|
18
|
+
exclusiveMinimum?: number;
|
|
19
|
+
exclusiveMaximum?: number;
|
|
20
|
+
minLength?: number;
|
|
21
|
+
maxLength?: number;
|
|
22
|
+
pattern?: string;
|
|
23
|
+
minItems?: number;
|
|
24
|
+
maxItems?: number;
|
|
25
|
+
oneOf?: OpenAPISchema[];
|
|
26
|
+
anyOf?: OpenAPISchema[];
|
|
27
|
+
allOf?: OpenAPISchema[];
|
|
28
|
+
additionalProperties?: boolean | OpenAPISchema;
|
|
29
|
+
$ref?: string;
|
|
30
|
+
readOnly?: boolean;
|
|
31
|
+
writeOnly?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface ZodCodegenContext {
|
|
34
|
+
/** Map from component schema name to its Zod variable name */
|
|
35
|
+
schemaRefs: Map<string, string>;
|
|
36
|
+
/** Track which refs are actually used */
|
|
37
|
+
usedRefs: Set<string>;
|
|
38
|
+
/** Indent level for readability */
|
|
39
|
+
indent: number;
|
|
40
|
+
}
|
|
41
|
+
export declare function createContext(schemaRefs?: Map<string, string>): ZodCodegenContext;
|
|
42
|
+
/**
|
|
43
|
+
* Convert a single OpenAPI schema to a Zod expression string.
|
|
44
|
+
* Does NOT include .optional() — that's handled at the property level based on `required`.
|
|
45
|
+
*/
|
|
46
|
+
export declare function schemaToZod(schema: OpenAPISchema, ctx: ZodCodegenContext, opts?: {
|
|
47
|
+
optional?: boolean;
|
|
48
|
+
}): string;
|
|
49
|
+
/**
|
|
50
|
+
* Generate the Zod variable name for a component schema.
|
|
51
|
+
* e.g. "PaginatedResponse" → "PaginatedResponseSchema"
|
|
52
|
+
*/
|
|
53
|
+
export declare function schemaVarName(name: string): string;
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts OpenAPI schemas into Zod code strings.
|
|
3
|
+
*
|
|
4
|
+
* Chaining order: base → refinements → .nullable() → .optional() → .default() → .describe()
|
|
5
|
+
*/
|
|
6
|
+
export function createContext(schemaRefs) {
|
|
7
|
+
return {
|
|
8
|
+
schemaRefs: schemaRefs ?? new Map(),
|
|
9
|
+
usedRefs: new Set(),
|
|
10
|
+
indent: 0,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Convert a single OpenAPI schema to a Zod expression string.
|
|
15
|
+
* Does NOT include .optional() — that's handled at the property level based on `required`.
|
|
16
|
+
*/
|
|
17
|
+
export function schemaToZod(schema, ctx, opts = {}) {
|
|
18
|
+
let code = schemaToZodBase(schema, ctx);
|
|
19
|
+
// Refinements
|
|
20
|
+
code = applyRefinements(code, schema);
|
|
21
|
+
// Nullable
|
|
22
|
+
if (schema.nullable) {
|
|
23
|
+
code += '.nullable()';
|
|
24
|
+
}
|
|
25
|
+
// Optional
|
|
26
|
+
if (opts.optional) {
|
|
27
|
+
code += '.optional()';
|
|
28
|
+
}
|
|
29
|
+
// Default
|
|
30
|
+
if (schema.default !== undefined) {
|
|
31
|
+
code += `.default(${JSON.stringify(schema.default)})`;
|
|
32
|
+
}
|
|
33
|
+
// Description
|
|
34
|
+
if (schema.description) {
|
|
35
|
+
code += `.describe(${JSON.stringify(schema.description)})`;
|
|
36
|
+
}
|
|
37
|
+
return code;
|
|
38
|
+
}
|
|
39
|
+
function schemaToZodBase(schema, ctx) {
|
|
40
|
+
// Handle $ref
|
|
41
|
+
if (schema.$ref) {
|
|
42
|
+
const refName = schema.$ref.split('/').pop();
|
|
43
|
+
const zodName = ctx.schemaRefs.get(refName);
|
|
44
|
+
if (zodName) {
|
|
45
|
+
ctx.usedRefs.add(refName);
|
|
46
|
+
return zodName;
|
|
47
|
+
}
|
|
48
|
+
// Unknown ref — fallback to z.unknown()
|
|
49
|
+
return 'z.unknown()';
|
|
50
|
+
}
|
|
51
|
+
// Handle allOf — merge into single object
|
|
52
|
+
if (schema.allOf && schema.allOf.length > 0) {
|
|
53
|
+
return handleAllOf(schema.allOf, ctx);
|
|
54
|
+
}
|
|
55
|
+
// Handle oneOf/anyOf — union
|
|
56
|
+
if (schema.oneOf && schema.oneOf.length > 0) {
|
|
57
|
+
return handleUnion(schema.oneOf, ctx);
|
|
58
|
+
}
|
|
59
|
+
if (schema.anyOf && schema.anyOf.length > 0) {
|
|
60
|
+
return handleUnion(schema.anyOf, ctx);
|
|
61
|
+
}
|
|
62
|
+
// Handle enum
|
|
63
|
+
if (schema.enum && schema.enum.length > 0) {
|
|
64
|
+
return handleEnum(schema.enum);
|
|
65
|
+
}
|
|
66
|
+
// Handle by type
|
|
67
|
+
switch (schema.type) {
|
|
68
|
+
case 'string':
|
|
69
|
+
return handleString(schema);
|
|
70
|
+
case 'integer':
|
|
71
|
+
return 'z.number().int()';
|
|
72
|
+
case 'number':
|
|
73
|
+
return 'z.number()';
|
|
74
|
+
case 'boolean':
|
|
75
|
+
return 'z.boolean()';
|
|
76
|
+
case 'array':
|
|
77
|
+
return handleArray(schema, ctx);
|
|
78
|
+
case 'object':
|
|
79
|
+
return handleObject(schema, ctx);
|
|
80
|
+
default:
|
|
81
|
+
// No type specified but has properties — treat as object
|
|
82
|
+
if (schema.properties) {
|
|
83
|
+
return handleObject(schema, ctx);
|
|
84
|
+
}
|
|
85
|
+
return 'z.unknown()';
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function handleString(schema) {
|
|
89
|
+
switch (schema.format) {
|
|
90
|
+
case 'uuid':
|
|
91
|
+
return 'z.string().uuid()';
|
|
92
|
+
case 'date-time':
|
|
93
|
+
return 'z.string().datetime()';
|
|
94
|
+
case 'date':
|
|
95
|
+
return 'z.string().date()';
|
|
96
|
+
case 'email':
|
|
97
|
+
return 'z.string().email()';
|
|
98
|
+
case 'uri':
|
|
99
|
+
case 'url':
|
|
100
|
+
return 'z.string().url()';
|
|
101
|
+
default:
|
|
102
|
+
return 'z.string()';
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
function handleEnum(values) {
|
|
106
|
+
// If all values are strings, use z.enum
|
|
107
|
+
if (values.every((v) => typeof v === 'string')) {
|
|
108
|
+
const enumValues = values.map((v) => JSON.stringify(v)).join(', ');
|
|
109
|
+
return `z.enum([${enumValues}])`;
|
|
110
|
+
}
|
|
111
|
+
// Mixed types — use z.union of z.literal
|
|
112
|
+
const literals = values.map((v) => `z.literal(${JSON.stringify(v)})`).join(', ');
|
|
113
|
+
return `z.union([${literals}])`;
|
|
114
|
+
}
|
|
115
|
+
function handleArray(schema, ctx) {
|
|
116
|
+
const itemsZod = schema.items
|
|
117
|
+
? schemaToZodBase(schema.items, ctx)
|
|
118
|
+
: 'z.unknown()';
|
|
119
|
+
return `z.array(${itemsZod})`;
|
|
120
|
+
}
|
|
121
|
+
function indent(ctx) {
|
|
122
|
+
return ' '.repeat(ctx.indent);
|
|
123
|
+
}
|
|
124
|
+
function handleObject(schema, ctx) {
|
|
125
|
+
if (!schema.properties || Object.keys(schema.properties).length === 0) {
|
|
126
|
+
// Object with no defined properties
|
|
127
|
+
if (schema.additionalProperties) {
|
|
128
|
+
const valueSchema = typeof schema.additionalProperties === 'object'
|
|
129
|
+
? schemaToZod(schema.additionalProperties, ctx)
|
|
130
|
+
: 'z.unknown()';
|
|
131
|
+
return `z.record(z.string(), ${valueSchema})`;
|
|
132
|
+
}
|
|
133
|
+
return 'z.record(z.string(), z.unknown())';
|
|
134
|
+
}
|
|
135
|
+
const inner = { ...ctx, indent: ctx.indent + 1 };
|
|
136
|
+
const pad = indent(inner);
|
|
137
|
+
const closePad = indent(ctx);
|
|
138
|
+
const requiredSet = new Set(schema.required ?? []);
|
|
139
|
+
const entries = [];
|
|
140
|
+
for (const [key, propSchema] of Object.entries(schema.properties)) {
|
|
141
|
+
const isOptional = !requiredSet.has(key);
|
|
142
|
+
const propZod = schemaToZod(propSchema, inner, { optional: isOptional });
|
|
143
|
+
entries.push(`${pad}${safeKey(key)}: ${propZod},`);
|
|
144
|
+
}
|
|
145
|
+
return `z.object({\n${entries.join('\n')}\n${closePad}})`;
|
|
146
|
+
}
|
|
147
|
+
function handleAllOf(schemas, ctx) {
|
|
148
|
+
// Collect all properties from all schemas
|
|
149
|
+
const mergedProps = {};
|
|
150
|
+
const mergedRequired = [];
|
|
151
|
+
for (const sub of schemas) {
|
|
152
|
+
if (sub.$ref) {
|
|
153
|
+
const refName = sub.$ref.split('/').pop();
|
|
154
|
+
const zodName = ctx.schemaRefs.get(refName);
|
|
155
|
+
if (zodName) {
|
|
156
|
+
ctx.usedRefs.add(refName);
|
|
157
|
+
// If it's a pure ref in an allOf, we'd need to merge/extend
|
|
158
|
+
// For simplicity, if we have refs mixed with objects, use .merge()
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
if (sub.properties) {
|
|
162
|
+
Object.assign(mergedProps, sub.properties);
|
|
163
|
+
}
|
|
164
|
+
if (sub.required) {
|
|
165
|
+
mergedRequired.push(...sub.required);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// If we have only refs, use .merge()
|
|
169
|
+
const refSchemas = schemas.filter((s) => s.$ref);
|
|
170
|
+
const objSchemas = schemas.filter((s) => !s.$ref && (s.properties || s.type === 'object'));
|
|
171
|
+
if (refSchemas.length > 0 && objSchemas.length === 0) {
|
|
172
|
+
const parts = refSchemas.map((s) => {
|
|
173
|
+
const refName = s.$ref.split('/').pop();
|
|
174
|
+
ctx.usedRefs.add(refName);
|
|
175
|
+
return ctx.schemaRefs.get(refName) || 'z.object({})';
|
|
176
|
+
});
|
|
177
|
+
if (parts.length === 1)
|
|
178
|
+
return parts[0];
|
|
179
|
+
return parts.reduce((acc, part) => `${acc}.merge(${part})`);
|
|
180
|
+
}
|
|
181
|
+
// Otherwise, merge into a single object
|
|
182
|
+
if (Object.keys(mergedProps).length > 0) {
|
|
183
|
+
return handleObject({
|
|
184
|
+
type: 'object',
|
|
185
|
+
properties: mergedProps,
|
|
186
|
+
required: [...new Set(mergedRequired)],
|
|
187
|
+
}, ctx);
|
|
188
|
+
}
|
|
189
|
+
// Fallback
|
|
190
|
+
return 'z.unknown()';
|
|
191
|
+
}
|
|
192
|
+
function handleUnion(schemas, ctx) {
|
|
193
|
+
const members = schemas.map((s) => schemaToZodBase(s, ctx));
|
|
194
|
+
if (members.length === 1)
|
|
195
|
+
return members[0];
|
|
196
|
+
return `z.union([${members.join(', ')}])`;
|
|
197
|
+
}
|
|
198
|
+
function applyRefinements(code, schema) {
|
|
199
|
+
let result = code;
|
|
200
|
+
// String refinements
|
|
201
|
+
if (schema.type === 'string' || (!schema.type && !schema.format)) {
|
|
202
|
+
if (schema.minLength !== undefined) {
|
|
203
|
+
result += `.min(${schema.minLength})`;
|
|
204
|
+
}
|
|
205
|
+
if (schema.maxLength !== undefined) {
|
|
206
|
+
result += `.max(${schema.maxLength})`;
|
|
207
|
+
}
|
|
208
|
+
if (schema.pattern) {
|
|
209
|
+
result += `.regex(new RegExp(${JSON.stringify(schema.pattern)}))`;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
// Number refinements
|
|
213
|
+
if (schema.type === 'number' || schema.type === 'integer') {
|
|
214
|
+
if (schema.minimum !== undefined) {
|
|
215
|
+
result += `.min(${schema.minimum})`;
|
|
216
|
+
}
|
|
217
|
+
if (schema.maximum !== undefined) {
|
|
218
|
+
result += `.max(${schema.maximum})`;
|
|
219
|
+
}
|
|
220
|
+
if (schema.exclusiveMinimum !== undefined) {
|
|
221
|
+
result += `.gt(${schema.exclusiveMinimum})`;
|
|
222
|
+
}
|
|
223
|
+
if (schema.exclusiveMaximum !== undefined) {
|
|
224
|
+
result += `.lt(${schema.exclusiveMaximum})`;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// Array refinements
|
|
228
|
+
if (schema.type === 'array') {
|
|
229
|
+
if (schema.minItems !== undefined) {
|
|
230
|
+
result += `.min(${schema.minItems})`;
|
|
231
|
+
}
|
|
232
|
+
if (schema.maxItems !== undefined) {
|
|
233
|
+
result += `.max(${schema.maxItems})`;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return result;
|
|
237
|
+
}
|
|
238
|
+
/** Ensure property keys are safe identifiers, or quote them */
|
|
239
|
+
function safeKey(key) {
|
|
240
|
+
if (/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key)) {
|
|
241
|
+
return key;
|
|
242
|
+
}
|
|
243
|
+
return JSON.stringify(key);
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Generate the Zod variable name for a component schema.
|
|
247
|
+
* e.g. "PaginatedResponse" → "PaginatedResponseSchema"
|
|
248
|
+
*/
|
|
249
|
+
export function schemaVarName(name) {
|
|
250
|
+
return name.endsWith('Schema') ? name : `${name}Schema`;
|
|
251
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PikkuCLIConfig } from '../../types/config.js';
|
|
2
|
-
import { CLILogger } from '../services/cli-logger.service.js';
|
|
1
|
+
import type { PikkuCLIConfig } from '../../types/config.js';
|
|
2
|
+
import type { CLILogger } from '../services/cli-logger.service.js';
|
|
3
3
|
export declare const getPikkuCLIConfig: (logger: CLILogger, configFile: string | undefined, requiredFields: Array<keyof PikkuCLIConfig>, exitProcess?: boolean) => Promise<PikkuCLIConfig>;
|
|
4
4
|
export declare const validateCLIConfig: (cliConfig: PikkuCLIConfig, required: Array<keyof PikkuCLIConfig>) => void;
|
|
@@ -38,10 +38,6 @@ const _getPikkuCLIConfig = async (logger, configFile = undefined, requiredFields
|
|
|
38
38
|
...extendedConfig.packageMappings,
|
|
39
39
|
...config.packageMappings,
|
|
40
40
|
},
|
|
41
|
-
externalPackages: {
|
|
42
|
-
...extendedConfig.externalPackages,
|
|
43
|
-
...config.externalPackages,
|
|
44
|
-
},
|
|
45
41
|
ignoreFiles: config.ignoreFiles ??
|
|
46
42
|
extendedConfig.ignoreFiles ?? [
|
|
47
43
|
'**/*.test.ts',
|
|
@@ -62,7 +58,6 @@ const _getPikkuCLIConfig = async (logger, configFile = undefined, requiredFields
|
|
|
62
58
|
...config,
|
|
63
59
|
configDir,
|
|
64
60
|
packageMappings: config.packageMappings || {},
|
|
65
|
-
externalPackages: config.externalPackages || {},
|
|
66
61
|
rootDir: config.rootDir
|
|
67
62
|
? resolve(configDir, config.rootDir)
|
|
68
63
|
: configDir,
|
|
@@ -142,7 +137,7 @@ const _getPikkuCLIConfig = async (logger, configFile = undefined, requiredFields
|
|
|
142
137
|
if (!result.channelsTypesFile) {
|
|
143
138
|
result.channelsTypesFile = join(channelDir, 'pikku-channel-types.gen.ts');
|
|
144
139
|
}
|
|
145
|
-
// RPC (internal and
|
|
140
|
+
// RPC (internal and addon)
|
|
146
141
|
if (!result.rpcInternalWiringMetaFile) {
|
|
147
142
|
result.rpcInternalWiringMetaFile = join(rpcDir, 'pikku-rpc-wirings-meta.internal.gen.ts');
|
|
148
143
|
}
|
|
@@ -162,6 +157,25 @@ const _getPikkuCLIConfig = async (logger, configFile = undefined, requiredFields
|
|
|
162
157
|
if (!result.rpc.remoteRpcWorkersPath) {
|
|
163
158
|
result.rpc.remoteRpcWorkersPath = join(rpcDir, 'pikku-remote-rpc-workers.gen.ts');
|
|
164
159
|
}
|
|
160
|
+
const triggerDir = join(result.outDir, 'trigger');
|
|
161
|
+
if (!result.triggersTypesFile) {
|
|
162
|
+
result.triggersTypesFile = join(triggerDir, 'pikku-trigger-types.gen.ts');
|
|
163
|
+
}
|
|
164
|
+
if (!result.triggersWiringFile) {
|
|
165
|
+
result.triggersWiringFile = join(triggerDir, 'pikku-trigger-wirings.gen.ts');
|
|
166
|
+
}
|
|
167
|
+
if (!result.triggersWiringMetaFile) {
|
|
168
|
+
result.triggersWiringMetaFile = join(triggerDir, 'pikku-trigger-wirings-meta.gen.ts');
|
|
169
|
+
}
|
|
170
|
+
if (!result.triggersWiringMetaJsonFile) {
|
|
171
|
+
result.triggersWiringMetaJsonFile = join(triggerDir, 'pikku-trigger-wirings-meta.gen.json');
|
|
172
|
+
}
|
|
173
|
+
if (!result.triggerSourcesMetaFile) {
|
|
174
|
+
result.triggerSourcesMetaFile = join(triggerDir, 'pikku-trigger-sources-meta.gen.ts');
|
|
175
|
+
}
|
|
176
|
+
if (!result.triggerSourcesMetaJsonFile) {
|
|
177
|
+
result.triggerSourcesMetaJsonFile = join(triggerDir, 'pikku-trigger-sources-meta.gen.json');
|
|
178
|
+
}
|
|
165
179
|
// Scheduler
|
|
166
180
|
if (!result.schedulersWiringFile) {
|
|
167
181
|
result.schedulersWiringFile = join(schedulerDir, 'pikku-schedulers-wirings.gen.ts');
|
|
@@ -219,9 +233,6 @@ const _getPikkuCLIConfig = async (logger, configFile = undefined, requiredFields
|
|
|
219
233
|
if (!result.middlewareFile) {
|
|
220
234
|
result.middlewareFile = join(middlewareDir, 'pikku-middleware.gen.ts');
|
|
221
235
|
}
|
|
222
|
-
if (!result.middlewareGroupsMetaFile) {
|
|
223
|
-
result.middlewareGroupsMetaFile = join(middlewareDir, 'pikku-middleware-groups-meta.gen.ts');
|
|
224
|
-
}
|
|
225
236
|
if (!result.middlewareGroupsMetaJsonFile) {
|
|
226
237
|
result.middlewareGroupsMetaJsonFile = join(middlewareDir, 'pikku-middleware-groups-meta.gen.json');
|
|
227
238
|
}
|
|
@@ -230,14 +241,13 @@ const _getPikkuCLIConfig = async (logger, configFile = undefined, requiredFields
|
|
|
230
241
|
if (!result.permissionsFile) {
|
|
231
242
|
result.permissionsFile = join(permissionsDir, 'pikku-permissions.gen.ts');
|
|
232
243
|
}
|
|
244
|
+
if (!result.permissionsGroupsMetaJsonFile) {
|
|
245
|
+
result.permissionsGroupsMetaJsonFile = join(permissionsDir, 'pikku-permissions-groups-meta.gen.json');
|
|
246
|
+
}
|
|
233
247
|
// Bootstrap files
|
|
234
248
|
if (!result.bootstrapFile) {
|
|
235
249
|
result.bootstrapFile = join(result.outDir, 'pikku-bootstrap.gen.ts');
|
|
236
250
|
}
|
|
237
|
-
// Package service factories (for external packages)
|
|
238
|
-
if (!result.packageFile) {
|
|
239
|
-
result.packageFile = join(result.outDir, 'pikku-package.gen.ts');
|
|
240
|
-
}
|
|
241
251
|
// MCP
|
|
242
252
|
if (!result.mcpWiringsMetaFile) {
|
|
243
253
|
result.mcpWiringsMetaFile = join(mcpDir, 'pikku-mcp-wirings-meta.gen.ts');
|
|
@@ -254,6 +264,23 @@ const _getPikkuCLIConfig = async (logger, configFile = undefined, requiredFields
|
|
|
254
264
|
if (!result.mcpTypesFile) {
|
|
255
265
|
result.mcpTypesFile = join(mcpDir, 'pikku-mcp-types.gen.ts');
|
|
256
266
|
}
|
|
267
|
+
// AI Agent
|
|
268
|
+
const agentDir = join(result.outDir, 'agent');
|
|
269
|
+
if (!result.agentWiringsFile) {
|
|
270
|
+
result.agentWiringsFile = join(agentDir, 'pikku-agent-wirings.gen.ts');
|
|
271
|
+
}
|
|
272
|
+
if (!result.agentWiringMetaFile) {
|
|
273
|
+
result.agentWiringMetaFile = join(agentDir, 'pikku-agent-wirings-meta.gen.ts');
|
|
274
|
+
}
|
|
275
|
+
if (!result.agentWiringMetaJsonFile) {
|
|
276
|
+
result.agentWiringMetaJsonFile = join(agentDir, 'pikku-agent-wirings-meta.gen.json');
|
|
277
|
+
}
|
|
278
|
+
if (!result.agentTypesFile) {
|
|
279
|
+
result.agentTypesFile = join(agentDir, 'pikku-agent-types.gen.ts');
|
|
280
|
+
}
|
|
281
|
+
if (!result.agentMapDeclarationFile) {
|
|
282
|
+
result.agentMapDeclarationFile = join(agentDir, 'pikku-agent-map.gen.d.ts');
|
|
283
|
+
}
|
|
257
284
|
// CLI
|
|
258
285
|
if (!result.cliWiringsFile) {
|
|
259
286
|
result.cliWiringsFile = join(cliDir, 'pikku-cli-wirings.gen.ts');
|
|
@@ -270,19 +297,49 @@ const _getPikkuCLIConfig = async (logger, configFile = undefined, requiredFields
|
|
|
270
297
|
if (!result.cliTypesFile) {
|
|
271
298
|
result.cliTypesFile = join(cliDir, 'pikku-cli-types.gen.ts');
|
|
272
299
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
300
|
+
const consoleDir = join(result.outDir, 'console');
|
|
301
|
+
if (!result.nodesMetaJsonFile) {
|
|
302
|
+
result.nodesMetaJsonFile = join(consoleDir, 'pikku-nodes-meta.gen.json');
|
|
303
|
+
}
|
|
304
|
+
if (!result.nodeTypesFile) {
|
|
305
|
+
result.nodeTypesFile = join(consoleDir, 'pikku-node-types.gen.ts');
|
|
306
|
+
}
|
|
307
|
+
const addonDir = join(result.outDir, 'addon');
|
|
308
|
+
if (!result.packageFile) {
|
|
309
|
+
result.packageFile = join(addonDir, 'pikku-package.gen.ts');
|
|
310
|
+
}
|
|
311
|
+
if (!result.addonTypesFile) {
|
|
312
|
+
result.addonTypesFile = join(addonDir, 'pikku-addon-types.gen.ts');
|
|
313
|
+
}
|
|
314
|
+
// Secrets (typed wrapper for SecretService)
|
|
315
|
+
const secretsDir = join(result.outDir, 'secrets');
|
|
316
|
+
if (!result.secretTypesFile) {
|
|
317
|
+
result.secretTypesFile = join(secretsDir, 'pikku-secret-types.gen.ts');
|
|
318
|
+
}
|
|
319
|
+
if (!result.secretsFile) {
|
|
320
|
+
result.secretsFile = join(secretsDir, 'pikku-secrets.gen.ts');
|
|
321
|
+
}
|
|
322
|
+
if (!result.secretsMetaJsonFile) {
|
|
323
|
+
result.secretsMetaJsonFile = join(secretsDir, 'pikku-secrets-meta.gen.json');
|
|
324
|
+
}
|
|
325
|
+
// Variables (typed wrapper for VariablesService)
|
|
326
|
+
const variablesDir = join(result.outDir, 'variables');
|
|
327
|
+
if (!result.variableTypesFile) {
|
|
328
|
+
result.variableTypesFile = join(variablesDir, 'pikku-variable-types.gen.ts');
|
|
329
|
+
}
|
|
330
|
+
if (!result.variablesFile) {
|
|
331
|
+
result.variablesFile = join(variablesDir, 'pikku-variables.gen.ts');
|
|
277
332
|
}
|
|
278
|
-
if (!result.
|
|
279
|
-
result.
|
|
333
|
+
if (!result.variablesMetaJsonFile) {
|
|
334
|
+
result.variablesMetaJsonFile = join(variablesDir, 'pikku-variables-meta.gen.json');
|
|
280
335
|
}
|
|
281
336
|
if (requiredFields.length > 0) {
|
|
282
337
|
validateCLIConfig(result, requiredFields);
|
|
283
338
|
}
|
|
284
339
|
for (const objectKey of Object.keys(result)) {
|
|
285
|
-
if (objectKey.endsWith('File') ||
|
|
340
|
+
if (objectKey.endsWith('File') ||
|
|
341
|
+
objectKey.endsWith('Directory') ||
|
|
342
|
+
objectKey.endsWith('Dir')) {
|
|
286
343
|
const relativeTo = CONFIG_DIR_FILES.includes(objectKey)
|
|
287
344
|
? result.configDir
|
|
288
345
|
: result.rootDir;
|
|
@@ -297,7 +354,7 @@ const _getPikkuCLIConfig = async (logger, configFile = undefined, requiredFields
|
|
|
297
354
|
if (!isAbsolute(result.tsconfig)) {
|
|
298
355
|
result.tsconfig = join(result.rootDir, result.tsconfig);
|
|
299
356
|
}
|
|
300
|
-
if (result.
|
|
357
|
+
if (result.addon) {
|
|
301
358
|
const packageJsonPath = join(result.rootDir, 'package.json');
|
|
302
359
|
try {
|
|
303
360
|
const packageJsonContent = await readFile(packageJsonPath, 'utf-8');
|
|
@@ -307,10 +364,10 @@ const _getPikkuCLIConfig = async (logger, configFile = undefined, requiredFields
|
|
|
307
364
|
packageJson.name.trim() === '') {
|
|
308
365
|
throw new Error(`package.json at ${packageJsonPath} is missing a valid "name" field`);
|
|
309
366
|
}
|
|
310
|
-
result.
|
|
367
|
+
result.addonName = packageJson.name;
|
|
311
368
|
}
|
|
312
369
|
catch (e) {
|
|
313
|
-
throw new Error(`
|
|
370
|
+
throw new Error(`addon is true but could not read or parse package.json at ${packageJsonPath}: ${e.message}`);
|
|
314
371
|
}
|
|
315
372
|
}
|
|
316
373
|
return result;
|