@pikku/core 0.11.2 → 0.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +57 -2
- package/dist/crypto-utils.d.ts +2 -0
- package/dist/crypto-utils.js +78 -0
- package/dist/errors/errors.d.ts +14 -0
- package/dist/errors/errors.js +26 -0
- package/dist/errors/index.d.ts +1 -1
- package/dist/errors/index.js +1 -1
- package/dist/function/function-runner.d.ts +10 -4
- package/dist/function/function-runner.js +126 -45
- package/dist/function/functions.types.d.ts +32 -87
- package/dist/function/functions.types.js +16 -46
- package/dist/function/index.d.ts +2 -2
- package/dist/function/index.js +1 -2
- package/dist/handle-error.d.ts +2 -2
- package/dist/handle-error.js +3 -12
- package/dist/index.d.ts +30 -26
- package/dist/index.js +19 -29
- package/dist/internal.d.ts +3 -0
- package/dist/internal.js +2 -0
- package/dist/middleware/auth-apikey.d.ts +2 -2
- package/dist/middleware/auth-apikey.js +3 -3
- package/dist/middleware/auth-bearer.d.ts +3 -3
- package/dist/middleware/auth-bearer.js +4 -7
- package/dist/middleware/auth-cookie.d.ts +4 -4
- package/dist/middleware/auth-cookie.js +7 -9
- package/dist/middleware/cors.d.ts +46 -0
- package/dist/middleware/cors.js +81 -0
- package/dist/middleware/index.d.ts +5 -3
- package/dist/middleware/index.js +5 -3
- package/dist/middleware/remote-auth.d.ts +5 -0
- package/dist/middleware/remote-auth.js +55 -0
- package/dist/middleware/timeout.d.ts +2 -2
- package/dist/middleware-runner.d.ts +1 -1
- package/dist/middleware-runner.js +8 -10
- package/dist/permissions.d.ts +2 -2
- package/dist/permissions.js +11 -15
- package/dist/pikku-state.d.ts +10 -8
- package/dist/pikku-state.js +48 -25
- package/dist/schema.d.ts +4 -4
- package/dist/schema.js +20 -15
- package/dist/services/ai-agent-runner-service.d.ts +43 -0
- package/dist/services/ai-agent-runner-service.js +1 -0
- package/dist/services/ai-run-state-service.d.ts +13 -0
- package/dist/services/ai-run-state-service.js +1 -0
- package/dist/services/ai-storage-service.d.ts +18 -0
- package/dist/services/ai-storage-service.js +1 -0
- package/dist/services/content-service.d.ts +6 -0
- package/dist/services/deployment-service.d.ts +19 -0
- package/dist/services/deployment-service.js +1 -0
- package/dist/services/gopass-secrets.d.ts +47 -0
- package/dist/services/gopass-secrets.js +97 -0
- package/dist/services/in-memory-ai-run-state-service.d.ts +15 -0
- package/dist/services/in-memory-ai-run-state-service.js +44 -0
- package/dist/services/in-memory-trigger-service.d.ts +22 -0
- package/dist/services/in-memory-trigger-service.js +48 -0
- package/dist/services/in-memory-workflow-service.d.ts +59 -0
- package/dist/services/in-memory-workflow-service.js +287 -0
- package/dist/services/index.d.ts +26 -11
- package/dist/services/index.js +11 -13
- package/dist/services/local-content.d.ts +2 -1
- package/dist/services/local-content.js +6 -1
- package/dist/services/local-secrets.d.ts +25 -2
- package/dist/services/local-secrets.js +45 -0
- package/dist/services/local-variables.d.ts +6 -1
- package/dist/services/local-variables.js +18 -0
- package/dist/services/logger-console.d.ts +2 -1
- package/dist/services/scheduler-service.d.ts +9 -1
- package/dist/services/scheduler-service.js +8 -0
- package/dist/services/schema-service.d.ts +6 -0
- package/dist/services/scoped-secret-service.d.ts +16 -0
- package/dist/services/scoped-secret-service.js +35 -0
- package/dist/services/secret-service.d.ts +25 -4
- package/dist/services/trigger-service.d.ts +16 -0
- package/dist/services/trigger-service.js +1 -0
- package/dist/services/typed-secret-service.d.ts +30 -0
- package/dist/services/typed-secret-service.js +40 -0
- package/dist/services/typed-variables-service.d.ts +27 -0
- package/dist/services/typed-variables-service.js +46 -0
- package/dist/services/user-session-service.d.ts +15 -2
- package/dist/services/user-session-service.js +17 -0
- package/dist/services/variables-service.d.ts +5 -0
- package/dist/services/workflow-service.d.ts +9 -5
- package/dist/types/core.types.d.ts +67 -25
- package/dist/types/core.types.js +8 -1
- package/dist/types/state.types.d.ts +53 -59
- package/dist/utils.d.ts +7 -6
- package/dist/utils.js +27 -12
- package/dist/version.d.ts +6 -0
- package/dist/version.js +19 -0
- package/dist/wirings/ai-agent/ai-agent-assistant-ui.d.ts +5 -0
- package/dist/wirings/ai-agent/ai-agent-assistant-ui.js +146 -0
- package/dist/wirings/ai-agent/ai-agent-helpers.d.ts +28 -0
- package/dist/wirings/ai-agent/ai-agent-helpers.js +40 -0
- package/dist/wirings/ai-agent/ai-agent-memory.d.ts +29 -0
- package/dist/wirings/ai-agent/ai-agent-memory.js +199 -0
- package/dist/wirings/ai-agent/ai-agent-model-config.d.ts +9 -0
- package/dist/wirings/ai-agent/ai-agent-model-config.js +36 -0
- package/dist/wirings/ai-agent/ai-agent-prepare.d.ts +59 -0
- package/dist/wirings/ai-agent/ai-agent-prepare.js +348 -0
- package/dist/wirings/ai-agent/ai-agent-registry.d.ts +15 -0
- package/dist/wirings/ai-agent/ai-agent-registry.js +47 -0
- package/dist/wirings/ai-agent/ai-agent-runner.d.ts +3 -0
- package/dist/wirings/ai-agent/ai-agent-runner.js +195 -0
- package/dist/wirings/ai-agent/ai-agent-stream.d.ts +12 -0
- package/dist/wirings/ai-agent/ai-agent-stream.js +662 -0
- package/dist/wirings/ai-agent/ai-agent.types.d.ts +313 -0
- package/dist/wirings/ai-agent/ai-agent.types.js +1 -0
- package/dist/wirings/ai-agent/index.d.ts +7 -0
- package/dist/wirings/ai-agent/index.js +6 -0
- package/dist/wirings/channel/channel-common.d.ts +8 -5
- package/dist/wirings/channel/channel-common.js +15 -8
- package/dist/wirings/channel/channel-handler.d.ts +3 -3
- package/dist/wirings/channel/channel-handler.js +15 -6
- package/dist/wirings/channel/channel-middleware-runner.d.ts +9 -0
- package/dist/wirings/channel/channel-middleware-runner.js +73 -0
- package/dist/wirings/channel/channel-runner.d.ts +5 -5
- package/dist/wirings/channel/channel-runner.js +10 -9
- package/dist/wirings/channel/channel-store.d.ts +1 -1
- package/dist/wirings/channel/channel.types.d.ts +9 -7
- package/dist/wirings/channel/define-channel-routes.d.ts +21 -0
- package/dist/wirings/channel/define-channel-routes.js +23 -0
- package/dist/wirings/channel/index.d.ts +10 -8
- package/dist/wirings/channel/index.js +7 -8
- package/dist/wirings/channel/local/index.d.ts +3 -3
- package/dist/wirings/channel/local/index.js +3 -3
- package/dist/wirings/channel/local/local-channel-runner.d.ts +7 -2
- package/dist/wirings/channel/local/local-channel-runner.js +22 -9
- package/dist/wirings/channel/local/local-eventhub-service.d.ts +2 -2
- package/dist/wirings/channel/log-channels.d.ts +1 -1
- package/dist/wirings/channel/pikku-abstract-channel-handler.d.ts +1 -1
- package/dist/wirings/channel/serverless/index.d.ts +1 -1
- package/dist/wirings/channel/serverless/index.js +1 -1
- package/dist/wirings/channel/serverless/serverless-channel-runner.d.ts +4 -4
- package/dist/wirings/channel/serverless/serverless-channel-runner.js +40 -23
- package/dist/wirings/cli/channel/cli-channel-runner.d.ts +1 -1
- package/dist/wirings/cli/channel/index.d.ts +1 -1
- package/dist/wirings/cli/channel/index.js +1 -1
- package/dist/wirings/cli/cli-runner.d.ts +3 -3
- package/dist/wirings/cli/cli-runner.js +12 -8
- package/dist/wirings/cli/cli.types.d.ts +9 -9
- package/dist/wirings/cli/command-parser.d.ts +1 -1
- package/dist/wirings/cli/define-cli-commands.d.ts +19 -0
- package/dist/wirings/cli/define-cli-commands.js +20 -0
- package/dist/wirings/cli/index.d.ts +2 -3
- package/dist/wirings/cli/index.js +1 -3
- package/dist/wirings/http/http-routes.d.ts +69 -0
- package/dist/wirings/http/http-routes.js +139 -0
- package/dist/wirings/http/http-runner.d.ts +9 -9
- package/dist/wirings/http/http-runner.js +79 -34
- package/dist/wirings/http/http.types.d.ts +77 -41
- package/dist/wirings/http/index.d.ts +5 -4
- package/dist/wirings/http/index.js +4 -3
- package/dist/wirings/http/log-http-routes.d.ts +1 -1
- package/dist/wirings/http/pikku-fetch-http-request.d.ts +1 -1
- package/dist/wirings/http/pikku-fetch-http-response.d.ts +2 -2
- package/dist/wirings/http/pikku-fetch-http-response.js +6 -1
- package/dist/wirings/http/routers/http-router.d.ts +1 -1
- package/dist/wirings/http/routers/path-to-regex.d.ts +2 -2
- package/dist/wirings/mcp/index.d.ts +4 -3
- package/dist/wirings/mcp/index.js +3 -3
- package/dist/wirings/mcp/mcp-endpoint-registry.d.ts +1 -1
- package/dist/wirings/mcp/mcp-runner.d.ts +1 -6
- package/dist/wirings/mcp/mcp-runner.js +28 -40
- package/dist/wirings/mcp/mcp.types.d.ts +5 -5
- package/dist/wirings/node/index.d.ts +2 -0
- package/dist/wirings/node/index.js +1 -0
- package/dist/wirings/node/node.types.d.ts +20 -0
- package/dist/wirings/node/node.types.js +1 -0
- package/dist/wirings/oauth2/index.d.ts +3 -0
- package/dist/wirings/oauth2/index.js +2 -0
- package/dist/wirings/oauth2/oauth2-client.d.ts +47 -0
- package/dist/wirings/oauth2/oauth2-client.js +267 -0
- package/dist/wirings/oauth2/oauth2.types.d.ts +65 -0
- package/dist/wirings/oauth2/oauth2.types.js +4 -0
- package/dist/wirings/oauth2/wire-oauth2-credential.d.ts +20 -0
- package/dist/wirings/oauth2/wire-oauth2-credential.js +21 -0
- package/dist/wirings/queue/index.d.ts +1 -1
- package/dist/wirings/queue/queue-runner.d.ts +1 -5
- package/dist/wirings/queue/queue-runner.js +11 -8
- package/dist/wirings/queue/queue.types.d.ts +5 -5
- package/dist/wirings/queue/register-queue-helper.d.ts +2 -2
- package/dist/wirings/queue/register-queue-helper.js +1 -1
- package/dist/wirings/queue/validate-worker-config.d.ts +1 -1
- package/dist/wirings/rpc/index.d.ts +3 -1
- package/dist/wirings/rpc/index.js +2 -1
- package/dist/wirings/rpc/rpc-runner.d.ts +58 -8
- package/dist/wirings/rpc/rpc-runner.js +177 -31
- package/dist/wirings/rpc/rpc-types.d.ts +20 -4
- package/dist/wirings/rpc/wire-addon.d.ts +10 -0
- package/dist/wirings/rpc/wire-addon.js +9 -0
- package/dist/wirings/scheduler/index.d.ts +2 -2
- package/dist/wirings/scheduler/index.js +1 -2
- package/dist/wirings/scheduler/log-schedulers.d.ts +1 -1
- package/dist/wirings/scheduler/scheduler-runner.d.ts +3 -5
- package/dist/wirings/scheduler/scheduler-runner.js +11 -14
- package/dist/wirings/scheduler/scheduler.types.d.ts +2 -2
- package/dist/wirings/secret/index.d.ts +3 -0
- package/dist/wirings/secret/index.js +2 -0
- package/dist/wirings/secret/secret.types.d.ts +27 -0
- package/dist/wirings/secret/secret.types.js +1 -0
- package/dist/wirings/secret/validate-secret-definitions.d.ts +6 -0
- package/dist/wirings/secret/validate-secret-definitions.js +55 -0
- package/dist/wirings/trigger/index.d.ts +3 -2
- package/dist/wirings/trigger/index.js +2 -2
- package/dist/wirings/trigger/pikku-trigger-service.d.ts +22 -0
- package/dist/wirings/trigger/pikku-trigger-service.js +70 -0
- package/dist/wirings/trigger/trigger-runner.d.ts +18 -9
- package/dist/wirings/trigger/trigger-runner.js +48 -19
- package/dist/wirings/trigger/trigger.types.d.ts +99 -11
- package/dist/wirings/trigger/trigger.types.js +40 -1
- package/dist/wirings/variable/index.d.ts +3 -0
- package/dist/wirings/variable/index.js +2 -0
- package/dist/wirings/variable/validate-variable-definitions.d.ts +6 -0
- package/dist/wirings/variable/validate-variable-definitions.js +45 -0
- package/dist/wirings/variable/variable.types.d.ts +18 -0
- package/dist/wirings/variable/variable.types.js +1 -0
- package/dist/wirings/workflow/dsl/index.d.ts +1 -1
- package/dist/wirings/workflow/dsl/workflow-dsl.types.d.ts +7 -1
- package/dist/wirings/workflow/dsl/workflow-runner.js +3 -2
- package/dist/wirings/workflow/graph/graph-node.d.ts +1 -6
- package/dist/wirings/workflow/graph/graph-runner.d.ts +5 -31
- package/dist/wirings/workflow/graph/graph-runner.js +384 -296
- package/dist/wirings/workflow/graph/index.d.ts +4 -3
- package/dist/wirings/workflow/graph/index.js +3 -3
- package/dist/wirings/workflow/graph/template.d.ts +15 -0
- package/dist/wirings/workflow/graph/template.js +27 -0
- package/dist/wirings/workflow/graph/wire-workflow-graph.d.ts +15 -0
- package/dist/wirings/workflow/graph/wire-workflow-graph.js +8 -0
- package/dist/wirings/workflow/graph/workflow-graph.types.d.ts +0 -13
- package/dist/wirings/workflow/index.d.ts +6 -6
- package/dist/wirings/workflow/index.js +6 -4
- package/dist/wirings/workflow/pikku-workflow-service.d.ts +29 -19
- package/dist/wirings/workflow/pikku-workflow-service.js +217 -82
- package/dist/wirings/workflow/workflow-helpers.d.ts +36 -0
- package/dist/wirings/workflow/workflow-helpers.js +38 -0
- package/dist/wirings/workflow/workflow.types.d.ts +42 -95
- package/package.json +14 -15
- package/run-tests.sh +4 -1
- package/src/crypto-utils.test.ts +116 -0
- package/src/crypto-utils.ts +99 -0
- package/src/errors/error.test.ts +143 -2
- package/src/errors/errors.ts +27 -0
- package/src/errors/index.ts +1 -1
- package/src/factory-functions.test.ts +42 -2
- package/src/function/function-runner.test.ts +6 -13
- package/src/function/function-runner.ts +161 -53
- package/src/function/functions.types.ts +63 -132
- package/src/function/index.ts +5 -2
- package/src/handle-error.test.ts +361 -0
- package/src/handle-error.ts +6 -14
- package/src/index.ts +97 -30
- package/src/internal.ts +6 -0
- package/src/middleware/auth-apikey.test.ts +16 -13
- package/src/middleware/auth-apikey.ts +3 -3
- package/src/middleware/auth-bearer.test.ts +18 -15
- package/src/middleware/auth-bearer.ts +27 -32
- package/src/middleware/auth-cookie.test.ts +17 -14
- package/src/middleware/auth-cookie.ts +9 -13
- package/src/middleware/cors.test.ts +424 -0
- package/src/middleware/cors.ts +104 -0
- package/src/middleware/index.ts +5 -3
- package/src/middleware/remote-auth.test.ts +488 -0
- package/src/middleware/remote-auth.ts +68 -0
- package/src/middleware-runner.test.ts +123 -1
- package/src/middleware-runner.ts +13 -13
- package/src/permissions.test.ts +83 -9
- package/src/permissions.ts +17 -19
- package/src/pikku-state.test.ts +224 -0
- package/src/pikku-state.ts +59 -35
- package/src/run-tests-script.test.ts +49 -0
- package/src/schema.test.ts +198 -6
- package/src/schema.ts +28 -21
- package/src/services/ai-agent-runner-service.ts +41 -0
- package/src/services/ai-run-state-service.ts +20 -0
- package/src/services/ai-storage-service.ts +39 -0
- package/src/services/content-service.ts +7 -0
- package/src/services/deployment-service.ts +22 -0
- package/src/services/gopass-secrets.ts +98 -0
- package/src/services/in-memory-ai-run-state-service.ts +73 -0
- package/src/services/in-memory-trigger-service.ts +64 -0
- package/src/services/in-memory-workflow-service.test.ts +351 -0
- package/src/services/in-memory-workflow-service.ts +395 -0
- package/src/services/index.ts +50 -14
- package/src/services/local-content.ts +9 -3
- package/src/services/local-secrets.test.ts +80 -0
- package/src/services/local-secrets.ts +53 -2
- package/src/services/local-variables.test.ts +61 -0
- package/src/services/local-variables.ts +23 -1
- package/src/services/logger-console.test.ts +118 -0
- package/src/services/logger-console.ts +2 -1
- package/src/services/scheduler-service.ts +11 -1
- package/src/services/schema-service.ts +7 -0
- package/src/services/scoped-secret-service.test.ts +74 -0
- package/src/services/scoped-secret-service.ts +41 -0
- package/src/services/secret-service.ts +25 -4
- package/src/services/trigger-service.ts +17 -0
- package/src/services/typed-secret-service.test.ts +93 -0
- package/src/services/typed-secret-service.ts +70 -0
- package/src/services/typed-variables-service.test.ts +73 -0
- package/src/services/typed-variables-service.ts +81 -0
- package/src/services/user-session-service.test.ts +113 -0
- package/src/services/user-session-service.ts +25 -2
- package/src/services/variables-service.ts +5 -0
- package/src/services/workflow-service.ts +23 -13
- package/src/time-utils.test.ts +1 -1
- package/src/types/core.types.ts +95 -24
- package/src/types/state.types.ts +56 -73
- package/src/utils.test.ts +350 -0
- package/src/utils.ts +33 -18
- package/src/version.test.ts +80 -0
- package/src/version.ts +25 -0
- package/src/wirings/ai-agent/ai-agent-assistant-ui.test.ts +363 -0
- package/src/wirings/ai-agent/ai-agent-assistant-ui.ts +214 -0
- package/src/wirings/ai-agent/ai-agent-helpers.test.ts +152 -0
- package/src/wirings/ai-agent/ai-agent-helpers.ts +76 -0
- package/src/wirings/ai-agent/ai-agent-memory.ts +300 -0
- package/src/wirings/ai-agent/ai-agent-model-config.test.ts +115 -0
- package/src/wirings/ai-agent/ai-agent-model-config.ts +43 -0
- package/src/wirings/ai-agent/ai-agent-prepare.ts +504 -0
- package/src/wirings/ai-agent/ai-agent-registry.test.ts +37 -0
- package/src/wirings/ai-agent/ai-agent-registry.ts +82 -0
- package/src/wirings/ai-agent/ai-agent-runner.test.ts +317 -0
- package/src/wirings/ai-agent/ai-agent-runner.ts +251 -0
- package/src/wirings/ai-agent/ai-agent-stream.test.ts +652 -0
- package/src/wirings/ai-agent/ai-agent-stream.ts +1049 -0
- package/src/wirings/ai-agent/ai-agent.types.ts +328 -0
- package/src/wirings/ai-agent/index.ts +39 -0
- package/src/wirings/channel/channel-common.ts +33 -20
- package/src/wirings/channel/channel-handler.ts +26 -9
- package/src/wirings/channel/channel-middleware-runner.ts +119 -0
- package/src/wirings/channel/channel-runner.ts +15 -16
- package/src/wirings/channel/channel-store.ts +1 -1
- package/src/wirings/channel/channel.types.ts +21 -9
- package/src/wirings/channel/define-channel-routes.ts +25 -0
- package/src/wirings/channel/index.ts +23 -8
- package/src/wirings/channel/local/index.ts +3 -3
- package/src/wirings/channel/local/local-channel-runner.test.ts +57 -7
- package/src/wirings/channel/local/local-channel-runner.ts +40 -19
- package/src/wirings/channel/local/local-eventhub-service.test.ts +2 -2
- package/src/wirings/channel/local/local-eventhub-service.ts +2 -2
- package/src/wirings/channel/log-channels.ts +1 -1
- package/src/wirings/channel/pikku-abstract-channel-handler.ts +1 -1
- package/src/wirings/channel/serverless/index.ts +5 -1
- package/src/wirings/channel/serverless/serverless-channel-runner.ts +57 -36
- package/src/wirings/cli/channel/cli-channel-runner.ts +1 -1
- package/src/wirings/cli/channel/index.ts +1 -1
- package/src/wirings/cli/cli-runner.test.ts +10 -10
- package/src/wirings/cli/cli-runner.ts +28 -14
- package/src/wirings/cli/cli.types.ts +14 -14
- package/src/wirings/cli/command-parser.test.ts +9 -9
- package/src/wirings/cli/command-parser.ts +1 -1
- package/src/wirings/cli/define-cli-commands.ts +24 -0
- package/src/wirings/cli/index.ts +10 -4
- package/src/wirings/http/http-routes.test.ts +322 -0
- package/src/wirings/http/http-routes.ts +198 -0
- package/src/wirings/http/http-runner.test.ts +12 -20
- package/src/wirings/http/http-runner.ts +101 -51
- package/src/wirings/http/http.types.ts +119 -48
- package/src/wirings/http/index.ts +16 -4
- package/src/wirings/http/log-http-routes.ts +1 -1
- package/src/wirings/http/pikku-fetch-http-request.ts +1 -1
- package/src/wirings/http/pikku-fetch-http-response.ts +12 -5
- package/src/wirings/http/routers/http-router.ts +1 -1
- package/src/wirings/http/routers/path-to-regex.test.ts +1 -1
- package/src/wirings/http/routers/path-to-regex.ts +4 -3
- package/src/wirings/mcp/index.ts +27 -3
- package/src/wirings/mcp/mcp-endpoint-registry.test.ts +3 -3
- package/src/wirings/mcp/mcp-endpoint-registry.ts +5 -1
- package/src/wirings/mcp/mcp-runner.ts +48 -65
- package/src/wirings/mcp/mcp.types.ts +5 -5
- package/src/wirings/node/index.ts +2 -0
- package/src/wirings/node/node.types.ts +23 -0
- package/src/wirings/oauth2/index.ts +3 -0
- package/src/wirings/oauth2/oauth2-client.test.ts +929 -0
- package/src/wirings/oauth2/oauth2-client.ts +335 -0
- package/src/wirings/oauth2/oauth2.types.ts +69 -0
- package/src/wirings/oauth2/wire-oauth2-credential.ts +23 -0
- package/src/wirings/queue/index.ts +13 -2
- package/src/wirings/queue/queue-runner.test.ts +142 -73
- package/src/wirings/queue/queue-runner.ts +18 -14
- package/src/wirings/queue/queue.types.ts +5 -5
- package/src/wirings/queue/register-queue-helper.ts +3 -5
- package/src/wirings/queue/validate-worker-config.test.ts +108 -0
- package/src/wirings/queue/validate-worker-config.ts +4 -1
- package/src/wirings/rpc/index.ts +3 -1
- package/src/wirings/rpc/rpc-runner.ts +254 -41
- package/src/wirings/rpc/rpc-types.ts +28 -4
- package/src/wirings/rpc/wire-addon.ts +20 -0
- package/src/wirings/scheduler/index.ts +6 -4
- package/src/wirings/scheduler/log-schedulers.ts +1 -1
- package/src/wirings/scheduler/scheduler-runner.test.ts +78 -45
- package/src/wirings/scheduler/scheduler-runner.ts +20 -27
- package/src/wirings/scheduler/scheduler.types.ts +2 -2
- package/src/wirings/secret/index.ts +9 -0
- package/src/wirings/secret/secret.types.ts +32 -0
- package/src/wirings/secret/validate-secret-definitions.test.ts +140 -0
- package/src/wirings/secret/validate-secret-definitions.ts +82 -0
- package/src/wirings/trigger/index.ts +10 -2
- package/src/wirings/trigger/pikku-trigger-service.ts +112 -0
- package/src/wirings/trigger/trigger-runner.test.ts +79 -0
- package/src/wirings/trigger/trigger-runner.ts +80 -41
- package/src/wirings/trigger/trigger.types.ts +144 -22
- package/src/wirings/variable/index.ts +8 -0
- package/src/wirings/variable/validate-variable-definitions.test.ts +91 -0
- package/src/wirings/variable/validate-variable-definitions.ts +69 -0
- package/src/wirings/variable/variable.types.ts +22 -0
- package/src/wirings/workflow/dsl/index.ts +1 -0
- package/src/wirings/workflow/dsl/workflow-dsl.types.ts +9 -1
- package/src/wirings/workflow/dsl/workflow-runner.ts +4 -3
- package/src/wirings/workflow/graph/graph-node.ts +1 -6
- package/src/wirings/workflow/graph/graph-runner.test.ts +487 -0
- package/src/wirings/workflow/graph/graph-runner.ts +496 -374
- package/src/wirings/workflow/graph/index.ts +14 -3
- package/src/wirings/workflow/graph/template.test.ts +49 -0
- package/src/wirings/workflow/graph/template.ts +42 -0
- package/src/wirings/workflow/graph/wire-workflow-graph.ts +29 -0
- package/src/wirings/workflow/graph/workflow-graph.types.ts +0 -22
- package/src/wirings/workflow/index.ts +21 -10
- package/src/wirings/workflow/pikku-workflow-service.test.ts +200 -0
- package/src/wirings/workflow/pikku-workflow-service.ts +308 -105
- package/src/wirings/workflow/workflow-helpers.test.ts +129 -0
- package/src/wirings/workflow/workflow-helpers.ts +79 -0
- package/src/wirings/workflow/workflow.types.ts +47 -92
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/wirings/forge-node/forge-node.types.d.ts +0 -120
- package/dist/wirings/forge-node/forge-node.types.js +0 -38
- package/dist/wirings/forge-node/index.d.ts +0 -1
- package/dist/wirings/forge-node/index.js +0 -1
- package/dist/wirings/workflow/wire-workflow.d.ts +0 -42
- package/dist/wirings/workflow/wire-workflow.js +0 -53
- package/dist/wirings/workflow/workflow-utils.d.ts +0 -23
- package/dist/wirings/workflow/workflow-utils.js +0 -66
- package/src/wirings/forge-node/forge-node.types.ts +0 -135
- package/src/wirings/forge-node/index.ts +0 -1
- package/src/wirings/workflow/wire-workflow.ts +0 -94
- package/src/wirings/workflow/workflow-utils.ts +0 -120
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { test } from 'node:test'
|
|
2
2
|
import assert from 'node:assert'
|
|
3
3
|
import {
|
|
4
|
+
pikkuAuth,
|
|
4
5
|
pikkuPermission,
|
|
5
6
|
pikkuMiddleware,
|
|
6
7
|
pikkuPermissionFactory,
|
|
@@ -21,8 +22,8 @@ test('pikkuMiddleware returns the same function', async () => {
|
|
|
21
22
|
|
|
22
23
|
test('pikkuPermissionFactory creates a factory function', async () => {
|
|
23
24
|
const factory = pikkuPermissionFactory<{ role: string }>(({ role }) => {
|
|
24
|
-
return pikkuPermission(async ({ logger }, data, {
|
|
25
|
-
return (
|
|
25
|
+
return pikkuPermission(async ({ logger }, data, { session }) => {
|
|
26
|
+
return (session as any)?.role === role
|
|
26
27
|
})
|
|
27
28
|
})
|
|
28
29
|
|
|
@@ -67,3 +68,42 @@ test('pikkuMiddlewareFactory returns the same factory', async () => {
|
|
|
67
68
|
const wrappedFactory = pikkuMiddlewareFactory(originalFactory)
|
|
68
69
|
assert.strictEqual(wrappedFactory, originalFactory)
|
|
69
70
|
})
|
|
71
|
+
|
|
72
|
+
test('pikkuAuth returns a 3-arg wrapper function', async () => {
|
|
73
|
+
const authFn = async (_services, session) => !!session
|
|
74
|
+
const wrapped = pikkuAuth(authFn)
|
|
75
|
+
assert.strictEqual(typeof wrapped, 'function')
|
|
76
|
+
assert.strictEqual(wrapped.length, 3)
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
test('pikkuAuth wrapper extracts session from wire and calls auth function', async () => {
|
|
80
|
+
let receivedSession = null
|
|
81
|
+
const authFn = async (_services, session) => {
|
|
82
|
+
receivedSession = session
|
|
83
|
+
return session.role === 'admin'
|
|
84
|
+
}
|
|
85
|
+
const wrapped = pikkuAuth(authFn)
|
|
86
|
+
const result = await wrapped({}, null, { session: { role: 'admin' } })
|
|
87
|
+
assert.strictEqual(result, true)
|
|
88
|
+
assert.deepStrictEqual(receivedSession, { role: 'admin' })
|
|
89
|
+
})
|
|
90
|
+
|
|
91
|
+
test('pikkuAuth wrapper returns false when no session', async () => {
|
|
92
|
+
const authFn = async (_services, session) => !!session
|
|
93
|
+
const wrapped = pikkuAuth(authFn)
|
|
94
|
+
const result = await wrapped({}, null, { session: null })
|
|
95
|
+
assert.strictEqual(result, false)
|
|
96
|
+
})
|
|
97
|
+
|
|
98
|
+
test('pikkuAuth config object syntax works', async () => {
|
|
99
|
+
const authFn = async (_services, session) => !!session
|
|
100
|
+
const wrapped = pikkuAuth({
|
|
101
|
+
func: authFn,
|
|
102
|
+
name: 'Is Authenticated',
|
|
103
|
+
description: 'Checks if user has a session',
|
|
104
|
+
})
|
|
105
|
+
assert.strictEqual(typeof wrapped, 'function')
|
|
106
|
+
assert.strictEqual(wrapped.length, 3)
|
|
107
|
+
const result = await wrapped({}, null, { session: { id: '1' } })
|
|
108
|
+
assert.strictEqual(result, true)
|
|
109
|
+
})
|
|
@@ -3,8 +3,8 @@ import * as assert from 'node:assert'
|
|
|
3
3
|
import { addFunction, runPikkuFunc } from './function-runner.js'
|
|
4
4
|
import { addMiddleware, addPermission } from '../index.js'
|
|
5
5
|
import { resetPikkuState, pikkuState } from '../pikku-state.js'
|
|
6
|
-
import { CoreServices, CorePikkuMiddleware } from '../types/core.types.js'
|
|
7
|
-
import { CorePermissionGroup } from './functions.types.js'
|
|
6
|
+
import type { CoreServices, CorePikkuMiddleware } from '../types/core.types.js'
|
|
7
|
+
import type { CorePermissionGroup } from './functions.types.js'
|
|
8
8
|
|
|
9
9
|
beforeEach(() => {
|
|
10
10
|
resetPikkuState()
|
|
@@ -22,7 +22,7 @@ const addTestFunction = (funcName: string, funcConfig: any) => {
|
|
|
22
22
|
? funcConfig.tags.map((tag: string) => ({ type: 'tag' as const, tag }))
|
|
23
23
|
: undefined
|
|
24
24
|
pikkuState(null, 'function', 'meta')[funcName] = {
|
|
25
|
-
|
|
25
|
+
pikkuFuncId: funcName,
|
|
26
26
|
inputSchemaName: null,
|
|
27
27
|
outputSchemaName: null,
|
|
28
28
|
middleware,
|
|
@@ -152,14 +152,8 @@ describe('runPikkuFunc - Integration Tests', () => {
|
|
|
152
152
|
)
|
|
153
153
|
|
|
154
154
|
assert.equal(result, 'success')
|
|
155
|
-
// Order: wiringTags →
|
|
156
|
-
assert.deepEqual(executionOrder, [
|
|
157
|
-
'wiringTag',
|
|
158
|
-
'wiringPermission',
|
|
159
|
-
'funcTag',
|
|
160
|
-
'funcPermission',
|
|
161
|
-
'main',
|
|
162
|
-
])
|
|
155
|
+
// Order: wiringTags → main (short-circuit on first passing group)
|
|
156
|
+
assert.deepEqual(executionOrder, ['wiringTag', 'main'])
|
|
163
157
|
})
|
|
164
158
|
|
|
165
159
|
test('should throw specific error for wiring tag permission failures', async () => {
|
|
@@ -340,11 +334,10 @@ describe('runPikkuFunc - Integration Tests', () => {
|
|
|
340
334
|
)
|
|
341
335
|
|
|
342
336
|
assert.equal(result, 'success')
|
|
343
|
-
// Should execute tag permissions
|
|
337
|
+
// Should execute tag permissions and short-circuit before function permissions
|
|
344
338
|
assert.deepEqual(executionOrder, [
|
|
345
339
|
'arrayPermission1',
|
|
346
340
|
'arrayPermission2',
|
|
347
|
-
'objectPermission',
|
|
348
341
|
'main',
|
|
349
342
|
])
|
|
350
343
|
})
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { runMiddleware, combineMiddleware } from '../middleware-runner.js'
|
|
2
|
+
import {
|
|
3
|
+
combineChannelMiddleware,
|
|
4
|
+
wrapChannelWithMiddleware,
|
|
5
|
+
} from '../wirings/channel/channel-middleware-runner.js'
|
|
2
6
|
import { runPermissions } from '../permissions.js'
|
|
3
7
|
import { pikkuState } from '../pikku-state.js'
|
|
4
8
|
import { coerceTopLevelDataFromSchema, validateSchema } from '../schema.js'
|
|
5
|
-
import {
|
|
9
|
+
import type {
|
|
6
10
|
CoreServices,
|
|
7
11
|
CoreUserSession,
|
|
8
12
|
CorePikkuMiddleware,
|
|
@@ -14,21 +18,24 @@ import {
|
|
|
14
18
|
CreateWireServices,
|
|
15
19
|
CoreConfig,
|
|
16
20
|
} from '../types/core.types.js'
|
|
17
|
-
import {
|
|
21
|
+
import type { CorePikkuChannelMiddleware } from '../wirings/channel/channel.types.js'
|
|
22
|
+
import type {
|
|
18
23
|
CorePermissionGroup,
|
|
19
24
|
CorePikkuFunctionConfig,
|
|
20
25
|
CorePikkuPermission,
|
|
21
26
|
} from './functions.types.js'
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
27
|
+
import { parseVersionedId } from '../version.js'
|
|
28
|
+
import type { SessionService } from '../services/user-session-service.js'
|
|
29
|
+
import { createFunctionSessionWireProps } from '../services/user-session-service.js'
|
|
30
|
+
import { ForbiddenError, ReadonlySessionError } from '../errors/errors.js'
|
|
24
31
|
import { rpcService } from '../wirings/rpc/rpc-runner.js'
|
|
25
32
|
import { closeWireServices } from '../utils.js'
|
|
26
33
|
|
|
27
34
|
/**
|
|
28
|
-
* Get or create singleton services for an
|
|
35
|
+
* Get or create singleton services for an addon package.
|
|
29
36
|
* Services are cached in pikkuState to avoid recreation on each call.
|
|
30
37
|
*
|
|
31
|
-
* @param packageName - The
|
|
38
|
+
* @param packageName - The addon package name
|
|
32
39
|
* @param parentServices - The parent/caller's singleton services (used as base)
|
|
33
40
|
* @returns The package's singleton services
|
|
34
41
|
*/
|
|
@@ -75,6 +82,30 @@ export const addFunction = (
|
|
|
75
82
|
pikkuState(packageName, 'function', 'functions').set(funcName, funcConfig)
|
|
76
83
|
}
|
|
77
84
|
|
|
85
|
+
export const getFunctionNames = (
|
|
86
|
+
packageName: string | null = null
|
|
87
|
+
): string[] => {
|
|
88
|
+
const functionsMeta = pikkuState(packageName, 'function', 'meta')
|
|
89
|
+
return Object.keys(functionsMeta)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export const getAllFunctionNames = (): string[] => {
|
|
93
|
+
const functions: string[] = []
|
|
94
|
+
|
|
95
|
+
const mainFunctionsMeta = pikkuState(null, 'function', 'meta')
|
|
96
|
+
functions.push(...Object.keys(mainFunctionsMeta))
|
|
97
|
+
|
|
98
|
+
const addons = pikkuState(null, 'rpc', 'addons')
|
|
99
|
+
for (const [namespace, config] of addons) {
|
|
100
|
+
const packageFunctionsMeta = pikkuState(config.package, 'function', 'meta')
|
|
101
|
+
for (const funcName of Object.keys(packageFunctionsMeta)) {
|
|
102
|
+
functions.push(`${namespace}:${funcName}`)
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return functions
|
|
107
|
+
}
|
|
108
|
+
|
|
78
109
|
export const runPikkuFuncDirectly = async <In, Out>(
|
|
79
110
|
funcName: string,
|
|
80
111
|
allServices: CoreServices,
|
|
@@ -89,10 +120,9 @@ export const runPikkuFuncDirectly = async <In, Out>(
|
|
|
89
120
|
if (!funcConfig) {
|
|
90
121
|
throw new Error(`Function not found: ${funcName}`)
|
|
91
122
|
}
|
|
92
|
-
// Inject session into wire
|
|
93
123
|
const wireWithSession = {
|
|
94
124
|
...wire,
|
|
95
|
-
|
|
125
|
+
...(userSession && createFunctionSessionWireProps(userSession)),
|
|
96
126
|
}
|
|
97
127
|
return (await funcConfig.func(allServices, data, wireWithSession)) as Out
|
|
98
128
|
}
|
|
@@ -108,11 +138,14 @@ export const runPikkuFunc = async <In = any, Out = any>(
|
|
|
108
138
|
auth: wiringAuth,
|
|
109
139
|
inheritedMiddleware,
|
|
110
140
|
wireMiddleware,
|
|
141
|
+
inheritedChannelMiddleware,
|
|
142
|
+
wireChannelMiddleware,
|
|
111
143
|
inheritedPermissions,
|
|
112
144
|
wirePermissions,
|
|
113
145
|
coerceDataFromSchema,
|
|
114
146
|
tags = [],
|
|
115
147
|
wire,
|
|
148
|
+
sessionService,
|
|
116
149
|
packageName = null,
|
|
117
150
|
}: {
|
|
118
151
|
singletonServices: CoreSingletonServices
|
|
@@ -121,27 +154,46 @@ export const runPikkuFunc = async <In = any, Out = any>(
|
|
|
121
154
|
auth?: boolean
|
|
122
155
|
inheritedMiddleware?: MiddlewareMetadata[]
|
|
123
156
|
wireMiddleware?: CorePikkuMiddleware[]
|
|
157
|
+
inheritedChannelMiddleware?: MiddlewareMetadata[]
|
|
158
|
+
wireChannelMiddleware?: CorePikkuChannelMiddleware[]
|
|
124
159
|
inheritedPermissions?: PermissionMetadata[]
|
|
125
160
|
wirePermissions?: CorePermissionGroup | CorePikkuPermission[]
|
|
126
161
|
coerceDataFromSchema?: boolean
|
|
127
162
|
tags?: string[]
|
|
128
163
|
wire: PikkuWire
|
|
164
|
+
sessionService?: SessionService<CoreUserSession>
|
|
129
165
|
packageName?: string | null
|
|
130
166
|
}
|
|
131
167
|
): Promise<Out> => {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
168
|
+
wire.wireType ??= wireType
|
|
169
|
+
wire.wireId ??= wireId
|
|
170
|
+
|
|
171
|
+
const funcMap = pikkuState(packageName, 'function', 'functions')
|
|
172
|
+
let funcConfig = funcMap.get(funcName)
|
|
173
|
+
const allMeta = pikkuState(packageName, 'function', 'meta')
|
|
174
|
+
let funcMeta = allMeta[funcName]
|
|
175
|
+
|
|
176
|
+
if (!funcConfig || !funcMeta) {
|
|
177
|
+
const { baseName, version } = parseVersionedId(funcName)
|
|
178
|
+
if (version !== null) {
|
|
179
|
+
funcConfig = funcConfig || funcMap.get(baseName)
|
|
180
|
+
funcMeta = funcMeta || allMeta[baseName]
|
|
181
|
+
if (funcConfig && funcMeta) {
|
|
182
|
+
singletonServices.logger.warn(
|
|
183
|
+
`Version '${funcName}' not registered, resolved to '${baseName}'`
|
|
184
|
+
)
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
135
189
|
if (!funcConfig) {
|
|
136
190
|
throw new Error(`Function not found: ${funcName}`)
|
|
137
191
|
}
|
|
138
|
-
const allMeta = pikkuState(packageName, 'function', 'meta')
|
|
139
|
-
const funcMeta = allMeta[funcName]
|
|
140
192
|
if (!funcMeta) {
|
|
141
193
|
throw new Error(`Function meta not found: ${funcName}`)
|
|
142
194
|
}
|
|
143
195
|
|
|
144
|
-
// For
|
|
196
|
+
// For addon packages, get or create their singleton services
|
|
145
197
|
const resolvedSingletonServices = packageName
|
|
146
198
|
? await getOrCreatePackageSingletonServices(packageName, singletonServices)
|
|
147
199
|
: singletonServices
|
|
@@ -155,35 +207,73 @@ export const runPikkuFunc = async <In = any, Out = any>(
|
|
|
155
207
|
}
|
|
156
208
|
}
|
|
157
209
|
|
|
210
|
+
const allChannelMiddleware = combineChannelMiddleware(wireType, wireId, {
|
|
211
|
+
wireInheritedChannelMiddleware: inheritedChannelMiddleware,
|
|
212
|
+
wireChannelMiddleware,
|
|
213
|
+
packageName,
|
|
214
|
+
})
|
|
215
|
+
|
|
216
|
+
const resolvedWire =
|
|
217
|
+
allChannelMiddleware.length > 0 && wire.channel
|
|
218
|
+
? wrapChannelWithMiddleware(
|
|
219
|
+
wire,
|
|
220
|
+
resolvedSingletonServices,
|
|
221
|
+
allChannelMiddleware
|
|
222
|
+
)
|
|
223
|
+
: wire
|
|
224
|
+
|
|
158
225
|
// Convert tags to PermissionMetadata and merge with inheritedPermissions
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
226
|
+
let mergedInheritedPermissions: PermissionMetadata[]
|
|
227
|
+
if (tags && tags.length > 0) {
|
|
228
|
+
mergedInheritedPermissions = [
|
|
229
|
+
...(inheritedPermissions || []),
|
|
230
|
+
...tags.map((tag) => ({ type: 'tag' as const, tag })),
|
|
231
|
+
]
|
|
232
|
+
} else {
|
|
233
|
+
mergedInheritedPermissions = inheritedPermissions || []
|
|
234
|
+
}
|
|
163
235
|
|
|
164
236
|
// Helper function to run permissions and execute the function
|
|
165
237
|
const executeFunction = async () => {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
238
|
+
if (sessionService) {
|
|
239
|
+
resolvedWire.session = sessionService.freezeInitial()
|
|
240
|
+
resolvedWire.setSession = (s: any) => sessionService.set(s)
|
|
241
|
+
resolvedWire.clearSession = () => sessionService.clear()
|
|
242
|
+
resolvedWire.getSession = () => sessionService.get()
|
|
243
|
+
resolvedWire.hasSessionChanged = () => sessionService.sessionChanged
|
|
171
244
|
}
|
|
172
245
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
246
|
+
const session = resolvedWire.session
|
|
247
|
+
|
|
248
|
+
if (funcMeta.sessionless) {
|
|
249
|
+
if (wiringAuth === true || funcConfig.auth === true) {
|
|
250
|
+
if (!session) {
|
|
251
|
+
throw new ForbiddenError('Authentication required')
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
} else if (funcMeta.sessionless === false) {
|
|
255
|
+
if (wiringAuth === false || funcConfig.auth === false) {
|
|
256
|
+
resolvedSingletonServices.logger.warn(
|
|
257
|
+
`Function '${funcName}' requires a session but auth was explicitly disabled — use pikkuSessionlessFunc instead.`
|
|
258
|
+
)
|
|
259
|
+
}
|
|
260
|
+
if (!session) {
|
|
176
261
|
throw new ForbiddenError('Authentication required')
|
|
177
262
|
}
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
//
|
|
181
|
-
if (
|
|
182
|
-
|
|
183
|
-
|
|
263
|
+
} else {
|
|
264
|
+
// TODO: Remove after a couple of releases — backward compat for
|
|
265
|
+
// generated metadata that doesn't include the `sessionless` field yet.
|
|
266
|
+
if (wiringAuth === true || funcConfig.auth === true) {
|
|
267
|
+
if (!session) {
|
|
268
|
+
throw new ForbiddenError('Authentication required')
|
|
269
|
+
}
|
|
184
270
|
}
|
|
185
271
|
}
|
|
186
272
|
|
|
273
|
+
if ((session as any)?.readonly && !funcMeta.readonly) {
|
|
274
|
+
throw new ReadonlySessionError()
|
|
275
|
+
}
|
|
276
|
+
|
|
187
277
|
// Evaluate the data from the lazy function
|
|
188
278
|
const actualData = await data()
|
|
189
279
|
|
|
@@ -204,33 +294,51 @@ export const runPikkuFunc = async <In = any, Out = any>(
|
|
|
204
294
|
}
|
|
205
295
|
}
|
|
206
296
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
wirePermissions
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
297
|
+
if (
|
|
298
|
+
mergedInheritedPermissions.length > 0 ||
|
|
299
|
+
wirePermissions ||
|
|
300
|
+
funcMeta.permissions ||
|
|
301
|
+
funcConfig.permissions
|
|
302
|
+
) {
|
|
303
|
+
await runPermissions(wireType, wireId, {
|
|
304
|
+
wireInheritedPermissions: mergedInheritedPermissions,
|
|
305
|
+
wirePermissions: wirePermissions,
|
|
306
|
+
funcInheritedPermissions: funcMeta.permissions,
|
|
307
|
+
funcPermissions: funcConfig.permissions,
|
|
308
|
+
services: resolvedSingletonServices,
|
|
309
|
+
wire: resolvedWire as any,
|
|
310
|
+
data: actualData,
|
|
311
|
+
packageName,
|
|
312
|
+
})
|
|
313
|
+
}
|
|
217
314
|
|
|
218
315
|
const wireServices = await resolvedCreateWireServices?.(
|
|
219
316
|
resolvedSingletonServices,
|
|
220
|
-
|
|
317
|
+
resolvedWire
|
|
221
318
|
)
|
|
222
319
|
try {
|
|
223
|
-
const services =
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
320
|
+
const services =
|
|
321
|
+
wireServices && Object.keys(wireServices).length > 0
|
|
322
|
+
? { ...resolvedSingletonServices, ...wireServices }
|
|
323
|
+
: resolvedSingletonServices
|
|
324
|
+
Object.defineProperty(resolvedWire, 'rpc', {
|
|
325
|
+
get() {
|
|
326
|
+
const rpc = rpcService.getContextRPCService(services, resolvedWire, {
|
|
327
|
+
sessionService,
|
|
328
|
+
})
|
|
329
|
+
Object.defineProperty(resolvedWire, 'rpc', {
|
|
330
|
+
value: rpc,
|
|
331
|
+
writable: true,
|
|
332
|
+
configurable: true,
|
|
333
|
+
})
|
|
334
|
+
return rpc
|
|
335
|
+
},
|
|
336
|
+
configurable: true,
|
|
337
|
+
enumerable: true,
|
|
231
338
|
})
|
|
339
|
+
return await funcConfig.func(services, actualData, resolvedWire)
|
|
232
340
|
} finally {
|
|
233
|
-
if (wireServices) {
|
|
341
|
+
if (wireServices && Object.keys(wireServices).length > 0) {
|
|
234
342
|
await closeWireServices(resolvedSingletonServices.logger, wireServices)
|
|
235
343
|
}
|
|
236
344
|
}
|
|
@@ -247,7 +355,7 @@ export const runPikkuFunc = async <In = any, Out = any>(
|
|
|
247
355
|
if (allMiddleware.length > 0) {
|
|
248
356
|
return (await runMiddleware<CorePikkuMiddleware>(
|
|
249
357
|
resolvedSingletonServices,
|
|
250
|
-
|
|
358
|
+
resolvedWire,
|
|
251
359
|
allMiddleware,
|
|
252
360
|
executeFunction
|
|
253
361
|
)) as Out
|