@geekmidas/cli 0.6.1 → 0.7.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 (275) hide show
  1. package/README.md +119 -0
  2. package/dist/config-Bq72aj8e.mjs.map +1 -1
  3. package/dist/config-CFls09Ey.cjs.map +1 -1
  4. package/dist/config.d.cts +2 -2
  5. package/dist/config.d.mts +2 -2
  6. package/dist/index.cjs +2561 -34
  7. package/dist/index.cjs.map +1 -1
  8. package/dist/index.mjs +2556 -29
  9. package/dist/index.mjs.map +1 -1
  10. package/dist/openapi-Mwy2_R4W.mjs +957 -0
  11. package/dist/openapi-Mwy2_R4W.mjs.map +1 -0
  12. package/dist/{openapi-react-query-_-B3s8v_.mjs → openapi-react-query-CcciaVu5.mjs} +1 -1
  13. package/dist/{openapi-react-query-_-B3s8v_.mjs.map → openapi-react-query-CcciaVu5.mjs.map} +1 -1
  14. package/dist/{openapi-react-query-Cp-w8_05.cjs → openapi-react-query-o5iMi8tz.cjs} +1 -1
  15. package/dist/{openapi-react-query-Cp-w8_05.cjs.map → openapi-react-query-o5iMi8tz.cjs.map} +1 -1
  16. package/dist/openapi-react-query.cjs +1 -1
  17. package/dist/openapi-react-query.mjs +1 -1
  18. package/dist/openapi-tAIbJJU_.cjs +993 -0
  19. package/dist/openapi-tAIbJJU_.cjs.map +1 -0
  20. package/dist/openapi.cjs +1 -4
  21. package/dist/openapi.d.cts +1 -1
  22. package/dist/openapi.d.mts +1 -1
  23. package/dist/openapi.mjs +1 -4
  24. package/dist/{types-Bi7VzDUZ.d.mts → types-B3TXoj7v.d.mts} +21 -53
  25. package/dist/{types-KmjzMgu8.d.cts → types-C0hwnSjm.d.cts} +21 -53
  26. package/package.json +6 -6
  27. package/src/build/types.ts +13 -0
  28. package/src/config.ts +1 -0
  29. package/src/dev/index.ts +71 -8
  30. package/src/generators/EndpointGenerator.ts +46 -5
  31. package/src/generators/__tests__/EndpointGenerator.spec.ts +1 -1
  32. package/src/init/generators/config.ts +6 -1
  33. package/src/init/generators/package.ts +5 -1
  34. package/src/init/index.ts +9 -1
  35. package/src/init/templates/api.ts +31 -0
  36. package/src/init/templates/index.ts +1 -0
  37. package/src/init/templates/minimal.ts +83 -0
  38. package/src/types.ts +19 -0
  39. package/tsdown.config.ts +6 -0
  40. package/dist/CronGenerator-CCRYptuT.mjs +0 -55
  41. package/dist/CronGenerator-CCRYptuT.mjs.map +0 -1
  42. package/dist/CronGenerator-D4TWXQbh.cjs +0 -61
  43. package/dist/CronGenerator-D4TWXQbh.cjs.map +0 -1
  44. package/dist/CronGenerator-DWS3CCZt.d.cts +0 -14
  45. package/dist/CronGenerator-DZjdkEjI.d.mts +0 -14
  46. package/dist/EndpointGenerator-DGivkPLT.mjs +0 -335
  47. package/dist/EndpointGenerator-DGivkPLT.mjs.map +0 -1
  48. package/dist/EndpointGenerator-Dh7kMtuL.d.mts +0 -19
  49. package/dist/EndpointGenerator-npWEDoK2.cjs +0 -341
  50. package/dist/EndpointGenerator-npWEDoK2.cjs.map +0 -1
  51. package/dist/EndpointGenerator-zBsie_7s.d.cts +0 -19
  52. package/dist/FunctionGenerator-BmDHo27U.d.mts +0 -14
  53. package/dist/FunctionGenerator-CVk0h8tO.mjs +0 -54
  54. package/dist/FunctionGenerator-CVk0h8tO.mjs.map +0 -1
  55. package/dist/FunctionGenerator-DXjXBxUd.d.cts +0 -14
  56. package/dist/FunctionGenerator-DYTnyr4c.cjs +0 -60
  57. package/dist/FunctionGenerator-DYTnyr4c.cjs.map +0 -1
  58. package/dist/Generator-BGY-2dgI.d.cts +0 -27
  59. package/dist/Generator-CDt4pB3W.mjs +0 -41
  60. package/dist/Generator-CDt4pB3W.mjs.map +0 -1
  61. package/dist/Generator-CLVplqm2.cjs +0 -47
  62. package/dist/Generator-CLVplqm2.cjs.map +0 -1
  63. package/dist/Generator-yi9DH5TN.d.mts +0 -27
  64. package/dist/OpenApiTsGenerator-BVS4pOH7.mjs +0 -495
  65. package/dist/OpenApiTsGenerator-BVS4pOH7.mjs.map +0 -1
  66. package/dist/OpenApiTsGenerator-gPIIyppX.cjs +0 -501
  67. package/dist/OpenApiTsGenerator-gPIIyppX.cjs.map +0 -1
  68. package/dist/SubscriberGenerator-Bb-z3Kvx.d.cts +0 -15
  69. package/dist/SubscriberGenerator-CwsXqCpS.d.mts +0 -15
  70. package/dist/SubscriberGenerator-DABaJXML.mjs +0 -200
  71. package/dist/SubscriberGenerator-DABaJXML.mjs.map +0 -1
  72. package/dist/SubscriberGenerator-D_zpNGFr.cjs +0 -206
  73. package/dist/SubscriberGenerator-D_zpNGFr.cjs.map +0 -1
  74. package/dist/api-Bp5TIl1R.mjs +0 -167
  75. package/dist/api-Bp5TIl1R.mjs.map +0 -1
  76. package/dist/api-D4W9-tdZ.cjs +0 -173
  77. package/dist/api-D4W9-tdZ.cjs.map +0 -1
  78. package/dist/build/index.cjs +0 -15
  79. package/dist/build/index.d.cts +0 -7
  80. package/dist/build/index.d.mts +0 -7
  81. package/dist/build/index.mjs +0 -15
  82. package/dist/build/manifests.cjs +0 -4
  83. package/dist/build/manifests.d.cts +0 -13
  84. package/dist/build/manifests.d.mts +0 -13
  85. package/dist/build/manifests.mjs +0 -3
  86. package/dist/build/providerResolver.cjs +0 -5
  87. package/dist/build/providerResolver.d.cts +0 -23
  88. package/dist/build/providerResolver.d.mts +0 -23
  89. package/dist/build/providerResolver.mjs +0 -3
  90. package/dist/build/types.cjs +0 -0
  91. package/dist/build/types.d.cts +0 -3
  92. package/dist/build/types.d.mts +0 -3
  93. package/dist/build/types.mjs +0 -0
  94. package/dist/build-Cu6Mi0Lf.mjs +0 -87
  95. package/dist/build-Cu6Mi0Lf.mjs.map +0 -1
  96. package/dist/build-wmt8ZcmA.cjs +0 -93
  97. package/dist/build-wmt8ZcmA.cjs.map +0 -1
  98. package/dist/config-BP1IZynR.cjs +0 -168
  99. package/dist/config-BP1IZynR.cjs.map +0 -1
  100. package/dist/config-CIzRhm_D.d.mts +0 -11
  101. package/dist/config-CvehIYsb.d.cts +0 -11
  102. package/dist/config-UCK12Lrr.mjs +0 -162
  103. package/dist/config-UCK12Lrr.mjs.map +0 -1
  104. package/dist/dev/index.cjs +0 -17
  105. package/dist/dev/index.d.cts +0 -36
  106. package/dist/dev/index.d.mts +0 -36
  107. package/dist/dev/index.mjs +0 -13
  108. package/dist/dev-BBPWSllq.mjs +0 -348
  109. package/dist/dev-BBPWSllq.mjs.map +0 -1
  110. package/dist/dev-C2lCgE53.cjs +0 -378
  111. package/dist/dev-C2lCgE53.cjs.map +0 -1
  112. package/dist/docker-2-ipZDOJ.cjs +0 -119
  113. package/dist/docker-2-ipZDOJ.cjs.map +0 -1
  114. package/dist/docker-31GNwU3F.mjs +0 -113
  115. package/dist/docker-31GNwU3F.mjs.map +0 -1
  116. package/dist/env-CQ3hXAAW.d.mts +0 -11
  117. package/dist/env-CS0jvg7k.cjs +0 -144
  118. package/dist/env-CS0jvg7k.cjs.map +0 -1
  119. package/dist/env-D4YFgMqo.d.cts +0 -11
  120. package/dist/env-DEeVOvVu.mjs +0 -138
  121. package/dist/env-DEeVOvVu.mjs.map +0 -1
  122. package/dist/generators/CronGenerator.cjs +0 -4
  123. package/dist/generators/CronGenerator.d.cts +0 -5
  124. package/dist/generators/CronGenerator.d.mts +0 -5
  125. package/dist/generators/CronGenerator.mjs +0 -4
  126. package/dist/generators/EndpointGenerator.cjs +0 -4
  127. package/dist/generators/EndpointGenerator.d.cts +0 -5
  128. package/dist/generators/EndpointGenerator.d.mts +0 -5
  129. package/dist/generators/EndpointGenerator.mjs +0 -4
  130. package/dist/generators/FunctionGenerator.cjs +0 -4
  131. package/dist/generators/FunctionGenerator.d.cts +0 -5
  132. package/dist/generators/FunctionGenerator.d.mts +0 -5
  133. package/dist/generators/FunctionGenerator.mjs +0 -4
  134. package/dist/generators/Generator.cjs +0 -3
  135. package/dist/generators/Generator.d.cts +0 -4
  136. package/dist/generators/Generator.d.mts +0 -4
  137. package/dist/generators/Generator.mjs +0 -3
  138. package/dist/generators/OpenApiTsGenerator.cjs +0 -3
  139. package/dist/generators/OpenApiTsGenerator.d.cts +0 -44
  140. package/dist/generators/OpenApiTsGenerator.d.mts +0 -44
  141. package/dist/generators/OpenApiTsGenerator.mjs +0 -3
  142. package/dist/generators/SubscriberGenerator.cjs +0 -4
  143. package/dist/generators/SubscriberGenerator.d.cts +0 -5
  144. package/dist/generators/SubscriberGenerator.d.mts +0 -5
  145. package/dist/generators/SubscriberGenerator.mjs +0 -4
  146. package/dist/generators/index.cjs +0 -12
  147. package/dist/generators/index.d.cts +0 -8
  148. package/dist/generators/index.d.mts +0 -8
  149. package/dist/generators/index.mjs +0 -8
  150. package/dist/generators-3IemvCLk.cjs +0 -0
  151. package/dist/generators-FNpdfN6J.mjs +0 -0
  152. package/dist/index-DG6xNQMH.d.cts +0 -81
  153. package/dist/index-DZgrOOOW.d.mts +0 -81
  154. package/dist/init/generators/config.cjs +0 -3
  155. package/dist/init/generators/config.d.cts +0 -3
  156. package/dist/init/generators/config.d.mts +0 -3
  157. package/dist/init/generators/config.mjs +0 -3
  158. package/dist/init/generators/docker.cjs +0 -3
  159. package/dist/init/generators/docker.d.cts +0 -11
  160. package/dist/init/generators/docker.d.mts +0 -11
  161. package/dist/init/generators/docker.mjs +0 -3
  162. package/dist/init/generators/env.cjs +0 -3
  163. package/dist/init/generators/env.d.cts +0 -3
  164. package/dist/init/generators/env.d.mts +0 -3
  165. package/dist/init/generators/env.mjs +0 -3
  166. package/dist/init/generators/index.cjs +0 -14
  167. package/dist/init/generators/index.d.cts +0 -6
  168. package/dist/init/generators/index.d.mts +0 -6
  169. package/dist/init/generators/index.mjs +0 -11
  170. package/dist/init/generators/models.cjs +0 -3
  171. package/dist/init/generators/models.d.cts +0 -11
  172. package/dist/init/generators/models.d.mts +0 -11
  173. package/dist/init/generators/models.mjs +0 -3
  174. package/dist/init/generators/monorepo.cjs +0 -3
  175. package/dist/init/generators/monorepo.d.cts +0 -11
  176. package/dist/init/generators/monorepo.d.mts +0 -11
  177. package/dist/init/generators/monorepo.mjs +0 -3
  178. package/dist/init/generators/package.cjs +0 -8
  179. package/dist/init/generators/package.d.cts +0 -3
  180. package/dist/init/generators/package.d.mts +0 -3
  181. package/dist/init/generators/package.mjs +0 -8
  182. package/dist/init/generators/source.cjs +0 -3
  183. package/dist/init/generators/source.d.cts +0 -3
  184. package/dist/init/generators/source.d.mts +0 -3
  185. package/dist/init/generators/source.mjs +0 -3
  186. package/dist/init/index.cjs +0 -16
  187. package/dist/init/index.d.cts +0 -17
  188. package/dist/init/index.d.mts +0 -17
  189. package/dist/init/index.mjs +0 -16
  190. package/dist/init/templates/api.cjs +0 -3
  191. package/dist/init/templates/api.d.cts +0 -7
  192. package/dist/init/templates/api.d.mts +0 -7
  193. package/dist/init/templates/api.mjs +0 -3
  194. package/dist/init/templates/index.cjs +0 -12
  195. package/dist/init/templates/index.d.cts +0 -2
  196. package/dist/init/templates/index.d.mts +0 -2
  197. package/dist/init/templates/index.mjs +0 -7
  198. package/dist/init/templates/minimal.cjs +0 -3
  199. package/dist/init/templates/minimal.d.cts +0 -7
  200. package/dist/init/templates/minimal.d.mts +0 -7
  201. package/dist/init/templates/minimal.mjs +0 -3
  202. package/dist/init/templates/serverless.cjs +0 -3
  203. package/dist/init/templates/serverless.d.cts +0 -7
  204. package/dist/init/templates/serverless.d.mts +0 -7
  205. package/dist/init/templates/serverless.mjs +0 -3
  206. package/dist/init/templates/worker.cjs +0 -3
  207. package/dist/init/templates/worker.d.cts +0 -7
  208. package/dist/init/templates/worker.d.mts +0 -7
  209. package/dist/init/templates/worker.mjs +0 -3
  210. package/dist/init/utils.cjs +0 -7
  211. package/dist/init/utils.d.cts +0 -25
  212. package/dist/init/utils.d.mts +0 -25
  213. package/dist/init/utils.mjs +0 -3
  214. package/dist/init-BMA7xi8r.mjs +0 -161
  215. package/dist/init-BMA7xi8r.mjs.map +0 -1
  216. package/dist/init-D-7WEk-b.cjs +0 -167
  217. package/dist/init-D-7WEk-b.cjs.map +0 -1
  218. package/dist/manifests-BNKG6AXf.mjs +0 -68
  219. package/dist/manifests-BNKG6AXf.mjs.map +0 -1
  220. package/dist/manifests-D13Ej8AE.cjs +0 -80
  221. package/dist/manifests-D13Ej8AE.cjs.map +0 -1
  222. package/dist/minimal-BkyASH_C.mjs +0 -93
  223. package/dist/minimal-BkyASH_C.mjs.map +0 -1
  224. package/dist/minimal-CSFggzdH.cjs +0 -99
  225. package/dist/minimal-CSFggzdH.cjs.map +0 -1
  226. package/dist/models-BWlDfviw.mjs +0 -115
  227. package/dist/models-BWlDfviw.mjs.map +0 -1
  228. package/dist/models-BapGSoHC.cjs +0 -121
  229. package/dist/models-BapGSoHC.cjs.map +0 -1
  230. package/dist/monorepo-BBOWhkcd.mjs +0 -184
  231. package/dist/monorepo-BBOWhkcd.mjs.map +0 -1
  232. package/dist/monorepo-CFtxHeDh.cjs +0 -190
  233. package/dist/monorepo-CFtxHeDh.cjs.map +0 -1
  234. package/dist/openapi-DA9RkPJl.mjs +0 -74
  235. package/dist/openapi-DA9RkPJl.mjs.map +0 -1
  236. package/dist/openapi-DZH6RQHk.cjs +0 -98
  237. package/dist/openapi-DZH6RQHk.cjs.map +0 -1
  238. package/dist/package-6h-7QfJZ.d.cts +0 -11
  239. package/dist/package-BCe_KvGv.d.mts +0 -11
  240. package/dist/package-C3If80n1.mjs +0 -57
  241. package/dist/package-C3If80n1.mjs.map +0 -1
  242. package/dist/package-Dk8IMBOB.cjs +0 -62
  243. package/dist/package-Dk8IMBOB.cjs.map +0 -1
  244. package/dist/providerResolver-DEVKngbC.mjs +0 -96
  245. package/dist/providerResolver-DEVKngbC.mjs.map +0 -1
  246. package/dist/providerResolver-DOTbN9jo.cjs +0 -114
  247. package/dist/providerResolver-DOTbN9jo.cjs.map +0 -1
  248. package/dist/serverless-AGOS-l3G.cjs +0 -119
  249. package/dist/serverless-AGOS-l3G.cjs.map +0 -1
  250. package/dist/serverless-D5HjJByU.mjs +0 -113
  251. package/dist/serverless-D5HjJByU.mjs.map +0 -1
  252. package/dist/source-C1cyfHcF.cjs +0 -17
  253. package/dist/source-C1cyfHcF.cjs.map +0 -1
  254. package/dist/source-C3LiNUV9.d.mts +0 -11
  255. package/dist/source-CkQHBpwu.mjs +0 -11
  256. package/dist/source-CkQHBpwu.mjs.map +0 -1
  257. package/dist/source-Dtcjbokc.d.cts +0 -11
  258. package/dist/templates-C0EMmhwb.mjs +0 -88
  259. package/dist/templates-C0EMmhwb.mjs.map +0 -1
  260. package/dist/templates-CbgQ9dw0.cjs +0 -123
  261. package/dist/templates-CbgQ9dw0.cjs.map +0 -1
  262. package/dist/types-D2xYkOal.d.mts +0 -51
  263. package/dist/types-DA-r8HWZ.d.cts +0 -51
  264. package/dist/types.cjs +0 -0
  265. package/dist/types.d.cts +0 -2
  266. package/dist/types.d.mts +0 -2
  267. package/dist/types.mjs +0 -0
  268. package/dist/utils-CKEzCxc1.mjs +0 -69
  269. package/dist/utils-CKEzCxc1.mjs.map +0 -1
  270. package/dist/utils-DSdN2MTt.cjs +0 -99
  271. package/dist/utils-DSdN2MTt.cjs.map +0 -1
  272. package/dist/worker-CGhlqNH-.cjs +0 -156
  273. package/dist/worker-CGhlqNH-.cjs.map +0 -1
  274. package/dist/worker-CiP420As.mjs +0 -150
  275. package/dist/worker-CiP420As.mjs.map +0 -1
package/README.md CHANGED
@@ -4,6 +4,7 @@ A powerful CLI tool for building and managing TypeScript-based backend APIs with
4
4
 
5
5
  ## Features
6
6
 
7
+ - **Project Scaffolding**: Interactive `init` command to bootstrap new projects with templates
7
8
  - **Multi-Provider Support**: Generate handlers for AWS Lambda (API Gateway v1/v2) and server applications
8
9
  - **Development Server**: Hot-reload development server with file watching
9
10
  - **Telescope Integration**: Laravel-style debugging dashboard for inspecting requests, logs, and exceptions
@@ -13,6 +14,7 @@ A powerful CLI tool for building and managing TypeScript-based backend APIs with
13
14
  - **Flexible Routing**: Support for glob patterns to discover route files
14
15
  - **Environment Integration**: Seamless integration with @geekmidas/envkit for configuration
15
16
  - **Logger Integration**: Built-in logging configuration and integration
17
+ - **Monorepo Support**: Optional pnpm workspace monorepo setup with shared packages
16
18
 
17
19
  ## Installation
18
20
 
@@ -28,6 +30,18 @@ npm install -g @geekmidas/cli
28
30
 
29
31
  ## Quick Start
30
32
 
33
+ ### Option 1: Use `gkm init` (Recommended)
34
+
35
+ The fastest way to get started is with the interactive `init` command:
36
+
37
+ ```bash
38
+ npx @geekmidas/cli init my-api
39
+ ```
40
+
41
+ This will guide you through setting up a new project with your preferred options.
42
+
43
+ ### Option 2: Manual Setup
44
+
31
45
  ### 1. Create Configuration
32
46
 
33
47
  Create a `gkm.config.ts` file in your project root:
@@ -178,6 +192,111 @@ npx gkm openapi --output src/api.ts
178
192
 
179
193
  ## CLI Commands
180
194
 
195
+ ### `gkm init`
196
+
197
+ Scaffold a new project with interactive prompts.
198
+
199
+ ```bash
200
+ gkm init [name] [options]
201
+ ```
202
+
203
+ **Arguments:**
204
+ - `[name]`: Project name (optional, will prompt if not provided)
205
+
206
+ **Options:**
207
+ - `--template <template>`: Project template (`minimal`, `api`, `serverless`, `worker`)
208
+ - `--skip-install`: Skip dependency installation
209
+ - `-y, --yes`: Skip prompts, use defaults
210
+ - `--monorepo`: Setup as monorepo structure
211
+ - `--api-path <path>`: API app path in monorepo (default: `apps/api`)
212
+
213
+ **Interactive Prompts:**
214
+
215
+ When run without `--yes`, the command will ask:
216
+
217
+ 1. **Project name** - Name for your project directory
218
+ 2. **Template** - Choose from available templates:
219
+ - `minimal` - Basic health endpoint
220
+ - `api` - Full API with auth, database, services
221
+ - `serverless` - AWS Lambda handlers
222
+ - `worker` - Background job processing
223
+ 3. **Telescope** - Include debugging dashboard (default: yes)
224
+ 4. **Database** - Include Kysely database support (default: yes)
225
+ 5. **Logger** - Choose logger implementation:
226
+ - `pino` - Fast JSON logger for production (recommended)
227
+ - `console` - Simple console logger for development
228
+ 6. **Routes structure** - Choose file organization:
229
+ - `centralized-endpoints` - `src/endpoints/**/*.ts`
230
+ - `centralized-routes` - `src/routes/**/*.ts`
231
+ - `domain-based` - `src/**/routes/*.ts`
232
+ 7. **Monorepo** - Setup as pnpm workspace monorepo (default: no)
233
+ 8. **API path** - If monorepo, where to place the API app
234
+
235
+ **Examples:**
236
+
237
+ ```bash
238
+ # Interactive mode
239
+ npx @geekmidas/cli init
240
+
241
+ # With project name
242
+ npx @geekmidas/cli init my-api
243
+
244
+ # Skip prompts with defaults
245
+ npx @geekmidas/cli init my-api --yes
246
+
247
+ # Specific template
248
+ npx @geekmidas/cli init my-api --template api
249
+
250
+ # Monorepo setup
251
+ npx @geekmidas/cli init my-project --monorepo --api-path apps/backend
252
+
253
+ # Skip dependency installation
254
+ npx @geekmidas/cli init my-api --skip-install
255
+ ```
256
+
257
+ **Generated Structure (Minimal Template):**
258
+
259
+ ```
260
+ my-api/
261
+ ├── src/
262
+ │ ├── config/
263
+ │ │ ├── env.ts # Environment configuration
264
+ │ │ └── logger.ts # Logger setup
265
+ │ └── endpoints/
266
+ │ └── health.ts # Health check endpoint
267
+ ├── .env # Environment variables
268
+ ├── .env.example # Example env file
269
+ ├── .gitignore
270
+ ├── gkm.config.ts # CLI configuration
271
+ ├── package.json
272
+ ├── tsconfig.json
273
+ └── Dockerfile # Docker configuration
274
+ ```
275
+
276
+ **Generated Structure (Monorepo):**
277
+
278
+ ```
279
+ my-project/
280
+ ├── apps/
281
+ │ └── api/
282
+ │ ├── src/
283
+ │ │ ├── config/
284
+ │ │ └── endpoints/
285
+ │ ├── gkm.config.ts
286
+ │ ├── package.json
287
+ │ └── tsconfig.json
288
+ ├── packages/
289
+ │ └── models/ # Shared types/models
290
+ │ ├── src/
291
+ │ │ └── index.ts
292
+ │ ├── package.json
293
+ │ └── tsconfig.json
294
+ ├── package.json # Root workspace config
295
+ ├── pnpm-workspace.yaml
296
+ ├── tsconfig.json # Base TypeScript config
297
+ └── turbo.json # Turborepo config
298
+ ```
299
+
181
300
  ### `gkm build`
182
301
 
183
302
  Generate handlers from your endpoints.
@@ -1 +1 @@
1
- {"version":3,"file":"config-Bq72aj8e.mjs","names":["config: GkmConfig","configString: string","defaultAlias: string","cwd: string"],"sources":["../src/config.ts"],"sourcesContent":["import { existsSync } from 'fs';\nimport { join } from 'path';\nimport type { GkmConfig } from './types.ts';\n\n/**\n * Define GKM configuration with full TypeScript support.\n * This is an identity function that provides type safety and autocomplete.\n *\n * @example\n * ```ts\n * // gkm.config.ts\n * import { defineConfig } from '@geekmidas/cli/config';\n *\n * export default defineConfig({\n * routes: './src/endpoints/**\\/*.ts',\n * envParser: './src/config/env',\n * logger: './src/config/logger',\n * telescope: true,\n * });\n * ```\n */\nexport function defineConfig(config: GkmConfig): GkmConfig {\n return config;\n}\n\nexport interface ParsedModuleConfig {\n path: string;\n importPattern: string;\n}\n\n/**\n * Parse a module config string into path and import pattern.\n *\n * @param configString - Config string in format \"./path/to/module\" or \"./path/to/module#exportName\"\n * @param defaultAlias - The default alias name to use if no export name specified\n * @returns Object with path and import pattern\n *\n * @example\n * parseModuleConfig('./src/config/env', 'envParser')\n * // { path: './src/config/env', importPattern: 'envParser' }\n *\n * parseModuleConfig('./src/config/env#envParser', 'envParser')\n * // { path: './src/config/env', importPattern: '{ envParser }' }\n *\n * parseModuleConfig('./src/config/env#myEnv', 'envParser')\n * // { path: './src/config/env', importPattern: '{ myEnv as envParser }' }\n */\nexport function parseModuleConfig(\n configString: string,\n defaultAlias: string,\n): ParsedModuleConfig {\n const [path, exportName] = configString.split('#');\n const importPattern = !exportName\n ? defaultAlias\n : exportName === defaultAlias\n ? `{ ${defaultAlias} }`\n : `{ ${exportName} as ${defaultAlias} }`;\n\n return { path, importPattern };\n}\n\nexport async function loadConfig(\n cwd: string = process.cwd(),\n): Promise<GkmConfig> {\n const files = ['gkm.config.json', 'gkm.config.ts', 'gkm.config.js'];\n let configPath = '';\n\n for (const file of files) {\n const path = join(cwd, file);\n if (existsSync(path)) {\n configPath = path;\n break;\n }\n }\n\n if (!configPath) {\n throw new Error(\n 'Configuration file not found. Please create gkm.config.json, gkm.config.ts, or gkm.config.js in the project root.',\n );\n }\n\n try {\n const config = await import(configPath);\n return config.default;\n } catch (error) {\n throw new Error(\n `Failed to load gkm.config.json: ${(error as Error).message}`,\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAqBA,SAAgB,aAAaA,QAA8B;AACzD,QAAO;AACR;;;;;;;;;;;;;;;;;;AAwBD,SAAgB,kBACdC,cACAC,cACoB;CACpB,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,MAAM,IAAI;CAClD,MAAM,iBAAiB,aACnB,eACA,eAAe,gBACZ,IAAI,aAAa,OACjB,IAAI,WAAW,MAAM,aAAa;AAEzC,QAAO;EAAE;EAAM;CAAe;AAC/B;AAED,eAAsB,WACpBC,MAAc,QAAQ,KAAK,EACP;CACpB,MAAM,QAAQ;EAAC;EAAmB;EAAiB;CAAgB;CACnE,IAAI,aAAa;AAEjB,MAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,OAAO,KAAK,KAAK,KAAK;AAC5B,MAAI,WAAW,KAAK,EAAE;AACpB,gBAAa;AACb;EACD;CACF;AAED,MAAK,WACH,OAAM,IAAI,MACR;AAIJ,KAAI;EACF,MAAM,SAAS,MAAM,OAAO;AAC5B,SAAO,OAAO;CACf,SAAQ,OAAO;AACd,QAAM,IAAI,OACP,kCAAmC,MAAgB,QAAQ;CAE/D;AACF"}
1
+ {"version":3,"file":"config-Bq72aj8e.mjs","names":["config: GkmConfig","configString: string","defaultAlias: string","cwd: string"],"sources":["../src/config.ts"],"sourcesContent":["import { existsSync } from 'fs';\nimport { join } from 'path';\nimport type { GkmConfig } from './types.ts';\n\nexport type { GkmConfig } from './types.ts';\n/**\n * Define GKM configuration with full TypeScript support.\n * This is an identity function that provides type safety and autocomplete.\n *\n * @example\n * ```ts\n * // gkm.config.ts\n * import { defineConfig } from '@geekmidas/cli/config';\n *\n * export default defineConfig({\n * routes: './src/endpoints/**\\/*.ts',\n * envParser: './src/config/env',\n * logger: './src/config/logger',\n * telescope: true,\n * });\n * ```\n */\nexport function defineConfig(config: GkmConfig): GkmConfig {\n return config;\n}\n\nexport interface ParsedModuleConfig {\n path: string;\n importPattern: string;\n}\n\n/**\n * Parse a module config string into path and import pattern.\n *\n * @param configString - Config string in format \"./path/to/module\" or \"./path/to/module#exportName\"\n * @param defaultAlias - The default alias name to use if no export name specified\n * @returns Object with path and import pattern\n *\n * @example\n * parseModuleConfig('./src/config/env', 'envParser')\n * // { path: './src/config/env', importPattern: 'envParser' }\n *\n * parseModuleConfig('./src/config/env#envParser', 'envParser')\n * // { path: './src/config/env', importPattern: '{ envParser }' }\n *\n * parseModuleConfig('./src/config/env#myEnv', 'envParser')\n * // { path: './src/config/env', importPattern: '{ myEnv as envParser }' }\n */\nexport function parseModuleConfig(\n configString: string,\n defaultAlias: string,\n): ParsedModuleConfig {\n const [path, exportName] = configString.split('#');\n const importPattern = !exportName\n ? defaultAlias\n : exportName === defaultAlias\n ? `{ ${defaultAlias} }`\n : `{ ${exportName} as ${defaultAlias} }`;\n\n return { path, importPattern };\n}\n\nexport async function loadConfig(\n cwd: string = process.cwd(),\n): Promise<GkmConfig> {\n const files = ['gkm.config.json', 'gkm.config.ts', 'gkm.config.js'];\n let configPath = '';\n\n for (const file of files) {\n const path = join(cwd, file);\n if (existsSync(path)) {\n configPath = path;\n break;\n }\n }\n\n if (!configPath) {\n throw new Error(\n 'Configuration file not found. Please create gkm.config.json, gkm.config.ts, or gkm.config.js in the project root.',\n );\n }\n\n try {\n const config = await import(configPath);\n return config.default;\n } catch (error) {\n throw new Error(\n `Failed to load gkm.config.json: ${(error as Error).message}`,\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAsBA,SAAgB,aAAaA,QAA8B;AACzD,QAAO;AACR;;;;;;;;;;;;;;;;;;AAwBD,SAAgB,kBACdC,cACAC,cACoB;CACpB,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,MAAM,IAAI;CAClD,MAAM,iBAAiB,aACnB,eACA,eAAe,gBACZ,IAAI,aAAa,OACjB,IAAI,WAAW,MAAM,aAAa;AAEzC,QAAO;EAAE;EAAM;CAAe;AAC/B;AAED,eAAsB,WACpBC,MAAc,QAAQ,KAAK,EACP;CACpB,MAAM,QAAQ;EAAC;EAAmB;EAAiB;CAAgB;CACnE,IAAI,aAAa;AAEjB,MAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,OAAO,KAAK,KAAK,KAAK;AAC5B,MAAI,WAAW,KAAK,EAAE;AACpB,gBAAa;AACb;EACD;CACF;AAED,MAAK,WACH,OAAM,IAAI,MACR;AAIJ,KAAI;EACF,MAAM,SAAS,MAAM,OAAO;AAC5B,SAAO,OAAO;CACf,SAAQ,OAAO;AACd,QAAM,IAAI,OACP,kCAAmC,MAAgB,QAAQ;CAE/D;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"config-CFls09Ey.cjs","names":["config: GkmConfig","configString: string","defaultAlias: string","path","cwd: string"],"sources":["../src/config.ts"],"sourcesContent":["import { existsSync } from 'fs';\nimport { join } from 'path';\nimport type { GkmConfig } from './types.ts';\n\n/**\n * Define GKM configuration with full TypeScript support.\n * This is an identity function that provides type safety and autocomplete.\n *\n * @example\n * ```ts\n * // gkm.config.ts\n * import { defineConfig } from '@geekmidas/cli/config';\n *\n * export default defineConfig({\n * routes: './src/endpoints/**\\/*.ts',\n * envParser: './src/config/env',\n * logger: './src/config/logger',\n * telescope: true,\n * });\n * ```\n */\nexport function defineConfig(config: GkmConfig): GkmConfig {\n return config;\n}\n\nexport interface ParsedModuleConfig {\n path: string;\n importPattern: string;\n}\n\n/**\n * Parse a module config string into path and import pattern.\n *\n * @param configString - Config string in format \"./path/to/module\" or \"./path/to/module#exportName\"\n * @param defaultAlias - The default alias name to use if no export name specified\n * @returns Object with path and import pattern\n *\n * @example\n * parseModuleConfig('./src/config/env', 'envParser')\n * // { path: './src/config/env', importPattern: 'envParser' }\n *\n * parseModuleConfig('./src/config/env#envParser', 'envParser')\n * // { path: './src/config/env', importPattern: '{ envParser }' }\n *\n * parseModuleConfig('./src/config/env#myEnv', 'envParser')\n * // { path: './src/config/env', importPattern: '{ myEnv as envParser }' }\n */\nexport function parseModuleConfig(\n configString: string,\n defaultAlias: string,\n): ParsedModuleConfig {\n const [path, exportName] = configString.split('#');\n const importPattern = !exportName\n ? defaultAlias\n : exportName === defaultAlias\n ? `{ ${defaultAlias} }`\n : `{ ${exportName} as ${defaultAlias} }`;\n\n return { path, importPattern };\n}\n\nexport async function loadConfig(\n cwd: string = process.cwd(),\n): Promise<GkmConfig> {\n const files = ['gkm.config.json', 'gkm.config.ts', 'gkm.config.js'];\n let configPath = '';\n\n for (const file of files) {\n const path = join(cwd, file);\n if (existsSync(path)) {\n configPath = path;\n break;\n }\n }\n\n if (!configPath) {\n throw new Error(\n 'Configuration file not found. Please create gkm.config.json, gkm.config.ts, or gkm.config.js in the project root.',\n );\n }\n\n try {\n const config = await import(configPath);\n return config.default;\n } catch (error) {\n throw new Error(\n `Failed to load gkm.config.json: ${(error as Error).message}`,\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAqBA,SAAgB,aAAaA,QAA8B;AACzD,QAAO;AACR;;;;;;;;;;;;;;;;;;AAwBD,SAAgB,kBACdC,cACAC,cACoB;CACpB,MAAM,CAACC,QAAM,WAAW,GAAG,aAAa,MAAM,IAAI;CAClD,MAAM,iBAAiB,aACnB,eACA,eAAe,gBACZ,IAAI,aAAa,OACjB,IAAI,WAAW,MAAM,aAAa;AAEzC,QAAO;EAAE;EAAM;CAAe;AAC/B;AAED,eAAsB,WACpBC,MAAc,QAAQ,KAAK,EACP;CACpB,MAAM,QAAQ;EAAC;EAAmB;EAAiB;CAAgB;CACnE,IAAI,aAAa;AAEjB,MAAK,MAAM,QAAQ,OAAO;EACxB,MAAMD,SAAO,eAAK,KAAK,KAAK;AAC5B,MAAI,mBAAWA,OAAK,EAAE;AACpB,gBAAaA;AACb;EACD;CACF;AAED,MAAK,WACH,OAAM,IAAI,MACR;AAIJ,KAAI;EACF,MAAM,SAAS,MAAM,OAAO;AAC5B,SAAO,OAAO;CACf,SAAQ,OAAO;AACd,QAAM,IAAI,OACP,kCAAmC,MAAgB,QAAQ;CAE/D;AACF"}
1
+ {"version":3,"file":"config-CFls09Ey.cjs","names":["config: GkmConfig","configString: string","defaultAlias: string","path","cwd: string"],"sources":["../src/config.ts"],"sourcesContent":["import { existsSync } from 'fs';\nimport { join } from 'path';\nimport type { GkmConfig } from './types.ts';\n\nexport type { GkmConfig } from './types.ts';\n/**\n * Define GKM configuration with full TypeScript support.\n * This is an identity function that provides type safety and autocomplete.\n *\n * @example\n * ```ts\n * // gkm.config.ts\n * import { defineConfig } from '@geekmidas/cli/config';\n *\n * export default defineConfig({\n * routes: './src/endpoints/**\\/*.ts',\n * envParser: './src/config/env',\n * logger: './src/config/logger',\n * telescope: true,\n * });\n * ```\n */\nexport function defineConfig(config: GkmConfig): GkmConfig {\n return config;\n}\n\nexport interface ParsedModuleConfig {\n path: string;\n importPattern: string;\n}\n\n/**\n * Parse a module config string into path and import pattern.\n *\n * @param configString - Config string in format \"./path/to/module\" or \"./path/to/module#exportName\"\n * @param defaultAlias - The default alias name to use if no export name specified\n * @returns Object with path and import pattern\n *\n * @example\n * parseModuleConfig('./src/config/env', 'envParser')\n * // { path: './src/config/env', importPattern: 'envParser' }\n *\n * parseModuleConfig('./src/config/env#envParser', 'envParser')\n * // { path: './src/config/env', importPattern: '{ envParser }' }\n *\n * parseModuleConfig('./src/config/env#myEnv', 'envParser')\n * // { path: './src/config/env', importPattern: '{ myEnv as envParser }' }\n */\nexport function parseModuleConfig(\n configString: string,\n defaultAlias: string,\n): ParsedModuleConfig {\n const [path, exportName] = configString.split('#');\n const importPattern = !exportName\n ? defaultAlias\n : exportName === defaultAlias\n ? `{ ${defaultAlias} }`\n : `{ ${exportName} as ${defaultAlias} }`;\n\n return { path, importPattern };\n}\n\nexport async function loadConfig(\n cwd: string = process.cwd(),\n): Promise<GkmConfig> {\n const files = ['gkm.config.json', 'gkm.config.ts', 'gkm.config.js'];\n let configPath = '';\n\n for (const file of files) {\n const path = join(cwd, file);\n if (existsSync(path)) {\n configPath = path;\n break;\n }\n }\n\n if (!configPath) {\n throw new Error(\n 'Configuration file not found. Please create gkm.config.json, gkm.config.ts, or gkm.config.js in the project root.',\n );\n }\n\n try {\n const config = await import(configPath);\n return config.default;\n } catch (error) {\n throw new Error(\n `Failed to load gkm.config.json: ${(error as Error).message}`,\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAsBA,SAAgB,aAAaA,QAA8B;AACzD,QAAO;AACR;;;;;;;;;;;;;;;;;;AAwBD,SAAgB,kBACdC,cACAC,cACoB;CACpB,MAAM,CAACC,QAAM,WAAW,GAAG,aAAa,MAAM,IAAI;CAClD,MAAM,iBAAiB,aACnB,eACA,eAAe,gBACZ,IAAI,aAAa,OACjB,IAAI,WAAW,MAAM,aAAa;AAEzC,QAAO;EAAE;EAAM;CAAe;AAC/B;AAED,eAAsB,WACpBC,MAAc,QAAQ,KAAK,EACP;CACpB,MAAM,QAAQ;EAAC;EAAmB;EAAiB;CAAgB;CACnE,IAAI,aAAa;AAEjB,MAAK,MAAM,QAAQ,OAAO;EACxB,MAAMD,SAAO,eAAK,KAAK,KAAK;AAC5B,MAAI,mBAAWA,OAAK,EAAE;AACpB,gBAAaA;AACb;EACD;CACF;AAED,MAAK,WACH,OAAM,IAAI,MACR;AAIJ,KAAI;EACF,MAAM,SAAS,MAAM,OAAO;AAC5B,SAAO,OAAO;CACf,SAAQ,OAAO;AACd,QAAM,IAAI,OACP,kCAAmC,MAAgB,QAAQ;CAE/D;AACF"}
package/dist/config.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { GkmConfig } from "./types-KmjzMgu8.cjs";
1
+ import { GkmConfig } from "./types-C0hwnSjm.cjs";
2
2
 
3
3
  //#region src/config.d.ts
4
4
 
@@ -44,5 +44,5 @@ interface ParsedModuleConfig {
44
44
  declare function parseModuleConfig(configString: string, defaultAlias: string): ParsedModuleConfig;
45
45
  declare function loadConfig(cwd?: string): Promise<GkmConfig>;
46
46
  //#endregion
47
- export { ParsedModuleConfig, defineConfig, loadConfig, parseModuleConfig };
47
+ export { GkmConfig, ParsedModuleConfig, defineConfig, loadConfig, parseModuleConfig };
48
48
  //# sourceMappingURL=config.d.cts.map
package/dist/config.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { GkmConfig } from "./types-Bi7VzDUZ.mjs";
1
+ import { GkmConfig } from "./types-B3TXoj7v.mjs";
2
2
 
3
3
  //#region src/config.d.ts
4
4
 
@@ -44,5 +44,5 @@ interface ParsedModuleConfig {
44
44
  declare function parseModuleConfig(configString: string, defaultAlias: string): ParsedModuleConfig;
45
45
  declare function loadConfig(cwd?: string): Promise<GkmConfig>;
46
46
  //#endregion
47
- export { ParsedModuleConfig, defineConfig, loadConfig, parseModuleConfig };
47
+ export { GkmConfig, ParsedModuleConfig, defineConfig, loadConfig, parseModuleConfig };
48
48
  //# sourceMappingURL=config.d.mts.map