@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":"providerResolver-DEVKngbC.mjs","names":["config: GkmConfig","options: BuildOptions","providers: LegacyProvider[]","mainProvider: MainProvider","providersConfig?: ProvidersConfig","providersConfig: ProvidersConfig","config:\n | boolean\n | AWSApiGatewayConfig\n | AWSLambdaConfig\n | ServerConfig\n | undefined","service: 'apiGateway' | 'lambda'","subService?: 'v1' | 'v2' | 'functions' | 'crons'"],"sources":["../src/build/providerResolver.ts"],"sourcesContent":["import type {\n AWSApiGatewayConfig,\n AWSLambdaConfig,\n BuildOptions,\n GkmConfig,\n LegacyProvider,\n MainProvider,\n ProvidersConfig,\n ServerConfig,\n} from '../types';\n\nexport interface ResolvedProviders {\n providers: LegacyProvider[];\n enableOpenApi: boolean;\n}\n\n/**\n * Resolves provider configuration from the new simplified system\n * to the internal legacy format for backward compatibility\n */\nexport function resolveProviders(\n config: GkmConfig,\n options: BuildOptions,\n): ResolvedProviders {\n const providers: LegacyProvider[] = [];\n let enableOpenApi = options.enableOpenApi || false;\n\n // Handle legacy providers option (deprecated)\n if (options.providers) {\n return {\n providers: options.providers,\n enableOpenApi,\n };\n }\n\n // Handle new provider option\n if (options.provider) {\n const resolvedProviders = resolveMainProvider(\n options.provider,\n config.providers,\n );\n providers.push(...resolvedProviders.providers);\n enableOpenApi = resolvedProviders.enableOpenApi || enableOpenApi;\n }\n // Default: build all configured providers\n else if (config.providers) {\n const resolvedProviders = resolveAllConfiguredProviders(config.providers);\n providers.push(...resolvedProviders.providers);\n enableOpenApi = resolvedProviders.enableOpenApi || enableOpenApi;\n }\n // Fallback: use default AWS configuration\n else {\n providers.push('aws-apigatewayv2', 'aws-lambda');\n }\n\n return {\n providers: [...new Set(providers)], // Remove duplicates\n enableOpenApi,\n };\n}\n\nfunction resolveMainProvider(\n mainProvider: MainProvider,\n providersConfig?: ProvidersConfig,\n): ResolvedProviders {\n const providers: LegacyProvider[] = [];\n let enableOpenApi = false;\n\n if (mainProvider === 'aws') {\n const awsConfig = providersConfig?.aws;\n\n // Resolve API Gateway providers\n if (awsConfig?.apiGateway) {\n if (isEnabled(awsConfig.apiGateway.v1)) {\n providers.push('aws-apigatewayv1');\n }\n if (isEnabled(awsConfig.apiGateway.v2)) {\n providers.push('aws-apigatewayv2');\n }\n } else {\n // Default: enable v2 if no specific config\n providers.push('aws-apigatewayv2');\n }\n\n // Resolve Lambda providers\n if (awsConfig?.lambda) {\n if (\n isEnabled(awsConfig.lambda.functions) ||\n isEnabled(awsConfig.lambda.crons)\n ) {\n providers.push('aws-lambda');\n }\n } else {\n // Default: enable lambda if no specific config\n providers.push('aws-lambda');\n }\n } else if (mainProvider === 'server') {\n providers.push('server');\n const serverConfig = providersConfig?.server;\n\n if (typeof serverConfig === 'object' && serverConfig?.enableOpenApi) {\n enableOpenApi = true;\n }\n }\n\n return { providers, enableOpenApi };\n}\n\nfunction resolveAllConfiguredProviders(\n providersConfig: ProvidersConfig,\n): ResolvedProviders {\n const providers: LegacyProvider[] = [];\n let enableOpenApi = false;\n\n // AWS providers\n if (providersConfig.aws) {\n const awsProviders = resolveMainProvider('aws', providersConfig);\n providers.push(...awsProviders.providers);\n }\n\n // Server provider\n if (providersConfig.server && isEnabled(providersConfig.server)) {\n providers.push('server');\n if (\n typeof providersConfig.server === 'object' &&\n providersConfig.server.enableOpenApi\n ) {\n enableOpenApi = true;\n }\n }\n\n return { providers, enableOpenApi };\n}\n\nfunction isEnabled(\n config:\n | boolean\n | AWSApiGatewayConfig\n | AWSLambdaConfig\n | ServerConfig\n | undefined,\n): boolean {\n if (config === undefined) return false;\n if (typeof config === 'boolean') return config;\n return config.enabled !== false; // Default to true if enabled is not explicitly false\n}\n\n/**\n * Gets configuration for a specific AWS service\n */\nexport function getAWSServiceConfig<\n T extends AWSApiGatewayConfig | AWSLambdaConfig,\n>(\n config: GkmConfig,\n service: 'apiGateway' | 'lambda',\n subService?: 'v1' | 'v2' | 'functions' | 'crons',\n): T | undefined {\n const awsConfig = config.providers?.aws;\n if (!awsConfig) return undefined;\n\n if (service === 'apiGateway' && awsConfig.apiGateway) {\n const apiConfig = subService\n ? awsConfig.apiGateway[subService as 'v1' | 'v2']\n : undefined;\n return typeof apiConfig === 'object' ? (apiConfig as T) : undefined;\n }\n\n if (service === 'lambda' && awsConfig.lambda) {\n const lambdaConfig = subService\n ? awsConfig.lambda[subService as 'functions' | 'crons']\n : undefined;\n return typeof lambdaConfig === 'object' ? (lambdaConfig as T) : undefined;\n }\n\n return undefined;\n}\n\n/**\n * Gets server configuration\n */\nexport function getServerConfig(config: GkmConfig): ServerConfig | undefined {\n const serverConfig = config.providers?.server;\n return typeof serverConfig === 'object' ? serverConfig : undefined;\n}\n"],"mappings":";;;;;AAoBA,SAAgB,iBACdA,QACAC,SACmB;CACnB,MAAMC,YAA8B,CAAE;CACtC,IAAI,gBAAgB,QAAQ,iBAAiB;AAG7C,KAAI,QAAQ,UACV,QAAO;EACL,WAAW,QAAQ;EACnB;CACD;AAIH,KAAI,QAAQ,UAAU;EACpB,MAAM,oBAAoB,oBACxB,QAAQ,UACR,OAAO,UACR;AACD,YAAU,KAAK,GAAG,kBAAkB,UAAU;AAC9C,kBAAgB,kBAAkB,iBAAiB;CACpD,WAEQ,OAAO,WAAW;EACzB,MAAM,oBAAoB,8BAA8B,OAAO,UAAU;AACzE,YAAU,KAAK,GAAG,kBAAkB,UAAU;AAC9C,kBAAgB,kBAAkB,iBAAiB;CACpD,MAGC,WAAU,KAAK,oBAAoB,aAAa;AAGlD,QAAO;EACL,WAAW,CAAC,GAAG,IAAI,IAAI,UAAW;EAClC;CACD;AACF;AAED,SAAS,oBACPC,cACAC,iBACmB;CACnB,MAAMF,YAA8B,CAAE;CACtC,IAAI,gBAAgB;AAEpB,KAAI,iBAAiB,OAAO;EAC1B,MAAM,YAAY,iBAAiB;AAGnC,MAAI,WAAW,YAAY;AACzB,OAAI,UAAU,UAAU,WAAW,GAAG,CACpC,WAAU,KAAK,mBAAmB;AAEpC,OAAI,UAAU,UAAU,WAAW,GAAG,CACpC,WAAU,KAAK,mBAAmB;EAErC,MAEC,WAAU,KAAK,mBAAmB;AAIpC,MAAI,WAAW,QACb;OACE,UAAU,UAAU,OAAO,UAAU,IACrC,UAAU,UAAU,OAAO,MAAM,CAEjC,WAAU,KAAK,aAAa;EAC7B,MAGD,WAAU,KAAK,aAAa;CAE/B,WAAU,iBAAiB,UAAU;AACpC,YAAU,KAAK,SAAS;EACxB,MAAM,eAAe,iBAAiB;AAEtC,aAAW,iBAAiB,YAAY,cAAc,cACpD,iBAAgB;CAEnB;AAED,QAAO;EAAE;EAAW;CAAe;AACpC;AAED,SAAS,8BACPG,iBACmB;CACnB,MAAMH,YAA8B,CAAE;CACtC,IAAI,gBAAgB;AAGpB,KAAI,gBAAgB,KAAK;EACvB,MAAM,eAAe,oBAAoB,OAAO,gBAAgB;AAChE,YAAU,KAAK,GAAG,aAAa,UAAU;CAC1C;AAGD,KAAI,gBAAgB,UAAU,UAAU,gBAAgB,OAAO,EAAE;AAC/D,YAAU,KAAK,SAAS;AACxB,aACS,gBAAgB,WAAW,YAClC,gBAAgB,OAAO,cAEvB,iBAAgB;CAEnB;AAED,QAAO;EAAE;EAAW;CAAe;AACpC;AAED,SAAS,UACPI,QAMS;AACT,KAAI,kBAAsB,QAAO;AACjC,YAAW,WAAW,UAAW,QAAO;AACxC,QAAO,OAAO,YAAY;AAC3B;;;;AAKD,SAAgB,oBAGdN,QACAO,SACAC,YACe;CACf,MAAM,YAAY,OAAO,WAAW;AACpC,MAAK,UAAW;AAEhB,KAAI,YAAY,gBAAgB,UAAU,YAAY;EACpD,MAAM,YAAY,aACd,UAAU,WAAW;AAEzB,gBAAc,cAAc,WAAY;CACzC;AAED,KAAI,YAAY,YAAY,UAAU,QAAQ;EAC5C,MAAM,eAAe,aACjB,UAAU,OAAO;AAErB,gBAAc,iBAAiB,WAAY;CAC5C;AAED;AACD;;;;AAKD,SAAgB,gBAAgBR,QAA6C;CAC3E,MAAM,eAAe,OAAO,WAAW;AACvC,eAAc,iBAAiB,WAAW;AAC3C"}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
//#region src/build/providerResolver.ts
|
|
3
|
-
/**
|
|
4
|
-
* Resolves provider configuration from the new simplified system
|
|
5
|
-
* to the internal legacy format for backward compatibility
|
|
6
|
-
*/
|
|
7
|
-
function resolveProviders(config, options) {
|
|
8
|
-
const providers = [];
|
|
9
|
-
let enableOpenApi = options.enableOpenApi || false;
|
|
10
|
-
if (options.providers) return {
|
|
11
|
-
providers: options.providers,
|
|
12
|
-
enableOpenApi
|
|
13
|
-
};
|
|
14
|
-
if (options.provider) {
|
|
15
|
-
const resolvedProviders = resolveMainProvider(options.provider, config.providers);
|
|
16
|
-
providers.push(...resolvedProviders.providers);
|
|
17
|
-
enableOpenApi = resolvedProviders.enableOpenApi || enableOpenApi;
|
|
18
|
-
} else if (config.providers) {
|
|
19
|
-
const resolvedProviders = resolveAllConfiguredProviders(config.providers);
|
|
20
|
-
providers.push(...resolvedProviders.providers);
|
|
21
|
-
enableOpenApi = resolvedProviders.enableOpenApi || enableOpenApi;
|
|
22
|
-
} else providers.push("aws-apigatewayv2", "aws-lambda");
|
|
23
|
-
return {
|
|
24
|
-
providers: [...new Set(providers)],
|
|
25
|
-
enableOpenApi
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
function resolveMainProvider(mainProvider, providersConfig) {
|
|
29
|
-
const providers = [];
|
|
30
|
-
let enableOpenApi = false;
|
|
31
|
-
if (mainProvider === "aws") {
|
|
32
|
-
const awsConfig = providersConfig?.aws;
|
|
33
|
-
if (awsConfig?.apiGateway) {
|
|
34
|
-
if (isEnabled(awsConfig.apiGateway.v1)) providers.push("aws-apigatewayv1");
|
|
35
|
-
if (isEnabled(awsConfig.apiGateway.v2)) providers.push("aws-apigatewayv2");
|
|
36
|
-
} else providers.push("aws-apigatewayv2");
|
|
37
|
-
if (awsConfig?.lambda) {
|
|
38
|
-
if (isEnabled(awsConfig.lambda.functions) || isEnabled(awsConfig.lambda.crons)) providers.push("aws-lambda");
|
|
39
|
-
} else providers.push("aws-lambda");
|
|
40
|
-
} else if (mainProvider === "server") {
|
|
41
|
-
providers.push("server");
|
|
42
|
-
const serverConfig = providersConfig?.server;
|
|
43
|
-
if (typeof serverConfig === "object" && serverConfig?.enableOpenApi) enableOpenApi = true;
|
|
44
|
-
}
|
|
45
|
-
return {
|
|
46
|
-
providers,
|
|
47
|
-
enableOpenApi
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
function resolveAllConfiguredProviders(providersConfig) {
|
|
51
|
-
const providers = [];
|
|
52
|
-
let enableOpenApi = false;
|
|
53
|
-
if (providersConfig.aws) {
|
|
54
|
-
const awsProviders = resolveMainProvider("aws", providersConfig);
|
|
55
|
-
providers.push(...awsProviders.providers);
|
|
56
|
-
}
|
|
57
|
-
if (providersConfig.server && isEnabled(providersConfig.server)) {
|
|
58
|
-
providers.push("server");
|
|
59
|
-
if (typeof providersConfig.server === "object" && providersConfig.server.enableOpenApi) enableOpenApi = true;
|
|
60
|
-
}
|
|
61
|
-
return {
|
|
62
|
-
providers,
|
|
63
|
-
enableOpenApi
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
function isEnabled(config) {
|
|
67
|
-
if (config === void 0) return false;
|
|
68
|
-
if (typeof config === "boolean") return config;
|
|
69
|
-
return config.enabled !== false;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Gets configuration for a specific AWS service
|
|
73
|
-
*/
|
|
74
|
-
function getAWSServiceConfig(config, service, subService) {
|
|
75
|
-
const awsConfig = config.providers?.aws;
|
|
76
|
-
if (!awsConfig) return void 0;
|
|
77
|
-
if (service === "apiGateway" && awsConfig.apiGateway) {
|
|
78
|
-
const apiConfig = subService ? awsConfig.apiGateway[subService] : void 0;
|
|
79
|
-
return typeof apiConfig === "object" ? apiConfig : void 0;
|
|
80
|
-
}
|
|
81
|
-
if (service === "lambda" && awsConfig.lambda) {
|
|
82
|
-
const lambdaConfig = subService ? awsConfig.lambda[subService] : void 0;
|
|
83
|
-
return typeof lambdaConfig === "object" ? lambdaConfig : void 0;
|
|
84
|
-
}
|
|
85
|
-
return void 0;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Gets server configuration
|
|
89
|
-
*/
|
|
90
|
-
function getServerConfig(config) {
|
|
91
|
-
const serverConfig = config.providers?.server;
|
|
92
|
-
return typeof serverConfig === "object" ? serverConfig : void 0;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
//#endregion
|
|
96
|
-
Object.defineProperty(exports, 'getAWSServiceConfig', {
|
|
97
|
-
enumerable: true,
|
|
98
|
-
get: function () {
|
|
99
|
-
return getAWSServiceConfig;
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
Object.defineProperty(exports, 'getServerConfig', {
|
|
103
|
-
enumerable: true,
|
|
104
|
-
get: function () {
|
|
105
|
-
return getServerConfig;
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
Object.defineProperty(exports, 'resolveProviders', {
|
|
109
|
-
enumerable: true,
|
|
110
|
-
get: function () {
|
|
111
|
-
return resolveProviders;
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
//# sourceMappingURL=providerResolver-DOTbN9jo.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"providerResolver-DOTbN9jo.cjs","names":["config: GkmConfig","options: BuildOptions","providers: LegacyProvider[]","mainProvider: MainProvider","providersConfig?: ProvidersConfig","providersConfig: ProvidersConfig","config:\n | boolean\n | AWSApiGatewayConfig\n | AWSLambdaConfig\n | ServerConfig\n | undefined","service: 'apiGateway' | 'lambda'","subService?: 'v1' | 'v2' | 'functions' | 'crons'"],"sources":["../src/build/providerResolver.ts"],"sourcesContent":["import type {\n AWSApiGatewayConfig,\n AWSLambdaConfig,\n BuildOptions,\n GkmConfig,\n LegacyProvider,\n MainProvider,\n ProvidersConfig,\n ServerConfig,\n} from '../types';\n\nexport interface ResolvedProviders {\n providers: LegacyProvider[];\n enableOpenApi: boolean;\n}\n\n/**\n * Resolves provider configuration from the new simplified system\n * to the internal legacy format for backward compatibility\n */\nexport function resolveProviders(\n config: GkmConfig,\n options: BuildOptions,\n): ResolvedProviders {\n const providers: LegacyProvider[] = [];\n let enableOpenApi = options.enableOpenApi || false;\n\n // Handle legacy providers option (deprecated)\n if (options.providers) {\n return {\n providers: options.providers,\n enableOpenApi,\n };\n }\n\n // Handle new provider option\n if (options.provider) {\n const resolvedProviders = resolveMainProvider(\n options.provider,\n config.providers,\n );\n providers.push(...resolvedProviders.providers);\n enableOpenApi = resolvedProviders.enableOpenApi || enableOpenApi;\n }\n // Default: build all configured providers\n else if (config.providers) {\n const resolvedProviders = resolveAllConfiguredProviders(config.providers);\n providers.push(...resolvedProviders.providers);\n enableOpenApi = resolvedProviders.enableOpenApi || enableOpenApi;\n }\n // Fallback: use default AWS configuration\n else {\n providers.push('aws-apigatewayv2', 'aws-lambda');\n }\n\n return {\n providers: [...new Set(providers)], // Remove duplicates\n enableOpenApi,\n };\n}\n\nfunction resolveMainProvider(\n mainProvider: MainProvider,\n providersConfig?: ProvidersConfig,\n): ResolvedProviders {\n const providers: LegacyProvider[] = [];\n let enableOpenApi = false;\n\n if (mainProvider === 'aws') {\n const awsConfig = providersConfig?.aws;\n\n // Resolve API Gateway providers\n if (awsConfig?.apiGateway) {\n if (isEnabled(awsConfig.apiGateway.v1)) {\n providers.push('aws-apigatewayv1');\n }\n if (isEnabled(awsConfig.apiGateway.v2)) {\n providers.push('aws-apigatewayv2');\n }\n } else {\n // Default: enable v2 if no specific config\n providers.push('aws-apigatewayv2');\n }\n\n // Resolve Lambda providers\n if (awsConfig?.lambda) {\n if (\n isEnabled(awsConfig.lambda.functions) ||\n isEnabled(awsConfig.lambda.crons)\n ) {\n providers.push('aws-lambda');\n }\n } else {\n // Default: enable lambda if no specific config\n providers.push('aws-lambda');\n }\n } else if (mainProvider === 'server') {\n providers.push('server');\n const serverConfig = providersConfig?.server;\n\n if (typeof serverConfig === 'object' && serverConfig?.enableOpenApi) {\n enableOpenApi = true;\n }\n }\n\n return { providers, enableOpenApi };\n}\n\nfunction resolveAllConfiguredProviders(\n providersConfig: ProvidersConfig,\n): ResolvedProviders {\n const providers: LegacyProvider[] = [];\n let enableOpenApi = false;\n\n // AWS providers\n if (providersConfig.aws) {\n const awsProviders = resolveMainProvider('aws', providersConfig);\n providers.push(...awsProviders.providers);\n }\n\n // Server provider\n if (providersConfig.server && isEnabled(providersConfig.server)) {\n providers.push('server');\n if (\n typeof providersConfig.server === 'object' &&\n providersConfig.server.enableOpenApi\n ) {\n enableOpenApi = true;\n }\n }\n\n return { providers, enableOpenApi };\n}\n\nfunction isEnabled(\n config:\n | boolean\n | AWSApiGatewayConfig\n | AWSLambdaConfig\n | ServerConfig\n | undefined,\n): boolean {\n if (config === undefined) return false;\n if (typeof config === 'boolean') return config;\n return config.enabled !== false; // Default to true if enabled is not explicitly false\n}\n\n/**\n * Gets configuration for a specific AWS service\n */\nexport function getAWSServiceConfig<\n T extends AWSApiGatewayConfig | AWSLambdaConfig,\n>(\n config: GkmConfig,\n service: 'apiGateway' | 'lambda',\n subService?: 'v1' | 'v2' | 'functions' | 'crons',\n): T | undefined {\n const awsConfig = config.providers?.aws;\n if (!awsConfig) return undefined;\n\n if (service === 'apiGateway' && awsConfig.apiGateway) {\n const apiConfig = subService\n ? awsConfig.apiGateway[subService as 'v1' | 'v2']\n : undefined;\n return typeof apiConfig === 'object' ? (apiConfig as T) : undefined;\n }\n\n if (service === 'lambda' && awsConfig.lambda) {\n const lambdaConfig = subService\n ? awsConfig.lambda[subService as 'functions' | 'crons']\n : undefined;\n return typeof lambdaConfig === 'object' ? (lambdaConfig as T) : undefined;\n }\n\n return undefined;\n}\n\n/**\n * Gets server configuration\n */\nexport function getServerConfig(config: GkmConfig): ServerConfig | undefined {\n const serverConfig = config.providers?.server;\n return typeof serverConfig === 'object' ? serverConfig : undefined;\n}\n"],"mappings":";;;;;;AAoBA,SAAgB,iBACdA,QACAC,SACmB;CACnB,MAAMC,YAA8B,CAAE;CACtC,IAAI,gBAAgB,QAAQ,iBAAiB;AAG7C,KAAI,QAAQ,UACV,QAAO;EACL,WAAW,QAAQ;EACnB;CACD;AAIH,KAAI,QAAQ,UAAU;EACpB,MAAM,oBAAoB,oBACxB,QAAQ,UACR,OAAO,UACR;AACD,YAAU,KAAK,GAAG,kBAAkB,UAAU;AAC9C,kBAAgB,kBAAkB,iBAAiB;CACpD,WAEQ,OAAO,WAAW;EACzB,MAAM,oBAAoB,8BAA8B,OAAO,UAAU;AACzE,YAAU,KAAK,GAAG,kBAAkB,UAAU;AAC9C,kBAAgB,kBAAkB,iBAAiB;CACpD,MAGC,WAAU,KAAK,oBAAoB,aAAa;AAGlD,QAAO;EACL,WAAW,CAAC,GAAG,IAAI,IAAI,UAAW;EAClC;CACD;AACF;AAED,SAAS,oBACPC,cACAC,iBACmB;CACnB,MAAMF,YAA8B,CAAE;CACtC,IAAI,gBAAgB;AAEpB,KAAI,iBAAiB,OAAO;EAC1B,MAAM,YAAY,iBAAiB;AAGnC,MAAI,WAAW,YAAY;AACzB,OAAI,UAAU,UAAU,WAAW,GAAG,CACpC,WAAU,KAAK,mBAAmB;AAEpC,OAAI,UAAU,UAAU,WAAW,GAAG,CACpC,WAAU,KAAK,mBAAmB;EAErC,MAEC,WAAU,KAAK,mBAAmB;AAIpC,MAAI,WAAW,QACb;OACE,UAAU,UAAU,OAAO,UAAU,IACrC,UAAU,UAAU,OAAO,MAAM,CAEjC,WAAU,KAAK,aAAa;EAC7B,MAGD,WAAU,KAAK,aAAa;CAE/B,WAAU,iBAAiB,UAAU;AACpC,YAAU,KAAK,SAAS;EACxB,MAAM,eAAe,iBAAiB;AAEtC,aAAW,iBAAiB,YAAY,cAAc,cACpD,iBAAgB;CAEnB;AAED,QAAO;EAAE;EAAW;CAAe;AACpC;AAED,SAAS,8BACPG,iBACmB;CACnB,MAAMH,YAA8B,CAAE;CACtC,IAAI,gBAAgB;AAGpB,KAAI,gBAAgB,KAAK;EACvB,MAAM,eAAe,oBAAoB,OAAO,gBAAgB;AAChE,YAAU,KAAK,GAAG,aAAa,UAAU;CAC1C;AAGD,KAAI,gBAAgB,UAAU,UAAU,gBAAgB,OAAO,EAAE;AAC/D,YAAU,KAAK,SAAS;AACxB,aACS,gBAAgB,WAAW,YAClC,gBAAgB,OAAO,cAEvB,iBAAgB;CAEnB;AAED,QAAO;EAAE;EAAW;CAAe;AACpC;AAED,SAAS,UACPI,QAMS;AACT,KAAI,kBAAsB,QAAO;AACjC,YAAW,WAAW,UAAW,QAAO;AACxC,QAAO,OAAO,YAAY;AAC3B;;;;AAKD,SAAgB,oBAGdN,QACAO,SACAC,YACe;CACf,MAAM,YAAY,OAAO,WAAW;AACpC,MAAK,UAAW;AAEhB,KAAI,YAAY,gBAAgB,UAAU,YAAY;EACpD,MAAM,YAAY,aACd,UAAU,WAAW;AAEzB,gBAAc,cAAc,WAAY;CACzC;AAED,KAAI,YAAY,YAAY,UAAU,QAAQ;EAC5C,MAAM,eAAe,aACjB,UAAU,OAAO;AAErB,gBAAc,iBAAiB,WAAY;CAC5C;AAED;AACD;;;;AAKD,SAAgB,gBAAgBR,QAA6C;CAC3E,MAAM,eAAe,OAAO,WAAW;AACvC,eAAc,iBAAiB,WAAW;AAC3C"}
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
//#region src/init/templates/serverless.ts
|
|
3
|
-
const serverlessTemplate = {
|
|
4
|
-
name: "serverless",
|
|
5
|
-
description: "AWS Lambda handlers",
|
|
6
|
-
dependencies: {
|
|
7
|
-
"@geekmidas/constructs": "workspace:*",
|
|
8
|
-
"@geekmidas/envkit": "workspace:*",
|
|
9
|
-
"@geekmidas/logger": "workspace:*",
|
|
10
|
-
"@geekmidas/cloud": "workspace:*",
|
|
11
|
-
hono: "~4.8.2",
|
|
12
|
-
pino: "~9.6.0"
|
|
13
|
-
},
|
|
14
|
-
devDependencies: {
|
|
15
|
-
"@biomejs/biome": "~1.9.4",
|
|
16
|
-
"@geekmidas/cli": "workspace:*",
|
|
17
|
-
"@types/aws-lambda": "~8.10.92",
|
|
18
|
-
"@types/node": "~22.0.0",
|
|
19
|
-
tsx: "~4.20.0",
|
|
20
|
-
turbo: "~2.3.0",
|
|
21
|
-
typescript: "~5.8.2",
|
|
22
|
-
vitest: "~4.0.0"
|
|
23
|
-
},
|
|
24
|
-
scripts: {
|
|
25
|
-
dev: "gkm dev",
|
|
26
|
-
build: "gkm build --provider aws-apigatewayv2",
|
|
27
|
-
test: "vitest",
|
|
28
|
-
"test:once": "vitest run",
|
|
29
|
-
typecheck: "tsc --noEmit",
|
|
30
|
-
lint: "biome lint .",
|
|
31
|
-
fmt: "biome format . --write",
|
|
32
|
-
"fmt:check": "biome format ."
|
|
33
|
-
},
|
|
34
|
-
files: (options) => {
|
|
35
|
-
const { loggerType, routesStructure } = options;
|
|
36
|
-
const loggerContent = `import { createLogger } from '@geekmidas/logger/${loggerType}';
|
|
37
|
-
|
|
38
|
-
export const logger = createLogger();
|
|
39
|
-
`;
|
|
40
|
-
const getRoutePath = (file) => {
|
|
41
|
-
switch (routesStructure) {
|
|
42
|
-
case "centralized-endpoints": return `src/endpoints/${file}`;
|
|
43
|
-
case "centralized-routes": return `src/routes/${file}`;
|
|
44
|
-
case "domain-based": return `src/${file.replace(".ts", "")}/routes/index.ts`;
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
const files = [
|
|
48
|
-
{
|
|
49
|
-
path: "src/config/env.ts",
|
|
50
|
-
content: `import { EnvironmentParser } from '@geekmidas/envkit';
|
|
51
|
-
|
|
52
|
-
export const envParser = new EnvironmentParser(process.env);
|
|
53
|
-
|
|
54
|
-
export const config = envParser
|
|
55
|
-
.create((get) => ({
|
|
56
|
-
stage: get('STAGE').string().default('dev'),
|
|
57
|
-
region: get('AWS_REGION').string().default('us-east-1'),${options.database ? `
|
|
58
|
-
database: {
|
|
59
|
-
url: get('DATABASE_URL').string(),
|
|
60
|
-
},` : ""}
|
|
61
|
-
}))
|
|
62
|
-
.parse();
|
|
63
|
-
`
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
path: "src/config/logger.ts",
|
|
67
|
-
content: loggerContent
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
path: getRoutePath("health.ts"),
|
|
71
|
-
content: `import { e } from '@geekmidas/constructs/endpoints';
|
|
72
|
-
|
|
73
|
-
export default e
|
|
74
|
-
.get('/health')
|
|
75
|
-
.handle(async () => ({
|
|
76
|
-
status: 'ok',
|
|
77
|
-
timestamp: new Date().toISOString(),
|
|
78
|
-
region: process.env.AWS_REGION || 'local',
|
|
79
|
-
}));
|
|
80
|
-
`
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
path: "src/functions/hello.ts",
|
|
84
|
-
content: `import { f } from '@geekmidas/constructs/functions';
|
|
85
|
-
import { z } from 'zod';
|
|
86
|
-
|
|
87
|
-
export default f
|
|
88
|
-
.input(z.object({ name: z.string() }))
|
|
89
|
-
.output(z.object({ message: z.string() }))
|
|
90
|
-
.handle(async ({ input }) => ({
|
|
91
|
-
message: \`Hello, \${input.name}!\`,
|
|
92
|
-
}));
|
|
93
|
-
`
|
|
94
|
-
}
|
|
95
|
-
];
|
|
96
|
-
if (options.telescope) files.push({
|
|
97
|
-
path: "src/config/telescope.ts",
|
|
98
|
-
content: `import { Telescope } from '@geekmidas/telescope';
|
|
99
|
-
import { InMemoryStorage } from '@geekmidas/telescope/storage/memory';
|
|
100
|
-
|
|
101
|
-
// Note: For production Lambda, consider using a persistent storage
|
|
102
|
-
export const telescope = new Telescope({
|
|
103
|
-
storage: new InMemoryStorage({ maxEntries: 50 }),
|
|
104
|
-
enabled: process.env.STAGE === 'dev',
|
|
105
|
-
});
|
|
106
|
-
`
|
|
107
|
-
});
|
|
108
|
-
return files;
|
|
109
|
-
}
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
//#endregion
|
|
113
|
-
Object.defineProperty(exports, 'serverlessTemplate', {
|
|
114
|
-
enumerable: true,
|
|
115
|
-
get: function () {
|
|
116
|
-
return serverlessTemplate;
|
|
117
|
-
}
|
|
118
|
-
});
|
|
119
|
-
//# sourceMappingURL=serverless-AGOS-l3G.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serverless-AGOS-l3G.cjs","names":["serverlessTemplate: TemplateConfig","options: TemplateOptions","file: string","files: GeneratedFile[]"],"sources":["../src/init/templates/serverless.ts"],"sourcesContent":["import type {\n GeneratedFile,\n TemplateConfig,\n TemplateOptions,\n} from './index.js';\n\nexport const serverlessTemplate: TemplateConfig = {\n name: 'serverless',\n description: 'AWS Lambda handlers',\n\n dependencies: {\n '@geekmidas/constructs': 'workspace:*',\n '@geekmidas/envkit': 'workspace:*',\n '@geekmidas/logger': 'workspace:*',\n '@geekmidas/cloud': 'workspace:*',\n hono: '~4.8.2',\n pino: '~9.6.0',\n },\n\n devDependencies: {\n '@biomejs/biome': '~1.9.4',\n '@geekmidas/cli': 'workspace:*',\n '@types/aws-lambda': '~8.10.92',\n '@types/node': '~22.0.0',\n tsx: '~4.20.0',\n turbo: '~2.3.0',\n typescript: '~5.8.2',\n vitest: '~4.0.0',\n },\n\n scripts: {\n dev: 'gkm dev',\n build: 'gkm build --provider aws-apigatewayv2',\n test: 'vitest',\n 'test:once': 'vitest run',\n typecheck: 'tsc --noEmit',\n lint: 'biome lint .',\n fmt: 'biome format . --write',\n 'fmt:check': 'biome format .',\n },\n\n files: (options: TemplateOptions): GeneratedFile[] => {\n const { loggerType, routesStructure } = options;\n\n const loggerContent = `import { createLogger } from '@geekmidas/logger/${loggerType}';\n\nexport const logger = createLogger();\n`;\n\n // Get route path based on structure\n const getRoutePath = (file: string) => {\n switch (routesStructure) {\n case 'centralized-endpoints':\n return `src/endpoints/${file}`;\n case 'centralized-routes':\n return `src/routes/${file}`;\n case 'domain-based':\n return `src/${file.replace('.ts', '')}/routes/index.ts`;\n }\n };\n\n const files: GeneratedFile[] = [\n // src/config/env.ts\n {\n path: 'src/config/env.ts',\n content: `import { EnvironmentParser } from '@geekmidas/envkit';\n\nexport const envParser = new EnvironmentParser(process.env);\n\nexport const config = envParser\n .create((get) => ({\n stage: get('STAGE').string().default('dev'),\n region: get('AWS_REGION').string().default('us-east-1'),${\n options.database\n ? `\n database: {\n url: get('DATABASE_URL').string(),\n },`\n : ''\n }\n }))\n .parse();\n`,\n },\n\n // src/config/logger.ts\n {\n path: 'src/config/logger.ts',\n content: loggerContent,\n },\n\n // health endpoint\n {\n path: getRoutePath('health.ts'),\n content: `import { e } from '@geekmidas/constructs/endpoints';\n\nexport default e\n .get('/health')\n .handle(async () => ({\n status: 'ok',\n timestamp: new Date().toISOString(),\n region: process.env.AWS_REGION || 'local',\n }));\n`,\n },\n\n // src/functions/hello.ts\n {\n path: 'src/functions/hello.ts',\n content: `import { f } from '@geekmidas/constructs/functions';\nimport { z } from 'zod';\n\nexport default f\n .input(z.object({ name: z.string() }))\n .output(z.object({ message: z.string() }))\n .handle(async ({ input }) => ({\n message: \\`Hello, \\${input.name}!\\`,\n }));\n`,\n },\n ];\n\n // Add Telescope config if enabled\n if (options.telescope) {\n files.push({\n path: 'src/config/telescope.ts',\n content: `import { Telescope } from '@geekmidas/telescope';\nimport { InMemoryStorage } from '@geekmidas/telescope/storage/memory';\n\n// Note: For production Lambda, consider using a persistent storage\nexport const telescope = new Telescope({\n storage: new InMemoryStorage({ maxEntries: 50 }),\n enabled: process.env.STAGE === 'dev',\n});\n`,\n });\n }\n\n return files;\n },\n};\n"],"mappings":";;AAMA,MAAaA,qBAAqC;CAChD,MAAM;CACN,aAAa;CAEb,cAAc;EACZ,yBAAyB;EACzB,qBAAqB;EACrB,qBAAqB;EACrB,oBAAoB;EACpB,MAAM;EACN,MAAM;CACP;CAED,iBAAiB;EACf,kBAAkB;EAClB,kBAAkB;EAClB,qBAAqB;EACrB,eAAe;EACf,KAAK;EACL,OAAO;EACP,YAAY;EACZ,QAAQ;CACT;CAED,SAAS;EACP,KAAK;EACL,OAAO;EACP,MAAM;EACN,aAAa;EACb,WAAW;EACX,MAAM;EACN,KAAK;EACL,aAAa;CACd;CAED,OAAO,CAACC,YAA8C;EACpD,MAAM,EAAE,YAAY,iBAAiB,GAAG;EAExC,MAAM,iBAAiB,kDAAkD,WAAW;;;;EAMpF,MAAM,eAAe,CAACC,SAAiB;AACrC,WAAQ,iBAAR;IACE,KAAK,wBACH,SAAQ,gBAAgB,KAAK;IAC/B,KAAK,qBACH,SAAQ,aAAa,KAAK;IAC5B,KAAK,eACH,SAAQ,MAAM,KAAK,QAAQ,OAAO,GAAG,CAAC;GACzC;EACF;EAED,MAAMC,QAAyB;GAE7B;IACE,MAAM;IACN,UAAU;;;;;;;8DAQZ,QAAQ,YACH;;;UAID,GACL;;;;GAIE;GAGD;IACE,MAAM;IACN,SAAS;GACV;GAGD;IACE,MAAM,aAAa,YAAY;IAC/B,UAAU;;;;;;;;;;GAUX;GAGD;IACE,MAAM;IACN,UAAU;;;;;;;;;;GAUX;EACF;AAGD,MAAI,QAAQ,UACV,OAAM,KAAK;GACT,MAAM;GACN,UAAU;;;;;;;;;EASX,EAAC;AAGJ,SAAO;CACR;AACF"}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
//#region src/init/templates/serverless.ts
|
|
2
|
-
const serverlessTemplate = {
|
|
3
|
-
name: "serverless",
|
|
4
|
-
description: "AWS Lambda handlers",
|
|
5
|
-
dependencies: {
|
|
6
|
-
"@geekmidas/constructs": "workspace:*",
|
|
7
|
-
"@geekmidas/envkit": "workspace:*",
|
|
8
|
-
"@geekmidas/logger": "workspace:*",
|
|
9
|
-
"@geekmidas/cloud": "workspace:*",
|
|
10
|
-
hono: "~4.8.2",
|
|
11
|
-
pino: "~9.6.0"
|
|
12
|
-
},
|
|
13
|
-
devDependencies: {
|
|
14
|
-
"@biomejs/biome": "~1.9.4",
|
|
15
|
-
"@geekmidas/cli": "workspace:*",
|
|
16
|
-
"@types/aws-lambda": "~8.10.92",
|
|
17
|
-
"@types/node": "~22.0.0",
|
|
18
|
-
tsx: "~4.20.0",
|
|
19
|
-
turbo: "~2.3.0",
|
|
20
|
-
typescript: "~5.8.2",
|
|
21
|
-
vitest: "~4.0.0"
|
|
22
|
-
},
|
|
23
|
-
scripts: {
|
|
24
|
-
dev: "gkm dev",
|
|
25
|
-
build: "gkm build --provider aws-apigatewayv2",
|
|
26
|
-
test: "vitest",
|
|
27
|
-
"test:once": "vitest run",
|
|
28
|
-
typecheck: "tsc --noEmit",
|
|
29
|
-
lint: "biome lint .",
|
|
30
|
-
fmt: "biome format . --write",
|
|
31
|
-
"fmt:check": "biome format ."
|
|
32
|
-
},
|
|
33
|
-
files: (options) => {
|
|
34
|
-
const { loggerType, routesStructure } = options;
|
|
35
|
-
const loggerContent = `import { createLogger } from '@geekmidas/logger/${loggerType}';
|
|
36
|
-
|
|
37
|
-
export const logger = createLogger();
|
|
38
|
-
`;
|
|
39
|
-
const getRoutePath = (file) => {
|
|
40
|
-
switch (routesStructure) {
|
|
41
|
-
case "centralized-endpoints": return `src/endpoints/${file}`;
|
|
42
|
-
case "centralized-routes": return `src/routes/${file}`;
|
|
43
|
-
case "domain-based": return `src/${file.replace(".ts", "")}/routes/index.ts`;
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
const files = [
|
|
47
|
-
{
|
|
48
|
-
path: "src/config/env.ts",
|
|
49
|
-
content: `import { EnvironmentParser } from '@geekmidas/envkit';
|
|
50
|
-
|
|
51
|
-
export const envParser = new EnvironmentParser(process.env);
|
|
52
|
-
|
|
53
|
-
export const config = envParser
|
|
54
|
-
.create((get) => ({
|
|
55
|
-
stage: get('STAGE').string().default('dev'),
|
|
56
|
-
region: get('AWS_REGION').string().default('us-east-1'),${options.database ? `
|
|
57
|
-
database: {
|
|
58
|
-
url: get('DATABASE_URL').string(),
|
|
59
|
-
},` : ""}
|
|
60
|
-
}))
|
|
61
|
-
.parse();
|
|
62
|
-
`
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
path: "src/config/logger.ts",
|
|
66
|
-
content: loggerContent
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
path: getRoutePath("health.ts"),
|
|
70
|
-
content: `import { e } from '@geekmidas/constructs/endpoints';
|
|
71
|
-
|
|
72
|
-
export default e
|
|
73
|
-
.get('/health')
|
|
74
|
-
.handle(async () => ({
|
|
75
|
-
status: 'ok',
|
|
76
|
-
timestamp: new Date().toISOString(),
|
|
77
|
-
region: process.env.AWS_REGION || 'local',
|
|
78
|
-
}));
|
|
79
|
-
`
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
path: "src/functions/hello.ts",
|
|
83
|
-
content: `import { f } from '@geekmidas/constructs/functions';
|
|
84
|
-
import { z } from 'zod';
|
|
85
|
-
|
|
86
|
-
export default f
|
|
87
|
-
.input(z.object({ name: z.string() }))
|
|
88
|
-
.output(z.object({ message: z.string() }))
|
|
89
|
-
.handle(async ({ input }) => ({
|
|
90
|
-
message: \`Hello, \${input.name}!\`,
|
|
91
|
-
}));
|
|
92
|
-
`
|
|
93
|
-
}
|
|
94
|
-
];
|
|
95
|
-
if (options.telescope) files.push({
|
|
96
|
-
path: "src/config/telescope.ts",
|
|
97
|
-
content: `import { Telescope } from '@geekmidas/telescope';
|
|
98
|
-
import { InMemoryStorage } from '@geekmidas/telescope/storage/memory';
|
|
99
|
-
|
|
100
|
-
// Note: For production Lambda, consider using a persistent storage
|
|
101
|
-
export const telescope = new Telescope({
|
|
102
|
-
storage: new InMemoryStorage({ maxEntries: 50 }),
|
|
103
|
-
enabled: process.env.STAGE === 'dev',
|
|
104
|
-
});
|
|
105
|
-
`
|
|
106
|
-
});
|
|
107
|
-
return files;
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
|
|
111
|
-
//#endregion
|
|
112
|
-
export { serverlessTemplate };
|
|
113
|
-
//# sourceMappingURL=serverless-D5HjJByU.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serverless-D5HjJByU.mjs","names":["serverlessTemplate: TemplateConfig","options: TemplateOptions","file: string","files: GeneratedFile[]"],"sources":["../src/init/templates/serverless.ts"],"sourcesContent":["import type {\n GeneratedFile,\n TemplateConfig,\n TemplateOptions,\n} from './index.js';\n\nexport const serverlessTemplate: TemplateConfig = {\n name: 'serverless',\n description: 'AWS Lambda handlers',\n\n dependencies: {\n '@geekmidas/constructs': 'workspace:*',\n '@geekmidas/envkit': 'workspace:*',\n '@geekmidas/logger': 'workspace:*',\n '@geekmidas/cloud': 'workspace:*',\n hono: '~4.8.2',\n pino: '~9.6.0',\n },\n\n devDependencies: {\n '@biomejs/biome': '~1.9.4',\n '@geekmidas/cli': 'workspace:*',\n '@types/aws-lambda': '~8.10.92',\n '@types/node': '~22.0.0',\n tsx: '~4.20.0',\n turbo: '~2.3.0',\n typescript: '~5.8.2',\n vitest: '~4.0.0',\n },\n\n scripts: {\n dev: 'gkm dev',\n build: 'gkm build --provider aws-apigatewayv2',\n test: 'vitest',\n 'test:once': 'vitest run',\n typecheck: 'tsc --noEmit',\n lint: 'biome lint .',\n fmt: 'biome format . --write',\n 'fmt:check': 'biome format .',\n },\n\n files: (options: TemplateOptions): GeneratedFile[] => {\n const { loggerType, routesStructure } = options;\n\n const loggerContent = `import { createLogger } from '@geekmidas/logger/${loggerType}';\n\nexport const logger = createLogger();\n`;\n\n // Get route path based on structure\n const getRoutePath = (file: string) => {\n switch (routesStructure) {\n case 'centralized-endpoints':\n return `src/endpoints/${file}`;\n case 'centralized-routes':\n return `src/routes/${file}`;\n case 'domain-based':\n return `src/${file.replace('.ts', '')}/routes/index.ts`;\n }\n };\n\n const files: GeneratedFile[] = [\n // src/config/env.ts\n {\n path: 'src/config/env.ts',\n content: `import { EnvironmentParser } from '@geekmidas/envkit';\n\nexport const envParser = new EnvironmentParser(process.env);\n\nexport const config = envParser\n .create((get) => ({\n stage: get('STAGE').string().default('dev'),\n region: get('AWS_REGION').string().default('us-east-1'),${\n options.database\n ? `\n database: {\n url: get('DATABASE_URL').string(),\n },`\n : ''\n }\n }))\n .parse();\n`,\n },\n\n // src/config/logger.ts\n {\n path: 'src/config/logger.ts',\n content: loggerContent,\n },\n\n // health endpoint\n {\n path: getRoutePath('health.ts'),\n content: `import { e } from '@geekmidas/constructs/endpoints';\n\nexport default e\n .get('/health')\n .handle(async () => ({\n status: 'ok',\n timestamp: new Date().toISOString(),\n region: process.env.AWS_REGION || 'local',\n }));\n`,\n },\n\n // src/functions/hello.ts\n {\n path: 'src/functions/hello.ts',\n content: `import { f } from '@geekmidas/constructs/functions';\nimport { z } from 'zod';\n\nexport default f\n .input(z.object({ name: z.string() }))\n .output(z.object({ message: z.string() }))\n .handle(async ({ input }) => ({\n message: \\`Hello, \\${input.name}!\\`,\n }));\n`,\n },\n ];\n\n // Add Telescope config if enabled\n if (options.telescope) {\n files.push({\n path: 'src/config/telescope.ts',\n content: `import { Telescope } from '@geekmidas/telescope';\nimport { InMemoryStorage } from '@geekmidas/telescope/storage/memory';\n\n// Note: For production Lambda, consider using a persistent storage\nexport const telescope = new Telescope({\n storage: new InMemoryStorage({ maxEntries: 50 }),\n enabled: process.env.STAGE === 'dev',\n});\n`,\n });\n }\n\n return files;\n },\n};\n"],"mappings":";AAMA,MAAaA,qBAAqC;CAChD,MAAM;CACN,aAAa;CAEb,cAAc;EACZ,yBAAyB;EACzB,qBAAqB;EACrB,qBAAqB;EACrB,oBAAoB;EACpB,MAAM;EACN,MAAM;CACP;CAED,iBAAiB;EACf,kBAAkB;EAClB,kBAAkB;EAClB,qBAAqB;EACrB,eAAe;EACf,KAAK;EACL,OAAO;EACP,YAAY;EACZ,QAAQ;CACT;CAED,SAAS;EACP,KAAK;EACL,OAAO;EACP,MAAM;EACN,aAAa;EACb,WAAW;EACX,MAAM;EACN,KAAK;EACL,aAAa;CACd;CAED,OAAO,CAACC,YAA8C;EACpD,MAAM,EAAE,YAAY,iBAAiB,GAAG;EAExC,MAAM,iBAAiB,kDAAkD,WAAW;;;;EAMpF,MAAM,eAAe,CAACC,SAAiB;AACrC,WAAQ,iBAAR;IACE,KAAK,wBACH,SAAQ,gBAAgB,KAAK;IAC/B,KAAK,qBACH,SAAQ,aAAa,KAAK;IAC5B,KAAK,eACH,SAAQ,MAAM,KAAK,QAAQ,OAAO,GAAG,CAAC;GACzC;EACF;EAED,MAAMC,QAAyB;GAE7B;IACE,MAAM;IACN,UAAU;;;;;;;8DAQZ,QAAQ,YACH;;;UAID,GACL;;;;GAIE;GAGD;IACE,MAAM;IACN,SAAS;GACV;GAGD;IACE,MAAM,aAAa,YAAY;IAC/B,UAAU;;;;;;;;;;GAUX;GAGD;IACE,MAAM;IACN,UAAU;;;;;;;;;;GAUX;EACF;AAGD,MAAI,QAAQ,UACV,OAAM,KAAK;GACT,MAAM;GACN,UAAU;;;;;;;;;EASX,EAAC;AAGJ,SAAO;CACR;AACF"}
|
package/dist/source-C1cyfHcF.cjs
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
//#region src/init/generators/source.ts
|
|
3
|
-
/**
|
|
4
|
-
* Generate source files from template
|
|
5
|
-
*/
|
|
6
|
-
function generateSourceFiles(options, template) {
|
|
7
|
-
return template.files(options);
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
//#endregion
|
|
11
|
-
Object.defineProperty(exports, 'generateSourceFiles', {
|
|
12
|
-
enumerable: true,
|
|
13
|
-
get: function () {
|
|
14
|
-
return generateSourceFiles;
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
//# sourceMappingURL=source-C1cyfHcF.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"source-C1cyfHcF.cjs","names":["options: TemplateOptions","template: TemplateConfig"],"sources":["../src/init/generators/source.ts"],"sourcesContent":["import type {\n GeneratedFile,\n TemplateConfig,\n TemplateOptions,\n} from '../templates/index.js';\n\n/**\n * Generate source files from template\n */\nexport function generateSourceFiles(\n options: TemplateOptions,\n template: TemplateConfig,\n): GeneratedFile[] {\n return template.files(options);\n}\n"],"mappings":";;;;;AASA,SAAgB,oBACdA,SACAC,UACiB;AACjB,QAAO,SAAS,MAAM,QAAQ;AAC/B"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { GeneratedFile, TemplateConfig, TemplateOptions } from "./index-DZgrOOOW.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/init/generators/source.d.ts
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Generate source files from template
|
|
7
|
-
*/
|
|
8
|
-
declare function generateSourceFiles(options: TemplateOptions, template: TemplateConfig): GeneratedFile[];
|
|
9
|
-
//#endregion
|
|
10
|
-
export { generateSourceFiles };
|
|
11
|
-
//# sourceMappingURL=source-C3LiNUV9.d.mts.map
|
package/dist/source-CkQHBpwu.mjs
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
//#region src/init/generators/source.ts
|
|
2
|
-
/**
|
|
3
|
-
* Generate source files from template
|
|
4
|
-
*/
|
|
5
|
-
function generateSourceFiles(options, template) {
|
|
6
|
-
return template.files(options);
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
//#endregion
|
|
10
|
-
export { generateSourceFiles };
|
|
11
|
-
//# sourceMappingURL=source-CkQHBpwu.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"source-CkQHBpwu.mjs","names":["options: TemplateOptions","template: TemplateConfig"],"sources":["../src/init/generators/source.ts"],"sourcesContent":["import type {\n GeneratedFile,\n TemplateConfig,\n TemplateOptions,\n} from '../templates/index.js';\n\n/**\n * Generate source files from template\n */\nexport function generateSourceFiles(\n options: TemplateOptions,\n template: TemplateConfig,\n): GeneratedFile[] {\n return template.files(options);\n}\n"],"mappings":";;;;AASA,SAAgB,oBACdA,SACAC,UACiB;AACjB,QAAO,SAAS,MAAM,QAAQ;AAC/B"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { GeneratedFile, TemplateConfig, TemplateOptions } from "./index-DG6xNQMH.cjs";
|
|
2
|
-
|
|
3
|
-
//#region src/init/generators/source.d.ts
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Generate source files from template
|
|
7
|
-
*/
|
|
8
|
-
declare function generateSourceFiles(options: TemplateOptions, template: TemplateConfig): GeneratedFile[];
|
|
9
|
-
//#endregion
|
|
10
|
-
export { generateSourceFiles };
|
|
11
|
-
//# sourceMappingURL=source-Dtcjbokc.d.cts.map
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { apiTemplate } from "./api-Bp5TIl1R.mjs";
|
|
2
|
-
import { minimalTemplate } from "./minimal-BkyASH_C.mjs";
|
|
3
|
-
import { serverlessTemplate } from "./serverless-D5HjJByU.mjs";
|
|
4
|
-
import { workerTemplate } from "./worker-CiP420As.mjs";
|
|
5
|
-
|
|
6
|
-
//#region src/init/templates/index.ts
|
|
7
|
-
/**
|
|
8
|
-
* OpenAPI output path (fixed, not configurable)
|
|
9
|
-
*/
|
|
10
|
-
const OPENAPI_OUTPUT_PATH = "./.gkm/openapi.ts";
|
|
11
|
-
/**
|
|
12
|
-
* All available templates
|
|
13
|
-
*/
|
|
14
|
-
const templates = {
|
|
15
|
-
minimal: minimalTemplate,
|
|
16
|
-
api: apiTemplate,
|
|
17
|
-
serverless: serverlessTemplate,
|
|
18
|
-
worker: workerTemplate
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* Template choices for prompts
|
|
22
|
-
*/
|
|
23
|
-
const templateChoices = [
|
|
24
|
-
{
|
|
25
|
-
title: "Minimal",
|
|
26
|
-
value: "minimal",
|
|
27
|
-
description: "Basic health endpoint"
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
title: "API",
|
|
31
|
-
value: "api",
|
|
32
|
-
description: "Full API with auth, database, services"
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
title: "Serverless",
|
|
36
|
-
value: "serverless",
|
|
37
|
-
description: "AWS Lambda handlers"
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
title: "Worker",
|
|
41
|
-
value: "worker",
|
|
42
|
-
description: "Background job processing"
|
|
43
|
-
}
|
|
44
|
-
];
|
|
45
|
-
/**
|
|
46
|
-
* Logger type choices for prompts
|
|
47
|
-
*/
|
|
48
|
-
const loggerTypeChoices = [{
|
|
49
|
-
title: "Pino",
|
|
50
|
-
value: "pino",
|
|
51
|
-
description: "Fast JSON logger for production (recommended)"
|
|
52
|
-
}, {
|
|
53
|
-
title: "Console",
|
|
54
|
-
value: "console",
|
|
55
|
-
description: "Simple console logger for development"
|
|
56
|
-
}];
|
|
57
|
-
/**
|
|
58
|
-
* Routes structure choices for prompts
|
|
59
|
-
*/
|
|
60
|
-
const routesStructureChoices = [
|
|
61
|
-
{
|
|
62
|
-
title: "Centralized (endpoints)",
|
|
63
|
-
value: "centralized-endpoints",
|
|
64
|
-
description: "src/endpoints/**/*.ts"
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
title: "Centralized (routes)",
|
|
68
|
-
value: "centralized-routes",
|
|
69
|
-
description: "src/routes/**/*.ts"
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
title: "Domain-based",
|
|
73
|
-
value: "domain-based",
|
|
74
|
-
description: "src/**/routes/*.ts (e.g., src/users/routes/list.ts)"
|
|
75
|
-
}
|
|
76
|
-
];
|
|
77
|
-
/**
|
|
78
|
-
* Get a template by name
|
|
79
|
-
*/
|
|
80
|
-
function getTemplate(name) {
|
|
81
|
-
const template = templates[name];
|
|
82
|
-
if (!template) throw new Error(`Unknown template: ${name}`);
|
|
83
|
-
return template;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
//#endregion
|
|
87
|
-
export { OPENAPI_OUTPUT_PATH, getTemplate, loggerTypeChoices, routesStructureChoices, templateChoices, templates };
|
|
88
|
-
//# sourceMappingURL=templates-C0EMmhwb.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"templates-C0EMmhwb.mjs","names":["templates: Record<TemplateName, TemplateConfig>","name: TemplateName"],"sources":["../src/init/templates/index.ts"],"sourcesContent":["import { apiTemplate } from './api.js';\nimport { minimalTemplate } from './minimal.js';\nimport { serverlessTemplate } from './serverless.js';\nimport { workerTemplate } from './worker.js';\n\n/**\n * OpenAPI output path (fixed, not configurable)\n */\nexport const OPENAPI_OUTPUT_PATH = './.gkm/openapi.ts';\n\n/**\n * Logger implementation type\n */\nexport type LoggerType = 'pino' | 'console';\n\n/**\n * Routes structure pattern\n */\nexport type RoutesStructure =\n | 'centralized-endpoints'\n | 'centralized-routes'\n | 'domain-based';\n\n/**\n * Options collected from user prompts\n */\nexport interface TemplateOptions {\n name: string;\n template: TemplateName;\n telescope: boolean;\n database: boolean;\n loggerType: LoggerType;\n routesStructure: RoutesStructure;\n monorepo: boolean;\n /** Path for the API app in monorepo (e.g., 'apps/api') */\n apiPath: string;\n}\n\n/**\n * A file to be generated\n */\nexport interface GeneratedFile {\n path: string;\n content: string;\n}\n\n/**\n * Template configuration\n */\nexport interface TemplateConfig {\n name: TemplateName;\n description: string;\n dependencies: Record<string, string>;\n devDependencies: Record<string, string>;\n scripts: Record<string, string>;\n files: (options: TemplateOptions) => GeneratedFile[];\n}\n\nexport type TemplateName = 'minimal' | 'api' | 'serverless' | 'worker';\n\n/**\n * All available templates\n */\nexport const templates: Record<TemplateName, TemplateConfig> = {\n minimal: minimalTemplate,\n api: apiTemplate,\n serverless: serverlessTemplate,\n worker: workerTemplate,\n};\n\n/**\n * Template choices for prompts\n */\nexport const templateChoices = [\n {\n title: 'Minimal',\n value: 'minimal' as TemplateName,\n description: 'Basic health endpoint',\n },\n {\n title: 'API',\n value: 'api' as TemplateName,\n description: 'Full API with auth, database, services',\n },\n {\n title: 'Serverless',\n value: 'serverless' as TemplateName,\n description: 'AWS Lambda handlers',\n },\n {\n title: 'Worker',\n value: 'worker' as TemplateName,\n description: 'Background job processing',\n },\n];\n\n/**\n * Logger type choices for prompts\n */\nexport const loggerTypeChoices = [\n {\n title: 'Pino',\n value: 'pino' as LoggerType,\n description: 'Fast JSON logger for production (recommended)',\n },\n {\n title: 'Console',\n value: 'console' as LoggerType,\n description: 'Simple console logger for development',\n },\n];\n\n/**\n * Routes structure choices for prompts\n */\nexport const routesStructureChoices = [\n {\n title: 'Centralized (endpoints)',\n value: 'centralized-endpoints' as RoutesStructure,\n description: 'src/endpoints/**/*.ts',\n },\n {\n title: 'Centralized (routes)',\n value: 'centralized-routes' as RoutesStructure,\n description: 'src/routes/**/*.ts',\n },\n {\n title: 'Domain-based',\n value: 'domain-based' as RoutesStructure,\n description: 'src/**/routes/*.ts (e.g., src/users/routes/list.ts)',\n },\n];\n\n/**\n * Get a template by name\n */\nexport function getTemplate(name: TemplateName): TemplateConfig {\n const template = templates[name];\n if (!template) {\n throw new Error(`Unknown template: ${name}`);\n }\n return template;\n}\n"],"mappings":";;;;;;;;;AAQA,MAAa,sBAAsB;;;;AAuDnC,MAAaA,YAAkD;CAC7D,SAAS;CACT,KAAK;CACL,YAAY;CACZ,QAAQ;AACT;;;;AAKD,MAAa,kBAAkB;CAC7B;EACE,OAAO;EACP,OAAO;EACP,aAAa;CACd;CACD;EACE,OAAO;EACP,OAAO;EACP,aAAa;CACd;CACD;EACE,OAAO;EACP,OAAO;EACP,aAAa;CACd;CACD;EACE,OAAO;EACP,OAAO;EACP,aAAa;CACd;AACF;;;;AAKD,MAAa,oBAAoB,CAC/B;CACE,OAAO;CACP,OAAO;CACP,aAAa;AACd,GACD;CACE,OAAO;CACP,OAAO;CACP,aAAa;AACd,CACF;;;;AAKD,MAAa,yBAAyB;CACpC;EACE,OAAO;EACP,OAAO;EACP,aAAa;CACd;CACD;EACE,OAAO;EACP,OAAO;EACP,aAAa;CACd;CACD;EACE,OAAO;EACP,OAAO;EACP,aAAa;CACd;AACF;;;;AAKD,SAAgB,YAAYC,MAAoC;CAC9D,MAAM,WAAW,UAAU;AAC3B,MAAK,SACH,OAAM,IAAI,OAAO,oBAAoB,KAAK;AAE5C,QAAO;AACR"}
|