@shoppexio/storefront 1.0.23 → 1.0.25
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/dist/core/client.d.ts.map +1 -1
- package/dist/core/errors.d.ts +12 -0
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/modules/cart.d.ts +40 -2
- package/dist/modules/cart.d.ts.map +1 -1
- package/dist/modules/checkout.d.ts +53 -0
- package/dist/modules/checkout.d.ts.map +1 -1
- package/dist/shoppex.esm.js +2 -2
- package/dist/shoppex.esm.js.map +1 -1
- package/dist/shoppex.umd.js +1 -1
- package/dist/shoppex.umd.js.map +1 -1
- package/dist/types/api.d.ts +16 -0
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/cart.d.ts +111 -0
- package/dist/types/cart.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,UAAU,CAAC;AAGzD,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAMxD,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC3C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,YAAY,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,KAAK,CAAC;CACnD;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,UAAU,CAAC;AAGzD,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAMxD,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC3C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,YAAY,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,KAAK,CAAC;CACnD;AAoBD,wBAAsB,OAAO,CAAC,CAAC,EAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CA+KzB;AA4FD,wBAAsB,GAAG,CAAC,CAAC,EACzB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC,GAChD,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAEzB;AAED,wBAAsB,IAAI,CAAC,CAAC,EAC1B,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC,GAChD,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAEzB"}
|
package/dist/core/errors.d.ts
CHANGED
|
@@ -12,6 +12,18 @@ export declare class NotInitializedError extends ShoppexError {
|
|
|
12
12
|
export declare class NetworkError extends ShoppexError {
|
|
13
13
|
constructor(message: string, statusCode?: number);
|
|
14
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* A refusal the SERVER made and named. `code` is the backend's `error_code`
|
|
17
|
+
* (e.g. `errors.checkout.coupon_no_longer_valid`) — the branchable identity of
|
|
18
|
+
* the refusal, stable across locales, unlike the localized `message`.
|
|
19
|
+
*
|
|
20
|
+
* Distinct from {@link NetworkError}, whose `code` is always `NETWORK_ERROR`:
|
|
21
|
+
* that one means "the request did not produce a named answer".
|
|
22
|
+
*/
|
|
23
|
+
export declare class ApiError extends ShoppexError {
|
|
24
|
+
readonly errorParams?: Record<string, unknown>;
|
|
25
|
+
constructor(message: string, code: string, statusCode?: number, errorParams?: Record<string, unknown>);
|
|
26
|
+
}
|
|
15
27
|
export declare class ValidationError extends ShoppexError {
|
|
16
28
|
readonly invalidFields?: string[];
|
|
17
29
|
constructor(message: string, invalidFields?: string[]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;gBAExB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAO/D;AAED,qBAAa,mBAAoB,SAAQ,YAAY;;CASpD;AAED,qBAAa,YAAa,SAAQ,YAAY;gBAChC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAKjD;AAED,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,SAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;gBAE7B,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE;CAMtD;AAED,qBAAa,SAAU,SAAQ,YAAY;gBAC7B,OAAO,EAAE,MAAM;CAK5B"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;gBAExB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAO/D;AAED,qBAAa,mBAAoB,SAAQ,YAAY;;CASpD;AAED,qBAAa,YAAa,SAAQ,YAAY;gBAChC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAKjD;AAED;;;;;;;GAOG;AACH,qBAAa,QAAS,SAAQ,YAAY;IACxC,SAAgB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAGpD,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAOxC;AAED,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,SAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;gBAE7B,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE;CAMtD;AAED,qBAAa,SAAU,SAAQ,YAAY;gBAC7B,OAAO,EAAE,MAAM;CAK5B"}
|
package/dist/modules/cart.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CartItem, CartAddOptions, CartPayload, CartStats, CartQuote, CartBasketMergeLine, CartCodeSource } from '../types';
|
|
1
|
+
import { CartItem, CartAddOptions, CartItemUpdate, CartPayload, CartStats, CartQuote, CartBasketMergeLine, CartCodeSource } from '../types';
|
|
2
2
|
export declare function getCartCoupon(): string | null;
|
|
3
3
|
export declare function getCartCouponSource(): CartCodeSource | null;
|
|
4
4
|
export declare function setCartCoupon(coupon: string | null | undefined, source?: CartCodeSource): string | null;
|
|
@@ -9,8 +9,42 @@ export declare function resolveCartLineId(productId: string, variantId: string,
|
|
|
9
9
|
export declare function getCartItemCount(): number;
|
|
10
10
|
export declare function addToCart(productId: string, variantId: string, quantity?: number, options?: CartAddOptions): void;
|
|
11
11
|
export declare function setCartItem(productId: string, variantId: string, quantity?: number, options?: CartAddOptions): void;
|
|
12
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Patch one cart line.
|
|
14
|
+
*
|
|
15
|
+
* TRI-STATE BOUNDS: `min_quantity`/`max_quantity` accept `null` to DELETE the
|
|
16
|
+
* stored bound — see {@link CartItemUpdate}. `undefined` (or an absent key)
|
|
17
|
+
* leaves it alone, which is why a removed ceiling needs its own spelling.
|
|
18
|
+
*
|
|
19
|
+
* NO-OP UPDATES DO NOT WRITE. An update that leaves the cart byte-identical
|
|
20
|
+
* returns without touching storage: no metadata bump, no `version` increment,
|
|
21
|
+
* and — because the storage write is what other tabs observe — no `storage`
|
|
22
|
+
* event. Writing anyway made an ineffective heal indistinguishable from a real
|
|
23
|
+
* cart change, and two tabs healing the same line could hand the event back and
|
|
24
|
+
* forth indefinitely. Line-shape healing of a legacy stored row is NOT this
|
|
25
|
+
* function's job: `normalizeCartItems` clamps and repairs on every READ, which
|
|
26
|
+
* is the chokepoint every access already flows through.
|
|
27
|
+
*/
|
|
28
|
+
export declare function updateCartItem(lineId: string, updates: CartItemUpdate): void;
|
|
13
29
|
export declare function removeFromCart(lineId: string): void;
|
|
30
|
+
/**
|
|
31
|
+
* Discards the cart entirely — and with it the proof that describes it.
|
|
32
|
+
*
|
|
33
|
+
* PAYMENT PATH. `latestQuoteToken` is evidence about a specific cart, and this
|
|
34
|
+
* is the one mutation after which that cart does not exist in any form. Held
|
|
35
|
+
* across the clear, the proof outlives its subject: a caller that clears and
|
|
36
|
+
* re-adds (Buy Now REPLACES the cart) hands `/from-cart` a token bound to the
|
|
37
|
+
* previous cart's hash, which is refused as `quote_token_stale` — a hand-off
|
|
38
|
+
* dead-ended by a proof nobody asked for. And with no re-quote in between there
|
|
39
|
+
* is nothing to replace it with, so the retry is refused identically.
|
|
40
|
+
*
|
|
41
|
+
* Only this path clears it. Every OTHER mutation turns one cart into another
|
|
42
|
+
* cart, where a proof that no longer matches is the server's to refuse: it
|
|
43
|
+
* answers `quote_token_stale`, the surfaces re-quote, and the buyer approves the
|
|
44
|
+
* new total. Dropping the proof there instead would silently remove the approved
|
|
45
|
+
* -total ceiling from a checkout that raced the re-quote, which is the failure
|
|
46
|
+
* the token exists to prevent.
|
|
47
|
+
*/
|
|
14
48
|
export declare function clearCart(): void;
|
|
15
49
|
export declare function createCartBackup(): void;
|
|
16
50
|
export declare function restoreCartFromBackup(): boolean;
|
|
@@ -19,6 +53,10 @@ export declare function moveBasketItem(fromProductId: string, fromVariantId: str
|
|
|
19
53
|
export declare function validateCartIntegrity(): boolean;
|
|
20
54
|
export declare function getCartStats(): CartStats;
|
|
21
55
|
export declare function getCartPayload(coupon?: string): CartPayload;
|
|
56
|
+
/** @internal — read by checkout(); exported only across module boundaries. */
|
|
57
|
+
export declare function getLatestQuoteToken(): string | null;
|
|
58
|
+
/** @internal — test seam and cart-reset hook. */
|
|
59
|
+
export declare function clearLatestQuoteToken(): void;
|
|
22
60
|
export declare function quoteCart(coupon?: string, currency?: string): Promise<import('..').SDKResponse<CartQuote>>;
|
|
23
61
|
export declare function serializeCart(coupon?: string): string;
|
|
24
62
|
//# sourceMappingURL=cart.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cart.d.ts","sourceRoot":"","sources":["../../src/modules/cart.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,WAAW,EAEX,SAAS,EACT,SAAS,EACT,mBAAmB,EACnB,cAAc,EACf,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"cart.d.ts","sourceRoot":"","sources":["../../src/modules/cart.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,cAAc,EACd,WAAW,EAEX,SAAS,EACT,SAAS,EACT,mBAAmB,EACnB,cAAc,EACf,MAAM,UAAU,CAAC;AAkJlB,wBAAgB,aAAa,IAAI,MAAM,GAAG,IAAI,CAE7C;AAED,wBAAgB,mBAAmB,IAAI,cAAc,GAAG,IAAI,CAE3D;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACjC,MAAM,GAAE,cAAyB,GAChC,MAAM,GAAG,IAAI,CASf;AAED,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAkCD,wBAAgB,OAAO,IAAI,QAAQ,EAAE,CAGpC;AAED,uGAAuG;AACvG,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,QAAQ,EAAc,GAC3B,MAAM,CAQR;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAGzC;AAED,wBAAgB,SAAS,CACvB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,MAAU,EACpB,OAAO,CAAC,EAAE,cAAc,GACvB,IAAI,CAmEN;AA4DD,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,MAAU,EACpB,OAAO,CAAC,EAAE,cAAc,GACvB,IAAI,CAkDN;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc,GACtB,IAAI,CAyEN;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CASnD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,SAAS,IAAI,IAAI,CAKhC;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAqBvC;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAyB/C;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,QAAQ,EAAE,CAyCrE;AAED,wBAAgB,cAAc,CAC5B,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,IAAI,CAiCN;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAW/C;AAED,wBAAgB,YAAY,IAAI,SAAS,CAuBxC;AAED,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAQ3D;AA+CD,8EAA8E;AAC9E,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAEnD;AAED,iDAAiD;AACjD,wBAAgB,qBAAqB,IAAI,IAAI,CAI5C;AAED,wBAAsB,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,gDA2BjE;AAED,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAWrD"}
|
|
@@ -5,9 +5,43 @@ export interface CheckoutOptions {
|
|
|
5
5
|
email?: string;
|
|
6
6
|
coupon?: string;
|
|
7
7
|
currency?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Referral (affiliate) code to submit, as a tri-state:
|
|
10
|
+
*
|
|
11
|
+
* - `undefined` — the SDK resolves it from storage (cart-applied referral
|
|
12
|
+
* code first, then the ambient `?ref=` attribution).
|
|
13
|
+
* - `''` — explicitly none: submit no referral code and do NOT re-read
|
|
14
|
+
* storage. This is how a caller pins "quoted WITHOUT a referral"; without
|
|
15
|
+
* it a code captured between the quote and the submit would be applied to
|
|
16
|
+
* a total the buyer never saw.
|
|
17
|
+
* - non-empty — pinned: submit exactly this code.
|
|
18
|
+
*
|
|
19
|
+
* `referralCode` is an alias and follows the same rules; `affiliateCode`
|
|
20
|
+
* wins when both are present.
|
|
21
|
+
*/
|
|
8
22
|
affiliateCode?: string;
|
|
23
|
+
/** Alias of {@link CheckoutOptions.affiliateCode}, same tri-state. */
|
|
9
24
|
referralCode?: string;
|
|
10
25
|
customerCheckoutPath?: '/dashboard/api/checkout';
|
|
26
|
+
/**
|
|
27
|
+
* The cart this hand-off was approved FOR, as `JSON.stringify(getCart())`.
|
|
28
|
+
*
|
|
29
|
+
* PAYMENT PATH. A caller that writes the cart and reads it back before
|
|
30
|
+
* checking out (Buy Now, which replaces the cart, is the sharp case) verifies
|
|
31
|
+
* a cart it read at one moment, while this function reads storage again on
|
|
32
|
+
* its way into the request — and localStorage is shared with every other tab
|
|
33
|
+
* on the domain. A write landing in that gap is billed without ever having
|
|
34
|
+
* passed the caller's verification.
|
|
35
|
+
*
|
|
36
|
+
* The caller cannot close that itself: any check it makes is one more read
|
|
37
|
+
* BEFORE this one. Pinning the expected bytes moves the comparison to the
|
|
38
|
+
* only place it can be conclusive — against the exact cart this call is about
|
|
39
|
+
* to POST. A mismatch refuses before anything is created or sent.
|
|
40
|
+
*
|
|
41
|
+
* Optional and additive: omitted, nothing changes, and the server is not
|
|
42
|
+
* involved either way.
|
|
43
|
+
*/
|
|
44
|
+
expectedCart?: string;
|
|
11
45
|
}
|
|
12
46
|
export interface CheckoutResult {
|
|
13
47
|
success: boolean;
|
|
@@ -15,6 +49,25 @@ export interface CheckoutResult {
|
|
|
15
49
|
invoiceId?: string;
|
|
16
50
|
rewards?: BuyerRewards | null;
|
|
17
51
|
message?: string;
|
|
52
|
+
/**
|
|
53
|
+
* The server's machine-readable refusal identifier when the checkout was
|
|
54
|
+
* refused, e.g. `errors.checkout.price_increased_since_quote` or
|
|
55
|
+
* `errors.checkout.affiliate_code_not_applicable`. Branch on this rather
|
|
56
|
+
* than on `message`, which is localized display copy.
|
|
57
|
+
*
|
|
58
|
+
* The quote-proof family — `errors.checkout.quote_token_invalid`,
|
|
59
|
+
* `errors.checkout.quote_token_expired`, `errors.checkout.quote_token_stale`
|
|
60
|
+
* — says the proof this call submitted could not be honoured: not ours, past
|
|
61
|
+
* its window, or priced for a cart/currency/codes that have since moved. The
|
|
62
|
+
* server refuses rather than pricing without the ceiling, so the caller's
|
|
63
|
+
* response is always the same: `quoteCart()` again, show the buyer the new
|
|
64
|
+
* total, and only then retry. A retry with the same stale token is refused
|
|
65
|
+
* identically.
|
|
66
|
+
*
|
|
67
|
+
* Absent for failures the server never named (transport, timeout, an empty
|
|
68
|
+
* cart caught client-side).
|
|
69
|
+
*/
|
|
70
|
+
code?: string;
|
|
18
71
|
}
|
|
19
72
|
export declare function checkout(couponOrOptions?: string | CheckoutOptions, options?: CheckoutOptions): Promise<CheckoutResult>;
|
|
20
73
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/modules/checkout.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAMjD,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/modules/checkout.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAMjD,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,yBAAyB,CAAC;IACjD;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA2TD,wBAAsB,QAAQ,CAC5B,eAAe,CAAC,EAAE,MAAM,GAAG,eAAe,EAC1C,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,cAAc,CAAC,CA2GzB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,eAAe,CAAC,EAAE,MAAM,GAAG,eAAe,EAC1C,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,MAAM,CAAC,CA6DjB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,KAAK,CAE5C"}
|