@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.
- package/README.md +141 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +6 -1
- package/dist/client.js.map +1 -1
- package/dist/commerce/age-verification.d.ts +8 -0
- package/dist/commerce/age-verification.d.ts.map +1 -0
- package/dist/commerce/age-verification.js +47 -0
- package/dist/commerce/age-verification.js.map +1 -0
- package/dist/commerce/branding.d.ts +6 -0
- package/dist/commerce/branding.d.ts.map +1 -0
- package/dist/commerce/branding.js +138 -0
- package/dist/commerce/branding.js.map +1 -0
- package/dist/commerce/checkout.d.ts.map +1 -1
- package/dist/commerce/checkout.js +5 -1
- package/dist/commerce/checkout.js.map +1 -1
- package/dist/commerce/customer.d.ts +26 -1
- package/dist/commerce/customer.d.ts.map +1 -1
- package/dist/commerce/customer.js +122 -15
- package/dist/commerce/customer.js.map +1 -1
- package/dist/commerce/favorites.d.ts +12 -0
- package/dist/commerce/favorites.d.ts.map +1 -0
- package/dist/commerce/favorites.js +30 -0
- package/dist/commerce/favorites.js.map +1 -0
- package/dist/commerce/index.d.ts +2 -2
- package/dist/commerce/index.d.ts.map +1 -1
- package/dist/commerce/index.js +34 -1
- package/dist/commerce/index.js.map +1 -1
- package/dist/commerce/payments.d.ts +8 -0
- package/dist/commerce/payments.d.ts.map +1 -0
- package/dist/commerce/payments.js +30 -0
- package/dist/commerce/payments.js.map +1 -0
- package/dist/commerce/products.d.ts +9 -7
- package/dist/commerce/products.d.ts.map +1 -1
- package/dist/commerce/products.js +93 -26
- package/dist/commerce/products.js.map +1 -1
- package/dist/commerce/queries.d.ts +41 -11
- package/dist/commerce/queries.d.ts.map +1 -1
- package/dist/commerce/queries.js +443 -81
- package/dist/commerce/queries.js.map +1 -1
- package/dist/commerce/quotes.d.ts +10 -0
- package/dist/commerce/quotes.d.ts.map +1 -0
- package/dist/commerce/quotes.js +33 -0
- package/dist/commerce/quotes.js.map +1 -0
- package/dist/commerce/recommendations.d.ts +6 -0
- package/dist/commerce/recommendations.d.ts.map +1 -0
- package/dist/commerce/recommendations.js +10 -0
- package/dist/commerce/recommendations.js.map +1 -0
- package/dist/commerce/reviews.d.ts +22 -0
- package/dist/commerce/reviews.d.ts.map +1 -0
- package/dist/commerce/reviews.js +168 -0
- package/dist/commerce/reviews.js.map +1 -0
- package/dist/commerce/search.d.ts +2 -2
- package/dist/commerce/search.d.ts.map +1 -1
- package/dist/commerce/search.js +6 -4
- package/dist/commerce/search.js.map +1 -1
- package/dist/commerce/shipping.d.ts +8 -0
- package/dist/commerce/shipping.d.ts.map +1 -0
- package/dist/commerce/shipping.js +109 -0
- package/dist/commerce/shipping.js.map +1 -0
- package/dist/commerce/stock-notifications.d.ts +7 -0
- package/dist/commerce/stock-notifications.d.ts.map +1 -0
- package/dist/commerce/stock-notifications.js +48 -0
- package/dist/commerce/stock-notifications.js.map +1 -0
- package/dist/commerce/subscriptions.d.ts +12 -0
- package/dist/commerce/subscriptions.d.ts.map +1 -0
- package/dist/commerce/subscriptions.js +54 -0
- package/dist/commerce/subscriptions.js.map +1 -0
- package/dist/commerce/vat-validation.d.ts +8 -0
- package/dist/commerce/vat-validation.d.ts.map +1 -0
- package/dist/commerce/vat-validation.js +43 -0
- package/dist/commerce/vat-validation.js.map +1 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +12 -0
- package/dist/constants.js.map +1 -1
- package/dist/content/assets.d.ts +4 -2
- package/dist/content/assets.d.ts.map +1 -1
- package/dist/content/assets.js +15 -11
- package/dist/content/assets.js.map +1 -1
- package/dist/content/collection-pages.d.ts +6 -0
- package/dist/content/collection-pages.d.ts.map +1 -0
- package/dist/content/collection-pages.js +12 -0
- package/dist/content/collection-pages.js.map +1 -0
- package/dist/content/filtered-products.d.ts +19 -0
- package/dist/content/filtered-products.d.ts.map +1 -0
- package/dist/content/filtered-products.js +18 -0
- package/dist/content/filtered-products.js.map +1 -0
- package/dist/content/forms.d.ts +2 -2
- package/dist/content/forms.d.ts.map +1 -1
- package/dist/content/forms.js +2 -2
- package/dist/content/forms.js.map +1 -1
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/index.js +4 -0
- package/dist/content/index.js.map +1 -1
- package/dist/content/items.d.ts +5 -2
- package/dist/content/items.d.ts.map +1 -1
- package/dist/content/items.js +51 -16
- package/dist/content/items.js.map +1 -1
- package/dist/content/menus.d.ts +3 -3
- package/dist/content/menus.d.ts.map +1 -1
- package/dist/content/menus.js +29 -11
- package/dist/content/menus.js.map +1 -1
- package/dist/content/resolve.d.ts +2 -2
- package/dist/content/resolve.d.ts.map +1 -1
- package/dist/content/resolve.js +2 -2
- package/dist/content/resolve.js.map +1 -1
- package/dist/content/sitemap.d.ts +6 -0
- package/dist/content/sitemap.d.ts.map +1 -0
- package/dist/content/sitemap.js +12 -0
- package/dist/content/sitemap.js.map +1 -0
- package/dist/content/strings.d.ts +2 -2
- package/dist/content/strings.d.ts.map +1 -1
- package/dist/content/strings.js +3 -3
- package/dist/content/strings.js.map +1 -1
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/context.js +12 -33
- package/dist/core/context.js.map +1 -1
- package/dist/core/http.d.ts +8 -4
- package/dist/core/http.d.ts.map +1 -1
- package/dist/core/http.js +259 -104
- package/dist/core/http.js.map +1 -1
- package/dist/credit/credit-status.d.ts +6 -0
- package/dist/credit/credit-status.d.ts.map +1 -0
- package/dist/credit/credit-status.js +26 -0
- package/dist/credit/credit-status.js.map +1 -0
- package/dist/credit/index.d.ts +4 -0
- package/dist/credit/index.d.ts.map +1 -0
- package/dist/credit/index.js +5 -0
- package/dist/credit/index.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/media/index.d.ts +2 -1
- package/dist/media/index.d.ts.map +1 -1
- package/dist/media/index.js +35 -5
- package/dist/media/index.js.map +1 -1
- package/dist/media/urls.d.ts +3 -0
- package/dist/media/urls.d.ts.map +1 -1
- package/dist/media/urls.js +15 -1
- package/dist/media/urls.js.map +1 -1
- package/dist/media/video.d.ts +25 -0
- package/dist/media/video.d.ts.map +1 -0
- package/dist/media/video.js +109 -0
- package/dist/media/video.js.map +1 -0
- package/dist/navigation/routes.d.ts +4 -4
- package/dist/navigation/routes.d.ts.map +1 -1
- package/dist/navigation/routes.js +8 -8
- package/dist/navigation/routes.js.map +1 -1
- package/dist/pricing/validation.d.ts +0 -2
- package/dist/pricing/validation.d.ts.map +1 -1
- package/dist/pricing/validation.js +0 -10
- package/dist/pricing/validation.js.map +1 -1
- package/dist/seo/ai.d.ts +17 -0
- package/dist/seo/ai.d.ts.map +1 -0
- package/dist/seo/ai.js +32 -0
- package/dist/seo/ai.js.map +1 -0
- package/dist/seo/alternates.d.ts +4 -0
- package/dist/seo/alternates.d.ts.map +1 -0
- package/dist/seo/alternates.js +29 -0
- package/dist/seo/alternates.js.map +1 -0
- package/dist/seo/canonical.d.ts +4 -0
- package/dist/seo/canonical.d.ts.map +1 -0
- package/dist/seo/canonical.js +49 -0
- package/dist/seo/canonical.js.map +1 -0
- package/dist/seo/index.d.ts +9 -0
- package/dist/seo/index.d.ts.map +1 -0
- package/dist/seo/index.js +54 -0
- package/dist/seo/index.js.map +1 -0
- package/dist/seo/json-ld.d.ts +25 -0
- package/dist/seo/json-ld.d.ts.map +1 -0
- package/dist/seo/json-ld.js +113 -0
- package/dist/seo/json-ld.js.map +1 -0
- package/dist/seo/meta-tags.d.ts +58 -0
- package/dist/seo/meta-tags.d.ts.map +1 -0
- package/dist/seo/meta-tags.js +194 -0
- package/dist/seo/meta-tags.js.map +1 -0
- package/dist/seo/metadata-parser.d.ts +31 -0
- package/dist/seo/metadata-parser.d.ts.map +1 -0
- package/dist/seo/metadata-parser.js +180 -0
- package/dist/seo/metadata-parser.js.map +1 -0
- package/dist/seo/metadata-types.d.ts +63 -0
- package/dist/seo/metadata-types.d.ts.map +1 -0
- package/dist/seo/metadata-types.js +2 -0
- package/dist/seo/metadata-types.js.map +1 -0
- package/dist/seo/robots.d.ts +21 -0
- package/dist/seo/robots.d.ts.map +1 -0
- package/dist/seo/robots.js +39 -0
- package/dist/seo/robots.js.map +1 -0
- package/dist/seo/types.d.ts +54 -0
- package/dist/seo/types.d.ts.map +1 -0
- package/dist/seo/types.js +2 -0
- package/dist/seo/types.js.map +1 -0
- package/dist/seo/url-builder.d.ts +11 -0
- package/dist/seo/url-builder.d.ts.map +1 -0
- package/dist/seo/url-builder.js +40 -0
- package/dist/seo/url-builder.js.map +1 -0
- package/dist/types.d.ts +843 -32
- package/dist/types.d.ts.map +1 -1
- 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
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
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
|
-
|
|
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
|
},
|
package/dist/client.js.map
CHANGED
|
@@ -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;
|
|
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;
|
|
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
|
-
|
|
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;
|
|
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;
|
|
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"}
|