@pikku/cli 0.9.15 → 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 (443) 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 +9 -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/services/cli-logger-forwarder.service.d.ts +26 -0
  198. package/dist/src/services/cli-logger-forwarder.service.js +55 -0
  199. package/dist/src/services/cli-logger.service.d.ts +19 -0
  200. package/dist/src/services/cli-logger.service.js +66 -0
  201. package/dist/src/services.d.ts +15 -0
  202. package/dist/src/services.js +64 -0
  203. package/dist/src/utils/check-required-types.d.ts +10 -0
  204. package/dist/src/utils/check-required-types.js +31 -0
  205. package/dist/src/utils/custom-types-generator.d.ts +2 -0
  206. package/dist/src/utils/custom-types-generator.js +37 -0
  207. package/dist/src/utils/file-import-path.d.ts +1 -0
  208. package/dist/src/utils/file-import-path.js +43 -0
  209. package/dist/src/utils/file-imports-serializer.d.ts +1 -0
  210. package/dist/src/utils/file-imports-serializer.js +13 -0
  211. package/dist/src/utils/file-writer.d.ts +6 -0
  212. package/dist/src/utils/file-writer.js +40 -0
  213. package/dist/src/utils/generate-bootstrap-file.d.ts +3 -0
  214. package/dist/src/utils/generate-bootstrap-file.js +21 -0
  215. package/dist/src/utils/pikku-cli-config.d.ts +5 -0
  216. package/dist/src/utils/pikku-cli-config.js +243 -0
  217. package/dist/src/utils/pikku-files-and-methods.d.ts +21 -0
  218. package/dist/src/utils/pikku-files-and-methods.js +70 -0
  219. package/dist/src/{schema-generator.d.ts → utils/schema-generator.d.ts} +1 -1
  220. package/dist/src/{schema-generator.js → utils/schema-generator.js} +1 -1
  221. package/dist/src/{serialize-import-map.js → utils/serialize-import-map.js} +1 -1
  222. package/dist/tsconfig.tsbuildinfo +1 -1
  223. package/package.json +6 -6
  224. package/pikku.config.json +24 -0
  225. package/src/cli.wiring.ts +75 -0
  226. package/src/functions/commands/all.ts +141 -0
  227. package/src/functions/commands/watch.ts +58 -0
  228. package/src/functions/runtimes/nextjs/pikku-command-nextjs.ts +111 -0
  229. package/src/functions/wirings/channels/pikku-channels.ts +40 -0
  230. package/src/functions/wirings/channels/pikku-command-channel-types.ts +27 -0
  231. package/src/functions/wirings/channels/pikku-command-channels-map.ts +31 -0
  232. package/src/functions/wirings/channels/pikku-command-channels.ts +45 -0
  233. package/src/functions/wirings/channels/pikku-command-websocket-typed.ts +33 -0
  234. package/src/functions/wirings/channels/serialize-channel-types.ts +95 -0
  235. package/src/{wirings → functions/wirings}/channels/serialize-typed-channel-map.ts +2 -2
  236. package/src/functions/wirings/cli/pikku-command-cli-entry.ts +173 -0
  237. package/src/functions/wirings/cli/pikku-command-cli-types.ts +50 -0
  238. package/src/functions/wirings/cli/pikku-command-cli.ts +41 -0
  239. package/src/functions/wirings/cli/serialize-channel-cli-client.ts +72 -0
  240. package/src/functions/wirings/cli/serialize-channel-cli.ts +123 -0
  241. package/src/functions/wirings/cli/serialize-cli-types.ts +80 -0
  242. package/src/functions/wirings/cli/serialize-local-cli-bootstrap.ts +75 -0
  243. package/src/functions/wirings/fetch/index.ts +32 -0
  244. package/src/functions/wirings/functions/pikku-command-function-types-split.ts +51 -0
  245. package/src/functions/wirings/functions/pikku-command-function-types.ts +45 -0
  246. package/src/functions/wirings/functions/pikku-command-functions.ts +61 -0
  247. package/src/{wirings → functions/wirings}/functions/pikku-command-services.ts +41 -44
  248. package/src/functions/wirings/functions/pikku-function-types.ts +45 -0
  249. package/src/functions/wirings/functions/schemas.ts +47 -0
  250. package/src/{wirings → functions/wirings}/functions/serialize-function-imports.ts +4 -30
  251. package/src/functions/wirings/functions/serialize-function-types.ts +303 -0
  252. package/src/functions/wirings/functions/serialize-pikku-types-hub.ts +39 -0
  253. package/src/{wirings → functions/wirings}/http/openapi-spec-generator.ts +3 -1
  254. package/src/functions/wirings/http/pikku-command-http-map.ts +32 -0
  255. package/src/functions/wirings/http/pikku-command-http-routes.ts +41 -0
  256. package/src/functions/wirings/http/pikku-command-http-types.ts +27 -0
  257. package/src/functions/wirings/http/pikku-command-openapi.ts +57 -0
  258. package/src/functions/wirings/http/pikku-http-routes.ts +40 -0
  259. package/src/functions/wirings/http/serialize-http-types.ts +64 -0
  260. package/src/{wirings → functions/wirings}/http/serialize-typed-http-map.ts +2 -2
  261. package/src/functions/wirings/mcp/pikku-command-mcp-json.ts +38 -0
  262. package/src/functions/wirings/mcp/pikku-command-mcp-types.ts +27 -0
  263. package/src/{wirings → functions/wirings}/mcp/pikku-command-mcp.ts +55 -46
  264. package/src/{wirings → functions/wirings}/mcp/serialize-mcp-json.ts +1 -1
  265. package/src/functions/wirings/mcp/serialize-mcp-types.ts +141 -0
  266. package/src/functions/wirings/middleware/pikku-command-middleware.ts +65 -0
  267. package/src/functions/wirings/middleware/serialize-middleware-groups-meta.ts +61 -0
  268. package/src/functions/wirings/middleware/serialize-middleware-imports.ts +78 -0
  269. package/src/functions/wirings/queue/pikku-command-queue-map.ts +31 -0
  270. package/src/functions/wirings/queue/pikku-command-queue-service.ts +33 -0
  271. package/src/functions/wirings/queue/pikku-command-queue-types.ts +27 -0
  272. package/src/functions/wirings/queue/pikku-command-queue.ts +46 -0
  273. package/src/functions/wirings/queue/pikku-queue-map.ts +31 -0
  274. package/src/functions/wirings/queue/pikku-queue.ts +44 -0
  275. package/src/{wirings → functions/wirings}/queue/serialize-queue-map.ts +2 -2
  276. package/src/functions/wirings/queue/serialize-queue-types.ts +31 -0
  277. package/src/functions/wirings/rpc/pikku-command-rpc-client.ts +32 -0
  278. package/src/functions/wirings/rpc/pikku-command-rpc-map.ts +52 -0
  279. package/src/functions/wirings/rpc/pikku-command-rpc.ts +28 -0
  280. package/src/{wirings → functions/wirings}/rpc/serialize-typed-rpc-map.ts +2 -2
  281. package/src/functions/wirings/scheduler/pikku-command-scheduler-types.ts +27 -0
  282. package/src/functions/wirings/scheduler/pikku-command-scheduler.ts +46 -0
  283. package/src/functions/wirings/scheduler/serialize-scheduler-types.ts +29 -0
  284. package/src/middleware/log-command-info-and-time.ts +61 -0
  285. package/src/services/cli-logger-forwarder.service.ts +77 -0
  286. package/src/services/cli-logger.service.ts +78 -0
  287. package/src/services.ts +111 -0
  288. package/src/utils/check-required-types.ts +53 -0
  289. package/src/utils/custom-types-generator.ts +49 -0
  290. package/src/{utils.test.ts → utils/file-import-path.test.ts} +1 -1
  291. package/src/utils/file-import-path.ts +53 -0
  292. package/src/utils/file-imports-serializer.ts +25 -0
  293. package/src/utils/file-writer.ts +56 -0
  294. package/src/utils/generate-bootstrap-file.ts +43 -0
  295. package/src/utils/pikku-cli-config.ts +356 -0
  296. package/src/utils/pikku-files-and-methods.ts +148 -0
  297. package/src/{schema-generator.ts → utils/schema-generator.ts} +3 -1
  298. package/src/{serialize-import-map.ts → utils/serialize-import-map.ts} +1 -1
  299. package/tsconfig.json +2 -2
  300. package/types/application-types.d.ts +20 -0
  301. package/types/config.d.ts +192 -0
  302. package/bin/pikku-all.ts +0 -349
  303. package/bin/pikku-fetch.ts +0 -27
  304. package/bin/pikku-nextjs.ts +0 -44
  305. package/bin/pikku-openapi.ts +0 -31
  306. package/bin/pikku-queue-service.ts +0 -28
  307. package/bin/pikku-rpc.ts +0 -28
  308. package/bin/pikku-schemas.ts +0 -31
  309. package/bin/pikku-websocket.ts +0 -28
  310. package/dist/bin/pikku-all.d.ts +0 -4
  311. package/dist/bin/pikku-all.js +0 -194
  312. package/dist/bin/pikku-fetch.d.ts +0 -4
  313. package/dist/bin/pikku-fetch.js +0 -19
  314. package/dist/bin/pikku-nextjs.d.ts +0 -4
  315. package/dist/bin/pikku-nextjs.js +0 -24
  316. package/dist/bin/pikku-openapi.d.ts +0 -2
  317. package/dist/bin/pikku-openapi.js +0 -19
  318. package/dist/bin/pikku-queue-service.d.ts +0 -4
  319. package/dist/bin/pikku-queue-service.js +0 -19
  320. package/dist/bin/pikku-rpc.d.ts +0 -4
  321. package/dist/bin/pikku-rpc.js +0 -19
  322. package/dist/bin/pikku-schemas.d.ts +0 -2
  323. package/dist/bin/pikku-schemas.js +0 -21
  324. package/dist/bin/pikku-websocket.d.ts +0 -4
  325. package/dist/bin/pikku-websocket.js +0 -19
  326. package/dist/src/inspector-glob.d.ts +0 -2
  327. package/dist/src/inspector-glob.js +0 -12
  328. package/dist/src/pikku-cli-config.d.ts +0 -56
  329. package/dist/src/pikku-cli-config.js +0 -203
  330. package/dist/src/pikku-command-schemas.d.ts +0 -2
  331. package/dist/src/pikku-command-schemas.js +0 -8
  332. package/dist/src/runtimes/nextjs/pikku-command-nextjs.d.ts +0 -2
  333. package/dist/src/schemas.d.ts +0 -2
  334. package/dist/src/schemas.js +0 -8
  335. package/dist/src/types.d.ts +0 -5
  336. package/dist/src/utils.d.ts +0 -60
  337. package/dist/src/utils.js +0 -248
  338. package/dist/src/wirings/channels/pikku-channels.d.ts +0 -2
  339. package/dist/src/wirings/channels/pikku-channels.js +0 -9
  340. package/dist/src/wirings/channels/pikku-command-channels-map.d.ts +0 -2
  341. package/dist/src/wirings/channels/pikku-command-channels-map.js +0 -8
  342. package/dist/src/wirings/channels/pikku-command-channels.d.ts +0 -2
  343. package/dist/src/wirings/channels/pikku-command-channels.js +0 -9
  344. package/dist/src/wirings/channels/pikku-command-websocket-typed.d.ts +0 -2
  345. package/dist/src/wirings/channels/pikku-command-websocket-typed.js +0 -15
  346. package/dist/src/wirings/fetch/index.d.ts +0 -2
  347. package/dist/src/wirings/fetch/index.js +0 -12
  348. package/dist/src/wirings/functions/pikku-command-function-types.d.ts +0 -2
  349. package/dist/src/wirings/functions/pikku-command-function-types.js +0 -13
  350. package/dist/src/wirings/functions/pikku-command-functions.d.ts +0 -2
  351. package/dist/src/wirings/functions/pikku-command-functions.js +0 -14
  352. package/dist/src/wirings/functions/pikku-function-types.d.ts +0 -2
  353. package/dist/src/wirings/functions/pikku-function-types.js +0 -13
  354. package/dist/src/wirings/http/pikku-command-http-map.d.ts +0 -2
  355. package/dist/src/wirings/http/pikku-command-http-map.js +0 -8
  356. package/dist/src/wirings/http/pikku-command-http-routes.d.ts +0 -2
  357. package/dist/src/wirings/http/pikku-command-http-routes.js +0 -9
  358. package/dist/src/wirings/http/pikku-command-openapi.d.ts +0 -2
  359. package/dist/src/wirings/http/pikku-command-openapi.js +0 -20
  360. package/dist/src/wirings/http/pikku-http-routes.d.ts +0 -2
  361. package/dist/src/wirings/http/pikku-http-routes.js +0 -9
  362. package/dist/src/wirings/mcp/pikku-command-mcp-json.d.ts +0 -2
  363. package/dist/src/wirings/mcp/pikku-command-mcp-json.js +0 -13
  364. package/dist/src/wirings/mcp/pikku-command-mcp.d.ts +0 -2
  365. package/dist/src/wirings/queue/pikku-command-queue-map.d.ts +0 -2
  366. package/dist/src/wirings/queue/pikku-command-queue-map.js +0 -8
  367. package/dist/src/wirings/queue/pikku-command-queue-service.d.ts +0 -2
  368. package/dist/src/wirings/queue/pikku-command-queue-service.js +0 -15
  369. package/dist/src/wirings/queue/pikku-command-queue.d.ts +0 -2
  370. package/dist/src/wirings/queue/pikku-command-queue.js +0 -10
  371. package/dist/src/wirings/queue/pikku-queue-map.d.ts +0 -2
  372. package/dist/src/wirings/queue/pikku-queue-map.js +0 -8
  373. package/dist/src/wirings/queue/pikku-queue.d.ts +0 -2
  374. package/dist/src/wirings/queue/pikku-queue.js +0 -10
  375. package/dist/src/wirings/rpc/pikku-command-rpc-client.d.ts +0 -2
  376. package/dist/src/wirings/rpc/pikku-command-rpc-client.js +0 -15
  377. package/dist/src/wirings/rpc/pikku-command-rpc-map.d.ts +0 -3
  378. package/dist/src/wirings/rpc/pikku-command-rpc-map.js +0 -14
  379. package/dist/src/wirings/rpc/pikku-command-rpc.d.ts +0 -2
  380. package/dist/src/wirings/rpc/pikku-command-rpc.js +0 -8
  381. package/dist/src/wirings/scheduler/pikku-command-scheduler.d.ts +0 -2
  382. package/dist/src/wirings/scheduler/pikku-command-scheduler.js +0 -10
  383. package/src/inspector-glob.ts +0 -30
  384. package/src/pikku-cli-config.ts +0 -387
  385. package/src/pikku-command-schemas.ts +0 -35
  386. package/src/runtimes/nextjs/pikku-command-nextjs.ts +0 -110
  387. package/src/schemas.ts +0 -35
  388. package/src/types.ts +0 -16
  389. package/src/utils.ts +0 -420
  390. package/src/wirings/channels/pikku-channels.ts +0 -41
  391. package/src/wirings/channels/pikku-command-channels-map.ts +0 -26
  392. package/src/wirings/channels/pikku-command-channels.ts +0 -39
  393. package/src/wirings/channels/pikku-command-websocket-typed.ts +0 -36
  394. package/src/wirings/fetch/index.ts +0 -33
  395. package/src/wirings/functions/pikku-command-function-types.ts +0 -53
  396. package/src/wirings/functions/pikku-command-functions.ts +0 -48
  397. package/src/wirings/functions/pikku-function-types.ts +0 -52
  398. package/src/wirings/http/pikku-command-http-map.ts +0 -27
  399. package/src/wirings/http/pikku-command-http-routes.ts +0 -40
  400. package/src/wirings/http/pikku-command-openapi.ts +0 -55
  401. package/src/wirings/http/pikku-http-routes.ts +0 -40
  402. package/src/wirings/mcp/pikku-command-mcp-json.ts +0 -33
  403. package/src/wirings/queue/pikku-command-queue-map.ts +0 -26
  404. package/src/wirings/queue/pikku-command-queue-service.ts +0 -36
  405. package/src/wirings/queue/pikku-command-queue.ts +0 -45
  406. package/src/wirings/queue/pikku-queue-map.ts +0 -26
  407. package/src/wirings/queue/pikku-queue.ts +0 -43
  408. package/src/wirings/rpc/pikku-command-rpc-client.ts +0 -35
  409. package/src/wirings/rpc/pikku-command-rpc-map.ts +0 -49
  410. package/src/wirings/rpc/pikku-command-rpc.ts +0 -24
  411. package/src/wirings/scheduler/pikku-command-scheduler.ts +0 -43
  412. /package/dist/{src/types.js → .pikku/cli/pikku-cli-wirings-meta.gen.d.ts} +0 -0
  413. /package/dist/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-backend-wrapper.d.ts +0 -0
  414. /package/dist/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-backend-wrapper.js +0 -0
  415. /package/dist/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-http-wrapper.d.ts +0 -0
  416. /package/dist/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-http-wrapper.js +0 -0
  417. /package/dist/src/{wirings → functions/wirings}/channels/serialize-typed-channel-map.d.ts +0 -0
  418. /package/dist/src/{wirings → functions/wirings}/channels/serialize-websocket-wrapper.d.ts +0 -0
  419. /package/dist/src/{wirings → functions/wirings}/channels/serialize-websocket-wrapper.js +0 -0
  420. /package/dist/src/{wirings → functions/wirings}/functions/serialize-function-imports.d.ts +0 -0
  421. /package/dist/src/{wirings → functions/wirings}/http/serialize-fetch-wrapper.d.ts +0 -0
  422. /package/dist/src/{wirings → functions/wirings}/http/serialize-fetch-wrapper.js +0 -0
  423. /package/dist/src/{wirings → functions/wirings}/http/serialize-typed-http-map.d.ts +0 -0
  424. /package/dist/src/{wirings → functions/wirings}/mcp/serialize-mcp-json.js +0 -0
  425. /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-map.d.ts +0 -0
  426. /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-meta.d.ts +0 -0
  427. /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-meta.js +0 -0
  428. /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-wrapper.d.ts +0 -0
  429. /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-wrapper.js +0 -0
  430. /package/dist/src/{wirings → functions/wirings}/rpc/serialize-rpc-wrapper.d.ts +0 -0
  431. /package/dist/src/{wirings → functions/wirings}/rpc/serialize-rpc-wrapper.js +0 -0
  432. /package/dist/src/{wirings → functions/wirings}/rpc/serialize-typed-rpc-map.d.ts +0 -0
  433. /package/dist/src/{wirings → functions/wirings}/scheduler/serialize-scheduler-meta.d.ts +0 -0
  434. /package/dist/src/{wirings → functions/wirings}/scheduler/serialize-scheduler-meta.js +0 -0
  435. /package/dist/src/{serialize-import-map.d.ts → utils/serialize-import-map.d.ts} +0 -0
  436. /package/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-backend-wrapper.ts +0 -0
  437. /package/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-http-wrapper.ts +0 -0
  438. /package/src/{wirings → functions/wirings}/channels/serialize-websocket-wrapper.ts +0 -0
  439. /package/src/{wirings → functions/wirings}/http/serialize-fetch-wrapper.ts +0 -0
  440. /package/src/{wirings → functions/wirings}/queue/serialize-queue-meta.ts +0 -0
  441. /package/src/{wirings → functions/wirings}/queue/serialize-queue-wrapper.ts +0 -0
  442. /package/src/{wirings → functions/wirings}/rpc/serialize-rpc-wrapper.ts +0 -0
  443. /package/src/{wirings → functions/wirings}/scheduler/serialize-scheduler-meta.ts +0 -0
@@ -0,0 +1,24 @@
1
+ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
2
+ import { serializeFetchWrapper } from '../http/serialize-fetch-wrapper.js';
3
+ import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
4
+ import { writeFileInDir } from '../../../utils/file-writer.js';
5
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
6
+ export const pikkuFetch = pikkuSessionlessFunc({
7
+ func: async ({ logger, config }) => {
8
+ const { fetchFile, httpMapDeclarationFile, packageMappings } = config;
9
+ if (!fetchFile) {
10
+ throw new Error("fetchFile is isn't set in the pikku config");
11
+ }
12
+ const routesMapDeclarationPath = getFileImportRelativePath(fetchFile, httpMapDeclarationFile, packageMappings);
13
+ const content = [serializeFetchWrapper(routesMapDeclarationPath)];
14
+ await writeFileInDir(logger, fetchFile, content.join('\n'));
15
+ },
16
+ middleware: [
17
+ logCommandInfoAndTime({
18
+ commandStart: 'Generating fetch wrapper',
19
+ commandEnd: 'Generated fetch wrapper',
20
+ skipCondition: ({ config }) => config.fetchFile === undefined,
21
+ skipMessage: "fetchFile isn't set in the pikku config",
22
+ }),
23
+ ],
24
+ });
@@ -0,0 +1 @@
1
+ export declare const pikkuFunctionTypesSplit: any;
@@ -0,0 +1,32 @@
1
+ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
2
+ import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
3
+ import { checkRequiredTypes } from '../../../utils/check-required-types.js';
4
+ import { writeFileInDir } from '../../../utils/file-writer.js';
5
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
6
+ import { serializeFunctionTypes } from './serialize-function-types.js';
7
+ export const pikkuFunctionTypesSplit = pikkuSessionlessFunc({
8
+ func: async ({ logger, config, getInspectorState }) => {
9
+ const visitState = await getInspectorState();
10
+ const { functionTypesFile, packageMappings, rpcInternalMapDeclarationFile, } = config;
11
+ // Check for required types
12
+ checkRequiredTypes(visitState.filesAndMethodsErrors, {
13
+ userSessionType: true,
14
+ sessionServiceType: true,
15
+ singletonServicesType: true,
16
+ });
17
+ const { userSessionType, sessionServicesType, singletonServicesType } = visitState.filesAndMethods;
18
+ if (!userSessionType || !sessionServicesType || !singletonServicesType) {
19
+ throw new Error('Required types not found');
20
+ }
21
+ const content = serializeFunctionTypes(`import type { ${userSessionType.type} } from '${getFileImportRelativePath(functionTypesFile, userSessionType.typePath, packageMappings)}'`, userSessionType.type, `import type { ${singletonServicesType.type} } from '${getFileImportRelativePath(functionTypesFile, singletonServicesType.typePath, packageMappings)}'`, singletonServicesType.type, `import type { ${sessionServicesType.type} } from '${getFileImportRelativePath(functionTypesFile, sessionServicesType.typePath, packageMappings)}'`, sessionServicesType.type, `import type { TypedPikkuRPC } from '${getFileImportRelativePath(functionTypesFile, rpcInternalMapDeclarationFile, packageMappings)}'`);
22
+ await writeFileInDir(logger, functionTypesFile, content);
23
+ },
24
+ middleware: [
25
+ logCommandInfoAndTime({
26
+ commandStart: 'Creating function types',
27
+ commandEnd: 'Created function types',
28
+ skipCondition: false,
29
+ skipMessage: '',
30
+ }),
31
+ ],
32
+ });
@@ -0,0 +1 @@
1
+ export declare const pikkuFunctionTypes: any;
@@ -0,0 +1,20 @@
1
+ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
2
+ import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
3
+ import { writeFileInDir } from '../../../utils/file-writer.js';
4
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
5
+ import { serializePikkuTypesHub } from './serialize-pikku-types-hub.js';
6
+ export const pikkuFunctionTypes = pikkuSessionlessFunc({
7
+ func: async ({ logger, config }) => {
8
+ const { typesDeclarationFile: typesFile, packageMappings, functionTypesFile, httpTypesFile, channelsTypesFile, schedulersTypesFile, queueTypesFile, mcpTypesFile, cliTypesFile, } = config;
9
+ const content = serializePikkuTypesHub(getFileImportRelativePath(typesFile, functionTypesFile, packageMappings), getFileImportRelativePath(typesFile, httpTypesFile, packageMappings), getFileImportRelativePath(typesFile, channelsTypesFile, packageMappings), getFileImportRelativePath(typesFile, schedulersTypesFile, packageMappings), getFileImportRelativePath(typesFile, queueTypesFile, packageMappings), getFileImportRelativePath(typesFile, mcpTypesFile, packageMappings), getFileImportRelativePath(typesFile, cliTypesFile, packageMappings));
10
+ await writeFileInDir(logger, typesFile, content);
11
+ },
12
+ middleware: [
13
+ logCommandInfoAndTime({
14
+ commandStart: 'Creating api types hub',
15
+ commandEnd: 'Created api types hub',
16
+ skipCondition: false,
17
+ skipMessage: '',
18
+ }),
19
+ ],
20
+ });
@@ -0,0 +1 @@
1
+ export declare const pikkuFunctions: any;
@@ -0,0 +1,28 @@
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 { generateRuntimeMeta, serializeFunctionImports, } from './serialize-function-imports.js';
5
+ export const pikkuFunctions = pikkuSessionlessFunc({
6
+ func: async ({ logger, config, getInspectorState }) => {
7
+ const { functions, rpc } = await getInspectorState();
8
+ const { functionsMetaFile, functionsMetaMinFile, functionsFile, packageMappings, } = config;
9
+ // Generate full metadata
10
+ await writeFileInDir(logger, functionsMetaFile, `import { pikkuState } from '@pikku/core'\npikkuState('function', 'meta', ${JSON.stringify(functions.meta, null, 2)})`);
11
+ // Generate minimal metadata (runtime)
12
+ const runtimeMeta = generateRuntimeMeta(functions.meta);
13
+ await writeFileInDir(logger, functionsMetaMinFile, `import { pikkuState } from '@pikku/core'\npikkuState('function', 'meta', ${JSON.stringify(runtimeMeta, null, 2)})`);
14
+ const hasRPCs = rpc.exposedFiles.size > 0 || rpc.internalFiles.size > 0;
15
+ if (hasRPCs) {
16
+ await writeFileInDir(logger, functionsFile, serializeFunctionImports(functionsFile, rpc.internalFiles, functions.meta, packageMappings));
17
+ }
18
+ return hasRPCs;
19
+ },
20
+ middleware: [
21
+ logCommandInfoAndTime({
22
+ commandStart: 'Serializing Pikku functions',
23
+ commandEnd: 'Serialized Pikku functions',
24
+ skipCondition: false,
25
+ skipMessage: '',
26
+ }),
27
+ ],
28
+ });
@@ -1,3 +1,2 @@
1
- import { PikkuCommand } from '../../types.js';
2
1
  export declare const serializeServicesMap: (functionsMetaData: Record<string, any>, middlewareServices: string[] | undefined, servicesImport: string, sessionServicesImport: string) => string;
3
- export declare const pikkuServices: PikkuCommand;
2
+ export declare const pikkuServices: any;
@@ -1,4 +1,8 @@
1
- import { getFileImportRelativePath, getPikkuFilesAndMethods, logCommandInfoAndTime, writeFileInDir, } from '../../utils.js';
1
+ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
2
+ import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
3
+ import { checkRequiredTypes } from '../../../utils/check-required-types.js';
4
+ import { writeFileInDir } from '../../../utils/file-writer.js';
5
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
2
6
  export const serializeServicesMap = (functionsMetaData, middlewareServices = [], servicesImport, sessionServicesImport) => {
3
7
  // Extract all unique services from all functions
4
8
  const usedServices = new Set();
@@ -59,15 +63,28 @@ export const serializeServicesMap = (functionsMetaData, middlewareServices = [],
59
63
  ].join('\n');
60
64
  return code;
61
65
  };
62
- export const pikkuServices = async (logger, cliConfig, visitState) => {
63
- return await logCommandInfoAndTime(logger, 'Generating Pikku services map', 'Generated Pikku services map', [false], async () => {
64
- const { sessionServicesType, singletonServicesType } = await getPikkuFilesAndMethods(logger, visitState, cliConfig.packageMappings, cliConfig.typesDeclarationFile, {}, {
66
+ export const pikkuServices = pikkuSessionlessFunc({
67
+ func: async ({ logger, config, getInspectorState }) => {
68
+ const visitState = await getInspectorState();
69
+ // Check for required types
70
+ checkRequiredTypes(visitState.filesAndMethodsErrors, {
65
71
  sessionServiceType: true,
66
72
  singletonServicesType: true,
67
73
  });
68
- const servicesImport = `import type { ${singletonServicesType.type} } from '${getFileImportRelativePath(cliConfig.typesDeclarationFile, singletonServicesType.typePath, cliConfig.packageMappings)}'`;
69
- const sessionServicesImport = `import type { ${sessionServicesType.type} } from '${getFileImportRelativePath(cliConfig.typesDeclarationFile, sessionServicesType.typePath, cliConfig.packageMappings)}'`;
70
- const servicesCode = serializeServicesMap(visitState.functions.meta, cliConfig.middlewareServices, servicesImport, sessionServicesImport);
71
- await writeFileInDir(logger, cliConfig.servicesFile, servicesCode);
72
- });
73
- };
74
+ const { sessionServicesType, singletonServicesType } = visitState.filesAndMethods;
75
+ if (!sessionServicesType || !singletonServicesType) {
76
+ throw new Error('Required types not found: sessionServicesType or singletonServicesType');
77
+ }
78
+ const servicesImport = `import type { ${singletonServicesType.type} } from '${getFileImportRelativePath(config.typesDeclarationFile, singletonServicesType.typePath, config.packageMappings)}'`;
79
+ const sessionServicesImport = `import type { ${sessionServicesType.type} } from '${getFileImportRelativePath(config.typesDeclarationFile, sessionServicesType.typePath, config.packageMappings)}'`;
80
+ const servicesCode = serializeServicesMap(visitState.functions.meta, config.middlewareServices, servicesImport, sessionServicesImport);
81
+ await writeFileInDir(logger, config.servicesFile, servicesCode);
82
+ },
83
+ middleware: [
84
+ logCommandInfoAndTime({
85
+ commandStart: 'Generating Pikku services map',
86
+ commandEnd: 'Generated Pikku services map',
87
+ skipMessage: '',
88
+ }),
89
+ ],
90
+ });
@@ -0,0 +1 @@
1
+ export declare const pikkuFunctionTypes: any;
@@ -0,0 +1,20 @@
1
+ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
2
+ import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
3
+ import { writeFileInDir } from '../../../utils/file-writer.js';
4
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
5
+ import { serializePikkuTypesHub } from './serialize-pikku-types-hub.js';
6
+ export const pikkuFunctionTypes = pikkuSessionlessFunc({
7
+ func: async ({ logger, config }) => {
8
+ const { typesDeclarationFile: typesFile, packageMappings, functionTypesFile, httpTypesFile, channelsTypesFile, schedulersTypesFile, queueTypesFile, mcpTypesFile, cliTypesFile, } = config;
9
+ const content = serializePikkuTypesHub(getFileImportRelativePath(typesFile, functionTypesFile, packageMappings), getFileImportRelativePath(typesFile, httpTypesFile, packageMappings), getFileImportRelativePath(typesFile, channelsTypesFile, packageMappings), getFileImportRelativePath(typesFile, schedulersTypesFile, packageMappings), getFileImportRelativePath(typesFile, queueTypesFile, packageMappings), getFileImportRelativePath(typesFile, mcpTypesFile, packageMappings), getFileImportRelativePath(typesFile, cliTypesFile, packageMappings));
10
+ await writeFileInDir(logger, typesFile, content);
11
+ },
12
+ middleware: [
13
+ logCommandInfoAndTime({
14
+ commandStart: 'Creating api types hub',
15
+ commandEnd: 'Created api types hub',
16
+ skipCondition: false,
17
+ skipMessage: '',
18
+ }),
19
+ ],
20
+ });
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Generate JSON schemas from TypeScript types
3
+ */
4
+ export declare const pikkuSchemas: any;
@@ -0,0 +1,22 @@
1
+ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
2
+ import { saveSchemas, generateSchemas, } from '../../../utils/schema-generator.js';
3
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
4
+ /**
5
+ * Generate JSON schemas from TypeScript types
6
+ */
7
+ export const pikkuSchemas = pikkuSessionlessFunc({
8
+ func: async ({ logger, config, getInspectorState }) => {
9
+ const visitState = await getInspectorState();
10
+ const schemas = await generateSchemas(logger, config.tsconfig, visitState.functions.typesMap, visitState.functions.meta, visitState.http.meta, config.schemasFromTypes);
11
+ await saveSchemas(logger, config.schemaDirectory, schemas, visitState.functions.typesMap, visitState.functions.meta, config.supportsImportAttributes, config.schemasFromTypes);
12
+ return true;
13
+ },
14
+ middleware: [
15
+ logCommandInfoAndTime({
16
+ commandStart: 'Generating schemas',
17
+ commandEnd: 'Generated schemas',
18
+ skipCondition: false,
19
+ skipMessage: '',
20
+ }),
21
+ ],
22
+ });
@@ -1,4 +1,4 @@
1
- import { getFileImportRelativePath } from '../../utils.js';
1
+ import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
2
2
  export const serializeFunctionImports = (outputPath, functionsMap, functionsMeta, packageMappings = {}) => {
3
3
  const serializedImports = [
4
4
  `/* Import and register functions used by RPCs */`,
@@ -9,33 +9,16 @@ export const serializeFunctionImports = (outputPath, functionsMap, functionsMeta
9
9
  const sortedEntries = Array.from(functionsMap.entries()).sort((a, b) => a[0].localeCompare(b[0]));
10
10
  for (const [name, { path, exportedName }] of sortedEntries) {
11
11
  const filePath = getFileImportRelativePath(outputPath, path, packageMappings);
12
- // Find the function metadata to check if it's a direct function
13
- // The functionsMeta is keyed by the function name (exported name)
14
- const funcMeta = functionsMeta[name];
15
- const isDirectFunction = funcMeta?.isDirectFunction ?? false;
12
+ // pikkuFunc/pikkuSessionlessFunc/pikkuVoidFunc always return config objects
16
13
  // For directly exported functions, we can just import and register them
17
14
  if (name === exportedName) {
18
15
  serializedImports.push(`import { ${exportedName} } from '${filePath}'`);
19
- if (isDirectFunction) {
20
- // Direct function: pikkuFunc(fn) - needs to be wrapped
21
- serializedRegistrations.push(`addFunction('${name}', { func: ${exportedName} })`);
22
- }
23
- else {
24
- // Object format: pikkuFunc({ func: fn }) - can be used directly
25
- serializedRegistrations.push(`addFunction('${name}', ${exportedName} as any) // TODO`);
26
- }
16
+ serializedRegistrations.push(`addFunction('${name}', ${exportedName})`);
27
17
  }
28
18
  // For renamed functions, we need to import and alias them
29
19
  else {
30
20
  serializedImports.push(`import { ${exportedName} as ${name} } from '${filePath}'`);
31
- if (isDirectFunction) {
32
- // Direct function: pikkuFunc(fn) - needs to be wrapped
33
- serializedRegistrations.push(`addFunction('${name}', { func: ${name} })`);
34
- }
35
- else {
36
- // Object format: pikkuFunc({ func: fn }) - can be used directly
37
- serializedRegistrations.push(`addFunction('${name}', ${name} as any) // TODO`);
38
- }
21
+ serializedRegistrations.push(`addFunction('${name}', ${name})`);
39
22
  }
40
23
  }
41
24
  // Add a blank line between imports and registrations
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Generates core function, middleware, and permission type definitions
3
+ */
4
+ export declare const serializeFunctionTypes: (userSessionTypeImport: string, userSessionTypeName: string, singletonServicesTypeImport: string, singletonServicesTypeName: string, sessionServicesTypeImport: string, sessionServicesTypeName: string, rpcMapTypeImport: string) => string;
@@ -0,0 +1,295 @@
1
+ /**
2
+ * Generates core function, middleware, and permission type definitions
3
+ */
4
+ export const serializeFunctionTypes = (userSessionTypeImport, userSessionTypeName, singletonServicesTypeImport, singletonServicesTypeName, sessionServicesTypeImport, sessionServicesTypeName, rpcMapTypeImport) => {
5
+ return `/**
6
+ * This file was generated by the @pikku/cli
7
+ * Core function, middleware, and permission types for all wirings
8
+ */
9
+
10
+ import { CorePikkuFunctionConfig, CorePikkuPermission, CorePikkuMiddleware, addMiddleware as addMiddlewareCore, addPermission as addPermissionCore } from '@pikku/core'
11
+ import { CorePikkuFunction, CorePikkuFunctionSessionless } from '@pikku/core/function'
12
+ import { PikkuChannel, PikkuMCP } from '@pikku/core'
13
+
14
+ ${userSessionTypeImport}
15
+ ${singletonServicesTypeImport}
16
+ ${sessionServicesTypeImport}
17
+ ${rpcMapTypeImport}
18
+
19
+ ${singletonServicesTypeName !== 'SingletonServices' ? `type SingletonServices = ${singletonServicesTypeName}` : ''}
20
+ ${sessionServicesTypeName !== 'Services' ? `type Services = ${sessionServicesTypeName}` : ''}
21
+ ${userSessionTypeName !== 'Session' ? `type Session = ${userSessionTypeName}` : ''}
22
+
23
+ /**
24
+ * Type-safe API permission definition that integrates with your application's session type.
25
+ * Use this to define authorization logic for your API endpoints.
26
+ *
27
+ * @template In - The input type that the permission check will receive
28
+ * @template RequiredServices - The services required for this permission check
29
+ */
30
+ export type PikkuPermission<In = unknown, RequiredServices extends Services = Services> = CorePikkuPermission<In, RequiredServices, Session>
31
+
32
+ /**
33
+ * Type-safe middleware definition that can access your application's services and session.
34
+ * Use this to define reusable middleware that can be applied to multiple wirings.
35
+ *
36
+ * @template RequiredServices - The services required for this middleware
37
+ */
38
+ export type PikkuMiddleware<RequiredServices extends SingletonServices = SingletonServices> = CorePikkuMiddleware<RequiredServices, Session>
39
+
40
+ /**
41
+ * Factory function for creating permissions with tree-shaking support.
42
+ * This enables the bundler to detect which services your permission actually uses.
43
+ *
44
+ * @example
45
+ * \`\`\`typescript
46
+ * const permission = pikkuPermission(({ logger }, data, session) => {
47
+ * return session?.isAdmin || false
48
+ * })
49
+ * \`\`\`
50
+ */
51
+ export const pikkuPermission = <In>(func: PikkuPermission<In>) => {
52
+ return func
53
+ }
54
+
55
+ /**
56
+ * Factory function for creating middleware with tree-shaking support.
57
+ * This enables the bundler to detect which services your middleware actually uses.
58
+ *
59
+ * @example
60
+ * \`\`\`typescript
61
+ * const middleware = pikkuMiddleware(({ logger }, interactions, next) => {
62
+ * logger.info('Middleware executed')
63
+ * await next()
64
+ * })
65
+ * \`\`\`
66
+ */
67
+ export const pikkuMiddleware = (func: PikkuMiddleware) => {
68
+ return func
69
+ }
70
+
71
+ /**
72
+ * Factory function for creating middleware factories
73
+ * Use this when your middleware needs configuration/input parameters
74
+ *
75
+ * @example
76
+ * \`\`\`typescript
77
+ * export const logMiddleware = pikkuMiddlewareFactory<LogOptions>(({
78
+ * message,
79
+ * level = 'info'
80
+ * }) => {
81
+ * return pikkuMiddleware(async ({ logger }, _interaction, next) => {
82
+ * logger[level](message)
83
+ * await next()
84
+ * })
85
+ * })
86
+ * \`\`\`
87
+ */
88
+ export const pikkuMiddlewareFactory = <In = any>(
89
+ factory: (input: In) => PikkuMiddleware
90
+ ): ((input: In) => PikkuMiddleware) => {
91
+ return factory
92
+ }
93
+
94
+ /**
95
+ * A sessionless API function that doesn't require user authentication.
96
+ * Use this for public endpoints, health checks, or operations that don't need user context.
97
+ *
98
+ * @template In - The input type
99
+ * @template Out - The output type that the function returns
100
+ * @template ChannelData - Channel data type (null = optional channel)
101
+ * @template MCPData - MCP data type (null = optional MCP)
102
+ * @template RequiredServices - Services required by this function
103
+ */
104
+ export type PikkuFunctionSessionless<
105
+ In = unknown,
106
+ Out = never,
107
+ ChannelData = null, // null means optional channel
108
+ MCPData = null, // null means optional MCP
109
+ RequiredServices extends Services = Services &
110
+ { rpc: TypedPikkuRPC } & (
111
+ [ChannelData] extends [null]
112
+ ? { channel?: PikkuChannel<unknown, Out> } // Optional channel
113
+ : { channel: PikkuChannel<ChannelData, Out> } // Required channel with any data type
114
+ ) & ([MCPData] extends [null]
115
+ ? { mcp?: PikkuMCP } // Optional MCP
116
+ : { mcp: PikkuMCP } // Required MCP
117
+ )
118
+ > = CorePikkuFunctionSessionless<In, Out, ChannelData, RequiredServices, Session>
119
+
120
+ /**
121
+ * A session-aware API function that requires user authentication.
122
+ * Use this for protected endpoints that need access to user session data.
123
+ *
124
+ * @template In - The input type
125
+ * @template Out - The output type that the function returns
126
+ * @template ChannelData - Channel data type (null = optional channel)
127
+ * @template MCPData - MCP data type (null = optional MCP)
128
+ * @template RequiredServices - Services required by this function
129
+ */
130
+ export type PikkuFunction<
131
+ In = unknown,
132
+ Out = never,
133
+ ChannelData = null, // null means optional channel
134
+ MCPData = null, // null means optional MCP
135
+ RequiredServices extends Services = Omit<Services, 'rpc'> &
136
+ { rpc: TypedPikkuRPC } & (
137
+ [ChannelData] extends [null]
138
+ ? { channel?: PikkuChannel<unknown, Out> } // Optional channel
139
+ : { channel: PikkuChannel<ChannelData, Out> } // Required channel with any data type
140
+ ) & ([MCPData] extends [null]
141
+ ? { mcp?: PikkuMCP } // Optional MCP
142
+ : { mcp: PikkuMCP } // Required MCP
143
+ )
144
+ > = CorePikkuFunction<In, Out, ChannelData, RequiredServices, Session>
145
+
146
+ /**
147
+ * Configuration object for Pikku functions with optional middleware, permissions, tags, and documentation.
148
+ * This type wraps CorePikkuFunctionConfig with the user's custom types.
149
+ *
150
+ * @template In - The input type
151
+ * @template Out - The output type
152
+ * @template PikkuFunc - The function type (can be narrowed to PikkuFunction or PikkuFunctionSessionless)
153
+ */
154
+ export type PikkuFunctionConfig<
155
+ In = unknown,
156
+ Out = unknown,
157
+ PikkuFunc extends PikkuFunction<In, Out> | PikkuFunctionSessionless<In, Out> = PikkuFunction<In, Out> | PikkuFunctionSessionless<In, Out>
158
+ > = CorePikkuFunctionConfig<PikkuFunc, PikkuPermission<In>, PikkuMiddleware>
159
+
160
+ /**
161
+ * Creates a Pikku function that can be either session-aware or sessionless.
162
+ * This is the main function wrapper for creating API endpoints.
163
+ *
164
+ * @template In - Input type for the function
165
+ * @template Out - Output type for the function
166
+ * @param func - Function definition, either direct function or configuration object
167
+ * @returns The normalized configuration object
168
+ *
169
+ * @example
170
+ * \\\`\\\`\\\`typescript
171
+ * const createUser = pikkuFunc<{name: string, email: string}, {id: number, message: string}>({
172
+ * func: async ({db, logger}, input) => {
173
+ * logger.info('Creating user', input.name)
174
+ * const user = await db.users.create(input)
175
+ * return {id: user.id, message: \\\`User \\\${input.name} created successfully\\\`}
176
+ * },
177
+ * auth: true
178
+ * })
179
+ * \\\`\\\`\\\`
180
+ */
181
+ export const pikkuFunc = <In, Out = unknown>(
182
+ func:
183
+ | PikkuFunction<In, Out>
184
+ | CorePikkuFunctionConfig<PikkuFunction<In, Out>, PikkuPermission<In>>
185
+ ) => {
186
+ return typeof func === 'function' ? { func } : func
187
+ }
188
+
189
+ /**
190
+ * Creates a sessionless Pikku function that doesn't require user authentication.
191
+ * Use this for public endpoints, webhooks, or background tasks.
192
+ *
193
+ * @template In - Input type for the function
194
+ * @template Out - Output type for the function
195
+ * @param func - Function definition, either direct function or configuration object
196
+ * @returns The normalized configuration object
197
+ *
198
+ * @example
199
+ * \\\`\\\`\\\`typescript
200
+ * const healthCheck = pikkuSessionlessFunc<void, {status: string, timestamp: string}>({
201
+ * func: async ({logger}) => {
202
+ * logger.info('Health check requested')
203
+ * return {status: 'healthy', timestamp: new Date().toISOString()}
204
+ * },
205
+ * name: 'healthCheck'
206
+ * })
207
+ * \\\`\\\`\\\`
208
+ */
209
+ export const pikkuSessionlessFunc = <In, Out = unknown>(
210
+ func:
211
+ | PikkuFunctionSessionless<In, Out>
212
+ | CorePikkuFunctionConfig<PikkuFunctionSessionless<In, Out>, PikkuPermission<In>, PikkuMiddleware>
213
+ ) => {
214
+ return typeof func === 'function' ? { func } : func
215
+ }
216
+
217
+ /**
218
+ * Creates a function that takes no input and returns no output.
219
+ * Useful for health checks, triggers, or cleanup operations.
220
+ *
221
+ * @param func - Function definition, either direct function or configuration object
222
+ * @returns The normalized configuration object
223
+ *
224
+ * @example
225
+ * \\\`\\\`\\\`typescript
226
+ * const cleanupTempFiles = pikkuVoidFunc(async ({fileSystem, logger}) => {
227
+ * logger.info('Starting cleanup of temporary files')
228
+ * await fileSystem.deleteDirectory('/tmp/uploads')
229
+ * logger.info('Cleanup completed')
230
+ * })
231
+ * \\\`\\\`\\\`
232
+ */
233
+ export const pikkuVoidFunc = (
234
+ func:
235
+ | PikkuFunctionSessionless<void, void>
236
+ | CorePikkuFunctionConfig<PikkuFunctionSessionless<void, void>, PikkuPermission<void>>
237
+ ) => {
238
+ return typeof func === 'function' ? { func } : func
239
+ }
240
+
241
+ /**
242
+ * Adds global middleware for a specific tag.
243
+ *
244
+ * This function allows you to register middleware that will be applied to
245
+ * any wiring (HTTP, Channel, Queue, Scheduler, MCP) that includes the matching tag.
246
+ *
247
+ * @param tag - The tag that the middleware should apply to.
248
+ * @param middleware - The middleware array to apply for the specified tag.
249
+ *
250
+ * @throws Error if middleware for the tag already exists.
251
+ *
252
+ * @example
253
+ * \`\`\`typescript
254
+ * // Add admin middleware for admin endpoints
255
+ * addMiddleware('admin', [adminMiddleware])
256
+ *
257
+ * // Add authentication middleware for auth endpoints
258
+ * addMiddleware('auth', [authMiddleware])
259
+ *
260
+ * // Add logging middleware for all API endpoints
261
+ * addMiddleware('api', [loggingMiddleware])
262
+ * \`\`\`
263
+ */
264
+ export const addMiddleware = (tag: string, middleware: PikkuMiddleware[]) => {
265
+ addMiddlewareCore(tag, middleware as any)
266
+ }
267
+
268
+ /**
269
+ * Adds global permissions for a specific tag.
270
+ *
271
+ * This function allows you to register permissions that will be applied to
272
+ * any wiring (HTTP, Channel, Queue, Scheduler, MCP) that includes the matching tag.
273
+ *
274
+ * @param tag - The tag that the permissions should apply to.
275
+ * @param permissions - The permissions array to apply for the specified tag.
276
+ *
277
+ * @throws Error if permissions for the tag already exist.
278
+ *
279
+ * @example
280
+ * \`\`\`typescript
281
+ * // Add admin permissions for admin endpoints
282
+ * addPermission('admin', [adminPermission])
283
+ *
284
+ * // Add authentication permissions for auth endpoints
285
+ * addPermission('auth', [authPermission])
286
+ *
287
+ * // Add read permissions for all API endpoints
288
+ * addPermission('api', [readPermission])
289
+ * \`\`\`
290
+ */
291
+ export const addPermission = <In = unknown>(tag: string, permissions: PikkuPermission<In>[]) => {
292
+ addPermissionCore(tag, permissions as any)
293
+ }
294
+ `;
295
+ };
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Generates the main pikku-types.gen.ts file as a re-export hub
3
+ */
4
+ export declare const serializePikkuTypesHub: (functionTypesImportPath: string, httpTypesImportPath: string, channelTypesImportPath: string, schedulerTypesImportPath: string, queueTypesImportPath: string, mcpTypesImportPath: string, cliTypesImportPath: string) => string;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Generates the main pikku-types.gen.ts file as a re-export hub
3
+ */
4
+ export const serializePikkuTypesHub = (functionTypesImportPath, httpTypesImportPath, channelTypesImportPath, schedulerTypesImportPath, queueTypesImportPath, mcpTypesImportPath, cliTypesImportPath) => {
5
+ return `/**
6
+ * This file was generated by the @pikku/cli
7
+ * Main type export hub - re-exports all wiring-specific types
8
+ */
9
+
10
+ // Core function, middleware, and permission types
11
+ export * from '${functionTypesImportPath}'
12
+
13
+ // HTTP wiring types
14
+ export * from '${httpTypesImportPath}'
15
+
16
+ // Channel wiring types
17
+ export * from '${channelTypesImportPath}'
18
+
19
+ // Scheduler wiring types
20
+ export * from '${schedulerTypesImportPath}'
21
+
22
+ // Queue wiring types
23
+ export * from '${queueTypesImportPath}'
24
+
25
+ // MCP wiring types
26
+ export * from '${mcpTypesImportPath}'
27
+
28
+ // CLI wiring types
29
+ export * from '${cliTypesImportPath}'
30
+ `;
31
+ };
@@ -1,4 +1,5 @@
1
1
  import { FunctionsMeta, HTTPWiringsMeta } from '@pikku/core';
2
+ import { CLILogger } from '../../../services/cli-logger.service.js';
2
3
  interface OpenAPISpec {
3
4
  openapi: string;
4
5
  info: {
@@ -75,5 +76,5 @@ export interface OpenAPISpecInfo {
75
76
  [key: string]: any[];
76
77
  }[];
77
78
  }
78
- export declare function generateOpenAPISpec(functionsMeta: FunctionsMeta, httpMeta: HTTPWiringsMeta, schemas: Record<string, any>, additionalInfo: OpenAPISpecInfo): Promise<OpenAPISpec>;
79
+ export declare function generateOpenAPISpec(logger: CLILogger, functionsMeta: FunctionsMeta, httpMeta: HTTPWiringsMeta, schemas: Record<string, any>, additionalInfo: OpenAPISpecInfo): Promise<OpenAPISpec>;
79
80
  export {};
@@ -34,14 +34,14 @@ const convertSchemasToBodyPayloads = async (functionsMeta, routesMeta, schemas)
34
34
  }));
35
35
  return Object.fromEntries(convertedEntries.filter((s) => !!s));
36
36
  };
37
- export async function generateOpenAPISpec(functionsMeta, httpMeta, schemas, additionalInfo) {
37
+ export async function generateOpenAPISpec(logger, functionsMeta, httpMeta, schemas, additionalInfo) {
38
38
  const paths = {};
39
39
  for (const routeMeta of Object.values(httpMeta)) {
40
40
  for (const meta of Object.values(routeMeta)) {
41
41
  const { route, method, inputTypes, pikkuFuncName, params, query, docs } = meta;
42
42
  const functionMeta = functionsMeta[pikkuFuncName];
43
43
  if (!functionMeta) {
44
- console.error(`• No function metadata found for '${pikkuFuncName}' in route '${route}'.`);
44
+ logger.error(`• No function metadata found for '${pikkuFuncName}' in route '${route}'.`);
45
45
  continue;
46
46
  }
47
47
  const output = functionMeta.outputs ? functionMeta.outputs[0] : undefined;
@@ -0,0 +1 @@
1
+ export declare const pikkuHTTPMap: any;