@pikku/cli 0.11.1 → 0.11.2
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 +11 -12
- package/.pikku/channel/pikku-channels-map.gen.d.ts +8 -8
- package/.pikku/channel/pikku-channels-meta.gen.ts +1 -1
- 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 +146 -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/function/pikku-function-types.gen.ts +49 -63
- package/.pikku/function/pikku-functions-meta.gen.json +988 -0
- package/.pikku/function/pikku-functions-meta.gen.ts +4 -970
- package/.pikku/function/pikku-functions-meta.min.gen.json +212 -0
- package/.pikku/function/pikku-functions-meta.min.gen.ts +4 -209
- package/.pikku/http/pikku-http-types.gen.ts +2 -2
- package/.pikku/http/pikku-http-wirings-map.gen.d.ts +8 -8
- package/.pikku/http/pikku-http-wirings-meta.gen.ts +1 -1
- package/.pikku/http/pikku-http-wirings.gen.ts +1 -1
- package/.pikku/mcp/pikku-mcp-types.gen.ts +13 -13
- 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 +1 -4
- package/.pikku/pikku-services.gen.ts +4 -6
- package/.pikku/pikku-types.gen.ts +1 -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 +8 -8
- 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 +2 -2
- package/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +8 -8
- package/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +34 -33
- 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 +25 -25
- package/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
- package/.pikku/services/config.gen.json +99 -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/variables.gen.json +13 -0
- package/.pikku/services/workflowService.gen.json +31 -0
- package/.pikku/workflow/pikku-workflow-map.gen.d.ts +8 -8
- package/.pikku/workflow/pikku-workflow-types.gen.ts +36 -31
- package/.pikku/workflow/pikku-workflow-wirings-meta.gen.json +1 -0
- package/.pikku/workflow/pikku-workflow-wirings-meta.gen.ts +5 -2
- package/.pikku/workflow/pikku-workflow-wirings.gen.ts +6 -2
- package/CHANGELOG.md +21 -0
- 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 +6 -7
- package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
- package/dist/.pikku/channel/pikku-channels-meta.gen.js +1 -1
- 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 +146 -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/function/pikku-function-types.gen.d.ts +29 -79
- package/dist/.pikku/function/pikku-function-types.gen.js +19 -15
- package/dist/.pikku/function/pikku-functions-meta.gen.js +3 -969
- package/dist/.pikku/function/pikku-functions-meta.gen.json +988 -0
- package/dist/.pikku/function/pikku-functions-meta.min.gen.js +3 -208
- package/dist/.pikku/function/pikku-functions-meta.min.gen.json +212 -0
- package/dist/.pikku/http/pikku-http-types.gen.d.ts +2 -2
- package/dist/.pikku/http/pikku-http-types.gen.js +1 -1
- package/dist/.pikku/http/pikku-http-wirings-meta.gen.js +1 -1
- 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 +13 -13
- package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
- 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 +1 -4
- package/dist/.pikku/pikku-bootstrap.gen.js +1 -4
- package/dist/.pikku/pikku-services.gen.d.ts +3 -6
- package/dist/.pikku/pikku-services.gen.js +2 -5
- package/dist/.pikku/pikku-types.gen.d.ts +1 -1
- package/dist/.pikku/pikku-types.gen.js +1 -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 +6 -9
- package/dist/.pikku/rpc/pikku-remote-rpc-workers.gen.js +2 -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 +15 -15
- package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
- package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +29 -25
- package/dist/.pikku/workflow/pikku-workflow-types.gen.js +22 -8
- package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +3 -2
- package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.json +1 -0
- package/dist/.pikku/workflow/pikku-workflow-wirings.gen.d.ts +6 -2
- package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +6 -3
- package/dist/bin/pikku.js +5 -26
- package/dist/src/cli.wiring.js +4 -4
- package/dist/src/functions/commands/all.js +82 -42
- package/dist/src/functions/commands/bootstrap.js +22 -10
- package/dist/src/functions/commands/watch.js +6 -3
- package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.js +12 -7
- package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.d.ts +1 -1
- package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.js +42 -4
- 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 +40 -2
- package/dist/src/functions/wirings/channels/pikku-channels.js +9 -2
- package/dist/src/functions/wirings/channels/serialize-channel-types.js +10 -11
- 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 +9 -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/functions/pikku-command-function-types-split.js +4 -4
- package/dist/src/functions/wirings/functions/pikku-command-functions.js +15 -5
- package/dist/src/functions/wirings/functions/pikku-command-services.d.ts +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-services.js +23 -23
- package/dist/src/functions/wirings/functions/schemas.js +1 -1
- package/dist/src/functions/wirings/functions/serialize-function-types.d.ts +1 -1
- package/dist/src/functions/wirings/functions/serialize-function-types.js +50 -64
- package/dist/src/functions/wirings/http/openapi-spec-generator.js +4 -4
- package/dist/src/functions/wirings/http/pikku-http-routes.js +9 -2
- package/dist/src/functions/wirings/http/serialize-http-types.js +1 -1
- package/dist/src/functions/wirings/mcp/pikku-command-mcp.js +18 -4
- package/dist/src/functions/wirings/mcp/serialize-mcp-types.js +12 -12
- package/dist/src/functions/wirings/middleware/pikku-command-middleware.js +26 -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/queue/pikku-command-queue.js +9 -3
- package/dist/src/functions/wirings/queue/pikku-queue.js +9 -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.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 +1 -1
- package/dist/src/functions/wirings/rpc/serialize-rpc-wrapper.js +3 -3
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.js +6 -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-types.js +3 -1
- package/dist/src/functions/wirings/workflow/pikku-command-workflow.js +12 -8
- package/dist/src/functions/wirings/workflow/serialize-workflow-meta.d.ts +2 -1
- package/dist/src/functions/wirings/workflow/serialize-workflow-meta.js +11 -1
- package/dist/src/functions/wirings/workflow/serialize-workflow-types.d.ts +1 -1
- package/dist/src/functions/wirings/workflow/serialize-workflow-types.js +36 -31
- package/dist/src/functions/wirings/workflow/serialize-workflow-wirings.d.ts +8 -0
- package/dist/src/functions/wirings/workflow/serialize-workflow-wirings.js +30 -0
- package/dist/src/functions/wirings/workflow/serialize-workflow-workers.js +2 -2
- 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 +14 -12
- 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/pikku-cli-config.js +35 -2
- 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 +1 -1
- package/dist/src/utils/schema-generator.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -8
- package/src/cli.wiring.ts +4 -4
- package/src/functions/commands/all.ts +94 -45
- package/src/functions/commands/bootstrap.ts +25 -10
- package/src/functions/commands/watch.ts +6 -3
- package/src/functions/runtimes/nextjs/pikku-command-nextjs.ts +26 -5
- package/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.ts +43 -4
- package/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.ts +40 -1
- package/src/functions/wirings/channels/pikku-channels.ts +27 -3
- package/src/functions/wirings/channels/serialize-channel-types.ts +10 -11
- 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 +26 -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/functions/pikku-command-function-types-split.ts +6 -6
- package/src/functions/wirings/functions/pikku-command-functions.ts +39 -4
- package/src/functions/wirings/functions/pikku-command-services.ts +25 -25
- package/src/functions/wirings/functions/schemas.ts +2 -2
- package/src/functions/wirings/functions/serialize-function-types.ts +51 -65
- package/src/functions/wirings/http/openapi-spec-generator.ts +14 -5
- package/src/functions/wirings/http/pikku-http-routes.ts +28 -2
- package/src/functions/wirings/http/serialize-http-types.ts +1 -1
- package/src/functions/wirings/mcp/pikku-command-mcp.ts +30 -4
- package/src/functions/wirings/mcp/serialize-mcp-types.ts +12 -12
- package/src/functions/wirings/middleware/pikku-command-middleware.ts +35 -2
- package/src/functions/wirings/middleware/serialize-middleware-groups-meta.ts +4 -19
- package/src/functions/wirings/permissions/pikku-command-permissions.ts +2 -2
- package/src/functions/wirings/queue/pikku-command-queue.ts +27 -2
- package/src/functions/wirings/queue/pikku-queue.ts +27 -2
- 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.ts +25 -2
- package/src/functions/wirings/rpc/serialize-public-rpc.ts +11 -4
- package/src/functions/wirings/rpc/serialize-remote-rpc.ts +1 -1
- package/src/functions/wirings/rpc/serialize-rpc-wrapper.ts +3 -3
- package/src/functions/wirings/scheduler/pikku-command-scheduler.ts +30 -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-types.ts +8 -1
- package/src/functions/wirings/workflow/pikku-command-workflow.ts +36 -8
- package/src/functions/wirings/workflow/serialize-workflow-meta.ts +18 -1
- package/src/functions/wirings/workflow/serialize-workflow-types.ts +39 -31
- package/src/functions/wirings/workflow/serialize-workflow-wirings.ts +47 -0
- package/src/functions/wirings/workflow/serialize-workflow-workers.ts +2 -2
- 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 +15 -15
- package/src/utils/check-required-types.ts +4 -7
- package/src/utils/pikku-cli-config.ts +69 -2
- package/src/utils/pikku-files-and-methods.ts +10 -13
- package/src/utils/schema-generator.ts +2 -2
- package/types/application-types.d.ts +1 -1
- package/types/config.d.ts +12 -1
- 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.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
|
@@ -2,7 +2,11 @@ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js'
|
|
|
2
2
|
import { serializeFileImports } from '../../../utils/file-imports-serializer.js'
|
|
3
3
|
import { writeFileInDir } from '../../../utils/file-writer.js'
|
|
4
4
|
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js'
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
serializeQueueMeta,
|
|
7
|
+
serializeQueueMetaTS,
|
|
8
|
+
} from './serialize-queue-meta.js'
|
|
9
|
+
import { getFileImportRelativePath } from '../../../utils/file-import-path.js'
|
|
6
10
|
|
|
7
11
|
export const pikkuQueue: any = pikkuSessionlessFunc<void, boolean | undefined>({
|
|
8
12
|
func: async ({ logger, config, getInspectorState }) => {
|
|
@@ -10,15 +14,36 @@ export const pikkuQueue: any = pikkuSessionlessFunc<void, boolean | undefined>({
|
|
|
10
14
|
const {
|
|
11
15
|
queueWorkersWiringFile,
|
|
12
16
|
queueWorkersWiringMetaFile,
|
|
17
|
+
queueWorkersWiringMetaJsonFile,
|
|
13
18
|
packageMappings,
|
|
19
|
+
schema,
|
|
14
20
|
} = config
|
|
15
21
|
const { queueWorkers } = visitState
|
|
16
22
|
|
|
23
|
+
// Write JSON file
|
|
17
24
|
await writeFileInDir(
|
|
18
25
|
logger,
|
|
26
|
+
queueWorkersWiringMetaJsonFile,
|
|
27
|
+
JSON.stringify(serializeQueueMeta(queueWorkers.meta), null, 2)
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
// Calculate relative path from TS file to JSON file
|
|
31
|
+
const jsonImportPath = getFileImportRelativePath(
|
|
19
32
|
queueWorkersWiringMetaFile,
|
|
20
|
-
|
|
33
|
+
queueWorkersWiringMetaJsonFile,
|
|
34
|
+
packageMappings
|
|
21
35
|
)
|
|
36
|
+
|
|
37
|
+
// Write TypeScript file that imports JSON
|
|
38
|
+
await writeFileInDir(
|
|
39
|
+
logger,
|
|
40
|
+
queueWorkersWiringMetaFile,
|
|
41
|
+
serializeQueueMetaTS(
|
|
42
|
+
jsonImportPath,
|
|
43
|
+
schema?.supportsImportAttributes ?? false
|
|
44
|
+
)
|
|
45
|
+
)
|
|
46
|
+
|
|
22
47
|
await writeFileInDir(
|
|
23
48
|
logger,
|
|
24
49
|
queueWorkersWiringFile,
|
|
@@ -2,7 +2,11 @@ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js'
|
|
|
2
2
|
import { serializeFileImports } from '../../../utils/file-imports-serializer.js'
|
|
3
3
|
import { writeFileInDir } from '../../../utils/file-writer.js'
|
|
4
4
|
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js'
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
serializeQueueMeta,
|
|
7
|
+
serializeQueueMetaTS,
|
|
8
|
+
} from './serialize-queue-meta.js'
|
|
9
|
+
import { getFileImportRelativePath } from '../../../utils/file-import-path.js'
|
|
6
10
|
|
|
7
11
|
export const pikkuQueue: any = pikkuSessionlessFunc<void, boolean>({
|
|
8
12
|
func: async ({ logger, config, getInspectorState }) => {
|
|
@@ -10,7 +14,9 @@ export const pikkuQueue: any = pikkuSessionlessFunc<void, boolean>({
|
|
|
10
14
|
const {
|
|
11
15
|
queueWorkersWiringFile,
|
|
12
16
|
queueWorkersWiringMetaFile,
|
|
17
|
+
queueWorkersWiringMetaJsonFile,
|
|
13
18
|
packageMappings,
|
|
19
|
+
schema,
|
|
14
20
|
} = config
|
|
15
21
|
const { queueWorkers } = visitState
|
|
16
22
|
|
|
@@ -23,11 +29,30 @@ export const pikkuQueue: any = pikkuSessionlessFunc<void, boolean>({
|
|
|
23
29
|
}
|
|
24
30
|
}
|
|
25
31
|
|
|
32
|
+
// Write JSON file
|
|
26
33
|
await writeFileInDir(
|
|
27
34
|
logger,
|
|
35
|
+
queueWorkersWiringMetaJsonFile,
|
|
36
|
+
JSON.stringify(serializeQueueMeta(queueMeta), null, 2)
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
// Calculate relative path from TS file to JSON file
|
|
40
|
+
const jsonImportPath = getFileImportRelativePath(
|
|
28
41
|
queueWorkersWiringMetaFile,
|
|
29
|
-
|
|
42
|
+
queueWorkersWiringMetaJsonFile,
|
|
43
|
+
packageMappings
|
|
30
44
|
)
|
|
45
|
+
|
|
46
|
+
// Write TypeScript file that imports JSON
|
|
47
|
+
await writeFileInDir(
|
|
48
|
+
logger,
|
|
49
|
+
queueWorkersWiringMetaFile,
|
|
50
|
+
serializeQueueMetaTS(
|
|
51
|
+
jsonImportPath,
|
|
52
|
+
schema?.supportsImportAttributes ?? false
|
|
53
|
+
)
|
|
54
|
+
)
|
|
55
|
+
|
|
31
56
|
await writeFileInDir(
|
|
32
57
|
logger,
|
|
33
58
|
queueWorkersWiringFile,
|
|
@@ -1,10 +1,24 @@
|
|
|
1
1
|
import { QueueWorkersMeta } from '@pikku/core/queue'
|
|
2
2
|
|
|
3
3
|
export const serializeQueueMeta = (queueWorkersMeta: QueueWorkersMeta) => {
|
|
4
|
+
return queueWorkersMeta
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export const serializeQueueMetaTS = (
|
|
8
|
+
jsonImportPath: string,
|
|
9
|
+
supportsImportAttributes: boolean
|
|
10
|
+
) => {
|
|
11
|
+
const importStatement = supportsImportAttributes
|
|
12
|
+
? `import metaData from '${jsonImportPath}' with { type: 'json' }`
|
|
13
|
+
: `import metaData from '${jsonImportPath}'`
|
|
14
|
+
|
|
4
15
|
const serializedOutput: string[] = []
|
|
5
16
|
serializedOutput.push("import { pikkuState } from '@pikku/core'")
|
|
17
|
+
serializedOutput.push("import { QueueWorkersMeta } from '@pikku/core/queue'")
|
|
18
|
+
serializedOutput.push(importStatement)
|
|
19
|
+
serializedOutput.push('')
|
|
6
20
|
serializedOutput.push(
|
|
7
|
-
|
|
21
|
+
"pikkuState('queue', 'meta', metaData as QueueWorkersMeta)"
|
|
8
22
|
)
|
|
9
23
|
return serializedOutput.join('\n')
|
|
10
24
|
}
|
|
@@ -15,7 +15,7 @@ import type { PikkuFunctionConfig } from '${functionTypesImportPath}'
|
|
|
15
15
|
* @template In - Input type for the queue job
|
|
16
16
|
* @template Out - Output type for the queue job
|
|
17
17
|
*/
|
|
18
|
-
type QueueWiring<In, Out> = CoreQueueWorker<PikkuFunctionConfig<In, Out>>
|
|
18
|
+
type QueueWiring<In, Out> = CoreQueueWorker<PikkuFunctionConfig<In, Out, 'session' | 'rpc'>>
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* Registers a queue worker with the Pikku framework.
|
|
@@ -1,17 +1,40 @@
|
|
|
1
1
|
import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js'
|
|
2
2
|
import { writeFileInDir } from '../../../utils/file-writer.js'
|
|
3
3
|
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js'
|
|
4
|
+
import { getFileImportRelativePath } from '../../../utils/file-import-path.js'
|
|
4
5
|
|
|
5
6
|
export const pikkuRPC: any = pikkuSessionlessFunc<void, boolean>({
|
|
6
7
|
func: async ({ logger, config, getInspectorState }) => {
|
|
7
8
|
const { rpc } = await getInspectorState()
|
|
8
|
-
const {
|
|
9
|
+
const {
|
|
10
|
+
rpcInternalWiringMetaFile,
|
|
11
|
+
rpcInternalWiringMetaJsonFile,
|
|
12
|
+
packageMappings,
|
|
13
|
+
schema,
|
|
14
|
+
} = config
|
|
9
15
|
|
|
10
16
|
if (rpc.internalFiles.size > 0) {
|
|
17
|
+
await writeFileInDir(
|
|
18
|
+
logger,
|
|
19
|
+
rpcInternalWiringMetaJsonFile,
|
|
20
|
+
JSON.stringify(rpc.internalMeta, null, 2)
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
const jsonImportPath = getFileImportRelativePath(
|
|
24
|
+
rpcInternalWiringMetaFile,
|
|
25
|
+
rpcInternalWiringMetaJsonFile,
|
|
26
|
+
packageMappings
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
const supportsImportAttributes = schema?.supportsImportAttributes ?? false
|
|
30
|
+
const importStatement = supportsImportAttributes
|
|
31
|
+
? `import metaData from '${jsonImportPath}' with { type: 'json' }`
|
|
32
|
+
: `import metaData from '${jsonImportPath}'`
|
|
33
|
+
|
|
11
34
|
await writeFileInDir(
|
|
12
35
|
logger,
|
|
13
36
|
rpcInternalWiringMetaFile,
|
|
14
|
-
`import { pikkuState } from '@pikku/core'\npikkuState('rpc', 'meta',
|
|
37
|
+
`import { pikkuState } from '@pikku/core'\n${importStatement}\npikkuState('rpc', 'meta', metaData as Record<string, string>)`
|
|
15
38
|
)
|
|
16
39
|
return true
|
|
17
40
|
}
|
|
@@ -13,16 +13,23 @@ import { pikkuSessionlessFunc, wireHTTP } from '${pathToPikkuTypes}'
|
|
|
13
13
|
* This is used for public HTTP access to exposed server functions
|
|
14
14
|
*/
|
|
15
15
|
export const rpcCaller = pikkuSessionlessFunc<
|
|
16
|
-
{
|
|
16
|
+
{ rpcName: string, data?: any },
|
|
17
17
|
any
|
|
18
18
|
>({
|
|
19
|
-
func: async ({
|
|
20
|
-
return await (rpc.invokeExposed as any)(
|
|
19
|
+
func: async (services, { rpcName, data }, { rpc }) => {
|
|
20
|
+
return await (rpc.invokeExposed as any)(rpcName, data)
|
|
21
21
|
},
|
|
22
22
|
})
|
|
23
23
|
|
|
24
24
|
wireHTTP({
|
|
25
|
-
route:
|
|
25
|
+
route: "/rpc/:rpcName",
|
|
26
|
+
method: "options",
|
|
27
|
+
auth: false,
|
|
28
|
+
func: pikkuSessionlessFunc<{ rpcName: string }>(async () => void 0),
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
wireHTTP({
|
|
32
|
+
route: '/rpc/:rpcName',
|
|
26
33
|
method: 'post',
|
|
27
34
|
func: rpcCaller,
|
|
28
35
|
})
|
|
@@ -16,7 +16,7 @@ export const pikkuRemoteInternalRPC = pikkuSessionlessFunc<
|
|
|
16
16
|
{ rpcName: string, data?: any },
|
|
17
17
|
any
|
|
18
18
|
>({
|
|
19
|
-
func: async (
|
|
19
|
+
func: async (_services, { rpcName, data }, { rpc }) => {
|
|
20
20
|
return await (rpc.invoke as any)(rpcName, data)
|
|
21
21
|
},
|
|
22
22
|
internal: true,
|
|
@@ -54,12 +54,12 @@ export class PikkuRPC {
|
|
|
54
54
|
* This is a generic method that routes to the appropriate server function
|
|
55
55
|
* based on the function name and passes the provided data.
|
|
56
56
|
*
|
|
57
|
-
* @param
|
|
57
|
+
* @param rpcName - The name of the server function to invoke
|
|
58
58
|
* @param data - The data to pass to the server function
|
|
59
59
|
* @returns A promise that resolves with the function's return value
|
|
60
60
|
*/
|
|
61
|
-
invoke: RPCInvoke = async (
|
|
62
|
-
return await this.pikkuFetch.post(
|
|
61
|
+
invoke: RPCInvoke = async (rpcName, data) => {
|
|
62
|
+
return await this.pikkuFetch.post(\`/rpc/\${rpcName}\` as any, { rpcName, data }) as any
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
|
|
@@ -2,7 +2,11 @@ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js'
|
|
|
2
2
|
import { serializeFileImports } from '../../../utils/file-imports-serializer.js'
|
|
3
3
|
import { writeFileInDir } from '../../../utils/file-writer.js'
|
|
4
4
|
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js'
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
serializeSchedulerMeta,
|
|
7
|
+
serializeSchedulerMetaTS,
|
|
8
|
+
} from './serialize-scheduler-meta.js'
|
|
9
|
+
import { getFileImportRelativePath } from '../../../utils/file-import-path.js'
|
|
6
10
|
|
|
7
11
|
export const pikkuScheduler: any = pikkuSessionlessFunc<
|
|
8
12
|
void,
|
|
@@ -10,15 +14,37 @@ export const pikkuScheduler: any = pikkuSessionlessFunc<
|
|
|
10
14
|
>({
|
|
11
15
|
func: async ({ logger, config, getInspectorState }) => {
|
|
12
16
|
const visitState = await getInspectorState()
|
|
13
|
-
const {
|
|
14
|
-
|
|
17
|
+
const {
|
|
18
|
+
schedulersWiringFile,
|
|
19
|
+
schedulersWiringMetaFile,
|
|
20
|
+
schedulersWiringMetaJsonFile,
|
|
21
|
+
packageMappings,
|
|
22
|
+
schema,
|
|
23
|
+
} = config
|
|
15
24
|
const { scheduledTasks } = visitState
|
|
16
25
|
|
|
17
26
|
await writeFileInDir(
|
|
18
27
|
logger,
|
|
28
|
+
schedulersWiringMetaJsonFile,
|
|
29
|
+
JSON.stringify(serializeSchedulerMeta(scheduledTasks.meta), null, 2)
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
const jsonImportPath = getFileImportRelativePath(
|
|
19
33
|
schedulersWiringMetaFile,
|
|
20
|
-
|
|
34
|
+
schedulersWiringMetaJsonFile,
|
|
35
|
+
packageMappings
|
|
21
36
|
)
|
|
37
|
+
|
|
38
|
+
await writeFileInDir(
|
|
39
|
+
logger,
|
|
40
|
+
schedulersWiringMetaFile,
|
|
41
|
+
serializeSchedulerMetaTS(
|
|
42
|
+
scheduledTasks.meta,
|
|
43
|
+
jsonImportPath,
|
|
44
|
+
schema?.supportsImportAttributes ?? false
|
|
45
|
+
)
|
|
46
|
+
)
|
|
47
|
+
|
|
22
48
|
await writeFileInDir(
|
|
23
49
|
logger,
|
|
24
50
|
schedulersWiringFile,
|
|
@@ -3,11 +3,30 @@ import { ScheduledTasksMeta } from '@pikku/core/scheduler'
|
|
|
3
3
|
export const serializeSchedulerMeta = (
|
|
4
4
|
scheduledTasksMeta: ScheduledTasksMeta
|
|
5
5
|
) => {
|
|
6
|
+
return scheduledTasksMeta
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const serializeSchedulerMetaTS = (
|
|
10
|
+
scheduledTasksMeta: ScheduledTasksMeta,
|
|
11
|
+
jsonImportPath: string,
|
|
12
|
+
supportsImportAttributes
|
|
13
|
+
) => {
|
|
14
|
+
const importStatement = supportsImportAttributes
|
|
15
|
+
? `import metaData from '${jsonImportPath}' with { type: 'json' }`
|
|
16
|
+
: `import metaData from '${jsonImportPath}'`
|
|
17
|
+
|
|
6
18
|
const serializedOutput: string[] = []
|
|
7
19
|
serializedOutput.push("import { pikkuState } from '@pikku/core'")
|
|
8
20
|
serializedOutput.push(
|
|
9
|
-
|
|
21
|
+
"import { ScheduledTasksMeta } from '@pikku/core/scheduler'"
|
|
10
22
|
)
|
|
23
|
+
serializedOutput.push(importStatement)
|
|
24
|
+
serializedOutput.push('')
|
|
25
|
+
serializedOutput.push(
|
|
26
|
+
"pikkuState('scheduler', 'meta', metaData as ScheduledTasksMeta)"
|
|
27
|
+
)
|
|
28
|
+
serializedOutput.push('')
|
|
29
|
+
|
|
11
30
|
const scheduledTasksMetaValues = Object.values(scheduledTasksMeta)
|
|
12
31
|
if (scheduledTasksMetaValues.length > 0) {
|
|
13
32
|
serializedOutput.push(
|
|
@@ -13,7 +13,7 @@ import type { PikkuFunctionConfig, PikkuMiddleware } from '${functionTypesImport
|
|
|
13
13
|
* Type definition for scheduled tasks that run at specified intervals.
|
|
14
14
|
* These are sessionless functions that execute based on cron expressions.
|
|
15
15
|
*/
|
|
16
|
-
type SchedulerWiring = CoreScheduledTask<PikkuFunctionConfig<void, void>, PikkuMiddleware>
|
|
16
|
+
type SchedulerWiring = CoreScheduledTask<PikkuFunctionConfig<void, void, 'session' | 'rpc'>, PikkuMiddleware>
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* Registers a scheduled task with the Pikku framework.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js'
|
|
2
|
+
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js'
|
|
3
|
+
import { writeAllServiceMetadata } from '@pikku/inspector'
|
|
4
|
+
|
|
5
|
+
export const pikkuServiceMetadata: any = pikkuSessionlessFunc<void, void>({
|
|
6
|
+
func: async ({ logger, config, getInspectorState }) => {
|
|
7
|
+
const state = await getInspectorState()
|
|
8
|
+
|
|
9
|
+
// Only write service metadata if there are services to document
|
|
10
|
+
if (state.serviceMetadata && state.serviceMetadata.length > 0) {
|
|
11
|
+
writeAllServiceMetadata(state.serviceMetadata, config.outDir)
|
|
12
|
+
logger.debug(
|
|
13
|
+
`• Wrote ${state.serviceMetadata.length} service metadata files`
|
|
14
|
+
)
|
|
15
|
+
} else {
|
|
16
|
+
logger.debug('• No service metadata to write')
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
middleware: [
|
|
20
|
+
logCommandInfoAndTime({
|
|
21
|
+
commandStart: 'Generating service metadata',
|
|
22
|
+
commandEnd: 'Generated service metadata',
|
|
23
|
+
}),
|
|
24
|
+
],
|
|
25
|
+
})
|
|
@@ -13,10 +13,17 @@ export const pikkuWorkflowTypes: any = pikkuSessionlessFunc<void, void>({
|
|
|
13
13
|
packageMappings
|
|
14
14
|
)
|
|
15
15
|
|
|
16
|
+
// Get RPC map import path
|
|
17
|
+
const rpcMapImportPath = getFileImportRelativePath(
|
|
18
|
+
workflowTypesFile,
|
|
19
|
+
config.rpcInternalMapDeclarationFile,
|
|
20
|
+
packageMappings
|
|
21
|
+
)
|
|
22
|
+
|
|
16
23
|
await writeFileInDir(
|
|
17
24
|
logger,
|
|
18
25
|
workflowTypesFile,
|
|
19
|
-
serializeWorkflowTypes(functionTypesImportPath)
|
|
26
|
+
serializeWorkflowTypes(functionTypesImportPath, rpcMapImportPath)
|
|
20
27
|
)
|
|
21
28
|
},
|
|
22
29
|
})
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js'
|
|
2
2
|
import { ErrorCode } from '@pikku/inspector'
|
|
3
|
-
import { serializeFileImports } from '../../../utils/file-imports-serializer.js'
|
|
4
3
|
import { writeFileInDir } from '../../../utils/file-writer.js'
|
|
5
4
|
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js'
|
|
6
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
serializeWorkflowMeta,
|
|
7
|
+
serializeWorkflowMetaTS,
|
|
8
|
+
} from './serialize-workflow-meta.js'
|
|
7
9
|
import { serializeWorkflowTypes } from './serialize-workflow-types.js'
|
|
8
10
|
import { serializeWorkflowMap } from './serialize-workflow-map.js'
|
|
9
11
|
import { serializeWorkflowWorkers } from './serialize-workflow-workers.js'
|
|
12
|
+
import { serializeWorkflowWirings } from './serialize-workflow-wirings.js'
|
|
10
13
|
import { getFileImportRelativePath } from '../../../utils/file-import-path.js'
|
|
11
14
|
import { join } from 'path'
|
|
12
15
|
|
|
@@ -19,11 +22,13 @@ export const pikkuWorkflow: any = pikkuSessionlessFunc<
|
|
|
19
22
|
const {
|
|
20
23
|
workflowsWiringFile,
|
|
21
24
|
workflowsWiringMetaFile,
|
|
25
|
+
workflowsWiringMetaJsonFile,
|
|
22
26
|
workflowMapDeclarationFile,
|
|
23
27
|
workflowTypesFile,
|
|
24
28
|
functionTypesFile,
|
|
25
29
|
typesDeclarationFile,
|
|
26
30
|
packageMappings,
|
|
31
|
+
schema,
|
|
27
32
|
} = config
|
|
28
33
|
const { workflows, functions: functionState } = visitState
|
|
29
34
|
const { typesMap } = functionState
|
|
@@ -46,19 +51,34 @@ export const pikkuWorkflow: any = pikkuSessionlessFunc<
|
|
|
46
51
|
}
|
|
47
52
|
}
|
|
48
53
|
|
|
49
|
-
|
|
54
|
+
await writeFileInDir(
|
|
55
|
+
logger,
|
|
56
|
+
workflowsWiringMetaJsonFile,
|
|
57
|
+
JSON.stringify(serializeWorkflowMeta(workflows.meta), null, 2)
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
const jsonImportPath = getFileImportRelativePath(
|
|
61
|
+
workflowsWiringMetaFile,
|
|
62
|
+
workflowsWiringMetaJsonFile,
|
|
63
|
+
packageMappings
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
// Write workflow metadata TypeScript file that imports JSON
|
|
50
67
|
await writeFileInDir(
|
|
51
68
|
logger,
|
|
52
69
|
workflowsWiringMetaFile,
|
|
53
|
-
|
|
70
|
+
serializeWorkflowMetaTS(
|
|
71
|
+
workflows.meta,
|
|
72
|
+
jsonImportPath,
|
|
73
|
+
schema?.supportsImportAttributes ?? false
|
|
74
|
+
)
|
|
54
75
|
)
|
|
55
76
|
|
|
56
|
-
// Write workflow wirings (imports)
|
|
77
|
+
// Write workflow wirings (imports and addWorkflow calls)
|
|
57
78
|
await writeFileInDir(
|
|
58
79
|
logger,
|
|
59
80
|
workflowsWiringFile,
|
|
60
|
-
|
|
61
|
-
'wireWorkflow',
|
|
81
|
+
serializeWorkflowWirings(
|
|
62
82
|
workflowsWiringFile,
|
|
63
83
|
workflows.files,
|
|
64
84
|
packageMappings
|
|
@@ -71,10 +91,18 @@ export const pikkuWorkflow: any = pikkuSessionlessFunc<
|
|
|
71
91
|
functionTypesFile,
|
|
72
92
|
packageMappings
|
|
73
93
|
)
|
|
94
|
+
|
|
95
|
+
// Get RPC map import path
|
|
96
|
+
const rpcMapImportPath = getFileImportRelativePath(
|
|
97
|
+
workflowTypesFile,
|
|
98
|
+
config.rpcInternalMapDeclarationFile,
|
|
99
|
+
packageMappings
|
|
100
|
+
)
|
|
101
|
+
|
|
74
102
|
await writeFileInDir(
|
|
75
103
|
logger,
|
|
76
104
|
workflowTypesFile,
|
|
77
|
-
serializeWorkflowTypes(functionTypesImportPath)
|
|
105
|
+
serializeWorkflowTypes(functionTypesImportPath, rpcMapImportPath)
|
|
78
106
|
)
|
|
79
107
|
|
|
80
108
|
// Write workflow map (type-safe client API)
|
|
@@ -1,11 +1,28 @@
|
|
|
1
1
|
import { WorkflowsMeta } from '@pikku/core/workflow'
|
|
2
2
|
|
|
3
3
|
export const serializeWorkflowMeta = (workflowsMeta: WorkflowsMeta) => {
|
|
4
|
+
return workflowsMeta
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export const serializeWorkflowMetaTS = (
|
|
8
|
+
workflowsMeta: WorkflowsMeta,
|
|
9
|
+
jsonImportPath: string,
|
|
10
|
+
supportsImportAttributes: boolean
|
|
11
|
+
) => {
|
|
12
|
+
const importStatement = supportsImportAttributes
|
|
13
|
+
? `import metaData from '${jsonImportPath}' with { type: 'json' }`
|
|
14
|
+
: `import metaData from '${jsonImportPath}'`
|
|
15
|
+
|
|
4
16
|
const serializedOutput: string[] = []
|
|
5
17
|
serializedOutput.push("import { pikkuState } from '@pikku/core'")
|
|
18
|
+
serializedOutput.push("import { WorkflowsMeta } from '@pikku/core/workflow'")
|
|
19
|
+
serializedOutput.push(importStatement)
|
|
20
|
+
serializedOutput.push('')
|
|
6
21
|
serializedOutput.push(
|
|
7
|
-
|
|
22
|
+
"pikkuState('workflows', 'meta', metaData as WorkflowsMeta)"
|
|
8
23
|
)
|
|
24
|
+
serializedOutput.push('')
|
|
25
|
+
|
|
9
26
|
const workflowsMetaValues = Object.values(workflowsMeta)
|
|
10
27
|
if (workflowsMetaValues.length > 0) {
|
|
11
28
|
serializedOutput.push(
|
|
@@ -1,30 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Generates type definitions for workflow wirings
|
|
3
3
|
*/
|
|
4
|
-
export const serializeWorkflowTypes = (
|
|
4
|
+
export const serializeWorkflowTypes = (
|
|
5
|
+
functionTypesImportPath: string,
|
|
6
|
+
rpcMapImportPath: string
|
|
7
|
+
) => {
|
|
5
8
|
return `/**
|
|
6
9
|
* Workflow-specific type definitions for tree-shaking optimization
|
|
7
10
|
*/
|
|
8
11
|
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import type {
|
|
12
|
-
import type { UserSession, SingletonServices } from '../../types/application-types.d.js'
|
|
13
|
-
import type { TypedPikkuRPC, RPCMap } from '../rpc/pikku-rpc-wirings-map.internal.gen.d.js'
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Type definition for workflows that orchestrate multi-step processes.
|
|
17
|
-
* Workflows support both inline and remote execution modes with step caching.
|
|
18
|
-
*/
|
|
19
|
-
type WorkflowWiring = CoreWorkflow<
|
|
20
|
-
CorePikkuFunctionConfig<PikkuFunctionWorkflow<any, any>, PikkuPermission<any>, PikkuMiddleware>
|
|
21
|
-
>
|
|
12
|
+
import { PikkuWorkflowWire, WorkflowStepOptions } from '@pikku/core/workflow'
|
|
13
|
+
import type { PikkuFunctionSessionless, PikkuFunctionConfig } from '${functionTypesImportPath}'
|
|
14
|
+
import type { RPCMap } from '${rpcMapImportPath}'
|
|
22
15
|
|
|
23
16
|
/**
|
|
24
|
-
* Typed workflow
|
|
17
|
+
* Typed workflow wire with RPC awareness
|
|
25
18
|
* Provides type-safe workflow.do() for RPC steps
|
|
26
19
|
*/
|
|
27
|
-
export interface TypedWorkflow extends
|
|
20
|
+
export interface TypedWorkflow extends PikkuWorkflowWire {
|
|
28
21
|
/**
|
|
29
22
|
* Execute a workflow step with RPC invocation (typed based on available RPCs)
|
|
30
23
|
* @template K - RPC name from the RPC map
|
|
@@ -49,25 +42,23 @@ export interface TypedWorkflow extends PikkuWorkflowInteraction {
|
|
|
49
42
|
|
|
50
43
|
/**
|
|
51
44
|
* Workflow function type with typed workflow service
|
|
52
|
-
* Includes the workflow
|
|
45
|
+
* Includes the workflow wire object with typed RPC methods
|
|
53
46
|
*/
|
|
54
47
|
export type PikkuFunctionWorkflow<
|
|
55
48
|
In = unknown,
|
|
56
49
|
Out = never
|
|
57
|
-
> =
|
|
50
|
+
> = PikkuFunctionSessionless<
|
|
58
51
|
In,
|
|
59
52
|
Out,
|
|
60
|
-
|
|
61
|
-
SingletonServices & {
|
|
62
|
-
rpc: TypedPikkuRPC
|
|
63
|
-
workflow: TypedWorkflow
|
|
64
|
-
},
|
|
65
|
-
UserSession
|
|
53
|
+
'workflow'
|
|
66
54
|
>
|
|
67
55
|
|
|
68
56
|
/**
|
|
69
57
|
* Creates a workflow function with typed input and output.
|
|
70
|
-
* Workflow functions have access to the workflow
|
|
58
|
+
* Workflow functions have access to the workflow wire object for step execution.
|
|
59
|
+
*
|
|
60
|
+
* This is the permissive mode - workflows that don't conform to simple DSL will fall back
|
|
61
|
+
* to basic extraction with a warning.
|
|
71
62
|
*
|
|
72
63
|
* @template In - Input type for the workflow
|
|
73
64
|
* @template Out - Output type for the workflow
|
|
@@ -77,19 +68,36 @@ export type PikkuFunctionWorkflow<
|
|
|
77
68
|
export const pikkuWorkflowFunc = <In, Out = unknown>(
|
|
78
69
|
func:
|
|
79
70
|
| PikkuFunctionWorkflow<In, Out>
|
|
80
|
-
|
|
|
71
|
+
| PikkuFunctionConfig<In, Out, 'workflow', PikkuFunctionWorkflow<In, Out>>
|
|
81
72
|
) => {
|
|
82
73
|
return typeof func === 'function' ? { func } : func
|
|
83
74
|
}
|
|
84
75
|
|
|
85
76
|
/**
|
|
86
|
-
*
|
|
87
|
-
*
|
|
77
|
+
* Creates a simple workflow function with typed input and output.
|
|
78
|
+
* Simple workflows must conform to the restricted DSL for static analysis.
|
|
79
|
+
*
|
|
80
|
+
* This is the strict mode - workflows that don't conform to simple DSL will cause
|
|
81
|
+
* a critical error during inspection.
|
|
88
82
|
*
|
|
89
|
-
*
|
|
83
|
+
* Constraints:
|
|
84
|
+
* - Must use only workflow.do() with RPC form (no inline functions)
|
|
85
|
+
* - Only if/else, for..of, and Promise.all(array.map()) control flow allowed
|
|
86
|
+
* - Step names must be unique (except across mutually exclusive branches)
|
|
87
|
+
* - All workflow calls must be awaited
|
|
88
|
+
*
|
|
89
|
+
* @template In - Input type for the workflow
|
|
90
|
+
* @template Out - Output type for the workflow
|
|
91
|
+
* @param func - Function definition, either direct function or configuration object
|
|
92
|
+
* @returns The normalized configuration object
|
|
90
93
|
*/
|
|
91
|
-
export const
|
|
92
|
-
|
|
94
|
+
export const pikkuSimpleWorkflowFunc = <In, Out = unknown>(
|
|
95
|
+
func:
|
|
96
|
+
| PikkuFunctionWorkflow<In, Out>
|
|
97
|
+
| PikkuFunctionConfig<In, Out, 'workflow', PikkuFunctionWorkflow<In, Out>>
|
|
98
|
+
) => {
|
|
99
|
+
return typeof func === 'function' ? { func } : func
|
|
93
100
|
}
|
|
101
|
+
|
|
94
102
|
`
|
|
95
103
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { getFileImportRelativePath } from '../../../utils/file-import-path.js'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Generate workflow registration wirings
|
|
5
|
+
* Imports all workflow functions and calls addWorkflow for each
|
|
6
|
+
*/
|
|
7
|
+
export const serializeWorkflowWirings = (
|
|
8
|
+
outputPath: string,
|
|
9
|
+
workflowFiles: Map<string, { path: string; exportedName: string }>,
|
|
10
|
+
packageMappings: Record<string, string> = {}
|
|
11
|
+
) => {
|
|
12
|
+
const imports: string[] = []
|
|
13
|
+
const registrations: string[] = []
|
|
14
|
+
|
|
15
|
+
// Sort by pikkuFuncName for consistent output
|
|
16
|
+
const sortedWorkflows = Array.from(workflowFiles.entries()).sort((a, b) =>
|
|
17
|
+
a[0].localeCompare(b[0])
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
// Generate imports
|
|
21
|
+
for (const [, { path, exportedName }] of sortedWorkflows) {
|
|
22
|
+
const importPath = getFileImportRelativePath(
|
|
23
|
+
outputPath,
|
|
24
|
+
path,
|
|
25
|
+
packageMappings
|
|
26
|
+
)
|
|
27
|
+
imports.push(`import { ${exportedName} } from '${importPath}'`)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Generate addWorkflow calls
|
|
31
|
+
for (const [pikkuFuncName, { exportedName }] of sortedWorkflows) {
|
|
32
|
+
registrations.push(`addWorkflow('${pikkuFuncName}', ${exportedName})`)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Only import addWorkflow if there are workflows to register
|
|
36
|
+
const addWorkflowImport =
|
|
37
|
+
sortedWorkflows.length > 0
|
|
38
|
+
? `import { addWorkflow } from '@pikku/core/workflow'\n\n`
|
|
39
|
+
: ''
|
|
40
|
+
|
|
41
|
+
return `/**
|
|
42
|
+
* Auto-generated workflow registrations
|
|
43
|
+
* Do not edit manually - regenerate with 'npx pikku'
|
|
44
|
+
*/
|
|
45
|
+
${addWorkflowImport}${imports.join('\n')}${imports.length > 0 ? '\n\n' : ''}${registrations.join('\n')}
|
|
46
|
+
`
|
|
47
|
+
}
|