@sixtyninecommerce/client 0.30.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 (352) hide show
  1. package/README.md +548 -14
  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 +157 -123
  72. package/dist/commerce/products.js.map +1 -1
  73. package/dist/commerce/queries.d.ts +197 -48
  74. package/dist/commerce/queries.d.ts.map +1 -1
  75. package/dist/commerce/queries.js +1289 -746
  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 -56
  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 +2 -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.map +1 -1
  271. package/dist/pricing/index.js.map +1 -1
  272. package/dist/pricing/tax-display.js +1 -1
  273. package/dist/pricing/tax-display.js.map +1 -1
  274. package/dist/pricing/tiers.d.ts +3 -2
  275. package/dist/pricing/tiers.d.ts.map +1 -1
  276. package/dist/pricing/tiers.js.map +1 -1
  277. package/dist/pricing/validation.d.ts +63 -12
  278. package/dist/pricing/validation.d.ts.map +1 -1
  279. package/dist/pricing/validation.js +60 -12
  280. package/dist/pricing/validation.js.map +1 -1
  281. package/dist/redirects/index.d.ts.map +1 -1
  282. package/dist/redirects/index.js +2 -1
  283. package/dist/redirects/index.js.map +1 -1
  284. package/dist/redirects/store.d.ts.map +1 -1
  285. package/dist/redirects/store.js +6 -2
  286. package/dist/redirects/store.js.map +1 -1
  287. package/dist/redirects/types.d.ts +5 -2
  288. package/dist/redirects/types.d.ts.map +1 -1
  289. package/dist/revalidation/event-plan.d.ts +55 -4
  290. package/dist/revalidation/event-plan.d.ts.map +1 -1
  291. package/dist/revalidation/event-plan.js +115 -8
  292. package/dist/revalidation/event-plan.js.map +1 -1
  293. package/dist/revalidation/event-verify.d.ts +8 -37
  294. package/dist/revalidation/event-verify.d.ts.map +1 -1
  295. package/dist/revalidation/event-verify.js +7 -97
  296. package/dist/revalidation/event-verify.js.map +1 -1
  297. package/dist/revalidation/types.d.ts.map +1 -1
  298. package/dist/revalidation/url-context.d.ts +17 -0
  299. package/dist/revalidation/url-context.d.ts.map +1 -1
  300. package/dist/revalidation/url-context.js +35 -2
  301. package/dist/revalidation/url-context.js.map +1 -1
  302. package/dist/seo/ai.d.ts.map +1 -1
  303. package/dist/seo/ai.js.map +1 -1
  304. package/dist/seo/artifacts.d.ts +86 -4
  305. package/dist/seo/artifacts.d.ts.map +1 -1
  306. package/dist/seo/artifacts.js +115 -16
  307. package/dist/seo/artifacts.js.map +1 -1
  308. package/dist/seo/availability.d.ts +2 -2
  309. package/dist/seo/availability.d.ts.map +1 -1
  310. package/dist/seo/availability.js.map +1 -1
  311. package/dist/seo/index.d.ts +2 -0
  312. package/dist/seo/index.d.ts.map +1 -1
  313. package/dist/seo/index.js +3 -1
  314. package/dist/seo/index.js.map +1 -1
  315. package/dist/seo/json-ld.d.ts.map +1 -1
  316. package/dist/seo/json-ld.js.map +1 -1
  317. package/dist/seo/meta-tags.d.ts.map +1 -1
  318. package/dist/seo/meta-tags.js.map +1 -1
  319. package/dist/seo/metadata-parser.d.ts.map +1 -1
  320. package/dist/seo/metadata-parser.js.map +1 -1
  321. package/dist/seo/metadata-types.d.ts.map +1 -1
  322. package/dist/seo/robots.d.ts.map +1 -1
  323. package/dist/seo/robots.js.map +1 -1
  324. package/dist/seo/types.d.ts +9 -2
  325. package/dist/seo/types.d.ts.map +1 -1
  326. package/dist/seo/url-builder.d.ts +5 -3
  327. package/dist/seo/url-builder.d.ts.map +1 -1
  328. package/dist/seo/url-builder.js +3 -1
  329. package/dist/seo/url-builder.js.map +1 -1
  330. package/dist/types.d.ts +1226 -2522
  331. package/dist/types.d.ts.map +1 -1
  332. package/dist/web/artifact-responder.d.ts +69 -0
  333. package/dist/web/artifact-responder.d.ts.map +1 -0
  334. package/dist/web/artifact-responder.js +90 -0
  335. package/dist/web/artifact-responder.js.map +1 -0
  336. package/dist/web/feed-responder.d.ts +72 -0
  337. package/dist/web/feed-responder.d.ts.map +1 -0
  338. package/dist/web/feed-responder.js +81 -0
  339. package/dist/web/feed-responder.js.map +1 -0
  340. package/dist/web/index.d.ts +23 -0
  341. package/dist/web/index.d.ts.map +1 -0
  342. package/dist/web/index.js +19 -0
  343. package/dist/web/index.js.map +1 -0
  344. package/dist/web/redirect-middleware.d.ts +76 -0
  345. package/dist/web/redirect-middleware.d.ts.map +1 -0
  346. package/dist/web/redirect-middleware.js +94 -0
  347. package/dist/web/redirect-middleware.js.map +1 -0
  348. package/dist/web/respond.d.ts +20 -0
  349. package/dist/web/respond.d.ts.map +1 -0
  350. package/dist/web/respond.js +52 -0
  351. package/dist/web/respond.js.map +1 -0
  352. package/package.json +18 -2
@@ -1,16 +1,13 @@
1
1
  import type { HttpClient } from '../core/http.js';
2
- import type { Order } from '../types.js';
2
+ import type * as Shop from '../generated/shop.js';
3
3
  export declare function createCartMethods(http: HttpClient): {
4
- getActiveOrder(): Promise<Order | null>;
5
- addToCart(variantId: string, quantity: number): Promise<Order>;
6
- addItemsToCart(items: Array<{
7
- productVariantId: string;
8
- quantity: number;
9
- }>): Promise<Order>;
10
- updateCartLine(lineId: string, quantity: number): Promise<Order>;
11
- removeFromCart(lineId: string): Promise<Order>;
12
- clearCart(): Promise<Order>;
13
- applyCouponCode(code: string): Promise<Order>;
14
- removeCouponCode(code: string): Promise<Order>;
4
+ getActiveOrder(): Promise<Shop.OrderFragment | null>;
5
+ addToCart(variantId: string, quantity: number): Promise<Shop.OrderFragment>;
6
+ addItemsToCart(items: Shop.AddItemInput[]): Promise<Shop.OrderFragment>;
7
+ updateCartLine(lineId: string, quantity: number): Promise<Shop.OrderFragment>;
8
+ removeFromCart(lineId: string): Promise<Shop.OrderFragment>;
9
+ clearCart(): Promise<Shop.OrderFragment>;
10
+ applyCouponCode(code: string): Promise<Shop.OrderFragment>;
11
+ removeCouponCode(code: string): Promise<Shop.OrderFragment | null>;
15
12
  };
16
13
  //# sourceMappingURL=cart.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cart.d.ts","sourceRoot":"","sources":["../../src/commerce/cart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EAAE,KAAK,EAA0B,MAAM,aAAa,CAAC;AAgDjE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU;sBAEtB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;yBAKlB,MAAM,YAAY,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;0BAS3D,KAAK,CAAC;QAAE,gBAAgB,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,GAC3D,OAAO,CAAC,KAAK,CAAC;2BAiDY,MAAM,YAAY,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;2BAQzC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;iBAOjC,OAAO,CAAC,KAAK,CAAC;0BAKL,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;2BAKtB,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;EAOvD"}
1
+ {"version":3,"file":"cart.d.ts","sourceRoot":"","sources":["../../src/commerce/cart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,KAAK,IAAI,MAAM,sBAAsB,CAAC;AAsClD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU;sBAEtB,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;yBAK/B,MAAM,YAAY,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;0BAQrD,IAAI,CAAC,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;2BAiDhD,MAAM,YAAY,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;2BAQtD,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;iBAO9C,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;0BAKlB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;2BAKnC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;EAO3E"}
@@ -35,7 +35,12 @@ export function createCartMethods(http) {
35
35
  return unwrapOrderResult(data, 'addItemToOrder');
36
36
  },
37
37
  async addItemsToCart(items) {
38
- const data = await http.graphql(ADD_ITEMS_TO_CART, { inputs: items });
38
+ // `errorResults` is one entry per FAILING input, so it is NOT positionally
39
+ // aligned with `inputs` — an entry's `inputIndex` is the only thing that
40
+ // says which item the shopper needs to fix.
41
+ const data = await http.graphql(ADD_ITEMS_TO_CART, {
42
+ inputs: items,
43
+ });
39
44
  const result = data.addItemsToOrder;
40
45
  if (!result) {
41
46
  throw new MutationError('UNKNOWN_ERROR', 'No result from addItemsToOrder');
@@ -1 +1 @@
1
- {"version":3,"file":"cart.js","sourceRoot":"","sources":["../../src/commerce/cart.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cart.js","sourceRoot":"","sources":["../../src/commerce/cart.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,53 @@
1
1
  import type { HttpClient, RequestOptions } from '../core/http.js';
2
- import type { ActiveChannelOrderConstraints, AddressInput, CustomerDeliveryTerms, CustomerInput, Order, OrderPaymentIntent, PaymentInput, PaymentMethod, PickupLocation, PickupLocationSearchInput, ShippingMethod, StoreContext } from '../types.js';
2
+ import type * as Shop from '../generated/shop.js';
3
+ import type { PickupLocation, StoreContext } from '../types.js';
4
+ import { type ResultData } from './placement-error.js';
5
+ /**
6
+ * Order custom fields the Shop API shows but never lets a shopper write, and
7
+ * where each one IS written. The engine refuses them on its own (they are not
8
+ * members of `UpdateOrderCustomFieldsInput`); naming the owner turns a GraphQL
9
+ * variable-coercion error into one that says what to call instead. Every key
10
+ * must stay a READ-ONLY field — `order-custom-fields.spec.ts` checks it against
11
+ * the schema snapshot, so this can never refuse a field the engine accepts.
12
+ */
13
+ export declare const READ_ONLY_ORDER_CUSTOM_FIELDS: Readonly<Record<string, string>>;
14
+ /**
15
+ * What `setOrderCustomFields` resolves to: the order plus the fields a shopper
16
+ * can write, as the engine stored them — the generated `Order` member of the
17
+ * mutation's result (`OrderFragment` with `customFields` selected as
18
+ * `OrderWritableCustomFieldsFragment`).
19
+ */
20
+ export type OrderWithWritableCustomFields = ResultData<Shop.SetOrderCustomFieldsMutation['setOrderCustomFields']>;
21
+ /**
22
+ * Unwrap a `Result`-union mutation, throwing the ErrorResult members.
23
+ *
24
+ * Every refusal a checkout mutation can return is hoisted by
25
+ * `toMutationError`: `error.code` names WHY (`ORDER_MINIMUM_AMOUNT_NOT_MET`,
26
+ * `PAYMENT_TERMS_UNAVAILABLE`, …) and `error.message` is already the best
27
+ * shopper-safe prose available — `placement.customerMessage` when the engine
28
+ * supplied one, else a vetted operator reason (`transitionError` /
29
+ * `interceptorError`), else the ErrorResult's generic template.
30
+ * `paymentErrorMessage` is deliberately NOT part of that walk — it can carry
31
+ * acquirer/ERP detail a shopper must never read — so a declined payment
32
+ * without `placement` keeps the generic message; the raw text stays on
33
+ * `error.fields.paymentErrorMessage` (see `placement-error.ts`).
34
+ */
35
+ export declare function unwrapResult<D, K extends keyof D & string>(data: D, field: K): ResultData<D[K]>;
36
+ /**
37
+ * How long a keyed payment call (`addPayment`, `payDeposit`,
38
+ * `createDepositPaymentIntent`) waits out `IDEMPOTENCY_IN_PROGRESS` and
39
+ * `ORDER_BUSY` before giving up.
40
+ *
41
+ * Longer than one request's own 15-second timeout: the answer means the FIRST
42
+ * attempt under this key is still running on the engine — a double click, or
43
+ * a repeat of a call that timed out on this side while the engine kept going.
44
+ */
45
+ export declare const ADD_PAYMENT_IN_PROGRESS_WAIT_MS = 20000;
46
+ type KeyedRequestOptions = RequestOptions & {
47
+ idempotencyKey?: string;
48
+ };
3
49
  export declare function createCheckoutMethods(http: HttpClient, ctx?: StoreContext): {
4
- setCustomerForOrder(input: CustomerInput): Promise<Order>;
50
+ setCustomerForOrder(input: Shop.CreateCustomerInput): Promise<Shop.OrderFragment>;
5
51
  /**
6
52
  * Set the order's delivery address.
7
53
  *
@@ -12,19 +58,37 @@ export declare function createCheckoutMethods(http: HttpClient, ctx?: StoreConte
12
58
  * changing the identity the cache is stamped with. The next
13
59
  * `pricing.getTaxDisplayMode()` therefore re-resolves.
14
60
  */
15
- setShippingAddress(input: AddressInput): Promise<Order>;
16
- setBillingAddress(input: AddressInput): Promise<Order>;
17
- getEligibleShippingMethods(): Promise<ShippingMethod[]>;
18
- getDeliveryTerms(options?: RequestOptions): Promise<CustomerDeliveryTerms | null>;
19
- setShippingMethod(ids: string[]): Promise<Order>;
20
- applyPreferredShippingMethod(): Promise<Order>;
21
- getEligiblePaymentMethods(): Promise<PaymentMethod[]>;
61
+ setShippingAddress(input: Shop.CreateAddressInput): Promise<Shop.OrderFragment>;
62
+ setBillingAddress(input: Shop.CreateAddressInput): Promise<Shop.OrderFragment>;
63
+ /**
64
+ * See {@link CommerceModule.unsetShippingAddress}. Drops the cached tax
65
+ * display mode for the reason `setShippingAddress` does: with no address
66
+ * the order falls back to the channel's default tax zone.
67
+ */
68
+ unsetShippingAddress(options?: RequestOptions): Promise<Shop.OrderFragment>;
69
+ /** See {@link CommerceModule.unsetBillingAddress}. */
70
+ unsetBillingAddress(options?: RequestOptions): Promise<Shop.OrderFragment>;
71
+ /**
72
+ * See {@link CommerceModule.setOrderCustomFields}. The read-only fields are
73
+ * refused here only to name their owner; the engine is the authority on
74
+ * what is writable and refuses them anyway.
75
+ */
76
+ setOrderCustomFields(fields: Shop.UpdateOrderCustomFieldsInput, options?: RequestOptions): Promise<OrderWithWritableCustomFields>;
77
+ /** See {@link CommerceModule.setOrderCurrency}. */
78
+ setOrderCurrency(currencyCode: Shop.CurrencyCode, options?: RequestOptions): Promise<Shop.OrderFragment>;
79
+ getEligibleShippingMethods(): Promise<Shop.ShippingMethodsQuery["eligibleShippingMethods"]>;
80
+ getEligibleShippingRates(): Promise<Shop.ShippingRatesQuery["eligibleShippingRates"]>;
81
+ setShippingRate(shippingMethodId: string, rateCode?: string | null): Promise<Shop.OrderFragment>;
82
+ getDeliveryTerms(options?: RequestOptions): Promise<Shop.MyDeliveryTermsQuery["myDeliveryTerms"]>;
83
+ setShippingMethod(ids: string[]): Promise<Shop.OrderFragment>;
84
+ applyPreferredShippingMethod(): Promise<Shop.OrderFragment>;
85
+ getEligiblePaymentMethods(): Promise<Shop.PaymentMethodsQuery["eligiblePaymentMethods"]>;
22
86
  /**
23
87
  * Order minimums in effect on the active channel — for display and cart
24
88
  * pre-validation (e.g. "Minimum order €375"). Checkout enforces them
25
89
  * server-side at the ArrangingPayment transition regardless.
26
90
  */
27
- getOrderConstraints(): Promise<ActiveChannelOrderConstraints>;
91
+ getOrderConstraints(): Promise<Shop.ActiveChannelOrderConstraintsQuery["activeChannelOrderConstraints"]>;
28
92
  /**
29
93
  * Tell the engine how the buyer intends to pay, and get the re-priced order
30
94
  * back.
@@ -59,15 +123,30 @@ export declare function createCheckoutMethods(http: HttpClient, ctx?: StoreConte
59
123
  *
60
124
  * @param intent - `PAY_NOW` or `PAY_ON_ACCOUNT`.
61
125
  */
62
- setPaymentIntent(intent: OrderPaymentIntent): Promise<Order>;
63
- transitionToArrangingPayment(): Promise<Order>;
64
- addPayment(input: PaymentInput): Promise<Order>;
126
+ setPaymentIntent(intent: Shop.OrderPaymentIntent): Promise<ResultData<Shop.SetOrderPaymentIntentMutation["setOrderPaymentIntent"]>>;
127
+ transitionToArrangingPayment(): Promise<Shop.OrderFragment>;
128
+ /**
129
+ * The contract is on `CommerceModule.addPayment` (`types.ts`). Keyed by
130
+ * {@link underIdempotencyKey}. With `amount` the call is a DEPOSIT and goes
131
+ * to `payDeposit` under the same key handling, answering the held order —
132
+ * the same type a full payment answers.
133
+ *
134
+ * Routed on the PRESENCE of `amount`, never on its size: the SDK cannot see
135
+ * what the order still bills without a second read, so the engine judges
136
+ * (an amount equal to the balance is `AMOUNT_NOT_A_DEPOSIT`).
137
+ */
138
+ addPayment(input: Shop.PaymentInput, options?: KeyedRequestOptions & {
139
+ amount?: number;
140
+ }): Promise<ResultData<Shop.AddPaymentMutation["addPaymentToOrder"]>>;
141
+ payDeposit: (input: Shop.PayDepositInput, options?: KeyedRequestOptions) => Promise<Shop.PayDepositMutation["payDeposit"]>;
142
+ /** See {@link CommerceModule.createDepositPaymentIntent}. Keyed as `payDeposit`. */
143
+ createDepositPaymentIntent(input: Shop.DepositPaymentIntentInput, options?: KeyedRequestOptions): Promise<Shop.CreateDepositPaymentIntentMutation["createDepositPaymentIntent"]>;
65
144
  /**
66
145
  * Search for pickup locations near a postcode for a given carrier.
67
146
  * Carrier-agnostic — the backend dispatches to the configured provider
68
147
  * (currently MyParcel; future Sendcloud/Hendriks).
69
148
  */
70
- findPickupLocations(input: PickupLocationSearchInput): Promise<PickupLocation[]>;
149
+ findPickupLocations(input: Shop.PickupLocationSearchInput): Promise<PickupLocation[]>;
71
150
  /**
72
151
  * Persist the customer's chosen pickup location onto the active order.
73
152
  * The backend re-validates the submitted location against the provider's
@@ -78,11 +157,12 @@ export declare function createCheckoutMethods(http: HttpClient, ctx?: StoreConte
78
157
  * builds the location object (e.g. cached from an earlier session) gets
79
158
  * a clear `StorefrontError` instead of an opaque `MutationError`.
80
159
  */
81
- selectPickupLocation(location: PickupLocation): Promise<Order>;
160
+ selectPickupLocation(location: PickupLocation): Promise<ResultData<Shop.SetActiveOrderPickupLocationMutation["setActiveOrderPickupLocation"]>>;
82
161
  /**
83
162
  * Read the pickup location currently stored on the active order. Returns
84
163
  * `null` when no selection has been made or there is no active order.
85
164
  */
86
165
  getActivePickupLocation(): Promise<PickupLocation | null>;
87
166
  };
167
+ export {};
88
168
  //# sourceMappingURL=checkout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/commerce/checkout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAElE,OAAO,KAAK,EACV,6BAA6B,EAC7B,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,KAAK,EACL,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,yBAAyB,EACzB,cAAc,EACd,YAAY,EACb,MAAM,aAAa,CAAC;AAkDrB,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,YAAY;+BAErC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;IAK/D;;;;;;;;;OASG;8BAC6B,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;6BAU9B,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;kCAOxB,OAAO,CAAC,cAAc,EAAE,CAAC;+BAO5B,cAAc,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;2BAS1D,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;oCAOhB,OAAO,CAAC,KAAK,CAAC;iCAKjB,OAAO,CAAC,aAAa,EAAE,CAAC;IAO3D;;;;OAIG;2BAC0B,OAAO,CAAC,6BAA6B,CAAC;IAOnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;6BAC4B,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;oCAK5B,OAAO,CAAC,KAAK,CAAC;sBAK5B,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;IAOrD;;;;OAIG;+BAC8B,yBAAyB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAOtF;;;;;;;;;OASG;mCACkC,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC;IAQpE;;;OAGG;+BAC8B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;EAOlE"}
1
+ {"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/commerce/checkout.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,23 @@
1
- import { MutationError } from '../errors.js';
1
+ import { idempotencyKey } from '@sixtyninecommerce/core';
2
+ import { CURRENCY_CODE_PATTERN, orderCurrencyRefusal } from '../core/currency.js';
3
+ import { MutationError, StorefrontError } from '../errors.js';
4
+ import { invalidArgument, isPlainObject } from './arguments.js';
2
5
  import { normalizePickupLocationInput, parseOptionalPickupLocation, parsePickupLocations, } from './pickup-location-parser.js';
3
6
  import { toMutationError } from './placement-error.js';
4
- import { ACTIVE_CHANNEL_ORDER_CONSTRAINTS, ACTIVE_ORDER_PICKUP_LOCATION, ADD_PAYMENT, APPLY_PREFERRED_SHIPPING_METHOD, ELIGIBLE_PAYMENT_METHODS, ELIGIBLE_SHIPPING_METHODS, MY_DELIVERY_TERMS, PICKUP_LOCATIONS, SET_ACTIVE_ORDER_PICKUP_LOCATION, SET_BILLING_ADDRESS, SET_CUSTOMER, SET_PAYMENT_INTENT, SET_SHIPPING_ADDRESS, SET_SHIPPING_METHOD, TRANSITION_TO_ARRANGING_PAYMENT, } from './queries.js';
7
+ import { ACTIVE_CHANNEL_ORDER_CONSTRAINTS, ACTIVE_ORDER_PICKUP_LOCATION, ADD_PAYMENT, APPLY_PREFERRED_SHIPPING_METHOD, CREATE_DEPOSIT_PAYMENT_INTENT_MUTATION, ELIGIBLE_PAYMENT_METHODS, ELIGIBLE_SHIPPING_METHODS, ELIGIBLE_SHIPPING_RATES, MY_DELIVERY_TERMS, PAY_DEPOSIT_MUTATION, PICKUP_LOCATIONS, SET_ACTIVE_ORDER_PICKUP_LOCATION, SET_BILLING_ADDRESS, SET_CUSTOMER, SET_ORDER_CURRENCY, SET_ORDER_CUSTOM_FIELDS, SET_PAYMENT_INTENT, SET_SHIPPING_ADDRESS, SET_SHIPPING_METHOD, SET_SHIPPING_RATE, TRANSITION_TO_ARRANGING_PAYMENT, UNSET_BILLING_ADDRESS, UNSET_SHIPPING_ADDRESS, } from './queries.js';
8
+ /**
9
+ * Order custom fields the Shop API shows but never lets a shopper write, and
10
+ * where each one IS written. The engine refuses them on its own (they are not
11
+ * members of `UpdateOrderCustomFieldsInput`); naming the owner turns a GraphQL
12
+ * variable-coercion error into one that says what to call instead. Every key
13
+ * must stay a READ-ONLY field — `order-custom-fields.spec.ts` checks it against
14
+ * the schema snapshot, so this can never refuse a field the engine accepts.
15
+ */
16
+ export const READ_ONLY_ORDER_CUSTOM_FIELDS = {
17
+ paymentIntent: 'call setPaymentIntent instead: it records the intent and re-prices the order in one call',
18
+ orderScope: "it is fixed when the order is created, from the client's orderScope (the x-order-scope header)",
19
+ chargedParcelCount: 'the store sets it when it charges shipping per parcel',
20
+ };
5
21
  /**
6
22
  * Unwrap a `Result`-union mutation, throwing the ErrorResult members.
7
23
  *
@@ -16,7 +32,7 @@ import { ACTIVE_CHANNEL_ORDER_CONSTRAINTS, ACTIVE_ORDER_PICKUP_LOCATION, ADD_PAY
16
32
  * without `placement` keeps the generic message; the raw text stays on
17
33
  * `error.fields.paymentErrorMessage` (see `placement-error.ts`).
18
34
  */
19
- function unwrapResult(data, field) {
35
+ export function unwrapResult(data, field) {
20
36
  const result = data[field];
21
37
  if (!result) {
22
38
  throw new MutationError('UNKNOWN_ERROR', `No result from ${field}`);
@@ -26,7 +42,111 @@ function unwrapResult(data, field) {
26
42
  }
27
43
  return result;
28
44
  }
45
+ /**
46
+ * How long a keyed payment call (`addPayment`, `payDeposit`,
47
+ * `createDepositPaymentIntent`) waits out `IDEMPOTENCY_IN_PROGRESS` and
48
+ * `ORDER_BUSY` before giving up.
49
+ *
50
+ * Longer than one request's own 15-second timeout: the answer means the FIRST
51
+ * attempt under this key is still running on the engine — a double click, or
52
+ * a repeat of a call that timed out on this side while the engine kept going.
53
+ */
54
+ export const ADD_PAYMENT_IN_PROGRESS_WAIT_MS = 20_000;
55
+ /**
56
+ * The two answers a keyed call asks again after, under the SAME key. Both say
57
+ * that THIS request changed nothing:
58
+ *
59
+ * - `IDEMPOTENCY_IN_PROGRESS`: the first attempt under the key is still
60
+ * running. Asking again waits for it or replays it.
61
+ * - `ORDER_BUSY`: another change of the same cart was still being applied (the
62
+ * engine makes storefront requests on one cart take turns) and this request
63
+ * gave up waiting before it wrote anything. Asking again is the first run.
64
+ */
65
+ const ASK_AGAIN_CODES = new Set(['IDEMPOTENCY_IN_PROGRESS', 'ORDER_BUSY']);
66
+ /** Pauses between asks, then the last one repeats. */
67
+ const IN_PROGRESS_BACKOFF_MS = [250, 500, 1_000, 2_000];
68
+ /** What the engine accepts in `Idempotency-Key`: 1–255 visible ASCII characters. */
69
+ const IDEMPOTENCY_KEY_PATTERN = /^[\x21-\x7e]{1,255}$/;
70
+ function wait(ms, signal) {
71
+ return new Promise((resolve) => {
72
+ if (signal?.aborted) {
73
+ resolve();
74
+ return;
75
+ }
76
+ const timer = setTimeout(done, ms);
77
+ function done() {
78
+ clearTimeout(timer);
79
+ signal?.removeEventListener('abort', done);
80
+ resolve();
81
+ }
82
+ signal?.addEventListener('abort', done, { once: true });
83
+ });
84
+ }
85
+ /** Stamp the key on whatever a keyed call throws, keeping one a caller already saw. */
86
+ function withKey(error, key) {
87
+ if (error instanceof StorefrontError && error.idempotencyKey === undefined) {
88
+ error.idempotencyKey = key;
89
+ }
90
+ return error;
91
+ }
92
+ /**
93
+ * Run one keyed Shop API call (W8-12): always under a key — the caller's, or a
94
+ * fresh UUIDv7 — refused before anything is sent when the engine would refuse
95
+ * it, with `IDEMPOTENCY_IN_PROGRESS` and `ORDER_BUSY` asked again under the
96
+ * SAME key and the key stamped on whatever is thrown.
97
+ *
98
+ * Only an engine that honours the key can answer either, and both mean this
99
+ * request changed nothing ({@link ASK_AGAIN_CODES}), so asking again can only
100
+ * wait, replay, or run the payment for the first time. These are the only two
101
+ * reasons the SDK repeats a payment, and it repeats nothing that carries no
102
+ * key: a cart mutation answered `ORDER_BUSY` is thrown to the caller.
103
+ * `send` makes the request itself, so each caller's `graphql<T>(DOCUMENT)`
104
+ * stays a typed call of a constant document (`graphql-call-types.spec.ts`).
105
+ */
106
+ async function underIdempotencyKey(options, send) {
107
+ const key = options?.idempotencyKey ?? idempotencyKey();
108
+ if (!IDEMPOTENCY_KEY_PATTERN.test(key)) {
109
+ throw new StorefrontError('idempotencyKey must be 1 to 255 visible ASCII characters (no spaces).', 'vendure', undefined, 'IDEMPOTENCY_KEY_INVALID');
110
+ }
111
+ const signal = options?.signal;
112
+ const deadline = Date.now() + ADD_PAYMENT_IN_PROGRESS_WAIT_MS;
113
+ for (let attempt = 0;; attempt++) {
114
+ try {
115
+ return await send({ ...options, idempotencyKey: key });
116
+ }
117
+ catch (error) {
118
+ const pause = IN_PROGRESS_BACKOFF_MS[Math.min(attempt, IN_PROGRESS_BACKOFF_MS.length - 1)] ?? 0;
119
+ const askAgain = error instanceof StorefrontError &&
120
+ error.code !== undefined &&
121
+ ASK_AGAIN_CODES.has(error.code);
122
+ if (!askAgain || signal?.aborted || Date.now() + pause > deadline) {
123
+ throw withKey(error, key);
124
+ }
125
+ await wait(pause, signal);
126
+ if (signal?.aborted)
127
+ throw withKey(error, key);
128
+ }
129
+ }
130
+ }
131
+ /**
132
+ * A deposit amount that cannot even reach the engine: GraphQL `Int` holds whole
133
+ * minor units only. Zero and negative amounts are left to the engine, whose
134
+ * answer (`AMOUNT_NOT_POSITIVE`) is the code a storefront branches on.
135
+ */
136
+ function requireWholeAmount(method, amount) {
137
+ if (typeof amount !== 'number' || !Number.isInteger(amount)) {
138
+ throw invalidArgument(`${method}: amount must be a whole number of minor units of the order's currency (e.g. 2500 for 25.00)`);
139
+ }
140
+ }
29
141
  export function createCheckoutMethods(http, ctx) {
142
+ /** See {@link CommerceModule.payDeposit}. */
143
+ async function payDeposit(input, options) {
144
+ requireWholeAmount('payDeposit', input.amount);
145
+ return underIdempotencyKey(options, async (keyed) => {
146
+ const data = await http.graphql(PAY_DEPOSIT_MUTATION, { input }, keyed);
147
+ return data.payDeposit;
148
+ });
149
+ }
30
150
  return {
31
151
  async setCustomerForOrder(input) {
32
152
  const data = await http.graphql(SET_CUSTOMER, { input });
@@ -57,10 +177,80 @@ export function createCheckoutMethods(http, ctx) {
57
177
  });
58
178
  return unwrapResult(data, 'setOrderBillingAddress');
59
179
  },
180
+ /**
181
+ * See {@link CommerceModule.unsetShippingAddress}. Drops the cached tax
182
+ * display mode for the reason `setShippingAddress` does: with no address
183
+ * the order falls back to the channel's default tax zone.
184
+ */
185
+ async unsetShippingAddress(options) {
186
+ const data = await http.graphql(UNSET_SHIPPING_ADDRESS, undefined, options);
187
+ if (ctx) {
188
+ ctx.taxDisplay = null;
189
+ }
190
+ return unwrapResult(data, 'unsetOrderShippingAddress');
191
+ },
192
+ /** See {@link CommerceModule.unsetBillingAddress}. */
193
+ async unsetBillingAddress(options) {
194
+ const data = await http.graphql(UNSET_BILLING_ADDRESS, undefined, options);
195
+ return unwrapResult(data, 'unsetOrderBillingAddress');
196
+ },
197
+ /**
198
+ * See {@link CommerceModule.setOrderCustomFields}. The read-only fields are
199
+ * refused here only to name their owner; the engine is the authority on
200
+ * what is writable and refuses them anyway.
201
+ */
202
+ async setOrderCustomFields(fields, options) {
203
+ if (!isPlainObject(fields)) {
204
+ throw invalidArgument('setOrderCustomFields: fields must be an object of custom fields');
205
+ }
206
+ for (const name of Object.keys(fields)) {
207
+ const owner = READ_ONLY_ORDER_CUSTOM_FIELDS[name];
208
+ if (owner !== undefined) {
209
+ throw invalidArgument(`setOrderCustomFields: "${name}" is read-only on the Shop API — ${owner}`);
210
+ }
211
+ }
212
+ const data = await http.graphql(SET_ORDER_CUSTOM_FIELDS, { input: { customFields: fields } }, options);
213
+ return unwrapResult(data, 'setOrderCustomFields');
214
+ },
215
+ /** See {@link CommerceModule.setOrderCurrency}. */
216
+ async setOrderCurrency(currencyCode, options) {
217
+ if (typeof currencyCode !== 'string' || !CURRENCY_CODE_PATTERN.test(currencyCode)) {
218
+ throw invalidArgument(`setOrderCurrency: "${String(currencyCode)}" is not an ISO 4217 code (three upper-case letters, e.g. "EUR")`);
219
+ }
220
+ let data;
221
+ try {
222
+ data = await http.graphql(SET_ORDER_CURRENCY, { currencyCode }, options);
223
+ }
224
+ catch (error) {
225
+ throw ((error instanceof StorefrontError && orderCurrencyRefusal(error, currencyCode)) || error);
226
+ }
227
+ const order = unwrapResult(data, 'setCurrencyCodeForOrder');
228
+ // The engine re-prices an order into the REQUEST's currency on every
229
+ // change (`applyPriceAdjustments`), and a request names one only through
230
+ // `?currencyCode=`. Without this the next addToCart put the order back in
231
+ // the channel default. The session follows the order's own answer.
232
+ if (ctx) {
233
+ const chosen = typeof order.currencyCode === 'string' ? order.currencyCode : currencyCode;
234
+ ctx.sessionCurrencyCode = chosen;
235
+ ctx.currencyCode = chosen;
236
+ }
237
+ return order;
238
+ },
60
239
  async getEligibleShippingMethods() {
61
240
  const data = await http.graphql(ELIGIBLE_SHIPPING_METHODS);
62
241
  return data.eligibleShippingMethods;
63
242
  },
243
+ async getEligibleShippingRates() {
244
+ const data = await http.graphql(ELIGIBLE_SHIPPING_RATES);
245
+ return data.eligibleShippingRates;
246
+ },
247
+ async setShippingRate(shippingMethodId, rateCode) {
248
+ const data = await http.graphql(SET_SHIPPING_RATE, {
249
+ shippingMethodId,
250
+ rateCode: rateCode ?? null,
251
+ });
252
+ return unwrapResult(data, 'setOrderShippingRate');
253
+ },
64
254
  async getDeliveryTerms(options) {
65
255
  const data = await http.graphql(MY_DELIVERY_TERMS, undefined, options);
66
256
  return data.myDeliveryTerms;
@@ -123,16 +313,48 @@ export function createCheckoutMethods(http, ctx) {
123
313
  * @param intent - `PAY_NOW` or `PAY_ON_ACCOUNT`.
124
314
  */
125
315
  async setPaymentIntent(intent) {
126
- const data = await http.graphql(SET_PAYMENT_INTENT, { intent });
316
+ const data = await http.graphql(SET_PAYMENT_INTENT, {
317
+ intent,
318
+ });
127
319
  return unwrapResult(data, 'setOrderPaymentIntent');
128
320
  },
129
321
  async transitionToArrangingPayment() {
130
322
  const data = await http.graphql(TRANSITION_TO_ARRANGING_PAYMENT);
131
323
  return unwrapResult(data, 'transitionOrderToState');
132
324
  },
133
- async addPayment(input) {
134
- const data = await http.graphql(ADD_PAYMENT, { input });
135
- return unwrapResult(data, 'addPaymentToOrder');
325
+ /**
326
+ * The contract is on `CommerceModule.addPayment` (`types.ts`). Keyed by
327
+ * {@link underIdempotencyKey}. With `amount` the call is a DEPOSIT and goes
328
+ * to `payDeposit` under the same key handling, answering the held order —
329
+ * the same type a full payment answers.
330
+ *
331
+ * Routed on the PRESENCE of `amount`, never on its size: the SDK cannot see
332
+ * what the order still bills without a second read, so the engine judges
333
+ * (an amount equal to the balance is `AMOUNT_NOT_A_DEPOSIT`).
334
+ */
335
+ async addPayment(input, options) {
336
+ // `!== undefined`, not `typeof === 'number'`: a `null` from untyped code is
337
+ // refused below rather than read as "pay in full", which takes MORE money
338
+ // than a caller who meant a deposit intended.
339
+ if (options?.amount !== undefined) {
340
+ const { amount, ...rest } = options;
341
+ requireWholeAmount('addPayment', amount);
342
+ const deposit = await payDeposit({ method: input.method, amount, metadata: input.metadata }, rest);
343
+ return deposit.order;
344
+ }
345
+ return underIdempotencyKey(options, async (keyed) => {
346
+ const data = await http.graphql(ADD_PAYMENT, { input }, keyed);
347
+ return unwrapResult(data, 'addPaymentToOrder');
348
+ });
349
+ },
350
+ payDeposit,
351
+ /** See {@link CommerceModule.createDepositPaymentIntent}. Keyed as `payDeposit`. */
352
+ async createDepositPaymentIntent(input, options) {
353
+ requireWholeAmount('createDepositPaymentIntent', input.amount);
354
+ return underIdempotencyKey(options, async (keyed) => {
355
+ const data = await http.graphql(CREATE_DEPOSIT_PAYMENT_INTENT_MUTATION, { input }, keyed);
356
+ return data.createDepositPaymentIntent;
357
+ });
136
358
  },
137
359
  // --- Pickup locations (carrier-agnostic) ---
138
360
  /**
@@ -158,9 +380,7 @@ export function createCheckoutMethods(http, ctx) {
158
380
  */
159
381
  async selectPickupLocation(location) {
160
382
  const normalized = normalizePickupLocationInput(location);
161
- const data = await http.graphql(SET_ACTIVE_ORDER_PICKUP_LOCATION, {
162
- location: normalized,
163
- });
383
+ const data = await http.graphql(SET_ACTIVE_ORDER_PICKUP_LOCATION, { location: normalized });
164
384
  return unwrapResult(data, 'setActiveOrderPickupLocation');
165
385
  },
166
386
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/commerce/checkout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/commerce/checkout.ts"],"names":[],"mappings":"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"}