@pikku/cli 0.9.14 → 0.9.16-next.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 +92 -0
- package/.pikku/cli/pikku-cli-types.gen.ts +71 -0
- package/.pikku/cli/pikku-cli-wirings-meta.gen.ts +5 -0
- package/.pikku/cli/pikku-cli-wirings.gen.ts +4 -0
- package/.pikku/function/pikku-function-types.gen.ts +292 -0
- package/.pikku/function/pikku-functions-meta.gen.ts +817 -0
- package/.pikku/function/pikku-functions-meta.min.gen.ts +176 -0
- package/.pikku/function/pikku-functions.gen.ts +74 -0
- package/.pikku/http/pikku-http-types.gen.ts +61 -0
- package/.pikku/mcp/pikku-mcp-types.gen.ts +138 -0
- package/.pikku/pikku-bootstrap.gen.ts +9 -0
- package/.pikku/pikku-services.gen.ts +24 -0
- package/.pikku/pikku-types.gen.ts +28 -0
- package/.pikku/queue/pikku-queue-types.gen.ts +28 -0
- package/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +46 -0
- package/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +80 -0
- package/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.ts +40 -0
- package/.pikku/scheduler/pikku-scheduler-types.gen.ts +26 -0
- package/.pikku/schemas/register.gen.ts +47 -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/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 +45 -14
- package/build.sh +53 -0
- package/cli.schema.json +1 -382
- package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +65 -0
- package/dist/.pikku/channel/pikku-channel-types.gen.js +54 -0
- package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +55 -0
- package/dist/.pikku/cli/pikku-cli-types.gen.js +30 -0
- package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +5 -0
- package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +4 -0
- package/dist/.pikku/cli/pikku-cli-wirings.gen.js +5 -0
- package/dist/.pikku/function/pikku-function-types.gen.d.ts +259 -0
- package/dist/.pikku/function/pikku-function-types.gen.js +175 -0
- package/dist/.pikku/function/pikku-functions-meta.gen.d.ts +1 -0
- package/dist/.pikku/function/pikku-functions-meta.gen.js +817 -0
- package/dist/.pikku/function/pikku-functions-meta.min.gen.d.ts +1 -0
- package/dist/.pikku/function/pikku-functions-meta.min.gen.js +176 -0
- package/dist/.pikku/function/pikku-functions.gen.d.ts +1 -0
- package/dist/.pikku/function/pikku-functions.gen.js +73 -0
- package/dist/.pikku/http/pikku-http-types.gen.d.ts +49 -0
- package/dist/.pikku/http/pikku-http-types.gen.js +41 -0
- package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +88 -0
- package/dist/.pikku/mcp/pikku-mcp-types.gen.js +71 -0
- package/dist/.pikku/pikku-bootstrap.gen.d.ts +9 -0
- package/dist/.pikku/pikku-bootstrap.gen.js +9 -0
- package/dist/.pikku/pikku-services.gen.d.ts +16 -0
- package/dist/.pikku/pikku-services.gen.js +11 -0
- package/dist/.pikku/pikku-types.gen.d.ts +14 -0
- package/dist/.pikku/pikku-types.gen.js +21 -0
- package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +24 -0
- package/dist/.pikku/queue/pikku-queue-types.gen.js +17 -0
- package/dist/.pikku/rpc/pikku-bootstrap-rpc.gen.d.ts +6 -0
- package/dist/.pikku/rpc/pikku-bootstrap-rpc.gen.js +6 -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 +40 -0
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +22 -0
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +17 -0
- package/dist/.pikku/schemas/register.gen.d.ts +1 -0
- package/dist/.pikku/schemas/register.gen.js +26 -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/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.d.ts +1 -1
- package/dist/bin/pikku.js +32 -14
- package/dist/src/cli.wiring.d.ts +1 -0
- package/dist/src/cli.wiring.js +75 -0
- package/dist/src/functions/commands/all.d.ts +1 -0
- package/dist/src/functions/commands/all.js +104 -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 +28 -9
- package/dist/src/functions/wirings/channels/pikku-channels.d.ts +1 -0
- package/dist/src/functions/wirings/channels/pikku-channels.js +24 -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 +21 -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 +23 -0
- package/dist/src/functions/wirings/channels/pikku-command-channels.d.ts +1 -0
- package/dist/src/functions/wirings/channels/pikku-command-channels.js +25 -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 +24 -0
- package/dist/src/functions/wirings/channels/serialize-channel-types.d.ts +4 -0
- package/dist/src/functions/wirings/channels/serialize-channel-types.js +95 -0
- package/dist/src/{wirings → functions/wirings}/channels/serialize-typed-channel-map.js +2 -2
- 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 +100 -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 +33 -0
- package/dist/src/functions/wirings/cli/pikku-command-cli.d.ts +1 -0
- package/dist/src/functions/wirings/cli/pikku-command-cli.js +24 -0
- package/dist/src/functions/wirings/cli/serialize-channel-cli-client.d.ts +7 -0
- package/dist/src/functions/wirings/cli/serialize-channel-cli-client.js +54 -0
- package/dist/src/functions/wirings/cli/serialize-channel-cli.d.ts +9 -0
- package/dist/src/functions/wirings/cli/serialize-channel-cli.js +84 -0
- package/dist/src/functions/wirings/cli/serialize-cli-types.d.ts +4 -0
- package/dist/src/functions/wirings/cli/serialize-cli-types.js +74 -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 +46 -0
- package/dist/src/functions/wirings/fetch/index.d.ts +1 -0
- package/dist/src/functions/wirings/fetch/index.js +24 -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 +32 -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 +20 -0
- package/dist/src/functions/wirings/functions/pikku-command-functions.d.ts +1 -0
- package/dist/src/functions/wirings/functions/pikku-command-functions.js +28 -0
- package/dist/src/{wirings → functions/wirings}/functions/pikku-command-services.d.ts +1 -2
- package/dist/src/{wirings → functions/wirings}/functions/pikku-command-services.js +27 -10
- package/dist/src/functions/wirings/functions/pikku-function-types.d.ts +1 -0
- package/dist/src/functions/wirings/functions/pikku-function-types.js +20 -0
- package/dist/src/functions/wirings/functions/schemas.d.ts +4 -0
- package/dist/src/functions/wirings/functions/schemas.js +22 -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 +295 -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 +31 -0
- package/dist/src/{wirings → functions/wirings}/http/openapi-spec-generator.d.ts +2 -1
- 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 +23 -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 +25 -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 +21 -0
- package/dist/src/functions/wirings/http/pikku-command-openapi.d.ts +1 -0
- package/dist/src/functions/wirings/http/pikku-command-openapi.js +34 -0
- package/dist/src/functions/wirings/http/pikku-http-routes.d.ts +1 -0
- package/dist/src/functions/wirings/http/pikku-http-routes.js +25 -0
- package/dist/src/functions/wirings/http/serialize-http-types.d.ts +4 -0
- package/dist/src/functions/wirings/http/serialize-http-types.js +64 -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 +28 -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 +21 -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 +22 -5
- package/dist/src/{wirings → functions/wirings}/mcp/serialize-mcp-json.d.ts +1 -1
- package/dist/src/functions/wirings/mcp/serialize-mcp-types.d.ts +4 -0
- package/dist/src/functions/wirings/mcp/serialize-mcp-types.js +141 -0
- package/dist/src/functions/wirings/middleware/pikku-command-middleware.d.ts +1 -0
- package/dist/src/functions/wirings/middleware/pikku-command-middleware.js +38 -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 +50 -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/queue/pikku-command-queue-map.d.ts +1 -0
- package/dist/src/functions/wirings/queue/pikku-command-queue-map.js +23 -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 +24 -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 +21 -0
- package/dist/src/functions/wirings/queue/pikku-command-queue.d.ts +1 -0
- package/dist/src/functions/wirings/queue/pikku-command-queue.js +26 -0
- package/dist/src/functions/wirings/queue/pikku-queue-map.d.ts +1 -0
- package/dist/src/functions/wirings/queue/pikku-queue-map.js +23 -0
- package/dist/src/functions/wirings/queue/pikku-queue.d.ts +1 -0
- package/dist/src/functions/wirings/queue/pikku-queue.js +25 -0
- package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-map.js +2 -2
- package/dist/src/functions/wirings/queue/serialize-queue-types.d.ts +4 -0
- package/dist/src/functions/wirings/queue/serialize-queue-types.js +31 -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 +25 -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 +36 -0
- package/dist/src/functions/wirings/rpc/pikku-command-rpc.d.ts +1 -0
- package/dist/src/functions/wirings/rpc/pikku-command-rpc.js +22 -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 +21 -0
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.d.ts +1 -0
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.js +26 -0
- package/dist/src/functions/wirings/scheduler/serialize-scheduler-types.d.ts +4 -0
- package/dist/src/functions/wirings/scheduler/serialize-scheduler-types.js +29 -0
- package/dist/src/middleware/log-command-info-and-time.d.ts +19 -0
- package/dist/src/middleware/log-command-info-and-time.js +27 -0
- package/dist/src/serialize-pikku-types.js +2 -2
- package/dist/src/services/cli-logger-forwarder.service.d.ts +26 -0
- package/dist/src/services/cli-logger-forwarder.service.js +55 -0
- package/dist/src/services/cli-logger.service.d.ts +19 -0
- package/dist/src/services/cli-logger.service.js +66 -0
- package/dist/src/services.d.ts +15 -0
- package/dist/src/services.js +64 -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 +37 -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 +6 -0
- package/dist/src/utils/file-writer.js +40 -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/pikku-cli-config.d.ts +5 -0
- package/dist/src/utils/pikku-cli-config.js +243 -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} +1 -1
- package/dist/src/{serialize-import-map.js → utils/serialize-import-map.js} +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/pikku.config.json +24 -0
- package/src/cli.wiring.ts +75 -0
- package/src/functions/commands/all.ts +141 -0
- package/src/functions/commands/watch.ts +58 -0
- package/src/functions/runtimes/nextjs/pikku-command-nextjs.ts +111 -0
- package/src/functions/wirings/channels/pikku-channels.ts +40 -0
- package/src/functions/wirings/channels/pikku-command-channel-types.ts +27 -0
- package/src/functions/wirings/channels/pikku-command-channels-map.ts +31 -0
- package/src/functions/wirings/channels/pikku-command-channels.ts +45 -0
- package/src/functions/wirings/channels/pikku-command-websocket-typed.ts +33 -0
- package/src/functions/wirings/channels/serialize-channel-types.ts +95 -0
- package/src/{wirings → functions/wirings}/channels/serialize-typed-channel-map.ts +2 -2
- package/src/functions/wirings/cli/pikku-command-cli-entry.ts +173 -0
- package/src/functions/wirings/cli/pikku-command-cli-types.ts +50 -0
- package/src/functions/wirings/cli/pikku-command-cli.ts +41 -0
- package/src/functions/wirings/cli/serialize-channel-cli-client.ts +72 -0
- package/src/functions/wirings/cli/serialize-channel-cli.ts +123 -0
- package/src/functions/wirings/cli/serialize-cli-types.ts +80 -0
- package/src/functions/wirings/cli/serialize-local-cli-bootstrap.ts +75 -0
- package/src/functions/wirings/fetch/index.ts +32 -0
- package/src/functions/wirings/functions/pikku-command-function-types-split.ts +51 -0
- package/src/functions/wirings/functions/pikku-command-function-types.ts +45 -0
- package/src/functions/wirings/functions/pikku-command-functions.ts +61 -0
- package/src/{wirings → functions/wirings}/functions/pikku-command-services.ts +41 -44
- package/src/functions/wirings/functions/pikku-function-types.ts +45 -0
- package/src/functions/wirings/functions/schemas.ts +47 -0
- package/src/{wirings → functions/wirings}/functions/serialize-function-imports.ts +4 -30
- package/src/functions/wirings/functions/serialize-function-types.ts +303 -0
- package/src/functions/wirings/functions/serialize-pikku-types-hub.ts +39 -0
- package/src/{wirings → functions/wirings}/http/openapi-spec-generator.ts +3 -1
- package/src/functions/wirings/http/pikku-command-http-map.ts +32 -0
- package/src/functions/wirings/http/pikku-command-http-routes.ts +41 -0
- package/src/functions/wirings/http/pikku-command-http-types.ts +27 -0
- package/src/functions/wirings/http/pikku-command-openapi.ts +57 -0
- package/src/functions/wirings/http/pikku-http-routes.ts +40 -0
- package/src/functions/wirings/http/serialize-http-types.ts +64 -0
- package/src/{wirings → functions/wirings}/http/serialize-typed-http-map.ts +2 -2
- package/src/functions/wirings/mcp/pikku-command-mcp-json.ts +38 -0
- package/src/functions/wirings/mcp/pikku-command-mcp-types.ts +27 -0
- package/src/{wirings → functions/wirings}/mcp/pikku-command-mcp.ts +55 -46
- package/src/{wirings → functions/wirings}/mcp/serialize-mcp-json.ts +1 -1
- package/src/functions/wirings/mcp/serialize-mcp-types.ts +141 -0
- package/src/functions/wirings/middleware/pikku-command-middleware.ts +65 -0
- package/src/functions/wirings/middleware/serialize-middleware-groups-meta.ts +61 -0
- package/src/functions/wirings/middleware/serialize-middleware-imports.ts +78 -0
- package/src/functions/wirings/queue/pikku-command-queue-map.ts +31 -0
- package/src/functions/wirings/queue/pikku-command-queue-service.ts +33 -0
- package/src/functions/wirings/queue/pikku-command-queue-types.ts +27 -0
- package/src/functions/wirings/queue/pikku-command-queue.ts +46 -0
- package/src/functions/wirings/queue/pikku-queue-map.ts +31 -0
- package/src/functions/wirings/queue/pikku-queue.ts +44 -0
- package/src/{wirings → functions/wirings}/queue/serialize-queue-map.ts +2 -2
- package/src/functions/wirings/queue/serialize-queue-types.ts +31 -0
- package/src/functions/wirings/rpc/pikku-command-rpc-client.ts +32 -0
- package/src/functions/wirings/rpc/pikku-command-rpc-map.ts +52 -0
- package/src/functions/wirings/rpc/pikku-command-rpc.ts +28 -0
- package/src/{wirings → functions/wirings}/rpc/serialize-typed-rpc-map.ts +2 -2
- package/src/functions/wirings/scheduler/pikku-command-scheduler-types.ts +27 -0
- package/src/functions/wirings/scheduler/pikku-command-scheduler.ts +46 -0
- package/src/functions/wirings/scheduler/serialize-scheduler-types.ts +29 -0
- package/src/middleware/log-command-info-and-time.ts +61 -0
- package/src/serialize-pikku-types.ts +2 -2
- package/src/services/cli-logger-forwarder.service.ts +77 -0
- package/src/services/cli-logger.service.ts +78 -0
- package/src/services.ts +111 -0
- package/src/utils/check-required-types.ts +53 -0
- package/src/utils/custom-types-generator.ts +49 -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 +56 -0
- package/src/utils/generate-bootstrap-file.ts +43 -0
- package/src/utils/pikku-cli-config.ts +356 -0
- package/src/utils/pikku-files-and-methods.ts +148 -0
- package/src/{schema-generator.ts → utils/schema-generator.ts} +3 -1
- package/src/{serialize-import-map.ts → utils/serialize-import-map.ts} +1 -1
- package/tsconfig.json +2 -2
- package/types/application-types.d.ts +20 -0
- package/types/config.d.ts +192 -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/schemas.d.ts +0 -2
- package/dist/src/schemas.js +0 -8
- 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-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/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-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/cli/pikku-cli-wirings-meta.gen.d.ts} +0 -0
- /package/dist/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-backend-wrapper.d.ts +0 -0
- /package/dist/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-backend-wrapper.js +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.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-backend-wrapper.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-meta.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,25 @@
|
|
|
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
|
+
skipCondition: async ({ getInspectorState }) => {
|
|
19
|
+
const visitState = await getInspectorState();
|
|
20
|
+
return visitState.channels.files.size === 0;
|
|
21
|
+
},
|
|
22
|
+
skipMessage: 'none found',
|
|
23
|
+
}),
|
|
24
|
+
],
|
|
25
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const pikkuWebSocketTyped: any;
|
|
@@ -0,0 +1,24 @@
|
|
|
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) {
|
|
10
|
+
throw new Error("fetchFile is isn't set in the pikku config");
|
|
11
|
+
}
|
|
12
|
+
const channelsMapDeclarationPath = getFileImportRelativePath(websocketFile, channelsMapDeclarationFile, packageMappings);
|
|
13
|
+
const content = [serializeWebsocketWrapper(channelsMapDeclarationPath)];
|
|
14
|
+
await writeFileInDir(logger, websocketFile, content.join('\n'));
|
|
15
|
+
},
|
|
16
|
+
middleware: [
|
|
17
|
+
logCommandInfoAndTime({
|
|
18
|
+
commandStart: 'Generating websocket wrapper',
|
|
19
|
+
commandEnd: 'Generated websocket wrapper',
|
|
20
|
+
skipCondition: ({ config }) => config.websocketFile === undefined,
|
|
21
|
+
skipMessage: "websocketFile isn't set in the pikku config",
|
|
22
|
+
}),
|
|
23
|
+
],
|
|
24
|
+
});
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates type definitions for WebSocket channel wirings
|
|
3
|
+
*/
|
|
4
|
+
export const serializeChannelTypes = (functionTypesImportPath) => {
|
|
5
|
+
return `/**
|
|
6
|
+
* This file was generated by the @pikku/cli
|
|
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 { PikkuFunction, 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 ChannelWiringFunction<I, O, C = {}> = PikkuFunctionSessionless<I, O, C> | PikkuFunction<I, O, C>
|
|
23
|
+
type ChannelWiring<ChannelData, Channel extends string> = CoreChannel<ChannelData, Channel, ChannelWiringFunction<void, unknown> | ChannelWiringFunction<void, unknown, ChannelData>, ChannelWiringFunction<void, void> | ChannelWiringFunction<void, void, ChannelData>, ChannelWiringFunction<any, any> | ChannelWiringFunction<any, any, ChannelData>, PikkuPermission, PikkuMiddleware>
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Creates a function that handles WebSocket channel connections.
|
|
27
|
+
* Called when a client connects to a channel.
|
|
28
|
+
*
|
|
29
|
+
* @template Out - Output type for connection response
|
|
30
|
+
* @template ChannelData - Type of data associated with the channel
|
|
31
|
+
* @param func - Function definition, either direct function or configuration object
|
|
32
|
+
* @returns The unwrapped function for internal use
|
|
33
|
+
*/
|
|
34
|
+
export const pikkuChannelConnectionFunc = <Out = unknown, ChannelData = unknown>(
|
|
35
|
+
func:
|
|
36
|
+
| PikkuFunctionSessionless<void, Out, ChannelData>
|
|
37
|
+
| {
|
|
38
|
+
func: PikkuFunctionSessionless<void, Out, ChannelData>
|
|
39
|
+
name?: string
|
|
40
|
+
}
|
|
41
|
+
) => {
|
|
42
|
+
return typeof func === 'function' ? func : func.func
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Creates a function that handles WebSocket channel disconnections.
|
|
47
|
+
* Called when a client disconnects from a channel.
|
|
48
|
+
*
|
|
49
|
+
* @template ChannelData - Type of data associated with the channel
|
|
50
|
+
* @param func - Function definition, either direct function or configuration object
|
|
51
|
+
* @returns The unwrapped function for internal use
|
|
52
|
+
*/
|
|
53
|
+
export const pikkuChannelDisconnectionFunc = <ChannelData = unknown>(
|
|
54
|
+
func:
|
|
55
|
+
| PikkuFunctionSessionless<void, void, ChannelData>
|
|
56
|
+
| {
|
|
57
|
+
func: PikkuFunction<void, void, ChannelData>
|
|
58
|
+
name?: string
|
|
59
|
+
}
|
|
60
|
+
) => {
|
|
61
|
+
return typeof func === 'function' ? func : func.func
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Creates a function that handles WebSocket channel messages.
|
|
66
|
+
* Called when a message is received on a channel.
|
|
67
|
+
*
|
|
68
|
+
* @template In - Input type for channel messages
|
|
69
|
+
* @template Out - Output type for channel responses
|
|
70
|
+
* @template ChannelData - Type of data associated with the channel
|
|
71
|
+
* @param func - Function definition, either direct function or configuration object
|
|
72
|
+
* @returns The unwrapped function for internal use
|
|
73
|
+
*/
|
|
74
|
+
export const pikkuChannelFunc = <In = unknown, Out = unknown, ChannelData = unknown>(
|
|
75
|
+
func:
|
|
76
|
+
| PikkuFunctionSessionless<In, Out, ChannelData>
|
|
77
|
+
| CorePikkuFunctionConfig<PikkuFunction<In, Out, ChannelData>, PikkuPermission<In>>
|
|
78
|
+
) => {
|
|
79
|
+
return typeof func === 'function' ? func : func.func
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Registers a WebSocket channel with the Pikku framework.
|
|
84
|
+
*
|
|
85
|
+
* @template ChannelData - Type of data associated with the channel
|
|
86
|
+
* @template Channel - String literal type for the channel name
|
|
87
|
+
* @param channel - Channel definition with connection, disconnection, and message handlers
|
|
88
|
+
*/
|
|
89
|
+
export const wireChannel = <ChannelData, Channel extends string>(
|
|
90
|
+
channel: ChannelWiring<ChannelData, Channel> & AssertHTTPWiringParams<ChannelData, Channel>
|
|
91
|
+
) => {
|
|
92
|
+
wireChannelCore(channel as any) // TODO
|
|
93
|
+
}
|
|
94
|
+
`;
|
|
95
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
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 }) => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const pikkuCLIEntry: any;
|
|
@@ -0,0 +1,100 @@
|
|
|
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 } from './serialize-channel-cli-client.js';
|
|
9
|
+
export const pikkuCLIEntry = pikkuSessionlessFunc({
|
|
10
|
+
func: async ({ logger, config, getInspectorState }) => {
|
|
11
|
+
const visitState = await getInspectorState();
|
|
12
|
+
// Check if CLI entrypoints are configured
|
|
13
|
+
if (!config.cli?.entrypoints ||
|
|
14
|
+
Object.keys(config.cli.entrypoints).length === 0) {
|
|
15
|
+
logger.info({
|
|
16
|
+
message: 'No CLI entrypoints configured in config.cli.entrypoints, skipping CLI bootstrap generation',
|
|
17
|
+
type: 'skip',
|
|
18
|
+
});
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
// Generate bootstrap files for each configured entrypoint
|
|
22
|
+
for (const [programName, entrypointConfigs] of Object.entries(config.cli.entrypoints)) {
|
|
23
|
+
const programMeta = visitState.cli.meta[programName];
|
|
24
|
+
if (!programMeta) {
|
|
25
|
+
logger.warn(`CLI program '${programName}' not found in metadata, skipping`);
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
// Normalize to array
|
|
29
|
+
const configs = Array.isArray(entrypointConfigs)
|
|
30
|
+
? entrypointConfigs
|
|
31
|
+
: [entrypointConfigs];
|
|
32
|
+
for (const entrypointConfig of configs) {
|
|
33
|
+
// Normalize entrypoint config to get type
|
|
34
|
+
const entrypointType = typeof entrypointConfig === 'string'
|
|
35
|
+
? 'cli'
|
|
36
|
+
: entrypointConfig.type || 'cli';
|
|
37
|
+
// Handle channel type entrypoint
|
|
38
|
+
if (entrypointType === 'channel') {
|
|
39
|
+
if (typeof entrypointConfig === 'string' ||
|
|
40
|
+
entrypointConfig.type !== 'channel') {
|
|
41
|
+
throw new Error('Channel entrypoint must be a channel type object');
|
|
42
|
+
}
|
|
43
|
+
const channelWirePath = entrypointConfig.wirePath;
|
|
44
|
+
const channelClientPath = entrypointConfig.path;
|
|
45
|
+
const channelName = entrypointConfig.name;
|
|
46
|
+
const channelRoute = entrypointConfig.route;
|
|
47
|
+
const channelWireFile = join(config.rootDir, channelWirePath);
|
|
48
|
+
const channelCode = serializeChannelCLI(programName, programMeta, channelWireFile, visitState.functions.files, config.packageMappings, config.channelsTypesFile, config.functionTypesFile, channelName, channelRoute);
|
|
49
|
+
await writeFileInDir(logger, channelWireFile, channelCode);
|
|
50
|
+
logger.debug(`Serialized CLI channel for ${programName}: ${channelWireFile}`);
|
|
51
|
+
// Generate client code if clientPath is provided
|
|
52
|
+
if (channelClientPath) {
|
|
53
|
+
const channelClientFile = join(config.rootDir, channelClientPath);
|
|
54
|
+
const clientCode = serializeChannelCLIClient(programName, programMeta, channelClientFile, config, config.bootstrapFiles.cli, channelRoute);
|
|
55
|
+
await writeFileInDir(logger, channelClientFile, clientCode);
|
|
56
|
+
logger.debug(`Serialized CLI channel client for ${programName}: ${channelClientFile}`);
|
|
57
|
+
}
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
// Handle CLI type entrypoint (default)
|
|
61
|
+
const entrypointPath = typeof entrypointConfig === 'string'
|
|
62
|
+
? entrypointConfig
|
|
63
|
+
: entrypointConfig.type === 'cli'
|
|
64
|
+
? entrypointConfig.path
|
|
65
|
+
: undefined;
|
|
66
|
+
if (!entrypointPath) {
|
|
67
|
+
throw new Error(`CLI entrypoint must have a path: ${JSON.stringify(entrypointConfig)}`);
|
|
68
|
+
}
|
|
69
|
+
const bootstrapFile = join(config.rootDir, entrypointPath);
|
|
70
|
+
// Get service factories for local mode
|
|
71
|
+
// Check for required types
|
|
72
|
+
checkRequiredTypes(visitState.filesAndMethodsErrors, {
|
|
73
|
+
config: true,
|
|
74
|
+
singletonServicesFactory: true,
|
|
75
|
+
sessionServicesFactory: true,
|
|
76
|
+
});
|
|
77
|
+
const { pikkuConfigFactory, singletonServicesFactory, sessionServicesFactory, } = visitState.filesAndMethods;
|
|
78
|
+
if (!pikkuConfigFactory ||
|
|
79
|
+
!singletonServicesFactory ||
|
|
80
|
+
!sessionServicesFactory) {
|
|
81
|
+
throw new Error('Required types not found');
|
|
82
|
+
}
|
|
83
|
+
const bootstrapCode = serializeLocalCLIBootstrap(programName, programMeta, bootstrapFile, config, pikkuConfigFactory, singletonServicesFactory, sessionServicesFactory);
|
|
84
|
+
await writeFileInDir(logger, bootstrapFile, bootstrapCode);
|
|
85
|
+
logger.debug(`Serialized CLI bootstrap for ${programName}: ${bootstrapFile}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
middleware: [
|
|
90
|
+
logCommandInfoAndTime({
|
|
91
|
+
commandStart: 'Serializing CLI',
|
|
92
|
+
commandEnd: 'Serialized CLI',
|
|
93
|
+
skipCondition: async ({ getInspectorState }) => {
|
|
94
|
+
const visitState = await getInspectorState();
|
|
95
|
+
return visitState.cli.files.size === 0;
|
|
96
|
+
},
|
|
97
|
+
skipMessage: 'none found',
|
|
98
|
+
}),
|
|
99
|
+
],
|
|
100
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const pikkuCLITypes: any;
|
|
@@ -0,0 +1,33 @@
|
|
|
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 { serializeCLITypes } from './serialize-cli-types.js';
|
|
6
|
+
import { checkRequiredTypes } from '../../../utils/check-required-types.js';
|
|
7
|
+
export const pikkuCLITypes = pikkuSessionlessFunc({
|
|
8
|
+
func: async ({ logger, config, getInspectorState }) => {
|
|
9
|
+
const { cliTypesFile, functionTypesFile, packageMappings } = config;
|
|
10
|
+
const visitState = await getInspectorState();
|
|
11
|
+
const functionTypesImportPath = getFileImportRelativePath(cliTypesFile, functionTypesFile, packageMappings);
|
|
12
|
+
// Check for required types
|
|
13
|
+
checkRequiredTypes(visitState.filesAndMethodsErrors, {
|
|
14
|
+
userSessionType: true,
|
|
15
|
+
sessionServiceType: true,
|
|
16
|
+
singletonServicesType: true,
|
|
17
|
+
});
|
|
18
|
+
const { userSessionType, singletonServicesType } = visitState.filesAndMethods;
|
|
19
|
+
if (!userSessionType || !singletonServicesType) {
|
|
20
|
+
throw new Error('Required types not found');
|
|
21
|
+
}
|
|
22
|
+
const content = serializeCLITypes(functionTypesImportPath, `import type { ${userSessionType.type} } from '${getFileImportRelativePath(cliTypesFile, userSessionType.typePath, packageMappings)}'`, userSessionType.type, `import type { ${singletonServicesType.type} } from '${getFileImportRelativePath(cliTypesFile, singletonServicesType.typePath, packageMappings)}'`, singletonServicesType.type);
|
|
23
|
+
await writeFileInDir(logger, cliTypesFile, content);
|
|
24
|
+
},
|
|
25
|
+
middleware: [
|
|
26
|
+
logCommandInfoAndTime({
|
|
27
|
+
commandStart: 'Creating CLI types',
|
|
28
|
+
commandEnd: 'Created CLI types',
|
|
29
|
+
skipCondition: false,
|
|
30
|
+
skipMessage: '',
|
|
31
|
+
}),
|
|
32
|
+
],
|
|
33
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const pikkuCLI: any;
|
|
@@ -0,0 +1,24 @@
|
|
|
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 pikkuCLI = pikkuSessionlessFunc({
|
|
6
|
+
func: async ({ logger, config, getInspectorState }) => {
|
|
7
|
+
const visitState = await getInspectorState();
|
|
8
|
+
const { cliWiringsFile, cliWiringMetaFile, packageMappings } = config;
|
|
9
|
+
const { cli } = visitState;
|
|
10
|
+
// Generate CLI wirings file
|
|
11
|
+
await writeFileInDir(logger, cliWiringsFile, serializeFileImports('wireCLI', cliWiringsFile, cli.files, packageMappings));
|
|
12
|
+
// Generate CLI metadata file
|
|
13
|
+
await writeFileInDir(logger, cliWiringMetaFile, `import { pikkuState } from '@pikku/core'\npikkuState('cli', 'meta', ${JSON.stringify(cli.meta, null, 2)})`);
|
|
14
|
+
return true;
|
|
15
|
+
},
|
|
16
|
+
middleware: [
|
|
17
|
+
logCommandInfoAndTime({
|
|
18
|
+
commandStart: 'Finding CLI commands',
|
|
19
|
+
commandEnd: 'Found CLI commands',
|
|
20
|
+
skipCondition: false,
|
|
21
|
+
skipMessage: 'none found',
|
|
22
|
+
}),
|
|
23
|
+
],
|
|
24
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CLIProgramMeta } from '@pikku/core';
|
|
2
|
+
import { Config } from '../../../../types/application-types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Serializes a CLI-over-Channel client bootstrap file
|
|
5
|
+
* Similar to local CLI bootstrap but uses WebSocket connection
|
|
6
|
+
*/
|
|
7
|
+
export declare function serializeChannelCLIClient(programName: string, programMeta: CLIProgramMeta, clientFile: string, config: Config, cliBootstrapPath: string, channelRoute?: string): string;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
2
|
+
/**
|
|
3
|
+
* Serializes a CLI-over-Channel client bootstrap file
|
|
4
|
+
* Similar to local CLI bootstrap but uses WebSocket connection
|
|
5
|
+
*/
|
|
6
|
+
export function serializeChannelCLIClient(programName, programMeta, clientFile, config, cliBootstrapPath, channelRoute) {
|
|
7
|
+
const capitalizedName = programName.charAt(0).toUpperCase() + programName.slice(1).replace(/-/g, '');
|
|
8
|
+
const finalChannelRoute = channelRoute || `/cli/${programName}`;
|
|
9
|
+
// Get relative import path to CLI bootstrap (for metadata)
|
|
10
|
+
const bootstrapImportPath = getFileImportRelativePath(clientFile, cliBootstrapPath, config.packageMappings);
|
|
11
|
+
// TODO: Collect renderer imports and create renderers map
|
|
12
|
+
// For now, renderers are not implemented
|
|
13
|
+
return `/**
|
|
14
|
+
* This file was generated by the @pikku/cli
|
|
15
|
+
*/
|
|
16
|
+
import { executeCLIViaChannel } from '@pikku/core/cli/channel'
|
|
17
|
+
import { CorePikkuWebsocket } from '@pikku/websocket'
|
|
18
|
+
import '${bootstrapImportPath}'
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* ${capitalizedName} CLI Client (via WebSocket Channel)
|
|
22
|
+
* Executes CLI commands over a WebSocket connection
|
|
23
|
+
*/
|
|
24
|
+
export async function ${capitalizedName}CLIClient(
|
|
25
|
+
url: string,
|
|
26
|
+
args?: string[]
|
|
27
|
+
): Promise<void> {
|
|
28
|
+
// Create WebSocket connection
|
|
29
|
+
const pikkuWS = new CorePikkuWebsocket(url)
|
|
30
|
+
|
|
31
|
+
// TODO: Import and register renderers when renderer tracking is implemented
|
|
32
|
+
const renderers = {}
|
|
33
|
+
|
|
34
|
+
await executeCLIViaChannel({
|
|
35
|
+
programName: '${programName}',
|
|
36
|
+
pikkuWS,
|
|
37
|
+
args,
|
|
38
|
+
renderers,
|
|
39
|
+
})
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Export as default for easy importing
|
|
43
|
+
export default ${capitalizedName}CLIClient
|
|
44
|
+
|
|
45
|
+
// For direct execution (if this file is run directly)
|
|
46
|
+
if (import.meta.url === \`file://\${process.argv[1]}\`) {
|
|
47
|
+
const url = process.env.PIKKU_WS_URL || 'ws://localhost:3000${finalChannelRoute}'
|
|
48
|
+
${capitalizedName}CLIClient(url).catch(error => {
|
|
49
|
+
console.error('Fatal error:', error.message)
|
|
50
|
+
process.exit(1)
|
|
51
|
+
})
|
|
52
|
+
}
|
|
53
|
+
`;
|
|
54
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { CLIProgramMeta } from '@pikku/core';
|
|
2
|
+
/**
|
|
3
|
+
* Serializes a wireChannel call from CLI metadata
|
|
4
|
+
* This creates a WebSocket backend for all CLI commands
|
|
5
|
+
*/
|
|
6
|
+
export declare function serializeChannelCLI(programName: string, programMeta: CLIProgramMeta, channelFile: string, functionFiles: Map<string, {
|
|
7
|
+
path: string;
|
|
8
|
+
exportedName: string;
|
|
9
|
+
}>, packageMappings: Record<string, string>, channelTypesFile: string, functionTypesFile: string, channelName?: string, channelRoute?: string): string;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
2
|
+
/**
|
|
3
|
+
* Serializes a wireChannel call from CLI metadata
|
|
4
|
+
* This creates a WebSocket backend for all CLI commands
|
|
5
|
+
*/
|
|
6
|
+
export function serializeChannelCLI(programName, programMeta, channelFile, functionFiles, packageMappings, channelTypesFile, functionTypesFile, channelName, channelRoute) {
|
|
7
|
+
const finalChannelName = channelName || `${programName}-cli`;
|
|
8
|
+
const finalChannelRoute = channelRoute || `/cli/${programName}`;
|
|
9
|
+
// Flatten all commands into a single routing map
|
|
10
|
+
const commandMap = {};
|
|
11
|
+
const collectCommands = (commands, path = []) => {
|
|
12
|
+
for (const [name, cmd] of Object.entries(commands)) {
|
|
13
|
+
const fullPath = [...path, name];
|
|
14
|
+
const commandKey = fullPath.join('.');
|
|
15
|
+
if (cmd.pikkuFuncName) {
|
|
16
|
+
commandMap[commandKey] = {
|
|
17
|
+
pikkuFuncName: cmd.pikkuFuncName,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
// Recursively process subcommands
|
|
21
|
+
if (cmd.subcommands) {
|
|
22
|
+
collectCommands(cmd.subcommands, fullPath);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
collectCommands(programMeta.commands);
|
|
27
|
+
// Generate the wireChannel call
|
|
28
|
+
const commandEntries = Object.entries(commandMap)
|
|
29
|
+
.map(([commandKey, { pikkuFuncName }]) => {
|
|
30
|
+
return ` '${commandKey}': ${pikkuFuncName}`;
|
|
31
|
+
})
|
|
32
|
+
.join(',\n');
|
|
33
|
+
// Generate imports from function file locations
|
|
34
|
+
const funcNames = [
|
|
35
|
+
...new Set(Object.values(commandMap).map((v) => v.pikkuFuncName)),
|
|
36
|
+
];
|
|
37
|
+
const imports = funcNames
|
|
38
|
+
.map((pikkuFuncName) => {
|
|
39
|
+
const fileInfo = functionFiles.get(pikkuFuncName);
|
|
40
|
+
if (!fileInfo) {
|
|
41
|
+
throw new Error(`Function not found in files map: ${pikkuFuncName}`);
|
|
42
|
+
}
|
|
43
|
+
const importPath = getFileImportRelativePath(channelFile, fileInfo.path, packageMappings);
|
|
44
|
+
return `import { ${fileInfo.exportedName} } from '${importPath}'`;
|
|
45
|
+
})
|
|
46
|
+
.join('\n');
|
|
47
|
+
// Get relative paths to type files
|
|
48
|
+
const channelTypesPath = getFileImportRelativePath(channelFile, channelTypesFile, packageMappings);
|
|
49
|
+
const functionTypesPath = getFileImportRelativePath(channelFile, functionTypesFile, packageMappings);
|
|
50
|
+
return `/**
|
|
51
|
+
* This file was generated by the @pikku/cli
|
|
52
|
+
* WebSocket channel backend for '${programName}' CLI commands
|
|
53
|
+
*/
|
|
54
|
+
import { wireChannel } from '${channelTypesPath}'
|
|
55
|
+
import { PikkuMiddleware } from '${functionTypesPath}'
|
|
56
|
+
${imports}
|
|
57
|
+
|
|
58
|
+
// Middleware to close channel after command execution
|
|
59
|
+
const closeAfterExecution: PikkuMiddleware = async (_services, interaction, next) => {
|
|
60
|
+
try {
|
|
61
|
+
const result = await next()
|
|
62
|
+
return result
|
|
63
|
+
} finally {
|
|
64
|
+
// Close the channel after function completes
|
|
65
|
+
if (interaction.channel) {
|
|
66
|
+
await interaction.channel.close()
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
wireChannel({
|
|
72
|
+
name: '${finalChannelName}',
|
|
73
|
+
route: '${finalChannelRoute}',
|
|
74
|
+
auth: false,
|
|
75
|
+
middleware: [closeAfterExecution],
|
|
76
|
+
onMessageWiring: {
|
|
77
|
+
command: {
|
|
78
|
+
${commandEntries}
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
tags: ['cli', '${programName}']
|
|
82
|
+
})
|
|
83
|
+
`;
|
|
84
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates type definitions for CLI wirings
|
|
3
|
+
*/
|
|
4
|
+
export declare const serializeCLITypes: (functionTypesImportPath: string, userSessionTypeImport: string, userSessionTypeName: string, singletonServicesTypeImport: string, singletonServicesTypeName: string) => string;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates type definitions for CLI wirings
|
|
3
|
+
*/
|
|
4
|
+
export const serializeCLITypes = (functionTypesImportPath, userSessionTypeImport, userSessionTypeName, singletonServicesTypeImport, singletonServicesTypeName) => {
|
|
5
|
+
return `/**
|
|
6
|
+
* This file was generated by the @pikku/cli
|
|
7
|
+
* CLI-specific type definitions for tree-shaking optimization
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { CoreCLI, wireCLI as wireCLICore, CorePikkuCLIRender, CoreCLICommandConfig } from '@pikku/core'
|
|
11
|
+
import type { PikkuFunctionConfig, PikkuMiddleware } from '${functionTypesImportPath}'
|
|
12
|
+
${userSessionTypeImport}
|
|
13
|
+
${singletonServicesTypeImport}
|
|
14
|
+
|
|
15
|
+
${singletonServicesTypeName !== 'SingletonServices' ? `type SingletonServices = ${singletonServicesTypeName}` : ''}
|
|
16
|
+
${userSessionTypeName !== 'Session' ? `type Session = ${userSessionTypeName}` : ''}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Type-safe CLI renderer definition that can access your application's services.
|
|
20
|
+
* Use this to define custom renderers for CLI command output.
|
|
21
|
+
*
|
|
22
|
+
* @template Data - The output data type from the CLI command
|
|
23
|
+
* @template RequiredServices - The services required for this renderer
|
|
24
|
+
*/
|
|
25
|
+
type PikkuCLIRender<Data, RequiredServices extends SingletonServices = SingletonServices> = CorePikkuCLIRender<Data, RequiredServices, Session>
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* CLI command configuration with project-specific types.
|
|
29
|
+
* Uses CoreCLICommandConfig from @pikku/core with local middleware and render types.
|
|
30
|
+
*/
|
|
31
|
+
type CLICommandConfig<Func extends PikkuFunctionConfig<any, any>> = CoreCLICommandConfig<Func, PikkuMiddleware, PikkuCLIRender<any>>
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Result type for CLI command configuration
|
|
35
|
+
*/
|
|
36
|
+
type CLICommandResult<Func extends PikkuFunctionConfig<any, any>> = CLICommandConfig<Func>
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Type definition for CLI applications with commands and global options.
|
|
40
|
+
*
|
|
41
|
+
* @template Commands - Type describing the command structure
|
|
42
|
+
* @template GlobalOptions - Type for global CLI options
|
|
43
|
+
*/
|
|
44
|
+
type CLIWiring<Commands extends Record<string, CoreCLICommandConfig<any, PikkuMiddleware, PikkuCLIRender<any>>>, GlobalOptions> = CoreCLI<Commands, GlobalOptions, PikkuMiddleware, PikkuCLIRender<any>>
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Registers a CLI application with the Pikku framework.
|
|
48
|
+
* Creates command-line interfaces with type-safe commands and options.
|
|
49
|
+
*
|
|
50
|
+
* @template Commands - Type describing the command structure
|
|
51
|
+
* @template GlobalOptions - Type for global CLI options
|
|
52
|
+
* @param cli - CLI definition with program name, commands, and global options
|
|
53
|
+
*/
|
|
54
|
+
export const wireCLI = <Commands extends Record<string, CoreCLICommandConfig<any, PikkuMiddleware, PikkuCLIRender<any>>>, GlobalOptions>(
|
|
55
|
+
cli: CLIWiring<Commands, GlobalOptions>
|
|
56
|
+
) => {
|
|
57
|
+
wireCLICore(cli as any)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Creates a CLI command definition with automatic option inference from the function's input type.
|
|
62
|
+
* This allows TypeScript to automatically derive CLI options from the function signature.
|
|
63
|
+
*
|
|
64
|
+
* @template Func - The Pikku function config type to create a CLI command for
|
|
65
|
+
* @param config - CLI command configuration
|
|
66
|
+
* @returns CLI command configuration with inferred types
|
|
67
|
+
*/
|
|
68
|
+
export const pikkuCLICommand = <Func extends PikkuFunctionConfig<any, any>>(
|
|
69
|
+
config: CLICommandConfig<Func>
|
|
70
|
+
): CLICommandResult<Func> => {
|
|
71
|
+
return config as any
|
|
72
|
+
}
|
|
73
|
+
`;
|
|
74
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Config } from '../../../../types/application-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Serializes the local (in-program) CLI bootstrap code
|
|
4
|
+
*/
|
|
5
|
+
export declare function serializeLocalCLIBootstrap(programName: string, _programMeta: any, bootstrapFile: string, config: Config, pikkuConfigFactory: {
|
|
6
|
+
file: string;
|
|
7
|
+
variable: string;
|
|
8
|
+
}, singletonServicesFactory: {
|
|
9
|
+
file: string;
|
|
10
|
+
variable: string;
|
|
11
|
+
}, sessionServicesFactory: {
|
|
12
|
+
file: string;
|
|
13
|
+
variable: string;
|
|
14
|
+
}): string;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
2
|
+
/**
|
|
3
|
+
* Serializes the local (in-program) CLI bootstrap code
|
|
4
|
+
*/
|
|
5
|
+
export function serializeLocalCLIBootstrap(programName, _programMeta, bootstrapFile, config, pikkuConfigFactory, singletonServicesFactory, sessionServicesFactory) {
|
|
6
|
+
const capitalizedName = programName.charAt(0).toUpperCase() + programName.slice(1).replace(/-/g, '');
|
|
7
|
+
// Get relative import paths
|
|
8
|
+
const pikkuConfigPath = getFileImportRelativePath(bootstrapFile, pikkuConfigFactory.file, config.packageMappings);
|
|
9
|
+
const singletonServicesPath = getFileImportRelativePath(bootstrapFile, singletonServicesFactory.file, config.packageMappings);
|
|
10
|
+
const sessionServicesPath = getFileImportRelativePath(bootstrapFile, sessionServicesFactory.file, config.packageMappings);
|
|
11
|
+
const cliBootstrapPath = getFileImportRelativePath(bootstrapFile, config.bootstrapFiles.cli, config.packageMappings);
|
|
12
|
+
return `/**
|
|
13
|
+
* This file was generated by the @pikku/cli
|
|
14
|
+
*/
|
|
15
|
+
import { executeCLI } from '@pikku/core'
|
|
16
|
+
import { ${pikkuConfigFactory.variable} as createConfig } from '${pikkuConfigPath}'
|
|
17
|
+
import { ${singletonServicesFactory.variable} as createSingletonServices } from '${singletonServicesPath}'
|
|
18
|
+
import { ${sessionServicesFactory.variable} as createSessionServices } from '${sessionServicesPath}'
|
|
19
|
+
import '${cliBootstrapPath}'
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* ${capitalizedName} CLI function
|
|
23
|
+
* Handles command line arguments and executes the appropriate function
|
|
24
|
+
*/
|
|
25
|
+
export async function ${capitalizedName}CLI(args?: string[]): Promise<void> {
|
|
26
|
+
await executeCLI({
|
|
27
|
+
programName: '${programName}',
|
|
28
|
+
args,
|
|
29
|
+
createConfig,
|
|
30
|
+
createSingletonServices,
|
|
31
|
+
createSessionServices,
|
|
32
|
+
})
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Export as default for easy importing
|
|
36
|
+
export default ${capitalizedName}CLI
|
|
37
|
+
|
|
38
|
+
// For direct execution (if this file is run directly)
|
|
39
|
+
if (import.meta.url === \`file://\${process.argv[1]}\`) {
|
|
40
|
+
${capitalizedName}CLI().catch(error => {
|
|
41
|
+
console.error('Fatal error:', error.message)
|
|
42
|
+
process.exit(1)
|
|
43
|
+
})
|
|
44
|
+
}
|
|
45
|
+
`;
|
|
46
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const pikkuFetch: any;
|