@pikku/core 0.12.2 → 0.12.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.
Files changed (282) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/crypto-utils.d.ts +10 -0
  3. package/dist/crypto-utils.js +62 -0
  4. package/dist/function/function-runner.js +4 -4
  5. package/dist/function/functions.types.d.ts +26 -1
  6. package/dist/function/functions.types.js +16 -0
  7. package/dist/handle-error.d.ts +1 -1
  8. package/dist/handle-error.js +7 -3
  9. package/dist/index.d.ts +14 -2
  10. package/dist/index.js +1 -1
  11. package/dist/pikku-state.js +3 -1
  12. package/dist/schema.js +1 -1
  13. package/dist/services/in-memory-workflow-service.d.ts +22 -3
  14. package/dist/services/in-memory-workflow-service.js +77 -1
  15. package/dist/services/workflow-service.d.ts +8 -2
  16. package/dist/testing/index.d.ts +2 -0
  17. package/dist/testing/index.js +1 -0
  18. package/dist/testing/service-tests.d.ts +31 -0
  19. package/dist/testing/service-tests.js +598 -0
  20. package/dist/types/core.types.d.ts +9 -1
  21. package/dist/types/state.types.d.ts +4 -2
  22. package/dist/utils/hash.d.ts +2 -0
  23. package/dist/utils/hash.js +23 -0
  24. package/dist/wirings/ai-agent/agent-dynamic-workflow.d.ts +6 -0
  25. package/dist/wirings/ai-agent/agent-dynamic-workflow.js +348 -0
  26. package/dist/wirings/ai-agent/ai-agent-memory.d.ts +1 -1
  27. package/dist/wirings/ai-agent/ai-agent-memory.js +6 -5
  28. package/dist/wirings/ai-agent/ai-agent-prepare.d.ts +10 -7
  29. package/dist/wirings/ai-agent/ai-agent-prepare.js +127 -47
  30. package/dist/wirings/ai-agent/ai-agent-runner.d.ts +4 -0
  31. package/dist/wirings/ai-agent/ai-agent-runner.js +381 -27
  32. package/dist/wirings/ai-agent/ai-agent-stream.d.ts +7 -2
  33. package/dist/wirings/ai-agent/ai-agent-stream.js +109 -46
  34. package/dist/wirings/ai-agent/ai-agent.types.d.ts +22 -1
  35. package/dist/wirings/ai-agent/index.d.ts +1 -2
  36. package/dist/wirings/ai-agent/index.js +1 -2
  37. package/dist/wirings/channel/channel-handler.js +5 -1
  38. package/dist/wirings/channel/channel.types.d.ts +1 -7
  39. package/dist/wirings/channel/local/local-channel-handler.d.ts +1 -1
  40. package/dist/wirings/channel/local/local-channel-handler.js +5 -3
  41. package/dist/wirings/channel/local/local-channel-runner.js +14 -4
  42. package/dist/wirings/channel/serverless/serverless-channel-runner.js +4 -1
  43. package/dist/wirings/cli/cli-runner.js +10 -2
  44. package/dist/wirings/cli/cli.types.d.ts +1 -0
  45. package/dist/wirings/http/http-routes.js +0 -1
  46. package/dist/wirings/http/http-runner.d.ts +1 -1
  47. package/dist/wirings/http/http-runner.js +25 -3
  48. package/dist/wirings/http/http.types.d.ts +3 -11
  49. package/dist/wirings/http/index.d.ts +2 -1
  50. package/dist/wirings/http/index.js +1 -0
  51. package/dist/wirings/http/pikku-fetch-http-request.d.ts +1 -0
  52. package/dist/wirings/http/pikku-fetch-http-request.js +3 -0
  53. package/dist/wirings/http/pikku-fetch-http-response.d.ts +1 -0
  54. package/dist/wirings/http/pikku-fetch-http-response.js +4 -4
  55. package/dist/wirings/http/web-request.d.ts +12 -0
  56. package/dist/wirings/http/web-request.js +85 -0
  57. package/dist/wirings/mcp/mcp-endpoint-registry.js +1 -1
  58. package/dist/wirings/mcp/mcp-runner.js +13 -1
  59. package/dist/wirings/rpc/rpc-runner.d.ts +30 -6
  60. package/dist/wirings/rpc/rpc-runner.js +36 -14
  61. package/dist/wirings/rpc/rpc-types.d.ts +6 -1
  62. package/dist/wirings/rpc/wire-addon.d.ts +1 -0
  63. package/dist/wirings/rpc/wire-addon.js +1 -1
  64. package/dist/wirings/scheduler/scheduler-runner.js +1 -0
  65. package/dist/wirings/workflow/graph/graph-validation.d.ts +3 -0
  66. package/dist/wirings/workflow/graph/graph-validation.js +175 -0
  67. package/dist/wirings/workflow/graph/index.d.ts +1 -0
  68. package/dist/wirings/workflow/graph/index.js +1 -0
  69. package/dist/wirings/workflow/index.d.ts +1 -1
  70. package/dist/wirings/workflow/pikku-workflow-service.d.ts +8 -2
  71. package/dist/wirings/workflow/pikku-workflow-service.js +1 -2
  72. package/dist/wirings/workflow/workflow.types.d.ts +10 -1
  73. package/lcov.info +18891 -0
  74. package/package.json +4 -2
  75. package/dist/wirings/ai-agent/ai-agent-assistant-ui.d.ts +0 -5
  76. package/dist/wirings/ai-agent/ai-agent-assistant-ui.js +0 -168
  77. package/src/crypto-utils.test.ts +0 -116
  78. package/src/crypto-utils.ts +0 -99
  79. package/src/errors/error-handler.ts +0 -62
  80. package/src/errors/error.test.ts +0 -195
  81. package/src/errors/errors.ts +0 -374
  82. package/src/errors/index.ts +0 -2
  83. package/src/factory-functions.test.ts +0 -109
  84. package/src/function/function-runner.test.ts +0 -536
  85. package/src/function/function-runner.ts +0 -365
  86. package/src/function/functions.types.ts +0 -267
  87. package/src/function/index.ts +0 -5
  88. package/src/handle-error.test.ts +0 -361
  89. package/src/handle-error.ts +0 -65
  90. package/src/index.ts +0 -104
  91. package/src/internal.ts +0 -6
  92. package/src/middleware/auth-apikey.test.ts +0 -363
  93. package/src/middleware/auth-apikey.ts +0 -47
  94. package/src/middleware/auth-bearer.test.ts +0 -450
  95. package/src/middleware/auth-bearer.ts +0 -72
  96. package/src/middleware/auth-cookie.test.ts +0 -528
  97. package/src/middleware/auth-cookie.ts +0 -80
  98. package/src/middleware/cors.test.ts +0 -424
  99. package/src/middleware/cors.ts +0 -104
  100. package/src/middleware/index.ts +0 -5
  101. package/src/middleware/remote-auth.test.ts +0 -488
  102. package/src/middleware/remote-auth.ts +0 -68
  103. package/src/middleware/timeout.ts +0 -15
  104. package/src/middleware-runner.test.ts +0 -418
  105. package/src/middleware-runner.ts +0 -234
  106. package/src/permissions.test.ts +0 -434
  107. package/src/permissions.ts +0 -319
  108. package/src/pikku-request.ts +0 -23
  109. package/src/pikku-response.ts +0 -5
  110. package/src/pikku-state.test.ts +0 -224
  111. package/src/pikku-state.ts +0 -214
  112. package/src/run-tests-script.test.ts +0 -49
  113. package/src/schema.test.ts +0 -249
  114. package/src/schema.ts +0 -151
  115. package/src/services/ai-agent-runner-service.ts +0 -41
  116. package/src/services/ai-run-state-service.ts +0 -20
  117. package/src/services/ai-storage-service.ts +0 -39
  118. package/src/services/content-service.ts +0 -76
  119. package/src/services/deployment-service.ts +0 -22
  120. package/src/services/gateway-service.ts +0 -20
  121. package/src/services/gopass-secrets.ts +0 -98
  122. package/src/services/in-memory-ai-run-state-service.ts +0 -73
  123. package/src/services/in-memory-trigger-service.ts +0 -64
  124. package/src/services/in-memory-workflow-service.test.ts +0 -351
  125. package/src/services/in-memory-workflow-service.ts +0 -395
  126. package/src/services/index.ts +0 -56
  127. package/src/services/jwt-service.ts +0 -30
  128. package/src/services/local-content.ts +0 -120
  129. package/src/services/local-gateway-service.ts +0 -62
  130. package/src/services/local-secrets.test.ts +0 -80
  131. package/src/services/local-secrets.ts +0 -94
  132. package/src/services/local-variables.test.ts +0 -61
  133. package/src/services/local-variables.ts +0 -39
  134. package/src/services/logger-console.test.ts +0 -118
  135. package/src/services/logger-console.ts +0 -98
  136. package/src/services/logger.ts +0 -57
  137. package/src/services/scheduler-service.ts +0 -86
  138. package/src/services/schema-service.ts +0 -33
  139. package/src/services/scoped-secret-service.test.ts +0 -74
  140. package/src/services/scoped-secret-service.ts +0 -41
  141. package/src/services/secret-service.ts +0 -38
  142. package/src/services/trigger-service.ts +0 -17
  143. package/src/services/typed-secret-service.test.ts +0 -93
  144. package/src/services/typed-secret-service.ts +0 -70
  145. package/src/services/typed-variables-service.test.ts +0 -73
  146. package/src/services/typed-variables-service.ts +0 -81
  147. package/src/services/user-session-service.test.ts +0 -113
  148. package/src/services/user-session-service.ts +0 -86
  149. package/src/services/variables-service.ts +0 -11
  150. package/src/services/workflow-service.ts +0 -84
  151. package/src/time-utils.test.ts +0 -56
  152. package/src/time-utils.ts +0 -107
  153. package/src/types/core.types.ts +0 -470
  154. package/src/types/state.types.ts +0 -186
  155. package/src/utils.test.ts +0 -350
  156. package/src/utils.ts +0 -129
  157. package/src/version.test.ts +0 -80
  158. package/src/version.ts +0 -25
  159. package/src/wirings/ai-agent/ai-agent-assistant-ui.test.ts +0 -363
  160. package/src/wirings/ai-agent/ai-agent-assistant-ui.ts +0 -238
  161. package/src/wirings/ai-agent/ai-agent-helpers.test.ts +0 -152
  162. package/src/wirings/ai-agent/ai-agent-helpers.ts +0 -76
  163. package/src/wirings/ai-agent/ai-agent-memory.ts +0 -309
  164. package/src/wirings/ai-agent/ai-agent-model-config.test.ts +0 -115
  165. package/src/wirings/ai-agent/ai-agent-model-config.ts +0 -43
  166. package/src/wirings/ai-agent/ai-agent-prepare.ts +0 -522
  167. package/src/wirings/ai-agent/ai-agent-registry.test.ts +0 -37
  168. package/src/wirings/ai-agent/ai-agent-registry.ts +0 -82
  169. package/src/wirings/ai-agent/ai-agent-runner.test.ts +0 -317
  170. package/src/wirings/ai-agent/ai-agent-runner.ts +0 -251
  171. package/src/wirings/ai-agent/ai-agent-stream.test.ts +0 -652
  172. package/src/wirings/ai-agent/ai-agent-stream.ts +0 -1060
  173. package/src/wirings/ai-agent/ai-agent.types.ts +0 -360
  174. package/src/wirings/ai-agent/index.ts +0 -41
  175. package/src/wirings/channel/channel-common.ts +0 -90
  176. package/src/wirings/channel/channel-handler.ts +0 -241
  177. package/src/wirings/channel/channel-middleware-runner.ts +0 -120
  178. package/src/wirings/channel/channel-runner.ts +0 -166
  179. package/src/wirings/channel/channel-store.ts +0 -29
  180. package/src/wirings/channel/channel.types.ts +0 -178
  181. package/src/wirings/channel/define-channel-routes.ts +0 -25
  182. package/src/wirings/channel/eventhub-service.ts +0 -34
  183. package/src/wirings/channel/eventhub-store.ts +0 -13
  184. package/src/wirings/channel/index.ts +0 -24
  185. package/src/wirings/channel/local/index.ts +0 -3
  186. package/src/wirings/channel/local/local-channel-handler.ts +0 -79
  187. package/src/wirings/channel/local/local-channel-runner.test.ts +0 -215
  188. package/src/wirings/channel/local/local-channel-runner.ts +0 -200
  189. package/src/wirings/channel/local/local-eventhub-service.test.ts +0 -95
  190. package/src/wirings/channel/local/local-eventhub-service.ts +0 -101
  191. package/src/wirings/channel/log-channels.ts +0 -20
  192. package/src/wirings/channel/pikku-abstract-channel-handler.test.ts +0 -54
  193. package/src/wirings/channel/pikku-abstract-channel-handler.ts +0 -45
  194. package/src/wirings/channel/serverless/index.ts +0 -5
  195. package/src/wirings/channel/serverless/serverless-channel-runner.ts +0 -286
  196. package/src/wirings/cli/channel/cli-channel-runner.ts +0 -136
  197. package/src/wirings/cli/channel/index.ts +0 -1
  198. package/src/wirings/cli/cli-runner.test.ts +0 -403
  199. package/src/wirings/cli/cli-runner.ts +0 -519
  200. package/src/wirings/cli/cli.types.ts +0 -357
  201. package/src/wirings/cli/command-parser.test.ts +0 -445
  202. package/src/wirings/cli/command-parser.ts +0 -504
  203. package/src/wirings/cli/define-cli-commands.ts +0 -24
  204. package/src/wirings/cli/index.ts +0 -19
  205. package/src/wirings/gateway/gateway-runner.test.ts +0 -474
  206. package/src/wirings/gateway/gateway-runner.ts +0 -411
  207. package/src/wirings/gateway/gateway.types.ts +0 -149
  208. package/src/wirings/gateway/index.ts +0 -13
  209. package/src/wirings/http/http-routes.test.ts +0 -322
  210. package/src/wirings/http/http-routes.ts +0 -198
  211. package/src/wirings/http/http-runner.test.ts +0 -144
  212. package/src/wirings/http/http-runner.ts +0 -563
  213. package/src/wirings/http/http.types.ts +0 -378
  214. package/src/wirings/http/index.ts +0 -25
  215. package/src/wirings/http/log-http-routes.ts +0 -22
  216. package/src/wirings/http/pikku-fetch-http-request.test.ts +0 -237
  217. package/src/wirings/http/pikku-fetch-http-request.ts +0 -166
  218. package/src/wirings/http/pikku-fetch-http-response.test.ts +0 -82
  219. package/src/wirings/http/pikku-fetch-http-response.ts +0 -147
  220. package/src/wirings/http/routers/http-router.ts +0 -13
  221. package/src/wirings/http/routers/path-to-regex.test.ts +0 -319
  222. package/src/wirings/http/routers/path-to-regex.ts +0 -126
  223. package/src/wirings/mcp/index.ts +0 -27
  224. package/src/wirings/mcp/mcp-endpoint-registry.test.ts +0 -389
  225. package/src/wirings/mcp/mcp-endpoint-registry.ts +0 -159
  226. package/src/wirings/mcp/mcp-runner.ts +0 -305
  227. package/src/wirings/mcp/mcp.types.ts +0 -216
  228. package/src/wirings/node/index.ts +0 -2
  229. package/src/wirings/node/node.types.ts +0 -23
  230. package/src/wirings/oauth2/index.ts +0 -3
  231. package/src/wirings/oauth2/oauth2-client.test.ts +0 -929
  232. package/src/wirings/oauth2/oauth2-client.ts +0 -335
  233. package/src/wirings/oauth2/oauth2.types.ts +0 -69
  234. package/src/wirings/oauth2/wire-oauth2-credential.ts +0 -23
  235. package/src/wirings/queue/index.ts +0 -31
  236. package/src/wirings/queue/queue-runner.test.ts +0 -710
  237. package/src/wirings/queue/queue-runner.ts +0 -192
  238. package/src/wirings/queue/queue.types.ts +0 -189
  239. package/src/wirings/queue/register-queue-helper.ts +0 -60
  240. package/src/wirings/queue/validate-worker-config.test.ts +0 -108
  241. package/src/wirings/queue/validate-worker-config.ts +0 -116
  242. package/src/wirings/rpc/index.ts +0 -4
  243. package/src/wirings/rpc/rpc-runner.ts +0 -439
  244. package/src/wirings/rpc/rpc-types.ts +0 -51
  245. package/src/wirings/rpc/wire-addon.ts +0 -20
  246. package/src/wirings/scheduler/index.ts +0 -11
  247. package/src/wirings/scheduler/log-schedulers.ts +0 -20
  248. package/src/wirings/scheduler/scheduler-runner.test.ts +0 -660
  249. package/src/wirings/scheduler/scheduler-runner.ts +0 -132
  250. package/src/wirings/scheduler/scheduler.types.ts +0 -53
  251. package/src/wirings/secret/index.ts +0 -9
  252. package/src/wirings/secret/secret.types.ts +0 -32
  253. package/src/wirings/secret/validate-secret-definitions.test.ts +0 -140
  254. package/src/wirings/secret/validate-secret-definitions.ts +0 -82
  255. package/src/wirings/trigger/index.ts +0 -10
  256. package/src/wirings/trigger/pikku-trigger-service.ts +0 -112
  257. package/src/wirings/trigger/trigger-runner.test.ts +0 -79
  258. package/src/wirings/trigger/trigger-runner.ts +0 -135
  259. package/src/wirings/trigger/trigger.types.ts +0 -178
  260. package/src/wirings/variable/index.ts +0 -8
  261. package/src/wirings/variable/validate-variable-definitions.test.ts +0 -91
  262. package/src/wirings/variable/validate-variable-definitions.ts +0 -69
  263. package/src/wirings/variable/variable.types.ts +0 -22
  264. package/src/wirings/workflow/dsl/index.ts +0 -31
  265. package/src/wirings/workflow/dsl/workflow-dsl.types.ts +0 -320
  266. package/src/wirings/workflow/dsl/workflow-runner.ts +0 -28
  267. package/src/wirings/workflow/graph/graph-node.ts +0 -222
  268. package/src/wirings/workflow/graph/graph-runner.test.ts +0 -487
  269. package/src/wirings/workflow/graph/graph-runner.ts +0 -816
  270. package/src/wirings/workflow/graph/index.ts +0 -14
  271. package/src/wirings/workflow/graph/template.test.ts +0 -49
  272. package/src/wirings/workflow/graph/template.ts +0 -42
  273. package/src/wirings/workflow/graph/wire-workflow-graph.ts +0 -29
  274. package/src/wirings/workflow/graph/workflow-graph.types.ts +0 -104
  275. package/src/wirings/workflow/index.ts +0 -81
  276. package/src/wirings/workflow/pikku-workflow-service.test.ts +0 -200
  277. package/src/wirings/workflow/pikku-workflow-service.ts +0 -1165
  278. package/src/wirings/workflow/workflow-helpers.test.ts +0 -129
  279. package/src/wirings/workflow/workflow-helpers.ts +0 -79
  280. package/src/wirings/workflow/workflow.types.ts +0 -266
  281. package/tsconfig.json +0 -14
  282. package/tsconfig.tsbuildinfo +0 -1
@@ -1,374 +0,0 @@
1
- /**
2
- * The server cannot or will not process the request due to client error (e.g., malformed request syntax).
3
- */
4
- import { addError, PikkuError } from './error-handler.js'
5
-
6
- export class InvalidMiddlewareWireError extends PikkuError {}
7
- addError(InvalidMiddlewareWireError, {
8
- status: 500,
9
- message: 'The middleware wire is invalid for the current wiring type.',
10
- })
11
-
12
- export class PikkuMissingMetaError extends PikkuError {}
13
- addError(PikkuMissingMetaError, {
14
- status: 500,
15
- message: 'Required metadata is missing',
16
- })
17
-
18
- /**
19
- * The server cannot or will not process the request due to client error (e.g., malformed request syntax).
20
- * @group Error
21
- */
22
- export class BadRequestError extends PikkuError {}
23
- addError(BadRequestError, {
24
- status: 400,
25
- mcpCode: -32600,
26
- message:
27
- 'The server cannot or will not process the request due to client error (e.g., malformed request syntax).',
28
- })
29
-
30
- /**
31
- * Authentication is required and has failed or has not yet been provided.
32
- * @group Error
33
- */
34
- export class UnauthorizedError extends PikkuError {}
35
- /**
36
- * More specific error to why it's unauthorized.
37
- * @group Error
38
- */
39
- export class MissingSessionError extends PikkuError {}
40
- /**
41
- * More specific error to why it's unauthorized.
42
- * @group Error
43
- */
44
- export class InvalidSessionError extends PikkuError {}
45
-
46
- addError(UnauthorizedError, {
47
- status: 401,
48
- message:
49
- 'Authentication is required and has failed or has not yet been provided.',
50
- })
51
- addError(MissingSessionError, { status: 401, message: 'Session missing.' })
52
- addError(InvalidSessionError, {
53
- status: 401,
54
- message: 'The session provided is not valid.',
55
- })
56
-
57
- /**
58
- * Reserved for future use, often related to digital payment or subscription services.
59
- * @group Error
60
- */
61
- export class PaymentRequiredError extends PikkuError {}
62
- addError(PaymentRequiredError, {
63
- status: 402,
64
- message:
65
- 'Reserved for future use, often related to digital payment or subscription services.',
66
- })
67
-
68
- /**
69
- * The client does not have permission to access the requested resource.
70
- * @group Error
71
- */
72
- export class ForbiddenError extends PikkuError {}
73
- addError(ForbiddenError, {
74
- status: 403,
75
- message:
76
- 'The client does not have permission to access the requested resource.',
77
- })
78
-
79
- /**
80
- * The session is readonly and cannot access a non-readonly function.
81
- * @group Error
82
- */
83
- export class ReadonlySessionError extends PikkuError {}
84
- addError(ReadonlySessionError, {
85
- status: 403,
86
- message: 'The session is readonly and cannot access this function.',
87
- })
88
-
89
- /**
90
- * The request was made from an origin that is not permitted to access this resource.
91
- * @group Error
92
- */
93
- export class InvalidOriginError extends PikkuError {}
94
- addError(InvalidOriginError, {
95
- status: 403,
96
- message:
97
- 'The request was made from an origin that is not permitted to access this resource.',
98
- })
99
-
100
- /**
101
- * The server cannot find the requested resource.
102
- * @group Error
103
- */
104
- export class NotFoundError extends PikkuError {}
105
- /**
106
- * The server cannot find the requested route.
107
- * @group Error
108
- */
109
- addError(NotFoundError, {
110
- status: 404,
111
- mcpCode: -32601,
112
- message: 'The server cannot find the requested resource.',
113
- })
114
-
115
- /**
116
- * The request method is known by the server but is not supported by the resource.
117
- * @group Error
118
- */
119
- export class MethodNotAllowedError extends PikkuError {}
120
- addError(MethodNotAllowedError, {
121
- status: 405,
122
- message:
123
- 'The request method is known by the server but is not supported by the resource.',
124
- })
125
-
126
- /**
127
- * The requested resource cannot produce a response matching the list of acceptable values in the request's headers.
128
- * @group Error
129
- */
130
- export class NotAcceptableError extends PikkuError {}
131
- addError(NotAcceptableError, {
132
- status: 406,
133
- message:
134
- "The requested resource cannot produce a response matching the list of acceptable values in the request's headers.",
135
- })
136
-
137
- /**
138
- * The client must authenticate itself to get the requested response.
139
- * @group Error
140
- */
141
- export class ProxyAuthenticationRequiredError extends PikkuError {}
142
- addError(ProxyAuthenticationRequiredError, {
143
- status: 407,
144
- message: 'The client must authenticate itself to get the requested response.',
145
- })
146
-
147
- /**
148
- * The server request expired
149
- * @group Error
150
- */
151
- export class RequestTimeoutError extends PikkuError {}
152
- addError(RequestTimeoutError, {
153
- status: 408,
154
- message: 'The request timeout has expired.',
155
- })
156
-
157
- /**
158
- * The request could not be completed due to a conflict with the current state of the target resource.
159
- * @group Error
160
- */
161
- export class ConflictError extends PikkuError {}
162
- addError(ConflictError, {
163
- status: 409,
164
- message:
165
- 'The request could not be completed due to a conflict with the current state of the target resource.',
166
- })
167
-
168
- /**
169
- * The resource that is being accessed is no longer available and will not be available again.
170
- * @group Error
171
- */
172
- export class GoneError extends PikkuError {}
173
- addError(GoneError, {
174
- status: 410,
175
- message:
176
- 'The resource that is being accessed is no longer available and will not be available again.',
177
- })
178
-
179
- /**
180
- * The request did not specify the length of its content, which is required by the requested resource.
181
- * @group Error
182
- */
183
- export class LengthRequiredError extends PikkuError {}
184
- addError(LengthRequiredError, {
185
- status: 411,
186
- message:
187
- 'The request did not specify the length of its content, which is required by the requested resource.',
188
- })
189
-
190
- /**
191
- * The server does not meet one of the preconditions that the requester put on the request.
192
- * @group Error
193
- */
194
- export class PreconditionFailedError extends PikkuError {}
195
- addError(PreconditionFailedError, {
196
- status: 412,
197
- message:
198
- 'The server does not meet one of the preconditions that the requester put on the request.',
199
- })
200
-
201
- /**
202
- * The request is larger than the server is willing or able to process.
203
- * @group Error
204
- */
205
- export class PayloadTooLargeError extends PikkuError {}
206
- addError(PayloadTooLargeError, {
207
- status: 413,
208
- message:
209
- 'The request is larger than the server is willing or able to process.',
210
- })
211
-
212
- /**
213
- * The URI requested by the client is longer than the server is willing to interpret.
214
- * @group Error
215
- */
216
- export class URITooLongError extends PikkuError {}
217
- addError(URITooLongError, {
218
- status: 414,
219
- message:
220
- 'The URI requested by the client is longer than the server is willing to interpret.',
221
- })
222
-
223
- /**
224
- * The server does not support the media format of the requested data.
225
- * @group Error
226
- */
227
- export class UnsupportedMediaTypeError extends PikkuError {}
228
- addError(UnsupportedMediaTypeError, {
229
- status: 415,
230
- message:
231
- 'The server does not support the media format of the requested data.',
232
- })
233
-
234
- /**
235
- * The client has asked for a portion of the file, but the server cannot supply that portion.
236
- * @group Error
237
- */
238
- export class RangeNotSatisfiableError extends PikkuError {}
239
- addError(RangeNotSatisfiableError, {
240
- status: 416,
241
- message:
242
- 'The client has asked for a portion of the file, but the server cannot supply that portion.',
243
- })
244
-
245
- /**
246
- * The server cannot meet the requirements of the Expect request-header field.
247
- * @group Error
248
- */
249
- export class ExpectationFailedError extends PikkuError {}
250
- addError(ExpectationFailedError, {
251
- status: 417,
252
- message:
253
- 'The server cannot meet the requirements of the Expect request-header field.',
254
- })
255
-
256
- /**
257
- * Indicates that the server understood the content type of the request content, and the syntax of the request content was correct, but it was unable to process the contained instructions.
258
- * @group Error
259
- */
260
- export class UnprocessableContentError extends PikkuError {}
261
- addError(UnprocessableContentError, {
262
- status: 422,
263
- message:
264
- 'The server understood the content type of the request content, and the syntax of the request content was correct, but it was unable to process the contained instructions..',
265
- })
266
-
267
- /**
268
- * Indicates that the server understood the content type of the request content, and the syntax of the request content was correct, but it was unable to process the contained instructions.
269
- * @group Error
270
- */
271
- export class LockedError extends PikkuError {}
272
- addError(LockedError, {
273
- status: 423,
274
- message:
275
- "The resource is locked, meaning it can't be accessed. Its response body should contain information in WebDAV's XML format.",
276
- })
277
-
278
- /**
279
- * The user has sent too many requests in a given amount of time ("rate limiting").
280
- * @group Error
281
- */
282
- export class TooManyRequestsError extends PikkuError {}
283
- addError(TooManyRequestsError, {
284
- status: 429,
285
- message:
286
- 'The user has sent too many requests in a given amount of time ("rate limiting").',
287
- })
288
-
289
- /**
290
- * A generic error message, given when no more specific message is suitable.
291
- * @group Error
292
- */
293
- export class InternalServerError extends PikkuError {}
294
- addError(InternalServerError, {
295
- status: 500,
296
- message:
297
- 'A generic error message, given when no more specific message is suitable.',
298
- })
299
-
300
- /**
301
- * The server does not recognize the request method and cannot support it.
302
- * @group Error
303
- */
304
- export class NotImplementedError extends PikkuError {}
305
- addError(NotImplementedError, {
306
- status: 501,
307
- message:
308
- 'The server does not recognize the request method and cannot support it.',
309
- })
310
-
311
- /**
312
- * The server was acting as a gateway or proxy and received an invalid response from the upstream server.
313
- * @group Error
314
- */
315
- export class BadGatewayError extends PikkuError {}
316
- addError(BadGatewayError, {
317
- status: 502,
318
- message:
319
- 'The server was acting as a gateway or proxy and received an invalid response from the upstream server.',
320
- })
321
-
322
- /**
323
- * The server is currently unavailable (overloaded or down).
324
- * @group Error
325
- */
326
- export class ServiceUnavailableError extends PikkuError {}
327
- addError(ServiceUnavailableError, {
328
- status: 503,
329
- message: 'The server is currently unavailable (overloaded or down).',
330
- })
331
-
332
- /**
333
- * The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.
334
- * @group Error
335
- */
336
- export class GatewayTimeoutError extends PikkuError {}
337
- addError(GatewayTimeoutError, {
338
- status: 504,
339
- message:
340
- 'The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.',
341
- })
342
-
343
- /**
344
- * The server does not support the HTTP protocol version used in the request.
345
- * @group Error
346
- */
347
- export class HTTPVersionNotSupportedError extends PikkuError {}
348
- addError(HTTPVersionNotSupportedError, {
349
- status: 505,
350
- message:
351
- 'The server does not support the HTTP protocol version used in the request.',
352
- })
353
-
354
- /**
355
- * The server took too long to complete the request, reaching the maximum compute time allowed.
356
- * @group Error
357
- */
358
- export class MaxComputeTimeReachedError extends PikkuError {}
359
- addError(MaxComputeTimeReachedError, {
360
- status: 524,
361
- message:
362
- 'The server took too long to complete the request, reaching the maximum compute time allowed.',
363
- })
364
-
365
- /**
366
- * A required schema was not found during validation.
367
- * @group Error
368
- */
369
- export class MissingSchemaError extends PikkuError {}
370
- addError(MissingSchemaError, {
371
- status: 500,
372
- message:
373
- 'A required schema was not found. Ensure schema generation has been run.',
374
- })
@@ -1,2 +0,0 @@
1
- export * from './errors.js'
2
- export { PikkuError, addError, addErrors } from './error-handler.js'
@@ -1,109 +0,0 @@
1
- import { test } from 'node:test'
2
- import assert from 'node:assert'
3
- import {
4
- pikkuAuth,
5
- pikkuPermission,
6
- pikkuMiddleware,
7
- pikkuPermissionFactory,
8
- pikkuMiddlewareFactory,
9
- } from './index.js'
10
-
11
- test('pikkuPermission returns the same function', async () => {
12
- const originalFn = async () => true
13
- const wrappedFn = pikkuPermission(originalFn)
14
- assert.strictEqual(wrappedFn, originalFn)
15
- })
16
-
17
- test('pikkuMiddleware returns the same function', async () => {
18
- const originalFn = async ({ logger }, wires, next) => next
19
- const wrappedFn = pikkuMiddleware(originalFn)
20
- assert.strictEqual(wrappedFn, originalFn)
21
- })
22
-
23
- test('pikkuPermissionFactory creates a factory function', async () => {
24
- const factory = pikkuPermissionFactory<{ role: string }>(({ role }) => {
25
- return pikkuPermission(async ({ logger }, data, { session }) => {
26
- return (session as any)?.role === role
27
- })
28
- })
29
-
30
- assert.strictEqual(typeof factory, 'function')
31
- assert.strictEqual(factory.length, 1) // input parameter
32
-
33
- // Call the factory to get a permission
34
- const permission = factory({ role: 'admin' })
35
- assert.strictEqual(typeof permission, 'function')
36
- assert.strictEqual(permission.length, 3) // services, data, session
37
- })
38
-
39
- test('pikkuMiddlewareFactory creates a factory function', async () => {
40
- const factory = pikkuMiddlewareFactory<{ message: string }>(({ message }) => {
41
- return pikkuMiddleware(async ({ logger }, wires, next) => {
42
- logger.info(message)
43
- await next()
44
- })
45
- })
46
-
47
- assert.strictEqual(typeof factory, 'function')
48
- assert.strictEqual(factory.length, 1) // input parameter
49
-
50
- // Call the factory to get middleware
51
- const middleware = factory({ message: 'test' })
52
- assert.strictEqual(typeof middleware, 'function')
53
- assert.strictEqual(middleware.length, 3) // services, wires, next
54
- })
55
-
56
- test('pikkuPermissionFactory returns the same factory', async () => {
57
- const originalFactory = () => pikkuPermission(async () => true)
58
- const wrappedFactory = pikkuPermissionFactory(originalFactory as any)
59
- assert.strictEqual(wrappedFactory, originalFactory)
60
- })
61
-
62
- test('pikkuMiddlewareFactory returns the same factory', async () => {
63
- const originalFactory = ({ message }) =>
64
- pikkuMiddleware(async ({ logger }, _wires, next) => {
65
- logger.info(message)
66
- await next()
67
- })
68
- const wrappedFactory = pikkuMiddlewareFactory(originalFactory)
69
- assert.strictEqual(wrappedFactory, originalFactory)
70
- })
71
-
72
- test('pikkuAuth returns a 3-arg wrapper function', async () => {
73
- const authFn = async (_services, session) => !!session
74
- const wrapped = pikkuAuth(authFn)
75
- assert.strictEqual(typeof wrapped, 'function')
76
- assert.strictEqual(wrapped.length, 3)
77
- })
78
-
79
- test('pikkuAuth wrapper extracts session from wire and calls auth function', async () => {
80
- let receivedSession = null
81
- const authFn = async (_services, session) => {
82
- receivedSession = session
83
- return session.role === 'admin'
84
- }
85
- const wrapped = pikkuAuth(authFn)
86
- const result = await wrapped({}, null, { session: { role: 'admin' } })
87
- assert.strictEqual(result, true)
88
- assert.deepStrictEqual(receivedSession, { role: 'admin' })
89
- })
90
-
91
- test('pikkuAuth wrapper returns false when no session', async () => {
92
- const authFn = async (_services, session) => !!session
93
- const wrapped = pikkuAuth(authFn)
94
- const result = await wrapped({}, null, { session: null })
95
- assert.strictEqual(result, false)
96
- })
97
-
98
- test('pikkuAuth config object syntax works', async () => {
99
- const authFn = async (_services, session) => !!session
100
- const wrapped = pikkuAuth({
101
- func: authFn,
102
- name: 'Is Authenticated',
103
- description: 'Checks if user has a session',
104
- })
105
- assert.strictEqual(typeof wrapped, 'function')
106
- assert.strictEqual(wrapped.length, 3)
107
- const result = await wrapped({}, null, { session: { id: '1' } })
108
- assert.strictEqual(result, true)
109
- })