@sixtyninecommerce/client 0.29.0 → 0.31.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 (358) hide show
  1. package/README.md +556 -16
  2. package/dist/admin/http.d.ts.map +1 -1
  3. package/dist/admin/http.js.map +1 -1
  4. package/dist/admin/types.d.ts.map +1 -1
  5. package/dist/build-client.d.ts +9 -0
  6. package/dist/build-client.d.ts.map +1 -0
  7. package/dist/build-client.js +58 -0
  8. package/dist/build-client.js.map +1 -0
  9. package/dist/cache-tags.d.ts +35 -1
  10. package/dist/cache-tags.d.ts.map +1 -1
  11. package/dist/cache-tags.js +39 -1
  12. package/dist/cache-tags.js.map +1 -1
  13. package/dist/client.d.ts +25 -0
  14. package/dist/client.d.ts.map +1 -1
  15. package/dist/client.js +9 -62
  16. package/dist/client.js.map +1 -1
  17. package/dist/commerce/age-verification.d.ts +7 -4
  18. package/dist/commerce/age-verification.d.ts.map +1 -1
  19. package/dist/commerce/age-verification.js +6 -4
  20. package/dist/commerce/age-verification.js.map +1 -1
  21. package/dist/commerce/arguments.d.ts +13 -0
  22. package/dist/commerce/arguments.d.ts.map +1 -0
  23. package/dist/commerce/arguments.js +19 -0
  24. package/dist/commerce/arguments.js.map +1 -0
  25. package/dist/commerce/branding.d.ts.map +1 -1
  26. package/dist/commerce/branding.js.map +1 -1
  27. package/dist/commerce/capabilities.d.ts +40 -0
  28. package/dist/commerce/capabilities.d.ts.map +1 -0
  29. package/dist/commerce/capabilities.js +41 -0
  30. package/dist/commerce/capabilities.js.map +1 -0
  31. package/dist/commerce/cart.d.ts +9 -12
  32. package/dist/commerce/cart.d.ts.map +1 -1
  33. package/dist/commerce/cart.js +6 -1
  34. package/dist/commerce/cart.js.map +1 -1
  35. package/dist/commerce/checkout.d.ts +95 -15
  36. package/dist/commerce/checkout.d.ts.map +1 -1
  37. package/dist/commerce/checkout.js +230 -10
  38. package/dist/commerce/checkout.js.map +1 -1
  39. package/dist/commerce/customer.d.ts +82 -38
  40. package/dist/commerce/customer.d.ts.map +1 -1
  41. package/dist/commerce/customer.js +146 -10
  42. package/dist/commerce/customer.js.map +1 -1
  43. package/dist/commerce/favorites.d.ts +2 -5
  44. package/dist/commerce/favorites.d.ts.map +1 -1
  45. package/dist/commerce/favorites.js.map +1 -1
  46. package/dist/commerce/index.d.ts +189 -133
  47. package/dist/commerce/index.d.ts.map +1 -1
  48. package/dist/commerce/index.js +9 -0
  49. package/dist/commerce/index.js.map +1 -1
  50. package/dist/commerce/order-states.d.ts +18 -0
  51. package/dist/commerce/order-states.d.ts.map +1 -0
  52. package/dist/commerce/order-states.js +30 -0
  53. package/dist/commerce/order-states.js.map +1 -0
  54. package/dist/commerce/parcel-pricing.d.ts +48 -0
  55. package/dist/commerce/parcel-pricing.d.ts.map +1 -0
  56. package/dist/commerce/parcel-pricing.js +39 -0
  57. package/dist/commerce/parcel-pricing.js.map +1 -0
  58. package/dist/commerce/parked-orders.d.ts +22 -0
  59. package/dist/commerce/parked-orders.d.ts.map +1 -0
  60. package/dist/commerce/parked-orders.js +47 -0
  61. package/dist/commerce/parked-orders.js.map +1 -0
  62. package/dist/commerce/payments.d.ts +12 -5
  63. package/dist/commerce/payments.d.ts.map +1 -1
  64. package/dist/commerce/payments.js +10 -1
  65. package/dist/commerce/payments.js.map +1 -1
  66. package/dist/commerce/placement-error.d.ts +17 -0
  67. package/dist/commerce/placement-error.d.ts.map +1 -1
  68. package/dist/commerce/placement-error.js.map +1 -1
  69. package/dist/commerce/products.d.ts +92 -38
  70. package/dist/commerce/products.d.ts.map +1 -1
  71. package/dist/commerce/products.js +162 -123
  72. package/dist/commerce/products.js.map +1 -1
  73. package/dist/commerce/queries.d.ts +204 -49
  74. package/dist/commerce/queries.d.ts.map +1 -1
  75. package/dist/commerce/queries.js +1296 -737
  76. package/dist/commerce/queries.js.map +1 -1
  77. package/dist/commerce/quotes.d.ts +5 -4
  78. package/dist/commerce/quotes.d.ts.map +1 -1
  79. package/dist/commerce/quotes.js +1 -36
  80. package/dist/commerce/quotes.js.map +1 -1
  81. package/dist/commerce/recommendations.d.ts +3 -3
  82. package/dist/commerce/recommendations.d.ts.map +1 -1
  83. package/dist/commerce/recommendations.js +3 -1
  84. package/dist/commerce/recommendations.js.map +1 -1
  85. package/dist/commerce/returns.d.ts +7 -6
  86. package/dist/commerce/returns.d.ts.map +1 -1
  87. package/dist/commerce/returns.js.map +1 -1
  88. package/dist/commerce/reviews.d.ts +24 -15
  89. package/dist/commerce/reviews.d.ts.map +1 -1
  90. package/dist/commerce/reviews.js +67 -50
  91. package/dist/commerce/reviews.js.map +1 -1
  92. package/dist/commerce/saved-lists.d.ts +15 -15
  93. package/dist/commerce/saved-lists.d.ts.map +1 -1
  94. package/dist/commerce/saved-lists.js +67 -55
  95. package/dist/commerce/saved-lists.js.map +1 -1
  96. package/dist/commerce/search.d.ts +3 -2
  97. package/dist/commerce/search.d.ts.map +1 -1
  98. package/dist/commerce/search.js +10 -2
  99. package/dist/commerce/search.js.map +1 -1
  100. package/dist/commerce/shipping.d.ts +11 -4
  101. package/dist/commerce/shipping.d.ts.map +1 -1
  102. package/dist/commerce/shipping.js +17 -2
  103. package/dist/commerce/shipping.js.map +1 -1
  104. package/dist/commerce/stock-notifications.d.ts +2 -0
  105. package/dist/commerce/stock-notifications.d.ts.map +1 -1
  106. package/dist/commerce/stock-notifications.js +2 -2
  107. package/dist/commerce/stock-notifications.js.map +1 -1
  108. package/dist/commerce/subscriptions.d.ts +35 -37
  109. package/dist/commerce/subscriptions.d.ts.map +1 -1
  110. package/dist/commerce/subscriptions.js +159 -120
  111. package/dist/commerce/subscriptions.js.map +1 -1
  112. package/dist/commerce/vat-validation.d.ts +6 -3
  113. package/dist/commerce/vat-validation.d.ts.map +1 -1
  114. package/dist/commerce/vat-validation.js +24 -19
  115. package/dist/commerce/vat-validation.js.map +1 -1
  116. package/dist/constants.d.ts.map +1 -1
  117. package/dist/constants.js.map +1 -1
  118. package/dist/content/assets.d.ts +5 -4
  119. package/dist/content/assets.d.ts.map +1 -1
  120. package/dist/content/assets.js.map +1 -1
  121. package/dist/content/collection-pages.d.ts +3 -2
  122. package/dist/content/collection-pages.d.ts.map +1 -1
  123. package/dist/content/collection-pages.js.map +1 -1
  124. package/dist/content/collections.d.ts +5 -4
  125. package/dist/content/collections.d.ts.map +1 -1
  126. package/dist/content/collections.js.map +1 -1
  127. package/dist/content/filtered-products.d.ts.map +1 -1
  128. package/dist/content/filtered-products.js.map +1 -1
  129. package/dist/content/form-field-types.d.ts +3 -3
  130. package/dist/content/form-field-types.d.ts.map +1 -1
  131. package/dist/content/form-field-types.js.map +1 -1
  132. package/dist/content/forms.d.ts +4 -3
  133. package/dist/content/forms.d.ts.map +1 -1
  134. package/dist/content/forms.js +3 -0
  135. package/dist/content/forms.js.map +1 -1
  136. package/dist/content/index.d.ts +18 -17
  137. package/dist/content/index.d.ts.map +1 -1
  138. package/dist/content/items.d.ts +5 -4
  139. package/dist/content/items.d.ts.map +1 -1
  140. package/dist/content/items.js +2 -0
  141. package/dist/content/items.js.map +1 -1
  142. package/dist/content/menus.d.ts +3 -2
  143. package/dist/content/menus.d.ts.map +1 -1
  144. package/dist/content/menus.js +7 -1
  145. package/dist/content/menus.js.map +1 -1
  146. package/dist/content/resolve.d.ts +3 -2
  147. package/dist/content/resolve.d.ts.map +1 -1
  148. package/dist/content/resolve.js +1 -1
  149. package/dist/content/resolve.js.map +1 -1
  150. package/dist/content/sitemap.d.ts +3 -2
  151. package/dist/content/sitemap.d.ts.map +1 -1
  152. package/dist/content/sitemap.js.map +1 -1
  153. package/dist/content/strings.d.ts +16 -2
  154. package/dist/content/strings.d.ts.map +1 -1
  155. package/dist/content/strings.js +32 -4
  156. package/dist/content/strings.js.map +1 -1
  157. package/dist/core/context.d.ts +127 -1
  158. package/dist/core/context.d.ts.map +1 -1
  159. package/dist/core/context.js +436 -45
  160. package/dist/core/context.js.map +1 -1
  161. package/dist/core/currency.d.ts +14 -0
  162. package/dist/core/currency.d.ts.map +1 -0
  163. package/dist/core/currency.js +52 -0
  164. package/dist/core/currency.js.map +1 -0
  165. package/dist/core/deprecation.d.ts +23 -0
  166. package/dist/core/deprecation.d.ts.map +1 -0
  167. package/dist/core/deprecation.js +81 -0
  168. package/dist/core/deprecation.js.map +1 -0
  169. package/dist/core/http.d.ts +15 -1
  170. package/dist/core/http.d.ts.map +1 -1
  171. package/dist/core/http.js +55 -3
  172. package/dist/core/http.js.map +1 -1
  173. package/dist/core/public-artifact.d.ts +72 -0
  174. package/dist/core/public-artifact.d.ts.map +1 -0
  175. package/dist/core/public-artifact.js +122 -0
  176. package/dist/core/public-artifact.js.map +1 -0
  177. package/dist/core/unknown-field-rejection.d.ts +18 -0
  178. package/dist/core/unknown-field-rejection.d.ts.map +1 -0
  179. package/dist/core/unknown-field-rejection.js +37 -0
  180. package/dist/core/unknown-field-rejection.js.map +1 -0
  181. package/dist/credit/credit-status.d.ts +2 -0
  182. package/dist/credit/credit-status.d.ts.map +1 -1
  183. package/dist/credit/credit-status.js +71 -19
  184. package/dist/credit/credit-status.js.map +1 -1
  185. package/dist/credit/index.d.ts +1 -1
  186. package/dist/credit/payment-terms.d.ts +3 -3
  187. package/dist/credit/payment-terms.d.ts.map +1 -1
  188. package/dist/credit/payment-terms.js +28 -24
  189. package/dist/credit/payment-terms.js.map +1 -1
  190. package/dist/currency/exchange.d.ts +7 -7
  191. package/dist/currency/exchange.d.ts.map +1 -1
  192. package/dist/currency/exchange.js +5 -1
  193. package/dist/currency/exchange.js.map +1 -1
  194. package/dist/errors.d.ts +17 -0
  195. package/dist/errors.d.ts.map +1 -1
  196. package/dist/errors.js +13 -0
  197. package/dist/errors.js.map +1 -1
  198. package/dist/events/index.d.ts +20 -7
  199. package/dist/events/index.d.ts.map +1 -1
  200. package/dist/events/index.js +17 -5
  201. package/dist/events/index.js.map +1 -1
  202. package/dist/events/payloads.d.ts +7 -4
  203. package/dist/events/payloads.d.ts.map +1 -1
  204. package/dist/events/payloads.js +6 -3
  205. package/dist/events/payloads.js.map +1 -1
  206. package/dist/feeds/index.d.ts +5 -0
  207. package/dist/feeds/index.d.ts.map +1 -0
  208. package/dist/feeds/index.js +12 -0
  209. package/dist/feeds/index.js.map +1 -0
  210. package/dist/feeds/types.d.ts +18 -0
  211. package/dist/feeds/types.d.ts.map +1 -0
  212. package/dist/feeds/types.js +8 -0
  213. package/dist/feeds/types.js.map +1 -0
  214. package/dist/generated/cms.d.ts +2136 -0
  215. package/dist/generated/cms.d.ts.map +1 -0
  216. package/dist/generated/cms.js +4 -0
  217. package/dist/generated/cms.js.map +1 -0
  218. package/dist/generated/plugins.d.ts +550 -0
  219. package/dist/generated/plugins.d.ts.map +1 -0
  220. package/dist/generated/plugins.js +4 -0
  221. package/dist/generated/plugins.js.map +1 -0
  222. package/dist/generated/shop.d.ts +5539 -0
  223. package/dist/generated/shop.d.ts.map +1 -0
  224. package/dist/generated/shop.js +5 -0
  225. package/dist/generated/shop.js.map +1 -0
  226. package/dist/graphql-document.d.ts +29 -0
  227. package/dist/graphql-document.d.ts.map +1 -0
  228. package/dist/graphql-document.js +21 -0
  229. package/dist/graphql-document.js.map +1 -0
  230. package/dist/index.d.ts +9 -4
  231. package/dist/index.d.ts.map +1 -1
  232. package/dist/index.js +4 -2
  233. package/dist/index.js.map +1 -1
  234. package/dist/media/urls.d.ts.map +1 -1
  235. package/dist/media/urls.js +12 -1
  236. package/dist/media/urls.js.map +1 -1
  237. package/dist/media/video.d.ts.map +1 -1
  238. package/dist/media/video.js.map +1 -1
  239. package/dist/multi-store.d.ts +200 -0
  240. package/dist/multi-store.d.ts.map +1 -0
  241. package/dist/multi-store.js +558 -0
  242. package/dist/multi-store.js.map +1 -0
  243. package/dist/navigation/routes.d.ts +4 -3
  244. package/dist/navigation/routes.d.ts.map +1 -1
  245. package/dist/navigation/routes.js.map +1 -1
  246. package/dist/next/artifact-handler.d.ts +21 -13
  247. package/dist/next/artifact-handler.d.ts.map +1 -1
  248. package/dist/next/artifact-handler.js +28 -66
  249. package/dist/next/artifact-handler.js.map +1 -1
  250. package/dist/next/event-revalidate-handler.d.ts +26 -6
  251. package/dist/next/event-revalidate-handler.d.ts.map +1 -1
  252. package/dist/next/event-revalidate-handler.js +126 -19
  253. package/dist/next/event-revalidate-handler.js.map +1 -1
  254. package/dist/next/feed-handler.d.ts +50 -0
  255. package/dist/next/feed-handler.d.ts.map +1 -0
  256. package/dist/next/feed-handler.js +61 -0
  257. package/dist/next/feed-handler.js.map +1 -0
  258. package/dist/next/index.d.ts +3 -1
  259. package/dist/next/index.d.ts.map +1 -1
  260. package/dist/next/index.js +1 -0
  261. package/dist/next/index.js.map +1 -1
  262. package/dist/next/metadata.d.ts.map +1 -1
  263. package/dist/next/metadata.js.map +1 -1
  264. package/dist/next/redirect-middleware.d.ts +5 -31
  265. package/dist/next/redirect-middleware.d.ts.map +1 -1
  266. package/dist/next/redirect-middleware.js +4 -46
  267. package/dist/next/redirect-middleware.js.map +1 -1
  268. package/dist/next/revalidate-handler.d.ts.map +1 -1
  269. package/dist/next/revalidate-handler.js.map +1 -1
  270. package/dist/pricing/index.d.ts +1 -1
  271. package/dist/pricing/index.d.ts.map +1 -1
  272. package/dist/pricing/index.js +5 -2
  273. package/dist/pricing/index.js.map +1 -1
  274. package/dist/pricing/tax-display.js +1 -1
  275. package/dist/pricing/tax-display.js.map +1 -1
  276. package/dist/pricing/tiers.d.ts +3 -2
  277. package/dist/pricing/tiers.d.ts.map +1 -1
  278. package/dist/pricing/tiers.js.map +1 -1
  279. package/dist/pricing/validation.d.ts +152 -13
  280. package/dist/pricing/validation.d.ts.map +1 -1
  281. package/dist/pricing/validation.js +167 -13
  282. package/dist/pricing/validation.js.map +1 -1
  283. package/dist/redirects/index.d.ts.map +1 -1
  284. package/dist/redirects/index.js +2 -1
  285. package/dist/redirects/index.js.map +1 -1
  286. package/dist/redirects/store.d.ts.map +1 -1
  287. package/dist/redirects/store.js +6 -2
  288. package/dist/redirects/store.js.map +1 -1
  289. package/dist/redirects/types.d.ts +5 -2
  290. package/dist/redirects/types.d.ts.map +1 -1
  291. package/dist/revalidation/event-plan.d.ts +55 -4
  292. package/dist/revalidation/event-plan.d.ts.map +1 -1
  293. package/dist/revalidation/event-plan.js +115 -8
  294. package/dist/revalidation/event-plan.js.map +1 -1
  295. package/dist/revalidation/event-verify.d.ts +8 -37
  296. package/dist/revalidation/event-verify.d.ts.map +1 -1
  297. package/dist/revalidation/event-verify.js +7 -97
  298. package/dist/revalidation/event-verify.js.map +1 -1
  299. package/dist/revalidation/types.d.ts.map +1 -1
  300. package/dist/revalidation/url-context.d.ts +17 -0
  301. package/dist/revalidation/url-context.d.ts.map +1 -1
  302. package/dist/revalidation/url-context.js +35 -2
  303. package/dist/revalidation/url-context.js.map +1 -1
  304. package/dist/seo/ai.d.ts.map +1 -1
  305. package/dist/seo/ai.js.map +1 -1
  306. package/dist/seo/artifacts.d.ts +86 -4
  307. package/dist/seo/artifacts.d.ts.map +1 -1
  308. package/dist/seo/artifacts.js +115 -16
  309. package/dist/seo/artifacts.js.map +1 -1
  310. package/dist/seo/availability.d.ts +95 -0
  311. package/dist/seo/availability.d.ts.map +1 -0
  312. package/dist/seo/availability.js +89 -0
  313. package/dist/seo/availability.js.map +1 -0
  314. package/dist/seo/index.d.ts +4 -0
  315. package/dist/seo/index.d.ts.map +1 -1
  316. package/dist/seo/index.js +6 -1
  317. package/dist/seo/index.js.map +1 -1
  318. package/dist/seo/json-ld.d.ts.map +1 -1
  319. package/dist/seo/json-ld.js +34 -1
  320. package/dist/seo/json-ld.js.map +1 -1
  321. package/dist/seo/meta-tags.d.ts +40 -1
  322. package/dist/seo/meta-tags.d.ts.map +1 -1
  323. package/dist/seo/meta-tags.js +8 -1
  324. package/dist/seo/meta-tags.js.map +1 -1
  325. package/dist/seo/metadata-parser.d.ts.map +1 -1
  326. package/dist/seo/metadata-parser.js.map +1 -1
  327. package/dist/seo/metadata-types.d.ts.map +1 -1
  328. package/dist/seo/robots.d.ts.map +1 -1
  329. package/dist/seo/robots.js.map +1 -1
  330. package/dist/seo/types.d.ts +20 -2
  331. package/dist/seo/types.d.ts.map +1 -1
  332. package/dist/seo/url-builder.d.ts +5 -3
  333. package/dist/seo/url-builder.d.ts.map +1 -1
  334. package/dist/seo/url-builder.js +3 -1
  335. package/dist/seo/url-builder.js.map +1 -1
  336. package/dist/types.d.ts +1306 -2429
  337. package/dist/types.d.ts.map +1 -1
  338. package/dist/web/artifact-responder.d.ts +69 -0
  339. package/dist/web/artifact-responder.d.ts.map +1 -0
  340. package/dist/web/artifact-responder.js +90 -0
  341. package/dist/web/artifact-responder.js.map +1 -0
  342. package/dist/web/feed-responder.d.ts +72 -0
  343. package/dist/web/feed-responder.d.ts.map +1 -0
  344. package/dist/web/feed-responder.js +81 -0
  345. package/dist/web/feed-responder.js.map +1 -0
  346. package/dist/web/index.d.ts +23 -0
  347. package/dist/web/index.d.ts.map +1 -0
  348. package/dist/web/index.js +19 -0
  349. package/dist/web/index.js.map +1 -0
  350. package/dist/web/redirect-middleware.d.ts +76 -0
  351. package/dist/web/redirect-middleware.d.ts.map +1 -0
  352. package/dist/web/redirect-middleware.js +94 -0
  353. package/dist/web/redirect-middleware.js.map +1 -0
  354. package/dist/web/respond.d.ts +20 -0
  355. package/dist/web/respond.d.ts.map +1 -0
  356. package/dist/web/respond.js +52 -0
  357. package/dist/web/respond.js.map +1 -0
  358. package/package.json +19 -3
@@ -1,15 +1,39 @@
1
1
  import { collectionCacheTag, productCacheTag } from '../cache-tags.js';
2
- import { tagRequest } from '../core/http.js';
2
+ import { tagCatalogRead } from '../core/http.js';
3
3
  import { StorefrontError } from '../errors.js';
4
4
  import { parseProductMetadata } from '../seo/metadata-parser.js';
5
- import { GET_COLLECTION, GET_COLLECTION_BY_ID, GET_PRODUCT, GET_PRODUCT_BY_ID, LIST_COLLECTIONS, LIST_FACETS, LIST_PRODUCT_CARDS, LIST_PRODUCTS, PRODUCT_PROPERTIES, PROPERTY_GROUPS, SEARCH_PRODUCTS, } from './queries.js';
5
+ import { invalidArgument, isNonBlankString, isPlainObject } from './arguments.js';
6
+ import { GET_COLLECTION, GET_COLLECTION_BY_ID, GET_COLLECTION_BY_ID_WITH_METAFIELDS, GET_COLLECTION_WITH_METAFIELDS, GET_PRODUCT, GET_PRODUCT_BY_ID, GET_PRODUCT_BY_ID_WITH_METAFIELDS, GET_PRODUCT_WITH_METAFIELDS, LIST_COLLECTIONS, LIST_FACETS, LIST_PRODUCT_CARDS, LIST_PRODUCTS, PRODUCT_PROPERTIES, PROPERTY_GROUPS, SEARCH_PRODUCTS, } from './queries.js';
7
+ /**
8
+ * The namespace a read asks for, `null` for every namespace, or `undefined`
9
+ * when the caller did not ask for metafields at all.
10
+ *
11
+ * Refused before any request (INVALID_ARGUMENT): anything but a boolean or an
12
+ * object carrying a non-blank `namespace`. An empty namespace would read as
13
+ * "every namespace" on the engine, which `true` already says.
14
+ */
15
+ function metafieldsNamespace(method, option) {
16
+ if (option === undefined || option === false)
17
+ return undefined;
18
+ if (option === true)
19
+ return null;
20
+ if (isPlainObject(option) && isNonBlankString(option.namespace))
21
+ return option.namespace;
22
+ throw invalidArgument(`${method}: \`metafields\` takes true (every namespace), false, or { namespace: '<app slug>' } ` +
23
+ 'with a non-blank namespace.');
24
+ }
25
+ function productNotFound(slugOrId) {
26
+ return new StorefrontError(`Product not found: ${slugOrId}`, 'vendure', 404, 'NOT_FOUND');
27
+ }
28
+ function collectionNotFound(slugOrId) {
29
+ return new StorefrontError(`Collection not found: ${slugOrId}`, 'vendure', 404, 'NOT_FOUND');
30
+ }
6
31
  /**
7
32
  * Replace the raw `metadata` payload on a fetched product with the parsed +
8
33
  * validated SDK shape. Idempotent for products without metadata (null).
9
34
  */
10
35
  function hydrateProductMetadata(product) {
11
- const raw = product.metadata;
12
- return { ...product, metadata: parseProductMetadata(raw ?? null) };
36
+ return { ...product, metadata: parseProductMetadata(product.metadata) };
13
37
  }
14
38
  /**
15
39
  * Map a SearchResultItem to the honest collection-listing shape. The search
@@ -55,20 +79,26 @@ function searchItemToCollectionProduct(item) {
55
79
  priceWithTax,
56
80
  currencyCode: item.currencyCode,
57
81
  stockLevel: item.inStock ? 'IN_STOCK' : 'OUT_OF_STOCK',
82
+ // Carried through, never defaulted to `none`: a search document written
83
+ // before the availability attribute existed does not know the state,
84
+ // and saying `none` for it would tell a card "ordinary stock rules
85
+ // apply" about a product that may be coming soon.
86
+ availability: item.availability ?? null,
58
87
  },
59
88
  ],
60
89
  };
61
90
  }
62
91
  /**
63
- * Legacy mapper for the deprecated `getProducts({ collectionSlug })` path,
64
- * which promised the `ProductSummary` shape and filled the gaps with dummies
65
- * (`sku: ''`). Kept only for that path's back-compat — new code goes through
66
- * `getProductsInCollection`, which returns the honest shape.
92
+ * Mapper for the deprecated `getProducts({ collectionSlug })` path. It once
93
+ * promised the list-row shape and filled the gaps with dummies; the `sku: ''`
94
+ * dummy is still on the wire object for code that read it, but the path is now
95
+ * typed as what it is — a search row (`CollectionProductSummary`).
67
96
  */
68
- function searchItemToProductSummary(item) {
97
+ function searchItemToLegacyListRow(item) {
69
98
  const product = searchItemToCollectionProduct(item);
70
99
  const [variant] = product.variants;
71
- return { ...product, variants: [{ ...variant, sku: '' }] };
100
+ const withDummySku = { ...variant, sku: '' };
101
+ return { ...product, variants: [withDummySku] };
72
102
  }
73
103
  /**
74
104
  * Extract the numeric amount from a search-result price (SinglePrice `value`
@@ -110,102 +140,123 @@ export function mapProductProperties(groups) {
110
140
  return record;
111
141
  }
112
142
  export function createProductMethods(http) {
113
- return {
114
- async getProduct(slug, options) {
115
- const data = await http.graphql(GET_PRODUCT, { slug }, tagRequest(options, 'getProduct'));
116
- if (!data.product) {
117
- throw new StorefrontError(`Product not found: ${slug}`, 'vendure', 404, 'NOT_FOUND');
118
- }
119
- return hydrateProductMetadata(data.product);
120
- },
121
- async getProductById(id, options) {
122
- const data = await http.graphql(GET_PRODUCT_BY_ID, { id }, tagRequest(options, 'getProductById', [productCacheTag(id)]));
123
- if (!data.product) {
124
- throw new StorefrontError(`Product not found: ${id}`, 'vendure', 404, 'NOT_FOUND');
125
- }
126
- return hydrateProductMetadata(data.product);
127
- },
128
- /**
129
- * List products for the active channel via the `products` list query.
130
- * Defaults to `filter: { enabled: { eq: true } }` (and the Shop API forces
131
- * the same server-side), so `totalItems` matches the browsable catalogue.
132
- *
133
- * Cannot sort by price — Vendure's `ProductSortParameter` has no price
134
- * field. Price-sorted listings go through `getProductsInCollection` or
135
- * `searchProducts`.
136
- *
137
- * The deprecated `{ collectionSlug }` option reroutes to the search
138
- * backend with its flatter row shape — call `getProductsInCollection`
139
- * instead, which returns that shape honestly typed. That branch returns
140
- * before the document switch, so `detail` has no effect on it.
141
- *
142
- * Pass `{ detail: 'card' }` for listing pages: it swaps in a grid-tile
143
- * selection that drops the per-VARIANT stock reads a tile never shows
144
- * (`availabilityByLocation`, `stockOnHand`/`stockAllocated`, and the
145
- * incoming-stock trio) plus the product `description`, including the
146
- * per-language copy inside `translations`. Those variant fields are
147
- * per-variant field resolvers server-side, so this cuts backend work and SQL
148
- * statements, not only bytes.
149
- *
150
- * The collection tree, the translated slugs and `priceTiers` are KEPT, so a
151
- * card row still drives canonical/hreflang URLs and quantity-break pricing —
152
- * see `ProductListOptions.detail` for the full kept/dropped list and why.
153
- * The default is unchanged, so existing callers keep the full shape.
154
- */
155
- async getProducts(listOptions, options) {
156
- // Deprecated reroute, kept for back-compat: the `products` query has no
157
- // collection filter, so collection listings go through `search`.
158
- if (listOptions?.collectionSlug) {
159
- const data = await http.graphql(SEARCH_PRODUCTS, {
160
- input: {
161
- term: '',
162
- collectionSlug: listOptions.collectionSlug,
163
- take: listOptions.take ?? 20,
164
- skip: listOptions.skip ?? 0,
165
- ...(listOptions.sort ? { sort: listOptions.sort } : {}),
166
- },
167
- }, tagRequest(options, 'getProducts'));
168
- return {
169
- items: data.search.items.map(searchItemToProductSummary),
170
- totalItems: data.search.totalItems,
171
- };
172
- }
173
- // `detail` picks the DOCUMENT, not server-side list options — Vendure's
174
- // `ProductListOptions` input has no such field and would reject it.
175
- const queryOptions = {
176
- take: listOptions?.take ?? 20,
177
- skip: listOptions?.skip ?? 0,
143
+ async function getProducts(listOptions, options) {
144
+ // Deprecated reroute, kept for back-compat: the `products` query has no
145
+ // collection filter, so collection listings go through `search`.
146
+ if (listOptions?.collectionSlug) {
147
+ const data = await http.graphql(SEARCH_PRODUCTS, {
148
+ input: {
149
+ term: '',
150
+ collectionSlug: listOptions.collectionSlug,
151
+ take: listOptions.take ?? 20,
152
+ skip: listOptions.skip ?? 0,
153
+ ...(listOptions.sort ? { sort: listOptions.sort } : {}),
154
+ },
155
+ }, tagCatalogRead(options, 'getProducts'));
156
+ return {
157
+ items: data.search.items.map(searchItemToLegacyListRow),
158
+ totalItems: data.search.totalItems,
178
159
  };
179
- if (listOptions?.sort) {
180
- // Guard for JS callers the type-level removal can't reach: sending
181
- // sort.price to the `products` query is a guaranteed server error
182
- // ("price" is not defined by type ProductSortParameter) — fail with
183
- // guidance instead. A present-but-nullish price key (callers composing
184
- // the sort from optional params, `{ name: q.name, price: q.price }`)
185
- // is not a price sort: it is stripped, never sent, and never throws.
186
- const { price, ...listSort } = listOptions.sort;
187
- if (price != null) {
188
- throw new StorefrontError('getProducts cannot sort by price — Vendure\'s "products" query has no price sort ' +
189
- '(price lives on variants). Use getProductsInCollection(slug, { sort: { price } }) ' +
190
- 'or searchProducts({ sort: { price } }) instead.', 'vendure', undefined, 'UNSUPPORTED_SORT');
191
- }
192
- if (Object.keys(listSort).length > 0)
193
- queryOptions.sort = listSort;
194
- }
195
- // Default to enabled-only so a plain getProducts() never leaks disabled
196
- // products. An explicit `filter` REPLACES the default; `enabled` is a
197
- // deprecated shorthand ignored when `filter` is set (and overridden
198
- // server-side — the Shop API always forces enabled-only).
199
- if (listOptions?.filter) {
200
- queryOptions.filter = listOptions.filter;
201
- }
202
- else {
203
- queryOptions.filter = { enabled: { eq: listOptions?.enabled ?? true } };
160
+ }
161
+ // `detail` picks the DOCUMENT, not server-side list options — Vendure's
162
+ // `ProductListOptions` input has no such field and would reject it.
163
+ const queryOptions = {
164
+ take: listOptions?.take ?? 20,
165
+ skip: listOptions?.skip ?? 0,
166
+ };
167
+ if (listOptions?.sort) {
168
+ // Guard for JS callers the type-level removal can't reach: sending
169
+ // sort.price to the `products` query is a guaranteed server error
170
+ // ("price" is not defined by type ProductSortParameter) — fail with
171
+ // guidance instead. A present-but-nullish price key (callers composing
172
+ // the sort from optional params, `{ name: q.name, price: q.price }`)
173
+ // is not a price sort: it is stripped, never sent, and never throws.
174
+ const { price, ...listSort } = listOptions.sort;
175
+ if (price != null) {
176
+ throw new StorefrontError('getProducts cannot sort by price — Vendure\'s "products" query has no price sort ' +
177
+ '(price lives on variants). Use getProductsInCollection(slug, { sort: { price } }) ' +
178
+ 'or searchProducts({ sort: { price } }) instead.', 'vendure', undefined, 'UNSUPPORTED_SORT');
204
179
  }
205
- const document = listOptions?.detail === 'card' ? LIST_PRODUCT_CARDS : LIST_PRODUCTS;
206
- const data = await http.graphql(document, { options: queryOptions }, tagRequest(options, 'getProducts'));
180
+ if (Object.keys(listSort).length > 0)
181
+ queryOptions.sort = listSort;
182
+ }
183
+ // Default to enabled-only so a plain getProducts() never leaks disabled
184
+ // products. An explicit `filter` REPLACES the default; `enabled` is a
185
+ // deprecated shorthand ignored when `filter` is set (and overridden
186
+ // server-side — the Shop API always forces enabled-only).
187
+ if (listOptions?.filter) {
188
+ queryOptions.filter = listOptions.filter;
189
+ }
190
+ else {
191
+ queryOptions.filter = { enabled: { eq: listOptions?.enabled ?? true } };
192
+ }
193
+ if (listOptions?.detail === 'card') {
194
+ const data = await http.graphql(LIST_PRODUCT_CARDS, { options: queryOptions }, tagCatalogRead(options, 'getProducts'));
207
195
  return data.products;
208
- },
196
+ }
197
+ const data = await http.graphql(LIST_PRODUCTS, { options: queryOptions }, tagCatalogRead(options, 'getProducts'));
198
+ return data.products;
199
+ }
200
+ async function getProduct(slug, options) {
201
+ const namespace = metafieldsNamespace('getProduct', options?.metafields);
202
+ const request = tagCatalogRead(options, 'getProduct');
203
+ if (namespace !== undefined) {
204
+ const data = await http.graphql(GET_PRODUCT_WITH_METAFIELDS, { slug, namespace }, request);
205
+ if (!data.product)
206
+ throw productNotFound(slug);
207
+ return hydrateProductMetadata(data.product);
208
+ }
209
+ const data = await http.graphql(GET_PRODUCT, { slug }, request);
210
+ if (!data.product)
211
+ throw productNotFound(slug);
212
+ return hydrateProductMetadata(data.product);
213
+ }
214
+ async function getProductById(id, options) {
215
+ const namespace = metafieldsNamespace('getProductById', options?.metafields);
216
+ const request = tagCatalogRead(options, 'getProductById', [productCacheTag(id)]);
217
+ if (namespace !== undefined) {
218
+ const data = await http.graphql(GET_PRODUCT_BY_ID_WITH_METAFIELDS, { id, namespace }, request);
219
+ if (!data.product)
220
+ throw productNotFound(id);
221
+ return hydrateProductMetadata(data.product);
222
+ }
223
+ const data = await http.graphql(GET_PRODUCT_BY_ID, { id }, request);
224
+ if (!data.product)
225
+ throw productNotFound(id);
226
+ return hydrateProductMetadata(data.product);
227
+ }
228
+ async function getCollection(slug, options) {
229
+ const namespace = metafieldsNamespace('getCollection', options?.metafields);
230
+ const request = tagCatalogRead(options, 'getCollection');
231
+ if (namespace !== undefined) {
232
+ const data = await http.graphql(GET_COLLECTION_WITH_METAFIELDS, { slug, namespace }, request);
233
+ if (!data.collection)
234
+ throw collectionNotFound(slug);
235
+ return data.collection;
236
+ }
237
+ const data = await http.graphql(GET_COLLECTION, { slug }, request);
238
+ if (!data.collection)
239
+ throw collectionNotFound(slug);
240
+ return data.collection;
241
+ }
242
+ async function getCollectionById(id, options) {
243
+ const namespace = metafieldsNamespace('getCollectionById', options?.metafields);
244
+ const request = tagCatalogRead(options, 'getCollectionById', [collectionCacheTag(id)]);
245
+ if (namespace !== undefined) {
246
+ const data = await http.graphql(GET_COLLECTION_BY_ID_WITH_METAFIELDS, { id, namespace }, request);
247
+ if (!data.collection)
248
+ throw collectionNotFound(id);
249
+ return data.collection;
250
+ }
251
+ const data = await http.graphql(GET_COLLECTION_BY_ID, { id }, request);
252
+ if (!data.collection)
253
+ throw collectionNotFound(id);
254
+ return data.collection;
255
+ }
256
+ return {
257
+ getProduct,
258
+ getProductById,
259
+ getProducts,
209
260
  /**
210
261
  * List the products of one collection, via the search backend — the only
211
262
  * Shop API path that filters by collection. Returns the honest search-row
@@ -224,7 +275,7 @@ export function createProductMethods(http) {
224
275
  skip: listOptions?.skip ?? 0,
225
276
  ...(listOptions?.sort ? { sort: listOptions.sort } : {}),
226
277
  },
227
- }, tagRequest(options, 'getProductsInCollection'));
278
+ }, tagCatalogRead(options, 'getProductsInCollection'));
228
279
  return {
229
280
  items: data.search.items.map(searchItemToCollectionProduct),
230
281
  totalItems: data.search.totalItems,
@@ -240,42 +291,30 @@ export function createProductMethods(http) {
240
291
  skip: listOptions?.skip ?? 0,
241
292
  ...(listOptions?.sort ? { sort: listOptions.sort } : {}),
242
293
  },
243
- }, tagRequest(options, 'getProductsInCollectionById', [collectionCacheTag(collectionId)]));
294
+ }, tagCatalogRead(options, 'getProductsInCollectionById', [collectionCacheTag(collectionId)]));
244
295
  return {
245
296
  items: data.search.items.map(searchItemToCollectionProduct),
246
297
  totalItems: data.search.totalItems,
247
298
  };
248
299
  },
249
300
  async getFacets(options) {
250
- const data = await http.graphql(LIST_FACETS, undefined, options);
301
+ const data = await http.graphql(LIST_FACETS, undefined, tagCatalogRead(options, 'getFacets'));
251
302
  return data.facets.items;
252
303
  },
253
304
  async getCollections(listOptions, options) {
254
305
  const data = await http.graphql(LIST_COLLECTIONS, {
255
306
  options: { take: listOptions?.take ?? 100, skip: listOptions?.skip ?? 0 },
256
- }, tagRequest(options, 'getCollections'));
307
+ }, tagCatalogRead(options, 'getCollections'));
257
308
  return data.collections.items;
258
309
  },
259
- async getCollection(slug, options) {
260
- const data = await http.graphql(GET_COLLECTION, { slug }, tagRequest(options, 'getCollection'));
261
- if (!data.collection) {
262
- throw new StorefrontError(`Collection not found: ${slug}`, 'vendure', 404, 'NOT_FOUND');
263
- }
264
- return data.collection;
265
- },
266
- async getCollectionById(id, options) {
267
- const data = await http.graphql(GET_COLLECTION_BY_ID, { id }, tagRequest(options, 'getCollectionById', [collectionCacheTag(id)]));
268
- if (!data.collection) {
269
- throw new StorefrontError(`Collection not found: ${id}`, 'vendure', 404, 'NOT_FOUND');
270
- }
271
- return data.collection;
272
- },
310
+ getCollection,
311
+ getCollectionById,
273
312
  async getPropertyGroups(options) {
274
- const data = await http.graphql(PROPERTY_GROUPS, undefined, options);
313
+ const data = await http.graphql(PROPERTY_GROUPS, undefined, tagCatalogRead(options, 'getPropertyGroups'));
275
314
  return data.productPropertyGroups;
276
315
  },
277
316
  async getProductProperties(productId, options) {
278
- const data = await http.graphql(PRODUCT_PROPERTIES, { productId }, tagRequest(options, 'getProductProperties', [productCacheTag(productId)]));
317
+ const data = await http.graphql(PRODUCT_PROPERTIES, { productId }, tagCatalogRead(options, 'getProductProperties', [productCacheTag(productId)]));
279
318
  return data.productPropertyValues;
280
319
  },
281
320
  mapProductProperties,
@@ -1 +1 @@
1
- {"version":3,"file":"products.js","sourceRoot":"","sources":["../../src/commerce/products.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"products.js","sourceRoot":"","sources":["../../src/commerce/products.ts"],"names":[],"mappings":"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"}