@pikku/cli 0.11.1 → 0.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.pikku/channel/pikku-channel-types.gen.ts +11 -12
- package/.pikku/channel/pikku-channels-map.gen.d.ts +8 -8
- package/.pikku/channel/pikku-channels-meta.gen.ts +1 -1
- package/.pikku/channel/pikku-channels.gen.ts +1 -1
- package/.pikku/cli/pikku-cli-channel.ts +2 -2
- package/.pikku/cli/pikku-cli-client.gen.ts +1 -3
- package/.pikku/cli/pikku-cli-types.gen.ts +3 -3
- package/.pikku/cli/pikku-cli-wirings-meta.gen.json +146 -0
- package/.pikku/cli/pikku-cli-wirings-meta.gen.ts +4 -157
- package/.pikku/cli/pikku-cli-wirings.gen.ts +3 -3
- package/.pikku/cli/pikku-cli.gen.ts +3 -3
- package/.pikku/function/pikku-function-types.gen.ts +49 -63
- package/.pikku/function/pikku-functions-meta.gen.json +988 -0
- package/.pikku/function/pikku-functions-meta.gen.ts +4 -970
- package/.pikku/function/pikku-functions-meta.min.gen.json +212 -0
- package/.pikku/function/pikku-functions-meta.min.gen.ts +4 -209
- package/.pikku/http/pikku-http-types.gen.ts +2 -2
- package/.pikku/http/pikku-http-wirings-map.gen.d.ts +8 -8
- package/.pikku/http/pikku-http-wirings-meta.gen.ts +1 -1
- package/.pikku/http/pikku-http-wirings.gen.ts +1 -1
- package/.pikku/mcp/pikku-mcp-types.gen.ts +13 -13
- package/.pikku/mcp/pikku-mcp-wirings-meta.gen.json +5 -0
- package/.pikku/mcp/pikku-mcp-wirings-meta.gen.ts +6 -4
- package/.pikku/mcp/pikku-mcp-wirings.gen.ts +1 -1
- package/.pikku/pikku-bootstrap.gen.ts +1 -4
- package/.pikku/pikku-services.gen.ts +4 -6
- package/.pikku/pikku-types.gen.ts +1 -1
- package/.pikku/pikku-websocket.gen.ts +1 -1
- package/.pikku/queue/pikku-queue-types.gen.ts +2 -2
- package/.pikku/queue/pikku-queue-workers-wirings-map.gen.d.ts +8 -8
- package/.pikku/queue/pikku-queue-workers-wirings-meta.gen.json +1 -0
- package/.pikku/queue/pikku-queue-workers-wirings-meta.gen.ts +5 -7
- package/.pikku/queue/pikku-queue-workers-wirings.gen.ts +1 -1
- package/.pikku/rpc/pikku-remote-rpc-workers.gen.ts +2 -2
- package/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +8 -8
- package/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +34 -33
- package/.pikku/scheduler/pikku-scheduler-types.gen.ts +2 -2
- package/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.json +1 -0
- package/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.ts +5 -2
- package/.pikku/scheduler/pikku-schedulers-wirings.gen.ts +1 -1
- package/.pikku/schemas/register.gen.ts +25 -25
- package/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
- package/.pikku/services/config.gen.json +99 -0
- package/.pikku/services/getInspectorState.gen.json +10 -0
- package/.pikku/services/jwt.gen.json +13 -0
- package/.pikku/services/logger.gen.json +25 -0
- package/.pikku/services/queueService.gen.json +14 -0
- package/.pikku/services/schedulerService.gen.json +17 -0
- package/.pikku/services/schema.gen.json +14 -0
- package/.pikku/services/variables.gen.json +13 -0
- package/.pikku/services/workflowService.gen.json +31 -0
- package/.pikku/workflow/pikku-workflow-map.gen.d.ts +8 -8
- package/.pikku/workflow/pikku-workflow-types.gen.ts +36 -31
- package/.pikku/workflow/pikku-workflow-wirings-meta.gen.json +1 -0
- package/.pikku/workflow/pikku-workflow-wirings-meta.gen.ts +5 -2
- package/.pikku/workflow/pikku-workflow-wirings.gen.ts +6 -2
- package/CHANGELOG.md +21 -0
- package/bin/pikku.ts +6 -32
- package/build.sh +53 -31
- package/cli.schema.json +1 -1
- package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +6 -7
- package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
- package/dist/.pikku/channel/pikku-channels-meta.gen.js +1 -1
- package/dist/.pikku/channel/pikku-channels.gen.d.ts +1 -1
- package/dist/.pikku/channel/pikku-channels.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-channel.js +2 -2
- package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-client.gen.js +1 -3
- package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +3 -3
- package/dist/.pikku/cli/pikku-cli-types.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +3 -157
- package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.json +146 -0
- package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +2 -2
- package/dist/.pikku/cli/pikku-cli-wirings.gen.js +2 -2
- package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli.gen.js +3 -3
- package/dist/.pikku/function/pikku-function-types.gen.d.ts +29 -79
- package/dist/.pikku/function/pikku-function-types.gen.js +19 -15
- package/dist/.pikku/function/pikku-functions-meta.gen.js +3 -969
- package/dist/.pikku/function/pikku-functions-meta.gen.json +988 -0
- package/dist/.pikku/function/pikku-functions-meta.min.gen.js +3 -208
- package/dist/.pikku/function/pikku-functions-meta.min.gen.json +212 -0
- package/dist/.pikku/http/pikku-http-types.gen.d.ts +2 -2
- package/dist/.pikku/http/pikku-http-types.gen.js +1 -1
- package/dist/.pikku/http/pikku-http-wirings-meta.gen.js +1 -1
- package/dist/.pikku/http/pikku-http-wirings.gen.d.ts +1 -1
- package/dist/.pikku/http/pikku-http-wirings.gen.js +1 -1
- package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +13 -13
- package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
- package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.js +5 -4
- package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.json +5 -0
- package/dist/.pikku/mcp/pikku-mcp-wirings.gen.d.ts +1 -1
- package/dist/.pikku/mcp/pikku-mcp-wirings.gen.js +1 -1
- package/dist/.pikku/pikku-bootstrap.gen.d.ts +1 -4
- package/dist/.pikku/pikku-bootstrap.gen.js +1 -4
- package/dist/.pikku/pikku-services.gen.d.ts +3 -6
- package/dist/.pikku/pikku-services.gen.js +2 -5
- package/dist/.pikku/pikku-types.gen.d.ts +1 -1
- package/dist/.pikku/pikku-types.gen.js +1 -1
- package/dist/.pikku/pikku-websocket.gen.d.ts +1 -1
- package/dist/.pikku/pikku-websocket.gen.js +1 -1
- package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +2 -2
- package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +3 -7
- package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.json +1 -0
- package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +1 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +1 -1
- package/dist/.pikku/rpc/pikku-remote-rpc-workers.gen.d.ts +6 -9
- package/dist/.pikku/rpc/pikku-remote-rpc-workers.gen.js +2 -2
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +2 -2
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
- package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.js +3 -2
- package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.json +1 -0
- package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.d.ts +1 -1
- package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.js +1 -1
- package/dist/.pikku/schemas/register.gen.js +15 -15
- package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
- package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +29 -25
- package/dist/.pikku/workflow/pikku-workflow-types.gen.js +22 -8
- package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +3 -2
- package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.json +1 -0
- package/dist/.pikku/workflow/pikku-workflow-wirings.gen.d.ts +6 -2
- package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +6 -3
- package/dist/bin/pikku.js +5 -26
- package/dist/src/cli.wiring.js +4 -4
- package/dist/src/functions/commands/all.js +82 -42
- package/dist/src/functions/commands/bootstrap.js +22 -10
- package/dist/src/functions/commands/watch.js +6 -3
- package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.js +12 -7
- package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.d.ts +1 -1
- package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.js +42 -4
- package/dist/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.d.ts +1 -1
- package/dist/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.js +40 -2
- package/dist/src/functions/wirings/channels/pikku-channels.js +9 -2
- package/dist/src/functions/wirings/channels/serialize-channel-types.js +10 -11
- package/dist/src/functions/wirings/cli/pikku-command-cli-entry.js +4 -4
- package/dist/src/functions/wirings/cli/pikku-command-cli-types.js +1 -1
- package/dist/src/functions/wirings/cli/pikku-command-cli.js +9 -3
- package/dist/src/functions/wirings/cli/serialize-channel-cli.js +1 -1
- package/dist/src/functions/wirings/cli/serialize-cli-types.js +2 -2
- package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.d.ts +1 -1
- package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.js +4 -4
- package/dist/src/functions/wirings/functions/pikku-command-function-types-split.js +4 -4
- package/dist/src/functions/wirings/functions/pikku-command-functions.js +15 -5
- package/dist/src/functions/wirings/functions/pikku-command-services.d.ts +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-services.js +23 -23
- package/dist/src/functions/wirings/functions/schemas.js +1 -1
- package/dist/src/functions/wirings/functions/serialize-function-types.d.ts +1 -1
- package/dist/src/functions/wirings/functions/serialize-function-types.js +50 -64
- package/dist/src/functions/wirings/http/openapi-spec-generator.js +4 -4
- package/dist/src/functions/wirings/http/pikku-http-routes.js +9 -2
- package/dist/src/functions/wirings/http/serialize-http-types.js +1 -1
- package/dist/src/functions/wirings/mcp/pikku-command-mcp.js +18 -4
- package/dist/src/functions/wirings/mcp/serialize-mcp-types.js +12 -12
- package/dist/src/functions/wirings/middleware/pikku-command-middleware.js +26 -2
- package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.d.ts +5 -2
- package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.js +5 -13
- package/dist/src/functions/wirings/queue/pikku-command-queue.js +9 -3
- package/dist/src/functions/wirings/queue/pikku-queue.js +9 -3
- package/dist/src/functions/wirings/queue/serialize-queue-meta.d.ts +2 -1
- package/dist/src/functions/wirings/queue/serialize-queue-meta.js +10 -1
- package/dist/src/functions/wirings/queue/serialize-queue-types.js +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-rpc.js +9 -2
- package/dist/src/functions/wirings/rpc/serialize-public-rpc.js +11 -4
- package/dist/src/functions/wirings/rpc/serialize-remote-rpc.js +1 -1
- package/dist/src/functions/wirings/rpc/serialize-rpc-wrapper.js +3 -3
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.js +6 -3
- package/dist/src/functions/wirings/scheduler/serialize-scheduler-meta.d.ts +2 -1
- package/dist/src/functions/wirings/scheduler/serialize-scheduler-meta.js +11 -1
- package/dist/src/functions/wirings/scheduler/serialize-scheduler-types.js +1 -1
- package/dist/src/functions/wirings/services/pikku-command-service-metadata.d.ts +1 -0
- package/dist/src/functions/wirings/services/pikku-command-service-metadata.js +22 -0
- package/dist/src/functions/wirings/workflow/pikku-command-workflow-types.js +3 -1
- package/dist/src/functions/wirings/workflow/pikku-command-workflow.js +12 -8
- package/dist/src/functions/wirings/workflow/serialize-workflow-meta.d.ts +2 -1
- package/dist/src/functions/wirings/workflow/serialize-workflow-meta.js +11 -1
- package/dist/src/functions/wirings/workflow/serialize-workflow-types.d.ts +1 -1
- package/dist/src/functions/wirings/workflow/serialize-workflow-types.js +36 -31
- package/dist/src/functions/wirings/workflow/serialize-workflow-wirings.d.ts +8 -0
- package/dist/src/functions/wirings/workflow/serialize-workflow-wirings.js +30 -0
- package/dist/src/functions/wirings/workflow/serialize-workflow-workers.js +2 -2
- package/dist/src/middleware/log-command-info-and-time.d.ts +2 -2
- package/dist/src/middleware/log-command-info-and-time.js +1 -4
- package/dist/src/services/cli-logger-forwarder.service.js +1 -1
- package/dist/src/services.d.ts +2 -7
- package/dist/src/services.js +14 -12
- package/dist/src/utils/check-required-types.d.ts +2 -2
- package/dist/src/utils/check-required-types.js +2 -3
- package/dist/src/utils/pikku-cli-config.js +35 -2
- package/dist/src/utils/pikku-files-and-methods.d.ts +2 -2
- package/dist/src/utils/pikku-files-and-methods.js +4 -4
- package/dist/src/utils/schema-generator.d.ts +1 -1
- package/dist/src/utils/schema-generator.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -8
- package/src/cli.wiring.ts +4 -4
- package/src/functions/commands/all.ts +94 -45
- package/src/functions/commands/bootstrap.ts +25 -10
- package/src/functions/commands/watch.ts +6 -3
- package/src/functions/runtimes/nextjs/pikku-command-nextjs.ts +26 -5
- package/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.ts +43 -4
- package/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.ts +40 -1
- package/src/functions/wirings/channels/pikku-channels.ts +27 -3
- package/src/functions/wirings/channels/serialize-channel-types.ts +10 -11
- package/src/functions/wirings/cli/pikku-command-cli-entry.ts +4 -4
- package/src/functions/wirings/cli/pikku-command-cli-types.ts +1 -1
- package/src/functions/wirings/cli/pikku-command-cli.ts +26 -3
- package/src/functions/wirings/cli/serialize-channel-cli.ts +1 -1
- package/src/functions/wirings/cli/serialize-cli-types.ts +2 -2
- package/src/functions/wirings/cli/serialize-local-cli-bootstrap.ts +5 -5
- package/src/functions/wirings/functions/pikku-command-function-types-split.ts +6 -6
- package/src/functions/wirings/functions/pikku-command-functions.ts +39 -4
- package/src/functions/wirings/functions/pikku-command-services.ts +25 -25
- package/src/functions/wirings/functions/schemas.ts +2 -2
- package/src/functions/wirings/functions/serialize-function-types.ts +51 -65
- package/src/functions/wirings/http/openapi-spec-generator.ts +14 -5
- package/src/functions/wirings/http/pikku-http-routes.ts +28 -2
- package/src/functions/wirings/http/serialize-http-types.ts +1 -1
- package/src/functions/wirings/mcp/pikku-command-mcp.ts +30 -4
- package/src/functions/wirings/mcp/serialize-mcp-types.ts +12 -12
- package/src/functions/wirings/middleware/pikku-command-middleware.ts +35 -2
- package/src/functions/wirings/middleware/serialize-middleware-groups-meta.ts +4 -19
- package/src/functions/wirings/permissions/pikku-command-permissions.ts +2 -2
- package/src/functions/wirings/queue/pikku-command-queue.ts +27 -2
- package/src/functions/wirings/queue/pikku-queue.ts +27 -2
- package/src/functions/wirings/queue/serialize-queue-meta.ts +15 -1
- package/src/functions/wirings/queue/serialize-queue-types.ts +1 -1
- package/src/functions/wirings/rpc/pikku-command-rpc.ts +25 -2
- package/src/functions/wirings/rpc/serialize-public-rpc.ts +11 -4
- package/src/functions/wirings/rpc/serialize-remote-rpc.ts +1 -1
- package/src/functions/wirings/rpc/serialize-rpc-wrapper.ts +3 -3
- package/src/functions/wirings/scheduler/pikku-command-scheduler.ts +30 -4
- package/src/functions/wirings/scheduler/serialize-scheduler-meta.ts +20 -1
- package/src/functions/wirings/scheduler/serialize-scheduler-types.ts +1 -1
- package/src/functions/wirings/services/pikku-command-service-metadata.ts +25 -0
- package/src/functions/wirings/workflow/pikku-command-workflow-types.ts +8 -1
- package/src/functions/wirings/workflow/pikku-command-workflow.ts +36 -8
- package/src/functions/wirings/workflow/serialize-workflow-meta.ts +18 -1
- package/src/functions/wirings/workflow/serialize-workflow-types.ts +39 -31
- package/src/functions/wirings/workflow/serialize-workflow-wirings.ts +47 -0
- package/src/functions/wirings/workflow/serialize-workflow-workers.ts +2 -2
- package/src/middleware/log-command-info-and-time.ts +3 -6
- package/src/services/cli-logger-forwarder.service.ts +1 -1
- package/src/services.ts +15 -15
- package/src/utils/check-required-types.ts +4 -7
- package/src/utils/pikku-cli-config.ts +69 -2
- package/src/utils/pikku-files-and-methods.ts +10 -13
- package/src/utils/schema-generator.ts +2 -2
- package/types/application-types.d.ts +1 -1
- package/types/config.d.ts +12 -1
- package/.pikku/function/pikku-functions.gen.ts +0 -84
- package/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.ts +0 -47
- package/dist/.pikku/function/pikku-functions.gen.d.ts +0 -1
- package/dist/.pikku/function/pikku-functions.gen.js +0 -83
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.d.ts +0 -1
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +0 -47
- package/dist/.pikku/schemas/schemas/PikkuRemoteInternalRPCInput.schema.json +0 -1
|
@@ -3,38 +3,79 @@ import { pikkuVoidFunc } from '../../../.pikku/pikku-types.gen.js';
|
|
|
3
3
|
import { getFileImportRelativePath } from '../../utils/file-import-path.js';
|
|
4
4
|
import { writeFileInDir } from '../../utils/file-writer.js';
|
|
5
5
|
import { CommandSummary } from '../../utils/command-summary.js';
|
|
6
|
+
// Import all command functions directly
|
|
7
|
+
import { pikkuFunctionTypes } from '../wirings/functions/pikku-command-function-types.js';
|
|
8
|
+
import { pikkuFunctionTypesSplit } from '../wirings/functions/pikku-command-function-types-split.js';
|
|
9
|
+
import { pikkuHTTPTypes } from '../wirings/http/pikku-command-http-types.js';
|
|
10
|
+
import { pikkuChannelTypes } from '../wirings/channels/pikku-command-channel-types.js';
|
|
11
|
+
import { pikkuSchedulerTypes } from '../wirings/scheduler/pikku-command-scheduler-types.js';
|
|
12
|
+
import { pikkuQueueTypes } from '../wirings/queue/pikku-command-queue-types.js';
|
|
13
|
+
import { pikkuWorkflowTypes } from '../wirings/workflow/pikku-command-workflow-types.js';
|
|
14
|
+
import { pikkuMCPTypes } from '../wirings/mcp/pikku-command-mcp-types.js';
|
|
15
|
+
import { pikkuCLITypes } from '../wirings/cli/pikku-command-cli-types.js';
|
|
16
|
+
import { pikkuFunctions } from '../wirings/functions/pikku-command-functions.js';
|
|
17
|
+
import { pikkuMiddleware } from '../wirings/middleware/pikku-command-middleware.js';
|
|
18
|
+
import { pikkuPermissions } from '../wirings/permissions/pikku-command-permissions.js';
|
|
19
|
+
import { pikkuServices } from '../wirings/functions/pikku-command-services.js';
|
|
20
|
+
import { pikkuServiceMetadata } from '../wirings/services/pikku-command-service-metadata.js';
|
|
21
|
+
import { pikkuRPC } from '../wirings/rpc/pikku-command-rpc.js';
|
|
22
|
+
import { pikkuRPCExposedMap, pikkuRPCInternalMap, } from '../wirings/rpc/pikku-command-rpc-map.js';
|
|
23
|
+
import { pikkuPublicRPC } from '../wirings/rpc/pikku-command-public-rpc.js';
|
|
24
|
+
import { pikkuRPCClient } from '../wirings/rpc/pikku-command-rpc-client.js';
|
|
25
|
+
import { pikkuSchemas } from '../wirings/functions/schemas.js';
|
|
26
|
+
import { pikkuHTTP } from '../wirings/http/pikku-command-http-routes.js';
|
|
27
|
+
import { pikkuHTTPMap } from '../wirings/http/pikku-command-http-map.js';
|
|
28
|
+
import { pikkuFetch } from '../wirings/fetch/index.js';
|
|
29
|
+
import { pikkuScheduler } from '../wirings/scheduler/pikku-command-scheduler.js';
|
|
30
|
+
import { pikkuWorkflow } from '../wirings/workflow/pikku-command-workflow.js';
|
|
31
|
+
import { pikkuRemoteRPC } from '../wirings/rpc/pikku-command-remote-rpc.js';
|
|
32
|
+
import { pikkuWorkflowMap } from '../wirings/workflow/pikku-command-workflow-map.js';
|
|
33
|
+
import { pikkuQueue } from '../wirings/queue/pikku-command-queue.js';
|
|
34
|
+
import { pikkuQueueMap } from '../wirings/queue/pikku-command-queue-map.js';
|
|
35
|
+
import { pikkuQueueService } from '../wirings/queue/pikku-command-queue-service.js';
|
|
36
|
+
import { pikkuChannels } from '../wirings/channels/pikku-command-channels.js';
|
|
37
|
+
import { pikkuChannelsMap } from '../wirings/channels/pikku-command-channels-map.js';
|
|
38
|
+
import { pikkuWebSocketTyped } from '../wirings/channels/pikku-command-websocket-typed.js';
|
|
39
|
+
import { pikkuMCP } from '../wirings/mcp/pikku-command-mcp.js';
|
|
40
|
+
import { pikkuMCPJSON } from '../wirings/mcp/pikku-command-mcp-json.js';
|
|
41
|
+
import { pikkuCLI } from '../wirings/cli/pikku-command-cli.js';
|
|
42
|
+
import { pikkuCLIEntry } from '../wirings/cli/pikku-command-cli-entry.js';
|
|
43
|
+
import { pikkuNext } from '../runtimes/nextjs/pikku-command-nextjs.js';
|
|
44
|
+
import { pikkuOpenAPI } from '../wirings/http/pikku-command-openapi.js';
|
|
6
45
|
export const all = pikkuVoidFunc({
|
|
7
|
-
func: async ({ logger, config,
|
|
46
|
+
func: async ({ logger, config, getInspectorState }) => {
|
|
47
|
+
const wire = {};
|
|
48
|
+
const services = { logger, config, getInspectorState };
|
|
8
49
|
const summary = new CommandSummary('all');
|
|
9
50
|
const allImports = [];
|
|
10
51
|
let typesDeclarationFileExists = true;
|
|
11
52
|
if (!existsSync(config.typesDeclarationFile)) {
|
|
12
53
|
typesDeclarationFileExists = false;
|
|
13
54
|
}
|
|
14
|
-
await
|
|
55
|
+
await pikkuFunctionTypes.func(services, null, wire);
|
|
15
56
|
// This is needed since the wireHTTP function will add the routes to the visitState
|
|
16
57
|
if (!typesDeclarationFileExists) {
|
|
17
58
|
logger.debug(`• Type file first created, inspecting again...`);
|
|
18
59
|
await getInspectorState(true);
|
|
19
60
|
}
|
|
20
61
|
// Generate wiring-specific type files for tree-shaking
|
|
21
|
-
await
|
|
22
|
-
await
|
|
23
|
-
await
|
|
24
|
-
await
|
|
25
|
-
await
|
|
26
|
-
await
|
|
27
|
-
await
|
|
28
|
-
await
|
|
29
|
-
const hasFunctionRegistrations = await
|
|
62
|
+
await pikkuFunctionTypesSplit.func(services, null, wire);
|
|
63
|
+
await pikkuHTTPTypes.func(services, null, wire);
|
|
64
|
+
await pikkuChannelTypes.func(services, null, wire);
|
|
65
|
+
await pikkuSchedulerTypes.func(services, null, wire);
|
|
66
|
+
await pikkuQueueTypes.func(services, null, wire);
|
|
67
|
+
await pikkuWorkflowTypes.func(services, null, wire);
|
|
68
|
+
await pikkuMCPTypes.func(services, null, wire);
|
|
69
|
+
await pikkuCLITypes.func(services, null, wire);
|
|
70
|
+
const hasFunctionRegistrations = await pikkuFunctions.func(services, wire, null);
|
|
30
71
|
// Generate and register middleware
|
|
31
|
-
const middleware = await
|
|
72
|
+
const middleware = await pikkuMiddleware.func(services, null, wire);
|
|
32
73
|
// Middleware must be imported before functions meta to ensure registration happens first
|
|
33
74
|
if (middleware) {
|
|
34
75
|
allImports.push(config.middlewareFile);
|
|
35
76
|
}
|
|
36
77
|
// Generate and register permissions
|
|
37
|
-
const permissions = await
|
|
78
|
+
const permissions = await pikkuPermissions.func(services, null, wire);
|
|
38
79
|
// Permissions must be imported before functions meta to ensure registration happens first
|
|
39
80
|
if (permissions) {
|
|
40
81
|
allImports.push(config.permissionsFile);
|
|
@@ -46,79 +87,78 @@ export const all = pikkuVoidFunc({
|
|
|
46
87
|
allImports.push(config.functionsFile);
|
|
47
88
|
}
|
|
48
89
|
// Generate services map
|
|
49
|
-
await
|
|
50
|
-
|
|
51
|
-
await
|
|
52
|
-
await
|
|
53
|
-
await
|
|
90
|
+
await pikkuServices.func(services, null, wire);
|
|
91
|
+
// Generate service metadata JSON files for AI consumption
|
|
92
|
+
await pikkuServiceMetadata.func(services, null, wire);
|
|
93
|
+
const hasInternalRPCs = await pikkuRPC.func(services, null, wire);
|
|
94
|
+
await pikkuRPCInternalMap.func(services, null, wire);
|
|
95
|
+
await pikkuRPCExposedMap.func(services, null, wire);
|
|
96
|
+
await pikkuPublicRPC.func(services, null, wire);
|
|
97
|
+
await pikkuRPCClient.func(services, null, wire);
|
|
54
98
|
if (hasInternalRPCs) {
|
|
55
99
|
allImports.push(config.rpcInternalWiringMetaFile);
|
|
56
100
|
}
|
|
57
|
-
const schemas = await
|
|
101
|
+
const schemas = await pikkuSchemas.func(services, null, wire);
|
|
58
102
|
if (schemas) {
|
|
59
103
|
allImports.push(`${config.schemaDirectory}/register.gen.ts`);
|
|
60
104
|
}
|
|
61
105
|
// Generate HTTP
|
|
62
|
-
const http = await
|
|
106
|
+
const http = await pikkuHTTP.func(services, null, wire);
|
|
63
107
|
if (http) {
|
|
64
|
-
await
|
|
65
|
-
await
|
|
108
|
+
await pikkuHTTPMap.func(services, null, wire);
|
|
109
|
+
await pikkuFetch.func(services, null, wire);
|
|
66
110
|
allImports.push(config.httpWiringMetaFile, config.httpWiringsFile);
|
|
67
111
|
}
|
|
68
112
|
// Generate Scheduler
|
|
69
|
-
const scheduler = await
|
|
113
|
+
const scheduler = await pikkuScheduler.func(services, null, wire);
|
|
70
114
|
if (scheduler) {
|
|
71
115
|
allImports.push(config.schedulersWiringMetaFile, config.schedulersWiringFile);
|
|
72
116
|
}
|
|
73
117
|
// Generate Workflows
|
|
74
|
-
const workflows = await
|
|
118
|
+
const workflows = await pikkuWorkflow.func(services, null, wire);
|
|
75
119
|
// Generate Remote RPC Workers (must be before queue discovery so wireQueueWorker calls are picked up)
|
|
76
|
-
const remoteRPC = await
|
|
120
|
+
const remoteRPC = await pikkuRemoteRPC.func(services, null, wire);
|
|
77
121
|
// Reinspect to pick up generated workflow workers and remote RPC workers BEFORE generating maps
|
|
78
122
|
if (workflows || remoteRPC) {
|
|
79
123
|
await getInspectorState(true);
|
|
80
124
|
}
|
|
81
125
|
if (workflows) {
|
|
82
|
-
await
|
|
126
|
+
await pikkuWorkflowMap.func(services, null, wire);
|
|
83
127
|
allImports.push(config.workflowsWiringMetaFile, config.workflowsWiringFile);
|
|
84
128
|
}
|
|
85
|
-
if (remoteRPC && config.rpc?.remoteRpcWorkersPath) {
|
|
86
|
-
// Only add to imports if we actually generated the file
|
|
87
|
-
allImports.push(config.rpc.remoteRpcWorkersPath);
|
|
88
|
-
}
|
|
89
129
|
// Generate Queues
|
|
90
|
-
const queues = await
|
|
130
|
+
const queues = await pikkuQueue.func(services, null, wire);
|
|
91
131
|
if (queues) {
|
|
92
|
-
await
|
|
93
|
-
await
|
|
132
|
+
await pikkuQueueMap.func(services, null, wire);
|
|
133
|
+
await pikkuQueueService.func(services, null, wire);
|
|
94
134
|
allImports.push(config.queueWorkersWiringMetaFile, config.queueWorkersWiringFile);
|
|
95
135
|
}
|
|
96
136
|
// Generate Channels
|
|
97
|
-
const channels = await
|
|
137
|
+
const channels = await pikkuChannels.func(services, null, wire);
|
|
98
138
|
if (channels) {
|
|
99
|
-
await
|
|
100
|
-
await
|
|
139
|
+
await pikkuChannelsMap.func(services, null, wire);
|
|
140
|
+
await pikkuWebSocketTyped.func(services, null, wire);
|
|
101
141
|
allImports.push(config.channelsWiringMetaFile, config.channelsWiringFile);
|
|
102
142
|
}
|
|
103
143
|
// Generate MCP
|
|
104
|
-
const mcp = await
|
|
144
|
+
const mcp = await pikkuMCP.func(services, null, wire);
|
|
105
145
|
if (mcp) {
|
|
106
|
-
await
|
|
146
|
+
await pikkuMCPJSON.func(services, null, wire);
|
|
107
147
|
allImports.push(config.mcpWiringsMetaFile, config.mcpWiringsFile);
|
|
108
148
|
}
|
|
109
149
|
// Generate CLI
|
|
110
|
-
const cli = await
|
|
150
|
+
const cli = await pikkuCLI.func(services, null, wire);
|
|
111
151
|
if (cli) {
|
|
112
|
-
await
|
|
152
|
+
await pikkuCLIEntry.func(services, null, wire);
|
|
113
153
|
allImports.push(config.cliWiringMetaFile, config.cliWiringsFile);
|
|
114
154
|
}
|
|
115
155
|
if (config.nextBackendFile || config.nextHTTPFile) {
|
|
116
|
-
await
|
|
156
|
+
await pikkuNext.func(services, null, wire);
|
|
117
157
|
}
|
|
118
158
|
if (config.openAPI) {
|
|
119
159
|
logger.debug(`• OpenAPI requires a reinspection to pickup new generated types..`);
|
|
120
160
|
await getInspectorState(true);
|
|
121
|
-
await
|
|
161
|
+
await pikkuOpenAPI.func(services, null, wire);
|
|
122
162
|
}
|
|
123
163
|
// Generate main bootstrap file (pass all imports directly since this is the main file)
|
|
124
164
|
await writeFileInDir(logger, config.bootstrapFile, allImports
|
|
@@ -1,21 +1,33 @@
|
|
|
1
1
|
import { pikkuVoidFunc } from '../../../.pikku/pikku-types.gen.js';
|
|
2
|
+
// Import command functions directly
|
|
3
|
+
import { pikkuFunctionTypes } from '../wirings/functions/pikku-command-function-types.js';
|
|
4
|
+
import { pikkuFunctionTypesSplit } from '../wirings/functions/pikku-command-function-types-split.js';
|
|
5
|
+
import { pikkuHTTPTypes } from '../wirings/http/pikku-command-http-types.js';
|
|
6
|
+
import { pikkuChannelTypes } from '../wirings/channels/pikku-command-channel-types.js';
|
|
7
|
+
import { pikkuSchedulerTypes } from '../wirings/scheduler/pikku-command-scheduler-types.js';
|
|
8
|
+
import { pikkuQueueTypes } from '../wirings/queue/pikku-command-queue-types.js';
|
|
9
|
+
import { pikkuWorkflowTypes } from '../wirings/workflow/pikku-command-workflow-types.js';
|
|
10
|
+
import { pikkuMCPTypes } from '../wirings/mcp/pikku-command-mcp-types.js';
|
|
11
|
+
import { pikkuCLITypes } from '../wirings/cli/pikku-command-cli-types.js';
|
|
2
12
|
export const bootstrap = pikkuVoidFunc({
|
|
3
|
-
func: async ({ logger, config,
|
|
13
|
+
func: async ({ logger, config, getInspectorState }) => {
|
|
14
|
+
const wire = {};
|
|
15
|
+
const services = { logger, config, getInspectorState };
|
|
4
16
|
// Initialize inspector state in bootstrap mode with core types only
|
|
5
17
|
// This allows bootstrap to run immediately without inspecting the codebase
|
|
6
18
|
// All subsequent RPC commands will use this cached state
|
|
7
19
|
await getInspectorState(false, false, true);
|
|
8
|
-
await
|
|
20
|
+
await pikkuFunctionTypes.func(services, null, wire);
|
|
9
21
|
// Generate wiring-specific type files for tree-shaking
|
|
10
22
|
// These use the bootstrap mode state with core types
|
|
11
|
-
await
|
|
12
|
-
await
|
|
13
|
-
await
|
|
14
|
-
await
|
|
15
|
-
await
|
|
16
|
-
await
|
|
17
|
-
await
|
|
18
|
-
await
|
|
23
|
+
await pikkuFunctionTypesSplit.func(services, null, wire);
|
|
24
|
+
await pikkuHTTPTypes.func(services, null, wire);
|
|
25
|
+
await pikkuChannelTypes.func(services, null, wire);
|
|
26
|
+
await pikkuSchedulerTypes.func(services, null, wire);
|
|
27
|
+
await pikkuQueueTypes.func(services, null, wire);
|
|
28
|
+
await pikkuWorkflowTypes.func(services, null, wire);
|
|
29
|
+
await pikkuMCPTypes.func(services, null, wire);
|
|
30
|
+
await pikkuCLITypes.func(services, null, wire);
|
|
19
31
|
// Check for critical errors and exit if any were logged
|
|
20
32
|
if (logger.hasCriticalErrors()) {
|
|
21
33
|
process.exit(1);
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { pikkuVoidFunc } from '../../../.pikku/pikku-types.gen.js';
|
|
2
2
|
import chokidar from 'chokidar';
|
|
3
|
+
import { all } from './all.js';
|
|
3
4
|
export const watch = pikkuVoidFunc({
|
|
4
|
-
func: async ({ logger, config,
|
|
5
|
+
func: async ({ logger, config, getInspectorState }) => {
|
|
6
|
+
const services = { logger, config, getInspectorState };
|
|
5
7
|
const configWatcher = chokidar.watch(config.srcDirectories, {
|
|
6
8
|
ignoreInitial: true,
|
|
7
9
|
ignored: /.*\.gen\.tsx?/,
|
|
@@ -18,14 +20,15 @@ export const watch = pikkuVoidFunc({
|
|
|
18
20
|
const handle = async () => {
|
|
19
21
|
try {
|
|
20
22
|
const start = Date.now();
|
|
21
|
-
await
|
|
23
|
+
await all.func(services, null, {});
|
|
22
24
|
logger.info({
|
|
23
25
|
message: `✓ Generated in ${Date.now() - start}ms`,
|
|
24
26
|
type: 'timing',
|
|
25
27
|
});
|
|
26
28
|
}
|
|
27
29
|
catch (err) {
|
|
28
|
-
|
|
30
|
+
console.error(err);
|
|
31
|
+
logger.error('Error running watch');
|
|
29
32
|
}
|
|
30
33
|
};
|
|
31
34
|
await handle();
|
|
@@ -7,7 +7,7 @@ import { serializeNextJsBackendWrapper as serializeNextBackendWrapper } from './
|
|
|
7
7
|
import { serializeNextJsHTTPWrapper as serializeNextHTTPWrapper } from './serialize-nextjs-http-wrapper.js';
|
|
8
8
|
export const pikkuNext = pikkuSessionlessFunc({
|
|
9
9
|
func: async ({ logger, config, getInspectorState }) => {
|
|
10
|
-
const { nextBackendFile, nextHTTPFile, httpMapDeclarationFile, packageMappings, fetchFile, } = config;
|
|
10
|
+
const { nextBackendFile, nextHTTPFile, httpMapDeclarationFile, rpcMapDeclarationFile, packageMappings, fetchFile, } = config;
|
|
11
11
|
// If both files are undefined, clean up any existing files and return
|
|
12
12
|
if (!nextBackendFile && !nextHTTPFile) {
|
|
13
13
|
logger.info({
|
|
@@ -20,31 +20,36 @@ export const pikkuNext = pikkuSessionlessFunc({
|
|
|
20
20
|
if (nextHTTPFile && !fetchFile) {
|
|
21
21
|
throw new Error('fetchFile is required in pikku config in order for nextJS http wrapper to work');
|
|
22
22
|
}
|
|
23
|
+
if ((nextBackendFile || nextHTTPFile) && !rpcMapDeclarationFile) {
|
|
24
|
+
throw new Error('rpcMapDeclarationFile is required in pikku config in order for nextJS wrapper to work');
|
|
25
|
+
}
|
|
23
26
|
if (nextBackendFile) {
|
|
24
27
|
// Check for required types
|
|
25
28
|
checkRequiredTypes(visitState.filesAndMethodsErrors, {
|
|
26
29
|
config: true,
|
|
27
30
|
singletonServicesFactory: true,
|
|
28
|
-
|
|
31
|
+
wireServicesFactory: true,
|
|
29
32
|
});
|
|
30
|
-
const { pikkuConfigFactory, singletonServicesFactory,
|
|
33
|
+
const { pikkuConfigFactory, singletonServicesFactory, wireServicesFactory, } = visitState.filesAndMethods;
|
|
31
34
|
if (!pikkuConfigFactory ||
|
|
32
35
|
!singletonServicesFactory ||
|
|
33
|
-
!
|
|
36
|
+
!wireServicesFactory) {
|
|
34
37
|
throw new Error('Required types not found');
|
|
35
38
|
}
|
|
36
39
|
const pikkuConfigImport = `import { ${pikkuConfigFactory.variable} as createConfig } from '${getFileImportRelativePath(nextBackendFile, pikkuConfigFactory.file, packageMappings)}'`;
|
|
37
40
|
const singletonServicesImport = `import { ${singletonServicesFactory.variable} as createSingletonServices } from '${getFileImportRelativePath(nextBackendFile, singletonServicesFactory.file, packageMappings)}'`;
|
|
38
|
-
const
|
|
41
|
+
const wireServicesImport = `import { ${wireServicesFactory.variable} as createWireServices } from '${getFileImportRelativePath(nextBackendFile, wireServicesFactory.file, packageMappings)}'`;
|
|
39
42
|
const bootstrapPath = getFileImportRelativePath(nextBackendFile, config.bootstrapFile, packageMappings);
|
|
40
43
|
const routesMapDeclarationPath = getFileImportRelativePath(nextBackendFile, httpMapDeclarationFile, packageMappings);
|
|
41
|
-
const
|
|
44
|
+
const rpcMapDeclarationPath = getFileImportRelativePath(nextBackendFile, rpcMapDeclarationFile, packageMappings);
|
|
45
|
+
const content = serializeNextBackendWrapper(bootstrapPath, routesMapDeclarationPath, rpcMapDeclarationPath, pikkuConfigImport, singletonServicesImport, wireServicesImport);
|
|
42
46
|
await writeFileInDir(logger, nextBackendFile, content);
|
|
43
47
|
}
|
|
44
48
|
if (nextHTTPFile && fetchFile) {
|
|
45
49
|
const routesMapDeclarationPath = getFileImportRelativePath(nextHTTPFile, httpMapDeclarationFile, packageMappings);
|
|
50
|
+
const rpcMapDeclarationPath = getFileImportRelativePath(nextHTTPFile, rpcMapDeclarationFile, packageMappings);
|
|
46
51
|
const fetchPath = getFileImportRelativePath(nextHTTPFile, fetchFile, packageMappings);
|
|
47
|
-
const content = serializeNextHTTPWrapper(routesMapDeclarationPath, fetchPath);
|
|
52
|
+
const content = serializeNextHTTPWrapper(routesMapDeclarationPath, rpcMapDeclarationPath, fetchPath);
|
|
48
53
|
await writeFileInDir(logger, nextHTTPFile, content);
|
|
49
54
|
}
|
|
50
55
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const serializeNextJsBackendWrapper: (bootstrapPath: string, routesMapPath: string, configImport: string, singleServicesFactoryImport: string,
|
|
1
|
+
export declare const serializeNextJsBackendWrapper: (bootstrapPath: string, routesMapPath: string, rpcMapPath: string, configImport: string, singleServicesFactoryImport: string, wireServicesImport: string) => string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const serializeNextJsBackendWrapper = (bootstrapPath, routesMapPath, configImport, singleServicesFactoryImport,
|
|
1
|
+
export const serializeNextJsBackendWrapper = (bootstrapPath, routesMapPath, rpcMapPath, configImport, singleServicesFactoryImport, wireServicesImport) => {
|
|
2
2
|
return `'server-only'
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -8,12 +8,13 @@ export const serializeNextJsBackendWrapper = (bootstrapPath, routesMapPath, conf
|
|
|
8
8
|
import { PikkuNextJS } from '@pikku/next'
|
|
9
9
|
import { NextRequest } from 'next/server.js'
|
|
10
10
|
import type { HTTPWiringsMap, HTTPWiringHandlerOf, HTTPWiringsWithMethod } from '${routesMapPath}'
|
|
11
|
+
import type { RPCMap } from '${rpcMapPath}'
|
|
11
12
|
|
|
12
13
|
type RouteContext = { params: Promise<Record<string, string | string[]>> }
|
|
13
14
|
|
|
14
15
|
${configImport}
|
|
15
16
|
${singleServicesFactoryImport}
|
|
16
|
-
${
|
|
17
|
+
${wireServicesImport}
|
|
17
18
|
|
|
18
19
|
import '${bootstrapPath}'
|
|
19
20
|
|
|
@@ -34,7 +35,7 @@ export const pikku = (_options?: any) => {
|
|
|
34
35
|
_pikku = new PikkuNextJS(
|
|
35
36
|
createConfig as any,
|
|
36
37
|
createSingletonServices as any,
|
|
37
|
-
|
|
38
|
+
createWireServices
|
|
38
39
|
)
|
|
39
40
|
}
|
|
40
41
|
|
|
@@ -174,13 +175,50 @@ export const pikku = (_options?: any) => {
|
|
|
174
175
|
return staticActionRequest(route, 'GET', data)
|
|
175
176
|
}
|
|
176
177
|
|
|
178
|
+
// RPC Requests
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Type definition for RPC invocation with dynamic context.
|
|
182
|
+
*/
|
|
183
|
+
type RPCInvoke = <Name extends keyof RPCMap>(
|
|
184
|
+
name: Name,
|
|
185
|
+
data: RPCMap[Name]['input']
|
|
186
|
+
) => Promise<RPCMap[Name]['output']>
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Makes a dynamic RPC request.
|
|
190
|
+
*
|
|
191
|
+
* @template Name - The RPC function name from the RPCMap.
|
|
192
|
+
* @param name - The RPC function identifier.
|
|
193
|
+
* @param data - The input data for the RPC request.
|
|
194
|
+
* @returns A promise that resolves to the output of the RPC handler.
|
|
195
|
+
*/
|
|
196
|
+
const rpc: RPCInvoke = async (name, data) => {
|
|
197
|
+
return dynamicActionRequest(\`/rpc/\${name}\` as any, 'POST', { data }) as any
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Makes a static RPC request.
|
|
202
|
+
* Note: In HTTP wrapper context, both rpc and staticRPC behave the same way.
|
|
203
|
+
*
|
|
204
|
+
* @template Name - The RPC function name from the RPCMap.
|
|
205
|
+
* @param name - The RPC function identifier.
|
|
206
|
+
* @param data - The input data for the RPC request.
|
|
207
|
+
* @returns A promise that resolves to the output of the RPC handler.
|
|
208
|
+
*/
|
|
209
|
+
const staticRPC: RPCInvoke = async (name, data) => {
|
|
210
|
+
return staticActionRequest(\`/rpc/\${name}\` as any, 'POST', { data }) as any
|
|
211
|
+
}
|
|
212
|
+
|
|
177
213
|
return {
|
|
214
|
+
rpc,
|
|
178
215
|
get: dynamicGet,
|
|
179
216
|
post: dynamicPost,
|
|
180
217
|
patch: dynamicPatch,
|
|
181
218
|
del: dynamicDel,
|
|
182
219
|
staticGet,
|
|
183
220
|
staticPost,
|
|
221
|
+
staticRPC,
|
|
184
222
|
}
|
|
185
223
|
}
|
|
186
224
|
|
|
@@ -204,7 +242,7 @@ export const pikkuAPIRequest = (
|
|
|
204
242
|
_pikku = new PikkuNextJS(
|
|
205
243
|
createConfig as any,
|
|
206
244
|
createSingletonServices as any,
|
|
207
|
-
|
|
245
|
+
createWireServices
|
|
208
246
|
)
|
|
209
247
|
}
|
|
210
248
|
if (_removeAPIPrefix) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const serializeNextJsHTTPWrapper: (routesMapPath: string, pikkuFetchImport: string) => string;
|
|
1
|
+
export declare const serializeNextJsHTTPWrapper: (routesMapPath: string, rpcMapPath: string, pikkuFetchImport: string) => string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const serializeNextJsHTTPWrapper = (routesMapPath, pikkuFetchImport) => {
|
|
1
|
+
export const serializeNextJsHTTPWrapper = (routesMapPath, rpcMapPath, pikkuFetchImport) => {
|
|
2
2
|
return `'server-only'
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -7,6 +7,7 @@ export const serializeNextJsHTTPWrapper = (routesMapPath, pikkuFetchImport) => {
|
|
|
7
7
|
*/
|
|
8
8
|
import { CorePikkuFetchOptions } from '@pikku/fetch'
|
|
9
9
|
import type { HTTPWiringsMap, HTTPWiringHandlerOf, HTTPWiringsWithMethod } from '${routesMapPath}'
|
|
10
|
+
import type { RPCMap } from '${rpcMapPath}'
|
|
10
11
|
import { PikkuFetch } from '${pikkuFetchImport}'
|
|
11
12
|
|
|
12
13
|
let _pikku: PikkuFetch | undefined
|
|
@@ -146,13 +147,50 @@ export const pikku = (options?: CorePikkuFetchOptions) => {
|
|
|
146
147
|
return staticActionRequest(route, 'GET', data)
|
|
147
148
|
}
|
|
148
149
|
|
|
150
|
+
// RPC Requests
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Type definition for RPC invocation.
|
|
154
|
+
*/
|
|
155
|
+
type RPCInvoke = <Name extends keyof RPCMap>(
|
|
156
|
+
name: Name,
|
|
157
|
+
data: RPCMap[Name]['input']
|
|
158
|
+
) => Promise<RPCMap[Name]['output']>
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Makes a dynamic RPC request.
|
|
162
|
+
*
|
|
163
|
+
* @template Name - The RPC function name from the RPCMap.
|
|
164
|
+
* @param name - The RPC function identifier.
|
|
165
|
+
* @param data - The input data for the RPC request.
|
|
166
|
+
* @returns A promise that resolves to the output of the RPC handler.
|
|
167
|
+
*/
|
|
168
|
+
const rpc: RPCInvoke = async (rpcName, data) => {
|
|
169
|
+
return dynamicActionRequest(\`/rpc/\${rpcName}\` as any, 'POST', { data }) as any
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Makes a static RPC request.
|
|
174
|
+
* Note: In HTTP wrapper context, both rpc and rpcStatic behave the same way.
|
|
175
|
+
*
|
|
176
|
+
* @template Name - The RPC function name from the RPCMap.
|
|
177
|
+
* @param name - The RPC function identifier.
|
|
178
|
+
* @param data - The input data for the RPC request.
|
|
179
|
+
* @returns A promise that resolves to the output of the RPC handler.
|
|
180
|
+
*/
|
|
181
|
+
const staticRPC: RPCInvoke = async (rpcName, data) => {
|
|
182
|
+
return staticActionRequest(\`/rpc/\${rpcName}\` as any, 'POST', { data }) as any
|
|
183
|
+
}
|
|
184
|
+
|
|
149
185
|
return {
|
|
186
|
+
rpc,
|
|
150
187
|
get: dynamicGet,
|
|
151
188
|
post: dynamicPost,
|
|
152
189
|
patch: dynamicPatch,
|
|
153
190
|
del: dynamicDel,
|
|
154
191
|
staticGet,
|
|
155
|
-
staticPost
|
|
192
|
+
staticPost,
|
|
193
|
+
staticRPC
|
|
156
194
|
}
|
|
157
195
|
}
|
|
158
196
|
`;
|
|
@@ -2,13 +2,20 @@ import { pikkuVoidFunc } from '../../../../.pikku/pikku-types.gen.js';
|
|
|
2
2
|
import { serializeFileImports } from '../../../utils/file-imports-serializer.js';
|
|
3
3
|
import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
4
4
|
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
5
|
+
import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
5
6
|
export const pikkuChannels = pikkuVoidFunc({
|
|
6
7
|
func: async ({ logger, config, getInspectorState }) => {
|
|
7
8
|
const visitState = await getInspectorState();
|
|
8
|
-
const { channelsWiringFile, channelsWiringMetaFile, packageMappings } = config;
|
|
9
|
+
const { channelsWiringFile, channelsWiringMetaFile, channelsWiringMetaJsonFile, packageMappings, schema, } = config;
|
|
9
10
|
const { channels } = visitState;
|
|
10
11
|
await writeFileInDir(logger, channelsWiringFile, serializeFileImports('addChannel', channelsWiringFile, channels.files, packageMappings));
|
|
11
|
-
await writeFileInDir(logger,
|
|
12
|
+
await writeFileInDir(logger, channelsWiringMetaJsonFile, JSON.stringify(channels.meta, null, 2));
|
|
13
|
+
const jsonImportPath = getFileImportRelativePath(channelsWiringMetaFile, channelsWiringMetaJsonFile, packageMappings);
|
|
14
|
+
const supportsImportAttributes = schema?.supportsImportAttributes ?? false;
|
|
15
|
+
const importStatement = supportsImportAttributes
|
|
16
|
+
? `import metaData from '${jsonImportPath}' with { type: 'json' }`
|
|
17
|
+
: `import metaData from '${jsonImportPath}'`;
|
|
18
|
+
await writeFileInDir(logger, channelsWiringMetaFile, `import { pikkuState } from '@pikku/core'\nimport { ChannelsMeta } from '@pikku/core/channel'\n${importStatement}\npikkuState('channel', 'meta', metaData as ChannelsMeta)`);
|
|
12
19
|
},
|
|
13
20
|
middleware: [
|
|
14
21
|
logCommandInfoAndTime({
|
|
@@ -8,9 +8,8 @@ export const serializeChannelTypes = (functionTypesImportPath) => {
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import { CoreChannel, wireChannel as wireChannelCore } from '@pikku/core/channel'
|
|
11
|
-
import { CorePikkuFunctionConfig } from '@pikku/core'
|
|
12
11
|
import { AssertHTTPWiringParams } from '@pikku/core/http'
|
|
13
|
-
import type {
|
|
12
|
+
import type { PikkuFunctionConfig, PikkuFunctionSessionless, PikkuPermission, PikkuMiddleware } from '${functionTypesImportPath}'
|
|
14
13
|
|
|
15
14
|
/**
|
|
16
15
|
* Type definition for WebSocket channels with typed data exchange.
|
|
@@ -23,9 +22,9 @@ import type { PikkuFunction, PikkuFunctionSessionless, PikkuPermission, PikkuMid
|
|
|
23
22
|
type ChannelWiring<ChannelData, Channel extends string> = CoreChannel<
|
|
24
23
|
ChannelData,
|
|
25
24
|
Channel,
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
PikkuFunctionConfig<void, any, 'channel' | 'session' | 'rpc'>,
|
|
26
|
+
PikkuFunctionConfig<void, void, 'channel' | 'session' | 'rpc'>,
|
|
27
|
+
PikkuFunctionConfig<any, any, 'channel' | 'session' | 'rpc'>,
|
|
29
28
|
PikkuPermission,
|
|
30
29
|
PikkuMiddleware
|
|
31
30
|
>
|
|
@@ -40,8 +39,8 @@ type ChannelWiring<ChannelData, Channel extends string> = CoreChannel<
|
|
|
40
39
|
*/
|
|
41
40
|
export const pikkuChannelConnectionFunc = <Out = unknown>(
|
|
42
41
|
func:
|
|
43
|
-
| PikkuFunctionSessionless<void, Out,
|
|
44
|
-
|
|
|
42
|
+
| PikkuFunctionSessionless<void, Out, 'channel' | 'session' | 'rpc'>
|
|
43
|
+
| PikkuFunctionConfig<void, Out, 'channel' | 'session' | 'rpc'>
|
|
45
44
|
) => {
|
|
46
45
|
return typeof func === 'function' ? { func } : func
|
|
47
46
|
}
|
|
@@ -55,8 +54,8 @@ export const pikkuChannelConnectionFunc = <Out = unknown>(
|
|
|
55
54
|
*/
|
|
56
55
|
export const pikkuChannelDisconnectionFunc = (
|
|
57
56
|
func:
|
|
58
|
-
| PikkuFunctionSessionless<void, void,
|
|
59
|
-
|
|
|
57
|
+
| PikkuFunctionSessionless<void, void, 'channel'>
|
|
58
|
+
| PikkuFunctionConfig<void, void, 'channel' | 'session' | 'rpc'>
|
|
60
59
|
) => {
|
|
61
60
|
return typeof func === 'function' ? { func } : func
|
|
62
61
|
}
|
|
@@ -73,8 +72,8 @@ export const pikkuChannelDisconnectionFunc = (
|
|
|
73
72
|
*/
|
|
74
73
|
export const pikkuChannelFunc = <In, Out = unknown>(
|
|
75
74
|
func:
|
|
76
|
-
| PikkuFunctionSessionless<In, Out,
|
|
77
|
-
|
|
|
75
|
+
| PikkuFunctionSessionless<In, Out, 'channel' | 'session' | 'rpc'>
|
|
76
|
+
| PikkuFunctionConfig<In, Out, 'channel' | 'session' | 'rpc'>
|
|
78
77
|
) => {
|
|
79
78
|
return typeof func === 'function' ? { func } : func
|
|
80
79
|
}
|
|
@@ -100,15 +100,15 @@ export const pikkuCLIEntry = pikkuSessionlessFunc({
|
|
|
100
100
|
checkRequiredTypes(visitState.filesAndMethodsErrors, {
|
|
101
101
|
config: true,
|
|
102
102
|
singletonServicesFactory: true,
|
|
103
|
-
|
|
103
|
+
wireServicesFactory: true,
|
|
104
104
|
});
|
|
105
|
-
const { pikkuConfigFactory, singletonServicesFactory,
|
|
105
|
+
const { pikkuConfigFactory, singletonServicesFactory, wireServicesFactory, } = visitState.filesAndMethods;
|
|
106
106
|
if (!pikkuConfigFactory ||
|
|
107
107
|
!singletonServicesFactory ||
|
|
108
|
-
!
|
|
108
|
+
!wireServicesFactory) {
|
|
109
109
|
throw new Error('Required types not found');
|
|
110
110
|
}
|
|
111
|
-
const bootstrapCode = serializeLocalCLIBootstrap(programName, programMeta, bootstrapFile, config, pikkuConfigFactory, singletonServicesFactory,
|
|
111
|
+
const bootstrapCode = serializeLocalCLIBootstrap(programName, programMeta, bootstrapFile, config, pikkuConfigFactory, singletonServicesFactory, wireServicesFactory);
|
|
112
112
|
await writeFileInDir(logger, bootstrapFile, bootstrapCode);
|
|
113
113
|
logger.debug(`Serialized CLI bootstrap for ${programName}: ${bootstrapFile}`);
|
|
114
114
|
}
|
|
@@ -12,7 +12,7 @@ export const pikkuCLITypes = pikkuSessionlessFunc({
|
|
|
12
12
|
// Check for required types
|
|
13
13
|
checkRequiredTypes(visitState.filesAndMethodsErrors, {
|
|
14
14
|
userSessionType: true,
|
|
15
|
-
|
|
15
|
+
wireServiceType: true,
|
|
16
16
|
singletonServicesType: true,
|
|
17
17
|
});
|
|
18
18
|
const { userSessionType, singletonServicesType } = visitState.filesAndMethods;
|
|
@@ -2,15 +2,21 @@ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
|
|
|
2
2
|
import { serializeFileImports } from '../../../utils/file-imports-serializer.js';
|
|
3
3
|
import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
4
4
|
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
5
|
+
import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
5
6
|
export const pikkuCLI = pikkuSessionlessFunc({
|
|
6
7
|
func: async ({ logger, config, getInspectorState }) => {
|
|
7
8
|
const visitState = await getInspectorState();
|
|
8
|
-
const { cliWiringsFile, cliWiringMetaFile, packageMappings } = config;
|
|
9
|
+
const { cliWiringsFile, cliWiringMetaFile, cliWiringMetaJsonFile, packageMappings, schema, } = config;
|
|
9
10
|
const { cli } = visitState;
|
|
10
11
|
// Generate CLI wirings file
|
|
11
12
|
await writeFileInDir(logger, cliWiringsFile, serializeFileImports('wireCLI', cliWiringsFile, cli.files, packageMappings));
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
await writeFileInDir(logger, cliWiringMetaJsonFile, JSON.stringify(cli.meta, null, 2));
|
|
14
|
+
const jsonImportPath = getFileImportRelativePath(cliWiringMetaFile, cliWiringMetaJsonFile, packageMappings);
|
|
15
|
+
const supportsImportAttributes = schema?.supportsImportAttributes ?? false;
|
|
16
|
+
const importStatement = supportsImportAttributes
|
|
17
|
+
? `import metaData from '${jsonImportPath}' with { type: 'json' }`
|
|
18
|
+
: `import metaData from '${jsonImportPath}'`;
|
|
19
|
+
await writeFileInDir(logger, cliWiringMetaFile, `import { pikkuState } from '@pikku/core'\nimport { CLIMeta } from '@pikku/core/cli'\n${importStatement}\npikkuState('cli', 'meta', metaData as CLIMeta)`);
|
|
14
20
|
return true;
|
|
15
21
|
},
|
|
16
22
|
middleware: [
|