@sixtyninecommerce/client 0.2.2 → 0.4.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 (200) hide show
  1. package/README.md +141 -1
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +6 -1
  4. package/dist/client.js.map +1 -1
  5. package/dist/commerce/age-verification.d.ts +8 -0
  6. package/dist/commerce/age-verification.d.ts.map +1 -0
  7. package/dist/commerce/age-verification.js +47 -0
  8. package/dist/commerce/age-verification.js.map +1 -0
  9. package/dist/commerce/branding.d.ts +6 -0
  10. package/dist/commerce/branding.d.ts.map +1 -0
  11. package/dist/commerce/branding.js +138 -0
  12. package/dist/commerce/branding.js.map +1 -0
  13. package/dist/commerce/checkout.d.ts.map +1 -1
  14. package/dist/commerce/checkout.js +5 -1
  15. package/dist/commerce/checkout.js.map +1 -1
  16. package/dist/commerce/customer.d.ts +26 -1
  17. package/dist/commerce/customer.d.ts.map +1 -1
  18. package/dist/commerce/customer.js +122 -15
  19. package/dist/commerce/customer.js.map +1 -1
  20. package/dist/commerce/favorites.d.ts +12 -0
  21. package/dist/commerce/favorites.d.ts.map +1 -0
  22. package/dist/commerce/favorites.js +30 -0
  23. package/dist/commerce/favorites.js.map +1 -0
  24. package/dist/commerce/index.d.ts +2 -2
  25. package/dist/commerce/index.d.ts.map +1 -1
  26. package/dist/commerce/index.js +34 -1
  27. package/dist/commerce/index.js.map +1 -1
  28. package/dist/commerce/payments.d.ts +8 -0
  29. package/dist/commerce/payments.d.ts.map +1 -0
  30. package/dist/commerce/payments.js +30 -0
  31. package/dist/commerce/payments.js.map +1 -0
  32. package/dist/commerce/products.d.ts +9 -7
  33. package/dist/commerce/products.d.ts.map +1 -1
  34. package/dist/commerce/products.js +93 -26
  35. package/dist/commerce/products.js.map +1 -1
  36. package/dist/commerce/queries.d.ts +41 -11
  37. package/dist/commerce/queries.d.ts.map +1 -1
  38. package/dist/commerce/queries.js +443 -81
  39. package/dist/commerce/queries.js.map +1 -1
  40. package/dist/commerce/quotes.d.ts +10 -0
  41. package/dist/commerce/quotes.d.ts.map +1 -0
  42. package/dist/commerce/quotes.js +33 -0
  43. package/dist/commerce/quotes.js.map +1 -0
  44. package/dist/commerce/recommendations.d.ts +6 -0
  45. package/dist/commerce/recommendations.d.ts.map +1 -0
  46. package/dist/commerce/recommendations.js +10 -0
  47. package/dist/commerce/recommendations.js.map +1 -0
  48. package/dist/commerce/reviews.d.ts +22 -0
  49. package/dist/commerce/reviews.d.ts.map +1 -0
  50. package/dist/commerce/reviews.js +168 -0
  51. package/dist/commerce/reviews.js.map +1 -0
  52. package/dist/commerce/search.d.ts +2 -2
  53. package/dist/commerce/search.d.ts.map +1 -1
  54. package/dist/commerce/search.js +6 -4
  55. package/dist/commerce/search.js.map +1 -1
  56. package/dist/commerce/shipping.d.ts +8 -0
  57. package/dist/commerce/shipping.d.ts.map +1 -0
  58. package/dist/commerce/shipping.js +109 -0
  59. package/dist/commerce/shipping.js.map +1 -0
  60. package/dist/commerce/stock-notifications.d.ts +7 -0
  61. package/dist/commerce/stock-notifications.d.ts.map +1 -0
  62. package/dist/commerce/stock-notifications.js +48 -0
  63. package/dist/commerce/stock-notifications.js.map +1 -0
  64. package/dist/commerce/subscriptions.d.ts +12 -0
  65. package/dist/commerce/subscriptions.d.ts.map +1 -0
  66. package/dist/commerce/subscriptions.js +54 -0
  67. package/dist/commerce/subscriptions.js.map +1 -0
  68. package/dist/commerce/vat-validation.d.ts +8 -0
  69. package/dist/commerce/vat-validation.d.ts.map +1 -0
  70. package/dist/commerce/vat-validation.js +43 -0
  71. package/dist/commerce/vat-validation.js.map +1 -0
  72. package/dist/constants.d.ts +2 -0
  73. package/dist/constants.d.ts.map +1 -1
  74. package/dist/constants.js +12 -0
  75. package/dist/constants.js.map +1 -1
  76. package/dist/content/assets.d.ts +4 -2
  77. package/dist/content/assets.d.ts.map +1 -1
  78. package/dist/content/assets.js +15 -11
  79. package/dist/content/assets.js.map +1 -1
  80. package/dist/content/collection-pages.d.ts +6 -0
  81. package/dist/content/collection-pages.d.ts.map +1 -0
  82. package/dist/content/collection-pages.js +12 -0
  83. package/dist/content/collection-pages.js.map +1 -0
  84. package/dist/content/filtered-products.d.ts +19 -0
  85. package/dist/content/filtered-products.d.ts.map +1 -0
  86. package/dist/content/filtered-products.js +18 -0
  87. package/dist/content/filtered-products.js.map +1 -0
  88. package/dist/content/forms.d.ts +2 -2
  89. package/dist/content/forms.d.ts.map +1 -1
  90. package/dist/content/forms.js +2 -2
  91. package/dist/content/forms.js.map +1 -1
  92. package/dist/content/index.d.ts.map +1 -1
  93. package/dist/content/index.js +4 -0
  94. package/dist/content/index.js.map +1 -1
  95. package/dist/content/items.d.ts +5 -2
  96. package/dist/content/items.d.ts.map +1 -1
  97. package/dist/content/items.js +51 -16
  98. package/dist/content/items.js.map +1 -1
  99. package/dist/content/menus.d.ts +3 -3
  100. package/dist/content/menus.d.ts.map +1 -1
  101. package/dist/content/menus.js +29 -11
  102. package/dist/content/menus.js.map +1 -1
  103. package/dist/content/resolve.d.ts +2 -2
  104. package/dist/content/resolve.d.ts.map +1 -1
  105. package/dist/content/resolve.js +2 -2
  106. package/dist/content/resolve.js.map +1 -1
  107. package/dist/content/sitemap.d.ts +6 -0
  108. package/dist/content/sitemap.d.ts.map +1 -0
  109. package/dist/content/sitemap.js +12 -0
  110. package/dist/content/sitemap.js.map +1 -0
  111. package/dist/content/strings.d.ts +2 -2
  112. package/dist/content/strings.d.ts.map +1 -1
  113. package/dist/content/strings.js +3 -3
  114. package/dist/content/strings.js.map +1 -1
  115. package/dist/core/context.d.ts.map +1 -1
  116. package/dist/core/context.js +12 -33
  117. package/dist/core/context.js.map +1 -1
  118. package/dist/core/http.d.ts +8 -4
  119. package/dist/core/http.d.ts.map +1 -1
  120. package/dist/core/http.js +259 -104
  121. package/dist/core/http.js.map +1 -1
  122. package/dist/credit/credit-status.d.ts +6 -0
  123. package/dist/credit/credit-status.d.ts.map +1 -0
  124. package/dist/credit/credit-status.js +26 -0
  125. package/dist/credit/credit-status.js.map +1 -0
  126. package/dist/credit/index.d.ts +4 -0
  127. package/dist/credit/index.d.ts.map +1 -0
  128. package/dist/credit/index.js +5 -0
  129. package/dist/credit/index.js.map +1 -0
  130. package/dist/index.d.ts +4 -2
  131. package/dist/index.d.ts.map +1 -1
  132. package/dist/index.js +2 -1
  133. package/dist/index.js.map +1 -1
  134. package/dist/media/index.d.ts +2 -1
  135. package/dist/media/index.d.ts.map +1 -1
  136. package/dist/media/index.js +35 -5
  137. package/dist/media/index.js.map +1 -1
  138. package/dist/media/urls.d.ts +3 -0
  139. package/dist/media/urls.d.ts.map +1 -1
  140. package/dist/media/urls.js +15 -1
  141. package/dist/media/urls.js.map +1 -1
  142. package/dist/media/video.d.ts +25 -0
  143. package/dist/media/video.d.ts.map +1 -0
  144. package/dist/media/video.js +109 -0
  145. package/dist/media/video.js.map +1 -0
  146. package/dist/navigation/routes.d.ts +4 -4
  147. package/dist/navigation/routes.d.ts.map +1 -1
  148. package/dist/navigation/routes.js +8 -8
  149. package/dist/navigation/routes.js.map +1 -1
  150. package/dist/pricing/validation.d.ts +0 -2
  151. package/dist/pricing/validation.d.ts.map +1 -1
  152. package/dist/pricing/validation.js +0 -10
  153. package/dist/pricing/validation.js.map +1 -1
  154. package/dist/seo/ai.d.ts +17 -0
  155. package/dist/seo/ai.d.ts.map +1 -0
  156. package/dist/seo/ai.js +32 -0
  157. package/dist/seo/ai.js.map +1 -0
  158. package/dist/seo/alternates.d.ts +4 -0
  159. package/dist/seo/alternates.d.ts.map +1 -0
  160. package/dist/seo/alternates.js +29 -0
  161. package/dist/seo/alternates.js.map +1 -0
  162. package/dist/seo/canonical.d.ts +4 -0
  163. package/dist/seo/canonical.d.ts.map +1 -0
  164. package/dist/seo/canonical.js +49 -0
  165. package/dist/seo/canonical.js.map +1 -0
  166. package/dist/seo/index.d.ts +9 -0
  167. package/dist/seo/index.d.ts.map +1 -0
  168. package/dist/seo/index.js +54 -0
  169. package/dist/seo/index.js.map +1 -0
  170. package/dist/seo/json-ld.d.ts +25 -0
  171. package/dist/seo/json-ld.d.ts.map +1 -0
  172. package/dist/seo/json-ld.js +113 -0
  173. package/dist/seo/json-ld.js.map +1 -0
  174. package/dist/seo/meta-tags.d.ts +58 -0
  175. package/dist/seo/meta-tags.d.ts.map +1 -0
  176. package/dist/seo/meta-tags.js +194 -0
  177. package/dist/seo/meta-tags.js.map +1 -0
  178. package/dist/seo/metadata-parser.d.ts +31 -0
  179. package/dist/seo/metadata-parser.d.ts.map +1 -0
  180. package/dist/seo/metadata-parser.js +180 -0
  181. package/dist/seo/metadata-parser.js.map +1 -0
  182. package/dist/seo/metadata-types.d.ts +63 -0
  183. package/dist/seo/metadata-types.d.ts.map +1 -0
  184. package/dist/seo/metadata-types.js +2 -0
  185. package/dist/seo/metadata-types.js.map +1 -0
  186. package/dist/seo/robots.d.ts +21 -0
  187. package/dist/seo/robots.d.ts.map +1 -0
  188. package/dist/seo/robots.js +39 -0
  189. package/dist/seo/robots.js.map +1 -0
  190. package/dist/seo/types.d.ts +54 -0
  191. package/dist/seo/types.d.ts.map +1 -0
  192. package/dist/seo/types.js +2 -0
  193. package/dist/seo/types.js.map +1 -0
  194. package/dist/seo/url-builder.d.ts +11 -0
  195. package/dist/seo/url-builder.d.ts.map +1 -0
  196. package/dist/seo/url-builder.js +40 -0
  197. package/dist/seo/url-builder.js.map +1 -0
  198. package/dist/types.d.ts +843 -32
  199. package/dist/types.d.ts.map +1 -1
  200. package/package.json +4 -3
package/README.md CHANGED
@@ -16,23 +16,106 @@ import { createStorefrontClient } from '@sixtyninecommerce/client';
16
16
  const client = await createStorefrontClient({
17
17
  storeCode: 'my-store',
18
18
  cdnUrl: 'https://cdn.my-store.com',
19
+ // Optional: retry transient GETs (default { attempts: 2, baseDelayMs: 200 })
20
+ retry: { attempts: 3, baseDelayMs: 200 },
21
+ // Optional: notified when the customer's auth token is rejected
22
+ onAuthExpired: () => router.push('/sign-in'),
19
23
  });
20
24
 
21
25
  // Products
22
26
  const product = await client.commerce.getProduct('blue-shirt');
23
27
  const results = await client.commerce.searchProducts({ term: 'shirt' });
24
28
 
29
+ // Collections (hierarchical taxonomies, auto-synced to facet values)
30
+ // Filter by a collection and get descendants automatically via the
31
+ // FacetValue bridge (`coll--{channelCode}--{id}`) on the server:
32
+ const byCollection = await client.commerce.searchProducts({
33
+ collectionSlug: 'wines',
34
+ });
35
+
36
+ // Canonical + hreflang for <head> tags
37
+ const product = await client.commerce.getProduct('chateau-x');
38
+ const { canonical, alternates } = client.seo.metaFor({
39
+ kind: 'product',
40
+ slug: product.slug,
41
+ translations: product.translations,
42
+ collections: product.collections,
43
+ });
44
+
45
+ // Full structured head metadata, JSON-LD, robots, hreflang merge.
46
+ const tags = client.seo.metaTagsFor({
47
+ kind: 'product',
48
+ product: {
49
+ slug: product.slug,
50
+ translations: product.translations,
51
+ collections: product.collections,
52
+ },
53
+ metadata: product.metadata ?? null,
54
+ extras: {
55
+ name: product.name,
56
+ description: product.description,
57
+ sku: product.variants[0]?.sku,
58
+ price: { amount: '29.99', currency: 'EUR' },
59
+ availability: 'https://schema.org/InStock',
60
+ featuredAsset: product.featuredAsset,
61
+ },
62
+ });
63
+ // tags.title / tags.description / tags.canonical / tags.robots
64
+ // tags.openGraph: [{ property, content }]
65
+ // tags.twitter: [{ name, content }]
66
+ // tags.hreflang: [{ rel, hreflang, href }]
67
+ // tags.jsonLd: [{ '@type': 'Product' }, { '@type': 'BreadcrumbList' }, ...]
68
+
69
+ // Per-bot AI directives — render in <head> and attach as X-Robots-Tag headers.
70
+ const bots = client.seo.robotsDirectiveFor({
71
+ kind: 'product',
72
+ metadata: product.metadata ?? null,
73
+ });
74
+ // bots.metaTags: [{ name: 'GPTBot', content: 'noindex, nofollow' }, ...]
75
+ // bots.xRobotsHeaders: [{ name: 'X-Robots-Tag', value: 'GPTBot: noindex, nofollow' }, ...]
76
+
77
+ // AI summary + llms.txt rendering for AI agents
78
+ const summary = client.seo.aiSummaryFor({ kind: 'product', metadata: product.metadata ?? null });
79
+ const llmsLine = client.seo.llmsTxtEntryFor({
80
+ kind: 'product',
81
+ product: { slug: product.slug, collections: product.collections },
82
+ metadata: product.metadata ?? null,
83
+ url: tags.canonical,
84
+ name: product.name,
85
+ description: product.description,
86
+ });
87
+
25
88
  // Cart
26
89
  await client.commerce.addToCart(product.variants[0].id, 1);
27
90
  const order = await client.commerce.getActiveOrder();
28
91
 
92
+ // Customer subscriptions, VAT validation, MyParcel shipping
93
+ const subs = await client.commerce.getMySubscriptions();
94
+ const vat = await client.commerce.getMyVatValidationStatus();
95
+ const dropOffs = await client.commerce.getDropOffPoints({ postalCode: '1011AB' });
96
+ const tracking = await client.commerce.trackShipment('3SXXXXXX', '1011AB');
97
+
29
98
  // CMS content
30
99
  const page = await client.content.resolvePath('/about-us');
31
100
  const menu = await client.content.getMenu('main-menu');
101
+ const sitemap = await client.content.getSitemap('en');
102
+
103
+ // Resolve CMS reference fields (image[], content_item[], etc.)
104
+ const images = await client.content.lookupAssets(item.values.gallery);
105
+ const linked = await client.content.lookupContentItems(item.values.related_posts);
32
106
 
33
107
  // Routes
34
108
  const routes = await client.navigation.getRoutes();
35
109
 
110
+ // Cancel a slow read (typeahead, page navigation, SSR)
111
+ const controller = new AbortController();
112
+ const results = await client.commerce.searchProducts(
113
+ { term: 'shoes' },
114
+ { signal: controller.signal }
115
+ );
116
+ // AbortSignal is supported on read methods (catalog, content, navigation, sitemap)
117
+ // Mutations (cart, checkout, customer auth) intentionally don't accept signal.
118
+
36
119
  // Pricing helpers
37
120
  client.pricing.formatPrice(2999, 'EUR'); // "€29.99"
38
121
  client.pricing.getTierForQuantity(variant.priceTiers, 10);
@@ -55,13 +138,70 @@ const data = await client.graphql(`query { activeChannel { id } }`);
55
138
 
56
139
  | Module | Description |
57
140
  |--------|-------------|
58
- | `commerce` | Products, collections, search, cart, checkout, customer auth |
141
+ | `commerce` | Products, collections, property trees, search, cart, checkout, customer auth |
59
142
  | `content` | CMS resolve, content items, assets, forms, content strings, menus |
60
143
  | `navigation` | Unified route manifest, route lookup |
61
144
  | `pricing` | Price formatting, tier lookup, order validation (pure functions) |
62
145
  | `media` | CDN URLs, preset URLs, responsive image data (pure functions) |
63
146
  | `currency` | Exchange rates, currency conversion |
64
147
 
148
+ ## Price Lists & Volume Pricing
149
+
150
+ Every variant fragment returned by `commerce.getProduct`, `searchProducts`, `getCollection`, `getMyFavorites`, and `getProductRecommendations` already includes the price-list metadata:
151
+
152
+ | Field | Meaning |
153
+ |---|---|
154
+ | `price` / `priceWithTax` | The actual price the visitor will pay (already discounted) |
155
+ | `retailPrice` / `retailPriceWithTax` | The undiscounted list price (use for `<s>` strikethrough) |
156
+ | `priceListName` | Human label of the winning price list (e.g. "Wholesale", "Buy 5+ deal") |
157
+ | `priceTiers` | `[{ minQuantity, price, priceWithTax, discountLabel }]` — full ladder for upsells |
158
+
159
+ Three audiences see populated values:
160
+
161
+ 1. **Logged-in customers** with a customer-direct or group assignment
162
+ 2. **Logged-in customers** in a channel that has a price list with `appliesToAllCustomers = true`
163
+ 3. **Anonymous (guest) visitors** in a channel that has a price list with `appliesToAllCustomers = true`
164
+
165
+ Resolution priority is contract → customer-direct → group → channel-wide → retail (first match wins, not lowest price).
166
+
167
+ ```typescript
168
+ // Render a "Buy 5 for €1,249" upsell on the product page
169
+ const product = await client.commerce.getProduct(slug);
170
+ const variant = product.variants[0];
171
+ const nextTier = client.pricing.getTierForQuantity(variant.priceTiers ?? [], 5);
172
+ if (nextTier) {
173
+ // nextTier.priceWithTax · nextTier.minQuantity · nextTier.discountLabel
174
+ }
175
+ ```
176
+
177
+ ## Product Documents
178
+
179
+ `commerce.getProduct(slug)` and `commerce.getProductById(id)` return a `documents: PublicProductDocument[]` field with downloadable files attached to the product (manuals, spec sheets, data sheets, certificates). The list is **already filtered by the current customer's visibility** before it leaves the server — the storefront just renders what it gets.
180
+
181
+ ```typescript
182
+ const product = await client.commerce.getProduct('drill-pro-2000');
183
+ for (const doc of product.documents ?? []) {
184
+ // <a href={doc.fileUrl} download={doc.fileName}>{doc.title}</a>
185
+ // {doc.description}
186
+ // {doc.fileMimeType} · {formatFileSize(doc.fileSize)}
187
+ }
188
+ ```
189
+
190
+ | Field | Notes |
191
+ |---|---|
192
+ | `title`, `description` | Resolved for the active language; fall back to the channel default |
193
+ | `fileUrl` | **Already absolute.** Public docs use the channel CDN URL; non-public docs are short-lived presigned R2 URLs (default 15min). Don't pass through any media helper |
194
+ | `fileMimeType`, `fileSize`, `fileName` | Use for the meta line and the `download` attribute |
195
+ | `requiresAuth` | `true` when the URL is presigned. Storefront pages with any `requiresAuth: true` doc must not be cached publicly — set `Cache-Control: private, no-store` on those responses |
196
+ | `position` | Display order — render in this order |
197
+
198
+ Two language modes are transparent to the storefront — the resolver picks the right row before responding:
199
+
200
+ - **Universal**: one file used regardless of the active language (covers English-only docs and multi-lingual single PDFs).
201
+ - **Localized**: per-language title/description with optional per-locale file. Falls back to channel default, then to any sibling translation that has a file.
202
+
203
+ Visibility is gated server-side: `PUBLIC` (everyone), `AUTHENTICATED` (logged-in only), `CUSTOMER_GROUP` (allowlist of customer groups). Anonymous visitors only ever see PUBLIC docs.
204
+
65
205
  ## Tree-Shakeable Imports
66
206
 
67
207
  ```typescript
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAmB3E,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,gBAAgB,CAAC,CA8B3B"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAmB3E,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,gBAAgB,CAAC,CAiC3B"}
package/dist/client.js CHANGED
@@ -2,21 +2,26 @@ import { createCommerceModule } from './commerce/index.js';
2
2
  import { createContentModule } from './content/index.js';
3
3
  import { createStoreContext } from './core/context.js';
4
4
  import { createHttpClient } from './core/http.js';
5
+ import { createCreditModule } from './credit/index.js';
5
6
  import { createCurrencyModule } from './currency/index.js';
6
7
  import { createMediaModule } from './media/index.js';
7
8
  import { createNavigationModule } from './navigation/index.js';
8
9
  import { createPricingModule } from './pricing/index.js';
10
+ import { createSeoModule } from './seo/index.js';
9
11
  export async function createStorefrontClient(config) {
10
12
  const ctx = await createStoreContext(config);
11
13
  const http = createHttpClient(ctx);
12
14
  return {
13
15
  context: ctx,
14
- commerce: createCommerceModule(http),
16
+ maintenanceMode: ctx.channel.customFields.maintenanceMode === true,
17
+ commerce: createCommerceModule(http, ctx),
15
18
  content: createContentModule(http, ctx),
16
19
  navigation: createNavigationModule(http),
17
20
  pricing: createPricingModule(ctx),
18
21
  media: createMediaModule(ctx),
19
22
  currency: createCurrencyModule(http),
23
+ credit: createCreditModule(http),
24
+ seo: createSeoModule(ctx),
20
25
  setLanguage(code) {
21
26
  ctx.languageCode = code;
22
27
  },
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAoBzD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAA8B;IAE9B,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAEnC,OAAO;QACL,OAAO,EAAE,GAAG;QAEZ,QAAQ,EAAE,oBAAoB,CAAC,IAAI,CAAC;QACpC,OAAO,EAAE,mBAAmB,CAAC,IAAI,EAAE,GAAG,CAAC;QACvC,UAAU,EAAE,sBAAsB,CAAC,IAAI,CAAC;QACxC,OAAO,EAAE,mBAAmB,CAAC,GAAG,CAAC;QACjC,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC;QAC7B,QAAQ,EAAE,oBAAoB,CAAC,IAAI,CAAC;QAEpC,WAAW,CAAC,IAAY;YACtB,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,WAAW;YACT,OAAO,GAAG,CAAC,YAAY,CAAC;QAC1B,CAAC;QACD,YAAY,CAAC,KAAa;YACxB,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;QACxB,CAAC;QACD,cAAc;YACZ,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;QACvB,CAAC;QACD,OAAO,CAAc,KAAa,EAAE,SAAmC;YACrE,OAAO,IAAI,CAAC,OAAO,CAAI,KAAK,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAoBjD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAA8B;IAE9B,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAEnC,OAAO;QACL,OAAO,EAAE,GAAG;QACZ,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,KAAK,IAAI;QAElE,QAAQ,EAAE,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC;QACzC,OAAO,EAAE,mBAAmB,CAAC,IAAI,EAAE,GAAG,CAAC;QACvC,UAAU,EAAE,sBAAsB,CAAC,IAAI,CAAC;QACxC,OAAO,EAAE,mBAAmB,CAAC,GAAG,CAAC;QACjC,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC;QAC7B,QAAQ,EAAE,oBAAoB,CAAC,IAAI,CAAC;QACpC,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC;QAChC,GAAG,EAAE,eAAe,CAAC,GAAG,CAAC;QAEzB,WAAW,CAAC,IAAY;YACtB,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,WAAW;YACT,OAAO,GAAG,CAAC,YAAY,CAAC;QAC1B,CAAC;QACD,YAAY,CAAC,KAAa;YACxB,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;QACxB,CAAC;QACD,cAAc;YACZ,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;QACvB,CAAC;QACD,OAAO,CAAc,KAAa,EAAE,SAAmC;YACrE,OAAO,IAAI,CAAC,OAAO,CAAI,KAAK,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { HttpClient } from '../core/http.js';
2
+ import type { AgeVerificationStatus } from '../types.js';
3
+ export declare function createAgeVerificationMethods(http: HttpClient): {
4
+ getAgeVerificationStatus(): Promise<AgeVerificationStatus>;
5
+ submitDateOfBirth(dateOfBirth: string): Promise<AgeVerificationStatus>;
6
+ confirmAge(): Promise<AgeVerificationStatus>;
7
+ };
8
+ //# sourceMappingURL=age-verification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"age-verification.d.ts","sourceRoot":"","sources":["../../src/commerce/age-verification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAmCzD,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,UAAU;gCAEvB,OAAO,CAAC,qBAAqB,CAAC;mCAO3B,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;kBAQxD,OAAO,CAAC,qBAAqB,CAAC;EAKrD"}
@@ -0,0 +1,47 @@
1
+ const AGE_VERIFICATION_STATUS = `
2
+ query AgeVerificationStatus {
3
+ ageVerificationStatus {
4
+ required
5
+ minimumAge
6
+ verified
7
+ dateOfBirth
8
+ }
9
+ }
10
+ `;
11
+ const SUBMIT_DATE_OF_BIRTH = `
12
+ mutation SubmitDateOfBirth($dateOfBirth: DateTime!) {
13
+ submitDateOfBirth(dateOfBirth: $dateOfBirth) {
14
+ required
15
+ minimumAge
16
+ verified
17
+ dateOfBirth
18
+ }
19
+ }
20
+ `;
21
+ const CONFIRM_AGE = `
22
+ mutation ConfirmAge {
23
+ confirmAge {
24
+ required
25
+ minimumAge
26
+ verified
27
+ dateOfBirth
28
+ }
29
+ }
30
+ `;
31
+ export function createAgeVerificationMethods(http) {
32
+ return {
33
+ async getAgeVerificationStatus() {
34
+ const data = await http.graphql(AGE_VERIFICATION_STATUS);
35
+ return data.ageVerificationStatus;
36
+ },
37
+ async submitDateOfBirth(dateOfBirth) {
38
+ const data = await http.graphql(SUBMIT_DATE_OF_BIRTH, { dateOfBirth });
39
+ return data.submitDateOfBirth;
40
+ },
41
+ async confirmAge() {
42
+ const data = await http.graphql(CONFIRM_AGE);
43
+ return data.confirmAge;
44
+ },
45
+ };
46
+ }
47
+ //# sourceMappingURL=age-verification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"age-verification.js","sourceRoot":"","sources":["../../src/commerce/age-verification.ts"],"names":[],"mappings":"AAGA,MAAM,uBAAuB,GAAiB;;;;;;;;;CAS7C,CAAC;AAEF,MAAM,oBAAoB,GAAiB;;;;;;;;;CAS1C,CAAC;AAEF,MAAM,WAAW,GAAiB;;;;;;;;;CASjC,CAAC;AAEF,MAAM,UAAU,4BAA4B,CAAC,IAAgB;IAC3D,OAAO;QACL,KAAK,CAAC,wBAAwB;YAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,uBAAuB,CACxB,CAAC;YACF,OAAO,IAAI,CAAC,qBAAqB,CAAC;QACpC,CAAC;QAED,KAAK,CAAC,iBAAiB,CAAC,WAAmB;YACzC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,oBAAoB,EACpB,EAAE,WAAW,EAAE,CAChB,CAAC;YACF,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAChC,CAAC;QAED,KAAK,CAAC,UAAU;YACd,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAwC,WAAW,CAAC,CAAC;YACpF,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { HttpClient } from '../core/http.js';
2
+ import type { BrandingInfo, RequestOptions, StoreContext } from '../types.js';
3
+ export declare function createBrandingMethods(http: HttpClient, ctx: StoreContext): {
4
+ getBranding(options?: RequestOptions): Promise<BrandingInfo>;
5
+ };
6
+ //# sourceMappingURL=branding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branding.d.ts","sourceRoot":"","sources":["../../src/commerce/branding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EAGV,YAAY,EAEZ,cAAc,EACd,YAAY,EACb,MAAM,aAAa,CAAC;AAmBrB,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY;0BAEzC,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC;EA+FrE"}
@@ -0,0 +1,138 @@
1
+ import { makeAssetUrl } from '../media/urls.js';
2
+ import { GET_BRANDING } from './queries.js';
3
+ export function createBrandingMethods(http, ctx) {
4
+ return {
5
+ async getBranding(options) {
6
+ const cf = ctx.channel.customFields;
7
+ const channelAssetIds = [
8
+ readString(cf.logoAssetId),
9
+ readString(cf.darkLogoAssetId),
10
+ readString(cf.coverAssetId),
11
+ readString(cf.faviconAssetId),
12
+ ].filter((id) => typeof id === 'string' && id !== '');
13
+ const uniqueIds = [...new Set(channelAssetIds)];
14
+ const data = await http.graphql(GET_BRANDING, { ids: uniqueIds }, options);
15
+ const channelAssetsById = new Map(data.brandingAssets.map((a) => [a.id, a]));
16
+ const toRef = (asset) => {
17
+ if (!asset)
18
+ return null;
19
+ return {
20
+ id: asset.id,
21
+ url: makeAssetUrl(ctx.cdnUrl, asset.source),
22
+ preview: asset.preview ? makeAssetUrl(ctx.cdnUrl, asset.preview) : null,
23
+ mimeType: asset.mimeType ?? null,
24
+ };
25
+ };
26
+ const channelRef = (id) => toRef(id ? channelAssetsById.get(id) : undefined);
27
+ const fonts = data.fontResources.map((f) => ({
28
+ id: f.id,
29
+ identifier: f.identifier,
30
+ kind: f.kind,
31
+ family: f.family,
32
+ weights: f.weights,
33
+ files: f.files.map((file) => toRef(file)).filter((r) => r !== null),
34
+ }));
35
+ const localeStrategy = readString(cf.urlLocaleStrategy);
36
+ return {
37
+ identity: {
38
+ storeCode: ctx.channel.code,
39
+ businessName: readString(cf.businessName),
40
+ businessDescription: readString(cf.businessDescription),
41
+ websiteUrl: readString(cf.websiteUrl),
42
+ logoLight: channelRef(readString(cf.logoAssetId)),
43
+ logoDark: channelRef(readString(cf.darkLogoAssetId)),
44
+ cover: channelRef(readString(cf.coverAssetId)),
45
+ favicon: channelRef(readString(cf.faviconAssetId)),
46
+ },
47
+ theme: {
48
+ primaryColor: readString(cf.primaryColor),
49
+ },
50
+ fonts,
51
+ contact: {
52
+ email: readString(cf.contactEmail),
53
+ phone: readString(cf.contactPhone),
54
+ },
55
+ legal: {
56
+ name: readString(cf.legalName),
57
+ vatNumber: readString(cf.vatNumber),
58
+ registrationNumber: readString(cf.registrationNumber),
59
+ address: {
60
+ line1: readString(cf.addressLine1),
61
+ line2: readString(cf.addressLine2),
62
+ city: readString(cf.city),
63
+ postalCode: readString(cf.postalCode),
64
+ province: readString(cf.province),
65
+ country: readString(cf.country),
66
+ },
67
+ },
68
+ social: parseSocialLinks(readString(cf.socialLinks)),
69
+ storefront: {
70
+ url: readString(cf.storefrontUrl),
71
+ cdnUrl: ctx.cdnUrl,
72
+ urlLocaleStrategy: isLocaleStrategy(localeStrategy) ? localeStrategy : 'none',
73
+ urlLocalePrefixDefault: cf.urlLocalePrefixDefault === true,
74
+ commercePathPrefix: readString(cf.commercePathPrefix),
75
+ commercePathPrefixTranslations: parsePrefixTranslations(readString(cf.commercePathPrefixTranslations)),
76
+ maintenanceMode: cf.maintenanceMode === true,
77
+ defaultLanguage: data.activeChannel.defaultLanguageCode,
78
+ defaultCurrency: data.activeChannel.defaultCurrencyCode,
79
+ },
80
+ };
81
+ },
82
+ };
83
+ }
84
+ function readString(value) {
85
+ if (typeof value !== 'string')
86
+ return null;
87
+ const trimmed = value.trim();
88
+ return trimmed === '' ? null : trimmed;
89
+ }
90
+ function isLocaleStrategy(value) {
91
+ return value === 'path-prefix' || value === 'subdomain' || value === 'none';
92
+ }
93
+ function parseSocialLinks(value) {
94
+ if (!value)
95
+ return {};
96
+ try {
97
+ const parsed = JSON.parse(value);
98
+ if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed))
99
+ return {};
100
+ const result = {};
101
+ const allowed = [
102
+ 'facebook',
103
+ 'instagram',
104
+ 'twitter',
105
+ 'linkedin',
106
+ 'youtube',
107
+ 'tiktok',
108
+ ];
109
+ for (const key of allowed) {
110
+ const v = parsed[key];
111
+ if (typeof v === 'string' && v.trim() !== '')
112
+ result[key] = v.trim();
113
+ }
114
+ return result;
115
+ }
116
+ catch {
117
+ return {};
118
+ }
119
+ }
120
+ function parsePrefixTranslations(value) {
121
+ if (!value)
122
+ return null;
123
+ try {
124
+ const parsed = JSON.parse(value);
125
+ if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed))
126
+ return null;
127
+ const result = {};
128
+ for (const [k, v] of Object.entries(parsed)) {
129
+ if (typeof v === 'string')
130
+ result[k] = v;
131
+ }
132
+ return Object.keys(result).length > 0 ? result : null;
133
+ }
134
+ catch {
135
+ return null;
136
+ }
137
+ }
138
+ //# sourceMappingURL=branding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branding.js","sourceRoot":"","sources":["../../src/commerce/branding.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/commerce/checkout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,KAAK,EACL,YAAY,EACZ,aAAa,EACb,cAAc,EACf,MAAM,aAAa,CAAC;AAuBrB,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU;+BAEjB,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;8BAK/B,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;6BAO9B,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;kCAOxB,OAAO,CAAC,cAAc,EAAE,CAAC;2BAOhC,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;iCAOnB,OAAO,CAAC,aAAa,EAAE,CAAC;oCAOrB,OAAO,CAAC,KAAK,CAAC;sBAK5B,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;EAKxD"}
1
+ {"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/commerce/checkout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,KAAK,EACL,YAAY,EACZ,aAAa,EACb,cAAc,EACf,MAAM,aAAa,CAAC;AAiCrB,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU;+BAEjB,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;8BAK/B,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;6BAO9B,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;kCAOxB,OAAO,CAAC,cAAc,EAAE,CAAC;2BAOhC,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;iCAOnB,OAAO,CAAC,aAAa,EAAE,CAAC;oCAOrB,OAAO,CAAC,KAAK,CAAC;sBAK5B,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;EAKxD"}
@@ -6,7 +6,11 @@ function unwrapResult(data, field) {
6
6
  throw new MutationError('UNKNOWN_ERROR', `No result from ${field}`);
7
7
  }
8
8
  if ('errorCode' in result) {
9
- throw new MutationError(result.errorCode, result.message, result);
9
+ const transitionError = typeof result.transitionError === 'string' && result.transitionError.length > 0
10
+ ? result.transitionError
11
+ : null;
12
+ const message = transitionError ?? result.message;
13
+ throw new MutationError(result.errorCode, message, result);
10
14
  }
11
15
  return result;
12
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/commerce/checkout.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAS7C,OAAO,EACL,WAAW,EACX,wBAAwB,EACxB,yBAAyB,EACzB,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,+BAA+B,GAChC,MAAM,cAAc,CAAC;AAEtB,SAAS,YAAY,CAAC,IAA6B,EAAE,KAAa;IAChE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAA4B,CAAC;IACtD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,aAAa,CAAC,eAAe,EAAE,kBAAkB,KAAK,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,WAAW,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,SAAmB,EAAE,MAAM,CAAC,OAAiB,EAAE,MAAM,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,MAA0B,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAgB;IACpD,OAAO;QACL,KAAK,CAAC,mBAAmB,CAAC,KAAoB;YAC5C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAClF,OAAO,YAAY,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QACnD,CAAC;QAED,KAAK,CAAC,kBAAkB,CAAC,KAAmB;YAC1C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,oBAAoB,EAAE;gBAC7E,KAAK;aACN,CAAC,CAAC;YACH,OAAO,YAAY,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;QACvD,CAAC;QAED,KAAK,CAAC,iBAAiB,CAAC,KAAmB;YACzC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,mBAAmB,EAAE;gBAC5E,KAAK;aACN,CAAC,CAAC;YACH,OAAO,YAAY,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC;QACtD,CAAC;QAED,KAAK,CAAC,0BAA0B;YAC9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,yBAAyB,CAC1B,CAAC;YACF,OAAO,IAAI,CAAC,uBAAuB,CAAC;QACtC,CAAC;QAED,KAAK,CAAC,iBAAiB,CAAC,GAAa;YACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,mBAAmB,EAAE;gBAC5E,GAAG;aACJ,CAAC,CAAC;YACH,OAAO,YAAY,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC;QACtD,CAAC;QAED,KAAK,CAAC,yBAAyB;YAC7B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,wBAAwB,CACzB,CAAC;YACF,OAAO,IAAI,CAAC,sBAAsB,CAAC;QACrC,CAAC;QAED,KAAK,CAAC,4BAA4B;YAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,+BAA+B,CAAC,CAAC;YAC1F,OAAO,YAAY,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC;QACtD,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,KAAmB;YAClC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACjF,OAAO,YAAY,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QACjD,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/commerce/checkout.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { HttpClient } from '../core/http.js';
2
- import type { Customer, OrderListOptions, OrderSummary, PaginatedList, RegisterInput } from '../types.js';
2
+ import type { ActiveChannel, AddressInput, Country, Customer, CustomerAddress, Order, OrderListOptions, OrderSummary, PaginatedList, RegisterInput, ReorderSkipped, UpdateAddressInput, UpdateCustomerInput } from '../types.js';
3
3
  export declare function createCustomerMethods(http: HttpClient): {
4
4
  login(email: string, password: string): Promise<{
5
5
  id: string;
@@ -9,7 +9,32 @@ export declare function createCustomerMethods(http: HttpClient): {
9
9
  success: boolean;
10
10
  }>;
11
11
  logout(): Promise<void>;
12
+ verifyAccount(token: string, password?: string): Promise<{
13
+ id: string;
14
+ identifier: string;
15
+ }>;
16
+ refreshVerification(emailAddress: string): Promise<void>;
17
+ updatePassword(currentPassword: string, newPassword: string): Promise<void>;
18
+ requestPasswordReset(emailAddress: string): Promise<void>;
19
+ resetPassword(token: string, password: string): Promise<{
20
+ id: string;
21
+ identifier: string;
22
+ }>;
23
+ requestEmailUpdate(password: string, newEmailAddress: string): Promise<void>;
24
+ updateEmail(token: string): Promise<void>;
12
25
  getCurrentCustomer(): Promise<Customer | null>;
26
+ updateCustomer(input: UpdateCustomerInput): Promise<Customer>;
13
27
  getCustomerOrders(options?: OrderListOptions): Promise<PaginatedList<OrderSummary>>;
28
+ createAddress(input: AddressInput): Promise<CustomerAddress>;
29
+ updateAddress(input: UpdateAddressInput): Promise<CustomerAddress>;
30
+ deleteAddress(id: string): Promise<void>;
31
+ getAvailableCountries(): Promise<Country[]>;
32
+ getOrderByCode(code: string): Promise<Order>;
33
+ reorder(orderCode: string): Promise<{
34
+ order: Order;
35
+ addedLines: number;
36
+ skipped: ReorderSkipped[];
37
+ }>;
38
+ getActiveChannel(): Promise<ActiveChannel>;
14
39
  };
15
40
  //# sourceMappingURL=customer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"customer.d.ts","sourceRoot":"","sources":["../../src/commerce/customer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EACV,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,aAAa,EACd,MAAM,aAAa,CAAC;AAGrB,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU;iBAE/B,MAAM,YAAY,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;oBAYnE,aAAa,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;cAWnD,OAAO,CAAC,IAAI,CAAC;0BAID,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;gCAKlB,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;EAe5F"}
1
+ {"version":3,"file":"customer.d.ts","sourceRoot":"","sources":["../../src/commerce/customer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,OAAO,EACP,QAAQ,EACR,eAAe,EACf,KAAK,EACL,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAmCrB,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU;iBAI/B,MAAM,YAAY,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;oBAKnE,aAAa,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;cAKnD,OAAO,CAAC,IAAI,CAAC;yBAKpB,MAAM,aACF,MAAM,GAChB,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;sCAQN,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;oCASxB,MAAM,eAAe,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;uCAQxC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;yBAWtD,MAAM,YACH,MAAM,GACf,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;iCAUX,MAAM,mBAAmB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;uBAQzD,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;0BAOnB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;0BAKxB,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;gCAKjC,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;yBAiB9D,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;yBAOvC,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC;sBAOhD,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;6BAMf,OAAO,CAAC,OAAO,EAAE,CAAC;yBAKtB,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;uBAarC,MAAM,GAChB,OAAO,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,cAAc,EAAE,CAAA;KAAE,CAAC;wBAqCjD,OAAO,CAAC,aAAa,CAAC;EAKnD"}