@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,303 @@
1
+ /**
2
+ * Generates core function, middleware, and permission type definitions
3
+ */
4
+ export const serializeFunctionTypes = (
5
+ userSessionTypeImport: string,
6
+ userSessionTypeName: string,
7
+ singletonServicesTypeImport: string,
8
+ singletonServicesTypeName: string,
9
+ sessionServicesTypeImport: string,
10
+ sessionServicesTypeName: string,
11
+ rpcMapTypeImport: string
12
+ ) => {
13
+ return `/**
14
+ * This file was generated by the @pikku/cli
15
+ * Core function, middleware, and permission types for all wirings
16
+ */
17
+
18
+ import { CorePikkuFunctionConfig, CorePikkuPermission, CorePikkuMiddleware, addMiddleware as addMiddlewareCore, addPermission as addPermissionCore } from '@pikku/core'
19
+ import { CorePikkuFunction, CorePikkuFunctionSessionless } from '@pikku/core/function'
20
+ import { PikkuChannel, PikkuMCP } from '@pikku/core'
21
+
22
+ ${userSessionTypeImport}
23
+ ${singletonServicesTypeImport}
24
+ ${sessionServicesTypeImport}
25
+ ${rpcMapTypeImport}
26
+
27
+ ${singletonServicesTypeName !== 'SingletonServices' ? `type SingletonServices = ${singletonServicesTypeName}` : ''}
28
+ ${sessionServicesTypeName !== 'Services' ? `type Services = ${sessionServicesTypeName}` : ''}
29
+ ${userSessionTypeName !== 'Session' ? `type Session = ${userSessionTypeName}` : ''}
30
+
31
+ /**
32
+ * Type-safe API permission definition that integrates with your application's session type.
33
+ * Use this to define authorization logic for your API endpoints.
34
+ *
35
+ * @template In - The input type that the permission check will receive
36
+ * @template RequiredServices - The services required for this permission check
37
+ */
38
+ export type PikkuPermission<In = unknown, RequiredServices extends Services = Services> = CorePikkuPermission<In, RequiredServices, Session>
39
+
40
+ /**
41
+ * Type-safe middleware definition that can access your application's services and session.
42
+ * Use this to define reusable middleware that can be applied to multiple wirings.
43
+ *
44
+ * @template RequiredServices - The services required for this middleware
45
+ */
46
+ export type PikkuMiddleware<RequiredServices extends SingletonServices = SingletonServices> = CorePikkuMiddleware<RequiredServices, Session>
47
+
48
+ /**
49
+ * Factory function for creating permissions with tree-shaking support.
50
+ * This enables the bundler to detect which services your permission actually uses.
51
+ *
52
+ * @example
53
+ * \`\`\`typescript
54
+ * const permission = pikkuPermission(({ logger }, data, session) => {
55
+ * return session?.isAdmin || false
56
+ * })
57
+ * \`\`\`
58
+ */
59
+ export const pikkuPermission = <In>(func: PikkuPermission<In>) => {
60
+ return func
61
+ }
62
+
63
+ /**
64
+ * Factory function for creating middleware with tree-shaking support.
65
+ * This enables the bundler to detect which services your middleware actually uses.
66
+ *
67
+ * @example
68
+ * \`\`\`typescript
69
+ * const middleware = pikkuMiddleware(({ logger }, interactions, next) => {
70
+ * logger.info('Middleware executed')
71
+ * await next()
72
+ * })
73
+ * \`\`\`
74
+ */
75
+ export const pikkuMiddleware = (func: PikkuMiddleware) => {
76
+ return func
77
+ }
78
+
79
+ /**
80
+ * Factory function for creating middleware factories
81
+ * Use this when your middleware needs configuration/input parameters
82
+ *
83
+ * @example
84
+ * \`\`\`typescript
85
+ * export const logMiddleware = pikkuMiddlewareFactory<LogOptions>(({
86
+ * message,
87
+ * level = 'info'
88
+ * }) => {
89
+ * return pikkuMiddleware(async ({ logger }, _interaction, next) => {
90
+ * logger[level](message)
91
+ * await next()
92
+ * })
93
+ * })
94
+ * \`\`\`
95
+ */
96
+ export const pikkuMiddlewareFactory = <In = any>(
97
+ factory: (input: In) => PikkuMiddleware
98
+ ): ((input: In) => PikkuMiddleware) => {
99
+ return factory
100
+ }
101
+
102
+ /**
103
+ * A sessionless API function that doesn't require user authentication.
104
+ * Use this for public endpoints, health checks, or operations that don't need user context.
105
+ *
106
+ * @template In - The input type
107
+ * @template Out - The output type that the function returns
108
+ * @template ChannelData - Channel data type (null = optional channel)
109
+ * @template MCPData - MCP data type (null = optional MCP)
110
+ * @template RequiredServices - Services required by this function
111
+ */
112
+ export type PikkuFunctionSessionless<
113
+ In = unknown,
114
+ Out = never,
115
+ ChannelData = null, // null means optional channel
116
+ MCPData = null, // null means optional MCP
117
+ RequiredServices extends Services = Services &
118
+ { rpc: TypedPikkuRPC } & (
119
+ [ChannelData] extends [null]
120
+ ? { channel?: PikkuChannel<unknown, Out> } // Optional channel
121
+ : { channel: PikkuChannel<ChannelData, Out> } // Required channel with any data type
122
+ ) & ([MCPData] extends [null]
123
+ ? { mcp?: PikkuMCP } // Optional MCP
124
+ : { mcp: PikkuMCP } // Required MCP
125
+ )
126
+ > = CorePikkuFunctionSessionless<In, Out, ChannelData, RequiredServices, Session>
127
+
128
+ /**
129
+ * A session-aware API function that requires user authentication.
130
+ * Use this for protected endpoints that need access to user session data.
131
+ *
132
+ * @template In - The input type
133
+ * @template Out - The output type that the function returns
134
+ * @template ChannelData - Channel data type (null = optional channel)
135
+ * @template MCPData - MCP data type (null = optional MCP)
136
+ * @template RequiredServices - Services required by this function
137
+ */
138
+ export type PikkuFunction<
139
+ In = unknown,
140
+ Out = never,
141
+ ChannelData = null, // null means optional channel
142
+ MCPData = null, // null means optional MCP
143
+ RequiredServices extends Services = Omit<Services, 'rpc'> &
144
+ { rpc: TypedPikkuRPC } & (
145
+ [ChannelData] extends [null]
146
+ ? { channel?: PikkuChannel<unknown, Out> } // Optional channel
147
+ : { channel: PikkuChannel<ChannelData, Out> } // Required channel with any data type
148
+ ) & ([MCPData] extends [null]
149
+ ? { mcp?: PikkuMCP } // Optional MCP
150
+ : { mcp: PikkuMCP } // Required MCP
151
+ )
152
+ > = CorePikkuFunction<In, Out, ChannelData, RequiredServices, Session>
153
+
154
+ /**
155
+ * Configuration object for Pikku functions with optional middleware, permissions, tags, and documentation.
156
+ * This type wraps CorePikkuFunctionConfig with the user's custom types.
157
+ *
158
+ * @template In - The input type
159
+ * @template Out - The output type
160
+ * @template PikkuFunc - The function type (can be narrowed to PikkuFunction or PikkuFunctionSessionless)
161
+ */
162
+ export type PikkuFunctionConfig<
163
+ In = unknown,
164
+ Out = unknown,
165
+ PikkuFunc extends PikkuFunction<In, Out> | PikkuFunctionSessionless<In, Out> = PikkuFunction<In, Out> | PikkuFunctionSessionless<In, Out>
166
+ > = CorePikkuFunctionConfig<PikkuFunc, PikkuPermission<In>, PikkuMiddleware>
167
+
168
+ /**
169
+ * Creates a Pikku function that can be either session-aware or sessionless.
170
+ * This is the main function wrapper for creating API endpoints.
171
+ *
172
+ * @template In - Input type for the function
173
+ * @template Out - Output type for the function
174
+ * @param func - Function definition, either direct function or configuration object
175
+ * @returns The normalized configuration object
176
+ *
177
+ * @example
178
+ * \\\`\\\`\\\`typescript
179
+ * const createUser = pikkuFunc<{name: string, email: string}, {id: number, message: string}>({
180
+ * func: async ({db, logger}, input) => {
181
+ * logger.info('Creating user', input.name)
182
+ * const user = await db.users.create(input)
183
+ * return {id: user.id, message: \\\`User \\\${input.name} created successfully\\\`}
184
+ * },
185
+ * auth: true
186
+ * })
187
+ * \\\`\\\`\\\`
188
+ */
189
+ export const pikkuFunc = <In, Out = unknown>(
190
+ func:
191
+ | PikkuFunction<In, Out>
192
+ | CorePikkuFunctionConfig<PikkuFunction<In, Out>, PikkuPermission<In>>
193
+ ) => {
194
+ return typeof func === 'function' ? { func } : func
195
+ }
196
+
197
+ /**
198
+ * Creates a sessionless Pikku function that doesn't require user authentication.
199
+ * Use this for public endpoints, webhooks, or background tasks.
200
+ *
201
+ * @template In - Input type for the function
202
+ * @template Out - Output type for the function
203
+ * @param func - Function definition, either direct function or configuration object
204
+ * @returns The normalized configuration object
205
+ *
206
+ * @example
207
+ * \\\`\\\`\\\`typescript
208
+ * const healthCheck = pikkuSessionlessFunc<void, {status: string, timestamp: string}>({
209
+ * func: async ({logger}) => {
210
+ * logger.info('Health check requested')
211
+ * return {status: 'healthy', timestamp: new Date().toISOString()}
212
+ * },
213
+ * name: 'healthCheck'
214
+ * })
215
+ * \\\`\\\`\\\`
216
+ */
217
+ export const pikkuSessionlessFunc = <In, Out = unknown>(
218
+ func:
219
+ | PikkuFunctionSessionless<In, Out>
220
+ | CorePikkuFunctionConfig<PikkuFunctionSessionless<In, Out>, PikkuPermission<In>, PikkuMiddleware>
221
+ ) => {
222
+ return typeof func === 'function' ? { func } : func
223
+ }
224
+
225
+ /**
226
+ * Creates a function that takes no input and returns no output.
227
+ * Useful for health checks, triggers, or cleanup operations.
228
+ *
229
+ * @param func - Function definition, either direct function or configuration object
230
+ * @returns The normalized configuration object
231
+ *
232
+ * @example
233
+ * \\\`\\\`\\\`typescript
234
+ * const cleanupTempFiles = pikkuVoidFunc(async ({fileSystem, logger}) => {
235
+ * logger.info('Starting cleanup of temporary files')
236
+ * await fileSystem.deleteDirectory('/tmp/uploads')
237
+ * logger.info('Cleanup completed')
238
+ * })
239
+ * \\\`\\\`\\\`
240
+ */
241
+ export const pikkuVoidFunc = (
242
+ func:
243
+ | PikkuFunctionSessionless<void, void>
244
+ | CorePikkuFunctionConfig<PikkuFunctionSessionless<void, void>, PikkuPermission<void>>
245
+ ) => {
246
+ return typeof func === 'function' ? { func } : func
247
+ }
248
+
249
+ /**
250
+ * Adds global middleware for a specific tag.
251
+ *
252
+ * This function allows you to register middleware that will be applied to
253
+ * any wiring (HTTP, Channel, Queue, Scheduler, MCP) that includes the matching tag.
254
+ *
255
+ * @param tag - The tag that the middleware should apply to.
256
+ * @param middleware - The middleware array to apply for the specified tag.
257
+ *
258
+ * @throws Error if middleware for the tag already exists.
259
+ *
260
+ * @example
261
+ * \`\`\`typescript
262
+ * // Add admin middleware for admin endpoints
263
+ * addMiddleware('admin', [adminMiddleware])
264
+ *
265
+ * // Add authentication middleware for auth endpoints
266
+ * addMiddleware('auth', [authMiddleware])
267
+ *
268
+ * // Add logging middleware for all API endpoints
269
+ * addMiddleware('api', [loggingMiddleware])
270
+ * \`\`\`
271
+ */
272
+ export const addMiddleware = (tag: string, middleware: PikkuMiddleware[]) => {
273
+ addMiddlewareCore(tag, middleware as any)
274
+ }
275
+
276
+ /**
277
+ * Adds global permissions for a specific tag.
278
+ *
279
+ * This function allows you to register permissions that will be applied to
280
+ * any wiring (HTTP, Channel, Queue, Scheduler, MCP) that includes the matching tag.
281
+ *
282
+ * @param tag - The tag that the permissions should apply to.
283
+ * @param permissions - The permissions array to apply for the specified tag.
284
+ *
285
+ * @throws Error if permissions for the tag already exist.
286
+ *
287
+ * @example
288
+ * \`\`\`typescript
289
+ * // Add admin permissions for admin endpoints
290
+ * addPermission('admin', [adminPermission])
291
+ *
292
+ * // Add authentication permissions for auth endpoints
293
+ * addPermission('auth', [authPermission])
294
+ *
295
+ * // Add read permissions for all API endpoints
296
+ * addPermission('api', [readPermission])
297
+ * \`\`\`
298
+ */
299
+ export const addPermission = <In = unknown>(tag: string, permissions: PikkuPermission<In>[]) => {
300
+ addPermissionCore(tag, permissions as any)
301
+ }
302
+ `
303
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Generates the main pikku-types.gen.ts file as a re-export hub
3
+ */
4
+ export const serializePikkuTypesHub = (
5
+ functionTypesImportPath: string,
6
+ httpTypesImportPath: string,
7
+ channelTypesImportPath: string,
8
+ schedulerTypesImportPath: string,
9
+ queueTypesImportPath: string,
10
+ mcpTypesImportPath: string,
11
+ cliTypesImportPath: string
12
+ ) => {
13
+ return `/**
14
+ * This file was generated by the @pikku/cli
15
+ * Main type export hub - re-exports all wiring-specific types
16
+ */
17
+
18
+ // Core function, middleware, and permission types
19
+ export * from '${functionTypesImportPath}'
20
+
21
+ // HTTP wiring types
22
+ export * from '${httpTypesImportPath}'
23
+
24
+ // Channel wiring types
25
+ export * from '${channelTypesImportPath}'
26
+
27
+ // Scheduler wiring types
28
+ export * from '${schedulerTypesImportPath}'
29
+
30
+ // Queue wiring types
31
+ export * from '${queueTypesImportPath}'
32
+
33
+ // MCP wiring types
34
+ export * from '${mcpTypesImportPath}'
35
+
36
+ // CLI wiring types
37
+ export * from '${cliTypesImportPath}'
38
+ `
39
+ }
@@ -1,5 +1,6 @@
1
1
  import { FunctionsMeta, HTTPWiringsMeta, pikkuState } from '@pikku/core'
2
2
  import _convertSchema from '@openapi-contrib/json-schema-to-openapi-schema'
3
+ import { CLILogger } from '../../../services/cli-logger.service.js'
3
4
  const convertSchema =
4
5
  'default' in _convertSchema ? (_convertSchema.default as any) : _convertSchema
5
6
 
@@ -108,6 +109,7 @@ const convertSchemasToBodyPayloads = async (
108
109
  }
109
110
 
110
111
  export async function generateOpenAPISpec(
112
+ logger: CLILogger,
111
113
  functionsMeta: FunctionsMeta,
112
114
  httpMeta: HTTPWiringsMeta,
113
115
  schemas: Record<string, any>,
@@ -121,7 +123,7 @@ export async function generateOpenAPISpec(
121
123
  meta
122
124
  const functionMeta = functionsMeta[pikkuFuncName]
123
125
  if (!functionMeta) {
124
- console.error(
126
+ logger.error(
125
127
  `• No function metadata found for '${pikkuFuncName}' in route '${route}'.`
126
128
  )
127
129
  continue
@@ -0,0 +1,32 @@
1
+ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js'
2
+ import { writeFileInDir } from '../../../utils/file-writer.js'
3
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js'
4
+ import { serializeTypedHTTPWiringsMap } from './serialize-typed-http-map.js'
5
+
6
+ export const pikkuHTTPMap: any = pikkuSessionlessFunc<void, void>({
7
+ func: async ({ logger, config, getInspectorState }) => {
8
+ const { http, functions } = await getInspectorState()
9
+ const { httpMapDeclarationFile, packageMappings } = config
10
+
11
+ const content = serializeTypedHTTPWiringsMap(
12
+ httpMapDeclarationFile,
13
+ packageMappings,
14
+ functions.typesMap,
15
+ functions.meta,
16
+ http.meta,
17
+ http.metaInputTypes
18
+ )
19
+ await writeFileInDir(logger, httpMapDeclarationFile, content)
20
+ },
21
+ middleware: [
22
+ logCommandInfoAndTime({
23
+ commandStart: 'Creating HTTP map',
24
+ commandEnd: 'Created HTTP map',
25
+ skipCondition: async ({ getInspectorState }) => {
26
+ const { http } = await getInspectorState()
27
+ return http.files.size === 0
28
+ },
29
+ skipMessage: 'none found',
30
+ }),
31
+ ],
32
+ })
@@ -0,0 +1,41 @@
1
+ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js'
2
+ import { serializeFileImports } from '../../../utils/file-imports-serializer.js'
3
+ import { writeFileInDir } from '../../../utils/file-writer.js'
4
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js'
5
+
6
+ export const pikkuHTTP: any = pikkuSessionlessFunc<void, boolean | undefined>({
7
+ func: async ({ logger, config, getInspectorState }) => {
8
+ const visitState = await getInspectorState()
9
+ const { httpWiringsFile, httpWiringMetaFile, packageMappings } = config
10
+ const { http } = visitState
11
+
12
+ await writeFileInDir(
13
+ logger,
14
+ httpWiringsFile,
15
+ serializeFileImports(
16
+ 'wireHTTP',
17
+ httpWiringsFile,
18
+ http.files,
19
+ packageMappings
20
+ )
21
+ )
22
+ await writeFileInDir(
23
+ logger,
24
+ httpWiringMetaFile,
25
+ `import { pikkuState } from '@pikku/core'\npikkuState('http', 'meta', ${JSON.stringify(http.meta, null, 2)})`
26
+ )
27
+
28
+ return true
29
+ },
30
+ middleware: [
31
+ logCommandInfoAndTime({
32
+ commandStart: 'Finding HTTP routes',
33
+ commandEnd: 'Found HTTP routes',
34
+ skipCondition: async ({ getInspectorState }) => {
35
+ const visitState = await getInspectorState()
36
+ return visitState.http.files.size === 0
37
+ },
38
+ skipMessage: 'none found',
39
+ }),
40
+ ],
41
+ })
@@ -0,0 +1,27 @@
1
+ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js'
2
+ import { writeFileInDir } from '../../../utils/file-writer.js'
3
+ import { getFileImportRelativePath } from '../../../utils/file-import-path.js'
4
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js'
5
+ import { serializeHTTPTypes } from './serialize-http-types.js'
6
+
7
+ export const pikkuHTTPTypes: any = pikkuSessionlessFunc<void, void>({
8
+ func: async ({ logger, config }) => {
9
+ const { httpTypesFile, functionTypesFile, packageMappings } = config
10
+
11
+ const functionTypesImportPath = getFileImportRelativePath(
12
+ httpTypesFile,
13
+ functionTypesFile,
14
+ packageMappings
15
+ )
16
+ const content = serializeHTTPTypes(functionTypesImportPath)
17
+ await writeFileInDir(logger, httpTypesFile, content)
18
+ },
19
+ middleware: [
20
+ logCommandInfoAndTime({
21
+ commandStart: 'Creating HTTP types',
22
+ commandEnd: 'Created HTTP types',
23
+ skipCondition: false,
24
+ skipMessage: '',
25
+ }),
26
+ ],
27
+ })
@@ -0,0 +1,57 @@
1
+ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js'
2
+ import { writeFileInDir } from '../../../utils/file-writer.js'
3
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js'
4
+ import { generateSchemas } from '../../../utils/schema-generator.js'
5
+ import { generateOpenAPISpec } from './openapi-spec-generator.js'
6
+ import { stringify } from 'yaml'
7
+
8
+ export const pikkuOpenAPI: any = pikkuSessionlessFunc<void, void>({
9
+ func: async ({ logger, config, getInspectorState }) => {
10
+ const { http, functions } = await getInspectorState()
11
+ const { tsconfig, openAPI, schemasFromTypes } = config
12
+
13
+ if (!openAPI?.outputFile) {
14
+ throw new Error('openAPI is required')
15
+ }
16
+
17
+ const schemas = await generateSchemas(
18
+ logger,
19
+ tsconfig,
20
+ functions.typesMap,
21
+ functions.meta,
22
+ http.meta,
23
+ schemasFromTypes
24
+ )
25
+ const openAPISpec = await generateOpenAPISpec(
26
+ logger,
27
+ functions.meta,
28
+ http.meta,
29
+ schemas,
30
+ openAPI.additionalInfo
31
+ )
32
+
33
+ if (openAPI.outputFile.endsWith('.json')) {
34
+ await writeFileInDir(
35
+ logger,
36
+ openAPI.outputFile,
37
+ JSON.stringify(openAPISpec, null, 2),
38
+ { ignoreModifyComment: true }
39
+ )
40
+ } else if (
41
+ openAPI.outputFile.endsWith('.yaml') ||
42
+ openAPI.outputFile.endsWith('.yml')
43
+ ) {
44
+ await writeFileInDir(logger, openAPI.outputFile, stringify(openAPISpec), {
45
+ ignoreModifyComment: true,
46
+ })
47
+ }
48
+ },
49
+ middleware: [
50
+ logCommandInfoAndTime({
51
+ commandStart: 'Creating OpenAPI spec',
52
+ commandEnd: 'Created OpenAPI spec',
53
+ skipCondition: ({ config }) => config.openAPI?.outputFile === undefined,
54
+ skipMessage: 'openAPI outfile is not defined',
55
+ }),
56
+ ],
57
+ })
@@ -0,0 +1,40 @@
1
+ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js'
2
+ import { serializeFileImports } from '../../../utils/file-imports-serializer.js'
3
+ import { writeFileInDir } from '../../../utils/file-writer.js'
4
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js'
5
+
6
+ export const pikkuHTTP: any = pikkuSessionlessFunc<void, boolean>({
7
+ func: async ({ logger, config, getInspectorState }) => {
8
+ const visitState = await getInspectorState()
9
+ const { httpWiringsFile, httpWiringMetaFile, packageMappings } = config
10
+ const { http } = visitState
11
+
12
+ await writeFileInDir(
13
+ logger,
14
+ httpWiringsFile,
15
+ serializeFileImports(
16
+ 'wireHTTP',
17
+ httpWiringsFile,
18
+ http.files,
19
+ packageMappings
20
+ )
21
+ )
22
+ await writeFileInDir(
23
+ logger,
24
+ httpWiringMetaFile,
25
+ `import { pikkuState } from '@pikku/core'\npikkuState('http', 'meta', ${JSON.stringify(http.meta, null, 2)})`
26
+ )
27
+ return true
28
+ },
29
+ middleware: [
30
+ logCommandInfoAndTime({
31
+ commandStart: 'Finding HTTP routes',
32
+ commandEnd: 'Found HTTP routes',
33
+ skipCondition: async ({ getInspectorState }) => {
34
+ const visitState = await getInspectorState()
35
+ return visitState.http.files.size === 0
36
+ },
37
+ skipMessage: 'none found',
38
+ }),
39
+ ],
40
+ })
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Generates type definitions for HTTP wirings
3
+ */
4
+ export const serializeHTTPTypes = (functionTypesImportPath: string) => {
5
+ return `/**
6
+ * This file was generated by the @pikku/cli
7
+ * HTTP-specific type definitions for tree-shaking optimization
8
+ */
9
+
10
+ import { AssertHTTPWiringParams, wireHTTP as wireHTTPCore, addHTTPMiddleware as addHTTPMiddlewareCore } from '@pikku/core/http'
11
+ import type { PikkuFunction, PikkuFunctionSessionless, PikkuPermission, PikkuMiddleware } from '${functionTypesImportPath}'
12
+ import type { CoreHTTPFunctionWiring } from '@pikku/core/http'
13
+
14
+ /**
15
+ * Type definition for HTTP API wirings with type-safe path parameters.
16
+ * Supports both authenticated and unauthenticated functions.
17
+ *
18
+ * @template In - Input type for the HTTP wiring
19
+ * @template Out - Output type for the HTTP wiring
20
+ * @template Route - String literal type for the HTTP path (e.g., "/users/:id")
21
+ */
22
+ type HTTPWiring<In, Out, Route extends string> = CoreHTTPFunctionWiring<In, Out, Route, PikkuFunction<In, Out>, PikkuFunctionSessionless<In, Out>, PikkuPermission<In>, PikkuMiddleware>
23
+
24
+ /**
25
+ * Registers an HTTP wiring with the Pikku framework.
26
+ *
27
+ * @template In - Input type for the HTTP wiring
28
+ * @template Out - Output type for the HTTP wiring
29
+ * @template Route - String literal type for the HTTP path (e.g., "/users/:id")
30
+ * @param httpWiring - HTTP wiring definition with handler, method, and optional middleware
31
+ */
32
+ export const wireHTTP = <In, Out, Route extends string>(
33
+ httpWiring: HTTPWiring<In, Out, Route> & AssertHTTPWiringParams<In, Route>
34
+ ) => {
35
+ wireHTTPCore(httpWiring as any)
36
+ }
37
+
38
+ /**
39
+ * Registers HTTP middleware either globally or for a specific route pattern.
40
+ *
41
+ * When a string route pattern is provided along with middleware, the middleware
42
+ * is applied only to that route. Otherwise, if an array is provided, it is treated
43
+ * as global middleware (applied to all routes).
44
+ *
45
+ * @param routeOrMiddleware - Either a global middleware array or a route pattern string
46
+ * @param middleware - The middleware array to apply when a route pattern is specified
47
+ *
48
+ * @example
49
+ * \`\`\`typescript
50
+ * // Add global HTTP middleware
51
+ * addHTTPMiddleware([authMiddleware, loggingMiddleware])
52
+ *
53
+ * // Add route-specific middleware
54
+ * addHTTPMiddleware('/api/admin/*', [adminAuthMiddleware])
55
+ * \`\`\`
56
+ */
57
+ export const addHTTPMiddleware = (
58
+ routeOrMiddleware: PikkuMiddleware[] | string,
59
+ middleware?: PikkuMiddleware[]
60
+ ) => {
61
+ addHTTPMiddlewareCore(routeOrMiddleware as any, middleware as any)
62
+ }
63
+ `
64
+ }
@@ -1,8 +1,8 @@
1
1
  import { HTTPWiringsMeta } from '@pikku/core/http'
2
- import { serializeImportMap } from '../../serialize-import-map.js'
2
+ import { serializeImportMap } from '../../../utils/serialize-import-map.js'
3
3
  import { MetaInputTypes, TypesMap } from '@pikku/inspector'
4
4
  import { FunctionsMeta } from '@pikku/core'
5
- import { generateCustomTypes } from '../../utils.js'
5
+ import { generateCustomTypes } from '../../../utils/custom-types-generator.js'
6
6
 
7
7
  export const serializeTypedHTTPWiringsMap = (
8
8
  relativeToPath: string,
@@ -0,0 +1,38 @@
1
+ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js'
2
+ import { writeFileInDir } from '../../../utils/file-writer.js'
3
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js'
4
+ import { serializeMCPJson } from './serialize-mcp-json.js'
5
+
6
+ export const pikkuMCPJSON: any = pikkuSessionlessFunc<void, void>({
7
+ func: async ({ logger, config, getInspectorState }) => {
8
+ const { mcpEndpoints, functions } = await getInspectorState()
9
+ const { mcpJsonFile, schemaDirectory } = config
10
+
11
+ // Generate MCP JSON file
12
+ if (mcpJsonFile) {
13
+ const mcpJson = await serializeMCPJson(
14
+ logger,
15
+ schemaDirectory,
16
+ functions.meta,
17
+ functions.typesMap,
18
+ mcpEndpoints.resourcesMeta,
19
+ mcpEndpoints.toolsMeta,
20
+ mcpEndpoints.promptsMeta
21
+ )
22
+ await writeFileInDir(logger, mcpJsonFile, mcpJson, {
23
+ ignoreModifyComment: true,
24
+ })
25
+ }
26
+ },
27
+ middleware: [
28
+ logCommandInfoAndTime({
29
+ commandStart: 'Generating MCP JSON',
30
+ commandEnd: 'Generated MCP JSON',
31
+ skipCondition: async ({ getInspectorState, config }) => {
32
+ const { mcpEndpoints } = await getInspectorState()
33
+ return mcpEndpoints.files.size === 0 || !config.mcpJsonFile
34
+ },
35
+ skipMessage: 'none found or mcpJsonFile not set',
36
+ }),
37
+ ],
38
+ })