@sixtyninecommerce/client 0.24.0 → 0.25.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 (293) hide show
  1. package/README.md +21 -0
  2. package/dist/admin/forms.js +19 -0
  3. package/dist/admin/forms.js.map +1 -1
  4. package/dist/admin/http.d.ts +9 -0
  5. package/dist/admin/http.d.ts.map +1 -1
  6. package/dist/admin/http.js +3 -0
  7. package/dist/admin/http.js.map +1 -1
  8. package/dist/admin/index.d.ts +63 -0
  9. package/dist/admin/index.d.ts.map +1 -1
  10. package/dist/admin/index.js +67 -0
  11. package/dist/admin/index.js.map +1 -1
  12. package/dist/admin/redirects.d.ts +6 -0
  13. package/dist/admin/redirects.d.ts.map +1 -1
  14. package/dist/admin/redirects.js +12 -0
  15. package/dist/admin/redirects.js.map +1 -1
  16. package/dist/admin/types.d.ts +63 -0
  17. package/dist/admin/types.d.ts.map +1 -1
  18. package/dist/cache-tags.d.ts +19 -0
  19. package/dist/cache-tags.d.ts.map +1 -1
  20. package/dist/cache-tags.js +19 -0
  21. package/dist/cache-tags.js.map +1 -1
  22. package/dist/client.d.ts +17 -0
  23. package/dist/client.d.ts.map +1 -1
  24. package/dist/client.js +17 -0
  25. package/dist/client.js.map +1 -1
  26. package/dist/commerce/age-verification.js +3 -3
  27. package/dist/commerce/age-verification.js.map +1 -1
  28. package/dist/commerce/branding.js +7 -0
  29. package/dist/commerce/branding.js.map +1 -1
  30. package/dist/commerce/cart.js +25 -0
  31. package/dist/commerce/cart.js.map +1 -1
  32. package/dist/commerce/checkout.d.ts +68 -0
  33. package/dist/commerce/checkout.d.ts.map +1 -1
  34. package/dist/commerce/checkout.js +83 -0
  35. package/dist/commerce/checkout.js.map +1 -1
  36. package/dist/commerce/customer.d.ts +58 -0
  37. package/dist/commerce/customer.d.ts.map +1 -1
  38. package/dist/commerce/customer.js +65 -0
  39. package/dist/commerce/customer.js.map +1 -1
  40. package/dist/commerce/pickup-location-parser.d.ts +18 -0
  41. package/dist/commerce/pickup-location-parser.d.ts.map +1 -1
  42. package/dist/commerce/pickup-location-parser.js +28 -0
  43. package/dist/commerce/pickup-location-parser.js.map +1 -1
  44. package/dist/commerce/placement-error.d.ts +52 -0
  45. package/dist/commerce/placement-error.d.ts.map +1 -1
  46. package/dist/commerce/placement-error.js +87 -0
  47. package/dist/commerce/placement-error.js.map +1 -1
  48. package/dist/commerce/products.d.ts +48 -0
  49. package/dist/commerce/products.d.ts.map +1 -1
  50. package/dist/commerce/products.js +92 -0
  51. package/dist/commerce/products.js.map +1 -1
  52. package/dist/commerce/queries.d.ts +113 -27
  53. package/dist/commerce/queries.d.ts.map +1 -1
  54. package/dist/commerce/queries.js +188 -2
  55. package/dist/commerce/queries.js.map +1 -1
  56. package/dist/commerce/quotes.js +33 -0
  57. package/dist/commerce/quotes.js.map +1 -1
  58. package/dist/commerce/saved-lists.d.ts +7 -7
  59. package/dist/commerce/saved-lists.d.ts.map +1 -1
  60. package/dist/commerce/saved-lists.js +1 -1
  61. package/dist/commerce/search.js +3 -0
  62. package/dist/commerce/search.js.map +1 -1
  63. package/dist/commerce/shipping.js +3 -3
  64. package/dist/commerce/shipping.js.map +1 -1
  65. package/dist/commerce/stock-notifications.d.ts +11 -0
  66. package/dist/commerce/stock-notifications.d.ts.map +1 -1
  67. package/dist/commerce/stock-notifications.js +11 -0
  68. package/dist/commerce/stock-notifications.js.map +1 -1
  69. package/dist/commerce/vat-validation.js +4 -4
  70. package/dist/commerce/vat-validation.js.map +1 -1
  71. package/dist/constants.d.ts +31 -0
  72. package/dist/constants.d.ts.map +1 -1
  73. package/dist/constants.js +32 -0
  74. package/dist/constants.js.map +1 -1
  75. package/dist/content/asset-urls.d.ts +50 -0
  76. package/dist/content/asset-urls.d.ts.map +1 -1
  77. package/dist/content/asset-urls.js +92 -0
  78. package/dist/content/asset-urls.js.map +1 -1
  79. package/dist/content/assets.d.ts +15 -0
  80. package/dist/content/assets.d.ts.map +1 -1
  81. package/dist/content/assets.js +15 -0
  82. package/dist/content/assets.js.map +1 -1
  83. package/dist/content/collection-pages.d.ts +5 -0
  84. package/dist/content/collection-pages.d.ts.map +1 -1
  85. package/dist/content/collection-pages.js +8 -0
  86. package/dist/content/collection-pages.js.map +1 -1
  87. package/dist/content/collections.d.ts +14 -0
  88. package/dist/content/collections.d.ts.map +1 -1
  89. package/dist/content/collections.js +16 -0
  90. package/dist/content/collections.js.map +1 -1
  91. package/dist/content/filtered-products.d.ts +18 -0
  92. package/dist/content/filtered-products.d.ts.map +1 -1
  93. package/dist/content/filtered-products.js +16 -0
  94. package/dist/content/filtered-products.js.map +1 -1
  95. package/dist/content/form-field-types.d.ts +6 -0
  96. package/dist/content/form-field-types.d.ts.map +1 -1
  97. package/dist/content/form-field-types.js +12 -0
  98. package/dist/content/form-field-types.js.map +1 -1
  99. package/dist/content/forms.d.ts +16 -0
  100. package/dist/content/forms.d.ts.map +1 -1
  101. package/dist/content/forms.js +23 -0
  102. package/dist/content/forms.js.map +1 -1
  103. package/dist/content/items.d.ts +26 -0
  104. package/dist/content/items.d.ts.map +1 -1
  105. package/dist/content/items.js +33 -0
  106. package/dist/content/items.js.map +1 -1
  107. package/dist/content/resolve.js +6 -0
  108. package/dist/content/resolve.js.map +1 -1
  109. package/dist/content/sitemap.d.ts +5 -0
  110. package/dist/content/sitemap.d.ts.map +1 -1
  111. package/dist/content/sitemap.js +5 -0
  112. package/dist/content/sitemap.js.map +1 -1
  113. package/dist/core/context.js +6 -0
  114. package/dist/core/context.js.map +1 -1
  115. package/dist/core/headers.js +2 -0
  116. package/dist/core/headers.js.map +1 -1
  117. package/dist/core/http.d.ts +8 -0
  118. package/dist/core/http.d.ts.map +1 -1
  119. package/dist/core/http.js +89 -1
  120. package/dist/core/http.js.map +1 -1
  121. package/dist/credit/credit-status.js +2 -2
  122. package/dist/credit/credit-status.js.map +1 -1
  123. package/dist/credit/payment-terms.js +2 -2
  124. package/dist/credit/payment-terms.js.map +1 -1
  125. package/dist/currency/exchange.d.ts +11 -0
  126. package/dist/currency/exchange.d.ts.map +1 -1
  127. package/dist/currency/exchange.js +11 -0
  128. package/dist/currency/exchange.js.map +1 -1
  129. package/dist/errors.d.ts +50 -2
  130. package/dist/errors.d.ts.map +1 -1
  131. package/dist/errors.js +48 -2
  132. package/dist/errors.js.map +1 -1
  133. package/dist/events/envelope.d.ts +36 -0
  134. package/dist/events/envelope.d.ts.map +1 -1
  135. package/dist/events/envelope.js +12 -0
  136. package/dist/events/envelope.js.map +1 -1
  137. package/dist/events/index.d.ts +13 -0
  138. package/dist/events/index.d.ts.map +1 -1
  139. package/dist/events/index.js +13 -0
  140. package/dist/events/index.js.map +1 -1
  141. package/dist/events/payloads.d.ts +19 -0
  142. package/dist/events/payloads.d.ts.map +1 -1
  143. package/dist/events/payloads.js +12 -0
  144. package/dist/events/payloads.js.map +1 -1
  145. package/dist/index.d.ts +7 -0
  146. package/dist/index.d.ts.map +1 -1
  147. package/dist/index.js +7 -0
  148. package/dist/index.js.map +1 -1
  149. package/dist/media/index.js +2 -0
  150. package/dist/media/index.js.map +1 -1
  151. package/dist/media/urls.d.ts +52 -0
  152. package/dist/media/urls.d.ts.map +1 -1
  153. package/dist/media/urls.js +38 -0
  154. package/dist/media/urls.js.map +1 -1
  155. package/dist/media/video.d.ts +16 -0
  156. package/dist/media/video.d.ts.map +1 -1
  157. package/dist/media/video.js +16 -0
  158. package/dist/media/video.js.map +1 -1
  159. package/dist/next/artifact-handler.d.ts +22 -0
  160. package/dist/next/artifact-handler.d.ts.map +1 -1
  161. package/dist/next/artifact-handler.js +22 -0
  162. package/dist/next/artifact-handler.js.map +1 -1
  163. package/dist/next/event-revalidate-handler.d.ts +67 -0
  164. package/dist/next/event-revalidate-handler.d.ts.map +1 -1
  165. package/dist/next/event-revalidate-handler.js +48 -0
  166. package/dist/next/event-revalidate-handler.js.map +1 -1
  167. package/dist/next/index.d.ts +6 -0
  168. package/dist/next/index.d.ts.map +1 -1
  169. package/dist/next/index.js +6 -0
  170. package/dist/next/index.js.map +1 -1
  171. package/dist/next/json-ld.d.ts +9 -0
  172. package/dist/next/json-ld.d.ts.map +1 -1
  173. package/dist/next/json-ld.js +9 -0
  174. package/dist/next/json-ld.js.map +1 -1
  175. package/dist/next/metadata.d.ts +18 -0
  176. package/dist/next/metadata.d.ts.map +1 -1
  177. package/dist/next/metadata.js +21 -0
  178. package/dist/next/metadata.js.map +1 -1
  179. package/dist/next/redirect-middleware.d.ts +39 -0
  180. package/dist/next/redirect-middleware.d.ts.map +1 -1
  181. package/dist/next/redirect-middleware.js +32 -0
  182. package/dist/next/redirect-middleware.js.map +1 -1
  183. package/dist/next/revalidate-handler.d.ts +30 -0
  184. package/dist/next/revalidate-handler.d.ts.map +1 -1
  185. package/dist/next/revalidate-handler.js +22 -0
  186. package/dist/next/revalidate-handler.js.map +1 -1
  187. package/dist/order-scope.d.ts +27 -0
  188. package/dist/order-scope.d.ts.map +1 -1
  189. package/dist/order-scope.js +29 -0
  190. package/dist/order-scope.js.map +1 -1
  191. package/dist/pricing/format.d.ts +17 -0
  192. package/dist/pricing/format.d.ts.map +1 -1
  193. package/dist/pricing/format.js +19 -0
  194. package/dist/pricing/format.js.map +1 -1
  195. package/dist/pricing/index.d.ts +8 -1
  196. package/dist/pricing/index.d.ts.map +1 -1
  197. package/dist/pricing/index.js +18 -2
  198. package/dist/pricing/index.js.map +1 -1
  199. package/dist/pricing/tax-display.d.ts +77 -0
  200. package/dist/pricing/tax-display.d.ts.map +1 -1
  201. package/dist/pricing/tax-display.js +85 -0
  202. package/dist/pricing/tax-display.js.map +1 -1
  203. package/dist/pricing/tiers.d.ts +9 -0
  204. package/dist/pricing/tiers.d.ts.map +1 -1
  205. package/dist/pricing/tiers.js +9 -0
  206. package/dist/pricing/tiers.js.map +1 -1
  207. package/dist/pricing/validation.d.ts +56 -1
  208. package/dist/pricing/validation.d.ts.map +1 -1
  209. package/dist/pricing/validation.js +61 -0
  210. package/dist/pricing/validation.js.map +1 -1
  211. package/dist/redirects/index.d.ts +1 -0
  212. package/dist/redirects/index.d.ts.map +1 -1
  213. package/dist/redirects/index.js +1 -0
  214. package/dist/redirects/index.js.map +1 -1
  215. package/dist/redirects/store.d.ts +20 -0
  216. package/dist/redirects/store.d.ts.map +1 -1
  217. package/dist/redirects/store.js +57 -0
  218. package/dist/redirects/store.js.map +1 -1
  219. package/dist/redirects/types.d.ts +24 -0
  220. package/dist/redirects/types.d.ts.map +1 -1
  221. package/dist/redirects/types.js +1 -0
  222. package/dist/redirects/types.js.map +1 -1
  223. package/dist/revalidation/event-plan.d.ts +48 -0
  224. package/dist/revalidation/event-plan.d.ts.map +1 -1
  225. package/dist/revalidation/event-plan.js +61 -0
  226. package/dist/revalidation/event-plan.js.map +1 -1
  227. package/dist/revalidation/event-verify.d.ts +25 -0
  228. package/dist/revalidation/event-verify.d.ts.map +1 -1
  229. package/dist/revalidation/event-verify.js +27 -0
  230. package/dist/revalidation/event-verify.js.map +1 -1
  231. package/dist/revalidation/types.d.ts +20 -0
  232. package/dist/revalidation/types.d.ts.map +1 -1
  233. package/dist/revalidation/types.js +10 -0
  234. package/dist/revalidation/types.js.map +1 -1
  235. package/dist/revalidation/url-context.d.ts +25 -0
  236. package/dist/revalidation/url-context.d.ts.map +1 -1
  237. package/dist/revalidation/url-context.js +17 -0
  238. package/dist/revalidation/url-context.js.map +1 -1
  239. package/dist/revalidation/verify.d.ts +8 -0
  240. package/dist/revalidation/verify.d.ts.map +1 -1
  241. package/dist/revalidation/verify.js +8 -0
  242. package/dist/revalidation/verify.js.map +1 -1
  243. package/dist/seo/ai.d.ts +17 -0
  244. package/dist/seo/ai.d.ts.map +1 -1
  245. package/dist/seo/ai.js +12 -0
  246. package/dist/seo/ai.js.map +1 -1
  247. package/dist/seo/alternates.js +13 -0
  248. package/dist/seo/alternates.js.map +1 -1
  249. package/dist/seo/artifacts.d.ts +13 -0
  250. package/dist/seo/artifacts.d.ts.map +1 -1
  251. package/dist/seo/artifacts.js +19 -0
  252. package/dist/seo/artifacts.js.map +1 -1
  253. package/dist/seo/canonical.d.ts +15 -0
  254. package/dist/seo/canonical.d.ts.map +1 -1
  255. package/dist/seo/canonical.js +24 -0
  256. package/dist/seo/canonical.js.map +1 -1
  257. package/dist/seo/index.js +6 -0
  258. package/dist/seo/index.js.map +1 -1
  259. package/dist/seo/json-ld.d.ts +13 -0
  260. package/dist/seo/json-ld.d.ts.map +1 -1
  261. package/dist/seo/json-ld.js +32 -0
  262. package/dist/seo/json-ld.js.map +1 -1
  263. package/dist/seo/locale-tag.d.ts +31 -0
  264. package/dist/seo/locale-tag.d.ts.map +1 -1
  265. package/dist/seo/locale-tag.js +31 -0
  266. package/dist/seo/locale-tag.js.map +1 -1
  267. package/dist/seo/meta-tags.d.ts +29 -0
  268. package/dist/seo/meta-tags.d.ts.map +1 -1
  269. package/dist/seo/meta-tags.js +28 -0
  270. package/dist/seo/meta-tags.js.map +1 -1
  271. package/dist/seo/metadata-parser.d.ts +24 -0
  272. package/dist/seo/metadata-parser.d.ts.map +1 -1
  273. package/dist/seo/metadata-parser.js +38 -0
  274. package/dist/seo/metadata-parser.js.map +1 -1
  275. package/dist/seo/metadata-types.d.ts +16 -0
  276. package/dist/seo/metadata-types.d.ts.map +1 -1
  277. package/dist/seo/product-path.d.ts +96 -0
  278. package/dist/seo/product-path.d.ts.map +1 -1
  279. package/dist/seo/product-path.js +96 -0
  280. package/dist/seo/product-path.js.map +1 -1
  281. package/dist/seo/robots.d.ts +17 -0
  282. package/dist/seo/robots.d.ts.map +1 -1
  283. package/dist/seo/robots.js +12 -0
  284. package/dist/seo/robots.js.map +1 -1
  285. package/dist/seo/types.d.ts +39 -0
  286. package/dist/seo/types.d.ts.map +1 -1
  287. package/dist/seo/url-builder.d.ts +31 -0
  288. package/dist/seo/url-builder.d.ts.map +1 -1
  289. package/dist/seo/url-builder.js +36 -0
  290. package/dist/seo/url-builder.js.map +1 -1
  291. package/dist/types.d.ts +1163 -0
  292. package/dist/types.d.ts.map +1 -1
  293. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/events/envelope.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAoBD,MAAM,WAAW,qBAAqB,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEpE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAE/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IAEtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;CACtB;AAGD,MAAM,WAAW,iBAAiB,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAChE,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;IAK/C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAK3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE3B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC"}
1
+ {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/events/envelope.ts"],"names":[],"mappings":"AAaA,8EAA8E;AAC9E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,qBAAqB,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACpE,uFAAuF;IACvF,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,uDAAuD;IACvD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,2EAA2E;IAC3E,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,iFAAiF;IACjF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;CACtB;AAED,iCAAiC;AACjC,MAAM,WAAW,iBAAiB,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAChE,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;IAC/C;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,mFAAmF;IACnF,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,2FAA2F;IAC3F,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC"}
@@ -1,2 +1,14 @@
1
+ // @sixtynine-shim event-envelope v1
2
+ // CANONICAL COPY: packages/shared/src/events/shims/event-envelope.ts — the published SDK
3
+ // (@sixtyninecommerce/client) carries a byte-identical copy as
4
+ // packages/storefront-client/src/events/envelope.ts. It cannot import this package: the
5
+ // SDK declares no dependencies and takes commerce-shared as a devDependency only, so a
6
+ // `workspace:*` import would pass every local gate (dep-check reads dist/) and break every
7
+ // external `npm i`. packages/shared's shim-drift spec fails when a copy diverges; edit the
8
+ // canonical file, then re-copy.
9
+ //
10
+ // TYPES ONLY. The catalog's event-type union is deliberately NOT shipped: reproducing it
11
+ // means reproducing the @ts-expect-error guard that fails the build when the union collapses
12
+ // to `string`, and a copy that re-exports the type instead disarms that guard silently.
1
13
  export {};
2
14
  //# sourceMappingURL=envelope.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/events/envelope.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/events/envelope.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,yFAAyF;AACzF,+DAA+D;AAC/D,wFAAwF;AACxF,uFAAuF;AACvF,2FAA2F;AAC3F,2FAA2F;AAC3F,gCAAgC;AAChC,EAAE;AACF,yFAAyF;AACzF,6FAA6F;AAC7F,wFAAwF"}
@@ -1,3 +1,16 @@
1
+ /**
2
+ * Platform events: the envelope you receive, how to verify a webhook, and the
3
+ * revalidation a storefront-facing event calls for.
4
+ *
5
+ * Two surfaces deliver the same envelope. A **webhook** POST is signed — verify
6
+ * `X-Webhook-Signature` against the RAW request body, before parsing, with the secret shown
7
+ * once when the subscription was created (`verifyEventDelivery` does that and checks the
8
+ * `delivered_at` replay window). The **pull feed** (`GET /events` on the plugins
9
+ * API, with an API token holding `ReadPlatformEvents`) carries no signature and no
10
+ * `delivered_at`: the authenticated request is the freshness proof, and a feed serving 90
11
+ * days of history would put every row outside any replay window you could sensibly set.
12
+ * `planRevalidation` works on envelopes from either surface.
13
+ */
1
14
  export { collectionCacheTag, productCacheTag, SEO_ARTIFACT_TAG } from '../cache-tags.js';
2
15
  export type { RevalidationDegradedReason, RevalidationPlan, RevalidationPlanOptions, RevalidationSkipReason, } from '../revalidation/event-plan.js';
3
16
  export { EventPayloadError, planRevalidation } from '../revalidation/event-plan.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzF,YAAY,EACV,0BAA0B,EAC1B,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACpF,YAAY,EACV,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,YAAY,EACV,iBAAiB,EACjB,UAAU,EACV,gBAAgB,GACjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,mBAAmB,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzF,YAAY,EACV,0BAA0B,EAC1B,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACpF,YAAY,EACV,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,YAAY,EACV,iBAAiB,EACjB,UAAU,EACV,gBAAgB,GACjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,mBAAmB,eAAe,CAAC"}
@@ -1,3 +1,16 @@
1
+ /**
2
+ * Platform events: the envelope you receive, how to verify a webhook, and the
3
+ * revalidation a storefront-facing event calls for.
4
+ *
5
+ * Two surfaces deliver the same envelope. A **webhook** POST is signed — verify
6
+ * `X-Webhook-Signature` against the RAW request body, before parsing, with the secret shown
7
+ * once when the subscription was created (`verifyEventDelivery` does that and checks the
8
+ * `delivered_at` replay window). The **pull feed** (`GET /events` on the plugins
9
+ * API, with an API token holding `ReadPlatformEvents`) carries no signature and no
10
+ * `delivered_at`: the authenticated request is the freshness proof, and a feed serving 90
11
+ * days of history would put every row outside any replay window you could sensibly set.
12
+ * `planRevalidation` works on envelopes from either surface.
13
+ */
1
14
  export { collectionCacheTag, productCacheTag, SEO_ARTIFACT_TAG } from '../cache-tags.js';
2
15
  export { EventPayloadError, planRevalidation } from '../revalidation/event-plan.js';
3
16
  export { verifyEventDelivery } from '../revalidation/event-verify.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAOzF,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAKpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAMtE,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAOzF,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAKpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAMtE,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -1,8 +1,12 @@
1
1
  export type ContentItemStatusV1 = 'draft' | 'published' | 'archived' | 'removed';
2
2
  export type ContentChangeClass = 'slug' | 'translated_slug' | 'parent' | 'position' | 'values';
3
+ /** One locale's stored path for a CMS item. */
3
4
  export type ContentPathV1 = {
5
+ /** Vendure's raw spelling — `en`, `nl`, `en_GB` with an underscore. */
4
6
  language_code: string;
7
+ /** Channel-relative, locale-unprefixed (`/blog/hello`). `null`: no URL in this locale. */
5
8
  path: string | null;
9
+ /** The path before this change when it moved; `null` when it did not. */
6
10
  previous_path: string | null;
7
11
  };
8
12
  export type ContentItemBaseV1 = {
@@ -11,20 +15,26 @@ export type ContentItemBaseV1 = {
11
15
  collection_slug: string;
12
16
  status: ContentItemStatusV1;
13
17
  is_published: boolean;
18
+ /** Names the `paths` entry every locale WITHOUT its own entry falls back to. */
14
19
  default_language_code: string;
20
+ /** Default-language entry always present and first; one entry per translated locale. */
15
21
  paths: ContentPathV1[];
22
+ /** True when locale entries were dropped: revalidate more broadly. */
16
23
  paths_truncated: boolean;
17
24
  };
18
25
  export type ContentPublishedV1 = ContentItemBaseV1;
19
26
  export type ContentUnpublishedV1 = ContentItemBaseV1;
20
27
  export type ContentUpdatedV1 = ContentItemBaseV1 & {
28
+ /** Which keys the mutation INPUT carried — a hint, never a diff. */
21
29
  changed: ContentChangeClass[];
22
30
  };
23
31
  export type ContentCollectionChangeClass = 'name' | 'slug' | 'description' | 'singleton' | 'hierarchical' | 'title_field' | 'page_values' | 'fields';
24
32
  export type ContentCollectionBaseV1 = {
25
33
  collection_id: string | null;
26
34
  collection_slug: string;
35
+ /** The index page's path, channel-relative and locale-unprefixed; `null`: no index page. */
27
36
  base_path: string | null;
37
+ /** The base path before this change when it moved — every item path moved with it. */
28
38
  previous_base_path: string | null;
29
39
  };
30
40
  export type ContentCollectionCreatedV1 = ContentCollectionBaseV1;
@@ -50,6 +60,7 @@ export type CollectionStateV1 = {
50
60
  };
51
61
  export type CollectionEntityChangeBaseV1 = CollectionStateV1 & {
52
62
  collection_id: string | null;
63
+ /** `null` means the event carried no input (core's `move()`) — never the quieter case. */
53
64
  changed: CollectionChangeClass[] | null;
54
65
  translation_language_codes: string[];
55
66
  translation_language_codes_truncated: boolean;
@@ -63,6 +74,7 @@ export type CollectionAffectedScopeV1 = 'changed' | 'membership';
63
74
  export type CollectionMembershipChangedV1 = {
64
75
  collection_id: string | null;
65
76
  affected_scope: CollectionAffectedScopeV1;
77
+ /** VARIANT ids, capped; a sample, never an enumeration. */
66
78
  affected_variant_ids: string[];
67
79
  affected_variant_ids_truncated: boolean;
68
80
  is_private: boolean;
@@ -72,11 +84,14 @@ export type UrlLocaleStrategyV1 = 'path-prefix' | 'subdomain' | 'none';
72
84
  export type ChannelUrlSettingClass = 'storefront_url' | 'url_locale_strategy' | 'url_locale_prefix_default' | 'commerce_path_prefix' | 'commerce_path_prefix_translations' | 'product_path_segment' | 'default_language' | 'available_languages';
73
85
  export type ChannelPathPrefixV1 = {
74
86
  language_code: string;
87
+ /** `''` means "no prefix in this language"; an absent entry falls back to the default. */
75
88
  path_prefix: string;
76
89
  };
90
+ /** The channel's complete URL rule set AFTER the change. */
77
91
  export type ChannelUrlSettingsChangedV1 = {
78
92
  channel_id: string | null;
79
93
  changed: ChannelUrlSettingClass[];
94
+ /** Trailing slashes removed; `null` when unset. */
80
95
  storefront_url: string | null;
81
96
  url_locale_strategy: UrlLocaleStrategyV1;
82
97
  url_locale_prefix_default: boolean;
@@ -94,6 +109,7 @@ export type SeoPathChangeV1 = {
94
109
  entity_type: SeoPathEntityTypeV1;
95
110
  entity_id: string;
96
111
  language_code: string;
112
+ /** Channel-relative, locale-unprefixed; the commerce prefix is ALREADY applied. */
97
113
  path: string;
98
114
  };
99
115
  export type SeoPathsChangedV1 = {
@@ -126,11 +142,14 @@ export type ProductVariantPriceChangedV1 = {
126
142
  product_id: string | null;
127
143
  sku: string;
128
144
  currency_code: string;
145
+ /** Minor units, net of tax. */
129
146
  price: number;
147
+ /** Minor units, gross. */
130
148
  price_with_tax: number;
131
149
  changed_currency_codes: string[];
132
150
  changed_currency_codes_truncated: boolean;
133
151
  };
152
+ /** Payload per event type, version 1, for every type `createEventRevalidateHandler` acts on. */
134
153
  export interface RevalidationPayloadByTypeV1 {
135
154
  'content.published': ContentPublishedV1;
136
155
  'content.updated': ContentUpdatedV1;
@@ -1 +1 @@
1
- {"version":3,"file":"payloads.d.ts","sourceRoot":"","sources":["../../src/events/payloads.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"payloads.d.ts","sourceRoot":"","sources":["../../src/events/payloads.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,14 @@
1
+ // @sixtynine-shim revalidation-payloads v1
2
+ // CANONICAL COPY: packages/shared/src/events/shims/revalidation-payloads.ts — the published SDK
3
+ // (@sixtyninecommerce/client) carries a byte-identical copy as
4
+ // packages/storefront-client/src/events/payloads.ts, for the same reason as event-envelope.ts:
5
+ // the SDK cannot import this private package at runtime or from its emitted .d.ts.
6
+ // packages/shared's shim-drift spec fails when a copy diverges, and fails typecheck when a
7
+ // type here stops being structurally identical to its source in packages/shared/src/events/
8
+ // payloads/. Edit the source contract first, mirror it here, then re-copy.
9
+ //
10
+ // TYPES ONLY, and only the families a storefront revalidator reads. The runtime key tuples and
11
+ // vocabularies stay in the platform: a published copy of them could not be fixed in a consumer's
12
+ // node_modules.
1
13
  export {};
2
14
  //# sourceMappingURL=payloads.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"payloads.js","sourceRoot":"","sources":["../../src/events/payloads.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"payloads.js","sourceRoot":"","sources":["../../src/events/payloads.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,gGAAgG;AAChG,+DAA+D;AAC/D,+FAA+F;AAC/F,mFAAmF;AACnF,2FAA2F;AAC3F,4FAA4F;AAC5F,2EAA2E;AAC3E,EAAE;AACF,+FAA+F;AAC/F,iGAAiG;AACjG,gBAAgB"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,10 @@
1
+ /**
2
+ * @sixtyninecommerce/client — JS/TS SDK for sixtynine-commerce storefronts.
3
+ *
4
+ * Start here: `createStorefrontClient({ storeCode, cdnUrl })`.
5
+ * See the subpath exports for pricing helpers (`/pricing`) and media URL
6
+ * builders (`/media`).
7
+ */
1
8
  export { cacheTagsForRoute, collectionCacheTag, productCacheTag, SEO_ARTIFACT_TAG, } from './cache-tags.js';
2
9
  export { createStorefrontClient } from './client.js';
3
10
  export { DEFAULT_CMS_URL, DEFAULT_PLUGINS_URL, DEFAULT_VENDURE_URL, ORDER_SCOPE_HEADER, RESERVED_STOREFRONT_PATHS, type ReservedStorefrontPath, SHOP_API_PATH, } from './constants.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,3 +1,10 @@
1
+ /**
2
+ * @sixtyninecommerce/client — JS/TS SDK for sixtynine-commerce storefronts.
3
+ *
4
+ * Start here: `createStorefrontClient({ storeCode, cdnUrl })`.
5
+ * See the subpath exports for pricing helpers (`/pricing`) and media URL
6
+ * builders (`/media`).
7
+ */
1
8
  export { cacheTagsForRoute, collectionCacheTag, productCacheTag, SEO_ARTIFACT_TAG, } from './cache-tags.js';
2
9
  export { createStorefrontClient } from './client.js';
3
10
  export { DEFAULT_CMS_URL, DEFAULT_PLUGINS_URL, DEFAULT_VENDURE_URL, ORDER_SCOPE_HEADER, RESERVED_STOREFRONT_PATHS, SHOP_API_PATH, } from './constants.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,EAEzB,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,2BAA2B,GAG5B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,GAOtB,MAAM,sBAAsB,CAAC;AA+C9B,OAAO,EACL,QAAQ,EACR,4BAA4B,EAC5B,gBAAgB,EAChB,2BAA2B,EAC3B,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,eAAe,GAChB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,EAEzB,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,2BAA2B,GAG5B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,GAOtB,MAAM,sBAAsB,CAAC;AA+C9B,OAAO,EACL,QAAQ,EACR,4BAA4B,EAC5B,gBAAgB,EAChB,2BAA2B,EAC3B,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,eAAe,GAChB,MAAM,gBAAgB,CAAC"}
@@ -6,6 +6,8 @@ export function createMediaModule(ctx) {
6
6
  return {
7
7
  assetUrl: resolveUrl,
8
8
  getFullUrl(asset) {
9
+ // resolveUrl already handles channel-prefix stripping, empty input and
10
+ // already-absolute passthrough — feed it the raw source key.
9
11
  return resolveUrl(asset.source);
10
12
  },
11
13
  getPresetUrl(asset, preset, format) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/media/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEhG,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,cAAc,EACd,YAAY,EACZ,sBAAsB,EACtB,aAAa,EACb,OAAO,EACP,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,WAAW,EACX,eAAe,EACf,iBAAiB,EAEjB,aAAa,GAId,MAAM,YAAY,CAAC;AAEpB,MAAM,UAAU,iBAAiB,CAAC,GAAiB;IACjD,MAAM,UAAU,GAAG,6BAA6B,CAAC,GAAG,CAAC,CAAC;IAEtD,OAAO;QACL,QAAQ,EAAE,UAAU;QACpB,UAAU,CAAC,KAAK;YAGd,OAAO,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;QACD,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM;YAChC,OAAO,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,sBAAsB,CAAC,KAAK,EAAE,OAAO;YACnC,MAAM,IAAI,GAAG,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACpD,OAAO;gBACL,GAAG,IAAI;gBACP,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;gBACzB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACjB,CAAC,CAAC,IAAI,CAAC,MAAM;yBACR,KAAK,CAAC,IAAI,CAAC;yBACX,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;wBACb,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;wBACzC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;wBACtC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;wBAC1C,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,EAAE,CAAC;oBAC3C,CAAC,CAAC;yBACD,IAAI,CAAC,IAAI,CAAC;oBACf,CAAC,CAAC,EAAE;aACP,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/media/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEhG,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,cAAc,EACd,YAAY,EACZ,sBAAsB,EACtB,aAAa,EACb,OAAO,EACP,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,WAAW,EACX,eAAe,EACf,iBAAiB,EAEjB,aAAa,GAId,MAAM,YAAY,CAAC;AAEpB,MAAM,UAAU,iBAAiB,CAAC,GAAiB;IACjD,MAAM,UAAU,GAAG,6BAA6B,CAAC,GAAG,CAAC,CAAC;IAEtD,OAAO;QACL,QAAQ,EAAE,UAAU;QACpB,UAAU,CAAC,KAAK;YACd,uEAAuE;YACvE,6DAA6D;YAC7D,OAAO,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;QACD,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM;YAChC,OAAO,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,sBAAsB,CAAC,KAAK,EAAE,OAAO;YACnC,MAAM,IAAI,GAAG,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACpD,OAAO;gBACL,GAAG,IAAI;gBACP,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;gBACzB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACjB,CAAC,CAAC,IAAI,CAAC,MAAM;yBACR,KAAK,CAAC,IAAI,CAAC;yBACX,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;wBACb,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;wBACzC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;wBACtC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;wBAC1C,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,EAAE,CAAC;oBAC3C,CAAC,CAAC;yBACD,IAAI,CAAC,IAAI,CAAC;oBACf,CAAC,CAAC,EAAE;aACP,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,4 +1,13 @@
1
1
  import type { Asset, PresetName, ResponsiveImageData, StoreContext } from '../types.js';
2
+ /**
3
+ * Image preset definitions — must stay in sync with
4
+ * `@sixtynine-digital/commerce-shared/image-presets`. Drift is caught at test
5
+ * time by `media.spec.ts` (see "presets sync with shared package" suite),
6
+ * which imports the source-of-truth and asserts equality.
7
+ *
8
+ * The constants are inlined here because storefront-client is published to npm
9
+ * and the shared package is private to the monorepo.
10
+ */
2
11
  export declare const PRESETS: {
3
12
  readonly xxs: {
4
13
  readonly width: 50;
@@ -26,12 +35,55 @@ export declare const PRESETS: {
26
35
  };
27
36
  };
28
37
  export declare const DEFAULT_PRESET: PresetName;
38
+ /** MIME types that have generated presets (raster images only). */
29
39
  export declare const RASTER_MIME_TYPES: Set<string>;
30
40
  export declare function isRasterImage(mimeType: string): boolean;
41
+ /**
42
+ * Prepend CDN URL to a relative asset path.
43
+ * Returns the original if already absolute or empty.
44
+ */
31
45
  export declare function makeAssetUrl(cdnUrl: string, path: string): string;
46
+ /**
47
+ * Turn a stored asset path into an absolute URL.
48
+ *
49
+ * Assets are stored in R2 and the API returns STORAGE KEYS, not URLs —
50
+ * `assetUrlPrefix` is deliberately blank when R2 is configured, so that each
51
+ * channel can serve them from its own CDN domain. Prefixing is therefore the
52
+ * client's job, and this is the one place that knows how: prepend the CDN
53
+ * origin, and strip the `{channelCode}/` prefix when the channel serves from a
54
+ * domain that already scopes to it.
55
+ *
56
+ * Every surface that hands an asset URL to a consumer MUST go through this.
57
+ * The SEO module did not, which is how `og:image` came to be
58
+ * `rollz/source/26/…/xl/artboard-49__02.jpg` — a storage key that resolves to
59
+ * nothing against the site origin, so social cards and `Product.image` were
60
+ * broken for every product.
61
+ */
32
62
  export type AssetUrlResolver = (path: string | null | undefined) => string;
33
63
  export declare function createAssetUrlResolver(cdnUrl: string, channelPrefix: string | null): AssetUrlResolver;
64
+ /**
65
+ * The resolver for a given store context.
66
+ *
67
+ * The DERIVATION lives here, not just the stripping rule: `createMediaModule`
68
+ * and `createSeoModule` both need it, and a resolver whose arguments are worked
69
+ * out independently in two places is the same drift risk one layer up. If the
70
+ * prefix rule ever grows (a per-channel asset prefix, `{code}/content/`), it
71
+ * changes once.
72
+ */
34
73
  export declare function createContextAssetUrlResolver(ctx: StoreContext): AssetUrlResolver;
74
+ /**
75
+ * Get the URL for a specific preset from an asset's presets object.
76
+ * Falls back to the asset source if presets are not available.
77
+ */
35
78
  export declare function getPresetUrl(asset: Asset, preset: PresetName, format?: 'original' | 'webp'): string;
79
+ /**
80
+ * Build responsive image data for use in <img> or <picture> elements.
81
+ * Returns srcSet with widths matching preset dimensions.
82
+ *
83
+ * `width`/`height` are the asset's REAL intrinsic dimensions when the SDK
84
+ * selected them (so the `<img>` reserves the correct box and avoids CLS). When
85
+ * the asset carries no dimensions they fall back to the square DEFAULT_PRESET
86
+ * box — a last resort, not the reported aspect ratio.
87
+ */
36
88
  export declare function getResponsiveImageData(asset: Asset, presets?: PresetName[]): ResponsiveImageData;
37
89
  //# sourceMappingURL=urls.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"urls.d.ts","sourceRoot":"","sources":["../../src/media/urls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAWxF,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;CAOV,CAAC;AAEX,eAAO,MAAM,cAAc,EAAE,UAAgB,CAAC;AAG9C,eAAO,MAAM,iBAAiB,aAU5B,CAAC;AAEH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEvD;AAMD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAIjE;AAkBD,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,KAAK,MAAM,CAAC;AAE3E,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GAAG,IAAI,GAC3B,gBAAgB,CAUlB;AAWD,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,YAAY,GAAG,gBAAgB,CAEjF;AAMD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,UAAU,EAClB,MAAM,GAAE,UAAU,GAAG,MAAe,GACnC,MAAM,CAQR;AAWD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,mBAAmB,CA+ChG"}
1
+ {"version":3,"file":"urls.d.ts","sourceRoot":"","sources":["../../src/media/urls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAExF;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;CAOV,CAAC;AAEX,eAAO,MAAM,cAAc,EAAE,UAAgB,CAAC;AAE9C,mEAAmE;AACnE,eAAO,MAAM,iBAAiB,aAU5B,CAAC;AAEH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAIjE;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,KAAK,MAAM,CAAC;AAE3E,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GAAG,IAAI,GAC3B,gBAAgB,CAUlB;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,YAAY,GAAG,gBAAgB,CAEjF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,UAAU,EAClB,MAAM,GAAE,UAAU,GAAG,MAAe,GACnC,MAAM,CAQR;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,mBAAmB,CA+ChG"}
@@ -1,3 +1,12 @@
1
+ /**
2
+ * Image preset definitions — must stay in sync with
3
+ * `@sixtynine-digital/commerce-shared/image-presets`. Drift is caught at test
4
+ * time by `media.spec.ts` (see "presets sync with shared package" suite),
5
+ * which imports the source-of-truth and asserts equality.
6
+ *
7
+ * The constants are inlined here because storefront-client is published to npm
8
+ * and the shared package is private to the monorepo.
9
+ */
1
10
  export const PRESETS = {
2
11
  xxs: { width: 50, height: 50 },
3
12
  xs: { width: 150, height: 150 },
@@ -7,6 +16,7 @@ export const PRESETS = {
7
16
  xl: { width: 1800, height: 1800 },
8
17
  };
9
18
  export const DEFAULT_PRESET = 'm';
19
+ /** MIME types that have generated presets (raster images only). */
10
20
  export const RASTER_MIME_TYPES = new Set([
11
21
  'image/jpeg',
12
22
  'image/png',
@@ -21,6 +31,10 @@ export const RASTER_MIME_TYPES = new Set([
21
31
  export function isRasterImage(mimeType) {
22
32
  return RASTER_MIME_TYPES.has(mimeType);
23
33
  }
34
+ /**
35
+ * Prepend CDN URL to a relative asset path.
36
+ * Returns the original if already absolute or empty.
37
+ */
24
38
  export function makeAssetUrl(cdnUrl, path) {
25
39
  if (!path)
26
40
  return '';
@@ -41,9 +55,22 @@ export function createAssetUrlResolver(cdnUrl, channelPrefix) {
41
55
  return makeAssetUrl(cdnUrl, clean);
42
56
  };
43
57
  }
58
+ /**
59
+ * The resolver for a given store context.
60
+ *
61
+ * The DERIVATION lives here, not just the stripping rule: `createMediaModule`
62
+ * and `createSeoModule` both need it, and a resolver whose arguments are worked
63
+ * out independently in two places is the same drift risk one layer up. If the
64
+ * prefix rule ever grows (a per-channel asset prefix, `{code}/content/`), it
65
+ * changes once.
66
+ */
44
67
  export function createContextAssetUrlResolver(ctx) {
45
68
  return createAssetUrlResolver(ctx.cdnUrl, ctx.channelCdnDomain ? `${ctx.channel.code}/` : null);
46
69
  }
70
+ /**
71
+ * Get the URL for a specific preset from an asset's presets object.
72
+ * Falls back to the asset source if presets are not available.
73
+ */
47
74
  export function getPresetUrl(asset, preset, format = 'webp') {
48
75
  const presets = asset.presets;
49
76
  if (!presets)
@@ -53,10 +80,21 @@ export function getPresetUrl(asset, preset, format = 'webp') {
53
80
  return asset.source;
54
81
  return format === 'webp' ? presetData.webpUrl : presetData.url;
55
82
  }
83
+ /**
84
+ * Build responsive image data for use in <img> or <picture> elements.
85
+ * Returns srcSet with widths matching preset dimensions.
86
+ *
87
+ * `width`/`height` are the asset's REAL intrinsic dimensions when the SDK
88
+ * selected them (so the `<img>` reserves the correct box and avoids CLS). When
89
+ * the asset carries no dimensions they fall back to the square DEFAULT_PRESET
90
+ * box — a last resort, not the reported aspect ratio.
91
+ */
56
92
  export function getResponsiveImageData(asset, presets) {
57
93
  const selectedPresets = presets ?? ['s', 'm', 'l', 'xl'];
58
94
  const alt = asset.customFields?.altText ?? asset.name ?? '';
59
95
  const defaultSize = PRESETS[DEFAULT_PRESET];
96
+ // Prefer the asset's real dimensions; fall back to the preset box only when
97
+ // absent. `0` is not a valid dimension, so treat it as absent too.
60
98
  const width = typeof asset.width === 'number' && asset.width > 0 ? asset.width : defaultSize.width;
61
99
  const height = typeof asset.height === 'number' && asset.height > 0 ? asset.height : defaultSize.height;
62
100
  if (!asset.presets) {
@@ -1 +1 @@
1
- {"version":3,"file":"urls.js","sourceRoot":"","sources":["../../src/media/urls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"urls.js","sourceRoot":"","sources":["../../src/media/urls.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Video embed helpers for storefront rendering.
3
+ * Types and parsing utilities inlined from commerce-shared to keep the client zero-dep.
4
+ */
1
5
  export type VideoProvider = 'youtube' | 'vimeo';
2
6
  export type VideoSource = VideoProvider | 'upload' | 'external';
3
7
  export interface ParsedVideo {
@@ -9,17 +13,29 @@ export interface VideoValue {
9
13
  url: string;
10
14
  video_id?: string;
11
15
  }
16
+ /** Parse a video URL and extract the provider and video ID. */
12
17
  export declare function parseVideoUrl(url: string): ParsedVideo | null;
18
+ /** Get a privacy-friendly embed URL for a video provider and ID. */
13
19
  export declare function getEmbedUrl(provider: VideoProvider, videoId: string): string;
20
+ /**
21
+ * Validate that a URL points to a directly-playable video file (HTTPS + known
22
+ * extension). Used for the "external" source — videos hosted outside our
23
+ * asset library on a stable CDN.
24
+ */
14
25
  export declare function parseDirectVideoUrl(url: string): {
15
26
  url: string;
16
27
  } | null;
28
+ /** Get a thumbnail URL for a video. Vimeo requires an oEmbed API call so returns null. */
17
29
  export declare function getThumbnailUrl(provider: VideoProvider, videoId: string): string | null;
18
30
  interface VideoEmbedOptions {
19
31
  autoplay?: boolean;
20
32
  loop?: boolean;
21
33
  muted?: boolean;
22
34
  }
35
+ /**
36
+ * Generate ready-to-use HTML for embedding a video.
37
+ * Returns an iframe for YouTube/Vimeo or a video element for uploads.
38
+ */
23
39
  export declare function getVideoEmbedHtml(value: VideoValue, options?: VideoEmbedOptions): string;
24
40
  export {};
25
41
  //# sourceMappingURL=video.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../src/media/video.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC;AAChD,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEhE,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,WAAW,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAkBD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAe7D;AAGD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAO5E;AAOD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAavE;AAGD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOvF;AAED,UAAU,iBAAiB;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAMD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAyCxF"}
1
+ {"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../src/media/video.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC;AAChD,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEhE,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,WAAW,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAiBD,+DAA+D;AAC/D,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAe7D;AAED,oEAAoE;AACpE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAO5E;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAavE;AAED,0FAA0F;AAC1F,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOvF;AAED,UAAU,iBAAiB;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAyCxF"}
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Video embed helpers for storefront rendering.
3
+ * Types and parsing utilities inlined from commerce-shared to keep the client zero-dep.
4
+ */
1
5
  const DIRECT_VIDEO_EXTENSIONS = ['.mp4', '.webm', '.ogv', '.ogg', '.mov', '.m4v'];
2
6
  const YOUTUBE_PATTERNS = [
3
7
  /(?:youtube\.com\/watch\?.*v=)([a-zA-Z0-9_-]{11})/,
@@ -10,6 +14,7 @@ const VIMEO_PATTERNS = [
10
14
  /player\.vimeo\.com\/video\/(\d+)/,
11
15
  /vimeo\.com\/(?:channels\/[\w-]+\/|groups\/[\w-]+\/videos\/)?(\d+)/,
12
16
  ];
17
+ /** Parse a video URL and extract the provider and video ID. */
13
18
  export function parseVideoUrl(url) {
14
19
  if (!url || typeof url !== 'string')
15
20
  return null;
@@ -26,6 +31,7 @@ export function parseVideoUrl(url) {
26
31
  }
27
32
  return null;
28
33
  }
34
+ /** Get a privacy-friendly embed URL for a video provider and ID. */
29
35
  export function getEmbedUrl(provider, videoId) {
30
36
  switch (provider) {
31
37
  case 'youtube':
@@ -34,6 +40,11 @@ export function getEmbedUrl(provider, videoId) {
34
40
  return `https://player.vimeo.com/video/${videoId}`;
35
41
  }
36
42
  }
43
+ /**
44
+ * Validate that a URL points to a directly-playable video file (HTTPS + known
45
+ * extension). Used for the "external" source — videos hosted outside our
46
+ * asset library on a stable CDN.
47
+ */
37
48
  export function parseDirectVideoUrl(url) {
38
49
  if (!url || typeof url !== 'string')
39
50
  return null;
@@ -52,6 +63,7 @@ export function parseDirectVideoUrl(url) {
52
63
  return null;
53
64
  return { url: trimmed };
54
65
  }
66
+ /** Get a thumbnail URL for a video. Vimeo requires an oEmbed API call so returns null. */
55
67
  export function getThumbnailUrl(provider, videoId) {
56
68
  switch (provider) {
57
69
  case 'youtube':
@@ -60,6 +72,10 @@ export function getThumbnailUrl(provider, videoId) {
60
72
  return null;
61
73
  }
62
74
  }
75
+ /**
76
+ * Generate ready-to-use HTML for embedding a video.
77
+ * Returns an iframe for YouTube/Vimeo or a video element for uploads.
78
+ */
63
79
  export function getVideoEmbedHtml(value, options) {
64
80
  const { autoplay = false, loop = false, muted = false } = options ?? {};
65
81
  if ((value.source === 'youtube' || value.source === 'vimeo') && value.video_id) {
@@ -1 +1 @@
1
- {"version":3,"file":"video.js","sourceRoot":"","sources":["../../src/media/video.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"video.js","sourceRoot":"","sources":["../../src/media/video.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,31 @@
1
+ /**
2
+ * Route-handler factory that proxies a platform SEO artifact onto the
3
+ * storefront's own origin (fetch-and-serve — hosting-adapter-independent,
4
+ * unlike next.config rewrites).
5
+ *
6
+ * Two deliberate header behaviors:
7
+ * - The inbound client User-Agent is NOT forwarded — the platform host blocks
8
+ * known crawler UAs, and it must see the storefront server, not Googlebot.
9
+ * - X-Robots-Tag from the platform host is dropped; Cache-Control is replaced
10
+ * with the storefront's own policy.
11
+ */
1
12
  import type { StorefrontClient } from '../types.js';
2
13
  export type SeoArtifact = 'sitemap' | 'sitemap-child' | 'robots' | 'llms-txt' | 'indexnow-key';
3
14
  export interface SeoArtifactHandlerOptions {
15
+ /** Cache-Control served to crawlers/CDN. */
4
16
  cacheControl?: string;
17
+ /** Upstream fetch timeout. Default 15s. */
5
18
  timeoutMs?: number;
6
19
  }
20
+ /**
21
+ * Usage (App Router):
22
+ * ```ts
23
+ * // src/app/sitemap.xml/route.ts
24
+ * export const GET = createSeoArtifactHandler(getClient(), 'sitemap');
25
+ * // src/app/sitemaps/[name]/route.ts
26
+ * export const GET = createSeoArtifactHandler(getClient(), 'sitemap-child');
27
+ * ```
28
+ */
7
29
  export declare function createSeoArtifactHandler(client: StorefrontClient | Promise<StorefrontClient>, artifact: SeoArtifact, options?: SeoArtifactHandlerOptions): (request: Request, context?: {
8
30
  params?: Promise<{
9
31
  name?: string;