@geekmidas/cli 0.5.0 → 0.6.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 (246) hide show
  1. package/README.md +7 -7
  2. package/dist/{CronGenerator-BPTqNYOR.d.cts → CronGenerator-DWS3CCZt.d.cts} +4 -4
  3. package/dist/{CronGenerator-YAj59JUd.d.mts → CronGenerator-DZjdkEjI.d.mts} +4 -4
  4. package/dist/{EndpointGenerator-ChAD1INz.d.cts → EndpointGenerator-Dh7kMtuL.d.mts} +4 -4
  5. package/dist/{EndpointGenerator-Cj3O1U8-.d.mts → EndpointGenerator-zBsie_7s.d.cts} +4 -4
  6. package/dist/{FunctionGenerator-429-9NER.d.cts → FunctionGenerator-BmDHo27U.d.mts} +4 -4
  7. package/dist/{FunctionGenerator-BQ4ehoID.d.mts → FunctionGenerator-DXjXBxUd.d.cts} +4 -4
  8. package/dist/{Generator-BjHK_qce.d.mts → Generator-BGY-2dgI.d.cts} +3 -3
  9. package/dist/{Generator-DxQMCQp7.d.cts → Generator-yi9DH5TN.d.mts} +3 -3
  10. package/dist/{OpenApiTsGenerator-C4mHHaku.mjs → OpenApiTsGenerator-0ZDYWro5.mjs} +1 -1
  11. package/dist/{OpenApiTsGenerator-C4mHHaku.mjs.map → OpenApiTsGenerator-0ZDYWro5.mjs.map} +1 -1
  12. package/dist/{OpenApiTsGenerator-Be-sKGTT.cjs → OpenApiTsGenerator-wLwpaq_I.cjs} +1 -1
  13. package/dist/{OpenApiTsGenerator-Be-sKGTT.cjs.map → OpenApiTsGenerator-wLwpaq_I.cjs.map} +1 -1
  14. package/dist/{SubscriberGenerator-7uX42xyG.d.mts → SubscriberGenerator-Bb-z3Kvx.d.cts} +4 -4
  15. package/dist/{SubscriberGenerator-Dtb3HS4i.d.cts → SubscriberGenerator-CwsXqCpS.d.mts} +4 -4
  16. package/dist/{api-BKIN0s0S.mjs → api-Bp5TIl1R.mjs} +29 -46
  17. package/dist/api-Bp5TIl1R.mjs.map +1 -0
  18. package/dist/{api-B3SCEHPf.cjs → api-D4W9-tdZ.cjs} +29 -46
  19. package/dist/api-D4W9-tdZ.cjs.map +1 -0
  20. package/dist/build/index.cjs +5 -3
  21. package/dist/build/index.d.cts +1 -1
  22. package/dist/build/index.d.mts +1 -1
  23. package/dist/build/index.mjs +5 -3
  24. package/dist/build/manifests.cjs +1 -1
  25. package/dist/build/manifests.d.cts +1 -1
  26. package/dist/build/manifests.d.mts +1 -1
  27. package/dist/build/manifests.mjs +1 -1
  28. package/dist/build/providerResolver.d.cts +1 -1
  29. package/dist/build/providerResolver.d.mts +1 -1
  30. package/dist/build/types.d.cts +2 -2
  31. package/dist/build/types.d.mts +2 -2
  32. package/dist/{build-B8C_qHir.mjs → build-BLriHKgm.mjs} +3 -3
  33. package/dist/{build-B8C_qHir.mjs.map → build-BLriHKgm.mjs.map} +1 -1
  34. package/dist/{build-D0Wr49bf.cjs → build-Z3yGHcy2.cjs} +3 -3
  35. package/dist/{build-D0Wr49bf.cjs.map → build-Z3yGHcy2.cjs.map} +1 -1
  36. package/dist/{config-CLEDqKO3.cjs → config-BP1IZynR.cjs} +17 -6
  37. package/dist/config-BP1IZynR.cjs.map +1 -0
  38. package/dist/{config-Ba-Gbpbc.d.cts → config-CIzRhm_D.d.mts} +2 -2
  39. package/dist/{config-DBsmMDhf.d.mts → config-CvehIYsb.d.cts} +2 -2
  40. package/dist/{config-Dp8RonV_.mjs → config-UCK12Lrr.mjs} +17 -6
  41. package/dist/config-UCK12Lrr.mjs.map +1 -0
  42. package/dist/config.d.cts +1 -1
  43. package/dist/config.d.mts +1 -1
  44. package/dist/dev/index.cjs +3 -1
  45. package/dist/dev/index.d.cts +2 -2
  46. package/dist/dev/index.d.mts +2 -2
  47. package/dist/dev/index.mjs +3 -1
  48. package/dist/{dev-B734w3L1.mjs → dev-BimlVcuk.mjs} +6 -1
  49. package/dist/dev-BimlVcuk.mjs.map +1 -0
  50. package/dist/{dev-DHqYn8k4.cjs → dev-Dcrb_ZSL.cjs} +6 -1
  51. package/dist/dev-Dcrb_ZSL.cjs.map +1 -0
  52. package/dist/{docker-5d8Yh5_X.cjs → docker-2-ipZDOJ.cjs} +1 -1
  53. package/dist/{docker-5d8Yh5_X.cjs.map → docker-2-ipZDOJ.cjs.map} +1 -1
  54. package/dist/{docker-DlUqdFle.mjs → docker-31GNwU3F.mjs} +1 -1
  55. package/dist/{docker-DlUqdFle.mjs.map → docker-31GNwU3F.mjs.map} +1 -1
  56. package/dist/{env-HfuJRlg5.d.cts → env-CQ3hXAAW.d.mts} +2 -2
  57. package/dist/{env-B-OKjgI4.cjs → env-CS0jvg7k.cjs} +1 -1
  58. package/dist/{env-B-OKjgI4.cjs.map → env-CS0jvg7k.cjs.map} +1 -1
  59. package/dist/{env-nd-iQPYM.d.mts → env-D4YFgMqo.d.cts} +2 -2
  60. package/dist/{env-tv1HlZlw.mjs → env-DEeVOvVu.mjs} +1 -1
  61. package/dist/{env-tv1HlZlw.mjs.map → env-DEeVOvVu.mjs.map} +1 -1
  62. package/dist/generators/CronGenerator.d.cts +4 -4
  63. package/dist/generators/CronGenerator.d.mts +4 -4
  64. package/dist/generators/EndpointGenerator.d.cts +4 -4
  65. package/dist/generators/EndpointGenerator.d.mts +4 -4
  66. package/dist/generators/FunctionGenerator.d.cts +4 -4
  67. package/dist/generators/FunctionGenerator.d.mts +4 -4
  68. package/dist/generators/Generator.d.cts +3 -3
  69. package/dist/generators/Generator.d.mts +3 -3
  70. package/dist/generators/OpenApiTsGenerator.cjs +1 -1
  71. package/dist/generators/OpenApiTsGenerator.mjs +1 -1
  72. package/dist/generators/SubscriberGenerator.d.cts +4 -4
  73. package/dist/generators/SubscriberGenerator.d.mts +4 -4
  74. package/dist/generators/index.d.cts +7 -7
  75. package/dist/generators/index.d.mts +7 -7
  76. package/dist/{index-C523No_B.d.mts → index-DG6xNQMH.d.cts} +25 -8
  77. package/dist/{index-DrzN4xkQ.d.cts → index-DZgrOOOW.d.mts} +25 -8
  78. package/dist/index.cjs +21 -21
  79. package/dist/index.cjs.map +1 -1
  80. package/dist/index.mjs +21 -21
  81. package/dist/index.mjs.map +1 -1
  82. package/dist/init/generators/config.cjs +1 -1
  83. package/dist/init/generators/config.d.cts +2 -2
  84. package/dist/init/generators/config.d.mts +2 -2
  85. package/dist/init/generators/config.mjs +1 -1
  86. package/dist/init/generators/docker.cjs +1 -1
  87. package/dist/init/generators/docker.d.cts +1 -1
  88. package/dist/init/generators/docker.d.mts +1 -1
  89. package/dist/init/generators/docker.mjs +1 -1
  90. package/dist/init/generators/env.cjs +1 -1
  91. package/dist/init/generators/env.d.cts +2 -2
  92. package/dist/init/generators/env.d.mts +2 -2
  93. package/dist/init/generators/env.mjs +1 -1
  94. package/dist/init/generators/index.cjs +9 -4
  95. package/dist/init/generators/index.d.cts +5 -5
  96. package/dist/init/generators/index.d.mts +5 -5
  97. package/dist/init/generators/index.mjs +9 -4
  98. package/dist/init/generators/models.cjs +1 -1
  99. package/dist/init/generators/models.d.cts +1 -1
  100. package/dist/init/generators/models.d.mts +1 -1
  101. package/dist/init/generators/models.mjs +1 -1
  102. package/dist/init/generators/monorepo.cjs +1 -1
  103. package/dist/init/generators/monorepo.d.cts +1 -1
  104. package/dist/init/generators/monorepo.d.mts +1 -1
  105. package/dist/init/generators/monorepo.mjs +1 -1
  106. package/dist/init/generators/package.cjs +6 -1
  107. package/dist/init/generators/package.d.cts +2 -2
  108. package/dist/init/generators/package.d.mts +2 -2
  109. package/dist/init/generators/package.mjs +6 -1
  110. package/dist/init/generators/source.cjs +1 -1
  111. package/dist/init/generators/source.d.cts +2 -2
  112. package/dist/init/generators/source.d.mts +2 -2
  113. package/dist/init/generators/source.mjs +1 -1
  114. package/dist/init/index.cjs +14 -14
  115. package/dist/init/index.d.cts +1 -1
  116. package/dist/init/index.d.mts +1 -1
  117. package/dist/init/index.mjs +14 -14
  118. package/dist/init/templates/api.cjs +1 -1
  119. package/dist/init/templates/api.d.cts +1 -1
  120. package/dist/init/templates/api.d.mts +1 -1
  121. package/dist/init/templates/api.mjs +1 -1
  122. package/dist/init/templates/index.cjs +8 -6
  123. package/dist/init/templates/index.d.cts +2 -2
  124. package/dist/init/templates/index.d.mts +2 -2
  125. package/dist/init/templates/index.mjs +6 -6
  126. package/dist/init/templates/minimal.cjs +1 -1
  127. package/dist/init/templates/minimal.d.cts +1 -1
  128. package/dist/init/templates/minimal.d.mts +1 -1
  129. package/dist/init/templates/minimal.mjs +1 -1
  130. package/dist/init/templates/serverless.cjs +1 -1
  131. package/dist/init/templates/serverless.d.cts +1 -1
  132. package/dist/init/templates/serverless.d.mts +1 -1
  133. package/dist/init/templates/serverless.mjs +1 -1
  134. package/dist/init/templates/worker.cjs +1 -1
  135. package/dist/init/templates/worker.d.cts +1 -1
  136. package/dist/init/templates/worker.d.mts +1 -1
  137. package/dist/init/templates/worker.mjs +1 -1
  138. package/dist/init/utils.cjs +1 -1
  139. package/dist/init/utils.mjs +1 -1
  140. package/dist/{init-CtOnZn3G.mjs → init-BMA7xi8r.mjs} +37 -21
  141. package/dist/init-BMA7xi8r.mjs.map +1 -0
  142. package/dist/{init-qLFsWR-R.cjs → init-D-7WEk-b.cjs} +37 -21
  143. package/dist/init-D-7WEk-b.cjs.map +1 -0
  144. package/dist/{manifests-DIA_2QYd.mjs → manifests-BNKG6AXf.mjs} +1 -1
  145. package/dist/{manifests-DIA_2QYd.mjs.map → manifests-BNKG6AXf.mjs.map} +1 -1
  146. package/dist/{manifests-VJ9-2JpW.cjs → manifests-D13Ej8AE.cjs} +1 -1
  147. package/dist/{manifests-VJ9-2JpW.cjs.map → manifests-D13Ej8AE.cjs.map} +1 -1
  148. package/dist/{minimal-C4GsE45s.mjs → minimal-BkyASH_C.mjs} +15 -9
  149. package/dist/minimal-BkyASH_C.mjs.map +1 -0
  150. package/dist/{minimal-Bdhhpp7v.cjs → minimal-CSFggzdH.cjs} +15 -9
  151. package/dist/minimal-CSFggzdH.cjs.map +1 -0
  152. package/dist/{models-cvNg6Oea.mjs → models-BWlDfviw.mjs} +1 -1
  153. package/dist/{models-cvNg6Oea.mjs.map → models-BWlDfviw.mjs.map} +1 -1
  154. package/dist/{models-DyNwdOcz.cjs → models-BapGSoHC.cjs} +1 -1
  155. package/dist/{models-DyNwdOcz.cjs.map → models-BapGSoHC.cjs.map} +1 -1
  156. package/dist/{monorepo-Cknwzj5C.mjs → monorepo-BBOWhkcd.mjs} +1 -1
  157. package/dist/{monorepo-Cknwzj5C.mjs.map → monorepo-BBOWhkcd.mjs.map} +1 -1
  158. package/dist/{monorepo-sEK8gW59.cjs → monorepo-CFtxHeDh.cjs} +1 -1
  159. package/dist/{monorepo-sEK8gW59.cjs.map → monorepo-CFtxHeDh.cjs.map} +1 -1
  160. package/dist/openapi-CTae4ybf.cjs +98 -0
  161. package/dist/openapi-CTae4ybf.cjs.map +1 -0
  162. package/dist/openapi-Dn9MeKg3.mjs +74 -0
  163. package/dist/openapi-Dn9MeKg3.mjs.map +1 -0
  164. package/dist/{openapi-react-query-DxHjXQvg.cjs → openapi-react-query-Cp-w8_05.cjs} +1 -1
  165. package/dist/{openapi-react-query-DxHjXQvg.cjs.map → openapi-react-query-Cp-w8_05.cjs.map} +1 -1
  166. package/dist/{openapi-react-query-o7Mp1Jd5.mjs → openapi-react-query-_-B3s8v_.mjs} +1 -1
  167. package/dist/{openapi-react-query-o7Mp1Jd5.mjs.map → openapi-react-query-_-B3s8v_.mjs.map} +1 -1
  168. package/dist/openapi-react-query.cjs +1 -1
  169. package/dist/openapi-react-query.mjs +1 -1
  170. package/dist/openapi.cjs +6 -3
  171. package/dist/openapi.d.cts +23 -3
  172. package/dist/openapi.d.mts +23 -3
  173. package/dist/openapi.mjs +3 -3
  174. package/dist/{package-C7WhWU8m.d.mts → package-6h-7QfJZ.d.cts} +2 -2
  175. package/dist/{package-DvWEMz6z.d.cts → package-BCe_KvGv.d.mts} +2 -2
  176. package/dist/{package-CIfmeuSW.mjs → package-C3If80n1.mjs} +7 -1
  177. package/dist/package-C3If80n1.mjs.map +1 -0
  178. package/dist/{package-PP-o1nvq.cjs → package-Dk8IMBOB.cjs} +6 -1
  179. package/dist/package-Dk8IMBOB.cjs.map +1 -0
  180. package/dist/{serverless-Yav3GRVz.cjs → serverless-AGOS-l3G.cjs} +15 -10
  181. package/dist/serverless-AGOS-l3G.cjs.map +1 -0
  182. package/dist/{serverless-DkHBF2vC.mjs → serverless-D5HjJByU.mjs} +15 -10
  183. package/dist/serverless-D5HjJByU.mjs.map +1 -0
  184. package/dist/{source-DT5Xhiob.cjs → source-C1cyfHcF.cjs} +1 -1
  185. package/dist/{source-DT5Xhiob.cjs.map → source-C1cyfHcF.cjs.map} +1 -1
  186. package/dist/{source-D6v2BnKT.d.mts → source-C3LiNUV9.d.mts} +2 -2
  187. package/dist/{source-DnaH_MLA.mjs → source-CkQHBpwu.mjs} +1 -1
  188. package/dist/{source-DnaH_MLA.mjs.map → source-CkQHBpwu.mjs.map} +1 -1
  189. package/dist/{source-D8fK9qRo.d.cts → source-Dtcjbokc.d.cts} +2 -2
  190. package/dist/templates-C0EMmhwb.mjs +88 -0
  191. package/dist/templates-C0EMmhwb.mjs.map +1 -0
  192. package/dist/templates-CbgQ9dw0.cjs +123 -0
  193. package/dist/templates-CbgQ9dw0.cjs.map +1 -0
  194. package/dist/{types-Cxl8-uwV.d.mts → types-Bi7VzDUZ.d.mts} +31 -2
  195. package/dist/{types-C4KITv-y.d.mts → types-D2xYkOal.d.mts} +2 -2
  196. package/dist/{types-DLFN49M3.d.cts → types-DA-r8HWZ.d.cts} +2 -2
  197. package/dist/{types-DB99_qIy.d.cts → types-KmjzMgu8.d.cts} +31 -2
  198. package/dist/types.d.cts +2 -2
  199. package/dist/types.d.mts +2 -2
  200. package/dist/{utils-C31-SWHP.mjs → utils-CKEzCxc1.mjs} +1 -1
  201. package/dist/{utils-C31-SWHP.mjs.map → utils-CKEzCxc1.mjs.map} +1 -1
  202. package/dist/{utils-BX3F4fT8.cjs → utils-DSdN2MTt.cjs} +1 -1
  203. package/dist/{utils-BX3F4fT8.cjs.map → utils-DSdN2MTt.cjs.map} +1 -1
  204. package/dist/{worker--8O5a3Hv.cjs → worker-CGhlqNH-.cjs} +15 -9
  205. package/dist/worker-CGhlqNH-.cjs.map +1 -0
  206. package/dist/{worker-Jme7uOOJ.mjs → worker-CiP420As.mjs} +15 -9
  207. package/dist/worker-CiP420As.mjs.map +1 -0
  208. package/examples/gkm.config.ts +3 -5
  209. package/package.json +4 -4
  210. package/src/__tests__/openapi.spec.ts +395 -302
  211. package/src/dev/__tests__/index.spec.ts +114 -119
  212. package/src/dev/index.ts +18 -0
  213. package/src/init/generators/config.ts +23 -5
  214. package/src/init/generators/package.ts +11 -4
  215. package/src/init/index.ts +26 -7
  216. package/src/init/templates/api.ts +38 -56
  217. package/src/init/templates/index.ts +46 -11
  218. package/src/init/templates/minimal.ts +23 -10
  219. package/src/init/templates/serverless.ts +23 -11
  220. package/src/init/templates/worker.ts +23 -10
  221. package/src/openapi.ts +83 -45
  222. package/src/types.ts +30 -0
  223. package/dist/api-B3SCEHPf.cjs.map +0 -1
  224. package/dist/api-BKIN0s0S.mjs.map +0 -1
  225. package/dist/config-CLEDqKO3.cjs.map +0 -1
  226. package/dist/config-Dp8RonV_.mjs.map +0 -1
  227. package/dist/dev-B734w3L1.mjs.map +0 -1
  228. package/dist/dev-DHqYn8k4.cjs.map +0 -1
  229. package/dist/init-CtOnZn3G.mjs.map +0 -1
  230. package/dist/init-qLFsWR-R.cjs.map +0 -1
  231. package/dist/minimal-Bdhhpp7v.cjs.map +0 -1
  232. package/dist/minimal-C4GsE45s.mjs.map +0 -1
  233. package/dist/openapi-BQWPWyNB.cjs +0 -56
  234. package/dist/openapi-BQWPWyNB.cjs.map +0 -1
  235. package/dist/openapi-DBX8cJJ8.mjs +0 -50
  236. package/dist/openapi-DBX8cJJ8.mjs.map +0 -1
  237. package/dist/package-CIfmeuSW.mjs.map +0 -1
  238. package/dist/package-PP-o1nvq.cjs.map +0 -1
  239. package/dist/serverless-DkHBF2vC.mjs.map +0 -1
  240. package/dist/serverless-Yav3GRVz.cjs.map +0 -1
  241. package/dist/templates-CBFUwpBy.mjs +0 -64
  242. package/dist/templates-CBFUwpBy.mjs.map +0 -1
  243. package/dist/templates-DM_rtYYW.cjs +0 -87
  244. package/dist/templates-DM_rtYYW.cjs.map +0 -1
  245. package/dist/worker--8O5a3Hv.cjs.map +0 -1
  246. package/dist/worker-Jme7uOOJ.mjs.map +0 -1
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env -S npx tsx
2
- import { generateReactQueryCommand } from "./openapi-react-query-o7Mp1Jd5.mjs";
2
+ import { generateReactQueryCommand } from "./openapi-react-query-_-B3s8v_.mjs";
3
3
 
4
4
  export { generateReactQueryCommand };
package/dist/openapi.cjs CHANGED
@@ -2,7 +2,10 @@
2
2
  require('./config-CFls09Ey.cjs');
3
3
  require('./Generator-CLVplqm2.cjs');
4
4
  require('./EndpointGenerator-npWEDoK2.cjs');
5
- require('./OpenApiTsGenerator-Be-sKGTT.cjs');
6
- const require_openapi = require('./openapi-BQWPWyNB.cjs');
5
+ require('./OpenApiTsGenerator-wLwpaq_I.cjs');
6
+ const require_openapi = require('./openapi-CTae4ybf.cjs');
7
7
 
8
- exports.openapiCommand = require_openapi.openapiCommand;
8
+ exports.OPENAPI_OUTPUT_PATH = require_openapi.OPENAPI_OUTPUT_PATH;
9
+ exports.generateOpenApi = require_openapi.generateOpenApi;
10
+ exports.openapiCommand = require_openapi.openapiCommand;
11
+ exports.resolveOpenApiConfig = require_openapi.resolveOpenApiConfig;
@@ -1,11 +1,31 @@
1
1
  #!/usr/bin/env -S npx tsx
2
+ import { GkmConfig, OpenApiConfig } from "./types-KmjzMgu8.cjs";
3
+
2
4
  //#region src/openapi.d.ts
3
5
  interface OpenAPIOptions {
4
- output?: string;
5
- json?: boolean;
6
6
  cwd?: string;
7
7
  }
8
+ /**
9
+ * Fixed output path for generated OpenAPI client (not configurable)
10
+ */
11
+ declare const OPENAPI_OUTPUT_PATH = "./.gkm/openapi.ts";
12
+ /**
13
+ * Resolve OpenAPI config from GkmConfig
14
+ */
15
+ declare function resolveOpenApiConfig(config: GkmConfig): OpenApiConfig & {
16
+ enabled: boolean;
17
+ };
18
+ /**
19
+ * Generate OpenAPI spec from endpoints
20
+ * @returns Object with output path and endpoint count, or null if disabled
21
+ */
22
+ declare function generateOpenApi(config: GkmConfig, options?: {
23
+ silent?: boolean;
24
+ }): Promise<{
25
+ outputPath: string;
26
+ endpointCount: number;
27
+ } | null>;
8
28
  declare function openapiCommand(options?: OpenAPIOptions): Promise<void>;
9
29
  //#endregion
10
- export { openapiCommand };
30
+ export { OPENAPI_OUTPUT_PATH, generateOpenApi, openapiCommand, resolveOpenApiConfig };
11
31
  //# sourceMappingURL=openapi.d.cts.map
@@ -1,11 +1,31 @@
1
1
  #!/usr/bin/env -S npx tsx
2
+ import { GkmConfig, OpenApiConfig } from "./types-Bi7VzDUZ.mjs";
3
+
2
4
  //#region src/openapi.d.ts
3
5
  interface OpenAPIOptions {
4
- output?: string;
5
- json?: boolean;
6
6
  cwd?: string;
7
7
  }
8
+ /**
9
+ * Fixed output path for generated OpenAPI client (not configurable)
10
+ */
11
+ declare const OPENAPI_OUTPUT_PATH = "./.gkm/openapi.ts";
12
+ /**
13
+ * Resolve OpenAPI config from GkmConfig
14
+ */
15
+ declare function resolveOpenApiConfig(config: GkmConfig): OpenApiConfig & {
16
+ enabled: boolean;
17
+ };
18
+ /**
19
+ * Generate OpenAPI spec from endpoints
20
+ * @returns Object with output path and endpoint count, or null if disabled
21
+ */
22
+ declare function generateOpenApi(config: GkmConfig, options?: {
23
+ silent?: boolean;
24
+ }): Promise<{
25
+ outputPath: string;
26
+ endpointCount: number;
27
+ } | null>;
8
28
  declare function openapiCommand(options?: OpenAPIOptions): Promise<void>;
9
29
  //#endregion
10
- export { openapiCommand };
30
+ export { OPENAPI_OUTPUT_PATH, generateOpenApi, openapiCommand, resolveOpenApiConfig };
11
31
  //# sourceMappingURL=openapi.d.mts.map
package/dist/openapi.mjs CHANGED
@@ -2,7 +2,7 @@
2
2
  import "./config-Bq72aj8e.mjs";
3
3
  import "./Generator-CDt4pB3W.mjs";
4
4
  import "./EndpointGenerator-DGivkPLT.mjs";
5
- import "./OpenApiTsGenerator-C4mHHaku.mjs";
6
- import { openapiCommand } from "./openapi-DBX8cJJ8.mjs";
5
+ import "./OpenApiTsGenerator-0ZDYWro5.mjs";
6
+ import { OPENAPI_OUTPUT_PATH, generateOpenApi, openapiCommand, resolveOpenApiConfig } from "./openapi-Dn9MeKg3.mjs";
7
7
 
8
- export { openapiCommand };
8
+ export { OPENAPI_OUTPUT_PATH, generateOpenApi, openapiCommand, resolveOpenApiConfig };
@@ -1,4 +1,4 @@
1
- import { GeneratedFile, TemplateConfig, TemplateOptions } from "./index-C523No_B.mjs";
1
+ import { GeneratedFile, TemplateConfig, TemplateOptions } from "./index-DG6xNQMH.cjs";
2
2
 
3
3
  //#region src/init/generators/package.d.ts
4
4
 
@@ -8,4 +8,4 @@ import { GeneratedFile, TemplateConfig, TemplateOptions } from "./index-C523No_B
8
8
  declare function generatePackageJson(options: TemplateOptions, template: TemplateConfig): GeneratedFile[];
9
9
  //#endregion
10
10
  export { generatePackageJson };
11
- //# sourceMappingURL=package-C7WhWU8m.d.mts.map
11
+ //# sourceMappingURL=package-6h-7QfJZ.d.cts.map
@@ -1,4 +1,4 @@
1
- import { GeneratedFile, TemplateConfig, TemplateOptions } from "./index-DrzN4xkQ.cjs";
1
+ import { GeneratedFile, TemplateConfig, TemplateOptions } from "./index-DZgrOOOW.mjs";
2
2
 
3
3
  //#region src/init/generators/package.d.ts
4
4
 
@@ -8,4 +8,4 @@ import { GeneratedFile, TemplateConfig, TemplateOptions } from "./index-DrzN4xkQ
8
8
  declare function generatePackageJson(options: TemplateOptions, template: TemplateConfig): GeneratedFile[];
9
9
  //#endregion
10
10
  export { generatePackageJson };
11
- //# sourceMappingURL=package-DvWEMz6z.d.cts.map
11
+ //# sourceMappingURL=package-BCe_KvGv.d.mts.map
@@ -1,3 +1,5 @@
1
+ import { OPENAPI_OUTPUT_PATH } from "./templates-C0EMmhwb.mjs";
2
+
1
3
  //#region src/init/generators/package.ts
2
4
  /**
3
5
  * Generate package.json with dependencies based on template and options
@@ -36,6 +38,10 @@ function generatePackageJson(options, template) {
36
38
  version: "0.0.1",
37
39
  private: true,
38
40
  type: "module",
41
+ exports: { "./client": {
42
+ types: OPENAPI_OUTPUT_PATH,
43
+ import: OPENAPI_OUTPUT_PATH
44
+ } },
39
45
  scripts,
40
46
  dependencies: sortObject(dependencies),
41
47
  devDependencies: sortObject(devDependencies)
@@ -48,4 +54,4 @@ function generatePackageJson(options, template) {
48
54
 
49
55
  //#endregion
50
56
  export { generatePackageJson };
51
- //# sourceMappingURL=package-CIfmeuSW.mjs.map
57
+ //# sourceMappingURL=package-C3If80n1.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-C3If80n1.mjs","names":["options: TemplateOptions","template: TemplateConfig","obj: Record<string, string>"],"sources":["../src/init/generators/package.ts"],"sourcesContent":["import {\n type GeneratedFile,\n OPENAPI_OUTPUT_PATH,\n type TemplateConfig,\n type 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 exports: {\n './client': {\n types: OPENAPI_OUTPUT_PATH,\n import: OPENAPI_OUTPUT_PATH,\n },\n },\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":";;;;;;AAUA,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,SAAS,EACP,YAAY;GACV,OAAO;GACP,QAAQ;EACT,EACF;EACD;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"}
@@ -1,3 +1,4 @@
1
+ const require_templates = require('./templates-CbgQ9dw0.cjs');
1
2
 
2
3
  //#region src/init/generators/package.ts
3
4
  /**
@@ -37,6 +38,10 @@ function generatePackageJson(options, template) {
37
38
  version: "0.0.1",
38
39
  private: true,
39
40
  type: "module",
41
+ exports: { "./client": {
42
+ types: require_templates.OPENAPI_OUTPUT_PATH,
43
+ import: require_templates.OPENAPI_OUTPUT_PATH
44
+ } },
40
45
  scripts,
41
46
  dependencies: sortObject(dependencies),
42
47
  devDependencies: sortObject(devDependencies)
@@ -54,4 +59,4 @@ Object.defineProperty(exports, 'generatePackageJson', {
54
59
  return generatePackageJson;
55
60
  }
56
61
  });
57
- //# sourceMappingURL=package-PP-o1nvq.cjs.map
62
+ //# sourceMappingURL=package-Dk8IMBOB.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-Dk8IMBOB.cjs","names":["options: TemplateOptions","template: TemplateConfig","obj: Record<string, string>","OPENAPI_OUTPUT_PATH"],"sources":["../src/init/generators/package.ts"],"sourcesContent":["import {\n type GeneratedFile,\n OPENAPI_OUTPUT_PATH,\n type TemplateConfig,\n type 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 exports: {\n './client': {\n types: OPENAPI_OUTPUT_PATH,\n import: OPENAPI_OUTPUT_PATH,\n },\n },\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":";;;;;;AAUA,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,SAAS,EACP,YAAY;GACV,OAAOC;GACP,QAAQA;EACT,EACF;EACD;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"}
@@ -32,6 +32,18 @@ const serverlessTemplate = {
32
32
  "fmt:check": "biome format ."
33
33
  },
34
34
  files: (options) => {
35
+ const { loggerType, routesStructure } = options;
36
+ const loggerContent = `import { createLogger } from '@geekmidas/logger/${loggerType}';
37
+
38
+ export const logger = createLogger();
39
+ `;
40
+ const getRoutePath = (file) => {
41
+ switch (routesStructure) {
42
+ case "centralized-endpoints": return `src/endpoints/${file}`;
43
+ case "centralized-routes": return `src/routes/${file}`;
44
+ case "domain-based": return `src/${file.replace(".ts", "")}/routes/index.ts`;
45
+ }
46
+ };
35
47
  const files = [
36
48
  {
37
49
  path: "src/config/env.ts",
@@ -52,17 +64,10 @@ export const config = envParser
52
64
  },
53
65
  {
54
66
  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
- `
67
+ content: loggerContent
63
68
  },
64
69
  {
65
- path: "src/endpoints/health.ts",
70
+ path: getRoutePath("health.ts"),
66
71
  content: `import { e } from '@geekmidas/constructs/endpoints';
67
72
 
68
73
  export default e
@@ -111,4 +116,4 @@ Object.defineProperty(exports, 'serverlessTemplate', {
111
116
  return serverlessTemplate;
112
117
  }
113
118
  });
114
- //# sourceMappingURL=serverless-Yav3GRVz.cjs.map
119
+ //# sourceMappingURL=serverless-AGOS-l3G.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverless-AGOS-l3G.cjs","names":["serverlessTemplate: TemplateConfig","options: TemplateOptions","file: string","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 { loggerType, routesStructure } = options;\n\n const loggerContent = `import { createLogger } from '@geekmidas/logger/${loggerType}';\n\nexport const logger = createLogger();\n`;\n\n // Get route path based on structure\n const getRoutePath = (file: string) => {\n switch (routesStructure) {\n case 'centralized-endpoints':\n return `src/endpoints/${file}`;\n case 'centralized-routes':\n return `src/routes/${file}`;\n case 'domain-based':\n return `src/${file.replace('.ts', '')}/routes/index.ts`;\n }\n };\n\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\n {\n path: 'src/config/logger.ts',\n content: loggerContent,\n },\n\n // health endpoint\n {\n path: getRoutePath('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,MAAM,EAAE,YAAY,iBAAiB,GAAG;EAExC,MAAM,iBAAiB,kDAAkD,WAAW;;;;EAMpF,MAAM,eAAe,CAACC,SAAiB;AACrC,WAAQ,iBAAR;IACE,KAAK,wBACH,SAAQ,gBAAgB,KAAK;IAC/B,KAAK,qBACH,SAAQ,aAAa,KAAK;IAC5B,KAAK,eACH,SAAQ,MAAM,KAAK,QAAQ,OAAO,GAAG,CAAC;GACzC;EACF;EAED,MAAMC,QAAyB;GAE7B;IACE,MAAM;IACN,UAAU;;;;;;;8DAQZ,QAAQ,YACH;;;UAID,GACL;;;;GAIE;GAGD;IACE,MAAM;IACN,SAAS;GACV;GAGD;IACE,MAAM,aAAa,YAAY;IAC/B,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"}
@@ -31,6 +31,18 @@ const serverlessTemplate = {
31
31
  "fmt:check": "biome format ."
32
32
  },
33
33
  files: (options) => {
34
+ const { loggerType, routesStructure } = options;
35
+ const loggerContent = `import { createLogger } from '@geekmidas/logger/${loggerType}';
36
+
37
+ export const logger = createLogger();
38
+ `;
39
+ const getRoutePath = (file) => {
40
+ switch (routesStructure) {
41
+ case "centralized-endpoints": return `src/endpoints/${file}`;
42
+ case "centralized-routes": return `src/routes/${file}`;
43
+ case "domain-based": return `src/${file.replace(".ts", "")}/routes/index.ts`;
44
+ }
45
+ };
34
46
  const files = [
35
47
  {
36
48
  path: "src/config/env.ts",
@@ -51,17 +63,10 @@ export const config = envParser
51
63
  },
52
64
  {
53
65
  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
- `
66
+ content: loggerContent
62
67
  },
63
68
  {
64
- path: "src/endpoints/health.ts",
69
+ path: getRoutePath("health.ts"),
65
70
  content: `import { e } from '@geekmidas/constructs/endpoints';
66
71
 
67
72
  export default e
@@ -105,4 +110,4 @@ export const telescope = new Telescope({
105
110
 
106
111
  //#endregion
107
112
  export { serverlessTemplate };
108
- //# sourceMappingURL=serverless-DkHBF2vC.mjs.map
113
+ //# sourceMappingURL=serverless-D5HjJByU.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverless-D5HjJByU.mjs","names":["serverlessTemplate: TemplateConfig","options: TemplateOptions","file: string","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 { loggerType, routesStructure } = options;\n\n const loggerContent = `import { createLogger } from '@geekmidas/logger/${loggerType}';\n\nexport const logger = createLogger();\n`;\n\n // Get route path based on structure\n const getRoutePath = (file: string) => {\n switch (routesStructure) {\n case 'centralized-endpoints':\n return `src/endpoints/${file}`;\n case 'centralized-routes':\n return `src/routes/${file}`;\n case 'domain-based':\n return `src/${file.replace('.ts', '')}/routes/index.ts`;\n }\n };\n\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\n {\n path: 'src/config/logger.ts',\n content: loggerContent,\n },\n\n // health endpoint\n {\n path: getRoutePath('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,MAAM,EAAE,YAAY,iBAAiB,GAAG;EAExC,MAAM,iBAAiB,kDAAkD,WAAW;;;;EAMpF,MAAM,eAAe,CAACC,SAAiB;AACrC,WAAQ,iBAAR;IACE,KAAK,wBACH,SAAQ,gBAAgB,KAAK;IAC/B,KAAK,qBACH,SAAQ,aAAa,KAAK;IAC5B,KAAK,eACH,SAAQ,MAAM,KAAK,QAAQ,OAAO,GAAG,CAAC;GACzC;EACF;EAED,MAAMC,QAAyB;GAE7B;IACE,MAAM;IACN,UAAU;;;;;;;8DAQZ,QAAQ,YACH;;;UAID,GACL;;;;GAIE;GAGD;IACE,MAAM;IACN,SAAS;GACV;GAGD;IACE,MAAM,aAAa,YAAY;IAC/B,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"}
@@ -14,4 +14,4 @@ Object.defineProperty(exports, 'generateSourceFiles', {
14
14
  return generateSourceFiles;
15
15
  }
16
16
  });
17
- //# sourceMappingURL=source-DT5Xhiob.cjs.map
17
+ //# sourceMappingURL=source-C1cyfHcF.cjs.map
@@ -1 +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"}
1
+ {"version":3,"file":"source-C1cyfHcF.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"}
@@ -1,4 +1,4 @@
1
- import { GeneratedFile, TemplateConfig, TemplateOptions } from "./index-C523No_B.mjs";
1
+ import { GeneratedFile, TemplateConfig, TemplateOptions } from "./index-DZgrOOOW.mjs";
2
2
 
3
3
  //#region src/init/generators/source.d.ts
4
4
 
@@ -8,4 +8,4 @@ import { GeneratedFile, TemplateConfig, TemplateOptions } from "./index-C523No_B
8
8
  declare function generateSourceFiles(options: TemplateOptions, template: TemplateConfig): GeneratedFile[];
9
9
  //#endregion
10
10
  export { generateSourceFiles };
11
- //# sourceMappingURL=source-D6v2BnKT.d.mts.map
11
+ //# sourceMappingURL=source-C3LiNUV9.d.mts.map
@@ -8,4 +8,4 @@ function generateSourceFiles(options, template) {
8
8
 
9
9
  //#endregion
10
10
  export { generateSourceFiles };
11
- //# sourceMappingURL=source-DnaH_MLA.mjs.map
11
+ //# sourceMappingURL=source-CkQHBpwu.mjs.map
@@ -1 +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"}
1
+ {"version":3,"file":"source-CkQHBpwu.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"}
@@ -1,4 +1,4 @@
1
- import { GeneratedFile, TemplateConfig, TemplateOptions } from "./index-DrzN4xkQ.cjs";
1
+ import { GeneratedFile, TemplateConfig, TemplateOptions } from "./index-DG6xNQMH.cjs";
2
2
 
3
3
  //#region src/init/generators/source.d.ts
4
4
 
@@ -8,4 +8,4 @@ import { GeneratedFile, TemplateConfig, TemplateOptions } from "./index-DrzN4xkQ
8
8
  declare function generateSourceFiles(options: TemplateOptions, template: TemplateConfig): GeneratedFile[];
9
9
  //#endregion
10
10
  export { generateSourceFiles };
11
- //# sourceMappingURL=source-D8fK9qRo.d.cts.map
11
+ //# sourceMappingURL=source-Dtcjbokc.d.cts.map
@@ -0,0 +1,88 @@
1
+ import { apiTemplate } from "./api-Bp5TIl1R.mjs";
2
+ import { minimalTemplate } from "./minimal-BkyASH_C.mjs";
3
+ import { serverlessTemplate } from "./serverless-D5HjJByU.mjs";
4
+ import { workerTemplate } from "./worker-CiP420As.mjs";
5
+
6
+ //#region src/init/templates/index.ts
7
+ /**
8
+ * OpenAPI output path (fixed, not configurable)
9
+ */
10
+ const OPENAPI_OUTPUT_PATH = "./.gkm/openapi.ts";
11
+ /**
12
+ * All available templates
13
+ */
14
+ const templates = {
15
+ minimal: minimalTemplate,
16
+ api: apiTemplate,
17
+ serverless: serverlessTemplate,
18
+ worker: workerTemplate
19
+ };
20
+ /**
21
+ * Template choices for prompts
22
+ */
23
+ const templateChoices = [
24
+ {
25
+ title: "Minimal",
26
+ value: "minimal",
27
+ description: "Basic health endpoint"
28
+ },
29
+ {
30
+ title: "API",
31
+ value: "api",
32
+ description: "Full API with auth, database, services"
33
+ },
34
+ {
35
+ title: "Serverless",
36
+ value: "serverless",
37
+ description: "AWS Lambda handlers"
38
+ },
39
+ {
40
+ title: "Worker",
41
+ value: "worker",
42
+ description: "Background job processing"
43
+ }
44
+ ];
45
+ /**
46
+ * Logger type choices for prompts
47
+ */
48
+ const loggerTypeChoices = [{
49
+ title: "Pino",
50
+ value: "pino",
51
+ description: "Fast JSON logger for production (recommended)"
52
+ }, {
53
+ title: "Console",
54
+ value: "console",
55
+ description: "Simple console logger for development"
56
+ }];
57
+ /**
58
+ * Routes structure choices for prompts
59
+ */
60
+ const routesStructureChoices = [
61
+ {
62
+ title: "Centralized (endpoints)",
63
+ value: "centralized-endpoints",
64
+ description: "src/endpoints/**/*.ts"
65
+ },
66
+ {
67
+ title: "Centralized (routes)",
68
+ value: "centralized-routes",
69
+ description: "src/routes/**/*.ts"
70
+ },
71
+ {
72
+ title: "Domain-based",
73
+ value: "domain-based",
74
+ description: "src/**/routes/*.ts (e.g., src/users/routes/list.ts)"
75
+ }
76
+ ];
77
+ /**
78
+ * Get a template by name
79
+ */
80
+ function getTemplate(name) {
81
+ const template = templates[name];
82
+ if (!template) throw new Error(`Unknown template: ${name}`);
83
+ return template;
84
+ }
85
+
86
+ //#endregion
87
+ export { OPENAPI_OUTPUT_PATH, getTemplate, loggerTypeChoices, routesStructureChoices, templateChoices, templates };
88
+ //# sourceMappingURL=templates-C0EMmhwb.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates-C0EMmhwb.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 * OpenAPI output path (fixed, not configurable)\n */\nexport const OPENAPI_OUTPUT_PATH = './.gkm/openapi.ts';\n\n/**\n * Logger implementation type\n */\nexport type LoggerType = 'pino' | 'console';\n\n/**\n * Routes structure pattern\n */\nexport type RoutesStructure =\n | 'centralized-endpoints'\n | 'centralized-routes'\n | 'domain-based';\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 loggerType: LoggerType;\n routesStructure: RoutesStructure;\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 * Logger type choices for prompts\n */\nexport const loggerTypeChoices = [\n {\n title: 'Pino',\n value: 'pino' as LoggerType,\n description: 'Fast JSON logger for production (recommended)',\n },\n {\n title: 'Console',\n value: 'console' as LoggerType,\n description: 'Simple console logger for development',\n },\n];\n\n/**\n * Routes structure choices for prompts\n */\nexport const routesStructureChoices = [\n {\n title: 'Centralized (endpoints)',\n value: 'centralized-endpoints' as RoutesStructure,\n description: 'src/endpoints/**/*.ts',\n },\n {\n title: 'Centralized (routes)',\n value: 'centralized-routes' as RoutesStructure,\n description: 'src/routes/**/*.ts',\n },\n {\n title: 'Domain-based',\n value: 'domain-based' as RoutesStructure,\n description: 'src/**/routes/*.ts (e.g., src/users/routes/list.ts)',\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":";;;;;;;;;AAQA,MAAa,sBAAsB;;;;AAuDnC,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,MAAa,yBAAyB;CACpC;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,SAAgB,YAAYC,MAAoC;CAC9D,MAAM,WAAW,UAAU;AAC3B,MAAK,SACH,OAAM,IAAI,OAAO,oBAAoB,KAAK;AAE5C,QAAO;AACR"}
@@ -0,0 +1,123 @@
1
+ const require_api = require('./api-D4W9-tdZ.cjs');
2
+ const require_minimal = require('./minimal-CSFggzdH.cjs');
3
+ const require_serverless = require('./serverless-AGOS-l3G.cjs');
4
+ const require_worker = require('./worker-CGhlqNH-.cjs');
5
+
6
+ //#region src/init/templates/index.ts
7
+ /**
8
+ * OpenAPI output path (fixed, not configurable)
9
+ */
10
+ const OPENAPI_OUTPUT_PATH = "./.gkm/openapi.ts";
11
+ /**
12
+ * All available templates
13
+ */
14
+ const templates = {
15
+ minimal: require_minimal.minimalTemplate,
16
+ api: require_api.apiTemplate,
17
+ serverless: require_serverless.serverlessTemplate,
18
+ worker: require_worker.workerTemplate
19
+ };
20
+ /**
21
+ * Template choices for prompts
22
+ */
23
+ const templateChoices = [
24
+ {
25
+ title: "Minimal",
26
+ value: "minimal",
27
+ description: "Basic health endpoint"
28
+ },
29
+ {
30
+ title: "API",
31
+ value: "api",
32
+ description: "Full API with auth, database, services"
33
+ },
34
+ {
35
+ title: "Serverless",
36
+ value: "serverless",
37
+ description: "AWS Lambda handlers"
38
+ },
39
+ {
40
+ title: "Worker",
41
+ value: "worker",
42
+ description: "Background job processing"
43
+ }
44
+ ];
45
+ /**
46
+ * Logger type choices for prompts
47
+ */
48
+ const loggerTypeChoices = [{
49
+ title: "Pino",
50
+ value: "pino",
51
+ description: "Fast JSON logger for production (recommended)"
52
+ }, {
53
+ title: "Console",
54
+ value: "console",
55
+ description: "Simple console logger for development"
56
+ }];
57
+ /**
58
+ * Routes structure choices for prompts
59
+ */
60
+ const routesStructureChoices = [
61
+ {
62
+ title: "Centralized (endpoints)",
63
+ value: "centralized-endpoints",
64
+ description: "src/endpoints/**/*.ts"
65
+ },
66
+ {
67
+ title: "Centralized (routes)",
68
+ value: "centralized-routes",
69
+ description: "src/routes/**/*.ts"
70
+ },
71
+ {
72
+ title: "Domain-based",
73
+ value: "domain-based",
74
+ description: "src/**/routes/*.ts (e.g., src/users/routes/list.ts)"
75
+ }
76
+ ];
77
+ /**
78
+ * Get a template by name
79
+ */
80
+ function getTemplate(name) {
81
+ const template = templates[name];
82
+ if (!template) throw new Error(`Unknown template: ${name}`);
83
+ return template;
84
+ }
85
+
86
+ //#endregion
87
+ Object.defineProperty(exports, 'OPENAPI_OUTPUT_PATH', {
88
+ enumerable: true,
89
+ get: function () {
90
+ return OPENAPI_OUTPUT_PATH;
91
+ }
92
+ });
93
+ Object.defineProperty(exports, 'getTemplate', {
94
+ enumerable: true,
95
+ get: function () {
96
+ return getTemplate;
97
+ }
98
+ });
99
+ Object.defineProperty(exports, 'loggerTypeChoices', {
100
+ enumerable: true,
101
+ get: function () {
102
+ return loggerTypeChoices;
103
+ }
104
+ });
105
+ Object.defineProperty(exports, 'routesStructureChoices', {
106
+ enumerable: true,
107
+ get: function () {
108
+ return routesStructureChoices;
109
+ }
110
+ });
111
+ Object.defineProperty(exports, 'templateChoices', {
112
+ enumerable: true,
113
+ get: function () {
114
+ return templateChoices;
115
+ }
116
+ });
117
+ Object.defineProperty(exports, 'templates', {
118
+ enumerable: true,
119
+ get: function () {
120
+ return templates;
121
+ }
122
+ });
123
+ //# sourceMappingURL=templates-CbgQ9dw0.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates-CbgQ9dw0.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 * OpenAPI output path (fixed, not configurable)\n */\nexport const OPENAPI_OUTPUT_PATH = './.gkm/openapi.ts';\n\n/**\n * Logger implementation type\n */\nexport type LoggerType = 'pino' | 'console';\n\n/**\n * Routes structure pattern\n */\nexport type RoutesStructure =\n | 'centralized-endpoints'\n | 'centralized-routes'\n | 'domain-based';\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 loggerType: LoggerType;\n routesStructure: RoutesStructure;\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 * Logger type choices for prompts\n */\nexport const loggerTypeChoices = [\n {\n title: 'Pino',\n value: 'pino' as LoggerType,\n description: 'Fast JSON logger for production (recommended)',\n },\n {\n title: 'Console',\n value: 'console' as LoggerType,\n description: 'Simple console logger for development',\n },\n];\n\n/**\n * Routes structure choices for prompts\n */\nexport const routesStructureChoices = [\n {\n title: 'Centralized (endpoints)',\n value: 'centralized-endpoints' as RoutesStructure,\n description: 'src/endpoints/**/*.ts',\n },\n {\n title: 'Centralized (routes)',\n value: 'centralized-routes' as RoutesStructure,\n description: 'src/routes/**/*.ts',\n },\n {\n title: 'Domain-based',\n value: 'domain-based' as RoutesStructure,\n description: 'src/**/routes/*.ts (e.g., src/users/routes/list.ts)',\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":";;;;;;;;;AAQA,MAAa,sBAAsB;;;;AAuDnC,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,MAAa,yBAAyB;CACpC;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,SAAgB,YAAYC,MAAoC;CAC9D,MAAM,WAAW,UAAU;AAC3B,MAAK,SACH,OAAM,IAAI,OAAO,oBAAoB,KAAK;AAE5C,QAAO;AACR"}