@pikku/cli 0.9.14 → 0.9.16-next.0

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 (445) hide show
  1. package/.pikku/channel/pikku-channel-types.gen.ts +92 -0
  2. package/.pikku/cli/pikku-cli-types.gen.ts +71 -0
  3. package/.pikku/cli/pikku-cli-wirings-meta.gen.ts +5 -0
  4. package/.pikku/cli/pikku-cli-wirings.gen.ts +4 -0
  5. package/.pikku/function/pikku-function-types.gen.ts +292 -0
  6. package/.pikku/function/pikku-functions-meta.gen.ts +817 -0
  7. package/.pikku/function/pikku-functions-meta.min.gen.ts +176 -0
  8. package/.pikku/function/pikku-functions.gen.ts +74 -0
  9. package/.pikku/http/pikku-http-types.gen.ts +61 -0
  10. package/.pikku/mcp/pikku-mcp-types.gen.ts +138 -0
  11. package/.pikku/pikku-bootstrap.gen.ts +9 -0
  12. package/.pikku/pikku-services.gen.ts +24 -0
  13. package/.pikku/pikku-types.gen.ts +28 -0
  14. package/.pikku/queue/pikku-queue-types.gen.ts +28 -0
  15. package/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +46 -0
  16. package/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +80 -0
  17. package/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.ts +40 -0
  18. package/.pikku/scheduler/pikku-scheduler-types.gen.ts +26 -0
  19. package/.pikku/schemas/register.gen.ts +47 -0
  20. package/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -0
  21. package/.pikku/schemas/schemas/PikkuCLIOutput.schema.json +1 -0
  22. package/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -0
  23. package/.pikku/schemas/schemas/PikkuFunctionsOutput.schema.json +1 -0
  24. package/.pikku/schemas/schemas/PikkuHTTPOutput.schema.json +1 -0
  25. package/.pikku/schemas/schemas/PikkuMCPOutput.schema.json +1 -0
  26. package/.pikku/schemas/schemas/PikkuMiddlewareOutput.schema.json +1 -0
  27. package/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +1 -0
  28. package/.pikku/schemas/schemas/PikkuRPCOutput.schema.json +1 -0
  29. package/.pikku/schemas/schemas/PikkuSchedulerOutput.schema.json +1 -0
  30. package/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -0
  31. package/CHANGELOG.md +15 -0
  32. package/bin/pikku.ts +45 -14
  33. package/build.sh +53 -0
  34. package/cli.schema.json +1 -382
  35. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +65 -0
  36. package/dist/.pikku/channel/pikku-channel-types.gen.js +54 -0
  37. package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +55 -0
  38. package/dist/.pikku/cli/pikku-cli-types.gen.js +30 -0
  39. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +5 -0
  40. package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +4 -0
  41. package/dist/.pikku/cli/pikku-cli-wirings.gen.js +5 -0
  42. package/dist/.pikku/function/pikku-function-types.gen.d.ts +259 -0
  43. package/dist/.pikku/function/pikku-function-types.gen.js +175 -0
  44. package/dist/.pikku/function/pikku-functions-meta.gen.d.ts +1 -0
  45. package/dist/.pikku/function/pikku-functions-meta.gen.js +817 -0
  46. package/dist/.pikku/function/pikku-functions-meta.min.gen.d.ts +1 -0
  47. package/dist/.pikku/function/pikku-functions-meta.min.gen.js +176 -0
  48. package/dist/.pikku/function/pikku-functions.gen.d.ts +1 -0
  49. package/dist/.pikku/function/pikku-functions.gen.js +73 -0
  50. package/dist/.pikku/http/pikku-http-types.gen.d.ts +49 -0
  51. package/dist/.pikku/http/pikku-http-types.gen.js +41 -0
  52. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +88 -0
  53. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +71 -0
  54. package/dist/.pikku/pikku-bootstrap.gen.d.ts +9 -0
  55. package/dist/.pikku/pikku-bootstrap.gen.js +9 -0
  56. package/dist/.pikku/pikku-services.gen.d.ts +16 -0
  57. package/dist/.pikku/pikku-services.gen.js +11 -0
  58. package/dist/.pikku/pikku-types.gen.d.ts +14 -0
  59. package/dist/.pikku/pikku-types.gen.js +21 -0
  60. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +24 -0
  61. package/dist/.pikku/queue/pikku-queue-types.gen.js +17 -0
  62. package/dist/.pikku/rpc/pikku-bootstrap-rpc.gen.d.ts +6 -0
  63. package/dist/.pikku/rpc/pikku-bootstrap-rpc.gen.js +6 -0
  64. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.d.ts +1 -0
  65. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +40 -0
  66. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +22 -0
  67. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +17 -0
  68. package/dist/.pikku/schemas/register.gen.d.ts +1 -0
  69. package/dist/.pikku/schemas/register.gen.js +26 -0
  70. package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -0
  71. package/dist/.pikku/schemas/schemas/PikkuCLIOutput.schema.json +1 -0
  72. package/dist/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -0
  73. package/dist/.pikku/schemas/schemas/PikkuFunctionsOutput.schema.json +1 -0
  74. package/dist/.pikku/schemas/schemas/PikkuHTTPOutput.schema.json +1 -0
  75. package/dist/.pikku/schemas/schemas/PikkuMCPOutput.schema.json +1 -0
  76. package/dist/.pikku/schemas/schemas/PikkuMiddlewareOutput.schema.json +1 -0
  77. package/dist/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +1 -0
  78. package/dist/.pikku/schemas/schemas/PikkuRPCOutput.schema.json +1 -0
  79. package/dist/.pikku/schemas/schemas/PikkuSchedulerOutput.schema.json +1 -0
  80. package/dist/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -0
  81. package/dist/bin/pikku.d.ts +1 -1
  82. package/dist/bin/pikku.js +32 -14
  83. package/dist/src/cli.wiring.d.ts +1 -0
  84. package/dist/src/cli.wiring.js +75 -0
  85. package/dist/src/functions/commands/all.d.ts +1 -0
  86. package/dist/src/functions/commands/all.js +104 -0
  87. package/dist/src/functions/commands/watch.d.ts +1 -0
  88. package/dist/src/functions/commands/watch.js +47 -0
  89. package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.d.ts +1 -0
  90. package/dist/src/{runtimes → functions/runtimes}/nextjs/pikku-command-nextjs.js +28 -9
  91. package/dist/src/functions/wirings/channels/pikku-channels.d.ts +1 -0
  92. package/dist/src/functions/wirings/channels/pikku-channels.js +24 -0
  93. package/dist/src/functions/wirings/channels/pikku-command-channel-types.d.ts +1 -0
  94. package/dist/src/functions/wirings/channels/pikku-command-channel-types.js +21 -0
  95. package/dist/src/functions/wirings/channels/pikku-command-channels-map.d.ts +1 -0
  96. package/dist/src/functions/wirings/channels/pikku-command-channels-map.js +23 -0
  97. package/dist/src/functions/wirings/channels/pikku-command-channels.d.ts +1 -0
  98. package/dist/src/functions/wirings/channels/pikku-command-channels.js +25 -0
  99. package/dist/src/functions/wirings/channels/pikku-command-websocket-typed.d.ts +1 -0
  100. package/dist/src/functions/wirings/channels/pikku-command-websocket-typed.js +24 -0
  101. package/dist/src/functions/wirings/channels/serialize-channel-types.d.ts +4 -0
  102. package/dist/src/functions/wirings/channels/serialize-channel-types.js +95 -0
  103. package/dist/src/{wirings → functions/wirings}/channels/serialize-typed-channel-map.js +2 -2
  104. package/dist/src/functions/wirings/cli/pikku-command-cli-entry.d.ts +1 -0
  105. package/dist/src/functions/wirings/cli/pikku-command-cli-entry.js +100 -0
  106. package/dist/src/functions/wirings/cli/pikku-command-cli-types.d.ts +1 -0
  107. package/dist/src/functions/wirings/cli/pikku-command-cli-types.js +33 -0
  108. package/dist/src/functions/wirings/cli/pikku-command-cli.d.ts +1 -0
  109. package/dist/src/functions/wirings/cli/pikku-command-cli.js +24 -0
  110. package/dist/src/functions/wirings/cli/serialize-channel-cli-client.d.ts +7 -0
  111. package/dist/src/functions/wirings/cli/serialize-channel-cli-client.js +54 -0
  112. package/dist/src/functions/wirings/cli/serialize-channel-cli.d.ts +9 -0
  113. package/dist/src/functions/wirings/cli/serialize-channel-cli.js +84 -0
  114. package/dist/src/functions/wirings/cli/serialize-cli-types.d.ts +4 -0
  115. package/dist/src/functions/wirings/cli/serialize-cli-types.js +74 -0
  116. package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.d.ts +14 -0
  117. package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.js +46 -0
  118. package/dist/src/functions/wirings/fetch/index.d.ts +1 -0
  119. package/dist/src/functions/wirings/fetch/index.js +24 -0
  120. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.d.ts +1 -0
  121. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.js +32 -0
  122. package/dist/src/functions/wirings/functions/pikku-command-function-types.d.ts +1 -0
  123. package/dist/src/functions/wirings/functions/pikku-command-function-types.js +20 -0
  124. package/dist/src/functions/wirings/functions/pikku-command-functions.d.ts +1 -0
  125. package/dist/src/functions/wirings/functions/pikku-command-functions.js +28 -0
  126. package/dist/src/{wirings → functions/wirings}/functions/pikku-command-services.d.ts +1 -2
  127. package/dist/src/{wirings → functions/wirings}/functions/pikku-command-services.js +27 -10
  128. package/dist/src/functions/wirings/functions/pikku-function-types.d.ts +1 -0
  129. package/dist/src/functions/wirings/functions/pikku-function-types.js +20 -0
  130. package/dist/src/functions/wirings/functions/schemas.d.ts +4 -0
  131. package/dist/src/functions/wirings/functions/schemas.js +22 -0
  132. package/dist/src/{wirings → functions/wirings}/functions/serialize-function-imports.js +4 -21
  133. package/dist/src/functions/wirings/functions/serialize-function-types.d.ts +4 -0
  134. package/dist/src/functions/wirings/functions/serialize-function-types.js +295 -0
  135. package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.d.ts +4 -0
  136. package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.js +31 -0
  137. package/dist/src/{wirings → functions/wirings}/http/openapi-spec-generator.d.ts +2 -1
  138. package/dist/src/{wirings → functions/wirings}/http/openapi-spec-generator.js +2 -2
  139. package/dist/src/functions/wirings/http/pikku-command-http-map.d.ts +1 -0
  140. package/dist/src/functions/wirings/http/pikku-command-http-map.js +23 -0
  141. package/dist/src/functions/wirings/http/pikku-command-http-routes.d.ts +1 -0
  142. package/dist/src/functions/wirings/http/pikku-command-http-routes.js +25 -0
  143. package/dist/src/functions/wirings/http/pikku-command-http-types.d.ts +1 -0
  144. package/dist/src/functions/wirings/http/pikku-command-http-types.js +21 -0
  145. package/dist/src/functions/wirings/http/pikku-command-openapi.d.ts +1 -0
  146. package/dist/src/functions/wirings/http/pikku-command-openapi.js +34 -0
  147. package/dist/src/functions/wirings/http/pikku-http-routes.d.ts +1 -0
  148. package/dist/src/functions/wirings/http/pikku-http-routes.js +25 -0
  149. package/dist/src/functions/wirings/http/serialize-http-types.d.ts +4 -0
  150. package/dist/src/functions/wirings/http/serialize-http-types.js +64 -0
  151. package/dist/src/{wirings → functions/wirings}/http/serialize-typed-http-map.js +2 -2
  152. package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.d.ts +1 -0
  153. package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.js +28 -0
  154. package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.d.ts +1 -0
  155. package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.js +21 -0
  156. package/dist/src/functions/wirings/mcp/pikku-command-mcp.d.ts +1 -0
  157. package/dist/src/{wirings → functions/wirings}/mcp/pikku-command-mcp.js +22 -5
  158. package/dist/src/{wirings → functions/wirings}/mcp/serialize-mcp-json.d.ts +1 -1
  159. package/dist/src/functions/wirings/mcp/serialize-mcp-types.d.ts +4 -0
  160. package/dist/src/functions/wirings/mcp/serialize-mcp-types.js +141 -0
  161. package/dist/src/functions/wirings/middleware/pikku-command-middleware.d.ts +1 -0
  162. package/dist/src/functions/wirings/middleware/pikku-command-middleware.js +38 -0
  163. package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.d.ts +8 -0
  164. package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.js +50 -0
  165. package/dist/src/functions/wirings/middleware/serialize-middleware-imports.d.ts +2 -0
  166. package/dist/src/functions/wirings/middleware/serialize-middleware-imports.js +43 -0
  167. package/dist/src/functions/wirings/queue/pikku-command-queue-map.d.ts +1 -0
  168. package/dist/src/functions/wirings/queue/pikku-command-queue-map.js +23 -0
  169. package/dist/src/functions/wirings/queue/pikku-command-queue-service.d.ts +1 -0
  170. package/dist/src/functions/wirings/queue/pikku-command-queue-service.js +24 -0
  171. package/dist/src/functions/wirings/queue/pikku-command-queue-types.d.ts +1 -0
  172. package/dist/src/functions/wirings/queue/pikku-command-queue-types.js +21 -0
  173. package/dist/src/functions/wirings/queue/pikku-command-queue.d.ts +1 -0
  174. package/dist/src/functions/wirings/queue/pikku-command-queue.js +26 -0
  175. package/dist/src/functions/wirings/queue/pikku-queue-map.d.ts +1 -0
  176. package/dist/src/functions/wirings/queue/pikku-queue-map.js +23 -0
  177. package/dist/src/functions/wirings/queue/pikku-queue.d.ts +1 -0
  178. package/dist/src/functions/wirings/queue/pikku-queue.js +25 -0
  179. package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-map.js +2 -2
  180. package/dist/src/functions/wirings/queue/serialize-queue-types.d.ts +4 -0
  181. package/dist/src/functions/wirings/queue/serialize-queue-types.js +31 -0
  182. package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.d.ts +1 -0
  183. package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.js +25 -0
  184. package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.d.ts +2 -0
  185. package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.js +36 -0
  186. package/dist/src/functions/wirings/rpc/pikku-command-rpc.d.ts +1 -0
  187. package/dist/src/functions/wirings/rpc/pikku-command-rpc.js +22 -0
  188. package/dist/src/{wirings → functions/wirings}/rpc/serialize-typed-rpc-map.js +2 -2
  189. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.d.ts +1 -0
  190. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.js +21 -0
  191. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.d.ts +1 -0
  192. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.js +26 -0
  193. package/dist/src/functions/wirings/scheduler/serialize-scheduler-types.d.ts +4 -0
  194. package/dist/src/functions/wirings/scheduler/serialize-scheduler-types.js +29 -0
  195. package/dist/src/middleware/log-command-info-and-time.d.ts +19 -0
  196. package/dist/src/middleware/log-command-info-and-time.js +27 -0
  197. package/dist/src/serialize-pikku-types.js +2 -2
  198. package/dist/src/services/cli-logger-forwarder.service.d.ts +26 -0
  199. package/dist/src/services/cli-logger-forwarder.service.js +55 -0
  200. package/dist/src/services/cli-logger.service.d.ts +19 -0
  201. package/dist/src/services/cli-logger.service.js +66 -0
  202. package/dist/src/services.d.ts +15 -0
  203. package/dist/src/services.js +64 -0
  204. package/dist/src/utils/check-required-types.d.ts +10 -0
  205. package/dist/src/utils/check-required-types.js +31 -0
  206. package/dist/src/utils/custom-types-generator.d.ts +2 -0
  207. package/dist/src/utils/custom-types-generator.js +37 -0
  208. package/dist/src/utils/file-import-path.d.ts +1 -0
  209. package/dist/src/utils/file-import-path.js +43 -0
  210. package/dist/src/utils/file-imports-serializer.d.ts +1 -0
  211. package/dist/src/utils/file-imports-serializer.js +13 -0
  212. package/dist/src/utils/file-writer.d.ts +6 -0
  213. package/dist/src/utils/file-writer.js +40 -0
  214. package/dist/src/utils/generate-bootstrap-file.d.ts +3 -0
  215. package/dist/src/utils/generate-bootstrap-file.js +21 -0
  216. package/dist/src/utils/pikku-cli-config.d.ts +5 -0
  217. package/dist/src/utils/pikku-cli-config.js +243 -0
  218. package/dist/src/utils/pikku-files-and-methods.d.ts +21 -0
  219. package/dist/src/utils/pikku-files-and-methods.js +70 -0
  220. package/dist/src/{schema-generator.d.ts → utils/schema-generator.d.ts} +1 -1
  221. package/dist/src/{schema-generator.js → utils/schema-generator.js} +1 -1
  222. package/dist/src/{serialize-import-map.js → utils/serialize-import-map.js} +1 -1
  223. package/dist/tsconfig.tsbuildinfo +1 -1
  224. package/package.json +6 -6
  225. package/pikku.config.json +24 -0
  226. package/src/cli.wiring.ts +75 -0
  227. package/src/functions/commands/all.ts +141 -0
  228. package/src/functions/commands/watch.ts +58 -0
  229. package/src/functions/runtimes/nextjs/pikku-command-nextjs.ts +111 -0
  230. package/src/functions/wirings/channels/pikku-channels.ts +40 -0
  231. package/src/functions/wirings/channels/pikku-command-channel-types.ts +27 -0
  232. package/src/functions/wirings/channels/pikku-command-channels-map.ts +31 -0
  233. package/src/functions/wirings/channels/pikku-command-channels.ts +45 -0
  234. package/src/functions/wirings/channels/pikku-command-websocket-typed.ts +33 -0
  235. package/src/functions/wirings/channels/serialize-channel-types.ts +95 -0
  236. package/src/{wirings → functions/wirings}/channels/serialize-typed-channel-map.ts +2 -2
  237. package/src/functions/wirings/cli/pikku-command-cli-entry.ts +173 -0
  238. package/src/functions/wirings/cli/pikku-command-cli-types.ts +50 -0
  239. package/src/functions/wirings/cli/pikku-command-cli.ts +41 -0
  240. package/src/functions/wirings/cli/serialize-channel-cli-client.ts +72 -0
  241. package/src/functions/wirings/cli/serialize-channel-cli.ts +123 -0
  242. package/src/functions/wirings/cli/serialize-cli-types.ts +80 -0
  243. package/src/functions/wirings/cli/serialize-local-cli-bootstrap.ts +75 -0
  244. package/src/functions/wirings/fetch/index.ts +32 -0
  245. package/src/functions/wirings/functions/pikku-command-function-types-split.ts +51 -0
  246. package/src/functions/wirings/functions/pikku-command-function-types.ts +45 -0
  247. package/src/functions/wirings/functions/pikku-command-functions.ts +61 -0
  248. package/src/{wirings → functions/wirings}/functions/pikku-command-services.ts +41 -44
  249. package/src/functions/wirings/functions/pikku-function-types.ts +45 -0
  250. package/src/functions/wirings/functions/schemas.ts +47 -0
  251. package/src/{wirings → functions/wirings}/functions/serialize-function-imports.ts +4 -30
  252. package/src/functions/wirings/functions/serialize-function-types.ts +303 -0
  253. package/src/functions/wirings/functions/serialize-pikku-types-hub.ts +39 -0
  254. package/src/{wirings → functions/wirings}/http/openapi-spec-generator.ts +3 -1
  255. package/src/functions/wirings/http/pikku-command-http-map.ts +32 -0
  256. package/src/functions/wirings/http/pikku-command-http-routes.ts +41 -0
  257. package/src/functions/wirings/http/pikku-command-http-types.ts +27 -0
  258. package/src/functions/wirings/http/pikku-command-openapi.ts +57 -0
  259. package/src/functions/wirings/http/pikku-http-routes.ts +40 -0
  260. package/src/functions/wirings/http/serialize-http-types.ts +64 -0
  261. package/src/{wirings → functions/wirings}/http/serialize-typed-http-map.ts +2 -2
  262. package/src/functions/wirings/mcp/pikku-command-mcp-json.ts +38 -0
  263. package/src/functions/wirings/mcp/pikku-command-mcp-types.ts +27 -0
  264. package/src/{wirings → functions/wirings}/mcp/pikku-command-mcp.ts +55 -46
  265. package/src/{wirings → functions/wirings}/mcp/serialize-mcp-json.ts +1 -1
  266. package/src/functions/wirings/mcp/serialize-mcp-types.ts +141 -0
  267. package/src/functions/wirings/middleware/pikku-command-middleware.ts +65 -0
  268. package/src/functions/wirings/middleware/serialize-middleware-groups-meta.ts +61 -0
  269. package/src/functions/wirings/middleware/serialize-middleware-imports.ts +78 -0
  270. package/src/functions/wirings/queue/pikku-command-queue-map.ts +31 -0
  271. package/src/functions/wirings/queue/pikku-command-queue-service.ts +33 -0
  272. package/src/functions/wirings/queue/pikku-command-queue-types.ts +27 -0
  273. package/src/functions/wirings/queue/pikku-command-queue.ts +46 -0
  274. package/src/functions/wirings/queue/pikku-queue-map.ts +31 -0
  275. package/src/functions/wirings/queue/pikku-queue.ts +44 -0
  276. package/src/{wirings → functions/wirings}/queue/serialize-queue-map.ts +2 -2
  277. package/src/functions/wirings/queue/serialize-queue-types.ts +31 -0
  278. package/src/functions/wirings/rpc/pikku-command-rpc-client.ts +32 -0
  279. package/src/functions/wirings/rpc/pikku-command-rpc-map.ts +52 -0
  280. package/src/functions/wirings/rpc/pikku-command-rpc.ts +28 -0
  281. package/src/{wirings → functions/wirings}/rpc/serialize-typed-rpc-map.ts +2 -2
  282. package/src/functions/wirings/scheduler/pikku-command-scheduler-types.ts +27 -0
  283. package/src/functions/wirings/scheduler/pikku-command-scheduler.ts +46 -0
  284. package/src/functions/wirings/scheduler/serialize-scheduler-types.ts +29 -0
  285. package/src/middleware/log-command-info-and-time.ts +61 -0
  286. package/src/serialize-pikku-types.ts +2 -2
  287. package/src/services/cli-logger-forwarder.service.ts +77 -0
  288. package/src/services/cli-logger.service.ts +78 -0
  289. package/src/services.ts +111 -0
  290. package/src/utils/check-required-types.ts +53 -0
  291. package/src/utils/custom-types-generator.ts +49 -0
  292. package/src/{utils.test.ts → utils/file-import-path.test.ts} +1 -1
  293. package/src/utils/file-import-path.ts +53 -0
  294. package/src/utils/file-imports-serializer.ts +25 -0
  295. package/src/utils/file-writer.ts +56 -0
  296. package/src/utils/generate-bootstrap-file.ts +43 -0
  297. package/src/utils/pikku-cli-config.ts +356 -0
  298. package/src/utils/pikku-files-and-methods.ts +148 -0
  299. package/src/{schema-generator.ts → utils/schema-generator.ts} +3 -1
  300. package/src/{serialize-import-map.ts → utils/serialize-import-map.ts} +1 -1
  301. package/tsconfig.json +2 -2
  302. package/types/application-types.d.ts +20 -0
  303. package/types/config.d.ts +192 -0
  304. package/bin/pikku-all.ts +0 -349
  305. package/bin/pikku-fetch.ts +0 -27
  306. package/bin/pikku-nextjs.ts +0 -44
  307. package/bin/pikku-openapi.ts +0 -31
  308. package/bin/pikku-queue-service.ts +0 -28
  309. package/bin/pikku-rpc.ts +0 -28
  310. package/bin/pikku-schemas.ts +0 -31
  311. package/bin/pikku-websocket.ts +0 -28
  312. package/dist/bin/pikku-all.d.ts +0 -4
  313. package/dist/bin/pikku-all.js +0 -194
  314. package/dist/bin/pikku-fetch.d.ts +0 -4
  315. package/dist/bin/pikku-fetch.js +0 -19
  316. package/dist/bin/pikku-nextjs.d.ts +0 -4
  317. package/dist/bin/pikku-nextjs.js +0 -24
  318. package/dist/bin/pikku-openapi.d.ts +0 -2
  319. package/dist/bin/pikku-openapi.js +0 -19
  320. package/dist/bin/pikku-queue-service.d.ts +0 -4
  321. package/dist/bin/pikku-queue-service.js +0 -19
  322. package/dist/bin/pikku-rpc.d.ts +0 -4
  323. package/dist/bin/pikku-rpc.js +0 -19
  324. package/dist/bin/pikku-schemas.d.ts +0 -2
  325. package/dist/bin/pikku-schemas.js +0 -21
  326. package/dist/bin/pikku-websocket.d.ts +0 -4
  327. package/dist/bin/pikku-websocket.js +0 -19
  328. package/dist/src/inspector-glob.d.ts +0 -2
  329. package/dist/src/inspector-glob.js +0 -12
  330. package/dist/src/pikku-cli-config.d.ts +0 -56
  331. package/dist/src/pikku-cli-config.js +0 -203
  332. package/dist/src/pikku-command-schemas.d.ts +0 -2
  333. package/dist/src/pikku-command-schemas.js +0 -8
  334. package/dist/src/runtimes/nextjs/pikku-command-nextjs.d.ts +0 -2
  335. package/dist/src/schemas.d.ts +0 -2
  336. package/dist/src/schemas.js +0 -8
  337. package/dist/src/types.d.ts +0 -5
  338. package/dist/src/utils.d.ts +0 -60
  339. package/dist/src/utils.js +0 -248
  340. package/dist/src/wirings/channels/pikku-channels.d.ts +0 -2
  341. package/dist/src/wirings/channels/pikku-channels.js +0 -9
  342. package/dist/src/wirings/channels/pikku-command-channels-map.d.ts +0 -2
  343. package/dist/src/wirings/channels/pikku-command-channels-map.js +0 -8
  344. package/dist/src/wirings/channels/pikku-command-channels.d.ts +0 -2
  345. package/dist/src/wirings/channels/pikku-command-channels.js +0 -9
  346. package/dist/src/wirings/channels/pikku-command-websocket-typed.d.ts +0 -2
  347. package/dist/src/wirings/channels/pikku-command-websocket-typed.js +0 -15
  348. package/dist/src/wirings/fetch/index.d.ts +0 -2
  349. package/dist/src/wirings/fetch/index.js +0 -12
  350. package/dist/src/wirings/functions/pikku-command-function-types.d.ts +0 -2
  351. package/dist/src/wirings/functions/pikku-command-function-types.js +0 -13
  352. package/dist/src/wirings/functions/pikku-command-functions.d.ts +0 -2
  353. package/dist/src/wirings/functions/pikku-command-functions.js +0 -14
  354. package/dist/src/wirings/functions/pikku-function-types.d.ts +0 -2
  355. package/dist/src/wirings/functions/pikku-function-types.js +0 -13
  356. package/dist/src/wirings/http/pikku-command-http-map.d.ts +0 -2
  357. package/dist/src/wirings/http/pikku-command-http-map.js +0 -8
  358. package/dist/src/wirings/http/pikku-command-http-routes.d.ts +0 -2
  359. package/dist/src/wirings/http/pikku-command-http-routes.js +0 -9
  360. package/dist/src/wirings/http/pikku-command-openapi.d.ts +0 -2
  361. package/dist/src/wirings/http/pikku-command-openapi.js +0 -20
  362. package/dist/src/wirings/http/pikku-http-routes.d.ts +0 -2
  363. package/dist/src/wirings/http/pikku-http-routes.js +0 -9
  364. package/dist/src/wirings/mcp/pikku-command-mcp-json.d.ts +0 -2
  365. package/dist/src/wirings/mcp/pikku-command-mcp-json.js +0 -13
  366. package/dist/src/wirings/mcp/pikku-command-mcp.d.ts +0 -2
  367. package/dist/src/wirings/queue/pikku-command-queue-map.d.ts +0 -2
  368. package/dist/src/wirings/queue/pikku-command-queue-map.js +0 -8
  369. package/dist/src/wirings/queue/pikku-command-queue-service.d.ts +0 -2
  370. package/dist/src/wirings/queue/pikku-command-queue-service.js +0 -15
  371. package/dist/src/wirings/queue/pikku-command-queue.d.ts +0 -2
  372. package/dist/src/wirings/queue/pikku-command-queue.js +0 -10
  373. package/dist/src/wirings/queue/pikku-queue-map.d.ts +0 -2
  374. package/dist/src/wirings/queue/pikku-queue-map.js +0 -8
  375. package/dist/src/wirings/queue/pikku-queue.d.ts +0 -2
  376. package/dist/src/wirings/queue/pikku-queue.js +0 -10
  377. package/dist/src/wirings/rpc/pikku-command-rpc-client.d.ts +0 -2
  378. package/dist/src/wirings/rpc/pikku-command-rpc-client.js +0 -15
  379. package/dist/src/wirings/rpc/pikku-command-rpc-map.d.ts +0 -3
  380. package/dist/src/wirings/rpc/pikku-command-rpc-map.js +0 -14
  381. package/dist/src/wirings/rpc/pikku-command-rpc.d.ts +0 -2
  382. package/dist/src/wirings/rpc/pikku-command-rpc.js +0 -8
  383. package/dist/src/wirings/scheduler/pikku-command-scheduler.d.ts +0 -2
  384. package/dist/src/wirings/scheduler/pikku-command-scheduler.js +0 -10
  385. package/src/inspector-glob.ts +0 -30
  386. package/src/pikku-cli-config.ts +0 -387
  387. package/src/pikku-command-schemas.ts +0 -35
  388. package/src/runtimes/nextjs/pikku-command-nextjs.ts +0 -110
  389. package/src/schemas.ts +0 -35
  390. package/src/types.ts +0 -16
  391. package/src/utils.ts +0 -420
  392. package/src/wirings/channels/pikku-channels.ts +0 -41
  393. package/src/wirings/channels/pikku-command-channels-map.ts +0 -26
  394. package/src/wirings/channels/pikku-command-channels.ts +0 -39
  395. package/src/wirings/channels/pikku-command-websocket-typed.ts +0 -36
  396. package/src/wirings/fetch/index.ts +0 -33
  397. package/src/wirings/functions/pikku-command-function-types.ts +0 -53
  398. package/src/wirings/functions/pikku-command-functions.ts +0 -48
  399. package/src/wirings/functions/pikku-function-types.ts +0 -52
  400. package/src/wirings/http/pikku-command-http-map.ts +0 -27
  401. package/src/wirings/http/pikku-command-http-routes.ts +0 -40
  402. package/src/wirings/http/pikku-command-openapi.ts +0 -55
  403. package/src/wirings/http/pikku-http-routes.ts +0 -40
  404. package/src/wirings/mcp/pikku-command-mcp-json.ts +0 -33
  405. package/src/wirings/queue/pikku-command-queue-map.ts +0 -26
  406. package/src/wirings/queue/pikku-command-queue-service.ts +0 -36
  407. package/src/wirings/queue/pikku-command-queue.ts +0 -45
  408. package/src/wirings/queue/pikku-queue-map.ts +0 -26
  409. package/src/wirings/queue/pikku-queue.ts +0 -43
  410. package/src/wirings/rpc/pikku-command-rpc-client.ts +0 -35
  411. package/src/wirings/rpc/pikku-command-rpc-map.ts +0 -49
  412. package/src/wirings/rpc/pikku-command-rpc.ts +0 -24
  413. package/src/wirings/scheduler/pikku-command-scheduler.ts +0 -43
  414. /package/dist/{src/types.js → .pikku/cli/pikku-cli-wirings-meta.gen.d.ts} +0 -0
  415. /package/dist/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-backend-wrapper.d.ts +0 -0
  416. /package/dist/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-backend-wrapper.js +0 -0
  417. /package/dist/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-http-wrapper.d.ts +0 -0
  418. /package/dist/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-http-wrapper.js +0 -0
  419. /package/dist/src/{wirings → functions/wirings}/channels/serialize-typed-channel-map.d.ts +0 -0
  420. /package/dist/src/{wirings → functions/wirings}/channels/serialize-websocket-wrapper.d.ts +0 -0
  421. /package/dist/src/{wirings → functions/wirings}/channels/serialize-websocket-wrapper.js +0 -0
  422. /package/dist/src/{wirings → functions/wirings}/functions/serialize-function-imports.d.ts +0 -0
  423. /package/dist/src/{wirings → functions/wirings}/http/serialize-fetch-wrapper.d.ts +0 -0
  424. /package/dist/src/{wirings → functions/wirings}/http/serialize-fetch-wrapper.js +0 -0
  425. /package/dist/src/{wirings → functions/wirings}/http/serialize-typed-http-map.d.ts +0 -0
  426. /package/dist/src/{wirings → functions/wirings}/mcp/serialize-mcp-json.js +0 -0
  427. /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-map.d.ts +0 -0
  428. /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-meta.d.ts +0 -0
  429. /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-meta.js +0 -0
  430. /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-wrapper.d.ts +0 -0
  431. /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-wrapper.js +0 -0
  432. /package/dist/src/{wirings → functions/wirings}/rpc/serialize-rpc-wrapper.d.ts +0 -0
  433. /package/dist/src/{wirings → functions/wirings}/rpc/serialize-rpc-wrapper.js +0 -0
  434. /package/dist/src/{wirings → functions/wirings}/rpc/serialize-typed-rpc-map.d.ts +0 -0
  435. /package/dist/src/{wirings → functions/wirings}/scheduler/serialize-scheduler-meta.d.ts +0 -0
  436. /package/dist/src/{wirings → functions/wirings}/scheduler/serialize-scheduler-meta.js +0 -0
  437. /package/dist/src/{serialize-import-map.d.ts → utils/serialize-import-map.d.ts} +0 -0
  438. /package/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-backend-wrapper.ts +0 -0
  439. /package/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-http-wrapper.ts +0 -0
  440. /package/src/{wirings → functions/wirings}/channels/serialize-websocket-wrapper.ts +0 -0
  441. /package/src/{wirings → functions/wirings}/http/serialize-fetch-wrapper.ts +0 -0
  442. /package/src/{wirings → functions/wirings}/queue/serialize-queue-meta.ts +0 -0
  443. /package/src/{wirings → functions/wirings}/queue/serialize-queue-wrapper.ts +0 -0
  444. /package/src/{wirings → functions/wirings}/rpc/serialize-rpc-wrapper.ts +0 -0
  445. /package/src/{wirings → functions/wirings}/scheduler/serialize-scheduler-meta.ts +0 -0
@@ -0,0 +1,92 @@
1
+ /**
2
+ * This file was generated by the @pikku/cli
3
+ */
4
+ /**
5
+ * This file was generated by the @pikku/cli
6
+ * Channel-specific type definitions for tree-shaking optimization
7
+ */
8
+
9
+ import { CoreChannel, wireChannel as wireChannelCore } from '@pikku/core/channel'
10
+ import { CorePikkuFunctionConfig } from '@pikku/core'
11
+ import { AssertHTTPWiringParams } from '@pikku/core/http'
12
+ import type { PikkuFunction, PikkuFunctionSessionless, PikkuPermission, PikkuMiddleware } from '../function/pikku-function-types.gen.js'
13
+
14
+ /**
15
+ * Type definition for WebSocket channels with typed data exchange.
16
+ * Supports connection, disconnection, and message handling.
17
+ *
18
+ * @template ChannelData - Type of data exchanged through the channel
19
+ * @template Channel - String literal type for the channel name
20
+ */
21
+ type ChannelWiringFunction<I, O, C = {}> = PikkuFunctionSessionless<I, O, C> | PikkuFunction<I, O, C>
22
+ type ChannelWiring<ChannelData, Channel extends string> = CoreChannel<ChannelData, Channel, ChannelWiringFunction<void, unknown> | ChannelWiringFunction<void, unknown, ChannelData>, ChannelWiringFunction<void, void> | ChannelWiringFunction<void, void, ChannelData>, ChannelWiringFunction<any, any> | ChannelWiringFunction<any, any, ChannelData>, PikkuPermission, PikkuMiddleware>
23
+
24
+ /**
25
+ * Creates a function that handles WebSocket channel connections.
26
+ * Called when a client connects to a channel.
27
+ *
28
+ * @template Out - Output type for connection response
29
+ * @template ChannelData - Type of data associated with the channel
30
+ * @param func - Function definition, either direct function or configuration object
31
+ * @returns The unwrapped function for internal use
32
+ */
33
+ export const pikkuChannelConnectionFunc = <Out = unknown, ChannelData = unknown>(
34
+ func:
35
+ | PikkuFunctionSessionless<void, Out, ChannelData>
36
+ | {
37
+ func: PikkuFunctionSessionless<void, Out, ChannelData>
38
+ name?: string
39
+ }
40
+ ) => {
41
+ return typeof func === 'function' ? func : func.func
42
+ }
43
+
44
+ /**
45
+ * Creates a function that handles WebSocket channel disconnections.
46
+ * Called when a client disconnects from a channel.
47
+ *
48
+ * @template ChannelData - Type of data associated with the channel
49
+ * @param func - Function definition, either direct function or configuration object
50
+ * @returns The unwrapped function for internal use
51
+ */
52
+ export const pikkuChannelDisconnectionFunc = <ChannelData = unknown>(
53
+ func:
54
+ | PikkuFunctionSessionless<void, void, ChannelData>
55
+ | {
56
+ func: PikkuFunction<void, void, ChannelData>
57
+ name?: string
58
+ }
59
+ ) => {
60
+ return typeof func === 'function' ? func : func.func
61
+ }
62
+
63
+ /**
64
+ * Creates a function that handles WebSocket channel messages.
65
+ * Called when a message is received on a channel.
66
+ *
67
+ * @template In - Input type for channel messages
68
+ * @template Out - Output type for channel responses
69
+ * @template ChannelData - Type of data associated with the channel
70
+ * @param func - Function definition, either direct function or configuration object
71
+ * @returns The unwrapped function for internal use
72
+ */
73
+ export const pikkuChannelFunc = <In = unknown, Out = unknown, ChannelData = unknown>(
74
+ func:
75
+ | PikkuFunctionSessionless<In, Out, ChannelData>
76
+ | CorePikkuFunctionConfig<PikkuFunction<In, Out, ChannelData>, PikkuPermission<In>>
77
+ ) => {
78
+ return typeof func === 'function' ? func : func.func
79
+ }
80
+
81
+ /**
82
+ * Registers a WebSocket channel with the Pikku framework.
83
+ *
84
+ * @template ChannelData - Type of data associated with the channel
85
+ * @template Channel - String literal type for the channel name
86
+ * @param channel - Channel definition with connection, disconnection, and message handlers
87
+ */
88
+ export const wireChannel = <ChannelData, Channel extends string>(
89
+ channel: ChannelWiring<ChannelData, Channel> & AssertHTTPWiringParams<ChannelData, Channel>
90
+ ) => {
91
+ wireChannelCore(channel as any) // TODO
92
+ }
@@ -0,0 +1,71 @@
1
+ /**
2
+ * This file was generated by the @pikku/cli
3
+ */
4
+ /**
5
+ * This file was generated by the @pikku/cli
6
+ * CLI-specific type definitions for tree-shaking optimization
7
+ */
8
+
9
+ import { CoreCLI, wireCLI as wireCLICore, CorePikkuCLIRender, CoreCLICommandConfig } from '@pikku/core'
10
+ import type { PikkuFunctionConfig, PikkuMiddleware } from '../function/pikku-function-types.gen.js'
11
+ import type { UserSession } from '../../types/application-types.d.js'
12
+ import type { SingletonServices } from '../../types/application-types.d.js'
13
+
14
+
15
+ type Session = UserSession
16
+
17
+ /**
18
+ * Type-safe CLI renderer definition that can access your application's services.
19
+ * Use this to define custom renderers for CLI command output.
20
+ *
21
+ * @template Data - The output data type from the CLI command
22
+ * @template RequiredServices - The services required for this renderer
23
+ */
24
+ type PikkuCLIRender<Data, RequiredServices extends SingletonServices = SingletonServices> = CorePikkuCLIRender<Data, RequiredServices, Session>
25
+
26
+ /**
27
+ * CLI command configuration with project-specific types.
28
+ * Uses CoreCLICommandConfig from @pikku/core with local middleware and render types.
29
+ */
30
+ type CLICommandConfig<Func extends PikkuFunctionConfig<any, any>> = CoreCLICommandConfig<Func, PikkuMiddleware, PikkuCLIRender<any>>
31
+
32
+ /**
33
+ * Result type for CLI command configuration
34
+ */
35
+ type CLICommandResult<Func extends PikkuFunctionConfig<any, any>> = CLICommandConfig<Func>
36
+
37
+ /**
38
+ * Type definition for CLI applications with commands and global options.
39
+ *
40
+ * @template Commands - Type describing the command structure
41
+ * @template GlobalOptions - Type for global CLI options
42
+ */
43
+ type CLIWiring<Commands extends Record<string, CoreCLICommandConfig<any, PikkuMiddleware, PikkuCLIRender<any>>>, GlobalOptions> = CoreCLI<Commands, GlobalOptions, PikkuMiddleware, PikkuCLIRender<any>>
44
+
45
+ /**
46
+ * Registers a CLI application with the Pikku framework.
47
+ * Creates command-line interfaces with type-safe commands and options.
48
+ *
49
+ * @template Commands - Type describing the command structure
50
+ * @template GlobalOptions - Type for global CLI options
51
+ * @param cli - CLI definition with program name, commands, and global options
52
+ */
53
+ export const wireCLI = <Commands extends Record<string, CoreCLICommandConfig<any, PikkuMiddleware, PikkuCLIRender<any>>>, GlobalOptions>(
54
+ cli: CLIWiring<Commands, GlobalOptions>
55
+ ) => {
56
+ wireCLICore(cli as any)
57
+ }
58
+
59
+ /**
60
+ * Creates a CLI command definition with automatic option inference from the function's input type.
61
+ * This allows TypeScript to automatically derive CLI options from the function signature.
62
+ *
63
+ * @template Func - The Pikku function config type to create a CLI command for
64
+ * @param config - CLI command configuration
65
+ * @returns CLI command configuration with inferred types
66
+ */
67
+ export const pikkuCLICommand = <Func extends PikkuFunctionConfig<any, any>>(
68
+ config: CLICommandConfig<Func>
69
+ ): CLICommandResult<Func> => {
70
+ return config as any
71
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * This file was generated by the @pikku/cli
3
+ */
4
+ import { pikkuState } from '@pikku/core'
5
+ pikkuState('cli', 'meta', {})
@@ -0,0 +1,4 @@
1
+ /**
2
+ * This file was generated by the @pikku/cli
3
+ */
4
+ /* The files with an wireCLI function call */
@@ -0,0 +1,292 @@
1
+ /**
2
+ * This file was generated by the @pikku/cli
3
+ */
4
+ /**
5
+ * This file was generated by the @pikku/cli
6
+ * Core function, middleware, and permission types for all wirings
7
+ */
8
+
9
+ import { CorePikkuFunctionConfig, CorePikkuPermission, CorePikkuMiddleware, addMiddleware as addMiddlewareCore, addPermission as addPermissionCore } from '@pikku/core'
10
+ import { CorePikkuFunction, CorePikkuFunctionSessionless } from '@pikku/core/function'
11
+ import { PikkuChannel, PikkuMCP } from '@pikku/core'
12
+
13
+ import type { UserSession } from '../../types/application-types.d.js'
14
+ import type { SingletonServices } from '../../types/application-types.d.js'
15
+ import type { Services } from '../../types/application-types.d.js'
16
+ import type { TypedPikkuRPC } from '../rpc/pikku-rpc-wirings-map.internal.gen.d.js'
17
+
18
+
19
+
20
+ type Session = UserSession
21
+
22
+ /**
23
+ * Type-safe API permission definition that integrates with your application's session type.
24
+ * Use this to define authorization logic for your API endpoints.
25
+ *
26
+ * @template In - The input type that the permission check will receive
27
+ * @template RequiredServices - The services required for this permission check
28
+ */
29
+ export type PikkuPermission<In = unknown, RequiredServices extends Services = Services> = CorePikkuPermission<In, RequiredServices, Session>
30
+
31
+ /**
32
+ * Type-safe middleware definition that can access your application's services and session.
33
+ * Use this to define reusable middleware that can be applied to multiple wirings.
34
+ *
35
+ * @template RequiredServices - The services required for this middleware
36
+ */
37
+ export type PikkuMiddleware<RequiredServices extends SingletonServices = SingletonServices> = CorePikkuMiddleware<RequiredServices, Session>
38
+
39
+ /**
40
+ * Factory function for creating permissions with tree-shaking support.
41
+ * This enables the bundler to detect which services your permission actually uses.
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * const permission = pikkuPermission(({ logger }, data, session) => {
46
+ * return session?.isAdmin || false
47
+ * })
48
+ * ```
49
+ */
50
+ export const pikkuPermission = <In>(func: PikkuPermission<In>) => {
51
+ return func
52
+ }
53
+
54
+ /**
55
+ * Factory function for creating middleware with tree-shaking support.
56
+ * This enables the bundler to detect which services your middleware actually uses.
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * const middleware = pikkuMiddleware(({ logger }, interactions, next) => {
61
+ * logger.info('Middleware executed')
62
+ * await next()
63
+ * })
64
+ * ```
65
+ */
66
+ export const pikkuMiddleware = (func: PikkuMiddleware) => {
67
+ return func
68
+ }
69
+
70
+ /**
71
+ * Factory function for creating middleware factories
72
+ * Use this when your middleware needs configuration/input parameters
73
+ *
74
+ * @example
75
+ * ```typescript
76
+ * export const logMiddleware = pikkuMiddlewareFactory<LogOptions>(({
77
+ * message,
78
+ * level = 'info'
79
+ * }) => {
80
+ * return pikkuMiddleware(async ({ logger }, _interaction, next) => {
81
+ * logger[level](message)
82
+ * await next()
83
+ * })
84
+ * })
85
+ * ```
86
+ */
87
+ export const pikkuMiddlewareFactory = <In = any>(
88
+ factory: (input: In) => PikkuMiddleware
89
+ ): ((input: In) => PikkuMiddleware) => {
90
+ return factory
91
+ }
92
+
93
+ /**
94
+ * A sessionless API function that doesn't require user authentication.
95
+ * Use this for public endpoints, health checks, or operations that don't need user context.
96
+ *
97
+ * @template In - The input type
98
+ * @template Out - The output type that the function returns
99
+ * @template ChannelData - Channel data type (null = optional channel)
100
+ * @template MCPData - MCP data type (null = optional MCP)
101
+ * @template RequiredServices - Services required by this function
102
+ */
103
+ export type PikkuFunctionSessionless<
104
+ In = unknown,
105
+ Out = never,
106
+ ChannelData = null, // null means optional channel
107
+ MCPData = null, // null means optional MCP
108
+ RequiredServices extends Services = Services &
109
+ { rpc: TypedPikkuRPC } & (
110
+ [ChannelData] extends [null]
111
+ ? { channel?: PikkuChannel<unknown, Out> } // Optional channel
112
+ : { channel: PikkuChannel<ChannelData, Out> } // Required channel with any data type
113
+ ) & ([MCPData] extends [null]
114
+ ? { mcp?: PikkuMCP } // Optional MCP
115
+ : { mcp: PikkuMCP } // Required MCP
116
+ )
117
+ > = CorePikkuFunctionSessionless<In, Out, ChannelData, RequiredServices, Session>
118
+
119
+ /**
120
+ * A session-aware API function that requires user authentication.
121
+ * Use this for protected endpoints that need access to user session data.
122
+ *
123
+ * @template In - The input type
124
+ * @template Out - The output type that the function returns
125
+ * @template ChannelData - Channel data type (null = optional channel)
126
+ * @template MCPData - MCP data type (null = optional MCP)
127
+ * @template RequiredServices - Services required by this function
128
+ */
129
+ export type PikkuFunction<
130
+ In = unknown,
131
+ Out = never,
132
+ ChannelData = null, // null means optional channel
133
+ MCPData = null, // null means optional MCP
134
+ RequiredServices extends Services = Omit<Services, 'rpc'> &
135
+ { rpc: TypedPikkuRPC } & (
136
+ [ChannelData] extends [null]
137
+ ? { channel?: PikkuChannel<unknown, Out> } // Optional channel
138
+ : { channel: PikkuChannel<ChannelData, Out> } // Required channel with any data type
139
+ ) & ([MCPData] extends [null]
140
+ ? { mcp?: PikkuMCP } // Optional MCP
141
+ : { mcp: PikkuMCP } // Required MCP
142
+ )
143
+ > = CorePikkuFunction<In, Out, ChannelData, RequiredServices, Session>
144
+
145
+ /**
146
+ * Configuration object for Pikku functions with optional middleware, permissions, tags, and documentation.
147
+ * This type wraps CorePikkuFunctionConfig with the user's custom types.
148
+ *
149
+ * @template In - The input type
150
+ * @template Out - The output type
151
+ * @template PikkuFunc - The function type (can be narrowed to PikkuFunction or PikkuFunctionSessionless)
152
+ */
153
+ export type PikkuFunctionConfig<
154
+ In = unknown,
155
+ Out = unknown,
156
+ PikkuFunc extends PikkuFunction<In, Out> | PikkuFunctionSessionless<In, Out> = PikkuFunction<In, Out> | PikkuFunctionSessionless<In, Out>
157
+ > = CorePikkuFunctionConfig<PikkuFunc, PikkuPermission<In>, PikkuMiddleware>
158
+
159
+ /**
160
+ * Creates a Pikku function that can be either session-aware or sessionless.
161
+ * This is the main function wrapper for creating API endpoints.
162
+ *
163
+ * @template In - Input type for the function
164
+ * @template Out - Output type for the function
165
+ * @param func - Function definition, either direct function or configuration object
166
+ * @returns The normalized configuration object
167
+ *
168
+ * @example
169
+ * \`\`\`typescript
170
+ * const createUser = pikkuFunc<{name: string, email: string}, {id: number, message: string}>({
171
+ * func: async ({db, logger}, input) => {
172
+ * logger.info('Creating user', input.name)
173
+ * const user = await db.users.create(input)
174
+ * return {id: user.id, message: \`User \${input.name} created successfully\`}
175
+ * },
176
+ * auth: true
177
+ * })
178
+ * \`\`\`
179
+ */
180
+ export const pikkuFunc = <In, Out = unknown>(
181
+ func:
182
+ | PikkuFunction<In, Out>
183
+ | CorePikkuFunctionConfig<PikkuFunction<In, Out>, PikkuPermission<In>>
184
+ ) => {
185
+ return typeof func === 'function' ? { func } : func
186
+ }
187
+
188
+ /**
189
+ * Creates a sessionless Pikku function that doesn't require user authentication.
190
+ * Use this for public endpoints, webhooks, or background tasks.
191
+ *
192
+ * @template In - Input type for the function
193
+ * @template Out - Output type for the function
194
+ * @param func - Function definition, either direct function or configuration object
195
+ * @returns The normalized configuration object
196
+ *
197
+ * @example
198
+ * \`\`\`typescript
199
+ * const healthCheck = pikkuSessionlessFunc<void, {status: string, timestamp: string}>({
200
+ * func: async ({logger}) => {
201
+ * logger.info('Health check requested')
202
+ * return {status: 'healthy', timestamp: new Date().toISOString()}
203
+ * },
204
+ * name: 'healthCheck'
205
+ * })
206
+ * \`\`\`
207
+ */
208
+ export const pikkuSessionlessFunc = <In, Out = unknown>(
209
+ func:
210
+ | PikkuFunctionSessionless<In, Out>
211
+ | CorePikkuFunctionConfig<PikkuFunctionSessionless<In, Out>, PikkuPermission<In>, PikkuMiddleware>
212
+ ) => {
213
+ return typeof func === 'function' ? { func } : func
214
+ }
215
+
216
+ /**
217
+ * Creates a function that takes no input and returns no output.
218
+ * Useful for health checks, triggers, or cleanup operations.
219
+ *
220
+ * @param func - Function definition, either direct function or configuration object
221
+ * @returns The normalized configuration object
222
+ *
223
+ * @example
224
+ * \`\`\`typescript
225
+ * const cleanupTempFiles = pikkuVoidFunc(async ({fileSystem, logger}) => {
226
+ * logger.info('Starting cleanup of temporary files')
227
+ * await fileSystem.deleteDirectory('/tmp/uploads')
228
+ * logger.info('Cleanup completed')
229
+ * })
230
+ * \`\`\`
231
+ */
232
+ export const pikkuVoidFunc = (
233
+ func:
234
+ | PikkuFunctionSessionless<void, void>
235
+ | CorePikkuFunctionConfig<PikkuFunctionSessionless<void, void>, PikkuPermission<void>>
236
+ ) => {
237
+ return typeof func === 'function' ? { func } : func
238
+ }
239
+
240
+ /**
241
+ * Adds global middleware for a specific tag.
242
+ *
243
+ * This function allows you to register middleware that will be applied to
244
+ * any wiring (HTTP, Channel, Queue, Scheduler, MCP) that includes the matching tag.
245
+ *
246
+ * @param tag - The tag that the middleware should apply to.
247
+ * @param middleware - The middleware array to apply for the specified tag.
248
+ *
249
+ * @throws Error if middleware for the tag already exists.
250
+ *
251
+ * @example
252
+ * ```typescript
253
+ * // Add admin middleware for admin endpoints
254
+ * addMiddleware('admin', [adminMiddleware])
255
+ *
256
+ * // Add authentication middleware for auth endpoints
257
+ * addMiddleware('auth', [authMiddleware])
258
+ *
259
+ * // Add logging middleware for all API endpoints
260
+ * addMiddleware('api', [loggingMiddleware])
261
+ * ```
262
+ */
263
+ export const addMiddleware = (tag: string, middleware: PikkuMiddleware[]) => {
264
+ addMiddlewareCore(tag, middleware as any)
265
+ }
266
+
267
+ /**
268
+ * Adds global permissions for a specific tag.
269
+ *
270
+ * This function allows you to register permissions that will be applied to
271
+ * any wiring (HTTP, Channel, Queue, Scheduler, MCP) that includes the matching tag.
272
+ *
273
+ * @param tag - The tag that the permissions should apply to.
274
+ * @param permissions - The permissions array to apply for the specified tag.
275
+ *
276
+ * @throws Error if permissions for the tag already exist.
277
+ *
278
+ * @example
279
+ * ```typescript
280
+ * // Add admin permissions for admin endpoints
281
+ * addPermission('admin', [adminPermission])
282
+ *
283
+ * // Add authentication permissions for auth endpoints
284
+ * addPermission('auth', [authPermission])
285
+ *
286
+ * // Add read permissions for all API endpoints
287
+ * addPermission('api', [readPermission])
288
+ * ```
289
+ */
290
+ export const addPermission = <In = unknown>(tag: string, permissions: PikkuPermission<In>[]) => {
291
+ addPermissionCore(tag, permissions as any)
292
+ }