@pikku/cli 0.11.1 → 0.11.3
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/.pikku/channel/pikku-channel-types.gen.ts +73 -17
- package/.pikku/channel/pikku-channels-map.gen.d.ts +11 -11
- package/.pikku/channel/pikku-channels-meta.gen.json +1 -0
- package/.pikku/channel/pikku-channels-meta.gen.ts +4 -2
- package/.pikku/channel/pikku-channels.gen.ts +1 -1
- package/.pikku/cli/pikku-cli-channel.ts +2 -2
- package/.pikku/cli/pikku-cli-client.gen.ts +1 -3
- package/.pikku/cli/pikku-cli-types.gen.ts +3 -3
- package/.pikku/cli/pikku-cli-wirings-meta.gen.json +147 -0
- package/.pikku/cli/pikku-cli-wirings-meta.gen.ts +4 -157
- package/.pikku/cli/pikku-cli-wirings.gen.ts +3 -3
- package/.pikku/cli/pikku-cli.gen.ts +3 -3
- package/.pikku/forge/pikku-forge-types.gen.ts +83 -0
- package/.pikku/function/pikku-function-types.gen.ts +223 -91
- package/.pikku/function/pikku-functions-meta-verbose.gen.json +1030 -0
- package/.pikku/function/pikku-functions-meta.gen.json +656 -0
- package/.pikku/function/pikku-functions-meta.gen.ts +4 -970
- package/.pikku/http/pikku-http-types.gen.ts +20 -4
- package/.pikku/http/pikku-http-wirings-map.gen.d.ts +11 -11
- package/.pikku/http/pikku-http-wirings-meta.gen.json +9 -0
- package/.pikku/http/pikku-http-wirings-meta.gen.ts +4 -10
- package/.pikku/http/pikku-http-wirings.gen.ts +1 -1
- package/.pikku/mcp/pikku-mcp-types.gen.ts +72 -20
- package/.pikku/mcp/pikku-mcp-wirings-meta.gen.json +5 -0
- package/.pikku/mcp/pikku-mcp-wirings-meta.gen.ts +6 -4
- package/.pikku/mcp/pikku-mcp-wirings.gen.ts +1 -1
- package/.pikku/pikku-bootstrap.gen.ts +7 -12
- package/.pikku/pikku-services.gen.ts +6 -7
- package/.pikku/pikku-types.gen.ts +4 -1
- package/.pikku/pikku-websocket.gen.ts +1 -1
- package/.pikku/queue/pikku-queue-types.gen.ts +2 -2
- package/.pikku/queue/pikku-queue-workers-wirings-map.gen.d.ts +11 -11
- package/.pikku/queue/pikku-queue-workers-wirings-meta.gen.json +1 -0
- package/.pikku/queue/pikku-queue-workers-wirings-meta.gen.ts +5 -7
- package/.pikku/queue/pikku-queue-workers-wirings.gen.ts +1 -1
- package/.pikku/rpc/pikku-remote-rpc-workers.gen.ts +5 -2
- package/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +19 -14
- package/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +46 -39
- package/.pikku/scheduler/pikku-scheduler-types.gen.ts +2 -2
- package/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.json +1 -0
- package/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.ts +5 -2
- package/.pikku/scheduler/pikku-schedulers-wirings.gen.ts +1 -1
- package/.pikku/schemas/register.gen.ts +31 -23
- package/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuCLIOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuForgeNodesOutput.schema.json +1 -0
- package/.pikku/schemas/schemas/PikkuFunctionsOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuHTTPOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuMCPOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuMiddlewareOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuPackageOutput.schema.json +1 -0
- package/.pikku/schemas/schemas/PikkuPermissionsOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuPublicRPCOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuRPCOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuRemoteRPCOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuSchedulerOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuWorkflowOutput.schema.json +1 -1
- package/.pikku/services/config.gen.json +104 -0
- package/.pikku/services/getInspectorState.gen.json +10 -0
- package/.pikku/services/jwt.gen.json +13 -0
- package/.pikku/services/logger.gen.json +25 -0
- package/.pikku/services/queueService.gen.json +14 -0
- package/.pikku/services/schedulerService.gen.json +17 -0
- package/.pikku/services/schema.gen.json +14 -0
- package/.pikku/services/secrets.gen.json +13 -0
- package/.pikku/services/variables.gen.json +13 -0
- package/.pikku/services/workflowService.gen.json +31 -0
- package/.pikku/workflow/pikku-workflow-map.gen.d.ts +2 -36
- package/.pikku/workflow/pikku-workflow-types.gen.ts +305 -48
- package/.pikku/workflow/pikku-workflow-wirings-meta.gen.ts +6 -2
- package/.pikku/workflow/pikku-workflow-wirings.gen.ts +1 -2
- package/CHANGELOG.md +44 -1
- package/bin/pikku.ts +6 -32
- package/build.sh +53 -31
- package/cli.schema.json +1 -1
- package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +51 -10
- package/dist/.pikku/channel/pikku-channel-types.gen.js +3 -13
- package/dist/.pikku/channel/pikku-channels-meta.gen.js +3 -2
- package/dist/.pikku/channel/pikku-channels-meta.gen.json +1 -0
- 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 +2 -2
- package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-client.gen.js +1 -3
- package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +3 -3
- package/dist/.pikku/cli/pikku-cli-types.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +3 -157
- package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.json +147 -0
- package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +2 -2
- package/dist/.pikku/cli/pikku-cli-wirings.gen.js +2 -2
- package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli.gen.js +3 -3
- package/dist/.pikku/forge/pikku-forge-types.gen.d.ts +72 -0
- package/dist/.pikku/forge/pikku-forge-types.gen.js +55 -0
- package/dist/.pikku/function/pikku-function-types.gen.d.ts +141 -99
- package/dist/.pikku/function/pikku-function-types.gen.js +52 -62
- package/dist/.pikku/function/pikku-functions-meta.gen.js +3 -969
- package/dist/.pikku/function/pikku-functions-meta.gen.json +656 -0
- package/dist/.pikku/http/pikku-http-types.gen.d.ts +19 -4
- package/dist/.pikku/http/pikku-http-types.gen.js +1 -1
- package/dist/.pikku/http/pikku-http-wirings-meta.gen.js +3 -10
- package/dist/.pikku/http/pikku-http-wirings-meta.gen.json +9 -0
- 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 +57 -17
- package/dist/.pikku/mcp/pikku-mcp-types.gen.js +7 -31
- package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.js +5 -4
- package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.json +5 -0
- package/dist/.pikku/mcp/pikku-mcp-wirings.gen.d.ts +1 -1
- package/dist/.pikku/mcp/pikku-mcp-wirings.gen.js +1 -1
- package/dist/.pikku/pikku-bootstrap.gen.d.ts +7 -12
- package/dist/.pikku/pikku-bootstrap.gen.js +7 -12
- package/dist/.pikku/pikku-services.gen.d.ts +5 -7
- package/dist/.pikku/pikku-services.gen.js +3 -5
- package/dist/.pikku/pikku-types.gen.d.ts +2 -1
- package/dist/.pikku/pikku-types.gen.js +3 -1
- 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 +2 -2
- package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +3 -7
- package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.json +1 -0
- 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 +9 -9
- package/dist/.pikku/rpc/pikku-remote-rpc-workers.gen.js +5 -2
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +2 -2
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
- package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.js +3 -2
- package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.json +1 -0
- 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 +19 -15
- 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/PikkuForgeNodesOutput.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/PikkuPackageOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuPermissionsOutput.schema.json +1 -1
- 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/PikkuWorkflowOutput.schema.json +1 -1
- package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +213 -39
- package/dist/.pikku/workflow/pikku-workflow-types.gen.js +106 -16
- package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +3 -2
- package/dist/.pikku/workflow/pikku-workflow-wirings.gen.d.ts +1 -1
- package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -2
- package/dist/bin/pikku.js +5 -26
- package/dist/src/cli.wiring.js +4 -4
- package/dist/src/functions/commands/all.js +172 -94
- package/dist/src/functions/commands/bootstrap.js +21 -16
- package/dist/src/functions/commands/watch.js +6 -3
- package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.js +12 -8
- 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 +74 -22
- package/dist/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.d.ts +1 -1
- package/dist/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.js +72 -20
- package/dist/src/functions/wirings/channels/pikku-channels.js +9 -2
- package/dist/src/functions/wirings/channels/pikku-command-channels.js +18 -2
- package/dist/src/functions/wirings/channels/serialize-channel-types.js +72 -16
- package/dist/src/functions/wirings/channels/serialize-typed-channel-map.js +1 -2
- package/dist/src/functions/wirings/cli/pikku-command-cli-entry.js +4 -4
- package/dist/src/functions/wirings/cli/pikku-command-cli-types.js +1 -1
- package/dist/src/functions/wirings/cli/pikku-command-cli.js +17 -3
- package/dist/src/functions/wirings/cli/serialize-channel-cli.js +1 -1
- package/dist/src/functions/wirings/cli/serialize-cli-types.js +2 -2
- package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.d.ts +1 -1
- package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.js +4 -4
- package/dist/src/functions/wirings/forge/pikku-command-forge-nodes.d.ts +1 -0
- package/dist/src/functions/wirings/forge/pikku-command-forge-nodes.js +90 -0
- package/dist/src/functions/wirings/forge/pikku-command-forge-types.d.ts +1 -0
- package/dist/src/functions/wirings/forge/pikku-command-forge-types.js +26 -0
- package/dist/src/functions/wirings/forge/serialize-forge-types.d.ts +4 -0
- package/dist/src/functions/wirings/forge/serialize-forge-types.js +90 -0
- package/dist/src/functions/wirings/functions/pikku-command-function-types-split.js +4 -4
- package/dist/src/functions/wirings/functions/pikku-command-function-types.js +7 -2
- package/dist/src/functions/wirings/functions/pikku-command-functions.js +35 -10
- package/dist/src/functions/wirings/functions/pikku-command-services.d.ts +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-services.js +24 -24
- package/dist/src/functions/wirings/functions/pikku-function-types.js +2 -2
- package/dist/src/functions/wirings/functions/schemas.d.ts +1 -1
- package/dist/src/functions/wirings/functions/schemas.js +5 -4
- package/dist/src/functions/wirings/functions/serialize-function-imports.d.ts +3 -1
- package/dist/src/functions/wirings/functions/serialize-function-imports.js +7 -3
- package/dist/src/functions/wirings/functions/serialize-function-types.d.ts +1 -1
- package/dist/src/functions/wirings/functions/serialize-function-types.js +224 -91
- 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 +19 -21
- package/dist/src/functions/wirings/http/openapi-spec-generator.js +5 -5
- package/dist/src/functions/wirings/http/pikku-command-http-routes.js +18 -2
- package/dist/src/functions/wirings/http/pikku-command-openapi.js +2 -2
- package/dist/src/functions/wirings/http/pikku-http-routes.js +9 -2
- package/dist/src/functions/wirings/http/serialize-http-types.js +19 -3
- package/dist/src/functions/wirings/http/serialize-typed-http-map.js +33 -8
- package/dist/src/functions/wirings/mcp/pikku-command-mcp.js +29 -6
- package/dist/src/functions/wirings/mcp/serialize-mcp-json.js +3 -2
- package/dist/src/functions/wirings/mcp/serialize-mcp-types.js +71 -19
- package/dist/src/functions/wirings/middleware/pikku-command-middleware.js +29 -2
- package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.d.ts +5 -2
- package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.js +5 -13
- package/dist/src/functions/wirings/package/pikku-command-package.d.ts +1 -0
- package/dist/src/functions/wirings/package/pikku-command-package.js +58 -0
- package/dist/src/functions/wirings/package/serialize-package.d.ts +5 -0
- package/dist/src/functions/wirings/package/serialize-package.js +32 -0
- package/dist/src/functions/wirings/queue/pikku-command-queue.js +17 -3
- package/dist/src/functions/wirings/queue/pikku-queue.js +9 -11
- package/dist/src/functions/wirings/queue/serialize-queue-map.js +20 -3
- package/dist/src/functions/wirings/queue/serialize-queue-meta.d.ts +2 -1
- package/dist/src/functions/wirings/queue/serialize-queue-meta.js +10 -1
- package/dist/src/functions/wirings/queue/serialize-queue-types.js +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.js +4 -4
- package/dist/src/functions/wirings/rpc/pikku-command-rpc.js +9 -2
- package/dist/src/functions/wirings/rpc/serialize-public-rpc.js +11 -4
- package/dist/src/functions/wirings/rpc/serialize-remote-rpc.js +4 -1
- package/dist/src/functions/wirings/rpc/serialize-rpc-wrapper.js +3 -3
- package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.js +54 -8
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.js +15 -3
- package/dist/src/functions/wirings/scheduler/serialize-scheduler-meta.d.ts +2 -1
- package/dist/src/functions/wirings/scheduler/serialize-scheduler-meta.js +11 -1
- package/dist/src/functions/wirings/scheduler/serialize-scheduler-types.js +1 -1
- package/dist/src/functions/wirings/services/pikku-command-service-metadata.d.ts +1 -0
- package/dist/src/functions/wirings/services/pikku-command-service-metadata.js +22 -0
- package/dist/src/functions/wirings/workflow/pikku-command-workflow.js +58 -16
- package/dist/src/functions/wirings/workflow/serialize-workflow-map.d.ts +3 -0
- package/dist/src/functions/wirings/workflow/serialize-workflow-map.js +30 -32
- package/dist/src/functions/wirings/workflow/serialize-workflow-meta.d.ts +1 -2
- package/dist/src/functions/wirings/workflow/serialize-workflow-meta.js +43 -8
- package/dist/src/functions/wirings/workflow/serialize-workflow-registration.d.ts +7 -0
- package/dist/src/functions/wirings/workflow/serialize-workflow-registration.js +53 -0
- package/dist/src/functions/wirings/workflow/serialize-workflow-types.d.ts +4 -2
- package/dist/src/functions/wirings/workflow/serialize-workflow-types.js +308 -49
- package/dist/src/functions/wirings/workflow/serialize-workflow-workers.d.ts +1 -1
- package/dist/src/functions/wirings/workflow/serialize-workflow-workers.js +16 -29
- package/dist/src/middleware/log-command-info-and-time.d.ts +2 -2
- package/dist/src/middleware/log-command-info-and-time.js +1 -4
- package/dist/src/services/cli-logger-forwarder.service.js +1 -1
- package/dist/src/services.d.ts +2 -7
- package/dist/src/services.js +18 -13
- package/dist/src/utils/check-required-types.d.ts +2 -2
- package/dist/src/utils/check-required-types.js +2 -3
- package/dist/src/utils/command-summary.d.ts +2 -0
- package/dist/src/utils/command-summary.js +2 -0
- package/dist/src/utils/custom-types-generator.js +13 -15
- package/dist/src/utils/generate-bootstrap-file.js +1 -1
- package/dist/src/utils/pikku-cli-config.js +65 -4
- package/dist/src/utils/pikku-files-and-methods.d.ts +2 -2
- package/dist/src/utils/pikku-files-and-methods.js +4 -4
- package/dist/src/utils/schema-generator.d.ts +4 -3
- package/dist/src/utils/schema-generator.js +135 -15
- package/dist/src/utils/strip-verbose-meta.d.ts +43 -0
- package/dist/src/utils/strip-verbose-meta.js +210 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -9
- package/src/cli.wiring.ts +4 -4
- package/src/functions/commands/all.ts +203 -107
- package/src/functions/commands/bootstrap.ts +23 -16
- package/src/functions/commands/watch.ts +6 -3
- package/src/functions/runtimes/nextjs/pikku-command-nextjs.ts +26 -6
- package/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.ts +75 -22
- package/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.ts +72 -19
- package/src/functions/wirings/channels/pikku-channels.ts +27 -3
- package/src/functions/wirings/channels/pikku-command-channels.ts +46 -3
- package/src/functions/wirings/channels/serialize-channel-types.ts +72 -16
- package/src/functions/wirings/channels/serialize-typed-channel-map.ts +3 -2
- package/src/functions/wirings/cli/pikku-command-cli-entry.ts +4 -4
- package/src/functions/wirings/cli/pikku-command-cli-types.ts +1 -1
- package/src/functions/wirings/cli/pikku-command-cli.ts +45 -3
- package/src/functions/wirings/cli/serialize-channel-cli.ts +1 -1
- package/src/functions/wirings/cli/serialize-cli-types.ts +2 -2
- package/src/functions/wirings/cli/serialize-local-cli-bootstrap.ts +5 -5
- package/src/functions/wirings/forge/pikku-command-forge-nodes.ts +135 -0
- package/src/functions/wirings/forge/pikku-command-forge-types.ts +38 -0
- package/src/functions/wirings/forge/serialize-forge-types.ts +94 -0
- package/src/functions/wirings/functions/pikku-command-function-types-split.ts +9 -8
- package/src/functions/wirings/functions/pikku-command-function-types.ts +17 -10
- package/src/functions/wirings/functions/pikku-command-functions.ts +59 -14
- package/src/functions/wirings/functions/pikku-command-services.ts +26 -26
- package/src/functions/wirings/functions/pikku-function-types.ts +3 -1
- package/src/functions/wirings/functions/schemas.ts +14 -4
- package/src/functions/wirings/functions/serialize-function-imports.ts +12 -3
- package/src/functions/wirings/functions/serialize-function-types.ts +227 -93
- package/src/functions/wirings/functions/serialize-pikku-types-hub.ts +27 -26
- package/src/functions/wirings/http/openapi-spec-generator.ts +15 -6
- package/src/functions/wirings/http/pikku-command-http-routes.ts +46 -2
- package/src/functions/wirings/http/pikku-command-openapi.ts +3 -2
- package/src/functions/wirings/http/pikku-http-routes.ts +28 -2
- package/src/functions/wirings/http/serialize-http-types.ts +19 -3
- package/src/functions/wirings/http/serialize-typed-http-map.ts +32 -8
- package/src/functions/wirings/mcp/pikku-command-mcp.ts +58 -10
- package/src/functions/wirings/mcp/serialize-mcp-json.ts +8 -6
- package/src/functions/wirings/mcp/serialize-mcp-types.ts +71 -19
- package/src/functions/wirings/middleware/pikku-command-middleware.ts +39 -2
- package/src/functions/wirings/middleware/serialize-middleware-groups-meta.ts +4 -19
- package/src/functions/wirings/package/pikku-command-package.ts +81 -0
- package/src/functions/wirings/package/serialize-package.ts +69 -0
- package/src/functions/wirings/permissions/pikku-command-permissions.ts +2 -2
- package/src/functions/wirings/queue/pikku-command-queue.ts +47 -2
- package/src/functions/wirings/queue/pikku-queue.ts +26 -10
- package/src/functions/wirings/queue/serialize-queue-map.ts +18 -3
- package/src/functions/wirings/queue/serialize-queue-meta.ts +15 -1
- package/src/functions/wirings/queue/serialize-queue-types.ts +1 -1
- package/src/functions/wirings/rpc/pikku-command-rpc-map.ts +7 -4
- package/src/functions/wirings/rpc/pikku-command-rpc.ts +25 -2
- package/src/functions/wirings/rpc/serialize-public-rpc.ts +11 -4
- package/src/functions/wirings/rpc/serialize-remote-rpc.ts +4 -1
- package/src/functions/wirings/rpc/serialize-rpc-wrapper.ts +3 -3
- package/src/functions/wirings/rpc/serialize-typed-rpc-map.ts +74 -8
- package/src/functions/wirings/scheduler/pikku-command-scheduler.ts +51 -4
- package/src/functions/wirings/scheduler/serialize-scheduler-meta.ts +20 -1
- package/src/functions/wirings/scheduler/serialize-scheduler-types.ts +1 -1
- package/src/functions/wirings/services/pikku-command-service-metadata.ts +25 -0
- package/src/functions/wirings/workflow/pikku-command-workflow.ts +114 -19
- package/src/functions/wirings/workflow/serialize-workflow-map.ts +38 -40
- package/src/functions/wirings/workflow/serialize-workflow-meta.ts +68 -11
- package/src/functions/wirings/workflow/serialize-workflow-registration.ts +83 -0
- package/src/functions/wirings/workflow/serialize-workflow-types.ts +311 -49
- package/src/functions/wirings/workflow/serialize-workflow-workers.ts +16 -29
- package/src/middleware/log-command-info-and-time.ts +3 -6
- package/src/services/cli-logger-forwarder.service.ts +1 -1
- package/src/services.ts +23 -16
- package/src/utils/check-required-types.ts +4 -7
- package/src/utils/command-summary.ts +4 -0
- package/src/utils/custom-types-generator.ts +15 -15
- package/src/utils/generate-bootstrap-file.ts +1 -1
- package/src/utils/pikku-cli-config.ts +105 -5
- package/src/utils/pikku-files-and-methods.ts +10 -13
- package/src/utils/schema-generator.ts +185 -22
- package/src/utils/strip-verbose-meta.ts +254 -0
- package/types/application-types.d.ts +1 -1
- package/types/config.d.ts +47 -2
- package/.pikku/function/pikku-functions-meta.min.gen.ts +0 -211
- package/.pikku/function/pikku-functions.gen.ts +0 -84
- package/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.ts +0 -47
- package/dist/.pikku/function/pikku-functions-meta.min.gen.d.ts +0 -1
- package/dist/.pikku/function/pikku-functions-meta.min.gen.js +0 -211
- package/dist/.pikku/function/pikku-functions.gen.d.ts +0 -1
- package/dist/.pikku/function/pikku-functions.gen.js +0 -83
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.d.ts +0 -1
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +0 -47
- package/dist/.pikku/schemas/schemas/PikkuRemoteInternalRPCInput.schema.json +0 -1
- package/dist/src/functions/wirings/workflow/pikku-command-workflow-map.d.ts +0 -1
- package/dist/src/functions/wirings/workflow/pikku-command-workflow-map.js +0 -12
- package/dist/src/functions/wirings/workflow/pikku-command-workflow-types.d.ts +0 -1
- package/dist/src/functions/wirings/workflow/pikku-command-workflow-types.js +0 -11
- package/src/functions/wirings/workflow/pikku-command-workflow-map.ts +0 -24
- package/src/functions/wirings/workflow/pikku-command-workflow-types.ts +0 -22
|
@@ -6,30 +6,30 @@ export const serializeFunctionTypes = (
|
|
|
6
6
|
userSessionTypeName: string,
|
|
7
7
|
singletonServicesTypeImport: string,
|
|
8
8
|
singletonServicesTypeName: string,
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
wireServicesTypeImport: string,
|
|
10
|
+
wireServicesTypeName: string,
|
|
11
11
|
rpcMapTypeImport: string,
|
|
12
12
|
requiredServicesTypeImport: string,
|
|
13
|
-
configTypeImport: string
|
|
13
|
+
configTypeImport: string,
|
|
14
|
+
packageName?: string
|
|
14
15
|
) => {
|
|
16
|
+
const packageNameValue = packageName ? `'${packageName}'` : 'null'
|
|
15
17
|
return `/**
|
|
16
18
|
* Core function, middleware, and permission types for all wirings
|
|
17
19
|
*/
|
|
18
20
|
|
|
19
|
-
import { CorePikkuFunctionConfig, CorePikkuPermission, CorePikkuMiddleware, CorePermissionGroup, addMiddleware as addMiddlewareCore, addPermission as addPermissionCore } from '@pikku/core'
|
|
21
|
+
import { CorePikkuFunctionConfig, CorePikkuPermission, CorePikkuMiddleware, CorePermissionGroup, addMiddleware as addMiddlewareCore, addPermission as addPermissionCore, PikkuWire, PickRequired, ZodLike, CreateWireServices } from '@pikku/core'
|
|
20
22
|
import { CorePikkuFunction, CorePikkuFunctionSessionless } from '@pikku/core/function'
|
|
21
|
-
import { PikkuChannel } from '@pikku/core/channel'
|
|
22
|
-
import { PikkuMCP } from '@pikku/core/mcp'
|
|
23
23
|
|
|
24
24
|
${userSessionTypeImport}
|
|
25
25
|
${singletonServicesTypeImport}
|
|
26
|
-
${
|
|
26
|
+
${wireServicesTypeImport}
|
|
27
27
|
${configTypeImport}
|
|
28
28
|
${rpcMapTypeImport}
|
|
29
29
|
${requiredServicesTypeImport}
|
|
30
30
|
|
|
31
31
|
${singletonServicesTypeName !== 'SingletonServices' ? `type SingletonServices = ${singletonServicesTypeName}` : ''}
|
|
32
|
-
${
|
|
32
|
+
${wireServicesTypeName !== 'Services' ? `type Services = ${wireServicesTypeName}` : ''}
|
|
33
33
|
${userSessionTypeName !== 'Session' ? `type Session = ${userSessionTypeName}` : ''}
|
|
34
34
|
${configTypeImport.includes('Config type not found') ? 'type Config = any' : ''}
|
|
35
35
|
|
|
@@ -40,7 +40,7 @@ ${configTypeImport.includes('Config type not found') ? 'type Config = any' : ''}
|
|
|
40
40
|
* @template In - The input type that the permission check will receive
|
|
41
41
|
* @template RequiredServices - The services required for this permission check
|
|
42
42
|
*/
|
|
43
|
-
export type PikkuPermission<In = unknown, RequiredServices extends Services = Services> = CorePikkuPermission<In, RequiredServices, Session
|
|
43
|
+
export type PikkuPermission<In = unknown, RequiredServices extends Services = Services> = CorePikkuPermission<In, RequiredServices, PikkuWire<In, never, false, Session>>
|
|
44
44
|
|
|
45
45
|
/**
|
|
46
46
|
* Type-safe middleware definition that can access your application's services and session.
|
|
@@ -48,7 +48,7 @@ export type PikkuPermission<In = unknown, RequiredServices extends Services = Se
|
|
|
48
48
|
*
|
|
49
49
|
* @template RequiredServices - The services required for this middleware
|
|
50
50
|
*/
|
|
51
|
-
export type PikkuMiddleware<RequiredServices extends SingletonServices = SingletonServices> = CorePikkuMiddleware<RequiredServices
|
|
51
|
+
export type PikkuMiddleware<RequiredServices extends SingletonServices = SingletonServices> = CorePikkuMiddleware<RequiredServices>
|
|
52
52
|
|
|
53
53
|
/**
|
|
54
54
|
* Configuration object for creating a permission with metadata
|
|
@@ -69,7 +69,8 @@ export type PikkuPermissionConfig<In = unknown, RequiredServices extends Service
|
|
|
69
69
|
* @example
|
|
70
70
|
* \`\`\`typescript
|
|
71
71
|
* // Direct function syntax
|
|
72
|
-
* const permission = pikkuPermission(({ logger }, data, session) => {
|
|
72
|
+
* const permission = pikkuPermission(async ({ logger }, data, { session }) => {
|
|
73
|
+
* const session = await session?.get()
|
|
73
74
|
* return session?.role === 'admin'
|
|
74
75
|
* })
|
|
75
76
|
*
|
|
@@ -77,7 +78,8 @@ export type PikkuPermissionConfig<In = unknown, RequiredServices extends Service
|
|
|
77
78
|
* const adminPermission = pikkuPermission({
|
|
78
79
|
* name: 'Admin Permission',
|
|
79
80
|
* description: 'Checks if user has admin role',
|
|
80
|
-
* func: async ({ logger }, data, session) => {
|
|
81
|
+
* func: async ({ logger }, data, { session }) => {
|
|
82
|
+
* const session = await session?.get()
|
|
81
83
|
* return session?.role === 'admin'
|
|
82
84
|
* }
|
|
83
85
|
* })
|
|
@@ -108,7 +110,7 @@ export type PikkuMiddlewareConfig<RequiredServices extends SingletonServices = S
|
|
|
108
110
|
* @example
|
|
109
111
|
* \`\`\`typescript
|
|
110
112
|
* // Direct function syntax
|
|
111
|
-
* const middleware = pikkuMiddleware(({ logger },
|
|
113
|
+
* const middleware = pikkuMiddleware(({ logger }, wires, next) => {
|
|
112
114
|
* logger.info('Middleware executed')
|
|
113
115
|
* await next()
|
|
114
116
|
* })
|
|
@@ -117,7 +119,7 @@ export type PikkuMiddlewareConfig<RequiredServices extends SingletonServices = S
|
|
|
117
119
|
* const logMiddleware = pikkuMiddleware({
|
|
118
120
|
* name: 'Request Logger',
|
|
119
121
|
* description: 'Logs all incoming requests',
|
|
120
|
-
* func: async ({ logger },
|
|
122
|
+
* func: async ({ logger }, wires, next) => {
|
|
121
123
|
* logger.info('Request started')
|
|
122
124
|
* await next()
|
|
123
125
|
* }
|
|
@@ -140,7 +142,7 @@ export const pikkuMiddleware = <RequiredServices extends SingletonServices = Sin
|
|
|
140
142
|
* message,
|
|
141
143
|
* level = 'info'
|
|
142
144
|
* }) => {
|
|
143
|
-
* return pikkuMiddleware(async ({ logger },
|
|
145
|
+
* return pikkuMiddleware(async ({ logger }, next) => {
|
|
144
146
|
* logger[level](message)
|
|
145
147
|
* await next()
|
|
146
148
|
* })
|
|
@@ -162,8 +164,8 @@ export const pikkuMiddlewareFactory = <In = any>(
|
|
|
162
164
|
* export const requireRole = pikkuPermissionFactory<{ role: string }>(({
|
|
163
165
|
* role
|
|
164
166
|
* }) => {
|
|
165
|
-
* return pikkuPermission(async ({ logger }, data,
|
|
166
|
-
* if (!
|
|
167
|
+
* return pikkuPermission(async ({ logger }, data, { initialSession }) => {
|
|
168
|
+
* if (!initialSession || initialSession.role !== role) {
|
|
167
169
|
* logger.warn(\`Permission denied: required role '\${role}'\`)
|
|
168
170
|
* return false
|
|
169
171
|
* }
|
|
@@ -184,25 +186,19 @@ export const pikkuPermissionFactory = <In = any>(
|
|
|
184
186
|
*
|
|
185
187
|
* @template In - The input type
|
|
186
188
|
* @template Out - The output type that the function returns
|
|
187
|
-
* @template ChannelData - Channel data type (null = optional channel)
|
|
188
|
-
* @template MCPData - MCP data type (null = optional MCP)
|
|
189
189
|
* @template RequiredServices - Services required by this function
|
|
190
190
|
*/
|
|
191
191
|
export type PikkuFunctionSessionless<
|
|
192
192
|
In = unknown,
|
|
193
193
|
Out = never,
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
? { mcp?: PikkuMCP } // Optional MCP
|
|
203
|
-
: { mcp: PikkuMCP } // Required MCP
|
|
204
|
-
)
|
|
205
|
-
> = CorePikkuFunctionSessionless<In, Out, ChannelData, RequiredServices, Session>
|
|
194
|
+
RequiredWires extends keyof PikkuWire = never,
|
|
195
|
+
RequiredServices extends Services = Services
|
|
196
|
+
> = CorePikkuFunctionSessionless<
|
|
197
|
+
In,
|
|
198
|
+
Out,
|
|
199
|
+
RequiredServices,
|
|
200
|
+
PickRequired<PikkuWire<In, Out, false, Session, TypedPikkuRPC, null, any>, RequiredWires>
|
|
201
|
+
>
|
|
206
202
|
|
|
207
203
|
/**
|
|
208
204
|
* A session-aware API function that requires user authentication.
|
|
@@ -210,25 +206,24 @@ export type PikkuFunctionSessionless<
|
|
|
210
206
|
*
|
|
211
207
|
* @template In - The input type
|
|
212
208
|
* @template Out - The output type that the function returns
|
|
213
|
-
* @template ChannelData - Channel data type (null = optional channel)
|
|
214
|
-
* @template MCPData - MCP data type (null = optional MCP)
|
|
215
209
|
* @template RequiredServices - Services required by this function
|
|
216
210
|
*/
|
|
217
211
|
export type PikkuFunction<
|
|
218
212
|
In = unknown,
|
|
219
213
|
Out = never,
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
214
|
+
RequiredWires extends keyof PikkuWire = 'session',
|
|
215
|
+
RequiredServices extends Services = Services
|
|
216
|
+
> = CorePikkuFunction<
|
|
217
|
+
In,
|
|
218
|
+
Out,
|
|
219
|
+
RequiredServices,
|
|
220
|
+
PickRequired<PikkuWire<In, Out, true, Session, TypedPikkuRPC, null, any>, RequiredWires>
|
|
221
|
+
>
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Helper type to infer the output type from a Zod schema
|
|
225
|
+
*/
|
|
226
|
+
export type InferZodOutput<T> = T extends ZodLike<infer U> ? U : never
|
|
232
227
|
|
|
233
228
|
/**
|
|
234
229
|
* Configuration object for Pikku functions with optional middleware, permissions, tags, and documentation.
|
|
@@ -236,72 +231,172 @@ export type PikkuFunction<
|
|
|
236
231
|
*
|
|
237
232
|
* @template In - The input type
|
|
238
233
|
* @template Out - The output type
|
|
239
|
-
* @template ChannelData - Channel data type
|
|
240
|
-
* @template MCPData - MCP data type
|
|
241
234
|
* @template PikkuFunc - The function type (can be narrowed to PikkuFunction or PikkuFunctionSessionless)
|
|
242
235
|
*/
|
|
243
236
|
export type PikkuFunctionConfig<
|
|
244
237
|
In = unknown,
|
|
245
238
|
Out = unknown,
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
239
|
+
RequiredWires extends keyof PikkuWire = never,
|
|
240
|
+
PikkuFunc extends PikkuFunction<In, Out, RequiredWires> | PikkuFunctionSessionless<In, Out, RequiredWires> = PikkuFunction<In, Out, RequiredWires> | PikkuFunctionSessionless<In, Out, RequiredWires>,
|
|
241
|
+
InputSchema extends ZodLike | undefined = undefined,
|
|
242
|
+
OutputSchema extends ZodLike | undefined = undefined
|
|
243
|
+
> = CorePikkuFunctionConfig<PikkuFunc, PikkuPermission<In>, PikkuMiddleware, InputSchema, OutputSchema>
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Configuration object for Pikku functions with Zod schema validation.
|
|
247
|
+
* Use this when you want to define input/output schemas using Zod.
|
|
248
|
+
* Types are automatically inferred from the schemas.
|
|
249
|
+
*/
|
|
250
|
+
export type PikkuFunctionConfigWithSchema<
|
|
251
|
+
InputSchema extends ZodLike,
|
|
252
|
+
OutputSchema extends ZodLike | undefined = undefined,
|
|
253
|
+
RequiredWires extends keyof PikkuWire = never
|
|
254
|
+
> = {
|
|
255
|
+
name?: string
|
|
256
|
+
tags?: string[]
|
|
257
|
+
expose?: boolean
|
|
258
|
+
internal?: boolean
|
|
259
|
+
func: PikkuFunction<
|
|
260
|
+
InferZodOutput<InputSchema>,
|
|
261
|
+
OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown,
|
|
262
|
+
RequiredWires
|
|
263
|
+
> | PikkuFunctionSessionless<
|
|
264
|
+
InferZodOutput<InputSchema>,
|
|
265
|
+
OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown,
|
|
266
|
+
RequiredWires
|
|
267
|
+
>
|
|
268
|
+
auth?: boolean
|
|
269
|
+
permissions?: CorePermissionGroup<PikkuPermission<InferZodOutput<InputSchema>>>
|
|
270
|
+
middleware?: PikkuMiddleware[]
|
|
271
|
+
input: InputSchema
|
|
272
|
+
output?: OutputSchema
|
|
273
|
+
}
|
|
250
274
|
|
|
251
275
|
/**
|
|
252
276
|
* Creates a Pikku function that can be either session-aware or sessionless.
|
|
253
277
|
* This is the main function wrapper for creating API endpoints.
|
|
254
278
|
*
|
|
255
|
-
*
|
|
256
|
-
*
|
|
279
|
+
* Supports two patterns:
|
|
280
|
+
* 1. Generic types: \`pikkuFunc<Input, Output>({ func: ... })\`
|
|
281
|
+
* 2. Zod schemas: \`pikkuFunc({ input: z.object(...), output: z.object(...), func: ... })\`
|
|
282
|
+
*
|
|
283
|
+
* @template In - Input type for the function (inferred from schema if provided)
|
|
284
|
+
* @template Out - Output type for the function (inferred from schema if provided)
|
|
257
285
|
* @param func - Function definition, either direct function or configuration object
|
|
258
286
|
* @returns The normalized configuration object
|
|
259
287
|
*
|
|
260
288
|
* @example
|
|
261
|
-
*
|
|
262
|
-
*
|
|
263
|
-
*
|
|
264
|
-
*
|
|
289
|
+
* \`\`\`typescript
|
|
290
|
+
* // Pattern 1: Using generic types
|
|
291
|
+
* const createUser = pikkuFunc<{name: string, email: string}, {id: number}>({
|
|
292
|
+
* func: async ({db}, input) => {
|
|
265
293
|
* const user = await db.users.create(input)
|
|
266
|
-
* return {id: user.id
|
|
267
|
-
* }
|
|
268
|
-
* auth: true
|
|
294
|
+
* return { id: user.id }
|
|
295
|
+
* }
|
|
269
296
|
* })
|
|
270
|
-
*
|
|
297
|
+
*
|
|
298
|
+
* // Pattern 2: Using Zod schemas (types inferred automatically)
|
|
299
|
+
* const createUserInput = z.object({ name: z.string(), email: z.string() })
|
|
300
|
+
* const createUserOutput = z.object({ id: z.number() })
|
|
301
|
+
*
|
|
302
|
+
* const createUser = pikkuFunc({
|
|
303
|
+
* input: createUserInput,
|
|
304
|
+
* output: createUserOutput,
|
|
305
|
+
* func: async ({db}, input) => {
|
|
306
|
+
* // input is typed as { name: string, email: string }
|
|
307
|
+
* const user = await db.users.create(input)
|
|
308
|
+
* return { id: user.id } // must match output schema
|
|
309
|
+
* }
|
|
310
|
+
* })
|
|
311
|
+
* \`\`\`
|
|
271
312
|
*/
|
|
272
|
-
export
|
|
313
|
+
export function pikkuFunc<
|
|
314
|
+
InputSchema extends ZodLike,
|
|
315
|
+
OutputSchema extends ZodLike | undefined = undefined
|
|
316
|
+
>(
|
|
317
|
+
config: PikkuFunctionConfigWithSchema<InputSchema, OutputSchema, 'session' | 'rpc'>
|
|
318
|
+
): PikkuFunctionConfig<InferZodOutput<InputSchema>, OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown, 'session' | 'rpc'>
|
|
319
|
+
export function pikkuFunc<In, Out = unknown>(
|
|
273
320
|
func:
|
|
274
|
-
| PikkuFunction<In, Out>
|
|
275
|
-
|
|
|
276
|
-
)
|
|
321
|
+
| PikkuFunction<In, Out, 'session' | 'rpc'>
|
|
322
|
+
| PikkuFunctionConfig<In, Out, 'session' | 'rpc'>
|
|
323
|
+
): PikkuFunctionConfig<In, Out, 'session' | 'rpc'>
|
|
324
|
+
export function pikkuFunc(func: any) {
|
|
277
325
|
return typeof func === 'function' ? { func } : func
|
|
278
326
|
}
|
|
279
327
|
|
|
328
|
+
/**
|
|
329
|
+
* Configuration object for sessionless Pikku functions with Zod schema validation.
|
|
330
|
+
*/
|
|
331
|
+
export type PikkuFunctionSessionlessConfigWithSchema<
|
|
332
|
+
InputSchema extends ZodLike,
|
|
333
|
+
OutputSchema extends ZodLike | undefined = undefined,
|
|
334
|
+
RequiredWires extends keyof PikkuWire = never
|
|
335
|
+
> = {
|
|
336
|
+
name?: string
|
|
337
|
+
description?: string
|
|
338
|
+
tags?: string[]
|
|
339
|
+
expose?: boolean
|
|
340
|
+
internal?: boolean
|
|
341
|
+
func: PikkuFunctionSessionless<
|
|
342
|
+
InferZodOutput<InputSchema>,
|
|
343
|
+
OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown,
|
|
344
|
+
RequiredWires
|
|
345
|
+
>
|
|
346
|
+
auth?: boolean
|
|
347
|
+
permissions?: CorePermissionGroup<PikkuPermission<InferZodOutput<InputSchema>>>
|
|
348
|
+
middleware?: PikkuMiddleware[]
|
|
349
|
+
input: InputSchema
|
|
350
|
+
output?: OutputSchema
|
|
351
|
+
}
|
|
352
|
+
|
|
280
353
|
/**
|
|
281
354
|
* Creates a sessionless Pikku function that doesn't require user authentication.
|
|
282
355
|
* Use this for public endpoints, webhooks, or background tasks.
|
|
283
356
|
*
|
|
284
|
-
*
|
|
285
|
-
*
|
|
357
|
+
* Supports two patterns:
|
|
358
|
+
* 1. Generic types: \`pikkuSessionlessFunc<Input, Output>({ func: ... })\`
|
|
359
|
+
* 2. Zod schemas: \`pikkuSessionlessFunc({ input: z.object(...), func: ... })\`
|
|
360
|
+
*
|
|
361
|
+
* @template In - Input type for the function (inferred from schema if provided)
|
|
362
|
+
* @template Out - Output type for the function (inferred from schema if provided)
|
|
286
363
|
* @param func - Function definition, either direct function or configuration object
|
|
287
364
|
* @returns The normalized configuration object
|
|
288
365
|
*
|
|
289
366
|
* @example
|
|
290
|
-
*
|
|
291
|
-
*
|
|
367
|
+
* \`\`\`typescript
|
|
368
|
+
* // Pattern 1: Using generic types
|
|
369
|
+
* const healthCheck = pikkuSessionlessFunc<void, {status: string}>({
|
|
292
370
|
* func: async ({logger}) => {
|
|
293
|
-
*
|
|
294
|
-
*
|
|
295
|
-
*
|
|
296
|
-
*
|
|
371
|
+
* return { status: 'healthy' }
|
|
372
|
+
* }
|
|
373
|
+
* })
|
|
374
|
+
*
|
|
375
|
+
* // Pattern 2: Using Zod schemas
|
|
376
|
+
* const greetInput = z.object({ name: z.string() })
|
|
377
|
+
* const greetOutput = z.object({ message: z.string() })
|
|
378
|
+
*
|
|
379
|
+
* const greet = pikkuSessionlessFunc({
|
|
380
|
+
* input: greetInput,
|
|
381
|
+
* output: greetOutput,
|
|
382
|
+
* func: async (_services, { name }) => {
|
|
383
|
+
* return { message: \`Hello, \${name}!\` }
|
|
384
|
+
* }
|
|
297
385
|
* })
|
|
298
|
-
*
|
|
386
|
+
* \`\`\`
|
|
299
387
|
*/
|
|
300
|
-
export
|
|
388
|
+
export function pikkuSessionlessFunc<
|
|
389
|
+
InputSchema extends ZodLike,
|
|
390
|
+
OutputSchema extends ZodLike | undefined = undefined
|
|
391
|
+
>(
|
|
392
|
+
config: PikkuFunctionSessionlessConfigWithSchema<InputSchema, OutputSchema, 'session' | 'rpc'>
|
|
393
|
+
): PikkuFunctionConfig<InferZodOutput<InputSchema>, OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown, 'session' | 'rpc'>
|
|
394
|
+
export function pikkuSessionlessFunc<In, Out = unknown>(
|
|
301
395
|
func:
|
|
302
|
-
| PikkuFunctionSessionless<In, Out>
|
|
303
|
-
|
|
|
304
|
-
)
|
|
396
|
+
| PikkuFunctionSessionless<In, Out, 'session' | 'rpc'>
|
|
397
|
+
| PikkuFunctionConfig<In, Out, 'session' | 'rpc'>
|
|
398
|
+
): PikkuFunctionConfig<In, Out, 'session' | 'rpc'>
|
|
399
|
+
export function pikkuSessionlessFunc(func: any) {
|
|
305
400
|
return typeof func === 'function' ? { func } : func
|
|
306
401
|
}
|
|
307
402
|
|
|
@@ -313,22 +408,61 @@ export const pikkuSessionlessFunc = <In, Out = unknown>(
|
|
|
313
408
|
* @returns The normalized configuration object
|
|
314
409
|
*
|
|
315
410
|
* @example
|
|
316
|
-
*
|
|
411
|
+
* \`\`\`typescript
|
|
317
412
|
* const cleanupTempFiles = pikkuVoidFunc(async ({fileSystem, logger}) => {
|
|
318
413
|
* logger.info('Starting cleanup of temporary files')
|
|
319
414
|
* await fileSystem.deleteDirectory('/tmp/uploads')
|
|
320
415
|
* logger.info('Cleanup completed')
|
|
321
416
|
* })
|
|
322
|
-
*
|
|
417
|
+
* \`\`\`
|
|
323
418
|
*/
|
|
324
419
|
export const pikkuVoidFunc = (
|
|
325
420
|
func:
|
|
326
|
-
| PikkuFunctionSessionless<void, void>
|
|
327
|
-
|
|
|
421
|
+
| PikkuFunctionSessionless<void, void, 'session' | 'rpc'>
|
|
422
|
+
| PikkuFunctionConfig<void, void, 'session' | 'rpc'>
|
|
328
423
|
) => {
|
|
329
424
|
return typeof func === 'function' ? { func } : func
|
|
330
425
|
}
|
|
331
426
|
|
|
427
|
+
/**
|
|
428
|
+
* Creates a wrapper function for external package functions that are exposed via RPC.
|
|
429
|
+
* This allows you to wire external functions to any wiring type (HTTP, queue, etc.)
|
|
430
|
+
* without type compatibility issues.
|
|
431
|
+
*
|
|
432
|
+
* @template Name - The RPC method name (must be a key in FlattenedRPCMap)
|
|
433
|
+
* @param rpcName - The name of the RPC method to invoke
|
|
434
|
+
* @returns A Pikku function that proxies calls to the external RPC method
|
|
435
|
+
*
|
|
436
|
+
* @example
|
|
437
|
+
* \`\`\`typescript
|
|
438
|
+
* // Wire an external function via HTTP
|
|
439
|
+
* wireHTTP({
|
|
440
|
+
* auth: false,
|
|
441
|
+
* method: 'get',
|
|
442
|
+
* route: '/external/hello',
|
|
443
|
+
* func: external('ext:hello'),
|
|
444
|
+
* tags: ['external'],
|
|
445
|
+
* })
|
|
446
|
+
* \`\`\`
|
|
447
|
+
*/
|
|
448
|
+
export const external = <Name extends keyof FlattenedRPCMap>(
|
|
449
|
+
rpcName: Name
|
|
450
|
+
): PikkuFunctionConfig<
|
|
451
|
+
FlattenedRPCMap[Name]['input'],
|
|
452
|
+
FlattenedRPCMap[Name]['output'],
|
|
453
|
+
'session' | 'rpc'
|
|
454
|
+
> => {
|
|
455
|
+
return {
|
|
456
|
+
func: (async (_services: any, data: any, { rpc }: any) => {
|
|
457
|
+
return rpc.invoke(rpcName, data)
|
|
458
|
+
}) as any
|
|
459
|
+
} as PikkuFunctionConfig<
|
|
460
|
+
FlattenedRPCMap[Name]['input'],
|
|
461
|
+
FlattenedRPCMap[Name]['output'],
|
|
462
|
+
'session' | 'rpc'
|
|
463
|
+
>
|
|
464
|
+
}
|
|
465
|
+
|
|
332
466
|
/**
|
|
333
467
|
* Creates a Pikku config factory.
|
|
334
468
|
* Use this to define your application's configuration factory.
|
|
@@ -373,28 +507,28 @@ export const pikkuServices = (
|
|
|
373
507
|
) => func
|
|
374
508
|
|
|
375
509
|
/**
|
|
376
|
-
* Creates a Pikku
|
|
510
|
+
* Creates a Pikku wire services factory.
|
|
377
511
|
* Use this to define services that are created per-request/session.
|
|
378
512
|
*
|
|
379
|
-
* @param func -
|
|
380
|
-
* @returns The
|
|
513
|
+
* @param func - Wire services factory function
|
|
514
|
+
* @returns The wire services factory function
|
|
381
515
|
*
|
|
382
516
|
* @example
|
|
383
517
|
* \`\`\`typescript
|
|
384
|
-
* export const
|
|
518
|
+
* export const createWireServices = pikkuWireServices(async (services, wire) => {
|
|
519
|
+
* const session = await wire.session?.get()
|
|
385
520
|
* return {
|
|
386
521
|
* userCache: new UserCache(session?.userId)
|
|
387
522
|
* }
|
|
388
523
|
* })
|
|
389
524
|
* \`\`\`
|
|
390
525
|
*/
|
|
391
|
-
export const
|
|
526
|
+
export const pikkuWireServices = (
|
|
392
527
|
func: (
|
|
393
528
|
services: SingletonServices,
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
) => func
|
|
529
|
+
wire: any
|
|
530
|
+
) => Promise<RequiredWireServices>
|
|
531
|
+
): CreateWireServices => func as unknown as CreateWireServices
|
|
398
532
|
|
|
399
533
|
/**
|
|
400
534
|
* Adds global middleware for a specific tag.
|
|
@@ -420,7 +554,7 @@ export const pikkuSessionServices = (
|
|
|
420
554
|
* \`\`\`
|
|
421
555
|
*/
|
|
422
556
|
export const addMiddleware = (tag: string, middleware: PikkuMiddleware[]) => {
|
|
423
|
-
addMiddlewareCore(tag, middleware as any)
|
|
557
|
+
addMiddlewareCore(tag, middleware as any, ${packageNameValue})
|
|
424
558
|
}
|
|
425
559
|
|
|
426
560
|
/**
|
|
@@ -447,7 +581,7 @@ export const addMiddleware = (tag: string, middleware: PikkuMiddleware[]) => {
|
|
|
447
581
|
* \`\`\`
|
|
448
582
|
*/
|
|
449
583
|
export const addPermission = <In = unknown>(tag: string, permissions: CorePermissionGroup<PikkuPermission<In>> | PikkuPermission<In>[]) => {
|
|
450
|
-
addPermissionCore(tag, permissions as any)
|
|
584
|
+
addPermissionCore(tag, permissions as any, ${packageNameValue})
|
|
451
585
|
}
|
|
452
586
|
`
|
|
453
587
|
}
|
|
@@ -3,36 +3,37 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const serializePikkuTypesHub = (
|
|
5
5
|
functionTypesImportPath: string,
|
|
6
|
-
httpTypesImportPath: string,
|
|
7
|
-
channelTypesImportPath: string,
|
|
8
|
-
schedulerTypesImportPath: string,
|
|
9
|
-
queueTypesImportPath: string,
|
|
10
|
-
mcpTypesImportPath: string,
|
|
11
|
-
cliTypesImportPath: string
|
|
6
|
+
httpTypesImportPath: string | null,
|
|
7
|
+
channelTypesImportPath: string | null,
|
|
8
|
+
schedulerTypesImportPath: string | null,
|
|
9
|
+
queueTypesImportPath: string | null,
|
|
10
|
+
mcpTypesImportPath: string | null,
|
|
11
|
+
cliTypesImportPath: string | null,
|
|
12
|
+
forgeTypesImportPath: string | null
|
|
12
13
|
) => {
|
|
14
|
+
const exports = [
|
|
15
|
+
{
|
|
16
|
+
comment: 'Core function, middleware, and permission types',
|
|
17
|
+
path: functionTypesImportPath,
|
|
18
|
+
},
|
|
19
|
+
{ comment: 'HTTP wiring types', path: httpTypesImportPath },
|
|
20
|
+
{ comment: 'Channel wiring types', path: channelTypesImportPath },
|
|
21
|
+
{ comment: 'Scheduler wiring types', path: schedulerTypesImportPath },
|
|
22
|
+
{ comment: 'Queue wiring types', path: queueTypesImportPath },
|
|
23
|
+
{ comment: 'MCP wiring types', path: mcpTypesImportPath },
|
|
24
|
+
{ comment: 'CLI wiring types', path: cliTypesImportPath },
|
|
25
|
+
{ comment: 'Forge wiring types', path: forgeTypesImportPath },
|
|
26
|
+
]
|
|
27
|
+
|
|
28
|
+
const exportStatements = exports
|
|
29
|
+
.filter((e) => e.path)
|
|
30
|
+
.map((e) => `// ${e.comment}\nexport * from '${e.path}'`)
|
|
31
|
+
.join('\n\n')
|
|
32
|
+
|
|
13
33
|
return `/**
|
|
14
34
|
* Main type export hub - re-exports all wiring-specific types
|
|
15
35
|
*/
|
|
16
36
|
|
|
17
|
-
|
|
18
|
-
export * from '${functionTypesImportPath}'
|
|
19
|
-
|
|
20
|
-
// HTTP wiring types
|
|
21
|
-
export * from '${httpTypesImportPath}'
|
|
22
|
-
|
|
23
|
-
// Channel wiring types
|
|
24
|
-
export * from '${channelTypesImportPath}'
|
|
25
|
-
|
|
26
|
-
// Scheduler wiring types
|
|
27
|
-
export * from '${schedulerTypesImportPath}'
|
|
28
|
-
|
|
29
|
-
// Queue wiring types
|
|
30
|
-
export * from '${queueTypesImportPath}'
|
|
31
|
-
|
|
32
|
-
// MCP wiring types
|
|
33
|
-
export * from '${mcpTypesImportPath}'
|
|
34
|
-
|
|
35
|
-
// CLI wiring types
|
|
36
|
-
export * from '${cliTypesImportPath}'
|
|
37
|
+
${exportStatements}
|
|
37
38
|
`
|
|
38
39
|
}
|
|
@@ -68,7 +68,7 @@ export interface OpenAPISpecInfo {
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
const getErrorResponseForConstructorName = (constructorName: string) => {
|
|
71
|
-
const errors = Array.from(pikkuState('misc', 'errors').entries())
|
|
71
|
+
const errors = Array.from(pikkuState(null, 'misc', 'errors').entries())
|
|
72
72
|
const foundError = errors.find(([e]) => e.name === constructorName)
|
|
73
73
|
if (foundError) {
|
|
74
74
|
return foundError[1]
|
|
@@ -120,8 +120,17 @@ export async function generateOpenAPISpec(
|
|
|
120
120
|
|
|
121
121
|
for (const routeMeta of Object.values(httpMeta)) {
|
|
122
122
|
for (const meta of Object.values(routeMeta)) {
|
|
123
|
-
const {
|
|
124
|
-
|
|
123
|
+
const {
|
|
124
|
+
route,
|
|
125
|
+
method,
|
|
126
|
+
inputTypes,
|
|
127
|
+
pikkuFuncName,
|
|
128
|
+
params,
|
|
129
|
+
query,
|
|
130
|
+
errors,
|
|
131
|
+
description,
|
|
132
|
+
tags,
|
|
133
|
+
} = meta
|
|
125
134
|
const functionMeta = functionsMeta[pikkuFuncName]
|
|
126
135
|
if (!functionMeta) {
|
|
127
136
|
logger.error(
|
|
@@ -139,7 +148,7 @@ export async function generateOpenAPISpec(
|
|
|
139
148
|
}
|
|
140
149
|
|
|
141
150
|
const responses = {}
|
|
142
|
-
|
|
151
|
+
errors?.forEach((error) => {
|
|
143
152
|
const errorResponse = getErrorResponseForConstructorName(error)
|
|
144
153
|
if (errorResponse) {
|
|
145
154
|
responses[errorResponse.status] = {
|
|
@@ -150,9 +159,9 @@ export async function generateOpenAPISpec(
|
|
|
150
159
|
|
|
151
160
|
const operation: any = {
|
|
152
161
|
description:
|
|
153
|
-
|
|
162
|
+
description ||
|
|
154
163
|
`This endpoint handles the ${method.toUpperCase()} request for the route ${route}.`,
|
|
155
|
-
tags:
|
|
164
|
+
tags: tags || [route.split('/')[1] || 'default'],
|
|
156
165
|
parameters: [],
|
|
157
166
|
responses: {
|
|
158
167
|
...responses,
|