@pakento/cms-sdk 2.2.3 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +86 -5
- package/dist/index.d.ts +86 -5
- package/dist/index.js +227 -90
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +227 -90
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -34,6 +34,40 @@ interface Brand {
|
|
|
34
34
|
image_thumbnail_url: string;
|
|
35
35
|
image_alt: string;
|
|
36
36
|
}
|
|
37
|
+
interface Entity {
|
|
38
|
+
id: string;
|
|
39
|
+
tin: string;
|
|
40
|
+
name: string;
|
|
41
|
+
web: string;
|
|
42
|
+
address: string;
|
|
43
|
+
country: string;
|
|
44
|
+
city: string;
|
|
45
|
+
currency_id: string;
|
|
46
|
+
currency_name: string;
|
|
47
|
+
currency_prefix: string;
|
|
48
|
+
currency_suffix: string;
|
|
49
|
+
logo_url: string;
|
|
50
|
+
logo_alt: string;
|
|
51
|
+
logo_thumbnail_url: string;
|
|
52
|
+
logo_sizes_thumbnail_filename: string;
|
|
53
|
+
logo_filename: string;
|
|
54
|
+
logo_width: string;
|
|
55
|
+
logo_height: string;
|
|
56
|
+
logo_2_url: string;
|
|
57
|
+
logo_2_alt: string;
|
|
58
|
+
logo_2_thumbnail_url: string;
|
|
59
|
+
logo_2_sizes_thumbnail_filename: string;
|
|
60
|
+
logo_2_filename: string;
|
|
61
|
+
logo_2_width: string;
|
|
62
|
+
logo_2_height: string;
|
|
63
|
+
featured_image_url: string;
|
|
64
|
+
featured_image_alt: string;
|
|
65
|
+
featured_image_thumbnail_url: string;
|
|
66
|
+
featured_image_sizes_thumbnail_filename: string;
|
|
67
|
+
featured_image_filename: string;
|
|
68
|
+
featured_image_width: string;
|
|
69
|
+
featured_image_height: string;
|
|
70
|
+
}
|
|
37
71
|
interface WhereEquals {
|
|
38
72
|
equals?: string;
|
|
39
73
|
}
|
|
@@ -69,6 +103,23 @@ interface GetBrandsParams {
|
|
|
69
103
|
page?: number;
|
|
70
104
|
sort?: string;
|
|
71
105
|
}
|
|
106
|
+
interface GetEntityParams {
|
|
107
|
+
}
|
|
108
|
+
interface CreateEcommerceOrderItem {
|
|
109
|
+
id: number;
|
|
110
|
+
quantity: number;
|
|
111
|
+
}
|
|
112
|
+
interface CreateEcommerceOrderParams {
|
|
113
|
+
name: string;
|
|
114
|
+
email: string;
|
|
115
|
+
phone?: string;
|
|
116
|
+
notes?: string;
|
|
117
|
+
tin?: string;
|
|
118
|
+
items: CreateEcommerceOrderItem[];
|
|
119
|
+
delivery_address?: string;
|
|
120
|
+
delivery_instructions?: string;
|
|
121
|
+
payment_method?: "cash" | "transfer";
|
|
122
|
+
}
|
|
72
123
|
interface ItemsRawResponse {
|
|
73
124
|
totalDocs: number;
|
|
74
125
|
totalPages: number;
|
|
@@ -124,11 +175,41 @@ interface BrandsApiResponse {
|
|
|
124
175
|
error: boolean;
|
|
125
176
|
errorMessage: string | null;
|
|
126
177
|
}
|
|
178
|
+
interface EntityApiResponse {
|
|
179
|
+
data: Entity | null;
|
|
180
|
+
entity: Entity | null;
|
|
181
|
+
error: boolean;
|
|
182
|
+
errorMessage: string | null;
|
|
183
|
+
}
|
|
184
|
+
interface CreateEcommerceOrderResponse {
|
|
185
|
+
message: string;
|
|
186
|
+
order_id?: string;
|
|
187
|
+
error: boolean;
|
|
188
|
+
errorMessage: string | null;
|
|
189
|
+
}
|
|
190
|
+
interface CustomGraphQLParams {
|
|
191
|
+
query: string;
|
|
192
|
+
variables?: Record<string, any>;
|
|
193
|
+
}
|
|
194
|
+
interface CustomGraphQLResponse {
|
|
195
|
+
data: any;
|
|
196
|
+
error: boolean;
|
|
197
|
+
errorMessage: string | null;
|
|
198
|
+
errors?: any[];
|
|
199
|
+
}
|
|
127
200
|
|
|
128
|
-
declare
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
201
|
+
declare class PakentoCMSAPI {
|
|
202
|
+
private client;
|
|
203
|
+
private baseURL;
|
|
204
|
+
private apiKey;
|
|
205
|
+
constructor();
|
|
206
|
+
getItems(params?: GetItemsParams): Promise<ItemsApiResponse>;
|
|
207
|
+
getCategories(params?: GetCategoriesParams): Promise<CategoriesApiResponse>;
|
|
208
|
+
getBrands(params?: GetBrandsParams): Promise<BrandsApiResponse>;
|
|
209
|
+
getEntity(params?: GetEntityParams): Promise<EntityApiResponse>;
|
|
210
|
+
createEcommerceOrder(params: CreateEcommerceOrderParams): Promise<CreateEcommerceOrderResponse>;
|
|
211
|
+
executeCustomQuery(params: CustomGraphQLParams): Promise<CustomGraphQLResponse>;
|
|
212
|
+
}
|
|
213
|
+
declare const pakentoCMSAPI: PakentoCMSAPI;
|
|
133
214
|
|
|
134
215
|
export { type Brand, type BrandsApiResponse, type BrandsRawResponse, type CategoriesApiResponse, type CategoriesRawResponse, type CategoriesWhere, type Category, type GetBrandsParams, type GetCategoriesParams, type GetItemsParams, type Item, type ItemImage, type ItemsApiResponse, type ItemsRawResponse, type ItemsWhere, type WhereEquals, pakentoCMSAPI };
|
package/dist/index.d.ts
CHANGED
|
@@ -34,6 +34,40 @@ interface Brand {
|
|
|
34
34
|
image_thumbnail_url: string;
|
|
35
35
|
image_alt: string;
|
|
36
36
|
}
|
|
37
|
+
interface Entity {
|
|
38
|
+
id: string;
|
|
39
|
+
tin: string;
|
|
40
|
+
name: string;
|
|
41
|
+
web: string;
|
|
42
|
+
address: string;
|
|
43
|
+
country: string;
|
|
44
|
+
city: string;
|
|
45
|
+
currency_id: string;
|
|
46
|
+
currency_name: string;
|
|
47
|
+
currency_prefix: string;
|
|
48
|
+
currency_suffix: string;
|
|
49
|
+
logo_url: string;
|
|
50
|
+
logo_alt: string;
|
|
51
|
+
logo_thumbnail_url: string;
|
|
52
|
+
logo_sizes_thumbnail_filename: string;
|
|
53
|
+
logo_filename: string;
|
|
54
|
+
logo_width: string;
|
|
55
|
+
logo_height: string;
|
|
56
|
+
logo_2_url: string;
|
|
57
|
+
logo_2_alt: string;
|
|
58
|
+
logo_2_thumbnail_url: string;
|
|
59
|
+
logo_2_sizes_thumbnail_filename: string;
|
|
60
|
+
logo_2_filename: string;
|
|
61
|
+
logo_2_width: string;
|
|
62
|
+
logo_2_height: string;
|
|
63
|
+
featured_image_url: string;
|
|
64
|
+
featured_image_alt: string;
|
|
65
|
+
featured_image_thumbnail_url: string;
|
|
66
|
+
featured_image_sizes_thumbnail_filename: string;
|
|
67
|
+
featured_image_filename: string;
|
|
68
|
+
featured_image_width: string;
|
|
69
|
+
featured_image_height: string;
|
|
70
|
+
}
|
|
37
71
|
interface WhereEquals {
|
|
38
72
|
equals?: string;
|
|
39
73
|
}
|
|
@@ -69,6 +103,23 @@ interface GetBrandsParams {
|
|
|
69
103
|
page?: number;
|
|
70
104
|
sort?: string;
|
|
71
105
|
}
|
|
106
|
+
interface GetEntityParams {
|
|
107
|
+
}
|
|
108
|
+
interface CreateEcommerceOrderItem {
|
|
109
|
+
id: number;
|
|
110
|
+
quantity: number;
|
|
111
|
+
}
|
|
112
|
+
interface CreateEcommerceOrderParams {
|
|
113
|
+
name: string;
|
|
114
|
+
email: string;
|
|
115
|
+
phone?: string;
|
|
116
|
+
notes?: string;
|
|
117
|
+
tin?: string;
|
|
118
|
+
items: CreateEcommerceOrderItem[];
|
|
119
|
+
delivery_address?: string;
|
|
120
|
+
delivery_instructions?: string;
|
|
121
|
+
payment_method?: "cash" | "transfer";
|
|
122
|
+
}
|
|
72
123
|
interface ItemsRawResponse {
|
|
73
124
|
totalDocs: number;
|
|
74
125
|
totalPages: number;
|
|
@@ -124,11 +175,41 @@ interface BrandsApiResponse {
|
|
|
124
175
|
error: boolean;
|
|
125
176
|
errorMessage: string | null;
|
|
126
177
|
}
|
|
178
|
+
interface EntityApiResponse {
|
|
179
|
+
data: Entity | null;
|
|
180
|
+
entity: Entity | null;
|
|
181
|
+
error: boolean;
|
|
182
|
+
errorMessage: string | null;
|
|
183
|
+
}
|
|
184
|
+
interface CreateEcommerceOrderResponse {
|
|
185
|
+
message: string;
|
|
186
|
+
order_id?: string;
|
|
187
|
+
error: boolean;
|
|
188
|
+
errorMessage: string | null;
|
|
189
|
+
}
|
|
190
|
+
interface CustomGraphQLParams {
|
|
191
|
+
query: string;
|
|
192
|
+
variables?: Record<string, any>;
|
|
193
|
+
}
|
|
194
|
+
interface CustomGraphQLResponse {
|
|
195
|
+
data: any;
|
|
196
|
+
error: boolean;
|
|
197
|
+
errorMessage: string | null;
|
|
198
|
+
errors?: any[];
|
|
199
|
+
}
|
|
127
200
|
|
|
128
|
-
declare
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
201
|
+
declare class PakentoCMSAPI {
|
|
202
|
+
private client;
|
|
203
|
+
private baseURL;
|
|
204
|
+
private apiKey;
|
|
205
|
+
constructor();
|
|
206
|
+
getItems(params?: GetItemsParams): Promise<ItemsApiResponse>;
|
|
207
|
+
getCategories(params?: GetCategoriesParams): Promise<CategoriesApiResponse>;
|
|
208
|
+
getBrands(params?: GetBrandsParams): Promise<BrandsApiResponse>;
|
|
209
|
+
getEntity(params?: GetEntityParams): Promise<EntityApiResponse>;
|
|
210
|
+
createEcommerceOrder(params: CreateEcommerceOrderParams): Promise<CreateEcommerceOrderResponse>;
|
|
211
|
+
executeCustomQuery(params: CustomGraphQLParams): Promise<CustomGraphQLResponse>;
|
|
212
|
+
}
|
|
213
|
+
declare const pakentoCMSAPI: PakentoCMSAPI;
|
|
133
214
|
|
|
134
215
|
export { type Brand, type BrandsApiResponse, type BrandsRawResponse, type CategoriesApiResponse, type CategoriesRawResponse, type CategoriesWhere, type Category, type GetBrandsParams, type GetCategoriesParams, type GetItemsParams, type Item, type ItemImage, type ItemsApiResponse, type ItemsRawResponse, type ItemsWhere, type WhereEquals, pakentoCMSAPI };
|
package/dist/index.js
CHANGED
|
@@ -36,7 +36,7 @@ module.exports = __toCommonJS(index_exports);
|
|
|
36
36
|
|
|
37
37
|
// src/services/api.ts
|
|
38
38
|
var import_axios = __toESM(require("axios"));
|
|
39
|
-
var
|
|
39
|
+
var PakentoCMSAPI = class {
|
|
40
40
|
constructor() {
|
|
41
41
|
this.baseURL = process.env.PAKENTO_CMS_BASE_URL || "";
|
|
42
42
|
this.apiKey = process.env.PAKENTO_API_KEY || "";
|
|
@@ -420,104 +420,241 @@ var PakentoCMSAPIBase = class {
|
|
|
420
420
|
};
|
|
421
421
|
}
|
|
422
422
|
}
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
423
|
+
async getEntity(params = {}) {
|
|
424
|
+
if (!this.baseURL || !this.apiKey) {
|
|
425
|
+
return {
|
|
426
|
+
data: null,
|
|
427
|
+
entity: null,
|
|
428
|
+
error: true,
|
|
429
|
+
errorMessage: "SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes."
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
try {
|
|
433
|
+
const query = `
|
|
434
|
+
query GetEntity {
|
|
435
|
+
GetEntity {
|
|
436
|
+
id
|
|
437
|
+
tin
|
|
438
|
+
name
|
|
439
|
+
web
|
|
440
|
+
address
|
|
441
|
+
country
|
|
442
|
+
city
|
|
443
|
+
currency_id
|
|
444
|
+
currency_name
|
|
445
|
+
currency_prefix
|
|
446
|
+
currency_suffix
|
|
447
|
+
logo_url
|
|
448
|
+
logo_alt
|
|
449
|
+
logo_thumbnail_url
|
|
450
|
+
logo_sizes_thumbnail_filename
|
|
451
|
+
logo_filename
|
|
452
|
+
logo_width
|
|
453
|
+
logo_height
|
|
454
|
+
logo_2_url
|
|
455
|
+
logo_2_alt
|
|
456
|
+
logo_2_thumbnail_url
|
|
457
|
+
logo_2_sizes_thumbnail_filename
|
|
458
|
+
logo_2_filename
|
|
459
|
+
logo_2_width
|
|
460
|
+
logo_2_height
|
|
461
|
+
featured_image_url
|
|
462
|
+
featured_image_alt
|
|
463
|
+
featured_image_thumbnail_url
|
|
464
|
+
featured_image_sizes_thumbnail_filename
|
|
465
|
+
featured_image_filename
|
|
466
|
+
featured_image_width
|
|
467
|
+
featured_image_height
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
`;
|
|
471
|
+
const response = await this.client.post("/api/graphql", {
|
|
472
|
+
query,
|
|
473
|
+
variables: params
|
|
448
474
|
});
|
|
449
|
-
if (
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
475
|
+
if (response.data.errors) {
|
|
476
|
+
const errorMessage = `GraphQL Error: ${response.data.errors[0].message}`;
|
|
477
|
+
return {
|
|
478
|
+
data: null,
|
|
479
|
+
entity: null,
|
|
480
|
+
error: true,
|
|
481
|
+
errorMessage
|
|
482
|
+
};
|
|
456
483
|
}
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
484
|
+
const entityData = response.data.data.GetEntity;
|
|
485
|
+
return {
|
|
486
|
+
data: entityData,
|
|
487
|
+
entity: entityData,
|
|
488
|
+
error: false,
|
|
489
|
+
errorMessage: null
|
|
490
|
+
};
|
|
491
|
+
} catch (error) {
|
|
492
|
+
let errorMessage = "Error desconocido";
|
|
493
|
+
if (error instanceof import_axios.AxiosError) {
|
|
494
|
+
const status = error.response?.status;
|
|
495
|
+
if (status === 401) {
|
|
496
|
+
errorMessage = "API Key inv\xE1lida o expirada";
|
|
497
|
+
} else if (status === 404) {
|
|
498
|
+
errorMessage = "Endpoint no encontrado";
|
|
499
|
+
} else if (status && status >= 500) {
|
|
500
|
+
errorMessage = "Error del servidor CMS";
|
|
501
|
+
} else {
|
|
502
|
+
errorMessage = `Error de conexi\xF3n: ${error.message}`;
|
|
503
|
+
}
|
|
504
|
+
} else if (error instanceof Error) {
|
|
505
|
+
errorMessage = error.message;
|
|
506
|
+
}
|
|
507
|
+
return {
|
|
508
|
+
data: null,
|
|
509
|
+
entity: null,
|
|
510
|
+
error: true,
|
|
511
|
+
errorMessage
|
|
512
|
+
};
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
async createEcommerceOrder(params) {
|
|
516
|
+
if (!this.baseURL || !this.apiKey) {
|
|
517
|
+
return {
|
|
518
|
+
message: "SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.",
|
|
519
|
+
error: true,
|
|
520
|
+
errorMessage: "SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes."
|
|
521
|
+
};
|
|
522
|
+
}
|
|
523
|
+
if (!params.name || !params.email) {
|
|
524
|
+
return {
|
|
525
|
+
message: "Faltan campos requeridos: name y email son obligatorios",
|
|
526
|
+
error: true,
|
|
527
|
+
errorMessage: "Faltan campos requeridos: name y email son obligatorios"
|
|
528
|
+
};
|
|
529
|
+
}
|
|
530
|
+
if (!params.items || !Array.isArray(params.items) || params.items.length === 0) {
|
|
531
|
+
return {
|
|
532
|
+
message: "Se requiere al menos un item en la orden",
|
|
533
|
+
error: true,
|
|
534
|
+
errorMessage: "Se requiere al menos un item en la orden"
|
|
535
|
+
};
|
|
536
|
+
}
|
|
537
|
+
if (params.payment_method && params.payment_method !== "cash" && params.payment_method !== "transfer") {
|
|
538
|
+
return {
|
|
539
|
+
message: "M\xE9todo de pago no v\xE1lido",
|
|
540
|
+
error: true,
|
|
541
|
+
errorMessage: "M\xE9todo de pago no v\xE1lido"
|
|
542
|
+
};
|
|
543
|
+
}
|
|
544
|
+
for (const item of params.items) {
|
|
545
|
+
if (!item.id || !item.quantity || item.quantity <= 0) {
|
|
546
|
+
return {
|
|
547
|
+
message: "Cada item debe tener un id v\xE1lido y una cantidad mayor a 0",
|
|
548
|
+
error: true,
|
|
549
|
+
errorMessage: "Cada item debe tener un id v\xE1lido y una cantidad mayor a 0"
|
|
550
|
+
};
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
try {
|
|
554
|
+
const response = await this.client.post(
|
|
555
|
+
"/api/orders/create-ecommerce-order",
|
|
556
|
+
params
|
|
471
557
|
);
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
console.error(
|
|
480
|
-
"\u274C [DEBUG] getCategories - Error en la respuesta:",
|
|
481
|
-
result.errorMessage
|
|
482
|
-
);
|
|
558
|
+
if (response.status === 200) {
|
|
559
|
+
return {
|
|
560
|
+
message: response.data.message || "Orden creada exitosamente",
|
|
561
|
+
order_id: response.data.order_id,
|
|
562
|
+
error: false,
|
|
563
|
+
errorMessage: null
|
|
564
|
+
};
|
|
483
565
|
} else {
|
|
484
|
-
|
|
566
|
+
return {
|
|
567
|
+
message: response.data.message || "Error al crear la orden",
|
|
568
|
+
error: true,
|
|
569
|
+
errorMessage: response.data.message || "Error al crear la orden"
|
|
570
|
+
};
|
|
485
571
|
}
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
errorMessage
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
572
|
+
} catch (error) {
|
|
573
|
+
let errorMessage = "Error desconocido";
|
|
574
|
+
if (error instanceof import_axios.AxiosError) {
|
|
575
|
+
const status = error.response?.status;
|
|
576
|
+
const responseMessage = error.response?.data?.message;
|
|
577
|
+
if (status === 400) {
|
|
578
|
+
errorMessage = responseMessage || "Datos de entrada inv\xE1lidos";
|
|
579
|
+
} else if (status === 401) {
|
|
580
|
+
errorMessage = "API Key inv\xE1lida o expirada";
|
|
581
|
+
} else if (status === 404) {
|
|
582
|
+
errorMessage = "Endpoint no encontrado";
|
|
583
|
+
} else if (status && status >= 500) {
|
|
584
|
+
errorMessage = "Error del servidor CMS";
|
|
585
|
+
} else {
|
|
586
|
+
errorMessage = responseMessage || `Error de conexi\xF3n: ${error.message}`;
|
|
587
|
+
}
|
|
588
|
+
} else if (error instanceof Error) {
|
|
589
|
+
errorMessage = error.message;
|
|
590
|
+
}
|
|
591
|
+
return {
|
|
592
|
+
message: errorMessage,
|
|
593
|
+
error: true,
|
|
594
|
+
errorMessage
|
|
595
|
+
};
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
async executeCustomQuery(params) {
|
|
599
|
+
if (!this.baseURL || !this.apiKey) {
|
|
600
|
+
return {
|
|
601
|
+
data: null,
|
|
602
|
+
error: true,
|
|
603
|
+
errorMessage: "SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes."
|
|
604
|
+
};
|
|
605
|
+
}
|
|
606
|
+
if (!params.query || typeof params.query !== "string" || params.query.trim() === "") {
|
|
607
|
+
return {
|
|
608
|
+
data: null,
|
|
609
|
+
error: true,
|
|
610
|
+
errorMessage: "Se requiere un query GraphQL v\xE1lido."
|
|
611
|
+
};
|
|
612
|
+
}
|
|
613
|
+
try {
|
|
614
|
+
const response = await this.client.post("/api/graphql", {
|
|
615
|
+
query: params.query,
|
|
616
|
+
variables: params.variables || {}
|
|
507
617
|
});
|
|
508
|
-
if (
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
618
|
+
if (response.data.errors && response.data.errors.length > 0) {
|
|
619
|
+
return {
|
|
620
|
+
data: response.data.data || null,
|
|
621
|
+
errors: response.data.errors,
|
|
622
|
+
error: true,
|
|
623
|
+
errorMessage: `GraphQL Errors: ${response.data.errors.map((err) => err.message).join(", ")}`
|
|
624
|
+
};
|
|
515
625
|
}
|
|
516
|
-
return
|
|
626
|
+
return {
|
|
627
|
+
data: response.data.data,
|
|
628
|
+
error: false,
|
|
629
|
+
errorMessage: null
|
|
630
|
+
};
|
|
631
|
+
} catch (error) {
|
|
632
|
+
let errorMessage = "Error desconocido";
|
|
633
|
+
if (error instanceof import_axios.AxiosError) {
|
|
634
|
+
const status = error.response?.status;
|
|
635
|
+
if (status === 401) {
|
|
636
|
+
errorMessage = "API Key inv\xE1lida o expirada";
|
|
637
|
+
} else if (status === 404) {
|
|
638
|
+
errorMessage = "Endpoint GraphQL no encontrado";
|
|
639
|
+
} else if (status === 400) {
|
|
640
|
+
errorMessage = "Query GraphQL inv\xE1lido o malformado";
|
|
641
|
+
} else if (status && status >= 500) {
|
|
642
|
+
errorMessage = "Error del servidor CMS";
|
|
643
|
+
} else {
|
|
644
|
+
errorMessage = `Error de conexi\xF3n: ${error.message}`;
|
|
645
|
+
}
|
|
646
|
+
} else if (error instanceof Error) {
|
|
647
|
+
errorMessage = error.message;
|
|
648
|
+
}
|
|
649
|
+
return {
|
|
650
|
+
data: null,
|
|
651
|
+
error: true,
|
|
652
|
+
errorMessage
|
|
653
|
+
};
|
|
517
654
|
}
|
|
518
|
-
}
|
|
655
|
+
}
|
|
519
656
|
};
|
|
520
|
-
var pakentoCMSAPI =
|
|
657
|
+
var pakentoCMSAPI = new PakentoCMSAPI();
|
|
521
658
|
// Annotate the CommonJS export names for ESM import in node:
|
|
522
659
|
0 && (module.exports = {
|
|
523
660
|
pakentoCMSAPI
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/services/api.ts"],"sourcesContent":["// Services\nimport { pakentoCMSAPIBase } from \"./services/api\";\n\n// Crear un wrapper con logs de debug\nconst createDebugWrapper = (api: typeof pakentoCMSAPIBase) => {\n return {\n getItems: async (params: any = {}) => {\n console.log(\n \"🔍 [DEBUG] getItems - Parámetros enviados:\",\n JSON.stringify(params, null, 2)\n );\n console.log(\"🔍 [DEBUG] getItems - Iniciando llamada a la API...\");\n\n const startTime = Date.now();\n const result = await api.getItems(params);\n const endTime = Date.now();\n\n console.log(\n \"🔍 [DEBUG] getItems - Tiempo de respuesta:\",\n `${endTime - startTime}ms`\n );\n console.log(\"🔍 [DEBUG] getItems - Respuesta recibida:\", {\n error: result.error,\n errorMessage: result.errorMessage,\n totalDocs: result.totalDocs,\n itemsCount: result.items?.length || 0,\n hasData: !!result.data,\n });\n\n if (result.error) {\n console.error(\n \"❌ [DEBUG] getItems - Error en la respuesta:\",\n result.errorMessage\n );\n } else {\n console.log(\"✅ [DEBUG] getItems - Llamada exitosa\");\n }\n\n return result;\n },\n\n getCategories: async (params: any = {}) => {\n console.log(\n \"🔍 [DEBUG] getCategories - Parámetros enviados:\",\n JSON.stringify(params, null, 2)\n );\n console.log(\"🔍 [DEBUG] getCategories - Iniciando llamada a la API...\");\n\n const startTime = Date.now();\n const result = await api.getCategories(params);\n const endTime = Date.now();\n\n console.log(\n \"🔍 [DEBUG] getCategories - Tiempo de respuesta:\",\n `${endTime - startTime}ms`\n );\n console.log(\"🔍 [DEBUG] getCategories - Respuesta recibida:\", {\n error: result.error,\n errorMessage: result.errorMessage,\n categoriesCount: result.categories?.length || 0,\n hasData: !!result.data,\n });\n\n if (result.error) {\n console.error(\n \"❌ [DEBUG] getCategories - Error en la respuesta:\",\n result.errorMessage\n );\n } else {\n console.log(\"✅ [DEBUG] getCategories - Llamada exitosa\");\n }\n\n return result;\n },\n\n getBrands: async (params: any = {}) => {\n console.log(\n \"🔍 [DEBUG] getBrands - Parámetros enviados:\",\n JSON.stringify(params, null, 2)\n );\n console.log(\"🔍 [DEBUG] getBrands - Iniciando llamada a la API...\");\n\n const startTime = Date.now();\n const result = await api.getBrands(params);\n const endTime = Date.now();\n\n console.log(\n \"🔍 [DEBUG] getBrands - Tiempo de respuesta:\",\n `${endTime - startTime}ms`\n );\n console.log(\"🔍 [DEBUG] getBrands - Respuesta recibida:\", {\n error: result.error,\n errorMessage: result.errorMessage,\n totalDocs: result.totalDocs,\n brandsCount: result.brands?.length || 0,\n hasData: !!result.data,\n });\n\n if (result.error) {\n console.error(\n \"❌ [DEBUG] getBrands - Error en la respuesta:\",\n result.errorMessage\n );\n } else {\n console.log(\"✅ [DEBUG] getBrands - Llamada exitosa\");\n }\n\n return result;\n },\n };\n};\n\n// Exportar la API con logs de debug\nexport const pakentoCMSAPI = createDebugWrapper(pakentoCMSAPIBase);\n\n// Types\nexport type {\n // Base types\n Item,\n ItemImage,\n Category,\n Brand,\n\n // GraphQL Where conditions\n WhereEquals,\n ItemsWhere,\n CategoriesWhere,\n\n // API Parameters\n GetItemsParams,\n GetCategoriesParams,\n GetBrandsParams,\n\n // Raw API Response types\n ItemsRawResponse,\n CategoriesRawResponse,\n BrandsRawResponse,\n\n // API Response types with error handling\n ItemsApiResponse,\n CategoriesApiResponse,\n BrandsApiResponse,\n} from \"./types\";\n","import axios, { AxiosInstance, AxiosError } from \"axios\";\nimport type {\n GetItemsParams,\n GetCategoriesParams,\n GetBrandsParams,\n ItemsApiResponse,\n CategoriesApiResponse,\n BrandsApiResponse,\n ItemsRawResponse,\n CategoriesRawResponse,\n BrandsRawResponse,\n} from \"../types\";\n\nclass PakentoCMSAPIBase {\n private client: AxiosInstance;\n private baseURL: string;\n private apiKey: string;\n\n constructor() {\n this.baseURL = process.env.PAKENTO_CMS_BASE_URL || \"\";\n this.apiKey = process.env.PAKENTO_API_KEY || \"\";\n\n if (!this.baseURL || !this.apiKey) {\n /*\n * No lanzamos excepciones en el constructor para evitar errores durante el build.\n * Las validaciones se harán justo antes de ejecutar una petición.\n */\n console.warn(\n \"[PakentoSDK] Variables de entorno PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes. Se validarán al hacer la petición.\"\n );\n }\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 // Interceptor para imprimir las URLs de las llamadas a la API\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) => {\n return Promise.reject(error);\n }\n );\n }\n\n async getItems(params: GetItemsParams = {}): Promise<ItemsApiResponse> {\n // Validar configuración antes de continuar\n if (!this.baseURL || !this.apiKey) {\n return {\n data: null,\n items: [],\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 try {\n // Construir el objeto where solo si se envían parámetros\n const whereConditions: any = {};\n\n if (params.where?.item_category_id?.equals) {\n whereConditions.item_category_id = {\n equals: params.where.item_category_id.equals,\n };\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\n if (params.where?.brand_id?.equals) {\n whereConditions.brand_id = {\n equals: params.where.brand_id.equals,\n };\n }\n\n if (params.where?.id?.equals) {\n whereConditions.id = {\n equals: params.where.id.equals,\n };\n }\n\n // Solo incluir where si tiene condiciones\n const variables: any = {\n onlyOffers: params.onlyOffers,\n onlyEcommerce: params.onlyEcommerce,\n limit: params.limit,\n page: params.page,\n search: params.search,\n sort: params.sort,\n minPrice: params.minPrice,\n maxPrice: params.maxPrice,\n };\n\n // Solo agregar where si tiene condiciones\n if (Object.keys(whereConditions).length > 0) {\n variables.where = whereConditions;\n }\n\n const query = `\n query GetEcommerceItems(\n $where: EcommerceItemsWhere\n $onlyOffers: Boolean\n $onlyEcommerce: 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 onlyEcommerce: $onlyEcommerce\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 old_price\n currency_prefix\n description\n price_text\n price\n brand_id\n brand_name\n cover_image_url\n cover_image_thumbnail_url\n item_category_name\n item_category_id\n images {\n alt\n url\n thumbnail_url\n }\n }\n }\n }\n `;\n\n const response = await this.client.post(\"/api/graphql\", {\n query,\n variables,\n });\n\n if (response.data.errors) {\n const errorMessage = `GraphQL Error: ${response.data.errors[0].message}`;\n return {\n data: null,\n items: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n\n const rawData: ItemsRawResponse = response.data.data.GetEcommerceItems;\n\n return {\n data: rawData,\n items: rawData.docs,\n totalDocs: rawData.totalDocs,\n totalPages: rawData.totalPages,\n prevPage: rawData.prevPage,\n nextPage: rawData.nextPage,\n error: false,\n errorMessage: null,\n };\n } catch (error) {\n let errorMessage = \"Error desconocido\";\n\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n if (status === 401) {\n errorMessage = \"API Key inválida o expirada\";\n } else if (status === 404) {\n errorMessage = \"Endpoint no encontrado\";\n } else if (status && status >= 500) {\n errorMessage = \"Error del servidor CMS\";\n } else {\n errorMessage = `Error de conexión: ${error.message}`;\n }\n } else if (error instanceof Error) {\n errorMessage = error.message;\n }\n\n return {\n data: null,\n items: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n }\n\n async getCategories(\n params: GetCategoriesParams = {}\n ): Promise<CategoriesApiResponse> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: null,\n categories: [],\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n try {\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 response = await this.client.post(\"/api/graphql\", {\n query,\n variables: params,\n });\n\n if (response.data.errors) {\n const errorMessage = `GraphQL Error: ${response.data.errors[0].message}`;\n return {\n data: null,\n categories: [],\n error: true,\n errorMessage,\n };\n }\n\n const rawData: CategoriesRawResponse =\n response.data.data.GetEcommerceCategories;\n\n return {\n data: rawData.docs,\n categories: rawData.docs,\n error: false,\n errorMessage: null,\n };\n } catch (error) {\n let errorMessage = \"Error desconocido\";\n\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n if (status === 401) {\n errorMessage = \"API Key inválida o expirada\";\n } else if (status === 404) {\n errorMessage = \"Endpoint no encontrado\";\n } else if (status && status >= 500) {\n errorMessage = \"Error del servidor CMS\";\n } else {\n errorMessage = `Error de conexión: ${error.message}`;\n }\n } else if (error instanceof Error) {\n errorMessage = error.message;\n }\n\n return {\n data: null,\n categories: [],\n error: true,\n errorMessage,\n };\n }\n }\n\n async getBrands(params: GetBrandsParams = {}): Promise<BrandsApiResponse> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: null,\n brands: [],\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n nextPage: 0,\n offset: 0,\n page: 0,\n pagingCounter: 0,\n prevPage: 0,\n totalDocs: 0,\n totalPages: 0,\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n try {\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 docs {\n id\n name\n description\n items_count\n image_url\n image_thumbnail_url\n image_alt\n }\n hasNextPage\n hasPrevPage\n limit\n nextPage\n offset\n page\n pagingCounter\n prevPage\n totalDocs\n totalPages\n }\n }\n `;\n\n const response = await this.client.post(\"/api/graphql\", {\n query,\n variables: params,\n });\n\n if (response.data.errors) {\n const errorMessage = `GraphQL Error: ${response.data.errors[0].message}`;\n return {\n data: null,\n brands: [],\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n nextPage: 0,\n offset: 0,\n page: 0,\n pagingCounter: 0,\n prevPage: 0,\n totalDocs: 0,\n totalPages: 0,\n error: true,\n errorMessage,\n };\n }\n\n const rawData: BrandsRawResponse = response.data.data.GetEcommerceBrands;\n\n return {\n data: rawData,\n brands: rawData.docs,\n hasNextPage: rawData.hasNextPage,\n hasPrevPage: rawData.hasPrevPage,\n limit: rawData.limit,\n nextPage: rawData.nextPage,\n offset: rawData.offset,\n page: rawData.page,\n pagingCounter: rawData.pagingCounter,\n prevPage: rawData.prevPage,\n totalDocs: rawData.totalDocs,\n totalPages: rawData.totalPages,\n error: false,\n errorMessage: null,\n };\n } catch (error) {\n let errorMessage = \"Error desconocido\";\n\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n if (status === 401) {\n errorMessage = \"API Key inválida o expirada\";\n } else if (status === 404) {\n errorMessage = \"Endpoint no encontrado\";\n } else if (status && status >= 500) {\n errorMessage = \"Error del servidor CMS\";\n } else {\n errorMessage = `Error de conexión: ${error.message}`;\n }\n } else if (error instanceof Error) {\n errorMessage = error.message;\n }\n\n return {\n data: null,\n brands: [],\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n nextPage: 0,\n offset: 0,\n page: 0,\n pagingCounter: 0,\n prevPage: 0,\n totalDocs: 0,\n totalPages: 0,\n error: true,\n errorMessage,\n };\n }\n }\n}\n\nexport const pakentoCMSAPIBase = new PakentoCMSAPIBase();\n"],"mappings":"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","names":["axios"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/services/api.ts"],"sourcesContent":["// Services\nexport { pakentoCMSAPI } from \"./services/api\";\n\n// Types\nexport type {\n // Base types\n Item,\n ItemImage,\n Category,\n Brand,\n\n // GraphQL Where conditions\n WhereEquals,\n ItemsWhere,\n CategoriesWhere,\n\n // API Parameters\n GetItemsParams,\n GetCategoriesParams,\n GetBrandsParams,\n\n // Raw API Response types\n ItemsRawResponse,\n CategoriesRawResponse,\n BrandsRawResponse,\n\n // API Response types with error handling\n ItemsApiResponse,\n CategoriesApiResponse,\n BrandsApiResponse,\n} from \"./types\";\n","import axios, { AxiosInstance, AxiosError } from \"axios\";\nimport type {\n GetItemsParams,\n GetCategoriesParams,\n GetBrandsParams,\n GetEntityParams,\n CreateEcommerceOrderParams,\n CustomGraphQLParams,\n ItemsApiResponse,\n CategoriesApiResponse,\n BrandsApiResponse,\n EntityApiResponse,\n CreateEcommerceOrderResponse,\n CustomGraphQLResponse,\n ItemsRawResponse,\n CategoriesRawResponse,\n BrandsRawResponse,\n ItemsWhere,\n} from \"../types\";\n\nclass PakentoCMSAPI {\n private client: AxiosInstance;\n private baseURL: string;\n private apiKey: string;\n\n constructor() {\n this.baseURL = process.env.PAKENTO_CMS_BASE_URL || \"\";\n this.apiKey = process.env.PAKENTO_API_KEY || \"\";\n\n if (!this.baseURL || !this.apiKey) {\n /*\n * No lanzamos excepciones en el constructor para evitar errores durante el build.\n * Las validaciones se harán justo antes de ejecutar una petición.\n */\n console.warn(\n \"[PakentoSDK] Variables de entorno PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes. Se validarán al hacer la petición.\"\n );\n }\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 // Interceptor para imprimir las URLs de las llamadas a la API\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) => {\n return Promise.reject(error);\n }\n );\n }\n\n async getItems(params: GetItemsParams = {}): Promise<ItemsApiResponse> {\n // Validar configuración antes de continuar\n if (!this.baseURL || !this.apiKey) {\n return {\n data: null,\n items: [],\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 try {\n // Construir el objeto where solo si se envían parámetros\n const whereConditions: ItemsWhere = {};\n\n if (params.where?.item_category_id?.equals) {\n whereConditions.item_category_id = {\n equals: params.where.item_category_id.equals,\n };\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\n if (params.where?.brand_id?.equals) {\n whereConditions.brand_id = {\n equals: params.where.brand_id.equals,\n };\n }\n\n if (params.where?.id?.equals) {\n whereConditions.id = {\n equals: params.where.id.equals,\n };\n }\n\n // Solo incluir where si tiene condiciones\n const variables: GetItemsParams = {\n onlyOffers: params.onlyOffers,\n onlyEcommerce: params.onlyEcommerce,\n limit: params.limit,\n page: params.page,\n search: params.search,\n sort: params.sort,\n minPrice: params.minPrice,\n maxPrice: params.maxPrice,\n };\n\n // Solo agregar where si tiene condiciones\n if (Object.keys(whereConditions).length > 0) {\n variables.where = whereConditions;\n }\n\n const query = `\n query GetEcommerceItems(\n $where: EcommerceItemsWhere\n $onlyOffers: Boolean\n $onlyEcommerce: 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 onlyEcommerce: $onlyEcommerce\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 old_price\n currency_prefix\n description\n price_text\n price\n brand_id\n brand_name\n cover_image_url\n cover_image_thumbnail_url\n item_category_name\n item_category_id\n images {\n alt\n url\n thumbnail_url\n }\n }\n }\n }\n `;\n\n const response = await this.client.post(\"/api/graphql\", {\n query,\n variables,\n });\n\n if (response.data.errors) {\n const errorMessage = `GraphQL Error: ${response.data.errors[0].message}`;\n return {\n data: null,\n items: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n\n const rawData: ItemsRawResponse = response.data.data.GetEcommerceItems;\n\n return {\n data: rawData,\n items: rawData.docs,\n totalDocs: rawData.totalDocs,\n totalPages: rawData.totalPages,\n prevPage: rawData.prevPage,\n nextPage: rawData.nextPage,\n error: false,\n errorMessage: null,\n };\n } catch (error) {\n let errorMessage = \"Error desconocido\";\n\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n if (status === 401) {\n errorMessage = \"API Key inválida o expirada\";\n } else if (status === 404) {\n errorMessage = \"Endpoint no encontrado\";\n } else if (status && status >= 500) {\n errorMessage = \"Error del servidor CMS\";\n } else {\n errorMessage = `Error de conexión: ${error.message}`;\n }\n } else if (error instanceof Error) {\n errorMessage = error.message;\n }\n\n return {\n data: null,\n items: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n }\n\n async getCategories(\n params: GetCategoriesParams = {}\n ): Promise<CategoriesApiResponse> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: null,\n categories: [],\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n try {\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 response = await this.client.post(\"/api/graphql\", {\n query,\n variables: params,\n });\n\n if (response.data.errors) {\n const errorMessage = `GraphQL Error: ${response.data.errors[0].message}`;\n return {\n data: null,\n categories: [],\n error: true,\n errorMessage,\n };\n }\n\n const rawData: CategoriesRawResponse =\n response.data.data.GetEcommerceCategories;\n\n return {\n data: rawData.docs,\n categories: rawData.docs,\n error: false,\n errorMessage: null,\n };\n } catch (error) {\n let errorMessage = \"Error desconocido\";\n\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n if (status === 401) {\n errorMessage = \"API Key inválida o expirada\";\n } else if (status === 404) {\n errorMessage = \"Endpoint no encontrado\";\n } else if (status && status >= 500) {\n errorMessage = \"Error del servidor CMS\";\n } else {\n errorMessage = `Error de conexión: ${error.message}`;\n }\n } else if (error instanceof Error) {\n errorMessage = error.message;\n }\n\n return {\n data: null,\n categories: [],\n error: true,\n errorMessage,\n };\n }\n }\n\n async getBrands(params: GetBrandsParams = {}): Promise<BrandsApiResponse> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: null,\n brands: [],\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n nextPage: 0,\n offset: 0,\n page: 0,\n pagingCounter: 0,\n prevPage: 0,\n totalDocs: 0,\n totalPages: 0,\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n try {\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 docs {\n id\n name\n description\n items_count\n image_url\n image_thumbnail_url\n image_alt\n }\n hasNextPage\n hasPrevPage\n limit\n nextPage\n offset\n page\n pagingCounter\n prevPage\n totalDocs\n totalPages\n }\n }\n `;\n\n const response = await this.client.post(\"/api/graphql\", {\n query,\n variables: params,\n });\n\n if (response.data.errors) {\n const errorMessage = `GraphQL Error: ${response.data.errors[0].message}`;\n return {\n data: null,\n brands: [],\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n nextPage: 0,\n offset: 0,\n page: 0,\n pagingCounter: 0,\n prevPage: 0,\n totalDocs: 0,\n totalPages: 0,\n error: true,\n errorMessage,\n };\n }\n\n const rawData: BrandsRawResponse = response.data.data.GetEcommerceBrands;\n\n return {\n data: rawData,\n brands: rawData.docs,\n hasNextPage: rawData.hasNextPage,\n hasPrevPage: rawData.hasPrevPage,\n limit: rawData.limit,\n nextPage: rawData.nextPage,\n offset: rawData.offset,\n page: rawData.page,\n pagingCounter: rawData.pagingCounter,\n prevPage: rawData.prevPage,\n totalDocs: rawData.totalDocs,\n totalPages: rawData.totalPages,\n error: false,\n errorMessage: null,\n };\n } catch (error) {\n let errorMessage = \"Error desconocido\";\n\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n if (status === 401) {\n errorMessage = \"API Key inválida o expirada\";\n } else if (status === 404) {\n errorMessage = \"Endpoint no encontrado\";\n } else if (status && status >= 500) {\n errorMessage = \"Error del servidor CMS\";\n } else {\n errorMessage = `Error de conexión: ${error.message}`;\n }\n } else if (error instanceof Error) {\n errorMessage = error.message;\n }\n\n return {\n data: null,\n brands: [],\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n nextPage: 0,\n offset: 0,\n page: 0,\n pagingCounter: 0,\n prevPage: 0,\n totalDocs: 0,\n totalPages: 0,\n error: true,\n errorMessage,\n };\n }\n }\n\n async getEntity(params: GetEntityParams = {}): Promise<EntityApiResponse> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: null,\n entity: null,\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n try {\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_alt\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 response = await this.client.post(\"/api/graphql\", {\n query,\n variables: params,\n });\n\n if (response.data.errors) {\n const errorMessage = `GraphQL Error: ${response.data.errors[0].message}`;\n return {\n data: null,\n entity: null,\n error: true,\n errorMessage,\n };\n }\n\n const entityData = response.data.data.GetEntity;\n\n return {\n data: entityData,\n entity: entityData,\n error: false,\n errorMessage: null,\n };\n } catch (error) {\n let errorMessage = \"Error desconocido\";\n\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n if (status === 401) {\n errorMessage = \"API Key inválida o expirada\";\n } else if (status === 404) {\n errorMessage = \"Endpoint no encontrado\";\n } else if (status && status >= 500) {\n errorMessage = \"Error del servidor CMS\";\n } else {\n errorMessage = `Error de conexión: ${error.message}`;\n }\n } else if (error instanceof Error) {\n errorMessage = error.message;\n }\n\n return {\n data: null,\n entity: null,\n error: true,\n errorMessage,\n };\n }\n }\n\n async createEcommerceOrder(\n params: CreateEcommerceOrderParams\n ): Promise<CreateEcommerceOrderResponse> {\n if (!this.baseURL || !this.apiKey) {\n return {\n message:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n // Validación de parámetros requeridos\n if (!params.name || !params.email) {\n return {\n message: \"Faltan campos requeridos: name y email son obligatorios\",\n error: true,\n errorMessage: \"Faltan campos requeridos: name y email son obligatorios\",\n };\n }\n\n if (\n !params.items ||\n !Array.isArray(params.items) ||\n params.items.length === 0\n ) {\n return {\n message: \"Se requiere al menos un item en la orden\",\n error: true,\n errorMessage: \"Se requiere al menos un item en la orden\",\n };\n }\n\n if (\n params.payment_method &&\n params.payment_method !== \"cash\" &&\n params.payment_method !== \"transfer\"\n ) {\n return {\n message: \"Método de pago no válido\",\n error: true,\n errorMessage: \"Método de pago no válido\",\n };\n }\n\n // Validar estructura de items\n for (const item of params.items) {\n if (!item.id || !item.quantity || item.quantity <= 0) {\n return {\n message: \"Cada item debe tener un id válido y una cantidad mayor a 0\",\n error: true,\n errorMessage:\n \"Cada item debe tener un id válido y una cantidad mayor a 0\",\n };\n }\n }\n\n try {\n const response = await this.client.post(\n \"/api/orders/create-ecommerce-order\",\n params\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 return {\n message: response.data.message || \"Error al crear la orden\",\n error: true,\n errorMessage: response.data.message || \"Error al crear la orden\",\n };\n }\n } catch (error) {\n let errorMessage = \"Error desconocido\";\n\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n const responseMessage = error.response?.data?.message;\n\n if (status === 400) {\n errorMessage = responseMessage || \"Datos de entrada inválidos\";\n } else if (status === 401) {\n errorMessage = \"API Key inválida o expirada\";\n } else if (status === 404) {\n errorMessage = \"Endpoint no encontrado\";\n } else if (status && status >= 500) {\n errorMessage = \"Error del servidor CMS\";\n } else {\n errorMessage =\n responseMessage || `Error de conexión: ${error.message}`;\n }\n } else if (error instanceof Error) {\n errorMessage = error.message;\n }\n\n return {\n message: errorMessage,\n error: true,\n errorMessage,\n };\n }\n }\n\n async executeCustomQuery(\n params: CustomGraphQLParams\n ): Promise<CustomGraphQLResponse> {\n // Validar configuración antes de continuar\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 // Validar que se proporcione un query\n if (\n !params.query ||\n typeof params.query !== \"string\" ||\n params.query.trim() === \"\"\n ) {\n return {\n data: null,\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 // Si hay errores de GraphQL, los incluimos en la respuesta pero no como error fatal\n if (response.data.errors && response.data.errors.length > 0) {\n return {\n data: response.data.data || null,\n errors: response.data.errors,\n error: true,\n errorMessage: `GraphQL Errors: ${response.data.errors\n .map((err: unknown) => (err as Error).message)\n .join(\", \")}`,\n };\n }\n\n return {\n data: response.data.data,\n error: false,\n errorMessage: null,\n };\n } catch (error) {\n let errorMessage = \"Error desconocido\";\n\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n if (status === 401) {\n errorMessage = \"API Key inválida o expirada\";\n } else if (status === 404) {\n errorMessage = \"Endpoint GraphQL no encontrado\";\n } else if (status === 400) {\n errorMessage = \"Query GraphQL inválido o malformado\";\n } else if (status && status >= 500) {\n errorMessage = \"Error del servidor CMS\";\n } else {\n errorMessage = `Error de conexión: ${error.message}`;\n }\n } else if (error instanceof Error) {\n errorMessage = error.message;\n }\n\n return {\n data: null,\n error: true,\n errorMessage,\n };\n }\n }\n}\n\nexport const pakentoCMSAPI = new PakentoCMSAPI();\n"],"mappings":"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","names":["axios"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/services/api.ts
|
|
2
2
|
import axios, { AxiosError } from "axios";
|
|
3
|
-
var
|
|
3
|
+
var PakentoCMSAPI = class {
|
|
4
4
|
constructor() {
|
|
5
5
|
this.baseURL = process.env.PAKENTO_CMS_BASE_URL || "";
|
|
6
6
|
this.apiKey = process.env.PAKENTO_API_KEY || "";
|
|
@@ -384,104 +384,241 @@ var PakentoCMSAPIBase = class {
|
|
|
384
384
|
};
|
|
385
385
|
}
|
|
386
386
|
}
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
387
|
+
async getEntity(params = {}) {
|
|
388
|
+
if (!this.baseURL || !this.apiKey) {
|
|
389
|
+
return {
|
|
390
|
+
data: null,
|
|
391
|
+
entity: null,
|
|
392
|
+
error: true,
|
|
393
|
+
errorMessage: "SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes."
|
|
394
|
+
};
|
|
395
|
+
}
|
|
396
|
+
try {
|
|
397
|
+
const query = `
|
|
398
|
+
query GetEntity {
|
|
399
|
+
GetEntity {
|
|
400
|
+
id
|
|
401
|
+
tin
|
|
402
|
+
name
|
|
403
|
+
web
|
|
404
|
+
address
|
|
405
|
+
country
|
|
406
|
+
city
|
|
407
|
+
currency_id
|
|
408
|
+
currency_name
|
|
409
|
+
currency_prefix
|
|
410
|
+
currency_suffix
|
|
411
|
+
logo_url
|
|
412
|
+
logo_alt
|
|
413
|
+
logo_thumbnail_url
|
|
414
|
+
logo_sizes_thumbnail_filename
|
|
415
|
+
logo_filename
|
|
416
|
+
logo_width
|
|
417
|
+
logo_height
|
|
418
|
+
logo_2_url
|
|
419
|
+
logo_2_alt
|
|
420
|
+
logo_2_thumbnail_url
|
|
421
|
+
logo_2_sizes_thumbnail_filename
|
|
422
|
+
logo_2_filename
|
|
423
|
+
logo_2_width
|
|
424
|
+
logo_2_height
|
|
425
|
+
featured_image_url
|
|
426
|
+
featured_image_alt
|
|
427
|
+
featured_image_thumbnail_url
|
|
428
|
+
featured_image_sizes_thumbnail_filename
|
|
429
|
+
featured_image_filename
|
|
430
|
+
featured_image_width
|
|
431
|
+
featured_image_height
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
`;
|
|
435
|
+
const response = await this.client.post("/api/graphql", {
|
|
436
|
+
query,
|
|
437
|
+
variables: params
|
|
412
438
|
});
|
|
413
|
-
if (
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
439
|
+
if (response.data.errors) {
|
|
440
|
+
const errorMessage = `GraphQL Error: ${response.data.errors[0].message}`;
|
|
441
|
+
return {
|
|
442
|
+
data: null,
|
|
443
|
+
entity: null,
|
|
444
|
+
error: true,
|
|
445
|
+
errorMessage
|
|
446
|
+
};
|
|
420
447
|
}
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
448
|
+
const entityData = response.data.data.GetEntity;
|
|
449
|
+
return {
|
|
450
|
+
data: entityData,
|
|
451
|
+
entity: entityData,
|
|
452
|
+
error: false,
|
|
453
|
+
errorMessage: null
|
|
454
|
+
};
|
|
455
|
+
} catch (error) {
|
|
456
|
+
let errorMessage = "Error desconocido";
|
|
457
|
+
if (error instanceof AxiosError) {
|
|
458
|
+
const status = error.response?.status;
|
|
459
|
+
if (status === 401) {
|
|
460
|
+
errorMessage = "API Key inv\xE1lida o expirada";
|
|
461
|
+
} else if (status === 404) {
|
|
462
|
+
errorMessage = "Endpoint no encontrado";
|
|
463
|
+
} else if (status && status >= 500) {
|
|
464
|
+
errorMessage = "Error del servidor CMS";
|
|
465
|
+
} else {
|
|
466
|
+
errorMessage = `Error de conexi\xF3n: ${error.message}`;
|
|
467
|
+
}
|
|
468
|
+
} else if (error instanceof Error) {
|
|
469
|
+
errorMessage = error.message;
|
|
470
|
+
}
|
|
471
|
+
return {
|
|
472
|
+
data: null,
|
|
473
|
+
entity: null,
|
|
474
|
+
error: true,
|
|
475
|
+
errorMessage
|
|
476
|
+
};
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
async createEcommerceOrder(params) {
|
|
480
|
+
if (!this.baseURL || !this.apiKey) {
|
|
481
|
+
return {
|
|
482
|
+
message: "SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.",
|
|
483
|
+
error: true,
|
|
484
|
+
errorMessage: "SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes."
|
|
485
|
+
};
|
|
486
|
+
}
|
|
487
|
+
if (!params.name || !params.email) {
|
|
488
|
+
return {
|
|
489
|
+
message: "Faltan campos requeridos: name y email son obligatorios",
|
|
490
|
+
error: true,
|
|
491
|
+
errorMessage: "Faltan campos requeridos: name y email son obligatorios"
|
|
492
|
+
};
|
|
493
|
+
}
|
|
494
|
+
if (!params.items || !Array.isArray(params.items) || params.items.length === 0) {
|
|
495
|
+
return {
|
|
496
|
+
message: "Se requiere al menos un item en la orden",
|
|
497
|
+
error: true,
|
|
498
|
+
errorMessage: "Se requiere al menos un item en la orden"
|
|
499
|
+
};
|
|
500
|
+
}
|
|
501
|
+
if (params.payment_method && params.payment_method !== "cash" && params.payment_method !== "transfer") {
|
|
502
|
+
return {
|
|
503
|
+
message: "M\xE9todo de pago no v\xE1lido",
|
|
504
|
+
error: true,
|
|
505
|
+
errorMessage: "M\xE9todo de pago no v\xE1lido"
|
|
506
|
+
};
|
|
507
|
+
}
|
|
508
|
+
for (const item of params.items) {
|
|
509
|
+
if (!item.id || !item.quantity || item.quantity <= 0) {
|
|
510
|
+
return {
|
|
511
|
+
message: "Cada item debe tener un id v\xE1lido y una cantidad mayor a 0",
|
|
512
|
+
error: true,
|
|
513
|
+
errorMessage: "Cada item debe tener un id v\xE1lido y una cantidad mayor a 0"
|
|
514
|
+
};
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
try {
|
|
518
|
+
const response = await this.client.post(
|
|
519
|
+
"/api/orders/create-ecommerce-order",
|
|
520
|
+
params
|
|
435
521
|
);
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
console.error(
|
|
444
|
-
"\u274C [DEBUG] getCategories - Error en la respuesta:",
|
|
445
|
-
result.errorMessage
|
|
446
|
-
);
|
|
522
|
+
if (response.status === 200) {
|
|
523
|
+
return {
|
|
524
|
+
message: response.data.message || "Orden creada exitosamente",
|
|
525
|
+
order_id: response.data.order_id,
|
|
526
|
+
error: false,
|
|
527
|
+
errorMessage: null
|
|
528
|
+
};
|
|
447
529
|
} else {
|
|
448
|
-
|
|
530
|
+
return {
|
|
531
|
+
message: response.data.message || "Error al crear la orden",
|
|
532
|
+
error: true,
|
|
533
|
+
errorMessage: response.data.message || "Error al crear la orden"
|
|
534
|
+
};
|
|
449
535
|
}
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
errorMessage
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
536
|
+
} catch (error) {
|
|
537
|
+
let errorMessage = "Error desconocido";
|
|
538
|
+
if (error instanceof AxiosError) {
|
|
539
|
+
const status = error.response?.status;
|
|
540
|
+
const responseMessage = error.response?.data?.message;
|
|
541
|
+
if (status === 400) {
|
|
542
|
+
errorMessage = responseMessage || "Datos de entrada inv\xE1lidos";
|
|
543
|
+
} else if (status === 401) {
|
|
544
|
+
errorMessage = "API Key inv\xE1lida o expirada";
|
|
545
|
+
} else if (status === 404) {
|
|
546
|
+
errorMessage = "Endpoint no encontrado";
|
|
547
|
+
} else if (status && status >= 500) {
|
|
548
|
+
errorMessage = "Error del servidor CMS";
|
|
549
|
+
} else {
|
|
550
|
+
errorMessage = responseMessage || `Error de conexi\xF3n: ${error.message}`;
|
|
551
|
+
}
|
|
552
|
+
} else if (error instanceof Error) {
|
|
553
|
+
errorMessage = error.message;
|
|
554
|
+
}
|
|
555
|
+
return {
|
|
556
|
+
message: errorMessage,
|
|
557
|
+
error: true,
|
|
558
|
+
errorMessage
|
|
559
|
+
};
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
async executeCustomQuery(params) {
|
|
563
|
+
if (!this.baseURL || !this.apiKey) {
|
|
564
|
+
return {
|
|
565
|
+
data: null,
|
|
566
|
+
error: true,
|
|
567
|
+
errorMessage: "SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes."
|
|
568
|
+
};
|
|
569
|
+
}
|
|
570
|
+
if (!params.query || typeof params.query !== "string" || params.query.trim() === "") {
|
|
571
|
+
return {
|
|
572
|
+
data: null,
|
|
573
|
+
error: true,
|
|
574
|
+
errorMessage: "Se requiere un query GraphQL v\xE1lido."
|
|
575
|
+
};
|
|
576
|
+
}
|
|
577
|
+
try {
|
|
578
|
+
const response = await this.client.post("/api/graphql", {
|
|
579
|
+
query: params.query,
|
|
580
|
+
variables: params.variables || {}
|
|
471
581
|
});
|
|
472
|
-
if (
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
582
|
+
if (response.data.errors && response.data.errors.length > 0) {
|
|
583
|
+
return {
|
|
584
|
+
data: response.data.data || null,
|
|
585
|
+
errors: response.data.errors,
|
|
586
|
+
error: true,
|
|
587
|
+
errorMessage: `GraphQL Errors: ${response.data.errors.map((err) => err.message).join(", ")}`
|
|
588
|
+
};
|
|
479
589
|
}
|
|
480
|
-
return
|
|
590
|
+
return {
|
|
591
|
+
data: response.data.data,
|
|
592
|
+
error: false,
|
|
593
|
+
errorMessage: null
|
|
594
|
+
};
|
|
595
|
+
} catch (error) {
|
|
596
|
+
let errorMessage = "Error desconocido";
|
|
597
|
+
if (error instanceof AxiosError) {
|
|
598
|
+
const status = error.response?.status;
|
|
599
|
+
if (status === 401) {
|
|
600
|
+
errorMessage = "API Key inv\xE1lida o expirada";
|
|
601
|
+
} else if (status === 404) {
|
|
602
|
+
errorMessage = "Endpoint GraphQL no encontrado";
|
|
603
|
+
} else if (status === 400) {
|
|
604
|
+
errorMessage = "Query GraphQL inv\xE1lido o malformado";
|
|
605
|
+
} else if (status && status >= 500) {
|
|
606
|
+
errorMessage = "Error del servidor CMS";
|
|
607
|
+
} else {
|
|
608
|
+
errorMessage = `Error de conexi\xF3n: ${error.message}`;
|
|
609
|
+
}
|
|
610
|
+
} else if (error instanceof Error) {
|
|
611
|
+
errorMessage = error.message;
|
|
612
|
+
}
|
|
613
|
+
return {
|
|
614
|
+
data: null,
|
|
615
|
+
error: true,
|
|
616
|
+
errorMessage
|
|
617
|
+
};
|
|
481
618
|
}
|
|
482
|
-
}
|
|
619
|
+
}
|
|
483
620
|
};
|
|
484
|
-
var pakentoCMSAPI =
|
|
621
|
+
var pakentoCMSAPI = new PakentoCMSAPI();
|
|
485
622
|
export {
|
|
486
623
|
pakentoCMSAPI
|
|
487
624
|
};
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/services/api.ts","../src/index.ts"],"sourcesContent":["import axios, { AxiosInstance, AxiosError } from \"axios\";\nimport type {\n GetItemsParams,\n GetCategoriesParams,\n GetBrandsParams,\n ItemsApiResponse,\n CategoriesApiResponse,\n BrandsApiResponse,\n ItemsRawResponse,\n CategoriesRawResponse,\n BrandsRawResponse,\n} from \"../types\";\n\nclass PakentoCMSAPIBase {\n private client: AxiosInstance;\n private baseURL: string;\n private apiKey: string;\n\n constructor() {\n this.baseURL = process.env.PAKENTO_CMS_BASE_URL || \"\";\n this.apiKey = process.env.PAKENTO_API_KEY || \"\";\n\n if (!this.baseURL || !this.apiKey) {\n /*\n * No lanzamos excepciones en el constructor para evitar errores durante el build.\n * Las validaciones se harán justo antes de ejecutar una petición.\n */\n console.warn(\n \"[PakentoSDK] Variables de entorno PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes. Se validarán al hacer la petición.\"\n );\n }\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 // Interceptor para imprimir las URLs de las llamadas a la API\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) => {\n return Promise.reject(error);\n }\n );\n }\n\n async getItems(params: GetItemsParams = {}): Promise<ItemsApiResponse> {\n // Validar configuración antes de continuar\n if (!this.baseURL || !this.apiKey) {\n return {\n data: null,\n items: [],\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 try {\n // Construir el objeto where solo si se envían parámetros\n const whereConditions: any = {};\n\n if (params.where?.item_category_id?.equals) {\n whereConditions.item_category_id = {\n equals: params.where.item_category_id.equals,\n };\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\n if (params.where?.brand_id?.equals) {\n whereConditions.brand_id = {\n equals: params.where.brand_id.equals,\n };\n }\n\n if (params.where?.id?.equals) {\n whereConditions.id = {\n equals: params.where.id.equals,\n };\n }\n\n // Solo incluir where si tiene condiciones\n const variables: any = {\n onlyOffers: params.onlyOffers,\n onlyEcommerce: params.onlyEcommerce,\n limit: params.limit,\n page: params.page,\n search: params.search,\n sort: params.sort,\n minPrice: params.minPrice,\n maxPrice: params.maxPrice,\n };\n\n // Solo agregar where si tiene condiciones\n if (Object.keys(whereConditions).length > 0) {\n variables.where = whereConditions;\n }\n\n const query = `\n query GetEcommerceItems(\n $where: EcommerceItemsWhere\n $onlyOffers: Boolean\n $onlyEcommerce: 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 onlyEcommerce: $onlyEcommerce\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 old_price\n currency_prefix\n description\n price_text\n price\n brand_id\n brand_name\n cover_image_url\n cover_image_thumbnail_url\n item_category_name\n item_category_id\n images {\n alt\n url\n thumbnail_url\n }\n }\n }\n }\n `;\n\n const response = await this.client.post(\"/api/graphql\", {\n query,\n variables,\n });\n\n if (response.data.errors) {\n const errorMessage = `GraphQL Error: ${response.data.errors[0].message}`;\n return {\n data: null,\n items: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n\n const rawData: ItemsRawResponse = response.data.data.GetEcommerceItems;\n\n return {\n data: rawData,\n items: rawData.docs,\n totalDocs: rawData.totalDocs,\n totalPages: rawData.totalPages,\n prevPage: rawData.prevPage,\n nextPage: rawData.nextPage,\n error: false,\n errorMessage: null,\n };\n } catch (error) {\n let errorMessage = \"Error desconocido\";\n\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n if (status === 401) {\n errorMessage = \"API Key inválida o expirada\";\n } else if (status === 404) {\n errorMessage = \"Endpoint no encontrado\";\n } else if (status && status >= 500) {\n errorMessage = \"Error del servidor CMS\";\n } else {\n errorMessage = `Error de conexión: ${error.message}`;\n }\n } else if (error instanceof Error) {\n errorMessage = error.message;\n }\n\n return {\n data: null,\n items: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n }\n\n async getCategories(\n params: GetCategoriesParams = {}\n ): Promise<CategoriesApiResponse> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: null,\n categories: [],\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n try {\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 response = await this.client.post(\"/api/graphql\", {\n query,\n variables: params,\n });\n\n if (response.data.errors) {\n const errorMessage = `GraphQL Error: ${response.data.errors[0].message}`;\n return {\n data: null,\n categories: [],\n error: true,\n errorMessage,\n };\n }\n\n const rawData: CategoriesRawResponse =\n response.data.data.GetEcommerceCategories;\n\n return {\n data: rawData.docs,\n categories: rawData.docs,\n error: false,\n errorMessage: null,\n };\n } catch (error) {\n let errorMessage = \"Error desconocido\";\n\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n if (status === 401) {\n errorMessage = \"API Key inválida o expirada\";\n } else if (status === 404) {\n errorMessage = \"Endpoint no encontrado\";\n } else if (status && status >= 500) {\n errorMessage = \"Error del servidor CMS\";\n } else {\n errorMessage = `Error de conexión: ${error.message}`;\n }\n } else if (error instanceof Error) {\n errorMessage = error.message;\n }\n\n return {\n data: null,\n categories: [],\n error: true,\n errorMessage,\n };\n }\n }\n\n async getBrands(params: GetBrandsParams = {}): Promise<BrandsApiResponse> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: null,\n brands: [],\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n nextPage: 0,\n offset: 0,\n page: 0,\n pagingCounter: 0,\n prevPage: 0,\n totalDocs: 0,\n totalPages: 0,\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n try {\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 docs {\n id\n name\n description\n items_count\n image_url\n image_thumbnail_url\n image_alt\n }\n hasNextPage\n hasPrevPage\n limit\n nextPage\n offset\n page\n pagingCounter\n prevPage\n totalDocs\n totalPages\n }\n }\n `;\n\n const response = await this.client.post(\"/api/graphql\", {\n query,\n variables: params,\n });\n\n if (response.data.errors) {\n const errorMessage = `GraphQL Error: ${response.data.errors[0].message}`;\n return {\n data: null,\n brands: [],\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n nextPage: 0,\n offset: 0,\n page: 0,\n pagingCounter: 0,\n prevPage: 0,\n totalDocs: 0,\n totalPages: 0,\n error: true,\n errorMessage,\n };\n }\n\n const rawData: BrandsRawResponse = response.data.data.GetEcommerceBrands;\n\n return {\n data: rawData,\n brands: rawData.docs,\n hasNextPage: rawData.hasNextPage,\n hasPrevPage: rawData.hasPrevPage,\n limit: rawData.limit,\n nextPage: rawData.nextPage,\n offset: rawData.offset,\n page: rawData.page,\n pagingCounter: rawData.pagingCounter,\n prevPage: rawData.prevPage,\n totalDocs: rawData.totalDocs,\n totalPages: rawData.totalPages,\n error: false,\n errorMessage: null,\n };\n } catch (error) {\n let errorMessage = \"Error desconocido\";\n\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n if (status === 401) {\n errorMessage = \"API Key inválida o expirada\";\n } else if (status === 404) {\n errorMessage = \"Endpoint no encontrado\";\n } else if (status && status >= 500) {\n errorMessage = \"Error del servidor CMS\";\n } else {\n errorMessage = `Error de conexión: ${error.message}`;\n }\n } else if (error instanceof Error) {\n errorMessage = error.message;\n }\n\n return {\n data: null,\n brands: [],\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n nextPage: 0,\n offset: 0,\n page: 0,\n pagingCounter: 0,\n prevPage: 0,\n totalDocs: 0,\n totalPages: 0,\n error: true,\n errorMessage,\n };\n }\n }\n}\n\nexport const pakentoCMSAPIBase = new PakentoCMSAPIBase();\n","// Services\nimport { pakentoCMSAPIBase } from \"./services/api\";\n\n// Crear un wrapper con logs de debug\nconst createDebugWrapper = (api: typeof pakentoCMSAPIBase) => {\n return {\n getItems: async (params: any = {}) => {\n console.log(\n \"🔍 [DEBUG] getItems - Parámetros enviados:\",\n JSON.stringify(params, null, 2)\n );\n console.log(\"🔍 [DEBUG] getItems - Iniciando llamada a la API...\");\n\n const startTime = Date.now();\n const result = await api.getItems(params);\n const endTime = Date.now();\n\n console.log(\n \"🔍 [DEBUG] getItems - Tiempo de respuesta:\",\n `${endTime - startTime}ms`\n );\n console.log(\"🔍 [DEBUG] getItems - Respuesta recibida:\", {\n error: result.error,\n errorMessage: result.errorMessage,\n totalDocs: result.totalDocs,\n itemsCount: result.items?.length || 0,\n hasData: !!result.data,\n });\n\n if (result.error) {\n console.error(\n \"❌ [DEBUG] getItems - Error en la respuesta:\",\n result.errorMessage\n );\n } else {\n console.log(\"✅ [DEBUG] getItems - Llamada exitosa\");\n }\n\n return result;\n },\n\n getCategories: async (params: any = {}) => {\n console.log(\n \"🔍 [DEBUG] getCategories - Parámetros enviados:\",\n JSON.stringify(params, null, 2)\n );\n console.log(\"🔍 [DEBUG] getCategories - Iniciando llamada a la API...\");\n\n const startTime = Date.now();\n const result = await api.getCategories(params);\n const endTime = Date.now();\n\n console.log(\n \"🔍 [DEBUG] getCategories - Tiempo de respuesta:\",\n `${endTime - startTime}ms`\n );\n console.log(\"🔍 [DEBUG] getCategories - Respuesta recibida:\", {\n error: result.error,\n errorMessage: result.errorMessage,\n categoriesCount: result.categories?.length || 0,\n hasData: !!result.data,\n });\n\n if (result.error) {\n console.error(\n \"❌ [DEBUG] getCategories - Error en la respuesta:\",\n result.errorMessage\n );\n } else {\n console.log(\"✅ [DEBUG] getCategories - Llamada exitosa\");\n }\n\n return result;\n },\n\n getBrands: async (params: any = {}) => {\n console.log(\n \"🔍 [DEBUG] getBrands - Parámetros enviados:\",\n JSON.stringify(params, null, 2)\n );\n console.log(\"🔍 [DEBUG] getBrands - Iniciando llamada a la API...\");\n\n const startTime = Date.now();\n const result = await api.getBrands(params);\n const endTime = Date.now();\n\n console.log(\n \"🔍 [DEBUG] getBrands - Tiempo de respuesta:\",\n `${endTime - startTime}ms`\n );\n console.log(\"🔍 [DEBUG] getBrands - Respuesta recibida:\", {\n error: result.error,\n errorMessage: result.errorMessage,\n totalDocs: result.totalDocs,\n brandsCount: result.brands?.length || 0,\n hasData: !!result.data,\n });\n\n if (result.error) {\n console.error(\n \"❌ [DEBUG] getBrands - Error en la respuesta:\",\n result.errorMessage\n );\n } else {\n console.log(\"✅ [DEBUG] getBrands - Llamada exitosa\");\n }\n\n return result;\n },\n };\n};\n\n// Exportar la API con logs de debug\nexport const pakentoCMSAPI = createDebugWrapper(pakentoCMSAPIBase);\n\n// Types\nexport type {\n // Base types\n Item,\n ItemImage,\n Category,\n Brand,\n\n // GraphQL Where conditions\n WhereEquals,\n ItemsWhere,\n CategoriesWhere,\n\n // API Parameters\n GetItemsParams,\n GetCategoriesParams,\n GetBrandsParams,\n\n // Raw API Response types\n ItemsRawResponse,\n CategoriesRawResponse,\n BrandsRawResponse,\n\n // API Response types with error handling\n ItemsApiResponse,\n CategoriesApiResponse,\n BrandsApiResponse,\n} from \"./types\";\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/services/api.ts"],"sourcesContent":["import axios, { AxiosInstance, AxiosError } from \"axios\";\nimport type {\n GetItemsParams,\n GetCategoriesParams,\n GetBrandsParams,\n GetEntityParams,\n CreateEcommerceOrderParams,\n CustomGraphQLParams,\n ItemsApiResponse,\n CategoriesApiResponse,\n BrandsApiResponse,\n EntityApiResponse,\n CreateEcommerceOrderResponse,\n CustomGraphQLResponse,\n ItemsRawResponse,\n CategoriesRawResponse,\n BrandsRawResponse,\n ItemsWhere,\n} from \"../types\";\n\nclass PakentoCMSAPI {\n private client: AxiosInstance;\n private baseURL: string;\n private apiKey: string;\n\n constructor() {\n this.baseURL = process.env.PAKENTO_CMS_BASE_URL || \"\";\n this.apiKey = process.env.PAKENTO_API_KEY || \"\";\n\n if (!this.baseURL || !this.apiKey) {\n /*\n * No lanzamos excepciones en el constructor para evitar errores durante el build.\n * Las validaciones se harán justo antes de ejecutar una petición.\n */\n console.warn(\n \"[PakentoSDK] Variables de entorno PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes. Se validarán al hacer la petición.\"\n );\n }\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 // Interceptor para imprimir las URLs de las llamadas a la API\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) => {\n return Promise.reject(error);\n }\n );\n }\n\n async getItems(params: GetItemsParams = {}): Promise<ItemsApiResponse> {\n // Validar configuración antes de continuar\n if (!this.baseURL || !this.apiKey) {\n return {\n data: null,\n items: [],\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 try {\n // Construir el objeto where solo si se envían parámetros\n const whereConditions: ItemsWhere = {};\n\n if (params.where?.item_category_id?.equals) {\n whereConditions.item_category_id = {\n equals: params.where.item_category_id.equals,\n };\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\n if (params.where?.brand_id?.equals) {\n whereConditions.brand_id = {\n equals: params.where.brand_id.equals,\n };\n }\n\n if (params.where?.id?.equals) {\n whereConditions.id = {\n equals: params.where.id.equals,\n };\n }\n\n // Solo incluir where si tiene condiciones\n const variables: GetItemsParams = {\n onlyOffers: params.onlyOffers,\n onlyEcommerce: params.onlyEcommerce,\n limit: params.limit,\n page: params.page,\n search: params.search,\n sort: params.sort,\n minPrice: params.minPrice,\n maxPrice: params.maxPrice,\n };\n\n // Solo agregar where si tiene condiciones\n if (Object.keys(whereConditions).length > 0) {\n variables.where = whereConditions;\n }\n\n const query = `\n query GetEcommerceItems(\n $where: EcommerceItemsWhere\n $onlyOffers: Boolean\n $onlyEcommerce: 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 onlyEcommerce: $onlyEcommerce\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 old_price\n currency_prefix\n description\n price_text\n price\n brand_id\n brand_name\n cover_image_url\n cover_image_thumbnail_url\n item_category_name\n item_category_id\n images {\n alt\n url\n thumbnail_url\n }\n }\n }\n }\n `;\n\n const response = await this.client.post(\"/api/graphql\", {\n query,\n variables,\n });\n\n if (response.data.errors) {\n const errorMessage = `GraphQL Error: ${response.data.errors[0].message}`;\n return {\n data: null,\n items: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n\n const rawData: ItemsRawResponse = response.data.data.GetEcommerceItems;\n\n return {\n data: rawData,\n items: rawData.docs,\n totalDocs: rawData.totalDocs,\n totalPages: rawData.totalPages,\n prevPage: rawData.prevPage,\n nextPage: rawData.nextPage,\n error: false,\n errorMessage: null,\n };\n } catch (error) {\n let errorMessage = \"Error desconocido\";\n\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n if (status === 401) {\n errorMessage = \"API Key inválida o expirada\";\n } else if (status === 404) {\n errorMessage = \"Endpoint no encontrado\";\n } else if (status && status >= 500) {\n errorMessage = \"Error del servidor CMS\";\n } else {\n errorMessage = `Error de conexión: ${error.message}`;\n }\n } else if (error instanceof Error) {\n errorMessage = error.message;\n }\n\n return {\n data: null,\n items: [],\n totalDocs: 0,\n totalPages: 0,\n prevPage: null,\n nextPage: null,\n error: true,\n errorMessage,\n };\n }\n }\n\n async getCategories(\n params: GetCategoriesParams = {}\n ): Promise<CategoriesApiResponse> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: null,\n categories: [],\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n try {\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 response = await this.client.post(\"/api/graphql\", {\n query,\n variables: params,\n });\n\n if (response.data.errors) {\n const errorMessage = `GraphQL Error: ${response.data.errors[0].message}`;\n return {\n data: null,\n categories: [],\n error: true,\n errorMessage,\n };\n }\n\n const rawData: CategoriesRawResponse =\n response.data.data.GetEcommerceCategories;\n\n return {\n data: rawData.docs,\n categories: rawData.docs,\n error: false,\n errorMessage: null,\n };\n } catch (error) {\n let errorMessage = \"Error desconocido\";\n\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n if (status === 401) {\n errorMessage = \"API Key inválida o expirada\";\n } else if (status === 404) {\n errorMessage = \"Endpoint no encontrado\";\n } else if (status && status >= 500) {\n errorMessage = \"Error del servidor CMS\";\n } else {\n errorMessage = `Error de conexión: ${error.message}`;\n }\n } else if (error instanceof Error) {\n errorMessage = error.message;\n }\n\n return {\n data: null,\n categories: [],\n error: true,\n errorMessage,\n };\n }\n }\n\n async getBrands(params: GetBrandsParams = {}): Promise<BrandsApiResponse> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: null,\n brands: [],\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n nextPage: 0,\n offset: 0,\n page: 0,\n pagingCounter: 0,\n prevPage: 0,\n totalDocs: 0,\n totalPages: 0,\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n try {\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 docs {\n id\n name\n description\n items_count\n image_url\n image_thumbnail_url\n image_alt\n }\n hasNextPage\n hasPrevPage\n limit\n nextPage\n offset\n page\n pagingCounter\n prevPage\n totalDocs\n totalPages\n }\n }\n `;\n\n const response = await this.client.post(\"/api/graphql\", {\n query,\n variables: params,\n });\n\n if (response.data.errors) {\n const errorMessage = `GraphQL Error: ${response.data.errors[0].message}`;\n return {\n data: null,\n brands: [],\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n nextPage: 0,\n offset: 0,\n page: 0,\n pagingCounter: 0,\n prevPage: 0,\n totalDocs: 0,\n totalPages: 0,\n error: true,\n errorMessage,\n };\n }\n\n const rawData: BrandsRawResponse = response.data.data.GetEcommerceBrands;\n\n return {\n data: rawData,\n brands: rawData.docs,\n hasNextPage: rawData.hasNextPage,\n hasPrevPage: rawData.hasPrevPage,\n limit: rawData.limit,\n nextPage: rawData.nextPage,\n offset: rawData.offset,\n page: rawData.page,\n pagingCounter: rawData.pagingCounter,\n prevPage: rawData.prevPage,\n totalDocs: rawData.totalDocs,\n totalPages: rawData.totalPages,\n error: false,\n errorMessage: null,\n };\n } catch (error) {\n let errorMessage = \"Error desconocido\";\n\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n if (status === 401) {\n errorMessage = \"API Key inválida o expirada\";\n } else if (status === 404) {\n errorMessage = \"Endpoint no encontrado\";\n } else if (status && status >= 500) {\n errorMessage = \"Error del servidor CMS\";\n } else {\n errorMessage = `Error de conexión: ${error.message}`;\n }\n } else if (error instanceof Error) {\n errorMessage = error.message;\n }\n\n return {\n data: null,\n brands: [],\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n nextPage: 0,\n offset: 0,\n page: 0,\n pagingCounter: 0,\n prevPage: 0,\n totalDocs: 0,\n totalPages: 0,\n error: true,\n errorMessage,\n };\n }\n }\n\n async getEntity(params: GetEntityParams = {}): Promise<EntityApiResponse> {\n if (!this.baseURL || !this.apiKey) {\n return {\n data: null,\n entity: null,\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n try {\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_alt\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 response = await this.client.post(\"/api/graphql\", {\n query,\n variables: params,\n });\n\n if (response.data.errors) {\n const errorMessage = `GraphQL Error: ${response.data.errors[0].message}`;\n return {\n data: null,\n entity: null,\n error: true,\n errorMessage,\n };\n }\n\n const entityData = response.data.data.GetEntity;\n\n return {\n data: entityData,\n entity: entityData,\n error: false,\n errorMessage: null,\n };\n } catch (error) {\n let errorMessage = \"Error desconocido\";\n\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n if (status === 401) {\n errorMessage = \"API Key inválida o expirada\";\n } else if (status === 404) {\n errorMessage = \"Endpoint no encontrado\";\n } else if (status && status >= 500) {\n errorMessage = \"Error del servidor CMS\";\n } else {\n errorMessage = `Error de conexión: ${error.message}`;\n }\n } else if (error instanceof Error) {\n errorMessage = error.message;\n }\n\n return {\n data: null,\n entity: null,\n error: true,\n errorMessage,\n };\n }\n }\n\n async createEcommerceOrder(\n params: CreateEcommerceOrderParams\n ): Promise<CreateEcommerceOrderResponse> {\n if (!this.baseURL || !this.apiKey) {\n return {\n message:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n error: true,\n errorMessage:\n \"SDK no configurado: PAKENTO_CMS_BASE_URL o PAKENTO_API_KEY faltantes.\",\n };\n }\n\n // Validación de parámetros requeridos\n if (!params.name || !params.email) {\n return {\n message: \"Faltan campos requeridos: name y email son obligatorios\",\n error: true,\n errorMessage: \"Faltan campos requeridos: name y email son obligatorios\",\n };\n }\n\n if (\n !params.items ||\n !Array.isArray(params.items) ||\n params.items.length === 0\n ) {\n return {\n message: \"Se requiere al menos un item en la orden\",\n error: true,\n errorMessage: \"Se requiere al menos un item en la orden\",\n };\n }\n\n if (\n params.payment_method &&\n params.payment_method !== \"cash\" &&\n params.payment_method !== \"transfer\"\n ) {\n return {\n message: \"Método de pago no válido\",\n error: true,\n errorMessage: \"Método de pago no válido\",\n };\n }\n\n // Validar estructura de items\n for (const item of params.items) {\n if (!item.id || !item.quantity || item.quantity <= 0) {\n return {\n message: \"Cada item debe tener un id válido y una cantidad mayor a 0\",\n error: true,\n errorMessage:\n \"Cada item debe tener un id válido y una cantidad mayor a 0\",\n };\n }\n }\n\n try {\n const response = await this.client.post(\n \"/api/orders/create-ecommerce-order\",\n params\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 return {\n message: response.data.message || \"Error al crear la orden\",\n error: true,\n errorMessage: response.data.message || \"Error al crear la orden\",\n };\n }\n } catch (error) {\n let errorMessage = \"Error desconocido\";\n\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n const responseMessage = error.response?.data?.message;\n\n if (status === 400) {\n errorMessage = responseMessage || \"Datos de entrada inválidos\";\n } else if (status === 401) {\n errorMessage = \"API Key inválida o expirada\";\n } else if (status === 404) {\n errorMessage = \"Endpoint no encontrado\";\n } else if (status && status >= 500) {\n errorMessage = \"Error del servidor CMS\";\n } else {\n errorMessage =\n responseMessage || `Error de conexión: ${error.message}`;\n }\n } else if (error instanceof Error) {\n errorMessage = error.message;\n }\n\n return {\n message: errorMessage,\n error: true,\n errorMessage,\n };\n }\n }\n\n async executeCustomQuery(\n params: CustomGraphQLParams\n ): Promise<CustomGraphQLResponse> {\n // Validar configuración antes de continuar\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 // Validar que se proporcione un query\n if (\n !params.query ||\n typeof params.query !== \"string\" ||\n params.query.trim() === \"\"\n ) {\n return {\n data: null,\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 // Si hay errores de GraphQL, los incluimos en la respuesta pero no como error fatal\n if (response.data.errors && response.data.errors.length > 0) {\n return {\n data: response.data.data || null,\n errors: response.data.errors,\n error: true,\n errorMessage: `GraphQL Errors: ${response.data.errors\n .map((err: unknown) => (err as Error).message)\n .join(\", \")}`,\n };\n }\n\n return {\n data: response.data.data,\n error: false,\n errorMessage: null,\n };\n } catch (error) {\n let errorMessage = \"Error desconocido\";\n\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n if (status === 401) {\n errorMessage = \"API Key inválida o expirada\";\n } else if (status === 404) {\n errorMessage = \"Endpoint GraphQL no encontrado\";\n } else if (status === 400) {\n errorMessage = \"Query GraphQL inválido o malformado\";\n } else if (status && status >= 500) {\n errorMessage = \"Error del servidor CMS\";\n } else {\n errorMessage = `Error de conexión: ${error.message}`;\n }\n } else if (error instanceof Error) {\n errorMessage = error.message;\n }\n\n return {\n data: null,\n error: true,\n errorMessage,\n };\n }\n }\n}\n\nexport const pakentoCMSAPI = new PakentoCMSAPI();\n"],"mappings":"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","names":[]}
|