@pikku/cli 0.9.3 → 0.9.4
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/CHANGELOG.md +9 -0
- package/bin/pikku-rpc.ts +28 -0
- package/bin/pikku.ts +4 -0
- package/dist/bin/pikku-rpc.d.ts +4 -0
- package/dist/bin/pikku-rpc.js +19 -0
- package/dist/bin/pikku.js +4 -0
- package/dist/src/serialize-pikku-types.js +75 -3
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/serialize-pikku-types.ts +75 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# @pikku/cli
|
|
2
2
|
|
|
3
|
+
## 0.9.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 92c1926: feat: adding rpc and websocket client cli commands
|
|
8
|
+
- c18800d: feat: adding queue and scheduledTask to interactions
|
|
9
|
+
- Updated dependencies [c18800d]
|
|
10
|
+
- @pikku/core@0.9.4
|
|
11
|
+
|
|
3
12
|
## 0.9.3
|
|
4
13
|
|
|
5
14
|
### Patch Changes
|
package/bin/pikku-rpc.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Command } from 'commander'
|
|
2
|
+
import { CLILogger, PikkuCLIOptions } from '../src/utils.js'
|
|
3
|
+
import { getPikkuCLIConfig } from '../src/pikku-cli-config.js'
|
|
4
|
+
import { pikkuRPCClient } from '../src/wirings/rpc/pikku-command-rpc-client.js'
|
|
5
|
+
|
|
6
|
+
export const action = async (options: PikkuCLIOptions): Promise<void> => {
|
|
7
|
+
const logger = new CLILogger({ logLogo: true })
|
|
8
|
+
|
|
9
|
+
const cliConfig = await getPikkuCLIConfig(
|
|
10
|
+
options.config,
|
|
11
|
+
['rootDir', 'schemaDirectory', 'configDir', 'fetchFile'],
|
|
12
|
+
{
|
|
13
|
+
tags: options.tags,
|
|
14
|
+
types: options.types,
|
|
15
|
+
directories: options.directories,
|
|
16
|
+
},
|
|
17
|
+
true
|
|
18
|
+
)
|
|
19
|
+
await pikkuRPCClient(logger, cliConfig)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const rpc = (program: Command): void => {
|
|
23
|
+
program
|
|
24
|
+
.command('rpc')
|
|
25
|
+
.description('generate rpc wrapper')
|
|
26
|
+
.option('-c | --config <string>', 'The path to pikku cli config file')
|
|
27
|
+
.action(action)
|
|
28
|
+
}
|
package/bin/pikku.ts
CHANGED
|
@@ -5,6 +5,8 @@ import { nextjs } from './pikku-nextjs.js'
|
|
|
5
5
|
import { all } from './pikku-all.js'
|
|
6
6
|
import { fetch } from './pikku-fetch.js'
|
|
7
7
|
import { queue } from './pikku-queue-service.js'
|
|
8
|
+
import { websocket } from './pikku-websocket.js'
|
|
9
|
+
import { rpc } from './pikku-rpc.js'
|
|
8
10
|
|
|
9
11
|
const program = new Command('pikku')
|
|
10
12
|
program.usage('[command]')
|
|
@@ -12,6 +14,8 @@ program.usage('[command]')
|
|
|
12
14
|
all(program)
|
|
13
15
|
schemas(program)
|
|
14
16
|
nextjs(program)
|
|
17
|
+
websocket(program)
|
|
18
|
+
rpc(program)
|
|
15
19
|
fetch(program)
|
|
16
20
|
queue(program)
|
|
17
21
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CLILogger } from '../src/utils.js';
|
|
2
|
+
import { getPikkuCLIConfig } from '../src/pikku-cli-config.js';
|
|
3
|
+
import { pikkuRPCClient } from '../src/wirings/rpc/pikku-command-rpc-client.js';
|
|
4
|
+
export const action = async (options) => {
|
|
5
|
+
const logger = new CLILogger({ logLogo: true });
|
|
6
|
+
const cliConfig = await getPikkuCLIConfig(options.config, ['rootDir', 'schemaDirectory', 'configDir', 'fetchFile'], {
|
|
7
|
+
tags: options.tags,
|
|
8
|
+
types: options.types,
|
|
9
|
+
directories: options.directories,
|
|
10
|
+
}, true);
|
|
11
|
+
await pikkuRPCClient(logger, cliConfig);
|
|
12
|
+
};
|
|
13
|
+
export const rpc = (program) => {
|
|
14
|
+
program
|
|
15
|
+
.command('rpc')
|
|
16
|
+
.description('generate rpc wrapper')
|
|
17
|
+
.option('-c | --config <string>', 'The path to pikku cli config file')
|
|
18
|
+
.action(action);
|
|
19
|
+
};
|
package/dist/bin/pikku.js
CHANGED
|
@@ -5,11 +5,15 @@ import { nextjs } from './pikku-nextjs.js';
|
|
|
5
5
|
import { all } from './pikku-all.js';
|
|
6
6
|
import { fetch } from './pikku-fetch.js';
|
|
7
7
|
import { queue } from './pikku-queue-service.js';
|
|
8
|
+
import { websocket } from './pikku-websocket.js';
|
|
9
|
+
import { rpc } from './pikku-rpc.js';
|
|
8
10
|
const program = new Command('pikku');
|
|
9
11
|
program.usage('[command]');
|
|
10
12
|
all(program);
|
|
11
13
|
schemas(program);
|
|
12
14
|
nextjs(program);
|
|
15
|
+
websocket(program);
|
|
16
|
+
rpc(program);
|
|
13
17
|
fetch(program);
|
|
14
18
|
queue(program);
|
|
15
19
|
program.parse(process.argv);
|
|
@@ -6,7 +6,7 @@ export const serializePikkuTypes = (userSessionTypeImport, userSessionTypeName,
|
|
|
6
6
|
* This is used to provide the application types in the typescript project
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { CorePikkuFunctionConfig, CorePikkuPermission, CorePikkuMiddleware, addHTTPMiddleware } from '@pikku/core'
|
|
9
|
+
import { CorePikkuFunctionConfig, CorePikkuPermission, CorePikkuMiddleware, addHTTPMiddleware, addMiddleware, addMiddlewareForTags, addPermission } from '@pikku/core'
|
|
10
10
|
import { CorePikkuFunction, CorePikkuFunctionSessionless } from '@pikku/core/function'
|
|
11
11
|
import { CoreHTTPFunctionWiring, AssertHTTPWiringParams, wireHTTP as wireHTTPCore } from '@pikku/core/http'
|
|
12
12
|
import { CoreScheduledTask, wireScheduler as wireSchedulerCore } from '@pikku/core/scheduler'
|
|
@@ -111,7 +111,7 @@ type ChannelWiring<ChannelData, Channel extends string> = CoreChannel<ChannelDat
|
|
|
111
111
|
* Type definition for scheduled tasks that run at specified intervals.
|
|
112
112
|
* These are sessionless functions that execute based on cron expressions.
|
|
113
113
|
*/
|
|
114
|
-
type SchedulerWiring = CoreScheduledTask<PikkuFunctionSessionless<void, void
|
|
114
|
+
type SchedulerWiring = CoreScheduledTask<PikkuFunctionSessionless<void, void>, PikkuMiddleware>
|
|
115
115
|
|
|
116
116
|
/**
|
|
117
117
|
* Type definition for queue workers that process background jobs.
|
|
@@ -194,7 +194,7 @@ export const pikkuFunc = <In, Out = unknown>(
|
|
|
194
194
|
export const pikkuSessionlessFunc = <In, Out = unknown>(
|
|
195
195
|
func:
|
|
196
196
|
| PikkuFunctionSessionless<In, Out>
|
|
197
|
-
| CorePikkuFunctionConfig<PikkuFunctionSessionless<In, Out>, PikkuPermission<In
|
|
197
|
+
| CorePikkuFunctionConfig<PikkuFunctionSessionless<In, Out>, PikkuPermission<In>, PikkuMiddleware>
|
|
198
198
|
) => {
|
|
199
199
|
return typeof func === 'function' ? func : func.func
|
|
200
200
|
}
|
|
@@ -344,6 +344,78 @@ export const wireChannel = <ChannelData, Channel extends string>(
|
|
|
344
344
|
*/
|
|
345
345
|
export { addHTTPMiddleware }
|
|
346
346
|
|
|
347
|
+
/**
|
|
348
|
+
* Adds global middleware for a specific tag.
|
|
349
|
+
*
|
|
350
|
+
* This function allows you to register middleware that will be applied to
|
|
351
|
+
* any wiring (HTTP, Channel, Queue, Scheduler, MCP) that includes the matching tag.
|
|
352
|
+
*
|
|
353
|
+
* @param tag - The tag that the middleware should apply to.
|
|
354
|
+
* @param middleware - The middleware array to apply for the specified tag.
|
|
355
|
+
*
|
|
356
|
+
* @throws Error if middleware for the tag already exists.
|
|
357
|
+
*
|
|
358
|
+
* @example
|
|
359
|
+
* \`\`\`typescript
|
|
360
|
+
* // Add admin middleware for admin endpoints
|
|
361
|
+
* addMiddleware('admin', [adminMiddleware])
|
|
362
|
+
*
|
|
363
|
+
* // Add authentication middleware for auth endpoints
|
|
364
|
+
* addMiddleware('auth', [authMiddleware])
|
|
365
|
+
*
|
|
366
|
+
* // Add logging middleware for all API endpoints
|
|
367
|
+
* addMiddleware('api', [loggingMiddleware])
|
|
368
|
+
* \`\`\`
|
|
369
|
+
*/
|
|
370
|
+
export { addMiddleware }
|
|
371
|
+
|
|
372
|
+
/**
|
|
373
|
+
* Combines tag-based middleware with wiring-specific middleware.
|
|
374
|
+
*
|
|
375
|
+
* This helper function gets middleware for tags and combines it with any
|
|
376
|
+
* wiring-specific middleware, avoiding the need for manual spreading.
|
|
377
|
+
*
|
|
378
|
+
* @param wiringMiddleware - Wiring-specific middleware.
|
|
379
|
+
* @param tags - Array of tags to look up middleware for.
|
|
380
|
+
* @returns Combined array of tag-based and wiring-specific middleware.
|
|
381
|
+
*
|
|
382
|
+
* @example
|
|
383
|
+
* \`\`\`typescript
|
|
384
|
+
* // Instead of:
|
|
385
|
+
* const taggedMiddleware = getMiddlewareForTags(tags)
|
|
386
|
+
* const combined = [...taggedMiddleware, ...(middleware || [])]
|
|
387
|
+
*
|
|
388
|
+
* // Use:
|
|
389
|
+
* const combined = addMiddlewareForTags(middleware, tags)
|
|
390
|
+
* \`\`\`
|
|
391
|
+
*/
|
|
392
|
+
export { addMiddlewareForTags }
|
|
393
|
+
|
|
394
|
+
/**
|
|
395
|
+
* Adds global permissions for a specific tag.
|
|
396
|
+
*
|
|
397
|
+
* This function allows you to register permissions that will be applied to
|
|
398
|
+
* any wiring (HTTP, Channel, Queue, Scheduler, MCP) that includes the matching tag.
|
|
399
|
+
*
|
|
400
|
+
* @param tag - The tag that the permissions should apply to.
|
|
401
|
+
* @param permissions - The permissions array to apply for the specified tag.
|
|
402
|
+
*
|
|
403
|
+
* @throws Error if permissions for the tag already exist.
|
|
404
|
+
*
|
|
405
|
+
* @example
|
|
406
|
+
* \`\`\`typescript
|
|
407
|
+
* // Add admin permissions for admin endpoints
|
|
408
|
+
* addPermission('admin', [adminPermission])
|
|
409
|
+
*
|
|
410
|
+
* // Add authentication permissions for auth endpoints
|
|
411
|
+
* addPermission('auth', [authPermission])
|
|
412
|
+
*
|
|
413
|
+
* // Add read permissions for all API endpoints
|
|
414
|
+
* addPermission('api', [readPermission])
|
|
415
|
+
* \`\`\`
|
|
416
|
+
*/
|
|
417
|
+
export { addPermission }
|
|
418
|
+
|
|
347
419
|
/**
|
|
348
420
|
* Registers an HTTP wiring with the Pikku framework.
|
|
349
421
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../bin/pikku-all.ts","../bin/pikku-fetch.ts","../bin/pikku-nextjs.ts","../bin/pikku-openapi.ts","../bin/pikku-queue-service.ts","../bin/pikku-schemas.ts","../bin/pikku-websocket.ts","../bin/pikku.ts","../src/inspector-glob.ts","../src/pikku-cli-config.ts","../src/pikku-command-schemas.ts","../src/schema-generator.ts","../src/schemas.ts","../src/serialize-import-map.ts","../src/serialize-pikku-types.ts","../src/types.ts","../src/utils.ts","../src/runtimes/nextjs/pikku-command-nextjs.ts","../src/runtimes/nextjs/serialize-nextjs-backend-wrapper.ts","../src/runtimes/nextjs/serialize-nextjs-http-wrapper.ts","../src/wirings/channels/pikku-channels.ts","../src/wirings/channels/pikku-command-channels-map.ts","../src/wirings/channels/pikku-command-channels.ts","../src/wirings/channels/pikku-command-websocket-typed.ts","../src/wirings/channels/serialize-typed-channel-map.ts","../src/wirings/channels/serialize-websocket-wrapper.ts","../src/wirings/fetch/index.ts","../src/wirings/functions/pikku-command-function-types.ts","../src/wirings/functions/pikku-command-functions.ts","../src/wirings/functions/pikku-command-services.ts","../src/wirings/functions/pikku-function-types.ts","../src/wirings/functions/serialize-function-imports.ts","../src/wirings/http/openapi-spec-generator.ts","../src/wirings/http/pikku-command-http-map.ts","../src/wirings/http/pikku-command-http-routes.ts","../src/wirings/http/pikku-command-openapi.ts","../src/wirings/http/pikku-http-routes.ts","../src/wirings/http/serialize-fetch-wrapper.ts","../src/wirings/http/serialize-typed-http-map.ts","../src/wirings/mcp/pikku-command-mcp-json.ts","../src/wirings/mcp/pikku-command-mcp.ts","../src/wirings/mcp/serialize-mcp-json.ts","../src/wirings/queue/pikku-command-queue-map.ts","../src/wirings/queue/pikku-command-queue-service.ts","../src/wirings/queue/pikku-command-queue.ts","../src/wirings/queue/pikku-queue-map.ts","../src/wirings/queue/pikku-queue.ts","../src/wirings/queue/serialize-queue-map.ts","../src/wirings/queue/serialize-queue-meta.ts","../src/wirings/queue/serialize-queue-wrapper.ts","../src/wirings/rpc/pikku-command-rpc-client.ts","../src/wirings/rpc/pikku-command-rpc-map.ts","../src/wirings/rpc/pikku-command-rpc.ts","../src/wirings/rpc/serialize-rpc-wrapper.ts","../src/wirings/rpc/serialize-typed-rpc-map.ts","../src/wirings/scheduler/pikku-command-scheduler.ts","../src/wirings/scheduler/serialize-scheduler-meta.ts"],"version":"5.9.2"}
|
|
1
|
+
{"root":["../bin/pikku-all.ts","../bin/pikku-fetch.ts","../bin/pikku-nextjs.ts","../bin/pikku-openapi.ts","../bin/pikku-queue-service.ts","../bin/pikku-rpc.ts","../bin/pikku-schemas.ts","../bin/pikku-websocket.ts","../bin/pikku.ts","../src/inspector-glob.ts","../src/pikku-cli-config.ts","../src/pikku-command-schemas.ts","../src/schema-generator.ts","../src/schemas.ts","../src/serialize-import-map.ts","../src/serialize-pikku-types.ts","../src/types.ts","../src/utils.ts","../src/runtimes/nextjs/pikku-command-nextjs.ts","../src/runtimes/nextjs/serialize-nextjs-backend-wrapper.ts","../src/runtimes/nextjs/serialize-nextjs-http-wrapper.ts","../src/wirings/channels/pikku-channels.ts","../src/wirings/channels/pikku-command-channels-map.ts","../src/wirings/channels/pikku-command-channels.ts","../src/wirings/channels/pikku-command-websocket-typed.ts","../src/wirings/channels/serialize-typed-channel-map.ts","../src/wirings/channels/serialize-websocket-wrapper.ts","../src/wirings/fetch/index.ts","../src/wirings/functions/pikku-command-function-types.ts","../src/wirings/functions/pikku-command-functions.ts","../src/wirings/functions/pikku-command-services.ts","../src/wirings/functions/pikku-function-types.ts","../src/wirings/functions/serialize-function-imports.ts","../src/wirings/http/openapi-spec-generator.ts","../src/wirings/http/pikku-command-http-map.ts","../src/wirings/http/pikku-command-http-routes.ts","../src/wirings/http/pikku-command-openapi.ts","../src/wirings/http/pikku-http-routes.ts","../src/wirings/http/serialize-fetch-wrapper.ts","../src/wirings/http/serialize-typed-http-map.ts","../src/wirings/mcp/pikku-command-mcp-json.ts","../src/wirings/mcp/pikku-command-mcp.ts","../src/wirings/mcp/serialize-mcp-json.ts","../src/wirings/queue/pikku-command-queue-map.ts","../src/wirings/queue/pikku-command-queue-service.ts","../src/wirings/queue/pikku-command-queue.ts","../src/wirings/queue/pikku-queue-map.ts","../src/wirings/queue/pikku-queue.ts","../src/wirings/queue/serialize-queue-map.ts","../src/wirings/queue/serialize-queue-meta.ts","../src/wirings/queue/serialize-queue-wrapper.ts","../src/wirings/rpc/pikku-command-rpc-client.ts","../src/wirings/rpc/pikku-command-rpc-map.ts","../src/wirings/rpc/pikku-command-rpc.ts","../src/wirings/rpc/serialize-rpc-wrapper.ts","../src/wirings/rpc/serialize-typed-rpc-map.ts","../src/wirings/scheduler/pikku-command-scheduler.ts","../src/wirings/scheduler/serialize-scheduler-meta.ts"],"version":"5.9.2"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pikku/cli",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.4",
|
|
4
4
|
"author": "yasser.fadl@gmail.com",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"bin": {
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@openapi-contrib/json-schema-to-openapi-schema": "^4.0.2",
|
|
25
|
-
"@pikku/core": "^0.9.
|
|
25
|
+
"@pikku/core": "^0.9.4",
|
|
26
26
|
"@pikku/inspector": "^0.9.3",
|
|
27
27
|
"@types/cookie": "^1.0.0",
|
|
28
28
|
"@types/uuid": "^10.0.0",
|
|
@@ -13,7 +13,7 @@ export const serializePikkuTypes = (
|
|
|
13
13
|
* This is used to provide the application types in the typescript project
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
-
import { CorePikkuFunctionConfig, CorePikkuPermission, CorePikkuMiddleware, addHTTPMiddleware } from '@pikku/core'
|
|
16
|
+
import { CorePikkuFunctionConfig, CorePikkuPermission, CorePikkuMiddleware, addHTTPMiddleware, addMiddleware, addMiddlewareForTags, addPermission } from '@pikku/core'
|
|
17
17
|
import { CorePikkuFunction, CorePikkuFunctionSessionless } from '@pikku/core/function'
|
|
18
18
|
import { CoreHTTPFunctionWiring, AssertHTTPWiringParams, wireHTTP as wireHTTPCore } from '@pikku/core/http'
|
|
19
19
|
import { CoreScheduledTask, wireScheduler as wireSchedulerCore } from '@pikku/core/scheduler'
|
|
@@ -118,7 +118,7 @@ type ChannelWiring<ChannelData, Channel extends string> = CoreChannel<ChannelDat
|
|
|
118
118
|
* Type definition for scheduled tasks that run at specified intervals.
|
|
119
119
|
* These are sessionless functions that execute based on cron expressions.
|
|
120
120
|
*/
|
|
121
|
-
type SchedulerWiring = CoreScheduledTask<PikkuFunctionSessionless<void, void
|
|
121
|
+
type SchedulerWiring = CoreScheduledTask<PikkuFunctionSessionless<void, void>, PikkuMiddleware>
|
|
122
122
|
|
|
123
123
|
/**
|
|
124
124
|
* Type definition for queue workers that process background jobs.
|
|
@@ -201,7 +201,7 @@ export const pikkuFunc = <In, Out = unknown>(
|
|
|
201
201
|
export const pikkuSessionlessFunc = <In, Out = unknown>(
|
|
202
202
|
func:
|
|
203
203
|
| PikkuFunctionSessionless<In, Out>
|
|
204
|
-
| CorePikkuFunctionConfig<PikkuFunctionSessionless<In, Out>, PikkuPermission<In
|
|
204
|
+
| CorePikkuFunctionConfig<PikkuFunctionSessionless<In, Out>, PikkuPermission<In>, PikkuMiddleware>
|
|
205
205
|
) => {
|
|
206
206
|
return typeof func === 'function' ? func : func.func
|
|
207
207
|
}
|
|
@@ -351,6 +351,78 @@ export const wireChannel = <ChannelData, Channel extends string>(
|
|
|
351
351
|
*/
|
|
352
352
|
export { addHTTPMiddleware }
|
|
353
353
|
|
|
354
|
+
/**
|
|
355
|
+
* Adds global middleware for a specific tag.
|
|
356
|
+
*
|
|
357
|
+
* This function allows you to register middleware that will be applied to
|
|
358
|
+
* any wiring (HTTP, Channel, Queue, Scheduler, MCP) that includes the matching tag.
|
|
359
|
+
*
|
|
360
|
+
* @param tag - The tag that the middleware should apply to.
|
|
361
|
+
* @param middleware - The middleware array to apply for the specified tag.
|
|
362
|
+
*
|
|
363
|
+
* @throws Error if middleware for the tag already exists.
|
|
364
|
+
*
|
|
365
|
+
* @example
|
|
366
|
+
* \`\`\`typescript
|
|
367
|
+
* // Add admin middleware for admin endpoints
|
|
368
|
+
* addMiddleware('admin', [adminMiddleware])
|
|
369
|
+
*
|
|
370
|
+
* // Add authentication middleware for auth endpoints
|
|
371
|
+
* addMiddleware('auth', [authMiddleware])
|
|
372
|
+
*
|
|
373
|
+
* // Add logging middleware for all API endpoints
|
|
374
|
+
* addMiddleware('api', [loggingMiddleware])
|
|
375
|
+
* \`\`\`
|
|
376
|
+
*/
|
|
377
|
+
export { addMiddleware }
|
|
378
|
+
|
|
379
|
+
/**
|
|
380
|
+
* Combines tag-based middleware with wiring-specific middleware.
|
|
381
|
+
*
|
|
382
|
+
* This helper function gets middleware for tags and combines it with any
|
|
383
|
+
* wiring-specific middleware, avoiding the need for manual spreading.
|
|
384
|
+
*
|
|
385
|
+
* @param wiringMiddleware - Wiring-specific middleware.
|
|
386
|
+
* @param tags - Array of tags to look up middleware for.
|
|
387
|
+
* @returns Combined array of tag-based and wiring-specific middleware.
|
|
388
|
+
*
|
|
389
|
+
* @example
|
|
390
|
+
* \`\`\`typescript
|
|
391
|
+
* // Instead of:
|
|
392
|
+
* const taggedMiddleware = getMiddlewareForTags(tags)
|
|
393
|
+
* const combined = [...taggedMiddleware, ...(middleware || [])]
|
|
394
|
+
*
|
|
395
|
+
* // Use:
|
|
396
|
+
* const combined = addMiddlewareForTags(middleware, tags)
|
|
397
|
+
* \`\`\`
|
|
398
|
+
*/
|
|
399
|
+
export { addMiddlewareForTags }
|
|
400
|
+
|
|
401
|
+
/**
|
|
402
|
+
* Adds global permissions for a specific tag.
|
|
403
|
+
*
|
|
404
|
+
* This function allows you to register permissions that will be applied to
|
|
405
|
+
* any wiring (HTTP, Channel, Queue, Scheduler, MCP) that includes the matching tag.
|
|
406
|
+
*
|
|
407
|
+
* @param tag - The tag that the permissions should apply to.
|
|
408
|
+
* @param permissions - The permissions array to apply for the specified tag.
|
|
409
|
+
*
|
|
410
|
+
* @throws Error if permissions for the tag already exist.
|
|
411
|
+
*
|
|
412
|
+
* @example
|
|
413
|
+
* \`\`\`typescript
|
|
414
|
+
* // Add admin permissions for admin endpoints
|
|
415
|
+
* addPermission('admin', [adminPermission])
|
|
416
|
+
*
|
|
417
|
+
* // Add authentication permissions for auth endpoints
|
|
418
|
+
* addPermission('auth', [authPermission])
|
|
419
|
+
*
|
|
420
|
+
* // Add read permissions for all API endpoints
|
|
421
|
+
* addPermission('api', [readPermission])
|
|
422
|
+
* \`\`\`
|
|
423
|
+
*/
|
|
424
|
+
export { addPermission }
|
|
425
|
+
|
|
354
426
|
/**
|
|
355
427
|
* Registers an HTTP wiring with the Pikku framework.
|
|
356
428
|
*
|