@pikku/cli 0.11.0 → 0.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/.pikku/channel/pikku-channel-types.gen.ts +11 -12
  2. package/.pikku/channel/pikku-channels-map.gen.d.ts +9 -9
  3. package/.pikku/channel/pikku-channels-meta.gen.ts +1 -1
  4. package/.pikku/channel/pikku-channels.gen.ts +1 -1
  5. package/.pikku/cli/pikku-cli-channel.ts +92 -0
  6. package/.pikku/cli/pikku-cli-client.gen.ts +54 -0
  7. package/.pikku/cli/pikku-cli-types.gen.ts +3 -3
  8. package/.pikku/cli/pikku-cli-wirings-meta.gen.json +146 -0
  9. package/.pikku/cli/pikku-cli-wirings-meta.gen.ts +4 -34
  10. package/.pikku/cli/pikku-cli-wirings.gen.ts +2 -1
  11. package/.pikku/cli/pikku-cli.gen.ts +41 -0
  12. package/.pikku/function/pikku-function-types.gen.ts +49 -63
  13. package/.pikku/function/pikku-functions-meta.gen.json +988 -0
  14. package/.pikku/function/pikku-functions-meta.gen.ts +4 -970
  15. package/.pikku/function/pikku-functions-meta.min.gen.json +212 -0
  16. package/.pikku/function/pikku-functions-meta.min.gen.ts +4 -209
  17. package/.pikku/http/pikku-http-types.gen.ts +2 -2
  18. package/.pikku/http/pikku-http-wirings-map.gen.d.ts +9 -9
  19. package/.pikku/http/pikku-http-wirings-meta.gen.ts +1 -1
  20. package/.pikku/http/pikku-http-wirings.gen.ts +1 -1
  21. package/.pikku/mcp/pikku-mcp-types.gen.ts +13 -13
  22. package/.pikku/mcp/pikku-mcp-wirings-meta.gen.json +5 -0
  23. package/.pikku/mcp/pikku-mcp-wirings-meta.gen.ts +6 -4
  24. package/.pikku/mcp/pikku-mcp-wirings.gen.ts +1 -1
  25. package/.pikku/pikku-bootstrap.gen.ts +1 -4
  26. package/.pikku/pikku-services.gen.ts +6 -8
  27. package/.pikku/pikku-types.gen.ts +1 -1
  28. package/.pikku/pikku-websocket.gen.ts +1 -1
  29. package/.pikku/queue/pikku-queue-types.gen.ts +2 -2
  30. package/.pikku/queue/pikku-queue-workers-wirings-map.gen.d.ts +9 -9
  31. package/.pikku/queue/pikku-queue-workers-wirings-meta.gen.json +1 -0
  32. package/.pikku/queue/pikku-queue-workers-wirings-meta.gen.ts +5 -7
  33. package/.pikku/queue/pikku-queue-workers-wirings.gen.ts +1 -1
  34. package/.pikku/rpc/pikku-remote-rpc-workers.gen.ts +2 -2
  35. package/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +9 -9
  36. package/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +41 -40
  37. package/.pikku/scheduler/pikku-scheduler-types.gen.ts +2 -2
  38. package/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.json +1 -0
  39. package/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.ts +5 -2
  40. package/.pikku/scheduler/pikku-schedulers-wirings.gen.ts +1 -1
  41. package/.pikku/schemas/register.gen.ts +27 -27
  42. package/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
  43. package/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -1
  44. package/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -1
  45. package/.pikku/services/config.gen.json +99 -0
  46. package/.pikku/services/getInspectorState.gen.json +10 -0
  47. package/.pikku/services/jwt.gen.json +13 -0
  48. package/.pikku/services/logger.gen.json +25 -0
  49. package/.pikku/services/queueService.gen.json +14 -0
  50. package/.pikku/services/schedulerService.gen.json +17 -0
  51. package/.pikku/services/schema.gen.json +14 -0
  52. package/.pikku/services/variables.gen.json +13 -0
  53. package/.pikku/services/workflowService.gen.json +31 -0
  54. package/.pikku/workflow/pikku-workflow-map.gen.d.ts +9 -9
  55. package/.pikku/workflow/pikku-workflow-types.gen.ts +36 -31
  56. package/.pikku/workflow/pikku-workflow-wirings-meta.gen.json +1 -0
  57. package/.pikku/workflow/pikku-workflow-wirings-meta.gen.ts +5 -2
  58. package/.pikku/workflow/pikku-workflow-wirings.gen.ts +6 -2
  59. package/CHANGELOG.md +27 -1
  60. package/bin/pikku.ts +6 -32
  61. package/build.sh +53 -31
  62. package/cli.schema.json +1 -1
  63. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +6 -7
  64. package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
  65. package/dist/.pikku/channel/pikku-channels-meta.gen.js +1 -1
  66. package/dist/.pikku/channel/pikku-channels.gen.d.ts +1 -1
  67. package/dist/.pikku/channel/pikku-channels.gen.js +1 -1
  68. package/dist/.pikku/cli/pikku-cli-channel.js +91 -0
  69. package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +10 -0
  70. package/dist/.pikku/cli/pikku-cli-client.gen.js +44 -0
  71. package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +3 -3
  72. package/dist/.pikku/cli/pikku-cli-types.gen.js +1 -1
  73. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +3 -34
  74. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.json +146 -0
  75. package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +2 -1
  76. package/dist/.pikku/cli/pikku-cli-wirings.gen.js +2 -1
  77. package/dist/.pikku/cli/pikku-cli.gen.d.ts +10 -0
  78. package/dist/.pikku/cli/pikku-cli.gen.js +38 -0
  79. package/dist/.pikku/function/pikku-function-types.gen.d.ts +29 -79
  80. package/dist/.pikku/function/pikku-function-types.gen.js +19 -15
  81. package/dist/.pikku/function/pikku-functions-meta.gen.js +3 -969
  82. package/dist/.pikku/function/pikku-functions-meta.gen.json +988 -0
  83. package/dist/.pikku/function/pikku-functions-meta.min.gen.js +3 -208
  84. package/dist/.pikku/function/pikku-functions-meta.min.gen.json +212 -0
  85. package/dist/.pikku/http/pikku-http-types.gen.d.ts +2 -2
  86. package/dist/.pikku/http/pikku-http-types.gen.js +1 -1
  87. package/dist/.pikku/http/pikku-http-wirings-meta.gen.js +1 -1
  88. package/dist/.pikku/http/pikku-http-wirings.gen.d.ts +1 -1
  89. package/dist/.pikku/http/pikku-http-wirings.gen.js +1 -1
  90. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +13 -13
  91. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
  92. package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.js +5 -4
  93. package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.json +5 -0
  94. package/dist/.pikku/mcp/pikku-mcp-wirings.gen.d.ts +1 -1
  95. package/dist/.pikku/mcp/pikku-mcp-wirings.gen.js +1 -1
  96. package/dist/.pikku/pikku-bootstrap.gen.d.ts +1 -4
  97. package/dist/.pikku/pikku-bootstrap.gen.js +1 -4
  98. package/dist/.pikku/pikku-services.gen.d.ts +5 -8
  99. package/dist/.pikku/pikku-services.gen.js +3 -6
  100. package/dist/.pikku/pikku-types.gen.d.ts +1 -1
  101. package/dist/.pikku/pikku-types.gen.js +1 -1
  102. package/dist/.pikku/pikku-websocket.gen.d.ts +1 -1
  103. package/dist/.pikku/pikku-websocket.gen.js +1 -1
  104. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +2 -2
  105. package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
  106. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +3 -7
  107. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.json +1 -0
  108. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +1 -1
  109. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +1 -1
  110. package/dist/.pikku/rpc/pikku-remote-rpc-workers.gen.d.ts +6 -9
  111. package/dist/.pikku/rpc/pikku-remote-rpc-workers.gen.js +2 -2
  112. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +2 -2
  113. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
  114. package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.js +3 -2
  115. package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.json +1 -0
  116. package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.d.ts +1 -1
  117. package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.js +1 -1
  118. package/dist/.pikku/schemas/register.gen.js +17 -17
  119. package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
  120. package/dist/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -1
  121. package/dist/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -1
  122. package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +29 -25
  123. package/dist/.pikku/workflow/pikku-workflow-types.gen.js +22 -8
  124. package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +3 -2
  125. package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.json +1 -0
  126. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.d.ts +6 -2
  127. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +6 -3
  128. package/dist/bin/pikku.js +5 -28
  129. package/dist/src/cli.wiring.js +108 -106
  130. package/dist/src/functions/commands/all.js +82 -42
  131. package/dist/src/functions/commands/bootstrap.js +22 -10
  132. package/dist/src/functions/commands/watch.js +6 -3
  133. package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.js +12 -7
  134. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.d.ts +1 -1
  135. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.js +42 -4
  136. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.d.ts +1 -1
  137. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.js +40 -2
  138. package/dist/src/functions/wirings/channels/pikku-channels.js +9 -2
  139. package/dist/src/functions/wirings/channels/serialize-channel-types.js +10 -11
  140. package/dist/src/functions/wirings/cli/pikku-command-cli-entry.js +4 -4
  141. package/dist/src/functions/wirings/cli/pikku-command-cli-types.js +1 -1
  142. package/dist/src/functions/wirings/cli/pikku-command-cli.js +9 -3
  143. package/dist/src/functions/wirings/cli/serialize-channel-cli.js +1 -1
  144. package/dist/src/functions/wirings/cli/serialize-cli-types.js +2 -2
  145. package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.d.ts +1 -1
  146. package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.js +4 -4
  147. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.js +4 -4
  148. package/dist/src/functions/wirings/functions/pikku-command-functions.js +15 -5
  149. package/dist/src/functions/wirings/functions/pikku-command-services.d.ts +1 -1
  150. package/dist/src/functions/wirings/functions/pikku-command-services.js +23 -23
  151. package/dist/src/functions/wirings/functions/schemas.js +1 -1
  152. package/dist/src/functions/wirings/functions/serialize-function-types.d.ts +1 -1
  153. package/dist/src/functions/wirings/functions/serialize-function-types.js +50 -64
  154. package/dist/src/functions/wirings/http/openapi-spec-generator.js +4 -4
  155. package/dist/src/functions/wirings/http/pikku-http-routes.js +9 -2
  156. package/dist/src/functions/wirings/http/serialize-http-types.js +1 -1
  157. package/dist/src/functions/wirings/mcp/pikku-command-mcp.js +18 -4
  158. package/dist/src/functions/wirings/mcp/serialize-mcp-types.js +12 -12
  159. package/dist/src/functions/wirings/middleware/pikku-command-middleware.js +26 -2
  160. package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.d.ts +5 -2
  161. package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.js +5 -13
  162. package/dist/src/functions/wirings/queue/pikku-command-queue.js +9 -3
  163. package/dist/src/functions/wirings/queue/pikku-queue.js +9 -3
  164. package/dist/src/functions/wirings/queue/serialize-queue-meta.d.ts +2 -1
  165. package/dist/src/functions/wirings/queue/serialize-queue-meta.js +10 -1
  166. package/dist/src/functions/wirings/queue/serialize-queue-types.js +1 -1
  167. package/dist/src/functions/wirings/rpc/pikku-command-rpc.js +9 -2
  168. package/dist/src/functions/wirings/rpc/serialize-public-rpc.js +11 -4
  169. package/dist/src/functions/wirings/rpc/serialize-remote-rpc.js +1 -1
  170. package/dist/src/functions/wirings/rpc/serialize-rpc-wrapper.js +3 -3
  171. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.js +6 -3
  172. package/dist/src/functions/wirings/scheduler/serialize-scheduler-meta.d.ts +2 -1
  173. package/dist/src/functions/wirings/scheduler/serialize-scheduler-meta.js +11 -1
  174. package/dist/src/functions/wirings/scheduler/serialize-scheduler-types.js +1 -1
  175. package/dist/src/functions/wirings/services/pikku-command-service-metadata.d.ts +1 -0
  176. package/dist/src/functions/wirings/services/pikku-command-service-metadata.js +22 -0
  177. package/dist/src/functions/wirings/workflow/pikku-command-workflow-types.js +3 -1
  178. package/dist/src/functions/wirings/workflow/pikku-command-workflow.js +12 -8
  179. package/dist/src/functions/wirings/workflow/serialize-workflow-meta.d.ts +2 -1
  180. package/dist/src/functions/wirings/workflow/serialize-workflow-meta.js +11 -1
  181. package/dist/src/functions/wirings/workflow/serialize-workflow-types.d.ts +1 -1
  182. package/dist/src/functions/wirings/workflow/serialize-workflow-types.js +36 -31
  183. package/dist/src/functions/wirings/workflow/serialize-workflow-wirings.d.ts +8 -0
  184. package/dist/src/functions/wirings/workflow/serialize-workflow-wirings.js +30 -0
  185. package/dist/src/functions/wirings/workflow/serialize-workflow-workers.js +2 -2
  186. package/dist/src/middleware/log-command-info-and-time.d.ts +2 -2
  187. package/dist/src/middleware/log-command-info-and-time.js +1 -4
  188. package/dist/src/services/cli-logger-forwarder.service.d.ts +3 -0
  189. package/dist/src/services/cli-logger-forwarder.service.js +9 -2
  190. package/dist/src/services.d.ts +2 -7
  191. package/dist/src/services.js +14 -12
  192. package/dist/src/utils/check-required-types.d.ts +2 -2
  193. package/dist/src/utils/check-required-types.js +2 -3
  194. package/dist/src/utils/pikku-cli-config.js +35 -2
  195. package/dist/src/utils/pikku-files-and-methods.d.ts +2 -2
  196. package/dist/src/utils/pikku-files-and-methods.js +4 -4
  197. package/dist/src/utils/schema-generator.d.ts +1 -1
  198. package/dist/src/utils/schema-generator.js +1 -1
  199. package/dist/tsconfig.tsbuildinfo +1 -1
  200. package/package.json +7 -8
  201. package/src/cli.wiring.ts +110 -105
  202. package/src/functions/commands/all.ts +94 -45
  203. package/src/functions/commands/bootstrap.ts +25 -10
  204. package/src/functions/commands/watch.ts +6 -3
  205. package/src/functions/runtimes/nextjs/pikku-command-nextjs.ts +26 -5
  206. package/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.ts +43 -4
  207. package/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.ts +40 -1
  208. package/src/functions/wirings/channels/pikku-channels.ts +27 -3
  209. package/src/functions/wirings/channels/serialize-channel-types.ts +10 -11
  210. package/src/functions/wirings/cli/pikku-command-cli-entry.ts +4 -4
  211. package/src/functions/wirings/cli/pikku-command-cli-types.ts +1 -1
  212. package/src/functions/wirings/cli/pikku-command-cli.ts +26 -3
  213. package/src/functions/wirings/cli/serialize-channel-cli.ts +1 -1
  214. package/src/functions/wirings/cli/serialize-cli-types.ts +2 -2
  215. package/src/functions/wirings/cli/serialize-local-cli-bootstrap.ts +5 -5
  216. package/src/functions/wirings/functions/pikku-command-function-types-split.ts +6 -6
  217. package/src/functions/wirings/functions/pikku-command-functions.ts +39 -4
  218. package/src/functions/wirings/functions/pikku-command-services.ts +25 -25
  219. package/src/functions/wirings/functions/schemas.ts +2 -2
  220. package/src/functions/wirings/functions/serialize-function-types.ts +51 -65
  221. package/src/functions/wirings/http/openapi-spec-generator.ts +14 -5
  222. package/src/functions/wirings/http/pikku-http-routes.ts +28 -2
  223. package/src/functions/wirings/http/serialize-http-types.ts +1 -1
  224. package/src/functions/wirings/mcp/pikku-command-mcp.ts +30 -4
  225. package/src/functions/wirings/mcp/serialize-mcp-types.ts +12 -12
  226. package/src/functions/wirings/middleware/pikku-command-middleware.ts +35 -2
  227. package/src/functions/wirings/middleware/serialize-middleware-groups-meta.ts +4 -19
  228. package/src/functions/wirings/permissions/pikku-command-permissions.ts +2 -2
  229. package/src/functions/wirings/queue/pikku-command-queue.ts +27 -2
  230. package/src/functions/wirings/queue/pikku-queue.ts +27 -2
  231. package/src/functions/wirings/queue/serialize-queue-meta.ts +15 -1
  232. package/src/functions/wirings/queue/serialize-queue-types.ts +1 -1
  233. package/src/functions/wirings/rpc/pikku-command-rpc.ts +25 -2
  234. package/src/functions/wirings/rpc/serialize-public-rpc.ts +11 -4
  235. package/src/functions/wirings/rpc/serialize-remote-rpc.ts +1 -1
  236. package/src/functions/wirings/rpc/serialize-rpc-wrapper.ts +3 -3
  237. package/src/functions/wirings/scheduler/pikku-command-scheduler.ts +30 -4
  238. package/src/functions/wirings/scheduler/serialize-scheduler-meta.ts +20 -1
  239. package/src/functions/wirings/scheduler/serialize-scheduler-types.ts +1 -1
  240. package/src/functions/wirings/services/pikku-command-service-metadata.ts +25 -0
  241. package/src/functions/wirings/workflow/pikku-command-workflow-types.ts +8 -1
  242. package/src/functions/wirings/workflow/pikku-command-workflow.ts +36 -8
  243. package/src/functions/wirings/workflow/serialize-workflow-meta.ts +18 -1
  244. package/src/functions/wirings/workflow/serialize-workflow-types.ts +39 -31
  245. package/src/functions/wirings/workflow/serialize-workflow-wirings.ts +47 -0
  246. package/src/functions/wirings/workflow/serialize-workflow-workers.ts +2 -2
  247. package/src/middleware/log-command-info-and-time.ts +3 -6
  248. package/src/services/cli-logger-forwarder.service.ts +11 -2
  249. package/src/services.ts +15 -15
  250. package/src/utils/check-required-types.ts +4 -7
  251. package/src/utils/pikku-cli-config.ts +69 -2
  252. package/src/utils/pikku-files-and-methods.ts +10 -13
  253. package/src/utils/schema-generator.ts +2 -2
  254. package/types/application-types.d.ts +1 -1
  255. package/types/config.d.ts +12 -1
  256. package/.pikku/function/pikku-functions.gen.ts +0 -84
  257. package/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.ts +0 -47
  258. package/dist/.pikku/function/pikku-functions.gen.js +0 -83
  259. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.d.ts +0 -1
  260. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +0 -47
  261. package/dist/.pikku/schemas/schemas/PikkuRemoteInternalRPCInput.schema.json +0 -1
  262. /package/dist/.pikku/{function/pikku-functions.gen.d.ts → cli/pikku-cli-channel.d.ts} +0 -0
@@ -1,19 +1,17 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.11.0
2
+ * This file was generated by @pikku/cli@0.11.2
3
3
  */
4
4
  /**
5
5
  * Core function, middleware, and permission types for all wirings
6
6
  */
7
- import { CorePikkuFunctionConfig, CorePikkuPermission, CorePikkuMiddleware, CorePermissionGroup } from '@pikku/core';
7
+ import { CorePikkuFunctionConfig, CorePikkuPermission, CorePikkuMiddleware, CorePermissionGroup, PikkuWire, PickRequired } from '@pikku/core';
8
8
  import { CorePikkuFunction, CorePikkuFunctionSessionless } from '@pikku/core/function';
9
- import { PikkuChannel } from '@pikku/core/channel';
10
- import { PikkuMCP } from '@pikku/core/mcp';
11
9
  import type { UserSession } from '../../types/application-types.d.js';
12
10
  import type { SingletonServices } from '../../types/application-types.d.js';
13
11
  import type { Services } from '../../types/application-types.d.js';
14
12
  import type { Config } from '../../types/application-types.d.js';
15
13
  import type { TypedPikkuRPC } from '../rpc/pikku-rpc-wirings-map.internal.gen.d.js';
16
- import type { RequiredSingletonServices, RequiredSessionServices } from '../pikku-services.gen.js';
14
+ import type { RequiredSingletonServices, RequiredWireServices } from '../pikku-services.gen.js';
17
15
  type Session = UserSession;
18
16
  /**
19
17
  * Type-safe API permission definition that integrates with your application's session type.
@@ -22,14 +20,14 @@ type Session = UserSession;
22
20
  * @template In - The input type that the permission check will receive
23
21
  * @template RequiredServices - The services required for this permission check
24
22
  */
25
- export type PikkuPermission<In = unknown, RequiredServices extends Services = Services> = CorePikkuPermission<In, RequiredServices, Session>;
23
+ export type PikkuPermission<In = unknown, RequiredServices extends Services = Services> = CorePikkuPermission<In, RequiredServices, PikkuWire<In, never, false, Session>>;
26
24
  /**
27
25
  * Type-safe middleware definition that can access your application's services and session.
28
26
  * Use this to define reusable middleware that can be applied to multiple wirings.
29
27
  *
30
28
  * @template RequiredServices - The services required for this middleware
31
29
  */
32
- export type PikkuMiddleware<RequiredServices extends SingletonServices = SingletonServices> = CorePikkuMiddleware<RequiredServices, Session>;
30
+ export type PikkuMiddleware<RequiredServices extends SingletonServices = SingletonServices> = CorePikkuMiddleware<RequiredServices>;
33
31
  /**
34
32
  * Configuration object for creating a permission with metadata
35
33
  */
@@ -48,7 +46,8 @@ export type PikkuPermissionConfig<In = unknown, RequiredServices extends Service
48
46
  * @example
49
47
  * ```typescript
50
48
  * // Direct function syntax
51
- * const permission = pikkuPermission(({ logger }, data, session) => {
49
+ * const permission = pikkuPermission(async ({ logger }, data, { session }) => {
50
+ * const session = await session?.get()
52
51
  * return session?.role === 'admin'
53
52
  * })
54
53
  *
@@ -56,7 +55,8 @@ export type PikkuPermissionConfig<In = unknown, RequiredServices extends Service
56
55
  * const adminPermission = pikkuPermission({
57
56
  * name: 'Admin Permission',
58
57
  * description: 'Checks if user has admin role',
59
- * func: async ({ logger }, data, session) => {
58
+ * func: async ({ logger }, data, { session }) => {
59
+ * const session = await session?.get()
60
60
  * return session?.role === 'admin'
61
61
  * }
62
62
  * })
@@ -81,7 +81,7 @@ export type PikkuMiddlewareConfig<RequiredServices extends SingletonServices = S
81
81
  * @example
82
82
  * ```typescript
83
83
  * // Direct function syntax
84
- * const middleware = pikkuMiddleware(({ logger }, interactions, next) => {
84
+ * const middleware = pikkuMiddleware(({ logger }, wires, next) => {
85
85
  * logger.info('Middleware executed')
86
86
  * await next()
87
87
  * })
@@ -90,7 +90,7 @@ export type PikkuMiddlewareConfig<RequiredServices extends SingletonServices = S
90
90
  * const logMiddleware = pikkuMiddleware({
91
91
  * name: 'Request Logger',
92
92
  * description: 'Logs all incoming requests',
93
- * func: async ({ logger }, interactions, next) => {
93
+ * func: async ({ logger }, wires, next) => {
94
94
  * logger.info('Request started')
95
95
  * await next()
96
96
  * }
@@ -108,7 +108,7 @@ export declare const pikkuMiddleware: <RequiredServices extends SingletonService
108
108
  * message,
109
109
  * level = 'info'
110
110
  * }) => {
111
- * return pikkuMiddleware(async ({ logger }, _interaction, next) => {
111
+ * return pikkuMiddleware(async ({ logger }, next) => {
112
112
  * logger[level](message)
113
113
  * await next()
114
114
  * })
@@ -125,8 +125,8 @@ export declare const pikkuMiddlewareFactory: <In = any>(factory: (input: In) =>
125
125
  * export const requireRole = pikkuPermissionFactory<{ role: string }>(({
126
126
  * role
127
127
  * }) => {
128
- * return pikkuPermission(async ({ logger }, data, session) => {
129
- * if (!session || session.role !== role) {
128
+ * return pikkuPermission(async ({ logger }, data, { initialSession }) => {
129
+ * if (!initialSession || initialSession.role !== role) {
130
130
  * logger.warn(`Permission denied: required role '${role}'`)
131
131
  * return false
132
132
  * }
@@ -142,61 +142,27 @@ export declare const pikkuPermissionFactory: <In = any>(factory: (input: In) =>
142
142
  *
143
143
  * @template In - The input type
144
144
  * @template Out - The output type that the function returns
145
- * @template ChannelData - Channel data type (null = optional channel)
146
- * @template MCPData - MCP data type (null = optional MCP)
147
145
  * @template RequiredServices - Services required by this function
148
146
  */
149
- export type PikkuFunctionSessionless<In = unknown, Out = never, ChannelData = null, // null means optional channel
150
- MCPData = null, // null means optional MCP
151
- RequiredServices extends Services = Omit<Services, 'rpc' | 'channel' | 'mcp'> & {
152
- rpc: TypedPikkuRPC;
153
- } & ([
154
- ChannelData
155
- ] extends [null] ? {
156
- channel?: PikkuChannel<unknown, Out>;
157
- } : {
158
- channel: PikkuChannel<ChannelData, Out>;
159
- }) & ([MCPData] extends [null] ? {
160
- mcp?: PikkuMCP;
161
- } : {
162
- mcp: PikkuMCP;
163
- })> = CorePikkuFunctionSessionless<In, Out, ChannelData, RequiredServices, Session>;
147
+ export type PikkuFunctionSessionless<In = unknown, Out = never, RequiredWires extends keyof PikkuWire = never, RequiredServices extends Services = Services> = CorePikkuFunctionSessionless<In, Out, RequiredServices, PickRequired<PikkuWire<In, Out, false, Session, TypedPikkuRPC, null, any>, RequiredWires>>;
164
148
  /**
165
149
  * A session-aware API function that requires user authentication.
166
150
  * Use this for protected endpoints that need access to user session data.
167
151
  *
168
152
  * @template In - The input type
169
153
  * @template Out - The output type that the function returns
170
- * @template ChannelData - Channel data type (null = optional channel)
171
- * @template MCPData - MCP data type (null = optional MCP)
172
154
  * @template RequiredServices - Services required by this function
173
155
  */
174
- export type PikkuFunction<In = unknown, Out = never, ChannelData = null, // null means optional channel
175
- MCPData = null, // null means optional MCP
176
- RequiredServices extends Services = Omit<Services, 'rpc' | 'channel' | 'mcp'> & {
177
- rpc: TypedPikkuRPC;
178
- } & ([
179
- ChannelData
180
- ] extends [null] ? {
181
- channel?: PikkuChannel<unknown, Out>;
182
- } : {
183
- channel: PikkuChannel<ChannelData, Out>;
184
- }) & ([MCPData] extends [null] ? {
185
- mcp?: PikkuMCP;
186
- } : {
187
- mcp: PikkuMCP;
188
- })> = CorePikkuFunction<In, Out, ChannelData, RequiredServices, Session>;
156
+ export type PikkuFunction<In = unknown, Out = never, RequiredWires extends keyof PikkuWire = 'session', RequiredServices extends Services = Services> = CorePikkuFunction<In, Out, RequiredServices, PickRequired<PikkuWire<In, Out, true, Session, TypedPikkuRPC, null, any>, RequiredWires>>;
189
157
  /**
190
158
  * Configuration object for Pikku functions with optional middleware, permissions, tags, and documentation.
191
159
  * This type wraps CorePikkuFunctionConfig with the user's custom types.
192
160
  *
193
161
  * @template In - The input type
194
162
  * @template Out - The output type
195
- * @template ChannelData - Channel data type
196
- * @template MCPData - MCP data type
197
163
  * @template PikkuFunc - The function type (can be narrowed to PikkuFunction or PikkuFunctionSessionless)
198
164
  */
199
- export type PikkuFunctionConfig<In = unknown, Out = unknown, ChannelData = unknown, MCPData = unknown, PikkuFunc extends PikkuFunction<In, Out, ChannelData, MCPData> | PikkuFunctionSessionless<In, Out, ChannelData, MCPData> = PikkuFunction<In, Out, ChannelData, MCPData> | PikkuFunctionSessionless<In, Out, ChannelData, MCPData>> = CorePikkuFunctionConfig<PikkuFunc, PikkuPermission<In>, PikkuMiddleware>;
165
+ export type PikkuFunctionConfig<In = unknown, Out = unknown, RequiredWires extends keyof PikkuWire = never, PikkuFunc extends PikkuFunction<In, Out, RequiredWires> | PikkuFunctionSessionless<In, Out, RequiredWires> = PikkuFunction<In, Out, RequiredWires> | PikkuFunctionSessionless<In, Out, RequiredWires>> = CorePikkuFunctionConfig<PikkuFunc, PikkuPermission<In>, PikkuMiddleware>;
200
166
  /**
201
167
  * Creates a Pikku function that can be either session-aware or sessionless.
202
168
  * This is the main function wrapper for creating API endpoints.
@@ -209,7 +175,8 @@ export type PikkuFunctionConfig<In = unknown, Out = unknown, ChannelData = unkno
209
175
  * @example
210
176
  * \`\`\`typescript
211
177
  * const createUser = pikkuFunc<{name: string, email: string}, {id: number, message: string}>({
212
- * func: async ({db, logger}, input) => {
178
+ * func: async ({db, logger}, input, wire) => {
179
+ * const session = await wire.session.get()
213
180
  * logger.info('Creating user', input.name)
214
181
  * const user = await db.users.create(input)
215
182
  * return {id: user.id, message: \`User \${input.name} created successfully\`}
@@ -218,13 +185,7 @@ export type PikkuFunctionConfig<In = unknown, Out = unknown, ChannelData = unkno
218
185
  * })
219
186
  * \`\`\`
220
187
  */
221
- export declare const pikkuFunc: <In, Out = unknown>(func: PikkuFunction<In, Out> | CorePikkuFunctionConfig<PikkuFunction<In, Out>, PikkuPermission<In>, PikkuMiddleware>) => CorePikkuFunctionConfig<PikkuFunction<In, Out, null, null, Omit<Services, "rpc" | "channel" | "mcp"> & {
222
- rpc: TypedPikkuRPC;
223
- } & {
224
- channel?: PikkuChannel<unknown, Out> | undefined;
225
- } & {
226
- mcp?: PikkuMCP;
227
- }>, PikkuPermission<In, Services>, PikkuMiddleware<SingletonServices>>;
188
+ export declare const pikkuFunc: <In, Out = unknown>(func: PikkuFunction<In, Out, "session" | "rpc"> | PikkuFunctionConfig<In, Out, "session" | "rpc">) => PikkuFunctionConfig<In, Out, "rpc" | "session", PikkuFunction<In, Out, "rpc" | "session", Services> | PikkuFunctionSessionless<In, Out, "rpc" | "session", Services>>;
228
189
  /**
229
190
  * Creates a sessionless Pikku function that doesn't require user authentication.
230
191
  * Use this for public endpoints, webhooks, or background tasks.
@@ -237,7 +198,7 @@ export declare const pikkuFunc: <In, Out = unknown>(func: PikkuFunction<In, Out>
237
198
  * @example
238
199
  * \`\`\`typescript
239
200
  * const healthCheck = pikkuSessionlessFunc<void, {status: string, timestamp: string}>({
240
- * func: async ({logger}) => {
201
+ * func: async ({logger}, input) => {
241
202
  * logger.info('Health check requested')
242
203
  * return {status: 'healthy', timestamp: new Date().toISOString()}
243
204
  * },
@@ -245,13 +206,7 @@ export declare const pikkuFunc: <In, Out = unknown>(func: PikkuFunction<In, Out>
245
206
  * })
246
207
  * \`\`\`
247
208
  */
248
- export declare const pikkuSessionlessFunc: <In, Out = unknown>(func: PikkuFunctionSessionless<In, Out> | CorePikkuFunctionConfig<PikkuFunctionSessionless<In, Out>, PikkuPermission<In>, PikkuMiddleware>) => CorePikkuFunctionConfig<PikkuFunctionSessionless<In, Out, null, null, Omit<Services, "rpc" | "channel" | "mcp"> & {
249
- rpc: TypedPikkuRPC;
250
- } & {
251
- channel?: PikkuChannel<unknown, Out> | undefined;
252
- } & {
253
- mcp?: PikkuMCP;
254
- }>, PikkuPermission<In, Services>, PikkuMiddleware<SingletonServices>>;
209
+ export declare const pikkuSessionlessFunc: <In, Out = unknown>(func: PikkuFunctionSessionless<In, Out, "session" | "rpc"> | PikkuFunctionConfig<In, Out, "session" | "rpc">) => PikkuFunctionConfig<In, Out, "rpc" | "session", PikkuFunctionSessionless<In, Out, "rpc" | "session", Services> | PikkuFunction<In, Out, "rpc" | "session", Services>>;
255
210
  /**
256
211
  * Creates a function that takes no input and returns no output.
257
212
  * Useful for health checks, triggers, or cleanup operations.
@@ -268,13 +223,7 @@ export declare const pikkuSessionlessFunc: <In, Out = unknown>(func: PikkuFuncti
268
223
  * })
269
224
  * \`\`\`
270
225
  */
271
- export declare const pikkuVoidFunc: (func: PikkuFunctionSessionless<void, void> | CorePikkuFunctionConfig<PikkuFunctionSessionless<void, void>, PikkuPermission<void>>) => CorePikkuFunctionConfig<PikkuFunctionSessionless<void, void, null, null, Omit<Services, "rpc" | "channel" | "mcp"> & {
272
- rpc: TypedPikkuRPC;
273
- } & {
274
- channel?: PikkuChannel<unknown, void> | undefined;
275
- } & {
276
- mcp?: PikkuMCP;
277
- }>, PikkuPermission<void, Services>>;
226
+ export declare const pikkuVoidFunc: (func: PikkuFunctionSessionless<void, void, "session" | "rpc"> | PikkuFunctionConfig<void, void, "session" | "rpc">) => PikkuFunctionConfig<void, void, "rpc" | "session", PikkuFunctionSessionless<void, void, "rpc" | "session", Services> | PikkuFunction<void, void, "rpc" | "session", Services>>;
278
227
  /**
279
228
  * Creates a Pikku config factory.
280
229
  * Use this to define your application's configuration factory.
@@ -313,22 +262,23 @@ export declare const pikkuConfig: (func: (variables?: any, ...args: any[]) => Pr
313
262
  */
314
263
  export declare const pikkuServices: (func: (config: Config, existingServices?: Partial<SingletonServices>) => Promise<RequiredSingletonServices>) => (config: Config, existingServices?: Partial<SingletonServices>) => Promise<RequiredSingletonServices>;
315
264
  /**
316
- * Creates a Pikku session services factory.
265
+ * Creates a Pikku wire services factory.
317
266
  * Use this to define services that are created per-request/session.
318
267
  *
319
- * @param func - Session services factory function
320
- * @returns The session services factory function
268
+ * @param func - Wire services factory function
269
+ * @returns The wire services factory function
321
270
  *
322
271
  * @example
323
272
  * ```typescript
324
- * export const createSessionServices = pikkuSessionServices(async (services, interaction, session) => {
273
+ * export const createWireServices = pikkuWireServices(async (services, wire) => {
274
+ * const session = await wire.session?.get()
325
275
  * return {
326
276
  * userCache: new UserCache(session?.userId)
327
277
  * }
328
278
  * })
329
279
  * ```
330
280
  */
331
- export declare const pikkuSessionServices: (func: (services: SingletonServices, interaction: any, session: Session | undefined) => Promise<RequiredSessionServices>) => (services: SingletonServices, interaction: any, session: Session | undefined) => Promise<RequiredSessionServices>;
281
+ export declare const pikkuWireServices: (func: (services: SingletonServices, wire: any) => Promise<RequiredWireServices>) => (services: SingletonServices, wire: any) => Promise<RequiredWireServices>;
332
282
  /**
333
283
  * Adds global middleware for a specific tag.
334
284
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.11.0
2
+ * This file was generated by @pikku/cli@0.11.2
3
3
  */
4
4
  /**
5
5
  * Core function, middleware, and permission types for all wirings
@@ -12,7 +12,8 @@ import { addMiddleware as addMiddlewareCore, addPermission as addPermissionCore
12
12
  * @example
13
13
  * ```typescript
14
14
  * // Direct function syntax
15
- * const permission = pikkuPermission(({ logger }, data, session) => {
15
+ * const permission = pikkuPermission(async ({ logger }, data, { session }) => {
16
+ * const session = await session?.get()
16
17
  * return session?.role === 'admin'
17
18
  * })
18
19
  *
@@ -20,7 +21,8 @@ import { addMiddleware as addMiddlewareCore, addPermission as addPermissionCore
20
21
  * const adminPermission = pikkuPermission({
21
22
  * name: 'Admin Permission',
22
23
  * description: 'Checks if user has admin role',
23
- * func: async ({ logger }, data, session) => {
24
+ * func: async ({ logger }, data, { session }) => {
25
+ * const session = await session?.get()
24
26
  * return session?.role === 'admin'
25
27
  * }
26
28
  * })
@@ -36,7 +38,7 @@ export const pikkuPermission = (permission) => {
36
38
  * @example
37
39
  * ```typescript
38
40
  * // Direct function syntax
39
- * const middleware = pikkuMiddleware(({ logger }, interactions, next) => {
41
+ * const middleware = pikkuMiddleware(({ logger }, wires, next) => {
40
42
  * logger.info('Middleware executed')
41
43
  * await next()
42
44
  * })
@@ -45,7 +47,7 @@ export const pikkuPermission = (permission) => {
45
47
  * const logMiddleware = pikkuMiddleware({
46
48
  * name: 'Request Logger',
47
49
  * description: 'Logs all incoming requests',
48
- * func: async ({ logger }, interactions, next) => {
50
+ * func: async ({ logger }, wires, next) => {
49
51
  * logger.info('Request started')
50
52
  * await next()
51
53
  * }
@@ -65,7 +67,7 @@ export const pikkuMiddleware = (middleware) => {
65
67
  * message,
66
68
  * level = 'info'
67
69
  * }) => {
68
- * return pikkuMiddleware(async ({ logger }, _interaction, next) => {
70
+ * return pikkuMiddleware(async ({ logger }, next) => {
69
71
  * logger[level](message)
70
72
  * await next()
71
73
  * })
@@ -84,8 +86,8 @@ export const pikkuMiddlewareFactory = (factory) => {
84
86
  * export const requireRole = pikkuPermissionFactory<{ role: string }>(({
85
87
  * role
86
88
  * }) => {
87
- * return pikkuPermission(async ({ logger }, data, session) => {
88
- * if (!session || session.role !== role) {
89
+ * return pikkuPermission(async ({ logger }, data, { initialSession }) => {
90
+ * if (!initialSession || initialSession.role !== role) {
89
91
  * logger.warn(`Permission denied: required role '${role}'`)
90
92
  * return false
91
93
  * }
@@ -109,7 +111,8 @@ export const pikkuPermissionFactory = (factory) => {
109
111
  * @example
110
112
  * \`\`\`typescript
111
113
  * const createUser = pikkuFunc<{name: string, email: string}, {id: number, message: string}>({
112
- * func: async ({db, logger}, input) => {
114
+ * func: async ({db, logger}, input, wire) => {
115
+ * const session = await wire.session.get()
113
116
  * logger.info('Creating user', input.name)
114
117
  * const user = await db.users.create(input)
115
118
  * return {id: user.id, message: \`User \${input.name} created successfully\`}
@@ -133,7 +136,7 @@ export const pikkuFunc = (func) => {
133
136
  * @example
134
137
  * \`\`\`typescript
135
138
  * const healthCheck = pikkuSessionlessFunc<void, {status: string, timestamp: string}>({
136
- * func: async ({logger}) => {
139
+ * func: async ({logger}, input) => {
137
140
  * logger.info('Health check requested')
138
141
  * return {status: 'healthy', timestamp: new Date().toISOString()}
139
142
  * },
@@ -201,22 +204,23 @@ export const pikkuConfig = (func) => func;
201
204
  */
202
205
  export const pikkuServices = (func) => func;
203
206
  /**
204
- * Creates a Pikku session services factory.
207
+ * Creates a Pikku wire services factory.
205
208
  * Use this to define services that are created per-request/session.
206
209
  *
207
- * @param func - Session services factory function
208
- * @returns The session services factory function
210
+ * @param func - Wire services factory function
211
+ * @returns The wire services factory function
209
212
  *
210
213
  * @example
211
214
  * ```typescript
212
- * export const createSessionServices = pikkuSessionServices(async (services, interaction, session) => {
215
+ * export const createWireServices = pikkuWireServices(async (services, wire) => {
216
+ * const session = await wire.session?.get()
213
217
  * return {
214
218
  * userCache: new UserCache(session?.userId)
215
219
  * }
216
220
  * })
217
221
  * ```
218
222
  */
219
- export const pikkuSessionServices = (func) => func;
223
+ export const pikkuWireServices = (func) => func;
220
224
  /**
221
225
  * Adds global middleware for a specific tag.
222
226
  *