@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,26 +1,78 @@
1
- const B2B_CREDIT_STATUS_FIELDS = /* GraphQL */ `
2
- customerId
3
- currencyCode
4
- balance
5
- uninvoicedOrdersTotal
6
- exposure
7
- creditLimit
8
- available
9
- overdueInvoiceCount
10
- overLimit
11
- hasOverdue
12
- balanceSource
13
- `;
14
- const B2B_CREDIT_STATUS = /* GraphQL */ `
15
- query B2bCreditStatus {
16
- b2bCreditStatus { ${B2B_CREDIT_STATUS_FIELDS} }
1
+ import { isUnknownFieldRejection } from '../core/unknown-field-rejection.js';
2
+ import { fragment, withFragments } from '../graphql-document.js';
3
+ const B2B_CREDIT_STATUS_FRAGMENT = fragment(/* GraphQL */ `
4
+ fragment B2bCreditStatus on B2bCreditStatus {
5
+ customerId
6
+ currencyCode
7
+ balance
8
+ uninvoicedOrdersTotal
9
+ exposure
10
+ creditLimit
11
+ available
12
+ overdueInvoiceCount
13
+ overLimit
14
+ hasOverdue
15
+ balanceSource
16
+ unconvertedCurrencies
17
17
  }
18
- `;
18
+ `);
19
+ /**
20
+ * The same status without `unconvertedCurrencies`, for an engine released
21
+ * before 2026-10-01: GraphQL refuses the WHOLE document over one unknown
22
+ * field, so without this an SDK upgraded ahead of its engine would lose the
23
+ * credit status entirely.
24
+ */
25
+ const B2B_CREDIT_STATUS_LEGACY_FRAGMENT = fragment(/* GraphQL */ `
26
+ fragment B2bCreditStatusLegacy on B2bCreditStatus {
27
+ customerId
28
+ currencyCode
29
+ balance
30
+ uninvoicedOrdersTotal
31
+ exposure
32
+ creditLimit
33
+ available
34
+ overdueInvoiceCount
35
+ overLimit
36
+ hasOverdue
37
+ balanceSource
38
+ }
39
+ `);
40
+ export const B2B_CREDIT_STATUS = withFragments(
41
+ /* GraphQL */ `
42
+ query B2bCreditStatus {
43
+ b2bCreditStatus { ...B2bCreditStatus }
44
+ }
45
+ `, B2B_CREDIT_STATUS_FRAGMENT);
46
+ export const B2B_CREDIT_STATUS_LEGACY = withFragments(
47
+ /* GraphQL */ `
48
+ query B2bCreditStatusLegacy {
49
+ b2bCreditStatus { ...B2bCreditStatusLegacy }
50
+ }
51
+ `, B2B_CREDIT_STATUS_LEGACY_FRAGMENT);
19
52
  export function createCreditStatusMethods(http) {
53
+ /**
54
+ * Latched once the engine proved it predates `unconvertedCurrencies`, so the
55
+ * downgrade costs one rejected request per client (the quotes pattern).
56
+ */
57
+ let unconvertedUnsupported = false;
20
58
  return {
21
59
  async getCreditStatus(options) {
22
- const data = await http.graphql(B2B_CREDIT_STATUS, undefined, options);
23
- return data.b2bCreditStatus;
60
+ // Each call is typed by the document it sends (generated); the legacy
61
+ // answer simply has no `unconvertedCurrencies`, which the public type
62
+ // allows (an engine before 2026-10-01 never leaves money out).
63
+ if (unconvertedUnsupported) {
64
+ return (await http.graphql(B2B_CREDIT_STATUS_LEGACY, undefined, options)).b2bCreditStatus;
65
+ }
66
+ try {
67
+ return (await http.graphql(B2B_CREDIT_STATUS, undefined, options)).b2bCreditStatus;
68
+ }
69
+ catch (error) {
70
+ if (!isUnknownFieldRejection(error))
71
+ throw error;
72
+ const data = await http.graphql(B2B_CREDIT_STATUS_LEGACY, undefined, options);
73
+ unconvertedUnsupported = true;
74
+ return data.b2bCreditStatus;
75
+ }
24
76
  },
25
77
  };
26
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"credit-status.js","sourceRoot":"","sources":["../../src/credit/credit-status.ts"],"names":[],"mappings":"AAGA,MAAM,wBAAwB,GAAG,aAAa,CAAC;;;;;;;;;;;;CAY9C,CAAC;AAEF,MAAM,iBAAiB,GAAG,aAAa,CAAC;;wBAEhB,wBAAwB;;CAE/C,CAAC;AAEF,MAAM,UAAU,yBAAyB,CAAC,IAAgB;IACxD,OAAO;QACL,KAAK,CAAC,eAAe,CAAC,OAAwB;YAC5C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,iBAAiB,EACjB,SAAS,EACT,OAAO,CACR,CAAC;YACF,OAAO,IAAI,CAAC,eAAe,CAAC;QAC9B,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"credit-status.js","sourceRoot":"","sources":["../../src/credit/credit-status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAE7E,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGjE,MAAM,0BAA0B,GAAG,QAAQ,CAAC,aAAa,CAAC;;;;;;;;;;;;;;;CAezD,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,iCAAiC,GAAG,QAAQ,CAAC,aAAa,CAAC;;;;;;;;;;;;;;CAchE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa;AAC5C,aAAa,CAAC;;;;CAIf,EACC,0BAA0B,CAC3B,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,aAAa;AACnD,aAAa,CAAC;;;;CAIf,EACC,iCAAiC,CAClC,CAAC;AAEF,MAAM,UAAU,yBAAyB,CAAC,IAAgB;IACxD;;;OAGG;IACH,IAAI,sBAAsB,GAAG,KAAK,CAAC;IACnC,OAAO;QACL,KAAK,CAAC,eAAe,CAAC,OAAwB;YAC5C,sEAAsE;YACtE,sEAAsE;YACtE,+DAA+D;YAC/D,IAAI,sBAAsB,EAAE,CAAC;gBAC3B,OAAO,CACL,MAAM,IAAI,CAAC,OAAO,CAChB,wBAAwB,EACxB,SAAS,EACT,OAAO,CACR,CACF,CAAC,eAAe,CAAC;YACpB,CAAC;YACD,IAAI,CAAC;gBACH,OAAO,CACL,MAAM,IAAI,CAAC,OAAO,CAA4B,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,CACrF,CAAC,eAAe,CAAC;YACpB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;oBAAE,MAAM,KAAK,CAAC;gBACjD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,wBAAwB,EACxB,SAAS,EACT,OAAO,CACR,CAAC;gBACF,sBAAsB,GAAG,IAAI,CAAC;gBAC9B,OAAO,IAAI,CAAC,eAAe,CAAC;YAC9B,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { HttpClient } from '../core/http.js';
2
2
  export declare function createCreditModule(http: HttpClient): {
3
- getPaymentTerms(options?: import("../core/http.js").RequestOptions): Promise<import("../types.js").CustomerPaymentTerms | null>;
3
+ getPaymentTerms(options?: import("../core/http.js").RequestOptions): Promise<import("../types.js").CustomerPaymentTermsFragment | null>;
4
4
  getCreditStatus(options?: import("../core/http.js").RequestOptions): Promise<import("../types.js").B2bCreditStatus | null>;
5
5
  };
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1,7 +1,7 @@
1
1
  import type { HttpClient, RequestOptions } from '../core/http.js';
2
- import type { CustomerPaymentTerms } from '../types.js';
3
- export declare const MY_PAYMENT_TERMS = "\n query MyPaymentTerms {\n myPaymentTerms { \n customerId\n source\n managedExternally\n status\n conditionCode\n conditionDescription\n summary\n classification\n paymentDays\n paymentEndOfMonths\n paymentMethod\n percentage\n discountPaymentDays\n discountPercentage\n paymentDiscountType\n stale\n syncedAt\n error\n }\n }\n";
2
+ import type * as Shop from '../generated/shop.js';
3
+ export declare const MY_PAYMENT_TERMS: string;
4
4
  export declare function createPaymentTermsMethods(http: HttpClient): {
5
- getPaymentTerms(options?: RequestOptions): Promise<CustomerPaymentTerms | null>;
5
+ getPaymentTerms(options?: RequestOptions): Promise<Shop.CustomerPaymentTermsFragment | null>;
6
6
  };
7
7
  //# sourceMappingURL=payment-terms.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"payment-terms.d.ts","sourceRoot":"","sources":["../../src/credit/payment-terms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAuBxD,eAAO,MAAM,gBAAgB,oWAI5B,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,UAAU;8BAEtB,cAAc,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;EASxF"}
1
+ {"version":3,"file":"payment-terms.d.ts","sourceRoot":"","sources":["../../src/credit/payment-terms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,KAAK,KAAK,IAAI,MAAM,sBAAsB,CAAC;AA0BlD,eAAO,MAAM,gBAAgB,QAO5B,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,UAAU;8BAG1C,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;EASvD"}
@@ -1,28 +1,32 @@
1
- const CUSTOMER_PAYMENT_TERMS_FIELDS = /* GraphQL */ `
2
- customerId
3
- source
4
- managedExternally
5
- status
6
- conditionCode
7
- conditionDescription
8
- summary
9
- classification
10
- paymentDays
11
- paymentEndOfMonths
12
- paymentMethod
13
- percentage
14
- discountPaymentDays
15
- discountPercentage
16
- paymentDiscountType
17
- stale
18
- syncedAt
19
- error
20
- `;
21
- export const MY_PAYMENT_TERMS = /* GraphQL */ `
22
- query MyPaymentTerms {
23
- myPaymentTerms { ${CUSTOMER_PAYMENT_TERMS_FIELDS} }
1
+ import { fragment, withFragments } from '../graphql-document.js';
2
+ const CUSTOMER_PAYMENT_TERMS_FRAGMENT = fragment(/* GraphQL */ `
3
+ fragment CustomerPaymentTerms on CustomerPaymentTerms {
4
+ customerId
5
+ source
6
+ managedExternally
7
+ status
8
+ conditionCode
9
+ conditionDescription
10
+ summary
11
+ classification
12
+ paymentDays
13
+ paymentEndOfMonths
14
+ paymentMethod
15
+ percentage
16
+ discountPaymentDays
17
+ discountPercentage
18
+ paymentDiscountType
19
+ stale
20
+ syncedAt
21
+ error
24
22
  }
25
- `;
23
+ `);
24
+ export const MY_PAYMENT_TERMS = withFragments(
25
+ /* GraphQL */ `
26
+ query MyPaymentTerms {
27
+ myPaymentTerms { ...CustomerPaymentTerms }
28
+ }
29
+ `, CUSTOMER_PAYMENT_TERMS_FRAGMENT);
26
30
  export function createPaymentTermsMethods(http) {
27
31
  return {
28
32
  async getPaymentTerms(options) {
@@ -1 +1 @@
1
- {"version":3,"file":"payment-terms.js","sourceRoot":"","sources":["../../src/credit/payment-terms.ts"],"names":[],"mappings":"AAGA,MAAM,6BAA6B,GAAG,aAAa,CAAC;;;;;;;;;;;;;;;;;;;CAmBnD,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;;uBAEvB,6BAA6B;;CAEnD,CAAC;AAEF,MAAM,UAAU,yBAAyB,CAAC,IAAgB;IACxD,OAAO;QACL,KAAK,CAAC,eAAe,CAAC,OAAwB;YAC5C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,gBAAgB,EAChB,SAAS,EACT,OAAO,CACR,CAAC;YACF,OAAO,IAAI,CAAC,cAAc,CAAC;QAC7B,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"payment-terms.js","sourceRoot":"","sources":["../../src/credit/payment-terms.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEjE,MAAM,+BAA+B,GAAG,QAAQ,CAAC,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;CAqB9D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa;AAC3C,aAAa,CAAC;;;;CAIf,EACC,+BAA+B,CAChC,CAAC;AAEF,MAAM,UAAU,yBAAyB,CAAC,IAAgB;IACxD,OAAO;QACL,KAAK,CAAC,eAAe,CACnB,OAAwB;YAExB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,gBAAgB,EAChB,SAAS,EACT,OAAO,CACR,CAAC;YACF,OAAO,IAAI,CAAC,cAAc,CAAC;QAC7B,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,22 +1,22 @@
1
1
  import type { HttpClient } from '../core/http.js';
2
- import type { BulkConversionResult, ConvertedAmount, ExchangeRate } from '../types.js';
2
+ import type * as Shop from '../generated/shop.js';
3
3
  export declare function createExchangeMethods(http: HttpClient): {
4
- getExchangeRates(): Promise<ExchangeRate[]>;
4
+ getExchangeRates(): Promise<Shop.ExchangeRatesQuery["exchangeRates"]>;
5
5
  /**
6
6
  * Current rate for a single base→target pair. `null` when no rate is
7
7
  * stored for that currency.
8
8
  */
9
- getExchangeRate(targetCurrency: string): Promise<ExchangeRate | null>;
10
- convertCurrency(amount: string, fromCurrency: string, toCurrency: string): Promise<ConvertedAmount>;
9
+ getExchangeRate(targetCurrency: string): Promise<Shop.ExchangeRateQuery["exchangeRate"]>;
10
+ convertCurrency(amount: string, fromCurrency: string, toCurrency: string): Promise<Shop.ConvertedAmountFragment | null>;
11
11
  /** Convert an amount from the base currency (EUR) to a target currency. */
12
- convertFromBase(amount: string, targetCurrency: string): Promise<ConvertedAmount>;
12
+ convertFromBase(amount: string, targetCurrency: string): Promise<Shop.ConvertedAmountFragment | null>;
13
13
  /** Convert an amount from a source currency to the base currency (EUR). */
14
- convertToBase(amount: string, sourceCurrency: string): Promise<ConvertedAmount>;
14
+ convertToBase(amount: string, sourceCurrency: string): Promise<Shop.ConvertedAmountFragment | null>;
15
15
  /**
16
16
  * Convert one amount into several currencies in a single roundtrip —
17
17
  * e.g. a currency-switcher dropdown showing the price in every
18
18
  * available currency.
19
19
  */
20
- convertToMultiple(amount: string, fromCurrency: string, toCurrencies: string[]): Promise<BulkConversionResult[]>;
20
+ convertToMultiple(amount: string, fromCurrency: string, toCurrencies: string[]): Promise<Shop.ConvertToMultipleQuery["convertToMultiple"]>;
21
21
  };
22
22
  //# sourceMappingURL=exchange.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exchange.d.ts","sourceRoot":"","sources":["../../src/currency/exchange.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEvF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU;wBAExB,OAAO,CAAC,YAAY,EAAE,CAAC;IAKjD;;;OAGG;oCACmC,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;4BAQjE,MAAM,gBACA,MAAM,cACR,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC;IAS3B,2EAA2E;4BAC7C,MAAM,kBAAkB,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQvF,2EAA2E;0BAC/C,MAAM,kBAAkB,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQrF;;;;OAIG;8BAEO,MAAM,gBACA,MAAM,gBACN,MAAM,EAAE,GACrB,OAAO,CAAC,oBAAoB,EAAE,CAAC;EAQrC"}
1
+ {"version":3,"file":"exchange.d.ts","sourceRoot":"","sources":["../../src/currency/exchange.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,KAAK,IAAI,MAAM,sBAAsB,CAAC;AAElD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU;wBAExB,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAK3E;;;OAGG;oCACmC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;4BAQpF,MAAM,gBACA,MAAM,cACR,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;IAS/C,2EAA2E;4BAEjE,MAAM,kBACE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;IAQ/C,2EAA2E;0BAEjE,MAAM,kBACE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;IAQ/C;;;;OAIG;8BAEO,MAAM,gBACA,MAAM,gBACN,MAAM,EAAE,GACrB,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;EAS/D"}
@@ -45,7 +45,11 @@ export function createExchangeMethods(http) {
45
45
  * available currency.
46
46
  */
47
47
  async convertToMultiple(amount, fromCurrency, toCurrencies) {
48
- const data = await http.graphql(CONVERT_TO_MULTIPLE, { amount, from: fromCurrency, to: toCurrencies });
48
+ const data = await http.graphql(CONVERT_TO_MULTIPLE, {
49
+ amount,
50
+ from: fromCurrency,
51
+ to: toCurrencies,
52
+ });
49
53
  return data.convertToMultiple;
50
54
  },
51
55
  };
@@ -1 +1 @@
1
- {"version":3,"file":"exchange.js","sourceRoot":"","sources":["../../src/currency/exchange.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAIhC,MAAM,UAAU,qBAAqB,CAAC,IAAgB;IACpD,OAAO;QACL,KAAK,CAAC,gBAAgB;YACpB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAoC,kBAAkB,CAAC,CAAC;YACvF,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;QAED;;;WAGG;QACH,KAAK,CAAC,eAAe,CAAC,cAAsB;YAC1C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAwC,iBAAiB,EAAE;gBACxF,cAAc;aACf,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;QAED,KAAK,CAAC,eAAe,CACnB,MAAc,EACd,YAAoB,EACpB,UAAkB;YAElB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAuC,gBAAgB,EAAE;gBACtF,MAAM;gBACN,IAAI,EAAE,YAAY;gBAClB,EAAE,EAAE,UAAU;aACf,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,eAAe,CAAC;QAC9B,CAAC;QAED,2EAA2E;QAC3E,KAAK,CAAC,eAAe,CAAC,MAAc,EAAE,cAAsB;YAC1D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAuC,iBAAiB,EAAE;gBACvF,MAAM;gBACN,cAAc;aACf,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,eAAe,CAAC;QAC9B,CAAC;QAED,2EAA2E;QAC3E,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,cAAsB;YACxD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAqC,eAAe,EAAE;gBACnF,MAAM;gBACN,cAAc;aACf,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;QAED;;;;WAIG;QACH,KAAK,CAAC,iBAAiB,CACrB,MAAc,EACd,YAAoB,EACpB,YAAsB;YAEtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,mBAAmB,EACnB,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,CACjD,CAAC;YACF,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAChC,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"exchange.js","sourceRoot":"","sources":["../../src/currency/exchange.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAIhC,MAAM,UAAU,qBAAqB,CAAC,IAAgB;IACpD,OAAO;QACL,KAAK,CAAC,gBAAgB;YACpB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,kBAAkB,CAAC,CAAC;YAC7E,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;QAED;;;WAGG;QACH,KAAK,CAAC,eAAe,CAAC,cAAsB;YAC1C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAyB,iBAAiB,EAAE;gBACzE,cAAc;aACf,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;QAED,KAAK,CAAC,eAAe,CACnB,MAAc,EACd,YAAoB,EACpB,UAAkB;YAElB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA4B,gBAAgB,EAAE;gBAC3E,MAAM;gBACN,IAAI,EAAE,YAAY;gBAClB,EAAE,EAAE,UAAU;aACf,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,eAAe,CAAC;QAC9B,CAAC;QAED,2EAA2E;QAC3E,KAAK,CAAC,eAAe,CACnB,MAAc,EACd,cAAsB;YAEtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA4B,iBAAiB,EAAE;gBAC5E,MAAM;gBACN,cAAc;aACf,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,eAAe,CAAC;QAC9B,CAAC;QAED,2EAA2E;QAC3E,KAAK,CAAC,aAAa,CACjB,MAAc,EACd,cAAsB;YAEtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,eAAe,EAAE;gBACxE,MAAM;gBACN,cAAc;aACf,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;QAED;;;;WAIG;QACH,KAAK,CAAC,iBAAiB,CACrB,MAAc,EACd,YAAoB,EACpB,YAAsB;YAEtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA8B,mBAAmB,EAAE;gBAChF,MAAM;gBACN,IAAI,EAAE,YAAY;gBAClB,EAAE,EAAE,YAAY;aACjB,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAChC,CAAC;KACF,CAAC;AACJ,CAAC"}
package/dist/errors.d.ts CHANGED
@@ -40,10 +40,27 @@ export interface StorefrontErrorContext {
40
40
  * value or a 503 would report itself as terminal.
41
41
  */
42
42
  retryable?: boolean;
43
+ /**
44
+ * The platform could not say whether the operation took effect — see
45
+ * `PlatformError.outcomeUnknown`. A converted error must pass the original's
46
+ * value, or an unknown write would read as one the platform vouches for.
47
+ */
48
+ outcomeUnknown?: boolean;
43
49
  cause?: unknown;
44
50
  }
45
51
  export declare class StorefrontError extends PlatformError {
46
52
  #private;
53
+ /**
54
+ * The idempotency key the failed call went out under, when it had one —
55
+ * `commerce.addPayment`, `payDeposit` and `createDepositPaymentIntent` always
56
+ * have one, their own if you passed none.
57
+ *
58
+ * When the answer never came (`outcomeUnknown`), repeat the call with
59
+ * `{ idempotencyKey: error.idempotencyKey }`: an engine that honours the key
60
+ * answers with the first attempt's payment instead of taking a second one.
61
+ * Use a NEW key only for a new attempt after a definite refusal.
62
+ */
63
+ idempotencyKey?: string;
47
64
  constructor(message: string, service: ServiceName, statusCode?: number, errorCode?: string,
48
65
  /** Field-level details parsed from a structured error response. */
49
66
  details?: ErrorDetail[],
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,KAAK,WAAW,EAChB,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC;AAErC;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AAExD;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,eAAgB,SAAQ,aAAa;;gBAK9C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM;IAClB,mEAAmE;IACnE,OAAO,CAAC,EAAE,WAAW,EAAE;IACvB,mEAAmE;IACnE,iBAAiB,CAAC,EAAE,MAAM,EAC1B,OAAO,CAAC,EAAE,sBAAsB;IAuBlC,qEAAqE;IACrE,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;IAED;;;;;OAKG;IACH,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;CACF;AAED,gFAAgF;AAChF,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,EAAE,sBAAsB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC9C,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,KAAK,CAAC,EAAE,sBAAsB,EAAE,CAAC;CAClC;AAED,qBAAa,aAAc,SAAQ,eAAe;;aAsD9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IArDlD;;;;;;;;;;;;;;;;;OAiBG;IACH,SAAiB,IAAI,EAAE,sBAAsB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAE9D;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAExC;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,sBAAsB,EAAE,CAAC;gBAKxC,SAAS,EAAE,MAAM;IACjB;;;;;;;OAOG;IACH,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA,EAChD,UAAU,CAAC,EAAE,0BAA0B;IAsBzC,8EAA8E;IAC9E,IAAa,SAAS,IAAI,MAAM,CAE/B;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,eAAe,CAyBvF"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,KAAK,WAAW,EAChB,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;AAGzD;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC;AAErC;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AAGxD;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,eAAgB,SAAQ,aAAa;;IAIhD;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;gBAGtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM;IAClB,mEAAmE;IACnE,OAAO,CAAC,EAAE,WAAW,EAAE;IACvB,mEAAmE;IACnE,iBAAiB,CAAC,EAAE,MAAM,EAC1B,OAAO,CAAC,EAAE,sBAAsB;IAwBlC,qEAAqE;IACrE,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;IAED;;;;;OAKG;IACH,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;CACF;AAGD,gFAAgF;AAChF,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,EAAE,sBAAsB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC9C,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,KAAK,CAAC,EAAE,sBAAsB,EAAE,CAAC;CAClC;AAED,qBAAa,aAAc,SAAQ,eAAe;;aAsD9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IArDlD;;;;;;;;;;;;;;;;;OAiBG;IACH,SAAiB,IAAI,EAAE,sBAAsB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAE9D;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAExC;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,sBAAsB,EAAE,CAAC;gBAKxC,SAAS,EAAE,MAAM;IACjB;;;;;;;OAOG;IACH,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA,EAChD,UAAU,CAAC,EAAE,0BAA0B;IAsBzC,8EAA8E;IAC9E,IAAa,SAAS,IAAI,MAAM,CAE/B;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,eAAe,CA0BvF"}
package/dist/errors.js CHANGED
@@ -18,6 +18,17 @@ export const STOREFRONT_ERROR_CODE = 'STOREFRONT_ERROR';
18
18
  export class StorefrontError extends PlatformError {
19
19
  #statusCode;
20
20
  #errorCode;
21
+ /**
22
+ * The idempotency key the failed call went out under, when it had one —
23
+ * `commerce.addPayment`, `payDeposit` and `createDepositPaymentIntent` always
24
+ * have one, their own if you passed none.
25
+ *
26
+ * When the answer never came (`outcomeUnknown`), repeat the call with
27
+ * `{ idempotencyKey: error.idempotencyKey }`: an engine that honours the key
28
+ * answers with the first attempt's payment instead of taking a second one.
29
+ * Use a NEW key only for a new attempt after a definite refusal.
30
+ */
31
+ idempotencyKey;
21
32
  constructor(message, service, statusCode, errorCode,
22
33
  /** Field-level details parsed from a structured error response. */
23
34
  details,
@@ -37,6 +48,7 @@ export class StorefrontError extends PlatformError {
37
48
  traceId: context?.traceId,
38
49
  problem: context?.problem,
39
50
  retryable: context?.retryable,
51
+ outcomeUnknown: context?.outcomeUnknown,
40
52
  cause: context?.cause,
41
53
  });
42
54
  this.name = 'StorefrontError';
@@ -132,6 +144,7 @@ export function toStorefrontError(error, service) {
132
144
  traceId: error.traceId,
133
145
  problem: error.problem,
134
146
  retryable: error.retryable,
147
+ outcomeUnknown: error.outcomeUnknown,
135
148
  cause: error,
136
149
  });
137
150
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -2,19 +2,32 @@
2
2
  * Platform events: the envelope you receive, how to verify a webhook, and the
3
3
  * revalidation a storefront-facing event calls for.
4
4
  *
5
- * Two surfaces deliver the same envelope. A **webhook** POST is signed — verify
6
- * `X-Webhook-Signature` against the RAW request body, before parsing, with the secret shown
7
- * once when the subscription was created (`verifyEventDelivery` does that and checks the
8
- * `delivered_at` replay window). The **pull feed** (`GET /events` on the plugins
5
+ * Two surfaces deliver the same envelope. A **webhook** POST is signed twice — Standard
6
+ * Webhooks (`webhook-id`/`webhook-timestamp`/`webhook-signature`) and the legacy
7
+ * `X-Webhook-Signature` — over the RAW request body, with the secret shown once when the
8
+ * subscription was created. `verifyEventDelivery` (from `@sixtyninecommerce/core`) checks
9
+ * whichever set arrived, preferring the standard one, and its replay window. The **pull feed** (`GET /events` on the plugins
9
10
  * API, with an API token holding `ReadPlatformEvents`) carries no signature and no
10
11
  * `delivered_at`: the authenticated request is the freshness proof, and a feed serving 90
11
12
  * days of history would put every row outside any replay window you could sensibly set.
12
13
  * `planRevalidation` works on envelopes from either surface.
14
+ *
15
+ * **Receiving events of your own.** `createEventHandler` (from
16
+ * `@sixtyninecommerce/core`) is a webhook endpoint as one framework-neutral
17
+ * `(request: Request) => Promise<Response>`: it verifies the delivery and hands
18
+ * each event to the handler you registered for its type, with `data` typed by
19
+ * that type's payload contract — every contract is exported here. There is no
20
+ * `poll` or `stream` on this entry point: the pull feed and the live stream need
21
+ * an API token holding `ReadPlatformEvents`, a back-office credential a
22
+ * storefront must not hold. A server-side job that has one uses
23
+ * `@sixtyninecommerce/admin` (`admin.events.poll()` / `admin.events.stream()`).
13
24
  */
14
- export { collectionCacheTag, productCacheTag, SEO_ARTIFACT_TAG } from '../cache-tags.js';
15
- export type { RevalidationDegradedReason, RevalidationPlan, RevalidationPlanOptions, RevalidationSkipReason, } from '../revalidation/event-plan.js';
25
+ export type { EventHandlerOptions, EventHandlers, TypedEnvelope, } from '@sixtyninecommerce/core';
26
+ export { createEventHandler, isEventType } from '@sixtyninecommerce/core';
27
+ export { CATALOG_TAG, collectionCacheTag, menuCacheTag, productCacheTag, SEO_ARTIFACT_TAG, } from '../cache-tags.js';
28
+ export type { RevalidationDegradedReason, RevalidationHandledEventTypeV1, RevalidationPlan, RevalidationPlanOptions, RevalidationSkipReason, } from '../revalidation/event-plan.js';
16
29
  export { EventPayloadError, planRevalidation } from '../revalidation/event-plan.js';
17
- export type { EventDeliveryVerification, VerifyEventDeliveryOptions, } from '../revalidation/event-verify.js';
30
+ export type { EventDeliveryHeaders, EventDeliveryVerification, VerifyEventDeliveryOptions, } from '../revalidation/event-verify.js';
18
31
  export { verifyEventDelivery } from '../revalidation/event-verify.js';
19
32
  export type { ChannelUrlRuleSet, UrlContext, UrlContextSource, } from '../revalidation/url-context.js';
20
33
  export { urlContextFromChannelSettings, urlContextFromClient, } from '../revalidation/url-context.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzF,YAAY,EACV,0BAA0B,EAC1B,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACpF,YAAY,EACV,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,YAAY,EACV,iBAAiB,EACjB,UAAU,EACV,gBAAgB,GACjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,mBAAmB,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,aAAa,GACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,0BAA0B,EAC1B,8BAA8B,EAC9B,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACpF,YAAY,EACV,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,YAAY,EACV,iBAAiB,EACjB,UAAU,EACV,gBAAgB,GACjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,mBAAmB,eAAe,CAAC"}
@@ -2,16 +2,28 @@
2
2
  * Platform events: the envelope you receive, how to verify a webhook, and the
3
3
  * revalidation a storefront-facing event calls for.
4
4
  *
5
- * Two surfaces deliver the same envelope. A **webhook** POST is signed — verify
6
- * `X-Webhook-Signature` against the RAW request body, before parsing, with the secret shown
7
- * once when the subscription was created (`verifyEventDelivery` does that and checks the
8
- * `delivered_at` replay window). The **pull feed** (`GET /events` on the plugins
5
+ * Two surfaces deliver the same envelope. A **webhook** POST is signed twice — Standard
6
+ * Webhooks (`webhook-id`/`webhook-timestamp`/`webhook-signature`) and the legacy
7
+ * `X-Webhook-Signature` — over the RAW request body, with the secret shown once when the
8
+ * subscription was created. `verifyEventDelivery` (from `@sixtyninecommerce/core`) checks
9
+ * whichever set arrived, preferring the standard one, and its replay window. The **pull feed** (`GET /events` on the plugins
9
10
  * API, with an API token holding `ReadPlatformEvents`) carries no signature and no
10
11
  * `delivered_at`: the authenticated request is the freshness proof, and a feed serving 90
11
12
  * days of history would put every row outside any replay window you could sensibly set.
12
13
  * `planRevalidation` works on envelopes from either surface.
14
+ *
15
+ * **Receiving events of your own.** `createEventHandler` (from
16
+ * `@sixtyninecommerce/core`) is a webhook endpoint as one framework-neutral
17
+ * `(request: Request) => Promise<Response>`: it verifies the delivery and hands
18
+ * each event to the handler you registered for its type, with `data` typed by
19
+ * that type's payload contract — every contract is exported here. There is no
20
+ * `poll` or `stream` on this entry point: the pull feed and the live stream need
21
+ * an API token holding `ReadPlatformEvents`, a back-office credential a
22
+ * storefront must not hold. A server-side job that has one uses
23
+ * `@sixtyninecommerce/admin` (`admin.events.poll()` / `admin.events.stream()`).
13
24
  */
14
- export { collectionCacheTag, productCacheTag, SEO_ARTIFACT_TAG } from '../cache-tags.js';
25
+ export { createEventHandler, isEventType } from '@sixtyninecommerce/core';
26
+ export { CATALOG_TAG, collectionCacheTag, menuCacheTag, productCacheTag, SEO_ARTIFACT_TAG, } from '../cache-tags.js';
15
27
  export { EventPayloadError, planRevalidation } from '../revalidation/event-plan.js';
16
28
  export { verifyEventDelivery } from '../revalidation/event-verify.js';
17
29
  export { urlContextFromChannelSettings, urlContextFromClient, } from '../revalidation/url-context.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAOzF,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAKpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAMtE,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAOH,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAQ1B,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAMpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAMtE,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -1,12 +1,15 @@
1
1
  /**
2
- * Revalidation payload contracts, re-exported from `@sixtyninecommerce/core`.
2
+ * Every platform event payload contract, re-exported from `@sixtyninecommerce/core`.
3
3
  *
4
4
  * The byte-identical copy of `packages/shared/src/events/shims/` lives in
5
- * `core` now — one published home for the wire contracts, so the admin SDK and
5
+ * `core` — one published home for the wire contracts, so the admin SDK and
6
6
  * this one cannot disagree about an envelope. The names are listed rather than
7
7
  * star-exported on purpose: a contract removed from `core` fails the build
8
8
  * HERE, at the entry point consumers import, instead of vanishing from
9
- * `@sixtyninecommerce/client/events` unnoticed.
9
+ * `@sixtyninecommerce/client/events` unnoticed. The list is EVERY type core's
10
+ * `event-payloads.ts` declares (plus the two revalidation-subset names), and
11
+ * `__tests__/event-payload-exports.spec.ts` fails when core gains one that is
12
+ * not listed here.
10
13
  */
11
- export type { CatalogueChangeClass, ChannelPathPrefixV1, ChannelUrlSettingClass, ChannelUrlSettingsChangedV1, CollectionAffectedScopeV1, CollectionChangeClass, CollectionCreatedV1, CollectionDeletedV1, CollectionEntityChangeBaseV1, CollectionMembershipChangedV1, CollectionStateV1, CollectionUpdatedV1, ContentChangeClass, ContentCollectionBaseV1, ContentCollectionChangeClass, ContentCollectionCreatedV1, ContentCollectionRemovedV1, ContentCollectionUpdatedV1, ContentItemBaseV1, ContentItemStatusV1, ContentPathV1, ContentPublishedV1, ContentUnpublishedV1, ContentUpdatedV1, ProductChangeBaseV1, ProductCreatedV1, ProductDeletedV1, ProductUpdatedV1, ProductVariantPriceChangedV1, RevalidationEventTypeV1, RevalidationPayloadByTypeV1, SeoPathChangeV1, SeoPathDiffTriggerV1, SeoPathEntityTypeV1, SeoPathsChangedV1, SiteContentChangedV1, SiteContentKindV1, SiteContentResourceScopeV1, UrlLocaleStrategyV1, } from '@sixtyninecommerce/core';
14
+ export type { AccessPayloadByTypeV1, ApiTokenChangedV1, ApiTokenChangeV1, ApiTokenKindV1, AppConsentRequiredV1, AppFieldGroupV1, AppFieldOwnerKindV1, AppFieldOwnershipCauseV1, AppFieldOwnershipChangedV1, AppFieldOwnershipChangeV1, AppHookFailureReasonV1, AppHookHealthChangedV1, AppHookHealthStateV1, AppHookKindV1, AppInstallationEventBaseV1, AppInstalledV1, AppPayloadByTypeV1, AppProviderAssignmentCauseV1, AppProviderAssignmentChangedV1, AppProviderAssignmentChangeV1, AppProviderKindV1, AppUninstalledV1, ArReceiptRefV1, ArSettledInvoiceV1, AssetChangedV1, AssetChangeV1, AssetPayloadByTypeV1, CatalogueChangeClass, CataloguePayloadByTypeV1, ChannelLifecycleChangedV1, ChannelLifecycleReasonCodeV1, ChannelLifecycleStateV1, ChannelLifecycleTransitionV1, ChannelPathPrefixV1, ChannelPayloadByTypeV1, ChannelRenamedV1, ChannelUrlSettingClass, ChannelUrlSettingsChangedV1, CollectionAffectedScopeV1, CollectionChangeClass, CollectionCreatedV1, CollectionDeletedV1, CollectionEntityChangeBaseV1, CollectionMembershipChangedV1, CollectionPayloadByTypeV1, CollectionStateV1, CollectionUpdatedV1, CommerceExtensionPayloadByTypeV1, ContentChangeClass, ContentCollectionBaseV1, ContentCollectionChangeClass, ContentCollectionCreatedV1, ContentCollectionPayloadByTypeV1, ContentCollectionRemovedV1, ContentCollectionUpdatedV1, ContentItemBaseV1, ContentItemStatusV1, ContentPathV1, ContentPayloadByTypeV1, ContentPublishedV1, ContentUnpublishedV1, ContentUpdatedV1, CreditNoteCustomerRefV1, CreditNoteIssuedV1, CreditNoteKindV1, CreditNoteLedgerV1, CreditNotePayloadByTypeV1, CreditNoteTaxRowV1, CustomerAgentSessionStartedV1, CustomerCreatedV1, CustomerDataRequestedV1, CustomerDeletedV1, CustomerGroupChangedV1, CustomerIdentityRefV1, CustomerPayloadByTypeV1, CustomerRedactRequestedV1, CustomerUpdatedV1, FacetChangeBaseV1, FacetChangeClass, FacetCreatedV1, FacetDeletedV1, FacetPayloadByTypeV1, FacetUpdatedV1, FacetValueChangeBaseV1, FacetValueCreatedV1, FacetValueDeletedV1, FacetValueUpdatedV1, FormChangedV1, FormChangeV1, FormPayloadByTypeV1, FormSubmissionFileV1, FormSubmissionValueV1, FormSubmittedV1, FulfillmentBaseV1, FulfillmentCancelledV1, FulfillmentCreatedV1, FulfillmentDeliveredV1, FulfillmentLineV1, FulfillmentPayloadByTypeV1, FulfillmentShippedV1, FulfillmentTrackingV1, HeadChangedV1, HeadChangeV1, HeadKindV1, HeadPayloadByTypeV1, InstallationPayloadByTypeV1, InstallationRedactRequestedV1, InvoiceCustomerRefV1, InvoiceGeneratedV1, InvoiceKindV1, InvoicePayloadByTypeV1, InvoiceTaxRowV1, LocationChangedV1, LocationChangeV1, LocationPayloadByTypeV1, MenuChangedV1, MenuChangeV1, MenuPayloadByTypeV1, NotificationConfigChangedV1, NotificationConfigPayloadByTypeV1, NotificationSenderV1, OrderBaseV1, OrderCancelledV1, OrderCompletedV1, OrderCreatedV1, OrderCustomerRefV1, OrderLineV1, OrderParkedV1, OrderPayloadByTypeV1, OrderReopenedV1, OrderSettlementCompletedV1, OrderSettlementPaymentV1, OrderStatusChangedV1, OrderStatusTupleV1, OrderUnparkedV1, OrderUpdatedChangeV1, OrderUpdatedV1, OrganizationMemberJoinedV1, OrganizationPayloadByTypeV1, OrganizationRecordDetachedV1, PaymentAuthorizedV1, PaymentBaseV1, PaymentCancelledV1, PaymentFailedV1, PaymentPartialRecordedV1, PaymentPayloadByTypeV1, PaymentReceivableReversedV1, PaymentReceivableSettledV1, PaymentRefundedV1, PaymentRefundFailedV1, PaymentSettledV1, PipelinePayloadByTypeV1, PipelineRunCompletedV1, PipelineRunCountersV1, PipelineRunKindV1, PipelineRunStatusV1, PlatformEventPayloadByTypeV1, PlatformEventTypeV1, PriceListChangedV1, PriceListChangeV1, PricingPayloadByTypeV1, ProductChangeBaseV1, ProductChannelAssignedV1, ProductChannelChangeV1, ProductChannelRemovedV1, ProductCreatedV1, ProductDeletedV1, ProductUpdatedV1, ProductVariantChangeBaseV1, ProductVariantCreatedV1, ProductVariantDeletedV1, ProductVariantPriceChangedV1, ProductVariantUpdatedV1, PromotionChangedV1, PromotionChangeV1, ProviderConnectionChangedV1, ProviderConnectionChangeV1, ProviderConnectionPayloadByTypeV1, QuoteStatusChangedV1, QuoteStatusV1, RefundBaseV1, ReturnActorV1, ReturnApprovedV1, ReturnBaseV1, ReturnCancelledV1, ReturnInitiatorV1, ReturnLineV1, ReturnPayloadByTypeV1, ReturnReceiptLineV1, ReturnReceivedV1, ReturnRejectedV1, ReturnRequestedV1, ReturnSettledV1, ReturnSettlementMethodV1, ReturnStateV1, RevalidationEventTypeV1, RevalidationPayloadByTypeV1, RoleChangedV1, RoleChangeV1, SeoPathChangeV1, SeoPathDiffTriggerV1, SeoPathEntityTypeV1, SeoPathsChangedV1, SeoPayloadByTypeV1, SiteContentChangedV1, SiteContentKindV1, SiteContentPayloadByTypeV1, SiteContentResourceScopeV1, StockAdjustedV1, StockChangeCause, StockChangeSource, StockLevelChangedV1, StockLocationLevelV1, StockPayloadByTypeV1, StockTransferBaseV1, StockTransferCancelledV1, StockTransferCompletionV1, StockTransferCreatedV1, StockTransferKindV1, StockTransferLineV1, StockTransferPayloadByTypeV1, StockTransferReceivedV1, StockTransferShipmentRemovedV1, StockTransferShippedV1, StockTransferStateV1, StockTransferVariantQuantityV1, StoredValueAccountCreatedV1, StoredValueAccountKindV1, StoredValueAccountStatusChangedV1, StoredValueAccountStatusV1, StoredValueEntryPostedV1, StoredValueEntryTypeV1, SubscriptionStatusChangedV1, SubscriptionStatusReasonCodeV1, SubscriptionStatusV1, TaxClassChangedV1, TaxClassChangeV1, TaxClassPayloadByTypeV1, TerminalChangedV1, TerminalChangeV1, UrlLocaleStrategyV1, } from '@sixtyninecommerce/core';
12
15
  //# sourceMappingURL=payloads.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"payloads.d.ts","sourceRoot":"","sources":["../../src/events/payloads.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,2BAA2B,EAC3B,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,4BAA4B,EAC5B,6BAA6B,EAC7B,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,4BAA4B,EAC5B,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,EAC3B,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"payloads.d.ts","sourceRoot":"","sources":["../../src/events/payloads.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,15 @@
1
1
  /**
2
- * Revalidation payload contracts, re-exported from `@sixtyninecommerce/core`.
2
+ * Every platform event payload contract, re-exported from `@sixtyninecommerce/core`.
3
3
  *
4
4
  * The byte-identical copy of `packages/shared/src/events/shims/` lives in
5
- * `core` now — one published home for the wire contracts, so the admin SDK and
5
+ * `core` — one published home for the wire contracts, so the admin SDK and
6
6
  * this one cannot disagree about an envelope. The names are listed rather than
7
7
  * star-exported on purpose: a contract removed from `core` fails the build
8
8
  * HERE, at the entry point consumers import, instead of vanishing from
9
- * `@sixtyninecommerce/client/events` unnoticed.
9
+ * `@sixtyninecommerce/client/events` unnoticed. The list is EVERY type core's
10
+ * `event-payloads.ts` declares (plus the two revalidation-subset names), and
11
+ * `__tests__/event-payload-exports.spec.ts` fails when core gains one that is
12
+ * not listed here.
10
13
  */
11
14
  export {};
12
15
  //# sourceMappingURL=payloads.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"payloads.js","sourceRoot":"","sources":["../../src/events/payloads.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
1
+ {"version":3,"file":"payloads.js","sourceRoot":"","sources":["../../src/events/payloads.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
@@ -0,0 +1,5 @@
1
+ import type { StoreContext } from '../types.js';
2
+ import type { FeedsModule } from './types.js';
3
+ export declare function createFeedsModule(ctx: StoreContext): FeedsModule;
4
+ export type { FeedsModule } from './types.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/feeds/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,WAAW,CAUhE;AAED,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,12 @@
1
+ export function createFeedsModule(ctx) {
2
+ return {
3
+ feedUrl(token) {
4
+ const trimmed = token.trim();
5
+ if (!trimmed) {
6
+ throw new Error('feedUrl requires a feed token');
7
+ }
8
+ return `${ctx.pluginsUrl}/feeds/${encodeURIComponent(ctx.channel.code)}/${encodeURIComponent(trimmed)}.xml`;
9
+ },
10
+ };
11
+ }
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/feeds/index.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,iBAAiB,CAAC,GAAiB;IACjD,OAAO;QACL,OAAO,CAAC,KAAa;YACnB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;YACD,OAAO,GAAG,GAAG,CAAC,UAAU,UAAU,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9G,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Product feeds — the platform renders one RSS 2.0 file per configured feed
3
+ * (Google Shopping, Meta, Pinterest, TikTok) and serves it at a token-guarded
4
+ * public URL. The token is the feed's shared secret: it is the only thing that
5
+ * identifies a feed, so treat the URL as unlisted.
6
+ */
7
+ export interface FeedsModule {
8
+ /**
9
+ * Platform URL of one product feed, e.g.
10
+ * `https://plugins.example.com/feeds/megamart/9f3c….xml`.
11
+ *
12
+ * Copy the token from Dashboard → Marketing → Product feeds. Hand this URL to
13
+ * a merchant centre directly, or proxy it on the storefront's own origin with
14
+ * `createProductFeedHandler` from `@sixtyninecommerce/client/next`.
15
+ */
16
+ feedUrl(token: string): string;
17
+ }
18
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/feeds/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,MAAM,WAAW,WAAW;IAC1B;;;;;;;OAOG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Product feeds — the platform renders one RSS 2.0 file per configured feed
3
+ * (Google Shopping, Meta, Pinterest, TikTok) and serves it at a token-guarded
4
+ * public URL. The token is the feed's shared secret: it is the only thing that
5
+ * identifies a feed, so treat the URL as unlisted.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/feeds/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}