@pikku/cli 0.9.15 → 0.10.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 (504) hide show
  1. package/.pikku/channel/pikku-channel-types.gen.ts +91 -0
  2. package/.pikku/channel/pikku-channels-map.gen.d.ts +44 -0
  3. package/.pikku/channel/pikku-channels-meta.gen.ts +5 -0
  4. package/.pikku/channel/pikku-channels.gen.ts +4 -0
  5. package/.pikku/cli/pikku-cli-channel.gen.ts +34 -0
  6. package/.pikku/cli/pikku-cli-client.gen.ts +43 -0
  7. package/.pikku/cli/pikku-cli-types.gen.ts +70 -0
  8. package/.pikku/cli/pikku-cli-wirings-meta.gen.ts +145 -0
  9. package/.pikku/cli/pikku-cli-wirings.gen.ts +6 -0
  10. package/.pikku/cli/pikku-cli.gen.ts +41 -0
  11. package/.pikku/function/pikku-function-types.gen.ts +440 -0
  12. package/.pikku/function/pikku-functions-meta.gen.ts +845 -0
  13. package/.pikku/function/pikku-functions-meta.min.gen.ts +181 -0
  14. package/.pikku/function/pikku-functions.gen.ts +76 -0
  15. package/.pikku/http/pikku-http-types.gen.ts +86 -0
  16. package/.pikku/http/pikku-http-wirings-map.gen.d.ts +43 -0
  17. package/.pikku/http/pikku-http-wirings-meta.gen.ts +13 -0
  18. package/.pikku/http/pikku-http-wirings.gen.ts +4 -0
  19. package/.pikku/mcp/pikku-mcp-types.gen.ts +140 -0
  20. package/.pikku/mcp/pikku-mcp-wirings-meta.gen.ts +7 -0
  21. package/.pikku/mcp/pikku-mcp-wirings.gen.ts +4 -0
  22. package/.pikku/mcp/pikku-mcp.gen.json +5 -0
  23. package/.pikku/pikku-bootstrap.gen.ts +19 -0
  24. package/.pikku/pikku-services.gen.ts +20 -0
  25. package/.pikku/pikku-types.gen.ts +27 -0
  26. package/.pikku/pikku-websocket.gen.ts +76 -0
  27. package/.pikku/queue/pikku-queue-types.gen.ts +27 -0
  28. package/.pikku/queue/pikku-queue-workers-wirings-map.gen.d.ts +57 -0
  29. package/.pikku/queue/pikku-queue-workers-wirings-meta.gen.ts +5 -0
  30. package/.pikku/queue/pikku-queue-workers-wirings.gen.ts +4 -0
  31. package/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +47 -0
  32. package/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +82 -0
  33. package/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.ts +41 -0
  34. package/.pikku/scheduler/pikku-scheduler-types.gen.ts +25 -0
  35. package/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.ts +5 -0
  36. package/.pikku/scheduler/pikku-schedulers-wirings.gen.ts +4 -0
  37. package/.pikku/schemas/register.gen.ts +51 -0
  38. package/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -0
  39. package/.pikku/schemas/schemas/PikkuCLIOutput.schema.json +1 -0
  40. package/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -0
  41. package/.pikku/schemas/schemas/PikkuFunctionsOutput.schema.json +1 -0
  42. package/.pikku/schemas/schemas/PikkuHTTPOutput.schema.json +1 -0
  43. package/.pikku/schemas/schemas/PikkuMCPOutput.schema.json +1 -0
  44. package/.pikku/schemas/schemas/PikkuMiddlewareOutput.schema.json +1 -0
  45. package/.pikku/schemas/schemas/PikkuPermissionsOutput.schema.json +1 -0
  46. package/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +1 -0
  47. package/.pikku/schemas/schemas/PikkuRPCOutput.schema.json +1 -0
  48. package/.pikku/schemas/schemas/PikkuSchedulerOutput.schema.json +1 -0
  49. package/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -0
  50. package/CHANGELOG.md +15 -0
  51. package/bin/pikku.ts +97 -14
  52. package/build.sh +53 -0
  53. package/cli.schema.json +1 -382
  54. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +56 -0
  55. package/dist/.pikku/channel/pikku-channel-types.gen.js +52 -0
  56. package/dist/.pikku/channel/pikku-channels-meta.gen.js +5 -0
  57. package/dist/.pikku/channel/pikku-channels.gen.d.ts +4 -0
  58. package/dist/.pikku/channel/pikku-channels.gen.js +5 -0
  59. package/dist/.pikku/cli/pikku-cli-channel.gen.d.ts +1 -0
  60. package/dist/.pikku/cli/pikku-cli-channel.gen.js +33 -0
  61. package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +10 -0
  62. package/dist/.pikku/cli/pikku-cli-client.gen.js +34 -0
  63. package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +52 -0
  64. package/dist/.pikku/cli/pikku-cli-types.gen.js +31 -0
  65. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.d.ts +1 -0
  66. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +145 -0
  67. package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +5 -0
  68. package/dist/.pikku/cli/pikku-cli-wirings.gen.js +6 -0
  69. package/dist/.pikku/cli/pikku-cli.gen.d.ts +10 -0
  70. package/dist/.pikku/cli/pikku-cli.gen.js +38 -0
  71. package/dist/.pikku/function/pikku-function-types.gen.d.ts +380 -0
  72. package/dist/.pikku/function/pikku-function-types.gen.js +271 -0
  73. package/dist/.pikku/function/pikku-functions-meta.gen.d.ts +1 -0
  74. package/dist/.pikku/function/pikku-functions-meta.gen.js +845 -0
  75. package/dist/.pikku/function/pikku-functions-meta.min.gen.d.ts +1 -0
  76. package/dist/.pikku/function/pikku-functions-meta.min.gen.js +181 -0
  77. package/dist/.pikku/function/pikku-functions.gen.d.ts +1 -0
  78. package/dist/.pikku/function/pikku-functions.gen.js +75 -0
  79. package/dist/.pikku/http/pikku-http-types.gen.d.ts +68 -0
  80. package/dist/.pikku/http/pikku-http-types.gen.js +62 -0
  81. package/dist/.pikku/http/pikku-http-wirings-meta.gen.d.ts +1 -0
  82. package/dist/.pikku/http/pikku-http-wirings-meta.gen.js +13 -0
  83. package/dist/.pikku/http/pikku-http-wirings.gen.d.ts +4 -0
  84. package/dist/.pikku/http/pikku-http-wirings.gen.js +5 -0
  85. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +91 -0
  86. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +71 -0
  87. package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.d.ts +1 -0
  88. package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.js +7 -0
  89. package/dist/.pikku/mcp/pikku-mcp-wirings.gen.d.ts +4 -0
  90. package/dist/.pikku/mcp/pikku-mcp-wirings.gen.js +5 -0
  91. package/dist/.pikku/pikku-bootstrap.gen.d.ts +19 -0
  92. package/dist/.pikku/pikku-bootstrap.gen.js +19 -0
  93. package/dist/.pikku/pikku-services.gen.d.ts +13 -0
  94. package/dist/.pikku/pikku-services.gen.js +5 -0
  95. package/dist/.pikku/pikku-types.gen.d.ts +13 -0
  96. package/dist/.pikku/pikku-types.gen.js +20 -0
  97. package/dist/.pikku/pikku-websocket.gen.d.ts +31 -0
  98. package/dist/.pikku/pikku-websocket.gen.js +49 -0
  99. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +23 -0
  100. package/dist/.pikku/queue/pikku-queue-types.gen.js +16 -0
  101. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.d.ts +1 -0
  102. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +5 -0
  103. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +4 -0
  104. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +5 -0
  105. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.d.ts +1 -0
  106. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +41 -0
  107. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +21 -0
  108. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +16 -0
  109. package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.d.ts +1 -0
  110. package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.js +5 -0
  111. package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.d.ts +4 -0
  112. package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.js +5 -0
  113. package/dist/.pikku/schemas/register.gen.d.ts +1 -0
  114. package/dist/.pikku/schemas/register.gen.js +28 -0
  115. package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -0
  116. package/dist/.pikku/schemas/schemas/PikkuCLIOutput.schema.json +1 -0
  117. package/dist/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -0
  118. package/dist/.pikku/schemas/schemas/PikkuFunctionsOutput.schema.json +1 -0
  119. package/dist/.pikku/schemas/schemas/PikkuHTTPOutput.schema.json +1 -0
  120. package/dist/.pikku/schemas/schemas/PikkuMCPOutput.schema.json +1 -0
  121. package/dist/.pikku/schemas/schemas/PikkuMiddlewareOutput.schema.json +1 -0
  122. package/dist/.pikku/schemas/schemas/PikkuPermissionsOutput.schema.json +1 -0
  123. package/dist/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +1 -0
  124. package/dist/.pikku/schemas/schemas/PikkuRPCOutput.schema.json +1 -0
  125. package/dist/.pikku/schemas/schemas/PikkuSchedulerOutput.schema.json +1 -0
  126. package/dist/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -0
  127. package/dist/bin/pikku.js +63 -14
  128. package/dist/src/cli.wiring.d.ts +1 -0
  129. package/dist/src/cli.wiring.js +99 -0
  130. package/dist/src/functions/commands/all.d.ts +1 -0
  131. package/dist/src/functions/commands/all.js +114 -0
  132. package/dist/src/functions/commands/watch.d.ts +1 -0
  133. package/dist/src/functions/commands/watch.js +47 -0
  134. package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.d.ts +1 -0
  135. package/dist/src/{runtimes → functions/runtimes}/nextjs/pikku-command-nextjs.js +33 -12
  136. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.d.ts +1 -0
  137. package/dist/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-backend-wrapper.js +2 -2
  138. package/dist/src/functions/wirings/channels/pikku-channels.d.ts +1 -0
  139. package/dist/src/functions/wirings/channels/pikku-channels.js +19 -0
  140. package/dist/src/functions/wirings/channels/pikku-command-channel-types.d.ts +1 -0
  141. package/dist/src/functions/wirings/channels/pikku-command-channel-types.js +19 -0
  142. package/dist/src/functions/wirings/channels/pikku-command-channels-map.d.ts +1 -0
  143. package/dist/src/functions/wirings/channels/pikku-command-channels-map.js +18 -0
  144. package/dist/src/functions/wirings/channels/pikku-command-channels.d.ts +1 -0
  145. package/dist/src/functions/wirings/channels/pikku-command-channels.js +20 -0
  146. package/dist/src/functions/wirings/channels/pikku-command-websocket-typed.d.ts +1 -0
  147. package/dist/src/functions/wirings/channels/pikku-command-websocket-typed.js +27 -0
  148. package/dist/src/functions/wirings/channels/serialize-channel-types.d.ts +4 -0
  149. package/dist/src/functions/wirings/channels/serialize-channel-types.js +94 -0
  150. package/dist/src/{wirings → functions/wirings}/channels/serialize-typed-channel-map.js +6 -3
  151. package/dist/src/functions/wirings/cli/pikku-command-cli-entry.d.ts +1 -0
  152. package/dist/src/functions/wirings/cli/pikku-command-cli-entry.js +123 -0
  153. package/dist/src/functions/wirings/cli/pikku-command-cli-types.d.ts +1 -0
  154. package/dist/src/functions/wirings/cli/pikku-command-cli-types.js +31 -0
  155. package/dist/src/functions/wirings/cli/pikku-command-cli.d.ts +1 -0
  156. package/dist/src/functions/wirings/cli/pikku-command-cli.js +22 -0
  157. package/dist/src/functions/wirings/cli/serialize-channel-cli-client.d.ts +11 -0
  158. package/dist/src/functions/wirings/cli/serialize-channel-cli-client.js +131 -0
  159. package/dist/src/functions/wirings/cli/serialize-channel-cli.d.ts +9 -0
  160. package/dist/src/functions/wirings/cli/serialize-channel-cli.js +67 -0
  161. package/dist/src/functions/wirings/cli/serialize-cli-types.d.ts +4 -0
  162. package/dist/src/functions/wirings/cli/serialize-cli-types.js +73 -0
  163. package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.d.ts +14 -0
  164. package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.js +51 -0
  165. package/dist/src/functions/wirings/fetch/index.d.ts +1 -0
  166. package/dist/src/functions/wirings/fetch/index.js +27 -0
  167. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.d.ts +1 -0
  168. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.js +33 -0
  169. package/dist/src/functions/wirings/functions/pikku-command-function-types.d.ts +1 -0
  170. package/dist/src/functions/wirings/functions/pikku-command-function-types.js +18 -0
  171. package/dist/src/functions/wirings/functions/pikku-command-functions.d.ts +1 -0
  172. package/dist/src/functions/wirings/functions/pikku-command-functions.js +26 -0
  173. package/dist/src/functions/wirings/functions/pikku-command-services.d.ts +2 -0
  174. package/dist/src/{wirings → functions/wirings}/functions/pikku-command-services.js +36 -29
  175. package/dist/src/functions/wirings/functions/pikku-function-types.d.ts +1 -0
  176. package/dist/src/functions/wirings/functions/pikku-function-types.js +18 -0
  177. package/dist/src/functions/wirings/functions/schemas.d.ts +4 -0
  178. package/dist/src/functions/wirings/functions/schemas.js +20 -0
  179. package/dist/src/{wirings → functions/wirings}/functions/serialize-function-imports.js +4 -21
  180. package/dist/src/functions/wirings/functions/serialize-function-types.d.ts +4 -0
  181. package/dist/src/functions/wirings/functions/serialize-function-types.js +443 -0
  182. package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.d.ts +4 -0
  183. package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.js +30 -0
  184. package/dist/src/{wirings → functions/wirings}/http/openapi-spec-generator.d.ts +4 -2
  185. package/dist/src/{wirings → functions/wirings}/http/openapi-spec-generator.js +2 -2
  186. package/dist/src/functions/wirings/http/pikku-command-http-map.d.ts +1 -0
  187. package/dist/src/functions/wirings/http/pikku-command-http-map.js +18 -0
  188. package/dist/src/functions/wirings/http/pikku-command-http-routes.d.ts +1 -0
  189. package/dist/src/functions/wirings/http/pikku-command-http-routes.js +20 -0
  190. package/dist/src/functions/wirings/http/pikku-command-http-types.d.ts +1 -0
  191. package/dist/src/functions/wirings/http/pikku-command-http-types.js +19 -0
  192. package/dist/src/functions/wirings/http/pikku-command-openapi.d.ts +1 -0
  193. package/dist/src/functions/wirings/http/pikku-command-openapi.js +37 -0
  194. package/dist/src/functions/wirings/http/pikku-http-routes.d.ts +1 -0
  195. package/dist/src/functions/wirings/http/pikku-http-routes.js +20 -0
  196. package/dist/src/functions/wirings/http/serialize-http-types.d.ts +4 -0
  197. package/dist/src/functions/wirings/http/serialize-http-types.js +89 -0
  198. package/dist/src/{wirings → functions/wirings}/http/serialize-typed-http-map.js +2 -2
  199. package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.d.ts +1 -0
  200. package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.js +23 -0
  201. package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.d.ts +1 -0
  202. package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.js +19 -0
  203. package/dist/src/functions/wirings/mcp/pikku-command-mcp.d.ts +1 -0
  204. package/dist/src/{wirings → functions/wirings}/mcp/pikku-command-mcp.js +17 -5
  205. package/dist/src/{wirings → functions/wirings}/mcp/serialize-mcp-json.d.ts +2 -2
  206. package/dist/src/functions/wirings/mcp/serialize-mcp-types.d.ts +4 -0
  207. package/dist/src/functions/wirings/mcp/serialize-mcp-types.js +143 -0
  208. package/dist/src/functions/wirings/middleware/pikku-command-middleware.d.ts +1 -0
  209. package/dist/src/functions/wirings/middleware/pikku-command-middleware.js +36 -0
  210. package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.d.ts +8 -0
  211. package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.js +44 -0
  212. package/dist/src/functions/wirings/middleware/serialize-middleware-imports.d.ts +2 -0
  213. package/dist/src/functions/wirings/middleware/serialize-middleware-imports.js +43 -0
  214. package/dist/src/functions/wirings/permissions/pikku-command-permissions.d.ts +1 -0
  215. package/dist/src/functions/wirings/permissions/pikku-command-permissions.js +28 -0
  216. package/dist/src/functions/wirings/permissions/serialize-permissions-imports.d.ts +2 -0
  217. package/dist/src/functions/wirings/permissions/serialize-permissions-imports.js +43 -0
  218. package/dist/src/functions/wirings/queue/pikku-command-queue-map.d.ts +1 -0
  219. package/dist/src/functions/wirings/queue/pikku-command-queue-map.js +18 -0
  220. package/dist/src/functions/wirings/queue/pikku-command-queue-service.d.ts +1 -0
  221. package/dist/src/functions/wirings/queue/pikku-command-queue-service.js +27 -0
  222. package/dist/src/functions/wirings/queue/pikku-command-queue-types.d.ts +1 -0
  223. package/dist/src/functions/wirings/queue/pikku-command-queue-types.js +19 -0
  224. package/dist/src/functions/wirings/queue/pikku-command-queue.d.ts +1 -0
  225. package/dist/src/functions/wirings/queue/pikku-command-queue.js +21 -0
  226. package/dist/src/functions/wirings/queue/pikku-queue-map.d.ts +1 -0
  227. package/dist/src/functions/wirings/queue/pikku-queue-map.js +18 -0
  228. package/dist/src/functions/wirings/queue/pikku-queue.d.ts +1 -0
  229. package/dist/src/functions/wirings/queue/pikku-queue.js +21 -0
  230. package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-map.js +2 -2
  231. package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-meta.d.ts +1 -1
  232. package/dist/src/functions/wirings/queue/serialize-queue-types.d.ts +4 -0
  233. package/dist/src/functions/wirings/queue/serialize-queue-types.js +30 -0
  234. package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.d.ts +1 -0
  235. package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.js +27 -0
  236. package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.d.ts +2 -0
  237. package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.js +32 -0
  238. package/dist/src/functions/wirings/rpc/pikku-command-rpc.d.ts +1 -0
  239. package/dist/src/functions/wirings/rpc/pikku-command-rpc.js +20 -0
  240. package/dist/src/{wirings → functions/wirings}/rpc/serialize-typed-rpc-map.js +2 -2
  241. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.d.ts +1 -0
  242. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.js +19 -0
  243. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.d.ts +1 -0
  244. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.js +21 -0
  245. package/dist/src/functions/wirings/scheduler/serialize-scheduler-types.d.ts +4 -0
  246. package/dist/src/functions/wirings/scheduler/serialize-scheduler-types.js +28 -0
  247. package/dist/src/middleware/log-command-info-and-time.d.ts +13 -0
  248. package/dist/src/middleware/log-command-info-and-time.js +15 -0
  249. package/dist/src/services/cli-logger-forwarder.service.d.ts +30 -0
  250. package/dist/src/services/cli-logger-forwarder.service.js +64 -0
  251. package/dist/src/services/cli-logger.service.d.ts +23 -0
  252. package/dist/src/services/cli-logger.service.js +77 -0
  253. package/dist/src/services.d.ts +20 -0
  254. package/dist/src/services.js +162 -0
  255. package/dist/src/utils/check-required-types.d.ts +10 -0
  256. package/dist/src/utils/check-required-types.js +31 -0
  257. package/dist/src/utils/custom-types-generator.d.ts +2 -0
  258. package/dist/src/utils/custom-types-generator.js +43 -0
  259. package/dist/src/utils/file-import-path.d.ts +1 -0
  260. package/dist/src/utils/file-import-path.js +43 -0
  261. package/dist/src/utils/file-imports-serializer.d.ts +1 -0
  262. package/dist/src/utils/file-imports-serializer.js +13 -0
  263. package/dist/src/utils/file-writer.d.ts +9 -0
  264. package/dist/src/utils/file-writer.js +50 -0
  265. package/dist/src/utils/generate-bootstrap-file.d.ts +3 -0
  266. package/dist/src/utils/generate-bootstrap-file.js +21 -0
  267. package/dist/src/utils/get-cli-version.d.ts +5 -0
  268. package/dist/src/utils/get-cli-version.js +27 -0
  269. package/dist/src/utils/pikku-cli-config.d.ts +4 -0
  270. package/dist/src/utils/pikku-cli-config.js +224 -0
  271. package/dist/src/utils/pikku-files-and-methods.d.ts +21 -0
  272. package/dist/src/utils/pikku-files-and-methods.js +70 -0
  273. package/dist/src/{schema-generator.d.ts → utils/schema-generator.d.ts} +1 -1
  274. package/dist/src/{schema-generator.js → utils/schema-generator.js} +4 -3
  275. package/dist/src/{serialize-import-map.js → utils/serialize-import-map.js} +1 -4
  276. package/dist/tsconfig.tsbuildinfo +1 -1
  277. package/package.json +13 -11
  278. package/pikku.config.json +26 -0
  279. package/src/cli.wiring.ts +102 -0
  280. package/src/functions/commands/all.ts +153 -0
  281. package/src/functions/commands/watch.ts +58 -0
  282. package/src/functions/runtimes/nextjs/pikku-command-nextjs.ts +111 -0
  283. package/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-backend-wrapper.ts +2 -2
  284. package/src/functions/wirings/channels/pikku-channels.ts +35 -0
  285. package/src/functions/wirings/channels/pikku-command-channel-types.ts +25 -0
  286. package/src/functions/wirings/channels/pikku-command-channels-map.ts +26 -0
  287. package/src/functions/wirings/channels/pikku-command-channels.ts +40 -0
  288. package/src/functions/wirings/channels/pikku-command-websocket-typed.ts +37 -0
  289. package/src/functions/wirings/channels/serialize-channel-types.ts +94 -0
  290. package/src/{wirings → functions/wirings}/channels/serialize-typed-channel-map.ts +6 -3
  291. package/src/functions/wirings/cli/pikku-command-cli-entry.ts +216 -0
  292. package/src/functions/wirings/cli/pikku-command-cli-types.ts +48 -0
  293. package/src/functions/wirings/cli/pikku-command-cli.ts +39 -0
  294. package/src/functions/wirings/cli/serialize-channel-cli-client.ts +171 -0
  295. package/src/functions/wirings/cli/serialize-channel-cli.ts +102 -0
  296. package/src/functions/wirings/cli/serialize-cli-types.ts +79 -0
  297. package/src/functions/wirings/cli/serialize-local-cli-bootstrap.ts +80 -0
  298. package/src/functions/wirings/fetch/index.ts +36 -0
  299. package/src/functions/wirings/functions/pikku-command-function-types-split.ts +60 -0
  300. package/src/functions/wirings/functions/pikku-command-function-types.ts +43 -0
  301. package/src/functions/wirings/functions/pikku-command-functions.ts +59 -0
  302. package/src/functions/wirings/functions/pikku-command-services.ts +111 -0
  303. package/src/functions/wirings/functions/pikku-function-types.ts +43 -0
  304. package/src/functions/wirings/functions/schemas.ts +45 -0
  305. package/src/{wirings → functions/wirings}/functions/serialize-function-imports.ts +4 -30
  306. package/src/functions/wirings/functions/serialize-function-types.ts +453 -0
  307. package/src/functions/wirings/functions/serialize-pikku-types-hub.ts +38 -0
  308. package/src/{wirings → functions/wirings}/http/openapi-spec-generator.ts +5 -2
  309. package/src/functions/wirings/http/pikku-command-http-map.ts +27 -0
  310. package/src/functions/wirings/http/pikku-command-http-routes.ts +36 -0
  311. package/src/functions/wirings/http/pikku-command-http-types.ts +25 -0
  312. package/src/functions/wirings/http/pikku-command-openapi.ts +62 -0
  313. package/src/functions/wirings/http/pikku-http-routes.ts +35 -0
  314. package/src/functions/wirings/http/serialize-http-types.ts +89 -0
  315. package/src/{wirings → functions/wirings}/http/serialize-typed-http-map.ts +2 -2
  316. package/src/functions/wirings/mcp/pikku-command-mcp-json.ts +33 -0
  317. package/src/functions/wirings/mcp/pikku-command-mcp-types.ts +25 -0
  318. package/src/{wirings → functions/wirings}/mcp/pikku-command-mcp.ts +50 -46
  319. package/src/{wirings → functions/wirings}/mcp/serialize-mcp-json.ts +2 -2
  320. package/src/functions/wirings/mcp/serialize-mcp-types.ts +143 -0
  321. package/src/functions/wirings/middleware/pikku-command-middleware.ts +63 -0
  322. package/src/functions/wirings/middleware/serialize-middleware-groups-meta.ts +55 -0
  323. package/src/functions/wirings/middleware/serialize-middleware-imports.ts +78 -0
  324. package/src/functions/wirings/permissions/pikku-command-permissions.ts +49 -0
  325. package/src/functions/wirings/permissions/serialize-permissions-imports.test.ts +274 -0
  326. package/src/functions/wirings/permissions/serialize-permissions-imports.ts +78 -0
  327. package/src/functions/wirings/queue/pikku-command-queue-map.ts +26 -0
  328. package/src/functions/wirings/queue/pikku-command-queue-service.ts +37 -0
  329. package/src/functions/wirings/queue/pikku-command-queue-types.ts +25 -0
  330. package/src/functions/wirings/queue/pikku-command-queue.ts +41 -0
  331. package/src/functions/wirings/queue/pikku-queue-map.ts +26 -0
  332. package/src/functions/wirings/queue/pikku-queue.ts +41 -0
  333. package/src/{wirings → functions/wirings}/queue/serialize-queue-map.ts +2 -2
  334. package/src/{wirings → functions/wirings}/queue/serialize-queue-meta.ts +1 -1
  335. package/src/functions/wirings/queue/serialize-queue-types.ts +30 -0
  336. package/src/functions/wirings/rpc/pikku-command-rpc-client.ts +35 -0
  337. package/src/functions/wirings/rpc/pikku-command-rpc-map.ts +48 -0
  338. package/src/functions/wirings/rpc/pikku-command-rpc.ts +26 -0
  339. package/src/{wirings → functions/wirings}/rpc/serialize-typed-rpc-map.ts +2 -2
  340. package/src/functions/wirings/scheduler/pikku-command-scheduler-types.ts +25 -0
  341. package/src/functions/wirings/scheduler/pikku-command-scheduler.ts +41 -0
  342. package/src/functions/wirings/scheduler/serialize-scheduler-types.ts +28 -0
  343. package/src/middleware/log-command-info-and-time.ts +35 -0
  344. package/src/services/cli-logger-forwarder.service.ts +90 -0
  345. package/src/services/cli-logger.service.ts +93 -0
  346. package/src/services.ts +240 -0
  347. package/src/utils/check-required-types.ts +53 -0
  348. package/src/utils/custom-types-generator.ts +55 -0
  349. package/src/{utils.test.ts → utils/file-import-path.test.ts} +1 -1
  350. package/src/utils/file-import-path.ts +53 -0
  351. package/src/utils/file-imports-serializer.ts +25 -0
  352. package/src/utils/file-writer.ts +72 -0
  353. package/src/utils/generate-bootstrap-file.ts +43 -0
  354. package/src/utils/get-cli-version.ts +28 -0
  355. package/src/utils/pikku-cli-config.ts +327 -0
  356. package/src/utils/pikku-files-and-methods.ts +148 -0
  357. package/src/{schema-generator.ts → utils/schema-generator.ts} +10 -4
  358. package/src/{serialize-import-map.ts → utils/serialize-import-map.ts} +1 -5
  359. package/tsconfig.json +2 -2
  360. package/types/application-types.d.ts +23 -0
  361. package/types/config.d.ts +204 -0
  362. package/bin/pikku-all.ts +0 -349
  363. package/bin/pikku-fetch.ts +0 -27
  364. package/bin/pikku-nextjs.ts +0 -44
  365. package/bin/pikku-openapi.ts +0 -31
  366. package/bin/pikku-queue-service.ts +0 -28
  367. package/bin/pikku-rpc.ts +0 -28
  368. package/bin/pikku-schemas.ts +0 -31
  369. package/bin/pikku-websocket.ts +0 -28
  370. package/dist/bin/pikku-all.d.ts +0 -4
  371. package/dist/bin/pikku-all.js +0 -194
  372. package/dist/bin/pikku-fetch.d.ts +0 -4
  373. package/dist/bin/pikku-fetch.js +0 -19
  374. package/dist/bin/pikku-nextjs.d.ts +0 -4
  375. package/dist/bin/pikku-nextjs.js +0 -24
  376. package/dist/bin/pikku-openapi.d.ts +0 -2
  377. package/dist/bin/pikku-openapi.js +0 -19
  378. package/dist/bin/pikku-queue-service.d.ts +0 -4
  379. package/dist/bin/pikku-queue-service.js +0 -19
  380. package/dist/bin/pikku-rpc.d.ts +0 -4
  381. package/dist/bin/pikku-rpc.js +0 -19
  382. package/dist/bin/pikku-schemas.d.ts +0 -2
  383. package/dist/bin/pikku-schemas.js +0 -21
  384. package/dist/bin/pikku-websocket.d.ts +0 -4
  385. package/dist/bin/pikku-websocket.js +0 -19
  386. package/dist/src/inspector-glob.d.ts +0 -2
  387. package/dist/src/inspector-glob.js +0 -12
  388. package/dist/src/pikku-cli-config.d.ts +0 -56
  389. package/dist/src/pikku-cli-config.js +0 -203
  390. package/dist/src/pikku-command-schemas.d.ts +0 -2
  391. package/dist/src/pikku-command-schemas.js +0 -8
  392. package/dist/src/runtimes/nextjs/pikku-command-nextjs.d.ts +0 -2
  393. package/dist/src/runtimes/nextjs/serialize-nextjs-backend-wrapper.d.ts +0 -1
  394. package/dist/src/schemas.d.ts +0 -2
  395. package/dist/src/schemas.js +0 -8
  396. package/dist/src/serialize-pikku-types.d.ts +0 -4
  397. package/dist/src/serialize-pikku-types.js +0 -605
  398. package/dist/src/types.d.ts +0 -5
  399. package/dist/src/utils.d.ts +0 -60
  400. package/dist/src/utils.js +0 -248
  401. package/dist/src/wirings/channels/pikku-channels.d.ts +0 -2
  402. package/dist/src/wirings/channels/pikku-channels.js +0 -9
  403. package/dist/src/wirings/channels/pikku-command-channels-map.d.ts +0 -2
  404. package/dist/src/wirings/channels/pikku-command-channels-map.js +0 -8
  405. package/dist/src/wirings/channels/pikku-command-channels.d.ts +0 -2
  406. package/dist/src/wirings/channels/pikku-command-channels.js +0 -9
  407. package/dist/src/wirings/channels/pikku-command-websocket-typed.d.ts +0 -2
  408. package/dist/src/wirings/channels/pikku-command-websocket-typed.js +0 -15
  409. package/dist/src/wirings/fetch/index.d.ts +0 -2
  410. package/dist/src/wirings/fetch/index.js +0 -12
  411. package/dist/src/wirings/functions/pikku-command-function-types.d.ts +0 -2
  412. package/dist/src/wirings/functions/pikku-command-function-types.js +0 -13
  413. package/dist/src/wirings/functions/pikku-command-functions.d.ts +0 -2
  414. package/dist/src/wirings/functions/pikku-command-functions.js +0 -14
  415. package/dist/src/wirings/functions/pikku-command-services.d.ts +0 -3
  416. package/dist/src/wirings/functions/pikku-function-types.d.ts +0 -2
  417. package/dist/src/wirings/functions/pikku-function-types.js +0 -13
  418. package/dist/src/wirings/http/pikku-command-http-map.d.ts +0 -2
  419. package/dist/src/wirings/http/pikku-command-http-map.js +0 -8
  420. package/dist/src/wirings/http/pikku-command-http-routes.d.ts +0 -2
  421. package/dist/src/wirings/http/pikku-command-http-routes.js +0 -9
  422. package/dist/src/wirings/http/pikku-command-openapi.d.ts +0 -2
  423. package/dist/src/wirings/http/pikku-command-openapi.js +0 -20
  424. package/dist/src/wirings/http/pikku-http-routes.d.ts +0 -2
  425. package/dist/src/wirings/http/pikku-http-routes.js +0 -9
  426. package/dist/src/wirings/mcp/pikku-command-mcp-json.d.ts +0 -2
  427. package/dist/src/wirings/mcp/pikku-command-mcp-json.js +0 -13
  428. package/dist/src/wirings/mcp/pikku-command-mcp.d.ts +0 -2
  429. package/dist/src/wirings/queue/pikku-command-queue-map.d.ts +0 -2
  430. package/dist/src/wirings/queue/pikku-command-queue-map.js +0 -8
  431. package/dist/src/wirings/queue/pikku-command-queue-service.d.ts +0 -2
  432. package/dist/src/wirings/queue/pikku-command-queue-service.js +0 -15
  433. package/dist/src/wirings/queue/pikku-command-queue.d.ts +0 -2
  434. package/dist/src/wirings/queue/pikku-command-queue.js +0 -10
  435. package/dist/src/wirings/queue/pikku-queue-map.d.ts +0 -2
  436. package/dist/src/wirings/queue/pikku-queue-map.js +0 -8
  437. package/dist/src/wirings/queue/pikku-queue.d.ts +0 -2
  438. package/dist/src/wirings/queue/pikku-queue.js +0 -10
  439. package/dist/src/wirings/rpc/pikku-command-rpc-client.d.ts +0 -2
  440. package/dist/src/wirings/rpc/pikku-command-rpc-client.js +0 -15
  441. package/dist/src/wirings/rpc/pikku-command-rpc-map.d.ts +0 -3
  442. package/dist/src/wirings/rpc/pikku-command-rpc-map.js +0 -14
  443. package/dist/src/wirings/rpc/pikku-command-rpc.d.ts +0 -2
  444. package/dist/src/wirings/rpc/pikku-command-rpc.js +0 -8
  445. package/dist/src/wirings/scheduler/pikku-command-scheduler.d.ts +0 -2
  446. package/dist/src/wirings/scheduler/pikku-command-scheduler.js +0 -10
  447. package/src/inspector-glob.ts +0 -30
  448. package/src/pikku-cli-config.ts +0 -387
  449. package/src/pikku-command-schemas.ts +0 -35
  450. package/src/runtimes/nextjs/pikku-command-nextjs.ts +0 -110
  451. package/src/schemas.ts +0 -35
  452. package/src/serialize-pikku-types.ts +0 -613
  453. package/src/types.ts +0 -16
  454. package/src/utils.ts +0 -420
  455. package/src/wirings/channels/pikku-channels.ts +0 -41
  456. package/src/wirings/channels/pikku-command-channels-map.ts +0 -26
  457. package/src/wirings/channels/pikku-command-channels.ts +0 -39
  458. package/src/wirings/channels/pikku-command-websocket-typed.ts +0 -36
  459. package/src/wirings/fetch/index.ts +0 -33
  460. package/src/wirings/functions/pikku-command-function-types.ts +0 -53
  461. package/src/wirings/functions/pikku-command-functions.ts +0 -48
  462. package/src/wirings/functions/pikku-command-services.ts +0 -125
  463. package/src/wirings/functions/pikku-function-types.ts +0 -52
  464. package/src/wirings/http/pikku-command-http-map.ts +0 -27
  465. package/src/wirings/http/pikku-command-http-routes.ts +0 -40
  466. package/src/wirings/http/pikku-command-openapi.ts +0 -55
  467. package/src/wirings/http/pikku-http-routes.ts +0 -40
  468. package/src/wirings/mcp/pikku-command-mcp-json.ts +0 -33
  469. package/src/wirings/queue/pikku-command-queue-map.ts +0 -26
  470. package/src/wirings/queue/pikku-command-queue-service.ts +0 -36
  471. package/src/wirings/queue/pikku-command-queue.ts +0 -45
  472. package/src/wirings/queue/pikku-queue-map.ts +0 -26
  473. package/src/wirings/queue/pikku-queue.ts +0 -43
  474. package/src/wirings/rpc/pikku-command-rpc-client.ts +0 -35
  475. package/src/wirings/rpc/pikku-command-rpc-map.ts +0 -49
  476. package/src/wirings/rpc/pikku-command-rpc.ts +0 -24
  477. package/src/wirings/scheduler/pikku-command-scheduler.ts +0 -43
  478. /package/dist/{src/types.js → .pikku/channel/pikku-channels-meta.gen.d.ts} +0 -0
  479. /package/dist/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-http-wrapper.d.ts +0 -0
  480. /package/dist/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-http-wrapper.js +0 -0
  481. /package/dist/src/{wirings → functions/wirings}/channels/serialize-typed-channel-map.d.ts +0 -0
  482. /package/dist/src/{wirings → functions/wirings}/channels/serialize-websocket-wrapper.d.ts +0 -0
  483. /package/dist/src/{wirings → functions/wirings}/channels/serialize-websocket-wrapper.js +0 -0
  484. /package/dist/src/{wirings → functions/wirings}/functions/serialize-function-imports.d.ts +0 -0
  485. /package/dist/src/{wirings → functions/wirings}/http/serialize-fetch-wrapper.d.ts +0 -0
  486. /package/dist/src/{wirings → functions/wirings}/http/serialize-fetch-wrapper.js +0 -0
  487. /package/dist/src/{wirings → functions/wirings}/http/serialize-typed-http-map.d.ts +0 -0
  488. /package/dist/src/{wirings → functions/wirings}/mcp/serialize-mcp-json.js +0 -0
  489. /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-map.d.ts +0 -0
  490. /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-meta.js +0 -0
  491. /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-wrapper.d.ts +0 -0
  492. /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-wrapper.js +0 -0
  493. /package/dist/src/{wirings → functions/wirings}/rpc/serialize-rpc-wrapper.d.ts +0 -0
  494. /package/dist/src/{wirings → functions/wirings}/rpc/serialize-rpc-wrapper.js +0 -0
  495. /package/dist/src/{wirings → functions/wirings}/rpc/serialize-typed-rpc-map.d.ts +0 -0
  496. /package/dist/src/{wirings → functions/wirings}/scheduler/serialize-scheduler-meta.d.ts +0 -0
  497. /package/dist/src/{wirings → functions/wirings}/scheduler/serialize-scheduler-meta.js +0 -0
  498. /package/dist/src/{serialize-import-map.d.ts → utils/serialize-import-map.d.ts} +0 -0
  499. /package/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-http-wrapper.ts +0 -0
  500. /package/src/{wirings → functions/wirings}/channels/serialize-websocket-wrapper.ts +0 -0
  501. /package/src/{wirings → functions/wirings}/http/serialize-fetch-wrapper.ts +0 -0
  502. /package/src/{wirings → functions/wirings}/queue/serialize-queue-wrapper.ts +0 -0
  503. /package/src/{wirings → functions/wirings}/rpc/serialize-rpc-wrapper.ts +0 -0
  504. /package/src/{wirings → functions/wirings}/scheduler/serialize-scheduler-meta.ts +0 -0
@@ -0,0 +1,114 @@
1
+ import { existsSync } from 'fs';
2
+ import { pikkuVoidFunc } from '../../../.pikku/pikku-types.gen.js';
3
+ import { getFileImportRelativePath } from '../../utils/file-import-path.js';
4
+ import { writeFileInDir } from '../../utils/file-writer.js';
5
+ export const all = pikkuVoidFunc({
6
+ func: async ({ logger, config, rpc, getInspectorState }) => {
7
+ const allImports = [];
8
+ let typesDeclarationFileExists = true;
9
+ if (!existsSync(config.typesDeclarationFile)) {
10
+ typesDeclarationFileExists = false;
11
+ }
12
+ await rpc.invoke('pikkuFunctionTypes', null);
13
+ // This is needed since the wireHTTP function will add the routes to the visitState
14
+ if (!typesDeclarationFileExists) {
15
+ logger.info(`• Type file first created, inspecting again...\x1b[0m`);
16
+ await getInspectorState(true);
17
+ }
18
+ // Generate wiring-specific type files for tree-shaking
19
+ await rpc.invoke('pikkuFunctionTypesSplit', null);
20
+ await rpc.invoke('pikkuHTTPTypes', null);
21
+ await rpc.invoke('pikkuChannelTypes', null);
22
+ await rpc.invoke('pikkuSchedulerTypes', null);
23
+ await rpc.invoke('pikkuQueueTypes', null);
24
+ await rpc.invoke('pikkuMCPTypes', null);
25
+ await rpc.invoke('pikkuCLITypes', null);
26
+ const hasFunctionRegistrations = await rpc.invoke('pikkuFunctions', null);
27
+ // Generate and register middleware
28
+ const middleware = await rpc.invoke('pikkuMiddleware', null);
29
+ // Middleware must be imported before functions meta to ensure registration happens first
30
+ if (middleware) {
31
+ allImports.push(config.middlewareFile);
32
+ }
33
+ // Generate and register permissions
34
+ const permissions = await rpc.invoke('pikkuPermissions', null);
35
+ // Permissions must be imported before functions meta to ensure registration happens first
36
+ if (permissions) {
37
+ allImports.push(config.permissionsFile);
38
+ }
39
+ // Always import functions meta (needed for all function metadata)
40
+ allImports.push(config.functionsMetaFile);
41
+ // Only import functionsFile if it was generated (has internal/external RPCs)
42
+ if (hasFunctionRegistrations) {
43
+ allImports.push(config.functionsFile);
44
+ }
45
+ // Generate services map
46
+ await rpc.invoke('pikkuServices', null);
47
+ const hasInternalRPCs = await rpc.invoke('pikkuRPC', null);
48
+ await rpc.invoke('pikkuRPCInternalMap', null);
49
+ await rpc.invoke('pikkuRPCExposedMap', null);
50
+ await rpc.invoke('pikkuRPCClient', null);
51
+ if (hasInternalRPCs) {
52
+ allImports.push(config.rpcInternalWiringMetaFile);
53
+ }
54
+ const schemas = await rpc.invoke('pikkuSchemas', null);
55
+ if (schemas) {
56
+ allImports.push(`${config.schemaDirectory}/register.gen.ts`);
57
+ }
58
+ // Generate HTTP
59
+ const http = await rpc.invoke('pikkuHTTP', null);
60
+ if (http) {
61
+ await rpc.invoke('pikkuHTTPMap', null);
62
+ await rpc.invoke('pikkuFetch', null);
63
+ allImports.push(config.httpWiringMetaFile, config.httpWiringsFile);
64
+ }
65
+ // Generate Scheduler
66
+ const scheduler = await rpc.invoke('pikkuScheduler', null);
67
+ if (scheduler) {
68
+ allImports.push(config.schedulersWiringMetaFile, config.schedulersWiringFile);
69
+ }
70
+ // Generate Queues
71
+ const queues = await rpc.invoke('pikkuQueue', null);
72
+ if (queues) {
73
+ await rpc.invoke('pikkuQueueMap', null);
74
+ await rpc.invoke('pikkuQueueService', null);
75
+ allImports.push(config.queueWorkersWiringMetaFile, config.queueWorkersWiringFile);
76
+ }
77
+ // Generate Channels
78
+ const channels = await rpc.invoke('pikkuChannels', null);
79
+ if (channels) {
80
+ await rpc.invoke('pikkuChannelsMap', null);
81
+ await rpc.invoke('pikkuWebSocketTyped', null);
82
+ allImports.push(config.channelsWiringMetaFile, config.channelsWiringFile);
83
+ }
84
+ // Generate MCP
85
+ const mcp = await rpc.invoke('pikkuMCP', null);
86
+ if (mcp) {
87
+ await rpc.invoke('pikkuMCPJSON', null);
88
+ allImports.push(config.mcpWiringsMetaFile, config.mcpWiringsFile);
89
+ }
90
+ // Generate CLI
91
+ const cli = await rpc.invoke('pikkuCLI', null);
92
+ if (cli) {
93
+ await rpc.invoke('pikkuCLIEntry', null);
94
+ allImports.push(config.cliWiringMetaFile, config.cliWiringsFile);
95
+ }
96
+ if (config.nextBackendFile || config.nextHTTPFile) {
97
+ await rpc.invoke('pikkuNext', null);
98
+ }
99
+ if (config.openAPI) {
100
+ logger.info(`• OpenAPI requires a reinspection to pickup new generated types..`);
101
+ await getInspectorState(true);
102
+ await rpc.invoke('pikkuOpenAPI', null);
103
+ }
104
+ // Generate main bootstrap file (pass all imports directly since this is the main file)
105
+ await writeFileInDir(logger, config.bootstrapFile, allImports
106
+ .map((to) => `import '${getFileImportRelativePath(config.bootstrapFile, to, config.packageMappings)}'`)
107
+ .sort((to) => (to.includes('meta') ? -1 : 1)) // Ensure meta files are at the top
108
+ .join('\n'));
109
+ // Check for critical errors and exit if any were logged
110
+ if (logger.hasCriticalErrors()) {
111
+ process.exit(1);
112
+ }
113
+ },
114
+ });
@@ -0,0 +1 @@
1
+ export declare const watch: any;
@@ -0,0 +1,47 @@
1
+ import { pikkuVoidFunc } from '../../../.pikku/pikku-types.gen.js';
2
+ import chokidar from 'chokidar';
3
+ export const watch = pikkuVoidFunc({
4
+ func: async ({ logger, config, rpc }) => {
5
+ const configWatcher = chokidar.watch(config.srcDirectories, {
6
+ ignoreInitial: true,
7
+ ignored: /.*\.gen\.tsx?/,
8
+ });
9
+ let watcher = new chokidar.FSWatcher({});
10
+ const generatorWatcher = () => {
11
+ watcher.close();
12
+ logger.info(`• Watching directories: \n - ${config.srcDirectories.join('\n - ')}`);
13
+ watcher = chokidar.watch(config.srcDirectories, {
14
+ ignoreInitial: true,
15
+ ignored: /.*\.gen\.ts/,
16
+ });
17
+ watcher.on('ready', async () => {
18
+ const handle = async () => {
19
+ try {
20
+ const start = Date.now();
21
+ await rpc.invoke('all', null);
22
+ logger.info({
23
+ message: `✓ Generated in ${Date.now() - start}ms`,
24
+ type: 'timing',
25
+ });
26
+ }
27
+ catch (err) {
28
+ logger.error(err);
29
+ }
30
+ };
31
+ await handle();
32
+ let timeout;
33
+ const deduped = (_file) => {
34
+ if (timeout) {
35
+ clearTimeout(timeout);
36
+ }
37
+ timeout = setTimeout(handle, 10);
38
+ };
39
+ watcher.on('change', deduped);
40
+ watcher.on('add', deduped);
41
+ watcher.on('unlink', deduped);
42
+ });
43
+ };
44
+ configWatcher.on('ready', generatorWatcher);
45
+ configWatcher.on('change', generatorWatcher);
46
+ },
47
+ });
@@ -0,0 +1 @@
1
+ export declare const pikkuNext: any;
@@ -1,29 +1,44 @@
1
- import { logCommandInfoAndTime, getPikkuFilesAndMethods, getFileImportRelativePath, writeFileInDir, } from '../../utils.js';
1
+ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
2
+ import { checkRequiredTypes } from '../../../utils/check-required-types.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';
2
6
  import { serializeNextJsBackendWrapper as serializeNextBackendWrapper } from './serialize-nextjs-backend-wrapper.js';
3
7
  import { serializeNextJsHTTPWrapper as serializeNextHTTPWrapper } from './serialize-nextjs-http-wrapper.js';
4
- export const pikkuNext = async (logger, { nextBackendFile, nextHTTPFile, httpMapDeclarationFile, packageMappings, fetchFile, bootstrapFiles, }, visitState, options = {}) => {
5
- return await logCommandInfoAndTime(logger, 'Generating nextjs wrapper', 'Generated nextjs wrapper', [
6
- nextBackendFile === undefined && nextHTTPFile === undefined,
7
- 'nextjs outfile is not defined',
8
- ], async () => {
8
+ export const pikkuNext = pikkuSessionlessFunc({
9
+ func: async ({ logger, config, getInspectorState }) => {
10
+ const { nextBackendFile, nextHTTPFile, httpMapDeclarationFile, packageMappings, fetchFile, } = config;
11
+ // If both files are undefined, clean up any existing files and return
9
12
  if (!nextBackendFile && !nextHTTPFile) {
10
- throw new Error('nextBackendFile or nextHTTPFile is required in pikku config for nextJS');
13
+ logger.info({
14
+ message: 'Skipping generating nextjs wrapper since nextjs outfile is not defined.',
15
+ type: 'skip',
16
+ });
17
+ return;
11
18
  }
19
+ const visitState = await getInspectorState();
12
20
  if (nextHTTPFile && !fetchFile) {
13
21
  throw new Error('fetchFile is required in pikku config in order for nextJS http wrapper to work');
14
22
  }
15
23
  if (nextBackendFile) {
16
- const { pikkuConfigFactory, singletonServicesFactory, sessionServicesFactory, } = await getPikkuFilesAndMethods(logger, visitState, packageMappings, nextBackendFile, options, {
24
+ // Check for required types
25
+ checkRequiredTypes(visitState.filesAndMethodsErrors, {
17
26
  config: true,
18
27
  singletonServicesFactory: true,
19
28
  sessionServicesFactory: true,
20
29
  });
30
+ const { pikkuConfigFactory, singletonServicesFactory, sessionServicesFactory, } = visitState.filesAndMethods;
31
+ if (!pikkuConfigFactory ||
32
+ !singletonServicesFactory ||
33
+ !sessionServicesFactory) {
34
+ throw new Error('Required types not found');
35
+ }
21
36
  const pikkuConfigImport = `import { ${pikkuConfigFactory.variable} as createConfig } from '${getFileImportRelativePath(nextBackendFile, pikkuConfigFactory.file, packageMappings)}'`;
22
37
  const singletonServicesImport = `import { ${singletonServicesFactory.variable} as createSingletonServices } from '${getFileImportRelativePath(nextBackendFile, singletonServicesFactory.file, packageMappings)}'`;
23
38
  const sessionServicesImport = `import { ${sessionServicesFactory.variable} as createSessionServices } from '${getFileImportRelativePath(nextBackendFile, sessionServicesFactory.file, packageMappings)}'`;
24
- const httpBootstrapPath = getFileImportRelativePath(nextBackendFile, bootstrapFiles.http, packageMappings);
39
+ const bootstrapPath = getFileImportRelativePath(nextBackendFile, config.bootstrapFile, packageMappings);
25
40
  const routesMapDeclarationPath = getFileImportRelativePath(nextBackendFile, httpMapDeclarationFile, packageMappings);
26
- const content = serializeNextBackendWrapper(httpBootstrapPath, routesMapDeclarationPath, pikkuConfigImport, singletonServicesImport, sessionServicesImport);
41
+ const content = serializeNextBackendWrapper(bootstrapPath, routesMapDeclarationPath, pikkuConfigImport, singletonServicesImport, sessionServicesImport);
27
42
  await writeFileInDir(logger, nextBackendFile, content);
28
43
  }
29
44
  if (nextHTTPFile && fetchFile) {
@@ -32,5 +47,11 @@ export const pikkuNext = async (logger, { nextBackendFile, nextHTTPFile, httpMap
32
47
  const content = serializeNextHTTPWrapper(routesMapDeclarationPath, fetchPath);
33
48
  await writeFileInDir(logger, nextHTTPFile, content);
34
49
  }
35
- });
36
- };
50
+ },
51
+ middleware: [
52
+ logCommandInfoAndTime({
53
+ commandStart: 'Generating nextjs wrapper',
54
+ commandEnd: 'Generated nextjs wrapper',
55
+ }),
56
+ ],
57
+ });
@@ -0,0 +1 @@
1
+ export declare const serializeNextJsBackendWrapper: (bootstrapPath: string, routesMapPath: string, configImport: string, singleServicesFactoryImport: string, sessionServicesImport: string) => string;
@@ -1,4 +1,4 @@
1
- export const serializeNextJsBackendWrapper = (httpBootstrapPath, routesMapPath, configImport, singleServicesFactoryImport, sessionServicesImport) => {
1
+ export const serializeNextJsBackendWrapper = (bootstrapPath, routesMapPath, configImport, singleServicesFactoryImport, sessionServicesImport) => {
2
2
  return `'server-only'
3
3
 
4
4
  /**
@@ -12,7 +12,7 @@ ${configImport}
12
12
  ${singleServicesFactoryImport}
13
13
  ${sessionServicesImport}
14
14
 
15
- import '${httpBootstrapPath}'
15
+ import '${bootstrapPath}'
16
16
 
17
17
  let _pikku: PikkuNextJS | undefined
18
18
 
@@ -0,0 +1 @@
1
+ export declare const pikkuChannels: any;
@@ -0,0 +1,19 @@
1
+ import { pikkuVoidFunc } 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
+ export const pikkuChannels = pikkuVoidFunc({
6
+ func: async ({ logger, config, getInspectorState }) => {
7
+ const visitState = await getInspectorState();
8
+ const { channelsWiringFile, channelsWiringMetaFile, packageMappings } = config;
9
+ const { channels } = visitState;
10
+ await writeFileInDir(logger, channelsWiringFile, serializeFileImports('addChannel', channelsWiringFile, channels.files, packageMappings));
11
+ await writeFileInDir(logger, channelsWiringMetaFile, `import { pikkuState } from '@pikku/core'\npikkuState('channel', 'meta', ${JSON.stringify(channels.meta, null, 2)})`);
12
+ },
13
+ middleware: [
14
+ logCommandInfoAndTime({
15
+ commandStart: 'Finding Channels',
16
+ commandEnd: 'Found channels',
17
+ }),
18
+ ],
19
+ });
@@ -0,0 +1 @@
1
+ export declare const pikkuChannelTypes: any;
@@ -0,0 +1,19 @@
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 { serializeChannelTypes } from './serialize-channel-types.js';
6
+ export const pikkuChannelTypes = pikkuSessionlessFunc({
7
+ func: async ({ logger, config }) => {
8
+ const { channelsTypesFile, functionTypesFile, packageMappings } = config;
9
+ const functionTypesImportPath = getFileImportRelativePath(channelsTypesFile, functionTypesFile, packageMappings);
10
+ const content = serializeChannelTypes(functionTypesImportPath);
11
+ await writeFileInDir(logger, channelsTypesFile, content);
12
+ },
13
+ middleware: [
14
+ logCommandInfoAndTime({
15
+ commandStart: 'Creating channel types',
16
+ commandEnd: 'Created channel types',
17
+ }),
18
+ ],
19
+ });
@@ -0,0 +1 @@
1
+ export declare const pikkuChannelsMap: any;
@@ -0,0 +1,18 @@
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 { serializeTypedChannelsMap } from './serialize-typed-channel-map.js';
5
+ export const pikkuChannelsMap = pikkuSessionlessFunc({
6
+ func: async ({ logger, config, getInspectorState }) => {
7
+ const state = await getInspectorState();
8
+ const { channelsMapDeclarationFile, packageMappings } = config;
9
+ const content = serializeTypedChannelsMap(channelsMapDeclarationFile, packageMappings, state.functions.typesMap, state.functions.meta, state.channels.meta);
10
+ await writeFileInDir(logger, channelsMapDeclarationFile, content);
11
+ },
12
+ middleware: [
13
+ logCommandInfoAndTime({
14
+ commandStart: 'Creating channels map',
15
+ commandEnd: 'Created channels map',
16
+ }),
17
+ ],
18
+ });
@@ -0,0 +1 @@
1
+ export declare const pikkuChannels: any;
@@ -0,0 +1,20 @@
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
+ export const pikkuChannels = pikkuSessionlessFunc({
6
+ func: async ({ logger, config, getInspectorState }) => {
7
+ const visitState = await getInspectorState();
8
+ const { channelsWiringFile, channelsWiringMetaFile, packageMappings } = config;
9
+ const { channels } = visitState;
10
+ await writeFileInDir(logger, channelsWiringFile, serializeFileImports('addChannel', channelsWiringFile, channels.files, packageMappings));
11
+ await writeFileInDir(logger, channelsWiringMetaFile, `import { pikkuState } from '@pikku/core'\npikkuState('channel', 'meta', ${JSON.stringify(channels.meta, null, 2)})`);
12
+ return true;
13
+ },
14
+ middleware: [
15
+ logCommandInfoAndTime({
16
+ commandStart: 'Finding Channels',
17
+ commandEnd: 'Found channels',
18
+ }),
19
+ ],
20
+ });
@@ -0,0 +1 @@
1
+ export declare const pikkuWebSocketTyped: any;
@@ -0,0 +1,27 @@
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 { serializeWebsocketWrapper } from './serialize-websocket-wrapper.js';
6
+ export const pikkuWebSocketTyped = pikkuSessionlessFunc({
7
+ func: async ({ logger, config }) => {
8
+ const { websocketFile, channelsMapDeclarationFile, packageMappings } = config;
9
+ // If websocketFile is not set, clean up any existing file and return
10
+ if (!websocketFile) {
11
+ logger.info({
12
+ message: "Skipping generating websocket wrapper since websocketFile isn't set in the pikku config.",
13
+ type: 'skip',
14
+ });
15
+ return;
16
+ }
17
+ const channelsMapDeclarationPath = getFileImportRelativePath(websocketFile, channelsMapDeclarationFile, packageMappings);
18
+ const content = [serializeWebsocketWrapper(channelsMapDeclarationPath)];
19
+ await writeFileInDir(logger, websocketFile, content.join('\n'));
20
+ },
21
+ middleware: [
22
+ logCommandInfoAndTime({
23
+ commandStart: 'Generating websocket wrapper',
24
+ commandEnd: 'Generated websocket wrapper',
25
+ }),
26
+ ],
27
+ });
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Generates type definitions for WebSocket channel wirings
3
+ */
4
+ export declare const serializeChannelTypes: (functionTypesImportPath: string) => string;
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Generates type definitions for WebSocket channel wirings
3
+ */
4
+ export const serializeChannelTypes = (functionTypesImportPath) => {
5
+ return `/**
6
+
7
+ * Channel-specific type definitions for tree-shaking optimization
8
+ */
9
+
10
+ import { CoreChannel, wireChannel as wireChannelCore } from '@pikku/core/channel'
11
+ import { CorePikkuFunctionConfig } from '@pikku/core'
12
+ import { AssertHTTPWiringParams } from '@pikku/core/http'
13
+ import type { PikkuFunctionSessionless, PikkuPermission, PikkuMiddleware } from '${functionTypesImportPath}'
14
+
15
+ /**
16
+ * Type definition for WebSocket channels with typed data exchange.
17
+ * Supports connection, disconnection, and message handling.
18
+ *
19
+ * @template ChannelData - Type of data exchanged through the channel
20
+ * @template Channel - String literal type for the channel name
21
+ */
22
+ type ChannelWiring<ChannelData, Channel extends string> = CoreChannel<
23
+ ChannelData,
24
+ Channel,
25
+ CorePikkuFunctionConfig<PikkuFunctionSessionless<void, any, ChannelData>, PikkuPermission<void>, PikkuMiddleware>,
26
+ CorePikkuFunctionConfig<PikkuFunctionSessionless<void, void, ChannelData>, PikkuPermission<void>, PikkuMiddleware>,
27
+ CorePikkuFunctionConfig<PikkuFunctionSessionless<any, any, ChannelData>, PikkuPermission<any>, PikkuMiddleware>,
28
+ PikkuPermission,
29
+ PikkuMiddleware
30
+ >
31
+
32
+ /**
33
+ * Creates a function that handles WebSocket channel connections.
34
+ * Called when a client connects to a channel.
35
+ *
36
+ * @template Out - Output type for connection response
37
+ * @param func - Function definition, either direct function or configuration object
38
+ * @returns The normalized configuration object
39
+ */
40
+ export const pikkuChannelConnectionFunc = <Out = unknown>(
41
+ func:
42
+ | PikkuFunctionSessionless<void, Out, unknown>
43
+ | CorePikkuFunctionConfig<PikkuFunctionSessionless<void, Out, unknown>, PikkuPermission<void>, PikkuMiddleware>
44
+ ) => {
45
+ return typeof func === 'function' ? { func } : func
46
+ }
47
+
48
+ /**
49
+ * Creates a function that handles WebSocket channel disconnections.
50
+ * Called when a client disconnects from a channel.
51
+ *
52
+ * @param func - Function definition, either direct function or configuration object
53
+ * @returns The normalized configuration object
54
+ */
55
+ export const pikkuChannelDisconnectionFunc = (
56
+ func:
57
+ | PikkuFunctionSessionless<void, void, unknown>
58
+ | CorePikkuFunctionConfig<PikkuFunctionSessionless<void, void, unknown>, PikkuPermission<void>, PikkuMiddleware>
59
+ ) => {
60
+ return typeof func === 'function' ? { func } : func
61
+ }
62
+
63
+ /**
64
+ * Creates a function that handles WebSocket channel messages.
65
+ * Called when a message is received on a channel.
66
+ * This is the same as pikkuSessionlessFunc but with ChannelData = unknown by default.
67
+ *
68
+ * @template In - Input type for channel messages
69
+ * @template Out - Output type for channel responses
70
+ * @param func - Function definition, either direct function or configuration object
71
+ * @returns The normalized configuration object
72
+ */
73
+ export const pikkuChannelFunc = <In, Out = unknown>(
74
+ func:
75
+ | PikkuFunctionSessionless<In, Out, unknown>
76
+ | CorePikkuFunctionConfig<PikkuFunctionSessionless<In, Out, unknown>, PikkuPermission<In>, PikkuMiddleware>
77
+ ) => {
78
+ return typeof func === 'function' ? { func } : func
79
+ }
80
+
81
+ /**
82
+ * Registers a WebSocket channel with the Pikku framework.
83
+ *
84
+ * @template ChannelData - Type of data associated with the channel
85
+ * @template Channel - String literal type for the channel name
86
+ * @param channel - Channel definition with connection, disconnection, and message handlers
87
+ */
88
+ export const wireChannel = <ChannelData, Channel extends string>(
89
+ channel: ChannelWiring<ChannelData, Channel> & AssertHTTPWiringParams<ChannelData, Channel>
90
+ ) => {
91
+ wireChannelCore(channel as any) // TODO
92
+ }
93
+ `;
94
+ };
@@ -1,10 +1,13 @@
1
- import { serializeImportMap } from '../../serialize-import-map.js';
2
- import { generateCustomTypes } from '../../utils.js';
1
+ import { serializeImportMap } from '../../../utils/serialize-import-map.js';
2
+ import { generateCustomTypes } from '../../../utils/custom-types-generator.js';
3
3
  export const serializeTypedChannelsMap = (relativeToPath, packageMappings, typesMap, functionsMeta, channelsMeta) => {
4
4
  const { channels, requiredTypes } = generateChannels(functionsMeta, channelsMeta);
5
5
  typesMap.customTypes.forEach(({ references }) => {
6
6
  for (const reference of references) {
7
- requiredTypes.add(reference);
7
+ // Skip __object types (placeholder types for invalid/broken functions)
8
+ if (reference !== '__object' && !reference.startsWith('__object_')) {
9
+ requiredTypes.add(reference);
10
+ }
8
11
  }
9
12
  });
10
13
  const imports = serializeImportMap(relativeToPath, packageMappings, typesMap, requiredTypes);
@@ -0,0 +1 @@
1
+ export declare const pikkuCLIEntry: any;
@@ -0,0 +1,123 @@
1
+ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
2
+ import { writeFileInDir } from '../../../utils/file-writer.js';
3
+ import { checkRequiredTypes } from '../../../utils/check-required-types.js';
4
+ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
5
+ import { join } from 'node:path';
6
+ import { serializeLocalCLIBootstrap } from './serialize-local-cli-bootstrap.js';
7
+ import { serializeChannelCLI } from './serialize-channel-cli.js';
8
+ import { serializeChannelCLIClient, collectRendererNames, } from './serialize-channel-cli-client.js';
9
+ import { existsSync } from 'fs';
10
+ import { rm } from 'fs/promises';
11
+ import { ErrorCode } from '@pikku/inspector';
12
+ export const pikkuCLIEntry = pikkuSessionlessFunc({
13
+ func: async ({ logger, config, getInspectorState }) => {
14
+ const visitState = await getInspectorState();
15
+ // Check if CLI entrypoints are configured
16
+ if (!config.cli?.entrypoints ||
17
+ Object.keys(config.cli.entrypoints).length === 0) {
18
+ logger.info({
19
+ message: 'No CLI entrypoints configured in config.cli.entrypoints, skipping CLI bootstrap generation',
20
+ type: 'skip',
21
+ });
22
+ return;
23
+ }
24
+ // Generate bootstrap files for each configured entrypoint
25
+ for (const [programName, entrypointConfigs] of Object.entries(config.cli.entrypoints)) {
26
+ const programMeta = visitState.cli.meta.programs[programName];
27
+ if (!programMeta) {
28
+ logger.warn(`CLI program '${programName}' not found in metadata, skipping`);
29
+ continue;
30
+ }
31
+ // Normalize to array
32
+ const configs = Array.isArray(entrypointConfigs)
33
+ ? entrypointConfigs
34
+ : [entrypointConfigs];
35
+ for (const entrypointConfig of configs) {
36
+ // Normalize entrypoint config to get type
37
+ const entrypointType = typeof entrypointConfig === 'string'
38
+ ? 'cli'
39
+ : entrypointConfig.type || 'cli';
40
+ // Handle channel type entrypoint
41
+ if (entrypointType === 'channel') {
42
+ if (typeof entrypointConfig === 'string' ||
43
+ entrypointConfig.type !== 'channel') {
44
+ throw new Error('Channel entrypoint must be a channel type object');
45
+ }
46
+ const channelWirePath = entrypointConfig.wirePath;
47
+ const channelClientPath = entrypointConfig.path;
48
+ const channelName = entrypointConfig.name;
49
+ const channelRoute = entrypointConfig.route;
50
+ const channelWireFile = join(config.rootDir, channelWirePath);
51
+ const channelCode = serializeChannelCLI(programName, programMeta, channelWireFile, visitState.functions.files, config.packageMappings, config.channelsTypesFile, config.functionTypesFile, channelName, channelRoute);
52
+ await writeFileInDir(logger, channelWireFile, channelCode);
53
+ logger.debug(`Serialized CLI channel for ${programName}: ${channelWireFile}`);
54
+ // Generate client code if clientPath is provided
55
+ if (channelClientPath) {
56
+ const channelClientFile = join(config.rootDir, channelClientPath);
57
+ // Validate that renderers don't depend on services (client-side renderers can't access server services)
58
+ const rendererNames = collectRendererNames(programMeta);
59
+ const problematicRenderers = [];
60
+ for (const rendererName of rendererNames) {
61
+ const rendererMeta = visitState.cli.meta.renderers[rendererName];
62
+ if (rendererMeta?.services?.services?.length > 0) {
63
+ problematicRenderers.push({
64
+ name: rendererName,
65
+ services: rendererMeta.services.services,
66
+ });
67
+ }
68
+ }
69
+ // If any renderers depend on services, abort client generation
70
+ if (problematicRenderers.length > 0) {
71
+ const details = problematicRenderers
72
+ .map((r) => ` - ${r.name} depends on: ${r.services.join(', ')}`)
73
+ .join('\n');
74
+ logger.critical(ErrorCode.CLI_CLIENTSIDE_RENDERER_HAS_SERVICES, `Cannot generate CLI channel client for '${programName}': renderers cannot depend on services (client-side execution)\n${details}\n\nRenderers used in CLI-over-channel must be service-free since they execute on the client.`);
75
+ // Delete existing client file if it exists
76
+ if (existsSync(channelClientFile)) {
77
+ await rm(channelClientFile);
78
+ logger.debug(`Deleted existing CLI channel client: ${channelClientFile}`);
79
+ }
80
+ continue;
81
+ }
82
+ const clientCode = serializeChannelCLIClient(programName, programMeta, channelClientFile, config, config.bootstrapFile, channelRoute, visitState.cli.meta.renderers);
83
+ await writeFileInDir(logger, channelClientFile, clientCode);
84
+ logger.debug(`Serialized CLI channel client for ${programName}: ${channelClientFile}`);
85
+ }
86
+ continue;
87
+ }
88
+ // Handle CLI type entrypoint (default)
89
+ const entrypointPath = typeof entrypointConfig === 'string'
90
+ ? entrypointConfig
91
+ : entrypointConfig.type === 'cli'
92
+ ? entrypointConfig.path
93
+ : undefined;
94
+ if (!entrypointPath) {
95
+ throw new Error(`CLI entrypoint must have a path: ${JSON.stringify(entrypointConfig)}`);
96
+ }
97
+ const bootstrapFile = join(config.rootDir, entrypointPath);
98
+ // Get service factories for local mode
99
+ // Check for required types
100
+ checkRequiredTypes(visitState.filesAndMethodsErrors, {
101
+ config: true,
102
+ singletonServicesFactory: true,
103
+ sessionServicesFactory: true,
104
+ });
105
+ const { pikkuConfigFactory, singletonServicesFactory, sessionServicesFactory, } = visitState.filesAndMethods;
106
+ if (!pikkuConfigFactory ||
107
+ !singletonServicesFactory ||
108
+ !sessionServicesFactory) {
109
+ throw new Error('Required types not found');
110
+ }
111
+ const bootstrapCode = serializeLocalCLIBootstrap(programName, programMeta, bootstrapFile, config, pikkuConfigFactory, singletonServicesFactory, sessionServicesFactory);
112
+ await writeFileInDir(logger, bootstrapFile, bootstrapCode);
113
+ logger.debug(`Serialized CLI bootstrap for ${programName}: ${bootstrapFile}`);
114
+ }
115
+ }
116
+ },
117
+ middleware: [
118
+ logCommandInfoAndTime({
119
+ commandStart: 'Serializing CLI',
120
+ commandEnd: 'Serialized CLI',
121
+ }),
122
+ ],
123
+ });
@@ -0,0 +1 @@
1
+ export declare const pikkuCLITypes: any;