@geekmidas/cli 0.6.2 → 0.8.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/config.d.cts +1 -1
- package/dist/config.d.mts +1 -1
- package/dist/index.cjs +2583 -34
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +2578 -29
- package/dist/index.mjs.map +1 -1
- package/dist/openapi--vOy9mo4.mjs +978 -0
- package/dist/openapi--vOy9mo4.mjs.map +1 -0
- package/dist/openapi-CHhTPief.cjs +1014 -0
- package/dist/openapi-CHhTPief.cjs.map +1 -0
- package/dist/{openapi-react-query-_-B3s8v_.mjs → openapi-react-query-CcciaVu5.mjs} +1 -1
- package/dist/{openapi-react-query-_-B3s8v_.mjs.map → openapi-react-query-CcciaVu5.mjs.map} +1 -1
- package/dist/{openapi-react-query-Cp-w8_05.cjs → openapi-react-query-o5iMi8tz.cjs} +1 -1
- package/dist/{openapi-react-query-Cp-w8_05.cjs.map → openapi-react-query-o5iMi8tz.cjs.map} +1 -1
- package/dist/openapi-react-query.cjs +1 -1
- package/dist/openapi-react-query.mjs +1 -1
- package/dist/openapi.cjs +1 -4
- package/dist/openapi.d.cts +1 -1
- package/dist/openapi.d.mts +1 -1
- package/dist/openapi.mjs +1 -4
- package/dist/{types-KmjzMgu8.d.cts → types-DXgiA1sF.d.mts} +58 -53
- package/dist/{types-Bi7VzDUZ.d.mts → types-b-vwGpqc.d.cts} +58 -53
- package/package.json +6 -6
- package/src/__tests__/EndpointGenerator.hooks.spec.ts +204 -0
- package/src/__tests__/normalizeHooksConfig.spec.ts +63 -0
- package/src/build/index.ts +8 -1
- package/src/build/types.ts +19 -0
- package/src/dev/index.ts +153 -37
- package/src/generators/EndpointGenerator.ts +72 -5
- package/src/generators/__tests__/EndpointGenerator.spec.ts +1 -1
- package/src/init/generators/config.ts +6 -1
- package/src/init/generators/package.ts +5 -1
- package/src/init/index.ts +9 -1
- package/src/init/templates/api.ts +31 -0
- package/src/init/templates/index.ts +1 -0
- package/src/init/templates/minimal.ts +83 -0
- package/src/types.ts +57 -0
- package/tsdown.config.ts +6 -0
- package/dist/CronGenerator-CCRYptuT.mjs +0 -55
- package/dist/CronGenerator-CCRYptuT.mjs.map +0 -1
- package/dist/CronGenerator-D4TWXQbh.cjs +0 -61
- package/dist/CronGenerator-D4TWXQbh.cjs.map +0 -1
- package/dist/CronGenerator-DWS3CCZt.d.cts +0 -14
- package/dist/CronGenerator-DZjdkEjI.d.mts +0 -14
- package/dist/EndpointGenerator-DGivkPLT.mjs +0 -335
- package/dist/EndpointGenerator-DGivkPLT.mjs.map +0 -1
- package/dist/EndpointGenerator-Dh7kMtuL.d.mts +0 -19
- package/dist/EndpointGenerator-npWEDoK2.cjs +0 -341
- package/dist/EndpointGenerator-npWEDoK2.cjs.map +0 -1
- package/dist/EndpointGenerator-zBsie_7s.d.cts +0 -19
- package/dist/FunctionGenerator-BmDHo27U.d.mts +0 -14
- package/dist/FunctionGenerator-CVk0h8tO.mjs +0 -54
- package/dist/FunctionGenerator-CVk0h8tO.mjs.map +0 -1
- package/dist/FunctionGenerator-DXjXBxUd.d.cts +0 -14
- package/dist/FunctionGenerator-DYTnyr4c.cjs +0 -60
- package/dist/FunctionGenerator-DYTnyr4c.cjs.map +0 -1
- package/dist/Generator-BGY-2dgI.d.cts +0 -27
- package/dist/Generator-CDt4pB3W.mjs +0 -41
- package/dist/Generator-CDt4pB3W.mjs.map +0 -1
- package/dist/Generator-CLVplqm2.cjs +0 -47
- package/dist/Generator-CLVplqm2.cjs.map +0 -1
- package/dist/Generator-yi9DH5TN.d.mts +0 -27
- package/dist/OpenApiTsGenerator-BVS4pOH7.mjs +0 -495
- package/dist/OpenApiTsGenerator-BVS4pOH7.mjs.map +0 -1
- package/dist/OpenApiTsGenerator-gPIIyppX.cjs +0 -501
- package/dist/OpenApiTsGenerator-gPIIyppX.cjs.map +0 -1
- package/dist/SubscriberGenerator-Bb-z3Kvx.d.cts +0 -15
- package/dist/SubscriberGenerator-CwsXqCpS.d.mts +0 -15
- package/dist/SubscriberGenerator-DABaJXML.mjs +0 -200
- package/dist/SubscriberGenerator-DABaJXML.mjs.map +0 -1
- package/dist/SubscriberGenerator-D_zpNGFr.cjs +0 -206
- package/dist/SubscriberGenerator-D_zpNGFr.cjs.map +0 -1
- package/dist/api-Bp5TIl1R.mjs +0 -167
- package/dist/api-Bp5TIl1R.mjs.map +0 -1
- package/dist/api-D4W9-tdZ.cjs +0 -173
- package/dist/api-D4W9-tdZ.cjs.map +0 -1
- package/dist/build/index.cjs +0 -15
- package/dist/build/index.d.cts +0 -7
- package/dist/build/index.d.mts +0 -7
- package/dist/build/index.mjs +0 -15
- package/dist/build/manifests.cjs +0 -4
- package/dist/build/manifests.d.cts +0 -13
- package/dist/build/manifests.d.mts +0 -13
- package/dist/build/manifests.mjs +0 -3
- package/dist/build/providerResolver.cjs +0 -5
- package/dist/build/providerResolver.d.cts +0 -23
- package/dist/build/providerResolver.d.mts +0 -23
- package/dist/build/providerResolver.mjs +0 -3
- package/dist/build/types.cjs +0 -0
- package/dist/build/types.d.cts +0 -3
- package/dist/build/types.d.mts +0 -3
- package/dist/build/types.mjs +0 -0
- package/dist/build-Cu6Mi0Lf.mjs +0 -87
- package/dist/build-Cu6Mi0Lf.mjs.map +0 -1
- package/dist/build-wmt8ZcmA.cjs +0 -93
- package/dist/build-wmt8ZcmA.cjs.map +0 -1
- package/dist/config-BP1IZynR.cjs +0 -168
- package/dist/config-BP1IZynR.cjs.map +0 -1
- package/dist/config-CIzRhm_D.d.mts +0 -11
- package/dist/config-CvehIYsb.d.cts +0 -11
- package/dist/config-UCK12Lrr.mjs +0 -162
- package/dist/config-UCK12Lrr.mjs.map +0 -1
- package/dist/dev/index.cjs +0 -17
- package/dist/dev/index.d.cts +0 -36
- package/dist/dev/index.d.mts +0 -36
- package/dist/dev/index.mjs +0 -13
- package/dist/dev-BBPWSllq.mjs +0 -348
- package/dist/dev-BBPWSllq.mjs.map +0 -1
- package/dist/dev-C2lCgE53.cjs +0 -378
- package/dist/dev-C2lCgE53.cjs.map +0 -1
- package/dist/docker-2-ipZDOJ.cjs +0 -119
- package/dist/docker-2-ipZDOJ.cjs.map +0 -1
- package/dist/docker-31GNwU3F.mjs +0 -113
- package/dist/docker-31GNwU3F.mjs.map +0 -1
- package/dist/env-CQ3hXAAW.d.mts +0 -11
- package/dist/env-CS0jvg7k.cjs +0 -144
- package/dist/env-CS0jvg7k.cjs.map +0 -1
- package/dist/env-D4YFgMqo.d.cts +0 -11
- package/dist/env-DEeVOvVu.mjs +0 -138
- package/dist/env-DEeVOvVu.mjs.map +0 -1
- package/dist/generators/CronGenerator.cjs +0 -4
- package/dist/generators/CronGenerator.d.cts +0 -5
- package/dist/generators/CronGenerator.d.mts +0 -5
- package/dist/generators/CronGenerator.mjs +0 -4
- package/dist/generators/EndpointGenerator.cjs +0 -4
- package/dist/generators/EndpointGenerator.d.cts +0 -5
- package/dist/generators/EndpointGenerator.d.mts +0 -5
- package/dist/generators/EndpointGenerator.mjs +0 -4
- package/dist/generators/FunctionGenerator.cjs +0 -4
- package/dist/generators/FunctionGenerator.d.cts +0 -5
- package/dist/generators/FunctionGenerator.d.mts +0 -5
- package/dist/generators/FunctionGenerator.mjs +0 -4
- package/dist/generators/Generator.cjs +0 -3
- package/dist/generators/Generator.d.cts +0 -4
- package/dist/generators/Generator.d.mts +0 -4
- package/dist/generators/Generator.mjs +0 -3
- package/dist/generators/OpenApiTsGenerator.cjs +0 -3
- package/dist/generators/OpenApiTsGenerator.d.cts +0 -44
- package/dist/generators/OpenApiTsGenerator.d.mts +0 -44
- package/dist/generators/OpenApiTsGenerator.mjs +0 -3
- package/dist/generators/SubscriberGenerator.cjs +0 -4
- package/dist/generators/SubscriberGenerator.d.cts +0 -5
- package/dist/generators/SubscriberGenerator.d.mts +0 -5
- package/dist/generators/SubscriberGenerator.mjs +0 -4
- package/dist/generators/index.cjs +0 -12
- package/dist/generators/index.d.cts +0 -8
- package/dist/generators/index.d.mts +0 -8
- package/dist/generators/index.mjs +0 -8
- package/dist/generators-3IemvCLk.cjs +0 -0
- package/dist/generators-FNpdfN6J.mjs +0 -0
- package/dist/index-DG6xNQMH.d.cts +0 -81
- package/dist/index-DZgrOOOW.d.mts +0 -81
- package/dist/init/generators/config.cjs +0 -3
- package/dist/init/generators/config.d.cts +0 -3
- package/dist/init/generators/config.d.mts +0 -3
- package/dist/init/generators/config.mjs +0 -3
- package/dist/init/generators/docker.cjs +0 -3
- package/dist/init/generators/docker.d.cts +0 -11
- package/dist/init/generators/docker.d.mts +0 -11
- package/dist/init/generators/docker.mjs +0 -3
- package/dist/init/generators/env.cjs +0 -3
- package/dist/init/generators/env.d.cts +0 -3
- package/dist/init/generators/env.d.mts +0 -3
- package/dist/init/generators/env.mjs +0 -3
- package/dist/init/generators/index.cjs +0 -14
- package/dist/init/generators/index.d.cts +0 -6
- package/dist/init/generators/index.d.mts +0 -6
- package/dist/init/generators/index.mjs +0 -11
- package/dist/init/generators/models.cjs +0 -3
- package/dist/init/generators/models.d.cts +0 -11
- package/dist/init/generators/models.d.mts +0 -11
- package/dist/init/generators/models.mjs +0 -3
- package/dist/init/generators/monorepo.cjs +0 -3
- package/dist/init/generators/monorepo.d.cts +0 -11
- package/dist/init/generators/monorepo.d.mts +0 -11
- package/dist/init/generators/monorepo.mjs +0 -3
- package/dist/init/generators/package.cjs +0 -8
- package/dist/init/generators/package.d.cts +0 -3
- package/dist/init/generators/package.d.mts +0 -3
- package/dist/init/generators/package.mjs +0 -8
- package/dist/init/generators/source.cjs +0 -3
- package/dist/init/generators/source.d.cts +0 -3
- package/dist/init/generators/source.d.mts +0 -3
- package/dist/init/generators/source.mjs +0 -3
- package/dist/init/index.cjs +0 -16
- package/dist/init/index.d.cts +0 -17
- package/dist/init/index.d.mts +0 -17
- package/dist/init/index.mjs +0 -16
- package/dist/init/templates/api.cjs +0 -3
- package/dist/init/templates/api.d.cts +0 -7
- package/dist/init/templates/api.d.mts +0 -7
- package/dist/init/templates/api.mjs +0 -3
- package/dist/init/templates/index.cjs +0 -12
- package/dist/init/templates/index.d.cts +0 -2
- package/dist/init/templates/index.d.mts +0 -2
- package/dist/init/templates/index.mjs +0 -7
- package/dist/init/templates/minimal.cjs +0 -3
- package/dist/init/templates/minimal.d.cts +0 -7
- package/dist/init/templates/minimal.d.mts +0 -7
- package/dist/init/templates/minimal.mjs +0 -3
- package/dist/init/templates/serverless.cjs +0 -3
- package/dist/init/templates/serverless.d.cts +0 -7
- package/dist/init/templates/serverless.d.mts +0 -7
- package/dist/init/templates/serverless.mjs +0 -3
- package/dist/init/templates/worker.cjs +0 -3
- package/dist/init/templates/worker.d.cts +0 -7
- package/dist/init/templates/worker.d.mts +0 -7
- package/dist/init/templates/worker.mjs +0 -3
- package/dist/init/utils.cjs +0 -7
- package/dist/init/utils.d.cts +0 -25
- package/dist/init/utils.d.mts +0 -25
- package/dist/init/utils.mjs +0 -3
- package/dist/init-BMA7xi8r.mjs +0 -161
- package/dist/init-BMA7xi8r.mjs.map +0 -1
- package/dist/init-D-7WEk-b.cjs +0 -167
- package/dist/init-D-7WEk-b.cjs.map +0 -1
- package/dist/manifests-BNKG6AXf.mjs +0 -68
- package/dist/manifests-BNKG6AXf.mjs.map +0 -1
- package/dist/manifests-D13Ej8AE.cjs +0 -80
- package/dist/manifests-D13Ej8AE.cjs.map +0 -1
- package/dist/minimal-BkyASH_C.mjs +0 -93
- package/dist/minimal-BkyASH_C.mjs.map +0 -1
- package/dist/minimal-CSFggzdH.cjs +0 -99
- package/dist/minimal-CSFggzdH.cjs.map +0 -1
- package/dist/models-BWlDfviw.mjs +0 -115
- package/dist/models-BWlDfviw.mjs.map +0 -1
- package/dist/models-BapGSoHC.cjs +0 -121
- package/dist/models-BapGSoHC.cjs.map +0 -1
- package/dist/monorepo-BBOWhkcd.mjs +0 -184
- package/dist/monorepo-BBOWhkcd.mjs.map +0 -1
- package/dist/monorepo-CFtxHeDh.cjs +0 -190
- package/dist/monorepo-CFtxHeDh.cjs.map +0 -1
- package/dist/openapi-DA9RkPJl.mjs +0 -74
- package/dist/openapi-DA9RkPJl.mjs.map +0 -1
- package/dist/openapi-DZH6RQHk.cjs +0 -98
- package/dist/openapi-DZH6RQHk.cjs.map +0 -1
- package/dist/package-6h-7QfJZ.d.cts +0 -11
- package/dist/package-BCe_KvGv.d.mts +0 -11
- package/dist/package-C3If80n1.mjs +0 -57
- package/dist/package-C3If80n1.mjs.map +0 -1
- package/dist/package-Dk8IMBOB.cjs +0 -62
- package/dist/package-Dk8IMBOB.cjs.map +0 -1
- package/dist/providerResolver-DEVKngbC.mjs +0 -96
- package/dist/providerResolver-DEVKngbC.mjs.map +0 -1
- package/dist/providerResolver-DOTbN9jo.cjs +0 -114
- package/dist/providerResolver-DOTbN9jo.cjs.map +0 -1
- package/dist/serverless-AGOS-l3G.cjs +0 -119
- package/dist/serverless-AGOS-l3G.cjs.map +0 -1
- package/dist/serverless-D5HjJByU.mjs +0 -113
- package/dist/serverless-D5HjJByU.mjs.map +0 -1
- package/dist/source-C1cyfHcF.cjs +0 -17
- package/dist/source-C1cyfHcF.cjs.map +0 -1
- package/dist/source-C3LiNUV9.d.mts +0 -11
- package/dist/source-CkQHBpwu.mjs +0 -11
- package/dist/source-CkQHBpwu.mjs.map +0 -1
- package/dist/source-Dtcjbokc.d.cts +0 -11
- package/dist/templates-C0EMmhwb.mjs +0 -88
- package/dist/templates-C0EMmhwb.mjs.map +0 -1
- package/dist/templates-CbgQ9dw0.cjs +0 -123
- package/dist/templates-CbgQ9dw0.cjs.map +0 -1
- package/dist/types-D2xYkOal.d.mts +0 -51
- package/dist/types-DA-r8HWZ.d.cts +0 -51
- package/dist/types.cjs +0 -0
- package/dist/types.d.cts +0 -2
- package/dist/types.d.mts +0 -2
- package/dist/types.mjs +0 -0
- package/dist/utils-CKEzCxc1.mjs +0 -69
- package/dist/utils-CKEzCxc1.mjs.map +0 -1
- package/dist/utils-DSdN2MTt.cjs +0 -99
- package/dist/utils-DSdN2MTt.cjs.map +0 -1
- package/dist/worker-CGhlqNH-.cjs +0 -156
- package/dist/worker-CGhlqNH-.cjs.map +0 -1
- package/dist/worker-CiP420As.mjs +0 -150
- package/dist/worker-CiP420As.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-Bp5TIl1R.mjs","names":["apiTemplate: TemplateConfig","options: TemplateOptions","file: string","files: GeneratedFile[]"],"sources":["../src/init/templates/api.ts"],"sourcesContent":["import type {\n GeneratedFile,\n TemplateConfig,\n TemplateOptions,\n} from './index.js';\n\nexport const apiTemplate: TemplateConfig = {\n name: 'api',\n description: 'Full API with auth, database, services',\n\n dependencies: {\n '@geekmidas/constructs': 'workspace:*',\n '@geekmidas/envkit': 'workspace:*',\n '@geekmidas/logger': 'workspace:*',\n '@geekmidas/services': 'workspace:*',\n '@geekmidas/errors': 'workspace:*',\n '@geekmidas/auth': '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 { 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 const parts = file.split('/');\n if (parts.length === 1) {\n return `src/${file.replace('.ts', '')}/routes/index.ts`;\n }\n return `src/${parts[0]}/routes/${parts.slice(1).join('/')}`;\n }\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 port: get('PORT').string().transform(Number).default(3000),\n nodeEnv: get('NODE_ENV').string().default('development'),\n jwtSecret: get('JWT_SECRET').string().default('change-me-in-production'),${\n options.database\n ? `\n database: {\n url: get('DATABASE_URL').string().default('postgresql://localhost:5432/mydb'),\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 }));\n`,\n },\n\n // users endpoints\n {\n path: getRoutePath('users/list.ts'),\n content: `import { e } from '@geekmidas/constructs/endpoints';\n\nexport default e\n .get('/users')\n .handle(async () => ({\n users: [\n { id: '1', name: 'Alice' },\n { id: '2', name: 'Bob' },\n ],\n }));\n`,\n },\n {\n path: getRoutePath('users/get.ts'),\n content: `import { e } from '@geekmidas/constructs/endpoints';\nimport { z } from 'zod';\n\nexport default e\n .get('/users/:id')\n .params(z.object({ id: z.string() }))\n .handle(async ({ params }) => ({\n id: params.id,\n name: 'Alice',\n email: 'alice@example.com',\n }));\n`,\n },\n ];\n\n // Add database service if enabled\n if (options.database) {\n files.push({\n path: 'src/services/database.ts',\n content: `import type { Service } from '@geekmidas/services';\nimport { Kysely, PostgresDialect } from 'kysely';\nimport pg from 'pg';\n\n// Define your database schema\nexport interface Database {\n users: {\n id: string;\n name: string;\n email: string;\n created_at: Date;\n };\n}\n\nexport const databaseService = {\n serviceName: 'database' as const,\n async register(envParser) {\n const config = envParser\n .create((get) => ({\n url: get('DATABASE_URL').string(),\n }))\n .parse();\n\n return new Kysely<Database>({\n dialect: new PostgresDialect({\n pool: new pg.Pool({ connectionString: config.url }),\n }),\n });\n },\n} satisfies Service<'database', Kysely<Database>>;\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,cAA8B;CACzC,MAAM;CACN,aAAa;CAEb,cAAc;EACZ,yBAAyB;EACzB,qBAAqB;EACrB,qBAAqB;EACrB,uBAAuB;EACvB,qBAAqB;EACrB,mBAAmB;EACnB,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,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,gBAAgB;KACnB,MAAM,QAAQ,KAAK,MAAM,IAAI;AAC7B,SAAI,MAAM,WAAW,EACnB,SAAQ,MAAM,KAAK,QAAQ,OAAO,GAAG,CAAC;AAExC,aAAQ,MAAM,MAAM,GAAG,UAAU,MAAM,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAC3D;GACF;EACF;EAED,MAAMC,QAAyB;GAE7B;IACE,MAAM;IACN,UAAU;;;;;;;;+EASZ,QAAQ,YACH;;;UAID,GACL;;;;GAIE;GAGD;IACE,MAAM;IACN,SAAS;GACV;GAGD;IACE,MAAM,aAAa,YAAY;IAC/B,UAAU;;;;;;;;;GASX;GAGD;IACE,MAAM,aAAa,gBAAgB;IACnC,UAAU;;;;;;;;;;;GAWX;GACD;IACE,MAAM,aAAa,eAAe;IAClC,UAAU;;;;;;;;;;;;GAYX;EACF;AAGD,MAAI,QAAQ,SACV,OAAM,KAAK;GACT,MAAM;GACN,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BX,EAAC;AAIJ,MAAI,QAAQ,UACV,OAAM,KAAK;GACT,MAAM;GACN,UAAU;;;;;;;;EAQX,EAAC;AAGJ,SAAO;CACR;AACF"}
|
package/dist/api-D4W9-tdZ.cjs
DELETED
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
//#region src/init/templates/api.ts
|
|
3
|
-
const apiTemplate = {
|
|
4
|
-
name: "api",
|
|
5
|
-
description: "Full API with auth, database, services",
|
|
6
|
-
dependencies: {
|
|
7
|
-
"@geekmidas/constructs": "workspace:*",
|
|
8
|
-
"@geekmidas/envkit": "workspace:*",
|
|
9
|
-
"@geekmidas/logger": "workspace:*",
|
|
10
|
-
"@geekmidas/services": "workspace:*",
|
|
11
|
-
"@geekmidas/errors": "workspace:*",
|
|
12
|
-
"@geekmidas/auth": "workspace:*",
|
|
13
|
-
hono: "~4.8.2",
|
|
14
|
-
pino: "~9.6.0"
|
|
15
|
-
},
|
|
16
|
-
devDependencies: {
|
|
17
|
-
"@biomejs/biome": "~1.9.4",
|
|
18
|
-
"@geekmidas/cli": "workspace:*",
|
|
19
|
-
"@types/node": "~22.0.0",
|
|
20
|
-
tsx: "~4.20.0",
|
|
21
|
-
turbo: "~2.3.0",
|
|
22
|
-
typescript: "~5.8.2",
|
|
23
|
-
vitest: "~4.0.0"
|
|
24
|
-
},
|
|
25
|
-
scripts: {
|
|
26
|
-
dev: "gkm dev",
|
|
27
|
-
build: "gkm build",
|
|
28
|
-
test: "vitest",
|
|
29
|
-
"test:once": "vitest run",
|
|
30
|
-
typecheck: "tsc --noEmit",
|
|
31
|
-
lint: "biome lint .",
|
|
32
|
-
fmt: "biome format . --write",
|
|
33
|
-
"fmt:check": "biome format ."
|
|
34
|
-
},
|
|
35
|
-
files: (options) => {
|
|
36
|
-
const { loggerType, routesStructure } = options;
|
|
37
|
-
const loggerContent = `import { createLogger } from '@geekmidas/logger/${loggerType}';
|
|
38
|
-
|
|
39
|
-
export const logger = createLogger();
|
|
40
|
-
`;
|
|
41
|
-
const getRoutePath = (file) => {
|
|
42
|
-
switch (routesStructure) {
|
|
43
|
-
case "centralized-endpoints": return `src/endpoints/${file}`;
|
|
44
|
-
case "centralized-routes": return `src/routes/${file}`;
|
|
45
|
-
case "domain-based": {
|
|
46
|
-
const parts = file.split("/");
|
|
47
|
-
if (parts.length === 1) return `src/${file.replace(".ts", "")}/routes/index.ts`;
|
|
48
|
-
return `src/${parts[0]}/routes/${parts.slice(1).join("/")}`;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
const files = [
|
|
53
|
-
{
|
|
54
|
-
path: "src/config/env.ts",
|
|
55
|
-
content: `import { EnvironmentParser } from '@geekmidas/envkit';
|
|
56
|
-
|
|
57
|
-
export const envParser = new EnvironmentParser(process.env);
|
|
58
|
-
|
|
59
|
-
export const config = envParser
|
|
60
|
-
.create((get) => ({
|
|
61
|
-
port: get('PORT').string().transform(Number).default(3000),
|
|
62
|
-
nodeEnv: get('NODE_ENV').string().default('development'),
|
|
63
|
-
jwtSecret: get('JWT_SECRET').string().default('change-me-in-production'),${options.database ? `
|
|
64
|
-
database: {
|
|
65
|
-
url: get('DATABASE_URL').string().default('postgresql://localhost:5432/mydb'),
|
|
66
|
-
},` : ""}
|
|
67
|
-
}))
|
|
68
|
-
.parse();
|
|
69
|
-
`
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
path: "src/config/logger.ts",
|
|
73
|
-
content: loggerContent
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
path: getRoutePath("health.ts"),
|
|
77
|
-
content: `import { e } from '@geekmidas/constructs/endpoints';
|
|
78
|
-
|
|
79
|
-
export default e
|
|
80
|
-
.get('/health')
|
|
81
|
-
.handle(async () => ({
|
|
82
|
-
status: 'ok',
|
|
83
|
-
timestamp: new Date().toISOString(),
|
|
84
|
-
}));
|
|
85
|
-
`
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
path: getRoutePath("users/list.ts"),
|
|
89
|
-
content: `import { e } from '@geekmidas/constructs/endpoints';
|
|
90
|
-
|
|
91
|
-
export default e
|
|
92
|
-
.get('/users')
|
|
93
|
-
.handle(async () => ({
|
|
94
|
-
users: [
|
|
95
|
-
{ id: '1', name: 'Alice' },
|
|
96
|
-
{ id: '2', name: 'Bob' },
|
|
97
|
-
],
|
|
98
|
-
}));
|
|
99
|
-
`
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
path: getRoutePath("users/get.ts"),
|
|
103
|
-
content: `import { e } from '@geekmidas/constructs/endpoints';
|
|
104
|
-
import { z } from 'zod';
|
|
105
|
-
|
|
106
|
-
export default e
|
|
107
|
-
.get('/users/:id')
|
|
108
|
-
.params(z.object({ id: z.string() }))
|
|
109
|
-
.handle(async ({ params }) => ({
|
|
110
|
-
id: params.id,
|
|
111
|
-
name: 'Alice',
|
|
112
|
-
email: 'alice@example.com',
|
|
113
|
-
}));
|
|
114
|
-
`
|
|
115
|
-
}
|
|
116
|
-
];
|
|
117
|
-
if (options.database) files.push({
|
|
118
|
-
path: "src/services/database.ts",
|
|
119
|
-
content: `import type { Service } from '@geekmidas/services';
|
|
120
|
-
import { Kysely, PostgresDialect } from 'kysely';
|
|
121
|
-
import pg from 'pg';
|
|
122
|
-
|
|
123
|
-
// Define your database schema
|
|
124
|
-
export interface Database {
|
|
125
|
-
users: {
|
|
126
|
-
id: string;
|
|
127
|
-
name: string;
|
|
128
|
-
email: string;
|
|
129
|
-
created_at: Date;
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
export const databaseService = {
|
|
134
|
-
serviceName: 'database' as const,
|
|
135
|
-
async register(envParser) {
|
|
136
|
-
const config = envParser
|
|
137
|
-
.create((get) => ({
|
|
138
|
-
url: get('DATABASE_URL').string(),
|
|
139
|
-
}))
|
|
140
|
-
.parse();
|
|
141
|
-
|
|
142
|
-
return new Kysely<Database>({
|
|
143
|
-
dialect: new PostgresDialect({
|
|
144
|
-
pool: new pg.Pool({ connectionString: config.url }),
|
|
145
|
-
}),
|
|
146
|
-
});
|
|
147
|
-
},
|
|
148
|
-
} satisfies Service<'database', Kysely<Database>>;
|
|
149
|
-
`
|
|
150
|
-
});
|
|
151
|
-
if (options.telescope) files.push({
|
|
152
|
-
path: "src/config/telescope.ts",
|
|
153
|
-
content: `import { Telescope } from '@geekmidas/telescope';
|
|
154
|
-
import { InMemoryStorage } from '@geekmidas/telescope/storage/memory';
|
|
155
|
-
|
|
156
|
-
export const telescope = new Telescope({
|
|
157
|
-
storage: new InMemoryStorage({ maxEntries: 100 }),
|
|
158
|
-
enabled: process.env.NODE_ENV === 'development',
|
|
159
|
-
});
|
|
160
|
-
`
|
|
161
|
-
});
|
|
162
|
-
return files;
|
|
163
|
-
}
|
|
164
|
-
};
|
|
165
|
-
|
|
166
|
-
//#endregion
|
|
167
|
-
Object.defineProperty(exports, 'apiTemplate', {
|
|
168
|
-
enumerable: true,
|
|
169
|
-
get: function () {
|
|
170
|
-
return apiTemplate;
|
|
171
|
-
}
|
|
172
|
-
});
|
|
173
|
-
//# sourceMappingURL=api-D4W9-tdZ.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-D4W9-tdZ.cjs","names":["apiTemplate: TemplateConfig","options: TemplateOptions","file: string","files: GeneratedFile[]"],"sources":["../src/init/templates/api.ts"],"sourcesContent":["import type {\n GeneratedFile,\n TemplateConfig,\n TemplateOptions,\n} from './index.js';\n\nexport const apiTemplate: TemplateConfig = {\n name: 'api',\n description: 'Full API with auth, database, services',\n\n dependencies: {\n '@geekmidas/constructs': 'workspace:*',\n '@geekmidas/envkit': 'workspace:*',\n '@geekmidas/logger': 'workspace:*',\n '@geekmidas/services': 'workspace:*',\n '@geekmidas/errors': 'workspace:*',\n '@geekmidas/auth': '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 { 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 const parts = file.split('/');\n if (parts.length === 1) {\n return `src/${file.replace('.ts', '')}/routes/index.ts`;\n }\n return `src/${parts[0]}/routes/${parts.slice(1).join('/')}`;\n }\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 port: get('PORT').string().transform(Number).default(3000),\n nodeEnv: get('NODE_ENV').string().default('development'),\n jwtSecret: get('JWT_SECRET').string().default('change-me-in-production'),${\n options.database\n ? `\n database: {\n url: get('DATABASE_URL').string().default('postgresql://localhost:5432/mydb'),\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 }));\n`,\n },\n\n // users endpoints\n {\n path: getRoutePath('users/list.ts'),\n content: `import { e } from '@geekmidas/constructs/endpoints';\n\nexport default e\n .get('/users')\n .handle(async () => ({\n users: [\n { id: '1', name: 'Alice' },\n { id: '2', name: 'Bob' },\n ],\n }));\n`,\n },\n {\n path: getRoutePath('users/get.ts'),\n content: `import { e } from '@geekmidas/constructs/endpoints';\nimport { z } from 'zod';\n\nexport default e\n .get('/users/:id')\n .params(z.object({ id: z.string() }))\n .handle(async ({ params }) => ({\n id: params.id,\n name: 'Alice',\n email: 'alice@example.com',\n }));\n`,\n },\n ];\n\n // Add database service if enabled\n if (options.database) {\n files.push({\n path: 'src/services/database.ts',\n content: `import type { Service } from '@geekmidas/services';\nimport { Kysely, PostgresDialect } from 'kysely';\nimport pg from 'pg';\n\n// Define your database schema\nexport interface Database {\n users: {\n id: string;\n name: string;\n email: string;\n created_at: Date;\n };\n}\n\nexport const databaseService = {\n serviceName: 'database' as const,\n async register(envParser) {\n const config = envParser\n .create((get) => ({\n url: get('DATABASE_URL').string(),\n }))\n .parse();\n\n return new Kysely<Database>({\n dialect: new PostgresDialect({\n pool: new pg.Pool({ connectionString: config.url }),\n }),\n });\n },\n} satisfies Service<'database', Kysely<Database>>;\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,cAA8B;CACzC,MAAM;CACN,aAAa;CAEb,cAAc;EACZ,yBAAyB;EACzB,qBAAqB;EACrB,qBAAqB;EACrB,uBAAuB;EACvB,qBAAqB;EACrB,mBAAmB;EACnB,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,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,gBAAgB;KACnB,MAAM,QAAQ,KAAK,MAAM,IAAI;AAC7B,SAAI,MAAM,WAAW,EACnB,SAAQ,MAAM,KAAK,QAAQ,OAAO,GAAG,CAAC;AAExC,aAAQ,MAAM,MAAM,GAAG,UAAU,MAAM,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAC3D;GACF;EACF;EAED,MAAMC,QAAyB;GAE7B;IACE,MAAM;IACN,UAAU;;;;;;;;+EASZ,QAAQ,YACH;;;UAID,GACL;;;;GAIE;GAGD;IACE,MAAM;IACN,SAAS;GACV;GAGD;IACE,MAAM,aAAa,YAAY;IAC/B,UAAU;;;;;;;;;GASX;GAGD;IACE,MAAM,aAAa,gBAAgB;IACnC,UAAU;;;;;;;;;;;GAWX;GACD;IACE,MAAM,aAAa,eAAe;IAClC,UAAU;;;;;;;;;;;;GAYX;EACF;AAGD,MAAI,QAAQ,SACV,OAAM,KAAK;GACT,MAAM;GACN,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BX,EAAC;AAIJ,MAAI,QAAQ,UACV,OAAM,KAAK;GACT,MAAM;GACN,UAAU;;;;;;;;EAQX,EAAC;AAGJ,SAAO;CACR;AACF"}
|
package/dist/build/index.cjs
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
require('../config-CFls09Ey.cjs');
|
|
2
|
-
require('../providerResolver-DOTbN9jo.cjs');
|
|
3
|
-
require('../Generator-CLVplqm2.cjs');
|
|
4
|
-
require('../CronGenerator-D4TWXQbh.cjs');
|
|
5
|
-
require('../EndpointGenerator-npWEDoK2.cjs');
|
|
6
|
-
require('../FunctionGenerator-DYTnyr4c.cjs');
|
|
7
|
-
require('../SubscriberGenerator-D_zpNGFr.cjs');
|
|
8
|
-
require('../generators-3IemvCLk.cjs');
|
|
9
|
-
require('../OpenApiTsGenerator-gPIIyppX.cjs');
|
|
10
|
-
require('../openapi-DZH6RQHk.cjs');
|
|
11
|
-
require('../dev-C2lCgE53.cjs');
|
|
12
|
-
require('../manifests-D13Ej8AE.cjs');
|
|
13
|
-
const require_build = require('../build-wmt8ZcmA.cjs');
|
|
14
|
-
|
|
15
|
-
exports.buildCommand = require_build.buildCommand;
|
package/dist/build/index.d.cts
DELETED
package/dist/build/index.d.mts
DELETED
package/dist/build/index.mjs
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import "../config-Bq72aj8e.mjs";
|
|
2
|
-
import "../providerResolver-DEVKngbC.mjs";
|
|
3
|
-
import "../Generator-CDt4pB3W.mjs";
|
|
4
|
-
import "../CronGenerator-CCRYptuT.mjs";
|
|
5
|
-
import "../EndpointGenerator-DGivkPLT.mjs";
|
|
6
|
-
import "../FunctionGenerator-CVk0h8tO.mjs";
|
|
7
|
-
import "../SubscriberGenerator-DABaJXML.mjs";
|
|
8
|
-
import "../generators-FNpdfN6J.mjs";
|
|
9
|
-
import "../OpenApiTsGenerator-BVS4pOH7.mjs";
|
|
10
|
-
import "../openapi-DA9RkPJl.mjs";
|
|
11
|
-
import "../dev-BBPWSllq.mjs";
|
|
12
|
-
import "../manifests-BNKG6AXf.mjs";
|
|
13
|
-
import { buildCommand } from "../build-Cu6Mi0Lf.mjs";
|
|
14
|
-
|
|
15
|
-
export { buildCommand };
|
package/dist/build/manifests.cjs
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { CronInfo, FunctionInfo, RouteInfo, SubscriberInfo } from "../types-KmjzMgu8.cjs";
|
|
2
|
-
|
|
3
|
-
//#region src/build/manifests.d.ts
|
|
4
|
-
type ManifestProvider = 'aws' | 'server';
|
|
5
|
-
interface ServerAppInfo {
|
|
6
|
-
handler: string;
|
|
7
|
-
endpoints: string;
|
|
8
|
-
}
|
|
9
|
-
declare function generateAwsManifest(outputDir: string, routes: RouteInfo[], functions: FunctionInfo[], crons: CronInfo[], subscribers: SubscriberInfo[]): Promise<void>;
|
|
10
|
-
declare function generateServerManifest(outputDir: string, appInfo: ServerAppInfo, routes: RouteInfo[], subscribers: SubscriberInfo[]): Promise<void>;
|
|
11
|
-
//#endregion
|
|
12
|
-
export { ManifestProvider, ServerAppInfo, generateAwsManifest, generateServerManifest };
|
|
13
|
-
//# sourceMappingURL=manifests.d.cts.map
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { CronInfo, FunctionInfo, RouteInfo, SubscriberInfo } from "../types-Bi7VzDUZ.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/build/manifests.d.ts
|
|
4
|
-
type ManifestProvider = 'aws' | 'server';
|
|
5
|
-
interface ServerAppInfo {
|
|
6
|
-
handler: string;
|
|
7
|
-
endpoints: string;
|
|
8
|
-
}
|
|
9
|
-
declare function generateAwsManifest(outputDir: string, routes: RouteInfo[], functions: FunctionInfo[], crons: CronInfo[], subscribers: SubscriberInfo[]): Promise<void>;
|
|
10
|
-
declare function generateServerManifest(outputDir: string, appInfo: ServerAppInfo, routes: RouteInfo[], subscribers: SubscriberInfo[]): Promise<void>;
|
|
11
|
-
//#endregion
|
|
12
|
-
export { ManifestProvider, ServerAppInfo, generateAwsManifest, generateServerManifest };
|
|
13
|
-
//# sourceMappingURL=manifests.d.mts.map
|
package/dist/build/manifests.mjs
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
const require_providerResolver = require('../providerResolver-DOTbN9jo.cjs');
|
|
2
|
-
|
|
3
|
-
exports.getAWSServiceConfig = require_providerResolver.getAWSServiceConfig;
|
|
4
|
-
exports.getServerConfig = require_providerResolver.getServerConfig;
|
|
5
|
-
exports.resolveProviders = require_providerResolver.resolveProviders;
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { AWSApiGatewayConfig, AWSLambdaConfig, BuildOptions, GkmConfig, LegacyProvider, ServerConfig } from "../types-KmjzMgu8.cjs";
|
|
2
|
-
|
|
3
|
-
//#region src/build/providerResolver.d.ts
|
|
4
|
-
interface ResolvedProviders {
|
|
5
|
-
providers: LegacyProvider[];
|
|
6
|
-
enableOpenApi: boolean;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Resolves provider configuration from the new simplified system
|
|
10
|
-
* to the internal legacy format for backward compatibility
|
|
11
|
-
*/
|
|
12
|
-
declare function resolveProviders(config: GkmConfig, options: BuildOptions): ResolvedProviders;
|
|
13
|
-
/**
|
|
14
|
-
* Gets configuration for a specific AWS service
|
|
15
|
-
*/
|
|
16
|
-
declare function getAWSServiceConfig<T extends AWSApiGatewayConfig | AWSLambdaConfig>(config: GkmConfig, service: 'apiGateway' | 'lambda', subService?: 'v1' | 'v2' | 'functions' | 'crons'): T | undefined;
|
|
17
|
-
/**
|
|
18
|
-
* Gets server configuration
|
|
19
|
-
*/
|
|
20
|
-
declare function getServerConfig(config: GkmConfig): ServerConfig | undefined;
|
|
21
|
-
//#endregion
|
|
22
|
-
export { ResolvedProviders, getAWSServiceConfig, getServerConfig, resolveProviders };
|
|
23
|
-
//# sourceMappingURL=providerResolver.d.cts.map
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { AWSApiGatewayConfig, AWSLambdaConfig, BuildOptions, GkmConfig, LegacyProvider, ServerConfig } from "../types-Bi7VzDUZ.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/build/providerResolver.d.ts
|
|
4
|
-
interface ResolvedProviders {
|
|
5
|
-
providers: LegacyProvider[];
|
|
6
|
-
enableOpenApi: boolean;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Resolves provider configuration from the new simplified system
|
|
10
|
-
* to the internal legacy format for backward compatibility
|
|
11
|
-
*/
|
|
12
|
-
declare function resolveProviders(config: GkmConfig, options: BuildOptions): ResolvedProviders;
|
|
13
|
-
/**
|
|
14
|
-
* Gets configuration for a specific AWS service
|
|
15
|
-
*/
|
|
16
|
-
declare function getAWSServiceConfig<T extends AWSApiGatewayConfig | AWSLambdaConfig>(config: GkmConfig, service: 'apiGateway' | 'lambda', subService?: 'v1' | 'v2' | 'functions' | 'crons'): T | undefined;
|
|
17
|
-
/**
|
|
18
|
-
* Gets server configuration
|
|
19
|
-
*/
|
|
20
|
-
declare function getServerConfig(config: GkmConfig): ServerConfig | undefined;
|
|
21
|
-
//#endregion
|
|
22
|
-
export { ResolvedProviders, getAWSServiceConfig, getServerConfig, resolveProviders };
|
|
23
|
-
//# sourceMappingURL=providerResolver.d.mts.map
|
package/dist/build/types.cjs
DELETED
|
File without changes
|
package/dist/build/types.d.cts
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import "../types-KmjzMgu8.cjs";
|
|
2
|
-
import { BuildContext, NormalizedTelescopeConfig, ProcessedCron, ProcessedEndpoint, ProcessedFunction, ProviderBuildResult } from "../types-DA-r8HWZ.cjs";
|
|
3
|
-
export { BuildContext, NormalizedTelescopeConfig, ProcessedCron, ProcessedEndpoint, ProcessedFunction, ProviderBuildResult };
|
package/dist/build/types.d.mts
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import "../types-Bi7VzDUZ.mjs";
|
|
2
|
-
import { BuildContext, NormalizedTelescopeConfig, ProcessedCron, ProcessedEndpoint, ProcessedFunction, ProviderBuildResult } from "../types-D2xYkOal.mjs";
|
|
3
|
-
export { BuildContext, NormalizedTelescopeConfig, ProcessedCron, ProcessedEndpoint, ProcessedFunction, ProviderBuildResult };
|
package/dist/build/types.mjs
DELETED
|
File without changes
|
package/dist/build-Cu6Mi0Lf.mjs
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { loadConfig, parseModuleConfig } from "./config-Bq72aj8e.mjs";
|
|
2
|
-
import { resolveProviders } from "./providerResolver-DEVKngbC.mjs";
|
|
3
|
-
import { CronGenerator } from "./CronGenerator-CCRYptuT.mjs";
|
|
4
|
-
import { EndpointGenerator } from "./EndpointGenerator-DGivkPLT.mjs";
|
|
5
|
-
import { FunctionGenerator } from "./FunctionGenerator-CVk0h8tO.mjs";
|
|
6
|
-
import { SubscriberGenerator } from "./SubscriberGenerator-DABaJXML.mjs";
|
|
7
|
-
import { normalizeTelescopeConfig } from "./dev-BBPWSllq.mjs";
|
|
8
|
-
import { generateAwsManifest, generateServerManifest } from "./manifests-BNKG6AXf.mjs";
|
|
9
|
-
import { mkdir } from "node:fs/promises";
|
|
10
|
-
import { join, relative } from "node:path";
|
|
11
|
-
|
|
12
|
-
//#region src/build/index.ts
|
|
13
|
-
const logger = console;
|
|
14
|
-
async function buildCommand(options) {
|
|
15
|
-
const config = await loadConfig();
|
|
16
|
-
const resolved = resolveProviders(config, options);
|
|
17
|
-
logger.log(`Building with providers: ${resolved.providers.join(", ")}`);
|
|
18
|
-
logger.log(`Loading routes from: ${config.routes}`);
|
|
19
|
-
if (config.functions) logger.log(`Loading functions from: ${config.functions}`);
|
|
20
|
-
if (config.crons) logger.log(`Loading crons from: ${config.crons}`);
|
|
21
|
-
if (config.subscribers) logger.log(`Loading subscribers from: ${config.subscribers}`);
|
|
22
|
-
logger.log(`Using envParser: ${config.envParser}`);
|
|
23
|
-
const { path: envParserPath, importPattern: envParserImportPattern } = parseModuleConfig(config.envParser, "envParser");
|
|
24
|
-
const { path: loggerPath, importPattern: loggerImportPattern } = parseModuleConfig(config.logger, "logger");
|
|
25
|
-
const telescope = normalizeTelescopeConfig(config.telescope);
|
|
26
|
-
if (telescope) logger.log(`🔭 Telescope enabled at ${telescope.path}`);
|
|
27
|
-
const buildContext = {
|
|
28
|
-
envParserPath,
|
|
29
|
-
envParserImportPattern,
|
|
30
|
-
loggerPath,
|
|
31
|
-
loggerImportPattern,
|
|
32
|
-
telescope
|
|
33
|
-
};
|
|
34
|
-
const endpointGenerator = new EndpointGenerator();
|
|
35
|
-
const functionGenerator = new FunctionGenerator();
|
|
36
|
-
const cronGenerator = new CronGenerator();
|
|
37
|
-
const subscriberGenerator = new SubscriberGenerator();
|
|
38
|
-
const [allEndpoints, allFunctions, allCrons, allSubscribers] = await Promise.all([
|
|
39
|
-
endpointGenerator.load(config.routes),
|
|
40
|
-
config.functions ? functionGenerator.load(config.functions) : [],
|
|
41
|
-
config.crons ? cronGenerator.load(config.crons) : [],
|
|
42
|
-
config.subscribers ? subscriberGenerator.load(config.subscribers) : []
|
|
43
|
-
]);
|
|
44
|
-
logger.log(`Found ${allEndpoints.length} endpoints`);
|
|
45
|
-
logger.log(`Found ${allFunctions.length} functions`);
|
|
46
|
-
logger.log(`Found ${allCrons.length} crons`);
|
|
47
|
-
logger.log(`Found ${allSubscribers.length} subscribers`);
|
|
48
|
-
if (allEndpoints.length === 0 && allFunctions.length === 0 && allCrons.length === 0 && allSubscribers.length === 0) {
|
|
49
|
-
logger.log("No endpoints, functions, crons, or subscribers found to process");
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
const rootOutputDir = join(process.cwd(), ".gkm");
|
|
53
|
-
await mkdir(rootOutputDir, { recursive: true });
|
|
54
|
-
for (const provider of resolved.providers) await buildForProvider(provider, buildContext, rootOutputDir, endpointGenerator, functionGenerator, cronGenerator, subscriberGenerator, allEndpoints, allFunctions, allCrons, allSubscribers, resolved.enableOpenApi);
|
|
55
|
-
}
|
|
56
|
-
async function buildForProvider(provider, context, rootOutputDir, endpointGenerator, functionGenerator, cronGenerator, subscriberGenerator, endpoints, functions, crons, subscribers, enableOpenApi) {
|
|
57
|
-
const outputDir = join(process.cwd(), ".gkm", provider);
|
|
58
|
-
await mkdir(outputDir, { recursive: true });
|
|
59
|
-
logger.log(`\nGenerating handlers for provider: ${provider}`);
|
|
60
|
-
const [routes, functionInfos, cronInfos, subscriberInfos] = await Promise.all([
|
|
61
|
-
endpointGenerator.build(context, endpoints, outputDir, {
|
|
62
|
-
provider,
|
|
63
|
-
enableOpenApi
|
|
64
|
-
}),
|
|
65
|
-
functionGenerator.build(context, functions, outputDir, { provider }),
|
|
66
|
-
cronGenerator.build(context, crons, outputDir, { provider }),
|
|
67
|
-
subscriberGenerator.build(context, subscribers, outputDir, { provider })
|
|
68
|
-
]);
|
|
69
|
-
logger.log(`Generated ${routes.length} routes, ${functionInfos.length} functions, ${cronInfos.length} crons, ${subscriberInfos.length} subscribers for ${provider}`);
|
|
70
|
-
if (provider === "server") {
|
|
71
|
-
const routeMetadata = await Promise.all(endpoints.map(async ({ construct }) => ({
|
|
72
|
-
path: construct._path,
|
|
73
|
-
method: construct.method,
|
|
74
|
-
handler: "",
|
|
75
|
-
authorizer: construct.authorizer?.name ?? "none"
|
|
76
|
-
})));
|
|
77
|
-
const appInfo = {
|
|
78
|
-
handler: relative(process.cwd(), join(outputDir, "app.ts")),
|
|
79
|
-
endpoints: relative(process.cwd(), join(outputDir, "endpoints.ts"))
|
|
80
|
-
};
|
|
81
|
-
await generateServerManifest(rootOutputDir, appInfo, routeMetadata, subscriberInfos);
|
|
82
|
-
} else await generateAwsManifest(rootOutputDir, routes, functionInfos, cronInfos, subscriberInfos);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
//#endregion
|
|
86
|
-
export { buildCommand };
|
|
87
|
-
//# sourceMappingURL=build-Cu6Mi0Lf.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"build-Cu6Mi0Lf.mjs","names":["options: BuildOptions","buildContext: BuildContext","provider: LegacyProvider","context: BuildContext","rootOutputDir: string","endpointGenerator: EndpointGenerator","functionGenerator: FunctionGenerator","cronGenerator: CronGenerator","subscriberGenerator: SubscriberGenerator","endpoints: GeneratedConstruct<Endpoint<any, any, any, any, any, any>>[]","functions: GeneratedConstruct<Function<any, any, any, any>>[]","crons: GeneratedConstruct<Cron<any, any, any, any>>[]","subscribers: GeneratedConstruct<Subscriber<any, any, any, any, any, any>>[]","enableOpenApi: boolean","routeMetadata: RouteInfo[]","appInfo: ServerAppInfo"],"sources":["../src/build/index.ts"],"sourcesContent":["import { mkdir } from 'node:fs/promises';\nimport { join, relative } from 'node:path';\nimport type { Cron } from '@geekmidas/constructs/crons';\nimport type { Endpoint } from '@geekmidas/constructs/endpoints';\nimport type { Function } from '@geekmidas/constructs/functions';\nimport type { Subscriber } from '@geekmidas/constructs/subscribers';\nimport { loadConfig, parseModuleConfig } from '../config';\nimport { normalizeTelescopeConfig } from '../dev';\nimport {\n CronGenerator,\n EndpointGenerator,\n FunctionGenerator,\n type GeneratedConstruct,\n SubscriberGenerator,\n} from '../generators';\nimport type { BuildOptions, LegacyProvider, RouteInfo } from '../types';\nimport {\n type ServerAppInfo,\n generateAwsManifest,\n generateServerManifest,\n} from './manifests';\nimport { resolveProviders } from './providerResolver';\nimport type { BuildContext } from './types';\n\nconst logger = console;\n\nexport async function buildCommand(options: BuildOptions): Promise<void> {\n const config = await loadConfig();\n\n // Resolve providers from new config format\n const resolved = resolveProviders(config, options);\n\n logger.log(`Building with providers: ${resolved.providers.join(', ')}`);\n logger.log(`Loading routes from: ${config.routes}`);\n if (config.functions) {\n logger.log(`Loading functions from: ${config.functions}`);\n }\n if (config.crons) {\n logger.log(`Loading crons from: ${config.crons}`);\n }\n if (config.subscribers) {\n logger.log(`Loading subscribers from: ${config.subscribers}`);\n }\n logger.log(`Using envParser: ${config.envParser}`);\n\n // Parse envParser and logger configuration\n const { path: envParserPath, importPattern: envParserImportPattern } =\n parseModuleConfig(config.envParser, 'envParser');\n const { path: loggerPath, importPattern: loggerImportPattern } =\n parseModuleConfig(config.logger, 'logger');\n\n // Normalize telescope configuration\n const telescope = normalizeTelescopeConfig(config.telescope);\n if (telescope) {\n logger.log(`🔭 Telescope enabled at ${telescope.path}`);\n }\n\n const buildContext: BuildContext = {\n envParserPath,\n envParserImportPattern,\n loggerPath,\n loggerImportPattern,\n telescope,\n };\n\n // Initialize generators\n const endpointGenerator = new EndpointGenerator();\n const functionGenerator = new FunctionGenerator();\n const cronGenerator = new CronGenerator();\n const subscriberGenerator = new SubscriberGenerator();\n\n // Load all constructs in parallel\n const [allEndpoints, allFunctions, allCrons, allSubscribers] =\n await Promise.all([\n endpointGenerator.load(config.routes),\n config.functions ? functionGenerator.load(config.functions) : [],\n config.crons ? cronGenerator.load(config.crons) : [],\n config.subscribers ? subscriberGenerator.load(config.subscribers) : [],\n ]);\n\n logger.log(`Found ${allEndpoints.length} endpoints`);\n logger.log(`Found ${allFunctions.length} functions`);\n logger.log(`Found ${allCrons.length} crons`);\n logger.log(`Found ${allSubscribers.length} subscribers`);\n\n if (\n allEndpoints.length === 0 &&\n allFunctions.length === 0 &&\n allCrons.length === 0 &&\n allSubscribers.length === 0\n ) {\n logger.log(\n 'No endpoints, functions, crons, or subscribers found to process',\n );\n return;\n }\n\n // Ensure .gkm directory exists\n const rootOutputDir = join(process.cwd(), '.gkm');\n await mkdir(rootOutputDir, { recursive: true });\n\n // Build for each provider and generate per-provider manifests\n for (const provider of resolved.providers) {\n await buildForProvider(\n provider,\n buildContext,\n rootOutputDir,\n endpointGenerator,\n functionGenerator,\n cronGenerator,\n subscriberGenerator,\n allEndpoints,\n allFunctions,\n allCrons,\n allSubscribers,\n resolved.enableOpenApi,\n );\n }\n}\n\nasync function buildForProvider(\n provider: LegacyProvider,\n context: BuildContext,\n rootOutputDir: string,\n endpointGenerator: EndpointGenerator,\n functionGenerator: FunctionGenerator,\n cronGenerator: CronGenerator,\n subscriberGenerator: SubscriberGenerator,\n endpoints: GeneratedConstruct<Endpoint<any, any, any, any, any, any>>[],\n functions: GeneratedConstruct<Function<any, any, any, any>>[],\n crons: GeneratedConstruct<Cron<any, any, any, any>>[],\n subscribers: GeneratedConstruct<Subscriber<any, any, any, any, any, any>>[],\n enableOpenApi: boolean,\n): Promise<void> {\n const outputDir = join(process.cwd(), '.gkm', provider);\n\n // Ensure output directory exists\n await mkdir(outputDir, { recursive: true });\n\n logger.log(`\\nGenerating handlers for provider: ${provider}`);\n\n // Build all constructs in parallel\n const [routes, functionInfos, cronInfos, subscriberInfos] = await Promise.all(\n [\n endpointGenerator.build(context, endpoints, outputDir, {\n provider,\n enableOpenApi,\n }),\n functionGenerator.build(context, functions, outputDir, { provider }),\n cronGenerator.build(context, crons, outputDir, { provider }),\n subscriberGenerator.build(context, subscribers, outputDir, { provider }),\n ],\n );\n\n logger.log(\n `Generated ${routes.length} routes, ${functionInfos.length} functions, ${cronInfos.length} crons, ${subscriberInfos.length} subscribers for ${provider}`,\n );\n\n // Generate provider-specific manifest\n if (provider === 'server') {\n // For server, collect actual route metadata from endpoint constructs\n const routeMetadata: RouteInfo[] = await Promise.all(\n endpoints.map(async ({ construct }) => ({\n path: construct._path,\n method: construct.method,\n handler: '', // Not needed for server manifest\n authorizer: construct.authorizer?.name ?? 'none',\n })),\n );\n\n const appInfo: ServerAppInfo = {\n handler: relative(process.cwd(), join(outputDir, 'app.ts')),\n endpoints: relative(process.cwd(), join(outputDir, 'endpoints.ts')),\n };\n\n await generateServerManifest(\n rootOutputDir,\n appInfo,\n routeMetadata,\n subscriberInfos,\n );\n } else {\n // For AWS providers, generate AWS manifest\n await generateAwsManifest(\n rootOutputDir,\n routes,\n functionInfos,\n cronInfos,\n subscriberInfos,\n );\n }\n}\n"],"mappings":"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"}
|
package/dist/build-wmt8ZcmA.cjs
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
const require_chunk = require('./chunk-CUT6urMc.cjs');
|
|
2
|
-
const require_config = require('./config-CFls09Ey.cjs');
|
|
3
|
-
const require_providerResolver = require('./providerResolver-DOTbN9jo.cjs');
|
|
4
|
-
const require_CronGenerator = require('./CronGenerator-D4TWXQbh.cjs');
|
|
5
|
-
const require_EndpointGenerator = require('./EndpointGenerator-npWEDoK2.cjs');
|
|
6
|
-
const require_FunctionGenerator = require('./FunctionGenerator-DYTnyr4c.cjs');
|
|
7
|
-
const require_SubscriberGenerator = require('./SubscriberGenerator-D_zpNGFr.cjs');
|
|
8
|
-
const require_dev = require('./dev-C2lCgE53.cjs');
|
|
9
|
-
const require_manifests = require('./manifests-D13Ej8AE.cjs');
|
|
10
|
-
const node_fs_promises = require_chunk.__toESM(require("node:fs/promises"));
|
|
11
|
-
const node_path = require_chunk.__toESM(require("node:path"));
|
|
12
|
-
|
|
13
|
-
//#region src/build/index.ts
|
|
14
|
-
const logger = console;
|
|
15
|
-
async function buildCommand(options) {
|
|
16
|
-
const config = await require_config.loadConfig();
|
|
17
|
-
const resolved = require_providerResolver.resolveProviders(config, options);
|
|
18
|
-
logger.log(`Building with providers: ${resolved.providers.join(", ")}`);
|
|
19
|
-
logger.log(`Loading routes from: ${config.routes}`);
|
|
20
|
-
if (config.functions) logger.log(`Loading functions from: ${config.functions}`);
|
|
21
|
-
if (config.crons) logger.log(`Loading crons from: ${config.crons}`);
|
|
22
|
-
if (config.subscribers) logger.log(`Loading subscribers from: ${config.subscribers}`);
|
|
23
|
-
logger.log(`Using envParser: ${config.envParser}`);
|
|
24
|
-
const { path: envParserPath, importPattern: envParserImportPattern } = require_config.parseModuleConfig(config.envParser, "envParser");
|
|
25
|
-
const { path: loggerPath, importPattern: loggerImportPattern } = require_config.parseModuleConfig(config.logger, "logger");
|
|
26
|
-
const telescope = require_dev.normalizeTelescopeConfig(config.telescope);
|
|
27
|
-
if (telescope) logger.log(`🔭 Telescope enabled at ${telescope.path}`);
|
|
28
|
-
const buildContext = {
|
|
29
|
-
envParserPath,
|
|
30
|
-
envParserImportPattern,
|
|
31
|
-
loggerPath,
|
|
32
|
-
loggerImportPattern,
|
|
33
|
-
telescope
|
|
34
|
-
};
|
|
35
|
-
const endpointGenerator = new require_EndpointGenerator.EndpointGenerator();
|
|
36
|
-
const functionGenerator = new require_FunctionGenerator.FunctionGenerator();
|
|
37
|
-
const cronGenerator = new require_CronGenerator.CronGenerator();
|
|
38
|
-
const subscriberGenerator = new require_SubscriberGenerator.SubscriberGenerator();
|
|
39
|
-
const [allEndpoints, allFunctions, allCrons, allSubscribers] = await Promise.all([
|
|
40
|
-
endpointGenerator.load(config.routes),
|
|
41
|
-
config.functions ? functionGenerator.load(config.functions) : [],
|
|
42
|
-
config.crons ? cronGenerator.load(config.crons) : [],
|
|
43
|
-
config.subscribers ? subscriberGenerator.load(config.subscribers) : []
|
|
44
|
-
]);
|
|
45
|
-
logger.log(`Found ${allEndpoints.length} endpoints`);
|
|
46
|
-
logger.log(`Found ${allFunctions.length} functions`);
|
|
47
|
-
logger.log(`Found ${allCrons.length} crons`);
|
|
48
|
-
logger.log(`Found ${allSubscribers.length} subscribers`);
|
|
49
|
-
if (allEndpoints.length === 0 && allFunctions.length === 0 && allCrons.length === 0 && allSubscribers.length === 0) {
|
|
50
|
-
logger.log("No endpoints, functions, crons, or subscribers found to process");
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
const rootOutputDir = (0, node_path.join)(process.cwd(), ".gkm");
|
|
54
|
-
await (0, node_fs_promises.mkdir)(rootOutputDir, { recursive: true });
|
|
55
|
-
for (const provider of resolved.providers) await buildForProvider(provider, buildContext, rootOutputDir, endpointGenerator, functionGenerator, cronGenerator, subscriberGenerator, allEndpoints, allFunctions, allCrons, allSubscribers, resolved.enableOpenApi);
|
|
56
|
-
}
|
|
57
|
-
async function buildForProvider(provider, context, rootOutputDir, endpointGenerator, functionGenerator, cronGenerator, subscriberGenerator, endpoints, functions, crons, subscribers, enableOpenApi) {
|
|
58
|
-
const outputDir = (0, node_path.join)(process.cwd(), ".gkm", provider);
|
|
59
|
-
await (0, node_fs_promises.mkdir)(outputDir, { recursive: true });
|
|
60
|
-
logger.log(`\nGenerating handlers for provider: ${provider}`);
|
|
61
|
-
const [routes, functionInfos, cronInfos, subscriberInfos] = await Promise.all([
|
|
62
|
-
endpointGenerator.build(context, endpoints, outputDir, {
|
|
63
|
-
provider,
|
|
64
|
-
enableOpenApi
|
|
65
|
-
}),
|
|
66
|
-
functionGenerator.build(context, functions, outputDir, { provider }),
|
|
67
|
-
cronGenerator.build(context, crons, outputDir, { provider }),
|
|
68
|
-
subscriberGenerator.build(context, subscribers, outputDir, { provider })
|
|
69
|
-
]);
|
|
70
|
-
logger.log(`Generated ${routes.length} routes, ${functionInfos.length} functions, ${cronInfos.length} crons, ${subscriberInfos.length} subscribers for ${provider}`);
|
|
71
|
-
if (provider === "server") {
|
|
72
|
-
const routeMetadata = await Promise.all(endpoints.map(async ({ construct }) => ({
|
|
73
|
-
path: construct._path,
|
|
74
|
-
method: construct.method,
|
|
75
|
-
handler: "",
|
|
76
|
-
authorizer: construct.authorizer?.name ?? "none"
|
|
77
|
-
})));
|
|
78
|
-
const appInfo = {
|
|
79
|
-
handler: (0, node_path.relative)(process.cwd(), (0, node_path.join)(outputDir, "app.ts")),
|
|
80
|
-
endpoints: (0, node_path.relative)(process.cwd(), (0, node_path.join)(outputDir, "endpoints.ts"))
|
|
81
|
-
};
|
|
82
|
-
await require_manifests.generateServerManifest(rootOutputDir, appInfo, routeMetadata, subscriberInfos);
|
|
83
|
-
} else await require_manifests.generateAwsManifest(rootOutputDir, routes, functionInfos, cronInfos, subscriberInfos);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
//#endregion
|
|
87
|
-
Object.defineProperty(exports, 'buildCommand', {
|
|
88
|
-
enumerable: true,
|
|
89
|
-
get: function () {
|
|
90
|
-
return buildCommand;
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
//# sourceMappingURL=build-wmt8ZcmA.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"build-wmt8ZcmA.cjs","names":["options: BuildOptions","buildContext: BuildContext","EndpointGenerator","FunctionGenerator","CronGenerator","SubscriberGenerator","provider: LegacyProvider","context: BuildContext","rootOutputDir: string","endpointGenerator: EndpointGenerator","functionGenerator: FunctionGenerator","cronGenerator: CronGenerator","subscriberGenerator: SubscriberGenerator","endpoints: GeneratedConstruct<Endpoint<any, any, any, any, any, any>>[]","functions: GeneratedConstruct<Function<any, any, any, any>>[]","crons: GeneratedConstruct<Cron<any, any, any, any>>[]","subscribers: GeneratedConstruct<Subscriber<any, any, any, any, any, any>>[]","enableOpenApi: boolean","routeMetadata: RouteInfo[]","appInfo: ServerAppInfo"],"sources":["../src/build/index.ts"],"sourcesContent":["import { mkdir } from 'node:fs/promises';\nimport { join, relative } from 'node:path';\nimport type { Cron } from '@geekmidas/constructs/crons';\nimport type { Endpoint } from '@geekmidas/constructs/endpoints';\nimport type { Function } from '@geekmidas/constructs/functions';\nimport type { Subscriber } from '@geekmidas/constructs/subscribers';\nimport { loadConfig, parseModuleConfig } from '../config';\nimport { normalizeTelescopeConfig } from '../dev';\nimport {\n CronGenerator,\n EndpointGenerator,\n FunctionGenerator,\n type GeneratedConstruct,\n SubscriberGenerator,\n} from '../generators';\nimport type { BuildOptions, LegacyProvider, RouteInfo } from '../types';\nimport {\n type ServerAppInfo,\n generateAwsManifest,\n generateServerManifest,\n} from './manifests';\nimport { resolveProviders } from './providerResolver';\nimport type { BuildContext } from './types';\n\nconst logger = console;\n\nexport async function buildCommand(options: BuildOptions): Promise<void> {\n const config = await loadConfig();\n\n // Resolve providers from new config format\n const resolved = resolveProviders(config, options);\n\n logger.log(`Building with providers: ${resolved.providers.join(', ')}`);\n logger.log(`Loading routes from: ${config.routes}`);\n if (config.functions) {\n logger.log(`Loading functions from: ${config.functions}`);\n }\n if (config.crons) {\n logger.log(`Loading crons from: ${config.crons}`);\n }\n if (config.subscribers) {\n logger.log(`Loading subscribers from: ${config.subscribers}`);\n }\n logger.log(`Using envParser: ${config.envParser}`);\n\n // Parse envParser and logger configuration\n const { path: envParserPath, importPattern: envParserImportPattern } =\n parseModuleConfig(config.envParser, 'envParser');\n const { path: loggerPath, importPattern: loggerImportPattern } =\n parseModuleConfig(config.logger, 'logger');\n\n // Normalize telescope configuration\n const telescope = normalizeTelescopeConfig(config.telescope);\n if (telescope) {\n logger.log(`🔭 Telescope enabled at ${telescope.path}`);\n }\n\n const buildContext: BuildContext = {\n envParserPath,\n envParserImportPattern,\n loggerPath,\n loggerImportPattern,\n telescope,\n };\n\n // Initialize generators\n const endpointGenerator = new EndpointGenerator();\n const functionGenerator = new FunctionGenerator();\n const cronGenerator = new CronGenerator();\n const subscriberGenerator = new SubscriberGenerator();\n\n // Load all constructs in parallel\n const [allEndpoints, allFunctions, allCrons, allSubscribers] =\n await Promise.all([\n endpointGenerator.load(config.routes),\n config.functions ? functionGenerator.load(config.functions) : [],\n config.crons ? cronGenerator.load(config.crons) : [],\n config.subscribers ? subscriberGenerator.load(config.subscribers) : [],\n ]);\n\n logger.log(`Found ${allEndpoints.length} endpoints`);\n logger.log(`Found ${allFunctions.length} functions`);\n logger.log(`Found ${allCrons.length} crons`);\n logger.log(`Found ${allSubscribers.length} subscribers`);\n\n if (\n allEndpoints.length === 0 &&\n allFunctions.length === 0 &&\n allCrons.length === 0 &&\n allSubscribers.length === 0\n ) {\n logger.log(\n 'No endpoints, functions, crons, or subscribers found to process',\n );\n return;\n }\n\n // Ensure .gkm directory exists\n const rootOutputDir = join(process.cwd(), '.gkm');\n await mkdir(rootOutputDir, { recursive: true });\n\n // Build for each provider and generate per-provider manifests\n for (const provider of resolved.providers) {\n await buildForProvider(\n provider,\n buildContext,\n rootOutputDir,\n endpointGenerator,\n functionGenerator,\n cronGenerator,\n subscriberGenerator,\n allEndpoints,\n allFunctions,\n allCrons,\n allSubscribers,\n resolved.enableOpenApi,\n );\n }\n}\n\nasync function buildForProvider(\n provider: LegacyProvider,\n context: BuildContext,\n rootOutputDir: string,\n endpointGenerator: EndpointGenerator,\n functionGenerator: FunctionGenerator,\n cronGenerator: CronGenerator,\n subscriberGenerator: SubscriberGenerator,\n endpoints: GeneratedConstruct<Endpoint<any, any, any, any, any, any>>[],\n functions: GeneratedConstruct<Function<any, any, any, any>>[],\n crons: GeneratedConstruct<Cron<any, any, any, any>>[],\n subscribers: GeneratedConstruct<Subscriber<any, any, any, any, any, any>>[],\n enableOpenApi: boolean,\n): Promise<void> {\n const outputDir = join(process.cwd(), '.gkm', provider);\n\n // Ensure output directory exists\n await mkdir(outputDir, { recursive: true });\n\n logger.log(`\\nGenerating handlers for provider: ${provider}`);\n\n // Build all constructs in parallel\n const [routes, functionInfos, cronInfos, subscriberInfos] = await Promise.all(\n [\n endpointGenerator.build(context, endpoints, outputDir, {\n provider,\n enableOpenApi,\n }),\n functionGenerator.build(context, functions, outputDir, { provider }),\n cronGenerator.build(context, crons, outputDir, { provider }),\n subscriberGenerator.build(context, subscribers, outputDir, { provider }),\n ],\n );\n\n logger.log(\n `Generated ${routes.length} routes, ${functionInfos.length} functions, ${cronInfos.length} crons, ${subscriberInfos.length} subscribers for ${provider}`,\n );\n\n // Generate provider-specific manifest\n if (provider === 'server') {\n // For server, collect actual route metadata from endpoint constructs\n const routeMetadata: RouteInfo[] = await Promise.all(\n endpoints.map(async ({ construct }) => ({\n path: construct._path,\n method: construct.method,\n handler: '', // Not needed for server manifest\n authorizer: construct.authorizer?.name ?? 'none',\n })),\n );\n\n const appInfo: ServerAppInfo = {\n handler: relative(process.cwd(), join(outputDir, 'app.ts')),\n endpoints: relative(process.cwd(), join(outputDir, 'endpoints.ts')),\n };\n\n await generateServerManifest(\n rootOutputDir,\n appInfo,\n routeMetadata,\n subscriberInfos,\n );\n } else {\n // For AWS providers, generate AWS manifest\n await generateAwsManifest(\n rootOutputDir,\n routes,\n functionInfos,\n cronInfos,\n subscriberInfos,\n );\n }\n}\n"],"mappings":"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"}
|