@geekmidas/cli 0.4.0 → 0.5.1

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 (299) hide show
  1. package/dist/CronGenerator-BPTqNYOR.d.cts +14 -0
  2. package/dist/{CronGenerator-Bh26MaNA.mjs → CronGenerator-CCRYptuT.mjs} +2 -2
  3. package/dist/{CronGenerator-Bh26MaNA.mjs.map → CronGenerator-CCRYptuT.mjs.map} +1 -1
  4. package/dist/{CronGenerator-C6MF8rlG.cjs → CronGenerator-D4TWXQbh.cjs} +2 -2
  5. package/dist/{CronGenerator-C6MF8rlG.cjs.map → CronGenerator-D4TWXQbh.cjs.map} +1 -1
  6. package/dist/CronGenerator-YAj59JUd.d.mts +14 -0
  7. package/dist/EndpointGenerator-ChAD1INz.d.cts +19 -0
  8. package/dist/EndpointGenerator-Cj3O1U8-.d.mts +19 -0
  9. package/dist/{EndpointGenerator-CzDhG7Or.mjs → EndpointGenerator-DGivkPLT.mjs} +22 -6
  10. package/dist/EndpointGenerator-DGivkPLT.mjs.map +1 -0
  11. package/dist/{EndpointGenerator-BxNCkus4.cjs → EndpointGenerator-npWEDoK2.cjs} +22 -6
  12. package/dist/EndpointGenerator-npWEDoK2.cjs.map +1 -0
  13. package/dist/FunctionGenerator-429-9NER.d.cts +14 -0
  14. package/dist/FunctionGenerator-BQ4ehoID.d.mts +14 -0
  15. package/dist/{FunctionGenerator-BNE_GC7N.mjs → FunctionGenerator-CVk0h8tO.mjs} +2 -2
  16. package/dist/{FunctionGenerator-BNE_GC7N.mjs.map → FunctionGenerator-CVk0h8tO.mjs.map} +1 -1
  17. package/dist/{FunctionGenerator-FgZUTd8L.cjs → FunctionGenerator-DYTnyr4c.cjs} +2 -2
  18. package/dist/{FunctionGenerator-FgZUTd8L.cjs.map → FunctionGenerator-DYTnyr4c.cjs.map} +1 -1
  19. package/dist/Generator-BjHK_qce.d.mts +27 -0
  20. package/dist/{Generator-UanJW0_V.mjs → Generator-CDt4pB3W.mjs} +1 -1
  21. package/dist/{Generator-UanJW0_V.mjs.map → Generator-CDt4pB3W.mjs.map} +1 -1
  22. package/dist/{Generator-CDoEXCDg.cjs → Generator-CLVplqm2.cjs} +1 -1
  23. package/dist/{Generator-CDoEXCDg.cjs.map → Generator-CLVplqm2.cjs.map} +1 -1
  24. package/dist/Generator-DxQMCQp7.d.cts +27 -0
  25. package/dist/{OpenApiTsGenerator-NBNEoaeO.cjs → OpenApiTsGenerator-Be-sKGTT.cjs} +1 -1
  26. package/dist/{OpenApiTsGenerator-NBNEoaeO.cjs.map → OpenApiTsGenerator-Be-sKGTT.cjs.map} +1 -1
  27. package/dist/{OpenApiTsGenerator-q3aWNkuM.mjs → OpenApiTsGenerator-C4mHHaku.mjs} +1 -1
  28. package/dist/{OpenApiTsGenerator-q3aWNkuM.mjs.map → OpenApiTsGenerator-C4mHHaku.mjs.map} +1 -1
  29. package/dist/SubscriberGenerator-7uX42xyG.d.mts +15 -0
  30. package/dist/{SubscriberGenerator-Dnlj_1FK.mjs → SubscriberGenerator-DABaJXML.mjs} +2 -2
  31. package/dist/{SubscriberGenerator-Dnlj_1FK.mjs.map → SubscriberGenerator-DABaJXML.mjs.map} +1 -1
  32. package/dist/{SubscriberGenerator-Bd-a7aiw.cjs → SubscriberGenerator-D_zpNGFr.cjs} +2 -2
  33. package/dist/{SubscriberGenerator-Bd-a7aiw.cjs.map → SubscriberGenerator-D_zpNGFr.cjs.map} +1 -1
  34. package/dist/SubscriberGenerator-Dtb3HS4i.d.cts +15 -0
  35. package/dist/api-B3SCEHPf.cjs +190 -0
  36. package/dist/api-B3SCEHPf.cjs.map +1 -0
  37. package/dist/api-BKIN0s0S.mjs +184 -0
  38. package/dist/api-BKIN0s0S.mjs.map +1 -0
  39. package/dist/build/index.cjs +11 -10
  40. package/dist/build/index.d.cts +7 -0
  41. package/dist/build/index.d.mts +7 -0
  42. package/dist/build/index.mjs +11 -10
  43. package/dist/build/manifests.cjs +1 -1
  44. package/dist/build/manifests.d.cts +13 -0
  45. package/dist/build/manifests.d.mts +13 -0
  46. package/dist/build/manifests.mjs +1 -1
  47. package/dist/build/providerResolver.cjs +1 -1
  48. package/dist/build/providerResolver.d.cts +23 -0
  49. package/dist/build/providerResolver.d.mts +23 -0
  50. package/dist/build/providerResolver.mjs +1 -1
  51. package/dist/build/types.d.cts +3 -0
  52. package/dist/build/types.d.mts +3 -0
  53. package/dist/{build-DyDgu_D1.mjs → build-B8C_qHir.mjs} +15 -13
  54. package/dist/build-B8C_qHir.mjs.map +1 -0
  55. package/dist/{build-CWtHnJMQ.cjs → build-D0Wr49bf.cjs} +15 -13
  56. package/dist/build-D0Wr49bf.cjs.map +1 -0
  57. package/dist/config-Ba-Gbpbc.d.cts +11 -0
  58. package/dist/config-Bq72aj8e.mjs +75 -0
  59. package/dist/config-Bq72aj8e.mjs.map +1 -0
  60. package/dist/config-CFls09Ey.cjs +93 -0
  61. package/dist/config-CFls09Ey.cjs.map +1 -0
  62. package/dist/config-CLEDqKO3.cjs +157 -0
  63. package/dist/config-CLEDqKO3.cjs.map +1 -0
  64. package/dist/config-DBsmMDhf.d.mts +11 -0
  65. package/dist/config-Dp8RonV_.mjs +151 -0
  66. package/dist/config-Dp8RonV_.mjs.map +1 -0
  67. package/dist/config.cjs +4 -2
  68. package/dist/config.d.cts +48 -0
  69. package/dist/config.d.mts +48 -0
  70. package/dist/config.mjs +2 -2
  71. package/dist/dev/index.cjs +10 -9
  72. package/dist/dev/index.d.cts +36 -0
  73. package/dist/dev/index.d.mts +36 -0
  74. package/dist/dev/index.mjs +10 -10
  75. package/dist/{dev-CpA8AQPX.mjs → dev-B734w3L1.mjs} +93 -49
  76. package/dist/dev-B734w3L1.mjs.map +1 -0
  77. package/dist/{dev-CgDYC4o8.cjs → dev-DHqYn8k4.cjs} +71 -21
  78. package/dist/dev-DHqYn8k4.cjs.map +1 -0
  79. package/dist/docker-5d8Yh5_X.cjs +119 -0
  80. package/dist/docker-5d8Yh5_X.cjs.map +1 -0
  81. package/dist/docker-DlUqdFle.mjs +113 -0
  82. package/dist/docker-DlUqdFle.mjs.map +1 -0
  83. package/dist/env-B-OKjgI4.cjs +144 -0
  84. package/dist/env-B-OKjgI4.cjs.map +1 -0
  85. package/dist/env-HfuJRlg5.d.cts +11 -0
  86. package/dist/env-nd-iQPYM.d.mts +11 -0
  87. package/dist/env-tv1HlZlw.mjs +138 -0
  88. package/dist/env-tv1HlZlw.mjs.map +1 -0
  89. package/dist/generators/CronGenerator.cjs +2 -2
  90. package/dist/generators/CronGenerator.d.cts +5 -0
  91. package/dist/generators/CronGenerator.d.mts +5 -0
  92. package/dist/generators/CronGenerator.mjs +2 -2
  93. package/dist/generators/EndpointGenerator.cjs +2 -2
  94. package/dist/generators/EndpointGenerator.d.cts +5 -0
  95. package/dist/generators/EndpointGenerator.d.mts +5 -0
  96. package/dist/generators/EndpointGenerator.mjs +2 -2
  97. package/dist/generators/FunctionGenerator.cjs +2 -2
  98. package/dist/generators/FunctionGenerator.d.cts +5 -0
  99. package/dist/generators/FunctionGenerator.d.mts +5 -0
  100. package/dist/generators/FunctionGenerator.mjs +2 -2
  101. package/dist/generators/Generator.cjs +1 -1
  102. package/dist/generators/Generator.d.cts +4 -0
  103. package/dist/generators/Generator.d.mts +4 -0
  104. package/dist/generators/Generator.mjs +1 -1
  105. package/dist/generators/OpenApiTsGenerator.cjs +1 -1
  106. package/dist/generators/OpenApiTsGenerator.d.cts +44 -0
  107. package/dist/generators/OpenApiTsGenerator.d.mts +44 -0
  108. package/dist/generators/OpenApiTsGenerator.mjs +1 -1
  109. package/dist/generators/SubscriberGenerator.cjs +2 -2
  110. package/dist/generators/SubscriberGenerator.d.cts +5 -0
  111. package/dist/generators/SubscriberGenerator.d.mts +5 -0
  112. package/dist/generators/SubscriberGenerator.mjs +2 -2
  113. package/dist/generators/index.cjs +6 -6
  114. package/dist/generators/index.d.cts +8 -0
  115. package/dist/generators/index.d.mts +8 -0
  116. package/dist/generators/index.mjs +6 -6
  117. package/dist/index-C523No_B.d.mts +64 -0
  118. package/dist/index-DrzN4xkQ.d.cts +64 -0
  119. package/dist/index.cjs +48 -16
  120. package/dist/index.cjs.map +1 -1
  121. package/dist/index.d.cts +1 -0
  122. package/dist/index.d.mts +1 -0
  123. package/dist/index.mjs +48 -16
  124. package/dist/index.mjs.map +1 -1
  125. package/dist/init/generators/config.cjs +3 -0
  126. package/dist/init/generators/config.d.cts +3 -0
  127. package/dist/init/generators/config.d.mts +3 -0
  128. package/dist/init/generators/config.mjs +3 -0
  129. package/dist/init/generators/docker.cjs +3 -0
  130. package/dist/init/generators/docker.d.cts +11 -0
  131. package/dist/init/generators/docker.d.mts +11 -0
  132. package/dist/init/generators/docker.mjs +3 -0
  133. package/dist/init/generators/env.cjs +3 -0
  134. package/dist/init/generators/env.d.cts +3 -0
  135. package/dist/init/generators/env.d.mts +3 -0
  136. package/dist/init/generators/env.mjs +3 -0
  137. package/dist/init/generators/index.cjs +9 -0
  138. package/dist/init/generators/index.d.cts +6 -0
  139. package/dist/init/generators/index.d.mts +6 -0
  140. package/dist/init/generators/index.mjs +6 -0
  141. package/dist/init/generators/models.cjs +3 -0
  142. package/dist/init/generators/models.d.cts +11 -0
  143. package/dist/init/generators/models.d.mts +11 -0
  144. package/dist/init/generators/models.mjs +3 -0
  145. package/dist/init/generators/monorepo.cjs +3 -0
  146. package/dist/init/generators/monorepo.d.cts +11 -0
  147. package/dist/init/generators/monorepo.d.mts +11 -0
  148. package/dist/init/generators/monorepo.mjs +3 -0
  149. package/dist/init/generators/package.cjs +3 -0
  150. package/dist/init/generators/package.d.cts +3 -0
  151. package/dist/init/generators/package.d.mts +3 -0
  152. package/dist/init/generators/package.mjs +3 -0
  153. package/dist/init/generators/source.cjs +3 -0
  154. package/dist/init/generators/source.d.cts +3 -0
  155. package/dist/init/generators/source.d.mts +3 -0
  156. package/dist/init/generators/source.mjs +3 -0
  157. package/dist/init/index.cjs +16 -0
  158. package/dist/init/index.d.cts +17 -0
  159. package/dist/init/index.d.mts +17 -0
  160. package/dist/init/index.mjs +16 -0
  161. package/dist/init/templates/api.cjs +3 -0
  162. package/dist/init/templates/api.d.cts +7 -0
  163. package/dist/init/templates/api.d.mts +7 -0
  164. package/dist/init/templates/api.mjs +3 -0
  165. package/dist/init/templates/index.cjs +10 -0
  166. package/dist/init/templates/index.d.cts +2 -0
  167. package/dist/init/templates/index.d.mts +2 -0
  168. package/dist/init/templates/index.mjs +7 -0
  169. package/dist/init/templates/minimal.cjs +3 -0
  170. package/dist/init/templates/minimal.d.cts +7 -0
  171. package/dist/init/templates/minimal.d.mts +7 -0
  172. package/dist/init/templates/minimal.mjs +3 -0
  173. package/dist/init/templates/serverless.cjs +3 -0
  174. package/dist/init/templates/serverless.d.cts +7 -0
  175. package/dist/init/templates/serverless.d.mts +7 -0
  176. package/dist/init/templates/serverless.mjs +3 -0
  177. package/dist/init/templates/worker.cjs +3 -0
  178. package/dist/init/templates/worker.d.cts +7 -0
  179. package/dist/init/templates/worker.d.mts +7 -0
  180. package/dist/init/templates/worker.mjs +3 -0
  181. package/dist/init/utils.cjs +7 -0
  182. package/dist/init/utils.d.cts +25 -0
  183. package/dist/init/utils.d.mts +25 -0
  184. package/dist/init/utils.mjs +3 -0
  185. package/dist/init-CtOnZn3G.mjs +145 -0
  186. package/dist/init-CtOnZn3G.mjs.map +1 -0
  187. package/dist/init-qLFsWR-R.cjs +151 -0
  188. package/dist/init-qLFsWR-R.cjs.map +1 -0
  189. package/dist/{manifests-C2eMoMUm.mjs → manifests-DIA_2QYd.mjs} +1 -1
  190. package/dist/{manifests-C2eMoMUm.mjs.map → manifests-DIA_2QYd.mjs.map} +1 -1
  191. package/dist/{manifests-CK1VV_pM.cjs → manifests-VJ9-2JpW.cjs} +1 -1
  192. package/dist/{manifests-CK1VV_pM.cjs.map → manifests-VJ9-2JpW.cjs.map} +1 -1
  193. package/dist/minimal-Bdhhpp7v.cjs +93 -0
  194. package/dist/minimal-Bdhhpp7v.cjs.map +1 -0
  195. package/dist/minimal-C4GsE45s.mjs +87 -0
  196. package/dist/minimal-C4GsE45s.mjs.map +1 -0
  197. package/dist/models-DyNwdOcz.cjs +121 -0
  198. package/dist/models-DyNwdOcz.cjs.map +1 -0
  199. package/dist/models-cvNg6Oea.mjs +115 -0
  200. package/dist/models-cvNg6Oea.mjs.map +1 -0
  201. package/dist/monorepo-Cknwzj5C.mjs +184 -0
  202. package/dist/monorepo-Cknwzj5C.mjs.map +1 -0
  203. package/dist/monorepo-sEK8gW59.cjs +190 -0
  204. package/dist/monorepo-sEK8gW59.cjs.map +1 -0
  205. package/dist/{openapi-DhK4b0lB.cjs → openapi-BQWPWyNB.cjs} +4 -4
  206. package/dist/{openapi-DhK4b0lB.cjs.map → openapi-BQWPWyNB.cjs.map} +1 -1
  207. package/dist/{openapi-DRTRGhTt.mjs → openapi-DBX8cJJ8.mjs} +4 -4
  208. package/dist/{openapi-DRTRGhTt.mjs.map → openapi-DBX8cJJ8.mjs.map} +1 -1
  209. package/dist/{openapi-react-query-D9Z7lh0p.cjs → openapi-react-query-DxHjXQvg.cjs} +1 -1
  210. package/dist/{openapi-react-query-D9Z7lh0p.cjs.map → openapi-react-query-DxHjXQvg.cjs.map} +1 -1
  211. package/dist/{openapi-react-query-MEBlYIM1.mjs → openapi-react-query-o7Mp1Jd5.mjs} +1 -1
  212. package/dist/{openapi-react-query-MEBlYIM1.mjs.map → openapi-react-query-o7Mp1Jd5.mjs.map} +1 -1
  213. package/dist/openapi-react-query.cjs +1 -1
  214. package/dist/openapi-react-query.d.cts +11 -0
  215. package/dist/openapi-react-query.d.mts +11 -0
  216. package/dist/openapi-react-query.mjs +1 -1
  217. package/dist/openapi.cjs +5 -5
  218. package/dist/openapi.d.cts +11 -0
  219. package/dist/openapi.d.mts +11 -0
  220. package/dist/openapi.mjs +5 -5
  221. package/dist/package-C7WhWU8m.d.mts +11 -0
  222. package/dist/package-CIfmeuSW.mjs +51 -0
  223. package/dist/package-CIfmeuSW.mjs.map +1 -0
  224. package/dist/package-DvWEMz6z.d.cts +11 -0
  225. package/dist/package-PP-o1nvq.cjs +57 -0
  226. package/dist/package-PP-o1nvq.cjs.map +1 -0
  227. package/dist/{providerResolver-B_TjNF0_.mjs → providerResolver-DEVKngbC.mjs} +1 -1
  228. package/dist/{providerResolver-B_TjNF0_.mjs.map → providerResolver-DEVKngbC.mjs.map} +1 -1
  229. package/dist/{providerResolver-DgvzNfP4.cjs → providerResolver-DOTbN9jo.cjs} +1 -1
  230. package/dist/{providerResolver-DgvzNfP4.cjs.map → providerResolver-DOTbN9jo.cjs.map} +1 -1
  231. package/dist/serverless-DkHBF2vC.mjs +108 -0
  232. package/dist/serverless-DkHBF2vC.mjs.map +1 -0
  233. package/dist/serverless-Yav3GRVz.cjs +114 -0
  234. package/dist/serverless-Yav3GRVz.cjs.map +1 -0
  235. package/dist/source-D6v2BnKT.d.mts +11 -0
  236. package/dist/source-D8fK9qRo.d.cts +11 -0
  237. package/dist/source-DT5Xhiob.cjs +17 -0
  238. package/dist/source-DT5Xhiob.cjs.map +1 -0
  239. package/dist/source-DnaH_MLA.mjs +11 -0
  240. package/dist/source-DnaH_MLA.mjs.map +1 -0
  241. package/dist/templates-CBFUwpBy.mjs +64 -0
  242. package/dist/templates-CBFUwpBy.mjs.map +1 -0
  243. package/dist/templates-DM_rtYYW.cjs +87 -0
  244. package/dist/templates-DM_rtYYW.cjs.map +1 -0
  245. package/dist/types-C4KITv-y.d.mts +51 -0
  246. package/dist/types-Cxl8-uwV.d.mts +129 -0
  247. package/dist/types-DB99_qIy.d.cts +129 -0
  248. package/dist/types-DLFN49M3.d.cts +51 -0
  249. package/dist/types.d.cts +2 -0
  250. package/dist/types.d.mts +2 -0
  251. package/dist/utils-BX3F4fT8.cjs +99 -0
  252. package/dist/utils-BX3F4fT8.cjs.map +1 -0
  253. package/dist/utils-C31-SWHP.mjs +69 -0
  254. package/dist/utils-C31-SWHP.mjs.map +1 -0
  255. package/dist/worker--8O5a3Hv.cjs +150 -0
  256. package/dist/worker--8O5a3Hv.cjs.map +1 -0
  257. package/dist/worker-Jme7uOOJ.mjs +144 -0
  258. package/dist/worker-Jme7uOOJ.mjs.map +1 -0
  259. package/package.json +12 -4
  260. package/src/__tests__/loadEnvFiles.spec.ts +131 -0
  261. package/src/build/index.ts +14 -16
  262. package/src/build/types.ts +5 -0
  263. package/src/config.ts +57 -0
  264. package/src/dev/__tests__/index.spec.ts +114 -119
  265. package/src/dev/index.ts +77 -17
  266. package/src/generators/EndpointGenerator.ts +37 -8
  267. package/src/index.ts +26 -0
  268. package/src/init/__tests__/generators.spec.ts +366 -0
  269. package/src/init/__tests__/init.spec.ts +341 -0
  270. package/src/init/__tests__/utils.spec.ts +104 -0
  271. package/src/init/generators/config.ts +192 -0
  272. package/src/init/generators/docker.ts +134 -0
  273. package/src/init/generators/env.ts +182 -0
  274. package/src/init/generators/index.ts +4 -0
  275. package/src/init/generators/models.ts +129 -0
  276. package/src/init/generators/monorepo.ts +211 -0
  277. package/src/init/generators/package.ts +81 -0
  278. package/src/init/generators/source.ts +15 -0
  279. package/src/init/index.ts +206 -0
  280. package/src/init/templates/api.ts +218 -0
  281. package/src/init/templates/index.ts +108 -0
  282. package/src/init/templates/minimal.ts +102 -0
  283. package/src/init/templates/serverless.ts +129 -0
  284. package/src/init/templates/worker.ts +169 -0
  285. package/src/init/utils.ts +98 -0
  286. package/src/types.ts +22 -2
  287. package/tsdown.config.ts +1 -1
  288. package/dist/EndpointGenerator-BxNCkus4.cjs.map +0 -1
  289. package/dist/EndpointGenerator-CzDhG7Or.mjs.map +0 -1
  290. package/dist/build-CWtHnJMQ.cjs.map +0 -1
  291. package/dist/build-DyDgu_D1.mjs.map +0 -1
  292. package/dist/config-AFmFKmU0.mjs +0 -30
  293. package/dist/config-AFmFKmU0.mjs.map +0 -1
  294. package/dist/config-BVIJpAsa.cjs +0 -36
  295. package/dist/config-BVIJpAsa.cjs.map +0 -1
  296. package/dist/dev-CgDYC4o8.cjs.map +0 -1
  297. package/dist/dev-CpA8AQPX.mjs.map +0 -1
  298. /package/dist/{generators-CEKtVh81.cjs → generators-3IemvCLk.cjs} +0 -0
  299. /package/dist/{generators-CsLujGXs.mjs → generators-FNpdfN6J.mjs} +0 -0
@@ -0,0 +1,57 @@
1
+
2
+ //#region src/init/generators/package.ts
3
+ /**
4
+ * Generate package.json with dependencies based on template and options
5
+ */
6
+ function generatePackageJson(options, template) {
7
+ const { name, telescope, database, monorepo } = options;
8
+ const dependencies = { ...template.dependencies };
9
+ const devDependencies = { ...template.devDependencies };
10
+ const scripts = { ...template.scripts };
11
+ if (telescope) dependencies["@geekmidas/telescope"] = "workspace:*";
12
+ if (database) {
13
+ dependencies["@geekmidas/db"] = "workspace:*";
14
+ dependencies["kysely"] = "~0.28.2";
15
+ dependencies["pg"] = "~8.16.0";
16
+ devDependencies["@types/pg"] = "~8.15.0";
17
+ }
18
+ dependencies["zod"] = "~4.1.0";
19
+ if (monorepo) {
20
+ delete devDependencies["@biomejs/biome"];
21
+ delete devDependencies["turbo"];
22
+ delete scripts["lint"];
23
+ delete scripts["fmt"];
24
+ delete scripts["fmt:check"];
25
+ dependencies[`@${name}/models`] = "workspace:*";
26
+ delete dependencies["zod"];
27
+ }
28
+ const sortObject = (obj) => Object.fromEntries(Object.entries(obj).sort(([a], [b]) => a.localeCompare(b)));
29
+ let packageName = name;
30
+ if (monorepo && options.apiPath) {
31
+ const pathParts = options.apiPath.split("/");
32
+ const appName = pathParts[pathParts.length - 1] || "api";
33
+ packageName = `@${name}/${appName}`;
34
+ }
35
+ const packageJson = {
36
+ name: packageName,
37
+ version: "0.0.1",
38
+ private: true,
39
+ type: "module",
40
+ scripts,
41
+ dependencies: sortObject(dependencies),
42
+ devDependencies: sortObject(devDependencies)
43
+ };
44
+ return [{
45
+ path: "package.json",
46
+ content: JSON.stringify(packageJson, null, 2) + "\n"
47
+ }];
48
+ }
49
+
50
+ //#endregion
51
+ Object.defineProperty(exports, 'generatePackageJson', {
52
+ enumerable: true,
53
+ get: function () {
54
+ return generatePackageJson;
55
+ }
56
+ });
57
+ //# sourceMappingURL=package-PP-o1nvq.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-PP-o1nvq.cjs","names":["options: TemplateOptions","template: TemplateConfig","obj: Record<string, string>"],"sources":["../src/init/generators/package.ts"],"sourcesContent":["import type {\n GeneratedFile,\n TemplateConfig,\n TemplateOptions,\n} from '../templates/index.js';\n\n/**\n * Generate package.json with dependencies based on template and options\n */\nexport function generatePackageJson(\n options: TemplateOptions,\n template: TemplateConfig,\n): GeneratedFile[] {\n const { name, telescope, database, monorepo } = options;\n\n // Start with template dependencies\n const dependencies = { ...template.dependencies };\n const devDependencies = { ...template.devDependencies };\n const scripts = { ...template.scripts };\n\n // Add optional dependencies based on user choices\n if (telescope) {\n dependencies['@geekmidas/telescope'] = 'workspace:*';\n }\n\n if (database) {\n dependencies['@geekmidas/db'] = 'workspace:*';\n dependencies['kysely'] = '~0.28.2';\n dependencies['pg'] = '~8.16.0';\n devDependencies['@types/pg'] = '~8.15.0';\n }\n\n // Add zod for schema validation (commonly used)\n dependencies['zod'] = '~4.1.0';\n\n // For monorepo apps, remove biome/turbo (they're at root) and lint/fmt scripts\n if (monorepo) {\n delete devDependencies['@biomejs/biome'];\n delete devDependencies['turbo'];\n delete scripts['lint'];\n delete scripts['fmt'];\n delete scripts['fmt:check'];\n\n // Add models package as dependency\n dependencies[`@${name}/models`] = 'workspace:*';\n\n // Remove zod from api package (it's in models)\n delete dependencies['zod'];\n }\n\n // Sort dependencies alphabetically\n const sortObject = (obj: Record<string, string>) =>\n Object.fromEntries(\n Object.entries(obj).sort(([a], [b]) => a.localeCompare(b)),\n );\n\n // For monorepo, derive package name from apiPath (e.g., apps/api -> @name/api)\n let packageName = name;\n if (monorepo && options.apiPath) {\n const pathParts = options.apiPath.split('/');\n const appName = pathParts[pathParts.length - 1] || 'api';\n packageName = `@${name}/${appName}`;\n }\n\n const packageJson = {\n name: packageName,\n version: '0.0.1',\n private: true,\n type: 'module',\n scripts,\n dependencies: sortObject(dependencies),\n devDependencies: sortObject(devDependencies),\n };\n\n return [\n {\n path: 'package.json',\n content: JSON.stringify(packageJson, null, 2) + '\\n',\n },\n ];\n}\n"],"mappings":";;;;;AASA,SAAgB,oBACdA,SACAC,UACiB;CACjB,MAAM,EAAE,MAAM,WAAW,UAAU,UAAU,GAAG;CAGhD,MAAM,eAAe,EAAE,GAAG,SAAS,aAAc;CACjD,MAAM,kBAAkB,EAAE,GAAG,SAAS,gBAAiB;CACvD,MAAM,UAAU,EAAE,GAAG,SAAS,QAAS;AAGvC,KAAI,UACF,cAAa,0BAA0B;AAGzC,KAAI,UAAU;AACZ,eAAa,mBAAmB;AAChC,eAAa,YAAY;AACzB,eAAa,QAAQ;AACrB,kBAAgB,eAAe;CAChC;AAGD,cAAa,SAAS;AAGtB,KAAI,UAAU;AACZ,SAAO,gBAAgB;AACvB,SAAO,gBAAgB;AACvB,SAAO,QAAQ;AACf,SAAO,QAAQ;AACf,SAAO,QAAQ;AAGf,gBAAc,GAAG,KAAK,YAAY;AAGlC,SAAO,aAAa;CACrB;CAGD,MAAM,aAAa,CAACC,QAClB,OAAO,YACL,OAAO,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAC3D;CAGH,IAAI,cAAc;AAClB,KAAI,YAAY,QAAQ,SAAS;EAC/B,MAAM,YAAY,QAAQ,QAAQ,MAAM,IAAI;EAC5C,MAAM,UAAU,UAAU,UAAU,SAAS,MAAM;AACnD,iBAAe,GAAG,KAAK,GAAG,QAAQ;CACnC;CAED,MAAM,cAAc;EAClB,MAAM;EACN,SAAS;EACT,SAAS;EACT,MAAM;EACN;EACA,cAAc,WAAW,aAAa;EACtC,iBAAiB,WAAW,gBAAgB;CAC7C;AAED,QAAO,CACL;EACE,MAAM;EACN,SAAS,KAAK,UAAU,aAAa,MAAM,EAAE,GAAG;CACjD,CACF;AACF"}
@@ -93,4 +93,4 @@ function getServerConfig(config) {
93
93
 
94
94
  //#endregion
95
95
  export { getAWSServiceConfig, getServerConfig, resolveProviders };
96
- //# sourceMappingURL=providerResolver-B_TjNF0_.mjs.map
96
+ //# sourceMappingURL=providerResolver-DEVKngbC.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"providerResolver-B_TjNF0_.mjs","names":["config: GkmConfig","options: BuildOptions","providers: LegacyProvider[]","mainProvider: MainProvider","providersConfig?: ProvidersConfig","providersConfig: ProvidersConfig","config:\n | boolean\n | AWSApiGatewayConfig\n | AWSLambdaConfig\n | ServerConfig\n | undefined","service: 'apiGateway' | 'lambda'","subService?: 'v1' | 'v2' | 'functions' | 'crons'"],"sources":["../src/build/providerResolver.ts"],"sourcesContent":["import type {\n AWSApiGatewayConfig,\n AWSLambdaConfig,\n BuildOptions,\n GkmConfig,\n LegacyProvider,\n MainProvider,\n ProvidersConfig,\n ServerConfig,\n} from '../types';\n\nexport interface ResolvedProviders {\n providers: LegacyProvider[];\n enableOpenApi: boolean;\n}\n\n/**\n * Resolves provider configuration from the new simplified system\n * to the internal legacy format for backward compatibility\n */\nexport function resolveProviders(\n config: GkmConfig,\n options: BuildOptions,\n): ResolvedProviders {\n const providers: LegacyProvider[] = [];\n let enableOpenApi = options.enableOpenApi || false;\n\n // Handle legacy providers option (deprecated)\n if (options.providers) {\n return {\n providers: options.providers,\n enableOpenApi,\n };\n }\n\n // Handle new provider option\n if (options.provider) {\n const resolvedProviders = resolveMainProvider(\n options.provider,\n config.providers,\n );\n providers.push(...resolvedProviders.providers);\n enableOpenApi = resolvedProviders.enableOpenApi || enableOpenApi;\n }\n // Default: build all configured providers\n else if (config.providers) {\n const resolvedProviders = resolveAllConfiguredProviders(config.providers);\n providers.push(...resolvedProviders.providers);\n enableOpenApi = resolvedProviders.enableOpenApi || enableOpenApi;\n }\n // Fallback: use default AWS configuration\n else {\n providers.push('aws-apigatewayv2', 'aws-lambda');\n }\n\n return {\n providers: [...new Set(providers)], // Remove duplicates\n enableOpenApi,\n };\n}\n\nfunction resolveMainProvider(\n mainProvider: MainProvider,\n providersConfig?: ProvidersConfig,\n): ResolvedProviders {\n const providers: LegacyProvider[] = [];\n let enableOpenApi = false;\n\n if (mainProvider === 'aws') {\n const awsConfig = providersConfig?.aws;\n\n // Resolve API Gateway providers\n if (awsConfig?.apiGateway) {\n if (isEnabled(awsConfig.apiGateway.v1)) {\n providers.push('aws-apigatewayv1');\n }\n if (isEnabled(awsConfig.apiGateway.v2)) {\n providers.push('aws-apigatewayv2');\n }\n } else {\n // Default: enable v2 if no specific config\n providers.push('aws-apigatewayv2');\n }\n\n // Resolve Lambda providers\n if (awsConfig?.lambda) {\n if (\n isEnabled(awsConfig.lambda.functions) ||\n isEnabled(awsConfig.lambda.crons)\n ) {\n providers.push('aws-lambda');\n }\n } else {\n // Default: enable lambda if no specific config\n providers.push('aws-lambda');\n }\n } else if (mainProvider === 'server') {\n providers.push('server');\n const serverConfig = providersConfig?.server;\n\n if (typeof serverConfig === 'object' && serverConfig?.enableOpenApi) {\n enableOpenApi = true;\n }\n }\n\n return { providers, enableOpenApi };\n}\n\nfunction resolveAllConfiguredProviders(\n providersConfig: ProvidersConfig,\n): ResolvedProviders {\n const providers: LegacyProvider[] = [];\n let enableOpenApi = false;\n\n // AWS providers\n if (providersConfig.aws) {\n const awsProviders = resolveMainProvider('aws', providersConfig);\n providers.push(...awsProviders.providers);\n }\n\n // Server provider\n if (providersConfig.server && isEnabled(providersConfig.server)) {\n providers.push('server');\n if (\n typeof providersConfig.server === 'object' &&\n providersConfig.server.enableOpenApi\n ) {\n enableOpenApi = true;\n }\n }\n\n return { providers, enableOpenApi };\n}\n\nfunction isEnabled(\n config:\n | boolean\n | AWSApiGatewayConfig\n | AWSLambdaConfig\n | ServerConfig\n | undefined,\n): boolean {\n if (config === undefined) return false;\n if (typeof config === 'boolean') return config;\n return config.enabled !== false; // Default to true if enabled is not explicitly false\n}\n\n/**\n * Gets configuration for a specific AWS service\n */\nexport function getAWSServiceConfig<\n T extends AWSApiGatewayConfig | AWSLambdaConfig,\n>(\n config: GkmConfig,\n service: 'apiGateway' | 'lambda',\n subService?: 'v1' | 'v2' | 'functions' | 'crons',\n): T | undefined {\n const awsConfig = config.providers?.aws;\n if (!awsConfig) return undefined;\n\n if (service === 'apiGateway' && awsConfig.apiGateway) {\n const apiConfig = subService\n ? awsConfig.apiGateway[subService as 'v1' | 'v2']\n : undefined;\n return typeof apiConfig === 'object' ? (apiConfig as T) : undefined;\n }\n\n if (service === 'lambda' && awsConfig.lambda) {\n const lambdaConfig = subService\n ? awsConfig.lambda[subService as 'functions' | 'crons']\n : undefined;\n return typeof lambdaConfig === 'object' ? (lambdaConfig as T) : undefined;\n }\n\n return undefined;\n}\n\n/**\n * Gets server configuration\n */\nexport function getServerConfig(config: GkmConfig): ServerConfig | undefined {\n const serverConfig = config.providers?.server;\n return typeof serverConfig === 'object' ? serverConfig : undefined;\n}\n"],"mappings":";;;;;AAoBA,SAAgB,iBACdA,QACAC,SACmB;CACnB,MAAMC,YAA8B,CAAE;CACtC,IAAI,gBAAgB,QAAQ,iBAAiB;AAG7C,KAAI,QAAQ,UACV,QAAO;EACL,WAAW,QAAQ;EACnB;CACD;AAIH,KAAI,QAAQ,UAAU;EACpB,MAAM,oBAAoB,oBACxB,QAAQ,UACR,OAAO,UACR;AACD,YAAU,KAAK,GAAG,kBAAkB,UAAU;AAC9C,kBAAgB,kBAAkB,iBAAiB;CACpD,WAEQ,OAAO,WAAW;EACzB,MAAM,oBAAoB,8BAA8B,OAAO,UAAU;AACzE,YAAU,KAAK,GAAG,kBAAkB,UAAU;AAC9C,kBAAgB,kBAAkB,iBAAiB;CACpD,MAGC,WAAU,KAAK,oBAAoB,aAAa;AAGlD,QAAO;EACL,WAAW,CAAC,GAAG,IAAI,IAAI,UAAW;EAClC;CACD;AACF;AAED,SAAS,oBACPC,cACAC,iBACmB;CACnB,MAAMF,YAA8B,CAAE;CACtC,IAAI,gBAAgB;AAEpB,KAAI,iBAAiB,OAAO;EAC1B,MAAM,YAAY,iBAAiB;AAGnC,MAAI,WAAW,YAAY;AACzB,OAAI,UAAU,UAAU,WAAW,GAAG,CACpC,WAAU,KAAK,mBAAmB;AAEpC,OAAI,UAAU,UAAU,WAAW,GAAG,CACpC,WAAU,KAAK,mBAAmB;EAErC,MAEC,WAAU,KAAK,mBAAmB;AAIpC,MAAI,WAAW,QACb;OACE,UAAU,UAAU,OAAO,UAAU,IACrC,UAAU,UAAU,OAAO,MAAM,CAEjC,WAAU,KAAK,aAAa;EAC7B,MAGD,WAAU,KAAK,aAAa;CAE/B,WAAU,iBAAiB,UAAU;AACpC,YAAU,KAAK,SAAS;EACxB,MAAM,eAAe,iBAAiB;AAEtC,aAAW,iBAAiB,YAAY,cAAc,cACpD,iBAAgB;CAEnB;AAED,QAAO;EAAE;EAAW;CAAe;AACpC;AAED,SAAS,8BACPG,iBACmB;CACnB,MAAMH,YAA8B,CAAE;CACtC,IAAI,gBAAgB;AAGpB,KAAI,gBAAgB,KAAK;EACvB,MAAM,eAAe,oBAAoB,OAAO,gBAAgB;AAChE,YAAU,KAAK,GAAG,aAAa,UAAU;CAC1C;AAGD,KAAI,gBAAgB,UAAU,UAAU,gBAAgB,OAAO,EAAE;AAC/D,YAAU,KAAK,SAAS;AACxB,aACS,gBAAgB,WAAW,YAClC,gBAAgB,OAAO,cAEvB,iBAAgB;CAEnB;AAED,QAAO;EAAE;EAAW;CAAe;AACpC;AAED,SAAS,UACPI,QAMS;AACT,KAAI,kBAAsB,QAAO;AACjC,YAAW,WAAW,UAAW,QAAO;AACxC,QAAO,OAAO,YAAY;AAC3B;;;;AAKD,SAAgB,oBAGdN,QACAO,SACAC,YACe;CACf,MAAM,YAAY,OAAO,WAAW;AACpC,MAAK,UAAW;AAEhB,KAAI,YAAY,gBAAgB,UAAU,YAAY;EACpD,MAAM,YAAY,aACd,UAAU,WAAW;AAEzB,gBAAc,cAAc,WAAY;CACzC;AAED,KAAI,YAAY,YAAY,UAAU,QAAQ;EAC5C,MAAM,eAAe,aACjB,UAAU,OAAO;AAErB,gBAAc,iBAAiB,WAAY;CAC5C;AAED;AACD;;;;AAKD,SAAgB,gBAAgBR,QAA6C;CAC3E,MAAM,eAAe,OAAO,WAAW;AACvC,eAAc,iBAAiB,WAAW;AAC3C"}
1
+ {"version":3,"file":"providerResolver-DEVKngbC.mjs","names":["config: GkmConfig","options: BuildOptions","providers: LegacyProvider[]","mainProvider: MainProvider","providersConfig?: ProvidersConfig","providersConfig: ProvidersConfig","config:\n | boolean\n | AWSApiGatewayConfig\n | AWSLambdaConfig\n | ServerConfig\n | undefined","service: 'apiGateway' | 'lambda'","subService?: 'v1' | 'v2' | 'functions' | 'crons'"],"sources":["../src/build/providerResolver.ts"],"sourcesContent":["import type {\n AWSApiGatewayConfig,\n AWSLambdaConfig,\n BuildOptions,\n GkmConfig,\n LegacyProvider,\n MainProvider,\n ProvidersConfig,\n ServerConfig,\n} from '../types';\n\nexport interface ResolvedProviders {\n providers: LegacyProvider[];\n enableOpenApi: boolean;\n}\n\n/**\n * Resolves provider configuration from the new simplified system\n * to the internal legacy format for backward compatibility\n */\nexport function resolveProviders(\n config: GkmConfig,\n options: BuildOptions,\n): ResolvedProviders {\n const providers: LegacyProvider[] = [];\n let enableOpenApi = options.enableOpenApi || false;\n\n // Handle legacy providers option (deprecated)\n if (options.providers) {\n return {\n providers: options.providers,\n enableOpenApi,\n };\n }\n\n // Handle new provider option\n if (options.provider) {\n const resolvedProviders = resolveMainProvider(\n options.provider,\n config.providers,\n );\n providers.push(...resolvedProviders.providers);\n enableOpenApi = resolvedProviders.enableOpenApi || enableOpenApi;\n }\n // Default: build all configured providers\n else if (config.providers) {\n const resolvedProviders = resolveAllConfiguredProviders(config.providers);\n providers.push(...resolvedProviders.providers);\n enableOpenApi = resolvedProviders.enableOpenApi || enableOpenApi;\n }\n // Fallback: use default AWS configuration\n else {\n providers.push('aws-apigatewayv2', 'aws-lambda');\n }\n\n return {\n providers: [...new Set(providers)], // Remove duplicates\n enableOpenApi,\n };\n}\n\nfunction resolveMainProvider(\n mainProvider: MainProvider,\n providersConfig?: ProvidersConfig,\n): ResolvedProviders {\n const providers: LegacyProvider[] = [];\n let enableOpenApi = false;\n\n if (mainProvider === 'aws') {\n const awsConfig = providersConfig?.aws;\n\n // Resolve API Gateway providers\n if (awsConfig?.apiGateway) {\n if (isEnabled(awsConfig.apiGateway.v1)) {\n providers.push('aws-apigatewayv1');\n }\n if (isEnabled(awsConfig.apiGateway.v2)) {\n providers.push('aws-apigatewayv2');\n }\n } else {\n // Default: enable v2 if no specific config\n providers.push('aws-apigatewayv2');\n }\n\n // Resolve Lambda providers\n if (awsConfig?.lambda) {\n if (\n isEnabled(awsConfig.lambda.functions) ||\n isEnabled(awsConfig.lambda.crons)\n ) {\n providers.push('aws-lambda');\n }\n } else {\n // Default: enable lambda if no specific config\n providers.push('aws-lambda');\n }\n } else if (mainProvider === 'server') {\n providers.push('server');\n const serverConfig = providersConfig?.server;\n\n if (typeof serverConfig === 'object' && serverConfig?.enableOpenApi) {\n enableOpenApi = true;\n }\n }\n\n return { providers, enableOpenApi };\n}\n\nfunction resolveAllConfiguredProviders(\n providersConfig: ProvidersConfig,\n): ResolvedProviders {\n const providers: LegacyProvider[] = [];\n let enableOpenApi = false;\n\n // AWS providers\n if (providersConfig.aws) {\n const awsProviders = resolveMainProvider('aws', providersConfig);\n providers.push(...awsProviders.providers);\n }\n\n // Server provider\n if (providersConfig.server && isEnabled(providersConfig.server)) {\n providers.push('server');\n if (\n typeof providersConfig.server === 'object' &&\n providersConfig.server.enableOpenApi\n ) {\n enableOpenApi = true;\n }\n }\n\n return { providers, enableOpenApi };\n}\n\nfunction isEnabled(\n config:\n | boolean\n | AWSApiGatewayConfig\n | AWSLambdaConfig\n | ServerConfig\n | undefined,\n): boolean {\n if (config === undefined) return false;\n if (typeof config === 'boolean') return config;\n return config.enabled !== false; // Default to true if enabled is not explicitly false\n}\n\n/**\n * Gets configuration for a specific AWS service\n */\nexport function getAWSServiceConfig<\n T extends AWSApiGatewayConfig | AWSLambdaConfig,\n>(\n config: GkmConfig,\n service: 'apiGateway' | 'lambda',\n subService?: 'v1' | 'v2' | 'functions' | 'crons',\n): T | undefined {\n const awsConfig = config.providers?.aws;\n if (!awsConfig) return undefined;\n\n if (service === 'apiGateway' && awsConfig.apiGateway) {\n const apiConfig = subService\n ? awsConfig.apiGateway[subService as 'v1' | 'v2']\n : undefined;\n return typeof apiConfig === 'object' ? (apiConfig as T) : undefined;\n }\n\n if (service === 'lambda' && awsConfig.lambda) {\n const lambdaConfig = subService\n ? awsConfig.lambda[subService as 'functions' | 'crons']\n : undefined;\n return typeof lambdaConfig === 'object' ? (lambdaConfig as T) : undefined;\n }\n\n return undefined;\n}\n\n/**\n * Gets server configuration\n */\nexport function getServerConfig(config: GkmConfig): ServerConfig | undefined {\n const serverConfig = config.providers?.server;\n return typeof serverConfig === 'object' ? serverConfig : undefined;\n}\n"],"mappings":";;;;;AAoBA,SAAgB,iBACdA,QACAC,SACmB;CACnB,MAAMC,YAA8B,CAAE;CACtC,IAAI,gBAAgB,QAAQ,iBAAiB;AAG7C,KAAI,QAAQ,UACV,QAAO;EACL,WAAW,QAAQ;EACnB;CACD;AAIH,KAAI,QAAQ,UAAU;EACpB,MAAM,oBAAoB,oBACxB,QAAQ,UACR,OAAO,UACR;AACD,YAAU,KAAK,GAAG,kBAAkB,UAAU;AAC9C,kBAAgB,kBAAkB,iBAAiB;CACpD,WAEQ,OAAO,WAAW;EACzB,MAAM,oBAAoB,8BAA8B,OAAO,UAAU;AACzE,YAAU,KAAK,GAAG,kBAAkB,UAAU;AAC9C,kBAAgB,kBAAkB,iBAAiB;CACpD,MAGC,WAAU,KAAK,oBAAoB,aAAa;AAGlD,QAAO;EACL,WAAW,CAAC,GAAG,IAAI,IAAI,UAAW;EAClC;CACD;AACF;AAED,SAAS,oBACPC,cACAC,iBACmB;CACnB,MAAMF,YAA8B,CAAE;CACtC,IAAI,gBAAgB;AAEpB,KAAI,iBAAiB,OAAO;EAC1B,MAAM,YAAY,iBAAiB;AAGnC,MAAI,WAAW,YAAY;AACzB,OAAI,UAAU,UAAU,WAAW,GAAG,CACpC,WAAU,KAAK,mBAAmB;AAEpC,OAAI,UAAU,UAAU,WAAW,GAAG,CACpC,WAAU,KAAK,mBAAmB;EAErC,MAEC,WAAU,KAAK,mBAAmB;AAIpC,MAAI,WAAW,QACb;OACE,UAAU,UAAU,OAAO,UAAU,IACrC,UAAU,UAAU,OAAO,MAAM,CAEjC,WAAU,KAAK,aAAa;EAC7B,MAGD,WAAU,KAAK,aAAa;CAE/B,WAAU,iBAAiB,UAAU;AACpC,YAAU,KAAK,SAAS;EACxB,MAAM,eAAe,iBAAiB;AAEtC,aAAW,iBAAiB,YAAY,cAAc,cACpD,iBAAgB;CAEnB;AAED,QAAO;EAAE;EAAW;CAAe;AACpC;AAED,SAAS,8BACPG,iBACmB;CACnB,MAAMH,YAA8B,CAAE;CACtC,IAAI,gBAAgB;AAGpB,KAAI,gBAAgB,KAAK;EACvB,MAAM,eAAe,oBAAoB,OAAO,gBAAgB;AAChE,YAAU,KAAK,GAAG,aAAa,UAAU;CAC1C;AAGD,KAAI,gBAAgB,UAAU,UAAU,gBAAgB,OAAO,EAAE;AAC/D,YAAU,KAAK,SAAS;AACxB,aACS,gBAAgB,WAAW,YAClC,gBAAgB,OAAO,cAEvB,iBAAgB;CAEnB;AAED,QAAO;EAAE;EAAW;CAAe;AACpC;AAED,SAAS,UACPI,QAMS;AACT,KAAI,kBAAsB,QAAO;AACjC,YAAW,WAAW,UAAW,QAAO;AACxC,QAAO,OAAO,YAAY;AAC3B;;;;AAKD,SAAgB,oBAGdN,QACAO,SACAC,YACe;CACf,MAAM,YAAY,OAAO,WAAW;AACpC,MAAK,UAAW;AAEhB,KAAI,YAAY,gBAAgB,UAAU,YAAY;EACpD,MAAM,YAAY,aACd,UAAU,WAAW;AAEzB,gBAAc,cAAc,WAAY;CACzC;AAED,KAAI,YAAY,YAAY,UAAU,QAAQ;EAC5C,MAAM,eAAe,aACjB,UAAU,OAAO;AAErB,gBAAc,iBAAiB,WAAY;CAC5C;AAED;AACD;;;;AAKD,SAAgB,gBAAgBR,QAA6C;CAC3E,MAAM,eAAe,OAAO,WAAW;AACvC,eAAc,iBAAiB,WAAW;AAC3C"}
@@ -111,4 +111,4 @@ Object.defineProperty(exports, 'resolveProviders', {
111
111
  return resolveProviders;
112
112
  }
113
113
  });
114
- //# sourceMappingURL=providerResolver-DgvzNfP4.cjs.map
114
+ //# sourceMappingURL=providerResolver-DOTbN9jo.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"providerResolver-DgvzNfP4.cjs","names":["config: GkmConfig","options: BuildOptions","providers: LegacyProvider[]","mainProvider: MainProvider","providersConfig?: ProvidersConfig","providersConfig: ProvidersConfig","config:\n | boolean\n | AWSApiGatewayConfig\n | AWSLambdaConfig\n | ServerConfig\n | undefined","service: 'apiGateway' | 'lambda'","subService?: 'v1' | 'v2' | 'functions' | 'crons'"],"sources":["../src/build/providerResolver.ts"],"sourcesContent":["import type {\n AWSApiGatewayConfig,\n AWSLambdaConfig,\n BuildOptions,\n GkmConfig,\n LegacyProvider,\n MainProvider,\n ProvidersConfig,\n ServerConfig,\n} from '../types';\n\nexport interface ResolvedProviders {\n providers: LegacyProvider[];\n enableOpenApi: boolean;\n}\n\n/**\n * Resolves provider configuration from the new simplified system\n * to the internal legacy format for backward compatibility\n */\nexport function resolveProviders(\n config: GkmConfig,\n options: BuildOptions,\n): ResolvedProviders {\n const providers: LegacyProvider[] = [];\n let enableOpenApi = options.enableOpenApi || false;\n\n // Handle legacy providers option (deprecated)\n if (options.providers) {\n return {\n providers: options.providers,\n enableOpenApi,\n };\n }\n\n // Handle new provider option\n if (options.provider) {\n const resolvedProviders = resolveMainProvider(\n options.provider,\n config.providers,\n );\n providers.push(...resolvedProviders.providers);\n enableOpenApi = resolvedProviders.enableOpenApi || enableOpenApi;\n }\n // Default: build all configured providers\n else if (config.providers) {\n const resolvedProviders = resolveAllConfiguredProviders(config.providers);\n providers.push(...resolvedProviders.providers);\n enableOpenApi = resolvedProviders.enableOpenApi || enableOpenApi;\n }\n // Fallback: use default AWS configuration\n else {\n providers.push('aws-apigatewayv2', 'aws-lambda');\n }\n\n return {\n providers: [...new Set(providers)], // Remove duplicates\n enableOpenApi,\n };\n}\n\nfunction resolveMainProvider(\n mainProvider: MainProvider,\n providersConfig?: ProvidersConfig,\n): ResolvedProviders {\n const providers: LegacyProvider[] = [];\n let enableOpenApi = false;\n\n if (mainProvider === 'aws') {\n const awsConfig = providersConfig?.aws;\n\n // Resolve API Gateway providers\n if (awsConfig?.apiGateway) {\n if (isEnabled(awsConfig.apiGateway.v1)) {\n providers.push('aws-apigatewayv1');\n }\n if (isEnabled(awsConfig.apiGateway.v2)) {\n providers.push('aws-apigatewayv2');\n }\n } else {\n // Default: enable v2 if no specific config\n providers.push('aws-apigatewayv2');\n }\n\n // Resolve Lambda providers\n if (awsConfig?.lambda) {\n if (\n isEnabled(awsConfig.lambda.functions) ||\n isEnabled(awsConfig.lambda.crons)\n ) {\n providers.push('aws-lambda');\n }\n } else {\n // Default: enable lambda if no specific config\n providers.push('aws-lambda');\n }\n } else if (mainProvider === 'server') {\n providers.push('server');\n const serverConfig = providersConfig?.server;\n\n if (typeof serverConfig === 'object' && serverConfig?.enableOpenApi) {\n enableOpenApi = true;\n }\n }\n\n return { providers, enableOpenApi };\n}\n\nfunction resolveAllConfiguredProviders(\n providersConfig: ProvidersConfig,\n): ResolvedProviders {\n const providers: LegacyProvider[] = [];\n let enableOpenApi = false;\n\n // AWS providers\n if (providersConfig.aws) {\n const awsProviders = resolveMainProvider('aws', providersConfig);\n providers.push(...awsProviders.providers);\n }\n\n // Server provider\n if (providersConfig.server && isEnabled(providersConfig.server)) {\n providers.push('server');\n if (\n typeof providersConfig.server === 'object' &&\n providersConfig.server.enableOpenApi\n ) {\n enableOpenApi = true;\n }\n }\n\n return { providers, enableOpenApi };\n}\n\nfunction isEnabled(\n config:\n | boolean\n | AWSApiGatewayConfig\n | AWSLambdaConfig\n | ServerConfig\n | undefined,\n): boolean {\n if (config === undefined) return false;\n if (typeof config === 'boolean') return config;\n return config.enabled !== false; // Default to true if enabled is not explicitly false\n}\n\n/**\n * Gets configuration for a specific AWS service\n */\nexport function getAWSServiceConfig<\n T extends AWSApiGatewayConfig | AWSLambdaConfig,\n>(\n config: GkmConfig,\n service: 'apiGateway' | 'lambda',\n subService?: 'v1' | 'v2' | 'functions' | 'crons',\n): T | undefined {\n const awsConfig = config.providers?.aws;\n if (!awsConfig) return undefined;\n\n if (service === 'apiGateway' && awsConfig.apiGateway) {\n const apiConfig = subService\n ? awsConfig.apiGateway[subService as 'v1' | 'v2']\n : undefined;\n return typeof apiConfig === 'object' ? (apiConfig as T) : undefined;\n }\n\n if (service === 'lambda' && awsConfig.lambda) {\n const lambdaConfig = subService\n ? awsConfig.lambda[subService as 'functions' | 'crons']\n : undefined;\n return typeof lambdaConfig === 'object' ? (lambdaConfig as T) : undefined;\n }\n\n return undefined;\n}\n\n/**\n * Gets server configuration\n */\nexport function getServerConfig(config: GkmConfig): ServerConfig | undefined {\n const serverConfig = config.providers?.server;\n return typeof serverConfig === 'object' ? serverConfig : undefined;\n}\n"],"mappings":";;;;;;AAoBA,SAAgB,iBACdA,QACAC,SACmB;CACnB,MAAMC,YAA8B,CAAE;CACtC,IAAI,gBAAgB,QAAQ,iBAAiB;AAG7C,KAAI,QAAQ,UACV,QAAO;EACL,WAAW,QAAQ;EACnB;CACD;AAIH,KAAI,QAAQ,UAAU;EACpB,MAAM,oBAAoB,oBACxB,QAAQ,UACR,OAAO,UACR;AACD,YAAU,KAAK,GAAG,kBAAkB,UAAU;AAC9C,kBAAgB,kBAAkB,iBAAiB;CACpD,WAEQ,OAAO,WAAW;EACzB,MAAM,oBAAoB,8BAA8B,OAAO,UAAU;AACzE,YAAU,KAAK,GAAG,kBAAkB,UAAU;AAC9C,kBAAgB,kBAAkB,iBAAiB;CACpD,MAGC,WAAU,KAAK,oBAAoB,aAAa;AAGlD,QAAO;EACL,WAAW,CAAC,GAAG,IAAI,IAAI,UAAW;EAClC;CACD;AACF;AAED,SAAS,oBACPC,cACAC,iBACmB;CACnB,MAAMF,YAA8B,CAAE;CACtC,IAAI,gBAAgB;AAEpB,KAAI,iBAAiB,OAAO;EAC1B,MAAM,YAAY,iBAAiB;AAGnC,MAAI,WAAW,YAAY;AACzB,OAAI,UAAU,UAAU,WAAW,GAAG,CACpC,WAAU,KAAK,mBAAmB;AAEpC,OAAI,UAAU,UAAU,WAAW,GAAG,CACpC,WAAU,KAAK,mBAAmB;EAErC,MAEC,WAAU,KAAK,mBAAmB;AAIpC,MAAI,WAAW,QACb;OACE,UAAU,UAAU,OAAO,UAAU,IACrC,UAAU,UAAU,OAAO,MAAM,CAEjC,WAAU,KAAK,aAAa;EAC7B,MAGD,WAAU,KAAK,aAAa;CAE/B,WAAU,iBAAiB,UAAU;AACpC,YAAU,KAAK,SAAS;EACxB,MAAM,eAAe,iBAAiB;AAEtC,aAAW,iBAAiB,YAAY,cAAc,cACpD,iBAAgB;CAEnB;AAED,QAAO;EAAE;EAAW;CAAe;AACpC;AAED,SAAS,8BACPG,iBACmB;CACnB,MAAMH,YAA8B,CAAE;CACtC,IAAI,gBAAgB;AAGpB,KAAI,gBAAgB,KAAK;EACvB,MAAM,eAAe,oBAAoB,OAAO,gBAAgB;AAChE,YAAU,KAAK,GAAG,aAAa,UAAU;CAC1C;AAGD,KAAI,gBAAgB,UAAU,UAAU,gBAAgB,OAAO,EAAE;AAC/D,YAAU,KAAK,SAAS;AACxB,aACS,gBAAgB,WAAW,YAClC,gBAAgB,OAAO,cAEvB,iBAAgB;CAEnB;AAED,QAAO;EAAE;EAAW;CAAe;AACpC;AAED,SAAS,UACPI,QAMS;AACT,KAAI,kBAAsB,QAAO;AACjC,YAAW,WAAW,UAAW,QAAO;AACxC,QAAO,OAAO,YAAY;AAC3B;;;;AAKD,SAAgB,oBAGdN,QACAO,SACAC,YACe;CACf,MAAM,YAAY,OAAO,WAAW;AACpC,MAAK,UAAW;AAEhB,KAAI,YAAY,gBAAgB,UAAU,YAAY;EACpD,MAAM,YAAY,aACd,UAAU,WAAW;AAEzB,gBAAc,cAAc,WAAY;CACzC;AAED,KAAI,YAAY,YAAY,UAAU,QAAQ;EAC5C,MAAM,eAAe,aACjB,UAAU,OAAO;AAErB,gBAAc,iBAAiB,WAAY;CAC5C;AAED;AACD;;;;AAKD,SAAgB,gBAAgBR,QAA6C;CAC3E,MAAM,eAAe,OAAO,WAAW;AACvC,eAAc,iBAAiB,WAAW;AAC3C"}
1
+ {"version":3,"file":"providerResolver-DOTbN9jo.cjs","names":["config: GkmConfig","options: BuildOptions","providers: LegacyProvider[]","mainProvider: MainProvider","providersConfig?: ProvidersConfig","providersConfig: ProvidersConfig","config:\n | boolean\n | AWSApiGatewayConfig\n | AWSLambdaConfig\n | ServerConfig\n | undefined","service: 'apiGateway' | 'lambda'","subService?: 'v1' | 'v2' | 'functions' | 'crons'"],"sources":["../src/build/providerResolver.ts"],"sourcesContent":["import type {\n AWSApiGatewayConfig,\n AWSLambdaConfig,\n BuildOptions,\n GkmConfig,\n LegacyProvider,\n MainProvider,\n ProvidersConfig,\n ServerConfig,\n} from '../types';\n\nexport interface ResolvedProviders {\n providers: LegacyProvider[];\n enableOpenApi: boolean;\n}\n\n/**\n * Resolves provider configuration from the new simplified system\n * to the internal legacy format for backward compatibility\n */\nexport function resolveProviders(\n config: GkmConfig,\n options: BuildOptions,\n): ResolvedProviders {\n const providers: LegacyProvider[] = [];\n let enableOpenApi = options.enableOpenApi || false;\n\n // Handle legacy providers option (deprecated)\n if (options.providers) {\n return {\n providers: options.providers,\n enableOpenApi,\n };\n }\n\n // Handle new provider option\n if (options.provider) {\n const resolvedProviders = resolveMainProvider(\n options.provider,\n config.providers,\n );\n providers.push(...resolvedProviders.providers);\n enableOpenApi = resolvedProviders.enableOpenApi || enableOpenApi;\n }\n // Default: build all configured providers\n else if (config.providers) {\n const resolvedProviders = resolveAllConfiguredProviders(config.providers);\n providers.push(...resolvedProviders.providers);\n enableOpenApi = resolvedProviders.enableOpenApi || enableOpenApi;\n }\n // Fallback: use default AWS configuration\n else {\n providers.push('aws-apigatewayv2', 'aws-lambda');\n }\n\n return {\n providers: [...new Set(providers)], // Remove duplicates\n enableOpenApi,\n };\n}\n\nfunction resolveMainProvider(\n mainProvider: MainProvider,\n providersConfig?: ProvidersConfig,\n): ResolvedProviders {\n const providers: LegacyProvider[] = [];\n let enableOpenApi = false;\n\n if (mainProvider === 'aws') {\n const awsConfig = providersConfig?.aws;\n\n // Resolve API Gateway providers\n if (awsConfig?.apiGateway) {\n if (isEnabled(awsConfig.apiGateway.v1)) {\n providers.push('aws-apigatewayv1');\n }\n if (isEnabled(awsConfig.apiGateway.v2)) {\n providers.push('aws-apigatewayv2');\n }\n } else {\n // Default: enable v2 if no specific config\n providers.push('aws-apigatewayv2');\n }\n\n // Resolve Lambda providers\n if (awsConfig?.lambda) {\n if (\n isEnabled(awsConfig.lambda.functions) ||\n isEnabled(awsConfig.lambda.crons)\n ) {\n providers.push('aws-lambda');\n }\n } else {\n // Default: enable lambda if no specific config\n providers.push('aws-lambda');\n }\n } else if (mainProvider === 'server') {\n providers.push('server');\n const serverConfig = providersConfig?.server;\n\n if (typeof serverConfig === 'object' && serverConfig?.enableOpenApi) {\n enableOpenApi = true;\n }\n }\n\n return { providers, enableOpenApi };\n}\n\nfunction resolveAllConfiguredProviders(\n providersConfig: ProvidersConfig,\n): ResolvedProviders {\n const providers: LegacyProvider[] = [];\n let enableOpenApi = false;\n\n // AWS providers\n if (providersConfig.aws) {\n const awsProviders = resolveMainProvider('aws', providersConfig);\n providers.push(...awsProviders.providers);\n }\n\n // Server provider\n if (providersConfig.server && isEnabled(providersConfig.server)) {\n providers.push('server');\n if (\n typeof providersConfig.server === 'object' &&\n providersConfig.server.enableOpenApi\n ) {\n enableOpenApi = true;\n }\n }\n\n return { providers, enableOpenApi };\n}\n\nfunction isEnabled(\n config:\n | boolean\n | AWSApiGatewayConfig\n | AWSLambdaConfig\n | ServerConfig\n | undefined,\n): boolean {\n if (config === undefined) return false;\n if (typeof config === 'boolean') return config;\n return config.enabled !== false; // Default to true if enabled is not explicitly false\n}\n\n/**\n * Gets configuration for a specific AWS service\n */\nexport function getAWSServiceConfig<\n T extends AWSApiGatewayConfig | AWSLambdaConfig,\n>(\n config: GkmConfig,\n service: 'apiGateway' | 'lambda',\n subService?: 'v1' | 'v2' | 'functions' | 'crons',\n): T | undefined {\n const awsConfig = config.providers?.aws;\n if (!awsConfig) return undefined;\n\n if (service === 'apiGateway' && awsConfig.apiGateway) {\n const apiConfig = subService\n ? awsConfig.apiGateway[subService as 'v1' | 'v2']\n : undefined;\n return typeof apiConfig === 'object' ? (apiConfig as T) : undefined;\n }\n\n if (service === 'lambda' && awsConfig.lambda) {\n const lambdaConfig = subService\n ? awsConfig.lambda[subService as 'functions' | 'crons']\n : undefined;\n return typeof lambdaConfig === 'object' ? (lambdaConfig as T) : undefined;\n }\n\n return undefined;\n}\n\n/**\n * Gets server configuration\n */\nexport function getServerConfig(config: GkmConfig): ServerConfig | undefined {\n const serverConfig = config.providers?.server;\n return typeof serverConfig === 'object' ? serverConfig : undefined;\n}\n"],"mappings":";;;;;;AAoBA,SAAgB,iBACdA,QACAC,SACmB;CACnB,MAAMC,YAA8B,CAAE;CACtC,IAAI,gBAAgB,QAAQ,iBAAiB;AAG7C,KAAI,QAAQ,UACV,QAAO;EACL,WAAW,QAAQ;EACnB;CACD;AAIH,KAAI,QAAQ,UAAU;EACpB,MAAM,oBAAoB,oBACxB,QAAQ,UACR,OAAO,UACR;AACD,YAAU,KAAK,GAAG,kBAAkB,UAAU;AAC9C,kBAAgB,kBAAkB,iBAAiB;CACpD,WAEQ,OAAO,WAAW;EACzB,MAAM,oBAAoB,8BAA8B,OAAO,UAAU;AACzE,YAAU,KAAK,GAAG,kBAAkB,UAAU;AAC9C,kBAAgB,kBAAkB,iBAAiB;CACpD,MAGC,WAAU,KAAK,oBAAoB,aAAa;AAGlD,QAAO;EACL,WAAW,CAAC,GAAG,IAAI,IAAI,UAAW;EAClC;CACD;AACF;AAED,SAAS,oBACPC,cACAC,iBACmB;CACnB,MAAMF,YAA8B,CAAE;CACtC,IAAI,gBAAgB;AAEpB,KAAI,iBAAiB,OAAO;EAC1B,MAAM,YAAY,iBAAiB;AAGnC,MAAI,WAAW,YAAY;AACzB,OAAI,UAAU,UAAU,WAAW,GAAG,CACpC,WAAU,KAAK,mBAAmB;AAEpC,OAAI,UAAU,UAAU,WAAW,GAAG,CACpC,WAAU,KAAK,mBAAmB;EAErC,MAEC,WAAU,KAAK,mBAAmB;AAIpC,MAAI,WAAW,QACb;OACE,UAAU,UAAU,OAAO,UAAU,IACrC,UAAU,UAAU,OAAO,MAAM,CAEjC,WAAU,KAAK,aAAa;EAC7B,MAGD,WAAU,KAAK,aAAa;CAE/B,WAAU,iBAAiB,UAAU;AACpC,YAAU,KAAK,SAAS;EACxB,MAAM,eAAe,iBAAiB;AAEtC,aAAW,iBAAiB,YAAY,cAAc,cACpD,iBAAgB;CAEnB;AAED,QAAO;EAAE;EAAW;CAAe;AACpC;AAED,SAAS,8BACPG,iBACmB;CACnB,MAAMH,YAA8B,CAAE;CACtC,IAAI,gBAAgB;AAGpB,KAAI,gBAAgB,KAAK;EACvB,MAAM,eAAe,oBAAoB,OAAO,gBAAgB;AAChE,YAAU,KAAK,GAAG,aAAa,UAAU;CAC1C;AAGD,KAAI,gBAAgB,UAAU,UAAU,gBAAgB,OAAO,EAAE;AAC/D,YAAU,KAAK,SAAS;AACxB,aACS,gBAAgB,WAAW,YAClC,gBAAgB,OAAO,cAEvB,iBAAgB;CAEnB;AAED,QAAO;EAAE;EAAW;CAAe;AACpC;AAED,SAAS,UACPI,QAMS;AACT,KAAI,kBAAsB,QAAO;AACjC,YAAW,WAAW,UAAW,QAAO;AACxC,QAAO,OAAO,YAAY;AAC3B;;;;AAKD,SAAgB,oBAGdN,QACAO,SACAC,YACe;CACf,MAAM,YAAY,OAAO,WAAW;AACpC,MAAK,UAAW;AAEhB,KAAI,YAAY,gBAAgB,UAAU,YAAY;EACpD,MAAM,YAAY,aACd,UAAU,WAAW;AAEzB,gBAAc,cAAc,WAAY;CACzC;AAED,KAAI,YAAY,YAAY,UAAU,QAAQ;EAC5C,MAAM,eAAe,aACjB,UAAU,OAAO;AAErB,gBAAc,iBAAiB,WAAY;CAC5C;AAED;AACD;;;;AAKD,SAAgB,gBAAgBR,QAA6C;CAC3E,MAAM,eAAe,OAAO,WAAW;AACvC,eAAc,iBAAiB,WAAW;AAC3C"}
@@ -0,0 +1,108 @@
1
+ //#region src/init/templates/serverless.ts
2
+ const serverlessTemplate = {
3
+ name: "serverless",
4
+ description: "AWS Lambda handlers",
5
+ dependencies: {
6
+ "@geekmidas/constructs": "workspace:*",
7
+ "@geekmidas/envkit": "workspace:*",
8
+ "@geekmidas/logger": "workspace:*",
9
+ "@geekmidas/cloud": "workspace:*",
10
+ hono: "~4.8.2",
11
+ pino: "~9.6.0"
12
+ },
13
+ devDependencies: {
14
+ "@biomejs/biome": "~1.9.4",
15
+ "@geekmidas/cli": "workspace:*",
16
+ "@types/aws-lambda": "~8.10.92",
17
+ "@types/node": "~22.0.0",
18
+ tsx: "~4.20.0",
19
+ turbo: "~2.3.0",
20
+ typescript: "~5.8.2",
21
+ vitest: "~4.0.0"
22
+ },
23
+ scripts: {
24
+ dev: "gkm dev",
25
+ build: "gkm build --provider aws-apigatewayv2",
26
+ test: "vitest",
27
+ "test:once": "vitest run",
28
+ typecheck: "tsc --noEmit",
29
+ lint: "biome lint .",
30
+ fmt: "biome format . --write",
31
+ "fmt:check": "biome format ."
32
+ },
33
+ files: (options) => {
34
+ const files = [
35
+ {
36
+ path: "src/config/env.ts",
37
+ content: `import { EnvironmentParser } from '@geekmidas/envkit';
38
+
39
+ export const envParser = new EnvironmentParser(process.env);
40
+
41
+ export const config = envParser
42
+ .create((get) => ({
43
+ stage: get('STAGE').string().default('dev'),
44
+ region: get('AWS_REGION').string().default('us-east-1'),${options.database ? `
45
+ database: {
46
+ url: get('DATABASE_URL').string(),
47
+ },` : ""}
48
+ }))
49
+ .parse();
50
+ `
51
+ },
52
+ {
53
+ path: "src/config/logger.ts",
54
+ content: `import { PinoLogger } from '@geekmidas/logger/pino';
55
+
56
+ export const logger = new PinoLogger({
57
+ app: '${options.name}',
58
+ stage: process.env.STAGE || 'dev',
59
+ level: process.env.LOG_LEVEL || 'info',
60
+ });
61
+ `
62
+ },
63
+ {
64
+ path: "src/endpoints/health.ts",
65
+ content: `import { e } from '@geekmidas/constructs/endpoints';
66
+
67
+ export default e
68
+ .get('/health')
69
+ .handle(async () => ({
70
+ status: 'ok',
71
+ timestamp: new Date().toISOString(),
72
+ region: process.env.AWS_REGION || 'local',
73
+ }));
74
+ `
75
+ },
76
+ {
77
+ path: "src/functions/hello.ts",
78
+ content: `import { f } from '@geekmidas/constructs/functions';
79
+ import { z } from 'zod';
80
+
81
+ export default f
82
+ .input(z.object({ name: z.string() }))
83
+ .output(z.object({ message: z.string() }))
84
+ .handle(async ({ input }) => ({
85
+ message: \`Hello, \${input.name}!\`,
86
+ }));
87
+ `
88
+ }
89
+ ];
90
+ if (options.telescope) files.push({
91
+ path: "src/config/telescope.ts",
92
+ content: `import { Telescope } from '@geekmidas/telescope';
93
+ import { InMemoryStorage } from '@geekmidas/telescope/storage/memory';
94
+
95
+ // Note: For production Lambda, consider using a persistent storage
96
+ export const telescope = new Telescope({
97
+ storage: new InMemoryStorage({ maxEntries: 50 }),
98
+ enabled: process.env.STAGE === 'dev',
99
+ });
100
+ `
101
+ });
102
+ return files;
103
+ }
104
+ };
105
+
106
+ //#endregion
107
+ export { serverlessTemplate };
108
+ //# sourceMappingURL=serverless-DkHBF2vC.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverless-DkHBF2vC.mjs","names":["serverlessTemplate: TemplateConfig","options: TemplateOptions","files: GeneratedFile[]"],"sources":["../src/init/templates/serverless.ts"],"sourcesContent":["import type {\n GeneratedFile,\n TemplateConfig,\n TemplateOptions,\n} from './index.js';\n\nexport const serverlessTemplate: TemplateConfig = {\n name: 'serverless',\n description: 'AWS Lambda handlers',\n\n dependencies: {\n '@geekmidas/constructs': 'workspace:*',\n '@geekmidas/envkit': 'workspace:*',\n '@geekmidas/logger': 'workspace:*',\n '@geekmidas/cloud': 'workspace:*',\n hono: '~4.8.2',\n pino: '~9.6.0',\n },\n\n devDependencies: {\n '@biomejs/biome': '~1.9.4',\n '@geekmidas/cli': 'workspace:*',\n '@types/aws-lambda': '~8.10.92',\n '@types/node': '~22.0.0',\n tsx: '~4.20.0',\n turbo: '~2.3.0',\n typescript: '~5.8.2',\n vitest: '~4.0.0',\n },\n\n scripts: {\n dev: 'gkm dev',\n build: 'gkm build --provider aws-apigatewayv2',\n test: 'vitest',\n 'test:once': 'vitest run',\n typecheck: 'tsc --noEmit',\n lint: 'biome lint .',\n fmt: 'biome format . --write',\n 'fmt:check': 'biome format .',\n },\n\n files: (options: TemplateOptions): GeneratedFile[] => {\n const files: GeneratedFile[] = [\n // src/config/env.ts\n {\n path: 'src/config/env.ts',\n content: `import { EnvironmentParser } from '@geekmidas/envkit';\n\nexport const envParser = new EnvironmentParser(process.env);\n\nexport const config = envParser\n .create((get) => ({\n stage: get('STAGE').string().default('dev'),\n region: get('AWS_REGION').string().default('us-east-1'),${\n options.database\n ? `\n database: {\n url: get('DATABASE_URL').string(),\n },`\n : ''\n }\n }))\n .parse();\n`,\n },\n\n // src/config/logger.ts - using pino\n {\n path: 'src/config/logger.ts',\n content: `import { PinoLogger } from '@geekmidas/logger/pino';\n\nexport const logger = new PinoLogger({\n app: '${options.name}',\n stage: process.env.STAGE || 'dev',\n level: process.env.LOG_LEVEL || 'info',\n});\n`,\n },\n\n // src/endpoints/health.ts\n {\n path: 'src/endpoints/health.ts',\n content: `import { e } from '@geekmidas/constructs/endpoints';\n\nexport default e\n .get('/health')\n .handle(async () => ({\n status: 'ok',\n timestamp: new Date().toISOString(),\n region: process.env.AWS_REGION || 'local',\n }));\n`,\n },\n\n // src/functions/hello.ts\n {\n path: 'src/functions/hello.ts',\n content: `import { f } from '@geekmidas/constructs/functions';\nimport { z } from 'zod';\n\nexport default f\n .input(z.object({ name: z.string() }))\n .output(z.object({ message: z.string() }))\n .handle(async ({ input }) => ({\n message: \\`Hello, \\${input.name}!\\`,\n }));\n`,\n },\n ];\n\n // Add Telescope config if enabled\n if (options.telescope) {\n files.push({\n path: 'src/config/telescope.ts',\n content: `import { Telescope } from '@geekmidas/telescope';\nimport { InMemoryStorage } from '@geekmidas/telescope/storage/memory';\n\n// Note: For production Lambda, consider using a persistent storage\nexport const telescope = new Telescope({\n storage: new InMemoryStorage({ maxEntries: 50 }),\n enabled: process.env.STAGE === 'dev',\n});\n`,\n });\n }\n\n return files;\n },\n};\n"],"mappings":";AAMA,MAAaA,qBAAqC;CAChD,MAAM;CACN,aAAa;CAEb,cAAc;EACZ,yBAAyB;EACzB,qBAAqB;EACrB,qBAAqB;EACrB,oBAAoB;EACpB,MAAM;EACN,MAAM;CACP;CAED,iBAAiB;EACf,kBAAkB;EAClB,kBAAkB;EAClB,qBAAqB;EACrB,eAAe;EACf,KAAK;EACL,OAAO;EACP,YAAY;EACZ,QAAQ;CACT;CAED,SAAS;EACP,KAAK;EACL,OAAO;EACP,MAAM;EACN,aAAa;EACb,WAAW;EACX,MAAM;EACN,KAAK;EACL,aAAa;CACd;CAED,OAAO,CAACC,YAA8C;EACpD,MAAMC,QAAyB;GAE7B;IACE,MAAM;IACN,UAAU;;;;;;;8DAQZ,QAAQ,YACH;;;UAID,GACL;;;;GAIE;GAGD;IACE,MAAM;IACN,UAAU;;;UAGR,QAAQ,KAAK;;;;;GAKhB;GAGD;IACE,MAAM;IACN,UAAU;;;;;;;;;;GAUX;GAGD;IACE,MAAM;IACN,UAAU;;;;;;;;;;GAUX;EACF;AAGD,MAAI,QAAQ,UACV,OAAM,KAAK;GACT,MAAM;GACN,UAAU;;;;;;;;;EASX,EAAC;AAGJ,SAAO;CACR;AACF"}
@@ -0,0 +1,114 @@
1
+
2
+ //#region src/init/templates/serverless.ts
3
+ const serverlessTemplate = {
4
+ name: "serverless",
5
+ description: "AWS Lambda handlers",
6
+ dependencies: {
7
+ "@geekmidas/constructs": "workspace:*",
8
+ "@geekmidas/envkit": "workspace:*",
9
+ "@geekmidas/logger": "workspace:*",
10
+ "@geekmidas/cloud": "workspace:*",
11
+ hono: "~4.8.2",
12
+ pino: "~9.6.0"
13
+ },
14
+ devDependencies: {
15
+ "@biomejs/biome": "~1.9.4",
16
+ "@geekmidas/cli": "workspace:*",
17
+ "@types/aws-lambda": "~8.10.92",
18
+ "@types/node": "~22.0.0",
19
+ tsx: "~4.20.0",
20
+ turbo: "~2.3.0",
21
+ typescript: "~5.8.2",
22
+ vitest: "~4.0.0"
23
+ },
24
+ scripts: {
25
+ dev: "gkm dev",
26
+ build: "gkm build --provider aws-apigatewayv2",
27
+ test: "vitest",
28
+ "test:once": "vitest run",
29
+ typecheck: "tsc --noEmit",
30
+ lint: "biome lint .",
31
+ fmt: "biome format . --write",
32
+ "fmt:check": "biome format ."
33
+ },
34
+ files: (options) => {
35
+ const files = [
36
+ {
37
+ path: "src/config/env.ts",
38
+ content: `import { EnvironmentParser } from '@geekmidas/envkit';
39
+
40
+ export const envParser = new EnvironmentParser(process.env);
41
+
42
+ export const config = envParser
43
+ .create((get) => ({
44
+ stage: get('STAGE').string().default('dev'),
45
+ region: get('AWS_REGION').string().default('us-east-1'),${options.database ? `
46
+ database: {
47
+ url: get('DATABASE_URL').string(),
48
+ },` : ""}
49
+ }))
50
+ .parse();
51
+ `
52
+ },
53
+ {
54
+ path: "src/config/logger.ts",
55
+ content: `import { PinoLogger } from '@geekmidas/logger/pino';
56
+
57
+ export const logger = new PinoLogger({
58
+ app: '${options.name}',
59
+ stage: process.env.STAGE || 'dev',
60
+ level: process.env.LOG_LEVEL || 'info',
61
+ });
62
+ `
63
+ },
64
+ {
65
+ path: "src/endpoints/health.ts",
66
+ content: `import { e } from '@geekmidas/constructs/endpoints';
67
+
68
+ export default e
69
+ .get('/health')
70
+ .handle(async () => ({
71
+ status: 'ok',
72
+ timestamp: new Date().toISOString(),
73
+ region: process.env.AWS_REGION || 'local',
74
+ }));
75
+ `
76
+ },
77
+ {
78
+ path: "src/functions/hello.ts",
79
+ content: `import { f } from '@geekmidas/constructs/functions';
80
+ import { z } from 'zod';
81
+
82
+ export default f
83
+ .input(z.object({ name: z.string() }))
84
+ .output(z.object({ message: z.string() }))
85
+ .handle(async ({ input }) => ({
86
+ message: \`Hello, \${input.name}!\`,
87
+ }));
88
+ `
89
+ }
90
+ ];
91
+ if (options.telescope) files.push({
92
+ path: "src/config/telescope.ts",
93
+ content: `import { Telescope } from '@geekmidas/telescope';
94
+ import { InMemoryStorage } from '@geekmidas/telescope/storage/memory';
95
+
96
+ // Note: For production Lambda, consider using a persistent storage
97
+ export const telescope = new Telescope({
98
+ storage: new InMemoryStorage({ maxEntries: 50 }),
99
+ enabled: process.env.STAGE === 'dev',
100
+ });
101
+ `
102
+ });
103
+ return files;
104
+ }
105
+ };
106
+
107
+ //#endregion
108
+ Object.defineProperty(exports, 'serverlessTemplate', {
109
+ enumerable: true,
110
+ get: function () {
111
+ return serverlessTemplate;
112
+ }
113
+ });
114
+ //# sourceMappingURL=serverless-Yav3GRVz.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverless-Yav3GRVz.cjs","names":["serverlessTemplate: TemplateConfig","options: TemplateOptions","files: GeneratedFile[]"],"sources":["../src/init/templates/serverless.ts"],"sourcesContent":["import type {\n GeneratedFile,\n TemplateConfig,\n TemplateOptions,\n} from './index.js';\n\nexport const serverlessTemplate: TemplateConfig = {\n name: 'serverless',\n description: 'AWS Lambda handlers',\n\n dependencies: {\n '@geekmidas/constructs': 'workspace:*',\n '@geekmidas/envkit': 'workspace:*',\n '@geekmidas/logger': 'workspace:*',\n '@geekmidas/cloud': 'workspace:*',\n hono: '~4.8.2',\n pino: '~9.6.0',\n },\n\n devDependencies: {\n '@biomejs/biome': '~1.9.4',\n '@geekmidas/cli': 'workspace:*',\n '@types/aws-lambda': '~8.10.92',\n '@types/node': '~22.0.0',\n tsx: '~4.20.0',\n turbo: '~2.3.0',\n typescript: '~5.8.2',\n vitest: '~4.0.0',\n },\n\n scripts: {\n dev: 'gkm dev',\n build: 'gkm build --provider aws-apigatewayv2',\n test: 'vitest',\n 'test:once': 'vitest run',\n typecheck: 'tsc --noEmit',\n lint: 'biome lint .',\n fmt: 'biome format . --write',\n 'fmt:check': 'biome format .',\n },\n\n files: (options: TemplateOptions): GeneratedFile[] => {\n const files: GeneratedFile[] = [\n // src/config/env.ts\n {\n path: 'src/config/env.ts',\n content: `import { EnvironmentParser } from '@geekmidas/envkit';\n\nexport const envParser = new EnvironmentParser(process.env);\n\nexport const config = envParser\n .create((get) => ({\n stage: get('STAGE').string().default('dev'),\n region: get('AWS_REGION').string().default('us-east-1'),${\n options.database\n ? `\n database: {\n url: get('DATABASE_URL').string(),\n },`\n : ''\n }\n }))\n .parse();\n`,\n },\n\n // src/config/logger.ts - using pino\n {\n path: 'src/config/logger.ts',\n content: `import { PinoLogger } from '@geekmidas/logger/pino';\n\nexport const logger = new PinoLogger({\n app: '${options.name}',\n stage: process.env.STAGE || 'dev',\n level: process.env.LOG_LEVEL || 'info',\n});\n`,\n },\n\n // src/endpoints/health.ts\n {\n path: 'src/endpoints/health.ts',\n content: `import { e } from '@geekmidas/constructs/endpoints';\n\nexport default e\n .get('/health')\n .handle(async () => ({\n status: 'ok',\n timestamp: new Date().toISOString(),\n region: process.env.AWS_REGION || 'local',\n }));\n`,\n },\n\n // src/functions/hello.ts\n {\n path: 'src/functions/hello.ts',\n content: `import { f } from '@geekmidas/constructs/functions';\nimport { z } from 'zod';\n\nexport default f\n .input(z.object({ name: z.string() }))\n .output(z.object({ message: z.string() }))\n .handle(async ({ input }) => ({\n message: \\`Hello, \\${input.name}!\\`,\n }));\n`,\n },\n ];\n\n // Add Telescope config if enabled\n if (options.telescope) {\n files.push({\n path: 'src/config/telescope.ts',\n content: `import { Telescope } from '@geekmidas/telescope';\nimport { InMemoryStorage } from '@geekmidas/telescope/storage/memory';\n\n// Note: For production Lambda, consider using a persistent storage\nexport const telescope = new Telescope({\n storage: new InMemoryStorage({ maxEntries: 50 }),\n enabled: process.env.STAGE === 'dev',\n});\n`,\n });\n }\n\n return files;\n },\n};\n"],"mappings":";;AAMA,MAAaA,qBAAqC;CAChD,MAAM;CACN,aAAa;CAEb,cAAc;EACZ,yBAAyB;EACzB,qBAAqB;EACrB,qBAAqB;EACrB,oBAAoB;EACpB,MAAM;EACN,MAAM;CACP;CAED,iBAAiB;EACf,kBAAkB;EAClB,kBAAkB;EAClB,qBAAqB;EACrB,eAAe;EACf,KAAK;EACL,OAAO;EACP,YAAY;EACZ,QAAQ;CACT;CAED,SAAS;EACP,KAAK;EACL,OAAO;EACP,MAAM;EACN,aAAa;EACb,WAAW;EACX,MAAM;EACN,KAAK;EACL,aAAa;CACd;CAED,OAAO,CAACC,YAA8C;EACpD,MAAMC,QAAyB;GAE7B;IACE,MAAM;IACN,UAAU;;;;;;;8DAQZ,QAAQ,YACH;;;UAID,GACL;;;;GAIE;GAGD;IACE,MAAM;IACN,UAAU;;;UAGR,QAAQ,KAAK;;;;;GAKhB;GAGD;IACE,MAAM;IACN,UAAU;;;;;;;;;;GAUX;GAGD;IACE,MAAM;IACN,UAAU;;;;;;;;;;GAUX;EACF;AAGD,MAAI,QAAQ,UACV,OAAM,KAAK;GACT,MAAM;GACN,UAAU;;;;;;;;;EASX,EAAC;AAGJ,SAAO;CACR;AACF"}
@@ -0,0 +1,11 @@
1
+ import { GeneratedFile, TemplateConfig, TemplateOptions } from "./index-C523No_B.mjs";
2
+
3
+ //#region src/init/generators/source.d.ts
4
+
5
+ /**
6
+ * Generate source files from template
7
+ */
8
+ declare function generateSourceFiles(options: TemplateOptions, template: TemplateConfig): GeneratedFile[];
9
+ //#endregion
10
+ export { generateSourceFiles };
11
+ //# sourceMappingURL=source-D6v2BnKT.d.mts.map
@@ -0,0 +1,11 @@
1
+ import { GeneratedFile, TemplateConfig, TemplateOptions } from "./index-DrzN4xkQ.cjs";
2
+
3
+ //#region src/init/generators/source.d.ts
4
+
5
+ /**
6
+ * Generate source files from template
7
+ */
8
+ declare function generateSourceFiles(options: TemplateOptions, template: TemplateConfig): GeneratedFile[];
9
+ //#endregion
10
+ export { generateSourceFiles };
11
+ //# sourceMappingURL=source-D8fK9qRo.d.cts.map
@@ -0,0 +1,17 @@
1
+
2
+ //#region src/init/generators/source.ts
3
+ /**
4
+ * Generate source files from template
5
+ */
6
+ function generateSourceFiles(options, template) {
7
+ return template.files(options);
8
+ }
9
+
10
+ //#endregion
11
+ Object.defineProperty(exports, 'generateSourceFiles', {
12
+ enumerable: true,
13
+ get: function () {
14
+ return generateSourceFiles;
15
+ }
16
+ });
17
+ //# sourceMappingURL=source-DT5Xhiob.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-DT5Xhiob.cjs","names":["options: TemplateOptions","template: TemplateConfig"],"sources":["../src/init/generators/source.ts"],"sourcesContent":["import type {\n GeneratedFile,\n TemplateConfig,\n TemplateOptions,\n} from '../templates/index.js';\n\n/**\n * Generate source files from template\n */\nexport function generateSourceFiles(\n options: TemplateOptions,\n template: TemplateConfig,\n): GeneratedFile[] {\n return template.files(options);\n}\n"],"mappings":";;;;;AASA,SAAgB,oBACdA,SACAC,UACiB;AACjB,QAAO,SAAS,MAAM,QAAQ;AAC/B"}
@@ -0,0 +1,11 @@
1
+ //#region src/init/generators/source.ts
2
+ /**
3
+ * Generate source files from template
4
+ */
5
+ function generateSourceFiles(options, template) {
6
+ return template.files(options);
7
+ }
8
+
9
+ //#endregion
10
+ export { generateSourceFiles };
11
+ //# sourceMappingURL=source-DnaH_MLA.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-DnaH_MLA.mjs","names":["options: TemplateOptions","template: TemplateConfig"],"sources":["../src/init/generators/source.ts"],"sourcesContent":["import type {\n GeneratedFile,\n TemplateConfig,\n TemplateOptions,\n} from '../templates/index.js';\n\n/**\n * Generate source files from template\n */\nexport function generateSourceFiles(\n options: TemplateOptions,\n template: TemplateConfig,\n): GeneratedFile[] {\n return template.files(options);\n}\n"],"mappings":";;;;AASA,SAAgB,oBACdA,SACAC,UACiB;AACjB,QAAO,SAAS,MAAM,QAAQ;AAC/B"}
@@ -0,0 +1,64 @@
1
+ import { apiTemplate } from "./api-BKIN0s0S.mjs";
2
+ import { minimalTemplate } from "./minimal-C4GsE45s.mjs";
3
+ import { serverlessTemplate } from "./serverless-DkHBF2vC.mjs";
4
+ import { workerTemplate } from "./worker-Jme7uOOJ.mjs";
5
+
6
+ //#region src/init/templates/index.ts
7
+ /**
8
+ * All available templates
9
+ */
10
+ const templates = {
11
+ minimal: minimalTemplate,
12
+ api: apiTemplate,
13
+ serverless: serverlessTemplate,
14
+ worker: workerTemplate
15
+ };
16
+ /**
17
+ * Template choices for prompts
18
+ */
19
+ const templateChoices = [
20
+ {
21
+ title: "Minimal",
22
+ value: "minimal",
23
+ description: "Basic health endpoint"
24
+ },
25
+ {
26
+ title: "API",
27
+ value: "api",
28
+ description: "Full API with auth, database, services"
29
+ },
30
+ {
31
+ title: "Serverless",
32
+ value: "serverless",
33
+ description: "AWS Lambda handlers"
34
+ },
35
+ {
36
+ title: "Worker",
37
+ value: "worker",
38
+ description: "Background job processing"
39
+ }
40
+ ];
41
+ /**
42
+ * Route style choices for prompts
43
+ */
44
+ const routeStyleChoices = [{
45
+ title: "File-based",
46
+ value: "file-based",
47
+ description: "Folder structure matches URL paths (users/list.ts → /users)"
48
+ }, {
49
+ title: "Flat",
50
+ value: "flat",
51
+ description: "All endpoints in one folder (users-list.ts → /users)"
52
+ }];
53
+ /**
54
+ * Get a template by name
55
+ */
56
+ function getTemplate(name) {
57
+ const template = templates[name];
58
+ if (!template) throw new Error(`Unknown template: ${name}`);
59
+ return template;
60
+ }
61
+
62
+ //#endregion
63
+ export { getTemplate, routeStyleChoices, templateChoices, templates };
64
+ //# sourceMappingURL=templates-CBFUwpBy.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates-CBFUwpBy.mjs","names":["templates: Record<TemplateName, TemplateConfig>","name: TemplateName"],"sources":["../src/init/templates/index.ts"],"sourcesContent":["import { apiTemplate } from './api.js';\nimport { minimalTemplate } from './minimal.js';\nimport { serverlessTemplate } from './serverless.js';\nimport { workerTemplate } from './worker.js';\n\n/**\n * Route organization style\n */\nexport type RouteStyle = 'file-based' | 'flat';\n\n/**\n * Options collected from user prompts\n */\nexport interface TemplateOptions {\n name: string;\n template: TemplateName;\n telescope: boolean;\n database: boolean;\n routeStyle: RouteStyle;\n monorepo: boolean;\n /** Path for the API app in monorepo (e.g., 'apps/api') */\n apiPath: string;\n}\n\n/**\n * A file to be generated\n */\nexport interface GeneratedFile {\n path: string;\n content: string;\n}\n\n/**\n * Template configuration\n */\nexport interface TemplateConfig {\n name: TemplateName;\n description: string;\n dependencies: Record<string, string>;\n devDependencies: Record<string, string>;\n scripts: Record<string, string>;\n files: (options: TemplateOptions) => GeneratedFile[];\n}\n\nexport type TemplateName = 'minimal' | 'api' | 'serverless' | 'worker';\n\n/**\n * All available templates\n */\nexport const templates: Record<TemplateName, TemplateConfig> = {\n minimal: minimalTemplate,\n api: apiTemplate,\n serverless: serverlessTemplate,\n worker: workerTemplate,\n};\n\n/**\n * Template choices for prompts\n */\nexport const templateChoices = [\n {\n title: 'Minimal',\n value: 'minimal' as TemplateName,\n description: 'Basic health endpoint',\n },\n {\n title: 'API',\n value: 'api' as TemplateName,\n description: 'Full API with auth, database, services',\n },\n {\n title: 'Serverless',\n value: 'serverless' as TemplateName,\n description: 'AWS Lambda handlers',\n },\n {\n title: 'Worker',\n value: 'worker' as TemplateName,\n description: 'Background job processing',\n },\n];\n\n/**\n * Route style choices for prompts\n */\nexport const routeStyleChoices = [\n {\n title: 'File-based',\n value: 'file-based' as RouteStyle,\n description: 'Folder structure matches URL paths (users/list.ts → /users)',\n },\n {\n title: 'Flat',\n value: 'flat' as RouteStyle,\n description: 'All endpoints in one folder (users-list.ts → /users)',\n },\n];\n\n/**\n * Get a template by name\n */\nexport function getTemplate(name: TemplateName): TemplateConfig {\n const template = templates[name];\n if (!template) {\n throw new Error(`Unknown template: ${name}`);\n }\n return template;\n}\n"],"mappings":";;;;;;;;;AAiDA,MAAaA,YAAkD;CAC7D,SAAS;CACT,KAAK;CACL,YAAY;CACZ,QAAQ;AACT;;;;AAKD,MAAa,kBAAkB;CAC7B;EACE,OAAO;EACP,OAAO;EACP,aAAa;CACd;CACD;EACE,OAAO;EACP,OAAO;EACP,aAAa;CACd;CACD;EACE,OAAO;EACP,OAAO;EACP,aAAa;CACd;CACD;EACE,OAAO;EACP,OAAO;EACP,aAAa;CACd;AACF;;;;AAKD,MAAa,oBAAoB,CAC/B;CACE,OAAO;CACP,OAAO;CACP,aAAa;AACd,GACD;CACE,OAAO;CACP,OAAO;CACP,aAAa;AACd,CACF;;;;AAKD,SAAgB,YAAYC,MAAoC;CAC9D,MAAM,WAAW,UAAU;AAC3B,MAAK,SACH,OAAM,IAAI,OAAO,oBAAoB,KAAK;AAE5C,QAAO;AACR"}
@@ -0,0 +1,87 @@
1
+ const require_api = require('./api-B3SCEHPf.cjs');
2
+ const require_minimal = require('./minimal-Bdhhpp7v.cjs');
3
+ const require_serverless = require('./serverless-Yav3GRVz.cjs');
4
+ const require_worker = require('./worker--8O5a3Hv.cjs');
5
+
6
+ //#region src/init/templates/index.ts
7
+ /**
8
+ * All available templates
9
+ */
10
+ const templates = {
11
+ minimal: require_minimal.minimalTemplate,
12
+ api: require_api.apiTemplate,
13
+ serverless: require_serverless.serverlessTemplate,
14
+ worker: require_worker.workerTemplate
15
+ };
16
+ /**
17
+ * Template choices for prompts
18
+ */
19
+ const templateChoices = [
20
+ {
21
+ title: "Minimal",
22
+ value: "minimal",
23
+ description: "Basic health endpoint"
24
+ },
25
+ {
26
+ title: "API",
27
+ value: "api",
28
+ description: "Full API with auth, database, services"
29
+ },
30
+ {
31
+ title: "Serverless",
32
+ value: "serverless",
33
+ description: "AWS Lambda handlers"
34
+ },
35
+ {
36
+ title: "Worker",
37
+ value: "worker",
38
+ description: "Background job processing"
39
+ }
40
+ ];
41
+ /**
42
+ * Route style choices for prompts
43
+ */
44
+ const routeStyleChoices = [{
45
+ title: "File-based",
46
+ value: "file-based",
47
+ description: "Folder structure matches URL paths (users/list.ts → /users)"
48
+ }, {
49
+ title: "Flat",
50
+ value: "flat",
51
+ description: "All endpoints in one folder (users-list.ts → /users)"
52
+ }];
53
+ /**
54
+ * Get a template by name
55
+ */
56
+ function getTemplate(name) {
57
+ const template = templates[name];
58
+ if (!template) throw new Error(`Unknown template: ${name}`);
59
+ return template;
60
+ }
61
+
62
+ //#endregion
63
+ Object.defineProperty(exports, 'getTemplate', {
64
+ enumerable: true,
65
+ get: function () {
66
+ return getTemplate;
67
+ }
68
+ });
69
+ Object.defineProperty(exports, 'routeStyleChoices', {
70
+ enumerable: true,
71
+ get: function () {
72
+ return routeStyleChoices;
73
+ }
74
+ });
75
+ Object.defineProperty(exports, 'templateChoices', {
76
+ enumerable: true,
77
+ get: function () {
78
+ return templateChoices;
79
+ }
80
+ });
81
+ Object.defineProperty(exports, 'templates', {
82
+ enumerable: true,
83
+ get: function () {
84
+ return templates;
85
+ }
86
+ });
87
+ //# sourceMappingURL=templates-DM_rtYYW.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates-DM_rtYYW.cjs","names":["templates: Record<TemplateName, TemplateConfig>","minimalTemplate","apiTemplate","serverlessTemplate","workerTemplate","name: TemplateName"],"sources":["../src/init/templates/index.ts"],"sourcesContent":["import { apiTemplate } from './api.js';\nimport { minimalTemplate } from './minimal.js';\nimport { serverlessTemplate } from './serverless.js';\nimport { workerTemplate } from './worker.js';\n\n/**\n * Route organization style\n */\nexport type RouteStyle = 'file-based' | 'flat';\n\n/**\n * Options collected from user prompts\n */\nexport interface TemplateOptions {\n name: string;\n template: TemplateName;\n telescope: boolean;\n database: boolean;\n routeStyle: RouteStyle;\n monorepo: boolean;\n /** Path for the API app in monorepo (e.g., 'apps/api') */\n apiPath: string;\n}\n\n/**\n * A file to be generated\n */\nexport interface GeneratedFile {\n path: string;\n content: string;\n}\n\n/**\n * Template configuration\n */\nexport interface TemplateConfig {\n name: TemplateName;\n description: string;\n dependencies: Record<string, string>;\n devDependencies: Record<string, string>;\n scripts: Record<string, string>;\n files: (options: TemplateOptions) => GeneratedFile[];\n}\n\nexport type TemplateName = 'minimal' | 'api' | 'serverless' | 'worker';\n\n/**\n * All available templates\n */\nexport const templates: Record<TemplateName, TemplateConfig> = {\n minimal: minimalTemplate,\n api: apiTemplate,\n serverless: serverlessTemplate,\n worker: workerTemplate,\n};\n\n/**\n * Template choices for prompts\n */\nexport const templateChoices = [\n {\n title: 'Minimal',\n value: 'minimal' as TemplateName,\n description: 'Basic health endpoint',\n },\n {\n title: 'API',\n value: 'api' as TemplateName,\n description: 'Full API with auth, database, services',\n },\n {\n title: 'Serverless',\n value: 'serverless' as TemplateName,\n description: 'AWS Lambda handlers',\n },\n {\n title: 'Worker',\n value: 'worker' as TemplateName,\n description: 'Background job processing',\n },\n];\n\n/**\n * Route style choices for prompts\n */\nexport const routeStyleChoices = [\n {\n title: 'File-based',\n value: 'file-based' as RouteStyle,\n description: 'Folder structure matches URL paths (users/list.ts → /users)',\n },\n {\n title: 'Flat',\n value: 'flat' as RouteStyle,\n description: 'All endpoints in one folder (users-list.ts → /users)',\n },\n];\n\n/**\n * Get a template by name\n */\nexport function getTemplate(name: TemplateName): TemplateConfig {\n const template = templates[name];\n if (!template) {\n throw new Error(`Unknown template: ${name}`);\n }\n return template;\n}\n"],"mappings":";;;;;;;;;AAiDA,MAAaA,YAAkD;CAC7D,SAASC;CACT,KAAKC;CACL,YAAYC;CACZ,QAAQC;AACT;;;;AAKD,MAAa,kBAAkB;CAC7B;EACE,OAAO;EACP,OAAO;EACP,aAAa;CACd;CACD;EACE,OAAO;EACP,OAAO;EACP,aAAa;CACd;CACD;EACE,OAAO;EACP,OAAO;EACP,aAAa;CACd;CACD;EACE,OAAO;EACP,OAAO;EACP,aAAa;CACd;AACF;;;;AAKD,MAAa,oBAAoB,CAC/B;CACE,OAAO;CACP,OAAO;CACP,aAAa;AACd,GACD;CACE,OAAO;CACP,OAAO;CACP,aAAa;AACd,CACF;;;;AAKD,SAAgB,YAAYC,MAAoC;CAC9D,MAAM,WAAW,UAAU;AAC3B,MAAK,SACH,OAAM,IAAI,OAAO,oBAAoB,KAAK;AAE5C,QAAO;AACR"}