@doswiftly/storefront-sdk 22.3.0 → 22.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/CHANGELOG.md +8 -0
- package/README.md +4 -4
- package/dist/core/client/create-client.d.ts.map +1 -1
- package/dist/core/client/create-client.js +9 -0
- package/dist/core/client/execute.d.ts.map +1 -1
- package/dist/core/client/execute.js +102 -23
- package/dist/core/client/types.d.ts +6 -0
- package/dist/core/client/types.d.ts.map +1 -1
- package/dist/core/generated/operation-types.d.ts +15 -0
- package/dist/core/generated/operation-types.d.ts.map +1 -1
- package/dist/core/operations/cart.d.ts.map +1 -1
- package/dist/core/operations/cart.js +10 -0
- package/dist/react/components/PriceDisplay.d.ts +12 -3
- package/dist/react/components/PriceDisplay.d.ts.map +1 -1
- package/dist/react/components/PriceDisplay.js +8 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 22.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 848a3fe: Expose payment consents on `PaymentMethod`. The fragment now selects `acknowledgements` — consent statements a buyer can affirm before paying, each with linked documents — so storefronts can render the consent checkboxes and echo accepted codes back in `PaymentCreateInput.acknowledgements`.
|
|
8
|
+
- ecf919f: `<PriceDisplay>` now accepts an optional `locale` prop, forwarded to both the current price and the strikethrough compare-at price. Pass it (e.g. `locale="pl-PL"`) for deterministic, environment-independent formatting — bringing `<PriceDisplay>` in line with the `locale` prop already on `<Money>`. When omitted, behaviour is unchanged (the runtime default locale is used).
|
|
9
|
+
- be11ed6: Add a cacheable `GET` transport for public reads. When a document carries a persisted-document id (`TypedDocumentString.__meta__.hash`), a public cacheable query is sent as a `GET` with only the id — so a shared CDN can cache it — with the shop, currency and language in the URL and no credentials attached; an unrecognised id transparently replays as a `POST`. Mutations and any request without a document id keep the existing `POST` behaviour, so current behaviour is unchanged until document ids are present.
|
|
10
|
+
|
|
3
11
|
## 22.3.0
|
|
4
12
|
|
|
5
13
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -718,11 +718,11 @@ your CSS approach. Available from `@doswiftly/storefront-sdk/react`:
|
|
|
718
718
|
|
|
719
719
|
| Component | Purpose |
|
|
720
720
|
|-----------|---------|
|
|
721
|
-
| `<Money amount currency
|
|
721
|
+
| `<Money amount currency locale?>` | Locale-formatted price string from minor units |
|
|
722
722
|
| `<Image data sizes priority>` | `<img>` with thumbhash blur placeholder + sane defaults |
|
|
723
723
|
| `<CartCount count label>` | Aria-live cart item count |
|
|
724
724
|
| `<AddToCartButton variantId quantity>` | Button wired to `useCartManager().addItem` (loading state + a11y error surfacing) |
|
|
725
|
-
| `<PriceDisplay price compareAtPrice currency
|
|
725
|
+
| `<PriceDisplay price compareAtPrice currency locale?>` | Price + optional strikethrough sale price |
|
|
726
726
|
| `<CartTotals subtotal tax shipping discount total currency>` | Cart financial breakdown `<dl>` |
|
|
727
727
|
| `<PaymentInstrumentTile instrument>` | One selectable payment instrument (card brand, wallet, bank) |
|
|
728
728
|
| `<PaymentInstrumentSection method>` | Instrument group for a payment method (renders tiles) |
|
|
@@ -730,8 +730,8 @@ your CSS approach. Available from `@doswiftly/storefront-sdk/react`:
|
|
|
730
730
|
```tsx
|
|
731
731
|
import { Money, PriceDisplay, CartCount } from '@doswiftly/storefront-sdk/react';
|
|
732
732
|
|
|
733
|
-
<Money amount={9990} currency="PLN" /> {/* "99,90 zł" */}
|
|
734
|
-
<PriceDisplay price={7990} compareAtPrice={9990} currency="PLN" />
|
|
733
|
+
<Money amount={9990} currency="PLN" locale="pl-PL" /> {/* "99,90 zł" */}
|
|
734
|
+
<PriceDisplay price={7990} compareAtPrice={9990} currency="PLN" locale="pl-PL" />
|
|
735
735
|
<CartCount count={3} label="items" />
|
|
736
736
|
```
|
|
737
737
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-client.d.ts","sourceRoot":"","sources":["../../../src/core/client/create-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,sBAAsB,EACtB,gBAAgB,EAKjB,MAAM,SAAS,CAAC;AAQjB,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,sBAAsB,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"create-client.d.ts","sourceRoot":"","sources":["../../../src/core/client/create-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,sBAAsB,EACtB,gBAAgB,EAKjB,MAAM,SAAS,CAAC;AAQjB,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,sBAAsB,GAAG,gBAAgB,CA0HvF"}
|
|
@@ -52,11 +52,19 @@ export function createStorefrontClient(config) {
|
|
|
52
52
|
function resolveQuery(document) {
|
|
53
53
|
return typeof document === 'string' ? document : document.toString();
|
|
54
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Persisted-document id carried by codegen on `TypedDocumentString.__meta__.hash`.
|
|
57
|
+
* Plain strings (and documents without a populated hash) have none → POST transport.
|
|
58
|
+
*/
|
|
59
|
+
function resolveDocumentId(document) {
|
|
60
|
+
return typeof document === 'string' ? undefined : document.__meta__?.hash;
|
|
61
|
+
}
|
|
55
62
|
/**
|
|
56
63
|
* Core request execution — shared by query() and mutate().
|
|
57
64
|
*/
|
|
58
65
|
async function request(document, variables, isMutation = false, cache) {
|
|
59
66
|
const query = resolveQuery(document);
|
|
67
|
+
const documentId = resolveDocumentId(document);
|
|
60
68
|
const operationName = getOperationName(query);
|
|
61
69
|
const pipeline = getPipeline();
|
|
62
70
|
const headers = {
|
|
@@ -73,6 +81,7 @@ export function createStorefrontClient(config) {
|
|
|
73
81
|
headers,
|
|
74
82
|
isMutation,
|
|
75
83
|
cache,
|
|
84
|
+
documentId,
|
|
76
85
|
};
|
|
77
86
|
// Dedupe queries (not mutations) in the same tick
|
|
78
87
|
const executeFn = () => pipeline(graphqlRequest);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../src/core/client/execute.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EAEZ,cAAc,EACd,eAAe,EAChB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../src/core/client/execute.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EAEZ,cAAc,EACd,eAAe,EAChB,MAAM,SAAS,CAAC;AAIjB,MAAM,WAAW,aAAa;IAC5B,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC/B;;;;OAIG;IACH,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,GAAG,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CAClC;AAsCD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,GACpD,oBAAoB,GAAG,IAAI,CAiB7B;AA4KD;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,IAGnB,SAAS,cAAc,KAAG,OAAO,CAAC,eAAe,CAAC,CAwEjF"}
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* Sends GraphQL POST request, parses response, returns typed GraphQLResponse.
|
|
5
5
|
* Error normalization is handled by error middleware, NOT here.
|
|
6
6
|
*/
|
|
7
|
+
import { CURRENCY_HEADER_NAME } from '../currency/cookie-config';
|
|
8
|
+
import { LANGUAGE_HEADER_NAME } from '../language/cookie-config';
|
|
7
9
|
const DEFAULT_LOG = (event) => {
|
|
8
10
|
// Header on a separate line so the data dump below renders untruncated in
|
|
9
11
|
// both terminals and DevTools.
|
|
@@ -151,45 +153,122 @@ function extractUserErrors(data) {
|
|
|
151
153
|
}
|
|
152
154
|
return flat;
|
|
153
155
|
}
|
|
156
|
+
/** Backend signal that a `documentId` is not in the allowlist → replay as POST. */
|
|
157
|
+
const TRUSTED_DOC_NOT_FOUND = 'TRUSTED_DOCUMENT_NOT_FOUND';
|
|
158
|
+
/** Shop-routing header the client always sends; lifted into the GET cache key below. */
|
|
159
|
+
const SHOP_SLUG_HEADER = 'X-Shop-Slug';
|
|
160
|
+
/**
|
|
161
|
+
* Variance axes mirrored from request headers into the GET query string. A shared
|
|
162
|
+
* edge cache keys on the URL, not on request headers — without these in the URL two
|
|
163
|
+
* shops / currencies / languages would collide on one cache entry. The backend still
|
|
164
|
+
* reads the values from the headers; the URL copy exists only to split the cache key.
|
|
165
|
+
*/
|
|
166
|
+
const AXIS_URL_PARAMS = [
|
|
167
|
+
[SHOP_SLUG_HEADER, '__shop'],
|
|
168
|
+
[CURRENCY_HEADER_NAME, '__currency'],
|
|
169
|
+
[LANGUAGE_HEADER_NAME, '__language'],
|
|
170
|
+
];
|
|
171
|
+
/**
|
|
172
|
+
* Default POST transport — the full query travels in the body and cookies are sent.
|
|
173
|
+
* Every request that is not a cacheable public read uses this (unchanged contract).
|
|
174
|
+
*/
|
|
175
|
+
function buildPostRequest(endpoint, request) {
|
|
176
|
+
const body = { query: request.query };
|
|
177
|
+
if (request.variables && Object.keys(request.variables).length > 0) {
|
|
178
|
+
body.variables = request.variables;
|
|
179
|
+
}
|
|
180
|
+
if (request.operationName) {
|
|
181
|
+
body.operationName = request.operationName;
|
|
182
|
+
}
|
|
183
|
+
return [
|
|
184
|
+
endpoint,
|
|
185
|
+
{
|
|
186
|
+
method: 'POST',
|
|
187
|
+
headers: {
|
|
188
|
+
'Content-Type': 'application/json',
|
|
189
|
+
Accept: 'application/json',
|
|
190
|
+
...request.headers,
|
|
191
|
+
},
|
|
192
|
+
body: JSON.stringify(body),
|
|
193
|
+
signal: request.signal,
|
|
194
|
+
// Include httpOnly cookies (e.g. customerAccessToken auth) on cross-origin
|
|
195
|
+
// requests. Required when the storefront runs on a domain different from the
|
|
196
|
+
// backend GraphQL endpoint — same-origin browsers send cookies regardless,
|
|
197
|
+
// but cross-origin needs `credentials: 'include'` paired with the backend's
|
|
198
|
+
// `Access-Control-Allow-Credentials: true` (already configured).
|
|
199
|
+
credentials: 'include',
|
|
200
|
+
},
|
|
201
|
+
];
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Cacheable GET transport for public reads with a known `documentId`. Only the id
|
|
205
|
+
* travels (the backend resolves it to the full query from its allowlist), the variance
|
|
206
|
+
* axes ride in the URL so a shared edge cache keys correctly, and no credentials are
|
|
207
|
+
* sent so the response stays shareable across visitors.
|
|
208
|
+
*/
|
|
209
|
+
function buildTrustedGetRequest(endpoint, request) {
|
|
210
|
+
const url = new URL(endpoint);
|
|
211
|
+
url.searchParams.set('documentId', request.documentId);
|
|
212
|
+
if (request.operationName && request.operationName !== 'anonymous') {
|
|
213
|
+
url.searchParams.set('operationName', request.operationName);
|
|
214
|
+
}
|
|
215
|
+
if (request.variables && Object.keys(request.variables).length > 0) {
|
|
216
|
+
url.searchParams.set('variables', JSON.stringify(request.variables));
|
|
217
|
+
}
|
|
218
|
+
for (const [headerName, param] of AXIS_URL_PARAMS) {
|
|
219
|
+
const value = request.headers[headerName];
|
|
220
|
+
if (value)
|
|
221
|
+
url.searchParams.set(param, value);
|
|
222
|
+
}
|
|
223
|
+
const headers = { ...request.headers };
|
|
224
|
+
// Public read = customer-agnostic → never carry the bearer token (`omit` also drops
|
|
225
|
+
// cookies), so the cached response can be served to any visitor.
|
|
226
|
+
delete headers.Authorization;
|
|
227
|
+
delete headers.authorization;
|
|
228
|
+
headers.Accept = 'application/json';
|
|
229
|
+
// Force a CORS preflight so the backend CSRF prevention admits the GET.
|
|
230
|
+
headers['apollo-require-preflight'] = 'true';
|
|
231
|
+
return [url.toString(), { method: 'GET', headers, signal: request.signal, credentials: 'omit' }];
|
|
232
|
+
}
|
|
154
233
|
/**
|
|
155
234
|
* Create the innermost execute function for the middleware pipeline.
|
|
156
235
|
*/
|
|
157
236
|
export function createExecute(config) {
|
|
158
237
|
const { endpoint, fetch: fetchFn, debug } = config;
|
|
159
238
|
return async function execute(request) {
|
|
160
|
-
const { query, variables, headers,
|
|
239
|
+
const { query, variables, headers, operationName, isMutation, cache, documentId } = request;
|
|
161
240
|
const startedAt = debug?.timing ? Date.now() : 0;
|
|
241
|
+
// Cacheable public reads with a resolvable persisted document go over GET so a
|
|
242
|
+
// shared edge cache can serve them; everything else stays POST.
|
|
243
|
+
const useTrustedGet = !isMutation && cache?.mode === 'public' && typeof documentId === 'string' && documentId.length > 0;
|
|
162
244
|
if (debug) {
|
|
163
|
-
const requestData = { variables };
|
|
245
|
+
const requestData = { variables, method: useTrustedGet ? 'GET' : 'POST' };
|
|
246
|
+
if (useTrustedGet)
|
|
247
|
+
requestData.documentId = documentId;
|
|
164
248
|
if (debug.request)
|
|
165
249
|
requestData.query = query;
|
|
166
250
|
if (debug.headers)
|
|
167
251
|
requestData.headers = redactRequestHeaders(headers);
|
|
168
252
|
debug.log({ phase: 'request', operationName, data: requestData });
|
|
169
253
|
}
|
|
170
|
-
|
|
171
|
-
if (
|
|
172
|
-
|
|
254
|
+
let response;
|
|
255
|
+
if (useTrustedGet) {
|
|
256
|
+
const [getUrl, getInit] = buildTrustedGetRequest(endpoint, request);
|
|
257
|
+
response = await fetchFn(getUrl, getInit);
|
|
258
|
+
// Unknown documentId (custom selection or manifest skew) → replay as POST with
|
|
259
|
+
// the full query. The backend never executes a document it cannot resolve.
|
|
260
|
+
if (response.status === 400) {
|
|
261
|
+
const fallback = (await response.clone().json().catch(() => null));
|
|
262
|
+
if (fallback?.error === TRUSTED_DOC_NOT_FOUND) {
|
|
263
|
+
const [postUrl, postInit] = buildPostRequest(endpoint, request);
|
|
264
|
+
response = await fetchFn(postUrl, postInit);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
173
267
|
}
|
|
174
|
-
|
|
175
|
-
|
|
268
|
+
else {
|
|
269
|
+
const [postUrl, postInit] = buildPostRequest(endpoint, request);
|
|
270
|
+
response = await fetchFn(postUrl, postInit);
|
|
176
271
|
}
|
|
177
|
-
const response = await fetchFn(endpoint, {
|
|
178
|
-
method: 'POST',
|
|
179
|
-
headers: {
|
|
180
|
-
'Content-Type': 'application/json',
|
|
181
|
-
Accept: 'application/json',
|
|
182
|
-
...headers,
|
|
183
|
-
},
|
|
184
|
-
body: JSON.stringify(body),
|
|
185
|
-
signal,
|
|
186
|
-
// Include httpOnly cookies (e.g. customerAccessToken auth) on cross-origin
|
|
187
|
-
// requests. Required when the storefront runs on a domain different from the
|
|
188
|
-
// backend GraphQL endpoint — same-origin browsers send cookies regardless,
|
|
189
|
-
// but cross-origin needs `credentials: 'include'` paired with the backend's
|
|
190
|
-
// `Access-Control-Allow-Credentials: true` (already configured).
|
|
191
|
-
credentials: 'include',
|
|
192
|
-
});
|
|
193
272
|
const json = await response.json();
|
|
194
273
|
if (debug) {
|
|
195
274
|
const responseData = {
|
|
@@ -35,6 +35,12 @@ export interface GraphQLRequest {
|
|
|
35
35
|
isMutation: boolean;
|
|
36
36
|
/** Cache strategy override */
|
|
37
37
|
cache?: CacheStrategy;
|
|
38
|
+
/**
|
|
39
|
+
* Persisted-document id (`sha256:<hex>`), carried by `TypedDocumentString.__meta__.hash`.
|
|
40
|
+
* When present on a cacheable public read, the transport sends only this id over GET
|
|
41
|
+
* (instead of the full query) so a shared edge cache can serve the response. Absent → POST.
|
|
42
|
+
*/
|
|
43
|
+
documentId?: string;
|
|
38
44
|
}
|
|
39
45
|
export interface GraphQLResponse<T = unknown> {
|
|
40
46
|
/** Parsed response data */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/client/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;;;;GAKG;AACH,qBAAa,mBAAmB,CAAC,OAAO,GAAG,OAAO,EAAE,UAAU,GAAG,OAAO,CAAE,SAAQ,MAAM;IAIpD,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;IAH7D,+CAA+C;IAC/C,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,KAAK,OAAO,CAAC;gBAEnC,KAAK,EAAE,MAAM,EAAS,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,YAAA;IAIpD,QAAQ,IAAI,MAAM;CAG5B;AAMD,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,mCAAmC;IACnC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,wDAAwD;IACxD,UAAU,EAAE,OAAO,CAAC;IACpB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/client/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;;;;GAKG;AACH,qBAAa,mBAAmB,CAAC,OAAO,GAAG,OAAO,EAAE,UAAU,GAAG,OAAO,CAAE,SAAQ,MAAM;IAIpD,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;IAH7D,+CAA+C;IAC/C,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,KAAK,OAAO,CAAC;gBAEnC,KAAK,EAAE,MAAM,EAAS,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,YAAA;IAIpD,QAAQ,IAAI,MAAM;CAG5B;AAMD,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,mCAAmC;IACnC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,wDAAwD;IACxD,UAAU,EAAE,OAAO,CAAC;IACpB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,2BAA2B;IAC3B,IAAI,EAAE,CAAC,CAAC;IACR,8BAA8B;IAC9B,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC5B,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAMD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAMD;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;AAE9E;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;AAMhG,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB;IACjB,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;IACxC,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC;AAMzC;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,2GAA2G;IAC3G,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wGAAwG;IACxG,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gKAAgK;IAChK,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sIAAsI;IACtI,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,2JAA2J;IAC3J,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAClC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,kBAAkB,GAAG,eAAe,CAAC;CACzD;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wGAAwG;IACxG,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;CAClC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;IACzC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB;IACrC,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,0BAA0B;IAC1B,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC;IAC1B,+DAA+D;IAC/D,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC;CAC5C;AAMD,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5C,QAAQ,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,EAC5C,SAAS,CAAC,EAAE,CAAC,EACb,KAAK,CAAC,EAAE,aAAa,GACpB,OAAO,CAAC,CAAC,CAAC,CAAC;IAEd;;;;OAIG;IACH,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7C,QAAQ,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,EAC5C,SAAS,CAAC,EAAE,CAAC,GACZ,OAAO,CAAC,CAAC,CAAC,CAAC;IAEd;;;;OAIG;IACH,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CACnC"}
|
|
@@ -3940,12 +3940,18 @@ export type AvailablePaymentMethodsQuery = {
|
|
|
3940
3940
|
instruments?: Maybe<Array<(Pick<PaymentInstrument, 'provider' | 'code' | 'type' | 'displayName' | 'displayHint' | 'enabled'> & {
|
|
3941
3941
|
brandImage?: Maybe<Pick<Image, 'id' | 'url' | 'altText' | 'width' | 'height' | 'thumbhash'>>;
|
|
3942
3942
|
})>>;
|
|
3943
|
+
acknowledgements: Array<(Pick<PaymentAcknowledgement, 'code' | 'enforcement' | 'statement'> & {
|
|
3944
|
+
documents: Array<Pick<PaymentAcknowledgementDocument, 'token' | 'kind' | 'url'>>;
|
|
3945
|
+
})>;
|
|
3943
3946
|
})>;
|
|
3944
3947
|
defaultMethod?: Maybe<(Pick<PaymentMethod, 'id' | 'name' | 'provider' | 'type' | 'description' | 'isDefault' | 'supportedCurrencies' | 'position' | 'providersAvailable' | 'preferredProvider' | 'available' | 'unavailableReason'> & {
|
|
3945
3948
|
icon?: Maybe<Pick<Image, 'id' | 'url' | 'altText' | 'width' | 'height' | 'thumbhash'>>;
|
|
3946
3949
|
instruments?: Maybe<Array<(Pick<PaymentInstrument, 'provider' | 'code' | 'type' | 'displayName' | 'displayHint' | 'enabled'> & {
|
|
3947
3950
|
brandImage?: Maybe<Pick<Image, 'id' | 'url' | 'altText' | 'width' | 'height' | 'thumbhash'>>;
|
|
3948
3951
|
})>>;
|
|
3952
|
+
acknowledgements: Array<(Pick<PaymentAcknowledgement, 'code' | 'enforcement' | 'statement'> & {
|
|
3953
|
+
documents: Array<Pick<PaymentAcknowledgementDocument, 'token' | 'kind' | 'url'>>;
|
|
3954
|
+
})>;
|
|
3949
3955
|
})>;
|
|
3950
3956
|
};
|
|
3951
3957
|
};
|
|
@@ -5393,12 +5399,18 @@ export type AvailablePaymentMethodsFragment = {
|
|
|
5393
5399
|
instruments?: Maybe<Array<(Pick<PaymentInstrument, 'provider' | 'code' | 'type' | 'displayName' | 'displayHint' | 'enabled'> & {
|
|
5394
5400
|
brandImage?: Maybe<Pick<Image, 'id' | 'url' | 'altText' | 'width' | 'height' | 'thumbhash'>>;
|
|
5395
5401
|
})>>;
|
|
5402
|
+
acknowledgements: Array<(Pick<PaymentAcknowledgement, 'code' | 'enforcement' | 'statement'> & {
|
|
5403
|
+
documents: Array<Pick<PaymentAcknowledgementDocument, 'token' | 'kind' | 'url'>>;
|
|
5404
|
+
})>;
|
|
5396
5405
|
})>;
|
|
5397
5406
|
defaultMethod?: Maybe<(Pick<PaymentMethod, 'id' | 'name' | 'provider' | 'type' | 'description' | 'isDefault' | 'supportedCurrencies' | 'position' | 'providersAvailable' | 'preferredProvider' | 'available' | 'unavailableReason'> & {
|
|
5398
5407
|
icon?: Maybe<Pick<Image, 'id' | 'url' | 'altText' | 'width' | 'height' | 'thumbhash'>>;
|
|
5399
5408
|
instruments?: Maybe<Array<(Pick<PaymentInstrument, 'provider' | 'code' | 'type' | 'displayName' | 'displayHint' | 'enabled'> & {
|
|
5400
5409
|
brandImage?: Maybe<Pick<Image, 'id' | 'url' | 'altText' | 'width' | 'height' | 'thumbhash'>>;
|
|
5401
5410
|
})>>;
|
|
5411
|
+
acknowledgements: Array<(Pick<PaymentAcknowledgement, 'code' | 'enforcement' | 'statement'> & {
|
|
5412
|
+
documents: Array<Pick<PaymentAcknowledgementDocument, 'token' | 'kind' | 'url'>>;
|
|
5413
|
+
})>;
|
|
5402
5414
|
})>;
|
|
5403
5415
|
};
|
|
5404
5416
|
export type PaymentMethodFragment = (Pick<PaymentMethod, 'id' | 'name' | 'provider' | 'type' | 'description' | 'isDefault' | 'supportedCurrencies' | 'position' | 'providersAvailable' | 'preferredProvider' | 'available' | 'unavailableReason'> & {
|
|
@@ -5406,6 +5418,9 @@ export type PaymentMethodFragment = (Pick<PaymentMethod, 'id' | 'name' | 'provid
|
|
|
5406
5418
|
instruments?: Maybe<Array<(Pick<PaymentInstrument, 'provider' | 'code' | 'type' | 'displayName' | 'displayHint' | 'enabled'> & {
|
|
5407
5419
|
brandImage?: Maybe<Pick<Image, 'id' | 'url' | 'altText' | 'width' | 'height' | 'thumbhash'>>;
|
|
5408
5420
|
})>>;
|
|
5421
|
+
acknowledgements: Array<(Pick<PaymentAcknowledgement, 'code' | 'enforcement' | 'statement'> & {
|
|
5422
|
+
documents: Array<Pick<PaymentAcknowledgementDocument, 'token' | 'kind' | 'url'>>;
|
|
5423
|
+
})>;
|
|
5409
5424
|
});
|
|
5410
5425
|
export type PaymentInstrumentFragment = (Pick<PaymentInstrument, 'provider' | 'code' | 'type' | 'displayName' | 'displayHint' | 'enabled'> & {
|
|
5411
5426
|
brandImage?: Maybe<Pick<Image, 'id' | 'url' | 'altText' | 'width' | 'height' | 'thumbhash'>>;
|