@pikku/cli 0.11.2 → 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 +63 -6
- package/.pikku/channel/pikku-channels-map.gen.d.ts +4 -4
- 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 +1 -1
- package/.pikku/cli/pikku-cli-client.gen.ts +1 -1
- package/.pikku/cli/pikku-cli-types.gen.ts +1 -1
- package/.pikku/cli/pikku-cli-wirings-meta.gen.json +2 -1
- package/.pikku/cli/pikku-cli-wirings-meta.gen.ts +2 -2
- package/.pikku/cli/pikku-cli-wirings.gen.ts +1 -1
- package/.pikku/cli/pikku-cli.gen.ts +1 -1
- package/.pikku/forge/pikku-forge-types.gen.ts +83 -0
- package/.pikku/function/pikku-function-types.gen.ts +181 -35
- package/.pikku/function/pikku-functions-meta-verbose.gen.json +1030 -0
- package/.pikku/function/pikku-functions-meta.gen.json +88 -420
- package/.pikku/function/pikku-functions-meta.gen.ts +2 -2
- package/.pikku/http/pikku-http-types.gen.ts +19 -3
- package/.pikku/http/pikku-http-wirings-map.gen.d.ts +4 -4
- 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 +69 -17
- package/.pikku/mcp/pikku-mcp-wirings-meta.gen.ts +4 -4
- package/.pikku/mcp/pikku-mcp-wirings.gen.ts +1 -1
- package/.pikku/pikku-bootstrap.gen.ts +7 -9
- package/.pikku/pikku-services.gen.ts +3 -2
- package/.pikku/pikku-types.gen.ts +4 -1
- package/.pikku/pikku-websocket.gen.ts +1 -1
- package/.pikku/queue/pikku-queue-types.gen.ts +1 -1
- package/.pikku/queue/pikku-queue-workers-wirings-map.gen.d.ts +4 -4
- package/.pikku/queue/pikku-queue-workers-wirings-meta.gen.ts +2 -2
- package/.pikku/queue/pikku-queue-workers-wirings.gen.ts +1 -1
- package/.pikku/rpc/pikku-remote-rpc-workers.gen.ts +4 -1
- package/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +12 -7
- package/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +15 -9
- package/.pikku/scheduler/pikku-scheduler-types.gen.ts +1 -1
- package/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.ts +2 -2
- package/.pikku/scheduler/pikku-schedulers-wirings.gen.ts +1 -1
- package/.pikku/schemas/register.gen.ts +9 -1
- 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 +11 -6
- package/.pikku/services/getInspectorState.gen.json +2 -2
- package/.pikku/services/jwt.gen.json +2 -2
- package/.pikku/services/logger.gen.json +2 -2
- package/.pikku/services/queueService.gen.json +2 -2
- package/.pikku/services/schedulerService.gen.json +2 -2
- package/.pikku/services/schema.gen.json +2 -2
- package/.pikku/services/secrets.gen.json +13 -0
- package/.pikku/services/variables.gen.json +2 -2
- package/.pikku/services/workflowService.gen.json +6 -6
- package/.pikku/workflow/pikku-workflow-map.gen.d.ts +2 -36
- package/.pikku/workflow/pikku-workflow-types.gen.ts +297 -45
- package/.pikku/workflow/pikku-workflow-wirings-meta.gen.ts +5 -4
- package/.pikku/workflow/pikku-workflow-wirings.gen.ts +1 -6
- package/CHANGELOG.md +23 -1
- package/cli.schema.json +1 -1
- package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +47 -5
- 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.gen.d.ts +1 -1
- package/dist/.pikku/channel/pikku-channels.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-channel.js +1 -1
- package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-client.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-types.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +2 -2
- package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.json +2 -1
- package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-wirings.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli.gen.js +1 -1
- 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 +123 -31
- package/dist/.pikku/function/pikku-function-types.gen.js +37 -51
- package/dist/.pikku/function/pikku-functions-meta.gen.js +2 -2
- package/dist/.pikku/function/pikku-functions-meta.gen.json +88 -420
- package/dist/.pikku/http/pikku-http-types.gen.d.ts +18 -3
- 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 +54 -14
- package/dist/.pikku/mcp/pikku-mcp-types.gen.js +7 -31
- package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.js +4 -4
- 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 -9
- package/dist/.pikku/pikku-bootstrap.gen.js +7 -9
- package/dist/.pikku/pikku-services.gen.d.ts +3 -2
- package/dist/.pikku/pikku-services.gen.js +1 -0
- 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 +1 -1
- package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +2 -2
- package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +1 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +1 -1
- package/dist/.pikku/rpc/pikku-remote-rpc-workers.gen.d.ts +4 -1
- package/dist/.pikku/rpc/pikku-remote-rpc-workers.gen.js +4 -1
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
- package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.js +2 -2
- package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.d.ts +1 -1
- package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.js +1 -1
- package/dist/.pikku/schemas/register.gen.js +5 -1
- 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 +207 -37
- package/dist/.pikku/workflow/pikku-workflow-types.gen.js +104 -28
- package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +3 -3
- package/dist/.pikku/workflow/pikku-workflow-wirings.gen.d.ts +2 -6
- package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +2 -6
- package/dist/src/functions/commands/all.js +117 -79
- package/dist/src/functions/commands/bootstrap.js +2 -9
- package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.js +0 -1
- package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.js +49 -35
- package/dist/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.js +49 -35
- package/dist/src/functions/wirings/channels/pikku-channels.js +1 -1
- package/dist/src/functions/wirings/channels/pikku-command-channels.js +18 -2
- package/dist/src/functions/wirings/channels/serialize-channel-types.js +62 -5
- package/dist/src/functions/wirings/channels/serialize-typed-channel-map.js +1 -2
- package/dist/src/functions/wirings/cli/pikku-command-cli.js +10 -2
- 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 +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-function-types.js +7 -2
- package/dist/src/functions/wirings/functions/pikku-command-functions.js +33 -18
- package/dist/src/functions/wirings/functions/pikku-command-services.js +1 -1
- 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 +181 -34
- 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 +1 -1
- 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 +1 -1
- package/dist/src/functions/wirings/http/serialize-http-types.js +18 -2
- package/dist/src/functions/wirings/http/serialize-typed-http-map.js +33 -8
- package/dist/src/functions/wirings/mcp/pikku-command-mcp.js +15 -6
- package/dist/src/functions/wirings/mcp/serialize-mcp-json.js +3 -2
- package/dist/src/functions/wirings/mcp/serialize-mcp-types.js +68 -16
- package/dist/src/functions/wirings/middleware/pikku-command-middleware.js +5 -2
- 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 +10 -2
- package/dist/src/functions/wirings/queue/pikku-queue.js +1 -9
- package/dist/src/functions/wirings/queue/serialize-queue-map.js +20 -3
- package/dist/src/functions/wirings/queue/serialize-queue-meta.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 +1 -1
- package/dist/src/functions/wirings/rpc/serialize-remote-rpc.js +3 -0
- package/dist/src/functions/wirings/rpc/serialize-rpc-wrapper.js +1 -1
- 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 +10 -1
- package/dist/src/functions/wirings/scheduler/serialize-scheduler-meta.js +1 -1
- package/dist/src/functions/wirings/workflow/pikku-command-workflow.js +56 -18
- 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 -3
- package/dist/src/functions/wirings/workflow/serialize-workflow-meta.js +43 -18
- 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 +3 -1
- package/dist/src/functions/wirings/workflow/serialize-workflow-types.js +299 -45
- package/dist/src/functions/wirings/workflow/serialize-workflow-workers.d.ts +1 -1
- package/dist/src/functions/wirings/workflow/serialize-workflow-workers.js +14 -27
- package/dist/src/services.js +4 -1
- 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 +37 -9
- 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 +7 -4
- package/src/functions/commands/all.ts +144 -97
- package/src/functions/commands/bootstrap.ts +2 -10
- package/src/functions/runtimes/nextjs/pikku-command-nextjs.ts +0 -1
- package/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.ts +49 -35
- package/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.ts +49 -35
- package/src/functions/wirings/channels/pikku-channels.ts +1 -1
- package/src/functions/wirings/channels/pikku-command-channels.ts +46 -3
- package/src/functions/wirings/channels/serialize-channel-types.ts +62 -5
- package/src/functions/wirings/channels/serialize-typed-channel-map.ts +3 -2
- package/src/functions/wirings/cli/pikku-command-cli.ts +21 -2
- 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 +3 -2
- package/src/functions/wirings/functions/pikku-command-function-types.ts +17 -10
- package/src/functions/wirings/functions/pikku-command-functions.ts +47 -37
- package/src/functions/wirings/functions/pikku-command-services.ts +1 -1
- 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 +182 -34
- package/src/functions/wirings/functions/serialize-pikku-types-hub.ts +27 -26
- package/src/functions/wirings/http/openapi-spec-generator.ts +1 -1
- 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 +1 -1
- package/src/functions/wirings/http/serialize-http-types.ts +18 -2
- package/src/functions/wirings/http/serialize-typed-http-map.ts +32 -8
- package/src/functions/wirings/mcp/pikku-command-mcp.ts +32 -10
- package/src/functions/wirings/mcp/serialize-mcp-json.ts +8 -6
- package/src/functions/wirings/mcp/serialize-mcp-types.ts +68 -16
- package/src/functions/wirings/middleware/pikku-command-middleware.ts +6 -2
- 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/queue/pikku-command-queue.ts +22 -2
- package/src/functions/wirings/queue/pikku-queue.ts +1 -10
- package/src/functions/wirings/queue/serialize-queue-map.ts +18 -3
- package/src/functions/wirings/queue/serialize-queue-meta.ts +1 -1
- package/src/functions/wirings/rpc/pikku-command-rpc-map.ts +7 -4
- package/src/functions/wirings/rpc/pikku-command-rpc.ts +1 -1
- package/src/functions/wirings/rpc/serialize-remote-rpc.ts +3 -0
- package/src/functions/wirings/rpc/serialize-rpc-wrapper.ts +1 -1
- package/src/functions/wirings/rpc/serialize-typed-rpc-map.ts +74 -8
- package/src/functions/wirings/scheduler/pikku-command-scheduler.ts +22 -1
- package/src/functions/wirings/scheduler/serialize-scheduler-meta.ts +1 -1
- package/src/functions/wirings/workflow/pikku-command-workflow.ts +104 -37
- package/src/functions/wirings/workflow/serialize-workflow-map.ts +38 -40
- package/src/functions/wirings/workflow/serialize-workflow-meta.ts +66 -26
- package/src/functions/wirings/workflow/serialize-workflow-registration.ts +83 -0
- package/src/functions/wirings/workflow/serialize-workflow-types.ts +299 -45
- package/src/functions/wirings/workflow/serialize-workflow-workers.ts +14 -27
- package/src/services.ts +8 -1
- 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 +51 -18
- package/src/utils/schema-generator.ts +185 -22
- package/src/utils/strip-verbose-meta.ts +254 -0
- package/types/config.d.ts +37 -3
- package/.pikku/function/pikku-functions-meta.min.gen.json +0 -212
- package/.pikku/function/pikku-functions-meta.min.gen.ts +0 -6
- package/dist/.pikku/function/pikku-functions-meta.min.gen.d.ts +0 -1
- package/dist/.pikku/function/pikku-functions-meta.min.gen.js +0 -6
- package/dist/.pikku/function/pikku-functions-meta.min.gen.json +0 -212
- 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 -13
- package/dist/src/functions/wirings/workflow/serialize-workflow-wirings.d.ts +0 -8
- package/dist/src/functions/wirings/workflow/serialize-workflow-wirings.js +0 -30
- package/src/functions/wirings/workflow/pikku-command-workflow-map.ts +0 -24
- package/src/functions/wirings/workflow/pikku-command-workflow-types.ts +0 -29
- package/src/functions/wirings/workflow/serialize-workflow-wirings.ts +0 -47
- /package/.pikku/{workflow/pikku-workflow-wirings-meta.gen.json → channel/pikku-channels-meta.gen.json} +0 -0
- /package/dist/.pikku/{workflow/pikku-workflow-wirings-meta.gen.json → channel/pikku-channels-meta.gen.json} +0 -0
|
@@ -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
|
|
|
@@ -9,6 +9,12 @@
|
|
|
9
9
|
import { CoreChannel, wireChannel as wireChannelCore } from '@pikku/core/channel'
|
|
10
10
|
import { AssertHTTPWiringParams } from '@pikku/core/http'
|
|
11
11
|
import type { PikkuFunctionConfig, PikkuFunctionSessionless, PikkuPermission, PikkuMiddleware } from '../function/pikku-function-types.gen.js'
|
|
12
|
+
import type { ZodLike, CorePermissionGroup } from '@pikku/core'
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Helper type to infer the output type from a Zod schema
|
|
16
|
+
*/
|
|
17
|
+
type InferZodOutput<T> = T extends ZodLike<infer U> ? U : never
|
|
12
18
|
|
|
13
19
|
/**
|
|
14
20
|
* Type definition for WebSocket channels with typed data exchange.
|
|
@@ -59,21 +65,72 @@ export const pikkuChannelDisconnectionFunc = (
|
|
|
59
65
|
return typeof func === 'function' ? { func } : func
|
|
60
66
|
}
|
|
61
67
|
|
|
68
|
+
/**
|
|
69
|
+
* Configuration object for channel functions with Zod schema validation.
|
|
70
|
+
*/
|
|
71
|
+
type PikkuChannelFuncConfigWithSchema<
|
|
72
|
+
InputSchema extends ZodLike,
|
|
73
|
+
OutputSchema extends ZodLike | undefined = undefined
|
|
74
|
+
> = {
|
|
75
|
+
name?: string
|
|
76
|
+
tags?: string[]
|
|
77
|
+
expose?: boolean
|
|
78
|
+
internal?: boolean
|
|
79
|
+
func: PikkuFunctionSessionless<
|
|
80
|
+
InferZodOutput<InputSchema>,
|
|
81
|
+
OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown,
|
|
82
|
+
'channel' | 'session' | 'rpc'
|
|
83
|
+
>
|
|
84
|
+
auth?: boolean
|
|
85
|
+
permissions?: CorePermissionGroup<PikkuPermission<InferZodOutput<InputSchema>>>
|
|
86
|
+
middleware?: PikkuMiddleware[]
|
|
87
|
+
input: InputSchema
|
|
88
|
+
output?: OutputSchema
|
|
89
|
+
}
|
|
90
|
+
|
|
62
91
|
/**
|
|
63
92
|
* Creates a function that handles WebSocket channel messages.
|
|
64
93
|
* Called when a message is received on a channel.
|
|
65
|
-
* This is the same as pikkuSessionlessFunc but with ChannelData = unknown by default.
|
|
66
94
|
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
95
|
+
* Supports two patterns:
|
|
96
|
+
* 1. Generic types: `pikkuChannelFunc<Input, Output>({ func: ... })`
|
|
97
|
+
* 2. Zod schemas: `pikkuChannelFunc({ input: z.object(...), func: ... })`
|
|
98
|
+
*
|
|
99
|
+
* @template In - Input type for channel messages (inferred from schema if provided)
|
|
100
|
+
* @template Out - Output type for channel responses (inferred from schema if provided)
|
|
69
101
|
* @param func - Function definition, either direct function or configuration object
|
|
70
102
|
* @returns The normalized configuration object
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```typescript
|
|
106
|
+
* // Pattern 1: Using generic types
|
|
107
|
+
* const handleMessage = pikkuChannelFunc<{text: string}, {received: boolean}>({
|
|
108
|
+
* func: async (_services, { text }) => ({ received: true })
|
|
109
|
+
* })
|
|
110
|
+
*
|
|
111
|
+
* // Pattern 2: Using Zod schemas
|
|
112
|
+
* const messageInput = z.object({ text: z.string() })
|
|
113
|
+
* const messageOutput = z.object({ received: z.boolean() })
|
|
114
|
+
*
|
|
115
|
+
* const handleMessage = pikkuChannelFunc({
|
|
116
|
+
* input: messageInput,
|
|
117
|
+
* output: messageOutput,
|
|
118
|
+
* func: async (_services, { text }) => ({ received: true })
|
|
119
|
+
* })
|
|
120
|
+
* ```
|
|
71
121
|
*/
|
|
72
|
-
export
|
|
122
|
+
export function pikkuChannelFunc<
|
|
123
|
+
InputSchema extends ZodLike,
|
|
124
|
+
OutputSchema extends ZodLike | undefined = undefined
|
|
125
|
+
>(
|
|
126
|
+
config: PikkuChannelFuncConfigWithSchema<InputSchema, OutputSchema>
|
|
127
|
+
): PikkuFunctionConfig<InferZodOutput<InputSchema>, OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown, 'channel' | 'session' | 'rpc'>
|
|
128
|
+
export function pikkuChannelFunc<In, Out = unknown>(
|
|
73
129
|
func:
|
|
74
130
|
| PikkuFunctionSessionless<In, Out, 'channel' | 'session' | 'rpc'>
|
|
75
131
|
| PikkuFunctionConfig<In, Out, 'channel' | 'session' | 'rpc'>
|
|
76
|
-
)
|
|
132
|
+
): PikkuFunctionConfig<In, Out, 'channel' | 'session' | 'rpc'>
|
|
133
|
+
export function pikkuChannelFunc(func: any) {
|
|
77
134
|
return typeof func === 'function' ? { func } : func
|
|
78
135
|
}
|
|
79
136
|
|
|
@@ -1,14 +1,12 @@
|
|
|
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
|
* This provides the structure needed for TypeScript to be aware of channels
|
|
6
6
|
*/
|
|
7
|
-
|
|
8
7
|
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
// or are broken into simpler types
|
|
9
|
+
|
|
12
10
|
export type PikkuSchemasOutput = false | true
|
|
13
11
|
export type PikkuFunctionsOutput = false | true
|
|
14
12
|
export type PikkuMiddlewareOutput = false | true
|
|
@@ -23,6 +21,8 @@ export type PikkuQueueOutput = false | true
|
|
|
23
21
|
export type PikkuChannelsOutput = false | true
|
|
24
22
|
export type PikkuMCPOutput = false | true
|
|
25
23
|
export type PikkuCLIOutput = false | true
|
|
24
|
+
export type PikkuPackageOutput = false | true
|
|
25
|
+
export type PikkuForgeNodesOutput = false | true
|
|
26
26
|
|
|
27
27
|
interface ChannelHandler<I, O> {
|
|
28
28
|
input: I;
|
|
@@ -1,5 +1,7 @@
|
|
|
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
|
import { pikkuState } from '@pikku/core'
|
|
5
|
-
|
|
5
|
+
import type { ChannelsMeta } from '@pikku/core/channel'
|
|
6
|
+
import metaData from './pikku-channels-meta.gen.json' with { type: 'json' }
|
|
7
|
+
pikkuState(null, 'channel', 'meta', metaData as ChannelsMeta)
|
|
@@ -135,12 +135,13 @@
|
|
|
135
135
|
"jwt",
|
|
136
136
|
"config",
|
|
137
137
|
"variables",
|
|
138
|
+
"secrets",
|
|
138
139
|
"workflowService",
|
|
139
140
|
"queueService",
|
|
140
141
|
"schedulerService"
|
|
141
142
|
]
|
|
142
143
|
},
|
|
143
|
-
"filePath": "src/services.ts"
|
|
144
|
+
"filePath": "/home/runner/work/pikku/pikku/packages/cli/src/services.ts"
|
|
144
145
|
}
|
|
145
146
|
}
|
|
146
147
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
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
|
import { pikkuState } from '@pikku/core'
|
|
5
5
|
import { CLIMeta } from '@pikku/core/cli'
|
|
6
6
|
import metaData from './pikku-cli-wirings-meta.gen.json' with { type: 'json' }
|
|
7
|
-
pikkuState('cli', 'meta', metaData as CLIMeta)
|
|
7
|
+
pikkuState(null, 'cli', 'meta', metaData as CLIMeta)
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was generated by @pikku/cli@0.11.3
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Forge-specific type definitions for typed wireForgeNode and wireForgeCredential
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { wireForgeNode as wireForgeNodeCore, wireForgeCredential as wireForgeCredentialCore } from '@pikku/core/forge-node'
|
|
9
|
+
import type { CoreForgeNode, CoreForgeCredential } from '@pikku/core/forge-node'
|
|
10
|
+
import type { FlattenedRPCMap } from '../rpc/pikku-rpc-wirings-map.internal.gen.js'
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Valid category values for forge nodes.
|
|
14
|
+
* No categories configured - wireForgeNode cannot be used until forge.node.categories is defined in pikku.config.json.
|
|
15
|
+
*/
|
|
16
|
+
export type ForgeCategory = never
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Valid RPC names that can be used with forge nodes.
|
|
20
|
+
* These are derived from the FlattenedRPCMap which includes both local and external package RPCs.
|
|
21
|
+
*/
|
|
22
|
+
export type ForgeRPCName = keyof FlattenedRPCMap
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Typed forge node configuration.
|
|
26
|
+
* Validates that category and rpc are valid values.
|
|
27
|
+
*/
|
|
28
|
+
export type TypedForgeNode = Omit<CoreForgeNode, 'category' | 'rpc'> & {
|
|
29
|
+
/** Grouping category (validated against forge.node.categories in config) */
|
|
30
|
+
category: ForgeCategory
|
|
31
|
+
/** RPC name to call when node executes (must be a valid RPC name) */
|
|
32
|
+
rpc: ForgeRPCName
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Registers a Forge node with validated category and RPC.
|
|
37
|
+
*
|
|
38
|
+
* @param config - Forge node configuration with typed category and rpc
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* wireForgeNode({
|
|
43
|
+
* name: 'send-email',
|
|
44
|
+
* displayName: 'Send Email',
|
|
45
|
+
* category: 'Communication', // Must be in forge.node.categories
|
|
46
|
+
* type: 'action',
|
|
47
|
+
* rpc: 'sendEmail', // Must be a valid RPC name
|
|
48
|
+
* description: 'Sends an email to a recipient'
|
|
49
|
+
* })
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export const wireForgeNode = (config: TypedForgeNode): void => {
|
|
53
|
+
wireForgeNodeCore(config as CoreForgeNode)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Registers a Forge credential definition.
|
|
58
|
+
* Credentials define secrets/API keys required by the package.
|
|
59
|
+
*
|
|
60
|
+
* @template T - Zod schema type for the credential structure
|
|
61
|
+
* @param config - Forge credential configuration
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```typescript
|
|
65
|
+
* import { z } from 'zod'
|
|
66
|
+
*
|
|
67
|
+
* const apiCredentials = z.object({
|
|
68
|
+
* apiKey: z.string().describe('API key for authentication'),
|
|
69
|
+
* apiSecret: z.string().describe('API secret')
|
|
70
|
+
* })
|
|
71
|
+
*
|
|
72
|
+
* wireForgeCredential({
|
|
73
|
+
* name: 'example-api',
|
|
74
|
+
* displayName: 'Example API Credentials',
|
|
75
|
+
* description: 'Credentials for the example external API',
|
|
76
|
+
* secretId: 'EXAMPLE_API_CREDENTIALS',
|
|
77
|
+
* schema: apiCredentials
|
|
78
|
+
* })
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
export const wireForgeCredential = <T>(config: CoreForgeCredential<T>): void => {
|
|
82
|
+
wireForgeCredentialCore(config)
|
|
83
|
+
}
|
|
@@ -1,18 +1,18 @@
|
|
|
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
7
|
|
|
8
|
-
import { CorePikkuFunctionConfig, CorePikkuPermission, CorePikkuMiddleware, CorePermissionGroup, addMiddleware as addMiddlewareCore, addPermission as addPermissionCore, PikkuWire, PickRequired } from '@pikku/core'
|
|
8
|
+
import { CorePikkuFunctionConfig, CorePikkuPermission, CorePikkuMiddleware, CorePermissionGroup, addMiddleware as addMiddlewareCore, addPermission as addPermissionCore, PikkuWire, PickRequired, ZodLike, CreateWireServices } from '@pikku/core'
|
|
9
9
|
import { CorePikkuFunction, CorePikkuFunctionSessionless } from '@pikku/core/function'
|
|
10
10
|
|
|
11
11
|
import type { UserSession } from '../../types/application-types.d.js'
|
|
12
12
|
import type { SingletonServices } from '../../types/application-types.d.js'
|
|
13
13
|
import type { Services } from '../../types/application-types.d.js'
|
|
14
14
|
import type { Config } from '../../types/application-types.d.js'
|
|
15
|
-
import type { TypedPikkuRPC } from '../rpc/pikku-rpc-wirings-map.internal.gen.d.js'
|
|
15
|
+
import type { TypedPikkuRPC, FlattenedRPCMap } from '../rpc/pikku-rpc-wirings-map.internal.gen.d.js'
|
|
16
16
|
import type { RequiredSingletonServices, RequiredWireServices } from '../pikku-services.gen.js'
|
|
17
17
|
|
|
18
18
|
|
|
@@ -207,6 +207,11 @@ export type PikkuFunction<
|
|
|
207
207
|
PickRequired<PikkuWire<In, Out, true, Session, TypedPikkuRPC, null, any>, RequiredWires>
|
|
208
208
|
>
|
|
209
209
|
|
|
210
|
+
/**
|
|
211
|
+
* Helper type to infer the output type from a Zod schema
|
|
212
|
+
*/
|
|
213
|
+
export type InferZodOutput<T> = T extends ZodLike<infer U> ? U : never
|
|
214
|
+
|
|
210
215
|
/**
|
|
211
216
|
* Configuration object for Pikku functions with optional middleware, permissions, tags, and documentation.
|
|
212
217
|
* This type wraps CorePikkuFunctionConfig with the user's custom types.
|
|
@@ -219,64 +224,166 @@ export type PikkuFunctionConfig<
|
|
|
219
224
|
In = unknown,
|
|
220
225
|
Out = unknown,
|
|
221
226
|
RequiredWires extends keyof PikkuWire = never,
|
|
222
|
-
PikkuFunc extends PikkuFunction<In, Out, RequiredWires> | PikkuFunctionSessionless<In, Out, RequiredWires> = PikkuFunction<In, Out, RequiredWires> | PikkuFunctionSessionless<In, Out, RequiredWires
|
|
223
|
-
|
|
227
|
+
PikkuFunc extends PikkuFunction<In, Out, RequiredWires> | PikkuFunctionSessionless<In, Out, RequiredWires> = PikkuFunction<In, Out, RequiredWires> | PikkuFunctionSessionless<In, Out, RequiredWires>,
|
|
228
|
+
InputSchema extends ZodLike | undefined = undefined,
|
|
229
|
+
OutputSchema extends ZodLike | undefined = undefined
|
|
230
|
+
> = CorePikkuFunctionConfig<PikkuFunc, PikkuPermission<In>, PikkuMiddleware, InputSchema, OutputSchema>
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Configuration object for Pikku functions with Zod schema validation.
|
|
234
|
+
* Use this when you want to define input/output schemas using Zod.
|
|
235
|
+
* Types are automatically inferred from the schemas.
|
|
236
|
+
*/
|
|
237
|
+
export type PikkuFunctionConfigWithSchema<
|
|
238
|
+
InputSchema extends ZodLike,
|
|
239
|
+
OutputSchema extends ZodLike | undefined = undefined,
|
|
240
|
+
RequiredWires extends keyof PikkuWire = never
|
|
241
|
+
> = {
|
|
242
|
+
name?: string
|
|
243
|
+
tags?: string[]
|
|
244
|
+
expose?: boolean
|
|
245
|
+
internal?: boolean
|
|
246
|
+
func: PikkuFunction<
|
|
247
|
+
InferZodOutput<InputSchema>,
|
|
248
|
+
OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown,
|
|
249
|
+
RequiredWires
|
|
250
|
+
> | PikkuFunctionSessionless<
|
|
251
|
+
InferZodOutput<InputSchema>,
|
|
252
|
+
OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown,
|
|
253
|
+
RequiredWires
|
|
254
|
+
>
|
|
255
|
+
auth?: boolean
|
|
256
|
+
permissions?: CorePermissionGroup<PikkuPermission<InferZodOutput<InputSchema>>>
|
|
257
|
+
middleware?: PikkuMiddleware[]
|
|
258
|
+
input: InputSchema
|
|
259
|
+
output?: OutputSchema
|
|
260
|
+
}
|
|
224
261
|
|
|
225
262
|
/**
|
|
226
263
|
* Creates a Pikku function that can be either session-aware or sessionless.
|
|
227
264
|
* This is the main function wrapper for creating API endpoints.
|
|
228
265
|
*
|
|
229
|
-
*
|
|
230
|
-
*
|
|
266
|
+
* Supports two patterns:
|
|
267
|
+
* 1. Generic types: `pikkuFunc<Input, Output>({ func: ... })`
|
|
268
|
+
* 2. Zod schemas: `pikkuFunc({ input: z.object(...), output: z.object(...), func: ... })`
|
|
269
|
+
*
|
|
270
|
+
* @template In - Input type for the function (inferred from schema if provided)
|
|
271
|
+
* @template Out - Output type for the function (inferred from schema if provided)
|
|
231
272
|
* @param func - Function definition, either direct function or configuration object
|
|
232
273
|
* @returns The normalized configuration object
|
|
233
274
|
*
|
|
234
275
|
* @example
|
|
235
|
-
*
|
|
236
|
-
*
|
|
237
|
-
*
|
|
238
|
-
*
|
|
239
|
-
* logger.info('Creating user', input.name)
|
|
276
|
+
* ```typescript
|
|
277
|
+
* // Pattern 1: Using generic types
|
|
278
|
+
* const createUser = pikkuFunc<{name: string, email: string}, {id: number}>({
|
|
279
|
+
* func: async ({db}, input) => {
|
|
240
280
|
* const user = await db.users.create(input)
|
|
241
|
-
* return {id: user.id
|
|
242
|
-
* }
|
|
243
|
-
* auth: true
|
|
281
|
+
* return { id: user.id }
|
|
282
|
+
* }
|
|
244
283
|
* })
|
|
245
|
-
*
|
|
284
|
+
*
|
|
285
|
+
* // Pattern 2: Using Zod schemas (types inferred automatically)
|
|
286
|
+
* const createUserInput = z.object({ name: z.string(), email: z.string() })
|
|
287
|
+
* const createUserOutput = z.object({ id: z.number() })
|
|
288
|
+
*
|
|
289
|
+
* const createUser = pikkuFunc({
|
|
290
|
+
* input: createUserInput,
|
|
291
|
+
* output: createUserOutput,
|
|
292
|
+
* func: async ({db}, input) => {
|
|
293
|
+
* // input is typed as { name: string, email: string }
|
|
294
|
+
* const user = await db.users.create(input)
|
|
295
|
+
* return { id: user.id } // must match output schema
|
|
296
|
+
* }
|
|
297
|
+
* })
|
|
298
|
+
* ```
|
|
246
299
|
*/
|
|
247
|
-
export
|
|
300
|
+
export function pikkuFunc<
|
|
301
|
+
InputSchema extends ZodLike,
|
|
302
|
+
OutputSchema extends ZodLike | undefined = undefined
|
|
303
|
+
>(
|
|
304
|
+
config: PikkuFunctionConfigWithSchema<InputSchema, OutputSchema, 'session' | 'rpc'>
|
|
305
|
+
): PikkuFunctionConfig<InferZodOutput<InputSchema>, OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown, 'session' | 'rpc'>
|
|
306
|
+
export function pikkuFunc<In, Out = unknown>(
|
|
248
307
|
func:
|
|
249
308
|
| PikkuFunction<In, Out, 'session' | 'rpc'>
|
|
250
309
|
| PikkuFunctionConfig<In, Out, 'session' | 'rpc'>
|
|
251
|
-
)
|
|
310
|
+
): PikkuFunctionConfig<In, Out, 'session' | 'rpc'>
|
|
311
|
+
export function pikkuFunc(func: any) {
|
|
252
312
|
return typeof func === 'function' ? { func } : func
|
|
253
313
|
}
|
|
254
314
|
|
|
315
|
+
/**
|
|
316
|
+
* Configuration object for sessionless Pikku functions with Zod schema validation.
|
|
317
|
+
*/
|
|
318
|
+
export type PikkuFunctionSessionlessConfigWithSchema<
|
|
319
|
+
InputSchema extends ZodLike,
|
|
320
|
+
OutputSchema extends ZodLike | undefined = undefined,
|
|
321
|
+
RequiredWires extends keyof PikkuWire = never
|
|
322
|
+
> = {
|
|
323
|
+
name?: string
|
|
324
|
+
description?: string
|
|
325
|
+
tags?: string[]
|
|
326
|
+
expose?: boolean
|
|
327
|
+
internal?: boolean
|
|
328
|
+
func: PikkuFunctionSessionless<
|
|
329
|
+
InferZodOutput<InputSchema>,
|
|
330
|
+
OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown,
|
|
331
|
+
RequiredWires
|
|
332
|
+
>
|
|
333
|
+
auth?: boolean
|
|
334
|
+
permissions?: CorePermissionGroup<PikkuPermission<InferZodOutput<InputSchema>>>
|
|
335
|
+
middleware?: PikkuMiddleware[]
|
|
336
|
+
input: InputSchema
|
|
337
|
+
output?: OutputSchema
|
|
338
|
+
}
|
|
339
|
+
|
|
255
340
|
/**
|
|
256
341
|
* Creates a sessionless Pikku function that doesn't require user authentication.
|
|
257
342
|
* Use this for public endpoints, webhooks, or background tasks.
|
|
258
343
|
*
|
|
259
|
-
*
|
|
260
|
-
*
|
|
344
|
+
* Supports two patterns:
|
|
345
|
+
* 1. Generic types: `pikkuSessionlessFunc<Input, Output>({ func: ... })`
|
|
346
|
+
* 2. Zod schemas: `pikkuSessionlessFunc({ input: z.object(...), func: ... })`
|
|
347
|
+
*
|
|
348
|
+
* @template In - Input type for the function (inferred from schema if provided)
|
|
349
|
+
* @template Out - Output type for the function (inferred from schema if provided)
|
|
261
350
|
* @param func - Function definition, either direct function or configuration object
|
|
262
351
|
* @returns The normalized configuration object
|
|
263
352
|
*
|
|
264
353
|
* @example
|
|
265
|
-
*
|
|
266
|
-
*
|
|
267
|
-
*
|
|
268
|
-
*
|
|
269
|
-
* return {status: 'healthy'
|
|
270
|
-
* }
|
|
271
|
-
*
|
|
354
|
+
* ```typescript
|
|
355
|
+
* // Pattern 1: Using generic types
|
|
356
|
+
* const healthCheck = pikkuSessionlessFunc<void, {status: string}>({
|
|
357
|
+
* func: async ({logger}) => {
|
|
358
|
+
* return { status: 'healthy' }
|
|
359
|
+
* }
|
|
360
|
+
* })
|
|
361
|
+
*
|
|
362
|
+
* // Pattern 2: Using Zod schemas
|
|
363
|
+
* const greetInput = z.object({ name: z.string() })
|
|
364
|
+
* const greetOutput = z.object({ message: z.string() })
|
|
365
|
+
*
|
|
366
|
+
* const greet = pikkuSessionlessFunc({
|
|
367
|
+
* input: greetInput,
|
|
368
|
+
* output: greetOutput,
|
|
369
|
+
* func: async (_services, { name }) => {
|
|
370
|
+
* return { message: `Hello, ${name}!` }
|
|
371
|
+
* }
|
|
272
372
|
* })
|
|
273
|
-
*
|
|
373
|
+
* ```
|
|
274
374
|
*/
|
|
275
|
-
export
|
|
375
|
+
export function pikkuSessionlessFunc<
|
|
376
|
+
InputSchema extends ZodLike,
|
|
377
|
+
OutputSchema extends ZodLike | undefined = undefined
|
|
378
|
+
>(
|
|
379
|
+
config: PikkuFunctionSessionlessConfigWithSchema<InputSchema, OutputSchema, 'session' | 'rpc'>
|
|
380
|
+
): PikkuFunctionConfig<InferZodOutput<InputSchema>, OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown, 'session' | 'rpc'>
|
|
381
|
+
export function pikkuSessionlessFunc<In, Out = unknown>(
|
|
276
382
|
func:
|
|
277
383
|
| PikkuFunctionSessionless<In, Out, 'session' | 'rpc'>
|
|
278
384
|
| PikkuFunctionConfig<In, Out, 'session' | 'rpc'>
|
|
279
|
-
)
|
|
385
|
+
): PikkuFunctionConfig<In, Out, 'session' | 'rpc'>
|
|
386
|
+
export function pikkuSessionlessFunc(func: any) {
|
|
280
387
|
return typeof func === 'function' ? { func } : func
|
|
281
388
|
}
|
|
282
389
|
|
|
@@ -288,13 +395,13 @@ export const pikkuSessionlessFunc = <In, Out = unknown>(
|
|
|
288
395
|
* @returns The normalized configuration object
|
|
289
396
|
*
|
|
290
397
|
* @example
|
|
291
|
-
*
|
|
398
|
+
* ```typescript
|
|
292
399
|
* const cleanupTempFiles = pikkuVoidFunc(async ({fileSystem, logger}) => {
|
|
293
400
|
* logger.info('Starting cleanup of temporary files')
|
|
294
401
|
* await fileSystem.deleteDirectory('/tmp/uploads')
|
|
295
402
|
* logger.info('Cleanup completed')
|
|
296
403
|
* })
|
|
297
|
-
*
|
|
404
|
+
* ```
|
|
298
405
|
*/
|
|
299
406
|
export const pikkuVoidFunc = (
|
|
300
407
|
func:
|
|
@@ -304,6 +411,45 @@ export const pikkuVoidFunc = (
|
|
|
304
411
|
return typeof func === 'function' ? { func } : func
|
|
305
412
|
}
|
|
306
413
|
|
|
414
|
+
/**
|
|
415
|
+
* Creates a wrapper function for external package functions that are exposed via RPC.
|
|
416
|
+
* This allows you to wire external functions to any wiring type (HTTP, queue, etc.)
|
|
417
|
+
* without type compatibility issues.
|
|
418
|
+
*
|
|
419
|
+
* @template Name - The RPC method name (must be a key in FlattenedRPCMap)
|
|
420
|
+
* @param rpcName - The name of the RPC method to invoke
|
|
421
|
+
* @returns A Pikku function that proxies calls to the external RPC method
|
|
422
|
+
*
|
|
423
|
+
* @example
|
|
424
|
+
* ```typescript
|
|
425
|
+
* // Wire an external function via HTTP
|
|
426
|
+
* wireHTTP({
|
|
427
|
+
* auth: false,
|
|
428
|
+
* method: 'get',
|
|
429
|
+
* route: '/external/hello',
|
|
430
|
+
* func: external('ext:hello'),
|
|
431
|
+
* tags: ['external'],
|
|
432
|
+
* })
|
|
433
|
+
* ```
|
|
434
|
+
*/
|
|
435
|
+
export const external = <Name extends keyof FlattenedRPCMap>(
|
|
436
|
+
rpcName: Name
|
|
437
|
+
): PikkuFunctionConfig<
|
|
438
|
+
FlattenedRPCMap[Name]['input'],
|
|
439
|
+
FlattenedRPCMap[Name]['output'],
|
|
440
|
+
'session' | 'rpc'
|
|
441
|
+
> => {
|
|
442
|
+
return {
|
|
443
|
+
func: (async (_services: any, data: any, { rpc }: any) => {
|
|
444
|
+
return rpc.invoke(rpcName, data)
|
|
445
|
+
}) as any
|
|
446
|
+
} as PikkuFunctionConfig<
|
|
447
|
+
FlattenedRPCMap[Name]['input'],
|
|
448
|
+
FlattenedRPCMap[Name]['output'],
|
|
449
|
+
'session' | 'rpc'
|
|
450
|
+
>
|
|
451
|
+
}
|
|
452
|
+
|
|
307
453
|
/**
|
|
308
454
|
* Creates a Pikku config factory.
|
|
309
455
|
* Use this to define your application's configuration factory.
|
|
@@ -369,7 +515,7 @@ export const pikkuWireServices = (
|
|
|
369
515
|
services: SingletonServices,
|
|
370
516
|
wire: any
|
|
371
517
|
) => Promise<RequiredWireServices>
|
|
372
|
-
) => func
|
|
518
|
+
): CreateWireServices => func as unknown as CreateWireServices
|
|
373
519
|
|
|
374
520
|
/**
|
|
375
521
|
* Adds global middleware for a specific tag.
|
|
@@ -395,7 +541,7 @@ export const pikkuWireServices = (
|
|
|
395
541
|
* ```
|
|
396
542
|
*/
|
|
397
543
|
export const addMiddleware = (tag: string, middleware: PikkuMiddleware[]) => {
|
|
398
|
-
addMiddlewareCore(tag, middleware as any)
|
|
544
|
+
addMiddlewareCore(tag, middleware as any, null)
|
|
399
545
|
}
|
|
400
546
|
|
|
401
547
|
/**
|
|
@@ -422,5 +568,5 @@ export const addMiddleware = (tag: string, middleware: PikkuMiddleware[]) => {
|
|
|
422
568
|
* ```
|
|
423
569
|
*/
|
|
424
570
|
export const addPermission = <In = unknown>(tag: string, permissions: CorePermissionGroup<PikkuPermission<In>> | PikkuPermission<In>[]) => {
|
|
425
|
-
addPermissionCore(tag, permissions as any)
|
|
571
|
+
addPermissionCore(tag, permissions as any, null)
|
|
426
572
|
}
|