@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
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* This file was generated by @pikku/cli@0.11.
|
|
2
|
+
* This file was generated by @pikku/cli@0.11.3
|
|
3
3
|
*/
|
|
4
4
|
/**
|
|
5
5
|
* Core function, middleware, and permission types for all wirings
|
|
6
6
|
*/
|
|
7
|
-
import { CorePikkuFunctionConfig, CorePikkuPermission, CorePikkuMiddleware, CorePermissionGroup } from '@pikku/core';
|
|
7
|
+
import { CorePikkuFunctionConfig, CorePikkuPermission, CorePikkuMiddleware, CorePermissionGroup, PikkuWire, PickRequired, ZodLike, CreateWireServices } from '@pikku/core';
|
|
8
8
|
import { CorePikkuFunction, CorePikkuFunctionSessionless } from '@pikku/core/function';
|
|
9
|
-
import { PikkuChannel } from '@pikku/core/channel';
|
|
10
|
-
import { PikkuMCP } from '@pikku/core/mcp';
|
|
11
9
|
import type { UserSession } from '../../types/application-types.d.js';
|
|
12
10
|
import type { SingletonServices } from '../../types/application-types.d.js';
|
|
13
11
|
import type { Services } from '../../types/application-types.d.js';
|
|
14
12
|
import type { Config } from '../../types/application-types.d.js';
|
|
15
|
-
import type { TypedPikkuRPC } from '../rpc/pikku-rpc-wirings-map.internal.gen.d.js';
|
|
16
|
-
import type { RequiredSingletonServices,
|
|
13
|
+
import type { TypedPikkuRPC, FlattenedRPCMap } from '../rpc/pikku-rpc-wirings-map.internal.gen.d.js';
|
|
14
|
+
import type { RequiredSingletonServices, RequiredWireServices } from '../pikku-services.gen.js';
|
|
17
15
|
type Session = UserSession;
|
|
18
16
|
/**
|
|
19
17
|
* Type-safe API permission definition that integrates with your application's session type.
|
|
@@ -22,14 +20,14 @@ type Session = UserSession;
|
|
|
22
20
|
* @template In - The input type that the permission check will receive
|
|
23
21
|
* @template RequiredServices - The services required for this permission check
|
|
24
22
|
*/
|
|
25
|
-
export type PikkuPermission<In = unknown, RequiredServices extends Services = Services> = CorePikkuPermission<In, RequiredServices, Session
|
|
23
|
+
export type PikkuPermission<In = unknown, RequiredServices extends Services = Services> = CorePikkuPermission<In, RequiredServices, PikkuWire<In, never, false, Session>>;
|
|
26
24
|
/**
|
|
27
25
|
* Type-safe middleware definition that can access your application's services and session.
|
|
28
26
|
* Use this to define reusable middleware that can be applied to multiple wirings.
|
|
29
27
|
*
|
|
30
28
|
* @template RequiredServices - The services required for this middleware
|
|
31
29
|
*/
|
|
32
|
-
export type PikkuMiddleware<RequiredServices extends SingletonServices = SingletonServices> = CorePikkuMiddleware<RequiredServices
|
|
30
|
+
export type PikkuMiddleware<RequiredServices extends SingletonServices = SingletonServices> = CorePikkuMiddleware<RequiredServices>;
|
|
33
31
|
/**
|
|
34
32
|
* Configuration object for creating a permission with metadata
|
|
35
33
|
*/
|
|
@@ -48,7 +46,8 @@ export type PikkuPermissionConfig<In = unknown, RequiredServices extends Service
|
|
|
48
46
|
* @example
|
|
49
47
|
* ```typescript
|
|
50
48
|
* // Direct function syntax
|
|
51
|
-
* const permission = pikkuPermission(({ logger }, data, session) => {
|
|
49
|
+
* const permission = pikkuPermission(async ({ logger }, data, { session }) => {
|
|
50
|
+
* const session = await session?.get()
|
|
52
51
|
* return session?.role === 'admin'
|
|
53
52
|
* })
|
|
54
53
|
*
|
|
@@ -56,7 +55,8 @@ export type PikkuPermissionConfig<In = unknown, RequiredServices extends Service
|
|
|
56
55
|
* const adminPermission = pikkuPermission({
|
|
57
56
|
* name: 'Admin Permission',
|
|
58
57
|
* description: 'Checks if user has admin role',
|
|
59
|
-
* func: async ({ logger }, data, session) => {
|
|
58
|
+
* func: async ({ logger }, data, { session }) => {
|
|
59
|
+
* const session = await session?.get()
|
|
60
60
|
* return session?.role === 'admin'
|
|
61
61
|
* }
|
|
62
62
|
* })
|
|
@@ -81,7 +81,7 @@ export type PikkuMiddlewareConfig<RequiredServices extends SingletonServices = S
|
|
|
81
81
|
* @example
|
|
82
82
|
* ```typescript
|
|
83
83
|
* // Direct function syntax
|
|
84
|
-
* const middleware = pikkuMiddleware(({ logger },
|
|
84
|
+
* const middleware = pikkuMiddleware(({ logger }, wires, next) => {
|
|
85
85
|
* logger.info('Middleware executed')
|
|
86
86
|
* await next()
|
|
87
87
|
* })
|
|
@@ -90,7 +90,7 @@ export type PikkuMiddlewareConfig<RequiredServices extends SingletonServices = S
|
|
|
90
90
|
* const logMiddleware = pikkuMiddleware({
|
|
91
91
|
* name: 'Request Logger',
|
|
92
92
|
* description: 'Logs all incoming requests',
|
|
93
|
-
* func: async ({ logger },
|
|
93
|
+
* func: async ({ logger }, wires, next) => {
|
|
94
94
|
* logger.info('Request started')
|
|
95
95
|
* await next()
|
|
96
96
|
* }
|
|
@@ -108,7 +108,7 @@ export declare const pikkuMiddleware: <RequiredServices extends SingletonService
|
|
|
108
108
|
* message,
|
|
109
109
|
* level = 'info'
|
|
110
110
|
* }) => {
|
|
111
|
-
* return pikkuMiddleware(async ({ logger },
|
|
111
|
+
* return pikkuMiddleware(async ({ logger }, next) => {
|
|
112
112
|
* logger[level](message)
|
|
113
113
|
* await next()
|
|
114
114
|
* })
|
|
@@ -125,8 +125,8 @@ export declare const pikkuMiddlewareFactory: <In = any>(factory: (input: In) =>
|
|
|
125
125
|
* export const requireRole = pikkuPermissionFactory<{ role: string }>(({
|
|
126
126
|
* role
|
|
127
127
|
* }) => {
|
|
128
|
-
* return pikkuPermission(async ({ logger }, data,
|
|
129
|
-
* if (!
|
|
128
|
+
* return pikkuPermission(async ({ logger }, data, { initialSession }) => {
|
|
129
|
+
* if (!initialSession || initialSession.role !== role) {
|
|
130
130
|
* logger.warn(`Permission denied: required role '${role}'`)
|
|
131
131
|
* return false
|
|
132
132
|
* }
|
|
@@ -142,116 +142,141 @@ export declare const pikkuPermissionFactory: <In = any>(factory: (input: In) =>
|
|
|
142
142
|
*
|
|
143
143
|
* @template In - The input type
|
|
144
144
|
* @template Out - The output type that the function returns
|
|
145
|
-
* @template ChannelData - Channel data type (null = optional channel)
|
|
146
|
-
* @template MCPData - MCP data type (null = optional MCP)
|
|
147
145
|
* @template RequiredServices - Services required by this function
|
|
148
146
|
*/
|
|
149
|
-
export type PikkuFunctionSessionless<In = unknown, Out = never,
|
|
150
|
-
MCPData = null, // null means optional MCP
|
|
151
|
-
RequiredServices extends Services = Omit<Services, 'rpc' | 'channel' | 'mcp'> & {
|
|
152
|
-
rpc: TypedPikkuRPC;
|
|
153
|
-
} & ([
|
|
154
|
-
ChannelData
|
|
155
|
-
] extends [null] ? {
|
|
156
|
-
channel?: PikkuChannel<unknown, Out>;
|
|
157
|
-
} : {
|
|
158
|
-
channel: PikkuChannel<ChannelData, Out>;
|
|
159
|
-
}) & ([MCPData] extends [null] ? {
|
|
160
|
-
mcp?: PikkuMCP;
|
|
161
|
-
} : {
|
|
162
|
-
mcp: PikkuMCP;
|
|
163
|
-
})> = CorePikkuFunctionSessionless<In, Out, ChannelData, RequiredServices, Session>;
|
|
147
|
+
export type PikkuFunctionSessionless<In = unknown, Out = never, RequiredWires extends keyof PikkuWire = never, RequiredServices extends Services = Services> = CorePikkuFunctionSessionless<In, Out, RequiredServices, PickRequired<PikkuWire<In, Out, false, Session, TypedPikkuRPC, null, any>, RequiredWires>>;
|
|
164
148
|
/**
|
|
165
149
|
* A session-aware API function that requires user authentication.
|
|
166
150
|
* Use this for protected endpoints that need access to user session data.
|
|
167
151
|
*
|
|
168
152
|
* @template In - The input type
|
|
169
153
|
* @template Out - The output type that the function returns
|
|
170
|
-
* @template ChannelData - Channel data type (null = optional channel)
|
|
171
|
-
* @template MCPData - MCP data type (null = optional MCP)
|
|
172
154
|
* @template RequiredServices - Services required by this function
|
|
173
155
|
*/
|
|
174
|
-
export type PikkuFunction<In = unknown, Out = never,
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
ChannelData
|
|
180
|
-
] extends [null] ? {
|
|
181
|
-
channel?: PikkuChannel<unknown, Out>;
|
|
182
|
-
} : {
|
|
183
|
-
channel: PikkuChannel<ChannelData, Out>;
|
|
184
|
-
}) & ([MCPData] extends [null] ? {
|
|
185
|
-
mcp?: PikkuMCP;
|
|
186
|
-
} : {
|
|
187
|
-
mcp: PikkuMCP;
|
|
188
|
-
})> = CorePikkuFunction<In, Out, ChannelData, RequiredServices, Session>;
|
|
156
|
+
export type PikkuFunction<In = unknown, Out = never, RequiredWires extends keyof PikkuWire = 'session', RequiredServices extends Services = Services> = CorePikkuFunction<In, Out, RequiredServices, PickRequired<PikkuWire<In, Out, true, Session, TypedPikkuRPC, null, any>, RequiredWires>>;
|
|
157
|
+
/**
|
|
158
|
+
* Helper type to infer the output type from a Zod schema
|
|
159
|
+
*/
|
|
160
|
+
export type InferZodOutput<T> = T extends ZodLike<infer U> ? U : never;
|
|
189
161
|
/**
|
|
190
162
|
* Configuration object for Pikku functions with optional middleware, permissions, tags, and documentation.
|
|
191
163
|
* This type wraps CorePikkuFunctionConfig with the user's custom types.
|
|
192
164
|
*
|
|
193
165
|
* @template In - The input type
|
|
194
166
|
* @template Out - The output type
|
|
195
|
-
* @template ChannelData - Channel data type
|
|
196
|
-
* @template MCPData - MCP data type
|
|
197
167
|
* @template PikkuFunc - The function type (can be narrowed to PikkuFunction or PikkuFunctionSessionless)
|
|
198
168
|
*/
|
|
199
|
-
export type PikkuFunctionConfig<In = unknown, Out = unknown,
|
|
169
|
+
export type PikkuFunctionConfig<In = unknown, Out = unknown, RequiredWires extends keyof PikkuWire = never, PikkuFunc extends PikkuFunction<In, Out, RequiredWires> | PikkuFunctionSessionless<In, Out, RequiredWires> = PikkuFunction<In, Out, RequiredWires> | PikkuFunctionSessionless<In, Out, RequiredWires>, InputSchema extends ZodLike | undefined = undefined, OutputSchema extends ZodLike | undefined = undefined> = CorePikkuFunctionConfig<PikkuFunc, PikkuPermission<In>, PikkuMiddleware, InputSchema, OutputSchema>;
|
|
170
|
+
/**
|
|
171
|
+
* Configuration object for Pikku functions with Zod schema validation.
|
|
172
|
+
* Use this when you want to define input/output schemas using Zod.
|
|
173
|
+
* Types are automatically inferred from the schemas.
|
|
174
|
+
*/
|
|
175
|
+
export type PikkuFunctionConfigWithSchema<InputSchema extends ZodLike, OutputSchema extends ZodLike | undefined = undefined, RequiredWires extends keyof PikkuWire = never> = {
|
|
176
|
+
name?: string;
|
|
177
|
+
tags?: string[];
|
|
178
|
+
expose?: boolean;
|
|
179
|
+
internal?: boolean;
|
|
180
|
+
func: PikkuFunction<InferZodOutput<InputSchema>, OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown, RequiredWires> | PikkuFunctionSessionless<InferZodOutput<InputSchema>, OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown, RequiredWires>;
|
|
181
|
+
auth?: boolean;
|
|
182
|
+
permissions?: CorePermissionGroup<PikkuPermission<InferZodOutput<InputSchema>>>;
|
|
183
|
+
middleware?: PikkuMiddleware[];
|
|
184
|
+
input: InputSchema;
|
|
185
|
+
output?: OutputSchema;
|
|
186
|
+
};
|
|
200
187
|
/**
|
|
201
188
|
* Creates a Pikku function that can be either session-aware or sessionless.
|
|
202
189
|
* This is the main function wrapper for creating API endpoints.
|
|
203
190
|
*
|
|
204
|
-
*
|
|
205
|
-
*
|
|
191
|
+
* Supports two patterns:
|
|
192
|
+
* 1. Generic types: `pikkuFunc<Input, Output>({ func: ... })`
|
|
193
|
+
* 2. Zod schemas: `pikkuFunc({ input: z.object(...), output: z.object(...), func: ... })`
|
|
194
|
+
*
|
|
195
|
+
* @template In - Input type for the function (inferred from schema if provided)
|
|
196
|
+
* @template Out - Output type for the function (inferred from schema if provided)
|
|
206
197
|
* @param func - Function definition, either direct function or configuration object
|
|
207
198
|
* @returns The normalized configuration object
|
|
208
199
|
*
|
|
209
200
|
* @example
|
|
210
|
-
*
|
|
211
|
-
*
|
|
212
|
-
*
|
|
213
|
-
*
|
|
201
|
+
* ```typescript
|
|
202
|
+
* // Pattern 1: Using generic types
|
|
203
|
+
* const createUser = pikkuFunc<{name: string, email: string}, {id: number}>({
|
|
204
|
+
* func: async ({db}, input) => {
|
|
214
205
|
* const user = await db.users.create(input)
|
|
215
|
-
* return {id: user.id
|
|
216
|
-
* }
|
|
217
|
-
* auth: true
|
|
206
|
+
* return { id: user.id }
|
|
207
|
+
* }
|
|
218
208
|
* })
|
|
219
|
-
*
|
|
209
|
+
*
|
|
210
|
+
* // Pattern 2: Using Zod schemas (types inferred automatically)
|
|
211
|
+
* const createUserInput = z.object({ name: z.string(), email: z.string() })
|
|
212
|
+
* const createUserOutput = z.object({ id: z.number() })
|
|
213
|
+
*
|
|
214
|
+
* const createUser = pikkuFunc({
|
|
215
|
+
* input: createUserInput,
|
|
216
|
+
* output: createUserOutput,
|
|
217
|
+
* func: async ({db}, input) => {
|
|
218
|
+
* // input is typed as { name: string, email: string }
|
|
219
|
+
* const user = await db.users.create(input)
|
|
220
|
+
* return { id: user.id } // must match output schema
|
|
221
|
+
* }
|
|
222
|
+
* })
|
|
223
|
+
* ```
|
|
220
224
|
*/
|
|
221
|
-
export declare
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
225
|
+
export declare function pikkuFunc<InputSchema extends ZodLike, OutputSchema extends ZodLike | undefined = undefined>(config: PikkuFunctionConfigWithSchema<InputSchema, OutputSchema, 'session' | 'rpc'>): PikkuFunctionConfig<InferZodOutput<InputSchema>, OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown, 'session' | 'rpc'>;
|
|
226
|
+
export declare function pikkuFunc<In, Out = unknown>(func: PikkuFunction<In, Out, 'session' | 'rpc'> | PikkuFunctionConfig<In, Out, 'session' | 'rpc'>): PikkuFunctionConfig<In, Out, 'session' | 'rpc'>;
|
|
227
|
+
/**
|
|
228
|
+
* Configuration object for sessionless Pikku functions with Zod schema validation.
|
|
229
|
+
*/
|
|
230
|
+
export type PikkuFunctionSessionlessConfigWithSchema<InputSchema extends ZodLike, OutputSchema extends ZodLike | undefined = undefined, RequiredWires extends keyof PikkuWire = never> = {
|
|
231
|
+
name?: string;
|
|
232
|
+
description?: string;
|
|
233
|
+
tags?: string[];
|
|
234
|
+
expose?: boolean;
|
|
235
|
+
internal?: boolean;
|
|
236
|
+
func: PikkuFunctionSessionless<InferZodOutput<InputSchema>, OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown, RequiredWires>;
|
|
237
|
+
auth?: boolean;
|
|
238
|
+
permissions?: CorePermissionGroup<PikkuPermission<InferZodOutput<InputSchema>>>;
|
|
239
|
+
middleware?: PikkuMiddleware[];
|
|
240
|
+
input: InputSchema;
|
|
241
|
+
output?: OutputSchema;
|
|
242
|
+
};
|
|
228
243
|
/**
|
|
229
244
|
* Creates a sessionless Pikku function that doesn't require user authentication.
|
|
230
245
|
* Use this for public endpoints, webhooks, or background tasks.
|
|
231
246
|
*
|
|
232
|
-
*
|
|
233
|
-
*
|
|
247
|
+
* Supports two patterns:
|
|
248
|
+
* 1. Generic types: `pikkuSessionlessFunc<Input, Output>({ func: ... })`
|
|
249
|
+
* 2. Zod schemas: `pikkuSessionlessFunc({ input: z.object(...), func: ... })`
|
|
250
|
+
*
|
|
251
|
+
* @template In - Input type for the function (inferred from schema if provided)
|
|
252
|
+
* @template Out - Output type for the function (inferred from schema if provided)
|
|
234
253
|
* @param func - Function definition, either direct function or configuration object
|
|
235
254
|
* @returns The normalized configuration object
|
|
236
255
|
*
|
|
237
256
|
* @example
|
|
238
|
-
*
|
|
239
|
-
*
|
|
257
|
+
* ```typescript
|
|
258
|
+
* // Pattern 1: Using generic types
|
|
259
|
+
* const healthCheck = pikkuSessionlessFunc<void, {status: string}>({
|
|
240
260
|
* func: async ({logger}) => {
|
|
241
|
-
*
|
|
242
|
-
*
|
|
243
|
-
*
|
|
244
|
-
*
|
|
261
|
+
* return { status: 'healthy' }
|
|
262
|
+
* }
|
|
263
|
+
* })
|
|
264
|
+
*
|
|
265
|
+
* // Pattern 2: Using Zod schemas
|
|
266
|
+
* const greetInput = z.object({ name: z.string() })
|
|
267
|
+
* const greetOutput = z.object({ message: z.string() })
|
|
268
|
+
*
|
|
269
|
+
* const greet = pikkuSessionlessFunc({
|
|
270
|
+
* input: greetInput,
|
|
271
|
+
* output: greetOutput,
|
|
272
|
+
* func: async (_services, { name }) => {
|
|
273
|
+
* return { message: `Hello, ${name}!` }
|
|
274
|
+
* }
|
|
245
275
|
* })
|
|
246
|
-
*
|
|
276
|
+
* ```
|
|
247
277
|
*/
|
|
248
|
-
export declare
|
|
249
|
-
|
|
250
|
-
} & {
|
|
251
|
-
channel?: PikkuChannel<unknown, Out> | undefined;
|
|
252
|
-
} & {
|
|
253
|
-
mcp?: PikkuMCP;
|
|
254
|
-
}>, PikkuPermission<In, Services>, PikkuMiddleware<SingletonServices>>;
|
|
278
|
+
export declare function pikkuSessionlessFunc<InputSchema extends ZodLike, OutputSchema extends ZodLike | undefined = undefined>(config: PikkuFunctionSessionlessConfigWithSchema<InputSchema, OutputSchema, 'session' | 'rpc'>): PikkuFunctionConfig<InferZodOutput<InputSchema>, OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown, 'session' | 'rpc'>;
|
|
279
|
+
export declare function pikkuSessionlessFunc<In, Out = unknown>(func: PikkuFunctionSessionless<In, Out, 'session' | 'rpc'> | PikkuFunctionConfig<In, Out, 'session' | 'rpc'>): PikkuFunctionConfig<In, Out, 'session' | 'rpc'>;
|
|
255
280
|
/**
|
|
256
281
|
* Creates a function that takes no input and returns no output.
|
|
257
282
|
* Useful for health checks, triggers, or cleanup operations.
|
|
@@ -260,21 +285,37 @@ export declare const pikkuSessionlessFunc: <In, Out = unknown>(func: PikkuFuncti
|
|
|
260
285
|
* @returns The normalized configuration object
|
|
261
286
|
*
|
|
262
287
|
* @example
|
|
263
|
-
*
|
|
288
|
+
* ```typescript
|
|
264
289
|
* const cleanupTempFiles = pikkuVoidFunc(async ({fileSystem, logger}) => {
|
|
265
290
|
* logger.info('Starting cleanup of temporary files')
|
|
266
291
|
* await fileSystem.deleteDirectory('/tmp/uploads')
|
|
267
292
|
* logger.info('Cleanup completed')
|
|
268
293
|
* })
|
|
269
|
-
*
|
|
294
|
+
* ```
|
|
295
|
+
*/
|
|
296
|
+
export declare const pikkuVoidFunc: (func: PikkuFunctionSessionless<void, void, "session" | "rpc"> | PikkuFunctionConfig<void, void, "session" | "rpc">) => PikkuFunctionConfig<void, void, "rpc" | "session", PikkuFunctionSessionless<void, void, "rpc" | "session", Services> | PikkuFunction<void, void, "rpc" | "session", Services>, undefined, undefined>;
|
|
297
|
+
/**
|
|
298
|
+
* Creates a wrapper function for external package functions that are exposed via RPC.
|
|
299
|
+
* This allows you to wire external functions to any wiring type (HTTP, queue, etc.)
|
|
300
|
+
* without type compatibility issues.
|
|
301
|
+
*
|
|
302
|
+
* @template Name - The RPC method name (must be a key in FlattenedRPCMap)
|
|
303
|
+
* @param rpcName - The name of the RPC method to invoke
|
|
304
|
+
* @returns A Pikku function that proxies calls to the external RPC method
|
|
305
|
+
*
|
|
306
|
+
* @example
|
|
307
|
+
* ```typescript
|
|
308
|
+
* // Wire an external function via HTTP
|
|
309
|
+
* wireHTTP({
|
|
310
|
+
* auth: false,
|
|
311
|
+
* method: 'get',
|
|
312
|
+
* route: '/external/hello',
|
|
313
|
+
* func: external('ext:hello'),
|
|
314
|
+
* tags: ['external'],
|
|
315
|
+
* })
|
|
316
|
+
* ```
|
|
270
317
|
*/
|
|
271
|
-
export declare const
|
|
272
|
-
rpc: TypedPikkuRPC;
|
|
273
|
-
} & {
|
|
274
|
-
channel?: PikkuChannel<unknown, void> | undefined;
|
|
275
|
-
} & {
|
|
276
|
-
mcp?: PikkuMCP;
|
|
277
|
-
}>, PikkuPermission<void, Services>>;
|
|
318
|
+
export declare const external: <Name extends keyof FlattenedRPCMap>(rpcName: Name) => PikkuFunctionConfig<FlattenedRPCMap[Name]["input"], FlattenedRPCMap[Name]["output"], "session" | "rpc">;
|
|
278
319
|
/**
|
|
279
320
|
* Creates a Pikku config factory.
|
|
280
321
|
* Use this to define your application's configuration factory.
|
|
@@ -313,22 +354,23 @@ export declare const pikkuConfig: (func: (variables?: any, ...args: any[]) => Pr
|
|
|
313
354
|
*/
|
|
314
355
|
export declare const pikkuServices: (func: (config: Config, existingServices?: Partial<SingletonServices>) => Promise<RequiredSingletonServices>) => (config: Config, existingServices?: Partial<SingletonServices>) => Promise<RequiredSingletonServices>;
|
|
315
356
|
/**
|
|
316
|
-
* Creates a Pikku
|
|
357
|
+
* Creates a Pikku wire services factory.
|
|
317
358
|
* Use this to define services that are created per-request/session.
|
|
318
359
|
*
|
|
319
|
-
* @param func -
|
|
320
|
-
* @returns The
|
|
360
|
+
* @param func - Wire services factory function
|
|
361
|
+
* @returns The wire services factory function
|
|
321
362
|
*
|
|
322
363
|
* @example
|
|
323
364
|
* ```typescript
|
|
324
|
-
* export const
|
|
365
|
+
* export const createWireServices = pikkuWireServices(async (services, wire) => {
|
|
366
|
+
* const session = await wire.session?.get()
|
|
325
367
|
* return {
|
|
326
368
|
* userCache: new UserCache(session?.userId)
|
|
327
369
|
* }
|
|
328
370
|
* })
|
|
329
371
|
* ```
|
|
330
372
|
*/
|
|
331
|
-
export declare const
|
|
373
|
+
export declare const pikkuWireServices: (func: (services: SingletonServices, wire: any) => Promise<RequiredWireServices>) => CreateWireServices;
|
|
332
374
|
/**
|
|
333
375
|
* Adds global middleware for a specific tag.
|
|
334
376
|
*
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* This file was generated by @pikku/cli@0.11.
|
|
2
|
+
* This file was generated by @pikku/cli@0.11.3
|
|
3
3
|
*/
|
|
4
4
|
/**
|
|
5
5
|
* Core function, middleware, and permission types for all wirings
|
|
@@ -12,7 +12,8 @@ import { addMiddleware as addMiddlewareCore, addPermission as addPermissionCore
|
|
|
12
12
|
* @example
|
|
13
13
|
* ```typescript
|
|
14
14
|
* // Direct function syntax
|
|
15
|
-
* const permission = pikkuPermission(({ logger }, data, session) => {
|
|
15
|
+
* const permission = pikkuPermission(async ({ logger }, data, { session }) => {
|
|
16
|
+
* const session = await session?.get()
|
|
16
17
|
* return session?.role === 'admin'
|
|
17
18
|
* })
|
|
18
19
|
*
|
|
@@ -20,7 +21,8 @@ import { addMiddleware as addMiddlewareCore, addPermission as addPermissionCore
|
|
|
20
21
|
* const adminPermission = pikkuPermission({
|
|
21
22
|
* name: 'Admin Permission',
|
|
22
23
|
* description: 'Checks if user has admin role',
|
|
23
|
-
* func: async ({ logger }, data, session) => {
|
|
24
|
+
* func: async ({ logger }, data, { session }) => {
|
|
25
|
+
* const session = await session?.get()
|
|
24
26
|
* return session?.role === 'admin'
|
|
25
27
|
* }
|
|
26
28
|
* })
|
|
@@ -36,7 +38,7 @@ export const pikkuPermission = (permission) => {
|
|
|
36
38
|
* @example
|
|
37
39
|
* ```typescript
|
|
38
40
|
* // Direct function syntax
|
|
39
|
-
* const middleware = pikkuMiddleware(({ logger },
|
|
41
|
+
* const middleware = pikkuMiddleware(({ logger }, wires, next) => {
|
|
40
42
|
* logger.info('Middleware executed')
|
|
41
43
|
* await next()
|
|
42
44
|
* })
|
|
@@ -45,7 +47,7 @@ export const pikkuPermission = (permission) => {
|
|
|
45
47
|
* const logMiddleware = pikkuMiddleware({
|
|
46
48
|
* name: 'Request Logger',
|
|
47
49
|
* description: 'Logs all incoming requests',
|
|
48
|
-
* func: async ({ logger },
|
|
50
|
+
* func: async ({ logger }, wires, next) => {
|
|
49
51
|
* logger.info('Request started')
|
|
50
52
|
* await next()
|
|
51
53
|
* }
|
|
@@ -65,7 +67,7 @@ export const pikkuMiddleware = (middleware) => {
|
|
|
65
67
|
* message,
|
|
66
68
|
* level = 'info'
|
|
67
69
|
* }) => {
|
|
68
|
-
* return pikkuMiddleware(async ({ logger },
|
|
70
|
+
* return pikkuMiddleware(async ({ logger }, next) => {
|
|
69
71
|
* logger[level](message)
|
|
70
72
|
* await next()
|
|
71
73
|
* })
|
|
@@ -84,8 +86,8 @@ export const pikkuMiddlewareFactory = (factory) => {
|
|
|
84
86
|
* export const requireRole = pikkuPermissionFactory<{ role: string }>(({
|
|
85
87
|
* role
|
|
86
88
|
* }) => {
|
|
87
|
-
* return pikkuPermission(async ({ logger }, data,
|
|
88
|
-
* if (!
|
|
89
|
+
* return pikkuPermission(async ({ logger }, data, { initialSession }) => {
|
|
90
|
+
* if (!initialSession || initialSession.role !== role) {
|
|
89
91
|
* logger.warn(`Permission denied: required role '${role}'`)
|
|
90
92
|
* return false
|
|
91
93
|
* }
|
|
@@ -97,53 +99,12 @@ export const pikkuMiddlewareFactory = (factory) => {
|
|
|
97
99
|
export const pikkuPermissionFactory = (factory) => {
|
|
98
100
|
return factory;
|
|
99
101
|
};
|
|
100
|
-
|
|
101
|
-
* Creates a Pikku function that can be either session-aware or sessionless.
|
|
102
|
-
* This is the main function wrapper for creating API endpoints.
|
|
103
|
-
*
|
|
104
|
-
* @template In - Input type for the function
|
|
105
|
-
* @template Out - Output type for the function
|
|
106
|
-
* @param func - Function definition, either direct function or configuration object
|
|
107
|
-
* @returns The normalized configuration object
|
|
108
|
-
*
|
|
109
|
-
* @example
|
|
110
|
-
* \`\`\`typescript
|
|
111
|
-
* const createUser = pikkuFunc<{name: string, email: string}, {id: number, message: string}>({
|
|
112
|
-
* func: async ({db, logger}, input) => {
|
|
113
|
-
* logger.info('Creating user', input.name)
|
|
114
|
-
* const user = await db.users.create(input)
|
|
115
|
-
* return {id: user.id, message: \`User \${input.name} created successfully\`}
|
|
116
|
-
* },
|
|
117
|
-
* auth: true
|
|
118
|
-
* })
|
|
119
|
-
* \`\`\`
|
|
120
|
-
*/
|
|
121
|
-
export const pikkuFunc = (func) => {
|
|
102
|
+
export function pikkuFunc(func) {
|
|
122
103
|
return typeof func === 'function' ? { func } : func;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
* Creates a sessionless Pikku function that doesn't require user authentication.
|
|
126
|
-
* Use this for public endpoints, webhooks, or background tasks.
|
|
127
|
-
*
|
|
128
|
-
* @template In - Input type for the function
|
|
129
|
-
* @template Out - Output type for the function
|
|
130
|
-
* @param func - Function definition, either direct function or configuration object
|
|
131
|
-
* @returns The normalized configuration object
|
|
132
|
-
*
|
|
133
|
-
* @example
|
|
134
|
-
* \`\`\`typescript
|
|
135
|
-
* const healthCheck = pikkuSessionlessFunc<void, {status: string, timestamp: string}>({
|
|
136
|
-
* func: async ({logger}) => {
|
|
137
|
-
* logger.info('Health check requested')
|
|
138
|
-
* return {status: 'healthy', timestamp: new Date().toISOString()}
|
|
139
|
-
* },
|
|
140
|
-
* name: 'healthCheck'
|
|
141
|
-
* })
|
|
142
|
-
* \`\`\`
|
|
143
|
-
*/
|
|
144
|
-
export const pikkuSessionlessFunc = (func) => {
|
|
104
|
+
}
|
|
105
|
+
export function pikkuSessionlessFunc(func) {
|
|
145
106
|
return typeof func === 'function' ? { func } : func;
|
|
146
|
-
}
|
|
107
|
+
}
|
|
147
108
|
/**
|
|
148
109
|
* Creates a function that takes no input and returns no output.
|
|
149
110
|
* Useful for health checks, triggers, or cleanup operations.
|
|
@@ -152,17 +113,45 @@ export const pikkuSessionlessFunc = (func) => {
|
|
|
152
113
|
* @returns The normalized configuration object
|
|
153
114
|
*
|
|
154
115
|
* @example
|
|
155
|
-
*
|
|
116
|
+
* ```typescript
|
|
156
117
|
* const cleanupTempFiles = pikkuVoidFunc(async ({fileSystem, logger}) => {
|
|
157
118
|
* logger.info('Starting cleanup of temporary files')
|
|
158
119
|
* await fileSystem.deleteDirectory('/tmp/uploads')
|
|
159
120
|
* logger.info('Cleanup completed')
|
|
160
121
|
* })
|
|
161
|
-
*
|
|
122
|
+
* ```
|
|
162
123
|
*/
|
|
163
124
|
export const pikkuVoidFunc = (func) => {
|
|
164
125
|
return typeof func === 'function' ? { func } : func;
|
|
165
126
|
};
|
|
127
|
+
/**
|
|
128
|
+
* Creates a wrapper function for external package functions that are exposed via RPC.
|
|
129
|
+
* This allows you to wire external functions to any wiring type (HTTP, queue, etc.)
|
|
130
|
+
* without type compatibility issues.
|
|
131
|
+
*
|
|
132
|
+
* @template Name - The RPC method name (must be a key in FlattenedRPCMap)
|
|
133
|
+
* @param rpcName - The name of the RPC method to invoke
|
|
134
|
+
* @returns A Pikku function that proxies calls to the external RPC method
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* ```typescript
|
|
138
|
+
* // Wire an external function via HTTP
|
|
139
|
+
* wireHTTP({
|
|
140
|
+
* auth: false,
|
|
141
|
+
* method: 'get',
|
|
142
|
+
* route: '/external/hello',
|
|
143
|
+
* func: external('ext:hello'),
|
|
144
|
+
* tags: ['external'],
|
|
145
|
+
* })
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
export const external = (rpcName) => {
|
|
149
|
+
return {
|
|
150
|
+
func: (async (_services, data, { rpc }) => {
|
|
151
|
+
return rpc.invoke(rpcName, data);
|
|
152
|
+
})
|
|
153
|
+
};
|
|
154
|
+
};
|
|
166
155
|
/**
|
|
167
156
|
* Creates a Pikku config factory.
|
|
168
157
|
* Use this to define your application's configuration factory.
|
|
@@ -201,22 +190,23 @@ export const pikkuConfig = (func) => func;
|
|
|
201
190
|
*/
|
|
202
191
|
export const pikkuServices = (func) => func;
|
|
203
192
|
/**
|
|
204
|
-
* Creates a Pikku
|
|
193
|
+
* Creates a Pikku wire services factory.
|
|
205
194
|
* Use this to define services that are created per-request/session.
|
|
206
195
|
*
|
|
207
|
-
* @param func -
|
|
208
|
-
* @returns The
|
|
196
|
+
* @param func - Wire services factory function
|
|
197
|
+
* @returns The wire services factory function
|
|
209
198
|
*
|
|
210
199
|
* @example
|
|
211
200
|
* ```typescript
|
|
212
|
-
* export const
|
|
201
|
+
* export const createWireServices = pikkuWireServices(async (services, wire) => {
|
|
202
|
+
* const session = await wire.session?.get()
|
|
213
203
|
* return {
|
|
214
204
|
* userCache: new UserCache(session?.userId)
|
|
215
205
|
* }
|
|
216
206
|
* })
|
|
217
207
|
* ```
|
|
218
208
|
*/
|
|
219
|
-
export const
|
|
209
|
+
export const pikkuWireServices = (func) => func;
|
|
220
210
|
/**
|
|
221
211
|
* Adds global middleware for a specific tag.
|
|
222
212
|
*
|
|
@@ -241,7 +231,7 @@ export const pikkuSessionServices = (func) => func;
|
|
|
241
231
|
* ```
|
|
242
232
|
*/
|
|
243
233
|
export const addMiddleware = (tag, middleware) => {
|
|
244
|
-
addMiddlewareCore(tag, middleware);
|
|
234
|
+
addMiddlewareCore(tag, middleware, null);
|
|
245
235
|
};
|
|
246
236
|
/**
|
|
247
237
|
* Adds global permissions for a specific tag.
|
|
@@ -267,5 +257,5 @@ export const addMiddleware = (tag, middleware) => {
|
|
|
267
257
|
* ```
|
|
268
258
|
*/
|
|
269
259
|
export const addPermission = (tag, permissions) => {
|
|
270
|
-
addPermissionCore(tag, permissions);
|
|
260
|
+
addPermissionCore(tag, permissions, null);
|
|
271
261
|
};
|