@mframework/layer-commerce 0.0.3
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 +101 -0
- package/app/cart/useCart.ts +1 -0
- package/app/components/ChevronIcon/ChevronIcon.config.ts +17 -0
- package/app/components/DateSelect/DateSelect.config.ts +15 -0
- package/app/components/Field/Field.config.ts +14 -0
- package/app/components/FieldDate/FieldDate.config.ts +16 -0
- package/app/components/Form/Form.type.ts +8 -0
- package/app/components/Product/Product.config.ts +19 -0
- package/app/components/Product/Stock.config.ts +15 -0
- package/app/components/ProductCustomizableOption/ProductCustomizableOption.config.ts +5 -0
- package/app/components/ProductGallery/ProductGallery.config.ts +15 -0
- package/app/components/ProductReviews/ProductReviews.config.ts +8 -0
- package/app/composables/_types.ts +18 -0
- package/app/composables/adapters/abstract/cartAdapter.ts +0 -0
- package/app/composables/adapters/abstract/categoryAdapter.ts +0 -0
- package/app/composables/adapters/abstract/customerAdapter.ts +0 -0
- package/app/composables/adapters/abstract/inventoryAdapter.ts +0 -0
- package/app/composables/adapters/abstract/orderAdapter.ts +0 -0
- package/app/composables/adapters/abstract/productAdapter.ts +7 -0
- package/app/composables/cart/registry.ts +20 -0
- package/app/composables/cart/types.ts +18 -0
- package/app/composables/cart/useCart.ts +15 -0
- package/app/composables/config.ts +19 -0
- package/app/composables/defs/apiDefinitions.ts +55 -0
- package/app/composables/defs/extension.feature +40 -0
- package/app/composables/defs/extension.mocks.ts +39 -0
- package/app/composables/defs/extension.test.ts +280 -0
- package/app/composables/defs/extension.ts +236 -0
- package/app/composables/defs/index.ts +3 -0
- package/app/composables/defs/typeHelpers.ts +8 -0
- package/app/composables/defs/types.ts +136 -0
- package/app/composables/domain/product.ts +12 -0
- package/app/composables/featured-products.ts +20 -0
- package/app/composables/helpers/contextualizedNormalizers.feature +14 -0
- package/app/composables/helpers/contextualizedNormalizers.test.ts +85 -0
- package/app/composables/helpers/contextualizedNormalizers.ts +20 -0
- package/app/composables/helpers/index.ts +1 -0
- package/app/composables/index.ts +9 -0
- package/app/composables/methods/auth.ts +83 -0
- package/app/composables/methods/cart.ts +119 -0
- package/app/composables/methods/category.ts +27 -0
- package/app/composables/methods/checkout.ts +54 -0
- package/app/composables/methods/customer.ts +52 -0
- package/app/composables/methods/helpers.ts +5 -0
- package/app/composables/methods/index.ts +75 -0
- package/app/composables/methods/order.ts +39 -0
- package/app/composables/methods/product.ts +95 -0
- package/app/composables/methods/settings.ts +16 -0
- package/app/composables/models/cart.ts +95 -0
- package/app/composables/models/category.ts +13 -0
- package/app/composables/models/checkout.ts +17 -0
- package/app/composables/models/customer.ts +16 -0
- package/app/composables/models/facets.ts +25 -0
- package/app/composables/models/index.ts +94 -0
- package/app/composables/models/order.ts +43 -0
- package/app/composables/models/product.ts +73 -0
- package/app/composables/models/shared.ts +75 -0
- package/app/composables/orders.ts +69 -0
- package/app/composables/products/registry.ts +86 -0
- package/app/composables/products/types.ts +8 -0
- package/app/composables/products/useEvents.ts +26 -0
- package/app/composables/products/useGiftCards.ts +29 -0
- package/app/composables/products/useProducts.ts +12 -0
- package/app/composables/products/useSubscriptions.ts +29 -0
- package/app/composables/products.ts +30 -0
- package/app/composables/registry.ts +24 -0
- package/app/composables/useAuth.ts +43 -0
- package/app/composables/useBreakpoints/index.ts +1 -0
- package/app/composables/useBreakpoints/useBreakpoints.ts +28 -0
- package/app/composables/useCache.ts +38 -0
- package/app/composables/useCart/__tests__/useCart.spec.ts +11 -0
- package/app/composables/useCart/index.ts +1 -0
- package/app/composables/useCart/types.ts +17 -0
- package/app/composables/useCart/useCart.ts +46 -0
- package/app/composables/useCartShippingMethods/__tests__/useCartShippingMethods.spec.ts +11 -0
- package/app/composables/useCartShippingMethods/index.ts +1 -0
- package/app/composables/useCartShippingMethods/types.ts +17 -0
- package/app/composables/useCartShippingMethods/useCartShippingMethods.ts +47 -0
- package/app/composables/useCatalog.ts +26 -0
- package/app/composables/useContent.ts +26 -0
- package/app/composables/useCustomer/__tests__/useCustomer.spec.ts +25 -0
- package/app/composables/useCustomer/index.ts +2 -0
- package/app/composables/useCustomer/types.ts +17 -0
- package/app/composables/useCustomer/useCustomer.ts +40 -0
- package/app/composables/useCustomerAddress/__tests__/useCustomerAddress.spec.ts +11 -0
- package/app/composables/useCustomerAddress/index.ts +2 -0
- package/app/composables/useCustomerAddress/types.ts +17 -0
- package/app/composables/useCustomerAddress/useCustomerAddress.ts +55 -0
- package/app/composables/useCustomerOrder/__tests__/useCustomerOrder.spec.ts +11 -0
- package/app/composables/useCustomerOrder/adress.ts +10 -0
- package/app/composables/useCustomerOrder/index.ts +2 -0
- package/app/composables/useCustomerOrder/product.ts +37 -0
- package/app/composables/useCustomerOrder/types.ts +40 -0
- package/app/composables/useCustomerOrder/useCustomerOrder.ts +63 -0
- package/app/composables/useCustomerOrders/__tests__/useCustomerOrders.spec.ts +11 -0
- package/app/composables/useCustomerOrders/index.ts +2 -0
- package/app/composables/useCustomerOrders/types.ts +20 -0
- package/app/composables/useCustomerOrders/useCustomerOrders.ts +56 -0
- package/app/composables/useCustomerReturns/__tests__/useCustomerReturns.spec.ts +11 -0
- package/app/composables/useCustomerReturns/index.ts +2 -0
- package/app/composables/useCustomerReturns/types.ts +17 -0
- package/app/composables/useCustomerReturns/useCustomerReturns.ts +41 -0
- package/app/composables/useHandleError/index.ts +1 -0
- package/app/composables/useHandleError/types.ts +11 -0
- package/app/composables/useHandleError/useHandleError.ts +27 -0
- package/app/composables/useInventory.ts +29 -0
- package/app/composables/useLoading.ts +21 -0
- package/app/composables/useNotification.ts +21 -0
- package/app/composables/usePageTitle.ts +20 -0
- package/app/composables/useProduct/index.ts +2 -0
- package/app/composables/useProduct/types.ts +17 -0
- package/app/composables/useProduct/useProduct.ts +42 -0
- package/app/composables/useProductAttribute/__tests__/useProduct.mock.ts +31 -0
- package/app/composables/useProductAttribute/__tests__/useProductAttribute.spec.ts +14 -0
- package/app/composables/useProductAttribute/index.ts +1 -0
- package/app/composables/useProductAttribute/useProductAttribute.ts +37 -0
- package/app/composables/useProductRecommended/__tests__/useProductRecommended.spec.ts +12 -0
- package/app/composables/useProductRecommended/index.ts +1 -0
- package/app/composables/useProductRecommended/types.ts +17 -0
- package/app/composables/useProductRecommended/useProductRecommended.ts +43 -0
- package/app/composables/useProductReviews/__tests__/productReviews.mock.ts +20 -0
- package/app/composables/useProductReviews/__tests__/useProductReviews.spec.ts +22 -0
- package/app/composables/useProductReviews/index.ts +2 -0
- package/app/composables/useProductReviews/types.ts +17 -0
- package/app/composables/useProductReviews/useProductReviews.ts +46 -0
- package/app/composables/useProducts/__tests__/useProducts.spec.ts +11 -0
- package/app/composables/useProducts/types.ts +22 -0
- package/app/composables/useProducts/useProducts.ts +41 -0
- package/app/composables/useTax.ts +27 -0
- package/app/composables/validationRules/index.ts +1 -0
- package/app/composables/validationRules/password.feature +67 -0
- package/app/composables/validationRules/password.test.ts +89 -0
- package/app/composables/validationRules/password.ts +25 -0
- package/app/normalizers/Cart.query.ts +729 -0
- package/app/normalizers/Cart.type.ts +285 -0
- package/app/normalizers/Category.query.ts +146 -0
- package/app/normalizers/Category.type.ts +55 -0
- package/app/normalizers/CheckEmail.query.ts +28 -0
- package/app/normalizers/Checkout.query.ts +253 -0
- package/app/normalizers/Checkout.type.ts +77 -0
- package/app/normalizers/CmsBlock.query.ts +57 -0
- package/app/normalizers/CmsBlock.type.ts +25 -0
- package/app/normalizers/CmsPage.query.ts +59 -0
- package/app/normalizers/CmsPage.type.ts +26 -0
- package/app/normalizers/Config.query.ts +224 -0
- package/app/normalizers/Config.type.ts +196 -0
- package/app/normalizers/ContactForm.query.ts +49 -0
- package/app/normalizers/CreditMemo.type.ts +49 -0
- package/app/normalizers/GiftCard.type.ts +24 -0
- package/app/normalizers/Invoice.type.ts +58 -0
- package/app/normalizers/Menu.query.ts +54 -0
- package/app/normalizers/Menu.type.ts +22 -0
- package/app/normalizers/MyAccount.query.ts +268 -0
- package/app/normalizers/MyAccount.type.ts +129 -0
- package/app/normalizers/NewsletterSubscription.query.ts +38 -0
- package/app/normalizers/Order.query.ts +741 -0
- package/app/normalizers/Order.type.ts +268 -0
- package/app/normalizers/Payment.type.ts +28 -0
- package/app/normalizers/ProductAlerts.query.ts +23 -0
- package/app/normalizers/ProductCompare.query.ts +226 -0
- package/app/normalizers/ProductCompare.type.ts +90 -0
- package/app/normalizers/ProductList.query.ts +1620 -0
- package/app/normalizers/ProductList.type.ts +726 -0
- package/app/normalizers/Region.query.ts +58 -0
- package/app/normalizers/Region.type.ts +23 -0
- package/app/normalizers/Return.type.ts +50 -0
- package/app/normalizers/Review.query.ts +81 -0
- package/app/normalizers/Review.type.ts +42 -0
- package/app/normalizers/Slider.query.ts +72 -0
- package/app/normalizers/Slider.type.ts +26 -0
- package/app/normalizers/StoreInPickUp.query.ts +54 -0
- package/app/normalizers/StoreInPickUp.type.ts +59 -0
- package/app/normalizers/Subscription.type.ts +25 -0
- package/app/normalizers/Transaction.type.ts +20 -0
- package/app/normalizers/UrlRewrites.query.ts +55 -0
- package/app/normalizers/UrlRewrites.type.ts +25 -0
- package/app/normalizers/Wishlist.query.ts +202 -0
- package/app/normalizers/Wishlist.type.ts +42 -0
- package/app/pages/brand/[...slug].vue +76 -0
- package/app/pages/brands.vue +67 -0
- package/app/pages/cart.vue +142 -0
- package/app/pages/compare.vue +166 -0
- package/app/pages/departments/[...slug].vue +353 -0
- package/app/pages/departments/category/[...slug].vue +114 -0
- package/app/pages/incentive/[...id].vue +66 -0
- package/app/pages/invoice/[id].vue +309 -0
- package/app/pages/order/[id].vue +327 -0
- package/app/pages/product/[...id].vue +309 -0
- package/app/pages/product/showcases/index.vue +86 -0
- package/app/pages/shipment/[...id].vue +176 -0
- package/app/pages/shop/[...slug].vue +158 -0
- package/app/pages/shops.vue +76 -0
- package/app/pages/subscription/[...id].vue +147 -0
- package/app/pages/transaction/[...id].vue +74 -0
- package/app/routes/CategoryPage/CategoryPage.config.ts +28 -0
- package/app/routes/CategoryPage/CategoryPage.type.ts +8 -0
- package/app/routes/Checkout/Checkout.config.ts +3 -0
- package/app/routes/Checkout/Checkout.type.ts +14 -0
- package/app/routes/MyAccount/MyAccount.config.ts +1 -0
- package/app/routes/SearchPage/SearchPage.config.ts +1 -0
- package/app/routes/UrlRewrites/UrlRewrites.config.ts +5 -0
- package/app/stores/Cart/Cart.type.ts +26 -0
- package/app/stores/MyAccount/MyAccount.action.ts +7 -0
- package/app/stores/Notification/Notification.action.ts +40 -0
- package/app/stores/Notification/Notification.type.ts +16 -0
- package/app/stores/Popup/Popup.action.ts +30 -0
- package/app/stores/Product/Product.dispatcher.ts +53 -0
- package/app/stores/Product/Product.reducer.ts +12 -0
- package/app/stores/ProductList/ProductList.dispatcher.ts +35 -0
- package/app/stores/ProductList/ProductList.reducer.ts +13 -0
- package/app/stores/Store.type.ts +31 -0
- package/app/stores/Wishlist/Wishlist.type.ts +12 -0
- package/app/stores/cart.ts +218 -0
- package/app/stores/cartStore.ts +224 -0
- package/app/stores/checkout.ts +18 -0
- package/app/stores/compare.ts +65 -0
- package/app/stores/currency.js +29 -0
- package/app/stores/digital-products.js +11 -0
- package/app/stores/orders.ts +172 -0
- package/app/stores/product.ts +34 -0
- package/app/stores/productList.ts +35 -0
- package/app/stores/productListInfo.ts +0 -0
- package/app/stores/products.ts +118 -0
- package/app/stores/recentlyViewedProducts.ts +56 -0
- package/app/stores/review.ts +33 -0
- package/app/stores/storeInPickUp.ts +21 -0
- package/app/stores/user.ts +20 -0
- package/app/stores/wishlist.ts +46 -0
- package/app/types/Account.type.ts +141 -0
- package/app/types/Breadcrumbs.type.ts +23 -0
- package/app/types/CMS.type.ts +33 -0
- package/app/types/Category.type.ts +67 -0
- package/app/types/Checkout.type.ts +58 -0
- package/app/types/Common.type.ts +77 -0
- package/app/types/Config.type.ts +47 -0
- package/app/types/Device.type.ts +37 -0
- package/app/types/Direction.type.ts +23 -0
- package/app/types/Downloadable.type.ts +24 -0
- package/app/types/Error.type.ts +22 -0
- package/app/types/Field.type.ts +151 -0
- package/app/types/Global.type.ts +156 -0
- package/app/types/Graphql.type.ts +4497 -0
- package/app/types/Layout.type.ts +18 -0
- package/app/types/Menu.type.ts +39 -0
- package/app/types/MiniCart.type.ts +61 -0
- package/app/types/NotificationList.type.ts +34 -0
- package/app/types/Order.type.ts +174 -0
- package/app/types/Price.type.ts +72 -0
- package/app/types/ProductCompare.type.ts +24 -0
- package/app/types/ProductList.type.ts +351 -0
- package/app/types/Rating.type.ts +42 -0
- package/app/types/Router.type.ts +67 -0
- package/app/types/Slider.type.ts +25 -0
- package/app/types/StockStatus.type.ts +21 -0
- package/app/types/domain/index.ts +94 -0
- package/app/types/index.ts +33 -0
- package/app/types/shims.d.ts +52 -0
- package/app/types/tilework-opus.d.ts +48 -0
- package/app/utils/Address/Address.type.ts +28 -0
- package/app/utils/Address/index.ts +325 -0
- package/app/utils/Auth/IsSignedIn.ts +4 -0
- package/app/utils/Auth/Token.ts +9 -0
- package/app/utils/Base64/Base64.ts +16 -0
- package/app/utils/Base64/index.ts +12 -0
- package/app/utils/Browser/Browser.ts +29 -0
- package/app/utils/Browser/index.ts +12 -0
- package/app/utils/BrowserDatabase/BrowserDatabase.ts +70 -0
- package/app/utils/BrowserDatabase/index.ts +12 -0
- package/app/utils/CSS/CSS.ts +65 -0
- package/app/utils/CSS/index.ts +12 -0
- package/app/utils/Cache/Cache.ts +99 -0
- package/app/utils/Cart/Cart.ts +300 -0
- package/app/utils/Cart/Cart.type.ts +76 -0
- package/app/utils/Cart/Token.ts +59 -0
- package/app/utils/Cart/index.ts +13 -0
- package/app/utils/Category/Filters.ts +39 -0
- package/app/utils/Category/index.ts +12 -0
- package/app/utils/Common/index.ts +32 -0
- package/app/utils/Compare/Compare.ts +89 -0
- package/app/utils/Compare/index.ts +12 -0
- package/app/utils/Currency/Currency.ts +84 -0
- package/app/utils/Currency/index.ts +12 -0
- package/app/utils/DynamicReducer/DynamicReducer.type.ts +14 -0
- package/app/utils/DynamicReducer/Helper.ts +30 -0
- package/app/utils/DynamicReducer/index.tsx +35 -0
- package/app/utils/ElementTransition/ElementTransition.ts +100 -0
- package/app/utils/Form/Extract.ts +316 -0
- package/app/utils/Form/Form.ts +46 -0
- package/app/utils/Form/Form.type.ts +60 -0
- package/app/utils/Form/Transform.ts +33 -0
- package/app/utils/FormPortalCollector/index.ts +45 -0
- package/app/utils/History/History.type.ts +31 -0
- package/app/utils/History/index.ts +17 -0
- package/app/utils/Manipulations/Array.ts +18 -0
- package/app/utils/Manipulations/Date.ts +36 -0
- package/app/utils/Manipulations/index.ts +14 -0
- package/app/utils/Media/Media.ts +27 -0
- package/app/utils/Media/index.ts +13 -0
- package/app/utils/Menu/Menu.ts +116 -0
- package/app/utils/Menu/Menu.type.ts +37 -0
- package/app/utils/Menu/index.ts +12 -0
- package/app/utils/Mobile/index.ts +13 -0
- package/app/utils/Mobile/isMobile.ts +34 -0
- package/app/utils/Orders/Orders.ts +71 -0
- package/app/utils/Orders/Orders.type.ts +19 -0
- package/app/utils/Orders/index.ts +13 -0
- package/app/utils/Polyfill/index.ts +336 -0
- package/app/utils/Preload/CategoryPreload.ts +74 -0
- package/app/utils/Preload/ProductPreload.ts +28 -0
- package/app/utils/Preload/index.ts +75 -0
- package/app/utils/Price/Price.config.ts +189 -0
- package/app/utils/Price/Price.ts +63 -0
- package/app/utils/Price/index.ts +12 -0
- package/app/utils/Product/Extract.ts +652 -0
- package/app/utils/Product/Product.ts +575 -0
- package/app/utils/Product/Product.type.ts +260 -0
- package/app/utils/Product/Transform.ts +382 -0
- package/app/utils/Product/index.ts +12 -0
- package/app/utils/Promise/MakeCancelable.ts +44 -0
- package/app/utils/Promise/Promise.type.ts +15 -0
- package/app/utils/Promise/index.ts +13 -0
- package/app/utils/Query/Field.ts +71 -0
- package/app/utils/Query/Fragment.ts +22 -0
- package/app/utils/Query/PrepareDocument.ts +119 -0
- package/app/utils/Query/Query.type.ts +26 -0
- package/app/utils/Query/index.ts +15 -0
- package/app/utils/Request/Config.ts +21 -0
- package/app/utils/Request/DataContainer.ts +102 -0
- package/app/utils/Request/Debounce.ts +48 -0
- package/app/utils/Request/Error.ts +31 -0
- package/app/utils/Request/Hash.ts +88 -0
- package/app/utils/Request/LowPriorityLoad.ts +32 -0
- package/app/utils/Request/LowPriorityRender.ts +55 -0
- package/app/utils/Request/Mutation.ts +25 -0
- package/app/utils/Request/Query.ts +25 -0
- package/app/utils/Request/QueryDispatcher.ts +135 -0
- package/app/utils/Request/Request.ts +310 -0
- package/app/utils/Store/Store.type.ts +26 -0
- package/app/utils/Store/index.ts +71 -0
- package/app/utils/Url/Url.ts +297 -0
- package/app/utils/Url/index.ts +12 -0
- package/app/utils/Validator/Config.ts +96 -0
- package/app/utils/Validator/Validator.ts +268 -0
- package/app/utils/Validator/Validator.type.ts +47 -0
- package/app/utils/Validator/index.ts +12 -0
- package/app/utils/Wishlist/Wishlist.ts +65 -0
- package/app/utils/Wishlist/index.ts +12 -0
- package/app/utils/client.ts +280 -0
- package/app/utils/index.ts +53 -0
- package/app/utils/normalizer.ts +23 -0
- package/app/utils/normalizers/magento.ts +29 -0
- package/app/utils/normalizers/shopify.ts +29 -0
- package/nuxt.config.ts +11 -0
- package/package.json +43 -0
- package/tsconfig.json +45 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Simplify } from '../defs/typeHelpers';
|
|
2
|
+
import type { SfCurrency } from "../models";
|
|
3
|
+
|
|
4
|
+
export interface GetCurrenciesExtendedArgs {}
|
|
5
|
+
export interface GetCurrenciesCustomArgs {}
|
|
6
|
+
|
|
7
|
+
export type GetCurrenciesArgs = {
|
|
8
|
+
//$extended?: GetCurrenciesExtendedArgs;
|
|
9
|
+
//$custom?: GetCurrenciesCustomArgs;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export type GetCurrencies = (args?: Simplify<GetCurrenciesArgs>) => Promise<{
|
|
13
|
+
currencies: SfCurrency[];
|
|
14
|
+
defaultCurrency: SfCurrency;
|
|
15
|
+
currentCurrency: SfCurrency;
|
|
16
|
+
}>;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { InferCustom } from "../defs";
|
|
2
|
+
import type { SfShippingMethod } from "./checkout";
|
|
3
|
+
import type {
|
|
4
|
+
Maybe,
|
|
5
|
+
SfAddress,
|
|
6
|
+
SfAttribute,
|
|
7
|
+
SfDiscountablePrice,
|
|
8
|
+
SfId,
|
|
9
|
+
SfImage,
|
|
10
|
+
SfMoney,
|
|
11
|
+
} from "./shared";
|
|
12
|
+
|
|
13
|
+
export interface SfCartLineItemCustom extends InferCustom<"normalizeCartLineItem"> {}
|
|
14
|
+
|
|
15
|
+
export interface SfCartLineItem {
|
|
16
|
+
attributes: SfAttribute[];
|
|
17
|
+
productId: SfId;
|
|
18
|
+
/**
|
|
19
|
+
* ID of the cart's line item
|
|
20
|
+
*/
|
|
21
|
+
id: SfId;
|
|
22
|
+
image: Maybe<SfImage>;
|
|
23
|
+
name: Maybe<string>;
|
|
24
|
+
quantity: number;
|
|
25
|
+
sku: Maybe<string>;
|
|
26
|
+
slug: string;
|
|
27
|
+
/**
|
|
28
|
+
* Product of quantity and unitPrice
|
|
29
|
+
*/
|
|
30
|
+
totalPrice: Maybe<SfMoney>;
|
|
31
|
+
unitPrice: Maybe<SfDiscountablePrice>;
|
|
32
|
+
quantityLimit: Maybe<number>;
|
|
33
|
+
$custom?: SfCartLineItemCustom;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface SfCartCouponCustom extends InferCustom<"normalizeCartCoupon"> {}
|
|
37
|
+
|
|
38
|
+
export interface SfCartCoupon {
|
|
39
|
+
code: string;
|
|
40
|
+
id: string;
|
|
41
|
+
name: Maybe<string>;
|
|
42
|
+
$custom?: SfCartCouponCustom;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export interface SfCartCustom extends InferCustom<"normalizeCart"> {}
|
|
46
|
+
|
|
47
|
+
export interface SfCart {
|
|
48
|
+
appliedCoupons: SfCartCoupon[];
|
|
49
|
+
/**
|
|
50
|
+
* @default null
|
|
51
|
+
*/
|
|
52
|
+
billingAddress: Maybe<SfAddress>;
|
|
53
|
+
/**
|
|
54
|
+
* Active customer's email. Required to complete the checkout
|
|
55
|
+
* @default null
|
|
56
|
+
*/
|
|
57
|
+
customerEmail: Maybe<string>;
|
|
58
|
+
id: SfId;
|
|
59
|
+
/**
|
|
60
|
+
* Shipping address is required to get available shipping methods
|
|
61
|
+
* @default null
|
|
62
|
+
*/
|
|
63
|
+
lineItems: SfCartLineItem[];
|
|
64
|
+
shippingAddress: Maybe<SfAddress>;
|
|
65
|
+
/**
|
|
66
|
+
* Required to complete the checkout. To get available methods use `getAvailableShippingMethods`
|
|
67
|
+
* @default null
|
|
68
|
+
*/
|
|
69
|
+
shippingMethod: Maybe<SfShippingMethod>;
|
|
70
|
+
/**
|
|
71
|
+
* Difference of `subtotalRegularPrice` and discounts applied to line items before providing coupons.
|
|
72
|
+
* If none of the products are discounted, price will be equal to `subtotalRegularPrice`
|
|
73
|
+
*/
|
|
74
|
+
subtotalDiscountedPrice: SfMoney;
|
|
75
|
+
/**
|
|
76
|
+
* Total regular price of all line items (coupons, taxes, shipping excluded)
|
|
77
|
+
*/
|
|
78
|
+
subtotalRegularPrice: SfMoney;
|
|
79
|
+
totalCouponDiscounts: SfMoney;
|
|
80
|
+
/**
|
|
81
|
+
* Total count of all line items and their's quantities in cart
|
|
82
|
+
*/
|
|
83
|
+
totalItems: number;
|
|
84
|
+
/**
|
|
85
|
+
* Total cart price (discounts, taxes, shipping included)
|
|
86
|
+
*/
|
|
87
|
+
totalPrice: SfMoney;
|
|
88
|
+
/**
|
|
89
|
+
* Calculated after applying shipping method
|
|
90
|
+
* @default null
|
|
91
|
+
*/
|
|
92
|
+
totalShippingPrice: Maybe<SfMoney>;
|
|
93
|
+
totalTax: SfMoney;
|
|
94
|
+
$custom?: SfCartCustom;
|
|
95
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { InferCustom } from "../defs";
|
|
2
|
+
import type { Maybe, SfId } from "./shared";
|
|
3
|
+
|
|
4
|
+
export interface SfCategoryCustom extends InferCustom<"normalizeCartCoupon"> {}
|
|
5
|
+
|
|
6
|
+
export interface SfCategory {
|
|
7
|
+
id: SfId;
|
|
8
|
+
name: string;
|
|
9
|
+
slug: string;
|
|
10
|
+
subcategories: Maybe<SfCategory[]>;
|
|
11
|
+
parentCategoryId: Maybe<SfId>;
|
|
12
|
+
$custom?: SfCategoryCustom;
|
|
13
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { InferCustom } from "../defs";
|
|
2
|
+
import type { Maybe, SfMoney } from "./shared";
|
|
3
|
+
|
|
4
|
+
export interface SfShippingMethodCustom extends InferCustom<"normalizeCartCoupon"> {}
|
|
5
|
+
|
|
6
|
+
export interface SfShippingMethod {
|
|
7
|
+
description: Maybe<string>;
|
|
8
|
+
estimatedDelivery: Maybe<string>;
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
price: SfMoney;
|
|
12
|
+
$custom?: SfShippingMethodCustom;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface SfShippingMethods {
|
|
16
|
+
methods: SfShippingMethod[];
|
|
17
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { InferCustom } from "../defs";
|
|
2
|
+
import type { SfAddress, SfId } from "./shared";
|
|
3
|
+
|
|
4
|
+
export interface SfCustomerCustom extends InferCustom<"normalizeCustomer"> {}
|
|
5
|
+
|
|
6
|
+
export interface SfCustomer {
|
|
7
|
+
id: SfId;
|
|
8
|
+
email: string;
|
|
9
|
+
firstName: string;
|
|
10
|
+
lastName: string;
|
|
11
|
+
$custom?: SfCustomerCustom;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface SfCustomerAddress extends SfAddress {
|
|
15
|
+
id: SfId;
|
|
16
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { InferCustom } from "../defs";
|
|
2
|
+
import type { Maybe } from "./shared";
|
|
3
|
+
|
|
4
|
+
export enum SfFacetTypes {
|
|
5
|
+
MULTI_SELECT = "MULTI_SELECT",
|
|
6
|
+
SINGLE_SELECT = "SINGLE_SELECT",
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export type SfFacetType = `${SfFacetTypes}`;
|
|
10
|
+
|
|
11
|
+
export interface SfFacetItem {
|
|
12
|
+
label: string;
|
|
13
|
+
value: string;
|
|
14
|
+
productCount: Maybe<number>;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface SfFacetCustom extends InferCustom<"normalizeFacet"> {}
|
|
18
|
+
|
|
19
|
+
export interface SfFacet {
|
|
20
|
+
label: string;
|
|
21
|
+
name: string;
|
|
22
|
+
values: SfFacetItem[];
|
|
23
|
+
type: Maybe<SfFacetType | (string & Record<never, never>)>;
|
|
24
|
+
$custom?: SfFacetCustom;
|
|
25
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type { SfCart, SfCartCoupon, SfCartCouponCustom, SfCartLineItemCustom } from "./cart";
|
|
2
|
+
import type { SfCategory, SfCategoryCustom } from "./category";
|
|
3
|
+
import type { SfShippingMethod, SfShippingMethodCustom, SfShippingMethods } from "./checkout";
|
|
4
|
+
import type { SfCustomer, SfCustomerAddress, SfCustomerCustom } from "./customer";
|
|
5
|
+
import type { SfFacet, SfFacetCustom, SfFacetItem, SfFacetType, SfFacetTypes } from "./facets";
|
|
6
|
+
import type {
|
|
7
|
+
SfOrder,
|
|
8
|
+
SfOrderCustom,
|
|
9
|
+
SfOrderLineItem,
|
|
10
|
+
SfOrderLineItemCustom,
|
|
11
|
+
SfOrderListItem,
|
|
12
|
+
SfOrderListItemCustom,
|
|
13
|
+
} from "./order";
|
|
14
|
+
import type {
|
|
15
|
+
SfPagination,
|
|
16
|
+
SfPaginationCustom,
|
|
17
|
+
SfProduct,
|
|
18
|
+
SfProductCatalogItem,
|
|
19
|
+
SfProductCatalogItemCustom,
|
|
20
|
+
SfProductCustom,
|
|
21
|
+
SfProductReview,
|
|
22
|
+
SfProductReviewCustom,
|
|
23
|
+
SfProductVariant,
|
|
24
|
+
} from "./product";
|
|
25
|
+
import type {
|
|
26
|
+
SfAddress,
|
|
27
|
+
SfAddressCustom,
|
|
28
|
+
SfAttribute,
|
|
29
|
+
SfAttributeCustom,
|
|
30
|
+
SfCreateAddressBody,
|
|
31
|
+
SfCurrency,
|
|
32
|
+
SfDiscountablePrice,
|
|
33
|
+
SfDiscountablePriceCustom,
|
|
34
|
+
SfImage,
|
|
35
|
+
SfImageCustom,
|
|
36
|
+
SfMoney,
|
|
37
|
+
SfMoneyCustom,
|
|
38
|
+
} from "./shared";
|
|
39
|
+
|
|
40
|
+
export * from "./cart";
|
|
41
|
+
export * from "./category";
|
|
42
|
+
export * from "./checkout";
|
|
43
|
+
export * from "./customer";
|
|
44
|
+
export * from "./facets";
|
|
45
|
+
export * from "./product";
|
|
46
|
+
export * from "./shared";
|
|
47
|
+
export * from "./order";
|
|
48
|
+
|
|
49
|
+
export interface SfContract {
|
|
50
|
+
SfCartLineItemCustom: SfCartLineItemCustom;
|
|
51
|
+
SfCartCouponCustom: SfCartCouponCustom;
|
|
52
|
+
SfCartCoupon: SfCartCoupon;
|
|
53
|
+
SfCart: SfCart;
|
|
54
|
+
SfCategoryCustom: SfCategoryCustom;
|
|
55
|
+
SfCategory: SfCategory;
|
|
56
|
+
SfShippingMethodCustom: SfShippingMethodCustom;
|
|
57
|
+
SfShippingMethod: SfShippingMethod;
|
|
58
|
+
SfShippingMethods: SfShippingMethods;
|
|
59
|
+
SfCustomerCustom: SfCustomerCustom;
|
|
60
|
+
SfCustomer: SfCustomer;
|
|
61
|
+
SfCustomerAddress: SfCustomerAddress;
|
|
62
|
+
SfFacetTypes: SfFacetTypes;
|
|
63
|
+
SfFacetType: SfFacetType;
|
|
64
|
+
SfFacetItem: SfFacetItem;
|
|
65
|
+
SfFacetCustom: SfFacetCustom;
|
|
66
|
+
SfFacet: SfFacet;
|
|
67
|
+
SfOrderLineItemCustom: SfOrderLineItemCustom;
|
|
68
|
+
SfOrderLineItem: SfOrderLineItem;
|
|
69
|
+
SfOrderCustom: SfOrderCustom;
|
|
70
|
+
SfOrder: SfOrder;
|
|
71
|
+
SfOrderListItemCustom: SfOrderListItemCustom;
|
|
72
|
+
SfOrderListItem: SfOrderListItem;
|
|
73
|
+
SfProductVariant: SfProductVariant;
|
|
74
|
+
SfProductReviewCustom: SfProductReviewCustom;
|
|
75
|
+
SfProductReview: SfProductReview;
|
|
76
|
+
SfProductCustom: SfProductCustom;
|
|
77
|
+
SfProduct: SfProduct;
|
|
78
|
+
SfProductCatalogItemCustom: SfProductCatalogItemCustom;
|
|
79
|
+
SfProductCatalogItem: SfProductCatalogItem;
|
|
80
|
+
SfPaginationCustom: SfPaginationCustom;
|
|
81
|
+
SfPagination: SfPagination;
|
|
82
|
+
SfMoneyCustom: SfMoneyCustom;
|
|
83
|
+
SfMoney: SfMoney;
|
|
84
|
+
SfDiscountablePriceCustom: SfDiscountablePriceCustom;
|
|
85
|
+
SfDiscountablePrice: SfDiscountablePrice;
|
|
86
|
+
SfImageCustom: SfImageCustom;
|
|
87
|
+
SfImage: SfImage;
|
|
88
|
+
SfAttributeCustom: SfAttributeCustom;
|
|
89
|
+
SfAttribute: SfAttribute;
|
|
90
|
+
SfCreateAddressBody: SfCreateAddressBody;
|
|
91
|
+
SfAddressCustom: SfAddressCustom;
|
|
92
|
+
SfAddress: SfAddress;
|
|
93
|
+
SfCurrency: SfCurrency;
|
|
94
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { InferCustom } from "../defs";
|
|
2
|
+
import type { SfShippingMethod } from "./checkout";
|
|
3
|
+
import type { Maybe, SfAddress, SfAttribute, SfId, SfImage, SfMoney } from "./shared";
|
|
4
|
+
|
|
5
|
+
export interface SfOrderLineItemCustom extends InferCustom<"normalizeOrderLineItem"> {}
|
|
6
|
+
|
|
7
|
+
export interface SfOrderLineItem {
|
|
8
|
+
id: SfId;
|
|
9
|
+
attributes: SfAttribute[];
|
|
10
|
+
unitPrice: SfMoney;
|
|
11
|
+
totalPrice: SfMoney;
|
|
12
|
+
quantity: number;
|
|
13
|
+
image: Maybe<SfImage>;
|
|
14
|
+
productId: SfId;
|
|
15
|
+
productName: string;
|
|
16
|
+
sku: Maybe<string>;
|
|
17
|
+
$custom?: SfOrderLineItemCustom;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface SfOrderCustom extends InferCustom<"normalizeOrder"> {}
|
|
21
|
+
|
|
22
|
+
export interface SfOrder {
|
|
23
|
+
id: SfId;
|
|
24
|
+
orderDate: string;
|
|
25
|
+
status: string;
|
|
26
|
+
lineItems: SfOrderLineItem[];
|
|
27
|
+
subtotalPrice: SfMoney;
|
|
28
|
+
totalShippingPrice: SfMoney;
|
|
29
|
+
totalTax: SfMoney;
|
|
30
|
+
totalPrice: SfMoney;
|
|
31
|
+
shippingAddress: SfAddress;
|
|
32
|
+
billingAddress: Maybe<SfAddress>;
|
|
33
|
+
shippingMethod: SfShippingMethod;
|
|
34
|
+
paymentMethod: string;
|
|
35
|
+
$custom?: SfOrderCustom;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface SfOrderListItemCustom extends InferCustom<"normalizeOrder"> {}
|
|
39
|
+
|
|
40
|
+
export interface SfOrderListItem
|
|
41
|
+
extends Pick<SfOrder, "id" | "orderDate" | "totalPrice" | "status"> {
|
|
42
|
+
$custom?: SfOrderListItemCustom;
|
|
43
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { InferCustom } from "../defs";
|
|
2
|
+
import type { Maybe, SfAttribute, SfDiscountablePrice, SfId, SfImage } from "./shared";
|
|
3
|
+
|
|
4
|
+
export interface SfProductVariant {
|
|
5
|
+
id: SfId;
|
|
6
|
+
slug: string;
|
|
7
|
+
sku: Maybe<string>;
|
|
8
|
+
name: Maybe<string>;
|
|
9
|
+
/*
|
|
10
|
+
* Maximum available quantity for variant, null if unlimited
|
|
11
|
+
*/
|
|
12
|
+
quantityLimit: Maybe<number>;
|
|
13
|
+
attributes: SfAttribute[];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface SfProductReviewCustom extends InferCustom<"normalizeProductReview"> {}
|
|
17
|
+
|
|
18
|
+
export interface SfProductReview {
|
|
19
|
+
id: SfId;
|
|
20
|
+
title: Maybe<string>;
|
|
21
|
+
text: Maybe<string>;
|
|
22
|
+
rating: Maybe<number>;
|
|
23
|
+
/*
|
|
24
|
+
* Name of the reviewer (Full name or nickname)
|
|
25
|
+
*/
|
|
26
|
+
reviewer: Maybe<string>;
|
|
27
|
+
/*
|
|
28
|
+
* Creation date in ISO 8601 format
|
|
29
|
+
*/
|
|
30
|
+
createdAt: string;
|
|
31
|
+
$custom?: SfProductReviewCustom;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface SfProductCustom extends InferCustom<"normalizeProduct"> {}
|
|
35
|
+
|
|
36
|
+
export interface SfProduct {
|
|
37
|
+
id: SfId;
|
|
38
|
+
sku: Maybe<string>;
|
|
39
|
+
name: Maybe<string>;
|
|
40
|
+
slug: string;
|
|
41
|
+
description: Maybe<string>;
|
|
42
|
+
price: Maybe<SfDiscountablePrice>;
|
|
43
|
+
primaryImage: Maybe<SfImage>;
|
|
44
|
+
gallery: SfImage[];
|
|
45
|
+
rating: Maybe<{
|
|
46
|
+
average: number;
|
|
47
|
+
count: number;
|
|
48
|
+
}>;
|
|
49
|
+
variants: SfProductVariant[];
|
|
50
|
+
attributes: SfAttribute[];
|
|
51
|
+
/*
|
|
52
|
+
* Maximum available quantity for product, null if unlimited
|
|
53
|
+
*/
|
|
54
|
+
quantityLimit: Maybe<number>;
|
|
55
|
+
$custom?: SfProductCustom;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export interface SfProductCatalogItemCustom extends InferCustom<"normalizeProductCatalogItem"> {}
|
|
59
|
+
|
|
60
|
+
export interface SfProductCatalogItem
|
|
61
|
+
extends Omit<SfProduct, "variants" | "gallery" | "description" | "attributes"> {
|
|
62
|
+
$custom?: SfProductCatalogItemCustom;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export interface SfPaginationCustom extends InferCustom<"normalizePagination"> {}
|
|
66
|
+
|
|
67
|
+
export interface SfPagination {
|
|
68
|
+
currentPage: number;
|
|
69
|
+
pageSize: Maybe<number>;
|
|
70
|
+
totalResults: number;
|
|
71
|
+
totalPages: number;
|
|
72
|
+
$custom?: SfPaginationCustom;
|
|
73
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { InferCustom } from "../defs";
|
|
2
|
+
|
|
3
|
+
export type Maybe<TType> = TType | null;
|
|
4
|
+
|
|
5
|
+
export type SfId = string;
|
|
6
|
+
|
|
7
|
+
export interface SfMoneyCustom extends InferCustom<"normalizeMoney"> {}
|
|
8
|
+
|
|
9
|
+
export interface SfMoney {
|
|
10
|
+
currency: string;
|
|
11
|
+
amount: number;
|
|
12
|
+
precisionAmount: string;
|
|
13
|
+
$custom?: SfMoneyCustom;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface SfDiscountablePriceCustom extends InferCustom<"normalizeDiscountablePrice"> {}
|
|
17
|
+
|
|
18
|
+
export interface SfDiscountablePrice {
|
|
19
|
+
isDiscounted: boolean;
|
|
20
|
+
regularPrice: SfMoney;
|
|
21
|
+
/**
|
|
22
|
+
* Price with discounts. If there is no discount, it will be the same as regularPrice
|
|
23
|
+
*/
|
|
24
|
+
value: SfMoney;
|
|
25
|
+
$custom?: SfDiscountablePriceCustom;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface SfImageCustom extends InferCustom<"normalizeImage"> {}
|
|
29
|
+
|
|
30
|
+
export interface SfImage {
|
|
31
|
+
alt: Maybe<string>;
|
|
32
|
+
url: string;
|
|
33
|
+
$custom?: SfImageCustom;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface SfAttributeCustom extends InferCustom<"normalizeAttribute"> {}
|
|
37
|
+
|
|
38
|
+
export interface SfAttribute {
|
|
39
|
+
label: string;
|
|
40
|
+
name: string;
|
|
41
|
+
value: string;
|
|
42
|
+
valueLabel: string;
|
|
43
|
+
$custom?: SfAttributeCustom;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface SfCreateAddressBody {
|
|
47
|
+
address1: string;
|
|
48
|
+
address2?: Maybe<string>;
|
|
49
|
+
city: string;
|
|
50
|
+
country: string;
|
|
51
|
+
firstName: string;
|
|
52
|
+
lastName: string;
|
|
53
|
+
phoneNumber: string;
|
|
54
|
+
postalCode: string;
|
|
55
|
+
state: string;
|
|
56
|
+
titleCode: string;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export interface SfAddressCustom extends InferCustom<"normalizeAddress"> {}
|
|
60
|
+
|
|
61
|
+
export interface SfAddress {
|
|
62
|
+
address1: Maybe<string>;
|
|
63
|
+
address2?: Maybe<string>;
|
|
64
|
+
city: Maybe<string>;
|
|
65
|
+
country: Maybe<string>;
|
|
66
|
+
firstName: Maybe<string>;
|
|
67
|
+
lastName: Maybe<string>;
|
|
68
|
+
phoneNumber: Maybe<string>;
|
|
69
|
+
postalCode: Maybe<string>;
|
|
70
|
+
state: Maybe<string>;
|
|
71
|
+
titleCode: Maybe<string>;
|
|
72
|
+
$custom?: SfAddressCustom;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export type SfCurrency = string;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { getCommerceClient } from '../utils/client'
|
|
2
|
+
|
|
3
|
+
function clientOrNull() {
|
|
4
|
+
try {
|
|
5
|
+
return getCommerceClient()
|
|
6
|
+
} catch (e) {
|
|
7
|
+
return null
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export function useOrders() {
|
|
12
|
+
const client = clientOrNull()
|
|
13
|
+
return {
|
|
14
|
+
async getOrders(filters: any = {}) {
|
|
15
|
+
if (client && typeof client.listOrders === 'function') return client.listOrders(filters)
|
|
16
|
+
return []
|
|
17
|
+
},
|
|
18
|
+
async getOrderById(id: string) {
|
|
19
|
+
if (client && typeof client.getOrder === 'function') return client.getOrder(id)
|
|
20
|
+
return null
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function useReturns() {
|
|
26
|
+
const client = clientOrNull()
|
|
27
|
+
return {
|
|
28
|
+
async getReturns(opts: any = {}) {
|
|
29
|
+
if (client && typeof client.listReturns === 'function') return client.listReturns(opts)
|
|
30
|
+
return []
|
|
31
|
+
},
|
|
32
|
+
async createReturn(data: any) {
|
|
33
|
+
if (client && typeof client.createReturn === 'function') return client.createReturn(data)
|
|
34
|
+
return null
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function useTransactions() {
|
|
40
|
+
const client = clientOrNull()
|
|
41
|
+
return {
|
|
42
|
+
async getTransactions(opts: any = {}) {
|
|
43
|
+
if (client && typeof client.listTransactions === 'function') return client.listTransactions(opts)
|
|
44
|
+
return []
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function useInvoices() {
|
|
50
|
+
const client = clientOrNull()
|
|
51
|
+
return {
|
|
52
|
+
async getInvoices(opts: any = {}) {
|
|
53
|
+
if (client && typeof client.listInvoices === 'function') return client.listInvoices(opts)
|
|
54
|
+
return []
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export function useCreditMemos() {
|
|
60
|
+
const client = clientOrNull()
|
|
61
|
+
return {
|
|
62
|
+
async getCreditMemos(opts: any = {}) {
|
|
63
|
+
if (client && typeof client.listCreditMemos === 'function') return client.listCreditMemos(opts)
|
|
64
|
+
return []
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export default useOrders
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { ProductProvider } from "./types"
|
|
2
|
+
|
|
3
|
+
// Product providers
|
|
4
|
+
const providers: Record<string, ProductProvider> = {}
|
|
5
|
+
|
|
6
|
+
export function registerProductProvider(name: string, provider: ProductProvider) {
|
|
7
|
+
providers[name] = provider
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function getProductProvider(name: string) {
|
|
11
|
+
const provider = providers[name]
|
|
12
|
+
if (!provider) throw new Error(`Product provider "${name}" not found`)
|
|
13
|
+
return provider
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function registerProductProviderRuntime(name: string, provider: ProductProvider) {
|
|
17
|
+
registerProductProvider(name, provider)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Event providers (optional domain)
|
|
21
|
+
type EventProvider = {
|
|
22
|
+
getEvent?(id: string): Promise<any>
|
|
23
|
+
listEvents?(params?: Record<string, any>): Promise<any[]>
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const eventProviders: Record<string, EventProvider> = {}
|
|
27
|
+
|
|
28
|
+
export function registerEventProvider(name: string, provider: EventProvider) {
|
|
29
|
+
eventProviders[name] = provider
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function getEventProvider(name: string) {
|
|
33
|
+
const provider = eventProviders[name]
|
|
34
|
+
if (!provider) throw new Error(`Event provider "${name}" not found`)
|
|
35
|
+
return provider
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function registerEventProviderRuntime(name: string, provider: EventProvider) {
|
|
39
|
+
registerEventProvider(name, provider)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Gift card providers (optional domain)
|
|
43
|
+
type GiftCardProvider = {
|
|
44
|
+
getGiftCard?(id: string): Promise<any>
|
|
45
|
+
listGiftCards?(params?: Record<string, any>): Promise<any[]>
|
|
46
|
+
redeemGiftCard?(code: string): Promise<any>
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const giftCardProviders: Record<string, GiftCardProvider> = {}
|
|
50
|
+
|
|
51
|
+
export function registerGiftCardProvider(name: string, provider: GiftCardProvider) {
|
|
52
|
+
giftCardProviders[name] = provider
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export function getGiftCardProvider(name: string) {
|
|
56
|
+
const provider = giftCardProviders[name]
|
|
57
|
+
if (!provider) throw new Error(`Gift card provider "${name}" not found`)
|
|
58
|
+
return provider
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export function registerGiftCardProviderRuntime(name: string, provider: GiftCardProvider) {
|
|
62
|
+
registerGiftCardProvider(name, provider)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Subscription providers (optional domain)
|
|
66
|
+
type SubscriptionProvider = {
|
|
67
|
+
getSubscription?(id: string): Promise<any>
|
|
68
|
+
listSubscriptions?(params?: Record<string, any>): Promise<any[]>
|
|
69
|
+
subscribe?(payload: Record<string, any>): Promise<any>
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const subscriptionProviders: Record<string, SubscriptionProvider> = {}
|
|
73
|
+
|
|
74
|
+
export function registerSubscriptionProvider(name: string, provider: SubscriptionProvider) {
|
|
75
|
+
subscriptionProviders[name] = provider
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export function getSubscriptionProvider(name: string) {
|
|
79
|
+
const provider = subscriptionProviders[name]
|
|
80
|
+
if (!provider) throw new Error(`Subscription provider "${name}" not found`)
|
|
81
|
+
return provider
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export function registerSubscriptionProviderRuntime(name: string, provider: SubscriptionProvider) {
|
|
85
|
+
registerSubscriptionProvider(name, provider)
|
|
86
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
|
|
2
|
+
import { getCommerceConfig } from '../config'
|
|
3
|
+
import { getEventProvider } from './registry'
|
|
4
|
+
|
|
5
|
+
export function useEvents() {
|
|
6
|
+
const cfg = getCommerceConfig() as any
|
|
7
|
+
const providerName = cfg.eventsProvider || cfg.productProvider
|
|
8
|
+
|
|
9
|
+
let provider: any
|
|
10
|
+
try {
|
|
11
|
+
provider = getEventProvider(providerName)
|
|
12
|
+
} catch (e) {
|
|
13
|
+
provider = {
|
|
14
|
+
getEvent: async () => null,
|
|
15
|
+
listEvents: async () => []
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return {
|
|
20
|
+
getEvent: provider.getEvent ?? (async (id: string) => null),
|
|
21
|
+
listEvents: provider.listEvents ?? (async (params?: Record<string, any>) => [])
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export default useEvents
|
|
26
|
+
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
|
|
2
|
+
import { getCommerceConfig } from '../config'
|
|
3
|
+
import { getGiftCardProvider } from './registry'
|
|
4
|
+
|
|
5
|
+
export function useGiftCards() {
|
|
6
|
+
const cfg = getCommerceConfig() as any
|
|
7
|
+
const providerName = cfg.giftCardsProvider || cfg.productProvider
|
|
8
|
+
|
|
9
|
+
let provider: any
|
|
10
|
+
try {
|
|
11
|
+
provider = getGiftCardProvider(providerName)
|
|
12
|
+
} catch (e) {
|
|
13
|
+
provider = {
|
|
14
|
+
getGiftCard: async () => null,
|
|
15
|
+
listGiftCards: async () => [],
|
|
16
|
+
redeemGiftCard: async () => ({ success: false })
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return {
|
|
21
|
+
getGiftCard: provider.getGiftCard ?? (async (id: string) => null),
|
|
22
|
+
listGiftCards: provider.listGiftCards ?? (async (params?: Record<string, any>) => []),
|
|
23
|
+
redeemGiftCard: provider.redeemGiftCard ?? (async (code: string) => ({ success: false }))
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export default useGiftCards
|
|
28
|
+
|
|
29
|
+
|