@pikku/cli 0.9.14 → 0.9.16-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (445) hide show
  1. package/.pikku/channel/pikku-channel-types.gen.ts +92 -0
  2. package/.pikku/cli/pikku-cli-types.gen.ts +71 -0
  3. package/.pikku/cli/pikku-cli-wirings-meta.gen.ts +5 -0
  4. package/.pikku/cli/pikku-cli-wirings.gen.ts +4 -0
  5. package/.pikku/function/pikku-function-types.gen.ts +292 -0
  6. package/.pikku/function/pikku-functions-meta.gen.ts +817 -0
  7. package/.pikku/function/pikku-functions-meta.min.gen.ts +176 -0
  8. package/.pikku/function/pikku-functions.gen.ts +74 -0
  9. package/.pikku/http/pikku-http-types.gen.ts +61 -0
  10. package/.pikku/mcp/pikku-mcp-types.gen.ts +138 -0
  11. package/.pikku/pikku-bootstrap.gen.ts +9 -0
  12. package/.pikku/pikku-services.gen.ts +24 -0
  13. package/.pikku/pikku-types.gen.ts +28 -0
  14. package/.pikku/queue/pikku-queue-types.gen.ts +28 -0
  15. package/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +46 -0
  16. package/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +80 -0
  17. package/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.ts +40 -0
  18. package/.pikku/scheduler/pikku-scheduler-types.gen.ts +26 -0
  19. package/.pikku/schemas/register.gen.ts +47 -0
  20. package/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -0
  21. package/.pikku/schemas/schemas/PikkuCLIOutput.schema.json +1 -0
  22. package/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -0
  23. package/.pikku/schemas/schemas/PikkuFunctionsOutput.schema.json +1 -0
  24. package/.pikku/schemas/schemas/PikkuHTTPOutput.schema.json +1 -0
  25. package/.pikku/schemas/schemas/PikkuMCPOutput.schema.json +1 -0
  26. package/.pikku/schemas/schemas/PikkuMiddlewareOutput.schema.json +1 -0
  27. package/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +1 -0
  28. package/.pikku/schemas/schemas/PikkuRPCOutput.schema.json +1 -0
  29. package/.pikku/schemas/schemas/PikkuSchedulerOutput.schema.json +1 -0
  30. package/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -0
  31. package/CHANGELOG.md +15 -0
  32. package/bin/pikku.ts +45 -14
  33. package/build.sh +53 -0
  34. package/cli.schema.json +1 -382
  35. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +65 -0
  36. package/dist/.pikku/channel/pikku-channel-types.gen.js +54 -0
  37. package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +55 -0
  38. package/dist/.pikku/cli/pikku-cli-types.gen.js +30 -0
  39. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +5 -0
  40. package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +4 -0
  41. package/dist/.pikku/cli/pikku-cli-wirings.gen.js +5 -0
  42. package/dist/.pikku/function/pikku-function-types.gen.d.ts +259 -0
  43. package/dist/.pikku/function/pikku-function-types.gen.js +175 -0
  44. package/dist/.pikku/function/pikku-functions-meta.gen.d.ts +1 -0
  45. package/dist/.pikku/function/pikku-functions-meta.gen.js +817 -0
  46. package/dist/.pikku/function/pikku-functions-meta.min.gen.d.ts +1 -0
  47. package/dist/.pikku/function/pikku-functions-meta.min.gen.js +176 -0
  48. package/dist/.pikku/function/pikku-functions.gen.d.ts +1 -0
  49. package/dist/.pikku/function/pikku-functions.gen.js +73 -0
  50. package/dist/.pikku/http/pikku-http-types.gen.d.ts +49 -0
  51. package/dist/.pikku/http/pikku-http-types.gen.js +41 -0
  52. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +88 -0
  53. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +71 -0
  54. package/dist/.pikku/pikku-bootstrap.gen.d.ts +9 -0
  55. package/dist/.pikku/pikku-bootstrap.gen.js +9 -0
  56. package/dist/.pikku/pikku-services.gen.d.ts +16 -0
  57. package/dist/.pikku/pikku-services.gen.js +11 -0
  58. package/dist/.pikku/pikku-types.gen.d.ts +14 -0
  59. package/dist/.pikku/pikku-types.gen.js +21 -0
  60. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +24 -0
  61. package/dist/.pikku/queue/pikku-queue-types.gen.js +17 -0
  62. package/dist/.pikku/rpc/pikku-bootstrap-rpc.gen.d.ts +6 -0
  63. package/dist/.pikku/rpc/pikku-bootstrap-rpc.gen.js +6 -0
  64. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.d.ts +1 -0
  65. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +40 -0
  66. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +22 -0
  67. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +17 -0
  68. package/dist/.pikku/schemas/register.gen.d.ts +1 -0
  69. package/dist/.pikku/schemas/register.gen.js +26 -0
  70. package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -0
  71. package/dist/.pikku/schemas/schemas/PikkuCLIOutput.schema.json +1 -0
  72. package/dist/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -0
  73. package/dist/.pikku/schemas/schemas/PikkuFunctionsOutput.schema.json +1 -0
  74. package/dist/.pikku/schemas/schemas/PikkuHTTPOutput.schema.json +1 -0
  75. package/dist/.pikku/schemas/schemas/PikkuMCPOutput.schema.json +1 -0
  76. package/dist/.pikku/schemas/schemas/PikkuMiddlewareOutput.schema.json +1 -0
  77. package/dist/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +1 -0
  78. package/dist/.pikku/schemas/schemas/PikkuRPCOutput.schema.json +1 -0
  79. package/dist/.pikku/schemas/schemas/PikkuSchedulerOutput.schema.json +1 -0
  80. package/dist/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -0
  81. package/dist/bin/pikku.d.ts +1 -1
  82. package/dist/bin/pikku.js +32 -14
  83. package/dist/src/cli.wiring.d.ts +1 -0
  84. package/dist/src/cli.wiring.js +75 -0
  85. package/dist/src/functions/commands/all.d.ts +1 -0
  86. package/dist/src/functions/commands/all.js +104 -0
  87. package/dist/src/functions/commands/watch.d.ts +1 -0
  88. package/dist/src/functions/commands/watch.js +47 -0
  89. package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.d.ts +1 -0
  90. package/dist/src/{runtimes → functions/runtimes}/nextjs/pikku-command-nextjs.js +28 -9
  91. package/dist/src/functions/wirings/channels/pikku-channels.d.ts +1 -0
  92. package/dist/src/functions/wirings/channels/pikku-channels.js +24 -0
  93. package/dist/src/functions/wirings/channels/pikku-command-channel-types.d.ts +1 -0
  94. package/dist/src/functions/wirings/channels/pikku-command-channel-types.js +21 -0
  95. package/dist/src/functions/wirings/channels/pikku-command-channels-map.d.ts +1 -0
  96. package/dist/src/functions/wirings/channels/pikku-command-channels-map.js +23 -0
  97. package/dist/src/functions/wirings/channels/pikku-command-channels.d.ts +1 -0
  98. package/dist/src/functions/wirings/channels/pikku-command-channels.js +25 -0
  99. package/dist/src/functions/wirings/channels/pikku-command-websocket-typed.d.ts +1 -0
  100. package/dist/src/functions/wirings/channels/pikku-command-websocket-typed.js +24 -0
  101. package/dist/src/functions/wirings/channels/serialize-channel-types.d.ts +4 -0
  102. package/dist/src/functions/wirings/channels/serialize-channel-types.js +95 -0
  103. package/dist/src/{wirings → functions/wirings}/channels/serialize-typed-channel-map.js +2 -2
  104. package/dist/src/functions/wirings/cli/pikku-command-cli-entry.d.ts +1 -0
  105. package/dist/src/functions/wirings/cli/pikku-command-cli-entry.js +100 -0
  106. package/dist/src/functions/wirings/cli/pikku-command-cli-types.d.ts +1 -0
  107. package/dist/src/functions/wirings/cli/pikku-command-cli-types.js +33 -0
  108. package/dist/src/functions/wirings/cli/pikku-command-cli.d.ts +1 -0
  109. package/dist/src/functions/wirings/cli/pikku-command-cli.js +24 -0
  110. package/dist/src/functions/wirings/cli/serialize-channel-cli-client.d.ts +7 -0
  111. package/dist/src/functions/wirings/cli/serialize-channel-cli-client.js +54 -0
  112. package/dist/src/functions/wirings/cli/serialize-channel-cli.d.ts +9 -0
  113. package/dist/src/functions/wirings/cli/serialize-channel-cli.js +84 -0
  114. package/dist/src/functions/wirings/cli/serialize-cli-types.d.ts +4 -0
  115. package/dist/src/functions/wirings/cli/serialize-cli-types.js +74 -0
  116. package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.d.ts +14 -0
  117. package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.js +46 -0
  118. package/dist/src/functions/wirings/fetch/index.d.ts +1 -0
  119. package/dist/src/functions/wirings/fetch/index.js +24 -0
  120. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.d.ts +1 -0
  121. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.js +32 -0
  122. package/dist/src/functions/wirings/functions/pikku-command-function-types.d.ts +1 -0
  123. package/dist/src/functions/wirings/functions/pikku-command-function-types.js +20 -0
  124. package/dist/src/functions/wirings/functions/pikku-command-functions.d.ts +1 -0
  125. package/dist/src/functions/wirings/functions/pikku-command-functions.js +28 -0
  126. package/dist/src/{wirings → functions/wirings}/functions/pikku-command-services.d.ts +1 -2
  127. package/dist/src/{wirings → functions/wirings}/functions/pikku-command-services.js +27 -10
  128. package/dist/src/functions/wirings/functions/pikku-function-types.d.ts +1 -0
  129. package/dist/src/functions/wirings/functions/pikku-function-types.js +20 -0
  130. package/dist/src/functions/wirings/functions/schemas.d.ts +4 -0
  131. package/dist/src/functions/wirings/functions/schemas.js +22 -0
  132. package/dist/src/{wirings → functions/wirings}/functions/serialize-function-imports.js +4 -21
  133. package/dist/src/functions/wirings/functions/serialize-function-types.d.ts +4 -0
  134. package/dist/src/functions/wirings/functions/serialize-function-types.js +295 -0
  135. package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.d.ts +4 -0
  136. package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.js +31 -0
  137. package/dist/src/{wirings → functions/wirings}/http/openapi-spec-generator.d.ts +2 -1
  138. package/dist/src/{wirings → functions/wirings}/http/openapi-spec-generator.js +2 -2
  139. package/dist/src/functions/wirings/http/pikku-command-http-map.d.ts +1 -0
  140. package/dist/src/functions/wirings/http/pikku-command-http-map.js +23 -0
  141. package/dist/src/functions/wirings/http/pikku-command-http-routes.d.ts +1 -0
  142. package/dist/src/functions/wirings/http/pikku-command-http-routes.js +25 -0
  143. package/dist/src/functions/wirings/http/pikku-command-http-types.d.ts +1 -0
  144. package/dist/src/functions/wirings/http/pikku-command-http-types.js +21 -0
  145. package/dist/src/functions/wirings/http/pikku-command-openapi.d.ts +1 -0
  146. package/dist/src/functions/wirings/http/pikku-command-openapi.js +34 -0
  147. package/dist/src/functions/wirings/http/pikku-http-routes.d.ts +1 -0
  148. package/dist/src/functions/wirings/http/pikku-http-routes.js +25 -0
  149. package/dist/src/functions/wirings/http/serialize-http-types.d.ts +4 -0
  150. package/dist/src/functions/wirings/http/serialize-http-types.js +64 -0
  151. package/dist/src/{wirings → functions/wirings}/http/serialize-typed-http-map.js +2 -2
  152. package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.d.ts +1 -0
  153. package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.js +28 -0
  154. package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.d.ts +1 -0
  155. package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.js +21 -0
  156. package/dist/src/functions/wirings/mcp/pikku-command-mcp.d.ts +1 -0
  157. package/dist/src/{wirings → functions/wirings}/mcp/pikku-command-mcp.js +22 -5
  158. package/dist/src/{wirings → functions/wirings}/mcp/serialize-mcp-json.d.ts +1 -1
  159. package/dist/src/functions/wirings/mcp/serialize-mcp-types.d.ts +4 -0
  160. package/dist/src/functions/wirings/mcp/serialize-mcp-types.js +141 -0
  161. package/dist/src/functions/wirings/middleware/pikku-command-middleware.d.ts +1 -0
  162. package/dist/src/functions/wirings/middleware/pikku-command-middleware.js +38 -0
  163. package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.d.ts +8 -0
  164. package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.js +50 -0
  165. package/dist/src/functions/wirings/middleware/serialize-middleware-imports.d.ts +2 -0
  166. package/dist/src/functions/wirings/middleware/serialize-middleware-imports.js +43 -0
  167. package/dist/src/functions/wirings/queue/pikku-command-queue-map.d.ts +1 -0
  168. package/dist/src/functions/wirings/queue/pikku-command-queue-map.js +23 -0
  169. package/dist/src/functions/wirings/queue/pikku-command-queue-service.d.ts +1 -0
  170. package/dist/src/functions/wirings/queue/pikku-command-queue-service.js +24 -0
  171. package/dist/src/functions/wirings/queue/pikku-command-queue-types.d.ts +1 -0
  172. package/dist/src/functions/wirings/queue/pikku-command-queue-types.js +21 -0
  173. package/dist/src/functions/wirings/queue/pikku-command-queue.d.ts +1 -0
  174. package/dist/src/functions/wirings/queue/pikku-command-queue.js +26 -0
  175. package/dist/src/functions/wirings/queue/pikku-queue-map.d.ts +1 -0
  176. package/dist/src/functions/wirings/queue/pikku-queue-map.js +23 -0
  177. package/dist/src/functions/wirings/queue/pikku-queue.d.ts +1 -0
  178. package/dist/src/functions/wirings/queue/pikku-queue.js +25 -0
  179. package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-map.js +2 -2
  180. package/dist/src/functions/wirings/queue/serialize-queue-types.d.ts +4 -0
  181. package/dist/src/functions/wirings/queue/serialize-queue-types.js +31 -0
  182. package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.d.ts +1 -0
  183. package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.js +25 -0
  184. package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.d.ts +2 -0
  185. package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.js +36 -0
  186. package/dist/src/functions/wirings/rpc/pikku-command-rpc.d.ts +1 -0
  187. package/dist/src/functions/wirings/rpc/pikku-command-rpc.js +22 -0
  188. package/dist/src/{wirings → functions/wirings}/rpc/serialize-typed-rpc-map.js +2 -2
  189. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.d.ts +1 -0
  190. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.js +21 -0
  191. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.d.ts +1 -0
  192. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.js +26 -0
  193. package/dist/src/functions/wirings/scheduler/serialize-scheduler-types.d.ts +4 -0
  194. package/dist/src/functions/wirings/scheduler/serialize-scheduler-types.js +29 -0
  195. package/dist/src/middleware/log-command-info-and-time.d.ts +19 -0
  196. package/dist/src/middleware/log-command-info-and-time.js +27 -0
  197. package/dist/src/serialize-pikku-types.js +2 -2
  198. package/dist/src/services/cli-logger-forwarder.service.d.ts +26 -0
  199. package/dist/src/services/cli-logger-forwarder.service.js +55 -0
  200. package/dist/src/services/cli-logger.service.d.ts +19 -0
  201. package/dist/src/services/cli-logger.service.js +66 -0
  202. package/dist/src/services.d.ts +15 -0
  203. package/dist/src/services.js +64 -0
  204. package/dist/src/utils/check-required-types.d.ts +10 -0
  205. package/dist/src/utils/check-required-types.js +31 -0
  206. package/dist/src/utils/custom-types-generator.d.ts +2 -0
  207. package/dist/src/utils/custom-types-generator.js +37 -0
  208. package/dist/src/utils/file-import-path.d.ts +1 -0
  209. package/dist/src/utils/file-import-path.js +43 -0
  210. package/dist/src/utils/file-imports-serializer.d.ts +1 -0
  211. package/dist/src/utils/file-imports-serializer.js +13 -0
  212. package/dist/src/utils/file-writer.d.ts +6 -0
  213. package/dist/src/utils/file-writer.js +40 -0
  214. package/dist/src/utils/generate-bootstrap-file.d.ts +3 -0
  215. package/dist/src/utils/generate-bootstrap-file.js +21 -0
  216. package/dist/src/utils/pikku-cli-config.d.ts +5 -0
  217. package/dist/src/utils/pikku-cli-config.js +243 -0
  218. package/dist/src/utils/pikku-files-and-methods.d.ts +21 -0
  219. package/dist/src/utils/pikku-files-and-methods.js +70 -0
  220. package/dist/src/{schema-generator.d.ts → utils/schema-generator.d.ts} +1 -1
  221. package/dist/src/{schema-generator.js → utils/schema-generator.js} +1 -1
  222. package/dist/src/{serialize-import-map.js → utils/serialize-import-map.js} +1 -1
  223. package/dist/tsconfig.tsbuildinfo +1 -1
  224. package/package.json +6 -6
  225. package/pikku.config.json +24 -0
  226. package/src/cli.wiring.ts +75 -0
  227. package/src/functions/commands/all.ts +141 -0
  228. package/src/functions/commands/watch.ts +58 -0
  229. package/src/functions/runtimes/nextjs/pikku-command-nextjs.ts +111 -0
  230. package/src/functions/wirings/channels/pikku-channels.ts +40 -0
  231. package/src/functions/wirings/channels/pikku-command-channel-types.ts +27 -0
  232. package/src/functions/wirings/channels/pikku-command-channels-map.ts +31 -0
  233. package/src/functions/wirings/channels/pikku-command-channels.ts +45 -0
  234. package/src/functions/wirings/channels/pikku-command-websocket-typed.ts +33 -0
  235. package/src/functions/wirings/channels/serialize-channel-types.ts +95 -0
  236. package/src/{wirings → functions/wirings}/channels/serialize-typed-channel-map.ts +2 -2
  237. package/src/functions/wirings/cli/pikku-command-cli-entry.ts +173 -0
  238. package/src/functions/wirings/cli/pikku-command-cli-types.ts +50 -0
  239. package/src/functions/wirings/cli/pikku-command-cli.ts +41 -0
  240. package/src/functions/wirings/cli/serialize-channel-cli-client.ts +72 -0
  241. package/src/functions/wirings/cli/serialize-channel-cli.ts +123 -0
  242. package/src/functions/wirings/cli/serialize-cli-types.ts +80 -0
  243. package/src/functions/wirings/cli/serialize-local-cli-bootstrap.ts +75 -0
  244. package/src/functions/wirings/fetch/index.ts +32 -0
  245. package/src/functions/wirings/functions/pikku-command-function-types-split.ts +51 -0
  246. package/src/functions/wirings/functions/pikku-command-function-types.ts +45 -0
  247. package/src/functions/wirings/functions/pikku-command-functions.ts +61 -0
  248. package/src/{wirings → functions/wirings}/functions/pikku-command-services.ts +41 -44
  249. package/src/functions/wirings/functions/pikku-function-types.ts +45 -0
  250. package/src/functions/wirings/functions/schemas.ts +47 -0
  251. package/src/{wirings → functions/wirings}/functions/serialize-function-imports.ts +4 -30
  252. package/src/functions/wirings/functions/serialize-function-types.ts +303 -0
  253. package/src/functions/wirings/functions/serialize-pikku-types-hub.ts +39 -0
  254. package/src/{wirings → functions/wirings}/http/openapi-spec-generator.ts +3 -1
  255. package/src/functions/wirings/http/pikku-command-http-map.ts +32 -0
  256. package/src/functions/wirings/http/pikku-command-http-routes.ts +41 -0
  257. package/src/functions/wirings/http/pikku-command-http-types.ts +27 -0
  258. package/src/functions/wirings/http/pikku-command-openapi.ts +57 -0
  259. package/src/functions/wirings/http/pikku-http-routes.ts +40 -0
  260. package/src/functions/wirings/http/serialize-http-types.ts +64 -0
  261. package/src/{wirings → functions/wirings}/http/serialize-typed-http-map.ts +2 -2
  262. package/src/functions/wirings/mcp/pikku-command-mcp-json.ts +38 -0
  263. package/src/functions/wirings/mcp/pikku-command-mcp-types.ts +27 -0
  264. package/src/{wirings → functions/wirings}/mcp/pikku-command-mcp.ts +55 -46
  265. package/src/{wirings → functions/wirings}/mcp/serialize-mcp-json.ts +1 -1
  266. package/src/functions/wirings/mcp/serialize-mcp-types.ts +141 -0
  267. package/src/functions/wirings/middleware/pikku-command-middleware.ts +65 -0
  268. package/src/functions/wirings/middleware/serialize-middleware-groups-meta.ts +61 -0
  269. package/src/functions/wirings/middleware/serialize-middleware-imports.ts +78 -0
  270. package/src/functions/wirings/queue/pikku-command-queue-map.ts +31 -0
  271. package/src/functions/wirings/queue/pikku-command-queue-service.ts +33 -0
  272. package/src/functions/wirings/queue/pikku-command-queue-types.ts +27 -0
  273. package/src/functions/wirings/queue/pikku-command-queue.ts +46 -0
  274. package/src/functions/wirings/queue/pikku-queue-map.ts +31 -0
  275. package/src/functions/wirings/queue/pikku-queue.ts +44 -0
  276. package/src/{wirings → functions/wirings}/queue/serialize-queue-map.ts +2 -2
  277. package/src/functions/wirings/queue/serialize-queue-types.ts +31 -0
  278. package/src/functions/wirings/rpc/pikku-command-rpc-client.ts +32 -0
  279. package/src/functions/wirings/rpc/pikku-command-rpc-map.ts +52 -0
  280. package/src/functions/wirings/rpc/pikku-command-rpc.ts +28 -0
  281. package/src/{wirings → functions/wirings}/rpc/serialize-typed-rpc-map.ts +2 -2
  282. package/src/functions/wirings/scheduler/pikku-command-scheduler-types.ts +27 -0
  283. package/src/functions/wirings/scheduler/pikku-command-scheduler.ts +46 -0
  284. package/src/functions/wirings/scheduler/serialize-scheduler-types.ts +29 -0
  285. package/src/middleware/log-command-info-and-time.ts +61 -0
  286. package/src/serialize-pikku-types.ts +2 -2
  287. package/src/services/cli-logger-forwarder.service.ts +77 -0
  288. package/src/services/cli-logger.service.ts +78 -0
  289. package/src/services.ts +111 -0
  290. package/src/utils/check-required-types.ts +53 -0
  291. package/src/utils/custom-types-generator.ts +49 -0
  292. package/src/{utils.test.ts → utils/file-import-path.test.ts} +1 -1
  293. package/src/utils/file-import-path.ts +53 -0
  294. package/src/utils/file-imports-serializer.ts +25 -0
  295. package/src/utils/file-writer.ts +56 -0
  296. package/src/utils/generate-bootstrap-file.ts +43 -0
  297. package/src/utils/pikku-cli-config.ts +356 -0
  298. package/src/utils/pikku-files-and-methods.ts +148 -0
  299. package/src/{schema-generator.ts → utils/schema-generator.ts} +3 -1
  300. package/src/{serialize-import-map.ts → utils/serialize-import-map.ts} +1 -1
  301. package/tsconfig.json +2 -2
  302. package/types/application-types.d.ts +20 -0
  303. package/types/config.d.ts +192 -0
  304. package/bin/pikku-all.ts +0 -349
  305. package/bin/pikku-fetch.ts +0 -27
  306. package/bin/pikku-nextjs.ts +0 -44
  307. package/bin/pikku-openapi.ts +0 -31
  308. package/bin/pikku-queue-service.ts +0 -28
  309. package/bin/pikku-rpc.ts +0 -28
  310. package/bin/pikku-schemas.ts +0 -31
  311. package/bin/pikku-websocket.ts +0 -28
  312. package/dist/bin/pikku-all.d.ts +0 -4
  313. package/dist/bin/pikku-all.js +0 -194
  314. package/dist/bin/pikku-fetch.d.ts +0 -4
  315. package/dist/bin/pikku-fetch.js +0 -19
  316. package/dist/bin/pikku-nextjs.d.ts +0 -4
  317. package/dist/bin/pikku-nextjs.js +0 -24
  318. package/dist/bin/pikku-openapi.d.ts +0 -2
  319. package/dist/bin/pikku-openapi.js +0 -19
  320. package/dist/bin/pikku-queue-service.d.ts +0 -4
  321. package/dist/bin/pikku-queue-service.js +0 -19
  322. package/dist/bin/pikku-rpc.d.ts +0 -4
  323. package/dist/bin/pikku-rpc.js +0 -19
  324. package/dist/bin/pikku-schemas.d.ts +0 -2
  325. package/dist/bin/pikku-schemas.js +0 -21
  326. package/dist/bin/pikku-websocket.d.ts +0 -4
  327. package/dist/bin/pikku-websocket.js +0 -19
  328. package/dist/src/inspector-glob.d.ts +0 -2
  329. package/dist/src/inspector-glob.js +0 -12
  330. package/dist/src/pikku-cli-config.d.ts +0 -56
  331. package/dist/src/pikku-cli-config.js +0 -203
  332. package/dist/src/pikku-command-schemas.d.ts +0 -2
  333. package/dist/src/pikku-command-schemas.js +0 -8
  334. package/dist/src/runtimes/nextjs/pikku-command-nextjs.d.ts +0 -2
  335. package/dist/src/schemas.d.ts +0 -2
  336. package/dist/src/schemas.js +0 -8
  337. package/dist/src/types.d.ts +0 -5
  338. package/dist/src/utils.d.ts +0 -60
  339. package/dist/src/utils.js +0 -248
  340. package/dist/src/wirings/channels/pikku-channels.d.ts +0 -2
  341. package/dist/src/wirings/channels/pikku-channels.js +0 -9
  342. package/dist/src/wirings/channels/pikku-command-channels-map.d.ts +0 -2
  343. package/dist/src/wirings/channels/pikku-command-channels-map.js +0 -8
  344. package/dist/src/wirings/channels/pikku-command-channels.d.ts +0 -2
  345. package/dist/src/wirings/channels/pikku-command-channels.js +0 -9
  346. package/dist/src/wirings/channels/pikku-command-websocket-typed.d.ts +0 -2
  347. package/dist/src/wirings/channels/pikku-command-websocket-typed.js +0 -15
  348. package/dist/src/wirings/fetch/index.d.ts +0 -2
  349. package/dist/src/wirings/fetch/index.js +0 -12
  350. package/dist/src/wirings/functions/pikku-command-function-types.d.ts +0 -2
  351. package/dist/src/wirings/functions/pikku-command-function-types.js +0 -13
  352. package/dist/src/wirings/functions/pikku-command-functions.d.ts +0 -2
  353. package/dist/src/wirings/functions/pikku-command-functions.js +0 -14
  354. package/dist/src/wirings/functions/pikku-function-types.d.ts +0 -2
  355. package/dist/src/wirings/functions/pikku-function-types.js +0 -13
  356. package/dist/src/wirings/http/pikku-command-http-map.d.ts +0 -2
  357. package/dist/src/wirings/http/pikku-command-http-map.js +0 -8
  358. package/dist/src/wirings/http/pikku-command-http-routes.d.ts +0 -2
  359. package/dist/src/wirings/http/pikku-command-http-routes.js +0 -9
  360. package/dist/src/wirings/http/pikku-command-openapi.d.ts +0 -2
  361. package/dist/src/wirings/http/pikku-command-openapi.js +0 -20
  362. package/dist/src/wirings/http/pikku-http-routes.d.ts +0 -2
  363. package/dist/src/wirings/http/pikku-http-routes.js +0 -9
  364. package/dist/src/wirings/mcp/pikku-command-mcp-json.d.ts +0 -2
  365. package/dist/src/wirings/mcp/pikku-command-mcp-json.js +0 -13
  366. package/dist/src/wirings/mcp/pikku-command-mcp.d.ts +0 -2
  367. package/dist/src/wirings/queue/pikku-command-queue-map.d.ts +0 -2
  368. package/dist/src/wirings/queue/pikku-command-queue-map.js +0 -8
  369. package/dist/src/wirings/queue/pikku-command-queue-service.d.ts +0 -2
  370. package/dist/src/wirings/queue/pikku-command-queue-service.js +0 -15
  371. package/dist/src/wirings/queue/pikku-command-queue.d.ts +0 -2
  372. package/dist/src/wirings/queue/pikku-command-queue.js +0 -10
  373. package/dist/src/wirings/queue/pikku-queue-map.d.ts +0 -2
  374. package/dist/src/wirings/queue/pikku-queue-map.js +0 -8
  375. package/dist/src/wirings/queue/pikku-queue.d.ts +0 -2
  376. package/dist/src/wirings/queue/pikku-queue.js +0 -10
  377. package/dist/src/wirings/rpc/pikku-command-rpc-client.d.ts +0 -2
  378. package/dist/src/wirings/rpc/pikku-command-rpc-client.js +0 -15
  379. package/dist/src/wirings/rpc/pikku-command-rpc-map.d.ts +0 -3
  380. package/dist/src/wirings/rpc/pikku-command-rpc-map.js +0 -14
  381. package/dist/src/wirings/rpc/pikku-command-rpc.d.ts +0 -2
  382. package/dist/src/wirings/rpc/pikku-command-rpc.js +0 -8
  383. package/dist/src/wirings/scheduler/pikku-command-scheduler.d.ts +0 -2
  384. package/dist/src/wirings/scheduler/pikku-command-scheduler.js +0 -10
  385. package/src/inspector-glob.ts +0 -30
  386. package/src/pikku-cli-config.ts +0 -387
  387. package/src/pikku-command-schemas.ts +0 -35
  388. package/src/runtimes/nextjs/pikku-command-nextjs.ts +0 -110
  389. package/src/schemas.ts +0 -35
  390. package/src/types.ts +0 -16
  391. package/src/utils.ts +0 -420
  392. package/src/wirings/channels/pikku-channels.ts +0 -41
  393. package/src/wirings/channels/pikku-command-channels-map.ts +0 -26
  394. package/src/wirings/channels/pikku-command-channels.ts +0 -39
  395. package/src/wirings/channels/pikku-command-websocket-typed.ts +0 -36
  396. package/src/wirings/fetch/index.ts +0 -33
  397. package/src/wirings/functions/pikku-command-function-types.ts +0 -53
  398. package/src/wirings/functions/pikku-command-functions.ts +0 -48
  399. package/src/wirings/functions/pikku-function-types.ts +0 -52
  400. package/src/wirings/http/pikku-command-http-map.ts +0 -27
  401. package/src/wirings/http/pikku-command-http-routes.ts +0 -40
  402. package/src/wirings/http/pikku-command-openapi.ts +0 -55
  403. package/src/wirings/http/pikku-http-routes.ts +0 -40
  404. package/src/wirings/mcp/pikku-command-mcp-json.ts +0 -33
  405. package/src/wirings/queue/pikku-command-queue-map.ts +0 -26
  406. package/src/wirings/queue/pikku-command-queue-service.ts +0 -36
  407. package/src/wirings/queue/pikku-command-queue.ts +0 -45
  408. package/src/wirings/queue/pikku-queue-map.ts +0 -26
  409. package/src/wirings/queue/pikku-queue.ts +0 -43
  410. package/src/wirings/rpc/pikku-command-rpc-client.ts +0 -35
  411. package/src/wirings/rpc/pikku-command-rpc-map.ts +0 -49
  412. package/src/wirings/rpc/pikku-command-rpc.ts +0 -24
  413. package/src/wirings/scheduler/pikku-command-scheduler.ts +0 -43
  414. /package/dist/{src/types.js → .pikku/cli/pikku-cli-wirings-meta.gen.d.ts} +0 -0
  415. /package/dist/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-backend-wrapper.d.ts +0 -0
  416. /package/dist/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-backend-wrapper.js +0 -0
  417. /package/dist/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-http-wrapper.d.ts +0 -0
  418. /package/dist/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-http-wrapper.js +0 -0
  419. /package/dist/src/{wirings → functions/wirings}/channels/serialize-typed-channel-map.d.ts +0 -0
  420. /package/dist/src/{wirings → functions/wirings}/channels/serialize-websocket-wrapper.d.ts +0 -0
  421. /package/dist/src/{wirings → functions/wirings}/channels/serialize-websocket-wrapper.js +0 -0
  422. /package/dist/src/{wirings → functions/wirings}/functions/serialize-function-imports.d.ts +0 -0
  423. /package/dist/src/{wirings → functions/wirings}/http/serialize-fetch-wrapper.d.ts +0 -0
  424. /package/dist/src/{wirings → functions/wirings}/http/serialize-fetch-wrapper.js +0 -0
  425. /package/dist/src/{wirings → functions/wirings}/http/serialize-typed-http-map.d.ts +0 -0
  426. /package/dist/src/{wirings → functions/wirings}/mcp/serialize-mcp-json.js +0 -0
  427. /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-map.d.ts +0 -0
  428. /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-meta.d.ts +0 -0
  429. /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-meta.js +0 -0
  430. /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-wrapper.d.ts +0 -0
  431. /package/dist/src/{wirings → functions/wirings}/queue/serialize-queue-wrapper.js +0 -0
  432. /package/dist/src/{wirings → functions/wirings}/rpc/serialize-rpc-wrapper.d.ts +0 -0
  433. /package/dist/src/{wirings → functions/wirings}/rpc/serialize-rpc-wrapper.js +0 -0
  434. /package/dist/src/{wirings → functions/wirings}/rpc/serialize-typed-rpc-map.d.ts +0 -0
  435. /package/dist/src/{wirings → functions/wirings}/scheduler/serialize-scheduler-meta.d.ts +0 -0
  436. /package/dist/src/{wirings → functions/wirings}/scheduler/serialize-scheduler-meta.js +0 -0
  437. /package/dist/src/{serialize-import-map.d.ts → utils/serialize-import-map.d.ts} +0 -0
  438. /package/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-backend-wrapper.ts +0 -0
  439. /package/src/{runtimes → functions/runtimes}/nextjs/serialize-nextjs-http-wrapper.ts +0 -0
  440. /package/src/{wirings → functions/wirings}/channels/serialize-websocket-wrapper.ts +0 -0
  441. /package/src/{wirings → functions/wirings}/http/serialize-fetch-wrapper.ts +0 -0
  442. /package/src/{wirings → functions/wirings}/queue/serialize-queue-meta.ts +0 -0
  443. /package/src/{wirings → functions/wirings}/queue/serialize-queue-wrapper.ts +0 -0
  444. /package/src/{wirings → functions/wirings}/rpc/serialize-rpc-wrapper.ts +0 -0
  445. /package/src/{wirings → functions/wirings}/scheduler/serialize-scheduler-meta.ts +0 -0
@@ -1,2 +0,0 @@
1
- import { PikkuCommand } from './types.js';
2
- export declare const pikkuSchemas: PikkuCommand;
@@ -1,8 +0,0 @@
1
- import { generateSchemas, saveSchemas } from './schema-generator.js';
2
- import { logCommandInfoAndTime } from './utils.js';
3
- export const pikkuSchemas = async (logger, { tsconfig, schemaDirectory, supportsImportAttributes, schemasFromTypes }, { functions, http }) => {
4
- return await logCommandInfoAndTime(logger, 'Creating schemas', 'Created schemas', [false], async () => {
5
- const schemas = await generateSchemas(logger, tsconfig, functions.typesMap, functions.meta, http.meta, schemasFromTypes);
6
- await saveSchemas(logger, schemaDirectory, schemas, functions.typesMap, functions.meta, supportsImportAttributes, schemasFromTypes);
7
- });
8
- };
@@ -1,2 +0,0 @@
1
- import { PikkuCommand } from '../../types.js';
2
- export declare const pikkuNext: PikkuCommand;
@@ -1,2 +0,0 @@
1
- import { PikkuCommand } from './types.js';
2
- export declare const pikkuSchemas: PikkuCommand;
@@ -1,8 +0,0 @@
1
- import { saveSchemas, generateSchemas } from './schema-generator.js';
2
- import { logCommandInfoAndTime } from './utils.js';
3
- export const pikkuSchemas = async (logger, { tsconfig, schemaDirectory, supportsImportAttributes, schemasFromTypes }, { functions, http }) => {
4
- return await logCommandInfoAndTime(logger, 'Creating schemas', 'Created schemas', [false], async () => {
5
- const schemas = await generateSchemas(logger, tsconfig, functions.typesMap, functions.meta, http.meta, schemasFromTypes);
6
- await saveSchemas(logger, schemaDirectory, schemas, functions.typesMap, functions.meta, supportsImportAttributes, schemasFromTypes);
7
- });
8
- };
@@ -1,5 +0,0 @@
1
- import { InspectorState } from '@pikku/inspector';
2
- import { PikkuCLIConfig } from './pikku-cli-config.js';
3
- import { CLILogger, PikkuCLIOptions } from './utils.js';
4
- export type PikkuCommand = (logger: CLILogger, cliConfig: PikkuCLIConfig, visitState: InspectorState, options?: PikkuCLIOptions) => Promise<boolean>;
5
- export type PikkuCommandWithoutState = (logger: CLILogger, cliConfig: PikkuCLIConfig, options?: PikkuCLIOptions) => Promise<boolean>;
@@ -1,60 +0,0 @@
1
- import { InspectorState, TypesMap } from '@pikku/inspector';
2
- export declare class CLILogger {
3
- private silent;
4
- constructor({ logLogo, silent, }: {
5
- logLogo: boolean;
6
- silent?: boolean;
7
- });
8
- primary(message: string): void;
9
- success(message: string): void;
10
- info(message: string): void;
11
- error(message: string): void;
12
- warn(message: string): void;
13
- debug(message: string): void;
14
- timing(message: string): void;
15
- private logPikkuLogo;
16
- }
17
- export declare const getFileImportRelativePath: (from: string, to: string, packageMappings: Record<string, string>) => string;
18
- interface Meta {
19
- file: string;
20
- variable: string;
21
- type: string;
22
- typePath: string;
23
- }
24
- export type FilesAndMethods = {
25
- userSessionType: Meta;
26
- sessionServicesType: Meta;
27
- singletonServicesType: Meta;
28
- pikkuConfigFactory: Meta;
29
- singletonServicesFactory: Meta;
30
- sessionServicesFactory: Meta;
31
- };
32
- export interface PikkuCLIOptions {
33
- watch?: boolean;
34
- config?: string;
35
- configFileType?: string;
36
- userSessionType?: string;
37
- singletonServicesFactoryType?: string;
38
- sessionServicesFactoryType?: string;
39
- tags?: string[];
40
- types?: string[];
41
- directories?: string[];
42
- silent?: boolean;
43
- }
44
- export declare const getPikkuFilesAndMethods: (logger: CLILogger, { singletonServicesTypeImportMap, sessionServicesTypeImportMap, userSessionTypeImportMap, sessionServicesFactories, singletonServicesFactories, configFactories, }: InspectorState, packageMappings: Record<string, string>, outputFile: string, { configFileType, singletonServicesFactoryType, sessionServicesFactoryType, }: PikkuCLIOptions, requires?: Partial<{
45
- config: boolean;
46
- sessionServiceType: boolean;
47
- singletonServicesType: boolean;
48
- userSessionType: boolean;
49
- singletonServicesFactory: boolean;
50
- sessionServicesFactory: boolean;
51
- }>) => Promise<FilesAndMethods>;
52
- export declare const writeFileInDir: (logger: CLILogger, path: string, content: string, { ignoreModifyComment, logWrite, }?: {
53
- ignoreModifyComment?: boolean;
54
- logWrite?: boolean;
55
- }) => Promise<void>;
56
- export declare const logCommandInfoAndTime: (logger: CLILogger, commandStart: string, commandEnd: string, [skipCondition, skipMessage]: [boolean] | [boolean, string], callback: (...args: any[]) => Promise<unknown>) => Promise<boolean>;
57
- export declare const DO_NOT_MODIFY_COMMENT = "/**\n * This file was generated by the @pikku/cli\n */\n";
58
- export declare const serializeFileImports: (importType: string, outputPath: string, files: Set<string>, packageMappings?: Record<string, string>) => string;
59
- export declare function generateCustomTypes(typesMap: TypesMap, requiredTypes: Set<string>): string;
60
- export {};
package/dist/src/utils.js DELETED
@@ -1,248 +0,0 @@
1
- import { relative, dirname, resolve } from 'path';
2
- import { mkdir, readFile, writeFile } from 'fs/promises';
3
- import chalk from 'chalk';
4
- import { fileURLToPath } from 'url';
5
- import { readFileSync } from 'fs';
6
- const __filename = fileURLToPath(import.meta.url);
7
- const logo = `
8
- ______ _ _ _
9
- (_____ (_) | | |
10
- _____) )| | _| | _ _ _
11
- | ____/ | |_/ ) |_/ ) | | |
12
- | | | | _ (| _ (| |_| |
13
- |_| |_|_| _)_| _)____/
14
- `;
15
- export class CLILogger {
16
- silent;
17
- constructor({ logLogo, silent = false, }) {
18
- this.silent = silent;
19
- if (logLogo && !silent) {
20
- this.logPikkuLogo();
21
- }
22
- }
23
- primary(message) {
24
- if (!this.silent) {
25
- console.log(chalk.green(message));
26
- }
27
- }
28
- success(message) {
29
- if (!this.silent) {
30
- console.log(chalk.green(message));
31
- }
32
- }
33
- info(message) {
34
- if (!this.silent) {
35
- console.log(chalk.blue(message));
36
- }
37
- }
38
- error(message) {
39
- console.error(chalk.red(message));
40
- }
41
- warn(message) {
42
- console.error(chalk.yellow(message));
43
- }
44
- debug(message) {
45
- if (process.env.DEBUG && !this.silent) {
46
- console.log(chalk.gray(message));
47
- }
48
- }
49
- timing(message) {
50
- console.log(chalk.gray(message));
51
- }
52
- logPikkuLogo() {
53
- this.primary(logo);
54
- const packageJson = JSON.parse(readFileSync(`${dirname(__filename)}/../../package.json`, 'utf-8'));
55
- this.primary(`⚙️ Welcome to the Pikku CLI (v${packageJson.version})\n`);
56
- }
57
- }
58
- export const getFileImportRelativePath = (from, to, packageMappings) => {
59
- let filePath = relative(dirname(from), to);
60
- if (!/^\.+\//.test(filePath)) {
61
- filePath = `./${filePath}`;
62
- }
63
- // If the path includes node_modules, strip everything before and including node_modules/
64
- if (filePath.includes('node_modules')) {
65
- const nodeModulesIndex = filePath.indexOf('node_modules/');
66
- if (nodeModulesIndex !== -1) {
67
- filePath = filePath.substring(nodeModulesIndex + 'node_modules/'.length);
68
- }
69
- return filePath.replace('.ts', '.js');
70
- }
71
- const absolutePath = resolve(dirname(from), to);
72
- const fromAbsolutePath = resolve(dirname(from));
73
- // Check if both files are in the same package directory
74
- // If so, skip packageMappings to use relative paths
75
- let inSamePackage = false;
76
- for (const [path] of Object.entries(packageMappings)) {
77
- if (absolutePath.includes(path) && fromAbsolutePath.includes(path)) {
78
- inSamePackage = true;
79
- break;
80
- }
81
- }
82
- // Only apply packageMappings if files are not in the same package
83
- if (!inSamePackage) {
84
- // let usesPackageName = false
85
- for (const [path, packageName] of Object.entries(packageMappings)) {
86
- if (absolutePath.includes(path)) {
87
- // usesPackageName = true
88
- filePath = absolutePath.replace(new RegExp(`.*${path}`), packageName);
89
- break;
90
- }
91
- }
92
- }
93
- // if (usesPackageName) {
94
- // return filePath.replace('.ts', '')
95
- // }
96
- return filePath.replace('.ts', '.js');
97
- };
98
- const getMetaTypes = (type, errors, map, desiredType) => {
99
- if (desiredType) {
100
- const entries = Object.entries(map);
101
- for (const [file, meta] of entries) {
102
- for (const { type, variable, typePath } of meta) {
103
- if (type === desiredType) {
104
- return { file, variable, type, typePath };
105
- }
106
- }
107
- }
108
- errors.set(`No ${desiredType} found that extends ${type}`, map);
109
- return undefined;
110
- }
111
- const totalValues = Object.values(map).flat();
112
- if (totalValues.length === 0) {
113
- errors.set(`No ${type} found`, map);
114
- }
115
- else if (totalValues.length > 1) {
116
- errors.set(`More than one ${type} found`, map);
117
- }
118
- else {
119
- const entry = Object.entries(map)[0];
120
- if (entry) {
121
- const [file, [{ type, variable, typePath }]] = entry;
122
- return { file, type, variable, typePath };
123
- }
124
- }
125
- return undefined;
126
- };
127
- export const getPikkuFilesAndMethods = async (logger, { singletonServicesTypeImportMap, sessionServicesTypeImportMap, userSessionTypeImportMap, sessionServicesFactories, singletonServicesFactories, configFactories, }, packageMappings, outputFile, { configFileType, singletonServicesFactoryType, sessionServicesFactoryType, }, requires = {
128
- config: false,
129
- singletonServicesType: false,
130
- sessionServiceType: false,
131
- userSessionType: false,
132
- singletonServicesFactory: false,
133
- sessionServicesFactory: false,
134
- }) => {
135
- let errors = new Map();
136
- const result = {
137
- userSessionType: getMetaTypes('CoreUserSession', requires.userSessionType ? errors : new Map(), userSessionTypeImportMap, configFileType),
138
- singletonServicesType: getMetaTypes('CoreSingletonServices', requires.singletonServicesType ? errors : new Map(), singletonServicesTypeImportMap),
139
- sessionServicesType: getMetaTypes('CoreServices', requires.sessionServiceType ? errors : new Map(), sessionServicesTypeImportMap),
140
- pikkuConfigFactory: getMetaTypes('CoreConfig', requires.config ? errors : new Map(), configFactories, configFileType),
141
- singletonServicesFactory: getMetaTypes('CreateSingletonServices', requires.singletonServicesFactory ? errors : new Map(), singletonServicesFactories, singletonServicesFactoryType),
142
- sessionServicesFactory: getMetaTypes('CreateSessionServices', requires.sessionServicesFactory ? errors : new Map(), sessionServicesFactories, sessionServicesFactoryType),
143
- };
144
- if (errors.size > 0) {
145
- const result = ['Found errors:'];
146
- errors.forEach((filesAndMethods, message) => {
147
- result.push(`- ${message}`);
148
- for (const [file, methods] of Object.entries(filesAndMethods)) {
149
- result.push(`\t* file: ${getFileImportRelativePath(outputFile, file, packageMappings)}`);
150
- result.push(`\t* methods: ${methods.map(({ variable, type }) => `${variable}: ${type}`).join(', ')}`);
151
- }
152
- });
153
- logger.error(result.join('\n'));
154
- process.exit(1);
155
- }
156
- return result;
157
- };
158
- export const writeFileInDir = async (logger, path, content, { ignoreModifyComment = false, logWrite = true, } = {}) => {
159
- if (path.includes('.json')) {
160
- ignoreModifyComment = true;
161
- }
162
- if (content.includes('server-only')) {
163
- content = content.replace("'server-only'", `'server-only'\n\n${ignoreModifyComment ? '' : DO_NOT_MODIFY_COMMENT}`);
164
- }
165
- else {
166
- content = `${ignoreModifyComment ? '' : DO_NOT_MODIFY_COMMENT}${content}`;
167
- }
168
- // Try to read existing file content
169
- let existingContent;
170
- try {
171
- existingContent = await readFile(path, 'utf-8');
172
- }
173
- catch (error) {
174
- // File doesn't exist, so we need to write it
175
- }
176
- // Only write if content has changed or file doesn't exist
177
- if (existingContent !== content) {
178
- await mkdir(dirname(path), { recursive: true });
179
- await writeFile(path, content, 'utf-8');
180
- if (logWrite) {
181
- logger.success(`✓ File written to ${path}`);
182
- }
183
- }
184
- };
185
- export const logCommandInfoAndTime = async (logger, commandStart, commandEnd, [skipCondition, skipMessage = 'none found'], callback) => {
186
- if (skipCondition === true) {
187
- logger.info(`• Skipping ${commandStart.charAt(0).toLocaleLowerCase()}${commandStart.slice(1)} since ${skipMessage}.`);
188
- return false;
189
- }
190
- const start = Date.now();
191
- chalk.blue(`• ${commandStart}...`);
192
- await callback();
193
- logger.success(`✓ ${commandEnd} in ${Date.now() - start}ms.`);
194
- return true;
195
- };
196
- // TODO: add version back in once the ESM dust settles
197
- export const DO_NOT_MODIFY_COMMENT = `/**
198
- * This file was generated by the @pikku/cli
199
- */
200
- `;
201
- export const serializeFileImports = (importType, outputPath, files, packageMappings = {}) => {
202
- const serializedOutput = [
203
- `/* The files with an ${importType} function call */`,
204
- ];
205
- Array.from(files)
206
- .sort()
207
- .forEach((path) => {
208
- const filePath = getFileImportRelativePath(outputPath, path, packageMappings);
209
- serializedOutput.push(`import '${filePath}'`);
210
- });
211
- return serializedOutput.join('\n');
212
- };
213
- export function generateCustomTypes(typesMap, requiredTypes) {
214
- return `
215
- // Custom types are those that are defined directly within generics
216
- // or are broken into simpler types
217
- ${Array.from(typesMap.customTypes.entries())
218
- .map(([name, { type, references }]) => {
219
- references.forEach((name) => {
220
- requiredTypes.add(name);
221
- });
222
- // Extract type names from the type string that might not be in references
223
- const typeString = type;
224
- // Use regex to extract potential type names (PascalCase identifiers)
225
- const typeNameRegex = /\b[A-Z][a-zA-Z0-9]*\b/g;
226
- const potentialTypes = typeString.match(typeNameRegex) || [];
227
- potentialTypes.forEach((typeName) => {
228
- // Skip string literals and common keywords
229
- if (typeString.includes(`"${typeName}"`) ||
230
- ['Pick', 'Omit', 'Partial', 'Required', 'Record', 'Readonly'].includes(typeName)) {
231
- return;
232
- }
233
- // Try to find this type in the typesMap and add it if found
234
- try {
235
- const typeMeta = typesMap.getTypeMeta(typeName);
236
- if (typeMeta.path) {
237
- requiredTypes.add(typeName);
238
- }
239
- }
240
- catch (e) {
241
- // Type not found in map, but add it anyway for fallback resolution
242
- requiredTypes.add(typeName);
243
- }
244
- });
245
- return `export type ${name} = ${type}`;
246
- })
247
- .join('\n')}`;
248
- }
@@ -1,2 +0,0 @@
1
- import { PikkuCommand } from '../../types.js';
2
- export declare const pikkuChannels: PikkuCommand;
@@ -1,9 +0,0 @@
1
- import { logCommandInfoAndTime, serializeFileImports, writeFileInDir, } from '../../utils.js';
2
- export const pikkuChannels = async (logger, cliConfig, visitState) => {
3
- return await logCommandInfoAndTime(logger, 'Finding Channels', 'Found channels', [visitState.channels.files.size === 0], async () => {
4
- const { channelsWiringFile, channelsWiringMetaFile, packageMappings } = cliConfig;
5
- const { channels } = visitState;
6
- await writeFileInDir(logger, channelsWiringFile, serializeFileImports('addChannel', channelsWiringFile, channels.files, packageMappings));
7
- await writeFileInDir(logger, channelsWiringMetaFile, `import { pikkuState } from '@pikku/core'\npikkuState('channel', 'meta', ${JSON.stringify(channels.meta, null, 2)})`);
8
- });
9
- };
@@ -1,2 +0,0 @@
1
- import { PikkuCommand } from '../../types.js';
2
- export declare const pikkuChannelsMap: PikkuCommand;
@@ -1,8 +0,0 @@
1
- import { logCommandInfoAndTime, writeFileInDir } from '../../utils.js';
2
- import { serializeTypedChannelsMap } from './serialize-typed-channel-map.js';
3
- export const pikkuChannelsMap = async (logger, { channelsMapDeclarationFile, packageMappings }, state) => {
4
- return await logCommandInfoAndTime(logger, 'Creating channels map', 'Created channels map', [state.channels.files.size === 0], async () => {
5
- const content = serializeTypedChannelsMap(channelsMapDeclarationFile, packageMappings, state.functions.typesMap, state.functions.meta, state.channels.meta);
6
- await writeFileInDir(logger, channelsMapDeclarationFile, content);
7
- });
8
- };
@@ -1,2 +0,0 @@
1
- import { PikkuCommand } from '../../types.js';
2
- export declare const pikkuChannels: PikkuCommand;
@@ -1,9 +0,0 @@
1
- import { logCommandInfoAndTime, serializeFileImports, writeFileInDir, } from '../../utils.js';
2
- export const pikkuChannels = async (logger, cliConfig, visitState) => {
3
- return await logCommandInfoAndTime(logger, 'Finding Channels', 'Found channels', [visitState.channels.files.size === 0], async () => {
4
- const { channelsWiringFile, channelsWiringMetaFile, packageMappings } = cliConfig;
5
- const { channels } = visitState;
6
- await writeFileInDir(logger, channelsWiringFile, serializeFileImports('addChannel', channelsWiringFile, channels.files, packageMappings));
7
- await writeFileInDir(logger, channelsWiringMetaFile, `import { pikkuState } from '@pikku/core'\npikkuState('channel', 'meta', ${JSON.stringify(channels.meta, null, 2)})`);
8
- });
9
- };
@@ -1,2 +0,0 @@
1
- import { PikkuCommandWithoutState } from '../../types.js';
2
- export declare const pikkuWebSocketTyped: PikkuCommandWithoutState;
@@ -1,15 +0,0 @@
1
- import { logCommandInfoAndTime, getFileImportRelativePath, writeFileInDir, } from '../../utils.js';
2
- import { serializeWebsocketWrapper } from './serialize-websocket-wrapper.js';
3
- export const pikkuWebSocketTyped = async (logger, { websocketFile, channelsMapDeclarationFile, packageMappings }) => {
4
- return await logCommandInfoAndTime(logger, 'Generating websocket wrapper', 'Generated websocket wrapper', [
5
- websocketFile === undefined,
6
- "websocketFile isn't set in the pikku config",
7
- ], async () => {
8
- if (!websocketFile) {
9
- throw new Error("fetchFile is isn't set in the pikku config");
10
- }
11
- const channelsMapDeclarationPath = getFileImportRelativePath(websocketFile, channelsMapDeclarationFile, packageMappings);
12
- const content = [serializeWebsocketWrapper(channelsMapDeclarationPath)];
13
- await writeFileInDir(logger, websocketFile, content.join('\n'));
14
- });
15
- };
@@ -1,2 +0,0 @@
1
- import { PikkuCommandWithoutState } from '../../types.js';
2
- export declare const pikkuFetch: PikkuCommandWithoutState;
@@ -1,12 +0,0 @@
1
- import { serializeFetchWrapper } from '../http/serialize-fetch-wrapper.js';
2
- import { getFileImportRelativePath, logCommandInfoAndTime, writeFileInDir, } from '../../utils.js';
3
- export const pikkuFetch = async (logger, { fetchFile, httpMapDeclarationFile, packageMappings }) => {
4
- return await logCommandInfoAndTime(logger, 'Generating fetch wrapper', 'Generated fetch wrapper', [fetchFile === undefined, "fetchFile isn't set in the pikku config"], async () => {
5
- if (!fetchFile) {
6
- throw new Error("fetchFile is isn't set in the pikku config");
7
- }
8
- const routesMapDeclarationPath = getFileImportRelativePath(fetchFile, httpMapDeclarationFile, packageMappings);
9
- const content = [serializeFetchWrapper(routesMapDeclarationPath)];
10
- await writeFileInDir(logger, fetchFile, content.join('\n'));
11
- });
12
- };
@@ -1,2 +0,0 @@
1
- import { PikkuCommand } from '../../types.js';
2
- export declare const pikkuFunctionTypes: PikkuCommand;
@@ -1,13 +0,0 @@
1
- import { getFileImportRelativePath, getPikkuFilesAndMethods, logCommandInfoAndTime, writeFileInDir, } from '../../utils.js';
2
- import { serializePikkuTypes } from '../../serialize-pikku-types.js';
3
- export const pikkuFunctionTypes = async (logger, { typesDeclarationFile: typesFile, packageMappings, rpcInternalMapDeclarationFile, }, visitState, options = {}) => {
4
- return await logCommandInfoAndTime(logger, 'Creating api types', 'Created api types', [false], async () => {
5
- const { userSessionType, sessionServicesType, singletonServicesType } = await getPikkuFilesAndMethods(logger, visitState, packageMappings, typesFile, options, {
6
- userSessionType: true,
7
- sessionServiceType: true,
8
- singletonServicesType: true,
9
- });
10
- const content = serializePikkuTypes(`import type { ${userSessionType.type} } from '${getFileImportRelativePath(typesFile, userSessionType.typePath, packageMappings)}'`, userSessionType.type, `import type { ${singletonServicesType.type} } from '${getFileImportRelativePath(typesFile, singletonServicesType.typePath, packageMappings)}'`, singletonServicesType.type, `import type { ${sessionServicesType.type} } from '${getFileImportRelativePath(typesFile, sessionServicesType.typePath, packageMappings)}'`, sessionServicesType.type, `import type { TypedPikkuRPC } from '${getFileImportRelativePath(typesFile, rpcInternalMapDeclarationFile, packageMappings)}'`);
11
- await writeFileInDir(logger, typesFile, content);
12
- });
13
- };
@@ -1,2 +0,0 @@
1
- import { PikkuCommand } from '../../types.js';
2
- export declare const pikkuFunctions: PikkuCommand;
@@ -1,14 +0,0 @@
1
- import { logCommandInfoAndTime, writeFileInDir } from '../../utils.js';
2
- import { generateRuntimeMeta, serializeFunctionImports, } from './serialize-function-imports.js';
3
- export const pikkuFunctions = async (logger, { functionsMetaFile, functionsMetaMinFile, functionsFile, packageMappings }, { functions, rpc }) => {
4
- return await logCommandInfoAndTime(logger, 'Serializing Pikku functions', 'Serialized Pikku functions', [false], async () => {
5
- // Generate full metadata
6
- await writeFileInDir(logger, functionsMetaFile, `import { pikkuState } from '@pikku/core'\npikkuState('function', 'meta', ${JSON.stringify(functions.meta, null, 2)})`);
7
- // Generate minimal metadata (runtime)
8
- const runtimeMeta = generateRuntimeMeta(functions.meta);
9
- await writeFileInDir(logger, functionsMetaMinFile, `import { pikkuState } from '@pikku/core'\npikkuState('function', 'meta', ${JSON.stringify(runtimeMeta, null, 2)})`);
10
- if (rpc.exposedFiles.size > 0 || rpc.internalFiles.size > 0) {
11
- await writeFileInDir(logger, functionsFile, serializeFunctionImports(functionsFile, rpc.internalFiles, functions.meta, packageMappings));
12
- }
13
- });
14
- };
@@ -1,2 +0,0 @@
1
- import { PikkuCommand } from '../../types.js';
2
- export declare const pikkuFunctionTypes: PikkuCommand;
@@ -1,13 +0,0 @@
1
- import { getFileImportRelativePath, getPikkuFilesAndMethods, logCommandInfoAndTime, writeFileInDir, } from '../../utils.js';
2
- import { serializePikkuTypes } from '../../serialize-pikku-types.js';
3
- export const pikkuFunctionTypes = async (logger, { typesDeclarationFile: typesFile, packageMappings, rpcInternalMapDeclarationFile, }, visitState, options = {}) => {
4
- return await logCommandInfoAndTime(logger, 'Creating api types', 'Created api types', [false], async () => {
5
- const { userSessionType, sessionServicesType, singletonServicesType } = await getPikkuFilesAndMethods(logger, visitState, packageMappings, typesFile, options, {
6
- userSessionType: true,
7
- sessionServiceType: true,
8
- singletonServicesType: true,
9
- });
10
- const content = serializePikkuTypes(`import type { ${userSessionType.type} } from '${getFileImportRelativePath(typesFile, userSessionType.typePath, packageMappings)}'`, userSessionType.type, `import type { ${singletonServicesType.type} } from '${getFileImportRelativePath(typesFile, singletonServicesType.typePath, packageMappings)}'`, singletonServicesType.type, `import type { ${sessionServicesType.type} } from '${getFileImportRelativePath(typesFile, sessionServicesType.typePath, packageMappings)}'`, sessionServicesType.type, `import type { TypedPikkuRPC } from '${getFileImportRelativePath(typesFile, rpcInternalMapDeclarationFile, packageMappings)}'`);
11
- await writeFileInDir(logger, typesFile, content);
12
- });
13
- };
@@ -1,2 +0,0 @@
1
- import { PikkuCommand } from '../../types.js';
2
- export declare const pikkuHTTPMap: PikkuCommand;
@@ -1,8 +0,0 @@
1
- import { logCommandInfoAndTime, writeFileInDir } from '../../utils.js';
2
- import { serializeTypedHTTPWiringsMap } from './serialize-typed-http-map.js';
3
- export const pikkuHTTPMap = async (logger, { httpMapDeclarationFile, packageMappings }, { http, functions }) => {
4
- return await logCommandInfoAndTime(logger, 'Creating HTTP map', 'Created HTTP map', [http.files.size === 0], async () => {
5
- const content = serializeTypedHTTPWiringsMap(httpMapDeclarationFile, packageMappings, functions.typesMap, functions.meta, http.meta, http.metaInputTypes);
6
- await writeFileInDir(logger, httpMapDeclarationFile, content);
7
- });
8
- };
@@ -1,2 +0,0 @@
1
- import { PikkuCommand } from '../../types.js';
2
- export declare const pikkuHTTP: PikkuCommand;
@@ -1,9 +0,0 @@
1
- import { logCommandInfoAndTime, serializeFileImports, writeFileInDir, } from '../../utils.js';
2
- export const pikkuHTTP = async (logger, cliConfig, visitState) => {
3
- return await logCommandInfoAndTime(logger, 'Finding HTTP routes', 'Found HTTP routes', [visitState.http.files.size === 0], async () => {
4
- const { httpWiringsFile, httpWiringMetaFile, packageMappings } = cliConfig;
5
- const { http } = visitState;
6
- await writeFileInDir(logger, httpWiringsFile, serializeFileImports('wireHTTP', httpWiringsFile, http.files, packageMappings));
7
- await writeFileInDir(logger, httpWiringMetaFile, `import { pikkuState } from '@pikku/core'\npikkuState('http', 'meta', ${JSON.stringify(http.meta, null, 2)})`);
8
- });
9
- };
@@ -1,2 +0,0 @@
1
- import { PikkuCommand } from '../../types.js';
2
- export declare const pikkuOpenAPI: PikkuCommand;
@@ -1,20 +0,0 @@
1
- import { logCommandInfoAndTime, writeFileInDir } from '../../utils.js';
2
- import { generateSchemas } from '../../schema-generator.js';
3
- import { generateOpenAPISpec } from './openapi-spec-generator.js';
4
- import { stringify } from 'yaml';
5
- export const pikkuOpenAPI = async (logger, { tsconfig, openAPI, schemasFromTypes }, { http, functions }) => {
6
- return await logCommandInfoAndTime(logger, 'Creating OpenAPI spec', 'Created OpenAPI spec', [openAPI?.outputFile === undefined, 'openAPI outfile is not defined'], async () => {
7
- if (!openAPI?.outputFile) {
8
- throw new Error('openAPI is required');
9
- }
10
- const schemas = await generateSchemas(logger, tsconfig, functions.typesMap, functions.meta, http.meta, schemasFromTypes);
11
- const openAPISpec = await generateOpenAPISpec(functions.meta, http.meta, schemas, openAPI.additionalInfo);
12
- if (openAPI.outputFile.endsWith('.json')) {
13
- await writeFileInDir(logger, openAPI.outputFile, JSON.stringify(openAPISpec, null, 2), { ignoreModifyComment: true });
14
- }
15
- else if (openAPI.outputFile.endsWith('.yaml') ||
16
- openAPI.outputFile.endsWith('.yml')) {
17
- await writeFileInDir(logger, openAPI.outputFile, stringify(openAPISpec), { ignoreModifyComment: true });
18
- }
19
- });
20
- };
@@ -1,2 +0,0 @@
1
- import { PikkuCommand } from '../../types.js';
2
- export declare const pikkuHTTP: PikkuCommand;
@@ -1,9 +0,0 @@
1
- import { logCommandInfoAndTime, serializeFileImports, writeFileInDir, } from '../../utils.js';
2
- export const pikkuHTTP = async (logger, cliConfig, visitState) => {
3
- return await logCommandInfoAndTime(logger, 'Finding HTTP routes', 'Found HTTP routes', [visitState.http.files.size === 0], async () => {
4
- const { httpWiringsFile, httpWiringMetaFile, packageMappings } = cliConfig;
5
- const { http } = visitState;
6
- await writeFileInDir(logger, httpWiringsFile, serializeFileImports('wireHTTP', httpWiringsFile, http.files, packageMappings));
7
- await writeFileInDir(logger, httpWiringMetaFile, `import { pikkuState } from '@pikku/core'\npikkuState('http', 'meta', ${JSON.stringify(http.meta, null, 2)})`);
8
- });
9
- };
@@ -1,2 +0,0 @@
1
- import { PikkuCommand } from '../../types.js';
2
- export declare const pikkuMCPJSON: PikkuCommand;
@@ -1,13 +0,0 @@
1
- import { logCommandInfoAndTime, writeFileInDir } from '../../utils.js';
2
- import { serializeMCPJson } from './serialize-mcp-json.js';
3
- export const pikkuMCPJSON = async (logger, { mcpJsonFile, schemaDirectory }, { mcpEndpoints, functions }) => {
4
- return await logCommandInfoAndTime(logger, 'Generating MCP JSON', 'Generated MCP JSON', [mcpEndpoints.files.size === 0 || !mcpJsonFile], async () => {
5
- // Generate MCP JSON file
6
- if (mcpJsonFile) {
7
- const mcpJson = await serializeMCPJson(logger, schemaDirectory, functions.meta, functions.typesMap, mcpEndpoints.resourcesMeta, mcpEndpoints.toolsMeta, mcpEndpoints.promptsMeta);
8
- await writeFileInDir(logger, mcpJsonFile, mcpJson, {
9
- ignoreModifyComment: true,
10
- });
11
- }
12
- });
13
- };
@@ -1,2 +0,0 @@
1
- import { PikkuCommand } from '../../types.js';
2
- export declare const pikkuMCP: PikkuCommand;
@@ -1,2 +0,0 @@
1
- import { PikkuCommand } from '../../types.js';
2
- export declare const pikkuQueueMap: PikkuCommand;
@@ -1,8 +0,0 @@
1
- import { logCommandInfoAndTime, writeFileInDir } from '../../utils.js';
2
- import { serializeQueueMap } from './serialize-queue-map.js';
3
- export const pikkuQueueMap = async (logger, { queueMapDeclarationFile, packageMappings }, { queueWorkers, functions }) => {
4
- return await logCommandInfoAndTime(logger, 'Creating Queue map', 'Created Queue map', [queueWorkers.files.size === 0], async () => {
5
- const content = serializeQueueMap(queueMapDeclarationFile, packageMappings, functions.typesMap, functions.meta, queueWorkers.meta);
6
- await writeFileInDir(logger, queueMapDeclarationFile, content);
7
- });
8
- };
@@ -1,2 +0,0 @@
1
- import { PikkuCommandWithoutState } from '../../types.js';
2
- export declare const pikkuQueueService: PikkuCommandWithoutState;
@@ -1,15 +0,0 @@
1
- import { serializeQueueWrapper } from './serialize-queue-wrapper.js';
2
- import { getFileImportRelativePath, logCommandInfoAndTime, writeFileInDir, } from '../../utils.js';
3
- export const pikkuQueueService = async (logger, { queueWiringsFile, queueMapDeclarationFile, packageMappings }) => {
4
- return await logCommandInfoAndTime(logger, 'Generating queue service wrapper', 'Generated queue service wrapper', [
5
- queueWiringsFile === undefined,
6
- "queueWiringsFile isn't set in the pikku config",
7
- ], async () => {
8
- if (!queueWiringsFile) {
9
- throw new Error("queueWiringsFile is isn't set in the pikku config");
10
- }
11
- const queueMapDeclarationPath = getFileImportRelativePath(queueWiringsFile, queueMapDeclarationFile, packageMappings);
12
- const content = [serializeQueueWrapper(queueMapDeclarationPath)];
13
- await writeFileInDir(logger, queueWiringsFile, content.join('\n'));
14
- });
15
- };
@@ -1,2 +0,0 @@
1
- import { PikkuCommand } from '../../types.js';
2
- export declare const pikkuQueue: PikkuCommand;