@pikku/cli 0.11.0 → 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 +9 -9
- 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 +92 -0
- package/.pikku/cli/pikku-cli-client.gen.ts +54 -0
- 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 -34
- package/.pikku/cli/pikku-cli-wirings.gen.ts +2 -1
- package/.pikku/cli/pikku-cli.gen.ts +41 -0
- 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 +9 -9
- 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 +6 -8
- 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 +9 -9
- 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 +9 -9
- package/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +41 -40
- 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 +27 -27
- package/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuSchemasOutput.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 +9 -9
- 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 +27 -1
- 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 +91 -0
- package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +10 -0
- package/dist/.pikku/cli/pikku-cli-client.gen.js +44 -0
- 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 -34
- package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.json +146 -0
- package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +2 -1
- package/dist/.pikku/cli/pikku-cli-wirings.gen.js +2 -1
- package/dist/.pikku/cli/pikku-cli.gen.d.ts +10 -0
- package/dist/.pikku/cli/pikku-cli.gen.js +38 -0
- package/dist/.pikku/function/pikku-function-types.gen.d.ts +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 +5 -8
- package/dist/.pikku/pikku-services.gen.js +3 -6
- 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 +17 -17
- package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuSchemasOutput.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 -28
- package/dist/src/cli.wiring.js +108 -106
- 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.d.ts +3 -0
- package/dist/src/services/cli-logger-forwarder.service.js +9 -2
- 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 +110 -105
- 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 +11 -2
- 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.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
- /package/dist/.pikku/{function/pikku-functions.gen.d.ts → cli/pikku-cli-channel.d.ts} +0 -0
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* This file was generated by @pikku/cli@0.11.
|
|
2
|
+
* This file was generated by @pikku/cli@0.11.2
|
|
3
3
|
*/
|
|
4
4
|
/**
|
|
5
5
|
* Core function, middleware, and permission types for all wirings
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { CorePikkuFunctionConfig, CorePikkuPermission, CorePikkuMiddleware, CorePermissionGroup, addMiddleware as addMiddlewareCore, addPermission as addPermissionCore } from '@pikku/core'
|
|
8
|
+
import { CorePikkuFunctionConfig, CorePikkuPermission, CorePikkuMiddleware, CorePermissionGroup, addMiddleware as addMiddlewareCore, addPermission as addPermissionCore, PikkuWire, PickRequired } from '@pikku/core'
|
|
9
9
|
import { CorePikkuFunction, CorePikkuFunctionSessionless } from '@pikku/core/function'
|
|
10
|
-
import { PikkuChannel } from '@pikku/core/channel'
|
|
11
|
-
import { PikkuMCP } from '@pikku/core/mcp'
|
|
12
10
|
|
|
13
11
|
import type { UserSession } from '../../types/application-types.d.js'
|
|
14
12
|
import type { SingletonServices } from '../../types/application-types.d.js'
|
|
15
13
|
import type { Services } from '../../types/application-types.d.js'
|
|
16
14
|
import type { Config } from '../../types/application-types.d.js'
|
|
17
15
|
import type { TypedPikkuRPC } from '../rpc/pikku-rpc-wirings-map.internal.gen.d.js'
|
|
18
|
-
import type { RequiredSingletonServices,
|
|
16
|
+
import type { RequiredSingletonServices, RequiredWireServices } from '../pikku-services.gen.js'
|
|
19
17
|
|
|
20
18
|
|
|
21
19
|
|
|
@@ -29,7 +27,7 @@ type Session = UserSession
|
|
|
29
27
|
* @template In - The input type that the permission check will receive
|
|
30
28
|
* @template RequiredServices - The services required for this permission check
|
|
31
29
|
*/
|
|
32
|
-
export type PikkuPermission<In = unknown, RequiredServices extends Services = Services> = CorePikkuPermission<In, RequiredServices, Session
|
|
30
|
+
export type PikkuPermission<In = unknown, RequiredServices extends Services = Services> = CorePikkuPermission<In, RequiredServices, PikkuWire<In, never, false, Session>>
|
|
33
31
|
|
|
34
32
|
/**
|
|
35
33
|
* Type-safe middleware definition that can access your application's services and session.
|
|
@@ -37,7 +35,7 @@ export type PikkuPermission<In = unknown, RequiredServices extends Services = Se
|
|
|
37
35
|
*
|
|
38
36
|
* @template RequiredServices - The services required for this middleware
|
|
39
37
|
*/
|
|
40
|
-
export type PikkuMiddleware<RequiredServices extends SingletonServices = SingletonServices> = CorePikkuMiddleware<RequiredServices
|
|
38
|
+
export type PikkuMiddleware<RequiredServices extends SingletonServices = SingletonServices> = CorePikkuMiddleware<RequiredServices>
|
|
41
39
|
|
|
42
40
|
/**
|
|
43
41
|
* Configuration object for creating a permission with metadata
|
|
@@ -58,7 +56,8 @@ export type PikkuPermissionConfig<In = unknown, RequiredServices extends Service
|
|
|
58
56
|
* @example
|
|
59
57
|
* ```typescript
|
|
60
58
|
* // Direct function syntax
|
|
61
|
-
* const permission = pikkuPermission(({ logger }, data, session) => {
|
|
59
|
+
* const permission = pikkuPermission(async ({ logger }, data, { session }) => {
|
|
60
|
+
* const session = await session?.get()
|
|
62
61
|
* return session?.role === 'admin'
|
|
63
62
|
* })
|
|
64
63
|
*
|
|
@@ -66,7 +65,8 @@ export type PikkuPermissionConfig<In = unknown, RequiredServices extends Service
|
|
|
66
65
|
* const adminPermission = pikkuPermission({
|
|
67
66
|
* name: 'Admin Permission',
|
|
68
67
|
* description: 'Checks if user has admin role',
|
|
69
|
-
* func: async ({ logger }, data, session) => {
|
|
68
|
+
* func: async ({ logger }, data, { session }) => {
|
|
69
|
+
* const session = await session?.get()
|
|
70
70
|
* return session?.role === 'admin'
|
|
71
71
|
* }
|
|
72
72
|
* })
|
|
@@ -97,7 +97,7 @@ export type PikkuMiddlewareConfig<RequiredServices extends SingletonServices = S
|
|
|
97
97
|
* @example
|
|
98
98
|
* ```typescript
|
|
99
99
|
* // Direct function syntax
|
|
100
|
-
* const middleware = pikkuMiddleware(({ logger },
|
|
100
|
+
* const middleware = pikkuMiddleware(({ logger }, wires, next) => {
|
|
101
101
|
* logger.info('Middleware executed')
|
|
102
102
|
* await next()
|
|
103
103
|
* })
|
|
@@ -106,7 +106,7 @@ export type PikkuMiddlewareConfig<RequiredServices extends SingletonServices = S
|
|
|
106
106
|
* const logMiddleware = pikkuMiddleware({
|
|
107
107
|
* name: 'Request Logger',
|
|
108
108
|
* description: 'Logs all incoming requests',
|
|
109
|
-
* func: async ({ logger },
|
|
109
|
+
* func: async ({ logger }, wires, next) => {
|
|
110
110
|
* logger.info('Request started')
|
|
111
111
|
* await next()
|
|
112
112
|
* }
|
|
@@ -129,7 +129,7 @@ export const pikkuMiddleware = <RequiredServices extends SingletonServices = Sin
|
|
|
129
129
|
* message,
|
|
130
130
|
* level = 'info'
|
|
131
131
|
* }) => {
|
|
132
|
-
* return pikkuMiddleware(async ({ logger },
|
|
132
|
+
* return pikkuMiddleware(async ({ logger }, next) => {
|
|
133
133
|
* logger[level](message)
|
|
134
134
|
* await next()
|
|
135
135
|
* })
|
|
@@ -151,8 +151,8 @@ export const pikkuMiddlewareFactory = <In = any>(
|
|
|
151
151
|
* export const requireRole = pikkuPermissionFactory<{ role: string }>(({
|
|
152
152
|
* role
|
|
153
153
|
* }) => {
|
|
154
|
-
* return pikkuPermission(async ({ logger }, data,
|
|
155
|
-
* if (!
|
|
154
|
+
* return pikkuPermission(async ({ logger }, data, { initialSession }) => {
|
|
155
|
+
* if (!initialSession || initialSession.role !== role) {
|
|
156
156
|
* logger.warn(`Permission denied: required role '${role}'`)
|
|
157
157
|
* return false
|
|
158
158
|
* }
|
|
@@ -173,25 +173,19 @@ export const pikkuPermissionFactory = <In = any>(
|
|
|
173
173
|
*
|
|
174
174
|
* @template In - The input type
|
|
175
175
|
* @template Out - The output type that the function returns
|
|
176
|
-
* @template ChannelData - Channel data type (null = optional channel)
|
|
177
|
-
* @template MCPData - MCP data type (null = optional MCP)
|
|
178
176
|
* @template RequiredServices - Services required by this function
|
|
179
177
|
*/
|
|
180
178
|
export type PikkuFunctionSessionless<
|
|
181
179
|
In = unknown,
|
|
182
180
|
Out = never,
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
? { mcp?: PikkuMCP } // Optional MCP
|
|
192
|
-
: { mcp: PikkuMCP } // Required MCP
|
|
193
|
-
)
|
|
194
|
-
> = CorePikkuFunctionSessionless<In, Out, ChannelData, RequiredServices, Session>
|
|
181
|
+
RequiredWires extends keyof PikkuWire = never,
|
|
182
|
+
RequiredServices extends Services = Services
|
|
183
|
+
> = CorePikkuFunctionSessionless<
|
|
184
|
+
In,
|
|
185
|
+
Out,
|
|
186
|
+
RequiredServices,
|
|
187
|
+
PickRequired<PikkuWire<In, Out, false, Session, TypedPikkuRPC, null, any>, RequiredWires>
|
|
188
|
+
>
|
|
195
189
|
|
|
196
190
|
/**
|
|
197
191
|
* A session-aware API function that requires user authentication.
|
|
@@ -199,25 +193,19 @@ export type PikkuFunctionSessionless<
|
|
|
199
193
|
*
|
|
200
194
|
* @template In - The input type
|
|
201
195
|
* @template Out - The output type that the function returns
|
|
202
|
-
* @template ChannelData - Channel data type (null = optional channel)
|
|
203
|
-
* @template MCPData - MCP data type (null = optional MCP)
|
|
204
196
|
* @template RequiredServices - Services required by this function
|
|
205
197
|
*/
|
|
206
198
|
export type PikkuFunction<
|
|
207
199
|
In = unknown,
|
|
208
200
|
Out = never,
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
? { mcp?: PikkuMCP } // Optional MCP
|
|
218
|
-
: { mcp: PikkuMCP } // Required MCP
|
|
219
|
-
)
|
|
220
|
-
> = CorePikkuFunction<In, Out, ChannelData, RequiredServices, Session>
|
|
201
|
+
RequiredWires extends keyof PikkuWire = 'session',
|
|
202
|
+
RequiredServices extends Services = Services
|
|
203
|
+
> = CorePikkuFunction<
|
|
204
|
+
In,
|
|
205
|
+
Out,
|
|
206
|
+
RequiredServices,
|
|
207
|
+
PickRequired<PikkuWire<In, Out, true, Session, TypedPikkuRPC, null, any>, RequiredWires>
|
|
208
|
+
>
|
|
221
209
|
|
|
222
210
|
/**
|
|
223
211
|
* Configuration object for Pikku functions with optional middleware, permissions, tags, and documentation.
|
|
@@ -225,16 +213,13 @@ export type PikkuFunction<
|
|
|
225
213
|
*
|
|
226
214
|
* @template In - The input type
|
|
227
215
|
* @template Out - The output type
|
|
228
|
-
* @template ChannelData - Channel data type
|
|
229
|
-
* @template MCPData - MCP data type
|
|
230
216
|
* @template PikkuFunc - The function type (can be narrowed to PikkuFunction or PikkuFunctionSessionless)
|
|
231
217
|
*/
|
|
232
218
|
export type PikkuFunctionConfig<
|
|
233
219
|
In = unknown,
|
|
234
220
|
Out = unknown,
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
PikkuFunc extends PikkuFunction<In, Out, ChannelData, MCPData> | PikkuFunctionSessionless<In, Out, ChannelData, MCPData> = PikkuFunction<In, Out, ChannelData, MCPData> | PikkuFunctionSessionless<In, Out, ChannelData, MCPData>
|
|
221
|
+
RequiredWires extends keyof PikkuWire = never,
|
|
222
|
+
PikkuFunc extends PikkuFunction<In, Out, RequiredWires> | PikkuFunctionSessionless<In, Out, RequiredWires> = PikkuFunction<In, Out, RequiredWires> | PikkuFunctionSessionless<In, Out, RequiredWires>
|
|
238
223
|
> = CorePikkuFunctionConfig<PikkuFunc, PikkuPermission<In>, PikkuMiddleware>
|
|
239
224
|
|
|
240
225
|
/**
|
|
@@ -249,7 +234,8 @@ export type PikkuFunctionConfig<
|
|
|
249
234
|
* @example
|
|
250
235
|
* \`\`\`typescript
|
|
251
236
|
* const createUser = pikkuFunc<{name: string, email: string}, {id: number, message: string}>({
|
|
252
|
-
* func: async ({db, logger}, input) => {
|
|
237
|
+
* func: async ({db, logger}, input, wire) => {
|
|
238
|
+
* const session = await wire.session.get()
|
|
253
239
|
* logger.info('Creating user', input.name)
|
|
254
240
|
* const user = await db.users.create(input)
|
|
255
241
|
* return {id: user.id, message: \`User \${input.name} created successfully\`}
|
|
@@ -260,8 +246,8 @@ export type PikkuFunctionConfig<
|
|
|
260
246
|
*/
|
|
261
247
|
export const pikkuFunc = <In, Out = unknown>(
|
|
262
248
|
func:
|
|
263
|
-
| PikkuFunction<In, Out>
|
|
264
|
-
|
|
|
249
|
+
| PikkuFunction<In, Out, 'session' | 'rpc'>
|
|
250
|
+
| PikkuFunctionConfig<In, Out, 'session' | 'rpc'>
|
|
265
251
|
) => {
|
|
266
252
|
return typeof func === 'function' ? { func } : func
|
|
267
253
|
}
|
|
@@ -278,7 +264,7 @@ export const pikkuFunc = <In, Out = unknown>(
|
|
|
278
264
|
* @example
|
|
279
265
|
* \`\`\`typescript
|
|
280
266
|
* const healthCheck = pikkuSessionlessFunc<void, {status: string, timestamp: string}>({
|
|
281
|
-
* func: async ({logger}) => {
|
|
267
|
+
* func: async ({logger}, input) => {
|
|
282
268
|
* logger.info('Health check requested')
|
|
283
269
|
* return {status: 'healthy', timestamp: new Date().toISOString()}
|
|
284
270
|
* },
|
|
@@ -288,8 +274,8 @@ export const pikkuFunc = <In, Out = unknown>(
|
|
|
288
274
|
*/
|
|
289
275
|
export const pikkuSessionlessFunc = <In, Out = unknown>(
|
|
290
276
|
func:
|
|
291
|
-
| PikkuFunctionSessionless<In, Out>
|
|
292
|
-
|
|
|
277
|
+
| PikkuFunctionSessionless<In, Out, 'session' | 'rpc'>
|
|
278
|
+
| PikkuFunctionConfig<In, Out, 'session' | 'rpc'>
|
|
293
279
|
) => {
|
|
294
280
|
return typeof func === 'function' ? { func } : func
|
|
295
281
|
}
|
|
@@ -312,8 +298,8 @@ export const pikkuSessionlessFunc = <In, Out = unknown>(
|
|
|
312
298
|
*/
|
|
313
299
|
export const pikkuVoidFunc = (
|
|
314
300
|
func:
|
|
315
|
-
| PikkuFunctionSessionless<void, void>
|
|
316
|
-
|
|
|
301
|
+
| PikkuFunctionSessionless<void, void, 'session' | 'rpc'>
|
|
302
|
+
| PikkuFunctionConfig<void, void, 'session' | 'rpc'>
|
|
317
303
|
) => {
|
|
318
304
|
return typeof func === 'function' ? { func } : func
|
|
319
305
|
}
|
|
@@ -362,27 +348,27 @@ export const pikkuServices = (
|
|
|
362
348
|
) => func
|
|
363
349
|
|
|
364
350
|
/**
|
|
365
|
-
* Creates a Pikku
|
|
351
|
+
* Creates a Pikku wire services factory.
|
|
366
352
|
* Use this to define services that are created per-request/session.
|
|
367
353
|
*
|
|
368
|
-
* @param func -
|
|
369
|
-
* @returns The
|
|
354
|
+
* @param func - Wire services factory function
|
|
355
|
+
* @returns The wire services factory function
|
|
370
356
|
*
|
|
371
357
|
* @example
|
|
372
358
|
* ```typescript
|
|
373
|
-
* export const
|
|
359
|
+
* export const createWireServices = pikkuWireServices(async (services, wire) => {
|
|
360
|
+
* const session = await wire.session?.get()
|
|
374
361
|
* return {
|
|
375
362
|
* userCache: new UserCache(session?.userId)
|
|
376
363
|
* }
|
|
377
364
|
* })
|
|
378
365
|
* ```
|
|
379
366
|
*/
|
|
380
|
-
export const
|
|
367
|
+
export const pikkuWireServices = (
|
|
381
368
|
func: (
|
|
382
369
|
services: SingletonServices,
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
) => Promise<RequiredSessionServices>
|
|
370
|
+
wire: any
|
|
371
|
+
) => Promise<RequiredWireServices>
|
|
386
372
|
) => func
|
|
387
373
|
|
|
388
374
|
/**
|