@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,77 @@
1
+ import chalk from 'chalk';
2
+ import { LogLevel } from '@pikku/core';
3
+ const logo = `
4
+ ______ _ _ _
5
+ (_____ (_) | | |
6
+ _____) )| | _| | _ _ _
7
+ | ____/ | |_/ ) |_/ ) | | |
8
+ | | | | _ (| _ (| _ (| |_| |
9
+ |_| |_|_| _)_| _)____/
10
+ `;
11
+ const BASE_ERROR_URL = 'https://pikku.dev/errors';
12
+ export class CLILogger {
13
+ silent;
14
+ level = LogLevel.info;
15
+ criticalErrors = [];
16
+ constructor({ logLogo, silent = false, }) {
17
+ this.silent = silent;
18
+ if (logLogo && !silent) {
19
+ this.logPikkuLogo();
20
+ }
21
+ }
22
+ setLevel(level) {
23
+ this.level = level;
24
+ }
25
+ info(message) {
26
+ if (this.level > LogLevel.info || this.silent)
27
+ return;
28
+ let c = chalk.blue;
29
+ if (typeof message === 'object') {
30
+ if (message.type === 'success') {
31
+ c = chalk.green;
32
+ }
33
+ else if (message.type === 'timing') {
34
+ c = chalk.gray;
35
+ }
36
+ }
37
+ console.log(c(typeof message === 'string' ? message : message.message));
38
+ }
39
+ error(message) {
40
+ if (this.level > LogLevel.error)
41
+ return;
42
+ console.error(chalk.red(message));
43
+ }
44
+ warn(message) {
45
+ if (this.level > LogLevel.warn)
46
+ return;
47
+ console.error(chalk.yellow(message));
48
+ }
49
+ debug(message) {
50
+ if (this.level > LogLevel.debug || this.silent)
51
+ return;
52
+ console.log(chalk.gray(message));
53
+ }
54
+ critical(code, message) {
55
+ const url = `${BASE_ERROR_URL}/${code.toLowerCase()}`;
56
+ const formattedMessage = `[${code}] ${message}\n → ${url}`;
57
+ this.criticalErrors.push(formattedMessage);
58
+ console.error(chalk.red.bold(formattedMessage));
59
+ }
60
+ hasCriticalErrors() {
61
+ return this.criticalErrors.length > 0;
62
+ }
63
+ logPikkuLogo() {
64
+ this.primary(logo);
65
+ // // When running from dist/, __filename is dist/src/services/cli-logger.service.js
66
+ // // So we need to go up 3 levels: dist/src/services -> dist/src -> dist -> package.json
67
+ // const packageJson = JSON.parse(
68
+ // readFileSync(`${dirname(__filename)}/../../../package.json`, 'utf-8')
69
+ // )
70
+ // this.primary(`⚙️ Welcome to the Pikku CLI (v${packageJson.version})\n`)
71
+ }
72
+ primary(message) {
73
+ if (!this.silent) {
74
+ console.log(chalk.green(message));
75
+ }
76
+ }
77
+ }
@@ -0,0 +1,20 @@
1
+ import type { Config, Services, SingletonServices, UserSession } from '../types/application-types.js';
2
+ import { CreateConfig, CreateSessionServices, CreateSingletonServices } from '@pikku/core';
3
+ import { PikkuCLIConfig } from '../types/config.js';
4
+ import { ForwardedLogMessage } from './services/cli-logger-forwarder.service.js';
5
+ /**
6
+ * Default CLI renderer that logs output using the logger
7
+ */
8
+ export declare const defaultCLIRenderer: import("@pikku/core").CorePikkuCLIRender<ForwardedLogMessage, SingletonServices, import("@pikku/core").CoreUserSession>;
9
+ /**
10
+ * Client-safe CLI renderer that outputs to console (no service dependencies)
11
+ * This renderer can be used in CLI-over-channel clients
12
+ */
13
+ export declare const clientCLIRenderer: import("@pikku/core").CorePikkuCLIRender<ForwardedLogMessage, import("@pikku/core").CoreServices, import("@pikku/core").CoreUserSession>;
14
+ export declare const createConfig: CreateConfig<Config, [PikkuCLIConfig]>;
15
+ /**
16
+ * Singleton services factory for the Pikku CLI
17
+ * This function creates the singleton services used by the CLI and is created once on start.
18
+ */
19
+ export declare const createSingletonServices: CreateSingletonServices<Config, SingletonServices>;
20
+ export declare const createSessionServices: CreateSessionServices<SingletonServices, Services, UserSession>;
@@ -0,0 +1,162 @@
1
+ import { pikkuCLIRender } from '@pikku/core/cli';
2
+ import { LocalVariablesService } from '@pikku/core/services';
3
+ import { CLILogger } from './services/cli-logger.service.js';
4
+ import { getPikkuCLIConfig } from './utils/pikku-cli-config.js';
5
+ import { inspect, serializeInspectorState, deserializeInspectorState, filterInspectorState, } from '@pikku/inspector';
6
+ import { glob } from 'tinyglobby';
7
+ import path from 'path';
8
+ import { CLILoggerForwarder, } from './services/cli-logger-forwarder.service.js';
9
+ import { readFile, writeFile } from 'fs/promises';
10
+ const logger = new CLILogger({ logLogo: true, silent: false });
11
+ /**
12
+ * Parse a comma-separated string or array into an array of trimmed, non-empty strings
13
+ * Returns undefined if the input is empty/undefined or results in an empty array
14
+ */
15
+ function parseCommaSeparated(value) {
16
+ if (!value)
17
+ return undefined;
18
+ // If already an array, flatten and split any comma-separated values
19
+ if (Array.isArray(value)) {
20
+ const flattened = value
21
+ .flatMap((item) => item.split(','))
22
+ .map((item) => item.trim())
23
+ .filter((item) => item.length > 0);
24
+ return flattened.length > 0 ? flattened : undefined;
25
+ }
26
+ // If string, split by comma
27
+ const parsed = value
28
+ .split(',')
29
+ .map((item) => item.trim())
30
+ .filter((item) => item.length > 0);
31
+ return parsed.length > 0 ? parsed : undefined;
32
+ }
33
+ /**
34
+ * Parse CLI filter arguments into InspectorFilters format
35
+ */
36
+ function parseCLIFilters(data) {
37
+ const filters = {};
38
+ if (data.filters) {
39
+ return JSON.parse(data.filters);
40
+ }
41
+ // Parse each filter type from CLI arguments
42
+ const names = parseCommaSeparated(data.names);
43
+ const tags = parseCommaSeparated(data.tags);
44
+ const types = parseCommaSeparated(data.types);
45
+ const directories = parseCommaSeparated(data.directories);
46
+ const httpRoutes = parseCommaSeparated(data.httpRoutes);
47
+ const httpMethods = parseCommaSeparated(data.httpMethods);
48
+ // Only include non-undefined values in the result
49
+ if (names)
50
+ filters.names = names;
51
+ if (tags)
52
+ filters.tags = tags;
53
+ if (types)
54
+ filters.types = types;
55
+ if (directories)
56
+ filters.directories = directories;
57
+ if (httpRoutes)
58
+ filters.httpRoutes = httpRoutes;
59
+ if (httpMethods)
60
+ filters.httpMethods = httpMethods;
61
+ return filters;
62
+ }
63
+ /**
64
+ * Default CLI renderer that logs output using the logger
65
+ */
66
+ export const defaultCLIRenderer = pikkuCLIRender((_services, data) => {
67
+ if (data) {
68
+ logger[data.level]({ message: data.message, type: data.type });
69
+ }
70
+ });
71
+ /**
72
+ * Client-safe CLI renderer that outputs to console (no service dependencies)
73
+ * This renderer can be used in CLI-over-channel clients
74
+ */
75
+ export const clientCLIRenderer = pikkuCLIRender((_services, data) => {
76
+ if (data) {
77
+ // Simple console output without service dependencies
78
+ const prefix = data.type ? `[${data.type}] ` : '';
79
+ console.log(`${prefix}${data.message}`);
80
+ }
81
+ });
82
+ export const createConfig = async (_variablesService, data) => {
83
+ const cliConfig = await getPikkuCLIConfig(logger, data.configFile, [], true);
84
+ // Load inspector state from file if stateInput is provided
85
+ let preloadedInspectorState = undefined;
86
+ if (data.stateInput) {
87
+ try {
88
+ logger.info(`Loading inspector state from ${data.stateInput}`);
89
+ const stateJson = await readFile(data.stateInput, 'utf-8');
90
+ const serializedState = JSON.parse(stateJson);
91
+ preloadedInspectorState = deserializeInspectorState(serializedState);
92
+ logger.info(`Inspector state loaded successfully`);
93
+ }
94
+ catch (error) {
95
+ logger.error(`Failed to load inspector state from ${data.stateInput}: ${error.message}`);
96
+ throw error;
97
+ }
98
+ }
99
+ return {
100
+ ...cliConfig,
101
+ ...data,
102
+ filters: parseCLIFilters(data),
103
+ preloadedInspectorState,
104
+ };
105
+ };
106
+ /**
107
+ * Singleton services factory for the Pikku CLI
108
+ * This function creates the singleton services used by the CLI and is created once on start.
109
+ */
110
+ export const createSingletonServices = async (config) => {
111
+ const { rootDir, srcDirectories, filters, preloadedInspectorState, stateOutput, } = config;
112
+ const variables = new LocalVariablesService();
113
+ // Store unfiltered state
114
+ let unfilteredState = preloadedInspectorState;
115
+ const getInspectorState = async (refresh = false) => {
116
+ // Get or refresh the unfiltered state
117
+ if (!unfilteredState || refresh) {
118
+ // Run inspector WITHOUT filters to get full state
119
+ const wiringFiles = (await Promise.all(srcDirectories.map((dir) => glob(`${path.join(rootDir, dir)}/**/*.ts`)))).flat();
120
+ unfilteredState = await inspect(logger, wiringFiles, {
121
+ // NO filters here - inspector returns full unfiltered state
122
+ types: {
123
+ configFileType: config.configFile,
124
+ userSessionType: config.userSessionType,
125
+ singletonServicesFactoryType: config.singletonServicesFactoryType,
126
+ sessionServicesFactoryType: config.sessionServicesFactoryType,
127
+ },
128
+ });
129
+ // Save unfiltered inspector state to file if stateOutput is provided
130
+ if (stateOutput && 'typesLookup' in unfilteredState) {
131
+ try {
132
+ logger.info(`Saving inspector state to ${stateOutput}`);
133
+ const serialized = serializeInspectorState(unfilteredState);
134
+ await writeFile(stateOutput, JSON.stringify(serialized, null, 2), 'utf-8');
135
+ logger.info(`Inspector state saved successfully`);
136
+ }
137
+ catch (error) {
138
+ logger.error(`Failed to save inspector state to ${stateOutput}: ${error.message}`);
139
+ // Don't throw - state saving is optional/nice-to-have
140
+ }
141
+ }
142
+ }
143
+ // Apply filters as a post-processing step
144
+ const filteredState = filterInspectorState(unfilteredState, filters, logger);
145
+ return filteredState;
146
+ };
147
+ return {
148
+ config,
149
+ logger,
150
+ variables,
151
+ getInspectorState,
152
+ };
153
+ };
154
+ export const createSessionServices = async ({ logger }, { cli, channel }) => {
155
+ const vChannel = cli ? cli.channel : channel;
156
+ if (!vChannel) {
157
+ throw new Error('No channel provided for CLI services');
158
+ }
159
+ return {
160
+ logger: new CLILoggerForwarder(logger, vChannel),
161
+ };
162
+ };
@@ -0,0 +1,10 @@
1
+ import { FilesAndMethodsErrors } from '@pikku/inspector';
2
+ export type RequiredTypes = Partial<{
3
+ config: boolean;
4
+ sessionServiceType: boolean;
5
+ singletonServicesType: boolean;
6
+ userSessionType: boolean;
7
+ singletonServicesFactory: boolean;
8
+ sessionServicesFactory: boolean;
9
+ }>;
10
+ export declare const checkRequiredTypes: (errors: FilesAndMethodsErrors, requires?: RequiredTypes) => void;
@@ -0,0 +1,31 @@
1
+ export const checkRequiredTypes = (errors, requires = {}) => {
2
+ // Only throw if there are errors AND we require those types
3
+ const hasRequiredErrors = Array.from(errors.keys()).some((message) => {
4
+ if (requires.config && message.includes('CoreConfig'))
5
+ return true;
6
+ if (requires.sessionServiceType && message.includes('CoreServices'))
7
+ return true;
8
+ if (requires.singletonServicesType &&
9
+ message.includes('CoreSingletonServices'))
10
+ return true;
11
+ if (requires.userSessionType && message.includes('CoreUserSession'))
12
+ return true;
13
+ if (requires.singletonServicesFactory &&
14
+ message.includes('CreateSingletonServices'))
15
+ return true;
16
+ if (requires.sessionServicesFactory &&
17
+ message.includes('CreateSessionServices'))
18
+ return true;
19
+ return false;
20
+ });
21
+ if (hasRequiredErrors) {
22
+ const result = ['Found errors:'];
23
+ errors.forEach((filesAndMethods, message) => {
24
+ result.push(`- ${message}`);
25
+ filesAndMethods.forEach((methods, file) => {
26
+ result.push(`\t* methods: ${methods.map(({ variable, type }) => `${variable}: ${type}`).join(', ')}`);
27
+ });
28
+ });
29
+ throw new Error(result.join('\n'));
30
+ }
31
+ };
@@ -0,0 +1,2 @@
1
+ import { TypesMap } from '@pikku/inspector';
2
+ export declare function generateCustomTypes(typesMap: TypesMap, requiredTypes: Set<string>): string;
@@ -0,0 +1,43 @@
1
+ export function generateCustomTypes(typesMap, requiredTypes) {
2
+ return `
3
+ // Custom types are those that are defined directly within generics
4
+ // or are broken into simpler types
5
+ ${Array.from(typesMap.customTypes.entries())
6
+ .map(([name, { type, references }]) => {
7
+ references.forEach((refName) => {
8
+ // Skip __object types (including those with suffixes like __object_abc123)
9
+ // These are placeholder types created by the inspector for invalid/broken functions
10
+ // (e.g., functions with type errors or missing return statements). Attempting to
11
+ // import these would fail since the source files don't actually export __object.
12
+ if (refName !== '__object' && !refName.startsWith('__object_')) {
13
+ requiredTypes.add(refName);
14
+ }
15
+ });
16
+ // Extract type names from the type string that might not be in references
17
+ const typeString = type;
18
+ // Use regex to extract potential type names (PascalCase identifiers)
19
+ const typeNameRegex = /\b[A-Z][a-zA-Z0-9]*\b/g;
20
+ const potentialTypes = typeString.match(typeNameRegex) || [];
21
+ potentialTypes.forEach((typeName) => {
22
+ // Skip string literals and common keywords
23
+ if (typeString.includes(`"${typeName}"`) ||
24
+ ['Pick', 'Omit', 'Partial', 'Required', 'Record', 'Readonly'].includes(typeName)) {
25
+ return;
26
+ }
27
+ // Try to find this type in the typesMap and add it if found
28
+ try {
29
+ const typeMeta = typesMap.getTypeMeta(typeName);
30
+ if (typeMeta.path) {
31
+ // Add originalName to preserve canonical import name
32
+ requiredTypes.add(typeMeta.originalName);
33
+ }
34
+ }
35
+ catch (e) {
36
+ // Type not found in map (ambient/builtin type) - ignore it
37
+ // Do NOT add to requiredTypes to avoid crashes in serializeImportMap
38
+ }
39
+ });
40
+ return `export type ${name} = ${type}`;
41
+ })
42
+ .join('\n')}`;
43
+ }
@@ -0,0 +1 @@
1
+ export declare const getFileImportRelativePath: (from: string, to: string, packageMappings: Record<string, string>) => string;
@@ -0,0 +1,43 @@
1
+ import { relative, dirname, resolve } from 'path';
2
+ export const getFileImportRelativePath = (from, to, packageMappings) => {
3
+ let filePath = relative(dirname(from), to);
4
+ if (!/^\.+\//.test(filePath)) {
5
+ filePath = `./${filePath}`;
6
+ }
7
+ // If the path includes node_modules, strip everything before and including node_modules/
8
+ if (filePath.includes('node_modules')) {
9
+ const nodeModulesIndex = filePath.indexOf('node_modules/');
10
+ if (nodeModulesIndex !== -1) {
11
+ filePath = filePath.substring(nodeModulesIndex + 'node_modules/'.length);
12
+ }
13
+ return filePath.replace('.ts', '.js');
14
+ }
15
+ const absolutePath = resolve(dirname(from), to);
16
+ const fromAbsolutePath = resolve(dirname(from));
17
+ // Check if both files are in the same package directory
18
+ // If so, skip packageMappings to use relative paths
19
+ let inSamePackage = false;
20
+ for (const [path] of Object.entries(packageMappings)) {
21
+ if (absolutePath.includes(path) && fromAbsolutePath.includes(path)) {
22
+ inSamePackage = true;
23
+ break;
24
+ }
25
+ }
26
+ // Only apply packageMappings if files are not in the same package
27
+ if (!inSamePackage) {
28
+ // let usesPackageName = false
29
+ for (const [path, packageName] of Object.entries(packageMappings)) {
30
+ if (absolutePath.includes(path)) {
31
+ // usesPackageName = true
32
+ // Use string slicing instead of regex to avoid ReDoS and ensure correct behavior
33
+ const pathIndex = absolutePath.indexOf(path);
34
+ filePath = packageName + absolutePath.slice(pathIndex + path.length);
35
+ break;
36
+ }
37
+ }
38
+ }
39
+ // if (usesPackageName) {
40
+ // return filePath.replace('.ts', '')
41
+ // }
42
+ return filePath.replace('.ts', '.js');
43
+ };
@@ -0,0 +1 @@
1
+ export declare const serializeFileImports: (importType: string, outputPath: string, files: Set<string>, packageMappings?: Record<string, string>) => string;
@@ -0,0 +1,13 @@
1
+ import { getFileImportRelativePath } from './file-import-path.js';
2
+ export const serializeFileImports = (importType, outputPath, files, packageMappings = {}) => {
3
+ const serializedOutput = [
4
+ `/* The files with an ${importType} function call */`,
5
+ ];
6
+ Array.from(files)
7
+ .sort()
8
+ .forEach((path) => {
9
+ const filePath = getFileImportRelativePath(outputPath, path, packageMappings);
10
+ serializedOutput.push(`import '${filePath}'`);
11
+ });
12
+ return serializedOutput.join('\n');
13
+ };
@@ -0,0 +1,9 @@
1
+ import { CLILogger } from '../services/cli-logger.service.js';
2
+ export declare const DO_NOT_MODIFY_COMMENT: string;
3
+ export declare const writeFileInDir: (logger: CLILogger, path: string, content: string, { ignoreModifyComment, logWrite, }?: {
4
+ ignoreModifyComment?: boolean;
5
+ logWrite?: boolean;
6
+ }) => Promise<void>;
7
+ export declare const removeFileInDir: (logger: CLILogger, path: string, { logRemove }?: {
8
+ logRemove?: boolean;
9
+ }) => Promise<void>;
@@ -0,0 +1,50 @@
1
+ import { dirname } from 'path';
2
+ import { mkdir, readFile, writeFile, rm } from 'fs/promises';
3
+ import { existsSync } from 'fs';
4
+ import { getCLIVersion } from './get-cli-version.js';
5
+ export const DO_NOT_MODIFY_COMMENT = `/**
6
+ * This file was generated by @pikku/cli@${getCLIVersion()}
7
+ */
8
+ `;
9
+ export const writeFileInDir = async (logger, path, content, { ignoreModifyComment = false, logWrite = true, } = {}) => {
10
+ if (path.includes('.json')) {
11
+ ignoreModifyComment = true;
12
+ }
13
+ if (content.includes('server-only')) {
14
+ content = content.replace("'server-only'", `'server-only'\n\n${ignoreModifyComment ? '' : DO_NOT_MODIFY_COMMENT}`);
15
+ }
16
+ else {
17
+ content = `${ignoreModifyComment ? '' : DO_NOT_MODIFY_COMMENT}${content}`;
18
+ }
19
+ // Try to read existing file content
20
+ let existingContent;
21
+ try {
22
+ existingContent = await readFile(path, 'utf-8');
23
+ }
24
+ catch (error) {
25
+ // Only suppress ENOENT (file not found) errors
26
+ // Rethrow permission, I/O, encoding, or other errors
27
+ const nodeError = error;
28
+ if (nodeError.code !== 'ENOENT') {
29
+ throw error;
30
+ }
31
+ // File doesn't exist, so we need to write it
32
+ }
33
+ // Only write if content has changed or file doesn't exist
34
+ if (existingContent !== content) {
35
+ await mkdir(dirname(path), { recursive: true });
36
+ await writeFile(path, content, 'utf-8');
37
+ if (logWrite) {
38
+ logger.info({ message: `✓ File written to ${path}`, type: 'success' });
39
+ }
40
+ }
41
+ };
42
+ export const removeFileInDir = async (logger, path, { logRemove = true } = {}) => {
43
+ // Check if file exists before attempting removal
44
+ if (existsSync(path)) {
45
+ await rm(path, { force: true });
46
+ if (logRemove) {
47
+ logger.info({ message: `✓ File removed at ${path}`, type: 'success' });
48
+ }
49
+ }
50
+ };
@@ -0,0 +1,3 @@
1
+ import { Config } from '../../types/application-types.js';
2
+ import { CLILogger } from '../services/cli-logger.service.js';
3
+ export declare const generateBootstrapFile: (logger: CLILogger, config: Config, bootstrapFile: string, specificImports: string[], schemas?: boolean, hasMiddleware?: boolean) => Promise<void>;
@@ -0,0 +1,21 @@
1
+ import { getFileImportRelativePath } from './file-import-path.js';
2
+ import { writeFileInDir } from './file-writer.js';
3
+ export const generateBootstrapFile = async (logger, config, bootstrapFile, specificImports, schemas, hasMiddleware) => {
4
+ // Common imports that every bootstrap file needs
5
+ const commonImports = [];
6
+ // Add middleware first (must be registered before functions meta)
7
+ if (hasMiddleware) {
8
+ commonImports.push(config.middlewareFile);
9
+ }
10
+ commonImports.push(config.functionsMetaMinFile, config.functionsFile);
11
+ // Add schema if it exists
12
+ if (schemas) {
13
+ commonImports.push(`${config.schemaDirectory}/register.gen.ts`);
14
+ }
15
+ // Combine common imports with specific imports
16
+ const allImports = [...commonImports, ...specificImports];
17
+ await writeFileInDir(logger, bootstrapFile, allImports
18
+ .map((to) => `import '${getFileImportRelativePath(bootstrapFile, to, config.packageMappings)}'`)
19
+ .sort((to) => (to.includes('meta') ? -1 : 1)) // Ensure meta files are at the top
20
+ .join('\n'));
21
+ };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Returns the CLI version string
3
+ * Works from both src/ and dist/src/ locations
4
+ */
5
+ export declare const getCLIVersion: () => string;
@@ -0,0 +1,27 @@
1
+ import { dirname, join } from 'path';
2
+ import { readFile } from 'fs/promises';
3
+ import { fileURLToPath } from 'url';
4
+ // Get package version for generated file comments
5
+ const __dirname = dirname(fileURLToPath(import.meta.url));
6
+ let version = 'unknown';
7
+ try {
8
+ // Try from src/ first (development), then from dist/src/ (built)
9
+ const pkgPath = join(__dirname, '..', '..', 'package.json');
10
+ const pkgJson = JSON.parse(await readFile(pkgPath, 'utf-8'));
11
+ version = pkgJson.version;
12
+ }
13
+ catch {
14
+ try {
15
+ const pkgPath = join(__dirname, '..', '..', '..', 'package.json');
16
+ const pkgJson = JSON.parse(await readFile(pkgPath, 'utf-8'));
17
+ version = pkgJson.version;
18
+ }
19
+ catch {
20
+ // Fallback to unknown if package.json can't be found
21
+ }
22
+ }
23
+ /**
24
+ * Returns the CLI version string
25
+ * Works from both src/ and dist/src/ locations
26
+ */
27
+ export const getCLIVersion = () => version;
@@ -0,0 +1,4 @@
1
+ import { PikkuCLIConfig } from '../../types/config.js';
2
+ import { CLILogger } from '../services/cli-logger.service.js';
3
+ export declare const getPikkuCLIConfig: (logger: CLILogger, configFile: string | undefined, requiredFields: Array<keyof PikkuCLIConfig>, exitProcess?: boolean) => Promise<PikkuCLIConfig>;
4
+ export declare const validateCLIConfig: (cliConfig: PikkuCLIConfig, required: Array<keyof PikkuCLIConfig>) => void;