@ecomiq/core 0.1.8 → 1.0.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/LICENSE +21 -0
- package/README.md +39 -2
- package/dist/_virtual/_rolldown/runtime-C6LprzCP.cjs +22 -0
- package/dist/api.cjs +117 -102
- package/dist/api.d.cts +33 -37
- package/dist/api.d.ts +33 -37
- package/dist/api.js +116 -100
- package/dist/client.cjs +499 -1681
- package/dist/client.d.cts +156 -15
- package/dist/client.d.ts +156 -15
- package/dist/client.js +500 -1680
- package/dist/index.cjs +333 -2108
- package/dist/index.d.cts +53 -1117
- package/dist/index.d.ts +53 -1117
- package/dist/index.js +52 -1910
- package/dist/libs/bounded-read-cache-Abmb5VnJ.js +41 -0
- package/dist/libs/bounded-read-cache-D4644LJo.cjs +41 -0
- package/dist/libs/catalog-link-key-B7l5KZsF.js +9 -0
- package/dist/libs/catalog-link-key-CZTHJBGD.cjs +9 -0
- package/dist/libs/catalog-link-key.d.cts +2 -0
- package/dist/libs/catalog-link-key.d.ts +2 -0
- package/dist/libs/graphql-_6Y8lR_Q.js +49 -0
- package/dist/libs/graphql-selection-Cj51WkJn.cjs +21 -0
- package/dist/libs/graphql-selection-H1RMh6VD.js +21 -0
- package/dist/libs/graphql-selection.d.cts +3 -0
- package/dist/libs/graphql-selection.d.ts +3 -0
- package/dist/libs/graphql-wJH7HaQU.cjs +50 -0
- package/dist/libs/graphql.d.cts +24 -0
- package/dist/libs/graphql.d.ts +24 -0
- package/dist/models/amounts-cKBCecl7.js +5 -0
- package/dist/models/amounts-lmg89eJQ.cjs +4 -0
- package/dist/models/articles-C-4JvT2Z.js +27 -0
- package/dist/models/articles-xHCXLKDK.cjs +30 -0
- package/dist/models/articles.d.cts +46 -0
- package/dist/models/articles.d.ts +46 -0
- package/dist/models/catalog-links-BzJeyBy4.js +80 -0
- package/dist/models/catalog-links-c4LADGf_.cjs +88 -0
- package/dist/models/catalog-links.d.cts +39 -0
- package/dist/models/catalog-links.d.ts +39 -0
- package/dist/models/categories-CKkJY8_P.js +42 -0
- package/dist/models/categories-DZ5i5kwi.cjs +45 -0
- package/dist/models/categories.d.cts +54 -0
- package/dist/models/categories.d.ts +54 -0
- package/dist/models/collections.cjs +13 -24
- package/dist/models/collections.d.cts +23 -56
- package/dist/models/collections.d.ts +23 -56
- package/dist/models/collections.js +12 -22
- package/dist/models/complaint-book-D5INpuI2.cjs +64 -0
- package/dist/models/complaint-book-QpQZe7Xl.js +58 -0
- package/dist/models/complaint-book.d.cts +71 -0
- package/dist/models/complaint-book.d.ts +71 -0
- package/dist/models/customer-address.cjs +39 -32
- package/dist/models/customer-address.d.cts +59 -158
- package/dist/models/customer-address.d.ts +59 -158
- package/dist/models/customer-address.js +38 -30
- package/dist/models/customer-order.cjs +181 -136
- package/dist/models/customer-order.d.cts +430 -862
- package/dist/models/customer-order.d.ts +430 -862
- package/dist/models/customer-order.js +178 -135
- package/dist/models/customer-profile.cjs +121 -112
- package/dist/models/customer-profile.d.cts +90 -175
- package/dist/models/customer-profile.d.ts +90 -175
- package/dist/models/customer-profile.js +121 -110
- package/dist/models/customer-registration-C13knqyv.js +28 -0
- package/dist/models/customer-registration-EZ0yZgGr.cjs +31 -0
- package/dist/models/customer-registration.d.cts +66 -0
- package/dist/models/customer-registration.d.ts +66 -0
- package/dist/models/customer-session-BiX0TXhO.js +41 -0
- package/dist/models/customer-session-JeQiC8Yx.cjs +45 -0
- package/dist/models/customer-session.d.cts +61 -0
- package/dist/models/customer-session.d.ts +61 -0
- package/dist/models/geo.cjs +52 -51
- package/dist/models/geo.d.cts +141 -270
- package/dist/models/geo.d.ts +141 -270
- package/dist/models/geo.js +51 -49
- package/dist/models/ids.cjs +9 -13
- package/dist/models/ids.d.cts +9 -12
- package/dist/models/ids.d.ts +9 -12
- package/dist/models/ids.js +8 -12
- package/dist/models/order-draft-CnHJ0btL.js +37 -0
- package/dist/models/order-draft-PFBZfRRR.cjs +39 -0
- package/dist/models/order-draft.d.cts +51 -0
- package/dist/models/order-draft.d.ts +51 -0
- package/dist/models/order-review--xGlZKtS.cjs +18 -0
- package/dist/models/order-review-egGeCaqB.js +17 -0
- package/dist/models/order-review.d.cts +22 -0
- package/dist/models/order-review.d.ts +22 -0
- package/dist/models/order-status-CS_OeSPY.cjs +66 -0
- package/dist/models/order-status-CgaLkU0M.js +60 -0
- package/dist/models/order-status.d.cts +298 -0
- package/dist/models/order-status.d.ts +298 -0
- package/dist/models/payment-methods--VUUZpMz.js +17 -0
- package/dist/models/payment-methods-CmK08zBM.cjs +19 -0
- package/dist/models/payment-methods.d.cts +28 -0
- package/dist/models/payment-methods.d.ts +28 -0
- package/dist/models/products.cjs +214 -200
- package/dist/models/products.d.cts +616 -1359
- package/dist/models/products.d.ts +616 -1359
- package/dist/models/products.js +210 -192
- package/dist/models/search.cjs +15 -202
- package/dist/models/search.d.cts +21 -51
- package/dist/models/search.d.ts +21 -51
- package/dist/models/search.js +14 -200
- package/dist/models/sellers.cjs +44 -0
- package/dist/models/sellers.d.cts +82 -0
- package/dist/models/sellers.d.ts +82 -0
- package/dist/models/sellers.js +38 -0
- package/dist/models/settings.cjs +205 -238
- package/dist/models/settings.d.cts +862 -6949
- package/dist/models/settings.d.ts +862 -6949
- package/dist/models/settings.js +213 -241
- package/dist/models/storefront-cart.cjs +143 -129
- package/dist/models/storefront-cart.d.cts +255 -713
- package/dist/models/storefront-cart.d.ts +255 -713
- package/dist/models/storefront-cart.js +140 -127
- package/dist/models/storefront-checkout.cjs +212 -298
- package/dist/models/storefront-checkout.d.cts +656 -2441
- package/dist/models/storefront-checkout.d.ts +656 -2441
- package/dist/models/storefront-checkout.js +208 -298
- package/dist/models/storefront-reviews.cjs +62 -226
- package/dist/models/storefront-reviews.d.cts +73 -141
- package/dist/models/storefront-reviews.d.ts +73 -141
- package/dist/models/storefront-reviews.js +59 -225
- package/dist/models/tracking-CiIAhQW0.js +33 -0
- package/dist/models/tracking-wNyzQ6Bp.cjs +36 -0
- package/dist/models/tracking.d.cts +26 -0
- package/dist/models/tracking.d.ts +26 -0
- package/dist/models/urls-B0ZODOwH.cjs +35 -0
- package/dist/models/urls-Dt_dTt4Q.js +33 -0
- package/dist/models/urls.d.cts +201 -0
- package/dist/models/urls.d.ts +201 -0
- package/dist/redirects.cjs +113 -0
- package/dist/redirects.d.cts +11 -0
- package/dist/redirects.d.ts +11 -0
- package/dist/redirects.js +108 -0
- package/dist/services/article.service-DBsOvflH.js +10 -0
- package/dist/services/article.service-zmTkbbPV.cjs +11 -0
- package/dist/services/article.service.d.cts +4 -0
- package/dist/services/article.service.d.ts +4 -0
- package/dist/services/cart.service-B0D8s6jI.cjs +37 -0
- package/dist/services/cart.service-yMCz9oQP.js +33 -0
- package/dist/services/cart.service.d.cts +527 -0
- package/dist/services/cart.service.d.ts +527 -0
- package/dist/services/catalog-link.service-BQ2d-EPX.js +8 -0
- package/dist/services/catalog-link.service-DiB-OVjn.cjs +8 -0
- package/dist/services/category.service-8tieYX2r.js +6 -0
- package/dist/services/category.service-BsSJZV2B.cjs +6 -0
- package/dist/services/checkout.service-CC-3tm2y.js +60 -0
- package/dist/services/checkout.service-CG8KrDNY.cjs +69 -0
- package/dist/services/checkout.service.d.cts +439 -0
- package/dist/services/checkout.service.d.ts +439 -0
- package/dist/services/collection.service-C4QETpuI.js +11 -0
- package/dist/services/collection.service-DHGN3rhs.cjs +12 -0
- package/dist/services/complaint-book.service-C7TxltQe.cjs +13 -0
- package/dist/services/complaint-book.service-DXiVyKdD.js +12 -0
- package/dist/services/complaint-book.service.d.cts +4 -0
- package/dist/services/complaint-book.service.d.ts +4 -0
- package/dist/services/customer-address.service-Ca4qla_R.cjs +51 -0
- package/dist/services/customer-address.service-xEThx7cQ.js +47 -0
- package/dist/services/customer-address.service.d.cts +19 -0
- package/dist/services/customer-address.service.d.ts +19 -0
- package/dist/services/customer-order.service-DLGgT0xa.cjs +54 -0
- package/dist/services/customer-order.service-qHoRBuyX.js +51 -0
- package/dist/services/customer-order.service.d.cts +34 -0
- package/dist/services/customer-order.service.d.ts +34 -0
- package/dist/services/customer-registration.service-C3BNyCHP.cjs +10 -0
- package/dist/services/customer-registration.service-CxcWD2hf.js +9 -0
- package/dist/services/customer-registration.service.d.cts +5 -0
- package/dist/services/customer-registration.service.d.ts +5 -0
- package/dist/services/customer-session.service-4YgfbWRB.js +16 -0
- package/dist/services/customer-session.service-Bd8pLC2v.cjs +19 -0
- package/dist/services/customer.service-BM0NrOxP.cjs +26 -0
- package/dist/services/customer.service-BoU6l2-R.js +25 -0
- package/dist/services/customer.service.d.cts +10 -0
- package/dist/services/customer.service.d.ts +10 -0
- package/dist/services/geo.service-C32R7N8W.js +39 -0
- package/dist/services/geo.service-JeTT3Wun.cjs +42 -0
- package/dist/services/geo.service.d.cts +10 -0
- package/dist/services/geo.service.d.ts +10 -0
- package/dist/services/layout.service-BkvLzl1g.cjs +50 -0
- package/dist/services/layout.service-DmbeMOkK.js +50 -0
- package/dist/services/layout.service.d.cts +9 -0
- package/dist/services/layout.service.d.ts +9 -0
- package/dist/services/order-draft.service-D9gy-OPr.cjs +14 -0
- package/dist/services/order-draft.service-DYPR_pcV.js +13 -0
- package/dist/services/order-draft.service.d.cts +4 -0
- package/dist/services/order-draft.service.d.ts +4 -0
- package/dist/services/order-review.service-BEr-FB6_.cjs +11 -0
- package/dist/services/order-review.service-PdBPUsxE.js +11 -0
- package/dist/services/order-review.service.d.cts +7 -0
- package/dist/services/order-review.service.d.ts +7 -0
- package/dist/services/order-status.service-Cn7dsaJo.cjs +26 -0
- package/dist/services/order-status.service-MC9hVpP-.js +23 -0
- package/dist/services/order-status.service.d.cts +16 -0
- package/dist/services/order-status.service.d.ts +16 -0
- package/dist/services/page.service-CWhWCjMQ.js +7 -0
- package/dist/services/page.service-DmCSeMiR.cjs +7 -0
- package/dist/services/page.service.d.cts +4 -0
- package/dist/services/page.service.d.ts +4 -0
- package/dist/services/payment-method.service-CEt_nB4R.cjs +7 -0
- package/dist/services/payment-method.service-CjKbAsOh.js +7 -0
- package/dist/services/payment-method.service.d.cts +4 -0
- package/dist/services/payment-method.service.d.ts +4 -0
- package/dist/services/product.service-B05Qmbuh.js +35 -0
- package/dist/services/product.service-B7OFZWB1.cjs +37 -0
- package/dist/services/product.service.d.cts +231 -0
- package/dist/services/product.service.d.ts +231 -0
- package/dist/services/review.service-CO2icjpu.cjs +46 -0
- package/dist/services/review.service-De1YkhFp.js +43 -0
- package/dist/services/review.service.d.cts +28 -0
- package/dist/services/review.service.d.ts +28 -0
- package/dist/services/search.service-Bx1zbTHJ.cjs +10 -0
- package/dist/services/search.service-DSBMhaSY.js +10 -0
- package/dist/services/search.service.d.cts +9 -0
- package/dist/services/search.service.d.ts +9 -0
- package/dist/services/seller.service-D11WHhbC.cjs +10 -0
- package/dist/services/seller.service-DUptDTv4.js +9 -0
- package/dist/services/seller.service.d.cts +42 -0
- package/dist/services/seller.service.d.ts +42 -0
- package/dist/services/tracking.service-CPK1B69N.js +11 -0
- package/dist/services/tracking.service-DqOoi8qr.cjs +11 -0
- package/dist/services/tracking.service.d.cts +7 -0
- package/dist/services/tracking.service.d.ts +7 -0
- package/dist/services/url.service-B-nC14Ue.cjs +19 -0
- package/dist/services/url.service-CLW0Tc7S.js +18 -0
- package/dist/storefront-cache-revision.cjs +23 -0
- package/dist/storefront-cache-revision.d.cts +16 -0
- package/dist/storefront-cache-revision.d.ts +16 -0
- package/dist/storefront-cache-revision.js +17 -0
- package/dist/storefront-routes.cjs +14 -0
- package/dist/storefront-routes.d.cts +11 -0
- package/dist/storefront-routes.d.ts +11 -0
- package/dist/storefront-routes.js +12 -0
- package/dist/utils-CDEC5xcY.cjs +139 -0
- package/dist/utils-DK7qa54o.js +136 -0
- package/dist/utils.d.cts +3 -0
- package/dist/utils.d.ts +3 -0
- package/dist/video-links-CbRO0m8V.js +47 -0
- package/dist/video-links-ClryQjPH.cjs +47 -0
- package/dist/video-links.d.cts +7 -0
- package/dist/video-links.d.ts +7 -0
- package/package.json +28 -11
- package/dist/api.cjs.map +0 -1
- package/dist/api.js.map +0 -1
- package/dist/client-4ZTG2RZ3.d.ts +0 -195
- package/dist/client-BpX4yR6S.d.cts +0 -195
- package/dist/client.cjs.map +0 -1
- package/dist/client.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/models/collections.cjs.map +0 -1
- package/dist/models/collections.js.map +0 -1
- package/dist/models/customer-address.cjs.map +0 -1
- package/dist/models/customer-address.js.map +0 -1
- package/dist/models/customer-order.cjs.map +0 -1
- package/dist/models/customer-order.js.map +0 -1
- package/dist/models/customer-profile.cjs.map +0 -1
- package/dist/models/customer-profile.js.map +0 -1
- package/dist/models/geo.cjs.map +0 -1
- package/dist/models/geo.js.map +0 -1
- package/dist/models/ids.cjs.map +0 -1
- package/dist/models/ids.js.map +0 -1
- package/dist/models/products.cjs.map +0 -1
- package/dist/models/products.js.map +0 -1
- package/dist/models/search.cjs.map +0 -1
- package/dist/models/search.js.map +0 -1
- package/dist/models/settings.cjs.map +0 -1
- package/dist/models/settings.js.map +0 -1
- package/dist/models/storefront-cart.cjs.map +0 -1
- package/dist/models/storefront-cart.js.map +0 -1
- package/dist/models/storefront-checkout.cjs.map +0 -1
- package/dist/models/storefront-checkout.js.map +0 -1
- package/dist/models/storefront-reviews.cjs.map +0 -1
- package/dist/models/storefront-reviews.js.map +0 -1
package/dist/client.cjs
CHANGED
|
@@ -1,1685 +1,503 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
} = options;
|
|
33
|
-
const effectiveBaseUrl = resolveApiBaseUrl(baseUrl, version);
|
|
34
|
-
async function request(method, path, schema, opts = {}) {
|
|
35
|
-
const url = new URL(path.replace(/^\//, ""), effectiveBaseUrl);
|
|
36
|
-
for (const [key, value] of Object.entries(opts.query ?? {})) {
|
|
37
|
-
if (value !== void 0) url.searchParams.set(key, String(value));
|
|
38
|
-
}
|
|
39
|
-
const controller = new AbortController();
|
|
40
|
-
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
41
|
-
if (opts.signal) opts.signal.addEventListener("abort", () => controller.abort(), { once: true });
|
|
42
|
-
const isFormData = typeof FormData !== "undefined" && opts.body instanceof FormData;
|
|
43
|
-
let response;
|
|
44
|
-
try {
|
|
45
|
-
response = await fetch(url.toString(), {
|
|
46
|
-
method,
|
|
47
|
-
headers: {
|
|
48
|
-
accept: "application/json",
|
|
49
|
-
...opts.body !== void 0 && !isFormData ? { "content-type": "application/json" } : {},
|
|
50
|
-
...baseHeaders,
|
|
51
|
-
...opts.headers
|
|
52
|
-
},
|
|
53
|
-
body: opts.body === void 0 ? void 0 : isFormData ? opts.body : JSON.stringify(opts.body),
|
|
54
|
-
signal: controller.signal
|
|
55
|
-
});
|
|
56
|
-
} catch (err) {
|
|
57
|
-
throw new ApiError(
|
|
58
|
-
err instanceof DOMException && err.name === "AbortError" ? `Timeout tras ${timeoutMs}ms: ${url}` : `No se pudo conectar con ${url}`,
|
|
59
|
-
0,
|
|
60
|
-
url.toString()
|
|
61
|
-
);
|
|
62
|
-
} finally {
|
|
63
|
-
clearTimeout(timeout);
|
|
64
|
-
}
|
|
65
|
-
if (!response.ok) {
|
|
66
|
-
const bodyText2 = await response.text().catch(() => void 0);
|
|
67
|
-
let body = bodyText2;
|
|
68
|
-
if (bodyText2) {
|
|
69
|
-
try {
|
|
70
|
-
body = JSON.parse(bodyText2);
|
|
71
|
-
} catch {
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
throw new ApiError(`${method} ${url} \u2192 ${response.status}`, response.status, url.toString(), body);
|
|
75
|
-
}
|
|
76
|
-
const bodyText = await response.text();
|
|
77
|
-
let json = null;
|
|
78
|
-
if (bodyText.trim()) {
|
|
79
|
-
try {
|
|
80
|
-
json = JSON.parse(bodyText);
|
|
81
|
-
} catch {
|
|
82
|
-
throw new ApiError(
|
|
83
|
-
`Respuesta no JSON de ${url}`,
|
|
84
|
-
response.status,
|
|
85
|
-
url.toString(),
|
|
86
|
-
bodyText
|
|
87
|
-
);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
const parsed = schema.safeParse(json);
|
|
91
|
-
if (!parsed.success) {
|
|
92
|
-
throw new ApiError(
|
|
93
|
-
`Respuesta inesperada de ${url}: ${parsed.error.issues[0]?.path.join(".")} ${parsed.error.issues[0]?.message}`,
|
|
94
|
-
response.status,
|
|
95
|
-
url.toString(),
|
|
96
|
-
json
|
|
97
|
-
);
|
|
98
|
-
}
|
|
99
|
-
return parsed.data;
|
|
100
|
-
}
|
|
101
|
-
return {
|
|
102
|
-
request,
|
|
103
|
-
get: (path, schema, opts) => request("GET", path, schema, opts),
|
|
104
|
-
post: (path, body, schema, opts) => request("POST", path, schema, { ...opts, body }),
|
|
105
|
-
postForm: (path, body, schema, opts) => request("POST", path, schema, { ...opts, body })
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
var EntityIdSchema = zod.z.union([
|
|
109
|
-
zod.z.string().uuid(),
|
|
110
|
-
zod.z.string().regex(/^\d+$/, "Expected numeric id")
|
|
111
|
-
]);
|
|
112
|
-
var NullableEntityIdSchema = EntityIdSchema.nullable();
|
|
113
|
-
var OptionalEntityIdSchema = EntityIdSchema.optional();
|
|
114
|
-
|
|
115
|
-
// src/models/collections.ts
|
|
116
|
-
var CollectionSchema = zod.z.object({
|
|
117
|
-
id: EntityIdSchema,
|
|
118
|
-
slug: zod.z.string(),
|
|
119
|
-
name: zod.z.string(),
|
|
120
|
-
description: zod.z.string().nullable().optional(),
|
|
121
|
-
imageUrl: zod.z.string().nullable().optional(),
|
|
122
|
-
type: zod.z.string(),
|
|
123
|
-
productCount: zod.z.number().optional()
|
|
124
|
-
});
|
|
125
|
-
var CollectionsSchema = zod.z.array(CollectionSchema);
|
|
126
|
-
var ProductPublicIdSchema = zod.z.union([
|
|
127
|
-
zod.z.string().regex(/^[1-9]\d*$/),
|
|
128
|
-
zod.z.number().int().safe().positive()
|
|
129
|
-
]).transform(String);
|
|
130
|
-
var ProductSummarySchema = zod.z.object({
|
|
131
|
-
id: ProductPublicIdSchema,
|
|
132
|
-
name: zod.z.string(),
|
|
133
|
-
slug: zod.z.string(),
|
|
134
|
-
productType: zod.z.string(),
|
|
135
|
-
imageUrl: zod.z.string(),
|
|
136
|
-
price: zod.z.number().nonnegative(),
|
|
137
|
-
compareAtPrice: zod.z.number().nonnegative().nullable(),
|
|
138
|
-
variantCount: zod.z.number().int().nonnegative(),
|
|
139
|
-
isAvailable: zod.z.boolean(),
|
|
140
|
-
totalInventory: zod.z.number().int().nonnegative(),
|
|
141
|
-
bundleItemsCount: zod.z.number().int().nonnegative(),
|
|
142
|
-
brand: zod.z.string(),
|
|
143
|
-
category: zod.z.string(),
|
|
144
|
-
status: zod.z.string(),
|
|
145
|
-
collections: zod.z.array(zod.z.string()),
|
|
146
|
-
tags: zod.z.array(zod.z.string())
|
|
147
|
-
});
|
|
148
|
-
var ProductSummariesSchema = zod.z.array(ProductSummarySchema);
|
|
149
|
-
var FacetItemSchema = zod.z.object({
|
|
150
|
-
value: zod.z.string(),
|
|
151
|
-
count: zod.z.number().int().nonnegative(),
|
|
152
|
-
label: zod.z.string().nullable(),
|
|
153
|
-
selected: zod.z.boolean()
|
|
154
|
-
});
|
|
155
|
-
var SearchFilterSchema = zod.z.object({
|
|
156
|
-
id: zod.z.string(),
|
|
157
|
-
label: zod.z.string(),
|
|
158
|
-
type: zod.z.enum(["list", "price_range"]),
|
|
159
|
-
values: zod.z.array(FacetItemSchema),
|
|
160
|
-
min: zod.z.number().nonnegative().nullable(),
|
|
161
|
-
max: zod.z.number().nonnegative().nullable(),
|
|
162
|
-
selectedMin: zod.z.number().nonnegative().nullable(),
|
|
163
|
-
selectedMax: zod.z.number().nonnegative().nullable()
|
|
164
|
-
});
|
|
165
|
-
var ProductsResponseSchema = zod.z.object({
|
|
166
|
-
pageIndex: zod.z.number().int().positive(),
|
|
167
|
-
pageSize: zod.z.number().int().positive().max(100),
|
|
168
|
-
totalCount: zod.z.number().int().nonnegative(),
|
|
169
|
-
totalPages: zod.z.number().int().nonnegative(),
|
|
170
|
-
products: zod.z.array(ProductSummarySchema),
|
|
171
|
-
filters: zod.z.array(SearchFilterSchema)
|
|
172
|
-
});
|
|
173
|
-
var ProductSortSchema = zod.z.enum([
|
|
174
|
-
"price_asc",
|
|
175
|
-
"price_desc",
|
|
176
|
-
"name_asc",
|
|
177
|
-
"name_desc",
|
|
178
|
-
"newest"
|
|
179
|
-
]);
|
|
180
|
-
var ProductsParamsSchema = zod.z.object({
|
|
181
|
-
page: zod.z.number().int().positive().default(1),
|
|
182
|
-
pageSize: zod.z.number().int().positive().max(100).default(24),
|
|
183
|
-
sort: ProductSortSchema.optional(),
|
|
184
|
-
sellerId: OptionalEntityIdSchema,
|
|
185
|
-
search: zod.z.string().optional(),
|
|
186
|
-
collection: zod.z.string().optional(),
|
|
187
|
-
collections: zod.z.array(zod.z.string()).optional(),
|
|
188
|
-
collectionId: ProductPublicIdSchema.optional(),
|
|
189
|
-
category: zod.z.string().optional(),
|
|
190
|
-
categories: zod.z.array(zod.z.string()).optional(),
|
|
191
|
-
brand: zod.z.string().optional(),
|
|
192
|
-
brands: zod.z.array(zod.z.string()).optional(),
|
|
193
|
-
productType: zod.z.string().optional(),
|
|
194
|
-
productTypes: zod.z.array(zod.z.string()).optional(),
|
|
195
|
-
tag: zod.z.string().optional(),
|
|
196
|
-
tags: zod.z.array(zod.z.string()).optional(),
|
|
197
|
-
filters: zod.z.array(zod.z.string()).optional(),
|
|
198
|
-
locationId: OptionalEntityIdSchema,
|
|
199
|
-
inStock: zod.z.boolean().optional(),
|
|
200
|
-
minPrice: zod.z.number().nonnegative().optional(),
|
|
201
|
-
maxPrice: zod.z.number().nonnegative().optional()
|
|
202
|
-
});
|
|
203
|
-
var ProductDetailParamsSchema = zod.z.object({
|
|
204
|
-
sellerId: OptionalEntityIdSchema
|
|
205
|
-
});
|
|
206
|
-
var RelatedProductsParamsSchema = zod.z.object({
|
|
207
|
-
productId: ProductPublicIdSchema,
|
|
208
|
-
limit: zod.z.number().int().positive().max(12).default(8),
|
|
209
|
-
sellerId: OptionalEntityIdSchema
|
|
210
|
-
});
|
|
211
|
-
var SpecItemSchema = zod.z.object({
|
|
212
|
-
key: zod.z.string(),
|
|
213
|
-
name: zod.z.string(),
|
|
214
|
-
value: zod.z.string()
|
|
215
|
-
});
|
|
216
|
-
var ProductImageSchema = zod.z.object({
|
|
217
|
-
url: zod.z.string(),
|
|
218
|
-
name: zod.z.string(),
|
|
219
|
-
order: zod.z.number().int().nonnegative()
|
|
220
|
-
});
|
|
221
|
-
var VariantItemSchema = zod.z.object({
|
|
222
|
-
id: zod.z.string().nullable(),
|
|
223
|
-
sku: zod.z.string(),
|
|
224
|
-
status: zod.z.string(),
|
|
225
|
-
price: zod.z.number().nonnegative(),
|
|
226
|
-
compareAtPrice: zod.z.number().nonnegative().nullable(),
|
|
227
|
-
quantity: zod.z.number().int().nonnegative(),
|
|
228
|
-
options: zod.z.array(SpecItemSchema),
|
|
229
|
-
images: zod.z.array(ProductImageSchema)
|
|
230
|
-
});
|
|
231
|
-
var ProductPriceTierSchema = zod.z.object({
|
|
232
|
-
variantId: zod.z.string(),
|
|
233
|
-
minQuantity: zod.z.number().int().positive(),
|
|
234
|
-
maxQuantity: zod.z.number().int().positive().nullable(),
|
|
235
|
-
unitPrice: zod.z.number().nonnegative()
|
|
236
|
-
});
|
|
237
|
-
var BundleItemSchema = zod.z.object({
|
|
238
|
-
productId: ProductPublicIdSchema,
|
|
239
|
-
variantId: ProductPublicIdSchema,
|
|
240
|
-
productName: zod.z.string(),
|
|
241
|
-
variantName: zod.z.string().nullable(),
|
|
242
|
-
sku: zod.z.string().nullable(),
|
|
243
|
-
brand: zod.z.string().nullable(),
|
|
244
|
-
imageUrl: zod.z.string().nullable(),
|
|
245
|
-
quantity: zod.z.number().int().positive(),
|
|
246
|
-
available: zod.z.number().int().nonnegative(),
|
|
247
|
-
allowBackorders: zod.z.boolean(),
|
|
248
|
-
requiresShipping: zod.z.boolean()
|
|
249
|
-
});
|
|
250
|
-
var SizeGuideMeasurementSchema = zod.z.object({
|
|
251
|
-
key: zod.z.string(),
|
|
252
|
-
name: zod.z.string(),
|
|
253
|
-
min: zod.z.number().nullable(),
|
|
254
|
-
max: zod.z.number().nullable(),
|
|
255
|
-
value: zod.z.number().nullable(),
|
|
256
|
-
description: zod.z.string().nullable()
|
|
257
|
-
});
|
|
258
|
-
var SizeGuideRowSchema = zod.z.object({
|
|
259
|
-
label: zod.z.string(),
|
|
260
|
-
sizeKey: zod.z.string(),
|
|
261
|
-
order: zod.z.number().int().nonnegative(),
|
|
262
|
-
measurements: zod.z.array(SizeGuideMeasurementSchema)
|
|
263
|
-
});
|
|
264
|
-
var SizeGuideSchema = zod.z.object({
|
|
265
|
-
id: zod.z.string(),
|
|
266
|
-
name: zod.z.string(),
|
|
267
|
-
slug: zod.z.string(),
|
|
268
|
-
description: zod.z.string().nullable(),
|
|
269
|
-
imageUrl: zod.z.string().nullable(),
|
|
270
|
-
gender: zod.z.string(),
|
|
271
|
-
measurementType: zod.z.string(),
|
|
272
|
-
unit: zod.z.string(),
|
|
273
|
-
notes: zod.z.string().nullable(),
|
|
274
|
-
rows: zod.z.array(SizeGuideRowSchema)
|
|
275
|
-
});
|
|
276
|
-
var ProductDetailSchema = zod.z.object({
|
|
277
|
-
id: ProductPublicIdSchema,
|
|
278
|
-
name: zod.z.string(),
|
|
279
|
-
slug: zod.z.string(),
|
|
280
|
-
description: zod.z.string(),
|
|
281
|
-
productType: zod.z.string(),
|
|
282
|
-
status: zod.z.string(),
|
|
283
|
-
imageUrl: zod.z.string(),
|
|
284
|
-
price: zod.z.number().nonnegative(),
|
|
285
|
-
compareAtPrice: zod.z.number().nonnegative().nullable(),
|
|
286
|
-
isAvailable: zod.z.boolean(),
|
|
287
|
-
totalInventory: zod.z.number().int().nonnegative(),
|
|
288
|
-
brand: zod.z.string(),
|
|
289
|
-
category: zod.z.string(),
|
|
290
|
-
categoryId: ProductPublicIdSchema.nullable(),
|
|
291
|
-
tags: zod.z.array(zod.z.string()),
|
|
292
|
-
specifications: zod.z.array(SpecItemSchema),
|
|
293
|
-
variants: zod.z.array(VariantItemSchema),
|
|
294
|
-
images: zod.z.array(ProductImageSchema),
|
|
295
|
-
bundleItems: zod.z.array(BundleItemSchema),
|
|
296
|
-
sizeGuide: SizeGuideSchema.nullable(),
|
|
297
|
-
priceTiers: zod.z.array(ProductPriceTierSchema),
|
|
298
|
-
createdAt: zod.z.string().datetime({ offset: true }).nullable(),
|
|
299
|
-
updatedAt: zod.z.string().datetime({ offset: true }).nullable()
|
|
300
|
-
});
|
|
301
|
-
var JsonElementSchema = zod.z.lazy(
|
|
302
|
-
() => zod.z.union([
|
|
303
|
-
zod.z.null(),
|
|
304
|
-
zod.z.boolean(),
|
|
305
|
-
zod.z.number().finite(),
|
|
306
|
-
zod.z.string(),
|
|
307
|
-
zod.z.array(JsonElementSchema),
|
|
308
|
-
zod.z.record(zod.z.string(), JsonElementSchema)
|
|
309
|
-
])
|
|
310
|
-
);
|
|
311
|
-
var DateTimeOffsetSchema = zod.z.string().datetime({ offset: true });
|
|
312
|
-
var NullableDateTimeOffsetSchema = DateTimeOffsetSchema.nullable();
|
|
313
|
-
var StoreTypeSchema = zod.z.enum([
|
|
314
|
-
"b2C",
|
|
315
|
-
"marketplace",
|
|
316
|
-
"retail",
|
|
317
|
-
"b2B",
|
|
318
|
-
"social",
|
|
319
|
-
"hub",
|
|
320
|
-
"restaurant"
|
|
321
|
-
]);
|
|
322
|
-
var StoreVisibilitySchema = zod.z.enum(["public", "private"]);
|
|
323
|
-
var StoreThemeSettingsSchema = zod.z.object({
|
|
324
|
-
name: zod.z.string().nullable(),
|
|
325
|
-
mode: zod.z.string().nullable(),
|
|
326
|
-
colors: zod.z.record(zod.z.string(), zod.z.string()),
|
|
327
|
-
fonts: zod.z.record(zod.z.string(), zod.z.string()),
|
|
328
|
-
assets: zod.z.record(zod.z.string(), zod.z.string())
|
|
329
|
-
}).strict();
|
|
330
|
-
var StoreFeatureFlagsSchema = zod.z.object({
|
|
331
|
-
flags: zod.z.record(zod.z.string(), zod.z.boolean())
|
|
332
|
-
}).strict();
|
|
333
|
-
var StoreCheckoutGeneralSettingsSchema = zod.z.object({
|
|
334
|
-
allowGuestCheckout: zod.z.boolean(),
|
|
335
|
-
identityScope: zod.z.enum(["store", "tenant", "global"]),
|
|
336
|
-
signInMethods: zod.z.array(zod.z.enum(["password", "emailOtp", "google"])),
|
|
337
|
-
useSequentialOrderNumbers: zod.z.boolean(),
|
|
338
|
-
automaticallySelectFirstAddress: zod.z.boolean(),
|
|
339
|
-
alwaysRequestCustomerAddress: zod.z.boolean(),
|
|
340
|
-
requestCustomerDateOfBirth: zod.z.boolean(),
|
|
341
|
-
automaticallySelectBestPromotion: zod.z.boolean()
|
|
342
|
-
}).strict();
|
|
343
|
-
var StoreCheckoutShippingSettingsSchema = zod.z.object({
|
|
344
|
-
showDeliveryTime: zod.z.boolean(),
|
|
345
|
-
showDeliveryTimeInDays: zod.z.boolean(),
|
|
346
|
-
useBusinessDaysForDeliveryTime: zod.z.boolean(),
|
|
347
|
-
showEstimatedDeliveryDateInThankYouAndEmails: zod.z.boolean(),
|
|
348
|
-
showOriginalShippingPriceWhenFree: zod.z.boolean()
|
|
349
|
-
}).strict();
|
|
350
|
-
var StoreCheckoutCartPageSettingsSchema = zod.z.object({
|
|
351
|
-
showShippingCostCalculation: zod.z.boolean(),
|
|
352
|
-
allowProductLinks: zod.z.boolean(),
|
|
353
|
-
redirectToCartPage: zod.z.boolean()
|
|
354
|
-
}).strict();
|
|
355
|
-
var StoreCheckoutOrderBumpSettingsSchema = zod.z.object({
|
|
356
|
-
mergeOrderBumpOrders: zod.z.boolean(),
|
|
357
|
-
allowOnlyOneAdditionalOffer: zod.z.boolean(),
|
|
358
|
-
maxVisibleOffers: zod.z.number().int()
|
|
359
|
-
}).strict();
|
|
360
|
-
var StoreCheckoutOrdersAndPaymentsSettingsSchema = zod.z.object({
|
|
361
|
-
allowPurchasesFrom: zod.z.enum(["any", "individual", "company"]),
|
|
362
|
-
creditCardDailyOrderLimitPerIp: zod.z.number().int().nullable(),
|
|
363
|
-
maximumItemsPerOrder: zod.z.number().int().nullable(),
|
|
364
|
-
deliveryNoteText: zod.z.string().nullable(),
|
|
365
|
-
boletoPaymentNoteText: zod.z.string().nullable()
|
|
366
|
-
}).strict();
|
|
367
|
-
var StoreCheckoutSettingsSchema = zod.z.object({
|
|
368
|
-
general: StoreCheckoutGeneralSettingsSchema,
|
|
369
|
-
shipping: StoreCheckoutShippingSettingsSchema,
|
|
370
|
-
cartPage: StoreCheckoutCartPageSettingsSchema,
|
|
371
|
-
orderBumps: StoreCheckoutOrderBumpSettingsSchema,
|
|
372
|
-
ordersAndPayments: StoreCheckoutOrdersAndPaymentsSettingsSchema
|
|
373
|
-
}).strict();
|
|
374
|
-
var StorefrontStoreShape = {
|
|
375
|
-
id: EntityIdSchema,
|
|
376
|
-
tenantId: EntityIdSchema,
|
|
377
|
-
sellerId: NullableEntityIdSchema,
|
|
378
|
-
type: StoreTypeSchema,
|
|
379
|
-
isActive: zod.z.boolean(),
|
|
380
|
-
name: zod.z.string(),
|
|
381
|
-
description: zod.z.string(),
|
|
382
|
-
logo: zod.z.string().nullable(),
|
|
383
|
-
icon: zod.z.string().nullable(),
|
|
384
|
-
slug: zod.z.string().nullable(),
|
|
385
|
-
domain: zod.z.string().nullable(),
|
|
386
|
-
domains: zod.z.array(zod.z.string()),
|
|
387
|
-
timeZone: zod.z.string(),
|
|
388
|
-
currency: zod.z.string(),
|
|
389
|
-
language: zod.z.string(),
|
|
390
|
-
visibility: StoreVisibilitySchema,
|
|
391
|
-
themeConfig: StoreThemeSettingsSchema,
|
|
392
|
-
featuresEnabled: StoreFeatureFlagsSchema,
|
|
393
|
-
checkoutSettings: StoreCheckoutSettingsSchema
|
|
394
|
-
};
|
|
395
|
-
var StoreModelSchema = zod.z.object(StorefrontStoreShape).strict();
|
|
396
|
-
var CmsBrandingSettingsDtoSchema = zod.z.object({
|
|
397
|
-
logoUrl: zod.z.string().nullable(),
|
|
398
|
-
logoDarkUrl: zod.z.string().nullable(),
|
|
399
|
-
faviconUrl: zod.z.string().nullable(),
|
|
400
|
-
socialImageUrl: zod.z.string().nullable()
|
|
401
|
-
}).strict();
|
|
402
|
-
var CmsSeoSettingsDtoSchema = zod.z.object({
|
|
403
|
-
siteName: zod.z.string().nullable(),
|
|
404
|
-
metaTitle: zod.z.string().nullable(),
|
|
405
|
-
metaDescription: zod.z.string().nullable(),
|
|
406
|
-
titleTemplate: zod.z.string().nullable(),
|
|
407
|
-
robotsIndex: zod.z.boolean()
|
|
408
|
-
}).strict();
|
|
409
|
-
var CmsSocialLinksDtoSchema = zod.z.object({
|
|
410
|
-
instagram: zod.z.string().nullable(),
|
|
411
|
-
facebook: zod.z.string().nullable(),
|
|
412
|
-
tiktok: zod.z.string().nullable(),
|
|
413
|
-
youtube: zod.z.string().nullable(),
|
|
414
|
-
x: zod.z.string().nullable()
|
|
415
|
-
}).strict();
|
|
416
|
-
var CmsContactSettingsDtoSchema = zod.z.object({
|
|
417
|
-
supportEmail: zod.z.string().nullable(),
|
|
418
|
-
phone: zod.z.string().nullable(),
|
|
419
|
-
whatsapp: zod.z.string().nullable(),
|
|
420
|
-
address: zod.z.string().nullable(),
|
|
421
|
-
socialLinks: CmsSocialLinksDtoSchema
|
|
422
|
-
}).strict();
|
|
423
|
-
var CmsTrackingSettingsDtoSchema = zod.z.object({
|
|
424
|
-
googleAnalyticsMeasurementId: zod.z.string().nullable(),
|
|
425
|
-
metaPixelId: zod.z.string().nullable(),
|
|
426
|
-
googleTagManagerContainerId: zod.z.string().nullable()
|
|
427
|
-
}).strict();
|
|
428
|
-
var CmsCustomScriptsDtoSchema = zod.z.object({
|
|
429
|
-
enabled: zod.z.boolean(),
|
|
430
|
-
head: zod.z.string().nullable(),
|
|
431
|
-
bodyEnd: zod.z.string().nullable()
|
|
432
|
-
}).strict();
|
|
433
|
-
var CmsSiteSettingsDtoSchema = zod.z.object({
|
|
434
|
-
themeKey: zod.z.string(),
|
|
435
|
-
branding: CmsBrandingSettingsDtoSchema,
|
|
436
|
-
seo: CmsSeoSettingsDtoSchema,
|
|
437
|
-
contact: CmsContactSettingsDtoSchema,
|
|
438
|
-
tracking: CmsTrackingSettingsDtoSchema,
|
|
439
|
-
customScripts: CmsCustomScriptsDtoSchema,
|
|
440
|
-
updatedOn: NullableDateTimeOffsetSchema
|
|
441
|
-
}).strict();
|
|
442
|
-
var CmsMenuItemSchema = zod.z.lazy(
|
|
443
|
-
() => zod.z.object({
|
|
444
|
-
label: zod.z.string(),
|
|
445
|
-
url: zod.z.string(),
|
|
446
|
-
order: zod.z.number().int(),
|
|
447
|
-
target: zod.z.string().nullable(),
|
|
448
|
-
visible: zod.z.boolean().nullable(),
|
|
449
|
-
children: zod.z.array(CmsMenuItemSchema).nullable()
|
|
450
|
-
}).strict()
|
|
451
|
-
);
|
|
452
|
-
var CmsMenuDtoSchema = zod.z.object({
|
|
453
|
-
key: zod.z.string(),
|
|
454
|
-
name: zod.z.string(),
|
|
455
|
-
items: zod.z.array(CmsMenuItemSchema)
|
|
456
|
-
}).strict();
|
|
457
|
-
var CmsBlockDtoSchema = zod.z.object({
|
|
458
|
-
id: EntityIdSchema,
|
|
459
|
-
type: zod.z.string(),
|
|
460
|
-
order: zod.z.number().int(),
|
|
461
|
-
settings: JsonElementSchema
|
|
462
|
-
}).strict();
|
|
463
|
-
var CmsSectionDtoSchema = zod.z.object({
|
|
464
|
-
id: EntityIdSchema,
|
|
465
|
-
type: zod.z.string(),
|
|
466
|
-
order: zod.z.number().int(),
|
|
467
|
-
settings: JsonElementSchema,
|
|
468
|
-
blocks: zod.z.array(CmsBlockDtoSchema)
|
|
469
|
-
}).strict();
|
|
470
|
-
var CmsContentChannelSchema = zod.z.enum(["storefront", "pos"]);
|
|
471
|
-
var CmsPageStatusSchema = zod.z.enum(["draft", "published", "archived"]);
|
|
472
|
-
var CmsPageDetailsDtoSchema = zod.z.object({
|
|
473
|
-
id: EntityIdSchema,
|
|
474
|
-
name: zod.z.string(),
|
|
475
|
-
slug: zod.z.string(),
|
|
476
|
-
channel: CmsContentChannelSchema,
|
|
477
|
-
layout: zod.z.string(),
|
|
478
|
-
version: zod.z.number().int().nullable(),
|
|
479
|
-
settings: JsonElementSchema,
|
|
480
|
-
sections: zod.z.array(CmsSectionDtoSchema),
|
|
481
|
-
status: CmsPageStatusSchema,
|
|
482
|
-
hasPublishedVersion: zod.z.boolean(),
|
|
483
|
-
publishedOn: NullableDateTimeOffsetSchema,
|
|
484
|
-
publishedBy: NullableEntityIdSchema,
|
|
485
|
-
createdOn: DateTimeOffsetSchema,
|
|
486
|
-
updatedOn: NullableDateTimeOffsetSchema,
|
|
487
|
-
createdBy: NullableEntityIdSchema,
|
|
488
|
-
updatedBy: NullableEntityIdSchema,
|
|
489
|
-
lastModifiedBy: zod.z.string().nullable()
|
|
490
|
-
}).strict();
|
|
491
|
-
var CmsSnapshotDtoSchema = zod.z.object({
|
|
492
|
-
settings: CmsSiteSettingsDtoSchema,
|
|
493
|
-
pages: zod.z.array(CmsPageDetailsDtoSchema),
|
|
494
|
-
menus: zod.z.array(CmsMenuDtoSchema)
|
|
495
|
-
}).strict();
|
|
496
|
-
var StoreSettingsSnapshotV1Schema = zod.z.object({
|
|
497
|
-
schemaVersion: zod.z.literal(1),
|
|
498
|
-
generatedAt: DateTimeOffsetSchema,
|
|
499
|
-
store: zod.z.object(StorefrontStoreShape),
|
|
500
|
-
cms: CmsSnapshotDtoSchema
|
|
501
|
-
}).strict();
|
|
502
|
-
var StoreSettingsSnapshotV2Schema = zod.z.object({
|
|
503
|
-
schemaVersion: zod.z.literal(2),
|
|
504
|
-
generatedAt: DateTimeOffsetSchema,
|
|
505
|
-
store: StoreModelSchema,
|
|
506
|
-
cms: CmsSnapshotDtoSchema
|
|
507
|
-
}).strict();
|
|
508
|
-
var StoreSettingsSnapshotDtoSchema = zod.z.discriminatedUnion(
|
|
509
|
-
"schemaVersion",
|
|
510
|
-
[StoreSettingsSnapshotV1Schema, StoreSettingsSnapshotV2Schema]
|
|
511
|
-
);
|
|
512
|
-
var StorefrontSettingsSchema = StoreSettingsSnapshotDtoSchema;
|
|
513
|
-
|
|
514
|
-
// src/services/product.service.ts
|
|
515
|
-
async function getProducts(api, params = {}) {
|
|
516
|
-
const input = ProductsParamsSchema.parse(params);
|
|
517
|
-
const query = new URLSearchParams();
|
|
518
|
-
query.set("page", String(input.page));
|
|
519
|
-
query.set("pageSize", String(input.pageSize));
|
|
520
|
-
if (input.sort) query.set("sort", input.sort);
|
|
521
|
-
if (input.sellerId) query.set("sellerId", input.sellerId);
|
|
522
|
-
if (input.search) query.set("search", input.search);
|
|
523
|
-
if (input.collection) query.set("collection", input.collection);
|
|
524
|
-
for (const collection of input.collections ?? []) {
|
|
525
|
-
query.append("collections", collection);
|
|
526
|
-
}
|
|
527
|
-
if (input.collectionId) query.set("collectionId", input.collectionId);
|
|
528
|
-
if (input.category) query.set("category", input.category);
|
|
529
|
-
for (const category of input.categories ?? []) {
|
|
530
|
-
query.append("categories", category);
|
|
531
|
-
}
|
|
532
|
-
if (input.brand) query.set("brand", input.brand);
|
|
533
|
-
for (const brand of input.brands ?? []) {
|
|
534
|
-
query.append("brands", brand);
|
|
535
|
-
}
|
|
536
|
-
if (input.productType) query.set("productType", input.productType);
|
|
537
|
-
for (const productType of input.productTypes ?? []) {
|
|
538
|
-
query.append("productTypes", productType);
|
|
539
|
-
}
|
|
540
|
-
if (input.tag) query.set("tag", input.tag);
|
|
541
|
-
for (const tag of input.tags ?? []) {
|
|
542
|
-
query.append("tags", tag);
|
|
543
|
-
}
|
|
544
|
-
for (const filter of input.filters ?? []) {
|
|
545
|
-
query.append("filters", filter);
|
|
546
|
-
}
|
|
547
|
-
if (input.locationId) query.set("locationId", input.locationId);
|
|
548
|
-
if (input.inStock !== void 0) query.set("inStock", String(input.inStock));
|
|
549
|
-
if (input.minPrice !== void 0) query.set("minPrice", String(input.minPrice));
|
|
550
|
-
if (input.maxPrice !== void 0) query.set("maxPrice", String(input.maxPrice));
|
|
551
|
-
return api.get(`products?${query.toString()}`, ProductsResponseSchema);
|
|
552
|
-
}
|
|
553
|
-
async function getProductBySlug(api, slug, params = {}) {
|
|
554
|
-
const input = ProductDetailParamsSchema.parse(params);
|
|
555
|
-
const query = new URLSearchParams();
|
|
556
|
-
if (input.sellerId) query.set("sellerId", input.sellerId);
|
|
557
|
-
const path = `products/${encodeURIComponent(slug)}`;
|
|
558
|
-
const search = query.toString();
|
|
559
|
-
if (search) {
|
|
560
|
-
return api.get(`${path}?${search}`, ProductDetailSchema);
|
|
561
|
-
}
|
|
562
|
-
return api.get(path, ProductDetailSchema);
|
|
563
|
-
}
|
|
564
|
-
async function getRelatedProducts(api, params) {
|
|
565
|
-
const input = RelatedProductsParamsSchema.parse(params);
|
|
566
|
-
return api.get(
|
|
567
|
-
`products/${encodeURIComponent(input.productId)}/related`,
|
|
568
|
-
ProductSummariesSchema,
|
|
569
|
-
{
|
|
570
|
-
query: {
|
|
571
|
-
limit: input.limit,
|
|
572
|
-
sellerId: input.sellerId
|
|
573
|
-
}
|
|
574
|
-
}
|
|
575
|
-
);
|
|
576
|
-
}
|
|
577
|
-
var ProductAutocompleteParamsSchema = zod.z.object({
|
|
578
|
-
search: zod.z.string().min(2).max(80),
|
|
579
|
-
limit: zod.z.number().int().positive().max(20).default(8),
|
|
580
|
-
sellerId: OptionalEntityIdSchema
|
|
581
|
-
});
|
|
582
|
-
var ProductSuggestionSchema = zod.z.object({
|
|
583
|
-
id: ProductPublicIdSchema,
|
|
584
|
-
name: zod.z.string(),
|
|
585
|
-
slug: zod.z.string(),
|
|
586
|
-
imageUrl: zod.z.string()
|
|
587
|
-
});
|
|
588
|
-
var ProductSuggestionsSchema = zod.z.array(ProductSuggestionSchema);
|
|
589
|
-
|
|
590
|
-
// src/services/search.service.ts
|
|
591
|
-
async function autocompleteProducts(api, params) {
|
|
592
|
-
const input = ProductAutocompleteParamsSchema.parse(params);
|
|
593
|
-
return api.get("search/autocomplete", ProductSuggestionsSchema, {
|
|
594
|
-
query: {
|
|
595
|
-
search: input.search,
|
|
596
|
-
limit: input.limit,
|
|
597
|
-
sellerId: input.sellerId
|
|
598
|
-
}
|
|
599
|
-
});
|
|
600
|
-
}
|
|
601
|
-
var StorefrontReviewSchema = zod.z.object({
|
|
602
|
-
id: ProductPublicIdSchema,
|
|
603
|
-
productId: ProductPublicIdSchema,
|
|
604
|
-
isVerifiedPurchase: zod.z.boolean(),
|
|
605
|
-
rating: zod.z.number().int().min(1).max(5),
|
|
606
|
-
title: zod.z.string().nullable(),
|
|
607
|
-
content: zod.z.string(),
|
|
608
|
-
reviewerName: zod.z.string().nullable(),
|
|
609
|
-
createdOn: zod.z.string().datetime({ offset: true })
|
|
610
|
-
});
|
|
611
|
-
var StorefrontReviewsSchema = zod.z.object({
|
|
612
|
-
data: zod.z.array(StorefrontReviewSchema),
|
|
613
|
-
hasNextPage: zod.z.boolean(),
|
|
614
|
-
nextCursor: zod.z.string().nullable(),
|
|
615
|
-
totalCount: zod.z.number().int().nonnegative().nullable()
|
|
616
|
-
});
|
|
617
|
-
var ListProductReviewsParamsSchema = zod.z.object({
|
|
618
|
-
productId: ProductPublicIdSchema,
|
|
619
|
-
limit: zod.z.number().int().min(1).max(200).optional(),
|
|
620
|
-
cursor: zod.z.string().optional(),
|
|
621
|
-
search: zod.z.string().optional(),
|
|
622
|
-
sortBy: zod.z.enum(["rating", "createdOn"]).optional(),
|
|
623
|
-
sortDirection: zod.z.enum(["asc", "desc"]).optional(),
|
|
624
|
-
rating: zod.z.number().int().min(1).max(5).optional()
|
|
625
|
-
});
|
|
626
|
-
var CreateProductReviewParamsSchema = zod.z.object({
|
|
627
|
-
productId: ProductPublicIdSchema,
|
|
628
|
-
rating: zod.z.number().int().min(1).max(5),
|
|
629
|
-
content: zod.z.string().min(1).max(4e3),
|
|
630
|
-
title: zod.z.string().max(200).optional(),
|
|
631
|
-
reviewerName: zod.z.string().min(1).max(200),
|
|
632
|
-
reviewerEmail: zod.z.string().email().max(320),
|
|
633
|
-
orderId: zod.z.number().int().safe().positive().optional()
|
|
634
|
-
});
|
|
635
|
-
|
|
636
|
-
// src/services/review.service.ts
|
|
637
|
-
async function listProductReviews(api, params) {
|
|
638
|
-
const input = ListProductReviewsParamsSchema.parse(params);
|
|
639
|
-
return api.get(
|
|
640
|
-
`products/${encodeURIComponent(input.productId)}/reviews`,
|
|
641
|
-
StorefrontReviewsSchema,
|
|
642
|
-
{
|
|
643
|
-
query: {
|
|
644
|
-
limit: input.limit,
|
|
645
|
-
cursor: input.cursor,
|
|
646
|
-
search: input.search,
|
|
647
|
-
sortBy: input.sortBy,
|
|
648
|
-
sortDirection: input.sortDirection,
|
|
649
|
-
rating: input.rating
|
|
650
|
-
}
|
|
651
|
-
}
|
|
652
|
-
);
|
|
653
|
-
}
|
|
654
|
-
async function createProductReview(api, params) {
|
|
655
|
-
const input = CreateProductReviewParamsSchema.parse(params);
|
|
656
|
-
return api.post(
|
|
657
|
-
`products/${encodeURIComponent(input.productId)}/reviews`,
|
|
658
|
-
{
|
|
659
|
-
rating: input.rating,
|
|
660
|
-
content: input.content,
|
|
661
|
-
title: input.title,
|
|
662
|
-
reviewerName: input.reviewerName,
|
|
663
|
-
reviewerEmail: input.reviewerEmail,
|
|
664
|
-
orderId: input.orderId
|
|
665
|
-
},
|
|
666
|
-
StorefrontReviewSchema
|
|
667
|
-
);
|
|
668
|
-
}
|
|
669
|
-
var StorefrontAddressSchema = zod.z.object({
|
|
670
|
-
name: zod.z.string().nullable(),
|
|
671
|
-
address1: zod.z.string(),
|
|
672
|
-
city: zod.z.string(),
|
|
673
|
-
countryCode: zod.z.string(),
|
|
674
|
-
company: zod.z.string().nullable(),
|
|
675
|
-
address2: zod.z.string().nullable(),
|
|
676
|
-
province: zod.z.string().nullable(),
|
|
677
|
-
postalCode: zod.z.string().nullable(),
|
|
678
|
-
district: zod.z.string().nullable(),
|
|
679
|
-
phone: zod.z.string().nullable(),
|
|
680
|
-
latitude: zod.z.number().nullable(),
|
|
681
|
-
longitude: zod.z.number().nullable()
|
|
682
|
-
});
|
|
683
|
-
var StorefrontCartBundleItemSchema = zod.z.object({
|
|
684
|
-
productId: zod.z.number().int().safe().nonnegative(),
|
|
685
|
-
variantId: zod.z.number().int().safe().nonnegative(),
|
|
686
|
-
productName: zod.z.string(),
|
|
687
|
-
variantName: zod.z.string().nullable(),
|
|
688
|
-
sku: zod.z.string().nullable(),
|
|
689
|
-
brand: zod.z.string().nullable(),
|
|
690
|
-
imageUrl: zod.z.string().nullable(),
|
|
691
|
-
quantity: zod.z.number().int().positive()
|
|
692
|
-
});
|
|
693
|
-
var StorefrontCartItemSchema = zod.z.object({
|
|
694
|
-
id: EntityIdSchema,
|
|
695
|
-
productId: zod.z.number().int().safe().nonnegative(),
|
|
696
|
-
title: zod.z.string(),
|
|
697
|
-
variantLabel: zod.z.string().nullable(),
|
|
698
|
-
productHandle: zod.z.string().nullable(),
|
|
699
|
-
thumbnail: zod.z.string().nullable(),
|
|
700
|
-
quantity: zod.z.number().int().positive(),
|
|
701
|
-
variantId: zod.z.number().int().safe().nonnegative(),
|
|
702
|
-
variantSku: zod.z.string().nullable(),
|
|
703
|
-
unitPrice: zod.z.number(),
|
|
704
|
-
compareAtUnitPrice: zod.z.number().nullable(),
|
|
705
|
-
bundleItems: zod.z.array(StorefrontCartBundleItemSchema)
|
|
706
|
-
});
|
|
707
|
-
var StorefrontCartShippingMethodSchema = zod.z.object({
|
|
708
|
-
id: EntityIdSchema,
|
|
709
|
-
shippingMethodId: NullableEntityIdSchema,
|
|
710
|
-
rateId: NullableEntityIdSchema,
|
|
711
|
-
name: zod.z.string(),
|
|
712
|
-
description: zod.z.string().nullable(),
|
|
713
|
-
total: zod.z.number(),
|
|
714
|
-
locationId: NullableEntityIdSchema,
|
|
715
|
-
estimatedDays: zod.z.number().int().nullable(),
|
|
716
|
-
pickupPointId: NullableEntityIdSchema,
|
|
717
|
-
scheduledDate: zod.z.string().nullable(),
|
|
718
|
-
scheduledTime: zod.z.string().nullable(),
|
|
719
|
-
serviceCode: zod.z.string().nullable(),
|
|
720
|
-
sellerId: NullableEntityIdSchema,
|
|
721
|
-
shippingProfileId: NullableEntityIdSchema
|
|
722
|
-
});
|
|
723
|
-
var StorefrontCartTotalsSchema = zod.z.object({
|
|
724
|
-
subtotal: zod.z.number(),
|
|
725
|
-
discountTotal: zod.z.number(),
|
|
726
|
-
shippingOriginalTotal: zod.z.number(),
|
|
727
|
-
shippingTotal: zod.z.number(),
|
|
728
|
-
taxTotal: zod.z.number(),
|
|
729
|
-
warrantyTotal: zod.z.number(),
|
|
730
|
-
total: zod.z.number()
|
|
731
|
-
});
|
|
732
|
-
var StorefrontCartStatusSchema = zod.z.enum([
|
|
733
|
-
"inProgress",
|
|
734
|
-
"pending",
|
|
735
|
-
"completed",
|
|
736
|
-
"abandoned",
|
|
737
|
-
"cancelled",
|
|
738
|
-
"expired",
|
|
739
|
-
"failed"
|
|
740
|
-
]);
|
|
741
|
-
var StorefrontCartSchema = zod.z.object({
|
|
742
|
-
id: EntityIdSchema,
|
|
743
|
-
cartNumber: zod.z.string(),
|
|
744
|
-
email: zod.z.string().nullable(),
|
|
745
|
-
phone: zod.z.string().nullable(),
|
|
746
|
-
firstName: zod.z.string().nullable(),
|
|
747
|
-
lastName: zod.z.string().nullable(),
|
|
748
|
-
currencyCode: zod.z.string(),
|
|
749
|
-
status: StorefrontCartStatusSchema,
|
|
750
|
-
completedAt: zod.z.string().datetime({ offset: true }).nullable(),
|
|
751
|
-
shippingAddress: StorefrontAddressSchema.nullable(),
|
|
752
|
-
billingAddress: StorefrontAddressSchema.nullable(),
|
|
753
|
-
promotionCodes: zod.z.array(zod.z.string()),
|
|
754
|
-
items: zod.z.array(StorefrontCartItemSchema),
|
|
755
|
-
shippingMethods: zod.z.array(StorefrontCartShippingMethodSchema),
|
|
756
|
-
totals: StorefrontCartTotalsSchema
|
|
757
|
-
});
|
|
758
|
-
var CreateCartParamsSchema = zod.z.object({
|
|
759
|
-
currencyCode: zod.z.string().length(3),
|
|
760
|
-
salesChannelId: zod.z.string().optional(),
|
|
761
|
-
email: zod.z.string().email().optional()
|
|
762
|
-
});
|
|
763
|
-
var GetCartParamsSchema = zod.z.object({
|
|
764
|
-
cartId: EntityIdSchema
|
|
765
|
-
});
|
|
766
|
-
var CartItemModifierSchema = zod.z.object({
|
|
767
|
-
modifierGroupId: zod.z.number().int().safe().positive(),
|
|
768
|
-
optionIds: zod.z.array(zod.z.number().int().safe().positive()).min(1)
|
|
769
|
-
});
|
|
770
|
-
var AddCartItemParamsSchema = zod.z.object({
|
|
771
|
-
cartId: EntityIdSchema,
|
|
772
|
-
variantId: zod.z.number().int().safe().positive(),
|
|
773
|
-
quantity: zod.z.number().int().positive(),
|
|
774
|
-
modifiers: zod.z.array(CartItemModifierSchema).optional()
|
|
775
|
-
});
|
|
776
|
-
var UpdateCartItemQuantityParamsSchema = zod.z.object({
|
|
777
|
-
cartId: EntityIdSchema,
|
|
778
|
-
cartItemId: EntityIdSchema,
|
|
779
|
-
quantity: zod.z.number().int().nonnegative()
|
|
780
|
-
});
|
|
781
|
-
var RemoveCartItemParamsSchema = zod.z.object({
|
|
782
|
-
cartId: EntityIdSchema,
|
|
783
|
-
cartItemId: EntityIdSchema
|
|
784
|
-
});
|
|
785
|
-
|
|
786
|
-
// src/services/cart.service.ts
|
|
787
|
-
async function createCart(api, params) {
|
|
788
|
-
const input = CreateCartParamsSchema.parse(params);
|
|
789
|
-
return api.post(
|
|
790
|
-
"carts",
|
|
791
|
-
{
|
|
792
|
-
currencyCode: input.currencyCode,
|
|
793
|
-
salesChannelId: input.salesChannelId,
|
|
794
|
-
email: input.email
|
|
795
|
-
},
|
|
796
|
-
StorefrontCartSchema
|
|
797
|
-
);
|
|
798
|
-
}
|
|
799
|
-
async function getCart(api, params) {
|
|
800
|
-
const input = GetCartParamsSchema.parse(params);
|
|
801
|
-
return api.get(
|
|
802
|
-
`carts/${encodeURIComponent(input.cartId)}`,
|
|
803
|
-
StorefrontCartSchema
|
|
804
|
-
);
|
|
805
|
-
}
|
|
806
|
-
async function addCartItem(api, params) {
|
|
807
|
-
const input = AddCartItemParamsSchema.parse(params);
|
|
808
|
-
return api.post(
|
|
809
|
-
`carts/${encodeURIComponent(input.cartId)}/items`,
|
|
810
|
-
{
|
|
811
|
-
variantId: input.variantId,
|
|
812
|
-
quantity: input.quantity,
|
|
813
|
-
modifiers: input.modifiers
|
|
814
|
-
},
|
|
815
|
-
StorefrontCartSchema
|
|
816
|
-
);
|
|
817
|
-
}
|
|
818
|
-
async function updateCartItemQuantity(api, params) {
|
|
819
|
-
const input = UpdateCartItemQuantityParamsSchema.parse(params);
|
|
820
|
-
return api.request(
|
|
821
|
-
"PATCH",
|
|
822
|
-
`carts/${encodeURIComponent(input.cartId)}/items/${encodeURIComponent(input.cartItemId)}`,
|
|
823
|
-
StorefrontCartSchema,
|
|
824
|
-
{ body: { quantity: input.quantity } }
|
|
825
|
-
);
|
|
826
|
-
}
|
|
827
|
-
async function removeCartItem(api, params) {
|
|
828
|
-
const input = RemoveCartItemParamsSchema.parse(params);
|
|
829
|
-
return api.request(
|
|
830
|
-
"DELETE",
|
|
831
|
-
`carts/${encodeURIComponent(input.cartId)}/items/${encodeURIComponent(input.cartItemId)}`,
|
|
832
|
-
StorefrontCartSchema
|
|
833
|
-
);
|
|
834
|
-
}
|
|
835
|
-
|
|
836
|
-
// src/services/collection.service.ts
|
|
837
|
-
async function getCollections(api) {
|
|
838
|
-
return api.get("collections", CollectionsSchema);
|
|
839
|
-
}
|
|
840
|
-
async function getCollectionBySlug(api, collectionSlug) {
|
|
841
|
-
return api.get(`collections/${encodeURIComponent(collectionSlug)}`, CollectionSchema);
|
|
842
|
-
}
|
|
843
|
-
|
|
844
|
-
// src/services/page.service.ts
|
|
845
|
-
async function getPageBySlug(api, pageSlug) {
|
|
846
|
-
return api.get(`pages/${encodeURIComponent(pageSlug)}`, CmsPageDetailsDtoSchema);
|
|
847
|
-
}
|
|
848
|
-
var CheckoutMetadataValueSchema = zod.z.lazy(
|
|
849
|
-
() => zod.z.union([
|
|
850
|
-
zod.z.string(),
|
|
851
|
-
zod.z.number(),
|
|
852
|
-
zod.z.boolean(),
|
|
853
|
-
zod.z.null(),
|
|
854
|
-
zod.z.array(CheckoutMetadataValueSchema),
|
|
855
|
-
zod.z.record(zod.z.string(), CheckoutMetadataValueSchema)
|
|
856
|
-
])
|
|
857
|
-
);
|
|
858
|
-
var CartBuyerParamsSchema = zod.z.object({
|
|
859
|
-
cartId: EntityIdSchema,
|
|
860
|
-
email: zod.z.string().email(),
|
|
861
|
-
firstName: zod.z.string().min(1),
|
|
862
|
-
lastName: zod.z.string().min(1),
|
|
863
|
-
phone: zod.z.string().min(1)
|
|
864
|
-
});
|
|
865
|
-
var CartAddressWriteSchema = zod.z.object({
|
|
866
|
-
name: zod.z.string().min(1),
|
|
867
|
-
address1: zod.z.string().min(1),
|
|
868
|
-
city: zod.z.string().min(1),
|
|
869
|
-
countryCode: zod.z.string().length(2),
|
|
870
|
-
company: zod.z.string().nullable().optional(),
|
|
871
|
-
address2: zod.z.string().nullable().optional(),
|
|
872
|
-
province: zod.z.string().nullable().optional(),
|
|
873
|
-
postalCode: zod.z.string().nullable().optional(),
|
|
874
|
-
district: zod.z.string().nullable().optional(),
|
|
875
|
-
phone: zod.z.string().nullable().optional(),
|
|
876
|
-
latitude: zod.z.number().nullable().optional(),
|
|
877
|
-
longitude: zod.z.number().nullable().optional(),
|
|
878
|
-
geo: zod.z.object({
|
|
879
|
-
departmentCode: zod.z.string().nullable().optional(),
|
|
880
|
-
provinceCode: zod.z.string().nullable().optional(),
|
|
881
|
-
districtCode: zod.z.string().nullable().optional()
|
|
882
|
-
}).nullable().optional()
|
|
883
|
-
});
|
|
884
|
-
var CartAddressesParamsSchema = zod.z.object({
|
|
885
|
-
cartId: EntityIdSchema,
|
|
886
|
-
shippingAddress: CartAddressWriteSchema,
|
|
887
|
-
billingAddress: CartAddressWriteSchema
|
|
888
|
-
});
|
|
889
|
-
var CartPaymentMethodSchema = zod.z.object({
|
|
890
|
-
code: zod.z.string(),
|
|
891
|
-
name: zod.z.string(),
|
|
892
|
-
description: zod.z.string().nullable().optional(),
|
|
893
|
-
kind: zod.z.string(),
|
|
894
|
-
providerMethodCode: zod.z.string().nullable().optional(),
|
|
895
|
-
isActive: zod.z.boolean(),
|
|
896
|
-
isDefault: zod.z.boolean(),
|
|
897
|
-
isManual: zod.z.boolean(),
|
|
898
|
-
sortOrder: zod.z.number(),
|
|
899
|
-
phoneNumber: zod.z.string().nullable().optional(),
|
|
900
|
-
accountHolder: zod.z.string().nullable().optional(),
|
|
901
|
-
qrImageUrl: zod.z.string().nullable().optional()
|
|
902
|
-
});
|
|
903
|
-
var StorefrontOrderBumpSchema = zod.z.object({
|
|
904
|
-
id: zod.z.string(),
|
|
905
|
-
productPublicId: zod.z.coerce.string(),
|
|
906
|
-
variantPublicId: zod.z.coerce.string(),
|
|
907
|
-
productName: zod.z.string(),
|
|
908
|
-
variantName: zod.z.string().nullable().optional(),
|
|
909
|
-
imageUrl: zod.z.string().nullable().optional(),
|
|
910
|
-
currencyCode: zod.z.string(),
|
|
911
|
-
regularPrice: zod.z.number(),
|
|
912
|
-
offerPrice: zod.z.number(),
|
|
913
|
-
badgeLabel: zod.z.string().nullable().optional(),
|
|
914
|
-
callToAction: zod.z.string(),
|
|
915
|
-
description: zod.z.string().nullable().optional()
|
|
916
|
-
});
|
|
917
|
-
var CartCheckoutReadParamsSchema = zod.z.object({
|
|
918
|
-
cartId: EntityIdSchema
|
|
919
|
-
});
|
|
920
|
-
var CartCheckoutReadResponseSchema = zod.z.object({
|
|
921
|
-
cart: StorefrontCartSchema,
|
|
922
|
-
paymentMethods: zod.z.object({
|
|
923
|
-
methods: zod.z.array(CartPaymentMethodSchema)
|
|
924
|
-
}),
|
|
925
|
-
orderBumps: zod.z.array(StorefrontOrderBumpSchema).optional().default([])
|
|
926
|
-
});
|
|
927
|
-
var CartCheckoutPaymentActionSchema = zod.z.object({
|
|
928
|
-
publicConfiguration: zod.z.object({
|
|
929
|
-
publishableKey: zod.z.string().nullable().optional(),
|
|
930
|
-
checkoutMode: zod.z.string().nullable().optional(),
|
|
931
|
-
phoneNumber: zod.z.string().nullable().optional(),
|
|
932
|
-
accountHolder: zod.z.string().nullable().optional(),
|
|
933
|
-
qrImageUrl: zod.z.string().nullable().optional()
|
|
934
|
-
}).strip().nullable().optional(),
|
|
935
|
-
url: zod.z.string().nullable().optional(),
|
|
936
|
-
html: zod.z.string().nullable().optional(),
|
|
937
|
-
clientSecret: zod.z.string().nullable().optional(),
|
|
938
|
-
qrCode: zod.z.string().nullable().optional(),
|
|
939
|
-
expiresAt: zod.z.string().nullable().optional()
|
|
940
|
-
}).strip();
|
|
941
|
-
var CartCheckoutPaymentSchema = zod.z.object({
|
|
942
|
-
transactionId: zod.z.string(),
|
|
943
|
-
paymentMethodCode: zod.z.string(),
|
|
944
|
-
providerId: zod.z.string().nullable().optional(),
|
|
945
|
-
status: zod.z.string(),
|
|
946
|
-
amount: zod.z.number(),
|
|
947
|
-
reference: zod.z.string(),
|
|
948
|
-
actionType: zod.z.string(),
|
|
949
|
-
receiptUrl: zod.z.string().nullable().optional(),
|
|
950
|
-
action: CartCheckoutPaymentActionSchema.nullable().optional()
|
|
951
|
-
}).strip();
|
|
952
|
-
var CartCheckoutResponseSchema = zod.z.object({
|
|
953
|
-
publicKey: zod.z.string().optional(),
|
|
954
|
-
publishableKey: zod.z.string().optional(),
|
|
955
|
-
stripePublicKey: zod.z.string().optional(),
|
|
956
|
-
clientSecret: zod.z.string().optional(),
|
|
957
|
-
intentClientSecret: zod.z.string().optional(),
|
|
958
|
-
orderId: zod.z.coerce.string().optional(),
|
|
959
|
-
orderGroup: zod.z.string().optional(),
|
|
960
|
-
orderIds: zod.z.array(zod.z.coerce.string()).optional(),
|
|
961
|
-
payment: CartCheckoutPaymentSchema.optional(),
|
|
962
|
-
cart: StorefrontCartSchema.optional()
|
|
963
|
-
}).strip();
|
|
964
|
-
var CartCheckoutParamsSchema = zod.z.object({
|
|
965
|
-
cartId: EntityIdSchema,
|
|
966
|
-
paymentMethodCode: zod.z.string().min(1),
|
|
967
|
-
externalRef: zod.z.string().min(1),
|
|
968
|
-
receiptUrl: zod.z.string().min(1).optional()
|
|
969
|
-
});
|
|
970
|
-
var ShippingRateSchema = zod.z.object({
|
|
971
|
-
shippingMethodId: zod.z.string(),
|
|
972
|
-
name: zod.z.string(),
|
|
973
|
-
displayName: zod.z.string().optional(),
|
|
974
|
-
type: zod.z.string().optional(),
|
|
975
|
-
price: zod.z.number(),
|
|
976
|
-
currency: zod.z.string().optional(),
|
|
977
|
-
sortOrder: zod.z.number().optional(),
|
|
978
|
-
rateId: zod.z.string(),
|
|
979
|
-
description: zod.z.string().nullable().optional(),
|
|
980
|
-
deliveryLocationId: zod.z.string().nullable().optional(),
|
|
981
|
-
deliveryLocationName: zod.z.string().nullable().optional(),
|
|
982
|
-
estimatedDeliveryDays: zod.z.number().nullable().optional(),
|
|
983
|
-
serviceCode: zod.z.string().nullable().optional(),
|
|
984
|
-
metadata: zod.z.record(zod.z.string(), CheckoutMetadataValueSchema).optional()
|
|
985
|
-
}).strip();
|
|
986
|
-
var ShippingOptionGroupSchema = zod.z.object({
|
|
987
|
-
sellerId: zod.z.string(),
|
|
988
|
-
shippingProfileId: zod.z.string().nullable().optional(),
|
|
989
|
-
orderAmount: zod.z.number().optional(),
|
|
990
|
-
totalWeight: zod.z.number().optional(),
|
|
991
|
-
itemIds: zod.z.array(zod.z.string()).optional(),
|
|
992
|
-
rates: zod.z.array(ShippingRateSchema)
|
|
993
|
-
}).strip();
|
|
994
|
-
var ShippingOptionsResponseSchema = zod.z.object({
|
|
995
|
-
groups: zod.z.array(ShippingOptionGroupSchema)
|
|
996
|
-
});
|
|
997
|
-
var GetShippingOptionsParamsSchema = zod.z.object({
|
|
998
|
-
cartId: EntityIdSchema,
|
|
999
|
-
postalCode: zod.z.string().min(1)
|
|
1000
|
-
});
|
|
1001
|
-
var PutShippingMethodParamsSchema = zod.z.object({
|
|
1002
|
-
cartId: EntityIdSchema,
|
|
1003
|
-
rateId: zod.z.string().min(1),
|
|
1004
|
-
shippingMethodId: zod.z.string().min(1),
|
|
1005
|
-
serviceCode: zod.z.string().nullable().optional(),
|
|
1006
|
-
sellerId: zod.z.string().nullable().optional(),
|
|
1007
|
-
shippingProfileId: zod.z.string().nullable().optional(),
|
|
1008
|
-
locationId: zod.z.string().nullable().optional(),
|
|
1009
|
-
pickupPointId: zod.z.string().nullable().optional(),
|
|
1010
|
-
scheduledDate: zod.z.string().nullable().optional(),
|
|
1011
|
-
scheduledTime: zod.z.string().nullable().optional()
|
|
1012
|
-
});
|
|
1013
|
-
var CartPaymentReceiptResponseSchema = zod.z.object({
|
|
1014
|
-
id: zod.z.string(),
|
|
1015
|
-
url: zod.z.string()
|
|
1016
|
-
});
|
|
1017
|
-
var CartPromotionCodeParamsSchema = zod.z.object({
|
|
1018
|
-
cartId: EntityIdSchema,
|
|
1019
|
-
code: zod.z.string().min(1)
|
|
1020
|
-
});
|
|
1021
|
-
|
|
1022
|
-
// src/services/checkout.service.ts
|
|
1023
|
-
async function getCartCheckout(api, params) {
|
|
1024
|
-
const input = CartCheckoutReadParamsSchema.parse(params);
|
|
1025
|
-
return api.get(
|
|
1026
|
-
`carts/${encodeURIComponent(input.cartId)}/checkout`,
|
|
1027
|
-
CartCheckoutReadResponseSchema
|
|
1028
|
-
);
|
|
1029
|
-
}
|
|
1030
|
-
async function getShippingOptions(api, params) {
|
|
1031
|
-
const input = GetShippingOptionsParamsSchema.parse(params);
|
|
1032
|
-
return api.get(
|
|
1033
|
-
`carts/${encodeURIComponent(input.cartId)}/shipping-options`,
|
|
1034
|
-
ShippingOptionsResponseSchema,
|
|
1035
|
-
{ query: { postalCode: input.postalCode } }
|
|
1036
|
-
);
|
|
1037
|
-
}
|
|
1038
|
-
async function putCartShippingMethod(api, params) {
|
|
1039
|
-
const input = PutShippingMethodParamsSchema.parse(params);
|
|
1040
|
-
const { cartId, ...body } = input;
|
|
1041
|
-
return api.request(
|
|
1042
|
-
"PUT",
|
|
1043
|
-
`carts/${encodeURIComponent(cartId)}/shipping-method`,
|
|
1044
|
-
StorefrontCartSchema,
|
|
1045
|
-
{ body }
|
|
1046
|
-
);
|
|
1047
|
-
}
|
|
1048
|
-
async function patchCartBuyer(api, params) {
|
|
1049
|
-
const input = CartBuyerParamsSchema.parse(params);
|
|
1050
|
-
const { cartId, ...body } = input;
|
|
1051
|
-
return api.request(
|
|
1052
|
-
"PATCH",
|
|
1053
|
-
`carts/${encodeURIComponent(cartId)}/buyer`,
|
|
1054
|
-
StorefrontCartSchema,
|
|
1055
|
-
{ body }
|
|
1056
|
-
);
|
|
1057
|
-
}
|
|
1058
|
-
async function patchCartAddresses(api, params) {
|
|
1059
|
-
const input = CartAddressesParamsSchema.parse(params);
|
|
1060
|
-
const { cartId, shippingAddress, billingAddress } = input;
|
|
1061
|
-
return api.request(
|
|
1062
|
-
"PATCH",
|
|
1063
|
-
`carts/${encodeURIComponent(cartId)}/addresses`,
|
|
1064
|
-
StorefrontCartSchema,
|
|
1065
|
-
{ body: { shippingAddress, billingAddress } }
|
|
1066
|
-
);
|
|
1067
|
-
}
|
|
1068
|
-
async function checkoutCart(api, params) {
|
|
1069
|
-
const input = CartCheckoutParamsSchema.parse(params);
|
|
1070
|
-
const { cartId, ...body } = input;
|
|
1071
|
-
return api.post(
|
|
1072
|
-
`carts/${encodeURIComponent(cartId)}/checkout`,
|
|
1073
|
-
body,
|
|
1074
|
-
CartCheckoutResponseSchema
|
|
1075
|
-
);
|
|
1076
|
-
}
|
|
1077
|
-
async function uploadPaymentReceipt(api, params) {
|
|
1078
|
-
const cartId = CartCheckoutReadParamsSchema.shape.cartId.parse(params.cartId);
|
|
1079
|
-
if (!(params.file instanceof Blob)) {
|
|
1080
|
-
throw new TypeError("uploadPaymentReceipt requiere un archivo (Blob/File)");
|
|
1081
|
-
}
|
|
1082
|
-
const form = new FormData();
|
|
1083
|
-
const name = params.fileName ?? (params.file instanceof File ? params.file.name : "receipt");
|
|
1084
|
-
form.append("file", params.file, name);
|
|
1085
|
-
return api.postForm(
|
|
1086
|
-
`carts/${encodeURIComponent(cartId)}/payment-receipt`,
|
|
1087
|
-
form,
|
|
1088
|
-
CartPaymentReceiptResponseSchema
|
|
1089
|
-
);
|
|
1090
|
-
}
|
|
1091
|
-
async function addCartPromotionCode(api, params) {
|
|
1092
|
-
const input = CartPromotionCodeParamsSchema.parse(params);
|
|
1093
|
-
return api.post(
|
|
1094
|
-
`carts/${encodeURIComponent(input.cartId)}/promotion-codes`,
|
|
1095
|
-
{ code: input.code },
|
|
1096
|
-
StorefrontCartSchema
|
|
1097
|
-
);
|
|
1098
|
-
}
|
|
1099
|
-
async function removeCartPromotionCode(api, params) {
|
|
1100
|
-
const input = CartPromotionCodeParamsSchema.parse(params);
|
|
1101
|
-
return api.request(
|
|
1102
|
-
"DELETE",
|
|
1103
|
-
`carts/${encodeURIComponent(input.cartId)}/promotion-codes/${encodeURIComponent(input.code)}`,
|
|
1104
|
-
StorefrontCartSchema
|
|
1105
|
-
);
|
|
1106
|
-
}
|
|
1107
|
-
var CountrySchema = zod.z.object({
|
|
1108
|
-
code: zod.z.string().length(2),
|
|
1109
|
-
name: zod.z.string().min(1)
|
|
1110
|
-
}).strict();
|
|
1111
|
-
var CountriesSchema = zod.z.array(CountrySchema);
|
|
1112
|
-
var GeoDivisionTypeSchema = zod.z.enum(["level1", "level2", "level3"]);
|
|
1113
|
-
var GeoDivisionSchema = zod.z.object({
|
|
1114
|
-
id: EntityIdSchema,
|
|
1115
|
-
countryCode: zod.z.string().length(2),
|
|
1116
|
-
type: GeoDivisionTypeSchema,
|
|
1117
|
-
code: zod.z.string().min(1),
|
|
1118
|
-
name: zod.z.string().min(1),
|
|
1119
|
-
parentId: NullableEntityIdSchema,
|
|
1120
|
-
source: zod.z.string().min(1)
|
|
1121
|
-
}).strict();
|
|
1122
|
-
var DepartmentSchema = GeoDivisionSchema;
|
|
1123
|
-
var DepartmentsSchema = zod.z.array(DepartmentSchema);
|
|
1124
|
-
var GetDepartmentsParamsSchema = zod.z.object({
|
|
1125
|
-
countryCode: zod.z.string().length(2),
|
|
1126
|
-
source: zod.z.string().min(1).default("inei"),
|
|
1127
|
-
search: zod.z.string().default(""),
|
|
1128
|
-
limit: zod.z.number().int().positive().max(500).default(200)
|
|
1129
|
-
});
|
|
1130
|
-
var ProvinceSchema = GeoDivisionSchema;
|
|
1131
|
-
var ProvincesSchema = zod.z.array(ProvinceSchema);
|
|
1132
|
-
var GetProvincesParamsSchema = zod.z.object({
|
|
1133
|
-
countryCode: zod.z.string().length(2),
|
|
1134
|
-
departmentCode: zod.z.string().min(1),
|
|
1135
|
-
source: zod.z.string().min(1).default("inei"),
|
|
1136
|
-
search: zod.z.string().default(""),
|
|
1137
|
-
limit: zod.z.number().int().positive().max(500).default(200)
|
|
1138
|
-
});
|
|
1139
|
-
var DistrictSchema = GeoDivisionSchema;
|
|
1140
|
-
var DistrictsSchema = zod.z.array(DistrictSchema);
|
|
1141
|
-
var GetDistrictsParamsSchema = zod.z.object({
|
|
1142
|
-
countryCode: zod.z.string().length(2),
|
|
1143
|
-
provinceCode: zod.z.string().min(1),
|
|
1144
|
-
source: zod.z.string().min(1).default("inei"),
|
|
1145
|
-
search: zod.z.string().default(""),
|
|
1146
|
-
limit: zod.z.number().int().positive().max(500).default(200)
|
|
1147
|
-
});
|
|
1148
|
-
|
|
1149
|
-
// src/services/geo.service.ts
|
|
1150
|
-
async function getCountries(api) {
|
|
1151
|
-
return api.get("geo/countries", CountriesSchema);
|
|
1152
|
-
}
|
|
1153
|
-
async function getDepartments(api, params) {
|
|
1154
|
-
const input = GetDepartmentsParamsSchema.parse(params);
|
|
1155
|
-
return api.get("geo/departments", DepartmentsSchema, {
|
|
1156
|
-
query: {
|
|
1157
|
-
countryCode: input.countryCode,
|
|
1158
|
-
source: input.source,
|
|
1159
|
-
search: input.search,
|
|
1160
|
-
limit: input.limit
|
|
1161
|
-
}
|
|
1162
|
-
});
|
|
1163
|
-
}
|
|
1164
|
-
async function getProvinces(api, params) {
|
|
1165
|
-
const input = GetProvincesParamsSchema.parse(params);
|
|
1166
|
-
return api.get("geo/provinces", ProvincesSchema, {
|
|
1167
|
-
query: {
|
|
1168
|
-
countryCode: input.countryCode,
|
|
1169
|
-
departmentCode: input.departmentCode,
|
|
1170
|
-
source: input.source,
|
|
1171
|
-
search: input.search,
|
|
1172
|
-
limit: input.limit
|
|
1173
|
-
}
|
|
1174
|
-
});
|
|
1175
|
-
}
|
|
1176
|
-
async function getDistricts(api, params) {
|
|
1177
|
-
const input = GetDistrictsParamsSchema.parse(params);
|
|
1178
|
-
return api.get("geo/districts", DistrictsSchema, {
|
|
1179
|
-
query: {
|
|
1180
|
-
countryCode: input.countryCode,
|
|
1181
|
-
provinceCode: input.provinceCode,
|
|
1182
|
-
source: input.source,
|
|
1183
|
-
search: input.search,
|
|
1184
|
-
limit: input.limit
|
|
1185
|
-
}
|
|
1186
|
-
});
|
|
1187
|
-
}
|
|
1188
|
-
var CustomerAddressUpsertInputSchema = zod.z.object({
|
|
1189
|
-
addressKey: zod.z.string().trim().min(1),
|
|
1190
|
-
countryIsoCode: zod.z.string().trim().length(2),
|
|
1191
|
-
addressLine: zod.z.string().trim().min(1),
|
|
1192
|
-
addressNumber: zod.z.string().trim().min(1),
|
|
1193
|
-
department: zod.z.string().trim().min(1),
|
|
1194
|
-
province: zod.z.string().trim().min(1),
|
|
1195
|
-
district: zod.z.string().trim().min(1),
|
|
1196
|
-
phone: zod.z.string().trim(),
|
|
1197
|
-
cellPhone: zod.z.string().trim(),
|
|
1198
|
-
postalCode: zod.z.string().trim().min(1),
|
|
1199
|
-
reference: zod.z.string().trim(),
|
|
1200
|
-
latitude: zod.z.number().nullable(),
|
|
1201
|
-
longitude: zod.z.number().nullable(),
|
|
1202
|
-
isDefault: zod.z.boolean()
|
|
1203
|
-
});
|
|
1204
|
-
var CustomerAddressSchema = CustomerAddressUpsertInputSchema.extend({
|
|
1205
|
-
id: zod.z.union([zod.z.string(), zod.z.number()]).transform(String).optional()
|
|
1206
|
-
});
|
|
1207
|
-
var CustomerAddressesSchema = zod.z.array(CustomerAddressSchema);
|
|
1208
|
-
|
|
1209
|
-
// src/services/customer-address.service.ts
|
|
1210
|
-
var ADDRESSES_PATH = "customer/addresses";
|
|
1211
|
-
var CustomerAddressMutationResponseSchema = zod.z.union([
|
|
1212
|
-
CustomerAddressSchema,
|
|
1213
|
-
zod.z.object({
|
|
1214
|
-
id: zod.z.union([zod.z.string(), zod.z.number()]).transform(String)
|
|
1215
|
-
}),
|
|
1216
|
-
zod.z.null()
|
|
1217
|
-
]);
|
|
1218
|
-
async function getCustomerAddresses(api, options = {}) {
|
|
1219
|
-
return api.get(ADDRESSES_PATH, CustomerAddressesSchema, {
|
|
1220
|
-
headers: options.headers,
|
|
1221
|
-
signal: options.signal
|
|
1222
|
-
});
|
|
1223
|
-
}
|
|
1224
|
-
async function createCustomerAddress(api, data, options = {}) {
|
|
1225
|
-
const payload = CustomerAddressUpsertInputSchema.parse(data);
|
|
1226
|
-
return api.post(ADDRESSES_PATH, payload, CustomerAddressMutationResponseSchema, {
|
|
1227
|
-
headers: options.headers,
|
|
1228
|
-
signal: options.signal
|
|
1229
|
-
});
|
|
1230
|
-
}
|
|
1231
|
-
async function updateCustomerAddress(api, addressId, data, options = {}) {
|
|
1232
|
-
const id = addressId.trim();
|
|
1233
|
-
if (!id) throw new Error("addressId requerido");
|
|
1234
|
-
const payload = CustomerAddressUpsertInputSchema.parse(data);
|
|
1235
|
-
return api.request(
|
|
1236
|
-
"PUT",
|
|
1237
|
-
`${ADDRESSES_PATH}/${encodeURIComponent(id)}`,
|
|
1238
|
-
CustomerAddressMutationResponseSchema,
|
|
1239
|
-
{
|
|
1240
|
-
body: payload,
|
|
1241
|
-
headers: options.headers,
|
|
1242
|
-
signal: options.signal
|
|
1243
|
-
}
|
|
1244
|
-
);
|
|
1245
|
-
}
|
|
1246
|
-
async function deleteCustomerAddress(api, addressId, options = {}) {
|
|
1247
|
-
const id = addressId.trim();
|
|
1248
|
-
if (!id) throw new Error("addressId requerido");
|
|
1249
|
-
await api.request(
|
|
1250
|
-
"DELETE",
|
|
1251
|
-
`${ADDRESSES_PATH}/${encodeURIComponent(id)}`,
|
|
1252
|
-
zod.z.null(),
|
|
1253
|
-
{
|
|
1254
|
-
headers: options.headers,
|
|
1255
|
-
signal: options.signal
|
|
1256
|
-
}
|
|
1257
|
-
);
|
|
1258
|
-
}
|
|
1259
|
-
var DEFAULT_COUNTRY_CODE = "PE";
|
|
1260
|
-
zod.z.object({
|
|
1261
|
-
email: zod.z.string().email(),
|
|
1262
|
-
firstName: zod.z.string().trim().min(1),
|
|
1263
|
-
lastName: zod.z.string().trim().min(1),
|
|
1264
|
-
countryIsoCode: zod.z.string().trim().length(2),
|
|
1265
|
-
password: zod.z.string().min(1),
|
|
1266
|
-
phone: zod.z.string().trim().min(1).optional()
|
|
1267
|
-
});
|
|
1268
|
-
var CustomerProfilePatchSchema = zod.z.object({
|
|
1269
|
-
firstName: zod.z.string().trim().min(1),
|
|
1270
|
-
lastName: zod.z.string().trim().min(1),
|
|
1271
|
-
phone: zod.z.string().trim(),
|
|
1272
|
-
identificationNumber: zod.z.string().nullable(),
|
|
1273
|
-
identificationType: zod.z.string().nullable(),
|
|
1274
|
-
entityName: zod.z.string().nullable(),
|
|
1275
|
-
entityIdentificationNumber: zod.z.string().nullable(),
|
|
1276
|
-
gender: zod.z.string().nullable(),
|
|
1277
|
-
role: zod.z.string().nullable(),
|
|
1278
|
-
companyName: zod.z.string().nullable(),
|
|
1279
|
-
dateOfBirth: zod.z.string().nullable(),
|
|
1280
|
-
consent: zod.z.boolean(),
|
|
1281
|
-
countryIsoCode: zod.z.string().trim().length(2)
|
|
1282
|
-
});
|
|
1283
|
-
zod.z.object({
|
|
1284
|
-
firstName: zod.z.string(),
|
|
1285
|
-
lastName: zod.z.string(),
|
|
1286
|
-
phone: zod.z.string(),
|
|
1287
|
-
email: zod.z.string().email(),
|
|
1288
|
-
identificationNumber: zod.z.string().nullable(),
|
|
1289
|
-
identificationType: zod.z.string().nullable(),
|
|
1290
|
-
countryIsoCode: zod.z.string(),
|
|
1291
|
-
consent: zod.z.boolean(),
|
|
1292
|
-
entityName: zod.z.string().nullable(),
|
|
1293
|
-
entityIdentificationNumber: zod.z.string().nullable(),
|
|
1294
|
-
gender: zod.z.string().nullable(),
|
|
1295
|
-
role: zod.z.string().nullable(),
|
|
1296
|
-
companyName: zod.z.string().nullable(),
|
|
1297
|
-
dateOfBirth: zod.z.string().nullable()
|
|
1298
|
-
});
|
|
1299
|
-
var nullableString = zod.z.string().nullable().optional().transform((v) => v ?? null);
|
|
1300
|
-
var CustomerMeSchema = zod.z.object({
|
|
1301
|
-
id: zod.z.union([zod.z.string(), zod.z.number()]),
|
|
1302
|
-
storeId: zod.z.string().optional(),
|
|
1303
|
-
email: zod.z.string().email(),
|
|
1304
|
-
firstName: zod.z.string(),
|
|
1305
|
-
lastName: zod.z.string(),
|
|
1306
|
-
phone: zod.z.union([zod.z.string(), zod.z.null()]).optional().transform((v) => v ?? ""),
|
|
1307
|
-
identificationNumber: nullableString,
|
|
1308
|
-
identificationType: nullableString,
|
|
1309
|
-
entityName: nullableString,
|
|
1310
|
-
entityIdentificationNumber: nullableString,
|
|
1311
|
-
gender: nullableString,
|
|
1312
|
-
role: nullableString,
|
|
1313
|
-
companyName: nullableString,
|
|
1314
|
-
dateOfBirth: nullableString,
|
|
1315
|
-
countryIsoCode: zod.z.string().optional().transform((v) => v?.trim().length === 2 ? v.trim() : DEFAULT_COUNTRY_CODE),
|
|
1316
|
-
consent: zod.z.boolean().optional().transform((v) => v ?? false)
|
|
1317
|
-
}).passthrough();
|
|
1318
|
-
|
|
1319
|
-
// src/services/customer.service.ts
|
|
1320
|
-
var CUSTOMER_PATH = "customer";
|
|
1321
|
-
async function getCustomerMe(api, options = {}) {
|
|
1322
|
-
return api.get(CUSTOMER_PATH, CustomerMeSchema, {
|
|
1323
|
-
headers: options.headers,
|
|
1324
|
-
signal: options.signal
|
|
1325
|
-
});
|
|
1326
|
-
}
|
|
1327
|
-
async function patchCustomer(api, data, options = {}) {
|
|
1328
|
-
const payload = CustomerProfilePatchSchema.parse(data);
|
|
1329
|
-
await api.request("PATCH", CUSTOMER_PATH, zod.z.null(), {
|
|
1330
|
-
body: payload,
|
|
1331
|
-
headers: options.headers,
|
|
1332
|
-
signal: options.signal
|
|
1333
|
-
});
|
|
1334
|
-
}
|
|
1335
|
-
var CustomerOrderShippingAddressSchema = zod.z.object({
|
|
1336
|
-
name: zod.z.string().nullable().optional(),
|
|
1337
|
-
company: zod.z.string().nullable().optional(),
|
|
1338
|
-
address1: zod.z.string(),
|
|
1339
|
-
address2: zod.z.string().nullable().optional(),
|
|
1340
|
-
city: zod.z.string().nullable().optional(),
|
|
1341
|
-
countryCode: zod.z.string().min(2).max(2),
|
|
1342
|
-
province: zod.z.string().nullable().optional(),
|
|
1343
|
-
postalCode: zod.z.string().nullable().optional(),
|
|
1344
|
-
district: zod.z.string().nullable().optional(),
|
|
1345
|
-
phone: zod.z.string().nullable().optional(),
|
|
1346
|
-
latitude: zod.z.number().nullable().optional(),
|
|
1347
|
-
longitude: zod.z.number().nullable().optional(),
|
|
1348
|
-
metadata: zod.z.record(zod.z.unknown()).nullable().optional()
|
|
1349
|
-
}).passthrough();
|
|
1350
|
-
var CustomerOrderLineItemSchema = zod.z.object({
|
|
1351
|
-
id: zod.z.string(),
|
|
1352
|
-
orderId: zod.z.coerce.string(),
|
|
1353
|
-
productId: zod.z.coerce.string().nullable(),
|
|
1354
|
-
variantId: zod.z.coerce.string().nullable(),
|
|
1355
|
-
title: zod.z.string(),
|
|
1356
|
-
subtitle: zod.z.string().nullable().optional(),
|
|
1357
|
-
thumbnail: zod.z.string().nullable().optional(),
|
|
1358
|
-
variantTitle: zod.z.string().nullable().optional(),
|
|
1359
|
-
productHandle: zod.z.string().nullable().optional(),
|
|
1360
|
-
quantity: zod.z.number(),
|
|
1361
|
-
unitPrice: zod.z.number(),
|
|
1362
|
-
total: zod.z.number(),
|
|
1363
|
-
status: zod.z.string()
|
|
1364
|
-
});
|
|
1365
|
-
var CustomerOrderListItemSchema = zod.z.object({
|
|
1366
|
-
orderId: zod.z.coerce.string(),
|
|
1367
|
-
orderNumber: zod.z.string(),
|
|
1368
|
-
orderGroup: zod.z.string(),
|
|
1369
|
-
orderIds: zod.z.array(zod.z.coerce.string()),
|
|
1370
|
-
status: zod.z.string(),
|
|
1371
|
-
total: zod.z.number(),
|
|
1372
|
-
totalPaid: zod.z.number(),
|
|
1373
|
-
currencyCode: zod.z.string(),
|
|
1374
|
-
orderDate: zod.z.string(),
|
|
1375
|
-
createdOn: zod.z.string(),
|
|
1376
|
-
updatedOn: zod.z.string().nullable().optional(),
|
|
1377
|
-
paymentAt: zod.z.string().nullable().optional(),
|
|
1378
|
-
shippingAddress: CustomerOrderShippingAddressSchema.nullable().optional(),
|
|
1379
|
-
shippingAddressSummary: zod.z.string().nullable().optional(),
|
|
1380
|
-
items: zod.z.array(CustomerOrderLineItemSchema)
|
|
1381
|
-
});
|
|
1382
|
-
var CustomerOrderListSchema = zod.z.array(CustomerOrderListItemSchema);
|
|
1383
|
-
var CustomerOrderPaymentSchema = zod.z.object({
|
|
1384
|
-
id: zod.z.string(),
|
|
1385
|
-
paymentMethod: zod.z.string(),
|
|
1386
|
-
paymentCode: zod.z.string(),
|
|
1387
|
-
amount: zod.z.number(),
|
|
1388
|
-
paymentStatus: zod.z.string(),
|
|
1389
|
-
receiptUrl: zod.z.string().nullable().optional(),
|
|
1390
|
-
createdOn: zod.z.string()
|
|
1391
|
-
});
|
|
1392
|
-
var CustomerOrderStatusTimelineSchema = zod.z.object({
|
|
1393
|
-
key: zod.z.string(),
|
|
1394
|
-
label: zod.z.string(),
|
|
1395
|
-
occurredAt: zod.z.string(),
|
|
1396
|
-
description: zod.z.string().nullable().optional(),
|
|
1397
|
-
status: zod.z.string(),
|
|
1398
|
-
source: zod.z.string()
|
|
1399
|
-
});
|
|
1400
|
-
var CustomerOrderDetailSchema = zod.z.object({
|
|
1401
|
-
id: zod.z.coerce.string(),
|
|
1402
|
-
orderNumber: zod.z.string(),
|
|
1403
|
-
orderGroup: zod.z.string(),
|
|
1404
|
-
status: zod.z.string(),
|
|
1405
|
-
total: zod.z.number(),
|
|
1406
|
-
totalPaid: zod.z.number(),
|
|
1407
|
-
currencyCode: zod.z.string(),
|
|
1408
|
-
orderDate: zod.z.string(),
|
|
1409
|
-
createdOn: zod.z.string(),
|
|
1410
|
-
updatedOn: zod.z.string().nullable().optional(),
|
|
1411
|
-
paymentAt: zod.z.string().nullable().optional(),
|
|
1412
|
-
subTotal: zod.z.number(),
|
|
1413
|
-
discount: zod.z.number(),
|
|
1414
|
-
shipping: zod.z.number(),
|
|
1415
|
-
tax: zod.z.number(),
|
|
1416
|
-
email: zod.z.string(),
|
|
1417
|
-
phone: zod.z.string(),
|
|
1418
|
-
firstName: zod.z.string(),
|
|
1419
|
-
lastName: zod.z.string(),
|
|
1420
|
-
shippingAddress: CustomerOrderShippingAddressSchema.nullable().optional(),
|
|
1421
|
-
shippingAddressSummary: zod.z.string().nullable().optional(),
|
|
1422
|
-
billingAddress: CustomerOrderShippingAddressSchema.nullable().optional(),
|
|
1423
|
-
items: zod.z.array(CustomerOrderLineItemSchema),
|
|
1424
|
-
payments: zod.z.array(CustomerOrderPaymentSchema),
|
|
1425
|
-
statusTimeline: zod.z.array(CustomerOrderStatusTimelineSchema)
|
|
1426
|
-
});
|
|
1427
|
-
|
|
1428
|
-
// src/services/customer-order.service.ts
|
|
1429
|
-
var ORDERS_PATH = "customer/orders";
|
|
1430
|
-
async function getCustomerOrders(api, options = {}) {
|
|
1431
|
-
return api.get(ORDERS_PATH, CustomerOrderListSchema, {
|
|
1432
|
-
headers: options.headers,
|
|
1433
|
-
signal: options.signal
|
|
1434
|
-
});
|
|
1435
|
-
}
|
|
1436
|
-
async function getCustomerOrder(api, orderId, options = {}) {
|
|
1437
|
-
const id = orderId.trim();
|
|
1438
|
-
if (!id) throw new Error("orderId requerido");
|
|
1439
|
-
return api.get(
|
|
1440
|
-
`${ORDERS_PATH}/${encodeURIComponent(id)}`,
|
|
1441
|
-
CustomerOrderDetailSchema,
|
|
1442
|
-
{
|
|
1443
|
-
headers: options.headers,
|
|
1444
|
-
signal: options.signal
|
|
1445
|
-
}
|
|
1446
|
-
);
|
|
1447
|
-
}
|
|
1448
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_api = require("./api.cjs");
|
|
3
|
+
const require_graphql = require("./libs/graphql-wJH7HaQU.cjs");
|
|
4
|
+
const require_catalog_link_key = require("./libs/catalog-link-key-CZTHJBGD.cjs");
|
|
5
|
+
const require_catalog_links = require("./models/catalog-links-c4LADGf_.cjs");
|
|
6
|
+
const require_catalog_link_service = require("./services/catalog-link.service-DiB-OVjn.cjs");
|
|
7
|
+
const require_layout_service = require("./services/layout.service-BkvLzl1g.cjs");
|
|
8
|
+
const require_models_products = require("./models/products.cjs");
|
|
9
|
+
const require_bounded_read_cache = require("./libs/bounded-read-cache-D4644LJo.cjs");
|
|
10
|
+
const require_customer_registration_service = require("./services/customer-registration.service-C3BNyCHP.cjs");
|
|
11
|
+
const require_customer_session_service = require("./services/customer-session.service-Bd8pLC2v.cjs");
|
|
12
|
+
const require_order_status_service = require("./services/order-status.service-Cn7dsaJo.cjs");
|
|
13
|
+
const require_order_draft_service = require("./services/order-draft.service-D9gy-OPr.cjs");
|
|
14
|
+
const require_complaint_book_service = require("./services/complaint-book.service-C7TxltQe.cjs");
|
|
15
|
+
const require_models_settings = require("./models/settings.cjs");
|
|
16
|
+
const require_product_service = require("./services/product.service-B7OFZWB1.cjs");
|
|
17
|
+
const require_search_service = require("./services/search.service-Bx1zbTHJ.cjs");
|
|
18
|
+
const require_review_service = require("./services/review.service-CO2icjpu.cjs");
|
|
19
|
+
const require_cart_service = require("./services/cart.service-B0D8s6jI.cjs");
|
|
20
|
+
const require_collection_service = require("./services/collection.service-DHGN3rhs.cjs");
|
|
21
|
+
const require_page_service = require("./services/page.service-DmCSeMiR.cjs");
|
|
22
|
+
const require_category_service = require("./services/category.service-BsSJZV2B.cjs");
|
|
23
|
+
const require_url_service = require("./services/url.service-B-nC14Ue.cjs");
|
|
24
|
+
const require_article_service = require("./services/article.service-zmTkbbPV.cjs");
|
|
25
|
+
const require_checkout_service = require("./services/checkout.service-CG8KrDNY.cjs");
|
|
26
|
+
const require_geo_service = require("./services/geo.service-JeTT3Wun.cjs");
|
|
27
|
+
const require_customer_address_service = require("./services/customer-address.service-Ca4qla_R.cjs");
|
|
28
|
+
const require_customer_service = require("./services/customer.service-BM0NrOxP.cjs");
|
|
29
|
+
const require_customer_order_service = require("./services/customer-order.service-DLGgT0xa.cjs");
|
|
30
|
+
const require_seller_service = require("./services/seller.service-D11WHhbC.cjs");
|
|
31
|
+
const require_payment_method_service = require("./services/payment-method.service-CEt_nB4R.cjs");
|
|
1449
32
|
// src/client.ts
|
|
1450
|
-
|
|
33
|
+
const DEFAULT_SETTINGS_CACHE_TTL_MS = 3e4;
|
|
34
|
+
const PRODUCT_READ_CACHE_TTL_MS = 3e4;
|
|
35
|
+
const COLLECTION_READ_CACHE_TTL_MS = 6e4;
|
|
36
|
+
const CATEGORY_READ_CACHE_TTL_MS = 3e4;
|
|
37
|
+
const URL_READ_CACHE_TTL_MS = 3e4;
|
|
38
|
+
/**
|
|
39
|
+
* Crea el cliente storefront de bajo nivel (requiere domain).
|
|
40
|
+
* En apps Ecomiq usa `createClient()` de `@ecomiq/storefront`, que toma el domain del config.
|
|
41
|
+
*
|
|
42
|
+
* ```ts
|
|
43
|
+
* const api = createClient({ domain: 'marketplace' })
|
|
44
|
+
* const collections = await api.getCollections()
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
1451
47
|
function createClient(options) {
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
48
|
+
const { domain, storeId, settingsCacheTtlMs = DEFAULT_SETTINGS_CACHE_TTL_MS, ...apiOptions } = options;
|
|
49
|
+
if (!domain?.trim()) throw new Error("createClient requiere `domain` (config.domain de ecomiq.config.js)");
|
|
50
|
+
if (storeId !== void 0 && !storeId.trim()) throw new Error("storeId debe ser un ID no vacío");
|
|
51
|
+
if (!Number.isFinite(settingsCacheTtlMs) || settingsCacheTtlMs < 0) throw new Error("settingsCacheTtlMs debe ser un número mayor o igual a 0");
|
|
52
|
+
const api = require_api.createApi(apiOptions);
|
|
53
|
+
const graphQLApi = require_api.createApi({
|
|
54
|
+
...apiOptions,
|
|
55
|
+
version: ""
|
|
56
|
+
});
|
|
57
|
+
function graphql(document, dataSchema, variables, requestOptions = {}) {
|
|
58
|
+
return require_graphql.executeGraphQL(graphQLApi, domain, document, dataSchema, variables, requestOptions);
|
|
59
|
+
}
|
|
60
|
+
const apiClient = async () => {
|
|
61
|
+
const storeId = await getStoreId();
|
|
62
|
+
return require_api.createApi({
|
|
63
|
+
...apiOptions,
|
|
64
|
+
headers: {
|
|
65
|
+
...apiOptions.headers,
|
|
66
|
+
"x-Store-Id": storeId
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
let cache = null;
|
|
71
|
+
let settingsGeneration = 0;
|
|
72
|
+
let layoutRead = null;
|
|
73
|
+
const productsCache = new require_bounded_read_cache.BoundedReadCache(32);
|
|
74
|
+
const productCache = new require_bounded_read_cache.BoundedReadCache(100);
|
|
75
|
+
const collectionsCache = new require_bounded_read_cache.BoundedReadCache(1);
|
|
76
|
+
const collectionCache = new require_bounded_read_cache.BoundedReadCache(50);
|
|
77
|
+
const categoryCache = new require_bounded_read_cache.BoundedReadCache(50);
|
|
78
|
+
const urlCache = new require_bounded_read_cache.BoundedReadCache(200);
|
|
79
|
+
const linksCache = new require_bounded_read_cache.BoundedReadCache(32);
|
|
80
|
+
const cacheDomain = domain.trim().toLowerCase();
|
|
81
|
+
function clearCache() {
|
|
82
|
+
settingsGeneration += 1;
|
|
83
|
+
cache = null;
|
|
84
|
+
layoutRead = null;
|
|
85
|
+
productsCache.clear();
|
|
86
|
+
productCache.clear();
|
|
87
|
+
collectionsCache.clear();
|
|
88
|
+
collectionCache.clear();
|
|
89
|
+
categoryCache.clear();
|
|
90
|
+
urlCache.clear();
|
|
91
|
+
linksCache.clear();
|
|
92
|
+
}
|
|
93
|
+
async function getSettings() {
|
|
94
|
+
if (layoutRead && layoutRead.expiresAt > Date.now()) return (await layoutRead.data).settings;
|
|
95
|
+
return loadSettings();
|
|
96
|
+
}
|
|
97
|
+
async function loadSettings({ writeCache = true } = {}) {
|
|
98
|
+
const generation = settingsGeneration;
|
|
99
|
+
const now = Date.now();
|
|
100
|
+
if (cache && cache.expiresAt > now) return cache.data;
|
|
101
|
+
const previous = cache?.data;
|
|
102
|
+
return api.get("settings", require_models_settings.StorefrontSettingsSchema, { headers: { "x-Store-Domain": domain } }).catch((error) => {
|
|
103
|
+
if (previous && error instanceof require_api.ApiError && (error.status === 0 || error.status === 429 || error.status >= 500)) return previous;
|
|
104
|
+
throw error;
|
|
105
|
+
}).then((data) => {
|
|
106
|
+
if (storeId !== void 0 && data.store.id !== storeId) throw new Error("El ID de tienda del Worker no coincide con el dominio publicado");
|
|
107
|
+
if (writeCache && generation === settingsGeneration) cache = {
|
|
108
|
+
data,
|
|
109
|
+
expiresAt: Date.now() + settingsCacheTtlMs
|
|
110
|
+
};
|
|
111
|
+
return data;
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
function getLayout$1(links) {
|
|
115
|
+
const key = JSON.stringify(links);
|
|
116
|
+
if (layoutRead?.key === key && layoutRead.expiresAt > Date.now()) return layoutRead.data;
|
|
117
|
+
const read = require_layout_service.getLayout({
|
|
118
|
+
graphql,
|
|
119
|
+
links
|
|
120
|
+
}).catch(async (error) => {
|
|
121
|
+
if (error instanceof require_api.ApiError && (error.status === 401 || error.status === 403)) return {
|
|
122
|
+
settings: await loadSettings({ writeCache: false }),
|
|
123
|
+
collections: [],
|
|
124
|
+
links: links.map(require_catalog_links.readCatalogLink)
|
|
125
|
+
};
|
|
126
|
+
throw error;
|
|
127
|
+
}).then((result) => {
|
|
128
|
+
if (storeId !== void 0 && result.settings.store.id !== storeId) throw new Error("El ID de tienda del Worker no coincide con el dominio publicado");
|
|
129
|
+
if (layoutRead?.data === read) {
|
|
130
|
+
layoutRead.expiresAt = Date.now() + Math.min(URL_READ_CACHE_TTL_MS, settingsCacheTtlMs);
|
|
131
|
+
cache = {
|
|
132
|
+
data: result.settings,
|
|
133
|
+
expiresAt: Date.now() + settingsCacheTtlMs
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
return result;
|
|
137
|
+
});
|
|
138
|
+
layoutRead = {
|
|
139
|
+
key,
|
|
140
|
+
expiresAt: Infinity,
|
|
141
|
+
data: read
|
|
142
|
+
};
|
|
143
|
+
read.catch(() => {
|
|
144
|
+
if (layoutRead?.data === read) layoutRead = null;
|
|
145
|
+
});
|
|
146
|
+
return read;
|
|
147
|
+
}
|
|
148
|
+
async function getStoreId() {
|
|
149
|
+
if (storeId !== void 0) return storeId;
|
|
150
|
+
return (await getSettings()).store.id;
|
|
151
|
+
}
|
|
152
|
+
async function getCollections$1() {
|
|
153
|
+
if (layoutRead && layoutRead.expiresAt > Date.now()) return (await layoutRead.data).collections;
|
|
154
|
+
return collectionsCache.read(cacheDomain, COLLECTION_READ_CACHE_TTL_MS, async () => {
|
|
155
|
+
const client = await apiClient();
|
|
156
|
+
return require_collection_service.getCollections(client);
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
async function getPaymentMethods$1() {
|
|
160
|
+
const client = await apiClient();
|
|
161
|
+
return require_payment_method_service.getPaymentMethods(client);
|
|
162
|
+
}
|
|
163
|
+
async function getCollectionBySlug$1(collectionSlug) {
|
|
164
|
+
return collectionCache.read(`${cacheDomain}\u0000${collectionSlug}`, COLLECTION_READ_CACHE_TTL_MS, async () => {
|
|
165
|
+
const client = await apiClient();
|
|
166
|
+
return require_collection_service.getCollectionBySlug(client, collectionSlug);
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
async function getPageBySlug$1(pageSlug) {
|
|
170
|
+
const client = await apiClient();
|
|
171
|
+
return require_page_service.getPageBySlug(client, pageSlug);
|
|
172
|
+
}
|
|
173
|
+
async function getCategoryBySlug$1(categorySlug) {
|
|
174
|
+
return categoryCache.read(`${cacheDomain}\u0000${categorySlug}`, CATEGORY_READ_CACHE_TTL_MS, async () => {
|
|
175
|
+
const client = await apiClient();
|
|
176
|
+
return require_category_service.getCategoryBySlug(client, categorySlug);
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
async function resolveUrl$1(path, options = {}) {
|
|
180
|
+
if (options.previewKey) {
|
|
181
|
+
const client = await apiClient();
|
|
182
|
+
return require_url_service.resolveUrl(client, path, options);
|
|
183
|
+
}
|
|
184
|
+
return urlCache.read(`${cacheDomain}\u0000${path}`, URL_READ_CACHE_TTL_MS, async () => {
|
|
185
|
+
const client = await apiClient();
|
|
186
|
+
return require_url_service.resolveUrl(client, path);
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
async function getSitemap$1(page) {
|
|
190
|
+
const client = await apiClient();
|
|
191
|
+
return require_url_service.getSitemap(client, page);
|
|
192
|
+
}
|
|
193
|
+
async function getLinks$1(links) {
|
|
194
|
+
const input = links.map(require_catalog_links.readCatalogLink);
|
|
195
|
+
const candidates = require_catalog_links.catalogLinkCandidates(input);
|
|
196
|
+
if (candidates.length === 0) return input;
|
|
197
|
+
const resolved = /* @__PURE__ */ new Map();
|
|
198
|
+
const batches = [];
|
|
199
|
+
for (let offset = 0; offset < candidates.length; offset += 100) {
|
|
200
|
+
const batch = candidates.slice(offset, offset + 100);
|
|
201
|
+
const key = `${cacheDomain}\u0000${JSON.stringify(batch.map(require_catalog_link_key.catalogLinkKey))}`;
|
|
202
|
+
batches.push(linksCache.read(key, URL_READ_CACHE_TTL_MS, async () => {
|
|
203
|
+
const client = await apiClient();
|
|
204
|
+
return require_catalog_link_service.getLinks(client, batch);
|
|
205
|
+
}).then((result) => {
|
|
206
|
+
batch.forEach((original, index) => resolved.set(require_catalog_link_key.catalogLinkKey(original), result[index] ?? original));
|
|
207
|
+
}));
|
|
208
|
+
}
|
|
209
|
+
await Promise.all(batches);
|
|
210
|
+
return input.map((link) => resolved.get(require_catalog_link_key.catalogLinkKey(link)) ?? link);
|
|
211
|
+
}
|
|
212
|
+
async function listArticles$1(params = {}) {
|
|
213
|
+
const client = await apiClient();
|
|
214
|
+
return require_article_service.listArticles(client, params);
|
|
215
|
+
}
|
|
216
|
+
async function getArticleBySlug$1(articleSlug) {
|
|
217
|
+
const client = await apiClient();
|
|
218
|
+
return require_article_service.getArticleBySlug(client, articleSlug);
|
|
219
|
+
}
|
|
220
|
+
async function getSellers$1() {
|
|
221
|
+
const client = await apiClient();
|
|
222
|
+
return require_seller_service.getSellers(client);
|
|
223
|
+
}
|
|
224
|
+
async function getSellerBySlug$1(sellerSlug) {
|
|
225
|
+
const client = await apiClient();
|
|
226
|
+
return require_seller_service.getSellerBySlug(client, sellerSlug);
|
|
227
|
+
}
|
|
228
|
+
async function getProducts$1(params = {}) {
|
|
229
|
+
const input = require_models_products.ProductsParamsSchema.parse(params);
|
|
230
|
+
return productsCache.read(`${cacheDomain}\u0000${JSON.stringify(input)}`, PRODUCT_READ_CACHE_TTL_MS, async () => {
|
|
231
|
+
const client = await apiClient();
|
|
232
|
+
return require_product_service.getProducts(client, input);
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
async function getProductBySlug$1(productSlug, options = {}) {
|
|
236
|
+
if (options.previewKey) {
|
|
237
|
+
const client = await apiClient();
|
|
238
|
+
return require_product_service.getProductBySlug(client, productSlug, options);
|
|
239
|
+
}
|
|
240
|
+
return productCache.read(`${cacheDomain}\u0000${productSlug}`, PRODUCT_READ_CACHE_TTL_MS, async () => {
|
|
241
|
+
const client = await apiClient();
|
|
242
|
+
return require_product_service.getProductBySlug(client, productSlug);
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
async function getRelatedProducts$1(params) {
|
|
246
|
+
const client = await apiClient();
|
|
247
|
+
return require_product_service.getRelatedProducts(client, params);
|
|
248
|
+
}
|
|
249
|
+
async function autocompleteProducts$1(params) {
|
|
250
|
+
const client = await apiClient();
|
|
251
|
+
return require_search_service.autocompleteProducts(client, params);
|
|
252
|
+
}
|
|
253
|
+
async function listProductReviews$1(params) {
|
|
254
|
+
const client = await apiClient();
|
|
255
|
+
return require_review_service.listProductReviews(client, params);
|
|
256
|
+
}
|
|
257
|
+
async function listStoreReviews$1(params) {
|
|
258
|
+
const client = await apiClient();
|
|
259
|
+
return require_review_service.listStoreReviews(client, params);
|
|
260
|
+
}
|
|
261
|
+
async function createProductReview$1(params) {
|
|
262
|
+
const client = await apiClient();
|
|
263
|
+
return require_review_service.createProductReview(client, params);
|
|
264
|
+
}
|
|
265
|
+
async function createCustomerProductReview$1(params, options) {
|
|
266
|
+
const client = await apiClient();
|
|
267
|
+
return require_review_service.createCustomerProductReview(client, params, options);
|
|
268
|
+
}
|
|
269
|
+
async function createCart$1(params) {
|
|
270
|
+
const client = await apiClient();
|
|
271
|
+
return require_cart_service.createCart(client, params);
|
|
272
|
+
}
|
|
273
|
+
async function getCart$1(params) {
|
|
274
|
+
const client = await apiClient();
|
|
275
|
+
return require_cart_service.getCart(client, params);
|
|
276
|
+
}
|
|
277
|
+
async function addCartItem$1(params) {
|
|
278
|
+
const client = await apiClient();
|
|
279
|
+
return require_cart_service.addCartItem(client, params);
|
|
280
|
+
}
|
|
281
|
+
async function updateCartItemQuantity$1(params) {
|
|
282
|
+
const client = await apiClient();
|
|
283
|
+
return require_cart_service.updateCartItemQuantity(client, params);
|
|
284
|
+
}
|
|
285
|
+
async function removeCartItem$1(params) {
|
|
286
|
+
const client = await apiClient();
|
|
287
|
+
return require_cart_service.removeCartItem(client, params);
|
|
288
|
+
}
|
|
289
|
+
async function getCartCheckout$1(params) {
|
|
290
|
+
const client = await apiClient();
|
|
291
|
+
return require_checkout_service.getCartCheckout(client, params);
|
|
292
|
+
}
|
|
293
|
+
async function getShippingOptions$1(params) {
|
|
294
|
+
const client = await apiClient();
|
|
295
|
+
return require_checkout_service.getShippingOptions(client, params);
|
|
296
|
+
}
|
|
297
|
+
async function putCartShippingMethod$1(params) {
|
|
298
|
+
const client = await apiClient();
|
|
299
|
+
return require_checkout_service.putCartShippingMethod(client, params);
|
|
300
|
+
}
|
|
301
|
+
async function putCartPaymentMethod$1(params) {
|
|
302
|
+
const client = await apiClient();
|
|
303
|
+
return require_checkout_service.putCartPaymentMethod(client, params);
|
|
304
|
+
}
|
|
305
|
+
async function patchCartBuyer$1(params) {
|
|
306
|
+
const client = await apiClient();
|
|
307
|
+
return require_checkout_service.patchCartBuyer(client, params);
|
|
308
|
+
}
|
|
309
|
+
async function patchCartAddresses$1(params) {
|
|
310
|
+
const client = await apiClient();
|
|
311
|
+
return require_checkout_service.patchCartAddresses(client, params);
|
|
312
|
+
}
|
|
313
|
+
async function checkoutCart$1(params, options = {}) {
|
|
314
|
+
const client = await apiClient();
|
|
315
|
+
return require_checkout_service.checkoutCart(client, params, options);
|
|
316
|
+
}
|
|
317
|
+
async function uploadPaymentReceipt$1(params) {
|
|
318
|
+
const client = await apiClient();
|
|
319
|
+
return require_checkout_service.uploadPaymentReceipt(client, params);
|
|
320
|
+
}
|
|
321
|
+
async function addCartPromotionCode$1(params) {
|
|
322
|
+
const client = await apiClient();
|
|
323
|
+
return require_checkout_service.addCartPromotionCode(client, params);
|
|
324
|
+
}
|
|
325
|
+
async function removeCartPromotionCode$1(params) {
|
|
326
|
+
const client = await apiClient();
|
|
327
|
+
return require_checkout_service.removeCartPromotionCode(client, params);
|
|
328
|
+
}
|
|
329
|
+
async function getCountries$1() {
|
|
330
|
+
return require_geo_service.getCountries(api);
|
|
331
|
+
}
|
|
332
|
+
async function getDepartments$1(params) {
|
|
333
|
+
return require_geo_service.getDepartments(api, params);
|
|
334
|
+
}
|
|
335
|
+
async function getProvinces$1(params) {
|
|
336
|
+
return require_geo_service.getProvinces(api, params);
|
|
337
|
+
}
|
|
338
|
+
async function getDistricts$1(params) {
|
|
339
|
+
return require_geo_service.getDistricts(api, params);
|
|
340
|
+
}
|
|
341
|
+
async function getCustomerAddresses$1(options = {}) {
|
|
342
|
+
const client = await apiClient();
|
|
343
|
+
return require_customer_address_service.getCustomerAddresses(client, options);
|
|
344
|
+
}
|
|
345
|
+
async function upsertCustomerAuthConfiguration$1(origin) {
|
|
346
|
+
return require_customer_session_service.upsertCustomerAuthConfiguration(await apiClient(), origin);
|
|
347
|
+
}
|
|
348
|
+
async function createCustomerSession$1(input) {
|
|
349
|
+
return require_customer_session_service.createCustomerSession(await apiClient(), input);
|
|
350
|
+
}
|
|
351
|
+
async function getCustomerSession$1(options) {
|
|
352
|
+
return require_customer_session_service.getCustomerSession(await apiClient(), options);
|
|
353
|
+
}
|
|
354
|
+
async function deleteCustomerSession$1(options) {
|
|
355
|
+
return require_customer_session_service.deleteCustomerSession(await apiClient(), options);
|
|
356
|
+
}
|
|
357
|
+
async function createCustomerAddress$1(data, options = {}) {
|
|
358
|
+
const client = await apiClient();
|
|
359
|
+
return require_customer_address_service.createCustomerAddress(client, data, options);
|
|
360
|
+
}
|
|
361
|
+
async function updateCustomerAddress$1(addressId, data, options = {}) {
|
|
362
|
+
const client = await apiClient();
|
|
363
|
+
return require_customer_address_service.updateCustomerAddress(client, addressId, data, options);
|
|
364
|
+
}
|
|
365
|
+
async function deleteCustomerAddress$1(addressId, options = {}) {
|
|
366
|
+
const client = await apiClient();
|
|
367
|
+
return require_customer_address_service.deleteCustomerAddress(client, addressId, options);
|
|
368
|
+
}
|
|
369
|
+
async function getCustomerRegistration$1(options) {
|
|
370
|
+
return require_customer_registration_service.getCustomerRegistration(await apiClient(), options);
|
|
371
|
+
}
|
|
372
|
+
async function completeCustomerRegistration$1(input, options) {
|
|
373
|
+
return require_customer_registration_service.completeCustomerRegistration(await apiClient(), input, options);
|
|
374
|
+
}
|
|
375
|
+
async function getCustomerMe$1(options = {}) {
|
|
376
|
+
const client = await apiClient();
|
|
377
|
+
return require_customer_service.getCustomerMe(client, options);
|
|
378
|
+
}
|
|
379
|
+
async function patchCustomer$1(data, options = {}) {
|
|
380
|
+
const client = await apiClient();
|
|
381
|
+
return require_customer_service.patchCustomer(client, data, options);
|
|
382
|
+
}
|
|
383
|
+
async function getCustomerOrders$1(options = {}) {
|
|
384
|
+
const client = await apiClient();
|
|
385
|
+
return require_customer_order_service.getCustomerOrders(client, options);
|
|
386
|
+
}
|
|
387
|
+
async function getCustomerOrder$1(orderId, options = {}) {
|
|
388
|
+
const client = await apiClient();
|
|
389
|
+
return require_customer_order_service.getCustomerOrder(client, orderId, options);
|
|
390
|
+
}
|
|
391
|
+
async function requestCustomerOrderReturn$1(orderId, input, options = {}) {
|
|
392
|
+
const client = await apiClient();
|
|
393
|
+
return require_customer_order_service.requestCustomerOrderReturn(client, orderId, input, options);
|
|
394
|
+
}
|
|
395
|
+
async function requestCustomerOrderCancellation$1(orderId, input, options = {}) {
|
|
396
|
+
const client = await apiClient();
|
|
397
|
+
return require_customer_order_service.requestCustomerOrderCancellation(client, orderId, input, options);
|
|
398
|
+
}
|
|
399
|
+
async function getOrderStatus$1(token) {
|
|
400
|
+
const client = await apiClient();
|
|
401
|
+
return require_order_status_service.getOrderStatus(client, token);
|
|
402
|
+
}
|
|
403
|
+
async function authenticateOrderPayment$1(token, transactionId, input) {
|
|
404
|
+
const client = await apiClient();
|
|
405
|
+
return require_order_status_service.authenticateOrderPayment(client, token, transactionId, input);
|
|
406
|
+
}
|
|
407
|
+
async function startOrderPayment$1(token, input) {
|
|
408
|
+
const client = await apiClient();
|
|
409
|
+
return require_order_status_service.startOrderPayment(client, token, input);
|
|
410
|
+
}
|
|
411
|
+
async function getOrderDraft$1(token) {
|
|
412
|
+
const client = await apiClient();
|
|
413
|
+
return require_order_draft_service.getOrderDraft(client, token);
|
|
414
|
+
}
|
|
415
|
+
async function uploadOrderPaymentReceipt$1(token, input) {
|
|
416
|
+
const client = await apiClient();
|
|
417
|
+
return require_order_status_service.uploadOrderPaymentReceipt(client, token, input);
|
|
418
|
+
}
|
|
419
|
+
async function checkoutOrderDraft$1(token) {
|
|
420
|
+
const client = await apiClient();
|
|
421
|
+
return require_order_draft_service.checkoutOrderDraft(client, token);
|
|
422
|
+
}
|
|
423
|
+
async function getComplaintBook$1() {
|
|
424
|
+
const client = await apiClient();
|
|
425
|
+
return require_complaint_book_service.getComplaintBook(client);
|
|
426
|
+
}
|
|
427
|
+
async function createComplaintBookEntry$1(input, files, captchaToken) {
|
|
428
|
+
const client = await apiClient();
|
|
429
|
+
return require_complaint_book_service.createComplaintBookEntry(client, input, files, captchaToken);
|
|
430
|
+
}
|
|
431
|
+
return {
|
|
432
|
+
...api,
|
|
433
|
+
graphql,
|
|
434
|
+
getSettings,
|
|
435
|
+
getLayout: getLayout$1,
|
|
436
|
+
getStoreId,
|
|
437
|
+
getCollections: getCollections$1,
|
|
438
|
+
getPaymentMethods: getPaymentMethods$1,
|
|
439
|
+
getCollectionBySlug: getCollectionBySlug$1,
|
|
440
|
+
getPageBySlug: getPageBySlug$1,
|
|
441
|
+
getCategoryBySlug: getCategoryBySlug$1,
|
|
442
|
+
resolveUrl: resolveUrl$1,
|
|
443
|
+
getLinks: getLinks$1,
|
|
444
|
+
getSitemap: getSitemap$1,
|
|
445
|
+
listArticles: listArticles$1,
|
|
446
|
+
getArticleBySlug: getArticleBySlug$1,
|
|
447
|
+
clearCache,
|
|
448
|
+
getSellers: getSellers$1,
|
|
449
|
+
getSellerBySlug: getSellerBySlug$1,
|
|
450
|
+
getProducts: getProducts$1,
|
|
451
|
+
getProductBySlug: getProductBySlug$1,
|
|
452
|
+
getRelatedProducts: getRelatedProducts$1,
|
|
453
|
+
autocompleteProducts: autocompleteProducts$1,
|
|
454
|
+
listProductReviews: listProductReviews$1,
|
|
455
|
+
listStoreReviews: listStoreReviews$1,
|
|
456
|
+
createProductReview: createProductReview$1,
|
|
457
|
+
createCustomerProductReview: createCustomerProductReview$1,
|
|
458
|
+
createCart: createCart$1,
|
|
459
|
+
getCart: getCart$1,
|
|
460
|
+
addCartItem: addCartItem$1,
|
|
461
|
+
updateCartItemQuantity: updateCartItemQuantity$1,
|
|
462
|
+
removeCartItem: removeCartItem$1,
|
|
463
|
+
getCartCheckout: getCartCheckout$1,
|
|
464
|
+
getShippingOptions: getShippingOptions$1,
|
|
465
|
+
putCartShippingMethod: putCartShippingMethod$1,
|
|
466
|
+
putCartPaymentMethod: putCartPaymentMethod$1,
|
|
467
|
+
patchCartBuyer: patchCartBuyer$1,
|
|
468
|
+
patchCartAddresses: patchCartAddresses$1,
|
|
469
|
+
checkoutCart: checkoutCart$1,
|
|
470
|
+
uploadPaymentReceipt: uploadPaymentReceipt$1,
|
|
471
|
+
addCartPromotionCode: addCartPromotionCode$1,
|
|
472
|
+
removeCartPromotionCode: removeCartPromotionCode$1,
|
|
473
|
+
getCountries: getCountries$1,
|
|
474
|
+
getDepartments: getDepartments$1,
|
|
475
|
+
getProvinces: getProvinces$1,
|
|
476
|
+
getDistricts: getDistricts$1,
|
|
477
|
+
getCustomerAddresses: getCustomerAddresses$1,
|
|
478
|
+
upsertCustomerAuthConfiguration: upsertCustomerAuthConfiguration$1,
|
|
479
|
+
createCustomerSession: createCustomerSession$1,
|
|
480
|
+
getCustomerSession: getCustomerSession$1,
|
|
481
|
+
getCustomerRegistration: getCustomerRegistration$1,
|
|
482
|
+
completeCustomerRegistration: completeCustomerRegistration$1,
|
|
483
|
+
deleteCustomerSession: deleteCustomerSession$1,
|
|
484
|
+
createCustomerAddress: createCustomerAddress$1,
|
|
485
|
+
updateCustomerAddress: updateCustomerAddress$1,
|
|
486
|
+
deleteCustomerAddress: deleteCustomerAddress$1,
|
|
487
|
+
getCustomerMe: getCustomerMe$1,
|
|
488
|
+
patchCustomer: patchCustomer$1,
|
|
489
|
+
getCustomerOrders: getCustomerOrders$1,
|
|
490
|
+
getCustomerOrder: getCustomerOrder$1,
|
|
491
|
+
requestCustomerOrderReturn: requestCustomerOrderReturn$1,
|
|
492
|
+
requestCustomerOrderCancellation: requestCustomerOrderCancellation$1,
|
|
493
|
+
getOrderStatus: getOrderStatus$1,
|
|
494
|
+
startOrderPayment: startOrderPayment$1,
|
|
495
|
+
authenticateOrderPayment: authenticateOrderPayment$1,
|
|
496
|
+
uploadOrderPaymentReceipt: uploadOrderPaymentReceipt$1,
|
|
497
|
+
getOrderDraft: getOrderDraft$1,
|
|
498
|
+
checkoutOrderDraft: checkoutOrderDraft$1,
|
|
499
|
+
getComplaintBook: getComplaintBook$1,
|
|
500
|
+
createComplaintBookEntry: createComplaintBookEntry$1
|
|
501
|
+
};
|
|
1679
502
|
}
|
|
1680
|
-
var createStorefrontClient = createClient;
|
|
1681
|
-
|
|
1682
503
|
exports.createClient = createClient;
|
|
1683
|
-
exports.createStorefrontClient = createStorefrontClient;
|
|
1684
|
-
//# sourceMappingURL=client.cjs.map
|
|
1685
|
-
//# sourceMappingURL=client.cjs.map
|