@sixtyninecommerce/client 0.29.0 → 0.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +556 -16
- package/dist/admin/http.d.ts.map +1 -1
- package/dist/admin/http.js.map +1 -1
- package/dist/admin/types.d.ts.map +1 -1
- package/dist/build-client.d.ts +9 -0
- package/dist/build-client.d.ts.map +1 -0
- package/dist/build-client.js +58 -0
- package/dist/build-client.js.map +1 -0
- package/dist/cache-tags.d.ts +35 -1
- package/dist/cache-tags.d.ts.map +1 -1
- package/dist/cache-tags.js +39 -1
- package/dist/cache-tags.js.map +1 -1
- package/dist/client.d.ts +25 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +9 -62
- package/dist/client.js.map +1 -1
- package/dist/commerce/age-verification.d.ts +7 -4
- package/dist/commerce/age-verification.d.ts.map +1 -1
- package/dist/commerce/age-verification.js +6 -4
- package/dist/commerce/age-verification.js.map +1 -1
- package/dist/commerce/arguments.d.ts +13 -0
- package/dist/commerce/arguments.d.ts.map +1 -0
- package/dist/commerce/arguments.js +19 -0
- package/dist/commerce/arguments.js.map +1 -0
- package/dist/commerce/branding.d.ts.map +1 -1
- package/dist/commerce/branding.js.map +1 -1
- package/dist/commerce/capabilities.d.ts +40 -0
- package/dist/commerce/capabilities.d.ts.map +1 -0
- package/dist/commerce/capabilities.js +41 -0
- package/dist/commerce/capabilities.js.map +1 -0
- package/dist/commerce/cart.d.ts +9 -12
- package/dist/commerce/cart.d.ts.map +1 -1
- package/dist/commerce/cart.js +6 -1
- package/dist/commerce/cart.js.map +1 -1
- package/dist/commerce/checkout.d.ts +95 -15
- package/dist/commerce/checkout.d.ts.map +1 -1
- package/dist/commerce/checkout.js +230 -10
- package/dist/commerce/checkout.js.map +1 -1
- package/dist/commerce/customer.d.ts +82 -38
- package/dist/commerce/customer.d.ts.map +1 -1
- package/dist/commerce/customer.js +146 -10
- package/dist/commerce/customer.js.map +1 -1
- package/dist/commerce/favorites.d.ts +2 -5
- package/dist/commerce/favorites.d.ts.map +1 -1
- package/dist/commerce/favorites.js.map +1 -1
- package/dist/commerce/index.d.ts +189 -133
- package/dist/commerce/index.d.ts.map +1 -1
- package/dist/commerce/index.js +9 -0
- package/dist/commerce/index.js.map +1 -1
- package/dist/commerce/order-states.d.ts +18 -0
- package/dist/commerce/order-states.d.ts.map +1 -0
- package/dist/commerce/order-states.js +30 -0
- package/dist/commerce/order-states.js.map +1 -0
- package/dist/commerce/parcel-pricing.d.ts +48 -0
- package/dist/commerce/parcel-pricing.d.ts.map +1 -0
- package/dist/commerce/parcel-pricing.js +39 -0
- package/dist/commerce/parcel-pricing.js.map +1 -0
- package/dist/commerce/parked-orders.d.ts +22 -0
- package/dist/commerce/parked-orders.d.ts.map +1 -0
- package/dist/commerce/parked-orders.js +47 -0
- package/dist/commerce/parked-orders.js.map +1 -0
- package/dist/commerce/payments.d.ts +12 -5
- package/dist/commerce/payments.d.ts.map +1 -1
- package/dist/commerce/payments.js +10 -1
- package/dist/commerce/payments.js.map +1 -1
- package/dist/commerce/placement-error.d.ts +17 -0
- package/dist/commerce/placement-error.d.ts.map +1 -1
- package/dist/commerce/placement-error.js.map +1 -1
- package/dist/commerce/products.d.ts +92 -38
- package/dist/commerce/products.d.ts.map +1 -1
- package/dist/commerce/products.js +162 -123
- package/dist/commerce/products.js.map +1 -1
- package/dist/commerce/queries.d.ts +204 -49
- package/dist/commerce/queries.d.ts.map +1 -1
- package/dist/commerce/queries.js +1296 -737
- package/dist/commerce/queries.js.map +1 -1
- package/dist/commerce/quotes.d.ts +5 -4
- package/dist/commerce/quotes.d.ts.map +1 -1
- package/dist/commerce/quotes.js +1 -36
- package/dist/commerce/quotes.js.map +1 -1
- package/dist/commerce/recommendations.d.ts +3 -3
- package/dist/commerce/recommendations.d.ts.map +1 -1
- package/dist/commerce/recommendations.js +3 -1
- package/dist/commerce/recommendations.js.map +1 -1
- package/dist/commerce/returns.d.ts +7 -6
- package/dist/commerce/returns.d.ts.map +1 -1
- package/dist/commerce/returns.js.map +1 -1
- package/dist/commerce/reviews.d.ts +24 -15
- package/dist/commerce/reviews.d.ts.map +1 -1
- package/dist/commerce/reviews.js +67 -50
- package/dist/commerce/reviews.js.map +1 -1
- package/dist/commerce/saved-lists.d.ts +15 -15
- package/dist/commerce/saved-lists.d.ts.map +1 -1
- package/dist/commerce/saved-lists.js +67 -55
- package/dist/commerce/saved-lists.js.map +1 -1
- package/dist/commerce/search.d.ts +3 -2
- package/dist/commerce/search.d.ts.map +1 -1
- package/dist/commerce/search.js +10 -2
- package/dist/commerce/search.js.map +1 -1
- package/dist/commerce/shipping.d.ts +11 -4
- package/dist/commerce/shipping.d.ts.map +1 -1
- package/dist/commerce/shipping.js +17 -2
- package/dist/commerce/shipping.js.map +1 -1
- package/dist/commerce/stock-notifications.d.ts +2 -0
- package/dist/commerce/stock-notifications.d.ts.map +1 -1
- package/dist/commerce/stock-notifications.js +2 -2
- package/dist/commerce/stock-notifications.js.map +1 -1
- package/dist/commerce/subscriptions.d.ts +35 -37
- package/dist/commerce/subscriptions.d.ts.map +1 -1
- package/dist/commerce/subscriptions.js +159 -120
- package/dist/commerce/subscriptions.js.map +1 -1
- package/dist/commerce/vat-validation.d.ts +6 -3
- package/dist/commerce/vat-validation.d.ts.map +1 -1
- package/dist/commerce/vat-validation.js +24 -19
- package/dist/commerce/vat-validation.js.map +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/content/assets.d.ts +5 -4
- package/dist/content/assets.d.ts.map +1 -1
- package/dist/content/assets.js.map +1 -1
- package/dist/content/collection-pages.d.ts +3 -2
- package/dist/content/collection-pages.d.ts.map +1 -1
- package/dist/content/collection-pages.js.map +1 -1
- package/dist/content/collections.d.ts +5 -4
- package/dist/content/collections.d.ts.map +1 -1
- package/dist/content/collections.js.map +1 -1
- package/dist/content/filtered-products.d.ts.map +1 -1
- package/dist/content/filtered-products.js.map +1 -1
- package/dist/content/form-field-types.d.ts +3 -3
- package/dist/content/form-field-types.d.ts.map +1 -1
- package/dist/content/form-field-types.js.map +1 -1
- package/dist/content/forms.d.ts +4 -3
- package/dist/content/forms.d.ts.map +1 -1
- package/dist/content/forms.js +3 -0
- package/dist/content/forms.js.map +1 -1
- package/dist/content/index.d.ts +18 -17
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/items.d.ts +5 -4
- package/dist/content/items.d.ts.map +1 -1
- package/dist/content/items.js +2 -0
- package/dist/content/items.js.map +1 -1
- package/dist/content/menus.d.ts +3 -2
- package/dist/content/menus.d.ts.map +1 -1
- package/dist/content/menus.js +7 -1
- package/dist/content/menus.js.map +1 -1
- package/dist/content/resolve.d.ts +3 -2
- package/dist/content/resolve.d.ts.map +1 -1
- package/dist/content/resolve.js +1 -1
- package/dist/content/resolve.js.map +1 -1
- package/dist/content/sitemap.d.ts +3 -2
- package/dist/content/sitemap.d.ts.map +1 -1
- package/dist/content/sitemap.js.map +1 -1
- package/dist/content/strings.d.ts +16 -2
- package/dist/content/strings.d.ts.map +1 -1
- package/dist/content/strings.js +32 -4
- package/dist/content/strings.js.map +1 -1
- package/dist/core/context.d.ts +127 -1
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/context.js +436 -45
- package/dist/core/context.js.map +1 -1
- package/dist/core/currency.d.ts +14 -0
- package/dist/core/currency.d.ts.map +1 -0
- package/dist/core/currency.js +52 -0
- package/dist/core/currency.js.map +1 -0
- package/dist/core/deprecation.d.ts +23 -0
- package/dist/core/deprecation.d.ts.map +1 -0
- package/dist/core/deprecation.js +81 -0
- package/dist/core/deprecation.js.map +1 -0
- package/dist/core/http.d.ts +15 -1
- package/dist/core/http.d.ts.map +1 -1
- package/dist/core/http.js +55 -3
- package/dist/core/http.js.map +1 -1
- package/dist/core/public-artifact.d.ts +72 -0
- package/dist/core/public-artifact.d.ts.map +1 -0
- package/dist/core/public-artifact.js +122 -0
- package/dist/core/public-artifact.js.map +1 -0
- package/dist/core/unknown-field-rejection.d.ts +18 -0
- package/dist/core/unknown-field-rejection.d.ts.map +1 -0
- package/dist/core/unknown-field-rejection.js +37 -0
- package/dist/core/unknown-field-rejection.js.map +1 -0
- package/dist/credit/credit-status.d.ts +2 -0
- package/dist/credit/credit-status.d.ts.map +1 -1
- package/dist/credit/credit-status.js +71 -19
- package/dist/credit/credit-status.js.map +1 -1
- package/dist/credit/index.d.ts +1 -1
- package/dist/credit/payment-terms.d.ts +3 -3
- package/dist/credit/payment-terms.d.ts.map +1 -1
- package/dist/credit/payment-terms.js +28 -24
- package/dist/credit/payment-terms.js.map +1 -1
- package/dist/currency/exchange.d.ts +7 -7
- package/dist/currency/exchange.d.ts.map +1 -1
- package/dist/currency/exchange.js +5 -1
- package/dist/currency/exchange.js.map +1 -1
- package/dist/errors.d.ts +17 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +13 -0
- package/dist/errors.js.map +1 -1
- package/dist/events/index.d.ts +20 -7
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +17 -5
- package/dist/events/index.js.map +1 -1
- package/dist/events/payloads.d.ts +7 -4
- package/dist/events/payloads.d.ts.map +1 -1
- package/dist/events/payloads.js +6 -3
- package/dist/events/payloads.js.map +1 -1
- package/dist/feeds/index.d.ts +5 -0
- package/dist/feeds/index.d.ts.map +1 -0
- package/dist/feeds/index.js +12 -0
- package/dist/feeds/index.js.map +1 -0
- package/dist/feeds/types.d.ts +18 -0
- package/dist/feeds/types.d.ts.map +1 -0
- package/dist/feeds/types.js +8 -0
- package/dist/feeds/types.js.map +1 -0
- package/dist/generated/cms.d.ts +2136 -0
- package/dist/generated/cms.d.ts.map +1 -0
- package/dist/generated/cms.js +4 -0
- package/dist/generated/cms.js.map +1 -0
- package/dist/generated/plugins.d.ts +550 -0
- package/dist/generated/plugins.d.ts.map +1 -0
- package/dist/generated/plugins.js +4 -0
- package/dist/generated/plugins.js.map +1 -0
- package/dist/generated/shop.d.ts +5539 -0
- package/dist/generated/shop.d.ts.map +1 -0
- package/dist/generated/shop.js +5 -0
- package/dist/generated/shop.js.map +1 -0
- package/dist/graphql-document.d.ts +29 -0
- package/dist/graphql-document.d.ts.map +1 -0
- package/dist/graphql-document.js +21 -0
- package/dist/graphql-document.js.map +1 -0
- package/dist/index.d.ts +9 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/media/urls.d.ts.map +1 -1
- package/dist/media/urls.js +12 -1
- package/dist/media/urls.js.map +1 -1
- package/dist/media/video.d.ts.map +1 -1
- package/dist/media/video.js.map +1 -1
- package/dist/multi-store.d.ts +200 -0
- package/dist/multi-store.d.ts.map +1 -0
- package/dist/multi-store.js +558 -0
- package/dist/multi-store.js.map +1 -0
- package/dist/navigation/routes.d.ts +4 -3
- package/dist/navigation/routes.d.ts.map +1 -1
- package/dist/navigation/routes.js.map +1 -1
- package/dist/next/artifact-handler.d.ts +21 -13
- package/dist/next/artifact-handler.d.ts.map +1 -1
- package/dist/next/artifact-handler.js +28 -66
- package/dist/next/artifact-handler.js.map +1 -1
- package/dist/next/event-revalidate-handler.d.ts +26 -6
- package/dist/next/event-revalidate-handler.d.ts.map +1 -1
- package/dist/next/event-revalidate-handler.js +126 -19
- package/dist/next/event-revalidate-handler.js.map +1 -1
- package/dist/next/feed-handler.d.ts +50 -0
- package/dist/next/feed-handler.d.ts.map +1 -0
- package/dist/next/feed-handler.js +61 -0
- package/dist/next/feed-handler.js.map +1 -0
- package/dist/next/index.d.ts +3 -1
- package/dist/next/index.d.ts.map +1 -1
- package/dist/next/index.js +1 -0
- package/dist/next/index.js.map +1 -1
- package/dist/next/metadata.d.ts.map +1 -1
- package/dist/next/metadata.js.map +1 -1
- package/dist/next/redirect-middleware.d.ts +5 -31
- package/dist/next/redirect-middleware.d.ts.map +1 -1
- package/dist/next/redirect-middleware.js +4 -46
- package/dist/next/redirect-middleware.js.map +1 -1
- package/dist/next/revalidate-handler.d.ts.map +1 -1
- package/dist/next/revalidate-handler.js.map +1 -1
- package/dist/pricing/index.d.ts +1 -1
- package/dist/pricing/index.d.ts.map +1 -1
- package/dist/pricing/index.js +5 -2
- package/dist/pricing/index.js.map +1 -1
- package/dist/pricing/tax-display.js +1 -1
- package/dist/pricing/tax-display.js.map +1 -1
- package/dist/pricing/tiers.d.ts +3 -2
- package/dist/pricing/tiers.d.ts.map +1 -1
- package/dist/pricing/tiers.js.map +1 -1
- package/dist/pricing/validation.d.ts +152 -13
- package/dist/pricing/validation.d.ts.map +1 -1
- package/dist/pricing/validation.js +167 -13
- package/dist/pricing/validation.js.map +1 -1
- package/dist/redirects/index.d.ts.map +1 -1
- package/dist/redirects/index.js +2 -1
- package/dist/redirects/index.js.map +1 -1
- package/dist/redirects/store.d.ts.map +1 -1
- package/dist/redirects/store.js +6 -2
- package/dist/redirects/store.js.map +1 -1
- package/dist/redirects/types.d.ts +5 -2
- package/dist/redirects/types.d.ts.map +1 -1
- package/dist/revalidation/event-plan.d.ts +55 -4
- package/dist/revalidation/event-plan.d.ts.map +1 -1
- package/dist/revalidation/event-plan.js +115 -8
- package/dist/revalidation/event-plan.js.map +1 -1
- package/dist/revalidation/event-verify.d.ts +8 -37
- package/dist/revalidation/event-verify.d.ts.map +1 -1
- package/dist/revalidation/event-verify.js +7 -97
- package/dist/revalidation/event-verify.js.map +1 -1
- package/dist/revalidation/types.d.ts.map +1 -1
- package/dist/revalidation/url-context.d.ts +17 -0
- package/dist/revalidation/url-context.d.ts.map +1 -1
- package/dist/revalidation/url-context.js +35 -2
- package/dist/revalidation/url-context.js.map +1 -1
- package/dist/seo/ai.d.ts.map +1 -1
- package/dist/seo/ai.js.map +1 -1
- package/dist/seo/artifacts.d.ts +86 -4
- package/dist/seo/artifacts.d.ts.map +1 -1
- package/dist/seo/artifacts.js +115 -16
- package/dist/seo/artifacts.js.map +1 -1
- package/dist/seo/availability.d.ts +95 -0
- package/dist/seo/availability.d.ts.map +1 -0
- package/dist/seo/availability.js +89 -0
- package/dist/seo/availability.js.map +1 -0
- package/dist/seo/index.d.ts +4 -0
- package/dist/seo/index.d.ts.map +1 -1
- package/dist/seo/index.js +6 -1
- package/dist/seo/index.js.map +1 -1
- package/dist/seo/json-ld.d.ts.map +1 -1
- package/dist/seo/json-ld.js +34 -1
- package/dist/seo/json-ld.js.map +1 -1
- package/dist/seo/meta-tags.d.ts +40 -1
- package/dist/seo/meta-tags.d.ts.map +1 -1
- package/dist/seo/meta-tags.js +8 -1
- package/dist/seo/meta-tags.js.map +1 -1
- package/dist/seo/metadata-parser.d.ts.map +1 -1
- package/dist/seo/metadata-parser.js.map +1 -1
- package/dist/seo/metadata-types.d.ts.map +1 -1
- package/dist/seo/robots.d.ts.map +1 -1
- package/dist/seo/robots.js.map +1 -1
- package/dist/seo/types.d.ts +20 -2
- package/dist/seo/types.d.ts.map +1 -1
- package/dist/seo/url-builder.d.ts +5 -3
- package/dist/seo/url-builder.d.ts.map +1 -1
- package/dist/seo/url-builder.js +3 -1
- package/dist/seo/url-builder.js.map +1 -1
- package/dist/types.d.ts +1306 -2429
- package/dist/types.d.ts.map +1 -1
- package/dist/web/artifact-responder.d.ts +69 -0
- package/dist/web/artifact-responder.d.ts.map +1 -0
- package/dist/web/artifact-responder.js +90 -0
- package/dist/web/artifact-responder.js.map +1 -0
- package/dist/web/feed-responder.d.ts +72 -0
- package/dist/web/feed-responder.d.ts.map +1 -0
- package/dist/web/feed-responder.js +81 -0
- package/dist/web/feed-responder.js.map +1 -0
- package/dist/web/index.d.ts +23 -0
- package/dist/web/index.d.ts.map +1 -0
- package/dist/web/index.js +19 -0
- package/dist/web/index.js.map +1 -0
- package/dist/web/redirect-middleware.d.ts +76 -0
- package/dist/web/redirect-middleware.d.ts.map +1 -0
- package/dist/web/redirect-middleware.js +94 -0
- package/dist/web/redirect-middleware.js.map +1 -0
- package/dist/web/respond.d.ts +20 -0
- package/dist/web/respond.d.ts.map +1 -0
- package/dist/web/respond.js +52 -0
- package/dist/web/respond.js.map +1 -0
- package/package.json +19 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/commerce/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,MAAM,UAAU,uBAAuB,CAAC,IAAgB;IACtD,OAAO;QACL;;;;;;;;;;;;;;;;;WAiBG;QACH,KAAK,CAAC,eAAe,CAAC,OAAwB;YAC5C,OAAO,IAAI,CAAC,UAAU,CAA8B,eAAe,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC3F,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/commerce/cart.d.ts
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import type { HttpClient } from '../core/http.js';
|
|
2
|
-
import type
|
|
2
|
+
import type * as Shop from '../generated/shop.js';
|
|
3
3
|
export declare function createCartMethods(http: HttpClient): {
|
|
4
|
-
getActiveOrder(): Promise<
|
|
5
|
-
addToCart(variantId: string, quantity: number): Promise<
|
|
6
|
-
addItemsToCart(items:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
clearCart(): Promise<Order>;
|
|
13
|
-
applyCouponCode(code: string): Promise<Order>;
|
|
14
|
-
removeCouponCode(code: string): Promise<Order>;
|
|
4
|
+
getActiveOrder(): Promise<Shop.OrderFragment | null>;
|
|
5
|
+
addToCart(variantId: string, quantity: number): Promise<Shop.OrderFragment>;
|
|
6
|
+
addItemsToCart(items: Shop.AddItemInput[]): Promise<Shop.OrderFragment>;
|
|
7
|
+
updateCartLine(lineId: string, quantity: number): Promise<Shop.OrderFragment>;
|
|
8
|
+
removeFromCart(lineId: string): Promise<Shop.OrderFragment>;
|
|
9
|
+
clearCart(): Promise<Shop.OrderFragment>;
|
|
10
|
+
applyCouponCode(code: string): Promise<Shop.OrderFragment>;
|
|
11
|
+
removeCouponCode(code: string): Promise<Shop.OrderFragment | null>;
|
|
15
12
|
};
|
|
16
13
|
//# sourceMappingURL=cart.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cart.d.ts","sourceRoot":"","sources":["../../src/commerce/cart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"cart.d.ts","sourceRoot":"","sources":["../../src/commerce/cart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,KAAK,IAAI,MAAM,sBAAsB,CAAC;AAsClD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU;sBAEtB,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;yBAK/B,MAAM,YAAY,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;0BAQrD,IAAI,CAAC,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;2BAiDhD,MAAM,YAAY,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;2BAQtD,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;iBAO9C,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;0BAKlB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;2BAKnC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;EAO3E"}
|
package/dist/commerce/cart.js
CHANGED
|
@@ -35,7 +35,12 @@ export function createCartMethods(http) {
|
|
|
35
35
|
return unwrapOrderResult(data, 'addItemToOrder');
|
|
36
36
|
},
|
|
37
37
|
async addItemsToCart(items) {
|
|
38
|
-
|
|
38
|
+
// `errorResults` is one entry per FAILING input, so it is NOT positionally
|
|
39
|
+
// aligned with `inputs` — an entry's `inputIndex` is the only thing that
|
|
40
|
+
// says which item the shopper needs to fix.
|
|
41
|
+
const data = await http.graphql(ADD_ITEMS_TO_CART, {
|
|
42
|
+
inputs: items,
|
|
43
|
+
});
|
|
39
44
|
const result = data.addItemsToOrder;
|
|
40
45
|
if (!result) {
|
|
41
46
|
throw new MutationError('UNKNOWN_ERROR', 'No result from addItemsToOrder');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cart.js","sourceRoot":"","sources":["../../src/commerce/cart.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"cart.js","sourceRoot":"","sources":["../../src/commerce/cart.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,53 @@
|
|
|
1
1
|
import type { HttpClient, RequestOptions } from '../core/http.js';
|
|
2
|
-
import type
|
|
2
|
+
import type * as Shop from '../generated/shop.js';
|
|
3
|
+
import type { PickupLocation, StoreContext } from '../types.js';
|
|
4
|
+
import { type ResultData } from './placement-error.js';
|
|
5
|
+
/**
|
|
6
|
+
* Order custom fields the Shop API shows but never lets a shopper write, and
|
|
7
|
+
* where each one IS written. The engine refuses them on its own (they are not
|
|
8
|
+
* members of `UpdateOrderCustomFieldsInput`); naming the owner turns a GraphQL
|
|
9
|
+
* variable-coercion error into one that says what to call instead. Every key
|
|
10
|
+
* must stay a READ-ONLY field — `order-custom-fields.spec.ts` checks it against
|
|
11
|
+
* the schema snapshot, so this can never refuse a field the engine accepts.
|
|
12
|
+
*/
|
|
13
|
+
export declare const READ_ONLY_ORDER_CUSTOM_FIELDS: Readonly<Record<string, string>>;
|
|
14
|
+
/**
|
|
15
|
+
* What `setOrderCustomFields` resolves to: the order plus the fields a shopper
|
|
16
|
+
* can write, as the engine stored them — the generated `Order` member of the
|
|
17
|
+
* mutation's result (`OrderFragment` with `customFields` selected as
|
|
18
|
+
* `OrderWritableCustomFieldsFragment`).
|
|
19
|
+
*/
|
|
20
|
+
export type OrderWithWritableCustomFields = ResultData<Shop.SetOrderCustomFieldsMutation['setOrderCustomFields']>;
|
|
21
|
+
/**
|
|
22
|
+
* Unwrap a `Result`-union mutation, throwing the ErrorResult members.
|
|
23
|
+
*
|
|
24
|
+
* Every refusal a checkout mutation can return is hoisted by
|
|
25
|
+
* `toMutationError`: `error.code` names WHY (`ORDER_MINIMUM_AMOUNT_NOT_MET`,
|
|
26
|
+
* `PAYMENT_TERMS_UNAVAILABLE`, …) and `error.message` is already the best
|
|
27
|
+
* shopper-safe prose available — `placement.customerMessage` when the engine
|
|
28
|
+
* supplied one, else a vetted operator reason (`transitionError` /
|
|
29
|
+
* `interceptorError`), else the ErrorResult's generic template.
|
|
30
|
+
* `paymentErrorMessage` is deliberately NOT part of that walk — it can carry
|
|
31
|
+
* acquirer/ERP detail a shopper must never read — so a declined payment
|
|
32
|
+
* without `placement` keeps the generic message; the raw text stays on
|
|
33
|
+
* `error.fields.paymentErrorMessage` (see `placement-error.ts`).
|
|
34
|
+
*/
|
|
35
|
+
export declare function unwrapResult<D, K extends keyof D & string>(data: D, field: K): ResultData<D[K]>;
|
|
36
|
+
/**
|
|
37
|
+
* How long a keyed payment call (`addPayment`, `payDeposit`,
|
|
38
|
+
* `createDepositPaymentIntent`) waits out `IDEMPOTENCY_IN_PROGRESS` and
|
|
39
|
+
* `ORDER_BUSY` before giving up.
|
|
40
|
+
*
|
|
41
|
+
* Longer than one request's own 15-second timeout: the answer means the FIRST
|
|
42
|
+
* attempt under this key is still running on the engine — a double click, or
|
|
43
|
+
* a repeat of a call that timed out on this side while the engine kept going.
|
|
44
|
+
*/
|
|
45
|
+
export declare const ADD_PAYMENT_IN_PROGRESS_WAIT_MS = 20000;
|
|
46
|
+
type KeyedRequestOptions = RequestOptions & {
|
|
47
|
+
idempotencyKey?: string;
|
|
48
|
+
};
|
|
3
49
|
export declare function createCheckoutMethods(http: HttpClient, ctx?: StoreContext): {
|
|
4
|
-
setCustomerForOrder(input:
|
|
50
|
+
setCustomerForOrder(input: Shop.CreateCustomerInput): Promise<Shop.OrderFragment>;
|
|
5
51
|
/**
|
|
6
52
|
* Set the order's delivery address.
|
|
7
53
|
*
|
|
@@ -12,19 +58,37 @@ export declare function createCheckoutMethods(http: HttpClient, ctx?: StoreConte
|
|
|
12
58
|
* changing the identity the cache is stamped with. The next
|
|
13
59
|
* `pricing.getTaxDisplayMode()` therefore re-resolves.
|
|
14
60
|
*/
|
|
15
|
-
setShippingAddress(input:
|
|
16
|
-
setBillingAddress(input:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
61
|
+
setShippingAddress(input: Shop.CreateAddressInput): Promise<Shop.OrderFragment>;
|
|
62
|
+
setBillingAddress(input: Shop.CreateAddressInput): Promise<Shop.OrderFragment>;
|
|
63
|
+
/**
|
|
64
|
+
* See {@link CommerceModule.unsetShippingAddress}. Drops the cached tax
|
|
65
|
+
* display mode for the reason `setShippingAddress` does: with no address
|
|
66
|
+
* the order falls back to the channel's default tax zone.
|
|
67
|
+
*/
|
|
68
|
+
unsetShippingAddress(options?: RequestOptions): Promise<Shop.OrderFragment>;
|
|
69
|
+
/** See {@link CommerceModule.unsetBillingAddress}. */
|
|
70
|
+
unsetBillingAddress(options?: RequestOptions): Promise<Shop.OrderFragment>;
|
|
71
|
+
/**
|
|
72
|
+
* See {@link CommerceModule.setOrderCustomFields}. The read-only fields are
|
|
73
|
+
* refused here only to name their owner; the engine is the authority on
|
|
74
|
+
* what is writable and refuses them anyway.
|
|
75
|
+
*/
|
|
76
|
+
setOrderCustomFields(fields: Shop.UpdateOrderCustomFieldsInput, options?: RequestOptions): Promise<OrderWithWritableCustomFields>;
|
|
77
|
+
/** See {@link CommerceModule.setOrderCurrency}. */
|
|
78
|
+
setOrderCurrency(currencyCode: Shop.CurrencyCode, options?: RequestOptions): Promise<Shop.OrderFragment>;
|
|
79
|
+
getEligibleShippingMethods(): Promise<Shop.ShippingMethodsQuery["eligibleShippingMethods"]>;
|
|
80
|
+
getEligibleShippingRates(): Promise<Shop.ShippingRatesQuery["eligibleShippingRates"]>;
|
|
81
|
+
setShippingRate(shippingMethodId: string, rateCode?: string | null): Promise<Shop.OrderFragment>;
|
|
82
|
+
getDeliveryTerms(options?: RequestOptions): Promise<Shop.MyDeliveryTermsQuery["myDeliveryTerms"]>;
|
|
83
|
+
setShippingMethod(ids: string[]): Promise<Shop.OrderFragment>;
|
|
84
|
+
applyPreferredShippingMethod(): Promise<Shop.OrderFragment>;
|
|
85
|
+
getEligiblePaymentMethods(): Promise<Shop.PaymentMethodsQuery["eligiblePaymentMethods"]>;
|
|
22
86
|
/**
|
|
23
87
|
* Order minimums in effect on the active channel — for display and cart
|
|
24
88
|
* pre-validation (e.g. "Minimum order €375"). Checkout enforces them
|
|
25
89
|
* server-side at the ArrangingPayment transition regardless.
|
|
26
90
|
*/
|
|
27
|
-
getOrderConstraints(): Promise<
|
|
91
|
+
getOrderConstraints(): Promise<Shop.ActiveChannelOrderConstraintsQuery["activeChannelOrderConstraints"]>;
|
|
28
92
|
/**
|
|
29
93
|
* Tell the engine how the buyer intends to pay, and get the re-priced order
|
|
30
94
|
* back.
|
|
@@ -59,15 +123,30 @@ export declare function createCheckoutMethods(http: HttpClient, ctx?: StoreConte
|
|
|
59
123
|
*
|
|
60
124
|
* @param intent - `PAY_NOW` or `PAY_ON_ACCOUNT`.
|
|
61
125
|
*/
|
|
62
|
-
setPaymentIntent(intent: OrderPaymentIntent): Promise<
|
|
63
|
-
transitionToArrangingPayment(): Promise<
|
|
64
|
-
|
|
126
|
+
setPaymentIntent(intent: Shop.OrderPaymentIntent): Promise<ResultData<Shop.SetOrderPaymentIntentMutation["setOrderPaymentIntent"]>>;
|
|
127
|
+
transitionToArrangingPayment(): Promise<Shop.OrderFragment>;
|
|
128
|
+
/**
|
|
129
|
+
* The contract is on `CommerceModule.addPayment` (`types.ts`). Keyed by
|
|
130
|
+
* {@link underIdempotencyKey}. With `amount` the call is a DEPOSIT and goes
|
|
131
|
+
* to `payDeposit` under the same key handling, answering the held order —
|
|
132
|
+
* the same type a full payment answers.
|
|
133
|
+
*
|
|
134
|
+
* Routed on the PRESENCE of `amount`, never on its size: the SDK cannot see
|
|
135
|
+
* what the order still bills without a second read, so the engine judges
|
|
136
|
+
* (an amount equal to the balance is `AMOUNT_NOT_A_DEPOSIT`).
|
|
137
|
+
*/
|
|
138
|
+
addPayment(input: Shop.PaymentInput, options?: KeyedRequestOptions & {
|
|
139
|
+
amount?: number;
|
|
140
|
+
}): Promise<ResultData<Shop.AddPaymentMutation["addPaymentToOrder"]>>;
|
|
141
|
+
payDeposit: (input: Shop.PayDepositInput, options?: KeyedRequestOptions) => Promise<Shop.PayDepositMutation["payDeposit"]>;
|
|
142
|
+
/** See {@link CommerceModule.createDepositPaymentIntent}. Keyed as `payDeposit`. */
|
|
143
|
+
createDepositPaymentIntent(input: Shop.DepositPaymentIntentInput, options?: KeyedRequestOptions): Promise<Shop.CreateDepositPaymentIntentMutation["createDepositPaymentIntent"]>;
|
|
65
144
|
/**
|
|
66
145
|
* Search for pickup locations near a postcode for a given carrier.
|
|
67
146
|
* Carrier-agnostic — the backend dispatches to the configured provider
|
|
68
147
|
* (currently MyParcel; future Sendcloud/Hendriks).
|
|
69
148
|
*/
|
|
70
|
-
findPickupLocations(input: PickupLocationSearchInput): Promise<PickupLocation[]>;
|
|
149
|
+
findPickupLocations(input: Shop.PickupLocationSearchInput): Promise<PickupLocation[]>;
|
|
71
150
|
/**
|
|
72
151
|
* Persist the customer's chosen pickup location onto the active order.
|
|
73
152
|
* The backend re-validates the submitted location against the provider's
|
|
@@ -78,11 +157,12 @@ export declare function createCheckoutMethods(http: HttpClient, ctx?: StoreConte
|
|
|
78
157
|
* builds the location object (e.g. cached from an earlier session) gets
|
|
79
158
|
* a clear `StorefrontError` instead of an opaque `MutationError`.
|
|
80
159
|
*/
|
|
81
|
-
selectPickupLocation(location: PickupLocation): Promise<
|
|
160
|
+
selectPickupLocation(location: PickupLocation): Promise<ResultData<Shop.SetActiveOrderPickupLocationMutation["setActiveOrderPickupLocation"]>>;
|
|
82
161
|
/**
|
|
83
162
|
* Read the pickup location currently stored on the active order. Returns
|
|
84
163
|
* `null` when no selection has been made or there is no active order.
|
|
85
164
|
*/
|
|
86
165
|
getActivePickupLocation(): Promise<PickupLocation | null>;
|
|
87
166
|
};
|
|
167
|
+
export {};
|
|
88
168
|
//# sourceMappingURL=checkout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/commerce/checkout.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/commerce/checkout.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,23 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { idempotencyKey } from '@sixtyninecommerce/core';
|
|
2
|
+
import { CURRENCY_CODE_PATTERN, orderCurrencyRefusal } from '../core/currency.js';
|
|
3
|
+
import { MutationError, StorefrontError } from '../errors.js';
|
|
4
|
+
import { invalidArgument, isPlainObject } from './arguments.js';
|
|
2
5
|
import { normalizePickupLocationInput, parseOptionalPickupLocation, parsePickupLocations, } from './pickup-location-parser.js';
|
|
3
6
|
import { toMutationError } from './placement-error.js';
|
|
4
|
-
import { ACTIVE_CHANNEL_ORDER_CONSTRAINTS, ACTIVE_ORDER_PICKUP_LOCATION, ADD_PAYMENT, APPLY_PREFERRED_SHIPPING_METHOD, ELIGIBLE_PAYMENT_METHODS, ELIGIBLE_SHIPPING_METHODS, MY_DELIVERY_TERMS, PICKUP_LOCATIONS, SET_ACTIVE_ORDER_PICKUP_LOCATION, SET_BILLING_ADDRESS, SET_CUSTOMER, SET_PAYMENT_INTENT, SET_SHIPPING_ADDRESS, SET_SHIPPING_METHOD, TRANSITION_TO_ARRANGING_PAYMENT, } from './queries.js';
|
|
7
|
+
import { ACTIVE_CHANNEL_ORDER_CONSTRAINTS, ACTIVE_ORDER_PICKUP_LOCATION, ADD_PAYMENT, APPLY_PREFERRED_SHIPPING_METHOD, CREATE_DEPOSIT_PAYMENT_INTENT_MUTATION, ELIGIBLE_PAYMENT_METHODS, ELIGIBLE_SHIPPING_METHODS, ELIGIBLE_SHIPPING_RATES, MY_DELIVERY_TERMS, PAY_DEPOSIT_MUTATION, PICKUP_LOCATIONS, SET_ACTIVE_ORDER_PICKUP_LOCATION, SET_BILLING_ADDRESS, SET_CUSTOMER, SET_ORDER_CURRENCY, SET_ORDER_CUSTOM_FIELDS, SET_PAYMENT_INTENT, SET_SHIPPING_ADDRESS, SET_SHIPPING_METHOD, SET_SHIPPING_RATE, TRANSITION_TO_ARRANGING_PAYMENT, UNSET_BILLING_ADDRESS, UNSET_SHIPPING_ADDRESS, } from './queries.js';
|
|
8
|
+
/**
|
|
9
|
+
* Order custom fields the Shop API shows but never lets a shopper write, and
|
|
10
|
+
* where each one IS written. The engine refuses them on its own (they are not
|
|
11
|
+
* members of `UpdateOrderCustomFieldsInput`); naming the owner turns a GraphQL
|
|
12
|
+
* variable-coercion error into one that says what to call instead. Every key
|
|
13
|
+
* must stay a READ-ONLY field — `order-custom-fields.spec.ts` checks it against
|
|
14
|
+
* the schema snapshot, so this can never refuse a field the engine accepts.
|
|
15
|
+
*/
|
|
16
|
+
export const READ_ONLY_ORDER_CUSTOM_FIELDS = {
|
|
17
|
+
paymentIntent: 'call setPaymentIntent instead: it records the intent and re-prices the order in one call',
|
|
18
|
+
orderScope: "it is fixed when the order is created, from the client's orderScope (the x-order-scope header)",
|
|
19
|
+
chargedParcelCount: 'the store sets it when it charges shipping per parcel',
|
|
20
|
+
};
|
|
5
21
|
/**
|
|
6
22
|
* Unwrap a `Result`-union mutation, throwing the ErrorResult members.
|
|
7
23
|
*
|
|
@@ -16,7 +32,7 @@ import { ACTIVE_CHANNEL_ORDER_CONSTRAINTS, ACTIVE_ORDER_PICKUP_LOCATION, ADD_PAY
|
|
|
16
32
|
* without `placement` keeps the generic message; the raw text stays on
|
|
17
33
|
* `error.fields.paymentErrorMessage` (see `placement-error.ts`).
|
|
18
34
|
*/
|
|
19
|
-
function unwrapResult(data, field) {
|
|
35
|
+
export function unwrapResult(data, field) {
|
|
20
36
|
const result = data[field];
|
|
21
37
|
if (!result) {
|
|
22
38
|
throw new MutationError('UNKNOWN_ERROR', `No result from ${field}`);
|
|
@@ -26,7 +42,111 @@ function unwrapResult(data, field) {
|
|
|
26
42
|
}
|
|
27
43
|
return result;
|
|
28
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* How long a keyed payment call (`addPayment`, `payDeposit`,
|
|
47
|
+
* `createDepositPaymentIntent`) waits out `IDEMPOTENCY_IN_PROGRESS` and
|
|
48
|
+
* `ORDER_BUSY` before giving up.
|
|
49
|
+
*
|
|
50
|
+
* Longer than one request's own 15-second timeout: the answer means the FIRST
|
|
51
|
+
* attempt under this key is still running on the engine — a double click, or
|
|
52
|
+
* a repeat of a call that timed out on this side while the engine kept going.
|
|
53
|
+
*/
|
|
54
|
+
export const ADD_PAYMENT_IN_PROGRESS_WAIT_MS = 20_000;
|
|
55
|
+
/**
|
|
56
|
+
* The two answers a keyed call asks again after, under the SAME key. Both say
|
|
57
|
+
* that THIS request changed nothing:
|
|
58
|
+
*
|
|
59
|
+
* - `IDEMPOTENCY_IN_PROGRESS`: the first attempt under the key is still
|
|
60
|
+
* running. Asking again waits for it or replays it.
|
|
61
|
+
* - `ORDER_BUSY`: another change of the same cart was still being applied (the
|
|
62
|
+
* engine makes storefront requests on one cart take turns) and this request
|
|
63
|
+
* gave up waiting before it wrote anything. Asking again is the first run.
|
|
64
|
+
*/
|
|
65
|
+
const ASK_AGAIN_CODES = new Set(['IDEMPOTENCY_IN_PROGRESS', 'ORDER_BUSY']);
|
|
66
|
+
/** Pauses between asks, then the last one repeats. */
|
|
67
|
+
const IN_PROGRESS_BACKOFF_MS = [250, 500, 1_000, 2_000];
|
|
68
|
+
/** What the engine accepts in `Idempotency-Key`: 1–255 visible ASCII characters. */
|
|
69
|
+
const IDEMPOTENCY_KEY_PATTERN = /^[\x21-\x7e]{1,255}$/;
|
|
70
|
+
function wait(ms, signal) {
|
|
71
|
+
return new Promise((resolve) => {
|
|
72
|
+
if (signal?.aborted) {
|
|
73
|
+
resolve();
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const timer = setTimeout(done, ms);
|
|
77
|
+
function done() {
|
|
78
|
+
clearTimeout(timer);
|
|
79
|
+
signal?.removeEventListener('abort', done);
|
|
80
|
+
resolve();
|
|
81
|
+
}
|
|
82
|
+
signal?.addEventListener('abort', done, { once: true });
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
/** Stamp the key on whatever a keyed call throws, keeping one a caller already saw. */
|
|
86
|
+
function withKey(error, key) {
|
|
87
|
+
if (error instanceof StorefrontError && error.idempotencyKey === undefined) {
|
|
88
|
+
error.idempotencyKey = key;
|
|
89
|
+
}
|
|
90
|
+
return error;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Run one keyed Shop API call (W8-12): always under a key — the caller's, or a
|
|
94
|
+
* fresh UUIDv7 — refused before anything is sent when the engine would refuse
|
|
95
|
+
* it, with `IDEMPOTENCY_IN_PROGRESS` and `ORDER_BUSY` asked again under the
|
|
96
|
+
* SAME key and the key stamped on whatever is thrown.
|
|
97
|
+
*
|
|
98
|
+
* Only an engine that honours the key can answer either, and both mean this
|
|
99
|
+
* request changed nothing ({@link ASK_AGAIN_CODES}), so asking again can only
|
|
100
|
+
* wait, replay, or run the payment for the first time. These are the only two
|
|
101
|
+
* reasons the SDK repeats a payment, and it repeats nothing that carries no
|
|
102
|
+
* key: a cart mutation answered `ORDER_BUSY` is thrown to the caller.
|
|
103
|
+
* `send` makes the request itself, so each caller's `graphql<T>(DOCUMENT)`
|
|
104
|
+
* stays a typed call of a constant document (`graphql-call-types.spec.ts`).
|
|
105
|
+
*/
|
|
106
|
+
async function underIdempotencyKey(options, send) {
|
|
107
|
+
const key = options?.idempotencyKey ?? idempotencyKey();
|
|
108
|
+
if (!IDEMPOTENCY_KEY_PATTERN.test(key)) {
|
|
109
|
+
throw new StorefrontError('idempotencyKey must be 1 to 255 visible ASCII characters (no spaces).', 'vendure', undefined, 'IDEMPOTENCY_KEY_INVALID');
|
|
110
|
+
}
|
|
111
|
+
const signal = options?.signal;
|
|
112
|
+
const deadline = Date.now() + ADD_PAYMENT_IN_PROGRESS_WAIT_MS;
|
|
113
|
+
for (let attempt = 0;; attempt++) {
|
|
114
|
+
try {
|
|
115
|
+
return await send({ ...options, idempotencyKey: key });
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
const pause = IN_PROGRESS_BACKOFF_MS[Math.min(attempt, IN_PROGRESS_BACKOFF_MS.length - 1)] ?? 0;
|
|
119
|
+
const askAgain = error instanceof StorefrontError &&
|
|
120
|
+
error.code !== undefined &&
|
|
121
|
+
ASK_AGAIN_CODES.has(error.code);
|
|
122
|
+
if (!askAgain || signal?.aborted || Date.now() + pause > deadline) {
|
|
123
|
+
throw withKey(error, key);
|
|
124
|
+
}
|
|
125
|
+
await wait(pause, signal);
|
|
126
|
+
if (signal?.aborted)
|
|
127
|
+
throw withKey(error, key);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* A deposit amount that cannot even reach the engine: GraphQL `Int` holds whole
|
|
133
|
+
* minor units only. Zero and negative amounts are left to the engine, whose
|
|
134
|
+
* answer (`AMOUNT_NOT_POSITIVE`) is the code a storefront branches on.
|
|
135
|
+
*/
|
|
136
|
+
function requireWholeAmount(method, amount) {
|
|
137
|
+
if (typeof amount !== 'number' || !Number.isInteger(amount)) {
|
|
138
|
+
throw invalidArgument(`${method}: amount must be a whole number of minor units of the order's currency (e.g. 2500 for 25.00)`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
29
141
|
export function createCheckoutMethods(http, ctx) {
|
|
142
|
+
/** See {@link CommerceModule.payDeposit}. */
|
|
143
|
+
async function payDeposit(input, options) {
|
|
144
|
+
requireWholeAmount('payDeposit', input.amount);
|
|
145
|
+
return underIdempotencyKey(options, async (keyed) => {
|
|
146
|
+
const data = await http.graphql(PAY_DEPOSIT_MUTATION, { input }, keyed);
|
|
147
|
+
return data.payDeposit;
|
|
148
|
+
});
|
|
149
|
+
}
|
|
30
150
|
return {
|
|
31
151
|
async setCustomerForOrder(input) {
|
|
32
152
|
const data = await http.graphql(SET_CUSTOMER, { input });
|
|
@@ -57,10 +177,80 @@ export function createCheckoutMethods(http, ctx) {
|
|
|
57
177
|
});
|
|
58
178
|
return unwrapResult(data, 'setOrderBillingAddress');
|
|
59
179
|
},
|
|
180
|
+
/**
|
|
181
|
+
* See {@link CommerceModule.unsetShippingAddress}. Drops the cached tax
|
|
182
|
+
* display mode for the reason `setShippingAddress` does: with no address
|
|
183
|
+
* the order falls back to the channel's default tax zone.
|
|
184
|
+
*/
|
|
185
|
+
async unsetShippingAddress(options) {
|
|
186
|
+
const data = await http.graphql(UNSET_SHIPPING_ADDRESS, undefined, options);
|
|
187
|
+
if (ctx) {
|
|
188
|
+
ctx.taxDisplay = null;
|
|
189
|
+
}
|
|
190
|
+
return unwrapResult(data, 'unsetOrderShippingAddress');
|
|
191
|
+
},
|
|
192
|
+
/** See {@link CommerceModule.unsetBillingAddress}. */
|
|
193
|
+
async unsetBillingAddress(options) {
|
|
194
|
+
const data = await http.graphql(UNSET_BILLING_ADDRESS, undefined, options);
|
|
195
|
+
return unwrapResult(data, 'unsetOrderBillingAddress');
|
|
196
|
+
},
|
|
197
|
+
/**
|
|
198
|
+
* See {@link CommerceModule.setOrderCustomFields}. The read-only fields are
|
|
199
|
+
* refused here only to name their owner; the engine is the authority on
|
|
200
|
+
* what is writable and refuses them anyway.
|
|
201
|
+
*/
|
|
202
|
+
async setOrderCustomFields(fields, options) {
|
|
203
|
+
if (!isPlainObject(fields)) {
|
|
204
|
+
throw invalidArgument('setOrderCustomFields: fields must be an object of custom fields');
|
|
205
|
+
}
|
|
206
|
+
for (const name of Object.keys(fields)) {
|
|
207
|
+
const owner = READ_ONLY_ORDER_CUSTOM_FIELDS[name];
|
|
208
|
+
if (owner !== undefined) {
|
|
209
|
+
throw invalidArgument(`setOrderCustomFields: "${name}" is read-only on the Shop API — ${owner}`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
const data = await http.graphql(SET_ORDER_CUSTOM_FIELDS, { input: { customFields: fields } }, options);
|
|
213
|
+
return unwrapResult(data, 'setOrderCustomFields');
|
|
214
|
+
},
|
|
215
|
+
/** See {@link CommerceModule.setOrderCurrency}. */
|
|
216
|
+
async setOrderCurrency(currencyCode, options) {
|
|
217
|
+
if (typeof currencyCode !== 'string' || !CURRENCY_CODE_PATTERN.test(currencyCode)) {
|
|
218
|
+
throw invalidArgument(`setOrderCurrency: "${String(currencyCode)}" is not an ISO 4217 code (three upper-case letters, e.g. "EUR")`);
|
|
219
|
+
}
|
|
220
|
+
let data;
|
|
221
|
+
try {
|
|
222
|
+
data = await http.graphql(SET_ORDER_CURRENCY, { currencyCode }, options);
|
|
223
|
+
}
|
|
224
|
+
catch (error) {
|
|
225
|
+
throw ((error instanceof StorefrontError && orderCurrencyRefusal(error, currencyCode)) || error);
|
|
226
|
+
}
|
|
227
|
+
const order = unwrapResult(data, 'setCurrencyCodeForOrder');
|
|
228
|
+
// The engine re-prices an order into the REQUEST's currency on every
|
|
229
|
+
// change (`applyPriceAdjustments`), and a request names one only through
|
|
230
|
+
// `?currencyCode=`. Without this the next addToCart put the order back in
|
|
231
|
+
// the channel default. The session follows the order's own answer.
|
|
232
|
+
if (ctx) {
|
|
233
|
+
const chosen = typeof order.currencyCode === 'string' ? order.currencyCode : currencyCode;
|
|
234
|
+
ctx.sessionCurrencyCode = chosen;
|
|
235
|
+
ctx.currencyCode = chosen;
|
|
236
|
+
}
|
|
237
|
+
return order;
|
|
238
|
+
},
|
|
60
239
|
async getEligibleShippingMethods() {
|
|
61
240
|
const data = await http.graphql(ELIGIBLE_SHIPPING_METHODS);
|
|
62
241
|
return data.eligibleShippingMethods;
|
|
63
242
|
},
|
|
243
|
+
async getEligibleShippingRates() {
|
|
244
|
+
const data = await http.graphql(ELIGIBLE_SHIPPING_RATES);
|
|
245
|
+
return data.eligibleShippingRates;
|
|
246
|
+
},
|
|
247
|
+
async setShippingRate(shippingMethodId, rateCode) {
|
|
248
|
+
const data = await http.graphql(SET_SHIPPING_RATE, {
|
|
249
|
+
shippingMethodId,
|
|
250
|
+
rateCode: rateCode ?? null,
|
|
251
|
+
});
|
|
252
|
+
return unwrapResult(data, 'setOrderShippingRate');
|
|
253
|
+
},
|
|
64
254
|
async getDeliveryTerms(options) {
|
|
65
255
|
const data = await http.graphql(MY_DELIVERY_TERMS, undefined, options);
|
|
66
256
|
return data.myDeliveryTerms;
|
|
@@ -123,16 +313,48 @@ export function createCheckoutMethods(http, ctx) {
|
|
|
123
313
|
* @param intent - `PAY_NOW` or `PAY_ON_ACCOUNT`.
|
|
124
314
|
*/
|
|
125
315
|
async setPaymentIntent(intent) {
|
|
126
|
-
const data = await http.graphql(SET_PAYMENT_INTENT, {
|
|
316
|
+
const data = await http.graphql(SET_PAYMENT_INTENT, {
|
|
317
|
+
intent,
|
|
318
|
+
});
|
|
127
319
|
return unwrapResult(data, 'setOrderPaymentIntent');
|
|
128
320
|
},
|
|
129
321
|
async transitionToArrangingPayment() {
|
|
130
322
|
const data = await http.graphql(TRANSITION_TO_ARRANGING_PAYMENT);
|
|
131
323
|
return unwrapResult(data, 'transitionOrderToState');
|
|
132
324
|
},
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
325
|
+
/**
|
|
326
|
+
* The contract is on `CommerceModule.addPayment` (`types.ts`). Keyed by
|
|
327
|
+
* {@link underIdempotencyKey}. With `amount` the call is a DEPOSIT and goes
|
|
328
|
+
* to `payDeposit` under the same key handling, answering the held order —
|
|
329
|
+
* the same type a full payment answers.
|
|
330
|
+
*
|
|
331
|
+
* Routed on the PRESENCE of `amount`, never on its size: the SDK cannot see
|
|
332
|
+
* what the order still bills without a second read, so the engine judges
|
|
333
|
+
* (an amount equal to the balance is `AMOUNT_NOT_A_DEPOSIT`).
|
|
334
|
+
*/
|
|
335
|
+
async addPayment(input, options) {
|
|
336
|
+
// `!== undefined`, not `typeof === 'number'`: a `null` from untyped code is
|
|
337
|
+
// refused below rather than read as "pay in full", which takes MORE money
|
|
338
|
+
// than a caller who meant a deposit intended.
|
|
339
|
+
if (options?.amount !== undefined) {
|
|
340
|
+
const { amount, ...rest } = options;
|
|
341
|
+
requireWholeAmount('addPayment', amount);
|
|
342
|
+
const deposit = await payDeposit({ method: input.method, amount, metadata: input.metadata }, rest);
|
|
343
|
+
return deposit.order;
|
|
344
|
+
}
|
|
345
|
+
return underIdempotencyKey(options, async (keyed) => {
|
|
346
|
+
const data = await http.graphql(ADD_PAYMENT, { input }, keyed);
|
|
347
|
+
return unwrapResult(data, 'addPaymentToOrder');
|
|
348
|
+
});
|
|
349
|
+
},
|
|
350
|
+
payDeposit,
|
|
351
|
+
/** See {@link CommerceModule.createDepositPaymentIntent}. Keyed as `payDeposit`. */
|
|
352
|
+
async createDepositPaymentIntent(input, options) {
|
|
353
|
+
requireWholeAmount('createDepositPaymentIntent', input.amount);
|
|
354
|
+
return underIdempotencyKey(options, async (keyed) => {
|
|
355
|
+
const data = await http.graphql(CREATE_DEPOSIT_PAYMENT_INTENT_MUTATION, { input }, keyed);
|
|
356
|
+
return data.createDepositPaymentIntent;
|
|
357
|
+
});
|
|
136
358
|
},
|
|
137
359
|
// --- Pickup locations (carrier-agnostic) ---
|
|
138
360
|
/**
|
|
@@ -158,9 +380,7 @@ export function createCheckoutMethods(http, ctx) {
|
|
|
158
380
|
*/
|
|
159
381
|
async selectPickupLocation(location) {
|
|
160
382
|
const normalized = normalizePickupLocationInput(location);
|
|
161
|
-
const data = await http.graphql(SET_ACTIVE_ORDER_PICKUP_LOCATION, {
|
|
162
|
-
location: normalized,
|
|
163
|
-
});
|
|
383
|
+
const data = await http.graphql(SET_ACTIVE_ORDER_PICKUP_LOCATION, { location: normalized });
|
|
164
384
|
return unwrapResult(data, 'setActiveOrderPickupLocation');
|
|
165
385
|
},
|
|
166
386
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/commerce/checkout.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/commerce/checkout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAElF,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG9D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAmB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EACL,gCAAgC,EAChC,4BAA4B,EAC5B,WAAW,EACX,+BAA+B,EAC/B,sCAAsC,EACtC,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,gCAAgC,EAChC,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,+BAA+B,EAC/B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAEtB;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAqC;IAC7E,aAAa,EACX,0FAA0F;IAC5F,UAAU,EACR,gGAAgG;IAClG,kBAAkB,EAAE,uDAAuD;CAC5E,CAAC;AAYF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,YAAY,CAAgC,IAAO,EAAE,KAAQ;IAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAA+C,CAAC;IACzE,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,eAAe,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,MAA0B,CAAC;AACpC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CAAC;AAEtD;;;;;;;;;GASG;AACH,MAAM,eAAe,GAAwB,IAAI,GAAG,CAAC,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC,CAAC;AAEhG,sDAAsD;AACtD,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AAEjE,oFAAoF;AACpF,MAAM,uBAAuB,GAAG,sBAAsB,CAAC;AAEvD,SAAS,IAAI,CAAC,EAAU,EAAE,MAA+B;IACvD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnC,SAAS,IAAI;YACX,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC3C,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,uFAAuF;AACvF,SAAS,OAAO,CAAC,KAAc,EAAE,GAAW;IAC1C,IAAI,KAAK,YAAY,eAAe,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QAC3E,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAID;;;;;;;;;;;;;GAaG;AACH,KAAK,UAAU,mBAAmB,CAChC,OAAwC,EACxC,IAA2C;IAE3C,MAAM,GAAG,GAAG,OAAO,EAAE,cAAc,IAAI,cAAc,EAAE,CAAC;IACxD,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,eAAe,CACvB,uEAAuE,EACvE,SAAS,EACT,SAAS,EACT,yBAAyB,CAC1B,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;IAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,+BAA+B,CAAC;IAC9D,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,GACT,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,sBAAsB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACpF,MAAM,QAAQ,GACZ,KAAK,YAAY,eAAe;gBAChC,KAAK,CAAC,IAAI,KAAK,SAAS;gBACxB,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,QAAQ,IAAI,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,QAAQ,EAAE,CAAC;gBAClE,MAAM,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC5B,CAAC;YACD,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC1B,IAAI,MAAM,EAAE,OAAO;gBAAE,MAAM,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,MAAc,EAAE,MAAe;IACzD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,MAAM,eAAe,CACnB,GAAG,MAAM,8FAA8F,CACxG,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAgB,EAAE,GAAkB;IACxE,6CAA6C;IAC7C,KAAK,UAAU,UAAU,CACvB,KAA2B,EAC3B,OAA6B;QAE7B,kBAAkB,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAClD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,oBAAoB,EACpB,EAAE,KAAK,EAAE,EACT,KAAK,CACN,CAAC;YACF,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,KAAK,CAAC,mBAAmB,CAAC,KAA+B;YACvD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA2B,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACnF,OAAO,YAAY,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QACnD,CAAC;QAED;;;;;;;;;WASG;QACH,KAAK,CAAC,kBAAkB,CAAC,KAA8B;YACrD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAkC,oBAAoB,EAAE;gBACrF,KAAK;aACN,CAAC,CAAC;YACH,IAAI,GAAG,EAAE,CAAC;gBACR,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;YACxB,CAAC;YACD,OAAO,YAAY,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;QACvD,CAAC;QAED,KAAK,CAAC,iBAAiB,CAAC,KAA8B;YACpD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAiC,mBAAmB,EAAE;gBACnF,KAAK;aACN,CAAC,CAAC;YACH,OAAO,YAAY,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC;QACtD,CAAC;QAED;;;;WAIG;QACH,KAAK,CAAC,oBAAoB,CAAC,OAAwB;YACjD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,sBAAsB,EACtB,SAAS,EACT,OAAO,CACR,CAAC;YACF,IAAI,GAAG,EAAE,CAAC;gBACR,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;YACxB,CAAC;YACD,OAAO,YAAY,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAC;QACzD,CAAC;QAED,sDAAsD;QACtD,KAAK,CAAC,mBAAmB,CAAC,OAAwB;YAChD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,qBAAqB,EACrB,SAAS,EACT,OAAO,CACR,CAAC;YACF,OAAO,YAAY,CAAC,IAAI,EAAE,0BAA0B,CAAC,CAAC;QACxD,CAAC;QAED;;;;WAIG;QACH,KAAK,CAAC,oBAAoB,CACxB,MAAyC,EACzC,OAAwB;YAExB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,MAAM,eAAe,CAAC,iEAAiE,CAAC,CAAC;YAC3F,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;gBAClD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,MAAM,eAAe,CACnB,0BAA0B,IAAI,oCAAoC,KAAK,EAAE,CAC1E,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,uBAAuB,EACvB,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EACnC,OAAO,CACR,CAAC;YACF,OAAO,YAAY,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;QACpD,CAAC;QAED,mDAAmD;QACnD,KAAK,CAAC,gBAAgB,CACpB,YAA+B,EAC/B,OAAwB;YAExB,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBAClF,MAAM,eAAe,CACnB,sBAAsB,MAAM,CAAC,YAAY,CAAC,kEAAkE,CAC7G,CAAC;YACJ,CAAC;YACD,IAAI,IAAmC,CAAC;YACxC,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CACvB,kBAAkB,EAClB,EAAE,YAAY,EAAE,EAChB,OAAO,CACR,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CACJ,CAAC,KAAK,YAAY,eAAe,IAAI,oBAAoB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,IAAI,KAAK,CACzF,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;YAC5D,qEAAqE;YACrE,yEAAyE;YACzE,0EAA0E;YAC1E,mEAAmE;YACnE,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;gBAC1F,GAAG,CAAC,mBAAmB,GAAG,MAAM,CAAC;gBACjC,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC;YAC5B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,CAAC,0BAA0B;YAG9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA4B,yBAAyB,CAAC,CAAC;YACtF,OAAO,IAAI,CAAC,uBAAuB,CAAC;QACtC,CAAC;QAED,KAAK,CAAC,wBAAwB;YAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,uBAAuB,CAAC,CAAC;YAClF,OAAO,IAAI,CAAC,qBAAqB,CAAC;QACpC,CAAC;QAED,KAAK,CAAC,eAAe,CACnB,gBAAwB,EACxB,QAAwB;YAExB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA+B,iBAAiB,EAAE;gBAC/E,gBAAgB;gBAChB,QAAQ,EAAE,QAAQ,IAAI,IAAI;aAC3B,CAAC,CAAC;YACH,OAAO,YAAY,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;QACpD,CAAC;QAED,KAAK,CAAC,gBAAgB,CACpB,OAAwB;YAExB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,iBAAiB,EACjB,SAAS,EACT,OAAO,CACR,CAAC;YACF,OAAO,IAAI,CAAC,eAAe,CAAC;QAC9B,CAAC;QAED,KAAK,CAAC,iBAAiB,CAAC,GAAa;YACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAiC,mBAAmB,EAAE;gBACnF,GAAG;aACJ,CAAC,CAAC;YACH,OAAO,YAAY,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAC;QACzD,CAAC;QAED,KAAK,CAAC,4BAA4B;YAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,+BAA+B,CAChC,CAAC;YACF,OAAO,YAAY,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAC;QAC5D,CAAC;QAED,KAAK,CAAC,yBAAyB;YAC7B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA2B,wBAAwB,CAAC,CAAC;YACpF,OAAO,IAAI,CAAC,sBAAsB,CAAC;QACrC,CAAC;QAED;;;;WAIG;QACH,KAAK,CAAC,mBAAmB;YAGvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,gCAAgC,CACjC,CAAC;YACF,OAAO,IAAI,CAAC,6BAA6B,CAAC;QAC5C,CAAC;QAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAiCG;QACH,KAAK,CAAC,gBAAgB,CACpB,MAA+B;YAE/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAqC,kBAAkB,EAAE;gBACtF,MAAM;aACP,CAAC,CAAC;YACH,OAAO,YAAY,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;QACrD,CAAC;QAED,KAAK,CAAC,4BAA4B;YAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,+BAA+B,CAChC,CAAC;YACF,OAAO,YAAY,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC;QACtD,CAAC;QAED;;;;;;;;;WASG;QACH,KAAK,CAAC,UAAU,CACd,KAAwB,EACxB,OAAmD;YAEnD,4EAA4E;YAC5E,0EAA0E;YAC1E,8CAA8C;YAC9C,IAAI,OAAO,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;gBAClC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;gBACpC,kBAAkB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;gBACzC,MAAM,OAAO,GAAG,MAAM,UAAU,CAC9B,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,EAC1D,IAAI,CACL,CAAC;gBACF,OAAO,OAAO,CAAC,KAAK,CAAC;YACvB,CAAC;YACD,OAAO,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBAClD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;gBACxF,OAAO,YAAY,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;QACL,CAAC;QAED,UAAU;QAEV,oFAAoF;QACpF,KAAK,CAAC,0BAA0B,CAC9B,KAAqC,EACrC,OAA6B;YAE7B,kBAAkB,CAAC,4BAA4B,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/D,OAAO,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBAClD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,sCAAsC,EACtC,EAAE,KAAK,EAAE,EACT,KAAK,CACN,CAAC;gBACF,OAAO,IAAI,CAAC,0BAA0B,CAAC;YACzC,CAAC,CAAC,CAAC;QACL,CAAC;QAED,8CAA8C;QAE9C;;;;WAIG;QACH,KAAK,CAAC,mBAAmB,CAAC,KAAqC;YAC7D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA4B,gBAAgB,EAAE;gBAC3E,KAAK;aACN,CAAC,CAAC;YACH,OAAO,oBAAoB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACpD,CAAC;QAED;;;;;;;;;WASG;QACH,KAAK,CAAC,oBAAoB,CACxB,QAAwB;YAIxB,MAAM,UAAU,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;YAC1D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,gCAAgC,EAChC,EAAE,QAAQ,EAAE,UAAU,EAAE,CACzB,CAAC;YACF,OAAO,YAAY,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAC;QAC5D,CAAC;QAED;;;WAGG;QACH,KAAK,CAAC,uBAAuB;YAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,4BAA4B,CAC7B,CAAC;YACF,OAAO,2BAA2B,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACrE,CAAC;KACF,CAAC;AACJ,CAAC"}
|