From 2078c85dabeadbe20f237ab3959c6c26236d0c78 Mon Sep 17 00:00:00 2001 From: Stivenjs Date: Sat, 7 Jun 2025 03:05:44 -0500 Subject: [PATCH] refactor(template-loader): replace class properties with direct environment variable access for S3 and CloudFront configurations --- .../services/template-loader.ts | 25 +++++++------------ 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/lib/store-renderer/services/template-loader.ts b/lib/store-renderer/services/template-loader.ts index 8996aa6e..5b28a5ab 100644 --- a/lib/store-renderer/services/template-loader.ts +++ b/lib/store-renderer/services/template-loader.ts @@ -13,17 +13,10 @@ class TemplateLoader { private s3Client?: S3Client private cache: S3TemplateCache = {} private readonly TEMPLATE_CACHE_TTL = 60 * 60 * 1000 // 1 hora en ms - private readonly bucketName: string - private readonly cloudFrontDomain: string - private readonly appEnv: string private constructor() { - this.bucketName = process.env.BUCKET_NAME || '' - this.cloudFrontDomain = process.env.CLOUDFRONT_DOMAIN_NAME || '' - this.appEnv = process.env.APP_ENV || 'development' - // Solo inicializar S3 si tenemos bucket configurado - if (this.bucketName) { + if (process.env.BUCKET_NAME) { this.s3Client = new S3Client({ region: process.env.REGION_BUCKET || 'us-east-2', }) @@ -46,9 +39,9 @@ class TemplateLoader { public async loadTemplate(storeId: string, templatePath: string): Promise { try { console.log(`[TemplateLoader] Loading template: ${templatePath} for store: ${storeId}`) - console.log(`[TemplateLoader] Environment: ${this.appEnv}`) - console.log(`[TemplateLoader] CloudFront domain: ${this.cloudFrontDomain}`) - console.log(`[TemplateLoader] Bucket name: ${this.bucketName}`) + console.log(`[TemplateLoader] Environment: ${process.env.APP_ENV}`) + console.log(`[TemplateLoader] CloudFront domain: ${process.env.CLOUDFRONT_DOMAIN_NAME}`) + console.log(`[TemplateLoader] Bucket name: ${process.env.BUCKET_NAME}`) // Verificar caché primero const cached = this.getCachedTemplate(storeId, templatePath) @@ -60,7 +53,7 @@ class TemplateLoader { let content: string // En producción usar CloudFront, en desarrollo usar S3 directo - if (this.appEnv === 'production' && this.cloudFrontDomain) { + if (process.env.APP_ENV === 'production' && process.env.CLOUDFRONT_DOMAIN_NAME) { console.log(`[TemplateLoader] Loading from CloudFront...`) content = await this.loadTemplateFromCloudFront(storeId, templatePath) } else { @@ -110,7 +103,7 @@ class TemplateLoader { // Listar todos los archivos de plantilla en S3 const prefix = `templates/${storeId}/` const command = new ListObjectsV2Command({ - Bucket: this.bucketName, + Bucket: process.env.BUCKET_NAME, Prefix: prefix, }) @@ -270,7 +263,7 @@ class TemplateLoader { * Carga una plantilla desde CloudFront (producción) */ private async loadTemplateFromCloudFront(storeId: string, templatePath: string): Promise { - const templateUrl = `https://${this.cloudFrontDomain}/templates/${storeId}/${templatePath}` + const templateUrl = `https://${process.env.CLOUDFRONT_DOMAIN_NAME}/templates/${storeId}/${templatePath}` const response = await fetch(templateUrl) @@ -287,7 +280,7 @@ class TemplateLoader { * Carga una plantilla desde S3 directamente (desarrollo) */ private async loadTemplateFromS3(storeId: string, templatePath: string): Promise { - if (!this.s3Client || !this.bucketName) { + if (!this.s3Client || !process.env.BUCKET_NAME) { throw new Error('S3 client or bucket not configured') } @@ -296,7 +289,7 @@ class TemplateLoader { // Cargar desde S3 const command = new GetObjectCommand({ - Bucket: this.bucketName, + Bucket: process.env.BUCKET_NAME, Key: s3Key, })