@pikku/core 0.11.0 → 0.11.1

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.
Files changed (105) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/dist/errors/errors.d.ts +1 -1
  3. package/dist/errors/errors.js +3 -3
  4. package/dist/function/function-runner.d.ts +6 -7
  5. package/dist/function/function-runner.js +35 -16
  6. package/dist/function/functions.types.d.ts +22 -30
  7. package/dist/function/functions.types.js +9 -6
  8. package/dist/handle-error.d.ts +1 -1
  9. package/dist/handle-error.js +1 -1
  10. package/dist/middleware/auth-apikey.js +3 -3
  11. package/dist/middleware/auth-bearer.js +3 -3
  12. package/dist/middleware/auth-cookie.js +5 -5
  13. package/dist/middleware/timeout.js +3 -2
  14. package/dist/middleware-runner.d.ts +3 -6
  15. package/dist/middleware-runner.js +11 -12
  16. package/dist/permissions.d.ts +6 -6
  17. package/dist/permissions.js +15 -16
  18. package/dist/services/user-session-service.d.ts +7 -3
  19. package/dist/services/user-session-service.js +8 -1
  20. package/dist/types/core.types.d.ts +29 -38
  21. package/dist/types/core.types.js +3 -14
  22. package/dist/utils.d.ts +1 -1
  23. package/dist/utils.js +3 -3
  24. package/dist/wirings/channel/channel-common.js +2 -3
  25. package/dist/wirings/channel/channel-handler.d.ts +3 -2
  26. package/dist/wirings/channel/channel-handler.js +6 -9
  27. package/dist/wirings/channel/channel-runner.d.ts +2 -2
  28. package/dist/wirings/channel/channel.types.d.ts +10 -5
  29. package/dist/wirings/channel/local/local-channel-runner.d.ts +1 -1
  30. package/dist/wirings/channel/local/local-channel-runner.js +19 -26
  31. package/dist/wirings/channel/serverless/serverless-channel-runner.d.ts +1 -1
  32. package/dist/wirings/channel/serverless/serverless-channel-runner.js +41 -46
  33. package/dist/wirings/cli/cli-runner.d.ts +5 -5
  34. package/dist/wirings/cli/cli-runner.js +10 -28
  35. package/dist/wirings/cli/cli.types.d.ts +15 -11
  36. package/dist/wirings/http/http-runner.d.ts +6 -6
  37. package/dist/wirings/http/http-runner.js +25 -39
  38. package/dist/wirings/http/http.types.d.ts +5 -10
  39. package/dist/wirings/mcp/mcp-runner.d.ts +2 -2
  40. package/dist/wirings/mcp/mcp-runner.js +12 -19
  41. package/dist/wirings/mcp/mcp.types.d.ts +6 -0
  42. package/dist/wirings/queue/queue-runner.d.ts +3 -3
  43. package/dist/wirings/queue/queue-runner.js +7 -17
  44. package/dist/wirings/queue/queue.types.d.ts +4 -11
  45. package/dist/wirings/rpc/rpc-runner.d.ts +10 -8
  46. package/dist/wirings/rpc/rpc-runner.js +36 -47
  47. package/dist/wirings/scheduler/scheduler-runner.d.ts +3 -3
  48. package/dist/wirings/scheduler/scheduler-runner.js +13 -24
  49. package/dist/wirings/scheduler/scheduler.types.d.ts +3 -8
  50. package/dist/wirings/workflow/index.d.ts +11 -2
  51. package/dist/wirings/workflow/index.js +10 -2
  52. package/dist/wirings/workflow/pikku-workflow-service.d.ts +12 -4
  53. package/dist/wirings/workflow/pikku-workflow-service.js +61 -79
  54. package/dist/wirings/workflow/workflow-runner.d.ts +3 -4
  55. package/dist/wirings/workflow/workflow-runner.js +11 -14
  56. package/dist/wirings/workflow/workflow.types.d.ts +114 -29
  57. package/package.json +2 -2
  58. package/src/errors/errors.ts +3 -3
  59. package/src/factory-functions.test.ts +9 -36
  60. package/src/function/function-runner.test.ts +57 -68
  61. package/src/function/function-runner.ts +51 -28
  62. package/src/function/function-runner.ts.bak +188 -0
  63. package/src/function/functions.types.ts +68 -51
  64. package/src/handle-error.ts +1 -1
  65. package/src/middleware/auth-apikey.test.ts +360 -0
  66. package/src/middleware/auth-apikey.ts +3 -7
  67. package/src/middleware/auth-bearer.test.ts +447 -0
  68. package/src/middleware/auth-bearer.ts +27 -33
  69. package/src/middleware/auth-cookie.test.ts +525 -0
  70. package/src/middleware/auth-cookie.ts +6 -6
  71. package/src/middleware/timeout.ts +4 -2
  72. package/src/middleware-runner.test.ts +58 -127
  73. package/src/middleware-runner.ts +13 -16
  74. package/src/permissions.test.ts +41 -45
  75. package/src/permissions.ts +21 -21
  76. package/src/services/user-session-service.ts +14 -4
  77. package/src/types/core.types.ts +67 -55
  78. package/src/utils.ts +4 -4
  79. package/src/wirings/channel/channel-common.ts +4 -7
  80. package/src/wirings/channel/channel-handler.ts +16 -22
  81. package/src/wirings/channel/channel-runner.ts +2 -2
  82. package/src/wirings/channel/channel.types.ts +14 -11
  83. package/src/wirings/channel/local/local-channel-runner.test.ts +5 -3
  84. package/src/wirings/channel/local/local-channel-runner.ts +23 -38
  85. package/src/wirings/channel/serverless/serverless-channel-runner.ts +51 -77
  86. package/src/wirings/cli/cli-runner.test.ts +7 -7
  87. package/src/wirings/cli/cli-runner.ts +24 -62
  88. package/src/wirings/cli/cli.types.ts +22 -16
  89. package/src/wirings/http/http-runner.test.ts +8 -8
  90. package/src/wirings/http/http-runner.ts +29 -56
  91. package/src/wirings/http/http.types.ts +5 -14
  92. package/src/wirings/mcp/mcp-runner.ts +23 -48
  93. package/src/wirings/mcp/mcp.types.ts +6 -0
  94. package/src/wirings/queue/queue-runner.test.ts +641 -0
  95. package/src/wirings/queue/queue-runner.ts +10 -32
  96. package/src/wirings/queue/queue.types.ts +4 -11
  97. package/src/wirings/rpc/rpc-runner.ts +41 -55
  98. package/src/wirings/scheduler/scheduler-runner.test.ts +627 -0
  99. package/src/wirings/scheduler/scheduler-runner.ts +24 -50
  100. package/src/wirings/scheduler/scheduler.types.ts +3 -9
  101. package/src/wirings/workflow/index.ts +24 -3
  102. package/src/wirings/workflow/pikku-workflow-service.ts +83 -93
  103. package/src/wirings/workflow/workflow-runner.ts +12 -25
  104. package/src/wirings/workflow/workflow.types.ts +144 -54
  105. package/tsconfig.tsbuildinfo +1 -1
@@ -6,7 +6,7 @@ import {
6
6
  runMiddleware,
7
7
  } from './middleware-runner.js'
8
8
  import { resetPikkuState } from './pikku-state.js'
9
- import { CorePikkuMiddleware, PikkuWiringTypes } from './types/core.types.js'
9
+ import { CorePikkuMiddleware } from './types/core.types.js'
10
10
 
11
11
  beforeEach(() => {
12
12
  resetPikkuState()
@@ -14,50 +14,39 @@ beforeEach(() => {
14
14
 
15
15
  describe('combineMiddleware', () => {
16
16
  test('should return empty array when no parameters provided', () => {
17
- const result = combineMiddleware(
18
- PikkuWiringTypes.http,
19
- Math.random().toString()
20
- )
17
+ const result = combineMiddleware('http', Math.random().toString())
21
18
  assert.deepEqual(result, [])
22
19
  })
23
20
 
24
21
  test('should return empty array when all parameters are undefined', () => {
25
- const result = combineMiddleware(
26
- PikkuWiringTypes.http,
27
- Math.random().toString(),
28
- {
29
- wiringMiddleware: undefined,
30
- wiringTags: undefined,
31
- funcMiddleware: undefined,
32
- funcTags: undefined,
33
- }
34
- )
22
+ const result = combineMiddleware('http', Math.random().toString(), {
23
+ wiringMiddleware: undefined,
24
+ wiringTags: undefined,
25
+ funcMiddleware: undefined,
26
+ funcTags: undefined,
27
+ })
35
28
  assert.deepEqual(result, [])
36
29
  })
37
30
 
38
31
  test('should combine wiring middleware only', () => {
39
32
  const mockMiddleware1: CorePikkuMiddleware = async (
40
33
  services,
41
- interaction,
34
+ wire,
42
35
  next
43
36
  ) => {
44
37
  await next()
45
38
  }
46
39
  const mockMiddleware2: CorePikkuMiddleware = async (
47
40
  services,
48
- interaction,
41
+ wire,
49
42
  next
50
43
  ) => {
51
44
  await next()
52
45
  }
53
46
 
54
- const result = combineMiddleware(
55
- PikkuWiringTypes.http,
56
- Math.random().toString(),
57
- {
58
- wireMiddleware: [mockMiddleware1, mockMiddleware2],
59
- }
60
- )
47
+ const result = combineMiddleware('http', Math.random().toString(), {
48
+ wireMiddleware: [mockMiddleware1, mockMiddleware2],
49
+ })
61
50
 
62
51
  assert.equal(result.length, 2)
63
52
  assert.equal(result[0], mockMiddleware1)
@@ -67,26 +56,22 @@ describe('combineMiddleware', () => {
67
56
  test('should combine function middleware only', () => {
68
57
  const mockMiddleware1: CorePikkuMiddleware = async (
69
58
  services,
70
- interaction,
59
+ wire,
71
60
  next
72
61
  ) => {
73
62
  await next()
74
63
  }
75
64
  const mockMiddleware2: CorePikkuMiddleware = async (
76
65
  services,
77
- interaction,
66
+ wire,
78
67
  next
79
68
  ) => {
80
69
  await next()
81
70
  }
82
71
 
83
- const result = combineMiddleware(
84
- PikkuWiringTypes.http,
85
- Math.random().toString(),
86
- {
87
- funcMiddleware: [mockMiddleware1, mockMiddleware2],
88
- }
89
- )
72
+ const result = combineMiddleware('http', Math.random().toString(), {
73
+ funcMiddleware: [mockMiddleware1, mockMiddleware2],
74
+ })
90
75
 
91
76
  assert.equal(result.length, 2)
92
77
  assert.equal(result[0], mockMiddleware1)
@@ -97,14 +82,14 @@ describe('combineMiddleware', () => {
97
82
  // Setup tagged middleware
98
83
  const wiringTagMiddleware: CorePikkuMiddleware = async (
99
84
  services,
100
- interaction,
85
+ wire,
101
86
  next
102
87
  ) => {
103
88
  await next()
104
89
  }
105
90
  const funcTagMiddleware: CorePikkuMiddleware = async (
106
91
  services,
107
- interaction,
92
+ wire,
108
93
  next
109
94
  ) => {
110
95
  await next()
@@ -115,29 +100,25 @@ describe('combineMiddleware', () => {
115
100
 
116
101
  const wiringMiddleware: CorePikkuMiddleware = async (
117
102
  services,
118
- interaction,
103
+ wire,
119
104
  next
120
105
  ) => {
121
106
  await next()
122
107
  }
123
108
  const funcMiddleware: CorePikkuMiddleware = async (
124
109
  services,
125
- interaction,
110
+ wire,
126
111
  next
127
112
  ) => {
128
113
  await next()
129
114
  }
130
115
 
131
- const result = combineMiddleware(
132
- PikkuWiringTypes.http,
133
- Math.random().toString(),
134
- {
135
- wireInheritedMiddleware: [{ type: 'tag', tag: 'wiringTag' }],
136
- wireMiddleware: [wiringMiddleware],
137
- funcInheritedMiddleware: [{ type: 'tag', tag: 'funcTag' }],
138
- funcMiddleware: [funcMiddleware],
139
- }
140
- )
116
+ const result = combineMiddleware('http', Math.random().toString(), {
117
+ wireInheritedMiddleware: [{ type: 'tag', tag: 'wiringTag' }],
118
+ wireMiddleware: [wiringMiddleware],
119
+ funcInheritedMiddleware: [{ type: 'tag', tag: 'funcTag' }],
120
+ funcMiddleware: [funcMiddleware],
121
+ })
141
122
 
142
123
  assert.equal(result.length, 4)
143
124
  // Order: wireInheritedMiddleware (tags), wireMiddleware, funcInheritedMiddleware (tags), funcMiddleware
@@ -150,7 +131,7 @@ describe('combineMiddleware', () => {
150
131
  test('should handle wiring tags only', () => {
151
132
  const taggedMiddleware: CorePikkuMiddleware = async (
152
133
  services,
153
- interaction,
134
+ wire,
154
135
  next
155
136
  ) => {
156
137
  await next()
@@ -158,13 +139,9 @@ describe('combineMiddleware', () => {
158
139
 
159
140
  addMiddleware('testTag', [taggedMiddleware])
160
141
 
161
- const result = combineMiddleware(
162
- PikkuWiringTypes.http,
163
- Math.random().toString(),
164
- {
165
- wireInheritedMiddleware: [{ type: 'tag', tag: 'testTag' }],
166
- }
167
- )
142
+ const result = combineMiddleware('http', Math.random().toString(), {
143
+ wireInheritedMiddleware: [{ type: 'tag', tag: 'testTag' }],
144
+ })
168
145
 
169
146
  assert.equal(result.length, 1)
170
147
  assert.equal(result[0], taggedMiddleware)
@@ -173,7 +150,7 @@ describe('combineMiddleware', () => {
173
150
  test('should handle function tags only', () => {
174
151
  const taggedMiddleware: CorePikkuMiddleware = async (
175
152
  services,
176
- interaction,
153
+ wire,
177
154
  next
178
155
  ) => {
179
156
  await next()
@@ -181,47 +158,31 @@ describe('combineMiddleware', () => {
181
158
 
182
159
  addMiddleware('funcTestTag', [taggedMiddleware])
183
160
 
184
- const result = combineMiddleware(
185
- PikkuWiringTypes.http,
186
- Math.random().toString(),
187
- {
188
- funcInheritedMiddleware: [{ type: 'tag', tag: 'funcTestTag' }],
189
- }
190
- )
161
+ const result = combineMiddleware('http', Math.random().toString(), {
162
+ funcInheritedMiddleware: [{ type: 'tag', tag: 'funcTestTag' }],
163
+ })
191
164
 
192
165
  assert.equal(result.length, 1)
193
166
  assert.equal(result[0], taggedMiddleware)
194
167
  })
195
168
 
196
169
  test('should handle multiple tags', () => {
197
- const middleware1: CorePikkuMiddleware = async (
198
- services,
199
- interaction,
200
- next
201
- ) => {
170
+ const middleware1: CorePikkuMiddleware = async (services, wire, next) => {
202
171
  await next()
203
172
  }
204
- const middleware2: CorePikkuMiddleware = async (
205
- services,
206
- interaction,
207
- next
208
- ) => {
173
+ const middleware2: CorePikkuMiddleware = async (services, wire, next) => {
209
174
  await next()
210
175
  }
211
176
 
212
177
  addMiddleware('tag1', [middleware1])
213
178
  addMiddleware('tag2', [middleware2])
214
179
 
215
- const result = combineMiddleware(
216
- PikkuWiringTypes.http,
217
- Math.random().toString(),
218
- {
219
- wireInheritedMiddleware: [
220
- { type: 'tag', tag: 'tag1' },
221
- { type: 'tag', tag: 'tag2' },
222
- ],
223
- }
224
- )
180
+ const result = combineMiddleware('http', Math.random().toString(), {
181
+ wireInheritedMiddleware: [
182
+ { type: 'tag', tag: 'tag1' },
183
+ { type: 'tag', tag: 'tag2' },
184
+ ],
185
+ })
225
186
 
226
187
  assert.equal(result.length, 2)
227
188
  assert.equal(result[0], middleware1)
@@ -229,29 +190,19 @@ describe('combineMiddleware', () => {
229
190
  })
230
191
 
231
192
  test('should ignore non-existent tags', () => {
232
- const middleware: CorePikkuMiddleware = async (
233
- services,
234
- interaction,
235
- next
236
- ) => {
193
+ const middleware: CorePikkuMiddleware = async (services, wire, next) => {
237
194
  await next()
238
195
  }
239
196
 
240
197
  addMiddleware('existingTag', [middleware])
241
198
 
242
- const result = combineMiddleware(
243
- PikkuWiringTypes.http,
244
- Math.random().toString(),
245
- {
246
- wireInheritedMiddleware: [
247
- { type: 'tag', tag: 'existingTag' },
248
- { type: 'tag', tag: 'nonExistentTag' },
249
- ],
250
- funcInheritedMiddleware: [
251
- { type: 'tag', tag: 'anotherNonExistentTag' },
252
- ],
253
- }
254
- )
199
+ const result = combineMiddleware('http', Math.random().toString(), {
200
+ wireInheritedMiddleware: [
201
+ { type: 'tag', tag: 'existingTag' },
202
+ { type: 'tag', tag: 'nonExistentTag' },
203
+ ],
204
+ funcInheritedMiddleware: [{ type: 'tag', tag: 'anotherNonExistentTag' }],
205
+ })
255
206
 
256
207
  assert.equal(result.length, 1)
257
208
  assert.equal(result[0], middleware)
@@ -262,20 +213,12 @@ describe('runMiddleware', () => {
262
213
  test('should deduplicate middleware using Set', async () => {
263
214
  const executionOrder: string[] = []
264
215
 
265
- const middleware1: CorePikkuMiddleware = async (
266
- services,
267
- interaction,
268
- next
269
- ) => {
216
+ const middleware1: CorePikkuMiddleware = async (services, wire, next) => {
270
217
  executionOrder.push('middleware1')
271
218
  await next()
272
219
  }
273
220
 
274
- const middleware2: CorePikkuMiddleware = async (
275
- services,
276
- interaction,
277
- next
278
- ) => {
221
+ const middleware2: CorePikkuMiddleware = async (services, wire, next) => {
279
222
  executionOrder.push('middleware2')
280
223
  await next()
281
224
  }
@@ -283,7 +226,7 @@ describe('runMiddleware', () => {
283
226
  await runMiddleware(
284
227
  {} as any,
285
228
  {} as any,
286
- combineMiddleware(PikkuWiringTypes.rpc, Math.random().toString(), {
229
+ combineMiddleware('rpc', Math.random().toString(), {
287
230
  wireMiddleware: [middleware1, middleware2, middleware1, middleware2],
288
231
  }),
289
232
  async () => {
@@ -298,21 +241,13 @@ describe('runMiddleware', () => {
298
241
  test('should execute middleware in correct order', async () => {
299
242
  const executionOrder: string[] = []
300
243
 
301
- const middleware1: CorePikkuMiddleware = async (
302
- services,
303
- interaction,
304
- next
305
- ) => {
244
+ const middleware1: CorePikkuMiddleware = async (services, wire, next) => {
306
245
  executionOrder.push('start1')
307
246
  await next()
308
247
  executionOrder.push('end1')
309
248
  }
310
249
 
311
- const middleware2: CorePikkuMiddleware = async (
312
- services,
313
- interaction,
314
- next
315
- ) => {
250
+ const middleware2: CorePikkuMiddleware = async (services, wire, next) => {
316
251
  executionOrder.push('start2')
317
252
  await next()
318
253
  executionOrder.push('end2')
@@ -349,11 +284,7 @@ describe('runMiddleware', () => {
349
284
  test('should work without main function', async () => {
350
285
  const executionOrder: string[] = []
351
286
 
352
- const middleware: CorePikkuMiddleware = async (
353
- services,
354
- interaction,
355
- next
356
- ) => {
287
+ const middleware: CorePikkuMiddleware = async (services, wire, next) => {
357
288
  executionOrder.push('middleware')
358
289
  await next()
359
290
  }
@@ -1,7 +1,6 @@
1
- import { UserSessionService } from './services/user-session-service.js'
2
1
  import {
3
2
  CoreSingletonServices,
4
- PikkuInteraction,
3
+ PikkuWire,
5
4
  CorePikkuMiddleware,
6
5
  CorePikkuMiddlewareGroup,
7
6
  PikkuWiringTypes,
@@ -14,7 +13,7 @@ import { freezeDedupe } from './utils.js'
14
13
  * Runs a chain of middleware functions in sequence before executing the main function.
15
14
  *
16
15
  * @param services - An object containing services (e.g., singletonServices, userSession, etc.)
17
- * @param interaction - The interaction context, e.g., { http }.
16
+ * @param wire - The wire context, e.g., { http }.
18
17
  * @param middlewares - An array of middleware functions to run.
19
18
  * @param main - The main function to execute after all middleware have run.
20
19
  * @returns A promise resolving to the result of the main function.
@@ -28,10 +27,8 @@ import { freezeDedupe } from './utils.js'
28
27
  * );
29
28
  */
30
29
  export const runMiddleware = async <Middleware extends CorePikkuMiddleware>(
31
- services: CoreSingletonServices & {
32
- userSession?: UserSessionService<any>
33
- },
34
- interaction: PikkuInteraction,
30
+ services: CoreSingletonServices,
31
+ wire: PikkuWire,
35
32
  middlewares: readonly Middleware[],
36
33
  main?: () => Promise<unknown>
37
34
  ): Promise<unknown> => {
@@ -39,7 +36,7 @@ export const runMiddleware = async <Middleware extends CorePikkuMiddleware>(
39
36
  let result: any
40
37
  const dispatch = async (index: number): Promise<any> => {
41
38
  if (middlewares && index < middlewares.length) {
42
- return await middlewares[index]!(services as any, interaction, () =>
39
+ return await middlewares[index]!(services as any, wire, () =>
43
40
  dispatch(index + 1)
44
41
  )
45
42
  } else if (main) {
@@ -115,14 +112,14 @@ const middlewareCache: Record<
115
112
  PikkuWiringTypes,
116
113
  Record<string, readonly CorePikkuMiddleware[]>
117
114
  > = {
118
- [PikkuWiringTypes.http]: {},
119
- [PikkuWiringTypes.rpc]: {},
120
- [PikkuWiringTypes.channel]: {},
121
- [PikkuWiringTypes.queue]: {},
122
- [PikkuWiringTypes.scheduler]: {},
123
- [PikkuWiringTypes.mcp]: {},
124
- [PikkuWiringTypes.cli]: {},
125
- [PikkuWiringTypes.workflow]: {},
115
+ http: {},
116
+ rpc: {},
117
+ channel: {},
118
+ queue: {},
119
+ scheduler: {},
120
+ mcp: {},
121
+ cli: {},
122
+ workflow: {},
126
123
  }
127
124
 
128
125
  /**
@@ -6,11 +6,7 @@ import {
6
6
  runPermissions,
7
7
  } from './permissions.js'
8
8
  import { resetPikkuState } from './pikku-state.js'
9
- import {
10
- CoreServices,
11
- CoreUserSession,
12
- PikkuWiringTypes,
13
- } from './types/core.types.js'
9
+ import { CoreServices, CoreUserSession } from './types/core.types.js'
14
10
  import { CorePermissionGroup } from './function/functions.types.js'
15
11
 
16
12
  beforeEach(() => {
@@ -164,10 +160,10 @@ describe('getPermissionsForTags', () => {
164
160
  describe('runPermissions', () => {
165
161
  test('should pass when no permissions are defined', async () => {
166
162
  // Should not throw
167
- await runPermissions(PikkuWiringTypes.rpc, Math.random().toString(), {
168
- allServices: mockServices,
163
+ await runPermissions('rpc', Math.random().toString(), {
164
+ services: mockServices,
165
+ wire: {},
169
166
  data: {},
170
- session: mockSession,
171
167
  })
172
168
  })
173
169
 
@@ -180,11 +176,11 @@ describe('runPermissions', () => {
180
176
 
181
177
  addPermission('wiringTag', [wiringTagPermission])
182
178
 
183
- await runPermissions(PikkuWiringTypes.rpc, Math.random().toString(), {
179
+ await runPermissions('rpc', Math.random().toString(), {
184
180
  wireInheritedPermissions: [{ type: 'tag', tag: 'wiringTag' }],
185
- allServices: mockServices,
181
+ services: mockServices,
182
+ wire: {},
186
183
  data: {},
187
- session: mockSession,
188
184
  })
189
185
 
190
186
  assert.deepEqual(executionOrder, ['wiringTag'])
@@ -223,14 +219,14 @@ describe('runPermissions', () => {
223
219
  ],
224
220
  }
225
221
 
226
- await runPermissions(PikkuWiringTypes.rpc, Math.random().toString(), {
222
+ await runPermissions('rpc', Math.random().toString(), {
227
223
  wireInheritedPermissions: [{ type: 'tag', tag: 'wiringTag' }],
228
224
  wirePermissions,
229
225
  funcInheritedPermissions: [{ type: 'tag', tag: 'funcTag' }],
230
226
  funcPermissions,
231
- allServices: mockServices,
227
+ services: mockServices,
228
+ wire: {},
232
229
  data: {},
233
- session: mockSession,
234
230
  })
235
231
 
236
232
  // Order: wireInheritedPermissions (wiringTag) → wirePermissions → funcInheritedPermissions (funcTag) → funcPermissions
@@ -249,11 +245,11 @@ describe('runPermissions', () => {
249
245
  addPermission('atLeastOneTestTag', [failingPermission, passingPermission])
250
246
 
251
247
  // Should not throw because at least one permission passes
252
- await runPermissions(PikkuWiringTypes.rpc, Math.random().toString(), {
248
+ await runPermissions('rpc', Math.random().toString(), {
253
249
  wireInheritedPermissions: [{ type: 'tag', tag: 'atLeastOneTestTag' }],
254
- allServices: mockServices,
250
+ services: mockServices,
251
+ wire: {},
255
252
  data: {},
256
- session: mockSession,
257
253
  })
258
254
  })
259
255
 
@@ -264,11 +260,11 @@ describe('runPermissions', () => {
264
260
  addPermission('allFailTestTag', [failingPermission1, failingPermission2])
265
261
 
266
262
  await assert.rejects(
267
- runPermissions(PikkuWiringTypes.rpc, Math.random().toString(), {
263
+ runPermissions('rpc', Math.random().toString(), {
268
264
  wireInheritedPermissions: [{ type: 'tag', tag: 'allFailTestTag' }],
269
- allServices: mockServices,
265
+ services: mockServices,
266
+ wire: {},
270
267
  data: {},
271
- session: mockSession,
272
268
  }),
273
269
  {
274
270
  message: 'Permission denied',
@@ -282,11 +278,11 @@ describe('runPermissions', () => {
282
278
  }
283
279
 
284
280
  await assert.rejects(
285
- runPermissions(PikkuWiringTypes.rpc, Math.random().toString(), {
281
+ runPermissions('rpc', Math.random().toString(), {
286
282
  wirePermissions,
287
- allServices: mockServices,
283
+ services: mockServices,
284
+ wire: {},
288
285
  data: {},
289
- session: mockSession,
290
286
  }),
291
287
  {
292
288
  message: 'Permission denied',
@@ -300,11 +296,11 @@ describe('runPermissions', () => {
300
296
  addPermission('funcTag', [failingPermission])
301
297
 
302
298
  await assert.rejects(
303
- runPermissions(PikkuWiringTypes.rpc, Math.random().toString(), {
299
+ runPermissions('rpc', Math.random().toString(), {
304
300
  funcInheritedPermissions: [{ type: 'tag', tag: 'funcTag' }],
305
- allServices: mockServices,
301
+ services: mockServices,
302
+ wire: {},
306
303
  data: {},
307
- session: mockSession,
308
304
  }),
309
305
  {
310
306
  message: 'Permission denied',
@@ -318,11 +314,11 @@ describe('runPermissions', () => {
318
314
  }
319
315
 
320
316
  await assert.rejects(
321
- runPermissions(PikkuWiringTypes.rpc, Math.random().toString(), {
317
+ runPermissions('rpc', Math.random().toString(), {
322
318
  funcPermissions,
323
- allServices: mockServices,
319
+ services: mockServices,
320
+ wire: {},
324
321
  data: {},
325
- session: mockSession,
326
322
  }),
327
323
  {
328
324
  message: 'Permission denied',
@@ -350,12 +346,12 @@ describe('runPermissions', () => {
350
346
  }
351
347
 
352
348
  // Should NOT throw because at least one permission (wirePermissions) passes
353
- await runPermissions(PikkuWiringTypes.rpc, Math.random().toString(), {
349
+ await runPermissions('rpc', Math.random().toString(), {
354
350
  wireInheritedPermissions: [{ type: 'tag', tag: 'failingWiringTag' }],
355
351
  wirePermissions,
356
- allServices: mockServices,
352
+ services: mockServices,
353
+ wire: {},
357
354
  data: {},
358
- session: mockSession,
359
355
  })
360
356
 
361
357
  // Both permissions should be evaluated
@@ -368,11 +364,11 @@ describe('runPermissions', () => {
368
364
  addPermission('arrayTestTag', arrayPermission)
369
365
 
370
366
  // Should not throw because verifyPermissions handles array properly
371
- await runPermissions(PikkuWiringTypes.rpc, Math.random().toString(), {
367
+ await runPermissions('rpc', Math.random().toString(), {
372
368
  wireInheritedPermissions: [{ type: 'tag', tag: 'arrayTestTag' }],
373
- allServices: mockServices,
369
+ services: mockServices,
370
+ wire: {},
374
371
  data: {},
375
- session: mockSession,
376
372
  })
377
373
  })
378
374
 
@@ -384,23 +380,23 @@ describe('runPermissions', () => {
384
380
  addPermission('objectTestTag', permissionGroup)
385
381
 
386
382
  // Should not throw because verifyPermissions handles objects properly
387
- await runPermissions(PikkuWiringTypes.rpc, Math.random().toString(), {
383
+ await runPermissions('rpc', Math.random().toString(), {
388
384
  wireInheritedPermissions: [{ type: 'tag', tag: 'objectTestTag' }],
389
- allServices: mockServices,
385
+ services: mockServices,
386
+ wire: {},
390
387
  data: {},
391
- session: mockSession,
392
388
  })
393
389
  })
394
390
 
395
391
  test('should pass correct parameters to permission functions', async () => {
396
392
  let receivedServices: any
393
+ let receivedWire: any
397
394
  let receivedData: any
398
- let receivedSession: any
399
395
 
400
- const testPermission = async (services: any, data: any, session: any) => {
396
+ const testPermission = async (services: any, data: any, wire: any) => {
401
397
  receivedServices = services
402
398
  receivedData = data
403
- receivedSession = session
399
+ receivedWire = wire
404
400
  return true
405
401
  }
406
402
 
@@ -408,15 +404,15 @@ describe('runPermissions', () => {
408
404
 
409
405
  addPermission('paramTestTag', [testPermission])
410
406
 
411
- await runPermissions(PikkuWiringTypes.rpc, Math.random().toString(), {
407
+ await runPermissions('rpc', Math.random().toString(), {
412
408
  wireInheritedPermissions: [{ type: 'tag', tag: 'paramTestTag' }],
413
- allServices: mockServices,
409
+ services: mockServices,
410
+ wire: {},
414
411
  data: testData,
415
- session: mockSession,
416
412
  })
417
413
 
418
414
  assert.equal(receivedServices, mockServices)
419
415
  assert.equal(receivedData, testData)
420
- assert.equal(receivedSession, mockSession)
416
+ assert.deepEqual(receivedWire, {})
421
417
  })
422
418
  })