@pikku/cli 0.9.15 → 0.10.0
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 +91 -0
- package/.pikku/channel/pikku-channels-map.gen.d.ts +44 -0
- package/.pikku/channel/pikku-channels-meta.gen.ts +5 -0
- package/.pikku/channel/pikku-channels.gen.ts +4 -0
- package/.pikku/cli/pikku-cli-channel.gen.ts +34 -0
- package/.pikku/cli/pikku-cli-client.gen.ts +43 -0
- package/.pikku/cli/pikku-cli-types.gen.ts +70 -0
- package/.pikku/cli/pikku-cli-wirings-meta.gen.ts +145 -0
- package/.pikku/cli/pikku-cli-wirings.gen.ts +6 -0
- package/.pikku/cli/pikku-cli.gen.ts +41 -0
- package/.pikku/function/pikku-function-types.gen.ts +440 -0
- package/.pikku/function/pikku-functions-meta.gen.ts +845 -0
- package/.pikku/function/pikku-functions-meta.min.gen.ts +181 -0
- package/.pikku/function/pikku-functions.gen.ts +76 -0
- package/.pikku/http/pikku-http-types.gen.ts +86 -0
- package/.pikku/http/pikku-http-wirings-map.gen.d.ts +43 -0
- package/.pikku/http/pikku-http-wirings-meta.gen.ts +13 -0
- package/.pikku/http/pikku-http-wirings.gen.ts +4 -0
- package/.pikku/mcp/pikku-mcp-types.gen.ts +140 -0
- package/.pikku/mcp/pikku-mcp-wirings-meta.gen.ts +7 -0
- package/.pikku/mcp/pikku-mcp-wirings.gen.ts +4 -0
- package/.pikku/mcp/pikku-mcp.gen.json +5 -0
- package/.pikku/pikku-bootstrap.gen.ts +19 -0
- package/.pikku/pikku-services.gen.ts +20 -0
- package/.pikku/pikku-types.gen.ts +27 -0
- package/.pikku/pikku-websocket.gen.ts +76 -0
- package/.pikku/queue/pikku-queue-types.gen.ts +27 -0
- package/.pikku/queue/pikku-queue-workers-wirings-map.gen.d.ts +57 -0
- package/.pikku/queue/pikku-queue-workers-wirings-meta.gen.ts +5 -0
- package/.pikku/queue/pikku-queue-workers-wirings.gen.ts +4 -0
- package/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +47 -0
- package/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +82 -0
- package/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.ts +41 -0
- package/.pikku/scheduler/pikku-scheduler-types.gen.ts +25 -0
- package/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.ts +5 -0
- package/.pikku/scheduler/pikku-schedulers-wirings.gen.ts +4 -0
- package/.pikku/schemas/register.gen.ts +51 -0
- package/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -0
- package/.pikku/schemas/schemas/PikkuCLIOutput.schema.json +1 -0
- package/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -0
- package/.pikku/schemas/schemas/PikkuFunctionsOutput.schema.json +1 -0
- package/.pikku/schemas/schemas/PikkuHTTPOutput.schema.json +1 -0
- package/.pikku/schemas/schemas/PikkuMCPOutput.schema.json +1 -0
- package/.pikku/schemas/schemas/PikkuMiddlewareOutput.schema.json +1 -0
- package/.pikku/schemas/schemas/PikkuPermissionsOutput.schema.json +1 -0
- package/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +1 -0
- package/.pikku/schemas/schemas/PikkuRPCOutput.schema.json +1 -0
- package/.pikku/schemas/schemas/PikkuSchedulerOutput.schema.json +1 -0
- package/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -0
- package/CHANGELOG.md +15 -0
- package/bin/pikku.ts +97 -14
- package/build.sh +53 -0
- package/cli.schema.json +1 -382
- package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +56 -0
- package/dist/.pikku/channel/pikku-channel-types.gen.js +52 -0
- package/dist/.pikku/channel/pikku-channels-meta.gen.js +5 -0
- package/dist/.pikku/channel/pikku-channels.gen.d.ts +4 -0
- package/dist/.pikku/channel/pikku-channels.gen.js +5 -0
- package/dist/.pikku/cli/pikku-cli-channel.gen.d.ts +1 -0
- package/dist/.pikku/cli/pikku-cli-channel.gen.js +33 -0
- package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +10 -0
- package/dist/.pikku/cli/pikku-cli-client.gen.js +34 -0
- package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +52 -0
- package/dist/.pikku/cli/pikku-cli-types.gen.js +31 -0
- package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.d.ts +1 -0
- package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +145 -0
- package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +5 -0
- package/dist/.pikku/cli/pikku-cli-wirings.gen.js +6 -0
- package/dist/.pikku/cli/pikku-cli.gen.d.ts +10 -0
- package/dist/.pikku/cli/pikku-cli.gen.js +38 -0
- package/dist/.pikku/function/pikku-function-types.gen.d.ts +380 -0
- package/dist/.pikku/function/pikku-function-types.gen.js +271 -0
- package/dist/.pikku/function/pikku-functions-meta.gen.d.ts +1 -0
- package/dist/.pikku/function/pikku-functions-meta.gen.js +845 -0
- package/dist/.pikku/function/pikku-functions-meta.min.gen.d.ts +1 -0
- package/dist/.pikku/function/pikku-functions-meta.min.gen.js +181 -0
- package/dist/.pikku/function/pikku-functions.gen.d.ts +1 -0
- package/dist/.pikku/function/pikku-functions.gen.js +75 -0
- package/dist/.pikku/http/pikku-http-types.gen.d.ts +68 -0
- package/dist/.pikku/http/pikku-http-types.gen.js +62 -0
- package/dist/.pikku/http/pikku-http-wirings-meta.gen.d.ts +1 -0
- package/dist/.pikku/http/pikku-http-wirings-meta.gen.js +13 -0
- package/dist/.pikku/http/pikku-http-wirings.gen.d.ts +4 -0
- package/dist/.pikku/http/pikku-http-wirings.gen.js +5 -0
- package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +91 -0
- package/dist/.pikku/mcp/pikku-mcp-types.gen.js +71 -0
- package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.d.ts +1 -0
- package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.js +7 -0
- package/dist/.pikku/mcp/pikku-mcp-wirings.gen.d.ts +4 -0
- package/dist/.pikku/mcp/pikku-mcp-wirings.gen.js +5 -0
- package/dist/.pikku/pikku-bootstrap.gen.d.ts +19 -0
- package/dist/.pikku/pikku-bootstrap.gen.js +19 -0
- package/dist/.pikku/pikku-services.gen.d.ts +13 -0
- package/dist/.pikku/pikku-services.gen.js +5 -0
- package/dist/.pikku/pikku-types.gen.d.ts +13 -0
- package/dist/.pikku/pikku-types.gen.js +20 -0
- package/dist/.pikku/pikku-websocket.gen.d.ts +31 -0
- package/dist/.pikku/pikku-websocket.gen.js +49 -0
- package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +23 -0
- package/dist/.pikku/queue/pikku-queue-types.gen.js +16 -0
- package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.d.ts +1 -0
- package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +5 -0
- package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +4 -0
- package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +5 -0
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.d.ts +1 -0
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +41 -0
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +21 -0
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +16 -0
- package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.d.ts +1 -0
- package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.js +5 -0
- package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.d.ts +4 -0
- package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.js +5 -0
- package/dist/.pikku/schemas/register.gen.d.ts +1 -0
- package/dist/.pikku/schemas/register.gen.js +28 -0
- package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuCLIOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuFunctionsOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuHTTPOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuMCPOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuMiddlewareOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuPermissionsOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuRPCOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuSchedulerOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -0
- package/dist/bin/pikku.js +63 -14
- package/dist/src/cli.wiring.d.ts +1 -0
- package/dist/src/cli.wiring.js +99 -0
- package/dist/src/functions/commands/all.d.ts +1 -0
- package/dist/src/functions/commands/all.js +114 -0
- package/dist/src/functions/commands/watch.d.ts +1 -0
- package/dist/src/functions/commands/watch.js +47 -0
- package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.d.ts +1 -0
- package/dist/src/{runtimes → functions/runtimes}/nextjs/pikku-command-nextjs.js +33 -12
- package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.d.ts +1 -0
- package/dist/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-backend-wrapper.js +2 -2
- package/dist/src/functions/wirings/channels/pikku-channels.d.ts +1 -0
- package/dist/src/functions/wirings/channels/pikku-channels.js +19 -0
- package/dist/src/functions/wirings/channels/pikku-command-channel-types.d.ts +1 -0
- package/dist/src/functions/wirings/channels/pikku-command-channel-types.js +19 -0
- package/dist/src/functions/wirings/channels/pikku-command-channels-map.d.ts +1 -0
- package/dist/src/functions/wirings/channels/pikku-command-channels-map.js +18 -0
- package/dist/src/functions/wirings/channels/pikku-command-channels.d.ts +1 -0
- package/dist/src/functions/wirings/channels/pikku-command-channels.js +20 -0
- package/dist/src/functions/wirings/channels/pikku-command-websocket-typed.d.ts +1 -0
- package/dist/src/functions/wirings/channels/pikku-command-websocket-typed.js +27 -0
- package/dist/src/functions/wirings/channels/serialize-channel-types.d.ts +4 -0
- package/dist/src/functions/wirings/channels/serialize-channel-types.js +94 -0
- package/dist/src/{wirings → functions/wirings}/channels/serialize-typed-channel-map.js +6 -3
- package/dist/src/functions/wirings/cli/pikku-command-cli-entry.d.ts +1 -0
- package/dist/src/functions/wirings/cli/pikku-command-cli-entry.js +123 -0
- package/dist/src/functions/wirings/cli/pikku-command-cli-types.d.ts +1 -0
- package/dist/src/functions/wirings/cli/pikku-command-cli-types.js +31 -0
- package/dist/src/functions/wirings/cli/pikku-command-cli.d.ts +1 -0
- package/dist/src/functions/wirings/cli/pikku-command-cli.js +22 -0
- package/dist/src/functions/wirings/cli/serialize-channel-cli-client.d.ts +11 -0
- package/dist/src/functions/wirings/cli/serialize-channel-cli-client.js +131 -0
- package/dist/src/functions/wirings/cli/serialize-channel-cli.d.ts +9 -0
- package/dist/src/functions/wirings/cli/serialize-channel-cli.js +67 -0
- package/dist/src/functions/wirings/cli/serialize-cli-types.d.ts +4 -0
- package/dist/src/functions/wirings/cli/serialize-cli-types.js +73 -0
- package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.d.ts +14 -0
- package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.js +51 -0
- package/dist/src/functions/wirings/fetch/index.d.ts +1 -0
- package/dist/src/functions/wirings/fetch/index.js +27 -0
- package/dist/src/functions/wirings/functions/pikku-command-function-types-split.d.ts +1 -0
- package/dist/src/functions/wirings/functions/pikku-command-function-types-split.js +33 -0
- package/dist/src/functions/wirings/functions/pikku-command-function-types.d.ts +1 -0
- package/dist/src/functions/wirings/functions/pikku-command-function-types.js +18 -0
- package/dist/src/functions/wirings/functions/pikku-command-functions.d.ts +1 -0
- package/dist/src/functions/wirings/functions/pikku-command-functions.js +26 -0
- package/dist/src/functions/wirings/functions/pikku-command-services.d.ts +2 -0
- package/dist/src/{wirings → functions/wirings}/functions/pikku-command-services.js +36 -29
- package/dist/src/functions/wirings/functions/pikku-function-types.d.ts +1 -0
- package/dist/src/functions/wirings/functions/pikku-function-types.js +18 -0
- package/dist/src/functions/wirings/functions/schemas.d.ts +4 -0
- package/dist/src/functions/wirings/functions/schemas.js +20 -0
- package/dist/src/{wirings → functions/wirings}/functions/serialize-function-imports.js +4 -21
- package/dist/src/functions/wirings/functions/serialize-function-types.d.ts +4 -0
- package/dist/src/functions/wirings/functions/serialize-function-types.js +443 -0
- package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.d.ts +4 -0
- package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.js +30 -0
- package/dist/src/{wirings → functions/wirings}/http/openapi-spec-generator.d.ts +4 -2
- package/dist/src/{wirings → functions/wirings}/http/openapi-spec-generator.js +2 -2
- package/dist/src/functions/wirings/http/pikku-command-http-map.d.ts +1 -0
- package/dist/src/functions/wirings/http/pikku-command-http-map.js +18 -0
- package/dist/src/functions/wirings/http/pikku-command-http-routes.d.ts +1 -0
- package/dist/src/functions/wirings/http/pikku-command-http-routes.js +20 -0
- package/dist/src/functions/wirings/http/pikku-command-http-types.d.ts +1 -0
- package/dist/src/functions/wirings/http/pikku-command-http-types.js +19 -0
- package/dist/src/functions/wirings/http/pikku-command-openapi.d.ts +1 -0
- package/dist/src/functions/wirings/http/pikku-command-openapi.js +37 -0
- package/dist/src/functions/wirings/http/pikku-http-routes.d.ts +1 -0
- package/dist/src/functions/wirings/http/pikku-http-routes.js +20 -0
- package/dist/src/functions/wirings/http/serialize-http-types.d.ts +4 -0
- package/dist/src/functions/wirings/http/serialize-http-types.js +89 -0
- package/dist/src/{wirings → functions/wirings}/http/serialize-typed-http-map.js +2 -2
- package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.d.ts +1 -0
- package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.js +23 -0
- package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.d.ts +1 -0
- package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.js +19 -0
- package/dist/src/functions/wirings/mcp/pikku-command-mcp.d.ts +1 -0
- package/dist/src/{wirings → functions/wirings}/mcp/pikku-command-mcp.js +17 -5
- package/dist/src/{wirings → functions/wirings}/mcp/serialize-mcp-json.d.ts +2 -2
- package/dist/src/functions/wirings/mcp/serialize-mcp-types.d.ts +4 -0
- package/dist/src/functions/wirings/mcp/serialize-mcp-types.js +143 -0
- package/dist/src/functions/wirings/middleware/pikku-command-middleware.d.ts +1 -0
- package/dist/src/functions/wirings/middleware/pikku-command-middleware.js +36 -0
- package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.d.ts +8 -0
- package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.js +44 -0
- package/dist/src/functions/wirings/middleware/serialize-middleware-imports.d.ts +2 -0
- package/dist/src/functions/wirings/middleware/serialize-middleware-imports.js +43 -0
- package/dist/src/functions/wirings/permissions/pikku-command-permissions.d.ts +1 -0
- package/dist/src/functions/wirings/permissions/pikku-command-permissions.js +28 -0
- package/dist/src/functions/wirings/permissions/serialize-permissions-imports.d.ts +2 -0
- package/dist/src/functions/wirings/permissions/serialize-permissions-imports.js +43 -0
- package/dist/src/functions/wirings/queue/pikku-command-queue-map.d.ts +1 -0
- package/dist/src/functions/wirings/queue/pikku-command-queue-map.js +18 -0
- package/dist/src/functions/wirings/queue/pikku-command-queue-service.d.ts +1 -0
- package/dist/src/functions/wirings/queue/pikku-command-queue-service.js +27 -0
- package/dist/src/functions/wirings/queue/pikku-command-queue-types.d.ts +1 -0
- package/dist/src/functions/wirings/queue/pikku-command-queue-types.js +19 -0
- package/dist/src/functions/wirings/queue/pikku-command-queue.d.ts +1 -0
- package/dist/src/functions/wirings/queue/pikku-command-queue.js +21 -0
- package/dist/src/functions/wirings/queue/pikku-queue-map.d.ts +1 -0
- package/dist/src/functions/wirings/queue/pikku-queue-map.js +18 -0
- package/dist/src/functions/wirings/queue/pikku-queue.d.ts +1 -0
- package/dist/src/functions/wirings/queue/pikku-queue.js +21 -0
- package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-map.js +2 -2
- package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-meta.d.ts +1 -1
- package/dist/src/functions/wirings/queue/serialize-queue-types.d.ts +4 -0
- package/dist/src/functions/wirings/queue/serialize-queue-types.js +30 -0
- package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.d.ts +1 -0
- package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.js +27 -0
- package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.d.ts +2 -0
- package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.js +32 -0
- package/dist/src/functions/wirings/rpc/pikku-command-rpc.d.ts +1 -0
- package/dist/src/functions/wirings/rpc/pikku-command-rpc.js +20 -0
- package/dist/src/{wirings → functions/wirings}/rpc/serialize-typed-rpc-map.js +2 -2
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.d.ts +1 -0
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.js +19 -0
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.d.ts +1 -0
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.js +21 -0
- package/dist/src/functions/wirings/scheduler/serialize-scheduler-types.d.ts +4 -0
- package/dist/src/functions/wirings/scheduler/serialize-scheduler-types.js +28 -0
- package/dist/src/middleware/log-command-info-and-time.d.ts +13 -0
- package/dist/src/middleware/log-command-info-and-time.js +15 -0
- package/dist/src/services/cli-logger-forwarder.service.d.ts +30 -0
- package/dist/src/services/cli-logger-forwarder.service.js +64 -0
- package/dist/src/services/cli-logger.service.d.ts +23 -0
- package/dist/src/services/cli-logger.service.js +77 -0
- package/dist/src/services.d.ts +20 -0
- package/dist/src/services.js +162 -0
- package/dist/src/utils/check-required-types.d.ts +10 -0
- package/dist/src/utils/check-required-types.js +31 -0
- package/dist/src/utils/custom-types-generator.d.ts +2 -0
- package/dist/src/utils/custom-types-generator.js +43 -0
- package/dist/src/utils/file-import-path.d.ts +1 -0
- package/dist/src/utils/file-import-path.js +43 -0
- package/dist/src/utils/file-imports-serializer.d.ts +1 -0
- package/dist/src/utils/file-imports-serializer.js +13 -0
- package/dist/src/utils/file-writer.d.ts +9 -0
- package/dist/src/utils/file-writer.js +50 -0
- package/dist/src/utils/generate-bootstrap-file.d.ts +3 -0
- package/dist/src/utils/generate-bootstrap-file.js +21 -0
- package/dist/src/utils/get-cli-version.d.ts +5 -0
- package/dist/src/utils/get-cli-version.js +27 -0
- package/dist/src/utils/pikku-cli-config.d.ts +4 -0
- package/dist/src/utils/pikku-cli-config.js +224 -0
- package/dist/src/utils/pikku-files-and-methods.d.ts +21 -0
- package/dist/src/utils/pikku-files-and-methods.js +70 -0
- package/dist/src/{schema-generator.d.ts → utils/schema-generator.d.ts} +1 -1
- package/dist/src/{schema-generator.js → utils/schema-generator.js} +4 -3
- package/dist/src/{serialize-import-map.js → utils/serialize-import-map.js} +1 -4
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -11
- package/pikku.config.json +26 -0
- package/src/cli.wiring.ts +102 -0
- package/src/functions/commands/all.ts +153 -0
- package/src/functions/commands/watch.ts +58 -0
- package/src/functions/runtimes/nextjs/pikku-command-nextjs.ts +111 -0
- package/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-backend-wrapper.ts +2 -2
- package/src/functions/wirings/channels/pikku-channels.ts +35 -0
- package/src/functions/wirings/channels/pikku-command-channel-types.ts +25 -0
- package/src/functions/wirings/channels/pikku-command-channels-map.ts +26 -0
- package/src/functions/wirings/channels/pikku-command-channels.ts +40 -0
- package/src/functions/wirings/channels/pikku-command-websocket-typed.ts +37 -0
- package/src/functions/wirings/channels/serialize-channel-types.ts +94 -0
- package/src/{wirings → functions/wirings}/channels/serialize-typed-channel-map.ts +6 -3
- package/src/functions/wirings/cli/pikku-command-cli-entry.ts +216 -0
- package/src/functions/wirings/cli/pikku-command-cli-types.ts +48 -0
- package/src/functions/wirings/cli/pikku-command-cli.ts +39 -0
- package/src/functions/wirings/cli/serialize-channel-cli-client.ts +171 -0
- package/src/functions/wirings/cli/serialize-channel-cli.ts +102 -0
- package/src/functions/wirings/cli/serialize-cli-types.ts +79 -0
- package/src/functions/wirings/cli/serialize-local-cli-bootstrap.ts +80 -0
- package/src/functions/wirings/fetch/index.ts +36 -0
- package/src/functions/wirings/functions/pikku-command-function-types-split.ts +60 -0
- package/src/functions/wirings/functions/pikku-command-function-types.ts +43 -0
- package/src/functions/wirings/functions/pikku-command-functions.ts +59 -0
- package/src/functions/wirings/functions/pikku-command-services.ts +111 -0
- package/src/functions/wirings/functions/pikku-function-types.ts +43 -0
- package/src/functions/wirings/functions/schemas.ts +45 -0
- package/src/{wirings → functions/wirings}/functions/serialize-function-imports.ts +4 -30
- package/src/functions/wirings/functions/serialize-function-types.ts +453 -0
- package/src/functions/wirings/functions/serialize-pikku-types-hub.ts +38 -0
- package/src/{wirings → functions/wirings}/http/openapi-spec-generator.ts +5 -2
- package/src/functions/wirings/http/pikku-command-http-map.ts +27 -0
- package/src/functions/wirings/http/pikku-command-http-routes.ts +36 -0
- package/src/functions/wirings/http/pikku-command-http-types.ts +25 -0
- package/src/functions/wirings/http/pikku-command-openapi.ts +62 -0
- package/src/functions/wirings/http/pikku-http-routes.ts +35 -0
- package/src/functions/wirings/http/serialize-http-types.ts +89 -0
- package/src/{wirings → functions/wirings}/http/serialize-typed-http-map.ts +2 -2
- package/src/functions/wirings/mcp/pikku-command-mcp-json.ts +33 -0
- package/src/functions/wirings/mcp/pikku-command-mcp-types.ts +25 -0
- package/src/{wirings → functions/wirings}/mcp/pikku-command-mcp.ts +50 -46
- package/src/{wirings → functions/wirings}/mcp/serialize-mcp-json.ts +2 -2
- package/src/functions/wirings/mcp/serialize-mcp-types.ts +143 -0
- package/src/functions/wirings/middleware/pikku-command-middleware.ts +63 -0
- package/src/functions/wirings/middleware/serialize-middleware-groups-meta.ts +55 -0
- package/src/functions/wirings/middleware/serialize-middleware-imports.ts +78 -0
- package/src/functions/wirings/permissions/pikku-command-permissions.ts +49 -0
- package/src/functions/wirings/permissions/serialize-permissions-imports.test.ts +274 -0
- package/src/functions/wirings/permissions/serialize-permissions-imports.ts +78 -0
- package/src/functions/wirings/queue/pikku-command-queue-map.ts +26 -0
- package/src/functions/wirings/queue/pikku-command-queue-service.ts +37 -0
- package/src/functions/wirings/queue/pikku-command-queue-types.ts +25 -0
- package/src/functions/wirings/queue/pikku-command-queue.ts +41 -0
- package/src/functions/wirings/queue/pikku-queue-map.ts +26 -0
- package/src/functions/wirings/queue/pikku-queue.ts +41 -0
- package/src/{wirings → functions/wirings}/queue/serialize-queue-map.ts +2 -2
- package/src/{wirings → functions/wirings}/queue/serialize-queue-meta.ts +1 -1
- package/src/functions/wirings/queue/serialize-queue-types.ts +30 -0
- package/src/functions/wirings/rpc/pikku-command-rpc-client.ts +35 -0
- package/src/functions/wirings/rpc/pikku-command-rpc-map.ts +48 -0
- package/src/functions/wirings/rpc/pikku-command-rpc.ts +26 -0
- package/src/{wirings → functions/wirings}/rpc/serialize-typed-rpc-map.ts +2 -2
- package/src/functions/wirings/scheduler/pikku-command-scheduler-types.ts +25 -0
- package/src/functions/wirings/scheduler/pikku-command-scheduler.ts +41 -0
- package/src/functions/wirings/scheduler/serialize-scheduler-types.ts +28 -0
- package/src/middleware/log-command-info-and-time.ts +35 -0
- package/src/services/cli-logger-forwarder.service.ts +90 -0
- package/src/services/cli-logger.service.ts +93 -0
- package/src/services.ts +240 -0
- package/src/utils/check-required-types.ts +53 -0
- package/src/utils/custom-types-generator.ts +55 -0
- package/src/{utils.test.ts → utils/file-import-path.test.ts} +1 -1
- package/src/utils/file-import-path.ts +53 -0
- package/src/utils/file-imports-serializer.ts +25 -0
- package/src/utils/file-writer.ts +72 -0
- package/src/utils/generate-bootstrap-file.ts +43 -0
- package/src/utils/get-cli-version.ts +28 -0
- package/src/utils/pikku-cli-config.ts +327 -0
- package/src/utils/pikku-files-and-methods.ts +148 -0
- package/src/{schema-generator.ts → utils/schema-generator.ts} +10 -4
- package/src/{serialize-import-map.ts → utils/serialize-import-map.ts} +1 -5
- package/tsconfig.json +2 -2
- package/types/application-types.d.ts +23 -0
- package/types/config.d.ts +204 -0
- package/bin/pikku-all.ts +0 -349
- package/bin/pikku-fetch.ts +0 -27
- package/bin/pikku-nextjs.ts +0 -44
- package/bin/pikku-openapi.ts +0 -31
- package/bin/pikku-queue-service.ts +0 -28
- package/bin/pikku-rpc.ts +0 -28
- package/bin/pikku-schemas.ts +0 -31
- package/bin/pikku-websocket.ts +0 -28
- package/dist/bin/pikku-all.d.ts +0 -4
- package/dist/bin/pikku-all.js +0 -194
- package/dist/bin/pikku-fetch.d.ts +0 -4
- package/dist/bin/pikku-fetch.js +0 -19
- package/dist/bin/pikku-nextjs.d.ts +0 -4
- package/dist/bin/pikku-nextjs.js +0 -24
- package/dist/bin/pikku-openapi.d.ts +0 -2
- package/dist/bin/pikku-openapi.js +0 -19
- package/dist/bin/pikku-queue-service.d.ts +0 -4
- package/dist/bin/pikku-queue-service.js +0 -19
- package/dist/bin/pikku-rpc.d.ts +0 -4
- package/dist/bin/pikku-rpc.js +0 -19
- package/dist/bin/pikku-schemas.d.ts +0 -2
- package/dist/bin/pikku-schemas.js +0 -21
- package/dist/bin/pikku-websocket.d.ts +0 -4
- package/dist/bin/pikku-websocket.js +0 -19
- package/dist/src/inspector-glob.d.ts +0 -2
- package/dist/src/inspector-glob.js +0 -12
- package/dist/src/pikku-cli-config.d.ts +0 -56
- package/dist/src/pikku-cli-config.js +0 -203
- package/dist/src/pikku-command-schemas.d.ts +0 -2
- package/dist/src/pikku-command-schemas.js +0 -8
- package/dist/src/runtimes/nextjs/pikku-command-nextjs.d.ts +0 -2
- package/dist/src/runtimes/nextjs/serialize-nextjs-backend-wrapper.d.ts +0 -1
- package/dist/src/schemas.d.ts +0 -2
- package/dist/src/schemas.js +0 -8
- package/dist/src/serialize-pikku-types.d.ts +0 -4
- package/dist/src/serialize-pikku-types.js +0 -605
- package/dist/src/types.d.ts +0 -5
- package/dist/src/utils.d.ts +0 -60
- package/dist/src/utils.js +0 -248
- package/dist/src/wirings/channels/pikku-channels.d.ts +0 -2
- package/dist/src/wirings/channels/pikku-channels.js +0 -9
- package/dist/src/wirings/channels/pikku-command-channels-map.d.ts +0 -2
- package/dist/src/wirings/channels/pikku-command-channels-map.js +0 -8
- package/dist/src/wirings/channels/pikku-command-channels.d.ts +0 -2
- package/dist/src/wirings/channels/pikku-command-channels.js +0 -9
- package/dist/src/wirings/channels/pikku-command-websocket-typed.d.ts +0 -2
- package/dist/src/wirings/channels/pikku-command-websocket-typed.js +0 -15
- package/dist/src/wirings/fetch/index.d.ts +0 -2
- package/dist/src/wirings/fetch/index.js +0 -12
- package/dist/src/wirings/functions/pikku-command-function-types.d.ts +0 -2
- package/dist/src/wirings/functions/pikku-command-function-types.js +0 -13
- package/dist/src/wirings/functions/pikku-command-functions.d.ts +0 -2
- package/dist/src/wirings/functions/pikku-command-functions.js +0 -14
- package/dist/src/wirings/functions/pikku-command-services.d.ts +0 -3
- package/dist/src/wirings/functions/pikku-function-types.d.ts +0 -2
- package/dist/src/wirings/functions/pikku-function-types.js +0 -13
- package/dist/src/wirings/http/pikku-command-http-map.d.ts +0 -2
- package/dist/src/wirings/http/pikku-command-http-map.js +0 -8
- package/dist/src/wirings/http/pikku-command-http-routes.d.ts +0 -2
- package/dist/src/wirings/http/pikku-command-http-routes.js +0 -9
- package/dist/src/wirings/http/pikku-command-openapi.d.ts +0 -2
- package/dist/src/wirings/http/pikku-command-openapi.js +0 -20
- package/dist/src/wirings/http/pikku-http-routes.d.ts +0 -2
- package/dist/src/wirings/http/pikku-http-routes.js +0 -9
- package/dist/src/wirings/mcp/pikku-command-mcp-json.d.ts +0 -2
- package/dist/src/wirings/mcp/pikku-command-mcp-json.js +0 -13
- package/dist/src/wirings/mcp/pikku-command-mcp.d.ts +0 -2
- package/dist/src/wirings/queue/pikku-command-queue-map.d.ts +0 -2
- package/dist/src/wirings/queue/pikku-command-queue-map.js +0 -8
- package/dist/src/wirings/queue/pikku-command-queue-service.d.ts +0 -2
- package/dist/src/wirings/queue/pikku-command-queue-service.js +0 -15
- package/dist/src/wirings/queue/pikku-command-queue.d.ts +0 -2
- package/dist/src/wirings/queue/pikku-command-queue.js +0 -10
- package/dist/src/wirings/queue/pikku-queue-map.d.ts +0 -2
- package/dist/src/wirings/queue/pikku-queue-map.js +0 -8
- package/dist/src/wirings/queue/pikku-queue.d.ts +0 -2
- package/dist/src/wirings/queue/pikku-queue.js +0 -10
- package/dist/src/wirings/rpc/pikku-command-rpc-client.d.ts +0 -2
- package/dist/src/wirings/rpc/pikku-command-rpc-client.js +0 -15
- package/dist/src/wirings/rpc/pikku-command-rpc-map.d.ts +0 -3
- package/dist/src/wirings/rpc/pikku-command-rpc-map.js +0 -14
- package/dist/src/wirings/rpc/pikku-command-rpc.d.ts +0 -2
- package/dist/src/wirings/rpc/pikku-command-rpc.js +0 -8
- package/dist/src/wirings/scheduler/pikku-command-scheduler.d.ts +0 -2
- package/dist/src/wirings/scheduler/pikku-command-scheduler.js +0 -10
- package/src/inspector-glob.ts +0 -30
- package/src/pikku-cli-config.ts +0 -387
- package/src/pikku-command-schemas.ts +0 -35
- package/src/runtimes/nextjs/pikku-command-nextjs.ts +0 -110
- package/src/schemas.ts +0 -35
- package/src/serialize-pikku-types.ts +0 -613
- package/src/types.ts +0 -16
- package/src/utils.ts +0 -420
- package/src/wirings/channels/pikku-channels.ts +0 -41
- package/src/wirings/channels/pikku-command-channels-map.ts +0 -26
- package/src/wirings/channels/pikku-command-channels.ts +0 -39
- package/src/wirings/channels/pikku-command-websocket-typed.ts +0 -36
- package/src/wirings/fetch/index.ts +0 -33
- package/src/wirings/functions/pikku-command-function-types.ts +0 -53
- package/src/wirings/functions/pikku-command-functions.ts +0 -48
- package/src/wirings/functions/pikku-command-services.ts +0 -125
- package/src/wirings/functions/pikku-function-types.ts +0 -52
- package/src/wirings/http/pikku-command-http-map.ts +0 -27
- package/src/wirings/http/pikku-command-http-routes.ts +0 -40
- package/src/wirings/http/pikku-command-openapi.ts +0 -55
- package/src/wirings/http/pikku-http-routes.ts +0 -40
- package/src/wirings/mcp/pikku-command-mcp-json.ts +0 -33
- package/src/wirings/queue/pikku-command-queue-map.ts +0 -26
- package/src/wirings/queue/pikku-command-queue-service.ts +0 -36
- package/src/wirings/queue/pikku-command-queue.ts +0 -45
- package/src/wirings/queue/pikku-queue-map.ts +0 -26
- package/src/wirings/queue/pikku-queue.ts +0 -43
- package/src/wirings/rpc/pikku-command-rpc-client.ts +0 -35
- package/src/wirings/rpc/pikku-command-rpc-map.ts +0 -49
- package/src/wirings/rpc/pikku-command-rpc.ts +0 -24
- package/src/wirings/scheduler/pikku-command-scheduler.ts +0 -43
- /package/dist/{src/types.js → .pikku/channel/pikku-channels-meta.gen.d.ts} +0 -0
- /package/dist/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-http-wrapper.d.ts +0 -0
- /package/dist/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-http-wrapper.js +0 -0
- /package/dist/src/{wirings → functions/wirings}/channels/serialize-typed-channel-map.d.ts +0 -0
- /package/dist/src/{wirings → functions/wirings}/channels/serialize-websocket-wrapper.d.ts +0 -0
- /package/dist/src/{wirings → functions/wirings}/channels/serialize-websocket-wrapper.js +0 -0
- /package/dist/src/{wirings → functions/wirings}/functions/serialize-function-imports.d.ts +0 -0
- /package/dist/src/{wirings → functions/wirings}/http/serialize-fetch-wrapper.d.ts +0 -0
- /package/dist/src/{wirings → functions/wirings}/http/serialize-fetch-wrapper.js +0 -0
- /package/dist/src/{wirings → functions/wirings}/http/serialize-typed-http-map.d.ts +0 -0
- /package/dist/src/{wirings → functions/wirings}/mcp/serialize-mcp-json.js +0 -0
- /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-map.d.ts +0 -0
- /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-meta.js +0 -0
- /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-wrapper.d.ts +0 -0
- /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-wrapper.js +0 -0
- /package/dist/src/{wirings → functions/wirings}/rpc/serialize-rpc-wrapper.d.ts +0 -0
- /package/dist/src/{wirings → functions/wirings}/rpc/serialize-rpc-wrapper.js +0 -0
- /package/dist/src/{wirings → functions/wirings}/rpc/serialize-typed-rpc-map.d.ts +0 -0
- /package/dist/src/{wirings → functions/wirings}/scheduler/serialize-scheduler-meta.d.ts +0 -0
- /package/dist/src/{wirings → functions/wirings}/scheduler/serialize-scheduler-meta.js +0 -0
- /package/dist/src/{serialize-import-map.d.ts → utils/serialize-import-map.d.ts} +0 -0
- /package/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-http-wrapper.ts +0 -0
- /package/src/{wirings → functions/wirings}/channels/serialize-websocket-wrapper.ts +0 -0
- /package/src/{wirings → functions/wirings}/http/serialize-fetch-wrapper.ts +0 -0
- /package/src/{wirings → functions/wirings}/queue/serialize-queue-wrapper.ts +0 -0
- /package/src/{wirings → functions/wirings}/rpc/serialize-rpc-wrapper.ts +0 -0
- /package/src/{wirings → functions/wirings}/scheduler/serialize-scheduler-meta.ts +0 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { existsSync } from 'fs';
|
|
2
|
+
import { pikkuVoidFunc } from '../../../.pikku/pikku-types.gen.js';
|
|
3
|
+
import { getFileImportRelativePath } from '../../utils/file-import-path.js';
|
|
4
|
+
import { writeFileInDir } from '../../utils/file-writer.js';
|
|
5
|
+
export const all = pikkuVoidFunc({
|
|
6
|
+
func: async ({ logger, config, rpc, getInspectorState }) => {
|
|
7
|
+
const allImports = [];
|
|
8
|
+
let typesDeclarationFileExists = true;
|
|
9
|
+
if (!existsSync(config.typesDeclarationFile)) {
|
|
10
|
+
typesDeclarationFileExists = false;
|
|
11
|
+
}
|
|
12
|
+
await rpc.invoke('pikkuFunctionTypes', null);
|
|
13
|
+
// This is needed since the wireHTTP function will add the routes to the visitState
|
|
14
|
+
if (!typesDeclarationFileExists) {
|
|
15
|
+
logger.info(`• Type file first created, inspecting again...\x1b[0m`);
|
|
16
|
+
await getInspectorState(true);
|
|
17
|
+
}
|
|
18
|
+
// Generate wiring-specific type files for tree-shaking
|
|
19
|
+
await rpc.invoke('pikkuFunctionTypesSplit', null);
|
|
20
|
+
await rpc.invoke('pikkuHTTPTypes', null);
|
|
21
|
+
await rpc.invoke('pikkuChannelTypes', null);
|
|
22
|
+
await rpc.invoke('pikkuSchedulerTypes', null);
|
|
23
|
+
await rpc.invoke('pikkuQueueTypes', null);
|
|
24
|
+
await rpc.invoke('pikkuMCPTypes', null);
|
|
25
|
+
await rpc.invoke('pikkuCLITypes', null);
|
|
26
|
+
const hasFunctionRegistrations = await rpc.invoke('pikkuFunctions', null);
|
|
27
|
+
// Generate and register middleware
|
|
28
|
+
const middleware = await rpc.invoke('pikkuMiddleware', null);
|
|
29
|
+
// Middleware must be imported before functions meta to ensure registration happens first
|
|
30
|
+
if (middleware) {
|
|
31
|
+
allImports.push(config.middlewareFile);
|
|
32
|
+
}
|
|
33
|
+
// Generate and register permissions
|
|
34
|
+
const permissions = await rpc.invoke('pikkuPermissions', null);
|
|
35
|
+
// Permissions must be imported before functions meta to ensure registration happens first
|
|
36
|
+
if (permissions) {
|
|
37
|
+
allImports.push(config.permissionsFile);
|
|
38
|
+
}
|
|
39
|
+
// Always import functions meta (needed for all function metadata)
|
|
40
|
+
allImports.push(config.functionsMetaFile);
|
|
41
|
+
// Only import functionsFile if it was generated (has internal/external RPCs)
|
|
42
|
+
if (hasFunctionRegistrations) {
|
|
43
|
+
allImports.push(config.functionsFile);
|
|
44
|
+
}
|
|
45
|
+
// Generate services map
|
|
46
|
+
await rpc.invoke('pikkuServices', null);
|
|
47
|
+
const hasInternalRPCs = await rpc.invoke('pikkuRPC', null);
|
|
48
|
+
await rpc.invoke('pikkuRPCInternalMap', null);
|
|
49
|
+
await rpc.invoke('pikkuRPCExposedMap', null);
|
|
50
|
+
await rpc.invoke('pikkuRPCClient', null);
|
|
51
|
+
if (hasInternalRPCs) {
|
|
52
|
+
allImports.push(config.rpcInternalWiringMetaFile);
|
|
53
|
+
}
|
|
54
|
+
const schemas = await rpc.invoke('pikkuSchemas', null);
|
|
55
|
+
if (schemas) {
|
|
56
|
+
allImports.push(`${config.schemaDirectory}/register.gen.ts`);
|
|
57
|
+
}
|
|
58
|
+
// Generate HTTP
|
|
59
|
+
const http = await rpc.invoke('pikkuHTTP', null);
|
|
60
|
+
if (http) {
|
|
61
|
+
await rpc.invoke('pikkuHTTPMap', null);
|
|
62
|
+
await rpc.invoke('pikkuFetch', null);
|
|
63
|
+
allImports.push(config.httpWiringMetaFile, config.httpWiringsFile);
|
|
64
|
+
}
|
|
65
|
+
// Generate Scheduler
|
|
66
|
+
const scheduler = await rpc.invoke('pikkuScheduler', null);
|
|
67
|
+
if (scheduler) {
|
|
68
|
+
allImports.push(config.schedulersWiringMetaFile, config.schedulersWiringFile);
|
|
69
|
+
}
|
|
70
|
+
// Generate Queues
|
|
71
|
+
const queues = await rpc.invoke('pikkuQueue', null);
|
|
72
|
+
if (queues) {
|
|
73
|
+
await rpc.invoke('pikkuQueueMap', null);
|
|
74
|
+
await rpc.invoke('pikkuQueueService', null);
|
|
75
|
+
allImports.push(config.queueWorkersWiringMetaFile, config.queueWorkersWiringFile);
|
|
76
|
+
}
|
|
77
|
+
// Generate Channels
|
|
78
|
+
const channels = await rpc.invoke('pikkuChannels', null);
|
|
79
|
+
if (channels) {
|
|
80
|
+
await rpc.invoke('pikkuChannelsMap', null);
|
|
81
|
+
await rpc.invoke('pikkuWebSocketTyped', null);
|
|
82
|
+
allImports.push(config.channelsWiringMetaFile, config.channelsWiringFile);
|
|
83
|
+
}
|
|
84
|
+
// Generate MCP
|
|
85
|
+
const mcp = await rpc.invoke('pikkuMCP', null);
|
|
86
|
+
if (mcp) {
|
|
87
|
+
await rpc.invoke('pikkuMCPJSON', null);
|
|
88
|
+
allImports.push(config.mcpWiringsMetaFile, config.mcpWiringsFile);
|
|
89
|
+
}
|
|
90
|
+
// Generate CLI
|
|
91
|
+
const cli = await rpc.invoke('pikkuCLI', null);
|
|
92
|
+
if (cli) {
|
|
93
|
+
await rpc.invoke('pikkuCLIEntry', null);
|
|
94
|
+
allImports.push(config.cliWiringMetaFile, config.cliWiringsFile);
|
|
95
|
+
}
|
|
96
|
+
if (config.nextBackendFile || config.nextHTTPFile) {
|
|
97
|
+
await rpc.invoke('pikkuNext', null);
|
|
98
|
+
}
|
|
99
|
+
if (config.openAPI) {
|
|
100
|
+
logger.info(`• OpenAPI requires a reinspection to pickup new generated types..`);
|
|
101
|
+
await getInspectorState(true);
|
|
102
|
+
await rpc.invoke('pikkuOpenAPI', null);
|
|
103
|
+
}
|
|
104
|
+
// Generate main bootstrap file (pass all imports directly since this is the main file)
|
|
105
|
+
await writeFileInDir(logger, config.bootstrapFile, allImports
|
|
106
|
+
.map((to) => `import '${getFileImportRelativePath(config.bootstrapFile, to, config.packageMappings)}'`)
|
|
107
|
+
.sort((to) => (to.includes('meta') ? -1 : 1)) // Ensure meta files are at the top
|
|
108
|
+
.join('\n'));
|
|
109
|
+
// Check for critical errors and exit if any were logged
|
|
110
|
+
if (logger.hasCriticalErrors()) {
|
|
111
|
+
process.exit(1);
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const watch: any;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { pikkuVoidFunc } from '../../../.pikku/pikku-types.gen.js';
|
|
2
|
+
import chokidar from 'chokidar';
|
|
3
|
+
export const watch = pikkuVoidFunc({
|
|
4
|
+
func: async ({ logger, config, rpc }) => {
|
|
5
|
+
const configWatcher = chokidar.watch(config.srcDirectories, {
|
|
6
|
+
ignoreInitial: true,
|
|
7
|
+
ignored: /.*\.gen\.tsx?/,
|
|
8
|
+
});
|
|
9
|
+
let watcher = new chokidar.FSWatcher({});
|
|
10
|
+
const generatorWatcher = () => {
|
|
11
|
+
watcher.close();
|
|
12
|
+
logger.info(`• Watching directories: \n - ${config.srcDirectories.join('\n - ')}`);
|
|
13
|
+
watcher = chokidar.watch(config.srcDirectories, {
|
|
14
|
+
ignoreInitial: true,
|
|
15
|
+
ignored: /.*\.gen\.ts/,
|
|
16
|
+
});
|
|
17
|
+
watcher.on('ready', async () => {
|
|
18
|
+
const handle = async () => {
|
|
19
|
+
try {
|
|
20
|
+
const start = Date.now();
|
|
21
|
+
await rpc.invoke('all', null);
|
|
22
|
+
logger.info({
|
|
23
|
+
message: `✓ Generated in ${Date.now() - start}ms`,
|
|
24
|
+
type: 'timing',
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
logger.error(err);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
await handle();
|
|
32
|
+
let timeout;
|
|
33
|
+
const deduped = (_file) => {
|
|
34
|
+
if (timeout) {
|
|
35
|
+
clearTimeout(timeout);
|
|
36
|
+
}
|
|
37
|
+
timeout = setTimeout(handle, 10);
|
|
38
|
+
};
|
|
39
|
+
watcher.on('change', deduped);
|
|
40
|
+
watcher.on('add', deduped);
|
|
41
|
+
watcher.on('unlink', deduped);
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
configWatcher.on('ready', generatorWatcher);
|
|
45
|
+
configWatcher.on('change', generatorWatcher);
|
|
46
|
+
},
|
|
47
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const pikkuNext: any;
|
|
@@ -1,29 +1,44 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
|
|
2
|
+
import { checkRequiredTypes } from '../../../utils/check-required-types.js';
|
|
3
|
+
import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
4
|
+
import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
5
|
+
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
2
6
|
import { serializeNextJsBackendWrapper as serializeNextBackendWrapper } from './serialize-nextjs-backend-wrapper.js';
|
|
3
7
|
import { serializeNextJsHTTPWrapper as serializeNextHTTPWrapper } from './serialize-nextjs-http-wrapper.js';
|
|
4
|
-
export const pikkuNext =
|
|
5
|
-
|
|
6
|
-
nextBackendFile
|
|
7
|
-
|
|
8
|
-
], async () => {
|
|
8
|
+
export const pikkuNext = pikkuSessionlessFunc({
|
|
9
|
+
func: async ({ logger, config, getInspectorState }) => {
|
|
10
|
+
const { nextBackendFile, nextHTTPFile, httpMapDeclarationFile, packageMappings, fetchFile, } = config;
|
|
11
|
+
// If both files are undefined, clean up any existing files and return
|
|
9
12
|
if (!nextBackendFile && !nextHTTPFile) {
|
|
10
|
-
|
|
13
|
+
logger.info({
|
|
14
|
+
message: 'Skipping generating nextjs wrapper since nextjs outfile is not defined.',
|
|
15
|
+
type: 'skip',
|
|
16
|
+
});
|
|
17
|
+
return;
|
|
11
18
|
}
|
|
19
|
+
const visitState = await getInspectorState();
|
|
12
20
|
if (nextHTTPFile && !fetchFile) {
|
|
13
21
|
throw new Error('fetchFile is required in pikku config in order for nextJS http wrapper to work');
|
|
14
22
|
}
|
|
15
23
|
if (nextBackendFile) {
|
|
16
|
-
|
|
24
|
+
// Check for required types
|
|
25
|
+
checkRequiredTypes(visitState.filesAndMethodsErrors, {
|
|
17
26
|
config: true,
|
|
18
27
|
singletonServicesFactory: true,
|
|
19
28
|
sessionServicesFactory: true,
|
|
20
29
|
});
|
|
30
|
+
const { pikkuConfigFactory, singletonServicesFactory, sessionServicesFactory, } = visitState.filesAndMethods;
|
|
31
|
+
if (!pikkuConfigFactory ||
|
|
32
|
+
!singletonServicesFactory ||
|
|
33
|
+
!sessionServicesFactory) {
|
|
34
|
+
throw new Error('Required types not found');
|
|
35
|
+
}
|
|
21
36
|
const pikkuConfigImport = `import { ${pikkuConfigFactory.variable} as createConfig } from '${getFileImportRelativePath(nextBackendFile, pikkuConfigFactory.file, packageMappings)}'`;
|
|
22
37
|
const singletonServicesImport = `import { ${singletonServicesFactory.variable} as createSingletonServices } from '${getFileImportRelativePath(nextBackendFile, singletonServicesFactory.file, packageMappings)}'`;
|
|
23
38
|
const sessionServicesImport = `import { ${sessionServicesFactory.variable} as createSessionServices } from '${getFileImportRelativePath(nextBackendFile, sessionServicesFactory.file, packageMappings)}'`;
|
|
24
|
-
const
|
|
39
|
+
const bootstrapPath = getFileImportRelativePath(nextBackendFile, config.bootstrapFile, packageMappings);
|
|
25
40
|
const routesMapDeclarationPath = getFileImportRelativePath(nextBackendFile, httpMapDeclarationFile, packageMappings);
|
|
26
|
-
const content = serializeNextBackendWrapper(
|
|
41
|
+
const content = serializeNextBackendWrapper(bootstrapPath, routesMapDeclarationPath, pikkuConfigImport, singletonServicesImport, sessionServicesImport);
|
|
27
42
|
await writeFileInDir(logger, nextBackendFile, content);
|
|
28
43
|
}
|
|
29
44
|
if (nextHTTPFile && fetchFile) {
|
|
@@ -32,5 +47,11 @@ export const pikkuNext = async (logger, { nextBackendFile, nextHTTPFile, httpMap
|
|
|
32
47
|
const content = serializeNextHTTPWrapper(routesMapDeclarationPath, fetchPath);
|
|
33
48
|
await writeFileInDir(logger, nextHTTPFile, content);
|
|
34
49
|
}
|
|
35
|
-
}
|
|
36
|
-
|
|
50
|
+
},
|
|
51
|
+
middleware: [
|
|
52
|
+
logCommandInfoAndTime({
|
|
53
|
+
commandStart: 'Generating nextjs wrapper',
|
|
54
|
+
commandEnd: 'Generated nextjs wrapper',
|
|
55
|
+
}),
|
|
56
|
+
],
|
|
57
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const serializeNextJsBackendWrapper: (bootstrapPath: string, routesMapPath: string, configImport: string, singleServicesFactoryImport: string, sessionServicesImport: string) => string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const serializeNextJsBackendWrapper = (
|
|
1
|
+
export const serializeNextJsBackendWrapper = (bootstrapPath, routesMapPath, configImport, singleServicesFactoryImport, sessionServicesImport) => {
|
|
2
2
|
return `'server-only'
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -12,7 +12,7 @@ ${configImport}
|
|
|
12
12
|
${singleServicesFactoryImport}
|
|
13
13
|
${sessionServicesImport}
|
|
14
14
|
|
|
15
|
-
import '${
|
|
15
|
+
import '${bootstrapPath}'
|
|
16
16
|
|
|
17
17
|
let _pikku: PikkuNextJS | undefined
|
|
18
18
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const pikkuChannels: any;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { pikkuVoidFunc } from '../../../../.pikku/pikku-types.gen.js';
|
|
2
|
+
import { serializeFileImports } from '../../../utils/file-imports-serializer.js';
|
|
3
|
+
import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
4
|
+
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
5
|
+
export const pikkuChannels = pikkuVoidFunc({
|
|
6
|
+
func: async ({ logger, config, getInspectorState }) => {
|
|
7
|
+
const visitState = await getInspectorState();
|
|
8
|
+
const { channelsWiringFile, channelsWiringMetaFile, packageMappings } = config;
|
|
9
|
+
const { channels } = visitState;
|
|
10
|
+
await writeFileInDir(logger, channelsWiringFile, serializeFileImports('addChannel', channelsWiringFile, channels.files, packageMappings));
|
|
11
|
+
await writeFileInDir(logger, channelsWiringMetaFile, `import { pikkuState } from '@pikku/core'\npikkuState('channel', 'meta', ${JSON.stringify(channels.meta, null, 2)})`);
|
|
12
|
+
},
|
|
13
|
+
middleware: [
|
|
14
|
+
logCommandInfoAndTime({
|
|
15
|
+
commandStart: 'Finding Channels',
|
|
16
|
+
commandEnd: 'Found channels',
|
|
17
|
+
}),
|
|
18
|
+
],
|
|
19
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const pikkuChannelTypes: any;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
|
|
2
|
+
import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
3
|
+
import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
4
|
+
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
5
|
+
import { serializeChannelTypes } from './serialize-channel-types.js';
|
|
6
|
+
export const pikkuChannelTypes = pikkuSessionlessFunc({
|
|
7
|
+
func: async ({ logger, config }) => {
|
|
8
|
+
const { channelsTypesFile, functionTypesFile, packageMappings } = config;
|
|
9
|
+
const functionTypesImportPath = getFileImportRelativePath(channelsTypesFile, functionTypesFile, packageMappings);
|
|
10
|
+
const content = serializeChannelTypes(functionTypesImportPath);
|
|
11
|
+
await writeFileInDir(logger, channelsTypesFile, content);
|
|
12
|
+
},
|
|
13
|
+
middleware: [
|
|
14
|
+
logCommandInfoAndTime({
|
|
15
|
+
commandStart: 'Creating channel types',
|
|
16
|
+
commandEnd: 'Created channel types',
|
|
17
|
+
}),
|
|
18
|
+
],
|
|
19
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const pikkuChannelsMap: any;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
|
|
2
|
+
import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
3
|
+
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
4
|
+
import { serializeTypedChannelsMap } from './serialize-typed-channel-map.js';
|
|
5
|
+
export const pikkuChannelsMap = pikkuSessionlessFunc({
|
|
6
|
+
func: async ({ logger, config, getInspectorState }) => {
|
|
7
|
+
const state = await getInspectorState();
|
|
8
|
+
const { channelsMapDeclarationFile, packageMappings } = config;
|
|
9
|
+
const content = serializeTypedChannelsMap(channelsMapDeclarationFile, packageMappings, state.functions.typesMap, state.functions.meta, state.channels.meta);
|
|
10
|
+
await writeFileInDir(logger, channelsMapDeclarationFile, content);
|
|
11
|
+
},
|
|
12
|
+
middleware: [
|
|
13
|
+
logCommandInfoAndTime({
|
|
14
|
+
commandStart: 'Creating channels map',
|
|
15
|
+
commandEnd: 'Created channels map',
|
|
16
|
+
}),
|
|
17
|
+
],
|
|
18
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const pikkuChannels: any;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
|
|
2
|
+
import { serializeFileImports } from '../../../utils/file-imports-serializer.js';
|
|
3
|
+
import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
4
|
+
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
5
|
+
export const pikkuChannels = pikkuSessionlessFunc({
|
|
6
|
+
func: async ({ logger, config, getInspectorState }) => {
|
|
7
|
+
const visitState = await getInspectorState();
|
|
8
|
+
const { channelsWiringFile, channelsWiringMetaFile, packageMappings } = config;
|
|
9
|
+
const { channels } = visitState;
|
|
10
|
+
await writeFileInDir(logger, channelsWiringFile, serializeFileImports('addChannel', channelsWiringFile, channels.files, packageMappings));
|
|
11
|
+
await writeFileInDir(logger, channelsWiringMetaFile, `import { pikkuState } from '@pikku/core'\npikkuState('channel', 'meta', ${JSON.stringify(channels.meta, null, 2)})`);
|
|
12
|
+
return true;
|
|
13
|
+
},
|
|
14
|
+
middleware: [
|
|
15
|
+
logCommandInfoAndTime({
|
|
16
|
+
commandStart: 'Finding Channels',
|
|
17
|
+
commandEnd: 'Found channels',
|
|
18
|
+
}),
|
|
19
|
+
],
|
|
20
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const pikkuWebSocketTyped: any;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
|
|
2
|
+
import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
3
|
+
import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
4
|
+
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
5
|
+
import { serializeWebsocketWrapper } from './serialize-websocket-wrapper.js';
|
|
6
|
+
export const pikkuWebSocketTyped = pikkuSessionlessFunc({
|
|
7
|
+
func: async ({ logger, config }) => {
|
|
8
|
+
const { websocketFile, channelsMapDeclarationFile, packageMappings } = config;
|
|
9
|
+
// If websocketFile is not set, clean up any existing file and return
|
|
10
|
+
if (!websocketFile) {
|
|
11
|
+
logger.info({
|
|
12
|
+
message: "Skipping generating websocket wrapper since websocketFile isn't set in the pikku config.",
|
|
13
|
+
type: 'skip',
|
|
14
|
+
});
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const channelsMapDeclarationPath = getFileImportRelativePath(websocketFile, channelsMapDeclarationFile, packageMappings);
|
|
18
|
+
const content = [serializeWebsocketWrapper(channelsMapDeclarationPath)];
|
|
19
|
+
await writeFileInDir(logger, websocketFile, content.join('\n'));
|
|
20
|
+
},
|
|
21
|
+
middleware: [
|
|
22
|
+
logCommandInfoAndTime({
|
|
23
|
+
commandStart: 'Generating websocket wrapper',
|
|
24
|
+
commandEnd: 'Generated websocket wrapper',
|
|
25
|
+
}),
|
|
26
|
+
],
|
|
27
|
+
});
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates type definitions for WebSocket channel wirings
|
|
3
|
+
*/
|
|
4
|
+
export const serializeChannelTypes = (functionTypesImportPath) => {
|
|
5
|
+
return `/**
|
|
6
|
+
|
|
7
|
+
* Channel-specific type definitions for tree-shaking optimization
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { CoreChannel, wireChannel as wireChannelCore } from '@pikku/core/channel'
|
|
11
|
+
import { CorePikkuFunctionConfig } from '@pikku/core'
|
|
12
|
+
import { AssertHTTPWiringParams } from '@pikku/core/http'
|
|
13
|
+
import type { PikkuFunctionSessionless, PikkuPermission, PikkuMiddleware } from '${functionTypesImportPath}'
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Type definition for WebSocket channels with typed data exchange.
|
|
17
|
+
* Supports connection, disconnection, and message handling.
|
|
18
|
+
*
|
|
19
|
+
* @template ChannelData - Type of data exchanged through the channel
|
|
20
|
+
* @template Channel - String literal type for the channel name
|
|
21
|
+
*/
|
|
22
|
+
type ChannelWiring<ChannelData, Channel extends string> = CoreChannel<
|
|
23
|
+
ChannelData,
|
|
24
|
+
Channel,
|
|
25
|
+
CorePikkuFunctionConfig<PikkuFunctionSessionless<void, any, ChannelData>, PikkuPermission<void>, PikkuMiddleware>,
|
|
26
|
+
CorePikkuFunctionConfig<PikkuFunctionSessionless<void, void, ChannelData>, PikkuPermission<void>, PikkuMiddleware>,
|
|
27
|
+
CorePikkuFunctionConfig<PikkuFunctionSessionless<any, any, ChannelData>, PikkuPermission<any>, PikkuMiddleware>,
|
|
28
|
+
PikkuPermission,
|
|
29
|
+
PikkuMiddleware
|
|
30
|
+
>
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Creates a function that handles WebSocket channel connections.
|
|
34
|
+
* Called when a client connects to a channel.
|
|
35
|
+
*
|
|
36
|
+
* @template Out - Output type for connection response
|
|
37
|
+
* @param func - Function definition, either direct function or configuration object
|
|
38
|
+
* @returns The normalized configuration object
|
|
39
|
+
*/
|
|
40
|
+
export const pikkuChannelConnectionFunc = <Out = unknown>(
|
|
41
|
+
func:
|
|
42
|
+
| PikkuFunctionSessionless<void, Out, unknown>
|
|
43
|
+
| CorePikkuFunctionConfig<PikkuFunctionSessionless<void, Out, unknown>, PikkuPermission<void>, PikkuMiddleware>
|
|
44
|
+
) => {
|
|
45
|
+
return typeof func === 'function' ? { func } : func
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Creates a function that handles WebSocket channel disconnections.
|
|
50
|
+
* Called when a client disconnects from a channel.
|
|
51
|
+
*
|
|
52
|
+
* @param func - Function definition, either direct function or configuration object
|
|
53
|
+
* @returns The normalized configuration object
|
|
54
|
+
*/
|
|
55
|
+
export const pikkuChannelDisconnectionFunc = (
|
|
56
|
+
func:
|
|
57
|
+
| PikkuFunctionSessionless<void, void, unknown>
|
|
58
|
+
| CorePikkuFunctionConfig<PikkuFunctionSessionless<void, void, unknown>, PikkuPermission<void>, PikkuMiddleware>
|
|
59
|
+
) => {
|
|
60
|
+
return typeof func === 'function' ? { func } : func
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Creates a function that handles WebSocket channel messages.
|
|
65
|
+
* Called when a message is received on a channel.
|
|
66
|
+
* This is the same as pikkuSessionlessFunc but with ChannelData = unknown by default.
|
|
67
|
+
*
|
|
68
|
+
* @template In - Input type for channel messages
|
|
69
|
+
* @template Out - Output type for channel responses
|
|
70
|
+
* @param func - Function definition, either direct function or configuration object
|
|
71
|
+
* @returns The normalized configuration object
|
|
72
|
+
*/
|
|
73
|
+
export const pikkuChannelFunc = <In, Out = unknown>(
|
|
74
|
+
func:
|
|
75
|
+
| PikkuFunctionSessionless<In, Out, unknown>
|
|
76
|
+
| CorePikkuFunctionConfig<PikkuFunctionSessionless<In, Out, unknown>, PikkuPermission<In>, PikkuMiddleware>
|
|
77
|
+
) => {
|
|
78
|
+
return typeof func === 'function' ? { func } : func
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Registers a WebSocket channel with the Pikku framework.
|
|
83
|
+
*
|
|
84
|
+
* @template ChannelData - Type of data associated with the channel
|
|
85
|
+
* @template Channel - String literal type for the channel name
|
|
86
|
+
* @param channel - Channel definition with connection, disconnection, and message handlers
|
|
87
|
+
*/
|
|
88
|
+
export const wireChannel = <ChannelData, Channel extends string>(
|
|
89
|
+
channel: ChannelWiring<ChannelData, Channel> & AssertHTTPWiringParams<ChannelData, Channel>
|
|
90
|
+
) => {
|
|
91
|
+
wireChannelCore(channel as any) // TODO
|
|
92
|
+
}
|
|
93
|
+
`;
|
|
94
|
+
};
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import { serializeImportMap } from '
|
|
2
|
-
import { generateCustomTypes } from '
|
|
1
|
+
import { serializeImportMap } from '../../../utils/serialize-import-map.js';
|
|
2
|
+
import { generateCustomTypes } from '../../../utils/custom-types-generator.js';
|
|
3
3
|
export const serializeTypedChannelsMap = (relativeToPath, packageMappings, typesMap, functionsMeta, channelsMeta) => {
|
|
4
4
|
const { channels, requiredTypes } = generateChannels(functionsMeta, channelsMeta);
|
|
5
5
|
typesMap.customTypes.forEach(({ references }) => {
|
|
6
6
|
for (const reference of references) {
|
|
7
|
-
|
|
7
|
+
// Skip __object types (placeholder types for invalid/broken functions)
|
|
8
|
+
if (reference !== '__object' && !reference.startsWith('__object_')) {
|
|
9
|
+
requiredTypes.add(reference);
|
|
10
|
+
}
|
|
8
11
|
}
|
|
9
12
|
});
|
|
10
13
|
const imports = serializeImportMap(relativeToPath, packageMappings, typesMap, requiredTypes);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const pikkuCLIEntry: any;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
|
|
2
|
+
import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
3
|
+
import { checkRequiredTypes } from '../../../utils/check-required-types.js';
|
|
4
|
+
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
import { serializeLocalCLIBootstrap } from './serialize-local-cli-bootstrap.js';
|
|
7
|
+
import { serializeChannelCLI } from './serialize-channel-cli.js';
|
|
8
|
+
import { serializeChannelCLIClient, collectRendererNames, } from './serialize-channel-cli-client.js';
|
|
9
|
+
import { existsSync } from 'fs';
|
|
10
|
+
import { rm } from 'fs/promises';
|
|
11
|
+
import { ErrorCode } from '@pikku/inspector';
|
|
12
|
+
export const pikkuCLIEntry = pikkuSessionlessFunc({
|
|
13
|
+
func: async ({ logger, config, getInspectorState }) => {
|
|
14
|
+
const visitState = await getInspectorState();
|
|
15
|
+
// Check if CLI entrypoints are configured
|
|
16
|
+
if (!config.cli?.entrypoints ||
|
|
17
|
+
Object.keys(config.cli.entrypoints).length === 0) {
|
|
18
|
+
logger.info({
|
|
19
|
+
message: 'No CLI entrypoints configured in config.cli.entrypoints, skipping CLI bootstrap generation',
|
|
20
|
+
type: 'skip',
|
|
21
|
+
});
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
// Generate bootstrap files for each configured entrypoint
|
|
25
|
+
for (const [programName, entrypointConfigs] of Object.entries(config.cli.entrypoints)) {
|
|
26
|
+
const programMeta = visitState.cli.meta.programs[programName];
|
|
27
|
+
if (!programMeta) {
|
|
28
|
+
logger.warn(`CLI program '${programName}' not found in metadata, skipping`);
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
// Normalize to array
|
|
32
|
+
const configs = Array.isArray(entrypointConfigs)
|
|
33
|
+
? entrypointConfigs
|
|
34
|
+
: [entrypointConfigs];
|
|
35
|
+
for (const entrypointConfig of configs) {
|
|
36
|
+
// Normalize entrypoint config to get type
|
|
37
|
+
const entrypointType = typeof entrypointConfig === 'string'
|
|
38
|
+
? 'cli'
|
|
39
|
+
: entrypointConfig.type || 'cli';
|
|
40
|
+
// Handle channel type entrypoint
|
|
41
|
+
if (entrypointType === 'channel') {
|
|
42
|
+
if (typeof entrypointConfig === 'string' ||
|
|
43
|
+
entrypointConfig.type !== 'channel') {
|
|
44
|
+
throw new Error('Channel entrypoint must be a channel type object');
|
|
45
|
+
}
|
|
46
|
+
const channelWirePath = entrypointConfig.wirePath;
|
|
47
|
+
const channelClientPath = entrypointConfig.path;
|
|
48
|
+
const channelName = entrypointConfig.name;
|
|
49
|
+
const channelRoute = entrypointConfig.route;
|
|
50
|
+
const channelWireFile = join(config.rootDir, channelWirePath);
|
|
51
|
+
const channelCode = serializeChannelCLI(programName, programMeta, channelWireFile, visitState.functions.files, config.packageMappings, config.channelsTypesFile, config.functionTypesFile, channelName, channelRoute);
|
|
52
|
+
await writeFileInDir(logger, channelWireFile, channelCode);
|
|
53
|
+
logger.debug(`Serialized CLI channel for ${programName}: ${channelWireFile}`);
|
|
54
|
+
// Generate client code if clientPath is provided
|
|
55
|
+
if (channelClientPath) {
|
|
56
|
+
const channelClientFile = join(config.rootDir, channelClientPath);
|
|
57
|
+
// Validate that renderers don't depend on services (client-side renderers can't access server services)
|
|
58
|
+
const rendererNames = collectRendererNames(programMeta);
|
|
59
|
+
const problematicRenderers = [];
|
|
60
|
+
for (const rendererName of rendererNames) {
|
|
61
|
+
const rendererMeta = visitState.cli.meta.renderers[rendererName];
|
|
62
|
+
if (rendererMeta?.services?.services?.length > 0) {
|
|
63
|
+
problematicRenderers.push({
|
|
64
|
+
name: rendererName,
|
|
65
|
+
services: rendererMeta.services.services,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// If any renderers depend on services, abort client generation
|
|
70
|
+
if (problematicRenderers.length > 0) {
|
|
71
|
+
const details = problematicRenderers
|
|
72
|
+
.map((r) => ` - ${r.name} depends on: ${r.services.join(', ')}`)
|
|
73
|
+
.join('\n');
|
|
74
|
+
logger.critical(ErrorCode.CLI_CLIENTSIDE_RENDERER_HAS_SERVICES, `Cannot generate CLI channel client for '${programName}': renderers cannot depend on services (client-side execution)\n${details}\n\nRenderers used in CLI-over-channel must be service-free since they execute on the client.`);
|
|
75
|
+
// Delete existing client file if it exists
|
|
76
|
+
if (existsSync(channelClientFile)) {
|
|
77
|
+
await rm(channelClientFile);
|
|
78
|
+
logger.debug(`Deleted existing CLI channel client: ${channelClientFile}`);
|
|
79
|
+
}
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
const clientCode = serializeChannelCLIClient(programName, programMeta, channelClientFile, config, config.bootstrapFile, channelRoute, visitState.cli.meta.renderers);
|
|
83
|
+
await writeFileInDir(logger, channelClientFile, clientCode);
|
|
84
|
+
logger.debug(`Serialized CLI channel client for ${programName}: ${channelClientFile}`);
|
|
85
|
+
}
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
// Handle CLI type entrypoint (default)
|
|
89
|
+
const entrypointPath = typeof entrypointConfig === 'string'
|
|
90
|
+
? entrypointConfig
|
|
91
|
+
: entrypointConfig.type === 'cli'
|
|
92
|
+
? entrypointConfig.path
|
|
93
|
+
: undefined;
|
|
94
|
+
if (!entrypointPath) {
|
|
95
|
+
throw new Error(`CLI entrypoint must have a path: ${JSON.stringify(entrypointConfig)}`);
|
|
96
|
+
}
|
|
97
|
+
const bootstrapFile = join(config.rootDir, entrypointPath);
|
|
98
|
+
// Get service factories for local mode
|
|
99
|
+
// Check for required types
|
|
100
|
+
checkRequiredTypes(visitState.filesAndMethodsErrors, {
|
|
101
|
+
config: true,
|
|
102
|
+
singletonServicesFactory: true,
|
|
103
|
+
sessionServicesFactory: true,
|
|
104
|
+
});
|
|
105
|
+
const { pikkuConfigFactory, singletonServicesFactory, sessionServicesFactory, } = visitState.filesAndMethods;
|
|
106
|
+
if (!pikkuConfigFactory ||
|
|
107
|
+
!singletonServicesFactory ||
|
|
108
|
+
!sessionServicesFactory) {
|
|
109
|
+
throw new Error('Required types not found');
|
|
110
|
+
}
|
|
111
|
+
const bootstrapCode = serializeLocalCLIBootstrap(programName, programMeta, bootstrapFile, config, pikkuConfigFactory, singletonServicesFactory, sessionServicesFactory);
|
|
112
|
+
await writeFileInDir(logger, bootstrapFile, bootstrapCode);
|
|
113
|
+
logger.debug(`Serialized CLI bootstrap for ${programName}: ${bootstrapFile}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
middleware: [
|
|
118
|
+
logCommandInfoAndTime({
|
|
119
|
+
commandStart: 'Serializing CLI',
|
|
120
|
+
commandEnd: 'Serialized CLI',
|
|
121
|
+
}),
|
|
122
|
+
],
|
|
123
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const pikkuCLITypes: any;
|