@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,303 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates core function, middleware, and permission type definitions
|
|
3
|
+
*/
|
|
4
|
+
export const serializeFunctionTypes = (
|
|
5
|
+
userSessionTypeImport: string,
|
|
6
|
+
userSessionTypeName: string,
|
|
7
|
+
singletonServicesTypeImport: string,
|
|
8
|
+
singletonServicesTypeName: string,
|
|
9
|
+
sessionServicesTypeImport: string,
|
|
10
|
+
sessionServicesTypeName: string,
|
|
11
|
+
rpcMapTypeImport: string
|
|
12
|
+
) => {
|
|
13
|
+
return `/**
|
|
14
|
+
* This file was generated by the @pikku/cli
|
|
15
|
+
* Core function, middleware, and permission types for all wirings
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { CorePikkuFunctionConfig, CorePikkuPermission, CorePikkuMiddleware, addMiddleware as addMiddlewareCore, addPermission as addPermissionCore } from '@pikku/core'
|
|
19
|
+
import { CorePikkuFunction, CorePikkuFunctionSessionless } from '@pikku/core/function'
|
|
20
|
+
import { PikkuChannel, PikkuMCP } from '@pikku/core'
|
|
21
|
+
|
|
22
|
+
${userSessionTypeImport}
|
|
23
|
+
${singletonServicesTypeImport}
|
|
24
|
+
${sessionServicesTypeImport}
|
|
25
|
+
${rpcMapTypeImport}
|
|
26
|
+
|
|
27
|
+
${singletonServicesTypeName !== 'SingletonServices' ? `type SingletonServices = ${singletonServicesTypeName}` : ''}
|
|
28
|
+
${sessionServicesTypeName !== 'Services' ? `type Services = ${sessionServicesTypeName}` : ''}
|
|
29
|
+
${userSessionTypeName !== 'Session' ? `type Session = ${userSessionTypeName}` : ''}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Type-safe API permission definition that integrates with your application's session type.
|
|
33
|
+
* Use this to define authorization logic for your API endpoints.
|
|
34
|
+
*
|
|
35
|
+
* @template In - The input type that the permission check will receive
|
|
36
|
+
* @template RequiredServices - The services required for this permission check
|
|
37
|
+
*/
|
|
38
|
+
export type PikkuPermission<In = unknown, RequiredServices extends Services = Services> = CorePikkuPermission<In, RequiredServices, Session>
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Type-safe middleware definition that can access your application's services and session.
|
|
42
|
+
* Use this to define reusable middleware that can be applied to multiple wirings.
|
|
43
|
+
*
|
|
44
|
+
* @template RequiredServices - The services required for this middleware
|
|
45
|
+
*/
|
|
46
|
+
export type PikkuMiddleware<RequiredServices extends SingletonServices = SingletonServices> = CorePikkuMiddleware<RequiredServices, Session>
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Factory function for creating permissions with tree-shaking support.
|
|
50
|
+
* This enables the bundler to detect which services your permission actually uses.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* \`\`\`typescript
|
|
54
|
+
* const permission = pikkuPermission(({ logger }, data, session) => {
|
|
55
|
+
* return session?.isAdmin || false
|
|
56
|
+
* })
|
|
57
|
+
* \`\`\`
|
|
58
|
+
*/
|
|
59
|
+
export const pikkuPermission = <In>(func: PikkuPermission<In>) => {
|
|
60
|
+
return func
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Factory function for creating middleware with tree-shaking support.
|
|
65
|
+
* This enables the bundler to detect which services your middleware actually uses.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* \`\`\`typescript
|
|
69
|
+
* const middleware = pikkuMiddleware(({ logger }, interactions, next) => {
|
|
70
|
+
* logger.info('Middleware executed')
|
|
71
|
+
* await next()
|
|
72
|
+
* })
|
|
73
|
+
* \`\`\`
|
|
74
|
+
*/
|
|
75
|
+
export const pikkuMiddleware = (func: PikkuMiddleware) => {
|
|
76
|
+
return func
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Factory function for creating middleware factories
|
|
81
|
+
* Use this when your middleware needs configuration/input parameters
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* \`\`\`typescript
|
|
85
|
+
* export const logMiddleware = pikkuMiddlewareFactory<LogOptions>(({
|
|
86
|
+
* message,
|
|
87
|
+
* level = 'info'
|
|
88
|
+
* }) => {
|
|
89
|
+
* return pikkuMiddleware(async ({ logger }, _interaction, next) => {
|
|
90
|
+
* logger[level](message)
|
|
91
|
+
* await next()
|
|
92
|
+
* })
|
|
93
|
+
* })
|
|
94
|
+
* \`\`\`
|
|
95
|
+
*/
|
|
96
|
+
export const pikkuMiddlewareFactory = <In = any>(
|
|
97
|
+
factory: (input: In) => PikkuMiddleware
|
|
98
|
+
): ((input: In) => PikkuMiddleware) => {
|
|
99
|
+
return factory
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* A sessionless API function that doesn't require user authentication.
|
|
104
|
+
* Use this for public endpoints, health checks, or operations that don't need user context.
|
|
105
|
+
*
|
|
106
|
+
* @template In - The input type
|
|
107
|
+
* @template Out - The output type that the function returns
|
|
108
|
+
* @template ChannelData - Channel data type (null = optional channel)
|
|
109
|
+
* @template MCPData - MCP data type (null = optional MCP)
|
|
110
|
+
* @template RequiredServices - Services required by this function
|
|
111
|
+
*/
|
|
112
|
+
export type PikkuFunctionSessionless<
|
|
113
|
+
In = unknown,
|
|
114
|
+
Out = never,
|
|
115
|
+
ChannelData = null, // null means optional channel
|
|
116
|
+
MCPData = null, // null means optional MCP
|
|
117
|
+
RequiredServices extends Services = Services &
|
|
118
|
+
{ rpc: TypedPikkuRPC } & (
|
|
119
|
+
[ChannelData] extends [null]
|
|
120
|
+
? { channel?: PikkuChannel<unknown, Out> } // Optional channel
|
|
121
|
+
: { channel: PikkuChannel<ChannelData, Out> } // Required channel with any data type
|
|
122
|
+
) & ([MCPData] extends [null]
|
|
123
|
+
? { mcp?: PikkuMCP } // Optional MCP
|
|
124
|
+
: { mcp: PikkuMCP } // Required MCP
|
|
125
|
+
)
|
|
126
|
+
> = CorePikkuFunctionSessionless<In, Out, ChannelData, RequiredServices, Session>
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* A session-aware API function that requires user authentication.
|
|
130
|
+
* Use this for protected endpoints that need access to user session data.
|
|
131
|
+
*
|
|
132
|
+
* @template In - The input type
|
|
133
|
+
* @template Out - The output type that the function returns
|
|
134
|
+
* @template ChannelData - Channel data type (null = optional channel)
|
|
135
|
+
* @template MCPData - MCP data type (null = optional MCP)
|
|
136
|
+
* @template RequiredServices - Services required by this function
|
|
137
|
+
*/
|
|
138
|
+
export type PikkuFunction<
|
|
139
|
+
In = unknown,
|
|
140
|
+
Out = never,
|
|
141
|
+
ChannelData = null, // null means optional channel
|
|
142
|
+
MCPData = null, // null means optional MCP
|
|
143
|
+
RequiredServices extends Services = Omit<Services, 'rpc'> &
|
|
144
|
+
{ rpc: TypedPikkuRPC } & (
|
|
145
|
+
[ChannelData] extends [null]
|
|
146
|
+
? { channel?: PikkuChannel<unknown, Out> } // Optional channel
|
|
147
|
+
: { channel: PikkuChannel<ChannelData, Out> } // Required channel with any data type
|
|
148
|
+
) & ([MCPData] extends [null]
|
|
149
|
+
? { mcp?: PikkuMCP } // Optional MCP
|
|
150
|
+
: { mcp: PikkuMCP } // Required MCP
|
|
151
|
+
)
|
|
152
|
+
> = CorePikkuFunction<In, Out, ChannelData, RequiredServices, Session>
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Configuration object for Pikku functions with optional middleware, permissions, tags, and documentation.
|
|
156
|
+
* This type wraps CorePikkuFunctionConfig with the user's custom types.
|
|
157
|
+
*
|
|
158
|
+
* @template In - The input type
|
|
159
|
+
* @template Out - The output type
|
|
160
|
+
* @template PikkuFunc - The function type (can be narrowed to PikkuFunction or PikkuFunctionSessionless)
|
|
161
|
+
*/
|
|
162
|
+
export type PikkuFunctionConfig<
|
|
163
|
+
In = unknown,
|
|
164
|
+
Out = unknown,
|
|
165
|
+
PikkuFunc extends PikkuFunction<In, Out> | PikkuFunctionSessionless<In, Out> = PikkuFunction<In, Out> | PikkuFunctionSessionless<In, Out>
|
|
166
|
+
> = CorePikkuFunctionConfig<PikkuFunc, PikkuPermission<In>, PikkuMiddleware>
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Creates a Pikku function that can be either session-aware or sessionless.
|
|
170
|
+
* This is the main function wrapper for creating API endpoints.
|
|
171
|
+
*
|
|
172
|
+
* @template In - Input type for the function
|
|
173
|
+
* @template Out - Output type for the function
|
|
174
|
+
* @param func - Function definition, either direct function or configuration object
|
|
175
|
+
* @returns The normalized configuration object
|
|
176
|
+
*
|
|
177
|
+
* @example
|
|
178
|
+
* \\\`\\\`\\\`typescript
|
|
179
|
+
* const createUser = pikkuFunc<{name: string, email: string}, {id: number, message: string}>({
|
|
180
|
+
* func: async ({db, logger}, input) => {
|
|
181
|
+
* logger.info('Creating user', input.name)
|
|
182
|
+
* const user = await db.users.create(input)
|
|
183
|
+
* return {id: user.id, message: \\\`User \\\${input.name} created successfully\\\`}
|
|
184
|
+
* },
|
|
185
|
+
* auth: true
|
|
186
|
+
* })
|
|
187
|
+
* \\\`\\\`\\\`
|
|
188
|
+
*/
|
|
189
|
+
export const pikkuFunc = <In, Out = unknown>(
|
|
190
|
+
func:
|
|
191
|
+
| PikkuFunction<In, Out>
|
|
192
|
+
| CorePikkuFunctionConfig<PikkuFunction<In, Out>, PikkuPermission<In>>
|
|
193
|
+
) => {
|
|
194
|
+
return typeof func === 'function' ? { func } : func
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Creates a sessionless Pikku function that doesn't require user authentication.
|
|
199
|
+
* Use this for public endpoints, webhooks, or background tasks.
|
|
200
|
+
*
|
|
201
|
+
* @template In - Input type for the function
|
|
202
|
+
* @template Out - Output type for the function
|
|
203
|
+
* @param func - Function definition, either direct function or configuration object
|
|
204
|
+
* @returns The normalized configuration object
|
|
205
|
+
*
|
|
206
|
+
* @example
|
|
207
|
+
* \\\`\\\`\\\`typescript
|
|
208
|
+
* const healthCheck = pikkuSessionlessFunc<void, {status: string, timestamp: string}>({
|
|
209
|
+
* func: async ({logger}) => {
|
|
210
|
+
* logger.info('Health check requested')
|
|
211
|
+
* return {status: 'healthy', timestamp: new Date().toISOString()}
|
|
212
|
+
* },
|
|
213
|
+
* name: 'healthCheck'
|
|
214
|
+
* })
|
|
215
|
+
* \\\`\\\`\\\`
|
|
216
|
+
*/
|
|
217
|
+
export const pikkuSessionlessFunc = <In, Out = unknown>(
|
|
218
|
+
func:
|
|
219
|
+
| PikkuFunctionSessionless<In, Out>
|
|
220
|
+
| CorePikkuFunctionConfig<PikkuFunctionSessionless<In, Out>, PikkuPermission<In>, PikkuMiddleware>
|
|
221
|
+
) => {
|
|
222
|
+
return typeof func === 'function' ? { func } : func
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Creates a function that takes no input and returns no output.
|
|
227
|
+
* Useful for health checks, triggers, or cleanup operations.
|
|
228
|
+
*
|
|
229
|
+
* @param func - Function definition, either direct function or configuration object
|
|
230
|
+
* @returns The normalized configuration object
|
|
231
|
+
*
|
|
232
|
+
* @example
|
|
233
|
+
* \\\`\\\`\\\`typescript
|
|
234
|
+
* const cleanupTempFiles = pikkuVoidFunc(async ({fileSystem, logger}) => {
|
|
235
|
+
* logger.info('Starting cleanup of temporary files')
|
|
236
|
+
* await fileSystem.deleteDirectory('/tmp/uploads')
|
|
237
|
+
* logger.info('Cleanup completed')
|
|
238
|
+
* })
|
|
239
|
+
* \\\`\\\`\\\`
|
|
240
|
+
*/
|
|
241
|
+
export const pikkuVoidFunc = (
|
|
242
|
+
func:
|
|
243
|
+
| PikkuFunctionSessionless<void, void>
|
|
244
|
+
| CorePikkuFunctionConfig<PikkuFunctionSessionless<void, void>, PikkuPermission<void>>
|
|
245
|
+
) => {
|
|
246
|
+
return typeof func === 'function' ? { func } : func
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Adds global middleware for a specific tag.
|
|
251
|
+
*
|
|
252
|
+
* This function allows you to register middleware that will be applied to
|
|
253
|
+
* any wiring (HTTP, Channel, Queue, Scheduler, MCP) that includes the matching tag.
|
|
254
|
+
*
|
|
255
|
+
* @param tag - The tag that the middleware should apply to.
|
|
256
|
+
* @param middleware - The middleware array to apply for the specified tag.
|
|
257
|
+
*
|
|
258
|
+
* @throws Error if middleware for the tag already exists.
|
|
259
|
+
*
|
|
260
|
+
* @example
|
|
261
|
+
* \`\`\`typescript
|
|
262
|
+
* // Add admin middleware for admin endpoints
|
|
263
|
+
* addMiddleware('admin', [adminMiddleware])
|
|
264
|
+
*
|
|
265
|
+
* // Add authentication middleware for auth endpoints
|
|
266
|
+
* addMiddleware('auth', [authMiddleware])
|
|
267
|
+
*
|
|
268
|
+
* // Add logging middleware for all API endpoints
|
|
269
|
+
* addMiddleware('api', [loggingMiddleware])
|
|
270
|
+
* \`\`\`
|
|
271
|
+
*/
|
|
272
|
+
export const addMiddleware = (tag: string, middleware: PikkuMiddleware[]) => {
|
|
273
|
+
addMiddlewareCore(tag, middleware as any)
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Adds global permissions for a specific tag.
|
|
278
|
+
*
|
|
279
|
+
* This function allows you to register permissions that will be applied to
|
|
280
|
+
* any wiring (HTTP, Channel, Queue, Scheduler, MCP) that includes the matching tag.
|
|
281
|
+
*
|
|
282
|
+
* @param tag - The tag that the permissions should apply to.
|
|
283
|
+
* @param permissions - The permissions array to apply for the specified tag.
|
|
284
|
+
*
|
|
285
|
+
* @throws Error if permissions for the tag already exist.
|
|
286
|
+
*
|
|
287
|
+
* @example
|
|
288
|
+
* \`\`\`typescript
|
|
289
|
+
* // Add admin permissions for admin endpoints
|
|
290
|
+
* addPermission('admin', [adminPermission])
|
|
291
|
+
*
|
|
292
|
+
* // Add authentication permissions for auth endpoints
|
|
293
|
+
* addPermission('auth', [authPermission])
|
|
294
|
+
*
|
|
295
|
+
* // Add read permissions for all API endpoints
|
|
296
|
+
* addPermission('api', [readPermission])
|
|
297
|
+
* \`\`\`
|
|
298
|
+
*/
|
|
299
|
+
export const addPermission = <In = unknown>(tag: string, permissions: PikkuPermission<In>[]) => {
|
|
300
|
+
addPermissionCore(tag, permissions as any)
|
|
301
|
+
}
|
|
302
|
+
`
|
|
303
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates the main pikku-types.gen.ts file as a re-export hub
|
|
3
|
+
*/
|
|
4
|
+
export const serializePikkuTypesHub = (
|
|
5
|
+
functionTypesImportPath: string,
|
|
6
|
+
httpTypesImportPath: string,
|
|
7
|
+
channelTypesImportPath: string,
|
|
8
|
+
schedulerTypesImportPath: string,
|
|
9
|
+
queueTypesImportPath: string,
|
|
10
|
+
mcpTypesImportPath: string,
|
|
11
|
+
cliTypesImportPath: string
|
|
12
|
+
) => {
|
|
13
|
+
return `/**
|
|
14
|
+
* This file was generated by the @pikku/cli
|
|
15
|
+
* Main type export hub - re-exports all wiring-specific types
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
// Core function, middleware, and permission types
|
|
19
|
+
export * from '${functionTypesImportPath}'
|
|
20
|
+
|
|
21
|
+
// HTTP wiring types
|
|
22
|
+
export * from '${httpTypesImportPath}'
|
|
23
|
+
|
|
24
|
+
// Channel wiring types
|
|
25
|
+
export * from '${channelTypesImportPath}'
|
|
26
|
+
|
|
27
|
+
// Scheduler wiring types
|
|
28
|
+
export * from '${schedulerTypesImportPath}'
|
|
29
|
+
|
|
30
|
+
// Queue wiring types
|
|
31
|
+
export * from '${queueTypesImportPath}'
|
|
32
|
+
|
|
33
|
+
// MCP wiring types
|
|
34
|
+
export * from '${mcpTypesImportPath}'
|
|
35
|
+
|
|
36
|
+
// CLI wiring types
|
|
37
|
+
export * from '${cliTypesImportPath}'
|
|
38
|
+
`
|
|
39
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { FunctionsMeta, HTTPWiringsMeta, pikkuState } from '@pikku/core'
|
|
2
2
|
import _convertSchema from '@openapi-contrib/json-schema-to-openapi-schema'
|
|
3
|
+
import { CLILogger } from '../../../services/cli-logger.service.js'
|
|
3
4
|
const convertSchema =
|
|
4
5
|
'default' in _convertSchema ? (_convertSchema.default as any) : _convertSchema
|
|
5
6
|
|
|
@@ -108,6 +109,7 @@ const convertSchemasToBodyPayloads = async (
|
|
|
108
109
|
}
|
|
109
110
|
|
|
110
111
|
export async function generateOpenAPISpec(
|
|
112
|
+
logger: CLILogger,
|
|
111
113
|
functionsMeta: FunctionsMeta,
|
|
112
114
|
httpMeta: HTTPWiringsMeta,
|
|
113
115
|
schemas: Record<string, any>,
|
|
@@ -121,7 +123,7 @@ export async function generateOpenAPISpec(
|
|
|
121
123
|
meta
|
|
122
124
|
const functionMeta = functionsMeta[pikkuFuncName]
|
|
123
125
|
if (!functionMeta) {
|
|
124
|
-
|
|
126
|
+
logger.error(
|
|
125
127
|
`• No function metadata found for '${pikkuFuncName}' in route '${route}'.`
|
|
126
128
|
)
|
|
127
129
|
continue
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js'
|
|
2
|
+
import { writeFileInDir } from '../../../utils/file-writer.js'
|
|
3
|
+
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js'
|
|
4
|
+
import { serializeTypedHTTPWiringsMap } from './serialize-typed-http-map.js'
|
|
5
|
+
|
|
6
|
+
export const pikkuHTTPMap: any = pikkuSessionlessFunc<void, void>({
|
|
7
|
+
func: async ({ logger, config, getInspectorState }) => {
|
|
8
|
+
const { http, functions } = await getInspectorState()
|
|
9
|
+
const { httpMapDeclarationFile, packageMappings } = config
|
|
10
|
+
|
|
11
|
+
const content = serializeTypedHTTPWiringsMap(
|
|
12
|
+
httpMapDeclarationFile,
|
|
13
|
+
packageMappings,
|
|
14
|
+
functions.typesMap,
|
|
15
|
+
functions.meta,
|
|
16
|
+
http.meta,
|
|
17
|
+
http.metaInputTypes
|
|
18
|
+
)
|
|
19
|
+
await writeFileInDir(logger, httpMapDeclarationFile, content)
|
|
20
|
+
},
|
|
21
|
+
middleware: [
|
|
22
|
+
logCommandInfoAndTime({
|
|
23
|
+
commandStart: 'Creating HTTP map',
|
|
24
|
+
commandEnd: 'Created HTTP map',
|
|
25
|
+
skipCondition: async ({ getInspectorState }) => {
|
|
26
|
+
const { http } = await getInspectorState()
|
|
27
|
+
return http.files.size === 0
|
|
28
|
+
},
|
|
29
|
+
skipMessage: 'none found',
|
|
30
|
+
}),
|
|
31
|
+
],
|
|
32
|
+
})
|
|
@@ -0,0 +1,41 @@
|
|
|
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
|
+
|
|
6
|
+
export const pikkuHTTP: any = pikkuSessionlessFunc<void, boolean | undefined>({
|
|
7
|
+
func: async ({ logger, config, getInspectorState }) => {
|
|
8
|
+
const visitState = await getInspectorState()
|
|
9
|
+
const { httpWiringsFile, httpWiringMetaFile, packageMappings } = config
|
|
10
|
+
const { http } = visitState
|
|
11
|
+
|
|
12
|
+
await writeFileInDir(
|
|
13
|
+
logger,
|
|
14
|
+
httpWiringsFile,
|
|
15
|
+
serializeFileImports(
|
|
16
|
+
'wireHTTP',
|
|
17
|
+
httpWiringsFile,
|
|
18
|
+
http.files,
|
|
19
|
+
packageMappings
|
|
20
|
+
)
|
|
21
|
+
)
|
|
22
|
+
await writeFileInDir(
|
|
23
|
+
logger,
|
|
24
|
+
httpWiringMetaFile,
|
|
25
|
+
`import { pikkuState } from '@pikku/core'\npikkuState('http', 'meta', ${JSON.stringify(http.meta, null, 2)})`
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
return true
|
|
29
|
+
},
|
|
30
|
+
middleware: [
|
|
31
|
+
logCommandInfoAndTime({
|
|
32
|
+
commandStart: 'Finding HTTP routes',
|
|
33
|
+
commandEnd: 'Found HTTP routes',
|
|
34
|
+
skipCondition: async ({ getInspectorState }) => {
|
|
35
|
+
const visitState = await getInspectorState()
|
|
36
|
+
return visitState.http.files.size === 0
|
|
37
|
+
},
|
|
38
|
+
skipMessage: 'none found',
|
|
39
|
+
}),
|
|
40
|
+
],
|
|
41
|
+
})
|
|
@@ -0,0 +1,27 @@
|
|
|
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 { serializeHTTPTypes } from './serialize-http-types.js'
|
|
6
|
+
|
|
7
|
+
export const pikkuHTTPTypes: any = pikkuSessionlessFunc<void, void>({
|
|
8
|
+
func: async ({ logger, config }) => {
|
|
9
|
+
const { httpTypesFile, functionTypesFile, packageMappings } = config
|
|
10
|
+
|
|
11
|
+
const functionTypesImportPath = getFileImportRelativePath(
|
|
12
|
+
httpTypesFile,
|
|
13
|
+
functionTypesFile,
|
|
14
|
+
packageMappings
|
|
15
|
+
)
|
|
16
|
+
const content = serializeHTTPTypes(functionTypesImportPath)
|
|
17
|
+
await writeFileInDir(logger, httpTypesFile, content)
|
|
18
|
+
},
|
|
19
|
+
middleware: [
|
|
20
|
+
logCommandInfoAndTime({
|
|
21
|
+
commandStart: 'Creating HTTP types',
|
|
22
|
+
commandEnd: 'Created HTTP types',
|
|
23
|
+
skipCondition: false,
|
|
24
|
+
skipMessage: '',
|
|
25
|
+
}),
|
|
26
|
+
],
|
|
27
|
+
})
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js'
|
|
2
|
+
import { writeFileInDir } from '../../../utils/file-writer.js'
|
|
3
|
+
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js'
|
|
4
|
+
import { generateSchemas } from '../../../utils/schema-generator.js'
|
|
5
|
+
import { generateOpenAPISpec } from './openapi-spec-generator.js'
|
|
6
|
+
import { stringify } from 'yaml'
|
|
7
|
+
|
|
8
|
+
export const pikkuOpenAPI: any = pikkuSessionlessFunc<void, void>({
|
|
9
|
+
func: async ({ logger, config, getInspectorState }) => {
|
|
10
|
+
const { http, functions } = await getInspectorState()
|
|
11
|
+
const { tsconfig, openAPI, schemasFromTypes } = config
|
|
12
|
+
|
|
13
|
+
if (!openAPI?.outputFile) {
|
|
14
|
+
throw new Error('openAPI is required')
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const schemas = await generateSchemas(
|
|
18
|
+
logger,
|
|
19
|
+
tsconfig,
|
|
20
|
+
functions.typesMap,
|
|
21
|
+
functions.meta,
|
|
22
|
+
http.meta,
|
|
23
|
+
schemasFromTypes
|
|
24
|
+
)
|
|
25
|
+
const openAPISpec = await generateOpenAPISpec(
|
|
26
|
+
logger,
|
|
27
|
+
functions.meta,
|
|
28
|
+
http.meta,
|
|
29
|
+
schemas,
|
|
30
|
+
openAPI.additionalInfo
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
if (openAPI.outputFile.endsWith('.json')) {
|
|
34
|
+
await writeFileInDir(
|
|
35
|
+
logger,
|
|
36
|
+
openAPI.outputFile,
|
|
37
|
+
JSON.stringify(openAPISpec, null, 2),
|
|
38
|
+
{ ignoreModifyComment: true }
|
|
39
|
+
)
|
|
40
|
+
} else if (
|
|
41
|
+
openAPI.outputFile.endsWith('.yaml') ||
|
|
42
|
+
openAPI.outputFile.endsWith('.yml')
|
|
43
|
+
) {
|
|
44
|
+
await writeFileInDir(logger, openAPI.outputFile, stringify(openAPISpec), {
|
|
45
|
+
ignoreModifyComment: true,
|
|
46
|
+
})
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
middleware: [
|
|
50
|
+
logCommandInfoAndTime({
|
|
51
|
+
commandStart: 'Creating OpenAPI spec',
|
|
52
|
+
commandEnd: 'Created OpenAPI spec',
|
|
53
|
+
skipCondition: ({ config }) => config.openAPI?.outputFile === undefined,
|
|
54
|
+
skipMessage: 'openAPI outfile is not defined',
|
|
55
|
+
}),
|
|
56
|
+
],
|
|
57
|
+
})
|
|
@@ -0,0 +1,40 @@
|
|
|
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
|
+
|
|
6
|
+
export const pikkuHTTP: any = pikkuSessionlessFunc<void, boolean>({
|
|
7
|
+
func: async ({ logger, config, getInspectorState }) => {
|
|
8
|
+
const visitState = await getInspectorState()
|
|
9
|
+
const { httpWiringsFile, httpWiringMetaFile, packageMappings } = config
|
|
10
|
+
const { http } = visitState
|
|
11
|
+
|
|
12
|
+
await writeFileInDir(
|
|
13
|
+
logger,
|
|
14
|
+
httpWiringsFile,
|
|
15
|
+
serializeFileImports(
|
|
16
|
+
'wireHTTP',
|
|
17
|
+
httpWiringsFile,
|
|
18
|
+
http.files,
|
|
19
|
+
packageMappings
|
|
20
|
+
)
|
|
21
|
+
)
|
|
22
|
+
await writeFileInDir(
|
|
23
|
+
logger,
|
|
24
|
+
httpWiringMetaFile,
|
|
25
|
+
`import { pikkuState } from '@pikku/core'\npikkuState('http', 'meta', ${JSON.stringify(http.meta, null, 2)})`
|
|
26
|
+
)
|
|
27
|
+
return true
|
|
28
|
+
},
|
|
29
|
+
middleware: [
|
|
30
|
+
logCommandInfoAndTime({
|
|
31
|
+
commandStart: 'Finding HTTP routes',
|
|
32
|
+
commandEnd: 'Found HTTP routes',
|
|
33
|
+
skipCondition: async ({ getInspectorState }) => {
|
|
34
|
+
const visitState = await getInspectorState()
|
|
35
|
+
return visitState.http.files.size === 0
|
|
36
|
+
},
|
|
37
|
+
skipMessage: 'none found',
|
|
38
|
+
}),
|
|
39
|
+
],
|
|
40
|
+
})
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates type definitions for HTTP wirings
|
|
3
|
+
*/
|
|
4
|
+
export const serializeHTTPTypes = (functionTypesImportPath: string) => {
|
|
5
|
+
return `/**
|
|
6
|
+
* This file was generated by the @pikku/cli
|
|
7
|
+
* HTTP-specific type definitions for tree-shaking optimization
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { AssertHTTPWiringParams, wireHTTP as wireHTTPCore, addHTTPMiddleware as addHTTPMiddlewareCore } from '@pikku/core/http'
|
|
11
|
+
import type { PikkuFunction, PikkuFunctionSessionless, PikkuPermission, PikkuMiddleware } from '${functionTypesImportPath}'
|
|
12
|
+
import type { CoreHTTPFunctionWiring } from '@pikku/core/http'
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Type definition for HTTP API wirings with type-safe path parameters.
|
|
16
|
+
* Supports both authenticated and unauthenticated functions.
|
|
17
|
+
*
|
|
18
|
+
* @template In - Input type for the HTTP wiring
|
|
19
|
+
* @template Out - Output type for the HTTP wiring
|
|
20
|
+
* @template Route - String literal type for the HTTP path (e.g., "/users/:id")
|
|
21
|
+
*/
|
|
22
|
+
type HTTPWiring<In, Out, Route extends string> = CoreHTTPFunctionWiring<In, Out, Route, PikkuFunction<In, Out>, PikkuFunctionSessionless<In, Out>, PikkuPermission<In>, PikkuMiddleware>
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Registers an HTTP wiring with the Pikku framework.
|
|
26
|
+
*
|
|
27
|
+
* @template In - Input type for the HTTP wiring
|
|
28
|
+
* @template Out - Output type for the HTTP wiring
|
|
29
|
+
* @template Route - String literal type for the HTTP path (e.g., "/users/:id")
|
|
30
|
+
* @param httpWiring - HTTP wiring definition with handler, method, and optional middleware
|
|
31
|
+
*/
|
|
32
|
+
export const wireHTTP = <In, Out, Route extends string>(
|
|
33
|
+
httpWiring: HTTPWiring<In, Out, Route> & AssertHTTPWiringParams<In, Route>
|
|
34
|
+
) => {
|
|
35
|
+
wireHTTPCore(httpWiring as any)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Registers HTTP middleware either globally or for a specific route pattern.
|
|
40
|
+
*
|
|
41
|
+
* When a string route pattern is provided along with middleware, the middleware
|
|
42
|
+
* is applied only to that route. Otherwise, if an array is provided, it is treated
|
|
43
|
+
* as global middleware (applied to all routes).
|
|
44
|
+
*
|
|
45
|
+
* @param routeOrMiddleware - Either a global middleware array or a route pattern string
|
|
46
|
+
* @param middleware - The middleware array to apply when a route pattern is specified
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* \`\`\`typescript
|
|
50
|
+
* // Add global HTTP middleware
|
|
51
|
+
* addHTTPMiddleware([authMiddleware, loggingMiddleware])
|
|
52
|
+
*
|
|
53
|
+
* // Add route-specific middleware
|
|
54
|
+
* addHTTPMiddleware('/api/admin/*', [adminAuthMiddleware])
|
|
55
|
+
* \`\`\`
|
|
56
|
+
*/
|
|
57
|
+
export const addHTTPMiddleware = (
|
|
58
|
+
routeOrMiddleware: PikkuMiddleware[] | string,
|
|
59
|
+
middleware?: PikkuMiddleware[]
|
|
60
|
+
) => {
|
|
61
|
+
addHTTPMiddlewareCore(routeOrMiddleware as any, middleware as any)
|
|
62
|
+
}
|
|
63
|
+
`
|
|
64
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { HTTPWiringsMeta } from '@pikku/core/http'
|
|
2
|
-
import { serializeImportMap } from '
|
|
2
|
+
import { serializeImportMap } from '../../../utils/serialize-import-map.js'
|
|
3
3
|
import { MetaInputTypes, TypesMap } from '@pikku/inspector'
|
|
4
4
|
import { FunctionsMeta } from '@pikku/core'
|
|
5
|
-
import { generateCustomTypes } from '
|
|
5
|
+
import { generateCustomTypes } from '../../../utils/custom-types-generator.js'
|
|
6
6
|
|
|
7
7
|
export const serializeTypedHTTPWiringsMap = (
|
|
8
8
|
relativeToPath: string,
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js'
|
|
2
|
+
import { writeFileInDir } from '../../../utils/file-writer.js'
|
|
3
|
+
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js'
|
|
4
|
+
import { serializeMCPJson } from './serialize-mcp-json.js'
|
|
5
|
+
|
|
6
|
+
export const pikkuMCPJSON: any = pikkuSessionlessFunc<void, void>({
|
|
7
|
+
func: async ({ logger, config, getInspectorState }) => {
|
|
8
|
+
const { mcpEndpoints, functions } = await getInspectorState()
|
|
9
|
+
const { mcpJsonFile, schemaDirectory } = config
|
|
10
|
+
|
|
11
|
+
// Generate MCP JSON file
|
|
12
|
+
if (mcpJsonFile) {
|
|
13
|
+
const mcpJson = await serializeMCPJson(
|
|
14
|
+
logger,
|
|
15
|
+
schemaDirectory,
|
|
16
|
+
functions.meta,
|
|
17
|
+
functions.typesMap,
|
|
18
|
+
mcpEndpoints.resourcesMeta,
|
|
19
|
+
mcpEndpoints.toolsMeta,
|
|
20
|
+
mcpEndpoints.promptsMeta
|
|
21
|
+
)
|
|
22
|
+
await writeFileInDir(logger, mcpJsonFile, mcpJson, {
|
|
23
|
+
ignoreModifyComment: true,
|
|
24
|
+
})
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
middleware: [
|
|
28
|
+
logCommandInfoAndTime({
|
|
29
|
+
commandStart: 'Generating MCP JSON',
|
|
30
|
+
commandEnd: 'Generated MCP JSON',
|
|
31
|
+
skipCondition: async ({ getInspectorState, config }) => {
|
|
32
|
+
const { mcpEndpoints } = await getInspectorState()
|
|
33
|
+
return mcpEndpoints.files.size === 0 || !config.mcpJsonFile
|
|
34
|
+
},
|
|
35
|
+
skipMessage: 'none found or mcpJsonFile not set',
|
|
36
|
+
}),
|
|
37
|
+
],
|
|
38
|
+
})
|