@geekmidas/cli 0.4.0 → 0.5.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.
- package/dist/CronGenerator-BPTqNYOR.d.cts +14 -0
- package/dist/{CronGenerator-Bh26MaNA.mjs → CronGenerator-CCRYptuT.mjs} +2 -2
- package/dist/{CronGenerator-Bh26MaNA.mjs.map → CronGenerator-CCRYptuT.mjs.map} +1 -1
- package/dist/{CronGenerator-C6MF8rlG.cjs → CronGenerator-D4TWXQbh.cjs} +2 -2
- package/dist/{CronGenerator-C6MF8rlG.cjs.map → CronGenerator-D4TWXQbh.cjs.map} +1 -1
- package/dist/CronGenerator-YAj59JUd.d.mts +14 -0
- package/dist/EndpointGenerator-ChAD1INz.d.cts +19 -0
- package/dist/EndpointGenerator-Cj3O1U8-.d.mts +19 -0
- package/dist/{EndpointGenerator-CzDhG7Or.mjs → EndpointGenerator-DGivkPLT.mjs} +22 -6
- package/dist/EndpointGenerator-DGivkPLT.mjs.map +1 -0
- package/dist/{EndpointGenerator-BxNCkus4.cjs → EndpointGenerator-npWEDoK2.cjs} +22 -6
- package/dist/EndpointGenerator-npWEDoK2.cjs.map +1 -0
- package/dist/FunctionGenerator-429-9NER.d.cts +14 -0
- package/dist/FunctionGenerator-BQ4ehoID.d.mts +14 -0
- package/dist/{FunctionGenerator-BNE_GC7N.mjs → FunctionGenerator-CVk0h8tO.mjs} +2 -2
- package/dist/{FunctionGenerator-BNE_GC7N.mjs.map → FunctionGenerator-CVk0h8tO.mjs.map} +1 -1
- package/dist/{FunctionGenerator-FgZUTd8L.cjs → FunctionGenerator-DYTnyr4c.cjs} +2 -2
- package/dist/{FunctionGenerator-FgZUTd8L.cjs.map → FunctionGenerator-DYTnyr4c.cjs.map} +1 -1
- package/dist/Generator-BjHK_qce.d.mts +27 -0
- package/dist/{Generator-UanJW0_V.mjs → Generator-CDt4pB3W.mjs} +1 -1
- package/dist/{Generator-UanJW0_V.mjs.map → Generator-CDt4pB3W.mjs.map} +1 -1
- package/dist/{Generator-CDoEXCDg.cjs → Generator-CLVplqm2.cjs} +1 -1
- package/dist/{Generator-CDoEXCDg.cjs.map → Generator-CLVplqm2.cjs.map} +1 -1
- package/dist/Generator-DxQMCQp7.d.cts +27 -0
- package/dist/{OpenApiTsGenerator-NBNEoaeO.cjs → OpenApiTsGenerator-Be-sKGTT.cjs} +1 -1
- package/dist/{OpenApiTsGenerator-NBNEoaeO.cjs.map → OpenApiTsGenerator-Be-sKGTT.cjs.map} +1 -1
- package/dist/{OpenApiTsGenerator-q3aWNkuM.mjs → OpenApiTsGenerator-C4mHHaku.mjs} +1 -1
- package/dist/{OpenApiTsGenerator-q3aWNkuM.mjs.map → OpenApiTsGenerator-C4mHHaku.mjs.map} +1 -1
- package/dist/SubscriberGenerator-7uX42xyG.d.mts +15 -0
- package/dist/{SubscriberGenerator-Dnlj_1FK.mjs → SubscriberGenerator-DABaJXML.mjs} +2 -2
- package/dist/{SubscriberGenerator-Dnlj_1FK.mjs.map → SubscriberGenerator-DABaJXML.mjs.map} +1 -1
- package/dist/{SubscriberGenerator-Bd-a7aiw.cjs → SubscriberGenerator-D_zpNGFr.cjs} +2 -2
- package/dist/{SubscriberGenerator-Bd-a7aiw.cjs.map → SubscriberGenerator-D_zpNGFr.cjs.map} +1 -1
- package/dist/SubscriberGenerator-Dtb3HS4i.d.cts +15 -0
- package/dist/api-B3SCEHPf.cjs +190 -0
- package/dist/api-B3SCEHPf.cjs.map +1 -0
- package/dist/api-BKIN0s0S.mjs +184 -0
- package/dist/api-BKIN0s0S.mjs.map +1 -0
- package/dist/build/index.cjs +11 -10
- package/dist/build/index.d.cts +7 -0
- package/dist/build/index.d.mts +7 -0
- package/dist/build/index.mjs +11 -10
- package/dist/build/manifests.cjs +1 -1
- package/dist/build/manifests.d.cts +13 -0
- package/dist/build/manifests.d.mts +13 -0
- package/dist/build/manifests.mjs +1 -1
- package/dist/build/providerResolver.cjs +1 -1
- package/dist/build/providerResolver.d.cts +23 -0
- package/dist/build/providerResolver.d.mts +23 -0
- package/dist/build/providerResolver.mjs +1 -1
- package/dist/build/types.d.cts +3 -0
- package/dist/build/types.d.mts +3 -0
- package/dist/{build-DyDgu_D1.mjs → build-B8C_qHir.mjs} +15 -13
- package/dist/build-B8C_qHir.mjs.map +1 -0
- package/dist/{build-CWtHnJMQ.cjs → build-D0Wr49bf.cjs} +15 -13
- package/dist/build-D0Wr49bf.cjs.map +1 -0
- package/dist/config-Ba-Gbpbc.d.cts +11 -0
- package/dist/config-Bq72aj8e.mjs +75 -0
- package/dist/config-Bq72aj8e.mjs.map +1 -0
- package/dist/config-CFls09Ey.cjs +93 -0
- package/dist/config-CFls09Ey.cjs.map +1 -0
- package/dist/config-CLEDqKO3.cjs +157 -0
- package/dist/config-CLEDqKO3.cjs.map +1 -0
- package/dist/config-DBsmMDhf.d.mts +11 -0
- package/dist/config-Dp8RonV_.mjs +151 -0
- package/dist/config-Dp8RonV_.mjs.map +1 -0
- package/dist/config.cjs +4 -2
- package/dist/config.d.cts +48 -0
- package/dist/config.d.mts +48 -0
- package/dist/config.mjs +2 -2
- package/dist/dev/index.cjs +10 -9
- package/dist/dev/index.d.cts +36 -0
- package/dist/dev/index.d.mts +36 -0
- package/dist/dev/index.mjs +10 -10
- package/dist/{dev-CpA8AQPX.mjs → dev-B734w3L1.mjs} +93 -49
- package/dist/dev-B734w3L1.mjs.map +1 -0
- package/dist/{dev-CgDYC4o8.cjs → dev-DHqYn8k4.cjs} +71 -21
- package/dist/dev-DHqYn8k4.cjs.map +1 -0
- package/dist/docker-5d8Yh5_X.cjs +119 -0
- package/dist/docker-5d8Yh5_X.cjs.map +1 -0
- package/dist/docker-DlUqdFle.mjs +113 -0
- package/dist/docker-DlUqdFle.mjs.map +1 -0
- package/dist/env-B-OKjgI4.cjs +144 -0
- package/dist/env-B-OKjgI4.cjs.map +1 -0
- package/dist/env-HfuJRlg5.d.cts +11 -0
- package/dist/env-nd-iQPYM.d.mts +11 -0
- package/dist/env-tv1HlZlw.mjs +138 -0
- package/dist/env-tv1HlZlw.mjs.map +1 -0
- package/dist/generators/CronGenerator.cjs +2 -2
- package/dist/generators/CronGenerator.d.cts +5 -0
- package/dist/generators/CronGenerator.d.mts +5 -0
- package/dist/generators/CronGenerator.mjs +2 -2
- package/dist/generators/EndpointGenerator.cjs +2 -2
- package/dist/generators/EndpointGenerator.d.cts +5 -0
- package/dist/generators/EndpointGenerator.d.mts +5 -0
- package/dist/generators/EndpointGenerator.mjs +2 -2
- package/dist/generators/FunctionGenerator.cjs +2 -2
- package/dist/generators/FunctionGenerator.d.cts +5 -0
- package/dist/generators/FunctionGenerator.d.mts +5 -0
- package/dist/generators/FunctionGenerator.mjs +2 -2
- package/dist/generators/Generator.cjs +1 -1
- package/dist/generators/Generator.d.cts +4 -0
- package/dist/generators/Generator.d.mts +4 -0
- package/dist/generators/Generator.mjs +1 -1
- package/dist/generators/OpenApiTsGenerator.cjs +1 -1
- package/dist/generators/OpenApiTsGenerator.d.cts +44 -0
- package/dist/generators/OpenApiTsGenerator.d.mts +44 -0
- package/dist/generators/OpenApiTsGenerator.mjs +1 -1
- package/dist/generators/SubscriberGenerator.cjs +2 -2
- package/dist/generators/SubscriberGenerator.d.cts +5 -0
- package/dist/generators/SubscriberGenerator.d.mts +5 -0
- package/dist/generators/SubscriberGenerator.mjs +2 -2
- package/dist/generators/index.cjs +6 -6
- package/dist/generators/index.d.cts +8 -0
- package/dist/generators/index.d.mts +8 -0
- package/dist/generators/index.mjs +6 -6
- package/dist/index-C523No_B.d.mts +64 -0
- package/dist/index-DrzN4xkQ.d.cts +64 -0
- package/dist/index.cjs +48 -16
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.mts +1 -0
- package/dist/index.mjs +48 -16
- package/dist/index.mjs.map +1 -1
- package/dist/init/generators/config.cjs +3 -0
- package/dist/init/generators/config.d.cts +3 -0
- package/dist/init/generators/config.d.mts +3 -0
- package/dist/init/generators/config.mjs +3 -0
- package/dist/init/generators/docker.cjs +3 -0
- package/dist/init/generators/docker.d.cts +11 -0
- package/dist/init/generators/docker.d.mts +11 -0
- package/dist/init/generators/docker.mjs +3 -0
- package/dist/init/generators/env.cjs +3 -0
- package/dist/init/generators/env.d.cts +3 -0
- package/dist/init/generators/env.d.mts +3 -0
- package/dist/init/generators/env.mjs +3 -0
- package/dist/init/generators/index.cjs +9 -0
- package/dist/init/generators/index.d.cts +6 -0
- package/dist/init/generators/index.d.mts +6 -0
- package/dist/init/generators/index.mjs +6 -0
- package/dist/init/generators/models.cjs +3 -0
- package/dist/init/generators/models.d.cts +11 -0
- package/dist/init/generators/models.d.mts +11 -0
- package/dist/init/generators/models.mjs +3 -0
- package/dist/init/generators/monorepo.cjs +3 -0
- package/dist/init/generators/monorepo.d.cts +11 -0
- package/dist/init/generators/monorepo.d.mts +11 -0
- package/dist/init/generators/monorepo.mjs +3 -0
- package/dist/init/generators/package.cjs +3 -0
- package/dist/init/generators/package.d.cts +3 -0
- package/dist/init/generators/package.d.mts +3 -0
- package/dist/init/generators/package.mjs +3 -0
- package/dist/init/generators/source.cjs +3 -0
- package/dist/init/generators/source.d.cts +3 -0
- package/dist/init/generators/source.d.mts +3 -0
- package/dist/init/generators/source.mjs +3 -0
- package/dist/init/index.cjs +16 -0
- package/dist/init/index.d.cts +17 -0
- package/dist/init/index.d.mts +17 -0
- package/dist/init/index.mjs +16 -0
- package/dist/init/templates/api.cjs +3 -0
- package/dist/init/templates/api.d.cts +7 -0
- package/dist/init/templates/api.d.mts +7 -0
- package/dist/init/templates/api.mjs +3 -0
- package/dist/init/templates/index.cjs +10 -0
- package/dist/init/templates/index.d.cts +2 -0
- package/dist/init/templates/index.d.mts +2 -0
- package/dist/init/templates/index.mjs +7 -0
- package/dist/init/templates/minimal.cjs +3 -0
- package/dist/init/templates/minimal.d.cts +7 -0
- package/dist/init/templates/minimal.d.mts +7 -0
- package/dist/init/templates/minimal.mjs +3 -0
- package/dist/init/templates/serverless.cjs +3 -0
- package/dist/init/templates/serverless.d.cts +7 -0
- package/dist/init/templates/serverless.d.mts +7 -0
- package/dist/init/templates/serverless.mjs +3 -0
- package/dist/init/templates/worker.cjs +3 -0
- package/dist/init/templates/worker.d.cts +7 -0
- package/dist/init/templates/worker.d.mts +7 -0
- package/dist/init/templates/worker.mjs +3 -0
- package/dist/init/utils.cjs +7 -0
- package/dist/init/utils.d.cts +25 -0
- package/dist/init/utils.d.mts +25 -0
- package/dist/init/utils.mjs +3 -0
- package/dist/init-CtOnZn3G.mjs +145 -0
- package/dist/init-CtOnZn3G.mjs.map +1 -0
- package/dist/init-qLFsWR-R.cjs +151 -0
- package/dist/init-qLFsWR-R.cjs.map +1 -0
- package/dist/{manifests-C2eMoMUm.mjs → manifests-DIA_2QYd.mjs} +1 -1
- package/dist/{manifests-C2eMoMUm.mjs.map → manifests-DIA_2QYd.mjs.map} +1 -1
- package/dist/{manifests-CK1VV_pM.cjs → manifests-VJ9-2JpW.cjs} +1 -1
- package/dist/{manifests-CK1VV_pM.cjs.map → manifests-VJ9-2JpW.cjs.map} +1 -1
- package/dist/minimal-Bdhhpp7v.cjs +93 -0
- package/dist/minimal-Bdhhpp7v.cjs.map +1 -0
- package/dist/minimal-C4GsE45s.mjs +87 -0
- package/dist/minimal-C4GsE45s.mjs.map +1 -0
- package/dist/models-DyNwdOcz.cjs +121 -0
- package/dist/models-DyNwdOcz.cjs.map +1 -0
- package/dist/models-cvNg6Oea.mjs +115 -0
- package/dist/models-cvNg6Oea.mjs.map +1 -0
- package/dist/monorepo-Cknwzj5C.mjs +184 -0
- package/dist/monorepo-Cknwzj5C.mjs.map +1 -0
- package/dist/monorepo-sEK8gW59.cjs +190 -0
- package/dist/monorepo-sEK8gW59.cjs.map +1 -0
- package/dist/{openapi-DhK4b0lB.cjs → openapi-BQWPWyNB.cjs} +4 -4
- package/dist/{openapi-DhK4b0lB.cjs.map → openapi-BQWPWyNB.cjs.map} +1 -1
- package/dist/{openapi-DRTRGhTt.mjs → openapi-DBX8cJJ8.mjs} +4 -4
- package/dist/{openapi-DRTRGhTt.mjs.map → openapi-DBX8cJJ8.mjs.map} +1 -1
- package/dist/{openapi-react-query-D9Z7lh0p.cjs → openapi-react-query-DxHjXQvg.cjs} +1 -1
- package/dist/{openapi-react-query-D9Z7lh0p.cjs.map → openapi-react-query-DxHjXQvg.cjs.map} +1 -1
- package/dist/{openapi-react-query-MEBlYIM1.mjs → openapi-react-query-o7Mp1Jd5.mjs} +1 -1
- package/dist/{openapi-react-query-MEBlYIM1.mjs.map → openapi-react-query-o7Mp1Jd5.mjs.map} +1 -1
- package/dist/openapi-react-query.cjs +1 -1
- package/dist/openapi-react-query.d.cts +11 -0
- package/dist/openapi-react-query.d.mts +11 -0
- package/dist/openapi-react-query.mjs +1 -1
- package/dist/openapi.cjs +5 -5
- package/dist/openapi.d.cts +11 -0
- package/dist/openapi.d.mts +11 -0
- package/dist/openapi.mjs +5 -5
- package/dist/package-C7WhWU8m.d.mts +11 -0
- package/dist/package-CIfmeuSW.mjs +51 -0
- package/dist/package-CIfmeuSW.mjs.map +1 -0
- package/dist/package-DvWEMz6z.d.cts +11 -0
- package/dist/package-PP-o1nvq.cjs +57 -0
- package/dist/package-PP-o1nvq.cjs.map +1 -0
- package/dist/{providerResolver-B_TjNF0_.mjs → providerResolver-DEVKngbC.mjs} +1 -1
- package/dist/{providerResolver-B_TjNF0_.mjs.map → providerResolver-DEVKngbC.mjs.map} +1 -1
- package/dist/{providerResolver-DgvzNfP4.cjs → providerResolver-DOTbN9jo.cjs} +1 -1
- package/dist/{providerResolver-DgvzNfP4.cjs.map → providerResolver-DOTbN9jo.cjs.map} +1 -1
- package/dist/serverless-DkHBF2vC.mjs +108 -0
- package/dist/serverless-DkHBF2vC.mjs.map +1 -0
- package/dist/serverless-Yav3GRVz.cjs +114 -0
- package/dist/serverless-Yav3GRVz.cjs.map +1 -0
- package/dist/source-D6v2BnKT.d.mts +11 -0
- package/dist/source-D8fK9qRo.d.cts +11 -0
- package/dist/source-DT5Xhiob.cjs +17 -0
- package/dist/source-DT5Xhiob.cjs.map +1 -0
- package/dist/source-DnaH_MLA.mjs +11 -0
- package/dist/source-DnaH_MLA.mjs.map +1 -0
- package/dist/templates-CBFUwpBy.mjs +64 -0
- package/dist/templates-CBFUwpBy.mjs.map +1 -0
- package/dist/templates-DM_rtYYW.cjs +87 -0
- package/dist/templates-DM_rtYYW.cjs.map +1 -0
- package/dist/types-C4KITv-y.d.mts +51 -0
- package/dist/types-Cxl8-uwV.d.mts +129 -0
- package/dist/types-DB99_qIy.d.cts +129 -0
- package/dist/types-DLFN49M3.d.cts +51 -0
- package/dist/types.d.cts +2 -0
- package/dist/types.d.mts +2 -0
- package/dist/utils-BX3F4fT8.cjs +99 -0
- package/dist/utils-BX3F4fT8.cjs.map +1 -0
- package/dist/utils-C31-SWHP.mjs +69 -0
- package/dist/utils-C31-SWHP.mjs.map +1 -0
- package/dist/worker--8O5a3Hv.cjs +150 -0
- package/dist/worker--8O5a3Hv.cjs.map +1 -0
- package/dist/worker-Jme7uOOJ.mjs +144 -0
- package/dist/worker-Jme7uOOJ.mjs.map +1 -0
- package/package.json +11 -3
- package/src/__tests__/loadEnvFiles.spec.ts +131 -0
- package/src/build/index.ts +14 -16
- package/src/build/types.ts +5 -0
- package/src/config.ts +57 -0
- package/src/dev/index.ts +77 -17
- package/src/generators/EndpointGenerator.ts +37 -8
- package/src/index.ts +26 -0
- package/src/init/__tests__/generators.spec.ts +366 -0
- package/src/init/__tests__/init.spec.ts +341 -0
- package/src/init/__tests__/utils.spec.ts +104 -0
- package/src/init/generators/config.ts +192 -0
- package/src/init/generators/docker.ts +134 -0
- package/src/init/generators/env.ts +182 -0
- package/src/init/generators/index.ts +4 -0
- package/src/init/generators/models.ts +129 -0
- package/src/init/generators/monorepo.ts +211 -0
- package/src/init/generators/package.ts +81 -0
- package/src/init/generators/source.ts +15 -0
- package/src/init/index.ts +206 -0
- package/src/init/templates/api.ts +218 -0
- package/src/init/templates/index.ts +108 -0
- package/src/init/templates/minimal.ts +102 -0
- package/src/init/templates/serverless.ts +129 -0
- package/src/init/templates/worker.ts +169 -0
- package/src/init/utils.ts +98 -0
- package/src/types.ts +22 -2
- package/tsdown.config.ts +1 -1
- package/dist/EndpointGenerator-BxNCkus4.cjs.map +0 -1
- package/dist/EndpointGenerator-CzDhG7Or.mjs.map +0 -1
- package/dist/build-CWtHnJMQ.cjs.map +0 -1
- package/dist/build-DyDgu_D1.mjs.map +0 -1
- package/dist/config-AFmFKmU0.mjs +0 -30
- package/dist/config-AFmFKmU0.mjs.map +0 -1
- package/dist/config-BVIJpAsa.cjs +0 -36
- package/dist/config-BVIJpAsa.cjs.map +0 -1
- package/dist/dev-CgDYC4o8.cjs.map +0 -1
- package/dist/dev-CpA8AQPX.mjs.map +0 -1
- /package/dist/{generators-CEKtVh81.cjs → generators-3IemvCLk.cjs} +0 -0
- /package/dist/{generators-CsLujGXs.mjs → generators-FNpdfN6J.mjs} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifests-
|
|
1
|
+
{"version":3,"file":"manifests-VJ9-2JpW.cjs","names":["outputDir: string","routes: RouteInfo[]","functions: FunctionInfo[]","crons: CronInfo[]","subscribers: SubscriberInfo[]","appInfo: ServerAppInfo"],"sources":["../src/build/manifests.ts"],"sourcesContent":["import { mkdir, writeFile } from 'node:fs/promises';\nimport { join, relative } from 'path';\nimport type {\n CronInfo,\n FunctionInfo,\n RouteInfo,\n SubscriberInfo,\n} from '../types';\n\nconst logger = console;\n\nexport type ManifestProvider = 'aws' | 'server';\n\nexport interface ServerAppInfo {\n handler: string;\n endpoints: string;\n}\n\nexport async function generateAwsManifest(\n outputDir: string,\n routes: RouteInfo[],\n functions: FunctionInfo[],\n crons: CronInfo[],\n subscribers: SubscriberInfo[],\n): Promise<void> {\n const manifestDir = join(outputDir, 'manifest');\n await mkdir(manifestDir, { recursive: true });\n\n // Filter out 'ALL' method routes (server-specific)\n const awsRoutes = routes.filter((r) => r.method !== 'ALL');\n\n const content = `export const manifest = {\n routes: ${JSON.stringify(awsRoutes, null, 2)},\n functions: ${JSON.stringify(functions, null, 2)},\n crons: ${JSON.stringify(crons, null, 2)},\n subscribers: ${JSON.stringify(subscribers, null, 2)},\n} as const;\n\n// Derived types\nexport type Route = (typeof manifest.routes)[number];\nexport type Function = (typeof manifest.functions)[number];\nexport type Cron = (typeof manifest.crons)[number];\nexport type Subscriber = (typeof manifest.subscribers)[number];\n\n// Useful union types\nexport type Authorizer = Route['authorizer'];\nexport type HttpMethod = Route['method'];\nexport type RoutePath = Route['path'];\n`;\n\n const manifestPath = join(manifestDir, 'aws.ts');\n await writeFile(manifestPath, content);\n\n logger.log(\n `Generated AWS manifest with ${awsRoutes.length} routes, ${functions.length} functions, ${crons.length} crons, ${subscribers.length} subscribers`,\n );\n logger.log(`Manifest: ${relative(process.cwd(), manifestPath)}`);\n}\n\nexport async function generateServerManifest(\n outputDir: string,\n appInfo: ServerAppInfo,\n routes: RouteInfo[],\n subscribers: SubscriberInfo[],\n): Promise<void> {\n const manifestDir = join(outputDir, 'manifest');\n await mkdir(manifestDir, { recursive: true });\n\n // For server, extract route metadata (path, method, authorizer)\n const serverRoutes = routes\n .filter((r) => r.method !== 'ALL')\n .map((r) => ({\n path: r.path,\n method: r.method,\n authorizer: r.authorizer,\n }));\n\n // Server subscribers only need name and events\n const serverSubscribers = subscribers.map((s) => ({\n name: s.name,\n subscribedEvents: s.subscribedEvents,\n }));\n\n const content = `export const manifest = {\n app: ${JSON.stringify(appInfo, null, 2)},\n routes: ${JSON.stringify(serverRoutes, null, 2)},\n subscribers: ${JSON.stringify(serverSubscribers, null, 2)},\n} as const;\n\n// Derived types\nexport type Route = (typeof manifest.routes)[number];\nexport type Subscriber = (typeof manifest.subscribers)[number];\n\n// Useful union types\nexport type Authorizer = Route['authorizer'];\nexport type HttpMethod = Route['method'];\nexport type RoutePath = Route['path'];\n`;\n\n const manifestPath = join(manifestDir, 'server.ts');\n await writeFile(manifestPath, content);\n\n logger.log(\n `Generated server manifest with ${serverRoutes.length} routes, ${serverSubscribers.length} subscribers`,\n );\n logger.log(`Manifest: ${relative(process.cwd(), manifestPath)}`);\n}\n"],"mappings":";;;;;AASA,MAAM,SAAS;AASf,eAAsB,oBACpBA,WACAC,QACAC,WACAC,OACAC,aACe;CACf,MAAM,cAAc,eAAK,WAAW,WAAW;AAC/C,OAAM,4BAAM,aAAa,EAAE,WAAW,KAAM,EAAC;CAG7C,MAAM,YAAY,OAAO,OAAO,CAAC,MAAM,EAAE,WAAW,MAAM;CAE1D,MAAM,WAAW;YACP,KAAK,UAAU,WAAW,MAAM,EAAE,CAAC;eAChC,KAAK,UAAU,WAAW,MAAM,EAAE,CAAC;WACvC,KAAK,UAAU,OAAO,MAAM,EAAE,CAAC;iBACzB,KAAK,UAAU,aAAa,MAAM,EAAE,CAAC;;;;;;;;;;;;;;CAepD,MAAM,eAAe,eAAK,aAAa,SAAS;AAChD,OAAM,gCAAU,cAAc,QAAQ;AAEtC,QAAO,KACJ,8BAA8B,UAAU,OAAO,WAAW,UAAU,OAAO,cAAc,MAAM,OAAO,UAAU,YAAY,OAAO,cACrI;AACD,QAAO,KAAK,YAAY,mBAAS,QAAQ,KAAK,EAAE,aAAa,CAAC,EAAE;AACjE;AAED,eAAsB,uBACpBJ,WACAK,SACAJ,QACAG,aACe;CACf,MAAM,cAAc,eAAK,WAAW,WAAW;AAC/C,OAAM,4BAAM,aAAa,EAAE,WAAW,KAAM,EAAC;CAG7C,MAAM,eAAe,OAClB,OAAO,CAAC,MAAM,EAAE,WAAW,MAAM,CACjC,IAAI,CAAC,OAAO;EACX,MAAM,EAAE;EACR,QAAQ,EAAE;EACV,YAAY,EAAE;CACf,GAAE;CAGL,MAAM,oBAAoB,YAAY,IAAI,CAAC,OAAO;EAChD,MAAM,EAAE;EACR,kBAAkB,EAAE;CACrB,GAAE;CAEH,MAAM,WAAW;SACV,KAAK,UAAU,SAAS,MAAM,EAAE,CAAC;YAC9B,KAAK,UAAU,cAAc,MAAM,EAAE,CAAC;iBACjC,KAAK,UAAU,mBAAmB,MAAM,EAAE,CAAC;;;;;;;;;;;;CAa1D,MAAM,eAAe,eAAK,aAAa,YAAY;AACnD,OAAM,gCAAU,cAAc,QAAQ;AAEtC,QAAO,KACJ,iCAAiC,aAAa,OAAO,WAAW,kBAAkB,OAAO,cAC3F;AACD,QAAO,KAAK,YAAY,mBAAS,QAAQ,KAAK,EAAE,aAAa,CAAC,EAAE;AACjE"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/init/templates/minimal.ts
|
|
3
|
+
const minimalTemplate = {
|
|
4
|
+
name: "minimal",
|
|
5
|
+
description: "Basic health endpoint",
|
|
6
|
+
dependencies: {
|
|
7
|
+
"@geekmidas/constructs": "workspace:*",
|
|
8
|
+
"@geekmidas/envkit": "workspace:*",
|
|
9
|
+
"@geekmidas/logger": "workspace:*",
|
|
10
|
+
hono: "~4.8.2",
|
|
11
|
+
pino: "~9.6.0"
|
|
12
|
+
},
|
|
13
|
+
devDependencies: {
|
|
14
|
+
"@biomejs/biome": "~1.9.4",
|
|
15
|
+
"@geekmidas/cli": "workspace:*",
|
|
16
|
+
"@types/node": "~22.0.0",
|
|
17
|
+
tsx: "~4.20.0",
|
|
18
|
+
turbo: "~2.3.0",
|
|
19
|
+
typescript: "~5.8.2",
|
|
20
|
+
vitest: "~4.0.0"
|
|
21
|
+
},
|
|
22
|
+
scripts: {
|
|
23
|
+
dev: "gkm dev",
|
|
24
|
+
build: "gkm build",
|
|
25
|
+
test: "vitest",
|
|
26
|
+
"test:once": "vitest run",
|
|
27
|
+
typecheck: "tsc --noEmit",
|
|
28
|
+
lint: "biome lint .",
|
|
29
|
+
fmt: "biome format . --write",
|
|
30
|
+
"fmt:check": "biome format ."
|
|
31
|
+
},
|
|
32
|
+
files: (options) => {
|
|
33
|
+
const files = [
|
|
34
|
+
{
|
|
35
|
+
path: "src/config/env.ts",
|
|
36
|
+
content: `import { EnvironmentParser } from '@geekmidas/envkit';
|
|
37
|
+
|
|
38
|
+
export const envParser = new EnvironmentParser(process.env);
|
|
39
|
+
|
|
40
|
+
export const config = envParser
|
|
41
|
+
.create((get) => ({
|
|
42
|
+
port: get('PORT').string().transform(Number).default(3000),
|
|
43
|
+
nodeEnv: get('NODE_ENV').string().default('development'),
|
|
44
|
+
}))
|
|
45
|
+
.parse();
|
|
46
|
+
`
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
path: "src/config/logger.ts",
|
|
50
|
+
content: `import { PinoLogger } from '@geekmidas/logger/pino';
|
|
51
|
+
|
|
52
|
+
export const logger = new PinoLogger({
|
|
53
|
+
app: '${options.name}',
|
|
54
|
+
level: process.env.LOG_LEVEL || 'info',
|
|
55
|
+
});
|
|
56
|
+
`
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
path: "src/endpoints/health.ts",
|
|
60
|
+
content: `import { e } from '@geekmidas/constructs/endpoints';
|
|
61
|
+
|
|
62
|
+
export default e
|
|
63
|
+
.get('/health')
|
|
64
|
+
.handle(async () => ({
|
|
65
|
+
status: 'ok',
|
|
66
|
+
timestamp: new Date().toISOString(),
|
|
67
|
+
}));
|
|
68
|
+
`
|
|
69
|
+
}
|
|
70
|
+
];
|
|
71
|
+
if (options.telescope) files.push({
|
|
72
|
+
path: "src/config/telescope.ts",
|
|
73
|
+
content: `import { Telescope } from '@geekmidas/telescope';
|
|
74
|
+
import { InMemoryStorage } from '@geekmidas/telescope/storage/memory';
|
|
75
|
+
|
|
76
|
+
export const telescope = new Telescope({
|
|
77
|
+
storage: new InMemoryStorage({ maxEntries: 100 }),
|
|
78
|
+
enabled: process.env.NODE_ENV === 'development',
|
|
79
|
+
});
|
|
80
|
+
`
|
|
81
|
+
});
|
|
82
|
+
return files;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
//#endregion
|
|
87
|
+
Object.defineProperty(exports, 'minimalTemplate', {
|
|
88
|
+
enumerable: true,
|
|
89
|
+
get: function () {
|
|
90
|
+
return minimalTemplate;
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
//# sourceMappingURL=minimal-Bdhhpp7v.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minimal-Bdhhpp7v.cjs","names":["minimalTemplate: TemplateConfig","options: TemplateOptions","files: GeneratedFile[]"],"sources":["../src/init/templates/minimal.ts"],"sourcesContent":["import type {\n GeneratedFile,\n TemplateConfig,\n TemplateOptions,\n} from './index.js';\n\nexport const minimalTemplate: TemplateConfig = {\n name: 'minimal',\n description: 'Basic health endpoint',\n\n dependencies: {\n '@geekmidas/constructs': 'workspace:*',\n '@geekmidas/envkit': 'workspace:*',\n '@geekmidas/logger': '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/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',\n test: 'vitest',\n 'test:once': 'vitest run',\n typecheck: 'tsc --noEmit',\n lint: 'biome lint .',\n fmt: 'biome format . --write',\n 'fmt:check': 'biome format .',\n },\n\n files: (options: TemplateOptions): GeneratedFile[] => {\n const files: GeneratedFile[] = [\n // src/config/env.ts\n {\n path: 'src/config/env.ts',\n content: `import { EnvironmentParser } from '@geekmidas/envkit';\n\nexport const envParser = new EnvironmentParser(process.env);\n\nexport const config = envParser\n .create((get) => ({\n port: get('PORT').string().transform(Number).default(3000),\n nodeEnv: get('NODE_ENV').string().default('development'),\n }))\n .parse();\n`,\n },\n\n // src/config/logger.ts - using pino\n {\n path: 'src/config/logger.ts',\n content: `import { PinoLogger } from '@geekmidas/logger/pino';\n\nexport const logger = new PinoLogger({\n app: '${options.name}',\n level: process.env.LOG_LEVEL || 'info',\n});\n`,\n },\n\n // src/endpoints/health.ts\n {\n path: 'src/endpoints/health.ts',\n content: `import { e } from '@geekmidas/constructs/endpoints';\n\nexport default e\n .get('/health')\n .handle(async () => ({\n status: 'ok',\n timestamp: new Date().toISOString(),\n }));\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\nexport const telescope = new Telescope({\n storage: new InMemoryStorage({ maxEntries: 100 }),\n enabled: process.env.NODE_ENV === 'development',\n});\n`,\n });\n }\n\n return files;\n },\n};\n"],"mappings":";;AAMA,MAAaA,kBAAkC;CAC7C,MAAM;CACN,aAAa;CAEb,cAAc;EACZ,yBAAyB;EACzB,qBAAqB;EACrB,qBAAqB;EACrB,MAAM;EACN,MAAM;CACP;CAED,iBAAiB;EACf,kBAAkB;EAClB,kBAAkB;EAClB,eAAe;EACf,KAAK;EACL,OAAO;EACP,YAAY;EACZ,QAAQ;CACT;CAED,SAAS;EACP,KAAK;EACL,OAAO;EACP,MAAM;EACN,aAAa;EACb,WAAW;EACX,MAAM;EACN,KAAK;EACL,aAAa;CACd;CAED,OAAO,CAACC,YAA8C;EACpD,MAAMC,QAAyB;GAE7B;IACE,MAAM;IACN,UAAU;;;;;;;;;;;GAWX;GAGD;IACE,MAAM;IACN,UAAU;;;UAGR,QAAQ,KAAK;;;;GAIhB;GAGD;IACE,MAAM;IACN,UAAU;;;;;;;;;GASX;EACF;AAGD,MAAI,QAAQ,UACV,OAAM,KAAK;GACT,MAAM;GACN,UAAU;;;;;;;;EAQX,EAAC;AAGJ,SAAO;CACR;AACF"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
//#region src/init/templates/minimal.ts
|
|
2
|
+
const minimalTemplate = {
|
|
3
|
+
name: "minimal",
|
|
4
|
+
description: "Basic health endpoint",
|
|
5
|
+
dependencies: {
|
|
6
|
+
"@geekmidas/constructs": "workspace:*",
|
|
7
|
+
"@geekmidas/envkit": "workspace:*",
|
|
8
|
+
"@geekmidas/logger": "workspace:*",
|
|
9
|
+
hono: "~4.8.2",
|
|
10
|
+
pino: "~9.6.0"
|
|
11
|
+
},
|
|
12
|
+
devDependencies: {
|
|
13
|
+
"@biomejs/biome": "~1.9.4",
|
|
14
|
+
"@geekmidas/cli": "workspace:*",
|
|
15
|
+
"@types/node": "~22.0.0",
|
|
16
|
+
tsx: "~4.20.0",
|
|
17
|
+
turbo: "~2.3.0",
|
|
18
|
+
typescript: "~5.8.2",
|
|
19
|
+
vitest: "~4.0.0"
|
|
20
|
+
},
|
|
21
|
+
scripts: {
|
|
22
|
+
dev: "gkm dev",
|
|
23
|
+
build: "gkm build",
|
|
24
|
+
test: "vitest",
|
|
25
|
+
"test:once": "vitest run",
|
|
26
|
+
typecheck: "tsc --noEmit",
|
|
27
|
+
lint: "biome lint .",
|
|
28
|
+
fmt: "biome format . --write",
|
|
29
|
+
"fmt:check": "biome format ."
|
|
30
|
+
},
|
|
31
|
+
files: (options) => {
|
|
32
|
+
const files = [
|
|
33
|
+
{
|
|
34
|
+
path: "src/config/env.ts",
|
|
35
|
+
content: `import { EnvironmentParser } from '@geekmidas/envkit';
|
|
36
|
+
|
|
37
|
+
export const envParser = new EnvironmentParser(process.env);
|
|
38
|
+
|
|
39
|
+
export const config = envParser
|
|
40
|
+
.create((get) => ({
|
|
41
|
+
port: get('PORT').string().transform(Number).default(3000),
|
|
42
|
+
nodeEnv: get('NODE_ENV').string().default('development'),
|
|
43
|
+
}))
|
|
44
|
+
.parse();
|
|
45
|
+
`
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
path: "src/config/logger.ts",
|
|
49
|
+
content: `import { PinoLogger } from '@geekmidas/logger/pino';
|
|
50
|
+
|
|
51
|
+
export const logger = new PinoLogger({
|
|
52
|
+
app: '${options.name}',
|
|
53
|
+
level: process.env.LOG_LEVEL || 'info',
|
|
54
|
+
});
|
|
55
|
+
`
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
path: "src/endpoints/health.ts",
|
|
59
|
+
content: `import { e } from '@geekmidas/constructs/endpoints';
|
|
60
|
+
|
|
61
|
+
export default e
|
|
62
|
+
.get('/health')
|
|
63
|
+
.handle(async () => ({
|
|
64
|
+
status: 'ok',
|
|
65
|
+
timestamp: new Date().toISOString(),
|
|
66
|
+
}));
|
|
67
|
+
`
|
|
68
|
+
}
|
|
69
|
+
];
|
|
70
|
+
if (options.telescope) files.push({
|
|
71
|
+
path: "src/config/telescope.ts",
|
|
72
|
+
content: `import { Telescope } from '@geekmidas/telescope';
|
|
73
|
+
import { InMemoryStorage } from '@geekmidas/telescope/storage/memory';
|
|
74
|
+
|
|
75
|
+
export const telescope = new Telescope({
|
|
76
|
+
storage: new InMemoryStorage({ maxEntries: 100 }),
|
|
77
|
+
enabled: process.env.NODE_ENV === 'development',
|
|
78
|
+
});
|
|
79
|
+
`
|
|
80
|
+
});
|
|
81
|
+
return files;
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
//#endregion
|
|
86
|
+
export { minimalTemplate };
|
|
87
|
+
//# sourceMappingURL=minimal-C4GsE45s.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minimal-C4GsE45s.mjs","names":["minimalTemplate: TemplateConfig","options: TemplateOptions","files: GeneratedFile[]"],"sources":["../src/init/templates/minimal.ts"],"sourcesContent":["import type {\n GeneratedFile,\n TemplateConfig,\n TemplateOptions,\n} from './index.js';\n\nexport const minimalTemplate: TemplateConfig = {\n name: 'minimal',\n description: 'Basic health endpoint',\n\n dependencies: {\n '@geekmidas/constructs': 'workspace:*',\n '@geekmidas/envkit': 'workspace:*',\n '@geekmidas/logger': '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/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',\n test: 'vitest',\n 'test:once': 'vitest run',\n typecheck: 'tsc --noEmit',\n lint: 'biome lint .',\n fmt: 'biome format . --write',\n 'fmt:check': 'biome format .',\n },\n\n files: (options: TemplateOptions): GeneratedFile[] => {\n const files: GeneratedFile[] = [\n // src/config/env.ts\n {\n path: 'src/config/env.ts',\n content: `import { EnvironmentParser } from '@geekmidas/envkit';\n\nexport const envParser = new EnvironmentParser(process.env);\n\nexport const config = envParser\n .create((get) => ({\n port: get('PORT').string().transform(Number).default(3000),\n nodeEnv: get('NODE_ENV').string().default('development'),\n }))\n .parse();\n`,\n },\n\n // src/config/logger.ts - using pino\n {\n path: 'src/config/logger.ts',\n content: `import { PinoLogger } from '@geekmidas/logger/pino';\n\nexport const logger = new PinoLogger({\n app: '${options.name}',\n level: process.env.LOG_LEVEL || 'info',\n});\n`,\n },\n\n // src/endpoints/health.ts\n {\n path: 'src/endpoints/health.ts',\n content: `import { e } from '@geekmidas/constructs/endpoints';\n\nexport default e\n .get('/health')\n .handle(async () => ({\n status: 'ok',\n timestamp: new Date().toISOString(),\n }));\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\nexport const telescope = new Telescope({\n storage: new InMemoryStorage({ maxEntries: 100 }),\n enabled: process.env.NODE_ENV === 'development',\n});\n`,\n });\n }\n\n return files;\n },\n};\n"],"mappings":";AAMA,MAAaA,kBAAkC;CAC7C,MAAM;CACN,aAAa;CAEb,cAAc;EACZ,yBAAyB;EACzB,qBAAqB;EACrB,qBAAqB;EACrB,MAAM;EACN,MAAM;CACP;CAED,iBAAiB;EACf,kBAAkB;EAClB,kBAAkB;EAClB,eAAe;EACf,KAAK;EACL,OAAO;EACP,YAAY;EACZ,QAAQ;CACT;CAED,SAAS;EACP,KAAK;EACL,OAAO;EACP,MAAM;EACN,aAAa;EACb,WAAW;EACX,MAAM;EACN,KAAK;EACL,aAAa;CACd;CAED,OAAO,CAACC,YAA8C;EACpD,MAAMC,QAAyB;GAE7B;IACE,MAAM;IACN,UAAU;;;;;;;;;;;GAWX;GAGD;IACE,MAAM;IACN,UAAU;;;UAGR,QAAQ,KAAK;;;;GAIhB;GAGD;IACE,MAAM;IACN,UAAU;;;;;;;;;GASX;EACF;AAGD,MAAI,QAAQ,UACV,OAAM,KAAK;GACT,MAAM;GACN,UAAU;;;;;;;;EAQX,EAAC;AAGJ,SAAO;CACR;AACF"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/init/generators/models.ts
|
|
3
|
+
/**
|
|
4
|
+
* Generate packages/models for shared Zod schemas (monorepo only)
|
|
5
|
+
*/
|
|
6
|
+
function generateModelsPackage(options) {
|
|
7
|
+
if (!options.monorepo) return [];
|
|
8
|
+
const packageName = `@${options.name}/models`;
|
|
9
|
+
const packageJson = {
|
|
10
|
+
name: packageName,
|
|
11
|
+
version: "0.0.1",
|
|
12
|
+
private: true,
|
|
13
|
+
type: "module",
|
|
14
|
+
exports: {
|
|
15
|
+
".": {
|
|
16
|
+
types: "./dist/index.d.ts",
|
|
17
|
+
import: "./dist/index.js"
|
|
18
|
+
},
|
|
19
|
+
"./*": {
|
|
20
|
+
types: "./dist/*.d.ts",
|
|
21
|
+
import: "./dist/*.js"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
scripts: {
|
|
25
|
+
build: "tsc",
|
|
26
|
+
"build:watch": "tsc --watch",
|
|
27
|
+
typecheck: "tsc --noEmit"
|
|
28
|
+
},
|
|
29
|
+
dependencies: { zod: "~4.1.0" },
|
|
30
|
+
devDependencies: { typescript: "~5.8.2" }
|
|
31
|
+
};
|
|
32
|
+
const tsConfig = {
|
|
33
|
+
extends: "../../tsconfig.json",
|
|
34
|
+
compilerOptions: {
|
|
35
|
+
outDir: "./dist",
|
|
36
|
+
rootDir: "./src"
|
|
37
|
+
},
|
|
38
|
+
include: ["src/**/*.ts"],
|
|
39
|
+
exclude: ["node_modules", "dist"]
|
|
40
|
+
};
|
|
41
|
+
const indexTs = `import { z } from 'zod';
|
|
42
|
+
|
|
43
|
+
// ============================================
|
|
44
|
+
// Common Schemas
|
|
45
|
+
// ============================================
|
|
46
|
+
|
|
47
|
+
export const idSchema = z.string().uuid();
|
|
48
|
+
|
|
49
|
+
export const timestampsSchema = z.object({
|
|
50
|
+
createdAt: z.coerce.date(),
|
|
51
|
+
updatedAt: z.coerce.date(),
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
export const paginationSchema = z.object({
|
|
55
|
+
page: z.coerce.number().int().positive().default(1),
|
|
56
|
+
limit: z.coerce.number().int().positive().max(100).default(20),
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
export const paginatedResponseSchema = <T extends z.ZodTypeAny>(itemSchema: T) =>
|
|
60
|
+
z.object({
|
|
61
|
+
items: z.array(itemSchema),
|
|
62
|
+
total: z.number(),
|
|
63
|
+
page: z.number(),
|
|
64
|
+
limit: z.number(),
|
|
65
|
+
totalPages: z.number(),
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
// ============================================
|
|
69
|
+
// User Schemas
|
|
70
|
+
// ============================================
|
|
71
|
+
|
|
72
|
+
export const userSchema = z.object({
|
|
73
|
+
id: idSchema,
|
|
74
|
+
email: z.string().email(),
|
|
75
|
+
name: z.string().min(1).max(100),
|
|
76
|
+
...timestampsSchema.shape,
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
export const createUserSchema = userSchema.omit({
|
|
80
|
+
id: true,
|
|
81
|
+
createdAt: true,
|
|
82
|
+
updatedAt: true,
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
export const updateUserSchema = createUserSchema.partial();
|
|
86
|
+
|
|
87
|
+
// ============================================
|
|
88
|
+
// Type Exports
|
|
89
|
+
// ============================================
|
|
90
|
+
|
|
91
|
+
export type Id = z.infer<typeof idSchema>;
|
|
92
|
+
export type Timestamps = z.infer<typeof timestampsSchema>;
|
|
93
|
+
export type Pagination = z.infer<typeof paginationSchema>;
|
|
94
|
+
export type User = z.infer<typeof userSchema>;
|
|
95
|
+
export type CreateUser = z.infer<typeof createUserSchema>;
|
|
96
|
+
export type UpdateUser = z.infer<typeof updateUserSchema>;
|
|
97
|
+
`;
|
|
98
|
+
return [
|
|
99
|
+
{
|
|
100
|
+
path: "packages/models/package.json",
|
|
101
|
+
content: JSON.stringify(packageJson, null, 2) + "\n"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
path: "packages/models/tsconfig.json",
|
|
105
|
+
content: JSON.stringify(tsConfig, null, 2) + "\n"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
path: "packages/models/src/index.ts",
|
|
109
|
+
content: indexTs
|
|
110
|
+
}
|
|
111
|
+
];
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
//#endregion
|
|
115
|
+
Object.defineProperty(exports, 'generateModelsPackage', {
|
|
116
|
+
enumerable: true,
|
|
117
|
+
get: function () {
|
|
118
|
+
return generateModelsPackage;
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
//# sourceMappingURL=models-DyNwdOcz.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models-DyNwdOcz.cjs","names":["options: TemplateOptions"],"sources":["../src/init/generators/models.ts"],"sourcesContent":["import type { GeneratedFile, TemplateOptions } from '../templates/index.js';\n\n/**\n * Generate packages/models for shared Zod schemas (monorepo only)\n */\nexport function generateModelsPackage(\n options: TemplateOptions,\n): GeneratedFile[] {\n if (!options.monorepo) {\n return [];\n }\n\n // Package name based on project name\n const packageName = `@${options.name}/models`;\n\n // package.json for models\n const packageJson = {\n name: packageName,\n version: '0.0.1',\n private: true,\n type: 'module',\n exports: {\n '.': {\n types: './dist/index.d.ts',\n import: './dist/index.js',\n },\n './*': {\n types: './dist/*.d.ts',\n import: './dist/*.js',\n },\n },\n scripts: {\n build: 'tsc',\n 'build:watch': 'tsc --watch',\n typecheck: 'tsc --noEmit',\n },\n dependencies: {\n zod: '~4.1.0',\n },\n devDependencies: {\n typescript: '~5.8.2',\n },\n };\n\n // tsconfig.json for models - extends root\n const tsConfig = {\n extends: '../../tsconfig.json',\n compilerOptions: {\n outDir: './dist',\n rootDir: './src',\n },\n include: ['src/**/*.ts'],\n exclude: ['node_modules', 'dist'],\n };\n\n // Main index.ts with example schemas\n const indexTs = `import { z } from 'zod';\n\n// ============================================\n// Common Schemas\n// ============================================\n\nexport const idSchema = z.string().uuid();\n\nexport const timestampsSchema = z.object({\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n});\n\nexport const paginationSchema = z.object({\n page: z.coerce.number().int().positive().default(1),\n limit: z.coerce.number().int().positive().max(100).default(20),\n});\n\nexport const paginatedResponseSchema = <T extends z.ZodTypeAny>(itemSchema: T) =>\n z.object({\n items: z.array(itemSchema),\n total: z.number(),\n page: z.number(),\n limit: z.number(),\n totalPages: z.number(),\n });\n\n// ============================================\n// User Schemas\n// ============================================\n\nexport const userSchema = z.object({\n id: idSchema,\n email: z.string().email(),\n name: z.string().min(1).max(100),\n ...timestampsSchema.shape,\n});\n\nexport const createUserSchema = userSchema.omit({\n id: true,\n createdAt: true,\n updatedAt: true,\n});\n\nexport const updateUserSchema = createUserSchema.partial();\n\n// ============================================\n// Type Exports\n// ============================================\n\nexport type Id = z.infer<typeof idSchema>;\nexport type Timestamps = z.infer<typeof timestampsSchema>;\nexport type Pagination = z.infer<typeof paginationSchema>;\nexport type User = z.infer<typeof userSchema>;\nexport type CreateUser = z.infer<typeof createUserSchema>;\nexport type UpdateUser = z.infer<typeof updateUserSchema>;\n`;\n\n return [\n {\n path: 'packages/models/package.json',\n content: JSON.stringify(packageJson, null, 2) + '\\n',\n },\n {\n path: 'packages/models/tsconfig.json',\n content: JSON.stringify(tsConfig, null, 2) + '\\n',\n },\n {\n path: 'packages/models/src/index.ts',\n content: indexTs,\n },\n ];\n}\n"],"mappings":";;;;;AAKA,SAAgB,sBACdA,SACiB;AACjB,MAAK,QAAQ,SACX,QAAO,CAAE;CAIX,MAAM,eAAe,GAAG,QAAQ,KAAK;CAGrC,MAAM,cAAc;EAClB,MAAM;EACN,SAAS;EACT,SAAS;EACT,MAAM;EACN,SAAS;GACP,KAAK;IACH,OAAO;IACP,QAAQ;GACT;GACD,OAAO;IACL,OAAO;IACP,QAAQ;GACT;EACF;EACD,SAAS;GACP,OAAO;GACP,eAAe;GACf,WAAW;EACZ;EACD,cAAc,EACZ,KAAK,SACN;EACD,iBAAiB,EACf,YAAY,SACb;CACF;CAGD,MAAM,WAAW;EACf,SAAS;EACT,iBAAiB;GACf,QAAQ;GACR,SAAS;EACV;EACD,SAAS,CAAC,aAAc;EACxB,SAAS,CAAC,gBAAgB,MAAO;CAClC;CAGD,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DjB,QAAO;EACL;GACE,MAAM;GACN,SAAS,KAAK,UAAU,aAAa,MAAM,EAAE,GAAG;EACjD;EACD;GACE,MAAM;GACN,SAAS,KAAK,UAAU,UAAU,MAAM,EAAE,GAAG;EAC9C;EACD;GACE,MAAM;GACN,SAAS;EACV;CACF;AACF"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
//#region src/init/generators/models.ts
|
|
2
|
+
/**
|
|
3
|
+
* Generate packages/models for shared Zod schemas (monorepo only)
|
|
4
|
+
*/
|
|
5
|
+
function generateModelsPackage(options) {
|
|
6
|
+
if (!options.monorepo) return [];
|
|
7
|
+
const packageName = `@${options.name}/models`;
|
|
8
|
+
const packageJson = {
|
|
9
|
+
name: packageName,
|
|
10
|
+
version: "0.0.1",
|
|
11
|
+
private: true,
|
|
12
|
+
type: "module",
|
|
13
|
+
exports: {
|
|
14
|
+
".": {
|
|
15
|
+
types: "./dist/index.d.ts",
|
|
16
|
+
import: "./dist/index.js"
|
|
17
|
+
},
|
|
18
|
+
"./*": {
|
|
19
|
+
types: "./dist/*.d.ts",
|
|
20
|
+
import: "./dist/*.js"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
scripts: {
|
|
24
|
+
build: "tsc",
|
|
25
|
+
"build:watch": "tsc --watch",
|
|
26
|
+
typecheck: "tsc --noEmit"
|
|
27
|
+
},
|
|
28
|
+
dependencies: { zod: "~4.1.0" },
|
|
29
|
+
devDependencies: { typescript: "~5.8.2" }
|
|
30
|
+
};
|
|
31
|
+
const tsConfig = {
|
|
32
|
+
extends: "../../tsconfig.json",
|
|
33
|
+
compilerOptions: {
|
|
34
|
+
outDir: "./dist",
|
|
35
|
+
rootDir: "./src"
|
|
36
|
+
},
|
|
37
|
+
include: ["src/**/*.ts"],
|
|
38
|
+
exclude: ["node_modules", "dist"]
|
|
39
|
+
};
|
|
40
|
+
const indexTs = `import { z } from 'zod';
|
|
41
|
+
|
|
42
|
+
// ============================================
|
|
43
|
+
// Common Schemas
|
|
44
|
+
// ============================================
|
|
45
|
+
|
|
46
|
+
export const idSchema = z.string().uuid();
|
|
47
|
+
|
|
48
|
+
export const timestampsSchema = z.object({
|
|
49
|
+
createdAt: z.coerce.date(),
|
|
50
|
+
updatedAt: z.coerce.date(),
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
export const paginationSchema = z.object({
|
|
54
|
+
page: z.coerce.number().int().positive().default(1),
|
|
55
|
+
limit: z.coerce.number().int().positive().max(100).default(20),
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
export const paginatedResponseSchema = <T extends z.ZodTypeAny>(itemSchema: T) =>
|
|
59
|
+
z.object({
|
|
60
|
+
items: z.array(itemSchema),
|
|
61
|
+
total: z.number(),
|
|
62
|
+
page: z.number(),
|
|
63
|
+
limit: z.number(),
|
|
64
|
+
totalPages: z.number(),
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
// ============================================
|
|
68
|
+
// User Schemas
|
|
69
|
+
// ============================================
|
|
70
|
+
|
|
71
|
+
export const userSchema = z.object({
|
|
72
|
+
id: idSchema,
|
|
73
|
+
email: z.string().email(),
|
|
74
|
+
name: z.string().min(1).max(100),
|
|
75
|
+
...timestampsSchema.shape,
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
export const createUserSchema = userSchema.omit({
|
|
79
|
+
id: true,
|
|
80
|
+
createdAt: true,
|
|
81
|
+
updatedAt: true,
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
export const updateUserSchema = createUserSchema.partial();
|
|
85
|
+
|
|
86
|
+
// ============================================
|
|
87
|
+
// Type Exports
|
|
88
|
+
// ============================================
|
|
89
|
+
|
|
90
|
+
export type Id = z.infer<typeof idSchema>;
|
|
91
|
+
export type Timestamps = z.infer<typeof timestampsSchema>;
|
|
92
|
+
export type Pagination = z.infer<typeof paginationSchema>;
|
|
93
|
+
export type User = z.infer<typeof userSchema>;
|
|
94
|
+
export type CreateUser = z.infer<typeof createUserSchema>;
|
|
95
|
+
export type UpdateUser = z.infer<typeof updateUserSchema>;
|
|
96
|
+
`;
|
|
97
|
+
return [
|
|
98
|
+
{
|
|
99
|
+
path: "packages/models/package.json",
|
|
100
|
+
content: JSON.stringify(packageJson, null, 2) + "\n"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
path: "packages/models/tsconfig.json",
|
|
104
|
+
content: JSON.stringify(tsConfig, null, 2) + "\n"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
path: "packages/models/src/index.ts",
|
|
108
|
+
content: indexTs
|
|
109
|
+
}
|
|
110
|
+
];
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
//#endregion
|
|
114
|
+
export { generateModelsPackage };
|
|
115
|
+
//# sourceMappingURL=models-cvNg6Oea.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models-cvNg6Oea.mjs","names":["options: TemplateOptions"],"sources":["../src/init/generators/models.ts"],"sourcesContent":["import type { GeneratedFile, TemplateOptions } from '../templates/index.js';\n\n/**\n * Generate packages/models for shared Zod schemas (monorepo only)\n */\nexport function generateModelsPackage(\n options: TemplateOptions,\n): GeneratedFile[] {\n if (!options.monorepo) {\n return [];\n }\n\n // Package name based on project name\n const packageName = `@${options.name}/models`;\n\n // package.json for models\n const packageJson = {\n name: packageName,\n version: '0.0.1',\n private: true,\n type: 'module',\n exports: {\n '.': {\n types: './dist/index.d.ts',\n import: './dist/index.js',\n },\n './*': {\n types: './dist/*.d.ts',\n import: './dist/*.js',\n },\n },\n scripts: {\n build: 'tsc',\n 'build:watch': 'tsc --watch',\n typecheck: 'tsc --noEmit',\n },\n dependencies: {\n zod: '~4.1.0',\n },\n devDependencies: {\n typescript: '~5.8.2',\n },\n };\n\n // tsconfig.json for models - extends root\n const tsConfig = {\n extends: '../../tsconfig.json',\n compilerOptions: {\n outDir: './dist',\n rootDir: './src',\n },\n include: ['src/**/*.ts'],\n exclude: ['node_modules', 'dist'],\n };\n\n // Main index.ts with example schemas\n const indexTs = `import { z } from 'zod';\n\n// ============================================\n// Common Schemas\n// ============================================\n\nexport const idSchema = z.string().uuid();\n\nexport const timestampsSchema = z.object({\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n});\n\nexport const paginationSchema = z.object({\n page: z.coerce.number().int().positive().default(1),\n limit: z.coerce.number().int().positive().max(100).default(20),\n});\n\nexport const paginatedResponseSchema = <T extends z.ZodTypeAny>(itemSchema: T) =>\n z.object({\n items: z.array(itemSchema),\n total: z.number(),\n page: z.number(),\n limit: z.number(),\n totalPages: z.number(),\n });\n\n// ============================================\n// User Schemas\n// ============================================\n\nexport const userSchema = z.object({\n id: idSchema,\n email: z.string().email(),\n name: z.string().min(1).max(100),\n ...timestampsSchema.shape,\n});\n\nexport const createUserSchema = userSchema.omit({\n id: true,\n createdAt: true,\n updatedAt: true,\n});\n\nexport const updateUserSchema = createUserSchema.partial();\n\n// ============================================\n// Type Exports\n// ============================================\n\nexport type Id = z.infer<typeof idSchema>;\nexport type Timestamps = z.infer<typeof timestampsSchema>;\nexport type Pagination = z.infer<typeof paginationSchema>;\nexport type User = z.infer<typeof userSchema>;\nexport type CreateUser = z.infer<typeof createUserSchema>;\nexport type UpdateUser = z.infer<typeof updateUserSchema>;\n`;\n\n return [\n {\n path: 'packages/models/package.json',\n content: JSON.stringify(packageJson, null, 2) + '\\n',\n },\n {\n path: 'packages/models/tsconfig.json',\n content: JSON.stringify(tsConfig, null, 2) + '\\n',\n },\n {\n path: 'packages/models/src/index.ts',\n content: indexTs,\n },\n ];\n}\n"],"mappings":";;;;AAKA,SAAgB,sBACdA,SACiB;AACjB,MAAK,QAAQ,SACX,QAAO,CAAE;CAIX,MAAM,eAAe,GAAG,QAAQ,KAAK;CAGrC,MAAM,cAAc;EAClB,MAAM;EACN,SAAS;EACT,SAAS;EACT,MAAM;EACN,SAAS;GACP,KAAK;IACH,OAAO;IACP,QAAQ;GACT;GACD,OAAO;IACL,OAAO;IACP,QAAQ;GACT;EACF;EACD,SAAS;GACP,OAAO;GACP,eAAe;GACf,WAAW;EACZ;EACD,cAAc,EACZ,KAAK,SACN;EACD,iBAAiB,EACf,YAAY,SACb;CACF;CAGD,MAAM,WAAW;EACf,SAAS;EACT,iBAAiB;GACf,QAAQ;GACR,SAAS;EACV;EACD,SAAS,CAAC,aAAc;EACxB,SAAS,CAAC,gBAAgB,MAAO;CAClC;CAGD,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DjB,QAAO;EACL;GACE,MAAM;GACN,SAAS,KAAK,UAAU,aAAa,MAAM,EAAE,GAAG;EACjD;EACD;GACE,MAAM;GACN,SAAS,KAAK,UAAU,UAAU,MAAM,EAAE,GAAG;EAC9C;EACD;GACE,MAAM;GACN,SAAS;EACV;CACF;AACF"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
//#region src/init/generators/monorepo.ts
|
|
2
|
+
/**
|
|
3
|
+
* Generate monorepo root files (pnpm-workspace.yaml, root package.json, etc.)
|
|
4
|
+
*/
|
|
5
|
+
function generateMonorepoFiles(options, _template) {
|
|
6
|
+
if (!options.monorepo) return [];
|
|
7
|
+
const rootPackageJson = {
|
|
8
|
+
name: options.name,
|
|
9
|
+
version: "0.0.1",
|
|
10
|
+
private: true,
|
|
11
|
+
type: "module",
|
|
12
|
+
scripts: {
|
|
13
|
+
dev: "turbo dev",
|
|
14
|
+
build: "turbo build",
|
|
15
|
+
test: "turbo test",
|
|
16
|
+
"test:once": "turbo test:once",
|
|
17
|
+
typecheck: "turbo typecheck",
|
|
18
|
+
lint: "biome lint .",
|
|
19
|
+
fmt: "biome format . --write",
|
|
20
|
+
"fmt:check": "biome format ."
|
|
21
|
+
},
|
|
22
|
+
devDependencies: {
|
|
23
|
+
"@biomejs/biome": "~1.9.4",
|
|
24
|
+
turbo: "~2.3.0",
|
|
25
|
+
typescript: "~5.8.2",
|
|
26
|
+
vitest: "~4.0.0"
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
const apiPathParts = options.apiPath.split("/");
|
|
30
|
+
const appsFolder = apiPathParts[0] || "apps";
|
|
31
|
+
const pnpmWorkspace = `packages:
|
|
32
|
+
- '${appsFolder}/*'
|
|
33
|
+
- 'packages/*'
|
|
34
|
+
`;
|
|
35
|
+
const biomeConfig = {
|
|
36
|
+
$schema: "https://biomejs.dev/schemas/1.9.4/schema.json",
|
|
37
|
+
vcs: {
|
|
38
|
+
enabled: true,
|
|
39
|
+
clientKind: "git",
|
|
40
|
+
useIgnoreFile: true
|
|
41
|
+
},
|
|
42
|
+
organizeImports: { enabled: true },
|
|
43
|
+
formatter: {
|
|
44
|
+
enabled: true,
|
|
45
|
+
indentStyle: "space",
|
|
46
|
+
indentWidth: 2,
|
|
47
|
+
lineWidth: 80
|
|
48
|
+
},
|
|
49
|
+
javascript: { formatter: {
|
|
50
|
+
quoteStyle: "single",
|
|
51
|
+
trailingCommas: "all",
|
|
52
|
+
semicolons: "always",
|
|
53
|
+
arrowParentheses: "always"
|
|
54
|
+
} },
|
|
55
|
+
linter: {
|
|
56
|
+
enabled: true,
|
|
57
|
+
rules: {
|
|
58
|
+
recommended: true,
|
|
59
|
+
correctness: {
|
|
60
|
+
noUnusedImports: "error",
|
|
61
|
+
noUnusedVariables: "error"
|
|
62
|
+
},
|
|
63
|
+
style: { noNonNullAssertion: "off" }
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
files: { ignore: [
|
|
67
|
+
"node_modules",
|
|
68
|
+
"dist",
|
|
69
|
+
".gkm",
|
|
70
|
+
"coverage"
|
|
71
|
+
] }
|
|
72
|
+
};
|
|
73
|
+
const turboConfig = {
|
|
74
|
+
$schema: "https://turbo.build/schema.json",
|
|
75
|
+
tasks: {
|
|
76
|
+
build: {
|
|
77
|
+
dependsOn: ["^build"],
|
|
78
|
+
outputs: ["dist/**"]
|
|
79
|
+
},
|
|
80
|
+
dev: {
|
|
81
|
+
cache: false,
|
|
82
|
+
persistent: true
|
|
83
|
+
},
|
|
84
|
+
test: {
|
|
85
|
+
dependsOn: ["^build"],
|
|
86
|
+
cache: false
|
|
87
|
+
},
|
|
88
|
+
"test:once": {
|
|
89
|
+
dependsOn: ["^build"],
|
|
90
|
+
outputs: ["coverage/**"]
|
|
91
|
+
},
|
|
92
|
+
typecheck: {
|
|
93
|
+
dependsOn: ["^build"],
|
|
94
|
+
outputs: []
|
|
95
|
+
},
|
|
96
|
+
lint: { outputs: [] },
|
|
97
|
+
fmt: { outputs: [] }
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
const gitignore = `# Dependencies
|
|
101
|
+
node_modules/
|
|
102
|
+
|
|
103
|
+
# Build output
|
|
104
|
+
dist/
|
|
105
|
+
.gkm/
|
|
106
|
+
|
|
107
|
+
# Environment
|
|
108
|
+
.env
|
|
109
|
+
.env.local
|
|
110
|
+
.env.*.local
|
|
111
|
+
|
|
112
|
+
# IDE
|
|
113
|
+
.idea/
|
|
114
|
+
.vscode/
|
|
115
|
+
*.swp
|
|
116
|
+
*.swo
|
|
117
|
+
|
|
118
|
+
# OS
|
|
119
|
+
.DS_Store
|
|
120
|
+
Thumbs.db
|
|
121
|
+
|
|
122
|
+
# Logs
|
|
123
|
+
*.log
|
|
124
|
+
npm-debug.log*
|
|
125
|
+
yarn-debug.log*
|
|
126
|
+
pnpm-debug.log*
|
|
127
|
+
|
|
128
|
+
# Test coverage
|
|
129
|
+
coverage/
|
|
130
|
+
|
|
131
|
+
# TypeScript cache
|
|
132
|
+
*.tsbuildinfo
|
|
133
|
+
|
|
134
|
+
# Turbo
|
|
135
|
+
.turbo/
|
|
136
|
+
`;
|
|
137
|
+
const tsConfig = {
|
|
138
|
+
compilerOptions: {
|
|
139
|
+
target: "ES2022",
|
|
140
|
+
module: "NodeNext",
|
|
141
|
+
moduleResolution: "NodeNext",
|
|
142
|
+
lib: ["ES2022"],
|
|
143
|
+
strict: true,
|
|
144
|
+
esModuleInterop: true,
|
|
145
|
+
skipLibCheck: true,
|
|
146
|
+
forceConsistentCasingInFileNames: true,
|
|
147
|
+
resolveJsonModule: true,
|
|
148
|
+
declaration: true,
|
|
149
|
+
declarationMap: true,
|
|
150
|
+
composite: true
|
|
151
|
+
},
|
|
152
|
+
exclude: ["node_modules", "dist"]
|
|
153
|
+
};
|
|
154
|
+
return [
|
|
155
|
+
{
|
|
156
|
+
path: "package.json",
|
|
157
|
+
content: JSON.stringify(rootPackageJson, null, 2) + "\n"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
path: "pnpm-workspace.yaml",
|
|
161
|
+
content: pnpmWorkspace
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
path: "tsconfig.json",
|
|
165
|
+
content: JSON.stringify(tsConfig, null, 2) + "\n"
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
path: "biome.json",
|
|
169
|
+
content: JSON.stringify(biomeConfig, null, 2) + "\n"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
path: "turbo.json",
|
|
173
|
+
content: JSON.stringify(turboConfig, null, 2) + "\n"
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
path: ".gitignore",
|
|
177
|
+
content: gitignore
|
|
178
|
+
}
|
|
179
|
+
];
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
//#endregion
|
|
183
|
+
export { generateMonorepoFiles };
|
|
184
|
+
//# sourceMappingURL=monorepo-Cknwzj5C.mjs.map
|