@pakento/cms-sdk 4.3.13 → 4.3.14

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/index.d.mts CHANGED
@@ -67,6 +67,7 @@ interface Variation {
67
67
  old_price: number;
68
68
  price_notes: string;
69
69
  price_text: string;
70
+ old_price_text: string;
70
71
  currency_prefix: string;
71
72
  attribute_values: VariationAttributeValue[];
72
73
  images: ItemImage[];
@@ -81,6 +82,7 @@ interface Item {
81
82
  item_category_name: string;
82
83
  item_category_id: number;
83
84
  price_text: string;
85
+ old_price_text: string;
84
86
  price_notes: string;
85
87
  price: number;
86
88
  brand_id: number;
@@ -126,6 +128,7 @@ interface ItemEcommerceRaw {
126
128
  old_price: number;
127
129
  price_notes: string;
128
130
  price_text: string;
131
+ old_price_text: string;
129
132
  currency_prefix: string;
130
133
  brand_id: string;
131
134
  brand_name: string;
@@ -140,6 +143,7 @@ interface ItemEcommerceRaw {
140
143
  old_price: number;
141
144
  price_notes: string;
142
145
  price_text: string;
146
+ old_price_text: string;
143
147
  currency_prefix: string;
144
148
  attribute_values: VariationAttributeValue[];
145
149
  images: {
package/dist/index.d.ts CHANGED
@@ -67,6 +67,7 @@ interface Variation {
67
67
  old_price: number;
68
68
  price_notes: string;
69
69
  price_text: string;
70
+ old_price_text: string;
70
71
  currency_prefix: string;
71
72
  attribute_values: VariationAttributeValue[];
72
73
  images: ItemImage[];
@@ -81,6 +82,7 @@ interface Item {
81
82
  item_category_name: string;
82
83
  item_category_id: number;
83
84
  price_text: string;
85
+ old_price_text: string;
84
86
  price_notes: string;
85
87
  price: number;
86
88
  brand_id: number;
@@ -126,6 +128,7 @@ interface ItemEcommerceRaw {
126
128
  old_price: number;
127
129
  price_notes: string;
128
130
  price_text: string;
131
+ old_price_text: string;
129
132
  currency_prefix: string;
130
133
  brand_id: string;
131
134
  brand_name: string;
@@ -140,6 +143,7 @@ interface ItemEcommerceRaw {
140
143
  old_price: number;
141
144
  price_notes: string;
142
145
  price_text: string;
146
+ old_price_text: string;
143
147
  currency_prefix: string;
144
148
  attribute_values: VariationAttributeValue[];
145
149
  images: {
package/dist/index.js CHANGED
@@ -196,6 +196,7 @@ function parseRawItemToItem(rawItem) {
196
196
  old_price: v.old_price,
197
197
  price_notes: v.price_notes,
198
198
  price_text: v.price_text,
199
+ old_price_text: v.old_price_text,
199
200
  currency_prefix: v.currency_prefix,
200
201
  attribute_values: v.attribute_values,
201
202
  images: v.images.map((img) => ({
@@ -216,6 +217,7 @@ function parseRawItemToItem(rawItem) {
216
217
  item_super_category_name: rawItem.item_super_category_name,
217
218
  item_super_category_id: parseInt(rawItem.item_super_category_id || "0", 10),
218
219
  price_text: rawItem.price_text,
220
+ old_price_text: rawItem.old_price_text,
219
221
  price_notes: rawItem.price_notes,
220
222
  price: rawItem.price,
221
223
  brand_id: parseInt(rawItem.brand_id || "0", 10),
@@ -333,6 +335,7 @@ var ItemsApi = class extends ApiClient {
333
335
  old_price
334
336
  price_notes
335
337
  price_text
338
+ old_price_text
336
339
  currency_prefix
337
340
 
338
341
  brand_id
@@ -359,6 +362,7 @@ var ItemsApi = class extends ApiClient {
359
362
  old_price
360
363
  price_notes
361
364
  price_text
365
+ old_price_text
362
366
  currency_prefix
363
367
 
364
368
  attribute_values {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/api/core/apiClient.ts","../src/api/core/cache.ts","../src/api/items/parsers.ts","../src/api/items/validators.ts","../src/api/items/api.ts","../src/api/categories/validators.ts","../src/api/categories/parsers.ts","../src/api/categories/api.ts","../src/api/brands/validators.ts","../src/api/brands/parsers.ts","../src/api/brands/api.ts","../src/api/entity/parsers.ts","../src/api/entity/api.ts","../src/api/orders/validators.ts","../src/api/orders/api.ts","../src/api/contact/validators.ts","../src/api/contact/api.ts","../src/api/custom/api.ts"],"sourcesContent":["// Core\nexport { ApiClient } from \"./api/core/apiClient\";\n\n// Cache\nexport { CacheService } from \"./api/core/cache\";\n\n// Items\nexport { itemsApi } from \"./api/items\";\n\n// Categories\nexport { categoriesApi } from \"./api/categories\";\n\n// Brands\nexport { brandsApi } from \"./api/brands\";\n\n// Entity\nexport { entityApi } from \"./api/entity\";\n\n// Orders\nexport { ordersApi } from \"./api/orders\";\n\n// Contact\nexport { contactApi } from \"./api/contact\";\n\n// Custom\nexport { customApi } from \"./api/custom\";\n\n// Types (re-export if needed)\nexport * from \"./api/items/types\";\nexport * from \"./api/categories/types\";\nexport * from \"./api/brands/types\";\nexport * from \"./api/entity/types\";\nexport * from \"./api/orders/types\";\nexport * from \"./api/contact/types\";\nexport * from \"./api/custom/types\";\nexport * from \"./api/core/types\";\n","import axios, { AxiosInstance, AxiosError } from \"axios\";\nimport { z } from \"zod\";\nimport { CacheService } from \"./cache\";\n\nexport class ApiClient {\n protected client: AxiosInstance;\n protected cache: CacheService;\n protected baseURL: string;\n protected apiKey: string;\n\n constructor() {\n this.baseURL = process.env.PAKENTO_CMS_BASE_URL || \"\";\n this.apiKey = process.env.PAKENTO_API_KEY || \"\";\n this.cache = new CacheService(this.apiKey);\n\n this.client = axios.create({\n baseURL: this.baseURL,\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `users API-Key ${this.apiKey}`,\n },\n });\n\n this.client.interceptors.request.use(\n (config) => {\n const fullUrl = `${config.baseURL}${config.url}`;\n console.log(`🌐 API Call: ${config.method?.toUpperCase()} ${fullUrl}`);\n return config;\n },\n (error) => Promise.reject(error)\n );\n }\n\n protected handleApiError(error: unknown, context: string): string {\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n const responseMessage = error.response?.data?.message;\n if (status === 401) return \"API Key inválida o expirada\";\n if (status === 404) return `${context} no encontrado`;\n if (status && status >= 500) return \"Error del servidor CMS\";\n return (\n responseMessage || `Error de conexión en ${context}: ${error.message}`\n );\n } else if (error instanceof z.ZodError) {\n return `Validación fallida: ${error.issues\n .map((e) => e.message)\n .join(\", \")}`;\n } else if (error instanceof Error) {\n return error.message;\n }\n return \"Error desconocido\";\n }\n\n protected async fetchGraphQL<T>(\n query: string,\n variables: any,\n extractData: (responseData: any) => T\n ): Promise<{ data: T | null; error: boolean; errorMessage: string | null }> {\n try {\n const response = await this.client.post(\"/api/graphql\", {\n query,\n variables,\n });\n if (response.data.errors) {\n const errorMessage = `GraphQL Error: ${response.data.errors[0].message}`;\n return { data: null, error: true, errorMessage };\n }\n const data = extractData(response.data.data);\n return { data, error: false, errorMessage: null };\n } catch (error) {\n const errorMessage = this.handleApiError(error, \"GraphQL query\");\n return { data: null, error: true, errorMessage };\n }\n }\n}\n","import { Redis } from \"@upstash/redis\";\n\nexport class CacheService {\n private redis?: Redis;\n private apiKeyHash: string;\n private defaultTTL: number = 172800; // 48 hours\n\n constructor(apiKey: string) {\n this.apiKeyHash = apiKey.substring(0, 8);\n\n if (\n process.env.UPSTASH_REDIS_REST_URL &&\n process.env.UPSTASH_REDIS_REST_TOKEN\n ) {\n this.redis = new Redis({\n url: process.env.UPSTASH_REDIS_REST_URL,\n token: process.env.UPSTASH_REDIS_REST_TOKEN,\n });\n }\n }\n\n private generateParamsHash(params: Record<string, unknown>): string {\n const paramsString = JSON.stringify(params);\n return btoa(paramsString);\n }\n\n public buildCacheKey(\n functionName: string,\n params: Record<string, unknown> = {}\n ): string {\n const paramsHash = this.generateParamsHash({ ...params, functionName });\n return `pakento:${this.apiKeyHash}:${paramsHash}`;\n }\n\n public async cacheWrap<T>(\n key: string,\n fetcher: () => Promise<T>,\n functionName: string,\n filters?: Record<string, unknown>\n ): Promise<T> {\n if (!this.redis) {\n return fetcher();\n }\n\n let cached: string | null = null;\n try {\n cached = await this.redis.get(key);\n\n if (typeof cached === \"object\" && cached !== null) {\n console.log(\"[Cache] ✅ Reading from cache:\", key);\n return cached as T;\n }\n\n if (cached) {\n console.log(\"[Cache] ✅ Reading from cache:\", key);\n return JSON.parse(cached as string) as T;\n }\n } catch (err) {\n console.warn(\"[Cache] ❌ Error reading from cache:\", err);\n console.log(`[Cache] ❌ Key: ${key}, type: ${typeof cached}`);\n }\n\n const result = await fetcher();\n\n try {\n // Crear objeto de caché con datos y filtros para visualización\n const cacheData = {\n _function: functionName,\n _filters: filters || {},\n _cachedAt: new Date().toISOString(),\n ...result,\n };\n\n console.log(\"[Cache] ✅ Writing to cache:\", key);\n await this.redis.set(key, JSON.stringify(cacheData), {\n ex: this.defaultTTL,\n });\n } catch (err) {\n console.warn(\"[Cache] ❌ Error writing to cache:\", err);\n }\n\n return result;\n }\n\n public async clearAllCache(): Promise<boolean> {\n if (!this.redis) {\n console.warn(\"[Cache] ❌ Redis no configurado\");\n return false;\n }\n\n try {\n const pattern = `pakento:${this.apiKeyHash}:*`;\n const keys = await this.redis.keys(pattern);\n\n if (keys.length > 0) {\n await this.redis.del(...keys);\n console.log(\"[Cache] ✅ Cache limpiado\");\n }\n\n return true;\n } catch (err) {\n console.warn(\"[Cache] ❌ Error limpiando todo el cache\", err);\n return false;\n }\n }\n}\n","import { Item, ItemEcommerceRaw } from \"./types\";\n\n/**\n * Parses a raw GraphQL response item to the normalized Item type\n * @param rawItem - The raw item from GraphQL response\n * @returns Normalized Item object\n */\nexport function parseRawItemToItem(rawItem: ItemEcommerceRaw): Item {\n const images = rawItem.images.map((img) => ({\n url: img.url,\n thumbnail_url: img.thumbnail_url,\n }));\n\n const variations = rawItem.variations.map((v) => ({\n id: v.id,\n name: v.name,\n description: v.description,\n cover_image_url: v.cover_image_url,\n cover_image_thumbnail_url: v.cover_image_thumbnail_url,\n price: v.price,\n old_price: v.old_price,\n price_notes: v.price_notes,\n price_text: v.price_text,\n currency_prefix: v.currency_prefix,\n attribute_values: v.attribute_values,\n images: v.images.map((img) => ({\n url: img.url,\n thumbnail_url: img.thumbnail_url,\n })),\n }));\n\n return {\n id: rawItem.id,\n name: rawItem.name,\n featured: rawItem.featured,\n url_safe_name: rawItem.url_safe_name,\n currency_prefix: rawItem.currency_prefix,\n description: rawItem.description,\n old_price: rawItem.old_price,\n item_category_name: rawItem.item_category_name,\n item_category_id: parseInt(rawItem.item_category_id || \"0\", 10),\n item_super_category_name: rawItem.item_super_category_name,\n item_super_category_id: parseInt(rawItem.item_super_category_id || \"0\", 10),\n price_text: rawItem.price_text,\n price_notes: rawItem.price_notes,\n price: rawItem.price,\n brand_id: parseInt(rawItem.brand_id || \"0\", 10),\n brand_name: rawItem.brand_name,\n cover_image_url: rawItem.cover_image_url,\n cover_image_thumbnail_url: rawItem.cover_image_thumbnail_url,\n images,\n master_attributes: rawItem.master_attributes,\n variations,\n };\n}\n\n/**\n * Parses an array of raw GraphQL response items to normalized Item types\n * @param rawItems - Array of raw items from GraphQL response\n * @returns Array of normalized Item objects\n */\nexport function parseRawItemsToItems(rawItems: ItemEcommerceRaw[]): Item[] {\n return rawItems.map(parseRawItemToItem);\n}\n","import { z } from \"zod\";\n\nexport const itemsParamsSchema = z.object({\n where: z\n .object({\n item_category_id: z.object({ equals: z.string().optional() }).optional(),\n item_super_category_id: z\n .object({ equals: z.string().optional() })\n .optional(),\n brand_id: z.object({ equals: z.string().optional() }).optional(),\n id: z.object({ equals: z.string().optional() }).optional(),\n })\n .optional(),\n onlyOffers: z.boolean().optional(),\n limit: z.coerce.number().optional(),\n page: z.coerce.number().optional(),\n search: z.string().optional(),\n sort: z.string().optional(),\n minPrice: z.coerce.number().optional(),\n maxPrice: z.coerce.number().optional(),\n});\n","import { ApiClient } from \"../core/apiClient\";\nimport { itemsParamsSchema } from \"./validators\";\nimport { parseRawItemsToItems } from \"./parsers\";\nimport { GetItemsParams, ItemsRawResponse, ItemsWhere, Item } from \"./types\";\nimport { ApiResponse } from \"../core/types\";\n\nclass ItemsApi extends ApiClient {\n async getItems(params: GetItemsParams = {}): Promise<ApiResponse<Item[]>> {\n const validatedParams = itemsParamsSchema.safeParse(params);\n if (!validatedParams.success) {\n const errorMessage = this.handleApiError(\n validatedParams.error,\n \"getItems validation\"\n );\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n\n const cacheKey = this.cache.buildCacheKey(\"getItems\", validatedParams.data);\n return this.cache.cacheWrap(\n cacheKey,\n () => this.fetchItemsFromAPI(validatedParams.data),\n \"getItems\",\n validatedParams.data\n );\n }\n\n private async fetchItemsFromAPI(\n params: GetItemsParams\n ): Promise<ApiResponse<Item[]>> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n const query = `\n query GetEcommerceItems(\n $where: EcommerceItemsWhere\n $onlyOffers: Boolean\n $limit: Int\n $page: Int\n $search: String\n $sort: String\n $minPrice: Float\n $maxPrice: Float\n ) {\n GetEcommerceItems(\n where: $where\n onlyOffers: $onlyOffers\n limit: $limit\n page: $page\n search: $search\n sort: $sort\n minPrice: $minPrice\n maxPrice: $maxPrice\n ) {\n totalDocs\n totalPages\n prevPage\n nextPage\n docs {\n id\n name\n featured\n description\n url_safe_name\n\n item_super_category_id\n item_super_category_name\n\n item_category_id\n item_category_name\n\n cover_image_url\n cover_image_thumbnail_url\n\n price\n old_price\n price_notes\n price_text\n currency_prefix\n\n brand_id\n brand_name\n\n master_attributes {\n id\n name\n values {\n id\n value\n }\n }\n\n variations {\n id\n name\n description\n\n cover_image_url\n cover_image_thumbnail_url\n\n price\n old_price\n price_notes\n price_text\n currency_prefix\n\n attribute_values {\n attribute_id\n attribute_name\n value\n value_id\n }\n\n images {\n url\n thumbnail_url\n }\n }\n\n images {\n url\n thumbnail_url\n }\n }\n }\n }\n `;\n\n const whereConditions: ItemsWhere = {};\n if (params.where?.item_category_id?.equals) {\n whereConditions.item_category_id = {\n equals: params.where.item_category_id.equals,\n };\n }\n if (params.where?.item_super_category_id?.equals) {\n whereConditions.item_super_category_id = {\n equals: params.where.item_super_category_id.equals,\n };\n }\n if (params.where?.brand_id?.equals) {\n whereConditions.brand_id = { equals: params.where.brand_id.equals };\n }\n if (params.where?.id?.equals) {\n whereConditions.id = { equals: params.where.id.equals };\n }\n\n const variables = {\n ...params,\n where:\n Object.keys(whereConditions).length > 0 ? whereConditions : undefined,\n };\n\n const { data, error, errorMessage } =\n await this.fetchGraphQL<ItemsRawResponse>(\n query,\n variables,\n (responseData) => responseData.GetEcommerceItems\n );\n\n if (error) {\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n\n return {\n data: parseRawItemsToItems(data!.docs),\n totalDocs: data!.totalDocs,\n totalPages: data!.totalPages,\n prevPage: data!.prevPage,\n nextPage: data!.nextPage,\n error: false,\n errorMessage: null,\n };\n }\n}\n\nexport const itemsApi = new ItemsApi();\n","import { z } from \"zod\";\n\nexport const categoriesParamsSchema = z.object({\n where: z\n .object({\n item_super_category_id: z\n .object({ equals: z.string().optional() })\n .optional(),\n brand_id: z.object({ equals: z.string().optional() }).optional(),\n })\n .optional(),\n limit: z.coerce.number().optional(),\n page: z.coerce.number().optional(),\n sort: z.string().optional(),\n});\n","import { Category, CategoryEcommerceRaw } from \"./types\";\n\n/**\n * Parses a raw GraphQL response category to the normalized Category type\n * @param rawCategory - The raw category from GraphQL response\n * @returns Normalized Category object\n */\nexport function parseRawCategoryToCategory(\n rawCategory: CategoryEcommerceRaw\n): Category {\n return {\n id: rawCategory.id,\n name: rawCategory.name,\n image_url: rawCategory.image_url,\n };\n}\n\n/**\n * Parses an array of raw GraphQL response categories to normalized Category types\n * @param rawCategories - Array of raw categories from GraphQL response\n * @returns Array of normalized Category objects\n */\nexport function parseRawCategoriesToCategories(\n rawCategories: CategoryEcommerceRaw[]\n): Category[] {\n return rawCategories.map(parseRawCategoryToCategory);\n}\n","import { ApiClient } from \"../core/apiClient\";\nimport { categoriesParamsSchema } from \"./validators\";\nimport { parseRawCategoriesToCategories } from \"./parsers\";\nimport { GetCategoriesParams, CategoriesRawResponse, Category } from \"./types\";\nimport { ApiResponse } from \"../core/types\";\n\nclass CategoriesApi extends ApiClient {\n async getCategories(\n params: GetCategoriesParams = {}\n ): Promise<ApiResponse<Category[]>> {\n const validatedParams = categoriesParamsSchema.safeParse(params);\n if (!validatedParams.success) {\n const errorMessage = this.handleApiError(\n validatedParams.error,\n \"getCategories validation\"\n );\n return { data: [], error: true, errorMessage };\n }\n\n const cacheKey = this.cache.buildCacheKey(\n \"getCategories\",\n validatedParams.data\n );\n return this.cache.cacheWrap(\n cacheKey,\n () => this.fetchCategoriesFromAPI(validatedParams.data),\n \"getCategories\",\n validatedParams.data\n );\n }\n\n private async fetchCategoriesFromAPI(\n params: GetCategoriesParams\n ): Promise<ApiResponse<Category[]>> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: [],\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n const query = `\n query GetEcommerceCategories(\n $where: EcommerceCategoriesWhere\n $limit: Int\n $page: Int\n $sort: String\n ) {\n GetEcommerceCategories(\n where: $where\n limit: $limit\n page: $page\n sort: $sort\n ) {\n docs {\n id\n name\n image_url\n }\n }\n }\n `;\n\n const { data, error, errorMessage } =\n await this.fetchGraphQL<CategoriesRawResponse>(\n query,\n params,\n (responseData) => responseData.GetEcommerceCategories\n );\n\n if (error) {\n return { data: [], error: true, errorMessage };\n }\n\n return {\n data: parseRawCategoriesToCategories(data!.docs),\n error: false,\n errorMessage: null,\n };\n }\n}\n\nexport const categoriesApi = new CategoriesApi();\n","import { z } from \"zod\";\n\nexport const brandsParamsSchema = z.object({\n limit: z.coerce.number().optional(),\n page: z.coerce.number().optional(),\n sort: z.string().optional(),\n});\n","import { Brand, BrandEcommerceRaw } from \"./types\";\n\n/**\n * Parses a raw GraphQL response brand to the normalized Brand type\n * @param rawBrand - The raw brand from GraphQL response\n * @returns Normalized Brand object\n */\nexport function parseRawBrandToBrand(rawBrand: BrandEcommerceRaw): Brand {\n return {\n id: rawBrand.id,\n name: rawBrand.name,\n description: rawBrand.description,\n items_count: rawBrand.items_count,\n image_url: rawBrand.image_url,\n image_thumbnail_url: rawBrand.image_thumbnail_url,\n };\n}\n\n/**\n * Parses an array of raw GraphQL response brands to normalized Brand types\n * @param rawBrands - Array of raw brands from GraphQL response\n * @returns Array of normalized Brand objects\n */\nexport function parseRawBrandsToBrands(\n rawBrands: BrandEcommerceRaw[]\n): Brand[] {\n return rawBrands.map(parseRawBrandToBrand);\n}\n","import { ApiClient } from \"../core/apiClient\";\nimport { brandsParamsSchema } from \"./validators\";\nimport { parseRawBrandsToBrands } from \"./parsers\";\nimport { GetBrandsParams, BrandsRawResponse, Brand } from \"./types\";\nimport { ApiResponse } from \"../core/types\";\n\nclass BrandsApi extends ApiClient {\n async getBrands(params: GetBrandsParams = {}): Promise<ApiResponse<Brand[]>> {\n const validatedParams = brandsParamsSchema.safeParse(params);\n if (!validatedParams.success) {\n const errorMessage = this.handleApiError(\n validatedParams.error,\n \"getBrands validation\"\n );\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n\n const cacheKey = this.cache.buildCacheKey(\n \"getBrands\",\n validatedParams.data\n );\n return this.cache.cacheWrap(\n cacheKey,\n () => this.fetchBrandsFromAPI(validatedParams.data),\n \"getBrands\",\n validatedParams.data\n );\n }\n\n private async fetchBrandsFromAPI(\n params: GetBrandsParams\n ): Promise<ApiResponse<Brand[]>> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n const query = `\n query GetEcommerceBrands(\n $limit: Int\n $page: Int\n $sort: String\n ) {\n GetEcommerceBrands(\n limit: $limit\n page: $page\n sort: $sort\n ) {\n totalDocs\n totalPages\n prevPage\n nextPage\n docs {\n id\n name\n description\n items_count\n image_url\n image_thumbnail_url\n }\n }\n }\n `;\n\n const { data, error, errorMessage } =\n await this.fetchGraphQL<BrandsRawResponse>(\n query,\n params,\n (responseData) => responseData.GetEcommerceBrands\n );\n\n if (error) {\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n\n return {\n data: parseRawBrandsToBrands(data!.docs),\n totalDocs: data!.totalDocs,\n totalPages: data!.totalPages,\n prevPage: data!.prevPage,\n nextPage: data!.nextPage,\n error: false,\n errorMessage: null,\n };\n }\n}\n\nexport const brandsApi = new BrandsApi();\n","import { Entity, EntityEcommerceRaw } from \"./types\";\n\n/**\n * Parses a raw GraphQL response entity to the normalized Entity type\n * @param rawEntity - The raw entity from GraphQL response\n * @returns Normalized Entity object\n */\nexport function parseRawEntityToEntity(rawEntity: EntityEcommerceRaw): Entity {\n return {\n id: rawEntity.id,\n tin: rawEntity.tin,\n name: rawEntity.name,\n web: rawEntity.web,\n address: rawEntity.address,\n country: rawEntity.country,\n city: rawEntity.city,\n currency_id: rawEntity.currency_id,\n currency_name: rawEntity.currency_name,\n currency_prefix: rawEntity.currency_prefix,\n currency_suffix: rawEntity.currency_suffix,\n logo_url: rawEntity.logo_url,\n logo_alt: rawEntity.logo_alt,\n logo_thumbnail_url: rawEntity.logo_thumbnail_url,\n logo_sizes_thumbnail_filename: rawEntity.logo_sizes_thumbnail_filename,\n logo_filename: rawEntity.logo_filename,\n logo_width: rawEntity.logo_width,\n logo_height: rawEntity.logo_height,\n logo_2_url: rawEntity.logo_2_url,\n logo_2_alt: rawEntity.logo_2_alt,\n logo_2_thumbnail_url: rawEntity.logo_2_thumbnail_url,\n logo_2_sizes_thumbnail_filename: rawEntity.logo_2_sizes_thumbnail_filename,\n logo_2_filename: rawEntity.logo_2_filename,\n logo_2_width: rawEntity.logo_2_width,\n logo_2_height: rawEntity.logo_2_height,\n featured_image_url: rawEntity.featured_image_url,\n featured_image_thumbnail_url: rawEntity.featured_image_thumbnail_url,\n featured_image_sizes_thumbnail_filename:\n rawEntity.featured_image_sizes_thumbnail_filename,\n featured_image_filename: rawEntity.featured_image_filename,\n featured_image_width: rawEntity.featured_image_width,\n featured_image_height: rawEntity.featured_image_height,\n };\n}\n","import { ApiClient } from \"../core/apiClient\";\nimport { parseRawEntityToEntity } from \"./parsers\";\nimport { GetEntityParams, EntityRawResponse, Entity } from \"./types\";\nimport { ApiResponse } from \"../core/types\";\n\nclass EntityApi extends ApiClient {\n async getEntity(params: GetEntityParams = {}): Promise<ApiResponse<Entity>> {\n const cacheKey = this.cache.buildCacheKey(\"getEntity\", params);\n return this.cache.cacheWrap(\n cacheKey,\n () => this.fetchEntityFromAPI(params),\n \"getEntity\",\n params\n );\n }\n\n private async fetchEntityFromAPI(\n params: GetEntityParams\n ): Promise<ApiResponse<Entity>> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: null,\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n const query = `\n query GetEntity {\n GetEntity {\n id\n tin\n name\n web\n address\n country\n city\n currency_id\n currency_name\n currency_prefix\n currency_suffix\n logo_url\n logo_alt\n logo_thumbnail_url\n logo_sizes_thumbnail_filename\n logo_filename\n logo_width\n logo_height\n logo_2_url\n logo_2_alt\n logo_2_thumbnail_url\n logo_2_sizes_thumbnail_filename\n logo_2_filename\n logo_2_width\n logo_2_height\n featured_image_url\n featured_image_thumbnail_url\n featured_image_sizes_thumbnail_filename\n featured_image_filename\n featured_image_width\n featured_image_height\n }\n }\n `;\n\n const { data, error, errorMessage } =\n await this.fetchGraphQL<EntityRawResponse>(\n query,\n params,\n (responseData) => responseData\n );\n\n if (error) {\n return { data: null, error: true, errorMessage };\n }\n\n return {\n data: parseRawEntityToEntity(data!.GetEntity),\n error: false,\n errorMessage: null,\n };\n }\n}\n\nexport const entityApi = new EntityApi();\n","import { z } from \"zod\";\n\nexport const orderSchema = z.object({\n name: z.string().min(1),\n email: z.string().email(),\n phone: z.string().optional(),\n notes: z.string().optional(),\n tin: z.string().optional(),\n items: z\n .array(\n z.object({ id: z.number().positive(), quantity: z.number().positive() })\n )\n .min(1),\n delivery_address: z.string().optional(),\n delivery_instructions: z.string().optional(),\n payment_method: z.enum([\"cash\", \"transfer\"]).optional(),\n});\n","import { ApiClient } from \"../core/apiClient\";\nimport { orderSchema } from \"./validators\";\nimport {\n CreateEcommerceOrderParams,\n CreateEcommerceOrderResponse,\n} from \"./types\";\n\nclass OrdersApi extends ApiClient {\n async createEcommerceOrder(\n params: CreateEcommerceOrderParams\n ): Promise<CreateEcommerceOrderResponse> {\n if (!this.baseURL || !this.apiKey) {\n return {\n message: \"SDK no configurado\",\n error: true,\n errorMessage: \"SDK no configurado\",\n };\n }\n\n const validated = orderSchema.safeParse(params);\n if (!validated.success) {\n const errorMessage = this.handleApiError(\n validated.error,\n \"createEcommerceOrder validation\"\n );\n return { message: errorMessage, error: true, errorMessage };\n }\n\n try {\n const response = await this.client.post(\n \"/api/orders/create-ecommerce-order\",\n validated.data\n );\n\n if (response.status === 200) {\n return {\n message: response.data.message || \"Orden creada exitosamente\",\n order_id: response.data.order_id,\n error: false,\n errorMessage: null,\n };\n } else {\n const errorMessage = response.data.message || \"Error al crear la orden\";\n return { message: errorMessage, error: true, errorMessage };\n }\n } catch (error) {\n const errorMessage = this.handleApiError(error, \"createEcommerceOrder\");\n return { message: errorMessage, error: true, errorMessage };\n }\n }\n}\n\nexport const ordersApi = new OrdersApi();\n","import { z } from \"zod\";\n\nexport const contactUsSchema = z.object({\n name: z.string().min(1),\n email: z.string().email(),\n phone: z.string().optional(),\n subject: z.string().optional(),\n notes: z.string().min(1),\n});\n","import { ApiClient } from \"../core/apiClient\";\nimport { contactUsSchema } from \"./validators\";\nimport { SendContactUsEmailParams, SendContactUsEmailResponse } from \"./types\";\n\nclass ContactApi extends ApiClient {\n async sendContactUsEmail(\n params: SendContactUsEmailParams\n ): Promise<SendContactUsEmailResponse> {\n if (!this.baseURL || !this.apiKey) {\n return {\n message: \"SDK no configurado\",\n error: true,\n errorMessage: \"SDK no configurado\",\n };\n }\n\n const validated = contactUsSchema.safeParse(params);\n if (!validated.success) {\n const errorMessage = this.handleApiError(\n validated.error,\n \"sendContactUsEmail validation\"\n );\n return { message: errorMessage, error: true, errorMessage };\n }\n\n try {\n const response = await this.client.post(\n \"/api/entities/send-contact-us-email\",\n validated.data\n );\n\n if (response.status === 200) {\n return {\n message: response.data.message || \"Mensaje enviado exitosamente\",\n error: false,\n errorMessage: null,\n };\n } else {\n const errorMessage =\n response.data.message || \"Error al enviar el mensaje\";\n return { message: errorMessage, error: true, errorMessage };\n }\n } catch (error) {\n const errorMessage = this.handleApiError(error, \"sendContactUsEmail\");\n return { message: errorMessage, error: true, errorMessage };\n }\n }\n}\n\nexport const contactApi = new ContactApi();\n","import { ApiClient } from \"../core/apiClient\";\nimport { CustomGraphQLParams, CustomGraphQLResponse } from \"./types\";\n\nclass CustomApi extends ApiClient {\n async executeCustomQuery<T>(\n params: CustomGraphQLParams\n ): Promise<CustomGraphQLResponse<T>> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: null as T,\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n if (\n !params.query ||\n typeof params.query !== \"string\" ||\n params.query.trim() === \"\"\n ) {\n return {\n data: null as T,\n error: true,\n errorMessage: \"Se requiere un query GraphQL válido.\",\n };\n }\n\n try {\n const response = await this.client.post(\"/api/graphql\", {\n query: params.query,\n variables: params.variables || {},\n });\n\n if (response.data.errors && response.data.errors.length > 0) {\n return {\n data: response.data.data || (null as T),\n errors: response.data.errors,\n error: true,\n errorMessage: `GraphQL Errors: ${response.data.errors\n .map((err: { message: string }) => err.message)\n .join(\", \")}`,\n };\n }\n\n return {\n data: response.data.data,\n error: false,\n errorMessage: null,\n };\n } catch (error) {\n const errorMessage = this.handleApiError(error, \"Custom GraphQL\");\n return { data: null as T, error: true, errorMessage };\n }\n }\n}\n\nexport const customApi = new CustomApi();\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAAiD;AACjD,iBAAkB;;;ACDlB,mBAAsB;AAEf,IAAM,eAAN,MAAmB;AAAA;AAAA,EAKxB,YAAY,QAAgB;AAF5B,SAAQ,aAAqB;AAG3B,SAAK,aAAa,OAAO,UAAU,GAAG,CAAC;AAEvC,QACE,QAAQ,IAAI,0BACZ,QAAQ,IAAI,0BACZ;AACA,WAAK,QAAQ,IAAI,mBAAM;AAAA,QACrB,KAAK,QAAQ,IAAI;AAAA,QACjB,OAAO,QAAQ,IAAI;AAAA,MACrB,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEQ,mBAAmB,QAAyC;AAClE,UAAM,eAAe,KAAK,UAAU,MAAM;AAC1C,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEO,cACL,cACA,SAAkC,CAAC,GAC3B;AACR,UAAM,aAAa,KAAK,mBAAmB,EAAE,GAAG,QAAQ,aAAa,CAAC;AACtE,WAAO,WAAW,KAAK,UAAU,IAAI,UAAU;AAAA,EACjD;AAAA,EAEA,MAAa,UACX,KACA,SACA,cACA,SACY;AACZ,QAAI,CAAC,KAAK,OAAO;AACf,aAAO,QAAQ;AAAA,IACjB;AAEA,QAAI,SAAwB;AAC5B,QAAI;AACF,eAAS,MAAM,KAAK,MAAM,IAAI,GAAG;AAEjC,UAAI,OAAO,WAAW,YAAY,WAAW,MAAM;AACjD,gBAAQ,IAAI,sCAAiC,GAAG;AAChD,eAAO;AAAA,MACT;AAEA,UAAI,QAAQ;AACV,gBAAQ,IAAI,sCAAiC,GAAG;AAChD,eAAO,KAAK,MAAM,MAAgB;AAAA,MACpC;AAAA,IACF,SAAS,KAAK;AACZ,cAAQ,KAAK,4CAAuC,GAAG;AACvD,cAAQ,IAAI,uBAAkB,GAAG,WAAW,OAAO,MAAM,EAAE;AAAA,IAC7D;AAEA,UAAM,SAAS,MAAM,QAAQ;AAE7B,QAAI;AAEF,YAAM,YAAY;AAAA,QAChB,WAAW;AAAA,QACX,UAAU,WAAW,CAAC;AAAA,QACtB,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,QAClC,GAAG;AAAA,MACL;AAEA,cAAQ,IAAI,oCAA+B,GAAG;AAC9C,YAAM,KAAK,MAAM,IAAI,KAAK,KAAK,UAAU,SAAS,GAAG;AAAA,QACnD,IAAI,KAAK;AAAA,MACX,CAAC;AAAA,IACH,SAAS,KAAK;AACZ,cAAQ,KAAK,0CAAqC,GAAG;AAAA,IACvD;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,MAAa,gBAAkC;AAC7C,QAAI,CAAC,KAAK,OAAO;AACf,cAAQ,KAAK,qCAAgC;AAC7C,aAAO;AAAA,IACT;AAEA,QAAI;AACF,YAAM,UAAU,WAAW,KAAK,UAAU;AAC1C,YAAM,OAAO,MAAM,KAAK,MAAM,KAAK,OAAO;AAE1C,UAAI,KAAK,SAAS,GAAG;AACnB,cAAM,KAAK,MAAM,IAAI,GAAG,IAAI;AAC5B,gBAAQ,IAAI,+BAA0B;AAAA,MACxC;AAEA,aAAO;AAAA,IACT,SAAS,KAAK;AACZ,cAAQ,KAAK,gDAA2C,GAAG;AAC3D,aAAO;AAAA,IACT;AAAA,EACF;AACF;;;ADrGO,IAAM,YAAN,MAAgB;AAAA,EAMrB,cAAc;AACZ,SAAK,UAAU,QAAQ,IAAI,wBAAwB;AACnD,SAAK,SAAS,QAAQ,IAAI,mBAAmB;AAC7C,SAAK,QAAQ,IAAI,aAAa,KAAK,MAAM;AAEzC,SAAK,SAAS,aAAAA,QAAM,OAAO;AAAA,MACzB,SAAS,KAAK;AAAA,MACd,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,eAAe,iBAAiB,KAAK,MAAM;AAAA,MAC7C;AAAA,IACF,CAAC;AAED,SAAK,OAAO,aAAa,QAAQ;AAAA,MAC/B,CAAC,WAAW;AACV,cAAM,UAAU,GAAG,OAAO,OAAO,GAAG,OAAO,GAAG;AAC9C,gBAAQ,IAAI,uBAAgB,OAAO,QAAQ,YAAY,CAAC,IAAI,OAAO,EAAE;AACrE,eAAO;AAAA,MACT;AAAA,MACA,CAAC,UAAU,QAAQ,OAAO,KAAK;AAAA,IACjC;AAAA,EACF;AAAA,EAEU,eAAe,OAAgB,SAAyB;AAChE,QAAI,iBAAiB,yBAAY;AAC/B,YAAM,SAAS,MAAM,UAAU;AAC/B,YAAM,kBAAkB,MAAM,UAAU,MAAM;AAC9C,UAAI,WAAW,IAAK,QAAO;AAC3B,UAAI,WAAW,IAAK,QAAO,GAAG,OAAO;AACrC,UAAI,UAAU,UAAU,IAAK,QAAO;AACpC,aACE,mBAAmB,2BAAwB,OAAO,KAAK,MAAM,OAAO;AAAA,IAExE,WAAW,iBAAiB,aAAE,UAAU;AACtC,aAAO,0BAAuB,MAAM,OACjC,IAAI,CAAC,MAAM,EAAE,OAAO,EACpB,KAAK,IAAI,CAAC;AAAA,IACf,WAAW,iBAAiB,OAAO;AACjC,aAAO,MAAM;AAAA,IACf;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAgB,aACd,OACA,WACA,aAC0E;AAC1E,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,OAAO,KAAK,gBAAgB;AAAA,QACtD;AAAA,QACA;AAAA,MACF,CAAC;AACD,UAAI,SAAS,KAAK,QAAQ;AACxB,cAAM,eAAe,kBAAkB,SAAS,KAAK,OAAO,CAAC,EAAE,OAAO;AACtE,eAAO,EAAE,MAAM,MAAM,OAAO,MAAM,aAAa;AAAA,MACjD;AACA,YAAM,OAAO,YAAY,SAAS,KAAK,IAAI;AAC3C,aAAO,EAAE,MAAM,OAAO,OAAO,cAAc,KAAK;AAAA,IAClD,SAAS,OAAO;AACd,YAAM,eAAe,KAAK,eAAe,OAAO,eAAe;AAC/D,aAAO,EAAE,MAAM,MAAM,OAAO,MAAM,aAAa;AAAA,IACjD;AAAA,EACF;AACF;;;AEnEO,SAAS,mBAAmB,SAAiC;AAClE,QAAM,SAAS,QAAQ,OAAO,IAAI,CAAC,SAAS;AAAA,IAC1C,KAAK,IAAI;AAAA,IACT,eAAe,IAAI;AAAA,EACrB,EAAE;AAEF,QAAM,aAAa,QAAQ,WAAW,IAAI,CAAC,OAAO;AAAA,IAChD,IAAI,EAAE;AAAA,IACN,MAAM,EAAE;AAAA,IACR,aAAa,EAAE;AAAA,IACf,iBAAiB,EAAE;AAAA,IACnB,2BAA2B,EAAE;AAAA,IAC7B,OAAO,EAAE;AAAA,IACT,WAAW,EAAE;AAAA,IACb,aAAa,EAAE;AAAA,IACf,YAAY,EAAE;AAAA,IACd,iBAAiB,EAAE;AAAA,IACnB,kBAAkB,EAAE;AAAA,IACpB,QAAQ,EAAE,OAAO,IAAI,CAAC,SAAS;AAAA,MAC7B,KAAK,IAAI;AAAA,MACT,eAAe,IAAI;AAAA,IACrB,EAAE;AAAA,EACJ,EAAE;AAEF,SAAO;AAAA,IACL,IAAI,QAAQ;AAAA,IACZ,MAAM,QAAQ;AAAA,IACd,UAAU,QAAQ;AAAA,IAClB,eAAe,QAAQ;AAAA,IACvB,iBAAiB,QAAQ;AAAA,IACzB,aAAa,QAAQ;AAAA,IACrB,WAAW,QAAQ;AAAA,IACnB,oBAAoB,QAAQ;AAAA,IAC5B,kBAAkB,SAAS,QAAQ,oBAAoB,KAAK,EAAE;AAAA,IAC9D,0BAA0B,QAAQ;AAAA,IAClC,wBAAwB,SAAS,QAAQ,0BAA0B,KAAK,EAAE;AAAA,IAC1E,YAAY,QAAQ;AAAA,IACpB,aAAa,QAAQ;AAAA,IACrB,OAAO,QAAQ;AAAA,IACf,UAAU,SAAS,QAAQ,YAAY,KAAK,EAAE;AAAA,IAC9C,YAAY,QAAQ;AAAA,IACpB,iBAAiB,QAAQ;AAAA,IACzB,2BAA2B,QAAQ;AAAA,IACnC;AAAA,IACA,mBAAmB,QAAQ;AAAA,IAC3B;AAAA,EACF;AACF;AAOO,SAAS,qBAAqB,UAAsC;AACzE,SAAO,SAAS,IAAI,kBAAkB;AACxC;;;AC/DA,IAAAC,cAAkB;AAEX,IAAM,oBAAoB,cAAE,OAAO;AAAA,EACxC,OAAO,cACJ,OAAO;AAAA,IACN,kBAAkB,cAAE,OAAO,EAAE,QAAQ,cAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS;AAAA,IACvE,wBAAwB,cACrB,OAAO,EAAE,QAAQ,cAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EACxC,SAAS;AAAA,IACZ,UAAU,cAAE,OAAO,EAAE,QAAQ,cAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS;AAAA,IAC/D,IAAI,cAAE,OAAO,EAAE,QAAQ,cAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS;AAAA,EAC3D,CAAC,EACA,SAAS;AAAA,EACZ,YAAY,cAAE,QAAQ,EAAE,SAAS;AAAA,EACjC,OAAO,cAAE,OAAO,OAAO,EAAE,SAAS;AAAA,EAClC,MAAM,cAAE,OAAO,OAAO,EAAE,SAAS;AAAA,EACjC,QAAQ,cAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,MAAM,cAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,UAAU,cAAE,OAAO,OAAO,EAAE,SAAS;AAAA,EACrC,UAAU,cAAE,OAAO,OAAO,EAAE,SAAS;AACvC,CAAC;;;ACdD,IAAM,WAAN,cAAuB,UAAU;AAAA,EAC/B,MAAM,SAAS,SAAyB,CAAC,GAAiC;AACxE,UAAM,kBAAkB,kBAAkB,UAAU,MAAM;AAC1D,QAAI,CAAC,gBAAgB,SAAS;AAC5B,YAAM,eAAe,KAAK;AAAA,QACxB,gBAAgB;AAAA,QAChB;AAAA,MACF;AACA,aAAO;AAAA,QACL,MAAM,CAAC;AAAA,QACP,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,UAAM,WAAW,KAAK,MAAM,cAAc,YAAY,gBAAgB,IAAI;AAC1E,WAAO,KAAK,MAAM;AAAA,MAChB;AAAA,MACA,MAAM,KAAK,kBAAkB,gBAAgB,IAAI;AAAA,MACjD;AAAA,MACA,gBAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EAEA,MAAc,kBACZ,QAC8B;AAC9B,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,QAAQ;AACjC,aAAO;AAAA,QACL,MAAM,CAAC;AAAA,QACP,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,UAAU;AAAA,QACV,OAAO;AAAA,QACP,cACE;AAAA,MACJ;AAAA,IACF;AAEA,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+Fd,UAAM,kBAA8B,CAAC;AACrC,QAAI,OAAO,OAAO,kBAAkB,QAAQ;AAC1C,sBAAgB,mBAAmB;AAAA,QACjC,QAAQ,OAAO,MAAM,iBAAiB;AAAA,MACxC;AAAA,IACF;AACA,QAAI,OAAO,OAAO,wBAAwB,QAAQ;AAChD,sBAAgB,yBAAyB;AAAA,QACvC,QAAQ,OAAO,MAAM,uBAAuB;AAAA,MAC9C;AAAA,IACF;AACA,QAAI,OAAO,OAAO,UAAU,QAAQ;AAClC,sBAAgB,WAAW,EAAE,QAAQ,OAAO,MAAM,SAAS,OAAO;AAAA,IACpE;AACA,QAAI,OAAO,OAAO,IAAI,QAAQ;AAC5B,sBAAgB,KAAK,EAAE,QAAQ,OAAO,MAAM,GAAG,OAAO;AAAA,IACxD;AAEA,UAAM,YAAY;AAAA,MAChB,GAAG;AAAA,MACH,OACE,OAAO,KAAK,eAAe,EAAE,SAAS,IAAI,kBAAkB;AAAA,IAChE;AAEA,UAAM,EAAE,MAAM,OAAO,aAAa,IAChC,MAAM,KAAK;AAAA,MACT;AAAA,MACA;AAAA,MACA,CAAC,iBAAiB,aAAa;AAAA,IACjC;AAEF,QAAI,OAAO;AACT,aAAO;AAAA,QACL,MAAM,CAAC;AAAA,QACP,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,MACL,MAAM,qBAAqB,KAAM,IAAI;AAAA,MACrC,WAAW,KAAM;AAAA,MACjB,YAAY,KAAM;AAAA,MAClB,UAAU,KAAM;AAAA,MAChB,UAAU,KAAM;AAAA,MAChB,OAAO;AAAA,MACP,cAAc;AAAA,IAChB;AAAA,EACF;AACF;AAEO,IAAM,WAAW,IAAI,SAAS;;;ACxMrC,IAAAC,cAAkB;AAEX,IAAM,yBAAyB,cAAE,OAAO;AAAA,EAC7C,OAAO,cACJ,OAAO;AAAA,IACN,wBAAwB,cACrB,OAAO,EAAE,QAAQ,cAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EACxC,SAAS;AAAA,IACZ,UAAU,cAAE,OAAO,EAAE,QAAQ,cAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS;AAAA,EACjE,CAAC,EACA,SAAS;AAAA,EACZ,OAAO,cAAE,OAAO,OAAO,EAAE,SAAS;AAAA,EAClC,MAAM,cAAE,OAAO,OAAO,EAAE,SAAS;AAAA,EACjC,MAAM,cAAE,OAAO,EAAE,SAAS;AAC5B,CAAC;;;ACPM,SAAS,2BACd,aACU;AACV,SAAO;AAAA,IACL,IAAI,YAAY;AAAA,IAChB,MAAM,YAAY;AAAA,IAClB,WAAW,YAAY;AAAA,EACzB;AACF;AAOO,SAAS,+BACd,eACY;AACZ,SAAO,cAAc,IAAI,0BAA0B;AACrD;;;ACpBA,IAAM,gBAAN,cAA4B,UAAU;AAAA,EACpC,MAAM,cACJ,SAA8B,CAAC,GACG;AAClC,UAAM,kBAAkB,uBAAuB,UAAU,MAAM;AAC/D,QAAI,CAAC,gBAAgB,SAAS;AAC5B,YAAM,eAAe,KAAK;AAAA,QACxB,gBAAgB;AAAA,QAChB;AAAA,MACF;AACA,aAAO,EAAE,MAAM,CAAC,GAAG,OAAO,MAAM,aAAa;AAAA,IAC/C;AAEA,UAAM,WAAW,KAAK,MAAM;AAAA,MAC1B;AAAA,MACA,gBAAgB;AAAA,IAClB;AACA,WAAO,KAAK,MAAM;AAAA,MAChB;AAAA,MACA,MAAM,KAAK,uBAAuB,gBAAgB,IAAI;AAAA,MACtD;AAAA,MACA,gBAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EAEA,MAAc,uBACZ,QACkC;AAClC,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,QAAQ;AACjC,aAAO;AAAA,QACL,MAAM,CAAC;AAAA,QACP,OAAO;AAAA,QACP,cACE;AAAA,MACJ;AAAA,IACF;AAEA,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBd,UAAM,EAAE,MAAM,OAAO,aAAa,IAChC,MAAM,KAAK;AAAA,MACT;AAAA,MACA;AAAA,MACA,CAAC,iBAAiB,aAAa;AAAA,IACjC;AAEF,QAAI,OAAO;AACT,aAAO,EAAE,MAAM,CAAC,GAAG,OAAO,MAAM,aAAa;AAAA,IAC/C;AAEA,WAAO;AAAA,MACL,MAAM,+BAA+B,KAAM,IAAI;AAAA,MAC/C,OAAO;AAAA,MACP,cAAc;AAAA,IAChB;AAAA,EACF;AACF;AAEO,IAAM,gBAAgB,IAAI,cAAc;;;ACpF/C,IAAAC,cAAkB;AAEX,IAAM,qBAAqB,cAAE,OAAO;AAAA,EACzC,OAAO,cAAE,OAAO,OAAO,EAAE,SAAS;AAAA,EAClC,MAAM,cAAE,OAAO,OAAO,EAAE,SAAS;AAAA,EACjC,MAAM,cAAE,OAAO,EAAE,SAAS;AAC5B,CAAC;;;ACCM,SAAS,qBAAqB,UAAoC;AACvE,SAAO;AAAA,IACL,IAAI,SAAS;AAAA,IACb,MAAM,SAAS;AAAA,IACf,aAAa,SAAS;AAAA,IACtB,aAAa,SAAS;AAAA,IACtB,WAAW,SAAS;AAAA,IACpB,qBAAqB,SAAS;AAAA,EAChC;AACF;AAOO,SAAS,uBACd,WACS;AACT,SAAO,UAAU,IAAI,oBAAoB;AAC3C;;;ACrBA,IAAM,YAAN,cAAwB,UAAU;AAAA,EAChC,MAAM,UAAU,SAA0B,CAAC,GAAkC;AAC3E,UAAM,kBAAkB,mBAAmB,UAAU,MAAM;AAC3D,QAAI,CAAC,gBAAgB,SAAS;AAC5B,YAAM,eAAe,KAAK;AAAA,QACxB,gBAAgB;AAAA,QAChB;AAAA,MACF;AACA,aAAO;AAAA,QACL,MAAM,CAAC;AAAA,QACP,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,UAAM,WAAW,KAAK,MAAM;AAAA,MAC1B;AAAA,MACA,gBAAgB;AAAA,IAClB;AACA,WAAO,KAAK,MAAM;AAAA,MAChB;AAAA,MACA,MAAM,KAAK,mBAAmB,gBAAgB,IAAI;AAAA,MAClD;AAAA,MACA,gBAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EAEA,MAAc,mBACZ,QAC+B;AAC/B,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,QAAQ;AACjC,aAAO;AAAA,QACL,MAAM,CAAC;AAAA,QACP,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,UAAU;AAAA,QACV,OAAO;AAAA,QACP,cACE;AAAA,MACJ;AAAA,IACF;AAEA,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2Bd,UAAM,EAAE,MAAM,OAAO,aAAa,IAChC,MAAM,KAAK;AAAA,MACT;AAAA,MACA;AAAA,MACA,CAAC,iBAAiB,aAAa;AAAA,IACjC;AAEF,QAAI,OAAO;AACT,aAAO;AAAA,QACL,MAAM,CAAC;AAAA,QACP,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,MACL,MAAM,uBAAuB,KAAM,IAAI;AAAA,MACvC,WAAW,KAAM;AAAA,MACjB,YAAY,KAAM;AAAA,MAClB,UAAU,KAAM;AAAA,MAChB,UAAU,KAAM;AAAA,MAChB,OAAO;AAAA,MACP,cAAc;AAAA,IAChB;AAAA,EACF;AACF;AAEO,IAAM,YAAY,IAAI,UAAU;;;ACxGhC,SAAS,uBAAuB,WAAuC;AAC5E,SAAO;AAAA,IACL,IAAI,UAAU;AAAA,IACd,KAAK,UAAU;AAAA,IACf,MAAM,UAAU;AAAA,IAChB,KAAK,UAAU;AAAA,IACf,SAAS,UAAU;AAAA,IACnB,SAAS,UAAU;AAAA,IACnB,MAAM,UAAU;AAAA,IAChB,aAAa,UAAU;AAAA,IACvB,eAAe,UAAU;AAAA,IACzB,iBAAiB,UAAU;AAAA,IAC3B,iBAAiB,UAAU;AAAA,IAC3B,UAAU,UAAU;AAAA,IACpB,UAAU,UAAU;AAAA,IACpB,oBAAoB,UAAU;AAAA,IAC9B,+BAA+B,UAAU;AAAA,IACzC,eAAe,UAAU;AAAA,IACzB,YAAY,UAAU;AAAA,IACtB,aAAa,UAAU;AAAA,IACvB,YAAY,UAAU;AAAA,IACtB,YAAY,UAAU;AAAA,IACtB,sBAAsB,UAAU;AAAA,IAChC,iCAAiC,UAAU;AAAA,IAC3C,iBAAiB,UAAU;AAAA,IAC3B,cAAc,UAAU;AAAA,IACxB,eAAe,UAAU;AAAA,IACzB,oBAAoB,UAAU;AAAA,IAC9B,8BAA8B,UAAU;AAAA,IACxC,yCACE,UAAU;AAAA,IACZ,yBAAyB,UAAU;AAAA,IACnC,sBAAsB,UAAU;AAAA,IAChC,uBAAuB,UAAU;AAAA,EACnC;AACF;;;ACrCA,IAAM,YAAN,cAAwB,UAAU;AAAA,EAChC,MAAM,UAAU,SAA0B,CAAC,GAAiC;AAC1E,UAAM,WAAW,KAAK,MAAM,cAAc,aAAa,MAAM;AAC7D,WAAO,KAAK,MAAM;AAAA,MAChB;AAAA,MACA,MAAM,KAAK,mBAAmB,MAAM;AAAA,MACpC;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,mBACZ,QAC8B;AAC9B,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,QAAQ;AACjC,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,QACP,cACE;AAAA,MACJ;AAAA,IACF;AAEA,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsCd,UAAM,EAAE,MAAM,OAAO,aAAa,IAChC,MAAM,KAAK;AAAA,MACT;AAAA,MACA;AAAA,MACA,CAAC,iBAAiB;AAAA,IACpB;AAEF,QAAI,OAAO;AACT,aAAO,EAAE,MAAM,MAAM,OAAO,MAAM,aAAa;AAAA,IACjD;AAEA,WAAO;AAAA,MACL,MAAM,uBAAuB,KAAM,SAAS;AAAA,MAC5C,OAAO;AAAA,MACP,cAAc;AAAA,IAChB;AAAA,EACF;AACF;AAEO,IAAM,YAAY,IAAI,UAAU;;;ACrFvC,IAAAC,cAAkB;AAEX,IAAM,cAAc,cAAE,OAAO;AAAA,EAClC,MAAM,cAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACtB,OAAO,cAAE,OAAO,EAAE,MAAM;AAAA,EACxB,OAAO,cAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,OAAO,cAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,KAAK,cAAE,OAAO,EAAE,SAAS;AAAA,EACzB,OAAO,cACJ;AAAA,IACC,cAAE,OAAO,EAAE,IAAI,cAAE,OAAO,EAAE,SAAS,GAAG,UAAU,cAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAAA,EACzE,EACC,IAAI,CAAC;AAAA,EACR,kBAAkB,cAAE,OAAO,EAAE,SAAS;AAAA,EACtC,uBAAuB,cAAE,OAAO,EAAE,SAAS;AAAA,EAC3C,gBAAgB,cAAE,KAAK,CAAC,QAAQ,UAAU,CAAC,EAAE,SAAS;AACxD,CAAC;;;ACTD,IAAM,YAAN,cAAwB,UAAU;AAAA,EAChC,MAAM,qBACJ,QACuC;AACvC,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,QAAQ;AACjC,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO;AAAA,QACP,cAAc;AAAA,MAChB;AAAA,IACF;AAEA,UAAM,YAAY,YAAY,UAAU,MAAM;AAC9C,QAAI,CAAC,UAAU,SAAS;AACtB,YAAM,eAAe,KAAK;AAAA,QACxB,UAAU;AAAA,QACV;AAAA,MACF;AACA,aAAO,EAAE,SAAS,cAAc,OAAO,MAAM,aAAa;AAAA,IAC5D;AAEA,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,OAAO;AAAA,QACjC;AAAA,QACA,UAAU;AAAA,MACZ;AAEA,UAAI,SAAS,WAAW,KAAK;AAC3B,eAAO;AAAA,UACL,SAAS,SAAS,KAAK,WAAW;AAAA,UAClC,UAAU,SAAS,KAAK;AAAA,UACxB,OAAO;AAAA,UACP,cAAc;AAAA,QAChB;AAAA,MACF,OAAO;AACL,cAAM,eAAe,SAAS,KAAK,WAAW;AAC9C,eAAO,EAAE,SAAS,cAAc,OAAO,MAAM,aAAa;AAAA,MAC5D;AAAA,IACF,SAAS,OAAO;AACd,YAAM,eAAe,KAAK,eAAe,OAAO,sBAAsB;AACtE,aAAO,EAAE,SAAS,cAAc,OAAO,MAAM,aAAa;AAAA,IAC5D;AAAA,EACF;AACF;AAEO,IAAM,YAAY,IAAI,UAAU;;;ACpDvC,IAAAC,cAAkB;AAEX,IAAM,kBAAkB,cAAE,OAAO;AAAA,EACtC,MAAM,cAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACtB,OAAO,cAAE,OAAO,EAAE,MAAM;AAAA,EACxB,OAAO,cAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,SAAS,cAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,OAAO,cAAE,OAAO,EAAE,IAAI,CAAC;AACzB,CAAC;;;ACJD,IAAM,aAAN,cAAyB,UAAU;AAAA,EACjC,MAAM,mBACJ,QACqC;AACrC,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,QAAQ;AACjC,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO;AAAA,QACP,cAAc;AAAA,MAChB;AAAA,IACF;AAEA,UAAM,YAAY,gBAAgB,UAAU,MAAM;AAClD,QAAI,CAAC,UAAU,SAAS;AACtB,YAAM,eAAe,KAAK;AAAA,QACxB,UAAU;AAAA,QACV;AAAA,MACF;AACA,aAAO,EAAE,SAAS,cAAc,OAAO,MAAM,aAAa;AAAA,IAC5D;AAEA,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,OAAO;AAAA,QACjC;AAAA,QACA,UAAU;AAAA,MACZ;AAEA,UAAI,SAAS,WAAW,KAAK;AAC3B,eAAO;AAAA,UACL,SAAS,SAAS,KAAK,WAAW;AAAA,UAClC,OAAO;AAAA,UACP,cAAc;AAAA,QAChB;AAAA,MACF,OAAO;AACL,cAAM,eACJ,SAAS,KAAK,WAAW;AAC3B,eAAO,EAAE,SAAS,cAAc,OAAO,MAAM,aAAa;AAAA,MAC5D;AAAA,IACF,SAAS,OAAO;AACd,YAAM,eAAe,KAAK,eAAe,OAAO,oBAAoB;AACpE,aAAO,EAAE,SAAS,cAAc,OAAO,MAAM,aAAa;AAAA,IAC5D;AAAA,EACF;AACF;AAEO,IAAM,aAAa,IAAI,WAAW;;;AC9CzC,IAAM,YAAN,cAAwB,UAAU;AAAA,EAChC,MAAM,mBACJ,QACmC;AACnC,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,QAAQ;AACjC,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,QACP,cACE;AAAA,MACJ;AAAA,IACF;AAEA,QACE,CAAC,OAAO,SACR,OAAO,OAAO,UAAU,YACxB,OAAO,MAAM,KAAK,MAAM,IACxB;AACA,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,QACP,cAAc;AAAA,MAChB;AAAA,IACF;AAEA,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,OAAO,KAAK,gBAAgB;AAAA,QACtD,OAAO,OAAO;AAAA,QACd,WAAW,OAAO,aAAa,CAAC;AAAA,MAClC,CAAC;AAED,UAAI,SAAS,KAAK,UAAU,SAAS,KAAK,OAAO,SAAS,GAAG;AAC3D,eAAO;AAAA,UACL,MAAM,SAAS,KAAK,QAAS;AAAA,UAC7B,QAAQ,SAAS,KAAK;AAAA,UACtB,OAAO;AAAA,UACP,cAAc,mBAAmB,SAAS,KAAK,OAC5C,IAAI,CAAC,QAA6B,IAAI,OAAO,EAC7C,KAAK,IAAI,CAAC;AAAA,QACf;AAAA,MACF;AAEA,aAAO;AAAA,QACL,MAAM,SAAS,KAAK;AAAA,QACpB,OAAO;AAAA,QACP,cAAc;AAAA,MAChB;AAAA,IACF,SAAS,OAAO;AACd,YAAM,eAAe,KAAK,eAAe,OAAO,gBAAgB;AAChE,aAAO,EAAE,MAAM,MAAW,OAAO,MAAM,aAAa;AAAA,IACtD;AAAA,EACF;AACF;AAEO,IAAM,YAAY,IAAI,UAAU;","names":["axios","import_zod","import_zod","import_zod","import_zod","import_zod"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/api/core/apiClient.ts","../src/api/core/cache.ts","../src/api/items/parsers.ts","../src/api/items/validators.ts","../src/api/items/api.ts","../src/api/categories/validators.ts","../src/api/categories/parsers.ts","../src/api/categories/api.ts","../src/api/brands/validators.ts","../src/api/brands/parsers.ts","../src/api/brands/api.ts","../src/api/entity/parsers.ts","../src/api/entity/api.ts","../src/api/orders/validators.ts","../src/api/orders/api.ts","../src/api/contact/validators.ts","../src/api/contact/api.ts","../src/api/custom/api.ts"],"sourcesContent":["// Core\nexport { ApiClient } from \"./api/core/apiClient\";\n\n// Cache\nexport { CacheService } from \"./api/core/cache\";\n\n// Items\nexport { itemsApi } from \"./api/items\";\n\n// Categories\nexport { categoriesApi } from \"./api/categories\";\n\n// Brands\nexport { brandsApi } from \"./api/brands\";\n\n// Entity\nexport { entityApi } from \"./api/entity\";\n\n// Orders\nexport { ordersApi } from \"./api/orders\";\n\n// Contact\nexport { contactApi } from \"./api/contact\";\n\n// Custom\nexport { customApi } from \"./api/custom\";\n\n// Types (re-export if needed)\nexport * from \"./api/items/types\";\nexport * from \"./api/categories/types\";\nexport * from \"./api/brands/types\";\nexport * from \"./api/entity/types\";\nexport * from \"./api/orders/types\";\nexport * from \"./api/contact/types\";\nexport * from \"./api/custom/types\";\nexport * from \"./api/core/types\";\n","import axios, { AxiosInstance, AxiosError } from \"axios\";\nimport { z } from \"zod\";\nimport { CacheService } from \"./cache\";\n\nexport class ApiClient {\n protected client: AxiosInstance;\n protected cache: CacheService;\n protected baseURL: string;\n protected apiKey: string;\n\n constructor() {\n this.baseURL = process.env.PAKENTO_CMS_BASE_URL || \"\";\n this.apiKey = process.env.PAKENTO_API_KEY || \"\";\n this.cache = new CacheService(this.apiKey);\n\n this.client = axios.create({\n baseURL: this.baseURL,\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `users API-Key ${this.apiKey}`,\n },\n });\n\n this.client.interceptors.request.use(\n (config) => {\n const fullUrl = `${config.baseURL}${config.url}`;\n console.log(`🌐 API Call: ${config.method?.toUpperCase()} ${fullUrl}`);\n return config;\n },\n (error) => Promise.reject(error)\n );\n }\n\n protected handleApiError(error: unknown, context: string): string {\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n const responseMessage = error.response?.data?.message;\n if (status === 401) return \"API Key inválida o expirada\";\n if (status === 404) return `${context} no encontrado`;\n if (status && status >= 500) return \"Error del servidor CMS\";\n return (\n responseMessage || `Error de conexión en ${context}: ${error.message}`\n );\n } else if (error instanceof z.ZodError) {\n return `Validación fallida: ${error.issues\n .map((e) => e.message)\n .join(\", \")}`;\n } else if (error instanceof Error) {\n return error.message;\n }\n return \"Error desconocido\";\n }\n\n protected async fetchGraphQL<T>(\n query: string,\n variables: any,\n extractData: (responseData: any) => T\n ): Promise<{ data: T | null; error: boolean; errorMessage: string | null }> {\n try {\n const response = await this.client.post(\"/api/graphql\", {\n query,\n variables,\n });\n if (response.data.errors) {\n const errorMessage = `GraphQL Error: ${response.data.errors[0].message}`;\n return { data: null, error: true, errorMessage };\n }\n const data = extractData(response.data.data);\n return { data, error: false, errorMessage: null };\n } catch (error) {\n const errorMessage = this.handleApiError(error, \"GraphQL query\");\n return { data: null, error: true, errorMessage };\n }\n }\n}\n","import { Redis } from \"@upstash/redis\";\n\nexport class CacheService {\n private redis?: Redis;\n private apiKeyHash: string;\n private defaultTTL: number = 172800; // 48 hours\n\n constructor(apiKey: string) {\n this.apiKeyHash = apiKey.substring(0, 8);\n\n if (\n process.env.UPSTASH_REDIS_REST_URL &&\n process.env.UPSTASH_REDIS_REST_TOKEN\n ) {\n this.redis = new Redis({\n url: process.env.UPSTASH_REDIS_REST_URL,\n token: process.env.UPSTASH_REDIS_REST_TOKEN,\n });\n }\n }\n\n private generateParamsHash(params: Record<string, unknown>): string {\n const paramsString = JSON.stringify(params);\n return btoa(paramsString);\n }\n\n public buildCacheKey(\n functionName: string,\n params: Record<string, unknown> = {}\n ): string {\n const paramsHash = this.generateParamsHash({ ...params, functionName });\n return `pakento:${this.apiKeyHash}:${paramsHash}`;\n }\n\n public async cacheWrap<T>(\n key: string,\n fetcher: () => Promise<T>,\n functionName: string,\n filters?: Record<string, unknown>\n ): Promise<T> {\n if (!this.redis) {\n return fetcher();\n }\n\n let cached: string | null = null;\n try {\n cached = await this.redis.get(key);\n\n if (typeof cached === \"object\" && cached !== null) {\n console.log(\"[Cache] ✅ Reading from cache:\", key);\n return cached as T;\n }\n\n if (cached) {\n console.log(\"[Cache] ✅ Reading from cache:\", key);\n return JSON.parse(cached as string) as T;\n }\n } catch (err) {\n console.warn(\"[Cache] ❌ Error reading from cache:\", err);\n console.log(`[Cache] ❌ Key: ${key}, type: ${typeof cached}`);\n }\n\n const result = await fetcher();\n\n try {\n // Crear objeto de caché con datos y filtros para visualización\n const cacheData = {\n _function: functionName,\n _filters: filters || {},\n _cachedAt: new Date().toISOString(),\n ...result,\n };\n\n console.log(\"[Cache] ✅ Writing to cache:\", key);\n await this.redis.set(key, JSON.stringify(cacheData), {\n ex: this.defaultTTL,\n });\n } catch (err) {\n console.warn(\"[Cache] ❌ Error writing to cache:\", err);\n }\n\n return result;\n }\n\n public async clearAllCache(): Promise<boolean> {\n if (!this.redis) {\n console.warn(\"[Cache] ❌ Redis no configurado\");\n return false;\n }\n\n try {\n const pattern = `pakento:${this.apiKeyHash}:*`;\n const keys = await this.redis.keys(pattern);\n\n if (keys.length > 0) {\n await this.redis.del(...keys);\n console.log(\"[Cache] ✅ Cache limpiado\");\n }\n\n return true;\n } catch (err) {\n console.warn(\"[Cache] ❌ Error limpiando todo el cache\", err);\n return false;\n }\n }\n}\n","import { Item, ItemEcommerceRaw } from \"./types\";\n\n/**\n * Parses a raw GraphQL response item to the normalized Item type\n * @param rawItem - The raw item from GraphQL response\n * @returns Normalized Item object\n */\nexport function parseRawItemToItem(rawItem: ItemEcommerceRaw): Item {\n const images = rawItem.images.map((img) => ({\n url: img.url,\n thumbnail_url: img.thumbnail_url,\n }));\n\n const variations = rawItem.variations.map((v) => ({\n id: v.id,\n name: v.name,\n description: v.description,\n cover_image_url: v.cover_image_url,\n cover_image_thumbnail_url: v.cover_image_thumbnail_url,\n price: v.price,\n old_price: v.old_price,\n price_notes: v.price_notes,\n price_text: v.price_text,\n old_price_text: v.old_price_text,\n currency_prefix: v.currency_prefix,\n attribute_values: v.attribute_values,\n images: v.images.map((img) => ({\n url: img.url,\n thumbnail_url: img.thumbnail_url,\n })),\n }));\n\n return {\n id: rawItem.id,\n name: rawItem.name,\n featured: rawItem.featured,\n url_safe_name: rawItem.url_safe_name,\n currency_prefix: rawItem.currency_prefix,\n description: rawItem.description,\n old_price: rawItem.old_price,\n item_category_name: rawItem.item_category_name,\n item_category_id: parseInt(rawItem.item_category_id || \"0\", 10),\n item_super_category_name: rawItem.item_super_category_name,\n item_super_category_id: parseInt(rawItem.item_super_category_id || \"0\", 10),\n price_text: rawItem.price_text,\n old_price_text: rawItem.old_price_text,\n price_notes: rawItem.price_notes,\n price: rawItem.price,\n brand_id: parseInt(rawItem.brand_id || \"0\", 10),\n brand_name: rawItem.brand_name,\n cover_image_url: rawItem.cover_image_url,\n cover_image_thumbnail_url: rawItem.cover_image_thumbnail_url,\n images,\n master_attributes: rawItem.master_attributes,\n variations,\n };\n}\n\n/**\n * Parses an array of raw GraphQL response items to normalized Item types\n * @param rawItems - Array of raw items from GraphQL response\n * @returns Array of normalized Item objects\n */\nexport function parseRawItemsToItems(rawItems: ItemEcommerceRaw[]): Item[] {\n return rawItems.map(parseRawItemToItem);\n}\n","import { z } from \"zod\";\n\nexport const itemsParamsSchema = z.object({\n where: z\n .object({\n item_category_id: z.object({ equals: z.string().optional() }).optional(),\n item_super_category_id: z\n .object({ equals: z.string().optional() })\n .optional(),\n brand_id: z.object({ equals: z.string().optional() }).optional(),\n id: z.object({ equals: z.string().optional() }).optional(),\n })\n .optional(),\n onlyOffers: z.boolean().optional(),\n limit: z.coerce.number().optional(),\n page: z.coerce.number().optional(),\n search: z.string().optional(),\n sort: z.string().optional(),\n minPrice: z.coerce.number().optional(),\n maxPrice: z.coerce.number().optional(),\n});\n","import { ApiClient } from \"../core/apiClient\";\nimport { itemsParamsSchema } from \"./validators\";\nimport { parseRawItemsToItems } from \"./parsers\";\nimport { GetItemsParams, ItemsRawResponse, ItemsWhere, Item } from \"./types\";\nimport { ApiResponse } from \"../core/types\";\n\nclass ItemsApi extends ApiClient {\n async getItems(params: GetItemsParams = {}): Promise<ApiResponse<Item[]>> {\n const validatedParams = itemsParamsSchema.safeParse(params);\n if (!validatedParams.success) {\n const errorMessage = this.handleApiError(\n validatedParams.error,\n \"getItems validation\"\n );\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n\n const cacheKey = this.cache.buildCacheKey(\"getItems\", validatedParams.data);\n return this.cache.cacheWrap(\n cacheKey,\n () => this.fetchItemsFromAPI(validatedParams.data),\n \"getItems\",\n validatedParams.data\n );\n }\n\n private async fetchItemsFromAPI(\n params: GetItemsParams\n ): Promise<ApiResponse<Item[]>> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n const query = `\n query GetEcommerceItems(\n $where: EcommerceItemsWhere\n $onlyOffers: Boolean\n $limit: Int\n $page: Int\n $search: String\n $sort: String\n $minPrice: Float\n $maxPrice: Float\n ) {\n GetEcommerceItems(\n where: $where\n onlyOffers: $onlyOffers\n limit: $limit\n page: $page\n search: $search\n sort: $sort\n minPrice: $minPrice\n maxPrice: $maxPrice\n ) {\n totalDocs\n totalPages\n prevPage\n nextPage\n docs {\n id\n name\n featured\n description\n url_safe_name\n\n item_super_category_id\n item_super_category_name\n\n item_category_id\n item_category_name\n\n cover_image_url\n cover_image_thumbnail_url\n\n price\n old_price\n price_notes\n price_text\n old_price_text\n currency_prefix\n\n brand_id\n brand_name\n\n master_attributes {\n id\n name\n values {\n id\n value\n }\n }\n\n variations {\n id\n name\n description\n\n cover_image_url\n cover_image_thumbnail_url\n\n price\n old_price\n price_notes\n price_text\n old_price_text\n currency_prefix\n\n attribute_values {\n attribute_id\n attribute_name\n value\n value_id\n }\n\n images {\n url\n thumbnail_url\n }\n }\n\n images {\n url\n thumbnail_url\n }\n }\n }\n }\n `;\n\n const whereConditions: ItemsWhere = {};\n if (params.where?.item_category_id?.equals) {\n whereConditions.item_category_id = {\n equals: params.where.item_category_id.equals,\n };\n }\n if (params.where?.item_super_category_id?.equals) {\n whereConditions.item_super_category_id = {\n equals: params.where.item_super_category_id.equals,\n };\n }\n if (params.where?.brand_id?.equals) {\n whereConditions.brand_id = { equals: params.where.brand_id.equals };\n }\n if (params.where?.id?.equals) {\n whereConditions.id = { equals: params.where.id.equals };\n }\n\n const variables = {\n ...params,\n where:\n Object.keys(whereConditions).length > 0 ? whereConditions : undefined,\n };\n\n const { data, error, errorMessage } =\n await this.fetchGraphQL<ItemsRawResponse>(\n query,\n variables,\n (responseData) => responseData.GetEcommerceItems\n );\n\n if (error) {\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n\n return {\n data: parseRawItemsToItems(data!.docs),\n totalDocs: data!.totalDocs,\n totalPages: data!.totalPages,\n prevPage: data!.prevPage,\n nextPage: data!.nextPage,\n error: false,\n errorMessage: null,\n };\n }\n}\n\nexport const itemsApi = new ItemsApi();\n","import { z } from \"zod\";\n\nexport const categoriesParamsSchema = z.object({\n where: z\n .object({\n item_super_category_id: z\n .object({ equals: z.string().optional() })\n .optional(),\n brand_id: z.object({ equals: z.string().optional() }).optional(),\n })\n .optional(),\n limit: z.coerce.number().optional(),\n page: z.coerce.number().optional(),\n sort: z.string().optional(),\n});\n","import { Category, CategoryEcommerceRaw } from \"./types\";\n\n/**\n * Parses a raw GraphQL response category to the normalized Category type\n * @param rawCategory - The raw category from GraphQL response\n * @returns Normalized Category object\n */\nexport function parseRawCategoryToCategory(\n rawCategory: CategoryEcommerceRaw\n): Category {\n return {\n id: rawCategory.id,\n name: rawCategory.name,\n image_url: rawCategory.image_url,\n };\n}\n\n/**\n * Parses an array of raw GraphQL response categories to normalized Category types\n * @param rawCategories - Array of raw categories from GraphQL response\n * @returns Array of normalized Category objects\n */\nexport function parseRawCategoriesToCategories(\n rawCategories: CategoryEcommerceRaw[]\n): Category[] {\n return rawCategories.map(parseRawCategoryToCategory);\n}\n","import { ApiClient } from \"../core/apiClient\";\nimport { categoriesParamsSchema } from \"./validators\";\nimport { parseRawCategoriesToCategories } from \"./parsers\";\nimport { GetCategoriesParams, CategoriesRawResponse, Category } from \"./types\";\nimport { ApiResponse } from \"../core/types\";\n\nclass CategoriesApi extends ApiClient {\n async getCategories(\n params: GetCategoriesParams = {}\n ): Promise<ApiResponse<Category[]>> {\n const validatedParams = categoriesParamsSchema.safeParse(params);\n if (!validatedParams.success) {\n const errorMessage = this.handleApiError(\n validatedParams.error,\n \"getCategories validation\"\n );\n return { data: [], error: true, errorMessage };\n }\n\n const cacheKey = this.cache.buildCacheKey(\n \"getCategories\",\n validatedParams.data\n );\n return this.cache.cacheWrap(\n cacheKey,\n () => this.fetchCategoriesFromAPI(validatedParams.data),\n \"getCategories\",\n validatedParams.data\n );\n }\n\n private async fetchCategoriesFromAPI(\n params: GetCategoriesParams\n ): Promise<ApiResponse<Category[]>> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: [],\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n const query = `\n query GetEcommerceCategories(\n $where: EcommerceCategoriesWhere\n $limit: Int\n $page: Int\n $sort: String\n ) {\n GetEcommerceCategories(\n where: $where\n limit: $limit\n page: $page\n sort: $sort\n ) {\n docs {\n id\n name\n image_url\n }\n }\n }\n `;\n\n const { data, error, errorMessage } =\n await this.fetchGraphQL<CategoriesRawResponse>(\n query,\n params,\n (responseData) => responseData.GetEcommerceCategories\n );\n\n if (error) {\n return { data: [], error: true, errorMessage };\n }\n\n return {\n data: parseRawCategoriesToCategories(data!.docs),\n error: false,\n errorMessage: null,\n };\n }\n}\n\nexport const categoriesApi = new CategoriesApi();\n","import { z } from \"zod\";\n\nexport const brandsParamsSchema = z.object({\n limit: z.coerce.number().optional(),\n page: z.coerce.number().optional(),\n sort: z.string().optional(),\n});\n","import { Brand, BrandEcommerceRaw } from \"./types\";\n\n/**\n * Parses a raw GraphQL response brand to the normalized Brand type\n * @param rawBrand - The raw brand from GraphQL response\n * @returns Normalized Brand object\n */\nexport function parseRawBrandToBrand(rawBrand: BrandEcommerceRaw): Brand {\n return {\n id: rawBrand.id,\n name: rawBrand.name,\n description: rawBrand.description,\n items_count: rawBrand.items_count,\n image_url: rawBrand.image_url,\n image_thumbnail_url: rawBrand.image_thumbnail_url,\n };\n}\n\n/**\n * Parses an array of raw GraphQL response brands to normalized Brand types\n * @param rawBrands - Array of raw brands from GraphQL response\n * @returns Array of normalized Brand objects\n */\nexport function parseRawBrandsToBrands(\n rawBrands: BrandEcommerceRaw[]\n): Brand[] {\n return rawBrands.map(parseRawBrandToBrand);\n}\n","import { ApiClient } from \"../core/apiClient\";\nimport { brandsParamsSchema } from \"./validators\";\nimport { parseRawBrandsToBrands } from \"./parsers\";\nimport { GetBrandsParams, BrandsRawResponse, Brand } from \"./types\";\nimport { ApiResponse } from \"../core/types\";\n\nclass BrandsApi extends ApiClient {\n async getBrands(params: GetBrandsParams = {}): Promise<ApiResponse<Brand[]>> {\n const validatedParams = brandsParamsSchema.safeParse(params);\n if (!validatedParams.success) {\n const errorMessage = this.handleApiError(\n validatedParams.error,\n \"getBrands validation\"\n );\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n\n const cacheKey = this.cache.buildCacheKey(\n \"getBrands\",\n validatedParams.data\n );\n return this.cache.cacheWrap(\n cacheKey,\n () => this.fetchBrandsFromAPI(validatedParams.data),\n \"getBrands\",\n validatedParams.data\n );\n }\n\n private async fetchBrandsFromAPI(\n params: GetBrandsParams\n ): Promise<ApiResponse<Brand[]>> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n const query = `\n query GetEcommerceBrands(\n $limit: Int\n $page: Int\n $sort: String\n ) {\n GetEcommerceBrands(\n limit: $limit\n page: $page\n sort: $sort\n ) {\n totalDocs\n totalPages\n prevPage\n nextPage\n docs {\n id\n name\n description\n items_count\n image_url\n image_thumbnail_url\n }\n }\n }\n `;\n\n const { data, error, errorMessage } =\n await this.fetchGraphQL<BrandsRawResponse>(\n query,\n params,\n (responseData) => responseData.GetEcommerceBrands\n );\n\n if (error) {\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n\n return {\n data: parseRawBrandsToBrands(data!.docs),\n totalDocs: data!.totalDocs,\n totalPages: data!.totalPages,\n prevPage: data!.prevPage,\n nextPage: data!.nextPage,\n error: false,\n errorMessage: null,\n };\n }\n}\n\nexport const brandsApi = new BrandsApi();\n","import { Entity, EntityEcommerceRaw } from \"./types\";\n\n/**\n * Parses a raw GraphQL response entity to the normalized Entity type\n * @param rawEntity - The raw entity from GraphQL response\n * @returns Normalized Entity object\n */\nexport function parseRawEntityToEntity(rawEntity: EntityEcommerceRaw): Entity {\n return {\n id: rawEntity.id,\n tin: rawEntity.tin,\n name: rawEntity.name,\n web: rawEntity.web,\n address: rawEntity.address,\n country: rawEntity.country,\n city: rawEntity.city,\n currency_id: rawEntity.currency_id,\n currency_name: rawEntity.currency_name,\n currency_prefix: rawEntity.currency_prefix,\n currency_suffix: rawEntity.currency_suffix,\n logo_url: rawEntity.logo_url,\n logo_alt: rawEntity.logo_alt,\n logo_thumbnail_url: rawEntity.logo_thumbnail_url,\n logo_sizes_thumbnail_filename: rawEntity.logo_sizes_thumbnail_filename,\n logo_filename: rawEntity.logo_filename,\n logo_width: rawEntity.logo_width,\n logo_height: rawEntity.logo_height,\n logo_2_url: rawEntity.logo_2_url,\n logo_2_alt: rawEntity.logo_2_alt,\n logo_2_thumbnail_url: rawEntity.logo_2_thumbnail_url,\n logo_2_sizes_thumbnail_filename: rawEntity.logo_2_sizes_thumbnail_filename,\n logo_2_filename: rawEntity.logo_2_filename,\n logo_2_width: rawEntity.logo_2_width,\n logo_2_height: rawEntity.logo_2_height,\n featured_image_url: rawEntity.featured_image_url,\n featured_image_thumbnail_url: rawEntity.featured_image_thumbnail_url,\n featured_image_sizes_thumbnail_filename:\n rawEntity.featured_image_sizes_thumbnail_filename,\n featured_image_filename: rawEntity.featured_image_filename,\n featured_image_width: rawEntity.featured_image_width,\n featured_image_height: rawEntity.featured_image_height,\n };\n}\n","import { ApiClient } from \"../core/apiClient\";\nimport { parseRawEntityToEntity } from \"./parsers\";\nimport { GetEntityParams, EntityRawResponse, Entity } from \"./types\";\nimport { ApiResponse } from \"../core/types\";\n\nclass EntityApi extends ApiClient {\n async getEntity(params: GetEntityParams = {}): Promise<ApiResponse<Entity>> {\n const cacheKey = this.cache.buildCacheKey(\"getEntity\", params);\n return this.cache.cacheWrap(\n cacheKey,\n () => this.fetchEntityFromAPI(params),\n \"getEntity\",\n params\n );\n }\n\n private async fetchEntityFromAPI(\n params: GetEntityParams\n ): Promise<ApiResponse<Entity>> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: null,\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n const query = `\n query GetEntity {\n GetEntity {\n id\n tin\n name\n web\n address\n country\n city\n currency_id\n currency_name\n currency_prefix\n currency_suffix\n logo_url\n logo_alt\n logo_thumbnail_url\n logo_sizes_thumbnail_filename\n logo_filename\n logo_width\n logo_height\n logo_2_url\n logo_2_alt\n logo_2_thumbnail_url\n logo_2_sizes_thumbnail_filename\n logo_2_filename\n logo_2_width\n logo_2_height\n featured_image_url\n featured_image_thumbnail_url\n featured_image_sizes_thumbnail_filename\n featured_image_filename\n featured_image_width\n featured_image_height\n }\n }\n `;\n\n const { data, error, errorMessage } =\n await this.fetchGraphQL<EntityRawResponse>(\n query,\n params,\n (responseData) => responseData\n );\n\n if (error) {\n return { data: null, error: true, errorMessage };\n }\n\n return {\n data: parseRawEntityToEntity(data!.GetEntity),\n error: false,\n errorMessage: null,\n };\n }\n}\n\nexport const entityApi = new EntityApi();\n","import { z } from \"zod\";\n\nexport const orderSchema = z.object({\n name: z.string().min(1),\n email: z.string().email(),\n phone: z.string().optional(),\n notes: z.string().optional(),\n tin: z.string().optional(),\n items: z\n .array(\n z.object({ id: z.number().positive(), quantity: z.number().positive() })\n )\n .min(1),\n delivery_address: z.string().optional(),\n delivery_instructions: z.string().optional(),\n payment_method: z.enum([\"cash\", \"transfer\"]).optional(),\n});\n","import { ApiClient } from \"../core/apiClient\";\nimport { orderSchema } from \"./validators\";\nimport {\n CreateEcommerceOrderParams,\n CreateEcommerceOrderResponse,\n} from \"./types\";\n\nclass OrdersApi extends ApiClient {\n async createEcommerceOrder(\n params: CreateEcommerceOrderParams\n ): Promise<CreateEcommerceOrderResponse> {\n if (!this.baseURL || !this.apiKey) {\n return {\n message: \"SDK no configurado\",\n error: true,\n errorMessage: \"SDK no configurado\",\n };\n }\n\n const validated = orderSchema.safeParse(params);\n if (!validated.success) {\n const errorMessage = this.handleApiError(\n validated.error,\n \"createEcommerceOrder validation\"\n );\n return { message: errorMessage, error: true, errorMessage };\n }\n\n try {\n const response = await this.client.post(\n \"/api/orders/create-ecommerce-order\",\n validated.data\n );\n\n if (response.status === 200) {\n return {\n message: response.data.message || \"Orden creada exitosamente\",\n order_id: response.data.order_id,\n error: false,\n errorMessage: null,\n };\n } else {\n const errorMessage = response.data.message || \"Error al crear la orden\";\n return { message: errorMessage, error: true, errorMessage };\n }\n } catch (error) {\n const errorMessage = this.handleApiError(error, \"createEcommerceOrder\");\n return { message: errorMessage, error: true, errorMessage };\n }\n }\n}\n\nexport const ordersApi = new OrdersApi();\n","import { z } from \"zod\";\n\nexport const contactUsSchema = z.object({\n name: z.string().min(1),\n email: z.string().email(),\n phone: z.string().optional(),\n subject: z.string().optional(),\n notes: z.string().min(1),\n});\n","import { ApiClient } from \"../core/apiClient\";\nimport { contactUsSchema } from \"./validators\";\nimport { SendContactUsEmailParams, SendContactUsEmailResponse } from \"./types\";\n\nclass ContactApi extends ApiClient {\n async sendContactUsEmail(\n params: SendContactUsEmailParams\n ): Promise<SendContactUsEmailResponse> {\n if (!this.baseURL || !this.apiKey) {\n return {\n message: \"SDK no configurado\",\n error: true,\n errorMessage: \"SDK no configurado\",\n };\n }\n\n const validated = contactUsSchema.safeParse(params);\n if (!validated.success) {\n const errorMessage = this.handleApiError(\n validated.error,\n \"sendContactUsEmail validation\"\n );\n return { message: errorMessage, error: true, errorMessage };\n }\n\n try {\n const response = await this.client.post(\n \"/api/entities/send-contact-us-email\",\n validated.data\n );\n\n if (response.status === 200) {\n return {\n message: response.data.message || \"Mensaje enviado exitosamente\",\n error: false,\n errorMessage: null,\n };\n } else {\n const errorMessage =\n response.data.message || \"Error al enviar el mensaje\";\n return { message: errorMessage, error: true, errorMessage };\n }\n } catch (error) {\n const errorMessage = this.handleApiError(error, \"sendContactUsEmail\");\n return { message: errorMessage, error: true, errorMessage };\n }\n }\n}\n\nexport const contactApi = new ContactApi();\n","import { ApiClient } from \"../core/apiClient\";\nimport { CustomGraphQLParams, CustomGraphQLResponse } from \"./types\";\n\nclass CustomApi extends ApiClient {\n async executeCustomQuery<T>(\n params: CustomGraphQLParams\n ): Promise<CustomGraphQLResponse<T>> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: null as T,\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n if (\n !params.query ||\n typeof params.query !== \"string\" ||\n params.query.trim() === \"\"\n ) {\n return {\n data: null as T,\n error: true,\n errorMessage: \"Se requiere un query GraphQL válido.\",\n };\n }\n\n try {\n const response = await this.client.post(\"/api/graphql\", {\n query: params.query,\n variables: params.variables || {},\n });\n\n if (response.data.errors && response.data.errors.length > 0) {\n return {\n data: response.data.data || (null as T),\n errors: response.data.errors,\n error: true,\n errorMessage: `GraphQL Errors: ${response.data.errors\n .map((err: { message: string }) => err.message)\n .join(\", \")}`,\n };\n }\n\n return {\n data: response.data.data,\n error: false,\n errorMessage: null,\n };\n } catch (error) {\n const errorMessage = this.handleApiError(error, \"Custom GraphQL\");\n return { data: null as T, error: true, errorMessage };\n }\n }\n}\n\nexport const customApi = new CustomApi();\n"],"mappings":"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","names":["axios","import_zod","import_zod","import_zod","import_zod","import_zod"]}
package/dist/index.mjs CHANGED
@@ -152,6 +152,7 @@ function parseRawItemToItem(rawItem) {
152
152
  old_price: v.old_price,
153
153
  price_notes: v.price_notes,
154
154
  price_text: v.price_text,
155
+ old_price_text: v.old_price_text,
155
156
  currency_prefix: v.currency_prefix,
156
157
  attribute_values: v.attribute_values,
157
158
  images: v.images.map((img) => ({
@@ -172,6 +173,7 @@ function parseRawItemToItem(rawItem) {
172
173
  item_super_category_name: rawItem.item_super_category_name,
173
174
  item_super_category_id: parseInt(rawItem.item_super_category_id || "0", 10),
174
175
  price_text: rawItem.price_text,
176
+ old_price_text: rawItem.old_price_text,
175
177
  price_notes: rawItem.price_notes,
176
178
  price: rawItem.price,
177
179
  brand_id: parseInt(rawItem.brand_id || "0", 10),
@@ -289,6 +291,7 @@ var ItemsApi = class extends ApiClient {
289
291
  old_price
290
292
  price_notes
291
293
  price_text
294
+ old_price_text
292
295
  currency_prefix
293
296
 
294
297
  brand_id
@@ -315,6 +318,7 @@ var ItemsApi = class extends ApiClient {
315
318
  old_price
316
319
  price_notes
317
320
  price_text
321
+ old_price_text
318
322
  currency_prefix
319
323
 
320
324
  attribute_values {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/api/core/apiClient.ts","../src/api/core/cache.ts","../src/api/items/parsers.ts","../src/api/items/validators.ts","../src/api/items/api.ts","../src/api/categories/validators.ts","../src/api/categories/parsers.ts","../src/api/categories/api.ts","../src/api/brands/validators.ts","../src/api/brands/parsers.ts","../src/api/brands/api.ts","../src/api/entity/parsers.ts","../src/api/entity/api.ts","../src/api/orders/validators.ts","../src/api/orders/api.ts","../src/api/contact/validators.ts","../src/api/contact/api.ts","../src/api/custom/api.ts"],"sourcesContent":["import axios, { AxiosInstance, AxiosError } from \"axios\";\nimport { z } from \"zod\";\nimport { CacheService } from \"./cache\";\n\nexport class ApiClient {\n protected client: AxiosInstance;\n protected cache: CacheService;\n protected baseURL: string;\n protected apiKey: string;\n\n constructor() {\n this.baseURL = process.env.PAKENTO_CMS_BASE_URL || \"\";\n this.apiKey = process.env.PAKENTO_API_KEY || \"\";\n this.cache = new CacheService(this.apiKey);\n\n this.client = axios.create({\n baseURL: this.baseURL,\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `users API-Key ${this.apiKey}`,\n },\n });\n\n this.client.interceptors.request.use(\n (config) => {\n const fullUrl = `${config.baseURL}${config.url}`;\n console.log(`🌐 API Call: ${config.method?.toUpperCase()} ${fullUrl}`);\n return config;\n },\n (error) => Promise.reject(error)\n );\n }\n\n protected handleApiError(error: unknown, context: string): string {\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n const responseMessage = error.response?.data?.message;\n if (status === 401) return \"API Key inválida o expirada\";\n if (status === 404) return `${context} no encontrado`;\n if (status && status >= 500) return \"Error del servidor CMS\";\n return (\n responseMessage || `Error de conexión en ${context}: ${error.message}`\n );\n } else if (error instanceof z.ZodError) {\n return `Validación fallida: ${error.issues\n .map((e) => e.message)\n .join(\", \")}`;\n } else if (error instanceof Error) {\n return error.message;\n }\n return \"Error desconocido\";\n }\n\n protected async fetchGraphQL<T>(\n query: string,\n variables: any,\n extractData: (responseData: any) => T\n ): Promise<{ data: T | null; error: boolean; errorMessage: string | null }> {\n try {\n const response = await this.client.post(\"/api/graphql\", {\n query,\n variables,\n });\n if (response.data.errors) {\n const errorMessage = `GraphQL Error: ${response.data.errors[0].message}`;\n return { data: null, error: true, errorMessage };\n }\n const data = extractData(response.data.data);\n return { data, error: false, errorMessage: null };\n } catch (error) {\n const errorMessage = this.handleApiError(error, \"GraphQL query\");\n return { data: null, error: true, errorMessage };\n }\n }\n}\n","import { Redis } from \"@upstash/redis\";\n\nexport class CacheService {\n private redis?: Redis;\n private apiKeyHash: string;\n private defaultTTL: number = 172800; // 48 hours\n\n constructor(apiKey: string) {\n this.apiKeyHash = apiKey.substring(0, 8);\n\n if (\n process.env.UPSTASH_REDIS_REST_URL &&\n process.env.UPSTASH_REDIS_REST_TOKEN\n ) {\n this.redis = new Redis({\n url: process.env.UPSTASH_REDIS_REST_URL,\n token: process.env.UPSTASH_REDIS_REST_TOKEN,\n });\n }\n }\n\n private generateParamsHash(params: Record<string, unknown>): string {\n const paramsString = JSON.stringify(params);\n return btoa(paramsString);\n }\n\n public buildCacheKey(\n functionName: string,\n params: Record<string, unknown> = {}\n ): string {\n const paramsHash = this.generateParamsHash({ ...params, functionName });\n return `pakento:${this.apiKeyHash}:${paramsHash}`;\n }\n\n public async cacheWrap<T>(\n key: string,\n fetcher: () => Promise<T>,\n functionName: string,\n filters?: Record<string, unknown>\n ): Promise<T> {\n if (!this.redis) {\n return fetcher();\n }\n\n let cached: string | null = null;\n try {\n cached = await this.redis.get(key);\n\n if (typeof cached === \"object\" && cached !== null) {\n console.log(\"[Cache] ✅ Reading from cache:\", key);\n return cached as T;\n }\n\n if (cached) {\n console.log(\"[Cache] ✅ Reading from cache:\", key);\n return JSON.parse(cached as string) as T;\n }\n } catch (err) {\n console.warn(\"[Cache] ❌ Error reading from cache:\", err);\n console.log(`[Cache] ❌ Key: ${key}, type: ${typeof cached}`);\n }\n\n const result = await fetcher();\n\n try {\n // Crear objeto de caché con datos y filtros para visualización\n const cacheData = {\n _function: functionName,\n _filters: filters || {},\n _cachedAt: new Date().toISOString(),\n ...result,\n };\n\n console.log(\"[Cache] ✅ Writing to cache:\", key);\n await this.redis.set(key, JSON.stringify(cacheData), {\n ex: this.defaultTTL,\n });\n } catch (err) {\n console.warn(\"[Cache] ❌ Error writing to cache:\", err);\n }\n\n return result;\n }\n\n public async clearAllCache(): Promise<boolean> {\n if (!this.redis) {\n console.warn(\"[Cache] ❌ Redis no configurado\");\n return false;\n }\n\n try {\n const pattern = `pakento:${this.apiKeyHash}:*`;\n const keys = await this.redis.keys(pattern);\n\n if (keys.length > 0) {\n await this.redis.del(...keys);\n console.log(\"[Cache] ✅ Cache limpiado\");\n }\n\n return true;\n } catch (err) {\n console.warn(\"[Cache] ❌ Error limpiando todo el cache\", err);\n return false;\n }\n }\n}\n","import { Item, ItemEcommerceRaw } from \"./types\";\n\n/**\n * Parses a raw GraphQL response item to the normalized Item type\n * @param rawItem - The raw item from GraphQL response\n * @returns Normalized Item object\n */\nexport function parseRawItemToItem(rawItem: ItemEcommerceRaw): Item {\n const images = rawItem.images.map((img) => ({\n url: img.url,\n thumbnail_url: img.thumbnail_url,\n }));\n\n const variations = rawItem.variations.map((v) => ({\n id: v.id,\n name: v.name,\n description: v.description,\n cover_image_url: v.cover_image_url,\n cover_image_thumbnail_url: v.cover_image_thumbnail_url,\n price: v.price,\n old_price: v.old_price,\n price_notes: v.price_notes,\n price_text: v.price_text,\n currency_prefix: v.currency_prefix,\n attribute_values: v.attribute_values,\n images: v.images.map((img) => ({\n url: img.url,\n thumbnail_url: img.thumbnail_url,\n })),\n }));\n\n return {\n id: rawItem.id,\n name: rawItem.name,\n featured: rawItem.featured,\n url_safe_name: rawItem.url_safe_name,\n currency_prefix: rawItem.currency_prefix,\n description: rawItem.description,\n old_price: rawItem.old_price,\n item_category_name: rawItem.item_category_name,\n item_category_id: parseInt(rawItem.item_category_id || \"0\", 10),\n item_super_category_name: rawItem.item_super_category_name,\n item_super_category_id: parseInt(rawItem.item_super_category_id || \"0\", 10),\n price_text: rawItem.price_text,\n price_notes: rawItem.price_notes,\n price: rawItem.price,\n brand_id: parseInt(rawItem.brand_id || \"0\", 10),\n brand_name: rawItem.brand_name,\n cover_image_url: rawItem.cover_image_url,\n cover_image_thumbnail_url: rawItem.cover_image_thumbnail_url,\n images,\n master_attributes: rawItem.master_attributes,\n variations,\n };\n}\n\n/**\n * Parses an array of raw GraphQL response items to normalized Item types\n * @param rawItems - Array of raw items from GraphQL response\n * @returns Array of normalized Item objects\n */\nexport function parseRawItemsToItems(rawItems: ItemEcommerceRaw[]): Item[] {\n return rawItems.map(parseRawItemToItem);\n}\n","import { z } from \"zod\";\n\nexport const itemsParamsSchema = z.object({\n where: z\n .object({\n item_category_id: z.object({ equals: z.string().optional() }).optional(),\n item_super_category_id: z\n .object({ equals: z.string().optional() })\n .optional(),\n brand_id: z.object({ equals: z.string().optional() }).optional(),\n id: z.object({ equals: z.string().optional() }).optional(),\n })\n .optional(),\n onlyOffers: z.boolean().optional(),\n limit: z.coerce.number().optional(),\n page: z.coerce.number().optional(),\n search: z.string().optional(),\n sort: z.string().optional(),\n minPrice: z.coerce.number().optional(),\n maxPrice: z.coerce.number().optional(),\n});\n","import { ApiClient } from \"../core/apiClient\";\nimport { itemsParamsSchema } from \"./validators\";\nimport { parseRawItemsToItems } from \"./parsers\";\nimport { GetItemsParams, ItemsRawResponse, ItemsWhere, Item } from \"./types\";\nimport { ApiResponse } from \"../core/types\";\n\nclass ItemsApi extends ApiClient {\n async getItems(params: GetItemsParams = {}): Promise<ApiResponse<Item[]>> {\n const validatedParams = itemsParamsSchema.safeParse(params);\n if (!validatedParams.success) {\n const errorMessage = this.handleApiError(\n validatedParams.error,\n \"getItems validation\"\n );\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n\n const cacheKey = this.cache.buildCacheKey(\"getItems\", validatedParams.data);\n return this.cache.cacheWrap(\n cacheKey,\n () => this.fetchItemsFromAPI(validatedParams.data),\n \"getItems\",\n validatedParams.data\n );\n }\n\n private async fetchItemsFromAPI(\n params: GetItemsParams\n ): Promise<ApiResponse<Item[]>> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n const query = `\n query GetEcommerceItems(\n $where: EcommerceItemsWhere\n $onlyOffers: Boolean\n $limit: Int\n $page: Int\n $search: String\n $sort: String\n $minPrice: Float\n $maxPrice: Float\n ) {\n GetEcommerceItems(\n where: $where\n onlyOffers: $onlyOffers\n limit: $limit\n page: $page\n search: $search\n sort: $sort\n minPrice: $minPrice\n maxPrice: $maxPrice\n ) {\n totalDocs\n totalPages\n prevPage\n nextPage\n docs {\n id\n name\n featured\n description\n url_safe_name\n\n item_super_category_id\n item_super_category_name\n\n item_category_id\n item_category_name\n\n cover_image_url\n cover_image_thumbnail_url\n\n price\n old_price\n price_notes\n price_text\n currency_prefix\n\n brand_id\n brand_name\n\n master_attributes {\n id\n name\n values {\n id\n value\n }\n }\n\n variations {\n id\n name\n description\n\n cover_image_url\n cover_image_thumbnail_url\n\n price\n old_price\n price_notes\n price_text\n currency_prefix\n\n attribute_values {\n attribute_id\n attribute_name\n value\n value_id\n }\n\n images {\n url\n thumbnail_url\n }\n }\n\n images {\n url\n thumbnail_url\n }\n }\n }\n }\n `;\n\n const whereConditions: ItemsWhere = {};\n if (params.where?.item_category_id?.equals) {\n whereConditions.item_category_id = {\n equals: params.where.item_category_id.equals,\n };\n }\n if (params.where?.item_super_category_id?.equals) {\n whereConditions.item_super_category_id = {\n equals: params.where.item_super_category_id.equals,\n };\n }\n if (params.where?.brand_id?.equals) {\n whereConditions.brand_id = { equals: params.where.brand_id.equals };\n }\n if (params.where?.id?.equals) {\n whereConditions.id = { equals: params.where.id.equals };\n }\n\n const variables = {\n ...params,\n where:\n Object.keys(whereConditions).length > 0 ? whereConditions : undefined,\n };\n\n const { data, error, errorMessage } =\n await this.fetchGraphQL<ItemsRawResponse>(\n query,\n variables,\n (responseData) => responseData.GetEcommerceItems\n );\n\n if (error) {\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n\n return {\n data: parseRawItemsToItems(data!.docs),\n totalDocs: data!.totalDocs,\n totalPages: data!.totalPages,\n prevPage: data!.prevPage,\n nextPage: data!.nextPage,\n error: false,\n errorMessage: null,\n };\n }\n}\n\nexport const itemsApi = new ItemsApi();\n","import { z } from \"zod\";\n\nexport const categoriesParamsSchema = z.object({\n where: z\n .object({\n item_super_category_id: z\n .object({ equals: z.string().optional() })\n .optional(),\n brand_id: z.object({ equals: z.string().optional() }).optional(),\n })\n .optional(),\n limit: z.coerce.number().optional(),\n page: z.coerce.number().optional(),\n sort: z.string().optional(),\n});\n","import { Category, CategoryEcommerceRaw } from \"./types\";\n\n/**\n * Parses a raw GraphQL response category to the normalized Category type\n * @param rawCategory - The raw category from GraphQL response\n * @returns Normalized Category object\n */\nexport function parseRawCategoryToCategory(\n rawCategory: CategoryEcommerceRaw\n): Category {\n return {\n id: rawCategory.id,\n name: rawCategory.name,\n image_url: rawCategory.image_url,\n };\n}\n\n/**\n * Parses an array of raw GraphQL response categories to normalized Category types\n * @param rawCategories - Array of raw categories from GraphQL response\n * @returns Array of normalized Category objects\n */\nexport function parseRawCategoriesToCategories(\n rawCategories: CategoryEcommerceRaw[]\n): Category[] {\n return rawCategories.map(parseRawCategoryToCategory);\n}\n","import { ApiClient } from \"../core/apiClient\";\nimport { categoriesParamsSchema } from \"./validators\";\nimport { parseRawCategoriesToCategories } from \"./parsers\";\nimport { GetCategoriesParams, CategoriesRawResponse, Category } from \"./types\";\nimport { ApiResponse } from \"../core/types\";\n\nclass CategoriesApi extends ApiClient {\n async getCategories(\n params: GetCategoriesParams = {}\n ): Promise<ApiResponse<Category[]>> {\n const validatedParams = categoriesParamsSchema.safeParse(params);\n if (!validatedParams.success) {\n const errorMessage = this.handleApiError(\n validatedParams.error,\n \"getCategories validation\"\n );\n return { data: [], error: true, errorMessage };\n }\n\n const cacheKey = this.cache.buildCacheKey(\n \"getCategories\",\n validatedParams.data\n );\n return this.cache.cacheWrap(\n cacheKey,\n () => this.fetchCategoriesFromAPI(validatedParams.data),\n \"getCategories\",\n validatedParams.data\n );\n }\n\n private async fetchCategoriesFromAPI(\n params: GetCategoriesParams\n ): Promise<ApiResponse<Category[]>> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: [],\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n const query = `\n query GetEcommerceCategories(\n $where: EcommerceCategoriesWhere\n $limit: Int\n $page: Int\n $sort: String\n ) {\n GetEcommerceCategories(\n where: $where\n limit: $limit\n page: $page\n sort: $sort\n ) {\n docs {\n id\n name\n image_url\n }\n }\n }\n `;\n\n const { data, error, errorMessage } =\n await this.fetchGraphQL<CategoriesRawResponse>(\n query,\n params,\n (responseData) => responseData.GetEcommerceCategories\n );\n\n if (error) {\n return { data: [], error: true, errorMessage };\n }\n\n return {\n data: parseRawCategoriesToCategories(data!.docs),\n error: false,\n errorMessage: null,\n };\n }\n}\n\nexport const categoriesApi = new CategoriesApi();\n","import { z } from \"zod\";\n\nexport const brandsParamsSchema = z.object({\n limit: z.coerce.number().optional(),\n page: z.coerce.number().optional(),\n sort: z.string().optional(),\n});\n","import { Brand, BrandEcommerceRaw } from \"./types\";\n\n/**\n * Parses a raw GraphQL response brand to the normalized Brand type\n * @param rawBrand - The raw brand from GraphQL response\n * @returns Normalized Brand object\n */\nexport function parseRawBrandToBrand(rawBrand: BrandEcommerceRaw): Brand {\n return {\n id: rawBrand.id,\n name: rawBrand.name,\n description: rawBrand.description,\n items_count: rawBrand.items_count,\n image_url: rawBrand.image_url,\n image_thumbnail_url: rawBrand.image_thumbnail_url,\n };\n}\n\n/**\n * Parses an array of raw GraphQL response brands to normalized Brand types\n * @param rawBrands - Array of raw brands from GraphQL response\n * @returns Array of normalized Brand objects\n */\nexport function parseRawBrandsToBrands(\n rawBrands: BrandEcommerceRaw[]\n): Brand[] {\n return rawBrands.map(parseRawBrandToBrand);\n}\n","import { ApiClient } from \"../core/apiClient\";\nimport { brandsParamsSchema } from \"./validators\";\nimport { parseRawBrandsToBrands } from \"./parsers\";\nimport { GetBrandsParams, BrandsRawResponse, Brand } from \"./types\";\nimport { ApiResponse } from \"../core/types\";\n\nclass BrandsApi extends ApiClient {\n async getBrands(params: GetBrandsParams = {}): Promise<ApiResponse<Brand[]>> {\n const validatedParams = brandsParamsSchema.safeParse(params);\n if (!validatedParams.success) {\n const errorMessage = this.handleApiError(\n validatedParams.error,\n \"getBrands validation\"\n );\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n\n const cacheKey = this.cache.buildCacheKey(\n \"getBrands\",\n validatedParams.data\n );\n return this.cache.cacheWrap(\n cacheKey,\n () => this.fetchBrandsFromAPI(validatedParams.data),\n \"getBrands\",\n validatedParams.data\n );\n }\n\n private async fetchBrandsFromAPI(\n params: GetBrandsParams\n ): Promise<ApiResponse<Brand[]>> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n const query = `\n query GetEcommerceBrands(\n $limit: Int\n $page: Int\n $sort: String\n ) {\n GetEcommerceBrands(\n limit: $limit\n page: $page\n sort: $sort\n ) {\n totalDocs\n totalPages\n prevPage\n nextPage\n docs {\n id\n name\n description\n items_count\n image_url\n image_thumbnail_url\n }\n }\n }\n `;\n\n const { data, error, errorMessage } =\n await this.fetchGraphQL<BrandsRawResponse>(\n query,\n params,\n (responseData) => responseData.GetEcommerceBrands\n );\n\n if (error) {\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n\n return {\n data: parseRawBrandsToBrands(data!.docs),\n totalDocs: data!.totalDocs,\n totalPages: data!.totalPages,\n prevPage: data!.prevPage,\n nextPage: data!.nextPage,\n error: false,\n errorMessage: null,\n };\n }\n}\n\nexport const brandsApi = new BrandsApi();\n","import { Entity, EntityEcommerceRaw } from \"./types\";\n\n/**\n * Parses a raw GraphQL response entity to the normalized Entity type\n * @param rawEntity - The raw entity from GraphQL response\n * @returns Normalized Entity object\n */\nexport function parseRawEntityToEntity(rawEntity: EntityEcommerceRaw): Entity {\n return {\n id: rawEntity.id,\n tin: rawEntity.tin,\n name: rawEntity.name,\n web: rawEntity.web,\n address: rawEntity.address,\n country: rawEntity.country,\n city: rawEntity.city,\n currency_id: rawEntity.currency_id,\n currency_name: rawEntity.currency_name,\n currency_prefix: rawEntity.currency_prefix,\n currency_suffix: rawEntity.currency_suffix,\n logo_url: rawEntity.logo_url,\n logo_alt: rawEntity.logo_alt,\n logo_thumbnail_url: rawEntity.logo_thumbnail_url,\n logo_sizes_thumbnail_filename: rawEntity.logo_sizes_thumbnail_filename,\n logo_filename: rawEntity.logo_filename,\n logo_width: rawEntity.logo_width,\n logo_height: rawEntity.logo_height,\n logo_2_url: rawEntity.logo_2_url,\n logo_2_alt: rawEntity.logo_2_alt,\n logo_2_thumbnail_url: rawEntity.logo_2_thumbnail_url,\n logo_2_sizes_thumbnail_filename: rawEntity.logo_2_sizes_thumbnail_filename,\n logo_2_filename: rawEntity.logo_2_filename,\n logo_2_width: rawEntity.logo_2_width,\n logo_2_height: rawEntity.logo_2_height,\n featured_image_url: rawEntity.featured_image_url,\n featured_image_thumbnail_url: rawEntity.featured_image_thumbnail_url,\n featured_image_sizes_thumbnail_filename:\n rawEntity.featured_image_sizes_thumbnail_filename,\n featured_image_filename: rawEntity.featured_image_filename,\n featured_image_width: rawEntity.featured_image_width,\n featured_image_height: rawEntity.featured_image_height,\n };\n}\n","import { ApiClient } from \"../core/apiClient\";\nimport { parseRawEntityToEntity } from \"./parsers\";\nimport { GetEntityParams, EntityRawResponse, Entity } from \"./types\";\nimport { ApiResponse } from \"../core/types\";\n\nclass EntityApi extends ApiClient {\n async getEntity(params: GetEntityParams = {}): Promise<ApiResponse<Entity>> {\n const cacheKey = this.cache.buildCacheKey(\"getEntity\", params);\n return this.cache.cacheWrap(\n cacheKey,\n () => this.fetchEntityFromAPI(params),\n \"getEntity\",\n params\n );\n }\n\n private async fetchEntityFromAPI(\n params: GetEntityParams\n ): Promise<ApiResponse<Entity>> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: null,\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n const query = `\n query GetEntity {\n GetEntity {\n id\n tin\n name\n web\n address\n country\n city\n currency_id\n currency_name\n currency_prefix\n currency_suffix\n logo_url\n logo_alt\n logo_thumbnail_url\n logo_sizes_thumbnail_filename\n logo_filename\n logo_width\n logo_height\n logo_2_url\n logo_2_alt\n logo_2_thumbnail_url\n logo_2_sizes_thumbnail_filename\n logo_2_filename\n logo_2_width\n logo_2_height\n featured_image_url\n featured_image_thumbnail_url\n featured_image_sizes_thumbnail_filename\n featured_image_filename\n featured_image_width\n featured_image_height\n }\n }\n `;\n\n const { data, error, errorMessage } =\n await this.fetchGraphQL<EntityRawResponse>(\n query,\n params,\n (responseData) => responseData\n );\n\n if (error) {\n return { data: null, error: true, errorMessage };\n }\n\n return {\n data: parseRawEntityToEntity(data!.GetEntity),\n error: false,\n errorMessage: null,\n };\n }\n}\n\nexport const entityApi = new EntityApi();\n","import { z } from \"zod\";\n\nexport const orderSchema = z.object({\n name: z.string().min(1),\n email: z.string().email(),\n phone: z.string().optional(),\n notes: z.string().optional(),\n tin: z.string().optional(),\n items: z\n .array(\n z.object({ id: z.number().positive(), quantity: z.number().positive() })\n )\n .min(1),\n delivery_address: z.string().optional(),\n delivery_instructions: z.string().optional(),\n payment_method: z.enum([\"cash\", \"transfer\"]).optional(),\n});\n","import { ApiClient } from \"../core/apiClient\";\nimport { orderSchema } from \"./validators\";\nimport {\n CreateEcommerceOrderParams,\n CreateEcommerceOrderResponse,\n} from \"./types\";\n\nclass OrdersApi extends ApiClient {\n async createEcommerceOrder(\n params: CreateEcommerceOrderParams\n ): Promise<CreateEcommerceOrderResponse> {\n if (!this.baseURL || !this.apiKey) {\n return {\n message: \"SDK no configurado\",\n error: true,\n errorMessage: \"SDK no configurado\",\n };\n }\n\n const validated = orderSchema.safeParse(params);\n if (!validated.success) {\n const errorMessage = this.handleApiError(\n validated.error,\n \"createEcommerceOrder validation\"\n );\n return { message: errorMessage, error: true, errorMessage };\n }\n\n try {\n const response = await this.client.post(\n \"/api/orders/create-ecommerce-order\",\n validated.data\n );\n\n if (response.status === 200) {\n return {\n message: response.data.message || \"Orden creada exitosamente\",\n order_id: response.data.order_id,\n error: false,\n errorMessage: null,\n };\n } else {\n const errorMessage = response.data.message || \"Error al crear la orden\";\n return { message: errorMessage, error: true, errorMessage };\n }\n } catch (error) {\n const errorMessage = this.handleApiError(error, \"createEcommerceOrder\");\n return { message: errorMessage, error: true, errorMessage };\n }\n }\n}\n\nexport const ordersApi = new OrdersApi();\n","import { z } from \"zod\";\n\nexport const contactUsSchema = z.object({\n name: z.string().min(1),\n email: z.string().email(),\n phone: z.string().optional(),\n subject: z.string().optional(),\n notes: z.string().min(1),\n});\n","import { ApiClient } from \"../core/apiClient\";\nimport { contactUsSchema } from \"./validators\";\nimport { SendContactUsEmailParams, SendContactUsEmailResponse } from \"./types\";\n\nclass ContactApi extends ApiClient {\n async sendContactUsEmail(\n params: SendContactUsEmailParams\n ): Promise<SendContactUsEmailResponse> {\n if (!this.baseURL || !this.apiKey) {\n return {\n message: \"SDK no configurado\",\n error: true,\n errorMessage: \"SDK no configurado\",\n };\n }\n\n const validated = contactUsSchema.safeParse(params);\n if (!validated.success) {\n const errorMessage = this.handleApiError(\n validated.error,\n \"sendContactUsEmail validation\"\n );\n return { message: errorMessage, error: true, errorMessage };\n }\n\n try {\n const response = await this.client.post(\n \"/api/entities/send-contact-us-email\",\n validated.data\n );\n\n if (response.status === 200) {\n return {\n message: response.data.message || \"Mensaje enviado exitosamente\",\n error: false,\n errorMessage: null,\n };\n } else {\n const errorMessage =\n response.data.message || \"Error al enviar el mensaje\";\n return { message: errorMessage, error: true, errorMessage };\n }\n } catch (error) {\n const errorMessage = this.handleApiError(error, \"sendContactUsEmail\");\n return { message: errorMessage, error: true, errorMessage };\n }\n }\n}\n\nexport const contactApi = new ContactApi();\n","import { ApiClient } from \"../core/apiClient\";\nimport { CustomGraphQLParams, CustomGraphQLResponse } from \"./types\";\n\nclass CustomApi extends ApiClient {\n async executeCustomQuery<T>(\n params: CustomGraphQLParams\n ): Promise<CustomGraphQLResponse<T>> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: null as T,\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n if (\n !params.query ||\n typeof params.query !== \"string\" ||\n params.query.trim() === \"\"\n ) {\n return {\n data: null as T,\n error: true,\n errorMessage: \"Se requiere un query GraphQL válido.\",\n };\n }\n\n try {\n const response = await this.client.post(\"/api/graphql\", {\n query: params.query,\n variables: params.variables || {},\n });\n\n if (response.data.errors && response.data.errors.length > 0) {\n return {\n data: response.data.data || (null as T),\n errors: response.data.errors,\n error: true,\n errorMessage: `GraphQL Errors: ${response.data.errors\n .map((err: { message: string }) => err.message)\n .join(\", \")}`,\n };\n }\n\n return {\n data: response.data.data,\n error: false,\n errorMessage: null,\n };\n } catch (error) {\n const errorMessage = this.handleApiError(error, \"Custom GraphQL\");\n return { data: null as T, error: true, errorMessage };\n }\n }\n}\n\nexport const customApi = new CustomApi();\n"],"mappings":";AAAA,OAAO,SAAwB,kBAAkB;AACjD,SAAS,SAAS;;;ACDlB,SAAS,aAAa;AAEf,IAAM,eAAN,MAAmB;AAAA;AAAA,EAKxB,YAAY,QAAgB;AAF5B,SAAQ,aAAqB;AAG3B,SAAK,aAAa,OAAO,UAAU,GAAG,CAAC;AAEvC,QACE,QAAQ,IAAI,0BACZ,QAAQ,IAAI,0BACZ;AACA,WAAK,QAAQ,IAAI,MAAM;AAAA,QACrB,KAAK,QAAQ,IAAI;AAAA,QACjB,OAAO,QAAQ,IAAI;AAAA,MACrB,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEQ,mBAAmB,QAAyC;AAClE,UAAM,eAAe,KAAK,UAAU,MAAM;AAC1C,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEO,cACL,cACA,SAAkC,CAAC,GAC3B;AACR,UAAM,aAAa,KAAK,mBAAmB,EAAE,GAAG,QAAQ,aAAa,CAAC;AACtE,WAAO,WAAW,KAAK,UAAU,IAAI,UAAU;AAAA,EACjD;AAAA,EAEA,MAAa,UACX,KACA,SACA,cACA,SACY;AACZ,QAAI,CAAC,KAAK,OAAO;AACf,aAAO,QAAQ;AAAA,IACjB;AAEA,QAAI,SAAwB;AAC5B,QAAI;AACF,eAAS,MAAM,KAAK,MAAM,IAAI,GAAG;AAEjC,UAAI,OAAO,WAAW,YAAY,WAAW,MAAM;AACjD,gBAAQ,IAAI,sCAAiC,GAAG;AAChD,eAAO;AAAA,MACT;AAEA,UAAI,QAAQ;AACV,gBAAQ,IAAI,sCAAiC,GAAG;AAChD,eAAO,KAAK,MAAM,MAAgB;AAAA,MACpC;AAAA,IACF,SAAS,KAAK;AACZ,cAAQ,KAAK,4CAAuC,GAAG;AACvD,cAAQ,IAAI,uBAAkB,GAAG,WAAW,OAAO,MAAM,EAAE;AAAA,IAC7D;AAEA,UAAM,SAAS,MAAM,QAAQ;AAE7B,QAAI;AAEF,YAAM,YAAY;AAAA,QAChB,WAAW;AAAA,QACX,UAAU,WAAW,CAAC;AAAA,QACtB,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,QAClC,GAAG;AAAA,MACL;AAEA,cAAQ,IAAI,oCAA+B,GAAG;AAC9C,YAAM,KAAK,MAAM,IAAI,KAAK,KAAK,UAAU,SAAS,GAAG;AAAA,QACnD,IAAI,KAAK;AAAA,MACX,CAAC;AAAA,IACH,SAAS,KAAK;AACZ,cAAQ,KAAK,0CAAqC,GAAG;AAAA,IACvD;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,MAAa,gBAAkC;AAC7C,QAAI,CAAC,KAAK,OAAO;AACf,cAAQ,KAAK,qCAAgC;AAC7C,aAAO;AAAA,IACT;AAEA,QAAI;AACF,YAAM,UAAU,WAAW,KAAK,UAAU;AAC1C,YAAM,OAAO,MAAM,KAAK,MAAM,KAAK,OAAO;AAE1C,UAAI,KAAK,SAAS,GAAG;AACnB,cAAM,KAAK,MAAM,IAAI,GAAG,IAAI;AAC5B,gBAAQ,IAAI,+BAA0B;AAAA,MACxC;AAEA,aAAO;AAAA,IACT,SAAS,KAAK;AACZ,cAAQ,KAAK,gDAA2C,GAAG;AAC3D,aAAO;AAAA,IACT;AAAA,EACF;AACF;;;ADrGO,IAAM,YAAN,MAAgB;AAAA,EAMrB,cAAc;AACZ,SAAK,UAAU,QAAQ,IAAI,wBAAwB;AACnD,SAAK,SAAS,QAAQ,IAAI,mBAAmB;AAC7C,SAAK,QAAQ,IAAI,aAAa,KAAK,MAAM;AAEzC,SAAK,SAAS,MAAM,OAAO;AAAA,MACzB,SAAS,KAAK;AAAA,MACd,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,eAAe,iBAAiB,KAAK,MAAM;AAAA,MAC7C;AAAA,IACF,CAAC;AAED,SAAK,OAAO,aAAa,QAAQ;AAAA,MAC/B,CAAC,WAAW;AACV,cAAM,UAAU,GAAG,OAAO,OAAO,GAAG,OAAO,GAAG;AAC9C,gBAAQ,IAAI,uBAAgB,OAAO,QAAQ,YAAY,CAAC,IAAI,OAAO,EAAE;AACrE,eAAO;AAAA,MACT;AAAA,MACA,CAAC,UAAU,QAAQ,OAAO,KAAK;AAAA,IACjC;AAAA,EACF;AAAA,EAEU,eAAe,OAAgB,SAAyB;AAChE,QAAI,iBAAiB,YAAY;AAC/B,YAAM,SAAS,MAAM,UAAU;AAC/B,YAAM,kBAAkB,MAAM,UAAU,MAAM;AAC9C,UAAI,WAAW,IAAK,QAAO;AAC3B,UAAI,WAAW,IAAK,QAAO,GAAG,OAAO;AACrC,UAAI,UAAU,UAAU,IAAK,QAAO;AACpC,aACE,mBAAmB,2BAAwB,OAAO,KAAK,MAAM,OAAO;AAAA,IAExE,WAAW,iBAAiB,EAAE,UAAU;AACtC,aAAO,0BAAuB,MAAM,OACjC,IAAI,CAAC,MAAM,EAAE,OAAO,EACpB,KAAK,IAAI,CAAC;AAAA,IACf,WAAW,iBAAiB,OAAO;AACjC,aAAO,MAAM;AAAA,IACf;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAgB,aACd,OACA,WACA,aAC0E;AAC1E,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,OAAO,KAAK,gBAAgB;AAAA,QACtD;AAAA,QACA;AAAA,MACF,CAAC;AACD,UAAI,SAAS,KAAK,QAAQ;AACxB,cAAM,eAAe,kBAAkB,SAAS,KAAK,OAAO,CAAC,EAAE,OAAO;AACtE,eAAO,EAAE,MAAM,MAAM,OAAO,MAAM,aAAa;AAAA,MACjD;AACA,YAAM,OAAO,YAAY,SAAS,KAAK,IAAI;AAC3C,aAAO,EAAE,MAAM,OAAO,OAAO,cAAc,KAAK;AAAA,IAClD,SAAS,OAAO;AACd,YAAM,eAAe,KAAK,eAAe,OAAO,eAAe;AAC/D,aAAO,EAAE,MAAM,MAAM,OAAO,MAAM,aAAa;AAAA,IACjD;AAAA,EACF;AACF;;;AEnEO,SAAS,mBAAmB,SAAiC;AAClE,QAAM,SAAS,QAAQ,OAAO,IAAI,CAAC,SAAS;AAAA,IAC1C,KAAK,IAAI;AAAA,IACT,eAAe,IAAI;AAAA,EACrB,EAAE;AAEF,QAAM,aAAa,QAAQ,WAAW,IAAI,CAAC,OAAO;AAAA,IAChD,IAAI,EAAE;AAAA,IACN,MAAM,EAAE;AAAA,IACR,aAAa,EAAE;AAAA,IACf,iBAAiB,EAAE;AAAA,IACnB,2BAA2B,EAAE;AAAA,IAC7B,OAAO,EAAE;AAAA,IACT,WAAW,EAAE;AAAA,IACb,aAAa,EAAE;AAAA,IACf,YAAY,EAAE;AAAA,IACd,iBAAiB,EAAE;AAAA,IACnB,kBAAkB,EAAE;AAAA,IACpB,QAAQ,EAAE,OAAO,IAAI,CAAC,SAAS;AAAA,MAC7B,KAAK,IAAI;AAAA,MACT,eAAe,IAAI;AAAA,IACrB,EAAE;AAAA,EACJ,EAAE;AAEF,SAAO;AAAA,IACL,IAAI,QAAQ;AAAA,IACZ,MAAM,QAAQ;AAAA,IACd,UAAU,QAAQ;AAAA,IAClB,eAAe,QAAQ;AAAA,IACvB,iBAAiB,QAAQ;AAAA,IACzB,aAAa,QAAQ;AAAA,IACrB,WAAW,QAAQ;AAAA,IACnB,oBAAoB,QAAQ;AAAA,IAC5B,kBAAkB,SAAS,QAAQ,oBAAoB,KAAK,EAAE;AAAA,IAC9D,0BAA0B,QAAQ;AAAA,IAClC,wBAAwB,SAAS,QAAQ,0BAA0B,KAAK,EAAE;AAAA,IAC1E,YAAY,QAAQ;AAAA,IACpB,aAAa,QAAQ;AAAA,IACrB,OAAO,QAAQ;AAAA,IACf,UAAU,SAAS,QAAQ,YAAY,KAAK,EAAE;AAAA,IAC9C,YAAY,QAAQ;AAAA,IACpB,iBAAiB,QAAQ;AAAA,IACzB,2BAA2B,QAAQ;AAAA,IACnC;AAAA,IACA,mBAAmB,QAAQ;AAAA,IAC3B;AAAA,EACF;AACF;AAOO,SAAS,qBAAqB,UAAsC;AACzE,SAAO,SAAS,IAAI,kBAAkB;AACxC;;;AC/DA,SAAS,KAAAA,UAAS;AAEX,IAAM,oBAAoBA,GAAE,OAAO;AAAA,EACxC,OAAOA,GACJ,OAAO;AAAA,IACN,kBAAkBA,GAAE,OAAO,EAAE,QAAQA,GAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS;AAAA,IACvE,wBAAwBA,GACrB,OAAO,EAAE,QAAQA,GAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EACxC,SAAS;AAAA,IACZ,UAAUA,GAAE,OAAO,EAAE,QAAQA,GAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS;AAAA,IAC/D,IAAIA,GAAE,OAAO,EAAE,QAAQA,GAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS;AAAA,EAC3D,CAAC,EACA,SAAS;AAAA,EACZ,YAAYA,GAAE,QAAQ,EAAE,SAAS;AAAA,EACjC,OAAOA,GAAE,OAAO,OAAO,EAAE,SAAS;AAAA,EAClC,MAAMA,GAAE,OAAO,OAAO,EAAE,SAAS;AAAA,EACjC,QAAQA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,UAAUA,GAAE,OAAO,OAAO,EAAE,SAAS;AAAA,EACrC,UAAUA,GAAE,OAAO,OAAO,EAAE,SAAS;AACvC,CAAC;;;ACdD,IAAM,WAAN,cAAuB,UAAU;AAAA,EAC/B,MAAM,SAAS,SAAyB,CAAC,GAAiC;AACxE,UAAM,kBAAkB,kBAAkB,UAAU,MAAM;AAC1D,QAAI,CAAC,gBAAgB,SAAS;AAC5B,YAAM,eAAe,KAAK;AAAA,QACxB,gBAAgB;AAAA,QAChB;AAAA,MACF;AACA,aAAO;AAAA,QACL,MAAM,CAAC;AAAA,QACP,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,UAAM,WAAW,KAAK,MAAM,cAAc,YAAY,gBAAgB,IAAI;AAC1E,WAAO,KAAK,MAAM;AAAA,MAChB;AAAA,MACA,MAAM,KAAK,kBAAkB,gBAAgB,IAAI;AAAA,MACjD;AAAA,MACA,gBAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EAEA,MAAc,kBACZ,QAC8B;AAC9B,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,QAAQ;AACjC,aAAO;AAAA,QACL,MAAM,CAAC;AAAA,QACP,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,UAAU;AAAA,QACV,OAAO;AAAA,QACP,cACE;AAAA,MACJ;AAAA,IACF;AAEA,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+Fd,UAAM,kBAA8B,CAAC;AACrC,QAAI,OAAO,OAAO,kBAAkB,QAAQ;AAC1C,sBAAgB,mBAAmB;AAAA,QACjC,QAAQ,OAAO,MAAM,iBAAiB;AAAA,MACxC;AAAA,IACF;AACA,QAAI,OAAO,OAAO,wBAAwB,QAAQ;AAChD,sBAAgB,yBAAyB;AAAA,QACvC,QAAQ,OAAO,MAAM,uBAAuB;AAAA,MAC9C;AAAA,IACF;AACA,QAAI,OAAO,OAAO,UAAU,QAAQ;AAClC,sBAAgB,WAAW,EAAE,QAAQ,OAAO,MAAM,SAAS,OAAO;AAAA,IACpE;AACA,QAAI,OAAO,OAAO,IAAI,QAAQ;AAC5B,sBAAgB,KAAK,EAAE,QAAQ,OAAO,MAAM,GAAG,OAAO;AAAA,IACxD;AAEA,UAAM,YAAY;AAAA,MAChB,GAAG;AAAA,MACH,OACE,OAAO,KAAK,eAAe,EAAE,SAAS,IAAI,kBAAkB;AAAA,IAChE;AAEA,UAAM,EAAE,MAAM,OAAO,aAAa,IAChC,MAAM,KAAK;AAAA,MACT;AAAA,MACA;AAAA,MACA,CAAC,iBAAiB,aAAa;AAAA,IACjC;AAEF,QAAI,OAAO;AACT,aAAO;AAAA,QACL,MAAM,CAAC;AAAA,QACP,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,MACL,MAAM,qBAAqB,KAAM,IAAI;AAAA,MACrC,WAAW,KAAM;AAAA,MACjB,YAAY,KAAM;AAAA,MAClB,UAAU,KAAM;AAAA,MAChB,UAAU,KAAM;AAAA,MAChB,OAAO;AAAA,MACP,cAAc;AAAA,IAChB;AAAA,EACF;AACF;AAEO,IAAM,WAAW,IAAI,SAAS;;;ACxMrC,SAAS,KAAAC,UAAS;AAEX,IAAM,yBAAyBA,GAAE,OAAO;AAAA,EAC7C,OAAOA,GACJ,OAAO;AAAA,IACN,wBAAwBA,GACrB,OAAO,EAAE,QAAQA,GAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EACxC,SAAS;AAAA,IACZ,UAAUA,GAAE,OAAO,EAAE,QAAQA,GAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS;AAAA,EACjE,CAAC,EACA,SAAS;AAAA,EACZ,OAAOA,GAAE,OAAO,OAAO,EAAE,SAAS;AAAA,EAClC,MAAMA,GAAE,OAAO,OAAO,EAAE,SAAS;AAAA,EACjC,MAAMA,GAAE,OAAO,EAAE,SAAS;AAC5B,CAAC;;;ACPM,SAAS,2BACd,aACU;AACV,SAAO;AAAA,IACL,IAAI,YAAY;AAAA,IAChB,MAAM,YAAY;AAAA,IAClB,WAAW,YAAY;AAAA,EACzB;AACF;AAOO,SAAS,+BACd,eACY;AACZ,SAAO,cAAc,IAAI,0BAA0B;AACrD;;;ACpBA,IAAM,gBAAN,cAA4B,UAAU;AAAA,EACpC,MAAM,cACJ,SAA8B,CAAC,GACG;AAClC,UAAM,kBAAkB,uBAAuB,UAAU,MAAM;AAC/D,QAAI,CAAC,gBAAgB,SAAS;AAC5B,YAAM,eAAe,KAAK;AAAA,QACxB,gBAAgB;AAAA,QAChB;AAAA,MACF;AACA,aAAO,EAAE,MAAM,CAAC,GAAG,OAAO,MAAM,aAAa;AAAA,IAC/C;AAEA,UAAM,WAAW,KAAK,MAAM;AAAA,MAC1B;AAAA,MACA,gBAAgB;AAAA,IAClB;AACA,WAAO,KAAK,MAAM;AAAA,MAChB;AAAA,MACA,MAAM,KAAK,uBAAuB,gBAAgB,IAAI;AAAA,MACtD;AAAA,MACA,gBAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EAEA,MAAc,uBACZ,QACkC;AAClC,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,QAAQ;AACjC,aAAO;AAAA,QACL,MAAM,CAAC;AAAA,QACP,OAAO;AAAA,QACP,cACE;AAAA,MACJ;AAAA,IACF;AAEA,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBd,UAAM,EAAE,MAAM,OAAO,aAAa,IAChC,MAAM,KAAK;AAAA,MACT;AAAA,MACA;AAAA,MACA,CAAC,iBAAiB,aAAa;AAAA,IACjC;AAEF,QAAI,OAAO;AACT,aAAO,EAAE,MAAM,CAAC,GAAG,OAAO,MAAM,aAAa;AAAA,IAC/C;AAEA,WAAO;AAAA,MACL,MAAM,+BAA+B,KAAM,IAAI;AAAA,MAC/C,OAAO;AAAA,MACP,cAAc;AAAA,IAChB;AAAA,EACF;AACF;AAEO,IAAM,gBAAgB,IAAI,cAAc;;;ACpF/C,SAAS,KAAAC,UAAS;AAEX,IAAM,qBAAqBA,GAAE,OAAO;AAAA,EACzC,OAAOA,GAAE,OAAO,OAAO,EAAE,SAAS;AAAA,EAClC,MAAMA,GAAE,OAAO,OAAO,EAAE,SAAS;AAAA,EACjC,MAAMA,GAAE,OAAO,EAAE,SAAS;AAC5B,CAAC;;;ACCM,SAAS,qBAAqB,UAAoC;AACvE,SAAO;AAAA,IACL,IAAI,SAAS;AAAA,IACb,MAAM,SAAS;AAAA,IACf,aAAa,SAAS;AAAA,IACtB,aAAa,SAAS;AAAA,IACtB,WAAW,SAAS;AAAA,IACpB,qBAAqB,SAAS;AAAA,EAChC;AACF;AAOO,SAAS,uBACd,WACS;AACT,SAAO,UAAU,IAAI,oBAAoB;AAC3C;;;ACrBA,IAAM,YAAN,cAAwB,UAAU;AAAA,EAChC,MAAM,UAAU,SAA0B,CAAC,GAAkC;AAC3E,UAAM,kBAAkB,mBAAmB,UAAU,MAAM;AAC3D,QAAI,CAAC,gBAAgB,SAAS;AAC5B,YAAM,eAAe,KAAK;AAAA,QACxB,gBAAgB;AAAA,QAChB;AAAA,MACF;AACA,aAAO;AAAA,QACL,MAAM,CAAC;AAAA,QACP,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,UAAM,WAAW,KAAK,MAAM;AAAA,MAC1B;AAAA,MACA,gBAAgB;AAAA,IAClB;AACA,WAAO,KAAK,MAAM;AAAA,MAChB;AAAA,MACA,MAAM,KAAK,mBAAmB,gBAAgB,IAAI;AAAA,MAClD;AAAA,MACA,gBAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EAEA,MAAc,mBACZ,QAC+B;AAC/B,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,QAAQ;AACjC,aAAO;AAAA,QACL,MAAM,CAAC;AAAA,QACP,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,UAAU;AAAA,QACV,OAAO;AAAA,QACP,cACE;AAAA,MACJ;AAAA,IACF;AAEA,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2Bd,UAAM,EAAE,MAAM,OAAO,aAAa,IAChC,MAAM,KAAK;AAAA,MACT;AAAA,MACA;AAAA,MACA,CAAC,iBAAiB,aAAa;AAAA,IACjC;AAEF,QAAI,OAAO;AACT,aAAO;AAAA,QACL,MAAM,CAAC;AAAA,QACP,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,MACL,MAAM,uBAAuB,KAAM,IAAI;AAAA,MACvC,WAAW,KAAM;AAAA,MACjB,YAAY,KAAM;AAAA,MAClB,UAAU,KAAM;AAAA,MAChB,UAAU,KAAM;AAAA,MAChB,OAAO;AAAA,MACP,cAAc;AAAA,IAChB;AAAA,EACF;AACF;AAEO,IAAM,YAAY,IAAI,UAAU;;;ACxGhC,SAAS,uBAAuB,WAAuC;AAC5E,SAAO;AAAA,IACL,IAAI,UAAU;AAAA,IACd,KAAK,UAAU;AAAA,IACf,MAAM,UAAU;AAAA,IAChB,KAAK,UAAU;AAAA,IACf,SAAS,UAAU;AAAA,IACnB,SAAS,UAAU;AAAA,IACnB,MAAM,UAAU;AAAA,IAChB,aAAa,UAAU;AAAA,IACvB,eAAe,UAAU;AAAA,IACzB,iBAAiB,UAAU;AAAA,IAC3B,iBAAiB,UAAU;AAAA,IAC3B,UAAU,UAAU;AAAA,IACpB,UAAU,UAAU;AAAA,IACpB,oBAAoB,UAAU;AAAA,IAC9B,+BAA+B,UAAU;AAAA,IACzC,eAAe,UAAU;AAAA,IACzB,YAAY,UAAU;AAAA,IACtB,aAAa,UAAU;AAAA,IACvB,YAAY,UAAU;AAAA,IACtB,YAAY,UAAU;AAAA,IACtB,sBAAsB,UAAU;AAAA,IAChC,iCAAiC,UAAU;AAAA,IAC3C,iBAAiB,UAAU;AAAA,IAC3B,cAAc,UAAU;AAAA,IACxB,eAAe,UAAU;AAAA,IACzB,oBAAoB,UAAU;AAAA,IAC9B,8BAA8B,UAAU;AAAA,IACxC,yCACE,UAAU;AAAA,IACZ,yBAAyB,UAAU;AAAA,IACnC,sBAAsB,UAAU;AAAA,IAChC,uBAAuB,UAAU;AAAA,EACnC;AACF;;;ACrCA,IAAM,YAAN,cAAwB,UAAU;AAAA,EAChC,MAAM,UAAU,SAA0B,CAAC,GAAiC;AAC1E,UAAM,WAAW,KAAK,MAAM,cAAc,aAAa,MAAM;AAC7D,WAAO,KAAK,MAAM;AAAA,MAChB;AAAA,MACA,MAAM,KAAK,mBAAmB,MAAM;AAAA,MACpC;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,mBACZ,QAC8B;AAC9B,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,QAAQ;AACjC,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,QACP,cACE;AAAA,MACJ;AAAA,IACF;AAEA,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsCd,UAAM,EAAE,MAAM,OAAO,aAAa,IAChC,MAAM,KAAK;AAAA,MACT;AAAA,MACA;AAAA,MACA,CAAC,iBAAiB;AAAA,IACpB;AAEF,QAAI,OAAO;AACT,aAAO,EAAE,MAAM,MAAM,OAAO,MAAM,aAAa;AAAA,IACjD;AAEA,WAAO;AAAA,MACL,MAAM,uBAAuB,KAAM,SAAS;AAAA,MAC5C,OAAO;AAAA,MACP,cAAc;AAAA,IAChB;AAAA,EACF;AACF;AAEO,IAAM,YAAY,IAAI,UAAU;;;ACrFvC,SAAS,KAAAC,UAAS;AAEX,IAAM,cAAcA,GAAE,OAAO;AAAA,EAClC,MAAMA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACtB,OAAOA,GAAE,OAAO,EAAE,MAAM;AAAA,EACxB,OAAOA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,OAAOA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,KAAKA,GAAE,OAAO,EAAE,SAAS;AAAA,EACzB,OAAOA,GACJ;AAAA,IACCA,GAAE,OAAO,EAAE,IAAIA,GAAE,OAAO,EAAE,SAAS,GAAG,UAAUA,GAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAAA,EACzE,EACC,IAAI,CAAC;AAAA,EACR,kBAAkBA,GAAE,OAAO,EAAE,SAAS;AAAA,EACtC,uBAAuBA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC3C,gBAAgBA,GAAE,KAAK,CAAC,QAAQ,UAAU,CAAC,EAAE,SAAS;AACxD,CAAC;;;ACTD,IAAM,YAAN,cAAwB,UAAU;AAAA,EAChC,MAAM,qBACJ,QACuC;AACvC,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,QAAQ;AACjC,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO;AAAA,QACP,cAAc;AAAA,MAChB;AAAA,IACF;AAEA,UAAM,YAAY,YAAY,UAAU,MAAM;AAC9C,QAAI,CAAC,UAAU,SAAS;AACtB,YAAM,eAAe,KAAK;AAAA,QACxB,UAAU;AAAA,QACV;AAAA,MACF;AACA,aAAO,EAAE,SAAS,cAAc,OAAO,MAAM,aAAa;AAAA,IAC5D;AAEA,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,OAAO;AAAA,QACjC;AAAA,QACA,UAAU;AAAA,MACZ;AAEA,UAAI,SAAS,WAAW,KAAK;AAC3B,eAAO;AAAA,UACL,SAAS,SAAS,KAAK,WAAW;AAAA,UAClC,UAAU,SAAS,KAAK;AAAA,UACxB,OAAO;AAAA,UACP,cAAc;AAAA,QAChB;AAAA,MACF,OAAO;AACL,cAAM,eAAe,SAAS,KAAK,WAAW;AAC9C,eAAO,EAAE,SAAS,cAAc,OAAO,MAAM,aAAa;AAAA,MAC5D;AAAA,IACF,SAAS,OAAO;AACd,YAAM,eAAe,KAAK,eAAe,OAAO,sBAAsB;AACtE,aAAO,EAAE,SAAS,cAAc,OAAO,MAAM,aAAa;AAAA,IAC5D;AAAA,EACF;AACF;AAEO,IAAM,YAAY,IAAI,UAAU;;;ACpDvC,SAAS,KAAAC,UAAS;AAEX,IAAM,kBAAkBA,GAAE,OAAO;AAAA,EACtC,MAAMA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACtB,OAAOA,GAAE,OAAO,EAAE,MAAM;AAAA,EACxB,OAAOA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,SAASA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,OAAOA,GAAE,OAAO,EAAE,IAAI,CAAC;AACzB,CAAC;;;ACJD,IAAM,aAAN,cAAyB,UAAU;AAAA,EACjC,MAAM,mBACJ,QACqC;AACrC,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,QAAQ;AACjC,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO;AAAA,QACP,cAAc;AAAA,MAChB;AAAA,IACF;AAEA,UAAM,YAAY,gBAAgB,UAAU,MAAM;AAClD,QAAI,CAAC,UAAU,SAAS;AACtB,YAAM,eAAe,KAAK;AAAA,QACxB,UAAU;AAAA,QACV;AAAA,MACF;AACA,aAAO,EAAE,SAAS,cAAc,OAAO,MAAM,aAAa;AAAA,IAC5D;AAEA,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,OAAO;AAAA,QACjC;AAAA,QACA,UAAU;AAAA,MACZ;AAEA,UAAI,SAAS,WAAW,KAAK;AAC3B,eAAO;AAAA,UACL,SAAS,SAAS,KAAK,WAAW;AAAA,UAClC,OAAO;AAAA,UACP,cAAc;AAAA,QAChB;AAAA,MACF,OAAO;AACL,cAAM,eACJ,SAAS,KAAK,WAAW;AAC3B,eAAO,EAAE,SAAS,cAAc,OAAO,MAAM,aAAa;AAAA,MAC5D;AAAA,IACF,SAAS,OAAO;AACd,YAAM,eAAe,KAAK,eAAe,OAAO,oBAAoB;AACpE,aAAO,EAAE,SAAS,cAAc,OAAO,MAAM,aAAa;AAAA,IAC5D;AAAA,EACF;AACF;AAEO,IAAM,aAAa,IAAI,WAAW;;;AC9CzC,IAAM,YAAN,cAAwB,UAAU;AAAA,EAChC,MAAM,mBACJ,QACmC;AACnC,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,QAAQ;AACjC,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,QACP,cACE;AAAA,MACJ;AAAA,IACF;AAEA,QACE,CAAC,OAAO,SACR,OAAO,OAAO,UAAU,YACxB,OAAO,MAAM,KAAK,MAAM,IACxB;AACA,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,QACP,cAAc;AAAA,MAChB;AAAA,IACF;AAEA,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,OAAO,KAAK,gBAAgB;AAAA,QACtD,OAAO,OAAO;AAAA,QACd,WAAW,OAAO,aAAa,CAAC;AAAA,MAClC,CAAC;AAED,UAAI,SAAS,KAAK,UAAU,SAAS,KAAK,OAAO,SAAS,GAAG;AAC3D,eAAO;AAAA,UACL,MAAM,SAAS,KAAK,QAAS;AAAA,UAC7B,QAAQ,SAAS,KAAK;AAAA,UACtB,OAAO;AAAA,UACP,cAAc,mBAAmB,SAAS,KAAK,OAC5C,IAAI,CAAC,QAA6B,IAAI,OAAO,EAC7C,KAAK,IAAI,CAAC;AAAA,QACf;AAAA,MACF;AAEA,aAAO;AAAA,QACL,MAAM,SAAS,KAAK;AAAA,QACpB,OAAO;AAAA,QACP,cAAc;AAAA,MAChB;AAAA,IACF,SAAS,OAAO;AACd,YAAM,eAAe,KAAK,eAAe,OAAO,gBAAgB;AAChE,aAAO,EAAE,MAAM,MAAW,OAAO,MAAM,aAAa;AAAA,IACtD;AAAA,EACF;AACF;AAEO,IAAM,YAAY,IAAI,UAAU;","names":["z","z","z","z","z"]}
1
+ {"version":3,"sources":["../src/api/core/apiClient.ts","../src/api/core/cache.ts","../src/api/items/parsers.ts","../src/api/items/validators.ts","../src/api/items/api.ts","../src/api/categories/validators.ts","../src/api/categories/parsers.ts","../src/api/categories/api.ts","../src/api/brands/validators.ts","../src/api/brands/parsers.ts","../src/api/brands/api.ts","../src/api/entity/parsers.ts","../src/api/entity/api.ts","../src/api/orders/validators.ts","../src/api/orders/api.ts","../src/api/contact/validators.ts","../src/api/contact/api.ts","../src/api/custom/api.ts"],"sourcesContent":["import axios, { AxiosInstance, AxiosError } from \"axios\";\nimport { z } from \"zod\";\nimport { CacheService } from \"./cache\";\n\nexport class ApiClient {\n protected client: AxiosInstance;\n protected cache: CacheService;\n protected baseURL: string;\n protected apiKey: string;\n\n constructor() {\n this.baseURL = process.env.PAKENTO_CMS_BASE_URL || \"\";\n this.apiKey = process.env.PAKENTO_API_KEY || \"\";\n this.cache = new CacheService(this.apiKey);\n\n this.client = axios.create({\n baseURL: this.baseURL,\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `users API-Key ${this.apiKey}`,\n },\n });\n\n this.client.interceptors.request.use(\n (config) => {\n const fullUrl = `${config.baseURL}${config.url}`;\n console.log(`🌐 API Call: ${config.method?.toUpperCase()} ${fullUrl}`);\n return config;\n },\n (error) => Promise.reject(error)\n );\n }\n\n protected handleApiError(error: unknown, context: string): string {\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n const responseMessage = error.response?.data?.message;\n if (status === 401) return \"API Key inválida o expirada\";\n if (status === 404) return `${context} no encontrado`;\n if (status && status >= 500) return \"Error del servidor CMS\";\n return (\n responseMessage || `Error de conexión en ${context}: ${error.message}`\n );\n } else if (error instanceof z.ZodError) {\n return `Validación fallida: ${error.issues\n .map((e) => e.message)\n .join(\", \")}`;\n } else if (error instanceof Error) {\n return error.message;\n }\n return \"Error desconocido\";\n }\n\n protected async fetchGraphQL<T>(\n query: string,\n variables: any,\n extractData: (responseData: any) => T\n ): Promise<{ data: T | null; error: boolean; errorMessage: string | null }> {\n try {\n const response = await this.client.post(\"/api/graphql\", {\n query,\n variables,\n });\n if (response.data.errors) {\n const errorMessage = `GraphQL Error: ${response.data.errors[0].message}`;\n return { data: null, error: true, errorMessage };\n }\n const data = extractData(response.data.data);\n return { data, error: false, errorMessage: null };\n } catch (error) {\n const errorMessage = this.handleApiError(error, \"GraphQL query\");\n return { data: null, error: true, errorMessage };\n }\n }\n}\n","import { Redis } from \"@upstash/redis\";\n\nexport class CacheService {\n private redis?: Redis;\n private apiKeyHash: string;\n private defaultTTL: number = 172800; // 48 hours\n\n constructor(apiKey: string) {\n this.apiKeyHash = apiKey.substring(0, 8);\n\n if (\n process.env.UPSTASH_REDIS_REST_URL &&\n process.env.UPSTASH_REDIS_REST_TOKEN\n ) {\n this.redis = new Redis({\n url: process.env.UPSTASH_REDIS_REST_URL,\n token: process.env.UPSTASH_REDIS_REST_TOKEN,\n });\n }\n }\n\n private generateParamsHash(params: Record<string, unknown>): string {\n const paramsString = JSON.stringify(params);\n return btoa(paramsString);\n }\n\n public buildCacheKey(\n functionName: string,\n params: Record<string, unknown> = {}\n ): string {\n const paramsHash = this.generateParamsHash({ ...params, functionName });\n return `pakento:${this.apiKeyHash}:${paramsHash}`;\n }\n\n public async cacheWrap<T>(\n key: string,\n fetcher: () => Promise<T>,\n functionName: string,\n filters?: Record<string, unknown>\n ): Promise<T> {\n if (!this.redis) {\n return fetcher();\n }\n\n let cached: string | null = null;\n try {\n cached = await this.redis.get(key);\n\n if (typeof cached === \"object\" && cached !== null) {\n console.log(\"[Cache] ✅ Reading from cache:\", key);\n return cached as T;\n }\n\n if (cached) {\n console.log(\"[Cache] ✅ Reading from cache:\", key);\n return JSON.parse(cached as string) as T;\n }\n } catch (err) {\n console.warn(\"[Cache] ❌ Error reading from cache:\", err);\n console.log(`[Cache] ❌ Key: ${key}, type: ${typeof cached}`);\n }\n\n const result = await fetcher();\n\n try {\n // Crear objeto de caché con datos y filtros para visualización\n const cacheData = {\n _function: functionName,\n _filters: filters || {},\n _cachedAt: new Date().toISOString(),\n ...result,\n };\n\n console.log(\"[Cache] ✅ Writing to cache:\", key);\n await this.redis.set(key, JSON.stringify(cacheData), {\n ex: this.defaultTTL,\n });\n } catch (err) {\n console.warn(\"[Cache] ❌ Error writing to cache:\", err);\n }\n\n return result;\n }\n\n public async clearAllCache(): Promise<boolean> {\n if (!this.redis) {\n console.warn(\"[Cache] ❌ Redis no configurado\");\n return false;\n }\n\n try {\n const pattern = `pakento:${this.apiKeyHash}:*`;\n const keys = await this.redis.keys(pattern);\n\n if (keys.length > 0) {\n await this.redis.del(...keys);\n console.log(\"[Cache] ✅ Cache limpiado\");\n }\n\n return true;\n } catch (err) {\n console.warn(\"[Cache] ❌ Error limpiando todo el cache\", err);\n return false;\n }\n }\n}\n","import { Item, ItemEcommerceRaw } from \"./types\";\n\n/**\n * Parses a raw GraphQL response item to the normalized Item type\n * @param rawItem - The raw item from GraphQL response\n * @returns Normalized Item object\n */\nexport function parseRawItemToItem(rawItem: ItemEcommerceRaw): Item {\n const images = rawItem.images.map((img) => ({\n url: img.url,\n thumbnail_url: img.thumbnail_url,\n }));\n\n const variations = rawItem.variations.map((v) => ({\n id: v.id,\n name: v.name,\n description: v.description,\n cover_image_url: v.cover_image_url,\n cover_image_thumbnail_url: v.cover_image_thumbnail_url,\n price: v.price,\n old_price: v.old_price,\n price_notes: v.price_notes,\n price_text: v.price_text,\n old_price_text: v.old_price_text,\n currency_prefix: v.currency_prefix,\n attribute_values: v.attribute_values,\n images: v.images.map((img) => ({\n url: img.url,\n thumbnail_url: img.thumbnail_url,\n })),\n }));\n\n return {\n id: rawItem.id,\n name: rawItem.name,\n featured: rawItem.featured,\n url_safe_name: rawItem.url_safe_name,\n currency_prefix: rawItem.currency_prefix,\n description: rawItem.description,\n old_price: rawItem.old_price,\n item_category_name: rawItem.item_category_name,\n item_category_id: parseInt(rawItem.item_category_id || \"0\", 10),\n item_super_category_name: rawItem.item_super_category_name,\n item_super_category_id: parseInt(rawItem.item_super_category_id || \"0\", 10),\n price_text: rawItem.price_text,\n old_price_text: rawItem.old_price_text,\n price_notes: rawItem.price_notes,\n price: rawItem.price,\n brand_id: parseInt(rawItem.brand_id || \"0\", 10),\n brand_name: rawItem.brand_name,\n cover_image_url: rawItem.cover_image_url,\n cover_image_thumbnail_url: rawItem.cover_image_thumbnail_url,\n images,\n master_attributes: rawItem.master_attributes,\n variations,\n };\n}\n\n/**\n * Parses an array of raw GraphQL response items to normalized Item types\n * @param rawItems - Array of raw items from GraphQL response\n * @returns Array of normalized Item objects\n */\nexport function parseRawItemsToItems(rawItems: ItemEcommerceRaw[]): Item[] {\n return rawItems.map(parseRawItemToItem);\n}\n","import { z } from \"zod\";\n\nexport const itemsParamsSchema = z.object({\n where: z\n .object({\n item_category_id: z.object({ equals: z.string().optional() }).optional(),\n item_super_category_id: z\n .object({ equals: z.string().optional() })\n .optional(),\n brand_id: z.object({ equals: z.string().optional() }).optional(),\n id: z.object({ equals: z.string().optional() }).optional(),\n })\n .optional(),\n onlyOffers: z.boolean().optional(),\n limit: z.coerce.number().optional(),\n page: z.coerce.number().optional(),\n search: z.string().optional(),\n sort: z.string().optional(),\n minPrice: z.coerce.number().optional(),\n maxPrice: z.coerce.number().optional(),\n});\n","import { ApiClient } from \"../core/apiClient\";\nimport { itemsParamsSchema } from \"./validators\";\nimport { parseRawItemsToItems } from \"./parsers\";\nimport { GetItemsParams, ItemsRawResponse, ItemsWhere, Item } from \"./types\";\nimport { ApiResponse } from \"../core/types\";\n\nclass ItemsApi extends ApiClient {\n async getItems(params: GetItemsParams = {}): Promise<ApiResponse<Item[]>> {\n const validatedParams = itemsParamsSchema.safeParse(params);\n if (!validatedParams.success) {\n const errorMessage = this.handleApiError(\n validatedParams.error,\n \"getItems validation\"\n );\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n\n const cacheKey = this.cache.buildCacheKey(\"getItems\", validatedParams.data);\n return this.cache.cacheWrap(\n cacheKey,\n () => this.fetchItemsFromAPI(validatedParams.data),\n \"getItems\",\n validatedParams.data\n );\n }\n\n private async fetchItemsFromAPI(\n params: GetItemsParams\n ): Promise<ApiResponse<Item[]>> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n const query = `\n query GetEcommerceItems(\n $where: EcommerceItemsWhere\n $onlyOffers: Boolean\n $limit: Int\n $page: Int\n $search: String\n $sort: String\n $minPrice: Float\n $maxPrice: Float\n ) {\n GetEcommerceItems(\n where: $where\n onlyOffers: $onlyOffers\n limit: $limit\n page: $page\n search: $search\n sort: $sort\n minPrice: $minPrice\n maxPrice: $maxPrice\n ) {\n totalDocs\n totalPages\n prevPage\n nextPage\n docs {\n id\n name\n featured\n description\n url_safe_name\n\n item_super_category_id\n item_super_category_name\n\n item_category_id\n item_category_name\n\n cover_image_url\n cover_image_thumbnail_url\n\n price\n old_price\n price_notes\n price_text\n old_price_text\n currency_prefix\n\n brand_id\n brand_name\n\n master_attributes {\n id\n name\n values {\n id\n value\n }\n }\n\n variations {\n id\n name\n description\n\n cover_image_url\n cover_image_thumbnail_url\n\n price\n old_price\n price_notes\n price_text\n old_price_text\n currency_prefix\n\n attribute_values {\n attribute_id\n attribute_name\n value\n value_id\n }\n\n images {\n url\n thumbnail_url\n }\n }\n\n images {\n url\n thumbnail_url\n }\n }\n }\n }\n `;\n\n const whereConditions: ItemsWhere = {};\n if (params.where?.item_category_id?.equals) {\n whereConditions.item_category_id = {\n equals: params.where.item_category_id.equals,\n };\n }\n if (params.where?.item_super_category_id?.equals) {\n whereConditions.item_super_category_id = {\n equals: params.where.item_super_category_id.equals,\n };\n }\n if (params.where?.brand_id?.equals) {\n whereConditions.brand_id = { equals: params.where.brand_id.equals };\n }\n if (params.where?.id?.equals) {\n whereConditions.id = { equals: params.where.id.equals };\n }\n\n const variables = {\n ...params,\n where:\n Object.keys(whereConditions).length > 0 ? whereConditions : undefined,\n };\n\n const { data, error, errorMessage } =\n await this.fetchGraphQL<ItemsRawResponse>(\n query,\n variables,\n (responseData) => responseData.GetEcommerceItems\n );\n\n if (error) {\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n\n return {\n data: parseRawItemsToItems(data!.docs),\n totalDocs: data!.totalDocs,\n totalPages: data!.totalPages,\n prevPage: data!.prevPage,\n nextPage: data!.nextPage,\n error: false,\n errorMessage: null,\n };\n }\n}\n\nexport const itemsApi = new ItemsApi();\n","import { z } from \"zod\";\n\nexport const categoriesParamsSchema = z.object({\n where: z\n .object({\n item_super_category_id: z\n .object({ equals: z.string().optional() })\n .optional(),\n brand_id: z.object({ equals: z.string().optional() }).optional(),\n })\n .optional(),\n limit: z.coerce.number().optional(),\n page: z.coerce.number().optional(),\n sort: z.string().optional(),\n});\n","import { Category, CategoryEcommerceRaw } from \"./types\";\n\n/**\n * Parses a raw GraphQL response category to the normalized Category type\n * @param rawCategory - The raw category from GraphQL response\n * @returns Normalized Category object\n */\nexport function parseRawCategoryToCategory(\n rawCategory: CategoryEcommerceRaw\n): Category {\n return {\n id: rawCategory.id,\n name: rawCategory.name,\n image_url: rawCategory.image_url,\n };\n}\n\n/**\n * Parses an array of raw GraphQL response categories to normalized Category types\n * @param rawCategories - Array of raw categories from GraphQL response\n * @returns Array of normalized Category objects\n */\nexport function parseRawCategoriesToCategories(\n rawCategories: CategoryEcommerceRaw[]\n): Category[] {\n return rawCategories.map(parseRawCategoryToCategory);\n}\n","import { ApiClient } from \"../core/apiClient\";\nimport { categoriesParamsSchema } from \"./validators\";\nimport { parseRawCategoriesToCategories } from \"./parsers\";\nimport { GetCategoriesParams, CategoriesRawResponse, Category } from \"./types\";\nimport { ApiResponse } from \"../core/types\";\n\nclass CategoriesApi extends ApiClient {\n async getCategories(\n params: GetCategoriesParams = {}\n ): Promise<ApiResponse<Category[]>> {\n const validatedParams = categoriesParamsSchema.safeParse(params);\n if (!validatedParams.success) {\n const errorMessage = this.handleApiError(\n validatedParams.error,\n \"getCategories validation\"\n );\n return { data: [], error: true, errorMessage };\n }\n\n const cacheKey = this.cache.buildCacheKey(\n \"getCategories\",\n validatedParams.data\n );\n return this.cache.cacheWrap(\n cacheKey,\n () => this.fetchCategoriesFromAPI(validatedParams.data),\n \"getCategories\",\n validatedParams.data\n );\n }\n\n private async fetchCategoriesFromAPI(\n params: GetCategoriesParams\n ): Promise<ApiResponse<Category[]>> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: [],\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n const query = `\n query GetEcommerceCategories(\n $where: EcommerceCategoriesWhere\n $limit: Int\n $page: Int\n $sort: String\n ) {\n GetEcommerceCategories(\n where: $where\n limit: $limit\n page: $page\n sort: $sort\n ) {\n docs {\n id\n name\n image_url\n }\n }\n }\n `;\n\n const { data, error, errorMessage } =\n await this.fetchGraphQL<CategoriesRawResponse>(\n query,\n params,\n (responseData) => responseData.GetEcommerceCategories\n );\n\n if (error) {\n return { data: [], error: true, errorMessage };\n }\n\n return {\n data: parseRawCategoriesToCategories(data!.docs),\n error: false,\n errorMessage: null,\n };\n }\n}\n\nexport const categoriesApi = new CategoriesApi();\n","import { z } from \"zod\";\n\nexport const brandsParamsSchema = z.object({\n limit: z.coerce.number().optional(),\n page: z.coerce.number().optional(),\n sort: z.string().optional(),\n});\n","import { Brand, BrandEcommerceRaw } from \"./types\";\n\n/**\n * Parses a raw GraphQL response brand to the normalized Brand type\n * @param rawBrand - The raw brand from GraphQL response\n * @returns Normalized Brand object\n */\nexport function parseRawBrandToBrand(rawBrand: BrandEcommerceRaw): Brand {\n return {\n id: rawBrand.id,\n name: rawBrand.name,\n description: rawBrand.description,\n items_count: rawBrand.items_count,\n image_url: rawBrand.image_url,\n image_thumbnail_url: rawBrand.image_thumbnail_url,\n };\n}\n\n/**\n * Parses an array of raw GraphQL response brands to normalized Brand types\n * @param rawBrands - Array of raw brands from GraphQL response\n * @returns Array of normalized Brand objects\n */\nexport function parseRawBrandsToBrands(\n rawBrands: BrandEcommerceRaw[]\n): Brand[] {\n return rawBrands.map(parseRawBrandToBrand);\n}\n","import { ApiClient } from \"../core/apiClient\";\nimport { brandsParamsSchema } from \"./validators\";\nimport { parseRawBrandsToBrands } from \"./parsers\";\nimport { GetBrandsParams, BrandsRawResponse, Brand } from \"./types\";\nimport { ApiResponse } from \"../core/types\";\n\nclass BrandsApi extends ApiClient {\n async getBrands(params: GetBrandsParams = {}): Promise<ApiResponse<Brand[]>> {\n const validatedParams = brandsParamsSchema.safeParse(params);\n if (!validatedParams.success) {\n const errorMessage = this.handleApiError(\n validatedParams.error,\n \"getBrands validation\"\n );\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n\n const cacheKey = this.cache.buildCacheKey(\n \"getBrands\",\n validatedParams.data\n );\n return this.cache.cacheWrap(\n cacheKey,\n () => this.fetchBrandsFromAPI(validatedParams.data),\n \"getBrands\",\n validatedParams.data\n );\n }\n\n private async fetchBrandsFromAPI(\n params: GetBrandsParams\n ): Promise<ApiResponse<Brand[]>> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n const query = `\n query GetEcommerceBrands(\n $limit: Int\n $page: Int\n $sort: String\n ) {\n GetEcommerceBrands(\n limit: $limit\n page: $page\n sort: $sort\n ) {\n totalDocs\n totalPages\n prevPage\n nextPage\n docs {\n id\n name\n description\n items_count\n image_url\n image_thumbnail_url\n }\n }\n }\n `;\n\n const { data, error, errorMessage } =\n await this.fetchGraphQL<BrandsRawResponse>(\n query,\n params,\n (responseData) => responseData.GetEcommerceBrands\n );\n\n if (error) {\n return {\n data: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n\n return {\n data: parseRawBrandsToBrands(data!.docs),\n totalDocs: data!.totalDocs,\n totalPages: data!.totalPages,\n prevPage: data!.prevPage,\n nextPage: data!.nextPage,\n error: false,\n errorMessage: null,\n };\n }\n}\n\nexport const brandsApi = new BrandsApi();\n","import { Entity, EntityEcommerceRaw } from \"./types\";\n\n/**\n * Parses a raw GraphQL response entity to the normalized Entity type\n * @param rawEntity - The raw entity from GraphQL response\n * @returns Normalized Entity object\n */\nexport function parseRawEntityToEntity(rawEntity: EntityEcommerceRaw): Entity {\n return {\n id: rawEntity.id,\n tin: rawEntity.tin,\n name: rawEntity.name,\n web: rawEntity.web,\n address: rawEntity.address,\n country: rawEntity.country,\n city: rawEntity.city,\n currency_id: rawEntity.currency_id,\n currency_name: rawEntity.currency_name,\n currency_prefix: rawEntity.currency_prefix,\n currency_suffix: rawEntity.currency_suffix,\n logo_url: rawEntity.logo_url,\n logo_alt: rawEntity.logo_alt,\n logo_thumbnail_url: rawEntity.logo_thumbnail_url,\n logo_sizes_thumbnail_filename: rawEntity.logo_sizes_thumbnail_filename,\n logo_filename: rawEntity.logo_filename,\n logo_width: rawEntity.logo_width,\n logo_height: rawEntity.logo_height,\n logo_2_url: rawEntity.logo_2_url,\n logo_2_alt: rawEntity.logo_2_alt,\n logo_2_thumbnail_url: rawEntity.logo_2_thumbnail_url,\n logo_2_sizes_thumbnail_filename: rawEntity.logo_2_sizes_thumbnail_filename,\n logo_2_filename: rawEntity.logo_2_filename,\n logo_2_width: rawEntity.logo_2_width,\n logo_2_height: rawEntity.logo_2_height,\n featured_image_url: rawEntity.featured_image_url,\n featured_image_thumbnail_url: rawEntity.featured_image_thumbnail_url,\n featured_image_sizes_thumbnail_filename:\n rawEntity.featured_image_sizes_thumbnail_filename,\n featured_image_filename: rawEntity.featured_image_filename,\n featured_image_width: rawEntity.featured_image_width,\n featured_image_height: rawEntity.featured_image_height,\n };\n}\n","import { ApiClient } from \"../core/apiClient\";\nimport { parseRawEntityToEntity } from \"./parsers\";\nimport { GetEntityParams, EntityRawResponse, Entity } from \"./types\";\nimport { ApiResponse } from \"../core/types\";\n\nclass EntityApi extends ApiClient {\n async getEntity(params: GetEntityParams = {}): Promise<ApiResponse<Entity>> {\n const cacheKey = this.cache.buildCacheKey(\"getEntity\", params);\n return this.cache.cacheWrap(\n cacheKey,\n () => this.fetchEntityFromAPI(params),\n \"getEntity\",\n params\n );\n }\n\n private async fetchEntityFromAPI(\n params: GetEntityParams\n ): Promise<ApiResponse<Entity>> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: null,\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n const query = `\n query GetEntity {\n GetEntity {\n id\n tin\n name\n web\n address\n country\n city\n currency_id\n currency_name\n currency_prefix\n currency_suffix\n logo_url\n logo_alt\n logo_thumbnail_url\n logo_sizes_thumbnail_filename\n logo_filename\n logo_width\n logo_height\n logo_2_url\n logo_2_alt\n logo_2_thumbnail_url\n logo_2_sizes_thumbnail_filename\n logo_2_filename\n logo_2_width\n logo_2_height\n featured_image_url\n featured_image_thumbnail_url\n featured_image_sizes_thumbnail_filename\n featured_image_filename\n featured_image_width\n featured_image_height\n }\n }\n `;\n\n const { data, error, errorMessage } =\n await this.fetchGraphQL<EntityRawResponse>(\n query,\n params,\n (responseData) => responseData\n );\n\n if (error) {\n return { data: null, error: true, errorMessage };\n }\n\n return {\n data: parseRawEntityToEntity(data!.GetEntity),\n error: false,\n errorMessage: null,\n };\n }\n}\n\nexport const entityApi = new EntityApi();\n","import { z } from \"zod\";\n\nexport const orderSchema = z.object({\n name: z.string().min(1),\n email: z.string().email(),\n phone: z.string().optional(),\n notes: z.string().optional(),\n tin: z.string().optional(),\n items: z\n .array(\n z.object({ id: z.number().positive(), quantity: z.number().positive() })\n )\n .min(1),\n delivery_address: z.string().optional(),\n delivery_instructions: z.string().optional(),\n payment_method: z.enum([\"cash\", \"transfer\"]).optional(),\n});\n","import { ApiClient } from \"../core/apiClient\";\nimport { orderSchema } from \"./validators\";\nimport {\n CreateEcommerceOrderParams,\n CreateEcommerceOrderResponse,\n} from \"./types\";\n\nclass OrdersApi extends ApiClient {\n async createEcommerceOrder(\n params: CreateEcommerceOrderParams\n ): Promise<CreateEcommerceOrderResponse> {\n if (!this.baseURL || !this.apiKey) {\n return {\n message: \"SDK no configurado\",\n error: true,\n errorMessage: \"SDK no configurado\",\n };\n }\n\n const validated = orderSchema.safeParse(params);\n if (!validated.success) {\n const errorMessage = this.handleApiError(\n validated.error,\n \"createEcommerceOrder validation\"\n );\n return { message: errorMessage, error: true, errorMessage };\n }\n\n try {\n const response = await this.client.post(\n \"/api/orders/create-ecommerce-order\",\n validated.data\n );\n\n if (response.status === 200) {\n return {\n message: response.data.message || \"Orden creada exitosamente\",\n order_id: response.data.order_id,\n error: false,\n errorMessage: null,\n };\n } else {\n const errorMessage = response.data.message || \"Error al crear la orden\";\n return { message: errorMessage, error: true, errorMessage };\n }\n } catch (error) {\n const errorMessage = this.handleApiError(error, \"createEcommerceOrder\");\n return { message: errorMessage, error: true, errorMessage };\n }\n }\n}\n\nexport const ordersApi = new OrdersApi();\n","import { z } from \"zod\";\n\nexport const contactUsSchema = z.object({\n name: z.string().min(1),\n email: z.string().email(),\n phone: z.string().optional(),\n subject: z.string().optional(),\n notes: z.string().min(1),\n});\n","import { ApiClient } from \"../core/apiClient\";\nimport { contactUsSchema } from \"./validators\";\nimport { SendContactUsEmailParams, SendContactUsEmailResponse } from \"./types\";\n\nclass ContactApi extends ApiClient {\n async sendContactUsEmail(\n params: SendContactUsEmailParams\n ): Promise<SendContactUsEmailResponse> {\n if (!this.baseURL || !this.apiKey) {\n return {\n message: \"SDK no configurado\",\n error: true,\n errorMessage: \"SDK no configurado\",\n };\n }\n\n const validated = contactUsSchema.safeParse(params);\n if (!validated.success) {\n const errorMessage = this.handleApiError(\n validated.error,\n \"sendContactUsEmail validation\"\n );\n return { message: errorMessage, error: true, errorMessage };\n }\n\n try {\n const response = await this.client.post(\n \"/api/entities/send-contact-us-email\",\n validated.data\n );\n\n if (response.status === 200) {\n return {\n message: response.data.message || \"Mensaje enviado exitosamente\",\n error: false,\n errorMessage: null,\n };\n } else {\n const errorMessage =\n response.data.message || \"Error al enviar el mensaje\";\n return { message: errorMessage, error: true, errorMessage };\n }\n } catch (error) {\n const errorMessage = this.handleApiError(error, \"sendContactUsEmail\");\n return { message: errorMessage, error: true, errorMessage };\n }\n }\n}\n\nexport const contactApi = new ContactApi();\n","import { ApiClient } from \"../core/apiClient\";\nimport { CustomGraphQLParams, CustomGraphQLResponse } from \"./types\";\n\nclass CustomApi extends ApiClient {\n async executeCustomQuery<T>(\n params: CustomGraphQLParams\n ): Promise<CustomGraphQLResponse<T>> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: null as T,\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n if (\n !params.query ||\n typeof params.query !== \"string\" ||\n params.query.trim() === \"\"\n ) {\n return {\n data: null as T,\n error: true,\n errorMessage: \"Se requiere un query GraphQL válido.\",\n };\n }\n\n try {\n const response = await this.client.post(\"/api/graphql\", {\n query: params.query,\n variables: params.variables || {},\n });\n\n if (response.data.errors && response.data.errors.length > 0) {\n return {\n data: response.data.data || (null as T),\n errors: response.data.errors,\n error: true,\n errorMessage: `GraphQL Errors: ${response.data.errors\n .map((err: { message: string }) => err.message)\n .join(\", \")}`,\n };\n }\n\n return {\n data: response.data.data,\n error: false,\n errorMessage: null,\n };\n } catch (error) {\n const errorMessage = this.handleApiError(error, \"Custom GraphQL\");\n return { data: null as T, error: true, errorMessage };\n }\n }\n}\n\nexport const customApi = new CustomApi();\n"],"mappings":"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","names":["z","z","z","z","z"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pakento/cms-sdk",
3
- "version": "4.3.13",
3
+ "version": "4.3.14",
4
4
  "description": "SDK para conectar tiendas en línea con Pakento CMS",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",