@ecomiq/core 0.1.9 → 1.1.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.
Files changed (278) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +39 -2
  3. package/dist/_virtual/_rolldown/runtime-C6LprzCP.cjs +22 -0
  4. package/dist/api.cjs +117 -102
  5. package/dist/api.d.cts +33 -37
  6. package/dist/api.d.ts +33 -37
  7. package/dist/api.js +116 -100
  8. package/dist/client.cjs +499 -1676
  9. package/dist/client.d.cts +156 -15
  10. package/dist/client.d.ts +156 -15
  11. package/dist/client.js +500 -1675
  12. package/dist/index.cjs +344 -2092
  13. package/dist/index.d.cts +54 -1127
  14. package/dist/index.d.ts +54 -1127
  15. package/dist/index.js +53 -1895
  16. package/dist/libs/bounded-read-cache-Abmb5VnJ.js +41 -0
  17. package/dist/libs/bounded-read-cache-D4644LJo.cjs +41 -0
  18. package/dist/libs/catalog-link-key-B7l5KZsF.js +9 -0
  19. package/dist/libs/catalog-link-key-CZTHJBGD.cjs +9 -0
  20. package/dist/libs/catalog-link-key.d.cts +2 -0
  21. package/dist/libs/catalog-link-key.d.ts +2 -0
  22. package/dist/libs/graphql-_6Y8lR_Q.js +49 -0
  23. package/dist/libs/graphql-selection-Cj51WkJn.cjs +21 -0
  24. package/dist/libs/graphql-selection-H1RMh6VD.js +21 -0
  25. package/dist/libs/graphql-selection.d.cts +3 -0
  26. package/dist/libs/graphql-selection.d.ts +3 -0
  27. package/dist/libs/graphql-wJH7HaQU.cjs +50 -0
  28. package/dist/libs/graphql.d.cts +24 -0
  29. package/dist/libs/graphql.d.ts +24 -0
  30. package/dist/models/amounts-cKBCecl7.js +5 -0
  31. package/dist/models/amounts-lmg89eJQ.cjs +4 -0
  32. package/dist/models/articles-C-4JvT2Z.js +27 -0
  33. package/dist/models/articles-xHCXLKDK.cjs +30 -0
  34. package/dist/models/articles.d.cts +46 -0
  35. package/dist/models/articles.d.ts +46 -0
  36. package/dist/models/catalog-links-BzJeyBy4.js +80 -0
  37. package/dist/models/catalog-links-c4LADGf_.cjs +88 -0
  38. package/dist/models/catalog-links.d.cts +39 -0
  39. package/dist/models/catalog-links.d.ts +39 -0
  40. package/dist/models/categories-CKkJY8_P.js +42 -0
  41. package/dist/models/categories-DZ5i5kwi.cjs +45 -0
  42. package/dist/models/categories.d.cts +54 -0
  43. package/dist/models/categories.d.ts +54 -0
  44. package/dist/models/collections.cjs +13 -22
  45. package/dist/models/collections.d.cts +23 -56
  46. package/dist/models/collections.d.ts +23 -56
  47. package/dist/models/collections.js +12 -20
  48. package/dist/models/complaint-book-D5INpuI2.cjs +64 -0
  49. package/dist/models/complaint-book-QpQZe7Xl.js +58 -0
  50. package/dist/models/complaint-book.d.cts +71 -0
  51. package/dist/models/complaint-book.d.ts +71 -0
  52. package/dist/models/customer-address.cjs +39 -38
  53. package/dist/models/customer-address.d.cts +59 -158
  54. package/dist/models/customer-address.d.ts +59 -158
  55. package/dist/models/customer-address.js +38 -36
  56. package/dist/models/customer-order.cjs +183 -142
  57. package/dist/models/customer-order.d.cts +474 -857
  58. package/dist/models/customer-order.d.ts +474 -857
  59. package/dist/models/customer-order.js +180 -141
  60. package/dist/models/customer-profile.cjs +121 -118
  61. package/dist/models/customer-profile.d.cts +89 -174
  62. package/dist/models/customer-profile.d.ts +89 -174
  63. package/dist/models/customer-profile.js +121 -116
  64. package/dist/models/customer-registration-C13knqyv.js +28 -0
  65. package/dist/models/customer-registration-EZ0yZgGr.cjs +31 -0
  66. package/dist/models/customer-registration.d.cts +66 -0
  67. package/dist/models/customer-registration.d.ts +66 -0
  68. package/dist/models/customer-session-BiX0TXhO.js +41 -0
  69. package/dist/models/customer-session-JeQiC8Yx.cjs +45 -0
  70. package/dist/models/customer-session.d.cts +61 -0
  71. package/dist/models/customer-session.d.ts +61 -0
  72. package/dist/models/geo.cjs +52 -49
  73. package/dist/models/geo.d.cts +141 -270
  74. package/dist/models/geo.d.ts +141 -270
  75. package/dist/models/geo.js +51 -47
  76. package/dist/models/ids.cjs +8 -11
  77. package/dist/models/ids.d.cts +7 -10
  78. package/dist/models/ids.d.ts +7 -10
  79. package/dist/models/ids.js +7 -9
  80. package/dist/models/order-draft-C-2WRbjl.cjs +41 -0
  81. package/dist/models/order-draft-CSIWRIV0.js +39 -0
  82. package/dist/models/order-draft.d.cts +69 -0
  83. package/dist/models/order-draft.d.ts +69 -0
  84. package/dist/models/order-review--xGlZKtS.cjs +18 -0
  85. package/dist/models/order-review-egGeCaqB.js +17 -0
  86. package/dist/models/order-review.d.cts +22 -0
  87. package/dist/models/order-review.d.ts +22 -0
  88. package/dist/models/order-status-CS_OeSPY.cjs +66 -0
  89. package/dist/models/order-status-CgaLkU0M.js +60 -0
  90. package/dist/models/order-status.d.cts +307 -0
  91. package/dist/models/order-status.d.ts +307 -0
  92. package/dist/models/payment-methods--VUUZpMz.js +17 -0
  93. package/dist/models/payment-methods-CmK08zBM.cjs +19 -0
  94. package/dist/models/payment-methods.d.cts +28 -0
  95. package/dist/models/payment-methods.d.ts +28 -0
  96. package/dist/models/personalization-BPFmkdJ0.js +69 -0
  97. package/dist/models/personalization-CQosKg8O.cjs +77 -0
  98. package/dist/models/personalization.d.cts +83 -0
  99. package/dist/models/personalization.d.ts +83 -0
  100. package/dist/models/products.cjs +218 -194
  101. package/dist/models/products.d.cts +646 -1353
  102. package/dist/models/products.d.ts +646 -1353
  103. package/dist/models/products.js +214 -187
  104. package/dist/models/search.cjs +13 -23
  105. package/dist/models/search.d.cts +21 -51
  106. package/dist/models/search.d.ts +21 -51
  107. package/dist/models/search.js +12 -21
  108. package/dist/models/sellers.cjs +44 -0
  109. package/dist/models/sellers.d.cts +82 -0
  110. package/dist/models/sellers.d.ts +82 -0
  111. package/dist/models/sellers.js +38 -0
  112. package/dist/models/settings.cjs +205 -236
  113. package/dist/models/settings.d.cts +853 -6940
  114. package/dist/models/settings.d.ts +853 -6940
  115. package/dist/models/settings.js +213 -239
  116. package/dist/models/storefront-cart.cjs +152 -118
  117. package/dist/models/storefront-cart.d.cts +277 -706
  118. package/dist/models/storefront-cart.d.ts +277 -706
  119. package/dist/models/storefront-cart.js +148 -117
  120. package/dist/models/storefront-checkout.cjs +212 -297
  121. package/dist/models/storefront-checkout.d.cts +672 -2449
  122. package/dist/models/storefront-checkout.d.ts +672 -2449
  123. package/dist/models/storefront-checkout.js +208 -297
  124. package/dist/models/storefront-reviews.cjs +58 -43
  125. package/dist/models/storefront-reviews.d.cts +71 -139
  126. package/dist/models/storefront-reviews.d.ts +71 -139
  127. package/dist/models/storefront-reviews.js +55 -42
  128. package/dist/models/tracking-CiIAhQW0.js +33 -0
  129. package/dist/models/tracking-wNyzQ6Bp.cjs +36 -0
  130. package/dist/models/tracking.d.cts +26 -0
  131. package/dist/models/tracking.d.ts +26 -0
  132. package/dist/models/urls-B0ZODOwH.cjs +35 -0
  133. package/dist/models/urls-Dt_dTt4Q.js +33 -0
  134. package/dist/models/urls.d.cts +233 -0
  135. package/dist/models/urls.d.ts +233 -0
  136. package/dist/redirects.cjs +113 -0
  137. package/dist/redirects.d.cts +11 -0
  138. package/dist/redirects.d.ts +11 -0
  139. package/dist/redirects.js +108 -0
  140. package/dist/services/article.service-DBsOvflH.js +10 -0
  141. package/dist/services/article.service-zmTkbbPV.cjs +11 -0
  142. package/dist/services/article.service.d.cts +4 -0
  143. package/dist/services/article.service.d.ts +4 -0
  144. package/dist/services/cart.service-B0D8s6jI.cjs +37 -0
  145. package/dist/services/cart.service-yMCz9oQP.js +33 -0
  146. package/dist/services/cart.service.d.cts +572 -0
  147. package/dist/services/cart.service.d.ts +572 -0
  148. package/dist/services/catalog-link.service-BQ2d-EPX.js +8 -0
  149. package/dist/services/catalog-link.service-DiB-OVjn.cjs +8 -0
  150. package/dist/services/category.service-8tieYX2r.js +6 -0
  151. package/dist/services/category.service-BsSJZV2B.cjs +6 -0
  152. package/dist/services/checkout.service-CC-3tm2y.js +60 -0
  153. package/dist/services/checkout.service-CG8KrDNY.cjs +69 -0
  154. package/dist/services/checkout.service.d.cts +475 -0
  155. package/dist/services/checkout.service.d.ts +475 -0
  156. package/dist/services/collection.service-C4QETpuI.js +11 -0
  157. package/dist/services/collection.service-DHGN3rhs.cjs +12 -0
  158. package/dist/services/complaint-book.service-C7TxltQe.cjs +13 -0
  159. package/dist/services/complaint-book.service-DXiVyKdD.js +12 -0
  160. package/dist/services/complaint-book.service.d.cts +4 -0
  161. package/dist/services/complaint-book.service.d.ts +4 -0
  162. package/dist/services/customer-address.service-Ca4qla_R.cjs +51 -0
  163. package/dist/services/customer-address.service-xEThx7cQ.js +47 -0
  164. package/dist/services/customer-address.service.d.cts +19 -0
  165. package/dist/services/customer-address.service.d.ts +19 -0
  166. package/dist/services/customer-order.service-DLGgT0xa.cjs +54 -0
  167. package/dist/services/customer-order.service-qHoRBuyX.js +51 -0
  168. package/dist/services/customer-order.service.d.cts +34 -0
  169. package/dist/services/customer-order.service.d.ts +34 -0
  170. package/dist/services/customer-registration.service-C3BNyCHP.cjs +10 -0
  171. package/dist/services/customer-registration.service-CxcWD2hf.js +9 -0
  172. package/dist/services/customer-registration.service.d.cts +5 -0
  173. package/dist/services/customer-registration.service.d.ts +5 -0
  174. package/dist/services/customer-session.service-4YgfbWRB.js +16 -0
  175. package/dist/services/customer-session.service-Bd8pLC2v.cjs +19 -0
  176. package/dist/services/customer.service-BM0NrOxP.cjs +26 -0
  177. package/dist/services/customer.service-BoU6l2-R.js +25 -0
  178. package/dist/services/customer.service.d.cts +10 -0
  179. package/dist/services/customer.service.d.ts +10 -0
  180. package/dist/services/geo.service-C32R7N8W.js +39 -0
  181. package/dist/services/geo.service-JeTT3Wun.cjs +42 -0
  182. package/dist/services/geo.service.d.cts +10 -0
  183. package/dist/services/geo.service.d.ts +10 -0
  184. package/dist/services/layout.service-BkvLzl1g.cjs +50 -0
  185. package/dist/services/layout.service-DmbeMOkK.js +50 -0
  186. package/dist/services/layout.service.d.cts +9 -0
  187. package/dist/services/layout.service.d.ts +9 -0
  188. package/dist/services/order-draft.service-B0VcmWhn.js +13 -0
  189. package/dist/services/order-draft.service-Dlu6eEkV.cjs +14 -0
  190. package/dist/services/order-draft.service.d.cts +4 -0
  191. package/dist/services/order-draft.service.d.ts +4 -0
  192. package/dist/services/order-review.service-BEr-FB6_.cjs +11 -0
  193. package/dist/services/order-review.service-PdBPUsxE.js +11 -0
  194. package/dist/services/order-review.service.d.cts +7 -0
  195. package/dist/services/order-review.service.d.ts +7 -0
  196. package/dist/services/order-status.service-Cn7dsaJo.cjs +26 -0
  197. package/dist/services/order-status.service-MC9hVpP-.js +23 -0
  198. package/dist/services/order-status.service.d.cts +16 -0
  199. package/dist/services/order-status.service.d.ts +16 -0
  200. package/dist/services/page.service-CWhWCjMQ.js +7 -0
  201. package/dist/services/page.service-DmCSeMiR.cjs +7 -0
  202. package/dist/services/page.service.d.cts +4 -0
  203. package/dist/services/page.service.d.ts +4 -0
  204. package/dist/services/payment-method.service-CEt_nB4R.cjs +7 -0
  205. package/dist/services/payment-method.service-CjKbAsOh.js +7 -0
  206. package/dist/services/payment-method.service.d.cts +4 -0
  207. package/dist/services/payment-method.service.d.ts +4 -0
  208. package/dist/services/product.service-B05Qmbuh.js +35 -0
  209. package/dist/services/product.service-B7OFZWB1.cjs +37 -0
  210. package/dist/services/product.service.d.cts +256 -0
  211. package/dist/services/product.service.d.ts +256 -0
  212. package/dist/services/review.service-CO2icjpu.cjs +46 -0
  213. package/dist/services/review.service-De1YkhFp.js +43 -0
  214. package/dist/services/review.service.d.cts +28 -0
  215. package/dist/services/review.service.d.ts +28 -0
  216. package/dist/services/search.service-Bx1zbTHJ.cjs +10 -0
  217. package/dist/services/search.service-DSBMhaSY.js +10 -0
  218. package/dist/services/search.service.d.cts +9 -0
  219. package/dist/services/search.service.d.ts +9 -0
  220. package/dist/services/seller.service-D11WHhbC.cjs +10 -0
  221. package/dist/services/seller.service-DUptDTv4.js +9 -0
  222. package/dist/services/seller.service.d.cts +42 -0
  223. package/dist/services/seller.service.d.ts +42 -0
  224. package/dist/services/tracking.service-CPK1B69N.js +11 -0
  225. package/dist/services/tracking.service-DqOoi8qr.cjs +11 -0
  226. package/dist/services/tracking.service.d.cts +7 -0
  227. package/dist/services/tracking.service.d.ts +7 -0
  228. package/dist/services/url.service-B-nC14Ue.cjs +19 -0
  229. package/dist/services/url.service-CLW0Tc7S.js +18 -0
  230. package/dist/storefront-cache-revision.cjs +23 -0
  231. package/dist/storefront-cache-revision.d.cts +16 -0
  232. package/dist/storefront-cache-revision.d.ts +16 -0
  233. package/dist/storefront-cache-revision.js +17 -0
  234. package/dist/storefront-routes.cjs +14 -0
  235. package/dist/storefront-routes.d.cts +11 -0
  236. package/dist/storefront-routes.d.ts +11 -0
  237. package/dist/storefront-routes.js +12 -0
  238. package/dist/utils-CDEC5xcY.cjs +139 -0
  239. package/dist/utils-DK7qa54o.js +136 -0
  240. package/dist/utils.d.cts +3 -0
  241. package/dist/utils.d.ts +3 -0
  242. package/dist/video-links-CbRO0m8V.js +47 -0
  243. package/dist/video-links-ClryQjPH.cjs +47 -0
  244. package/dist/video-links.d.cts +7 -0
  245. package/dist/video-links.d.ts +7 -0
  246. package/package.json +28 -11
  247. package/dist/api.cjs.map +0 -1
  248. package/dist/api.js.map +0 -1
  249. package/dist/client-Ba1r_uiO.d.ts +0 -195
  250. package/dist/client-Cqcnv2tC.d.cts +0 -195
  251. package/dist/client.cjs.map +0 -1
  252. package/dist/client.js.map +0 -1
  253. package/dist/index.cjs.map +0 -1
  254. package/dist/index.js.map +0 -1
  255. package/dist/models/collections.cjs.map +0 -1
  256. package/dist/models/collections.js.map +0 -1
  257. package/dist/models/customer-address.cjs.map +0 -1
  258. package/dist/models/customer-address.js.map +0 -1
  259. package/dist/models/customer-order.cjs.map +0 -1
  260. package/dist/models/customer-order.js.map +0 -1
  261. package/dist/models/customer-profile.cjs.map +0 -1
  262. package/dist/models/customer-profile.js.map +0 -1
  263. package/dist/models/geo.cjs.map +0 -1
  264. package/dist/models/geo.js.map +0 -1
  265. package/dist/models/ids.cjs.map +0 -1
  266. package/dist/models/ids.js.map +0 -1
  267. package/dist/models/products.cjs.map +0 -1
  268. package/dist/models/products.js.map +0 -1
  269. package/dist/models/search.cjs.map +0 -1
  270. package/dist/models/search.js.map +0 -1
  271. package/dist/models/settings.cjs.map +0 -1
  272. package/dist/models/settings.js.map +0 -1
  273. package/dist/models/storefront-cart.cjs.map +0 -1
  274. package/dist/models/storefront-cart.js.map +0 -1
  275. package/dist/models/storefront-checkout.cjs.map +0 -1
  276. package/dist/models/storefront-checkout.js.map +0 -1
  277. package/dist/models/storefront-reviews.cjs.map +0 -1
  278. package/dist/models/storefront-reviews.js.map +0 -1
@@ -0,0 +1,35 @@
1
+ const require_categories = require("./categories-DZ5i5kwi.cjs");
2
+ const require_models_products = require("./products.cjs");
3
+ let zod = require("zod");
4
+ // src/models/urls.ts
5
+ const UrlResolutionSchema = zod.z.discriminatedUnion("kind", [
6
+ zod.z.object({
7
+ kind: zod.z.literal("product"),
8
+ url: zod.z.string(),
9
+ handle: zod.z.string(),
10
+ product: require_models_products.ProductDetailSchema
11
+ }),
12
+ zod.z.object({
13
+ kind: zod.z.literal("category"),
14
+ url: zod.z.string(),
15
+ handle: zod.z.string(),
16
+ category: require_categories.CategoryDetailSchema
17
+ }),
18
+ zod.z.object({
19
+ kind: zod.z.literal("redirect"),
20
+ url: zod.z.string(),
21
+ handle: zod.z.null()
22
+ })
23
+ ]);
24
+ const SitemapItemSchema = zod.z.object({
25
+ url: zod.z.string(),
26
+ updatedOn: zod.z.string().datetime({ offset: true }).nullable()
27
+ });
28
+ const SitemapPageSchema = zod.z.object({
29
+ items: zod.z.array(SitemapItemSchema),
30
+ nextPage: zod.z.number().int().positive().nullable(),
31
+ totalPages: zod.z.number().int().positive()
32
+ });
33
+ exports.SitemapItemSchema = SitemapItemSchema;
34
+ exports.SitemapPageSchema = SitemapPageSchema;
35
+ exports.UrlResolutionSchema = UrlResolutionSchema;
@@ -0,0 +1,33 @@
1
+ import { CategoryDetailSchema } from "./categories-CKkJY8_P.js";
2
+ import { ProductDetailSchema } from "./products.js";
3
+ import { z } from "zod";
4
+ // src/models/urls.ts
5
+ const UrlResolutionSchema = z.discriminatedUnion("kind", [
6
+ z.object({
7
+ kind: z.literal("product"),
8
+ url: z.string(),
9
+ handle: z.string(),
10
+ product: ProductDetailSchema
11
+ }),
12
+ z.object({
13
+ kind: z.literal("category"),
14
+ url: z.string(),
15
+ handle: z.string(),
16
+ category: CategoryDetailSchema
17
+ }),
18
+ z.object({
19
+ kind: z.literal("redirect"),
20
+ url: z.string(),
21
+ handle: z.null()
22
+ })
23
+ ]);
24
+ const SitemapItemSchema = z.object({
25
+ url: z.string(),
26
+ updatedOn: z.string().datetime({ offset: true }).nullable()
27
+ });
28
+ const SitemapPageSchema = z.object({
29
+ items: z.array(SitemapItemSchema),
30
+ nextPage: z.number().int().positive().nullable(),
31
+ totalPages: z.number().int().positive()
32
+ });
33
+ export { SitemapItemSchema, SitemapPageSchema, UrlResolutionSchema };
@@ -0,0 +1,233 @@
1
+ import { z } from "zod";
2
+ export declare const UrlResolutionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3
+ kind: z.ZodLiteral<"product">;
4
+ url: z.ZodString;
5
+ handle: z.ZodString;
6
+ product: z.ZodObject<{
7
+ id: z.ZodString;
8
+ name: z.ZodString;
9
+ slug: z.ZodString;
10
+ url: z.ZodString;
11
+ description: z.ZodString;
12
+ productType: z.ZodString;
13
+ status: z.ZodString;
14
+ imageUrl: z.ZodString;
15
+ price: z.ZodNumber;
16
+ compareAtPrice: z.ZodNullable<z.ZodNumber>;
17
+ isAvailable: z.ZodBoolean;
18
+ totalInventory: z.ZodNumber;
19
+ brand: z.ZodString;
20
+ category: z.ZodString;
21
+ categoryId: z.ZodNullable<z.ZodString>;
22
+ tags: z.ZodArray<z.ZodString>;
23
+ specifications: z.ZodArray<z.ZodObject<{
24
+ key: z.ZodString;
25
+ name: z.ZodString;
26
+ value: z.ZodString;
27
+ valueId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
28
+ valueName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
29
+ type: z.ZodOptional<z.ZodEnum<{
30
+ checkbox: "checkbox";
31
+ colorPicker: "colorPicker";
32
+ datePicker: "datePicker";
33
+ dateTimePicker: "dateTimePicker";
34
+ file: "file";
35
+ input: "input";
36
+ number: "number";
37
+ select: "select";
38
+ textArea: "textArea";
39
+ timePicker: "timePicker";
40
+ url: "url";
41
+ }>>;
42
+ color: z.ZodOptional<z.ZodNullable<z.ZodString>>;
43
+ imageUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
44
+ unit: z.ZodOptional<z.ZodNullable<z.ZodString>>;
45
+ }, z.core.$strip>>;
46
+ variants: z.ZodArray<z.ZodObject<{
47
+ id: z.ZodNullable<z.ZodString>;
48
+ sku: z.ZodString;
49
+ status: z.ZodString;
50
+ price: z.ZodNumber;
51
+ compareAtPrice: z.ZodNullable<z.ZodNumber>;
52
+ quantity: z.ZodNumber;
53
+ isAvailable: z.ZodNullable<z.ZodBoolean>;
54
+ requiresShipping: z.ZodBoolean;
55
+ options: z.ZodArray<z.ZodObject<{
56
+ key: z.ZodString;
57
+ name: z.ZodString;
58
+ value: z.ZodString;
59
+ valueId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
60
+ valueName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
61
+ type: z.ZodOptional<z.ZodEnum<{
62
+ checkbox: "checkbox";
63
+ colorPicker: "colorPicker";
64
+ datePicker: "datePicker";
65
+ dateTimePicker: "dateTimePicker";
66
+ file: "file";
67
+ input: "input";
68
+ number: "number";
69
+ select: "select";
70
+ textArea: "textArea";
71
+ timePicker: "timePicker";
72
+ url: "url";
73
+ }>>;
74
+ color: z.ZodOptional<z.ZodNullable<z.ZodString>>;
75
+ imageUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
76
+ unit: z.ZodOptional<z.ZodNullable<z.ZodString>>;
77
+ }, z.core.$strip>>;
78
+ images: z.ZodArray<z.ZodObject<{
79
+ url: z.ZodString;
80
+ name: z.ZodString;
81
+ order: z.ZodNumber;
82
+ type: z.ZodDefault<z.ZodCatch<z.ZodEnum<{
83
+ image: "image";
84
+ video: "video";
85
+ }>>>;
86
+ }, z.core.$strip>>;
87
+ }, z.core.$strip>>;
88
+ images: z.ZodArray<z.ZodObject<{
89
+ url: z.ZodString;
90
+ name: z.ZodString;
91
+ order: z.ZodNumber;
92
+ type: z.ZodDefault<z.ZodCatch<z.ZodEnum<{
93
+ image: "image";
94
+ video: "video";
95
+ }>>>;
96
+ }, z.core.$strip>>;
97
+ bundleItems: z.ZodArray<z.ZodObject<{
98
+ productId: z.ZodString;
99
+ variantId: z.ZodString;
100
+ productName: z.ZodString;
101
+ variantName: z.ZodNullable<z.ZodString>;
102
+ sku: z.ZodNullable<z.ZodString>;
103
+ brand: z.ZodNullable<z.ZodString>;
104
+ imageUrl: z.ZodNullable<z.ZodString>;
105
+ quantity: z.ZodNumber;
106
+ available: z.ZodNumber;
107
+ allowBackorders: z.ZodBoolean;
108
+ requiresShipping: z.ZodBoolean;
109
+ }, z.core.$strip>>;
110
+ sizeGuide: z.ZodNullable<z.ZodObject<{
111
+ id: z.ZodString;
112
+ name: z.ZodString;
113
+ slug: z.ZodString;
114
+ description: z.ZodNullable<z.ZodString>;
115
+ imageUrl: z.ZodNullable<z.ZodString>;
116
+ gender: z.ZodString;
117
+ measurementType: z.ZodString;
118
+ unit: z.ZodString;
119
+ notes: z.ZodNullable<z.ZodString>;
120
+ rows: z.ZodArray<z.ZodObject<{
121
+ label: z.ZodString;
122
+ sizeKey: z.ZodString;
123
+ order: z.ZodNumber;
124
+ measurements: z.ZodArray<z.ZodObject<{
125
+ key: z.ZodString;
126
+ name: z.ZodString;
127
+ min: z.ZodNullable<z.ZodNumber>;
128
+ max: z.ZodNullable<z.ZodNumber>;
129
+ value: z.ZodNullable<z.ZodNumber>;
130
+ description: z.ZodNullable<z.ZodString>;
131
+ }, z.core.$strip>>;
132
+ }, z.core.$strip>>;
133
+ }, z.core.$strip>>;
134
+ priceTiers: z.ZodArray<z.ZodObject<{
135
+ variantId: z.ZodString;
136
+ minQuantity: z.ZodNumber;
137
+ maxQuantity: z.ZodNullable<z.ZodNumber>;
138
+ unitPrice: z.ZodNumber;
139
+ }, z.core.$strip>>;
140
+ modifierGroups: z.ZodArray<z.ZodObject<{
141
+ id: z.ZodString;
142
+ name: z.ZodString;
143
+ description: z.ZodNullable<z.ZodString>;
144
+ selectionType: z.ZodEnum<{
145
+ multiple: "multiple";
146
+ single: "single";
147
+ text: "text";
148
+ }>;
149
+ display: z.ZodEnum<{
150
+ color: "color";
151
+ font: "font";
152
+ image: "image";
153
+ list: "list";
154
+ }>;
155
+ isRequired: z.ZodBoolean;
156
+ minSelections: z.ZodNumber;
157
+ maxSelections: z.ZodNullable<z.ZodNumber>;
158
+ maxLength: z.ZodNullable<z.ZodNumber>;
159
+ priceDelta: z.ZodNumber;
160
+ options: z.ZodArray<z.ZodObject<{
161
+ id: z.ZodString;
162
+ name: z.ZodString;
163
+ priceDelta: z.ZodNumber;
164
+ isDefault: z.ZodBoolean;
165
+ color: z.ZodNullable<z.ZodString>;
166
+ fileUrl: z.ZodNullable<z.ZodString>;
167
+ fileName: z.ZodNullable<z.ZodString>;
168
+ tag: z.ZodNullable<z.ZodString>;
169
+ maxQuantity: z.ZodNumber;
170
+ }, z.core.$strip>>;
171
+ }, z.core.$strip>>;
172
+ createdAt: z.ZodNullable<z.ZodString>;
173
+ updatedAt: z.ZodNullable<z.ZodString>;
174
+ seller: z.ZodNullable<z.ZodObject<{
175
+ id: z.ZodString;
176
+ name: z.ZodString;
177
+ slug: z.ZodString;
178
+ }, z.core.$strip>>;
179
+ isPreview: z.ZodDefault<z.ZodBoolean>;
180
+ template: z.ZodDefault<z.ZodNullable<z.ZodString>>;
181
+ }, z.core.$strip>;
182
+ }, z.core.$strip>, z.ZodObject<{
183
+ kind: z.ZodLiteral<"category">;
184
+ url: z.ZodString;
185
+ handle: z.ZodString;
186
+ category: z.ZodObject<{
187
+ id: z.ZodString;
188
+ name: z.ZodString;
189
+ slug: z.ZodString;
190
+ url: z.ZodString;
191
+ description: z.ZodNullable<z.ZodString>;
192
+ imageUrl: z.ZodNullable<z.ZodString>;
193
+ metaTitle: z.ZodNullable<z.ZodString>;
194
+ metaDescription: z.ZodNullable<z.ZodString>;
195
+ parentId: z.ZodNullable<z.ZodString>;
196
+ productCount: z.ZodNumber;
197
+ ancestors: z.ZodArray<z.ZodObject<{
198
+ id: z.ZodString;
199
+ name: z.ZodString;
200
+ url: z.ZodString;
201
+ }, z.core.$strip>>;
202
+ children: z.ZodArray<z.ZodObject<{
203
+ id: z.ZodString;
204
+ name: z.ZodString;
205
+ slug: z.ZodString;
206
+ url: z.ZodString;
207
+ imageUrl: z.ZodNullable<z.ZodString>;
208
+ productCount: z.ZodNumber;
209
+ }, z.core.$strip>>;
210
+ }, z.core.$strip>;
211
+ }, z.core.$strip>, z.ZodObject<{
212
+ kind: z.ZodLiteral<"redirect">;
213
+ url: z.ZodString;
214
+ handle: z.ZodNull;
215
+ }, z.core.$strip>], "kind">;
216
+ export declare const SitemapItemSchema: z.ZodObject<{
217
+ url: z.ZodString;
218
+ updatedOn: z.ZodNullable<z.ZodString>;
219
+ }, z.core.$strip>;
220
+ export declare const SitemapPageSchema: z.ZodObject<{
221
+ items: z.ZodArray<z.ZodObject<{
222
+ url: z.ZodString;
223
+ updatedOn: z.ZodNullable<z.ZodString>;
224
+ }, z.core.$strip>>;
225
+ nextPage: z.ZodNullable<z.ZodNumber>;
226
+ totalPages: z.ZodNumber;
227
+ }, z.core.$strip>;
228
+ export type UrlResolution = z.infer<typeof UrlResolutionSchema>;
229
+ export type SitemapItem = z.infer<typeof SitemapItemSchema>;
230
+ export type SitemapPage = z.infer<typeof SitemapPageSchema>;
231
+ export interface UrlResolutionOptions {
232
+ previewKey?: string;
233
+ }
@@ -0,0 +1,233 @@
1
+ import { z } from "zod";
2
+ export declare const UrlResolutionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3
+ kind: z.ZodLiteral<"product">;
4
+ url: z.ZodString;
5
+ handle: z.ZodString;
6
+ product: z.ZodObject<{
7
+ id: z.ZodString;
8
+ name: z.ZodString;
9
+ slug: z.ZodString;
10
+ url: z.ZodString;
11
+ description: z.ZodString;
12
+ productType: z.ZodString;
13
+ status: z.ZodString;
14
+ imageUrl: z.ZodString;
15
+ price: z.ZodNumber;
16
+ compareAtPrice: z.ZodNullable<z.ZodNumber>;
17
+ isAvailable: z.ZodBoolean;
18
+ totalInventory: z.ZodNumber;
19
+ brand: z.ZodString;
20
+ category: z.ZodString;
21
+ categoryId: z.ZodNullable<z.ZodString>;
22
+ tags: z.ZodArray<z.ZodString>;
23
+ specifications: z.ZodArray<z.ZodObject<{
24
+ key: z.ZodString;
25
+ name: z.ZodString;
26
+ value: z.ZodString;
27
+ valueId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
28
+ valueName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
29
+ type: z.ZodOptional<z.ZodEnum<{
30
+ checkbox: "checkbox";
31
+ colorPicker: "colorPicker";
32
+ datePicker: "datePicker";
33
+ dateTimePicker: "dateTimePicker";
34
+ file: "file";
35
+ input: "input";
36
+ number: "number";
37
+ select: "select";
38
+ textArea: "textArea";
39
+ timePicker: "timePicker";
40
+ url: "url";
41
+ }>>;
42
+ color: z.ZodOptional<z.ZodNullable<z.ZodString>>;
43
+ imageUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
44
+ unit: z.ZodOptional<z.ZodNullable<z.ZodString>>;
45
+ }, z.core.$strip>>;
46
+ variants: z.ZodArray<z.ZodObject<{
47
+ id: z.ZodNullable<z.ZodString>;
48
+ sku: z.ZodString;
49
+ status: z.ZodString;
50
+ price: z.ZodNumber;
51
+ compareAtPrice: z.ZodNullable<z.ZodNumber>;
52
+ quantity: z.ZodNumber;
53
+ isAvailable: z.ZodNullable<z.ZodBoolean>;
54
+ requiresShipping: z.ZodBoolean;
55
+ options: z.ZodArray<z.ZodObject<{
56
+ key: z.ZodString;
57
+ name: z.ZodString;
58
+ value: z.ZodString;
59
+ valueId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
60
+ valueName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
61
+ type: z.ZodOptional<z.ZodEnum<{
62
+ checkbox: "checkbox";
63
+ colorPicker: "colorPicker";
64
+ datePicker: "datePicker";
65
+ dateTimePicker: "dateTimePicker";
66
+ file: "file";
67
+ input: "input";
68
+ number: "number";
69
+ select: "select";
70
+ textArea: "textArea";
71
+ timePicker: "timePicker";
72
+ url: "url";
73
+ }>>;
74
+ color: z.ZodOptional<z.ZodNullable<z.ZodString>>;
75
+ imageUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
76
+ unit: z.ZodOptional<z.ZodNullable<z.ZodString>>;
77
+ }, z.core.$strip>>;
78
+ images: z.ZodArray<z.ZodObject<{
79
+ url: z.ZodString;
80
+ name: z.ZodString;
81
+ order: z.ZodNumber;
82
+ type: z.ZodDefault<z.ZodCatch<z.ZodEnum<{
83
+ image: "image";
84
+ video: "video";
85
+ }>>>;
86
+ }, z.core.$strip>>;
87
+ }, z.core.$strip>>;
88
+ images: z.ZodArray<z.ZodObject<{
89
+ url: z.ZodString;
90
+ name: z.ZodString;
91
+ order: z.ZodNumber;
92
+ type: z.ZodDefault<z.ZodCatch<z.ZodEnum<{
93
+ image: "image";
94
+ video: "video";
95
+ }>>>;
96
+ }, z.core.$strip>>;
97
+ bundleItems: z.ZodArray<z.ZodObject<{
98
+ productId: z.ZodString;
99
+ variantId: z.ZodString;
100
+ productName: z.ZodString;
101
+ variantName: z.ZodNullable<z.ZodString>;
102
+ sku: z.ZodNullable<z.ZodString>;
103
+ brand: z.ZodNullable<z.ZodString>;
104
+ imageUrl: z.ZodNullable<z.ZodString>;
105
+ quantity: z.ZodNumber;
106
+ available: z.ZodNumber;
107
+ allowBackorders: z.ZodBoolean;
108
+ requiresShipping: z.ZodBoolean;
109
+ }, z.core.$strip>>;
110
+ sizeGuide: z.ZodNullable<z.ZodObject<{
111
+ id: z.ZodString;
112
+ name: z.ZodString;
113
+ slug: z.ZodString;
114
+ description: z.ZodNullable<z.ZodString>;
115
+ imageUrl: z.ZodNullable<z.ZodString>;
116
+ gender: z.ZodString;
117
+ measurementType: z.ZodString;
118
+ unit: z.ZodString;
119
+ notes: z.ZodNullable<z.ZodString>;
120
+ rows: z.ZodArray<z.ZodObject<{
121
+ label: z.ZodString;
122
+ sizeKey: z.ZodString;
123
+ order: z.ZodNumber;
124
+ measurements: z.ZodArray<z.ZodObject<{
125
+ key: z.ZodString;
126
+ name: z.ZodString;
127
+ min: z.ZodNullable<z.ZodNumber>;
128
+ max: z.ZodNullable<z.ZodNumber>;
129
+ value: z.ZodNullable<z.ZodNumber>;
130
+ description: z.ZodNullable<z.ZodString>;
131
+ }, z.core.$strip>>;
132
+ }, z.core.$strip>>;
133
+ }, z.core.$strip>>;
134
+ priceTiers: z.ZodArray<z.ZodObject<{
135
+ variantId: z.ZodString;
136
+ minQuantity: z.ZodNumber;
137
+ maxQuantity: z.ZodNullable<z.ZodNumber>;
138
+ unitPrice: z.ZodNumber;
139
+ }, z.core.$strip>>;
140
+ modifierGroups: z.ZodArray<z.ZodObject<{
141
+ id: z.ZodString;
142
+ name: z.ZodString;
143
+ description: z.ZodNullable<z.ZodString>;
144
+ selectionType: z.ZodEnum<{
145
+ multiple: "multiple";
146
+ single: "single";
147
+ text: "text";
148
+ }>;
149
+ display: z.ZodEnum<{
150
+ color: "color";
151
+ font: "font";
152
+ image: "image";
153
+ list: "list";
154
+ }>;
155
+ isRequired: z.ZodBoolean;
156
+ minSelections: z.ZodNumber;
157
+ maxSelections: z.ZodNullable<z.ZodNumber>;
158
+ maxLength: z.ZodNullable<z.ZodNumber>;
159
+ priceDelta: z.ZodNumber;
160
+ options: z.ZodArray<z.ZodObject<{
161
+ id: z.ZodString;
162
+ name: z.ZodString;
163
+ priceDelta: z.ZodNumber;
164
+ isDefault: z.ZodBoolean;
165
+ color: z.ZodNullable<z.ZodString>;
166
+ fileUrl: z.ZodNullable<z.ZodString>;
167
+ fileName: z.ZodNullable<z.ZodString>;
168
+ tag: z.ZodNullable<z.ZodString>;
169
+ maxQuantity: z.ZodNumber;
170
+ }, z.core.$strip>>;
171
+ }, z.core.$strip>>;
172
+ createdAt: z.ZodNullable<z.ZodString>;
173
+ updatedAt: z.ZodNullable<z.ZodString>;
174
+ seller: z.ZodNullable<z.ZodObject<{
175
+ id: z.ZodString;
176
+ name: z.ZodString;
177
+ slug: z.ZodString;
178
+ }, z.core.$strip>>;
179
+ isPreview: z.ZodDefault<z.ZodBoolean>;
180
+ template: z.ZodDefault<z.ZodNullable<z.ZodString>>;
181
+ }, z.core.$strip>;
182
+ }, z.core.$strip>, z.ZodObject<{
183
+ kind: z.ZodLiteral<"category">;
184
+ url: z.ZodString;
185
+ handle: z.ZodString;
186
+ category: z.ZodObject<{
187
+ id: z.ZodString;
188
+ name: z.ZodString;
189
+ slug: z.ZodString;
190
+ url: z.ZodString;
191
+ description: z.ZodNullable<z.ZodString>;
192
+ imageUrl: z.ZodNullable<z.ZodString>;
193
+ metaTitle: z.ZodNullable<z.ZodString>;
194
+ metaDescription: z.ZodNullable<z.ZodString>;
195
+ parentId: z.ZodNullable<z.ZodString>;
196
+ productCount: z.ZodNumber;
197
+ ancestors: z.ZodArray<z.ZodObject<{
198
+ id: z.ZodString;
199
+ name: z.ZodString;
200
+ url: z.ZodString;
201
+ }, z.core.$strip>>;
202
+ children: z.ZodArray<z.ZodObject<{
203
+ id: z.ZodString;
204
+ name: z.ZodString;
205
+ slug: z.ZodString;
206
+ url: z.ZodString;
207
+ imageUrl: z.ZodNullable<z.ZodString>;
208
+ productCount: z.ZodNumber;
209
+ }, z.core.$strip>>;
210
+ }, z.core.$strip>;
211
+ }, z.core.$strip>, z.ZodObject<{
212
+ kind: z.ZodLiteral<"redirect">;
213
+ url: z.ZodString;
214
+ handle: z.ZodNull;
215
+ }, z.core.$strip>], "kind">;
216
+ export declare const SitemapItemSchema: z.ZodObject<{
217
+ url: z.ZodString;
218
+ updatedOn: z.ZodNullable<z.ZodString>;
219
+ }, z.core.$strip>;
220
+ export declare const SitemapPageSchema: z.ZodObject<{
221
+ items: z.ZodArray<z.ZodObject<{
222
+ url: z.ZodString;
223
+ updatedOn: z.ZodNullable<z.ZodString>;
224
+ }, z.core.$strip>>;
225
+ nextPage: z.ZodNullable<z.ZodNumber>;
226
+ totalPages: z.ZodNumber;
227
+ }, z.core.$strip>;
228
+ export type UrlResolution = z.infer<typeof UrlResolutionSchema>;
229
+ export type SitemapItem = z.infer<typeof SitemapItemSchema>;
230
+ export type SitemapPage = z.infer<typeof SitemapPageSchema>;
231
+ export interface UrlResolutionOptions {
232
+ previewKey?: string;
233
+ }
@@ -0,0 +1,113 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ let zod = require("zod");
3
+ // src/redirects.ts
4
+ const matchSchema = zod.z.object({ redirect: zod.z.object({
5
+ location: zod.z.string().min(1).max(2048),
6
+ statusCode: zod.z.union([zod.z.literal(301), zod.z.literal(302)]),
7
+ preserveQuery: zod.z.boolean()
8
+ }).nullable() });
9
+ const PRIVATE_STOREFRONT_SUBTREES = [
10
+ "account",
11
+ "checkout",
12
+ "cart",
13
+ "orders",
14
+ "drafts"
15
+ ];
16
+ const protectedSubtrees = /* @__PURE__ */ new Set([
17
+ ...PRIVATE_STOREFRONT_SUBTREES,
18
+ "thank-you",
19
+ "auth",
20
+ "track",
21
+ "review",
22
+ "api",
23
+ "_server",
24
+ "_build",
25
+ "assets",
26
+ "_ecomiq",
27
+ "__ecomiq",
28
+ ".well-known"
29
+ ]);
30
+ const protectedPaths = /* @__PURE__ */ new Set([
31
+ "login",
32
+ "register",
33
+ "demo",
34
+ "ping",
35
+ "robots.txt",
36
+ "sitemap.xml",
37
+ "favicon.ico"
38
+ ]);
39
+ /** Exact, case-sensitive paths; trailing slash and equivalent escapes match. */
40
+ function storefrontRedirectPath(input) {
41
+ const path = input.trim().replace(/\/+$/, "") || "/";
42
+ if (!path.startsWith("/") || path.startsWith("//") || /[\\?#\s\u0000-\u001f\u007f]/u.test(path)) return null;
43
+ if (path === "/") return path;
44
+ try {
45
+ return "/" + path.slice(1).split("/").map((segment) => {
46
+ const decoded = decodeURIComponent(segment);
47
+ if (!decoded || decoded === "." || decoded === ".." || /[/\\%\u0000-\u001f\u007f]/u.test(decoded)) throw new Error("Invalid path");
48
+ return encodeURIComponent(decoded).replace(/[!'()*]/g, (character) => "%" + character.charCodeAt(0).toString(16).toUpperCase());
49
+ }).join("/");
50
+ } catch {
51
+ return null;
52
+ }
53
+ }
54
+ function isStorefrontRedirectSource(path) {
55
+ const canonical = storefrontRedirectPath(path);
56
+ if (canonical === null || canonical === "/") return false;
57
+ let segments = canonical.slice(1).toLowerCase().split("/");
58
+ if (segments.length > 1 && /^[a-z]{2}(?:-[a-z]{2})?$/.test(segments[0])) segments = segments.slice(1);
59
+ return !protectedSubtrees.has(segments[0]) && !(segments.length === 1 && protectedPaths.has(segments[0]));
60
+ }
61
+ function storefrontRedirectLocation(requestUrl, location, preserveQuery) {
62
+ if (/[\\\s\u0000-\u001f\u007f]/u.test(location) || /%0[ad]/i.test(location)) return null;
63
+ const local = location.startsWith("/") && !location.startsWith("//");
64
+ if (!local && !location.startsWith("https://")) return null;
65
+ try {
66
+ const target = new URL(location, requestUrl);
67
+ if (target.username || target.password || !local && target.protocol !== "https:") return null;
68
+ if (storefrontRedirectPath(local ? location.split(/[?#]/)[0] : location.slice(8).replace(/^[^/?#]+/, "").split(/[?#]/)[0] || "/") === null) return null;
69
+ if (target.origin === requestUrl.origin && storefrontRedirectPath(target.pathname) === storefrontRedirectPath(requestUrl.pathname)) return null;
70
+ if (preserveQuery) {
71
+ const explicit = new Set(target.searchParams.keys());
72
+ for (const [key, value] of requestUrl.searchParams) if (!explicit.has(key)) target.searchParams.append(key, value);
73
+ }
74
+ return local ? `${target.pathname}${target.search}${target.hash}` : target.href;
75
+ } catch {
76
+ return null;
77
+ }
78
+ }
79
+ /** Resolve before rendering. Redirect responses and lookups never enter HTML caches. */
80
+ async function redirectStorefrontRequest(request, options) {
81
+ const url = new URL(request.url);
82
+ if (!["GET", "HEAD"].includes(request.method) || !isStorefrontRedirectSource(url.pathname)) return null;
83
+ const endpoint = new URL("v1/redirects/resolve", options.apiBaseUrl.replace(/\/v1\/?$/, "").replace(/\/?$/, "/"));
84
+ endpoint.searchParams.set("path", url.pathname);
85
+ const response = await (options.fetch ?? fetch)(endpoint, {
86
+ headers: {
87
+ accept: "application/json",
88
+ "x-Store-Domain": options.storeDomain
89
+ },
90
+ cache: "no-store",
91
+ redirect: "manual",
92
+ signal: AbortSignal.timeout(3e3)
93
+ });
94
+ if (response.type === "opaqueredirect" || response.status >= 300 && response.status < 400) throw new Error(`Storefront redirect lookup was redirected (HTTP ${response.status})`);
95
+ if (response.status === 404) return null;
96
+ if (!response.ok) throw new Error(`Storefront redirect lookup failed (HTTP ${response.status})`);
97
+ const { redirect } = matchSchema.parse(await response.json());
98
+ if (redirect === null) return null;
99
+ const location = storefrontRedirectLocation(url, redirect.location, redirect.preserveQuery);
100
+ if (location === null) throw new Error("Invalid storefront redirect target");
101
+ return new Response(null, {
102
+ status: redirect.statusCode,
103
+ headers: {
104
+ location,
105
+ "cache-control": "no-store"
106
+ }
107
+ });
108
+ }
109
+ exports.PRIVATE_STOREFRONT_SUBTREES = PRIVATE_STOREFRONT_SUBTREES;
110
+ exports.isStorefrontRedirectSource = isStorefrontRedirectSource;
111
+ exports.redirectStorefrontRequest = redirectStorefrontRequest;
112
+ exports.storefrontRedirectLocation = storefrontRedirectLocation;
113
+ exports.storefrontRedirectPath = storefrontRedirectPath;
@@ -0,0 +1,11 @@
1
+ export declare const PRIVATE_STOREFRONT_SUBTREES: readonly ['account', 'checkout', 'cart', 'orders', 'drafts'];
2
+ /** Exact, case-sensitive paths; trailing slash and equivalent escapes match. */
3
+ export declare function storefrontRedirectPath(input: string): string | null;
4
+ export declare function isStorefrontRedirectSource(path: string): boolean;
5
+ export declare function storefrontRedirectLocation(requestUrl: URL, location: string, preserveQuery: boolean): string | null;
6
+ /** Resolve before rendering. Redirect responses and lookups never enter HTML caches. */
7
+ export declare function redirectStorefrontRequest(request: Request, options: {
8
+ apiBaseUrl: string;
9
+ storeDomain: string;
10
+ fetch?: typeof fetch;
11
+ }): Promise<Response | null>;
@@ -0,0 +1,11 @@
1
+ export declare const PRIVATE_STOREFRONT_SUBTREES: readonly ['account', 'checkout', 'cart', 'orders', 'drafts'];
2
+ /** Exact, case-sensitive paths; trailing slash and equivalent escapes match. */
3
+ export declare function storefrontRedirectPath(input: string): string | null;
4
+ export declare function isStorefrontRedirectSource(path: string): boolean;
5
+ export declare function storefrontRedirectLocation(requestUrl: URL, location: string, preserveQuery: boolean): string | null;
6
+ /** Resolve before rendering. Redirect responses and lookups never enter HTML caches. */
7
+ export declare function redirectStorefrontRequest(request: Request, options: {
8
+ apiBaseUrl: string;
9
+ storeDomain: string;
10
+ fetch?: typeof fetch;
11
+ }): Promise<Response | null>;