@pikku/core 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.
Files changed (184) hide show
  1. package/CHANGELOG.md +35 -1
  2. package/dist/errors/error-handler.js +3 -3
  3. package/dist/errors/errors.d.ts +1 -1
  4. package/dist/errors/errors.js +3 -3
  5. package/dist/function/function-runner.d.ts +8 -8
  6. package/dist/function/function-runner.js +88 -23
  7. package/dist/function/functions.types.d.ts +104 -33
  8. package/dist/function/functions.types.js +50 -7
  9. package/dist/handle-error.d.ts +1 -1
  10. package/dist/handle-error.js +1 -1
  11. package/dist/index.d.ts +6 -2
  12. package/dist/index.js +5 -2
  13. package/dist/middleware/auth-apikey.d.ts +1 -1
  14. package/dist/middleware/auth-apikey.js +3 -3
  15. package/dist/middleware/auth-bearer.d.ts +1 -1
  16. package/dist/middleware/auth-bearer.js +3 -3
  17. package/dist/middleware/auth-cookie.d.ts +1 -1
  18. package/dist/middleware/auth-cookie.js +5 -5
  19. package/dist/middleware/timeout.d.ts +1 -1
  20. package/dist/middleware/timeout.js +3 -2
  21. package/dist/middleware-runner.d.ts +6 -20
  22. package/dist/middleware-runner.js +19 -20
  23. package/dist/permissions.d.ts +6 -89
  24. package/dist/permissions.js +24 -81
  25. package/dist/pikku-state.d.ts +32 -104
  26. package/dist/pikku-state.js +140 -66
  27. package/dist/schema.d.ts +8 -6
  28. package/dist/schema.js +25 -13
  29. package/dist/services/user-session-service.d.ts +7 -3
  30. package/dist/services/user-session-service.js +8 -1
  31. package/dist/services/workflow-service.d.ts +38 -0
  32. package/dist/services/workflow-service.js +1 -0
  33. package/dist/types/core.types.d.ts +40 -41
  34. package/dist/types/core.types.js +4 -15
  35. package/dist/types/state.types.d.ts +135 -0
  36. package/dist/types/state.types.js +1 -0
  37. package/dist/utils.d.ts +9 -1
  38. package/dist/utils.js +48 -3
  39. package/dist/wirings/channel/channel-common.js +2 -3
  40. package/dist/wirings/channel/channel-handler.d.ts +3 -2
  41. package/dist/wirings/channel/channel-handler.js +7 -10
  42. package/dist/wirings/channel/channel-runner.d.ts +2 -2
  43. package/dist/wirings/channel/channel-runner.js +5 -5
  44. package/dist/wirings/channel/channel.types.d.ts +10 -5
  45. package/dist/wirings/channel/local/local-channel-runner.d.ts +1 -1
  46. package/dist/wirings/channel/local/local-channel-runner.js +19 -26
  47. package/dist/wirings/channel/log-channels.js +1 -1
  48. package/dist/wirings/channel/serverless/serverless-channel-runner.d.ts +1 -1
  49. package/dist/wirings/channel/serverless/serverless-channel-runner.js +43 -48
  50. package/dist/wirings/cli/channel/cli-channel-runner.js +3 -2
  51. package/dist/wirings/cli/cli-runner.d.ts +5 -5
  52. package/dist/wirings/cli/cli-runner.js +20 -38
  53. package/dist/wirings/cli/cli.types.d.ts +16 -11
  54. package/dist/wirings/forge-node/forge-node.types.d.ts +120 -0
  55. package/dist/wirings/forge-node/forge-node.types.js +38 -0
  56. package/dist/wirings/forge-node/index.d.ts +1 -0
  57. package/dist/wirings/forge-node/index.js +1 -0
  58. package/dist/wirings/http/http-runner.d.ts +8 -8
  59. package/dist/wirings/http/http-runner.js +46 -51
  60. package/dist/wirings/http/http.types.d.ts +19 -11
  61. package/dist/wirings/http/log-http-routes.js +1 -1
  62. package/dist/wirings/http/routers/path-to-regex.js +2 -2
  63. package/dist/wirings/mcp/mcp-runner.d.ts +2 -2
  64. package/dist/wirings/mcp/mcp-runner.js +33 -40
  65. package/dist/wirings/mcp/mcp.types.d.ts +6 -0
  66. package/dist/wirings/queue/queue-runner.d.ts +3 -3
  67. package/dist/wirings/queue/queue-runner.js +13 -23
  68. package/dist/wirings/queue/queue.types.d.ts +4 -11
  69. package/dist/wirings/rpc/index.d.ts +1 -1
  70. package/dist/wirings/rpc/index.js +1 -1
  71. package/dist/wirings/rpc/rpc-runner.d.ts +17 -16
  72. package/dist/wirings/rpc/rpc-runner.js +98 -61
  73. package/dist/wirings/rpc/rpc-types.d.ts +7 -0
  74. package/dist/wirings/scheduler/log-schedulers.js +1 -1
  75. package/dist/wirings/scheduler/scheduler-runner.d.ts +3 -3
  76. package/dist/wirings/scheduler/scheduler-runner.js +18 -29
  77. package/dist/wirings/scheduler/scheduler.types.d.ts +3 -8
  78. package/dist/wirings/trigger/index.d.ts +2 -0
  79. package/dist/wirings/trigger/index.js +2 -0
  80. package/dist/wirings/trigger/trigger-runner.d.ts +29 -0
  81. package/dist/wirings/trigger/trigger-runner.js +57 -0
  82. package/dist/wirings/trigger/trigger.types.d.ts +42 -0
  83. package/dist/wirings/trigger/trigger.types.js +1 -0
  84. package/dist/wirings/workflow/dsl/index.d.ts +5 -0
  85. package/dist/wirings/workflow/dsl/index.js +4 -0
  86. package/dist/wirings/workflow/dsl/workflow-dsl.types.d.ts +286 -0
  87. package/dist/wirings/workflow/dsl/workflow-dsl.types.js +5 -0
  88. package/dist/wirings/workflow/dsl/workflow-runner.d.ts +5 -0
  89. package/dist/wirings/workflow/dsl/workflow-runner.js +22 -0
  90. package/dist/wirings/workflow/graph/graph-node.d.ts +122 -0
  91. package/dist/wirings/workflow/graph/graph-node.js +58 -0
  92. package/dist/wirings/workflow/graph/graph-runner.d.ts +35 -0
  93. package/dist/wirings/workflow/graph/graph-runner.js +452 -0
  94. package/dist/wirings/workflow/graph/index.d.ts +3 -0
  95. package/dist/wirings/workflow/graph/index.js +3 -0
  96. package/dist/wirings/workflow/graph/workflow-graph.types.d.ts +95 -0
  97. package/dist/wirings/workflow/graph/workflow-graph.types.js +15 -0
  98. package/dist/wirings/workflow/index.d.ts +7 -3
  99. package/dist/wirings/workflow/index.js +6 -3
  100. package/dist/wirings/workflow/pikku-workflow-service.d.ts +108 -10
  101. package/dist/wirings/workflow/pikku-workflow-service.js +274 -165
  102. package/dist/wirings/workflow/wire-workflow.d.ts +42 -0
  103. package/dist/wirings/workflow/wire-workflow.js +53 -0
  104. package/dist/wirings/workflow/workflow-utils.d.ts +23 -0
  105. package/dist/wirings/workflow/workflow-utils.js +66 -0
  106. package/dist/wirings/workflow/workflow.types.d.ts +135 -128
  107. package/package.json +11 -2
  108. package/src/errors/error-handler.ts +3 -3
  109. package/src/errors/errors.ts +3 -3
  110. package/src/factory-functions.test.ts +9 -36
  111. package/src/function/function-runner.test.ts +58 -69
  112. package/src/function/function-runner.ts +130 -37
  113. package/src/function/functions.types.ts +193 -54
  114. package/src/handle-error.ts +1 -1
  115. package/src/index.ts +10 -5
  116. package/src/middleware/auth-apikey.test.ts +360 -0
  117. package/src/middleware/auth-apikey.ts +3 -7
  118. package/src/middleware/auth-bearer.test.ts +447 -0
  119. package/src/middleware/auth-bearer.ts +27 -33
  120. package/src/middleware/auth-cookie.test.ts +525 -0
  121. package/src/middleware/auth-cookie.ts +6 -6
  122. package/src/middleware/timeout.ts +4 -2
  123. package/src/middleware-runner.test.ts +58 -127
  124. package/src/middleware-runner.ts +29 -25
  125. package/src/permissions.test.ts +68 -130
  126. package/src/permissions.ts +41 -100
  127. package/src/pikku-state.ts +156 -201
  128. package/src/schema.ts +42 -13
  129. package/src/services/user-session-service.ts +14 -4
  130. package/src/services/workflow-service.ts +74 -0
  131. package/src/types/core.types.ts +79 -58
  132. package/src/types/state.types.ts +195 -0
  133. package/src/utils.ts +59 -4
  134. package/src/wirings/channel/channel-common.ts +4 -7
  135. package/src/wirings/channel/channel-handler.ts +17 -23
  136. package/src/wirings/channel/channel-runner.ts +7 -7
  137. package/src/wirings/channel/channel.types.ts +14 -11
  138. package/src/wirings/channel/local/local-channel-runner.test.ts +8 -4
  139. package/src/wirings/channel/local/local-channel-runner.ts +23 -38
  140. package/src/wirings/channel/log-channels.ts +1 -1
  141. package/src/wirings/channel/serverless/serverless-channel-runner.ts +53 -79
  142. package/src/wirings/cli/channel/cli-channel-runner.ts +4 -3
  143. package/src/wirings/cli/cli-runner.test.ts +26 -26
  144. package/src/wirings/cli/cli-runner.ts +34 -71
  145. package/src/wirings/cli/cli.types.ts +23 -16
  146. package/src/wirings/forge-node/forge-node.types.ts +135 -0
  147. package/src/wirings/forge-node/index.ts +1 -0
  148. package/src/wirings/http/http-runner.test.ts +10 -10
  149. package/src/wirings/http/http-runner.ts +56 -66
  150. package/src/wirings/http/http.types.ts +19 -14
  151. package/src/wirings/http/log-http-routes.ts +1 -1
  152. package/src/wirings/http/routers/path-to-regex.test.ts +30 -19
  153. package/src/wirings/http/routers/path-to-regex.ts +2 -2
  154. package/src/wirings/mcp/mcp-runner.ts +44 -69
  155. package/src/wirings/mcp/mcp.types.ts +6 -0
  156. package/src/wirings/queue/queue-runner.test.ts +641 -0
  157. package/src/wirings/queue/queue-runner.ts +16 -38
  158. package/src/wirings/queue/queue.types.ts +4 -11
  159. package/src/wirings/rpc/index.ts +1 -1
  160. package/src/wirings/rpc/rpc-runner.ts +129 -77
  161. package/src/wirings/rpc/rpc-types.ts +8 -0
  162. package/src/wirings/scheduler/log-schedulers.ts +1 -1
  163. package/src/wirings/scheduler/scheduler-runner.test.ts +627 -0
  164. package/src/wirings/scheduler/scheduler-runner.ts +29 -55
  165. package/src/wirings/scheduler/scheduler.types.ts +3 -9
  166. package/src/wirings/trigger/index.ts +2 -0
  167. package/src/wirings/trigger/trigger-runner.ts +96 -0
  168. package/src/wirings/trigger/trigger.types.ts +56 -0
  169. package/src/wirings/workflow/dsl/index.ts +30 -0
  170. package/src/wirings/workflow/dsl/workflow-dsl.types.ts +312 -0
  171. package/src/wirings/workflow/dsl/workflow-runner.ts +27 -0
  172. package/src/wirings/workflow/graph/graph-node.ts +227 -0
  173. package/src/wirings/workflow/graph/graph-runner.ts +694 -0
  174. package/src/wirings/workflow/graph/index.ts +3 -0
  175. package/src/wirings/workflow/graph/workflow-graph.types.ts +126 -0
  176. package/src/wirings/workflow/index.ts +60 -12
  177. package/src/wirings/workflow/pikku-workflow-service.ts +401 -195
  178. package/src/wirings/workflow/wire-workflow.ts +94 -0
  179. package/src/wirings/workflow/workflow-utils.ts +120 -0
  180. package/src/wirings/workflow/workflow.types.ts +167 -188
  181. package/tsconfig.tsbuildinfo +1 -1
  182. package/dist/wirings/workflow/workflow-runner.d.ts +0 -35
  183. package/dist/wirings/workflow/workflow-runner.js +0 -68
  184. package/src/wirings/workflow/workflow-runner.ts +0 -85
@@ -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) {
@@ -85,9 +82,10 @@ export const runMiddleware = async <Middleware extends CorePikkuMiddleware>(
85
82
  */
86
83
  export const addMiddleware = <PikkuMiddleware extends CorePikkuMiddleware>(
87
84
  tag: string,
88
- middleware: CorePikkuMiddlewareGroup
85
+ middleware: CorePikkuMiddlewareGroup,
86
+ packageName: string | null = null
89
87
  ): CorePikkuMiddlewareGroup => {
90
- const tagGroups = pikkuState('middleware', 'tagGroup')
88
+ const tagGroups = pikkuState(packageName, 'middleware', 'tagGroup')
91
89
  tagGroups[tag] = middleware
92
90
  return middleware
93
91
  }
@@ -103,10 +101,8 @@ export const addMiddleware = <PikkuMiddleware extends CorePikkuMiddleware>(
103
101
  *
104
102
  * @internal
105
103
  */
106
- export const getMiddlewareByName = (
107
- name: string
108
- ): CorePikkuMiddleware | undefined => {
109
- const middlewareStore = pikkuState('misc', 'middleware')
104
+ const getMiddlewareByName = (name: string): CorePikkuMiddleware | undefined => {
105
+ const middlewareStore = pikkuState(null, 'misc', 'middleware')
110
106
  const middleware = middlewareStore[name]
111
107
  return middleware?.[0]
112
108
  }
@@ -115,14 +111,14 @@ const middlewareCache: Record<
115
111
  PikkuWiringTypes,
116
112
  Record<string, readonly CorePikkuMiddleware[]>
117
113
  > = {
118
- [PikkuWiringTypes.http]: {},
119
- [PikkuWiringTypes.rpc]: {},
120
- [PikkuWiringTypes.channel]: {},
121
- [PikkuWiringTypes.queue]: {},
122
- [PikkuWiringTypes.scheduler]: {},
123
- [PikkuWiringTypes.mcp]: {},
124
- [PikkuWiringTypes.cli]: {},
125
- [PikkuWiringTypes.workflow]: {},
114
+ http: {},
115
+ rpc: {},
116
+ channel: {},
117
+ queue: {},
118
+ scheduler: {},
119
+ mcp: {},
120
+ cli: {},
121
+ workflow: {},
126
122
  }
127
123
 
128
124
  /**
@@ -155,11 +151,13 @@ export const combineMiddleware = (
155
151
  wireMiddleware,
156
152
  funcInheritedMiddleware,
157
153
  funcMiddleware,
154
+ packageName = null,
158
155
  }: {
159
156
  wireInheritedMiddleware?: MiddlewareMetadata[]
160
157
  wireMiddleware?: CorePikkuMiddleware[]
161
158
  funcInheritedMiddleware?: MiddlewareMetadata[]
162
159
  funcMiddleware?: CorePikkuMiddleware[]
160
+ packageName?: string | null
163
161
  } = {}
164
162
  ): readonly CorePikkuMiddleware[] => {
165
163
  if (middlewareCache[wireType][uid]) {
@@ -173,14 +171,18 @@ export const combineMiddleware = (
173
171
  for (const meta of wireInheritedMiddleware) {
174
172
  if (meta.type === 'http') {
175
173
  // Look up HTTP middleware group from pikkuState
176
- const group = pikkuState('middleware', 'httpGroup')[meta.route]
174
+ const group = pikkuState(packageName, 'middleware', 'httpGroup')[
175
+ meta.route
176
+ ]
177
177
  if (group) {
178
178
  // At runtime, all factories should be resolved to middleware
179
179
  resolved.push(...(group as CorePikkuMiddleware[]))
180
180
  }
181
181
  } else if (meta.type === 'tag') {
182
182
  // Look up tag middleware group from pikkuState
183
- const group = pikkuState('middleware', 'tagGroup')[meta.tag]
183
+ const group = pikkuState(packageName, 'middleware', 'tagGroup')[
184
+ meta.tag
185
+ ]
184
186
  if (group) {
185
187
  // At runtime, all factories should be resolved to middleware
186
188
  resolved.push(...(group as CorePikkuMiddleware[]))
@@ -205,7 +207,9 @@ export const combineMiddleware = (
205
207
  for (const meta of funcInheritedMiddleware) {
206
208
  if (meta.type === 'tag') {
207
209
  // Look up tag middleware group from pikkuState
208
- const group = pikkuState('middleware', 'tagGroup')[meta.tag]
210
+ const group = pikkuState(packageName, 'middleware', 'tagGroup')[
211
+ meta.tag
212
+ ]
209
213
  if (group) {
210
214
  // At runtime, all factories should be resolved to middleware
211
215
  resolved.push(...(group as CorePikkuMiddleware[]))