@sixtyninecommerce/client 0.23.1 → 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 (299) hide show
  1. package/README.md +25 -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/index.d.ts +17 -1
  41. package/dist/commerce/index.d.ts.map +1 -1
  42. package/dist/commerce/pickup-location-parser.d.ts +18 -0
  43. package/dist/commerce/pickup-location-parser.d.ts.map +1 -1
  44. package/dist/commerce/pickup-location-parser.js +28 -0
  45. package/dist/commerce/pickup-location-parser.js.map +1 -1
  46. package/dist/commerce/placement-error.d.ts +52 -0
  47. package/dist/commerce/placement-error.d.ts.map +1 -1
  48. package/dist/commerce/placement-error.js +87 -0
  49. package/dist/commerce/placement-error.js.map +1 -1
  50. package/dist/commerce/products.d.ts +48 -0
  51. package/dist/commerce/products.d.ts.map +1 -1
  52. package/dist/commerce/products.js +95 -2
  53. package/dist/commerce/products.js.map +1 -1
  54. package/dist/commerce/queries.d.ts +114 -27
  55. package/dist/commerce/queries.d.ts.map +1 -1
  56. package/dist/commerce/queries.js +219 -1
  57. package/dist/commerce/queries.js.map +1 -1
  58. package/dist/commerce/quotes.js +33 -0
  59. package/dist/commerce/quotes.js.map +1 -1
  60. package/dist/commerce/saved-lists.d.ts +7 -7
  61. package/dist/commerce/saved-lists.d.ts.map +1 -1
  62. package/dist/commerce/saved-lists.js +1 -1
  63. package/dist/commerce/search.js +3 -0
  64. package/dist/commerce/search.js.map +1 -1
  65. package/dist/commerce/shipping.js +3 -3
  66. package/dist/commerce/shipping.js.map +1 -1
  67. package/dist/commerce/stock-notifications.d.ts +11 -0
  68. package/dist/commerce/stock-notifications.d.ts.map +1 -1
  69. package/dist/commerce/stock-notifications.js +11 -0
  70. package/dist/commerce/stock-notifications.js.map +1 -1
  71. package/dist/commerce/subscriptions.d.ts +32 -8
  72. package/dist/commerce/subscriptions.d.ts.map +1 -1
  73. package/dist/commerce/subscriptions.js +90 -2
  74. package/dist/commerce/subscriptions.js.map +1 -1
  75. package/dist/commerce/vat-validation.js +4 -4
  76. package/dist/commerce/vat-validation.js.map +1 -1
  77. package/dist/constants.d.ts +31 -0
  78. package/dist/constants.d.ts.map +1 -1
  79. package/dist/constants.js +32 -0
  80. package/dist/constants.js.map +1 -1
  81. package/dist/content/asset-urls.d.ts +50 -0
  82. package/dist/content/asset-urls.d.ts.map +1 -1
  83. package/dist/content/asset-urls.js +92 -0
  84. package/dist/content/asset-urls.js.map +1 -1
  85. package/dist/content/assets.d.ts +15 -0
  86. package/dist/content/assets.d.ts.map +1 -1
  87. package/dist/content/assets.js +15 -0
  88. package/dist/content/assets.js.map +1 -1
  89. package/dist/content/collection-pages.d.ts +5 -0
  90. package/dist/content/collection-pages.d.ts.map +1 -1
  91. package/dist/content/collection-pages.js +8 -0
  92. package/dist/content/collection-pages.js.map +1 -1
  93. package/dist/content/collections.d.ts +14 -0
  94. package/dist/content/collections.d.ts.map +1 -1
  95. package/dist/content/collections.js +16 -0
  96. package/dist/content/collections.js.map +1 -1
  97. package/dist/content/filtered-products.d.ts +18 -0
  98. package/dist/content/filtered-products.d.ts.map +1 -1
  99. package/dist/content/filtered-products.js +16 -0
  100. package/dist/content/filtered-products.js.map +1 -1
  101. package/dist/content/form-field-types.d.ts +6 -0
  102. package/dist/content/form-field-types.d.ts.map +1 -1
  103. package/dist/content/form-field-types.js +12 -0
  104. package/dist/content/form-field-types.js.map +1 -1
  105. package/dist/content/forms.d.ts +16 -0
  106. package/dist/content/forms.d.ts.map +1 -1
  107. package/dist/content/forms.js +23 -0
  108. package/dist/content/forms.js.map +1 -1
  109. package/dist/content/items.d.ts +26 -0
  110. package/dist/content/items.d.ts.map +1 -1
  111. package/dist/content/items.js +33 -0
  112. package/dist/content/items.js.map +1 -1
  113. package/dist/content/resolve.js +6 -0
  114. package/dist/content/resolve.js.map +1 -1
  115. package/dist/content/sitemap.d.ts +5 -0
  116. package/dist/content/sitemap.d.ts.map +1 -1
  117. package/dist/content/sitemap.js +5 -0
  118. package/dist/content/sitemap.js.map +1 -1
  119. package/dist/core/context.js +6 -0
  120. package/dist/core/context.js.map +1 -1
  121. package/dist/core/headers.js +2 -0
  122. package/dist/core/headers.js.map +1 -1
  123. package/dist/core/http.d.ts +8 -0
  124. package/dist/core/http.d.ts.map +1 -1
  125. package/dist/core/http.js +89 -1
  126. package/dist/core/http.js.map +1 -1
  127. package/dist/credit/credit-status.js +2 -2
  128. package/dist/credit/credit-status.js.map +1 -1
  129. package/dist/credit/payment-terms.js +2 -2
  130. package/dist/credit/payment-terms.js.map +1 -1
  131. package/dist/currency/exchange.d.ts +11 -0
  132. package/dist/currency/exchange.d.ts.map +1 -1
  133. package/dist/currency/exchange.js +11 -0
  134. package/dist/currency/exchange.js.map +1 -1
  135. package/dist/errors.d.ts +50 -2
  136. package/dist/errors.d.ts.map +1 -1
  137. package/dist/errors.js +50 -3
  138. package/dist/errors.js.map +1 -1
  139. package/dist/events/envelope.d.ts +36 -0
  140. package/dist/events/envelope.d.ts.map +1 -1
  141. package/dist/events/envelope.js +12 -0
  142. package/dist/events/envelope.js.map +1 -1
  143. package/dist/events/index.d.ts +13 -0
  144. package/dist/events/index.d.ts.map +1 -1
  145. package/dist/events/index.js +13 -0
  146. package/dist/events/index.js.map +1 -1
  147. package/dist/events/payloads.d.ts +19 -0
  148. package/dist/events/payloads.d.ts.map +1 -1
  149. package/dist/events/payloads.js +12 -0
  150. package/dist/events/payloads.js.map +1 -1
  151. package/dist/index.d.ts +8 -1
  152. package/dist/index.d.ts.map +1 -1
  153. package/dist/index.js +7 -0
  154. package/dist/index.js.map +1 -1
  155. package/dist/media/index.js +2 -0
  156. package/dist/media/index.js.map +1 -1
  157. package/dist/media/urls.d.ts +52 -0
  158. package/dist/media/urls.d.ts.map +1 -1
  159. package/dist/media/urls.js +38 -0
  160. package/dist/media/urls.js.map +1 -1
  161. package/dist/media/video.d.ts +16 -0
  162. package/dist/media/video.d.ts.map +1 -1
  163. package/dist/media/video.js +16 -0
  164. package/dist/media/video.js.map +1 -1
  165. package/dist/next/artifact-handler.d.ts +22 -0
  166. package/dist/next/artifact-handler.d.ts.map +1 -1
  167. package/dist/next/artifact-handler.js +22 -0
  168. package/dist/next/artifact-handler.js.map +1 -1
  169. package/dist/next/event-revalidate-handler.d.ts +67 -0
  170. package/dist/next/event-revalidate-handler.d.ts.map +1 -1
  171. package/dist/next/event-revalidate-handler.js +48 -0
  172. package/dist/next/event-revalidate-handler.js.map +1 -1
  173. package/dist/next/index.d.ts +6 -0
  174. package/dist/next/index.d.ts.map +1 -1
  175. package/dist/next/index.js +6 -0
  176. package/dist/next/index.js.map +1 -1
  177. package/dist/next/json-ld.d.ts +9 -0
  178. package/dist/next/json-ld.d.ts.map +1 -1
  179. package/dist/next/json-ld.js +9 -0
  180. package/dist/next/json-ld.js.map +1 -1
  181. package/dist/next/metadata.d.ts +18 -0
  182. package/dist/next/metadata.d.ts.map +1 -1
  183. package/dist/next/metadata.js +21 -0
  184. package/dist/next/metadata.js.map +1 -1
  185. package/dist/next/redirect-middleware.d.ts +39 -0
  186. package/dist/next/redirect-middleware.d.ts.map +1 -1
  187. package/dist/next/redirect-middleware.js +32 -0
  188. package/dist/next/redirect-middleware.js.map +1 -1
  189. package/dist/next/revalidate-handler.d.ts +30 -0
  190. package/dist/next/revalidate-handler.d.ts.map +1 -1
  191. package/dist/next/revalidate-handler.js +22 -0
  192. package/dist/next/revalidate-handler.js.map +1 -1
  193. package/dist/order-scope.d.ts +27 -0
  194. package/dist/order-scope.d.ts.map +1 -1
  195. package/dist/order-scope.js +29 -0
  196. package/dist/order-scope.js.map +1 -1
  197. package/dist/pricing/format.d.ts +17 -0
  198. package/dist/pricing/format.d.ts.map +1 -1
  199. package/dist/pricing/format.js +19 -0
  200. package/dist/pricing/format.js.map +1 -1
  201. package/dist/pricing/index.d.ts +8 -1
  202. package/dist/pricing/index.d.ts.map +1 -1
  203. package/dist/pricing/index.js +18 -2
  204. package/dist/pricing/index.js.map +1 -1
  205. package/dist/pricing/tax-display.d.ts +77 -0
  206. package/dist/pricing/tax-display.d.ts.map +1 -1
  207. package/dist/pricing/tax-display.js +85 -0
  208. package/dist/pricing/tax-display.js.map +1 -1
  209. package/dist/pricing/tiers.d.ts +9 -0
  210. package/dist/pricing/tiers.d.ts.map +1 -1
  211. package/dist/pricing/tiers.js +9 -0
  212. package/dist/pricing/tiers.js.map +1 -1
  213. package/dist/pricing/validation.d.ts +56 -1
  214. package/dist/pricing/validation.d.ts.map +1 -1
  215. package/dist/pricing/validation.js +61 -0
  216. package/dist/pricing/validation.js.map +1 -1
  217. package/dist/redirects/index.d.ts +1 -0
  218. package/dist/redirects/index.d.ts.map +1 -1
  219. package/dist/redirects/index.js +1 -0
  220. package/dist/redirects/index.js.map +1 -1
  221. package/dist/redirects/store.d.ts +20 -0
  222. package/dist/redirects/store.d.ts.map +1 -1
  223. package/dist/redirects/store.js +57 -0
  224. package/dist/redirects/store.js.map +1 -1
  225. package/dist/redirects/types.d.ts +24 -0
  226. package/dist/redirects/types.d.ts.map +1 -1
  227. package/dist/redirects/types.js +1 -0
  228. package/dist/redirects/types.js.map +1 -1
  229. package/dist/revalidation/event-plan.d.ts +48 -0
  230. package/dist/revalidation/event-plan.d.ts.map +1 -1
  231. package/dist/revalidation/event-plan.js +61 -0
  232. package/dist/revalidation/event-plan.js.map +1 -1
  233. package/dist/revalidation/event-verify.d.ts +25 -0
  234. package/dist/revalidation/event-verify.d.ts.map +1 -1
  235. package/dist/revalidation/event-verify.js +27 -0
  236. package/dist/revalidation/event-verify.js.map +1 -1
  237. package/dist/revalidation/types.d.ts +20 -0
  238. package/dist/revalidation/types.d.ts.map +1 -1
  239. package/dist/revalidation/types.js +10 -0
  240. package/dist/revalidation/types.js.map +1 -1
  241. package/dist/revalidation/url-context.d.ts +25 -0
  242. package/dist/revalidation/url-context.d.ts.map +1 -1
  243. package/dist/revalidation/url-context.js +17 -0
  244. package/dist/revalidation/url-context.js.map +1 -1
  245. package/dist/revalidation/verify.d.ts +8 -0
  246. package/dist/revalidation/verify.d.ts.map +1 -1
  247. package/dist/revalidation/verify.js +8 -0
  248. package/dist/revalidation/verify.js.map +1 -1
  249. package/dist/seo/ai.d.ts +17 -0
  250. package/dist/seo/ai.d.ts.map +1 -1
  251. package/dist/seo/ai.js +12 -0
  252. package/dist/seo/ai.js.map +1 -1
  253. package/dist/seo/alternates.js +13 -0
  254. package/dist/seo/alternates.js.map +1 -1
  255. package/dist/seo/artifacts.d.ts +13 -0
  256. package/dist/seo/artifacts.d.ts.map +1 -1
  257. package/dist/seo/artifacts.js +19 -0
  258. package/dist/seo/artifacts.js.map +1 -1
  259. package/dist/seo/canonical.d.ts +15 -0
  260. package/dist/seo/canonical.d.ts.map +1 -1
  261. package/dist/seo/canonical.js +24 -0
  262. package/dist/seo/canonical.js.map +1 -1
  263. package/dist/seo/index.js +6 -0
  264. package/dist/seo/index.js.map +1 -1
  265. package/dist/seo/json-ld.d.ts +13 -0
  266. package/dist/seo/json-ld.d.ts.map +1 -1
  267. package/dist/seo/json-ld.js +32 -0
  268. package/dist/seo/json-ld.js.map +1 -1
  269. package/dist/seo/locale-tag.d.ts +31 -0
  270. package/dist/seo/locale-tag.d.ts.map +1 -1
  271. package/dist/seo/locale-tag.js +31 -0
  272. package/dist/seo/locale-tag.js.map +1 -1
  273. package/dist/seo/meta-tags.d.ts +29 -0
  274. package/dist/seo/meta-tags.d.ts.map +1 -1
  275. package/dist/seo/meta-tags.js +28 -0
  276. package/dist/seo/meta-tags.js.map +1 -1
  277. package/dist/seo/metadata-parser.d.ts +24 -0
  278. package/dist/seo/metadata-parser.d.ts.map +1 -1
  279. package/dist/seo/metadata-parser.js +38 -0
  280. package/dist/seo/metadata-parser.js.map +1 -1
  281. package/dist/seo/metadata-types.d.ts +16 -0
  282. package/dist/seo/metadata-types.d.ts.map +1 -1
  283. package/dist/seo/product-path.d.ts +96 -0
  284. package/dist/seo/product-path.d.ts.map +1 -1
  285. package/dist/seo/product-path.js +96 -0
  286. package/dist/seo/product-path.js.map +1 -1
  287. package/dist/seo/robots.d.ts +17 -0
  288. package/dist/seo/robots.d.ts.map +1 -1
  289. package/dist/seo/robots.js +12 -0
  290. package/dist/seo/robots.js.map +1 -1
  291. package/dist/seo/types.d.ts +39 -0
  292. package/dist/seo/types.d.ts.map +1 -1
  293. package/dist/seo/url-builder.d.ts +31 -0
  294. package/dist/seo/url-builder.d.ts.map +1 -1
  295. package/dist/seo/url-builder.js +36 -0
  296. package/dist/seo/url-builder.js.map +1 -1
  297. package/dist/types.d.ts +1283 -2
  298. package/dist/types.d.ts.map +1 -1
  299. package/package.json +1 -1
@@ -1,6 +1,45 @@
1
+ /**
2
+ * Resolve asset references inside CMS content values.
3
+ *
4
+ * CMS field values used to be written as ABSOLUTE CDN URLs — both bare picker
5
+ * values and `<img src>` inside rich text. That baked the CDN origin and the
6
+ * channel's code into the content itself, so a channel rename or a change of
7
+ * CDN domain silently broke every image (1,915 such references existed in
8
+ * production across two tenants). Values are now stored as storage KEYS and
9
+ * resolved here, at render time.
10
+ *
11
+ * Both forms are handled on purpose: an absolute URL passes through the
12
+ * resolver unchanged, so old and new content coexist and no backfill has to
13
+ * land before this ships.
14
+ */
15
+ /**
16
+ * A storage key: `{channelCode}/{source|preview|content}/…`. Deliberately
17
+ * narrow — content values are arbitrary merchant text, and anything looser
18
+ * would rewrite prose that merely contains a slash.
19
+ *
20
+ * `_global` is explicit: both asset writers map the DEFAULT channel to that
21
+ * prefix (`storage.service.ts`, `channel-aware-asset-naming-strategy.ts`), and
22
+ * a leading-underscore segment fails a plain `[a-z0-9]` opener — so
23
+ * platform-wide assets would silently never resolve.
24
+ */
1
25
  const STORAGE_KEY_PATTERN = /^(_global|[a-z0-9][a-z0-9-]*)\/(source|preview|content)\//;
26
+ /**
27
+ * Single-URL asset attributes inside stored rich-text HTML.
28
+ *
29
+ * BOTH quote styles: the WordPress importer preserves whatever the source
30
+ * markup used, so a single-quoted `src` holding a storage key would otherwise
31
+ * never be resolved and render as a broken image.
32
+ */
2
33
  const HTML_ATTR_PATTERN = /(\s(?:src|poster|href)=["'])([^"']+)(["'])/g;
34
+ /**
35
+ * `srcset` holds a COMMA-SEPARATED candidate list (`url 300w, url 500w`), so it
36
+ * needs its own parse — a whole-attribute replace would mangle the descriptors.
37
+ * It cannot be skipped either: browsers PREFER a matching srcset candidate over
38
+ * `src`, so leaving these unresolved would keep serving the old path even after
39
+ * everything else moved. Production rich text carries ~200 of these.
40
+ */
3
41
  const HTML_SRCSET_PATTERN = /(\ssrcset=["'])([^"']+)(["'])/g;
42
+ /** Rewrite each candidate's URL, preserving its width/density descriptor. */
4
43
  function resolveSrcset(value, resolve) {
5
44
  return value
6
45
  .split(',')
@@ -18,9 +57,17 @@ function resolveSrcset(value, resolve) {
18
57
  function looksLikeHtml(value) {
19
58
  return value.includes('<');
20
59
  }
60
+ /** True when a bare string is an asset reference rather than merchant prose. */
21
61
  export function isAssetReference(value) {
22
62
  return (STORAGE_KEY_PATTERN.test(value) || value.startsWith('http://') || value.startsWith('https://'));
23
63
  }
64
+ /**
65
+ * Resolve every asset reference in one stored value.
66
+ *
67
+ * - Rich text: rewrites each `src` attribute.
68
+ * - A bare storage key: resolves the whole value.
69
+ * - Anything else (prose, numbers, JSON): returned untouched.
70
+ */
24
71
  export function resolveContentAssetUrls(value, resolve) {
25
72
  if (!value)
26
73
  return value;
@@ -30,7 +77,14 @@ export function resolveContentAssetUrls(value, resolve) {
30
77
  }
31
78
  return isAssetReference(value) ? resolve(value) : value;
32
79
  }
80
+ /**
81
+ * How deep to walk a stored value. Field values are merchant JSON, so a
82
+ * pathological or cyclic-looking shape must not turn a page render into a stack
83
+ * overflow. Real content nests two or three levels (`group` → repeater entry →
84
+ * asset).
85
+ */
33
86
  const MAX_VALUE_DEPTH = 8;
87
+ /** Resolve every asset reference inside one stored value, at any depth. */
34
88
  function resolveValue(value, resolve, depth) {
35
89
  if (typeof value === 'string')
36
90
  return resolveContentAssetUrls(value, resolve);
@@ -44,7 +98,23 @@ function resolveValue(value, resolve, depth) {
44
98
  }
45
99
  return out;
46
100
  }
101
+ /**
102
+ * Apply {@link resolveContentAssetUrls} across a field-value bag.
103
+ *
104
+ * Walks NESTED values, not just top-level strings. A `video` field is stored as
105
+ * `{ source, url }` and a `group` field as an object (or an array of them) with
106
+ * asset, multi-asset and rich-text members — the dashboard writes storage keys
107
+ * inside all of those, so stopping at the first level would hand the storefront
108
+ * a raw key and render a broken video or image.
109
+ *
110
+ * Non-string leaves (numbers, booleans, null) are returned untouched, and the
111
+ * walk is depth-capped: field values are merchant JSON, and a render must not
112
+ * be able to blow the stack.
113
+ */
47
114
  export function resolveContentFieldValues(fields, resolve) {
115
+ // This runs on whatever the CMS returned. A field bag that is absent or not
116
+ // an object is a response shape, not a crash — the SDK must hand the caller
117
+ // something renderable either way.
48
118
  if (!fields || typeof fields !== 'object')
49
119
  return {};
50
120
  const out = {};
@@ -53,6 +123,13 @@ export function resolveContentFieldValues(fields, resolve) {
53
123
  }
54
124
  return out;
55
125
  }
126
+ /**
127
+ * Keys a search hit carries as ITEM METADATA rather than as a field value.
128
+ *
129
+ * They must be passed through untouched: `path` in particular is merchant
130
+ * routing like `products/content/winter`, which matches the storage-key shape
131
+ * exactly and would be rewritten into a CDN URL.
132
+ */
56
133
  const SEARCH_HIT_METADATA_KEYS = new Set([
57
134
  'id',
58
135
  'channel_id',
@@ -67,6 +144,15 @@ const SEARCH_HIT_METADATA_KEYS = new Set([
67
144
  'updated_at',
68
145
  'published_at',
69
146
  ]);
147
+ /**
148
+ * Resolve the field values flattened onto one search hit.
149
+ *
150
+ * Search results come from Meilisearch, which stores `value_json` verbatim —
151
+ * so a hit carries exactly the same stored form as a direct read and needs
152
+ * exactly the same resolution. Missing it means a storefront search bar renders
153
+ * raw storage keys while the pages themselves are fine, and only for items
154
+ * re-saved since the migration, which makes it look intermittent.
155
+ */
70
156
  export function resolveSearchHitValues(hit, resolve) {
71
157
  const out = {};
72
158
  for (const [key, value] of Object.entries(hit)) {
@@ -76,6 +162,12 @@ export function resolveSearchHitValues(hit, resolve) {
76
162
  }
77
163
  return out;
78
164
  }
165
+ /**
166
+ * Resolve the hits inside a raw search envelope (`{ data: { hits: [...] } }`).
167
+ *
168
+ * Used by the untyped `getContent` passthrough, which hands the caller whatever
169
+ * the endpoint returned — including, before this, unresolved storage keys.
170
+ */
79
171
  export function resolveSearchEnvelope(envelope, resolve) {
80
172
  const data = envelope.data;
81
173
  if (!data || typeof data !== 'object')
@@ -1 +1 @@
1
- {"version":3,"file":"asset-urls.js","sourceRoot":"","sources":["../../src/content/asset-urls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"asset-urls.js","sourceRoot":"","sources":["../../src/content/asset-urls.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,23 @@
1
1
  import type { HttpClient } from '../core/http.js';
2
2
  import type { CmsAsset, RequestOptions, VendureAssetDescriptionTranslation } from '../types.js';
3
3
  export declare function createAssetMethods(http: HttpClient): {
4
+ /**
5
+ * Fetch a single CMS asset by ID. Public endpoint, scoped by channel header.
6
+ * Returns the public-safe asset shape with image presets and alt-text translations.
7
+ */
4
8
  getAsset(id: string, options?: RequestOptions): Promise<CmsAsset>;
9
+ /**
10
+ * Bulk-fetch CMS assets by ID. Used to resolve image references stored in
11
+ * CMS field values (the `image`/`images` field types store asset ID arrays).
12
+ * Public endpoint; max 50 IDs per call. Foreign or missing IDs are silently
13
+ * dropped — the result may have fewer entries than requested.
14
+ */
5
15
  lookupAssets(ids: string[], options?: RequestOptions): Promise<CmsAsset[]>;
16
+ /**
17
+ * Bulk-fetch alt-text translations for Vendure product image assets, keyed
18
+ * by Vendure asset ID. Vendure stores assets globally; per-channel alt-text
19
+ * translations live in the CMS service. Public endpoint; max 50 IDs per call.
20
+ */
6
21
  lookupVendureAssetDescriptions(vendureAssetIds: string[], options?: RequestOptions): Promise<Record<string, VendureAssetDescriptionTranslation[]>>;
7
22
  };
8
23
  //# sourceMappingURL=assets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/content/assets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,kCAAkC,EAAE,MAAM,aAAa,CAAC;AAchG,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU;iBAM5B,MAAM,YAAY,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;sBAe/C,MAAM,EAAE,YAAY,cAAc,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;oDAgB7D,MAAM,EAAE,YACf,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,kCAAkC,EAAE,CAAC,CAAC;EAUnE"}
1
+ {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/content/assets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,kCAAkC,EAAE,MAAM,aAAa,CAAC;AAchG,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU;IAE/C;;;OAGG;iBACgB,MAAM,YAAY,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;IASvE;;;;;OAKG;sBACqB,MAAM,EAAE,YAAY,cAAc,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAUhF;;;;OAIG;oDAEgB,MAAM,EAAE,YACf,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,kCAAkC,EAAE,CAAC,CAAC;EAUnE"}
@@ -1,15 +1,30 @@
1
1
  export function createAssetMethods(http) {
2
2
  return {
3
+ /**
4
+ * Fetch a single CMS asset by ID. Public endpoint, scoped by channel header.
5
+ * Returns the public-safe asset shape with image presets and alt-text translations.
6
+ */
3
7
  async getAsset(id, options) {
4
8
  const response = await http.cmsGet(`/public-assets/${id}`, undefined, options);
5
9
  return response.data;
6
10
  },
11
+ /**
12
+ * Bulk-fetch CMS assets by ID. Used to resolve image references stored in
13
+ * CMS field values (the `image`/`images` field types store asset ID arrays).
14
+ * Public endpoint; max 50 IDs per call. Foreign or missing IDs are silently
15
+ * dropped — the result may have fewer entries than requested.
16
+ */
7
17
  async lookupAssets(ids, options) {
8
18
  if (ids.length === 0)
9
19
  return [];
10
20
  const response = await http.cmsGet('/assets/lookup', { ids: ids.join(',') }, options);
11
21
  return response.data;
12
22
  },
23
+ /**
24
+ * Bulk-fetch alt-text translations for Vendure product image assets, keyed
25
+ * by Vendure asset ID. Vendure stores assets globally; per-channel alt-text
26
+ * translations live in the CMS service. Public endpoint; max 50 IDs per call.
27
+ */
13
28
  async lookupVendureAssetDescriptions(vendureAssetIds, options) {
14
29
  if (vendureAssetIds.length === 0)
15
30
  return {};
@@ -1 +1 @@
1
- {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/content/assets.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,kBAAkB,CAAC,IAAgB;IACjD,OAAO;QAKL,KAAK,CAAC,QAAQ,CAAC,EAAU,EAAE,OAAwB;YACjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAChC,kBAAkB,EAAE,EAAE,EACtB,SAAS,EACT,OAAO,CACR,CAAC;YACF,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAQD,KAAK,CAAC,YAAY,CAAC,GAAa,EAAE,OAAwB;YACxD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAChC,gBAAgB,EAChB,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EACtB,OAAO,CACR,CAAC;YACF,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAOD,KAAK,CAAC,8BAA8B,CAClC,eAAyB,EACzB,OAAwB;YAExB,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAChC,wBAAwB,EACxB,EAAE,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAClC,OAAO,CACR,CAAC;YACF,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/content/assets.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,kBAAkB,CAAC,IAAgB;IACjD,OAAO;QACL;;;WAGG;QACH,KAAK,CAAC,QAAQ,CAAC,EAAU,EAAE,OAAwB;YACjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAChC,kBAAkB,EAAE,EAAE,EACtB,SAAS,EACT,OAAO,CACR,CAAC;YACF,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAED;;;;;WAKG;QACH,KAAK,CAAC,YAAY,CAAC,GAAa,EAAE,OAAwB;YACxD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAChC,gBAAgB,EAChB,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EACtB,OAAO,CACR,CAAC;YACF,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAED;;;;WAIG;QACH,KAAK,CAAC,8BAA8B,CAClC,eAAyB,EACzB,OAAwB;YAExB,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAChC,wBAAwB,EACxB,EAAE,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAClC,OAAO,CACR,CAAC;YACF,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,6 +1,11 @@
1
1
  import type { HttpClient } from '../core/http.js';
2
2
  import type { CollectionPageValues, RequestOptions, StoreContext } from '../types.js';
3
3
  export declare function createCollectionPageMethods(http: HttpClient, ctx: StoreContext): {
4
+ /**
5
+ * Fetch the page-scoped field values for a collection's landing page.
6
+ * Use this to render collection index pages (e.g. `/blog`, `/shop/sale`)
7
+ * with their associated CMS-managed hero image, intro copy, etc.
8
+ */
4
9
  getCollectionPageValues(collectionId: string, languageCode?: string, options?: RequestOptions): Promise<CollectionPageValues>;
5
10
  };
6
11
  //# sourceMappingURL=collection-pages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collection-pages.d.ts","sourceRoot":"","sources":["../../src/content/collection-pages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAOtF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY;0CAQ3D,MAAM,iBACL,MAAM,YACX,cAAc,GACvB,OAAO,CAAC,oBAAoB,CAAC;EAkBnC"}
1
+ {"version":3,"file":"collection-pages.d.ts","sourceRoot":"","sources":["../../src/content/collection-pages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAOtF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY;IAE3E;;;;OAIG;0CAEa,MAAM,iBACL,MAAM,YACX,cAAc,GACvB,OAAO,CAAC,oBAAoB,CAAC;EAkBnC"}
@@ -2,11 +2,19 @@ import { createContextAssetUrlResolver } from '../media/urls.js';
2
2
  import { resolveContentFieldValues } from './asset-urls.js';
3
3
  export function createCollectionPageMethods(http, ctx) {
4
4
  return {
5
+ /**
6
+ * Fetch the page-scoped field values for a collection's landing page.
7
+ * Use this to render collection index pages (e.g. `/blog`, `/shop/sale`)
8
+ * with their associated CMS-managed hero image, intro copy, etc.
9
+ */
5
10
  async getCollectionPageValues(collectionId, languageCode, options) {
6
11
  const params = {};
7
12
  if (languageCode)
8
13
  params.language_code = languageCode;
9
14
  const response = await http.cmsGet(`/collections/${collectionId}/page-values`, params, options);
15
+ // Values reference assets by storage key; the CDN origin (and the
16
+ // channel prefix, on a custom domain) belongs to render time, not to
17
+ // stored content. Legacy absolute URLs pass through untouched.
10
18
  const resolve = createContextAssetUrlResolver(ctx);
11
19
  return {
12
20
  ...response.data,
@@ -1 +1 @@
1
- {"version":3,"file":"collection-pages.js","sourceRoot":"","sources":["../../src/content/collection-pages.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAM5D,MAAM,UAAU,2BAA2B,CAAC,IAAgB,EAAE,GAAiB;IAC7E,OAAO;QAML,KAAK,CAAC,uBAAuB,CAC3B,YAAoB,EACpB,YAAqB,EACrB,OAAwB;YAExB,MAAM,MAAM,GAA2B,EAAE,CAAC;YAC1C,IAAI,YAAY;gBAAE,MAAM,CAAC,aAAa,GAAG,YAAY,CAAC;YACtD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAChC,gBAAgB,YAAY,cAAc,EAC1C,MAAM,EACN,OAAO,CACR,CAAC;YAIF,MAAM,OAAO,GAAG,6BAA6B,CAAC,GAAG,CAAC,CAAC;YACnD,OAAO;gBACL,GAAG,QAAQ,CAAC,IAAI;gBAChB,MAAM,EAAE,yBAAyB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;aACjE,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"collection-pages.js","sourceRoot":"","sources":["../../src/content/collection-pages.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAM5D,MAAM,UAAU,2BAA2B,CAAC,IAAgB,EAAE,GAAiB;IAC7E,OAAO;QACL;;;;WAIG;QACH,KAAK,CAAC,uBAAuB,CAC3B,YAAoB,EACpB,YAAqB,EACrB,OAAwB;YAExB,MAAM,MAAM,GAA2B,EAAE,CAAC;YAC1C,IAAI,YAAY;gBAAE,MAAM,CAAC,aAAa,GAAG,YAAY,CAAC;YACtD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAChC,gBAAgB,YAAY,cAAc,EAC1C,MAAM,EACN,OAAO,CACR,CAAC;YACF,kEAAkE;YAClE,qEAAqE;YACrE,+DAA+D;YAC/D,MAAM,OAAO,GAAG,6BAA6B,CAAC,GAAG,CAAC,CAAC;YACnD,OAAO;gBACL,GAAG,QAAQ,CAAC,IAAI;gBAChB,MAAM,EAAE,yBAAyB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;aACjE,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,9 +1,23 @@
1
1
  import type { HttpClient } from '../core/http.js';
2
2
  import type { CmsCollection, CmsCollectionDetail, CmsCollectionItem, CmsCollectionItemList, CollectionItemsQuery, RequestOptions, StoreContext } from '../types.js';
3
+ /**
4
+ * Direct (database-backed) CMS collection reads. Unlike `getContent` /
5
+ * `searchContent`, which go through the Meilisearch index, these read the
6
+ * CMS database directly — use them for canonical content fetches (detail
7
+ * pages, build-time rendering) where index freshness must not matter.
8
+ * Public callers only ever receive published items.
9
+ */
3
10
  export declare function createCmsCollectionMethods(http: HttpClient, ctx: StoreContext): {
11
+ /** List the channel's CMS collections (content types). */
4
12
  getCollections(options?: RequestOptions): Promise<CmsCollection[]>;
13
+ /** A single CMS collection including its field definitions. */
5
14
  getCollection(collectionId: string, options?: RequestOptions): Promise<CmsCollectionDetail>;
15
+ /**
16
+ * List a collection's items with locale-aware field values. Pass
17
+ * `parentId: 'root'` for top-level items of a hierarchical collection.
18
+ */
6
19
  getCollectionItems(collectionId: string, query?: CollectionItemsQuery, options?: RequestOptions): Promise<CmsCollectionItemList>;
20
+ /** A single collection item with field values and slug translations. */
7
21
  getCollectionItem(collectionId: string, itemId: string, languageCode?: string, options?: RequestOptions): Promise<CmsCollectionItem>;
8
22
  };
9
23
  //# sourceMappingURL=collections.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../src/content/collections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,YAAY,EACb,MAAM,aAAa,CAAC;AA2BrB,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY;6BAW3C,cAAc,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;gCAOxD,MAAM,YACV,cAAc,GACvB,OAAO,CAAC,mBAAmB,CAAC;qCAcf,MAAM,UACZ,oBAAoB,YAClB,cAAc,GACvB,OAAO,CAAC,qBAAqB,CAAC;oCAoBjB,MAAM,UACZ,MAAM,iBACC,MAAM,YACX,cAAc,GACvB,OAAO,CAAC,iBAAiB,CAAC;EAWhC"}
1
+ {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../src/content/collections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,YAAY,EACb,MAAM,aAAa,CAAC;AAoBrB;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY;IAU1E,0DAA0D;6BAC3B,cAAc,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAKxE,+DAA+D;gCAE/C,MAAM,YACV,cAAc,GACvB,OAAO,CAAC,mBAAmB,CAAC;IAS/B;;;OAGG;qCAEa,MAAM,UACZ,oBAAoB,YAClB,cAAc,GACvB,OAAO,CAAC,qBAAqB,CAAC;IAkBjC,wEAAwE;oCAExD,MAAM,UACZ,MAAM,iBACC,MAAM,YACX,cAAc,GACvB,OAAO,CAAC,iBAAiB,CAAC;EAWhC"}
@@ -1,20 +1,35 @@
1
1
  import { createContextAssetUrlResolver } from '../media/urls.js';
2
2
  import { resolveContentFieldValues } from './asset-urls.js';
3
+ /**
4
+ * Direct (database-backed) CMS collection reads. Unlike `getContent` /
5
+ * `searchContent`, which go through the Meilisearch index, these read the
6
+ * CMS database directly — use them for canonical content fetches (detail
7
+ * pages, build-time rendering) where index freshness must not matter.
8
+ * Public callers only ever receive published items.
9
+ */
3
10
  export function createCmsCollectionMethods(http, ctx) {
11
+ // Built once: ctx is fixed for the client's lifetime.
4
12
  const resolve = createContextAssetUrlResolver(ctx);
13
+ /** Content values carry asset references as storage keys; resolve on read. */
5
14
  const withResolvedValues = (item) => ({
6
15
  ...item,
7
16
  values: resolveContentFieldValues(item.values, resolve),
8
17
  });
9
18
  return {
19
+ /** List the channel's CMS collections (content types). */
10
20
  async getCollections(options) {
11
21
  const envelope = await http.cmsGet('/collections', {}, options);
12
22
  return envelope.data;
13
23
  },
24
+ /** A single CMS collection including its field definitions. */
14
25
  async getCollection(collectionId, options) {
15
26
  const envelope = await http.cmsGet(`/collections/${collectionId}`, {}, options);
16
27
  return envelope.data;
17
28
  },
29
+ /**
30
+ * List a collection's items with locale-aware field values. Pass
31
+ * `parentId: 'root'` for top-level items of a hierarchical collection.
32
+ */
18
33
  async getCollectionItems(collectionId, query, options) {
19
34
  const params = {};
20
35
  if (query?.parentId)
@@ -34,6 +49,7 @@ export function createCmsCollectionMethods(http, ctx) {
34
49
  const envelope = await http.cmsGet(`/collections/${collectionId}/items`, params, options);
35
50
  return { items: envelope.data.map(withResolvedValues), total: envelope.pagination.total };
36
51
  },
52
+ /** A single collection item with field values and slug translations. */
37
53
  async getCollectionItem(collectionId, itemId, languageCode, options) {
38
54
  const params = {};
39
55
  if (languageCode)
@@ -1 +1 @@
1
- {"version":3,"file":"collections.js","sourceRoot":"","sources":["../../src/content/collections.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAUjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AA0B5D,MAAM,UAAU,0BAA0B,CAAC,IAAgB,EAAE,GAAiB;IAE5E,MAAM,OAAO,GAAG,6BAA6B,CAAC,GAAG,CAAC,CAAC;IAEnD,MAAM,kBAAkB,GAAG,CAAgD,IAAO,EAAK,EAAE,CAAC,CAAC;QACzF,GAAG,IAAI;QACP,MAAM,EAAE,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;KACxD,CAAC,CAAC;IAEH,OAAO;QAEL,KAAK,CAAC,cAAc,CAAC,OAAwB;YAC3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAyB,cAAc,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YACxF,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAGD,KAAK,CAAC,aAAa,CACjB,YAAoB,EACpB,OAAwB;YAExB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAChC,gBAAgB,YAAY,EAAE,EAC9B,EAAE,EACF,OAAO,CACR,CAAC;YACF,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAMD,KAAK,CAAC,kBAAkB,CACtB,YAAoB,EACpB,KAA4B,EAC5B,OAAwB;YAExB,MAAM,MAAM,GAA2B,EAAE,CAAC;YAC1C,IAAI,KAAK,EAAE,QAAQ;gBAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;YACvD,IAAI,KAAK,EAAE,IAAI;gBAAE,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YAC1C,IAAI,KAAK,EAAE,MAAM;gBAAE,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAChD,IAAI,KAAK,EAAE,IAAI;gBAAE,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YAC1C,IAAI,KAAK,EAAE,YAAY;gBAAE,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;YACnE,IAAI,KAAK,EAAE,KAAK,IAAI,IAAI;gBAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7D,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI;gBAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAEhE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAChC,gBAAgB,YAAY,QAAQ,EACpC,MAAM,EACN,OAAO,CACR,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC5F,CAAC;QAGD,KAAK,CAAC,iBAAiB,CACrB,YAAoB,EACpB,MAAc,EACd,YAAqB,EACrB,OAAwB;YAExB,MAAM,MAAM,GAA2B,EAAE,CAAC;YAC1C,IAAI,YAAY;gBAAE,MAAM,CAAC,aAAa,GAAG,YAAY,CAAC;YACtD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAChC,gBAAgB,YAAY,UAAU,MAAM,EAAE,EAC9C,MAAM,EACN,OAAO,CACR,CAAC;YACF,OAAO,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"collections.js","sourceRoot":"","sources":["../../src/content/collections.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAUjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAmB5D;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CAAC,IAAgB,EAAE,GAAiB;IAC5E,sDAAsD;IACtD,MAAM,OAAO,GAAG,6BAA6B,CAAC,GAAG,CAAC,CAAC;IACnD,8EAA8E;IAC9E,MAAM,kBAAkB,GAAG,CAAgD,IAAO,EAAK,EAAE,CAAC,CAAC;QACzF,GAAG,IAAI;QACP,MAAM,EAAE,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;KACxD,CAAC,CAAC;IAEH,OAAO;QACL,0DAA0D;QAC1D,KAAK,CAAC,cAAc,CAAC,OAAwB;YAC3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAyB,cAAc,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YACxF,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAED,+DAA+D;QAC/D,KAAK,CAAC,aAAa,CACjB,YAAoB,EACpB,OAAwB;YAExB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAChC,gBAAgB,YAAY,EAAE,EAC9B,EAAE,EACF,OAAO,CACR,CAAC;YACF,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAED;;;WAGG;QACH,KAAK,CAAC,kBAAkB,CACtB,YAAoB,EACpB,KAA4B,EAC5B,OAAwB;YAExB,MAAM,MAAM,GAA2B,EAAE,CAAC;YAC1C,IAAI,KAAK,EAAE,QAAQ;gBAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;YACvD,IAAI,KAAK,EAAE,IAAI;gBAAE,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YAC1C,IAAI,KAAK,EAAE,MAAM;gBAAE,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAChD,IAAI,KAAK,EAAE,IAAI;gBAAE,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YAC1C,IAAI,KAAK,EAAE,YAAY;gBAAE,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;YACnE,IAAI,KAAK,EAAE,KAAK,IAAI,IAAI;gBAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7D,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI;gBAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAEhE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAChC,gBAAgB,YAAY,QAAQ,EACpC,MAAM,EACN,OAAO,CACR,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC5F,CAAC;QAED,wEAAwE;QACxE,KAAK,CAAC,iBAAiB,CACrB,YAAoB,EACpB,MAAc,EACd,YAAqB,EACrB,OAAwB;YAExB,MAAM,MAAM,GAA2B,EAAE,CAAC;YAC1C,IAAI,YAAY;gBAAE,MAAM,CAAC,aAAa,GAAG,YAAY,CAAC;YACtD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAChC,gBAAgB,YAAY,UAAU,MAAM,EAAE,EAC9C,MAAM,EACN,OAAO,CACR,CAAC;YACF,OAAO,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { SearchInput } from '../types.js';
2
+ /** Value stored by the `filtered_products` CMS field type. */
2
3
  export interface FilteredProductsValue {
3
4
  filters: Array<{
4
5
  property_slug: string;
@@ -6,11 +7,28 @@ export interface FilteredProductsValue {
6
7
  }>;
7
8
  collection_id?: string | null;
8
9
  }
10
+ /** Field-level config for the `filtered_products` CMS field type. */
9
11
  export interface FilteredProductsConfig {
10
12
  filtered_sort_field?: string;
11
13
  filtered_sort_direction?: string;
12
14
  filtered_limit?: number;
13
15
  }
16
+ /**
17
+ * Convert a `filtered_products` CMS field value + config into SearchInput params
18
+ * for use with `searchProducts()`.
19
+ *
20
+ * Sort and limit come from the field config (set in the content type builder),
21
+ * filters and collection scope come from the per-item value.
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * const field = collection.fields.find(f => f.slug === 'featured');
26
+ * const value = item.values.featured as FilteredProductsValue;
27
+ * const results = await client.commerce.searchProducts(
28
+ * buildFilteredProductsSearch(value, field?.config),
29
+ * );
30
+ * ```
31
+ */
14
32
  export declare function buildFilteredProductsSearch(value: FilteredProductsValue, config?: FilteredProductsConfig, overrides?: {
15
33
  term?: string;
16
34
  take?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"filtered-products.d.ts","sourceRoot":"","sources":["../../src/content/filtered-products.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,KAAK,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACrE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAGD,MAAM,WAAW,sBAAsB;IACrC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAkBD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,qBAAqB,EAC5B,MAAM,CAAC,EAAE,sBAAsB,EAC/B,SAAS,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D,WAAW,CAiBb"}
1
+ {"version":3,"file":"filtered-products.d.ts","sourceRoot":"","sources":["../../src/content/filtered-products.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,8DAA8D;AAC9D,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,KAAK,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACrE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,qEAAqE;AACrE,MAAM,WAAW,sBAAsB;IACrC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,qBAAqB,EAC5B,MAAM,CAAC,EAAE,sBAAsB,EAC/B,SAAS,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D,WAAW,CAiBb"}
@@ -1,3 +1,19 @@
1
+ /**
2
+ * Convert a `filtered_products` CMS field value + config into SearchInput params
3
+ * for use with `searchProducts()`.
4
+ *
5
+ * Sort and limit come from the field config (set in the content type builder),
6
+ * filters and collection scope come from the per-item value.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * const field = collection.fields.find(f => f.slug === 'featured');
11
+ * const value = item.values.featured as FilteredProductsValue;
12
+ * const results = await client.commerce.searchProducts(
13
+ * buildFilteredProductsSearch(value, field?.config),
14
+ * );
15
+ * ```
16
+ */
1
17
  export function buildFilteredProductsSearch(value, config, overrides) {
2
18
  const sort = config?.filtered_sort_field
3
19
  ? {
@@ -1 +1 @@
1
- {"version":3,"file":"filtered-products.js","sourceRoot":"","sources":["../../src/content/filtered-products.ts"],"names":[],"mappings":"AA+BA,MAAM,UAAU,2BAA2B,CACzC,KAA4B,EAC5B,MAA+B,EAC/B,SAA2D;IAE3D,MAAM,IAAI,GAAoC,MAAM,EAAE,mBAAmB;QACvE,CAAC,CAAE;YACC,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,uBAAuB,IAAI,KAAK;SAC9C;QAC3B,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO;QACL,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE;QAC3B,iBAAiB,EAAE,KAAK,CAAC,OAAO;aAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;aAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAC1C,YAAY,EAAE,KAAK,CAAC,aAAa,IAAI,SAAS;QAC9C,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,MAAM,EAAE,cAAc;QAC/C,IAAI,EAAE,SAAS,EAAE,IAAI;QACrB,IAAI;KACL,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"filtered-products.js","sourceRoot":"","sources":["../../src/content/filtered-products.ts"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAA4B,EAC5B,MAA+B,EAC/B,SAA2D;IAE3D,MAAM,IAAI,GAAoC,MAAM,EAAE,mBAAmB;QACvE,CAAC,CAAE;YACC,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,uBAAuB,IAAI,KAAK;SAC9C;QAC3B,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO;QACL,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE;QAC3B,iBAAiB,EAAE,KAAK,CAAC,OAAO;aAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;aAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAC1C,YAAY,EAAE,KAAK,CAAC,aAAa,IAAI,SAAS;QAC9C,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,MAAM,EAAE,cAAc;QAC/C,IAAI,EAAE,SAAS,EAAE,IAAI;QACrB,IAAI;KACL,CAAC;AACJ,CAAC"}
@@ -1,4 +1,10 @@
1
1
  import type { FormFieldTypeDescriptor, FormSlugRules } from '../types.js';
2
+ /**
3
+ * Static mirror of the CMS slug rules (services/cms field-type-registry.ts),
4
+ * served live in the `meta.slugRules` of GET /forms/field-types. Form slugs are
5
+ * HYPHEN-separated and field slugs are UNDERSCORE-separated — the mix-up the
6
+ * CMS rejects with a 400.
7
+ */
2
8
  export declare const FORM_SLUG_RULES: FormSlugRules;
3
9
  export declare const FORM_FIELD_TYPES: FormFieldTypeDescriptor[];
4
10
  //# sourceMappingURL=form-field-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"form-field-types.d.ts","sourceRoot":"","sources":["../../src/content/form-field-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA2B,uBAAuB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAQnG,eAAO,MAAM,eAAe,EAAE,aAiB7B,CAAC;AA4BF,eAAO,MAAM,gBAAgB,EAAE,uBAAuB,EAoFrD,CAAC"}
1
+ {"version":3,"file":"form-field-types.d.ts","sourceRoot":"","sources":["../../src/content/form-field-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA2B,uBAAuB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEnG;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,aAiB7B,CAAC;AA4BF,eAAO,MAAM,gBAAgB,EAAE,uBAAuB,EAoFrD,CAAC"}
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Static mirror of the CMS slug rules (services/cms field-type-registry.ts),
3
+ * served live in the `meta.slugRules` of GET /forms/field-types. Form slugs are
4
+ * HYPHEN-separated and field slugs are UNDERSCORE-separated — the mix-up the
5
+ * CMS rejects with a 400.
6
+ */
1
7
  export const FORM_SLUG_RULES = {
2
8
  form: {
3
9
  pattern: '^[a-z0-9]+(?:-[a-z0-9]+)*$',
@@ -14,6 +20,12 @@ export const FORM_SLUG_RULES = {
14
20
  invalidExamples: ['Email', 'first-name', '_email', 'first__name'],
15
21
  },
16
22
  };
23
+ /**
24
+ * Static mirror of the CMS field-type registry (services/cms field-type-registry.ts),
25
+ * so a storefront can author forms without a round-trip. Keep this data
26
+ * IDENTICAL to what `GET /forms/field-types` (content.getFormFieldTypes())
27
+ * returns — the endpoint is authoritative; this is the offline copy.
28
+ */
17
29
  const STRING_CONSTRAINTS = [
18
30
  { key: 'min_length', valueType: 'integer', description: 'Minimum number of characters.' },
19
31
  { key: 'max_length', valueType: 'integer', description: 'Maximum number of characters.' },
@@ -1 +1 @@
1
- {"version":3,"file":"form-field-types.js","sourceRoot":"","sources":["../../src/content/form-field-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form-field-types.js","sourceRoot":"","sources":["../../src/content/form-field-types.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,26 @@
1
1
  import type { HttpClient } from '../core/http.js';
2
2
  import type { FormDefinition, FormFieldTypeDescriptor, FormFieldTypeRegistry, FormListOptions, FormListResult, FormSubmissionResult, RequestOptions, StoreContext } from '../types.js';
3
3
  export declare function createFormMethods(http: HttpClient, ctx: StoreContext): {
4
+ /**
5
+ * Discover the channel's forms (public projection). Returns summaries —
6
+ * `fields`/`translations` are empty here; call getForm/getFormBySlug for a
7
+ * single form's fields.
8
+ */
4
9
  listForms(options?: FormListOptions & RequestOptions): Promise<FormListResult>;
5
10
  getForm(id: string, options?: RequestOptions): Promise<FormDefinition>;
11
+ /** Look up a form by its stable slug instead of its UUID. */
6
12
  getFormBySlug(slug: string, options?: RequestOptions): Promise<FormDefinition>;
13
+ /**
14
+ * The field-type registry served by GET /forms/field-types. For an offline
15
+ * copy that needs no round-trip, import the static `FORM_FIELD_TYPES`.
16
+ */
7
17
  getFormFieldTypes(options?: RequestOptions): Promise<FormFieldTypeDescriptor[]>;
18
+ /**
19
+ * Field types AND slug rules from the same request. `meta.slugRules` was
20
+ * added to the endpoint after the SDK shipped, so a CMS that predates it
21
+ * falls back to the static mirror rather than handing back an undefined
22
+ * rule an author would then have to guess at.
23
+ */
8
24
  getFormFieldTypeRegistry(options?: RequestOptions): Promise<FormFieldTypeRegistry>;
9
25
  submitForm(id: string, values: Record<string, unknown>, options?: RequestOptions): Promise<FormSubmissionResult>;
10
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"forms.d.ts","sourceRoot":"","sources":["../../src/content/forms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EACV,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,eAAe,EACf,cAAc,EAEd,oBAAoB,EACpB,cAAc,EACd,YAAY,EACb,MAAM,aAAa,CAAC;AAGrB,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY;wBAmBvC,eAAe,GAAG,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;gBAUlE,MAAM,YAAY,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;wBAMlD,MAAM,YAAY,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;gCAalD,cAAc,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC;uCAe5C,cAAc,GAAG,OAAO,CAAC,qBAAqB,CAAC;mBASlF,MAAM,UACF,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YACrB,cAAc,GACvB,OAAO,CAAC,oBAAoB,CAAC;EAgCnC"}
1
+ {"version":3,"file":"forms.d.ts","sourceRoot":"","sources":["../../src/content/forms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EACV,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,eAAe,EACf,cAAc,EAEd,oBAAoB,EACpB,cAAc,EACd,YAAY,EACb,MAAM,aAAa,CAAC;AAGrB,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY;IAcjE;;;;OAIG;wBACuB,eAAe,GAAG,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;gBAUlE,MAAM,YAAY,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAK5E,6DAA6D;wBACnC,MAAM,YAAY,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IASpF;;;OAGG;gCAC+B,cAAc,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC;IASrF;;;;;OAKG;uCACsC,cAAc,GAAG,OAAO,CAAC,qBAAqB,CAAC;mBASlF,MAAM,UACF,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YACrB,cAAc,GACvB,OAAO,CAAC,oBAAoB,CAAC;EAgCnC"}
@@ -13,6 +13,11 @@ export function createFormMethods(http, ctx) {
13
13
  };
14
14
  }
15
15
  return {
16
+ /**
17
+ * Discover the channel's forms (public projection). Returns summaries —
18
+ * `fields`/`translations` are empty here; call getForm/getFormBySlug for a
19
+ * single form's fields.
20
+ */
16
21
  async listForms(options) {
17
22
  const params = {};
18
23
  if (options?.limit !== undefined)
@@ -31,19 +36,37 @@ export function createFormMethods(http, ctx) {
31
36
  const data = await http.cmsGet(`/forms/${id}`, undefined, options);
32
37
  return withSubmitTarget(data.data);
33
38
  },
39
+ /** Look up a form by its stable slug instead of its UUID. */
34
40
  async getFormBySlug(slug, options) {
35
41
  const data = await http.cmsGet(`/forms/by-slug/${encodeURIComponent(slug)}`, undefined, options);
36
42
  return withSubmitTarget(data.data);
37
43
  },
44
+ /**
45
+ * The field-type registry served by GET /forms/field-types. For an offline
46
+ * copy that needs no round-trip, import the static `FORM_FIELD_TYPES`.
47
+ */
38
48
  async getFormFieldTypes(options) {
39
49
  const data = await http.cmsGet('/forms/field-types', undefined, options);
40
50
  return data.data;
41
51
  },
52
+ /**
53
+ * Field types AND slug rules from the same request. `meta.slugRules` was
54
+ * added to the endpoint after the SDK shipped, so a CMS that predates it
55
+ * falls back to the static mirror rather than handing back an undefined
56
+ * rule an author would then have to guess at.
57
+ */
42
58
  async getFormFieldTypeRegistry(options) {
43
59
  const data = await http.cmsGet('/forms/field-types', undefined, options);
44
60
  return { fieldTypes: data.data, slugRules: data.meta?.slugRules ?? FORM_SLUG_RULES };
45
61
  },
46
62
  async submitForm(id, values, options) {
63
+ // The CMS expects the field values wrapped in `data`, with an optional
64
+ // locale taken from the store context. On success it returns
65
+ // { data: { id, created_at } }. A 400 carrying field-level details is a
66
+ // VALIDATION failure — resolved as { success: false, errors } so
67
+ // storefronts can render inline field messages without try/catch.
68
+ // Everything else (429 rate limit with retryAfterSeconds, non-field
69
+ // 400s, 5xx, transport) still throws.
47
70
  const body = { data: values };
48
71
  if (ctx.languageCode) {
49
72
  body.locale_code = ctx.languageCode;
@@ -1 +1 @@
1
- {"version":3,"file":"forms.js","sourceRoot":"","sources":["../../src/content/forms.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"forms.js","sourceRoot":"","sources":["../../src/content/forms.ts"],"names":[],"mappings":"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"}