@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,77 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { LogLevel } from '@pikku/core';
|
|
3
|
+
const logo = `
|
|
4
|
+
______ _ _ _
|
|
5
|
+
(_____ (_) | | |
|
|
6
|
+
_____) )| | _| | _ _ _
|
|
7
|
+
| ____/ | |_/ ) |_/ ) | | |
|
|
8
|
+
| | | | _ (| _ (| _ (| |_| |
|
|
9
|
+
|_| |_|_| _)_| _)____/
|
|
10
|
+
`;
|
|
11
|
+
const BASE_ERROR_URL = 'https://pikku.dev/errors';
|
|
12
|
+
export class CLILogger {
|
|
13
|
+
silent;
|
|
14
|
+
level = LogLevel.info;
|
|
15
|
+
criticalErrors = [];
|
|
16
|
+
constructor({ logLogo, silent = false, }) {
|
|
17
|
+
this.silent = silent;
|
|
18
|
+
if (logLogo && !silent) {
|
|
19
|
+
this.logPikkuLogo();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
setLevel(level) {
|
|
23
|
+
this.level = level;
|
|
24
|
+
}
|
|
25
|
+
info(message) {
|
|
26
|
+
if (this.level > LogLevel.info || this.silent)
|
|
27
|
+
return;
|
|
28
|
+
let c = chalk.blue;
|
|
29
|
+
if (typeof message === 'object') {
|
|
30
|
+
if (message.type === 'success') {
|
|
31
|
+
c = chalk.green;
|
|
32
|
+
}
|
|
33
|
+
else if (message.type === 'timing') {
|
|
34
|
+
c = chalk.gray;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
console.log(c(typeof message === 'string' ? message : message.message));
|
|
38
|
+
}
|
|
39
|
+
error(message) {
|
|
40
|
+
if (this.level > LogLevel.error)
|
|
41
|
+
return;
|
|
42
|
+
console.error(chalk.red(message));
|
|
43
|
+
}
|
|
44
|
+
warn(message) {
|
|
45
|
+
if (this.level > LogLevel.warn)
|
|
46
|
+
return;
|
|
47
|
+
console.error(chalk.yellow(message));
|
|
48
|
+
}
|
|
49
|
+
debug(message) {
|
|
50
|
+
if (this.level > LogLevel.debug || this.silent)
|
|
51
|
+
return;
|
|
52
|
+
console.log(chalk.gray(message));
|
|
53
|
+
}
|
|
54
|
+
critical(code, message) {
|
|
55
|
+
const url = `${BASE_ERROR_URL}/${code.toLowerCase()}`;
|
|
56
|
+
const formattedMessage = `[${code}] ${message}\n → ${url}`;
|
|
57
|
+
this.criticalErrors.push(formattedMessage);
|
|
58
|
+
console.error(chalk.red.bold(formattedMessage));
|
|
59
|
+
}
|
|
60
|
+
hasCriticalErrors() {
|
|
61
|
+
return this.criticalErrors.length > 0;
|
|
62
|
+
}
|
|
63
|
+
logPikkuLogo() {
|
|
64
|
+
this.primary(logo);
|
|
65
|
+
// // When running from dist/, __filename is dist/src/services/cli-logger.service.js
|
|
66
|
+
// // So we need to go up 3 levels: dist/src/services -> dist/src -> dist -> package.json
|
|
67
|
+
// const packageJson = JSON.parse(
|
|
68
|
+
// readFileSync(`${dirname(__filename)}/../../../package.json`, 'utf-8')
|
|
69
|
+
// )
|
|
70
|
+
// this.primary(`⚙️ Welcome to the Pikku CLI (v${packageJson.version})\n`)
|
|
71
|
+
}
|
|
72
|
+
primary(message) {
|
|
73
|
+
if (!this.silent) {
|
|
74
|
+
console.log(chalk.green(message));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Config, Services, SingletonServices, UserSession } from '../types/application-types.js';
|
|
2
|
+
import { CreateConfig, CreateSessionServices, CreateSingletonServices } from '@pikku/core';
|
|
3
|
+
import { PikkuCLIConfig } from '../types/config.js';
|
|
4
|
+
import { ForwardedLogMessage } from './services/cli-logger-forwarder.service.js';
|
|
5
|
+
/**
|
|
6
|
+
* Default CLI renderer that logs output using the logger
|
|
7
|
+
*/
|
|
8
|
+
export declare const defaultCLIRenderer: import("@pikku/core").CorePikkuCLIRender<ForwardedLogMessage, SingletonServices, import("@pikku/core").CoreUserSession>;
|
|
9
|
+
/**
|
|
10
|
+
* Client-safe CLI renderer that outputs to console (no service dependencies)
|
|
11
|
+
* This renderer can be used in CLI-over-channel clients
|
|
12
|
+
*/
|
|
13
|
+
export declare const clientCLIRenderer: import("@pikku/core").CorePikkuCLIRender<ForwardedLogMessage, import("@pikku/core").CoreServices, import("@pikku/core").CoreUserSession>;
|
|
14
|
+
export declare const createConfig: CreateConfig<Config, [PikkuCLIConfig]>;
|
|
15
|
+
/**
|
|
16
|
+
* Singleton services factory for the Pikku CLI
|
|
17
|
+
* This function creates the singleton services used by the CLI and is created once on start.
|
|
18
|
+
*/
|
|
19
|
+
export declare const createSingletonServices: CreateSingletonServices<Config, SingletonServices>;
|
|
20
|
+
export declare const createSessionServices: CreateSessionServices<SingletonServices, Services, UserSession>;
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { pikkuCLIRender } from '@pikku/core/cli';
|
|
2
|
+
import { LocalVariablesService } from '@pikku/core/services';
|
|
3
|
+
import { CLILogger } from './services/cli-logger.service.js';
|
|
4
|
+
import { getPikkuCLIConfig } from './utils/pikku-cli-config.js';
|
|
5
|
+
import { inspect, serializeInspectorState, deserializeInspectorState, filterInspectorState, } from '@pikku/inspector';
|
|
6
|
+
import { glob } from 'tinyglobby';
|
|
7
|
+
import path from 'path';
|
|
8
|
+
import { CLILoggerForwarder, } from './services/cli-logger-forwarder.service.js';
|
|
9
|
+
import { readFile, writeFile } from 'fs/promises';
|
|
10
|
+
const logger = new CLILogger({ logLogo: true, silent: false });
|
|
11
|
+
/**
|
|
12
|
+
* Parse a comma-separated string or array into an array of trimmed, non-empty strings
|
|
13
|
+
* Returns undefined if the input is empty/undefined or results in an empty array
|
|
14
|
+
*/
|
|
15
|
+
function parseCommaSeparated(value) {
|
|
16
|
+
if (!value)
|
|
17
|
+
return undefined;
|
|
18
|
+
// If already an array, flatten and split any comma-separated values
|
|
19
|
+
if (Array.isArray(value)) {
|
|
20
|
+
const flattened = value
|
|
21
|
+
.flatMap((item) => item.split(','))
|
|
22
|
+
.map((item) => item.trim())
|
|
23
|
+
.filter((item) => item.length > 0);
|
|
24
|
+
return flattened.length > 0 ? flattened : undefined;
|
|
25
|
+
}
|
|
26
|
+
// If string, split by comma
|
|
27
|
+
const parsed = value
|
|
28
|
+
.split(',')
|
|
29
|
+
.map((item) => item.trim())
|
|
30
|
+
.filter((item) => item.length > 0);
|
|
31
|
+
return parsed.length > 0 ? parsed : undefined;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Parse CLI filter arguments into InspectorFilters format
|
|
35
|
+
*/
|
|
36
|
+
function parseCLIFilters(data) {
|
|
37
|
+
const filters = {};
|
|
38
|
+
if (data.filters) {
|
|
39
|
+
return JSON.parse(data.filters);
|
|
40
|
+
}
|
|
41
|
+
// Parse each filter type from CLI arguments
|
|
42
|
+
const names = parseCommaSeparated(data.names);
|
|
43
|
+
const tags = parseCommaSeparated(data.tags);
|
|
44
|
+
const types = parseCommaSeparated(data.types);
|
|
45
|
+
const directories = parseCommaSeparated(data.directories);
|
|
46
|
+
const httpRoutes = parseCommaSeparated(data.httpRoutes);
|
|
47
|
+
const httpMethods = parseCommaSeparated(data.httpMethods);
|
|
48
|
+
// Only include non-undefined values in the result
|
|
49
|
+
if (names)
|
|
50
|
+
filters.names = names;
|
|
51
|
+
if (tags)
|
|
52
|
+
filters.tags = tags;
|
|
53
|
+
if (types)
|
|
54
|
+
filters.types = types;
|
|
55
|
+
if (directories)
|
|
56
|
+
filters.directories = directories;
|
|
57
|
+
if (httpRoutes)
|
|
58
|
+
filters.httpRoutes = httpRoutes;
|
|
59
|
+
if (httpMethods)
|
|
60
|
+
filters.httpMethods = httpMethods;
|
|
61
|
+
return filters;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Default CLI renderer that logs output using the logger
|
|
65
|
+
*/
|
|
66
|
+
export const defaultCLIRenderer = pikkuCLIRender((_services, data) => {
|
|
67
|
+
if (data) {
|
|
68
|
+
logger[data.level]({ message: data.message, type: data.type });
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
/**
|
|
72
|
+
* Client-safe CLI renderer that outputs to console (no service dependencies)
|
|
73
|
+
* This renderer can be used in CLI-over-channel clients
|
|
74
|
+
*/
|
|
75
|
+
export const clientCLIRenderer = pikkuCLIRender((_services, data) => {
|
|
76
|
+
if (data) {
|
|
77
|
+
// Simple console output without service dependencies
|
|
78
|
+
const prefix = data.type ? `[${data.type}] ` : '';
|
|
79
|
+
console.log(`${prefix}${data.message}`);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
export const createConfig = async (_variablesService, data) => {
|
|
83
|
+
const cliConfig = await getPikkuCLIConfig(logger, data.configFile, [], true);
|
|
84
|
+
// Load inspector state from file if stateInput is provided
|
|
85
|
+
let preloadedInspectorState = undefined;
|
|
86
|
+
if (data.stateInput) {
|
|
87
|
+
try {
|
|
88
|
+
logger.info(`Loading inspector state from ${data.stateInput}`);
|
|
89
|
+
const stateJson = await readFile(data.stateInput, 'utf-8');
|
|
90
|
+
const serializedState = JSON.parse(stateJson);
|
|
91
|
+
preloadedInspectorState = deserializeInspectorState(serializedState);
|
|
92
|
+
logger.info(`Inspector state loaded successfully`);
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
logger.error(`Failed to load inspector state from ${data.stateInput}: ${error.message}`);
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
...cliConfig,
|
|
101
|
+
...data,
|
|
102
|
+
filters: parseCLIFilters(data),
|
|
103
|
+
preloadedInspectorState,
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Singleton services factory for the Pikku CLI
|
|
108
|
+
* This function creates the singleton services used by the CLI and is created once on start.
|
|
109
|
+
*/
|
|
110
|
+
export const createSingletonServices = async (config) => {
|
|
111
|
+
const { rootDir, srcDirectories, filters, preloadedInspectorState, stateOutput, } = config;
|
|
112
|
+
const variables = new LocalVariablesService();
|
|
113
|
+
// Store unfiltered state
|
|
114
|
+
let unfilteredState = preloadedInspectorState;
|
|
115
|
+
const getInspectorState = async (refresh = false) => {
|
|
116
|
+
// Get or refresh the unfiltered state
|
|
117
|
+
if (!unfilteredState || refresh) {
|
|
118
|
+
// Run inspector WITHOUT filters to get full state
|
|
119
|
+
const wiringFiles = (await Promise.all(srcDirectories.map((dir) => glob(`${path.join(rootDir, dir)}/**/*.ts`)))).flat();
|
|
120
|
+
unfilteredState = await inspect(logger, wiringFiles, {
|
|
121
|
+
// NO filters here - inspector returns full unfiltered state
|
|
122
|
+
types: {
|
|
123
|
+
configFileType: config.configFile,
|
|
124
|
+
userSessionType: config.userSessionType,
|
|
125
|
+
singletonServicesFactoryType: config.singletonServicesFactoryType,
|
|
126
|
+
sessionServicesFactoryType: config.sessionServicesFactoryType,
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
// Save unfiltered inspector state to file if stateOutput is provided
|
|
130
|
+
if (stateOutput && 'typesLookup' in unfilteredState) {
|
|
131
|
+
try {
|
|
132
|
+
logger.info(`Saving inspector state to ${stateOutput}`);
|
|
133
|
+
const serialized = serializeInspectorState(unfilteredState);
|
|
134
|
+
await writeFile(stateOutput, JSON.stringify(serialized, null, 2), 'utf-8');
|
|
135
|
+
logger.info(`Inspector state saved successfully`);
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
logger.error(`Failed to save inspector state to ${stateOutput}: ${error.message}`);
|
|
139
|
+
// Don't throw - state saving is optional/nice-to-have
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// Apply filters as a post-processing step
|
|
144
|
+
const filteredState = filterInspectorState(unfilteredState, filters, logger);
|
|
145
|
+
return filteredState;
|
|
146
|
+
};
|
|
147
|
+
return {
|
|
148
|
+
config,
|
|
149
|
+
logger,
|
|
150
|
+
variables,
|
|
151
|
+
getInspectorState,
|
|
152
|
+
};
|
|
153
|
+
};
|
|
154
|
+
export const createSessionServices = async ({ logger }, { cli, channel }) => {
|
|
155
|
+
const vChannel = cli ? cli.channel : channel;
|
|
156
|
+
if (!vChannel) {
|
|
157
|
+
throw new Error('No channel provided for CLI services');
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
logger: new CLILoggerForwarder(logger, vChannel),
|
|
161
|
+
};
|
|
162
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FilesAndMethodsErrors } from '@pikku/inspector';
|
|
2
|
+
export type RequiredTypes = Partial<{
|
|
3
|
+
config: boolean;
|
|
4
|
+
sessionServiceType: boolean;
|
|
5
|
+
singletonServicesType: boolean;
|
|
6
|
+
userSessionType: boolean;
|
|
7
|
+
singletonServicesFactory: boolean;
|
|
8
|
+
sessionServicesFactory: boolean;
|
|
9
|
+
}>;
|
|
10
|
+
export declare const checkRequiredTypes: (errors: FilesAndMethodsErrors, requires?: RequiredTypes) => void;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export const checkRequiredTypes = (errors, requires = {}) => {
|
|
2
|
+
// Only throw if there are errors AND we require those types
|
|
3
|
+
const hasRequiredErrors = Array.from(errors.keys()).some((message) => {
|
|
4
|
+
if (requires.config && message.includes('CoreConfig'))
|
|
5
|
+
return true;
|
|
6
|
+
if (requires.sessionServiceType && message.includes('CoreServices'))
|
|
7
|
+
return true;
|
|
8
|
+
if (requires.singletonServicesType &&
|
|
9
|
+
message.includes('CoreSingletonServices'))
|
|
10
|
+
return true;
|
|
11
|
+
if (requires.userSessionType && message.includes('CoreUserSession'))
|
|
12
|
+
return true;
|
|
13
|
+
if (requires.singletonServicesFactory &&
|
|
14
|
+
message.includes('CreateSingletonServices'))
|
|
15
|
+
return true;
|
|
16
|
+
if (requires.sessionServicesFactory &&
|
|
17
|
+
message.includes('CreateSessionServices'))
|
|
18
|
+
return true;
|
|
19
|
+
return false;
|
|
20
|
+
});
|
|
21
|
+
if (hasRequiredErrors) {
|
|
22
|
+
const result = ['Found errors:'];
|
|
23
|
+
errors.forEach((filesAndMethods, message) => {
|
|
24
|
+
result.push(`- ${message}`);
|
|
25
|
+
filesAndMethods.forEach((methods, file) => {
|
|
26
|
+
result.push(`\t* methods: ${methods.map(({ variable, type }) => `${variable}: ${type}`).join(', ')}`);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
throw new Error(result.join('\n'));
|
|
30
|
+
}
|
|
31
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export function generateCustomTypes(typesMap, requiredTypes) {
|
|
2
|
+
return `
|
|
3
|
+
// Custom types are those that are defined directly within generics
|
|
4
|
+
// or are broken into simpler types
|
|
5
|
+
${Array.from(typesMap.customTypes.entries())
|
|
6
|
+
.map(([name, { type, references }]) => {
|
|
7
|
+
references.forEach((refName) => {
|
|
8
|
+
// Skip __object types (including those with suffixes like __object_abc123)
|
|
9
|
+
// These are placeholder types created by the inspector for invalid/broken functions
|
|
10
|
+
// (e.g., functions with type errors or missing return statements). Attempting to
|
|
11
|
+
// import these would fail since the source files don't actually export __object.
|
|
12
|
+
if (refName !== '__object' && !refName.startsWith('__object_')) {
|
|
13
|
+
requiredTypes.add(refName);
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
// Extract type names from the type string that might not be in references
|
|
17
|
+
const typeString = type;
|
|
18
|
+
// Use regex to extract potential type names (PascalCase identifiers)
|
|
19
|
+
const typeNameRegex = /\b[A-Z][a-zA-Z0-9]*\b/g;
|
|
20
|
+
const potentialTypes = typeString.match(typeNameRegex) || [];
|
|
21
|
+
potentialTypes.forEach((typeName) => {
|
|
22
|
+
// Skip string literals and common keywords
|
|
23
|
+
if (typeString.includes(`"${typeName}"`) ||
|
|
24
|
+
['Pick', 'Omit', 'Partial', 'Required', 'Record', 'Readonly'].includes(typeName)) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
// Try to find this type in the typesMap and add it if found
|
|
28
|
+
try {
|
|
29
|
+
const typeMeta = typesMap.getTypeMeta(typeName);
|
|
30
|
+
if (typeMeta.path) {
|
|
31
|
+
// Add originalName to preserve canonical import name
|
|
32
|
+
requiredTypes.add(typeMeta.originalName);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch (e) {
|
|
36
|
+
// Type not found in map (ambient/builtin type) - ignore it
|
|
37
|
+
// Do NOT add to requiredTypes to avoid crashes in serializeImportMap
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
return `export type ${name} = ${type}`;
|
|
41
|
+
})
|
|
42
|
+
.join('\n')}`;
|
|
43
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getFileImportRelativePath: (from: string, to: string, packageMappings: Record<string, string>) => string;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { relative, dirname, resolve } from 'path';
|
|
2
|
+
export const getFileImportRelativePath = (from, to, packageMappings) => {
|
|
3
|
+
let filePath = relative(dirname(from), to);
|
|
4
|
+
if (!/^\.+\//.test(filePath)) {
|
|
5
|
+
filePath = `./${filePath}`;
|
|
6
|
+
}
|
|
7
|
+
// If the path includes node_modules, strip everything before and including node_modules/
|
|
8
|
+
if (filePath.includes('node_modules')) {
|
|
9
|
+
const nodeModulesIndex = filePath.indexOf('node_modules/');
|
|
10
|
+
if (nodeModulesIndex !== -1) {
|
|
11
|
+
filePath = filePath.substring(nodeModulesIndex + 'node_modules/'.length);
|
|
12
|
+
}
|
|
13
|
+
return filePath.replace('.ts', '.js');
|
|
14
|
+
}
|
|
15
|
+
const absolutePath = resolve(dirname(from), to);
|
|
16
|
+
const fromAbsolutePath = resolve(dirname(from));
|
|
17
|
+
// Check if both files are in the same package directory
|
|
18
|
+
// If so, skip packageMappings to use relative paths
|
|
19
|
+
let inSamePackage = false;
|
|
20
|
+
for (const [path] of Object.entries(packageMappings)) {
|
|
21
|
+
if (absolutePath.includes(path) && fromAbsolutePath.includes(path)) {
|
|
22
|
+
inSamePackage = true;
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// Only apply packageMappings if files are not in the same package
|
|
27
|
+
if (!inSamePackage) {
|
|
28
|
+
// let usesPackageName = false
|
|
29
|
+
for (const [path, packageName] of Object.entries(packageMappings)) {
|
|
30
|
+
if (absolutePath.includes(path)) {
|
|
31
|
+
// usesPackageName = true
|
|
32
|
+
// Use string slicing instead of regex to avoid ReDoS and ensure correct behavior
|
|
33
|
+
const pathIndex = absolutePath.indexOf(path);
|
|
34
|
+
filePath = packageName + absolutePath.slice(pathIndex + path.length);
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// if (usesPackageName) {
|
|
40
|
+
// return filePath.replace('.ts', '')
|
|
41
|
+
// }
|
|
42
|
+
return filePath.replace('.ts', '.js');
|
|
43
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const serializeFileImports: (importType: string, outputPath: string, files: Set<string>, packageMappings?: Record<string, string>) => string;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { getFileImportRelativePath } from './file-import-path.js';
|
|
2
|
+
export const serializeFileImports = (importType, outputPath, files, packageMappings = {}) => {
|
|
3
|
+
const serializedOutput = [
|
|
4
|
+
`/* The files with an ${importType} function call */`,
|
|
5
|
+
];
|
|
6
|
+
Array.from(files)
|
|
7
|
+
.sort()
|
|
8
|
+
.forEach((path) => {
|
|
9
|
+
const filePath = getFileImportRelativePath(outputPath, path, packageMappings);
|
|
10
|
+
serializedOutput.push(`import '${filePath}'`);
|
|
11
|
+
});
|
|
12
|
+
return serializedOutput.join('\n');
|
|
13
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { CLILogger } from '../services/cli-logger.service.js';
|
|
2
|
+
export declare const DO_NOT_MODIFY_COMMENT: string;
|
|
3
|
+
export declare const writeFileInDir: (logger: CLILogger, path: string, content: string, { ignoreModifyComment, logWrite, }?: {
|
|
4
|
+
ignoreModifyComment?: boolean;
|
|
5
|
+
logWrite?: boolean;
|
|
6
|
+
}) => Promise<void>;
|
|
7
|
+
export declare const removeFileInDir: (logger: CLILogger, path: string, { logRemove }?: {
|
|
8
|
+
logRemove?: boolean;
|
|
9
|
+
}) => Promise<void>;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { dirname } from 'path';
|
|
2
|
+
import { mkdir, readFile, writeFile, rm } from 'fs/promises';
|
|
3
|
+
import { existsSync } from 'fs';
|
|
4
|
+
import { getCLIVersion } from './get-cli-version.js';
|
|
5
|
+
export const DO_NOT_MODIFY_COMMENT = `/**
|
|
6
|
+
* This file was generated by @pikku/cli@${getCLIVersion()}
|
|
7
|
+
*/
|
|
8
|
+
`;
|
|
9
|
+
export const writeFileInDir = async (logger, path, content, { ignoreModifyComment = false, logWrite = true, } = {}) => {
|
|
10
|
+
if (path.includes('.json')) {
|
|
11
|
+
ignoreModifyComment = true;
|
|
12
|
+
}
|
|
13
|
+
if (content.includes('server-only')) {
|
|
14
|
+
content = content.replace("'server-only'", `'server-only'\n\n${ignoreModifyComment ? '' : DO_NOT_MODIFY_COMMENT}`);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
content = `${ignoreModifyComment ? '' : DO_NOT_MODIFY_COMMENT}${content}`;
|
|
18
|
+
}
|
|
19
|
+
// Try to read existing file content
|
|
20
|
+
let existingContent;
|
|
21
|
+
try {
|
|
22
|
+
existingContent = await readFile(path, 'utf-8');
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
// Only suppress ENOENT (file not found) errors
|
|
26
|
+
// Rethrow permission, I/O, encoding, or other errors
|
|
27
|
+
const nodeError = error;
|
|
28
|
+
if (nodeError.code !== 'ENOENT') {
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
// File doesn't exist, so we need to write it
|
|
32
|
+
}
|
|
33
|
+
// Only write if content has changed or file doesn't exist
|
|
34
|
+
if (existingContent !== content) {
|
|
35
|
+
await mkdir(dirname(path), { recursive: true });
|
|
36
|
+
await writeFile(path, content, 'utf-8');
|
|
37
|
+
if (logWrite) {
|
|
38
|
+
logger.info({ message: `✓ File written to ${path}`, type: 'success' });
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
export const removeFileInDir = async (logger, path, { logRemove = true } = {}) => {
|
|
43
|
+
// Check if file exists before attempting removal
|
|
44
|
+
if (existsSync(path)) {
|
|
45
|
+
await rm(path, { force: true });
|
|
46
|
+
if (logRemove) {
|
|
47
|
+
logger.info({ message: `✓ File removed at ${path}`, type: 'success' });
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { Config } from '../../types/application-types.js';
|
|
2
|
+
import { CLILogger } from '../services/cli-logger.service.js';
|
|
3
|
+
export declare const generateBootstrapFile: (logger: CLILogger, config: Config, bootstrapFile: string, specificImports: string[], schemas?: boolean, hasMiddleware?: boolean) => Promise<void>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { getFileImportRelativePath } from './file-import-path.js';
|
|
2
|
+
import { writeFileInDir } from './file-writer.js';
|
|
3
|
+
export const generateBootstrapFile = async (logger, config, bootstrapFile, specificImports, schemas, hasMiddleware) => {
|
|
4
|
+
// Common imports that every bootstrap file needs
|
|
5
|
+
const commonImports = [];
|
|
6
|
+
// Add middleware first (must be registered before functions meta)
|
|
7
|
+
if (hasMiddleware) {
|
|
8
|
+
commonImports.push(config.middlewareFile);
|
|
9
|
+
}
|
|
10
|
+
commonImports.push(config.functionsMetaMinFile, config.functionsFile);
|
|
11
|
+
// Add schema if it exists
|
|
12
|
+
if (schemas) {
|
|
13
|
+
commonImports.push(`${config.schemaDirectory}/register.gen.ts`);
|
|
14
|
+
}
|
|
15
|
+
// Combine common imports with specific imports
|
|
16
|
+
const allImports = [...commonImports, ...specificImports];
|
|
17
|
+
await writeFileInDir(logger, bootstrapFile, allImports
|
|
18
|
+
.map((to) => `import '${getFileImportRelativePath(bootstrapFile, to, config.packageMappings)}'`)
|
|
19
|
+
.sort((to) => (to.includes('meta') ? -1 : 1)) // Ensure meta files are at the top
|
|
20
|
+
.join('\n'));
|
|
21
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { dirname, join } from 'path';
|
|
2
|
+
import { readFile } from 'fs/promises';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
// Get package version for generated file comments
|
|
5
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
6
|
+
let version = 'unknown';
|
|
7
|
+
try {
|
|
8
|
+
// Try from src/ first (development), then from dist/src/ (built)
|
|
9
|
+
const pkgPath = join(__dirname, '..', '..', 'package.json');
|
|
10
|
+
const pkgJson = JSON.parse(await readFile(pkgPath, 'utf-8'));
|
|
11
|
+
version = pkgJson.version;
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
try {
|
|
15
|
+
const pkgPath = join(__dirname, '..', '..', '..', 'package.json');
|
|
16
|
+
const pkgJson = JSON.parse(await readFile(pkgPath, 'utf-8'));
|
|
17
|
+
version = pkgJson.version;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
// Fallback to unknown if package.json can't be found
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Returns the CLI version string
|
|
25
|
+
* Works from both src/ and dist/src/ locations
|
|
26
|
+
*/
|
|
27
|
+
export const getCLIVersion = () => version;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { PikkuCLIConfig } from '../../types/config.js';
|
|
2
|
+
import { CLILogger } from '../services/cli-logger.service.js';
|
|
3
|
+
export declare const getPikkuCLIConfig: (logger: CLILogger, configFile: string | undefined, requiredFields: Array<keyof PikkuCLIConfig>, exitProcess?: boolean) => Promise<PikkuCLIConfig>;
|
|
4
|
+
export declare const validateCLIConfig: (cliConfig: PikkuCLIConfig, required: Array<keyof PikkuCLIConfig>) => void;
|