addio-admin-sdk 1.7.171 → 1.7.172
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/.babelrc +17 -17
- package/.env +15 -0
- package/.env.dev +14 -14
- package/.github/workflows/run_unit_test.yaml +48 -48
- package/addio-sdk-doc.md +1473 -1473
- package/changelog.md +573 -573
- package/dist/Interfaces/Address/index.d.ts +21 -21
- package/dist/Interfaces/Address/index.js +16 -16
- package/dist/Interfaces/Algolia/index.d.ts +182 -182
- package/dist/Interfaces/Algolia/index.js +2 -2
- package/dist/Interfaces/Attachement/index.d.ts +5 -5
- package/dist/Interfaces/Attachement/index.js +2 -2
- package/dist/Interfaces/Attribute/index.d.ts +53 -53
- package/dist/Interfaces/Attribute/index.js +10 -10
- package/dist/Interfaces/BGJob/index.d.ts +56 -56
- package/dist/Interfaces/BGJob/index.js +25 -25
- package/dist/Interfaces/BaseClass/index.d.ts +8 -8
- package/dist/Interfaces/BaseClass/index.js +2 -2
- package/dist/Interfaces/Blog/IBlogArticle.d.ts +18 -18
- package/dist/Interfaces/Blog/IBlogArticle.js +2 -2
- package/dist/Interfaces/Blog/IBlogAuthor.d.ts +7 -7
- package/dist/Interfaces/Blog/IBlogAuthor.js +2 -2
- package/dist/Interfaces/Blog/IBlogCategory.d.ts +9 -9
- package/dist/Interfaces/Blog/IBlogCategory.js +2 -2
- package/dist/Interfaces/Blog/IBlogComment.d.ts +13 -13
- package/dist/Interfaces/Blog/IBlogComment.js +2 -2
- package/dist/Interfaces/Blog/IBlogKeywords.d.ts +9 -9
- package/dist/Interfaces/Blog/IBlogKeywords.js +2 -2
- package/dist/Interfaces/Booking/index.d.ts +74 -74
- package/dist/Interfaces/Booking/index.js +17 -17
- package/dist/Interfaces/Brand/index.d.ts +15 -15
- package/dist/Interfaces/Brand/index.js +2 -2
- package/dist/Interfaces/Buylist/index.d.ts +17 -17
- package/dist/Interfaces/Buylist/index.js +2 -2
- package/dist/Interfaces/CMS/index.d.ts +28 -28
- package/dist/Interfaces/CMS/index.js +5 -5
- package/dist/Interfaces/Cart/IElavonPayload.d.ts +93 -93
- package/dist/Interfaces/Cart/IElavonPayload.js +17 -17
- package/dist/Interfaces/Cart/IMarketPayload.d.ts +12 -12
- package/dist/Interfaces/Cart/IMarketPayload.js +2 -2
- package/dist/Interfaces/Cart/IPandaPayload.d.ts +64 -64
- package/dist/Interfaces/Cart/IPandaPayload.js +18 -18
- package/dist/Interfaces/Cart/IPaymentCard.d.ts +22 -22
- package/dist/Interfaces/Cart/IPaymentCard.js +44 -44
- package/dist/Interfaces/Cart/IPaypalPayload.d.ts +9 -9
- package/dist/Interfaces/Cart/IPaypalPayload.js +2 -2
- package/dist/Interfaces/Cart/IPaysafePayload.d.ts +72 -72
- package/dist/Interfaces/Cart/IPaysafePayload.js +2 -2
- package/dist/Interfaces/Cart/IStripePayload.d.ts +66 -66
- package/dist/Interfaces/Cart/IStripePayload.js +2 -2
- package/dist/Interfaces/Cart/index.d.ts +451 -451
- package/dist/Interfaces/Cart/index.js +216 -216
- package/dist/Interfaces/CartReservedQuantities/index.d.ts +10 -10
- package/dist/Interfaces/CartReservedQuantities/index.js +2 -2
- package/dist/Interfaces/CashDrawers/index.d.ts +38 -38
- package/dist/Interfaces/CashDrawers/index.js +19 -19
- package/dist/Interfaces/Catalogue/index.d.ts +68 -68
- package/dist/Interfaces/Catalogue/index.js +37 -37
- package/dist/Interfaces/Category/index.d.ts +33 -33
- package/dist/Interfaces/Category/index.js +2 -2
- package/dist/Interfaces/Chart/index.d.ts +11 -11
- package/dist/Interfaces/Chart/index.js +2 -2
- package/dist/Interfaces/Class/index.d.ts +8 -8
- package/dist/Interfaces/Class/index.js +2 -2
- package/dist/Interfaces/Consent/index.d.ts +6 -6
- package/dist/Interfaces/Consent/index.js +2 -2
- package/dist/Interfaces/Context/IContextProps.d.ts +4 -4
- package/dist/Interfaces/Context/IContextProps.js +2 -2
- package/dist/Interfaces/Context/IContextState.d.ts +15 -15
- package/dist/Interfaces/Context/IContextState.js +2 -2
- package/dist/Interfaces/Customer/ICustomerBadge.d.ts +2 -2
- package/dist/Interfaces/Customer/ICustomerBadge.js +2 -2
- package/dist/Interfaces/Customer/ICustomerRating.d.ts +10 -10
- package/dist/Interfaces/Customer/ICustomerRating.js +2 -2
- package/dist/Interfaces/Customer/IStoreCredit.d.ts +13 -13
- package/dist/Interfaces/Customer/IStoreCredit.js +2 -2
- package/dist/Interfaces/Customer/index.d.ts +104 -104
- package/dist/Interfaces/Customer/index.js +148 -148
- package/dist/Interfaces/Declination/index.d.ts +117 -117
- package/dist/Interfaces/Declination/index.js +66 -66
- package/dist/Interfaces/Document/index.d.ts +8 -8
- package/dist/Interfaces/Document/index.js +2 -2
- package/dist/Interfaces/Elastic/index.d.ts +89 -89
- package/dist/Interfaces/Elastic/index.js +2 -2
- package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.d.ts +11 -11
- package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.js +2 -2
- package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.d.ts +15 -15
- package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.js +2 -2
- package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.d.ts +12 -12
- package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.js +2 -2
- package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.d.ts +36 -36
- package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.js +2 -2
- package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.d.ts +12 -12
- package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.js +2 -2
- package/dist/Interfaces/Email/CustomGR/ITransportEmail.d.ts +12 -12
- package/dist/Interfaces/Email/CustomGR/ITransportEmail.js +2 -2
- package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.d.ts +12 -12
- package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.js +2 -2
- package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.d.ts +16 -16
- package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.js +2 -2
- package/dist/Interfaces/Email/CustomGR/IWishlistEmail.d.ts +15 -15
- package/dist/Interfaces/Email/CustomGR/IWishlistEmail.js +2 -2
- package/dist/Interfaces/Email/IAbandonnedCartEmail.d.ts +29 -29
- package/dist/Interfaces/Email/IAbandonnedCartEmail.js +2 -2
- package/dist/Interfaces/Email/IAccountConfirmationEmail.d.ts +22 -22
- package/dist/Interfaces/Email/IAccountConfirmationEmail.js +2 -2
- package/dist/Interfaces/Email/IApplicationEmail.d.ts +19 -19
- package/dist/Interfaces/Email/IApplicationEmail.js +2 -2
- package/dist/Interfaces/Email/IBackInStockEmail.d.ts +21 -21
- package/dist/Interfaces/Email/IBackInStockEmail.js +2 -2
- package/dist/Interfaces/Email/IContactEmail.d.ts +20 -20
- package/dist/Interfaces/Email/IContactEmail.js +2 -2
- package/dist/Interfaces/Email/ICustomerBookingAdminEmail.d.ts +15 -15
- package/dist/Interfaces/Email/ICustomerBookingAdminEmail.js +2 -2
- package/dist/Interfaces/Email/ICustomerBookingEmail.d.ts +14 -14
- package/dist/Interfaces/Email/ICustomerBookingEmail.js +2 -2
- package/dist/Interfaces/Email/IEmail.d.ts +20 -20
- package/dist/Interfaces/Email/IEmail.js +60 -60
- package/dist/Interfaces/Email/IOrderConfirmationEmail.d.ts +47 -47
- package/dist/Interfaces/Email/IOrderConfirmationEmail.js +2 -2
- package/dist/Interfaces/Email/IPasswordResetEmail.d.ts +17 -17
- package/dist/Interfaces/Email/IPasswordResetEmail.js +2 -2
- package/dist/Interfaces/Email/IPhotoShootEmail.d.ts +14 -14
- package/dist/Interfaces/Email/IPhotoShootEmail.js +2 -2
- package/dist/Interfaces/Email/IPickupConfirmation.d.ts +23 -23
- package/dist/Interfaces/Email/IPickupConfirmation.js +2 -2
- package/dist/Interfaces/Email/IShippingConfirmation.d.ts +23 -23
- package/dist/Interfaces/Email/IShippingConfirmation.js +2 -2
- package/dist/Interfaces/Email/IWelcomeEmail.d.ts +19 -19
- package/dist/Interfaces/Email/IWelcomeEmail.js +2 -2
- package/dist/Interfaces/ExportSchema/index.d.ts +7 -7
- package/dist/Interfaces/ExportSchema/index.js +2 -2
- package/dist/Interfaces/ExternalService/BaseExternalService.d.ts +12 -12
- package/dist/Interfaces/ExternalService/BaseExternalService.js +2 -2
- package/dist/Interfaces/ExternalService/ExternalProductsService.d.ts +4 -4
- package/dist/Interfaces/ExternalService/ExternalProductsService.js +2 -2
- package/dist/Interfaces/ExternalService/index.d.ts +9 -9
- package/dist/Interfaces/ExternalService/index.js +2 -2
- package/dist/Interfaces/FirstOrderTracking/index.d.ts +5 -5
- package/dist/Interfaces/FirstOrderTracking/index.js +2 -2
- package/dist/Interfaces/G2/index.d.ts +556 -556
- package/dist/Interfaces/G2/index.js +38 -38
- package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.d.ts +20 -20
- package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.js +2 -2
- package/dist/Interfaces/Indexed/Product/index.d.ts +105 -105
- package/dist/Interfaces/Indexed/Product/index.js +253 -253
- package/dist/Interfaces/Inventory/index.d.ts +19 -19
- package/dist/Interfaces/Inventory/index.js +8 -8
- package/dist/Interfaces/Invoice/index.d.ts +4 -4
- package/dist/Interfaces/Invoice/index.js +2 -2
- package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.d.ts +3 -3
- package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.js +2 -2
- package/dist/Interfaces/MarketplacePublication/index.d.ts +23 -23
- package/dist/Interfaces/MarketplacePublication/index.js +22 -22
- package/dist/Interfaces/Menu/index.d.ts +40 -40
- package/dist/Interfaces/Menu/index.js +16 -16
- package/dist/Interfaces/Note/index.d.ts +10 -10
- package/dist/Interfaces/Note/index.js +7 -7
- package/dist/Interfaces/Operations/ICreatedBy.d.ts +6 -6
- package/dist/Interfaces/Operations/ICreatedBy.js +2 -2
- package/dist/Interfaces/Operations/IUpdate.d.ts +5 -5
- package/dist/Interfaces/Operations/IUpdate.js +2 -2
- package/dist/Interfaces/Order/index.d.ts +4 -4
- package/dist/Interfaces/Order/index.js +2 -2
- package/dist/Interfaces/Org/IRelUser.d.ts +9 -9
- package/dist/Interfaces/Org/IRelUser.js +2 -2
- package/dist/Interfaces/Org/index.d.ts +29 -29
- package/dist/Interfaces/Org/index.js +12 -12
- package/dist/Interfaces/Payment/index.d.ts +26 -26
- package/dist/Interfaces/Payment/index.js +14 -14
- package/dist/Interfaces/Product/IAttributeFamily.d.ts +6 -6
- package/dist/Interfaces/Product/IAttributeFamily.js +2 -2
- package/dist/Interfaces/Product/IImportProduct.d.ts +42 -42
- package/dist/Interfaces/Product/IImportProduct.js +882 -882
- package/dist/Interfaces/Product/IInventoryItem.d.ts +74 -74
- package/dist/Interfaces/Product/IInventoryItem.js +38 -38
- package/dist/Interfaces/Product/IPricing.d.ts +177 -177
- package/dist/Interfaces/Product/IPricing.js +180 -180
- package/dist/Interfaces/Product/index.d.ts +137 -137
- package/dist/Interfaces/Product/index.js +64 -64
- package/dist/Interfaces/ProductAttribute/index.d.ts +11 -11
- package/dist/Interfaces/ProductAttribute/index.js +2 -2
- package/dist/Interfaces/PromiseToPurchase/BankType.d.ts +41 -41
- package/dist/Interfaces/PromiseToPurchase/BankType.js +41 -41
- package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.d.ts +33 -33
- package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.js +15 -15
- package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.d.ts +19 -19
- package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.js +2 -2
- package/dist/Interfaces/PromiseToPurchase/index.d.ts +50 -50
- package/dist/Interfaces/PromiseToPurchase/index.js +13 -13
- package/dist/Interfaces/PurchaseOrder/index.d.ts +17 -17
- package/dist/Interfaces/PurchaseOrder/index.js +2 -2
- package/dist/Interfaces/Query/IBrandQueryOptions.d.ts +11 -11
- package/dist/Interfaces/Query/IBrandQueryOptions.js +2 -2
- package/dist/Interfaces/Query/ICategoryQueryOptions.d.ts +11 -11
- package/dist/Interfaces/Query/ICategoryQueryOptions.js +2 -2
- package/dist/Interfaces/Query/IProductQueryOptions.d.ts +16 -16
- package/dist/Interfaces/Query/IProductQueryOptions.js +2 -2
- package/dist/Interfaces/Quote/index.d.ts +5 -5
- package/dist/Interfaces/Quote/index.js +2 -2
- package/dist/Interfaces/Refunds/index.d.ts +106 -106
- package/dist/Interfaces/Refunds/index.js +2 -2
- package/dist/Interfaces/Rules/IDiscountRule.d.ts +155 -155
- package/dist/Interfaces/Rules/IDiscountRule.js +114 -114
- package/dist/Interfaces/Schedule/index.d.ts +48 -48
- package/dist/Interfaces/Schedule/index.js +2 -2
- package/dist/Interfaces/Services/IAddServiceResponse.d.ts +4 -4
- package/dist/Interfaces/Services/IAddServiceResponse.js +2 -2
- package/dist/Interfaces/Services/IService.d.ts +16 -16
- package/dist/Interfaces/Services/IService.js +2 -2
- package/dist/Interfaces/Services/IServiceSecret.d.ts +8 -8
- package/dist/Interfaces/Services/IServiceSecret.js +2 -2
- package/dist/Interfaces/Shipping/Shipstation/carriers.d.ts +10 -10
- package/dist/Interfaces/Shipping/Shipstation/carriers.js +2 -2
- package/dist/Interfaces/Shipping/Shipstation/order.d.ts +227 -227
- package/dist/Interfaces/Shipping/Shipstation/order.js +2 -2
- package/dist/Interfaces/Shipping/Shipstation/quote.d.ts +31 -31
- package/dist/Interfaces/Shipping/Shipstation/quote.js +2 -2
- package/dist/Interfaces/Shipping/Shiptime/order.d.ts +54 -54
- package/dist/Interfaces/Shipping/Shiptime/order.js +71 -71
- package/dist/Interfaces/Shipping/Shiptime/quote.d.ts +111 -111
- package/dist/Interfaces/Shipping/Shiptime/quote.js +2 -2
- package/dist/Interfaces/Slider/GR.d.ts +114 -114
- package/dist/Interfaces/Slider/GR.js +271 -271
- package/dist/Interfaces/Slider/index.d.ts +30 -30
- package/dist/Interfaces/Slider/index.js +2 -2
- package/dist/Interfaces/Space/IExternalService.d.ts +54 -54
- package/dist/Interfaces/Space/IExternalService.js +45 -45
- package/dist/Interfaces/Space/IMember.d.ts +16 -16
- package/dist/Interfaces/Space/IMember.js +9 -9
- package/dist/Interfaces/Space/index.d.ts +414 -414
- package/dist/Interfaces/Space/index.js +176 -176
- package/dist/Interfaces/Specials/gr.d.ts +61 -61
- package/dist/Interfaces/Specials/gr.js +2 -2
- package/dist/Interfaces/StockNotification/index.d.ts +7 -7
- package/dist/Interfaces/StockNotification/index.js +2 -2
- package/dist/Interfaces/Store/index.d.ts +63 -63
- package/dist/Interfaces/Store/index.js +27 -27
- package/dist/Interfaces/Supplier/ICommand.d.ts +11 -11
- package/dist/Interfaces/Supplier/ICommand.js +2 -2
- package/dist/Interfaces/Supplier/index.d.ts +36 -36
- package/dist/Interfaces/Supplier/index.js +24 -24
- package/dist/Interfaces/TCG/index.d.ts +194 -194
- package/dist/Interfaces/TCG/index.js +60 -60
- package/dist/Interfaces/Tag/index.d.ts +18 -18
- package/dist/Interfaces/Tag/index.js +2 -2
- package/dist/Interfaces/Tax/index.d.ts +13 -13
- package/dist/Interfaces/Tax/index.js +2 -2
- package/dist/Interfaces/TransferRequest/index.d.ts +103 -103
- package/dist/Interfaces/TransferRequest/index.js +46 -46
- package/dist/Interfaces/Translation/index.d.ts +8 -8
- package/dist/Interfaces/Translation/index.js +5 -5
- package/dist/Interfaces/Update/index.d.ts +10 -10
- package/dist/Interfaces/Update/index.js +2 -2
- package/dist/Interfaces/User/IUser.d.ts +65 -65
- package/dist/Interfaces/User/IUser.js +8 -8
- package/dist/Interfaces/Version/index.d.ts +11 -11
- package/dist/Interfaces/Version/index.js +2 -2
- package/dist/Interfaces/Wishlist/index.d.ts +7 -7
- package/dist/Interfaces/Wishlist/index.js +2 -2
- package/dist/constants/Interfaces/IBaseApi.d.ts +15 -15
- package/dist/constants/Interfaces/IBaseApi.js +2 -2
- package/dist/constants/Interfaces/IEndpointResult.d.ts +9 -9
- package/dist/constants/Interfaces/IEndpointResult.js +2 -2
- package/dist/constants/enums.d.ts +6 -6
- package/dist/constants/enums.js +10 -10
- package/dist/constants/services.d.ts +2 -2
- package/dist/constants/services.js +122 -122
- package/dist/constants/version.d.ts +2 -2
- package/dist/constants/version.js +5 -5
- package/dist/index.d.ts +50 -50
- package/dist/index.js +266 -266
- package/dist/lib/Attribute/index.d.ts +14 -14
- package/dist/lib/Attribute/index.js +186 -186
- package/dist/lib/BGJob/index.d.ts +9 -9
- package/dist/lib/BGJob/index.js +216 -216
- package/dist/lib/BackgroundWorker/index.d.ts +34 -34
- package/dist/lib/BackgroundWorker/index.js +59 -59
- package/dist/lib/Blog/BlogArticle.d.ts +5 -5
- package/dist/lib/Blog/BlogArticle.js +10 -10
- package/dist/lib/Blog/BlogAuthor.d.ts +5 -5
- package/dist/lib/Blog/BlogAuthor.js +10 -10
- package/dist/lib/Blog/BlogCategory.d.ts +5 -5
- package/dist/lib/Blog/BlogCategory.js +10 -10
- package/dist/lib/Blog/BlogKeyword.d.ts +5 -5
- package/dist/lib/Blog/BlogKeyword.js +10 -10
- package/dist/lib/Booking/index.d.ts +85 -85
- package/dist/lib/Booking/index.js +596 -596
- package/dist/lib/Brand/index.d.ts +26 -26
- package/dist/lib/Brand/index.js +131 -131
- package/dist/lib/Cart/index.d.ts +354 -354
- package/dist/lib/Cart/index.js +4055 -4055
- package/dist/lib/CartReservedQuantities/index.d.ts +49 -49
- package/dist/lib/CartReservedQuantities/index.js +159 -159
- package/dist/lib/CashDrawerShift/index.d.ts +84 -84
- package/dist/lib/CashDrawerShift/index.js +206 -206
- package/dist/lib/Catalogue/index.d.ts +15 -15
- package/dist/lib/Catalogue/index.js +78 -78
- package/dist/lib/Category/index.d.ts +34 -34
- package/dist/lib/Category/index.js +230 -230
- package/dist/lib/Class/index.d.ts +16 -16
- package/dist/lib/Class/index.js +66 -66
- package/dist/lib/Consent/index.d.ts +4 -4
- package/dist/lib/Consent/index.js +29 -29
- package/dist/lib/Customer/index.d.ts +30 -30
- package/dist/lib/Customer/index.js +92 -92
- package/dist/lib/Declination/index.d.ts +9 -9
- package/dist/lib/Declination/index.js +26 -26
- package/dist/lib/Discount/index.d.ts +27 -27
- package/dist/lib/Discount/index.js +493 -493
- package/dist/lib/ElasticSearch/index.d.ts +13 -13
- package/dist/lib/ElasticSearch/index.js +50 -50
- package/dist/lib/Elavon/index.d.ts +18 -18
- package/dist/lib/Elavon/index.js +135 -135
- package/dist/lib/Email/AbandonedCartEmail.d.ts +16 -16
- package/dist/lib/Email/AbandonedCartEmail.js +24 -24
- package/dist/lib/Email/AccountConfirmationEmail.d.ts +19 -19
- package/dist/lib/Email/AccountConfirmationEmail.js +30 -30
- package/dist/lib/Email/AdminOrderConfirmationEmail.d.ts +16 -16
- package/dist/lib/Email/AdminOrderConfirmationEmail.js +24 -24
- package/dist/lib/Email/ApplicationEmail.d.ts +16 -16
- package/dist/lib/Email/ApplicationEmail.js +24 -24
- package/dist/lib/Email/BackInStockEmail.d.ts +16 -16
- package/dist/lib/Email/BackInStockEmail.js +24 -24
- package/dist/lib/Email/ContactEmail.d.ts +16 -16
- package/dist/lib/Email/ContactEmail.js +24 -24
- package/dist/lib/Email/CustomerBookingAdminEmail.d.ts +16 -16
- package/dist/lib/Email/CustomerBookingAdminEmail.js +24 -24
- package/dist/lib/Email/CustomerBookingEmail.d.ts +16 -16
- package/dist/lib/Email/CustomerBookingEmail.js +24 -24
- package/dist/lib/Email/OrderConfirmationEmail.d.ts +16 -16
- package/dist/lib/Email/OrderConfirmationEmail.js +24 -24
- package/dist/lib/Email/OrderDenounciationEmail.d.ts +16 -16
- package/dist/lib/Email/OrderDenounciationEmail.js +24 -24
- package/dist/lib/Email/OrderSampleEmail.d.ts +16 -16
- package/dist/lib/Email/OrderSampleEmail.js +24 -24
- package/dist/lib/Email/OtherTypeEmails.d.ts +16 -16
- package/dist/lib/Email/OtherTypeEmails.js +27 -27
- package/dist/lib/Email/PasswordResetEmail.d.ts +16 -16
- package/dist/lib/Email/PasswordResetEmail.js +24 -24
- package/dist/lib/Email/PhotoShootEmail.d.ts +16 -16
- package/dist/lib/Email/PhotoShootEmail.js +24 -24
- package/dist/lib/Email/PickUpConfirmation.d.ts +16 -16
- package/dist/lib/Email/PickUpConfirmation.js +24 -24
- package/dist/lib/Email/ShippingConfirmation.d.ts +16 -16
- package/dist/lib/Email/ShippingConfirmation.js +24 -24
- package/dist/lib/Email/WelcomeEmail.d.ts +16 -16
- package/dist/lib/Email/WelcomeEmail.js +24 -24
- package/dist/lib/Email/index.d.ts +16 -16
- package/dist/lib/Email/index.js +31 -31
- package/dist/lib/ExternalService/Ebay.d.ts +74 -74
- package/dist/lib/ExternalService/Ebay.js +124 -124
- package/dist/lib/ExternalService/index.d.ts +5 -5
- package/dist/lib/ExternalService/index.js +10 -10
- package/dist/lib/FirstOrderTracking/index.d.ts +5 -5
- package/dist/lib/FirstOrderTracking/index.js +10 -10
- package/dist/lib/Indexed/IndexedCart.d.ts +13 -13
- package/dist/lib/Indexed/IndexedCart.js +91 -91
- package/dist/lib/Indexed/Product.d.ts +17 -17
- package/dist/lib/Indexed/Product.js +98 -98
- package/dist/lib/Inventory/index.d.ts +112 -112
- package/dist/lib/Inventory/index.js +492 -492
- package/dist/lib/Invoice/index.d.ts +16 -16
- package/dist/lib/Invoice/index.js +21 -21
- package/dist/lib/MarketplacePublication/index.d.ts +9 -9
- package/dist/lib/MarketplacePublication/index.js +426 -426
- package/dist/lib/Menu/index.d.ts +11 -11
- package/dist/lib/Menu/index.js +107 -107
- package/dist/lib/MongoDB/BaseAPI.d.ts +18 -18
- package/dist/lib/MongoDB/BaseAPI.js +200 -200
- package/dist/lib/Note/index.d.ts +4 -4
- package/dist/lib/Note/index.js +6 -6
- package/dist/lib/Order/index.d.ts +27 -27
- package/dist/lib/Order/index.js +56 -56
- package/dist/lib/Org/index.d.ts +68 -68
- package/dist/lib/Org/index.js +216 -216
- package/dist/lib/PandaPay/index.d.ts +16 -16
- package/dist/lib/PandaPay/index.js +176 -176
- package/dist/lib/Paysafe/index.d.ts +11 -11
- package/dist/lib/Paysafe/index.js +41 -41
- package/dist/lib/Product/index.d.ts +182 -182
- package/dist/lib/Product/index.js +847 -847
- package/dist/lib/ProductAttribute/index.d.ts +15 -15
- package/dist/lib/ProductAttribute/index.js +45 -45
- package/dist/lib/PromiseToPurchase/index.d.ts +109 -109
- package/dist/lib/PromiseToPurchase/index.js +343 -343
- package/dist/lib/PurchaseOrder/index.d.ts +20 -20
- package/dist/lib/PurchaseOrder/index.js +28 -28
- package/dist/lib/Queue/index.d.ts +40 -40
- package/dist/lib/Queue/index.js +254 -254
- package/dist/lib/Schedule/index.d.ts +5 -5
- package/dist/lib/Schedule/index.js +12 -12
- package/dist/lib/Service/Enum/ServiceEnum.d.ts +3 -3
- package/dist/lib/Service/Enum/ServiceEnum.js +7 -7
- package/dist/lib/Service/index.d.ts +13 -13
- package/dist/lib/Service/index.js +21 -21
- package/dist/lib/Shipment/index.d.ts +28 -28
- package/dist/lib/Shipment/index.js +370 -370
- package/dist/lib/Slider/index.d.ts +22 -22
- package/dist/lib/Slider/index.js +119 -119
- package/dist/lib/Space/index.d.ts +1181 -1181
- package/dist/lib/Space/index.js +5841 -5841
- package/dist/lib/StockNotification/index.d.ts +4 -4
- package/dist/lib/StockNotification/index.js +6 -6
- package/dist/lib/Store/index.d.ts +5 -5
- package/dist/lib/Store/index.js +12 -12
- package/dist/lib/Supplier/Command.d.ts +5 -5
- package/dist/lib/Supplier/Command.js +10 -10
- package/dist/lib/Supplier/index.d.ts +25 -25
- package/dist/lib/Supplier/index.js +27 -27
- package/dist/lib/Tags/index.d.ts +6 -6
- package/dist/lib/Tags/index.js +26 -26
- package/dist/lib/Tax/index.d.ts +8 -8
- package/dist/lib/Tax/index.js +54 -54
- package/dist/lib/TransferRequest/index.d.ts +290 -290
- package/dist/lib/TransferRequest/index.js +1026 -1026
- package/dist/lib/Update/index.d.ts +10 -10
- package/dist/lib/Update/index.js +22 -22
- package/dist/lib/User/index.d.ts +89 -89
- package/dist/lib/User/index.js +328 -328
- package/dist/lib/Wishlist/index.d.ts +5 -5
- package/dist/lib/Wishlist/index.js +10 -10
- package/dist/lib/base.d.ts +14 -14
- package/dist/lib/base.js +62 -62
- package/dist/lib/baseService.d.ts +17 -17
- package/dist/lib/baseService.js +69 -69
- package/dist/rules/ADD/utils/buyback.d.ts +4 -4
- package/dist/rules/ADD/utils/buyback.js +135 -135
- package/dist/rules/GR/constants/data.d.ts +26 -26
- package/dist/rules/GR/constants/data.js +81 -81
- package/dist/rules/GR/constants/expedition.d.ts +4 -4
- package/dist/rules/GR/constants/expedition.js +9 -9
- package/dist/rules/GR/constants/products.d.ts +22 -22
- package/dist/rules/GR/constants/products.js +263 -263
- package/dist/rules/GR/interfaces/cart.d.ts +84 -84
- package/dist/rules/GR/interfaces/cart.js +41 -41
- package/dist/rules/GR/interfaces/data.d.ts +101 -101
- package/dist/rules/GR/interfaces/data.js +114 -114
- package/dist/rules/GR/interfaces/products.d.ts +61 -61
- package/dist/rules/GR/interfaces/products.js +10 -10
- package/dist/rules/GR/utils/cart.d.ts +95 -95
- package/dist/rules/GR/utils/cart.js +839 -839
- package/dist/rules/GR/utils/data.d.ts +3 -3
- package/dist/rules/GR/utils/data.js +28 -28
- package/dist/rules/GR/utils/expedition.d.ts +140 -140
- package/dist/rules/GR/utils/expedition.js +2016 -2016
- package/dist/rules/GR/utils/g2.d.ts +209 -209
- package/dist/rules/GR/utils/g2.js +1002 -1002
- package/dist/rules/GR/utils/invoices.d.ts +51 -51
- package/dist/rules/GR/utils/invoices.js +215 -215
- package/dist/rules/GR/utils/products.d.ts +277 -277
- package/dist/rules/GR/utils/products.js +1350 -1350
- package/dist/rules/GR/utils/upsells.d.ts +111 -111
- package/dist/rules/GR/utils/upsells.js +215 -215
- package/dist/services/database/BaseProvider.d.ts +29 -29
- package/dist/services/database/BaseProvider.js +28 -28
- package/dist/services/database/BatchUtils.d.ts +14 -14
- package/dist/services/database/BatchUtils.js +43 -43
- package/dist/services/database/Config.d.ts +2 -2
- package/dist/services/database/Config.js +5 -5
- package/dist/services/database/DatabaseService.d.ts +125 -125
- package/dist/services/database/DatabaseService.js +237 -237
- package/dist/services/database/FirebaseProvider.d.ts +17 -17
- package/dist/services/database/FirebaseProvider.js +235 -235
- package/dist/services/database/NotFirebaseProvider.d.ts +49 -49
- package/dist/services/database/NotFirebaseProvider.js +262 -262
- package/dist/services/g2/G2OrderSlip.d.ts +49 -49
- package/dist/services/g2/G2OrderSlip.js +228 -228
- package/dist/services/g2/utils.d.ts +19 -19
- package/dist/services/g2/utils.js +967 -967
- package/dist/services/logs/index.d.ts +23 -23
- package/dist/services/logs/index.js +66 -66
- package/dist/services/marketplace/BaseMarketServiceClass.d.ts +74 -74
- package/dist/services/marketplace/BaseMarketServiceClass.js +140 -140
- package/dist/services/marketplace/CardtraderServiceClass.d.ts +38 -38
- package/dist/services/marketplace/CardtraderServiceClass.js +223 -223
- package/dist/services/marketplace/utils.d.ts +17 -17
- package/dist/services/marketplace/utils.js +32 -32
- package/dist/services/products/BaseClass.d.ts +79 -79
- package/dist/services/products/BaseClass.js +144 -144
- package/dist/services/products/TCGService.d.ts +29 -29
- package/dist/services/products/TCGService.js +503 -503
- package/dist/services/products/utils.d.ts +31 -31
- package/dist/services/products/utils.js +144 -144
- package/dist/utils/algolia.d.ts +46 -46
- package/dist/utils/algolia.js +21 -21
- package/dist/utils/anonymisation.d.ts +54 -54
- package/dist/utils/anonymisation.js +280 -280
- package/dist/utils/array.d.ts +5 -5
- package/dist/utils/array.js +14 -14
- package/dist/utils/aws.d.ts +36 -36
- package/dist/utils/aws.js +154 -154
- package/dist/utils/booking.d.ts +30 -30
- package/dist/utils/booking.js +127 -127
- package/dist/utils/cart.d.ts +272 -272
- package/dist/utils/cart.js +1169 -1169
- package/dist/utils/categories.d.ts +2 -2
- package/dist/utils/categories.js +54 -54
- package/dist/utils/cmv.d.ts +10 -10
- package/dist/utils/cmv.js +107 -107
- package/dist/utils/console.d.ts +6 -6
- package/dist/utils/console.js +59 -59
- package/dist/utils/context.d.ts +20 -20
- package/dist/utils/context.js +61 -61
- package/dist/utils/currency.d.ts +6 -6
- package/dist/utils/currency.js +91 -91
- package/dist/utils/data.d.ts +31 -31
- package/dist/utils/data.js +296 -296
- package/dist/utils/date.d.ts +1 -1
- package/dist/utils/date.js +16 -16
- package/dist/utils/dimensions.d.ts +3 -3
- package/dist/utils/dimensions.js +16 -16
- package/dist/utils/discount.d.ts +174 -174
- package/dist/utils/discount.js +1118 -1118
- package/dist/utils/errors.d.ts +118 -118
- package/dist/utils/errors.js +123 -123
- package/dist/utils/file-admin.d.ts +8 -8
- package/dist/utils/file-admin.js +39 -39
- package/dist/utils/file.d.ts +39 -39
- package/dist/utils/file.js +208 -208
- package/dist/utils/firebase-admin.d.ts +11 -11
- package/dist/utils/firebase-admin.js +73 -73
- package/dist/utils/firebase.d.ts +58 -58
- package/dist/utils/firebase.js +148 -148
- package/dist/utils/import.d.ts +1 -1
- package/dist/utils/import.js +21 -21
- package/dist/utils/inventories.d.ts +101 -101
- package/dist/utils/inventories.js +467 -467
- package/dist/utils/locale.d.ts +24 -24
- package/dist/utils/locale.js +91 -91
- package/dist/utils/mailchimp.d.ts +58 -58
- package/dist/utils/mailchimp.js +531 -531
- package/dist/utils/mathUtils.d.ts +17 -17
- package/dist/utils/mathUtils.js +324 -324
- package/dist/utils/mongodb.d.ts +1 -1
- package/dist/utils/mongodb.js +22 -22
- package/dist/utils/object.d.ts +32 -32
- package/dist/utils/object.js +133 -133
- package/dist/utils/payment.d.ts +10 -10
- package/dist/utils/payment.js +23 -23
- package/dist/utils/products.d.ts +39 -39
- package/dist/utils/products.js +195 -195
- package/dist/utils/promiseToPurchase.d.ts +88 -88
- package/dist/utils/promiseToPurchase.js +229 -229
- package/dist/utils/prosprsearch.d.ts +42 -42
- package/dist/utils/prosprsearch.js +216 -216
- package/dist/utils/refunds.d.ts +2 -2
- package/dist/utils/refunds.js +21 -21
- package/dist/utils/sdc.d.ts +10 -10
- package/dist/utils/sdc.js +1309 -1309
- package/dist/utils/searchIndexes.d.ts +58 -58
- package/dist/utils/searchIndexes.js +247 -247
- package/dist/utils/services.d.ts +42 -42
- package/dist/utils/services.js +409 -409
- package/dist/utils/shipment.d.ts +110 -110
- package/dist/utils/shipment.js +345 -345
- package/dist/utils/simpletexting.d.ts +2 -2
- package/dist/utils/simpletexting.js +45 -45
- package/dist/utils/sliders.d.ts +4 -4
- package/dist/utils/sliders.js +24 -24
- package/dist/utils/string.d.ts +16 -16
- package/dist/utils/string.js +192 -192
- package/dist/utils/tcgService.d.ts +88 -88
- package/dist/utils/tcgService.js +408 -408
- package/dist/utils/tools.d.ts +5 -5
- package/dist/utils/tools.js +13 -13
- package/dist/utils/transferRequests.d.ts +43 -43
- package/dist/utils/transferRequests.js +67 -67
- package/dist/utils/update.d.ts +7 -7
- package/dist/utils/update.js +137 -137
- package/dist/utils/weight.d.ts +3 -3
- package/dist/utils/weight.js +16 -16
- package/dist/utils/zones.d.ts +11 -11
- package/dist/utils/zones.js +218 -218
- package/package.json +107 -107
- package/publish.sh +143 -143
- package/readme.md +182 -182
|
@@ -1,504 +1,504 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const Attribute_1 = require("../../Interfaces/Attribute");
|
|
7
|
-
const Declination_1 = require("../../Interfaces/Declination");
|
|
8
|
-
const IExternalService_1 = require("../../Interfaces/Space/IExternalService");
|
|
9
|
-
const TCG_1 = require("../../Interfaces/TCG");
|
|
10
|
-
const Category_1 = __importDefault(require("../../lib/Category"));
|
|
11
|
-
const locale_1 = require("../../utils/locale");
|
|
12
|
-
const object_1 = require("../../utils/object");
|
|
13
|
-
const string_1 = require("../../utils/string");
|
|
14
|
-
const DatabaseService_1 = __importDefault(require("../database/DatabaseService"));
|
|
15
|
-
const BaseClass_1 = __importDefault(require("./BaseClass"));
|
|
16
|
-
const tcg_formats = [
|
|
17
|
-
// all size in cm and weight in kg
|
|
18
|
-
{
|
|
19
|
-
name: { fr: 'Carte seule', en: 'Single card' },
|
|
20
|
-
slug: TCG_1.TCGProductFormatsEnum.CARD,
|
|
21
|
-
width: 6.4,
|
|
22
|
-
length: 0.1,
|
|
23
|
-
height: 8.9,
|
|
24
|
-
weight: 0.002
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
name: { fr: 'Booster pack', en: 'Booster pack' },
|
|
28
|
-
slug: TCG_1.TCGProductFormatsEnum.PACK,
|
|
29
|
-
width: 9.6,
|
|
30
|
-
length: 0.25,
|
|
31
|
-
height: 17.3,
|
|
32
|
-
weight: 0.023
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
name: { fr: 'Bundle et autres', en: 'Bundle and others' },
|
|
36
|
-
slug: TCG_1.TCGProductFormatsEnum.BUNDLE,
|
|
37
|
-
width: 13.46,
|
|
38
|
-
length: 5.1,
|
|
39
|
-
height: 10.16,
|
|
40
|
-
weight: 0.63
|
|
41
|
-
}
|
|
42
|
-
];
|
|
43
|
-
class TCGServiceClass extends BaseClass_1.default {
|
|
44
|
-
constructor(space, orgId) {
|
|
45
|
-
super(space, orgId, IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE);
|
|
46
|
-
this.getNmCondition = () => {
|
|
47
|
-
const nmAttrib = this._attributes.find((x) => x.slug == TCG_1.TCGAttributesEnum.CONDITION);
|
|
48
|
-
if (!nmAttrib)
|
|
49
|
-
return undefined;
|
|
50
|
-
const nmValue = nmAttrib.values.find((x) => x.slug == 'tgc_cond_nm');
|
|
51
|
-
if (!nmValue)
|
|
52
|
-
return undefined;
|
|
53
|
-
return Object.assign(Object.assign({}, nmAttrib), { values: [nmValue] });
|
|
54
|
-
};
|
|
55
|
-
this.getEnglishLanguage = () => {
|
|
56
|
-
const enAttrib = this._attributes.find((x) => x.slug == TCG_1.TCGAttributesEnum.LANG);
|
|
57
|
-
if (!enAttrib)
|
|
58
|
-
return undefined;
|
|
59
|
-
const enValue = enAttrib.values.find((x) => x.slug == 'tcg_lang_en');
|
|
60
|
-
if (!enValue)
|
|
61
|
-
return undefined;
|
|
62
|
-
return Object.assign(Object.assign({}, enAttrib), { values: [enValue] });
|
|
63
|
-
};
|
|
64
|
-
this.getSingleType = () => {
|
|
65
|
-
const stAttrib = this._attributes.find((x) => x.slug == TCG_1.TCGAttributesEnum.TYPE);
|
|
66
|
-
if (!stAttrib)
|
|
67
|
-
return undefined;
|
|
68
|
-
const stValue = stAttrib.values.find((x) => x.slug == TCG_1.TCGProductFormatsEnum.SINGLE);
|
|
69
|
-
if (!stValue)
|
|
70
|
-
return undefined;
|
|
71
|
-
return Object.assign(Object.assign({}, stAttrib), { values: [stValue] });
|
|
72
|
-
};
|
|
73
|
-
//#endregion
|
|
74
|
-
//#region Private functions
|
|
75
|
-
this._convertCardGameToGenericSupplier = (cardgame) => {
|
|
76
|
-
return {
|
|
77
|
-
id: cardgame.id,
|
|
78
|
-
slug: cardgame.slug,
|
|
79
|
-
name: [
|
|
80
|
-
{ lang: 'fr', value: cardgame.name_fr },
|
|
81
|
-
{ lang: 'en', value: cardgame.name_en }
|
|
82
|
-
],
|
|
83
|
-
description: [
|
|
84
|
-
{ lang: 'fr', value: cardgame.description_fr },
|
|
85
|
-
{ lang: 'en', value: cardgame.description_en }
|
|
86
|
-
],
|
|
87
|
-
image: !!cardgame.img_url ? { img_path: cardgame.img_url } : null
|
|
88
|
-
};
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
//#region BaseClass Implementation
|
|
92
|
-
async getAllSuppliers() {
|
|
93
|
-
try {
|
|
94
|
-
const resultJson = await this.fetchApi(`/tcg/cardGames`);
|
|
95
|
-
if (!resultJson || this.isErrorResult(resultJson))
|
|
96
|
-
throw new Error(resultJson.error || 'Could not fetch data');
|
|
97
|
-
return resultJson.map((game) => this._convertCardGameToGenericSupplier(game));
|
|
98
|
-
}
|
|
99
|
-
catch (e) {
|
|
100
|
-
console.log('Error on fetching suppliers: ', e.toString());
|
|
101
|
-
return [];
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
async getSupplierBySlug(slug) {
|
|
105
|
-
try {
|
|
106
|
-
const resultJson = await this.fetchApi(`/tcg/cardGames/${slug}`);
|
|
107
|
-
if (!!!resultJson || this.isErrorResult(resultJson))
|
|
108
|
-
throw new Error(resultJson.error || 'Could not fetch data');
|
|
109
|
-
return this._convertCardGameToGenericSupplier(resultJson);
|
|
110
|
-
}
|
|
111
|
-
catch (e) {
|
|
112
|
-
console.log('Error on fetching supplier by slug: ', e.toString());
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
// NOTE - Categories are not "true categories". Constructed from suppliers selected by user for space
|
|
117
|
-
async getCategories() {
|
|
118
|
-
const converted = [];
|
|
119
|
-
const externalService = await super.getExternalServiceData(IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE);
|
|
120
|
-
if (!!!externalService)
|
|
121
|
-
throw new Error('Could not find service');
|
|
122
|
-
// Only keep going if property external_service_params.cardgame_slugs is set
|
|
123
|
-
const newCardGameValues = (0, object_1.recursiveCheckObject)(externalService, 'external_service_params.cardgame_slugs');
|
|
124
|
-
if (typeof newCardGameValues != 'undefined') {
|
|
125
|
-
for (let slug of newCardGameValues) {
|
|
126
|
-
try {
|
|
127
|
-
const dataFetch = await this.getSupplierBySlug(slug);
|
|
128
|
-
if (!!!dataFetch)
|
|
129
|
-
throw new Error();
|
|
130
|
-
const desc = dataFetch.description || [
|
|
131
|
-
{ lang: 'fr', value: '' },
|
|
132
|
-
{ lang: 'en', value: '' }
|
|
133
|
-
];
|
|
134
|
-
converted.push({
|
|
135
|
-
id: dataFetch.slug,
|
|
136
|
-
name: dataFetch.name,
|
|
137
|
-
slug: dataFetch.slug,
|
|
138
|
-
description: desc,
|
|
139
|
-
image: dataFetch.image || undefined,
|
|
140
|
-
seo_info: { seoTitle: dataFetch.name, seoDescription: desc, seoImage: dataFetch.image || undefined },
|
|
141
|
-
created_from_external_service: IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
catch (e) {
|
|
145
|
-
console.log('Error on converting slug');
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
return converted;
|
|
150
|
-
}
|
|
151
|
-
async getBrands() {
|
|
152
|
-
var _a, _b, _c, _d;
|
|
153
|
-
const converted = [];
|
|
154
|
-
// Only keep going if property external_service_params.cardgame_slugs is set
|
|
155
|
-
const externalService = await super.getExternalServiceData(IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE);
|
|
156
|
-
if (!!!externalService)
|
|
157
|
-
throw new Error('Could not find service');
|
|
158
|
-
const newCardGameValues = (0, object_1.recursiveCheckObject)(externalService, 'external_service_params.cardgame_slugs');
|
|
159
|
-
if (typeof newCardGameValues != 'undefined') {
|
|
160
|
-
const supplier = await this.fetchApi(`/tcg/cardGames`, externalService);
|
|
161
|
-
if (this.isErrorResult(supplier))
|
|
162
|
-
throw new Error('Could not fetch suppliers info');
|
|
163
|
-
const brands = await this.fetchApi(`/tcg/brands`, externalService);
|
|
164
|
-
if (this.isErrorResult(brands))
|
|
165
|
-
throw new Error('Could not fetch brands info');
|
|
166
|
-
for (let slug of newCardGameValues) {
|
|
167
|
-
const brandSlug = supplier.reduce((prev, sup) => {
|
|
168
|
-
return sup.slug == slug ? sup.brand_slug : prev;
|
|
169
|
-
}, undefined);
|
|
170
|
-
const thisBrand = brands.find((b) => b.slug == brandSlug);
|
|
171
|
-
if (thisBrand) {
|
|
172
|
-
converted.push({
|
|
173
|
-
created_from_external_service: IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE,
|
|
174
|
-
slug: thisBrand.slug,
|
|
175
|
-
name: [
|
|
176
|
-
{ lang: 'fr', value: thisBrand.name_fr },
|
|
177
|
-
{ lang: 'en', value: thisBrand.name_en }
|
|
178
|
-
],
|
|
179
|
-
description: [
|
|
180
|
-
{ lang: 'fr', value: (_a = thisBrand.description_fr) !== null && _a !== void 0 ? _a : '' },
|
|
181
|
-
{ lang: 'en', value: (_b = thisBrand.description_en) !== null && _b !== void 0 ? _b : '' }
|
|
182
|
-
],
|
|
183
|
-
image: !!thisBrand.img_url ? { img_path: thisBrand.img_url } : undefined,
|
|
184
|
-
id: thisBrand.slug,
|
|
185
|
-
seo_info: {
|
|
186
|
-
seoTitle: [
|
|
187
|
-
{ lang: 'fr', value: thisBrand.name_fr },
|
|
188
|
-
{ lang: 'en', value: thisBrand.name_en }
|
|
189
|
-
],
|
|
190
|
-
seoDescription: [
|
|
191
|
-
{ lang: 'fr', value: (_c = thisBrand.description_fr) !== null && _c !== void 0 ? _c : '' },
|
|
192
|
-
{ lang: 'en', value: (_d = thisBrand.description_en) !== null && _d !== void 0 ? _d : '' }
|
|
193
|
-
],
|
|
194
|
-
seoImage: !!thisBrand.img_url ? { img_path: thisBrand.img_url } : undefined
|
|
195
|
-
}
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
return converted;
|
|
201
|
-
}
|
|
202
|
-
async getAttributes() {
|
|
203
|
-
var _a, _b;
|
|
204
|
-
const converted = [];
|
|
205
|
-
// Only keep going if property external_service_params.cardgame_slugs is set
|
|
206
|
-
const externalService = await super.getExternalServiceData(IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE);
|
|
207
|
-
if (!!!externalService)
|
|
208
|
-
throw new Error('Could not find service');
|
|
209
|
-
const newCardGameValues = (0, object_1.recursiveCheckObject)(externalService, 'external_service_params.cardgame_slugs');
|
|
210
|
-
if (typeof newCardGameValues != 'undefined') {
|
|
211
|
-
const supplierSlugs = newCardGameValues.map((s) => 'cardGameSlugs=' + s).join('&');
|
|
212
|
-
if (supplierSlugs) {
|
|
213
|
-
const attribs = await this.fetchApi(`/tcg/attributes?${supplierSlugs}`, externalService);
|
|
214
|
-
if (this.isErrorResult(attribs))
|
|
215
|
-
throw new Error('Could not fetch attributes info');
|
|
216
|
-
for (let attrib of attribs) {
|
|
217
|
-
converted.push({
|
|
218
|
-
created_from_external_service: IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE,
|
|
219
|
-
description: [
|
|
220
|
-
{ lang: 'fr', value: (_a = attrib.description_fr) !== null && _a !== void 0 ? _a : '' },
|
|
221
|
-
{ lang: 'en', value: (_b = attrib.description_en) !== null && _b !== void 0 ? _b : '' }
|
|
222
|
-
],
|
|
223
|
-
is_facet: true,
|
|
224
|
-
is_multiple: false,
|
|
225
|
-
is_searchable: false,
|
|
226
|
-
name: [
|
|
227
|
-
{ lang: 'fr', value: attrib.name_fr },
|
|
228
|
-
{ lang: 'en', value: attrib.name_en }
|
|
229
|
-
],
|
|
230
|
-
id: attrib.slug,
|
|
231
|
-
slug: attrib.slug,
|
|
232
|
-
type: Attribute_1.AttributeTypeEnum.STRING,
|
|
233
|
-
values: attrib.attributeValues.map((v) => ({
|
|
234
|
-
slug: v.slug,
|
|
235
|
-
value: [
|
|
236
|
-
{ lang: 'fr', value: v.name_fr },
|
|
237
|
-
{ lang: 'en', value: v.name_en }
|
|
238
|
-
],
|
|
239
|
-
default_tag: v.default_tag,
|
|
240
|
-
is_external: true,
|
|
241
|
-
associated_to: v.game_slug_csv.split(','),
|
|
242
|
-
other_details: v.image_url ? { image: v.image_url } : undefined
|
|
243
|
-
}))
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
return converted;
|
|
249
|
-
}
|
|
250
|
-
async getProduct(_slug, space) {
|
|
251
|
-
var _a;
|
|
252
|
-
if (space)
|
|
253
|
-
this._spaceData = space;
|
|
254
|
-
const product = await this.fetchApi('/tcg/cards/' + encodeURI(_slug));
|
|
255
|
-
if (this.isErrorResult(product)) {
|
|
256
|
-
if (product.status == 'not_found')
|
|
257
|
-
return;
|
|
258
|
-
throw new Error(product.error);
|
|
259
|
-
}
|
|
260
|
-
await this.getEcommAttributes();
|
|
261
|
-
// create default attributes
|
|
262
|
-
const attributes = [];
|
|
263
|
-
const setAttr = this._attributes.find((x) => x.slug == TCG_1.TCGAttributesEnum.SET);
|
|
264
|
-
const setAttributeValue = setAttr ? this.getSetsAttribute(product.setSlug, setAttr) : undefined;
|
|
265
|
-
for (const attr of this._attributes) {
|
|
266
|
-
attributes.push({
|
|
267
|
-
attribute_id: attr.id,
|
|
268
|
-
attribute_name: attr.name,
|
|
269
|
-
is_multiple: false,
|
|
270
|
-
values: [],
|
|
271
|
-
default_value: attr.id == TCG_1.TCGAttributesEnum.SET ? setAttributeValue : undefined
|
|
272
|
-
});
|
|
273
|
-
}
|
|
274
|
-
// get all price type and other values needed
|
|
275
|
-
const finishes = this.getPricesAndType(product);
|
|
276
|
-
const shippingInfo = await this.getShippingInfo(product);
|
|
277
|
-
const finishAttrib = this._attributes.find((x) => x.slug == TCG_1.TCGAttributesEnum.FINISH);
|
|
278
|
-
const productTypeAttrib = this._attributes.find((x) => x.slug == TCG_1.TCGAttributesEnum.TYPE);
|
|
279
|
-
const nmAttrib = this.getNmCondition();
|
|
280
|
-
const enAttrib = this.getEnglishLanguage();
|
|
281
|
-
const stAttrib = this.getSingleType();
|
|
282
|
-
const categoryPath = `/the_beast/1.0.0/orgs/${this._orgId}/spaces/${this._spaceId}/categories`;
|
|
283
|
-
const categoryData = await DatabaseService_1.default.getDocument(categoryPath, product.category);
|
|
284
|
-
if (!categoryData.exists)
|
|
285
|
-
throw new Error('Category not found, unable to continue');
|
|
286
|
-
const category = new Category_1.default(categoryData.data, { path: categoryPath }, this._serviceSlug);
|
|
287
|
-
// create min declination
|
|
288
|
-
const declinations = [];
|
|
289
|
-
if (product.isSingle) {
|
|
290
|
-
for (const finish of finishes) {
|
|
291
|
-
const attrib = {
|
|
292
|
-
attribute_id: TCG_1.TCGAttributesEnum.FINISH,
|
|
293
|
-
values: [
|
|
294
|
-
{
|
|
295
|
-
slug: finish.subType,
|
|
296
|
-
value: [
|
|
297
|
-
{ lang: 'fr', value: finish.subType },
|
|
298
|
-
{ lang: 'en', value: finish.subType }
|
|
299
|
-
],
|
|
300
|
-
default_tag: (0, string_1.string_to_slug)(finish.subType)
|
|
301
|
-
}
|
|
302
|
-
]
|
|
303
|
-
};
|
|
304
|
-
if (finishAttrib) {
|
|
305
|
-
const val = finishAttrib.values.find((x) => x.slug == finish.subType);
|
|
306
|
-
if (val)
|
|
307
|
-
attrib.values = [val];
|
|
308
|
-
}
|
|
309
|
-
const usedAttributes = [];
|
|
310
|
-
if (nmAttrib)
|
|
311
|
-
usedAttributes.push(nmAttrib);
|
|
312
|
-
if (enAttrib)
|
|
313
|
-
usedAttributes.push(enAttrib);
|
|
314
|
-
if (stAttrib)
|
|
315
|
-
usedAttributes.push(stAttrib);
|
|
316
|
-
const finishDeclis = BaseClass_1.default.createRecursiveAddioDeclinations(product.category, product.slug, shippingInfo, !!setAttributeValue ? { attribute_id: TCG_1.TCGAttributesEnum.SET, values: [setAttributeValue] } : undefined, [attrib], usedAttributes, this._serviceSlug);
|
|
317
|
-
declinations.push(...finishDeclis.map((d) => {
|
|
318
|
-
const newPrice = category.costPriceRule(finish.price, d, 'sell');
|
|
319
|
-
return Object.assign(Object.assign({}, d), { price: Object.assign(Object.assign({}, d.price), { regular: { amount: newPrice }, pdsf: { amount: finish.price } }), image_files: [] });
|
|
320
|
-
}));
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
else {
|
|
324
|
-
//créer une declination
|
|
325
|
-
const productType = (_a = product.attributes.find((attr) => attr.name === 'ProductType')) === null || _a === void 0 ? void 0 : _a.value;
|
|
326
|
-
const tcgProductType = productType ? `tcg_${productType}` : 'tcg_other';
|
|
327
|
-
const attrib = {
|
|
328
|
-
attribute_id: TCG_1.TCGAttributesEnum.TYPE,
|
|
329
|
-
values: [
|
|
330
|
-
{
|
|
331
|
-
slug: tcgProductType,
|
|
332
|
-
value: [
|
|
333
|
-
{ lang: 'fr', value: tcgProductType },
|
|
334
|
-
{ lang: 'en', value: tcgProductType }
|
|
335
|
-
],
|
|
336
|
-
default_tag: undefined
|
|
337
|
-
}
|
|
338
|
-
]
|
|
339
|
-
};
|
|
340
|
-
if (productTypeAttrib) {
|
|
341
|
-
const val = productTypeAttrib.values.find((x) => x.slug == tcgProductType);
|
|
342
|
-
if (val)
|
|
343
|
-
attrib.values = [val];
|
|
344
|
-
}
|
|
345
|
-
const declination = [
|
|
346
|
-
Object.assign(Object.assign({}, (0, Declination_1.emptyDeclination)()), { attributes: [
|
|
347
|
-
attrib,
|
|
348
|
-
...(setAttributeValue ? [{ attribute_id: TCG_1.TCGAttributesEnum.SET, values: [setAttributeValue] }] : [])
|
|
349
|
-
], discount_rules: [], image_files: [], name: [
|
|
350
|
-
{ lang: 'fr', value: product.name.fr },
|
|
351
|
-
{ lang: 'en', value: product.name.en }
|
|
352
|
-
], created_from_external_service: this._serviceSlug, slug: product.slug, sku: product.slug + '_' + (productType ? productType : 'other'), price: { regular: { amount: 0 } }, shipping_info: shippingInfo, description: [] })
|
|
353
|
-
];
|
|
354
|
-
const images = product.images.map((x) => ({ img_path: x }));
|
|
355
|
-
declinations.push(...declination.map((d) => {
|
|
356
|
-
var _a, _b, _c, _d;
|
|
357
|
-
return Object.assign(Object.assign({}, d), { price: Object.assign(Object.assign({}, d.price), { regular: { amount: (_b = (_a = finishes === null || finishes === void 0 ? void 0 : finishes[0]) === null || _a === void 0 ? void 0 : _a.price) !== null && _b !== void 0 ? _b : 0 }, pdsf: { amount: (_d = (_c = finishes === null || finishes === void 0 ? void 0 : finishes[0]) === null || _c === void 0 ? void 0 : _c.price) !== null && _d !== void 0 ? _d : 0 } }), image_files: images });
|
|
358
|
-
}));
|
|
359
|
-
}
|
|
360
|
-
let tcgAttributes = {};
|
|
361
|
-
for (let a of product.attributes) {
|
|
362
|
-
tcgAttributes = Object.assign(Object.assign({}, tcgAttributes), { [`${a.name}`]: a.value });
|
|
363
|
-
}
|
|
364
|
-
return {
|
|
365
|
-
draft: false,
|
|
366
|
-
name: [
|
|
367
|
-
{ lang: 'fr', value: product.name.fr },
|
|
368
|
-
{ lang: 'en', value: product.name.en }
|
|
369
|
-
],
|
|
370
|
-
slug: product.slug,
|
|
371
|
-
brand: product.brandSlug,
|
|
372
|
-
category: product.category,
|
|
373
|
-
is_hidden_in_client_pos: !product.isSingle,
|
|
374
|
-
is_presale: product.isPresale,
|
|
375
|
-
release_date: product.releaseDate,
|
|
376
|
-
created_from_external_service: IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE,
|
|
377
|
-
description: [
|
|
378
|
-
{ lang: 'fr', value: product.description.fr },
|
|
379
|
-
{ lang: 'en', value: product.description.en }
|
|
380
|
-
],
|
|
381
|
-
id: product.slug,
|
|
382
|
-
product_attributes: attributes,
|
|
383
|
-
image_files: product.images.map((x) => ({ img_path: x })),
|
|
384
|
-
declinations: declinations,
|
|
385
|
-
seo_info: {
|
|
386
|
-
seoTitle: [
|
|
387
|
-
{ lang: 'fr', value: product.name.fr },
|
|
388
|
-
{ lang: 'en', value: product.name.en }
|
|
389
|
-
],
|
|
390
|
-
seoDescription: [
|
|
391
|
-
{ lang: 'fr', value: product.description.fr },
|
|
392
|
-
{ lang: 'en', value: product.description.en }
|
|
393
|
-
],
|
|
394
|
-
seoImage: product.images.length > 0 ? { img_path: product.images[0] } : undefined
|
|
395
|
-
},
|
|
396
|
-
default_size: shippingInfo.shipping_details,
|
|
397
|
-
tcg_attributes: tcgAttributes
|
|
398
|
-
};
|
|
399
|
-
}
|
|
400
|
-
async getPredefinedFormats(locale) {
|
|
401
|
-
return tcg_formats.map((x) => (Object.assign(Object.assign({}, x), { dimension_unit: 'centimeters', weight_unit: 'kilograms', name: (0, locale_1.translateILang)(x.name, locale) })));
|
|
402
|
-
}
|
|
403
|
-
//#endregion
|
|
404
|
-
//#region Class specific function
|
|
405
|
-
async getExternalServiceSupplierSlugs() {
|
|
406
|
-
const externalService = await super.getExternalServiceData(IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE);
|
|
407
|
-
if (!!!externalService)
|
|
408
|
-
throw new Error('Could not find service');
|
|
409
|
-
return (0, object_1.recursiveCheckObject)(externalService, 'external_service_params.cardgame_slugs');
|
|
410
|
-
}
|
|
411
|
-
async getExternalServiceBaseParentCategory() {
|
|
412
|
-
const externalService = await super.getExternalServiceData(IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE);
|
|
413
|
-
if (!!!externalService)
|
|
414
|
-
throw new Error('Could not find service');
|
|
415
|
-
return (0, object_1.recursiveCheckObject)(externalService, 'external_service_params.default_parent_cat');
|
|
416
|
-
}
|
|
417
|
-
async fetchApi(endpoint, externalService) {
|
|
418
|
-
if (!externalService) {
|
|
419
|
-
externalService = await super.getExternalServiceData(IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE);
|
|
420
|
-
if (!!!externalService)
|
|
421
|
-
throw new Error('Could not find service');
|
|
422
|
-
}
|
|
423
|
-
const urlToUse = externalService.external_service_infos.api_url;
|
|
424
|
-
const query = await fetch(`${urlToUse}${endpoint}`, {
|
|
425
|
-
method: 'GET',
|
|
426
|
-
headers: { 'x-tcg-token': process.env.NEXT_PUBLIC_TCG_API_TOKEN || '' }
|
|
427
|
-
});
|
|
428
|
-
return (await query.json());
|
|
429
|
-
}
|
|
430
|
-
isErrorResult(obj) {
|
|
431
|
-
return obj.status !== undefined;
|
|
432
|
-
}
|
|
433
|
-
async getEcommAttributes() {
|
|
434
|
-
if (this._attributes)
|
|
435
|
-
return;
|
|
436
|
-
const docs = await DatabaseService_1.default.getDocuments(`/the_beast/1.0.0/orgs/${this._orgId}/spaces/${this._spaceId}/attributes`);
|
|
437
|
-
this._attributes = docs
|
|
438
|
-
.map((x) => x.data)
|
|
439
|
-
.filter((x) => !x.draft && x.created_from_external_service == this._serviceSlug);
|
|
440
|
-
}
|
|
441
|
-
getSetsAttribute(slug, attr) {
|
|
442
|
-
const entry = attr.values.find((x) => x.slug == slug);
|
|
443
|
-
return {
|
|
444
|
-
slug: slug,
|
|
445
|
-
value: entry
|
|
446
|
-
? entry.value
|
|
447
|
-
: [
|
|
448
|
-
{ lang: 'fr', value: slug },
|
|
449
|
-
{ lang: 'en', value: slug }
|
|
450
|
-
]
|
|
451
|
-
};
|
|
452
|
-
}
|
|
453
|
-
getPricesAndType(card) {
|
|
454
|
-
const result = [];
|
|
455
|
-
if (card.priceHistory.length == 0 || card.priceHistory[0].prices.length == 0)
|
|
456
|
-
return [{ price: 0, subType: 'normal' }]; // no price, no history... edge case
|
|
457
|
-
let lastDate = '';
|
|
458
|
-
for (let p of card.priceHistory[0].prices) {
|
|
459
|
-
if (!lastDate || lastDate == p.date) {
|
|
460
|
-
lastDate = p.date;
|
|
461
|
-
const subT = (p.subType || 'normal').toLowerCase();
|
|
462
|
-
if (!result.some((x) => x.subType == subT)) {
|
|
463
|
-
result.push({ price: Number(p.market), subType: subT });
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
return result;
|
|
468
|
-
}
|
|
469
|
-
async getShippingInfo(card) {
|
|
470
|
-
const isPack = card.attributes.some((x) => x.name.toLowerCase() == 'producttype' && x.value == 'sealed_booster_packs');
|
|
471
|
-
const formatSlug = card.isSingle
|
|
472
|
-
? TCG_1.TCGProductFormatsEnum.CARD
|
|
473
|
-
: isPack
|
|
474
|
-
? TCG_1.TCGProductFormatsEnum.PACK
|
|
475
|
-
: TCG_1.TCGProductFormatsEnum.BUNDLE;
|
|
476
|
-
let format = tcg_formats.find((x) => x.slug == formatSlug);
|
|
477
|
-
// use the predeterminated formats of the space if available
|
|
478
|
-
const spaceData = await this.getSpaceData();
|
|
479
|
-
if (spaceData.transport_preferences.predefined_products) {
|
|
480
|
-
const box = spaceData.transport_preferences.predefined_products.find((x) => x.slug == formatSlug);
|
|
481
|
-
if (box)
|
|
482
|
-
return {
|
|
483
|
-
unit_measurments: 'centimeters',
|
|
484
|
-
unit_weight: 'kilograms',
|
|
485
|
-
height: box.height,
|
|
486
|
-
length: box.length,
|
|
487
|
-
width: box.width,
|
|
488
|
-
weight: box.weight,
|
|
489
|
-
shipping_details: formatSlug
|
|
490
|
-
};
|
|
491
|
-
}
|
|
492
|
-
return {
|
|
493
|
-
unit_measurments: 'centimeters',
|
|
494
|
-
unit_weight: 'kilograms',
|
|
495
|
-
height: format.height,
|
|
496
|
-
length: format.length,
|
|
497
|
-
width: format.width,
|
|
498
|
-
weight: format.weight,
|
|
499
|
-
shipping_details: formatSlug
|
|
500
|
-
};
|
|
501
|
-
}
|
|
502
|
-
}
|
|
503
|
-
exports.default = TCGServiceClass;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const Attribute_1 = require("../../Interfaces/Attribute");
|
|
7
|
+
const Declination_1 = require("../../Interfaces/Declination");
|
|
8
|
+
const IExternalService_1 = require("../../Interfaces/Space/IExternalService");
|
|
9
|
+
const TCG_1 = require("../../Interfaces/TCG");
|
|
10
|
+
const Category_1 = __importDefault(require("../../lib/Category"));
|
|
11
|
+
const locale_1 = require("../../utils/locale");
|
|
12
|
+
const object_1 = require("../../utils/object");
|
|
13
|
+
const string_1 = require("../../utils/string");
|
|
14
|
+
const DatabaseService_1 = __importDefault(require("../database/DatabaseService"));
|
|
15
|
+
const BaseClass_1 = __importDefault(require("./BaseClass"));
|
|
16
|
+
const tcg_formats = [
|
|
17
|
+
// all size in cm and weight in kg
|
|
18
|
+
{
|
|
19
|
+
name: { fr: 'Carte seule', en: 'Single card' },
|
|
20
|
+
slug: TCG_1.TCGProductFormatsEnum.CARD,
|
|
21
|
+
width: 6.4,
|
|
22
|
+
length: 0.1,
|
|
23
|
+
height: 8.9,
|
|
24
|
+
weight: 0.002
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: { fr: 'Booster pack', en: 'Booster pack' },
|
|
28
|
+
slug: TCG_1.TCGProductFormatsEnum.PACK,
|
|
29
|
+
width: 9.6,
|
|
30
|
+
length: 0.25,
|
|
31
|
+
height: 17.3,
|
|
32
|
+
weight: 0.023
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: { fr: 'Bundle et autres', en: 'Bundle and others' },
|
|
36
|
+
slug: TCG_1.TCGProductFormatsEnum.BUNDLE,
|
|
37
|
+
width: 13.46,
|
|
38
|
+
length: 5.1,
|
|
39
|
+
height: 10.16,
|
|
40
|
+
weight: 0.63
|
|
41
|
+
}
|
|
42
|
+
];
|
|
43
|
+
class TCGServiceClass extends BaseClass_1.default {
|
|
44
|
+
constructor(space, orgId) {
|
|
45
|
+
super(space, orgId, IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE);
|
|
46
|
+
this.getNmCondition = () => {
|
|
47
|
+
const nmAttrib = this._attributes.find((x) => x.slug == TCG_1.TCGAttributesEnum.CONDITION);
|
|
48
|
+
if (!nmAttrib)
|
|
49
|
+
return undefined;
|
|
50
|
+
const nmValue = nmAttrib.values.find((x) => x.slug == 'tgc_cond_nm');
|
|
51
|
+
if (!nmValue)
|
|
52
|
+
return undefined;
|
|
53
|
+
return Object.assign(Object.assign({}, nmAttrib), { values: [nmValue] });
|
|
54
|
+
};
|
|
55
|
+
this.getEnglishLanguage = () => {
|
|
56
|
+
const enAttrib = this._attributes.find((x) => x.slug == TCG_1.TCGAttributesEnum.LANG);
|
|
57
|
+
if (!enAttrib)
|
|
58
|
+
return undefined;
|
|
59
|
+
const enValue = enAttrib.values.find((x) => x.slug == 'tcg_lang_en');
|
|
60
|
+
if (!enValue)
|
|
61
|
+
return undefined;
|
|
62
|
+
return Object.assign(Object.assign({}, enAttrib), { values: [enValue] });
|
|
63
|
+
};
|
|
64
|
+
this.getSingleType = () => {
|
|
65
|
+
const stAttrib = this._attributes.find((x) => x.slug == TCG_1.TCGAttributesEnum.TYPE);
|
|
66
|
+
if (!stAttrib)
|
|
67
|
+
return undefined;
|
|
68
|
+
const stValue = stAttrib.values.find((x) => x.slug == TCG_1.TCGProductFormatsEnum.SINGLE);
|
|
69
|
+
if (!stValue)
|
|
70
|
+
return undefined;
|
|
71
|
+
return Object.assign(Object.assign({}, stAttrib), { values: [stValue] });
|
|
72
|
+
};
|
|
73
|
+
//#endregion
|
|
74
|
+
//#region Private functions
|
|
75
|
+
this._convertCardGameToGenericSupplier = (cardgame) => {
|
|
76
|
+
return {
|
|
77
|
+
id: cardgame.id,
|
|
78
|
+
slug: cardgame.slug,
|
|
79
|
+
name: [
|
|
80
|
+
{ lang: 'fr', value: cardgame.name_fr },
|
|
81
|
+
{ lang: 'en', value: cardgame.name_en }
|
|
82
|
+
],
|
|
83
|
+
description: [
|
|
84
|
+
{ lang: 'fr', value: cardgame.description_fr },
|
|
85
|
+
{ lang: 'en', value: cardgame.description_en }
|
|
86
|
+
],
|
|
87
|
+
image: !!cardgame.img_url ? { img_path: cardgame.img_url } : null
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
//#region BaseClass Implementation
|
|
92
|
+
async getAllSuppliers() {
|
|
93
|
+
try {
|
|
94
|
+
const resultJson = await this.fetchApi(`/tcg/cardGames`);
|
|
95
|
+
if (!resultJson || this.isErrorResult(resultJson))
|
|
96
|
+
throw new Error(resultJson.error || 'Could not fetch data');
|
|
97
|
+
return resultJson.map((game) => this._convertCardGameToGenericSupplier(game));
|
|
98
|
+
}
|
|
99
|
+
catch (e) {
|
|
100
|
+
console.log('Error on fetching suppliers: ', e.toString());
|
|
101
|
+
return [];
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
async getSupplierBySlug(slug) {
|
|
105
|
+
try {
|
|
106
|
+
const resultJson = await this.fetchApi(`/tcg/cardGames/${slug}`);
|
|
107
|
+
if (!!!resultJson || this.isErrorResult(resultJson))
|
|
108
|
+
throw new Error(resultJson.error || 'Could not fetch data');
|
|
109
|
+
return this._convertCardGameToGenericSupplier(resultJson);
|
|
110
|
+
}
|
|
111
|
+
catch (e) {
|
|
112
|
+
console.log('Error on fetching supplier by slug: ', e.toString());
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// NOTE - Categories are not "true categories". Constructed from suppliers selected by user for space
|
|
117
|
+
async getCategories() {
|
|
118
|
+
const converted = [];
|
|
119
|
+
const externalService = await super.getExternalServiceData(IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE);
|
|
120
|
+
if (!!!externalService)
|
|
121
|
+
throw new Error('Could not find service');
|
|
122
|
+
// Only keep going if property external_service_params.cardgame_slugs is set
|
|
123
|
+
const newCardGameValues = (0, object_1.recursiveCheckObject)(externalService, 'external_service_params.cardgame_slugs');
|
|
124
|
+
if (typeof newCardGameValues != 'undefined') {
|
|
125
|
+
for (let slug of newCardGameValues) {
|
|
126
|
+
try {
|
|
127
|
+
const dataFetch = await this.getSupplierBySlug(slug);
|
|
128
|
+
if (!!!dataFetch)
|
|
129
|
+
throw new Error();
|
|
130
|
+
const desc = dataFetch.description || [
|
|
131
|
+
{ lang: 'fr', value: '' },
|
|
132
|
+
{ lang: 'en', value: '' }
|
|
133
|
+
];
|
|
134
|
+
converted.push({
|
|
135
|
+
id: dataFetch.slug,
|
|
136
|
+
name: dataFetch.name,
|
|
137
|
+
slug: dataFetch.slug,
|
|
138
|
+
description: desc,
|
|
139
|
+
image: dataFetch.image || undefined,
|
|
140
|
+
seo_info: { seoTitle: dataFetch.name, seoDescription: desc, seoImage: dataFetch.image || undefined },
|
|
141
|
+
created_from_external_service: IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
catch (e) {
|
|
145
|
+
console.log('Error on converting slug');
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return converted;
|
|
150
|
+
}
|
|
151
|
+
async getBrands() {
|
|
152
|
+
var _a, _b, _c, _d;
|
|
153
|
+
const converted = [];
|
|
154
|
+
// Only keep going if property external_service_params.cardgame_slugs is set
|
|
155
|
+
const externalService = await super.getExternalServiceData(IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE);
|
|
156
|
+
if (!!!externalService)
|
|
157
|
+
throw new Error('Could not find service');
|
|
158
|
+
const newCardGameValues = (0, object_1.recursiveCheckObject)(externalService, 'external_service_params.cardgame_slugs');
|
|
159
|
+
if (typeof newCardGameValues != 'undefined') {
|
|
160
|
+
const supplier = await this.fetchApi(`/tcg/cardGames`, externalService);
|
|
161
|
+
if (this.isErrorResult(supplier))
|
|
162
|
+
throw new Error('Could not fetch suppliers info');
|
|
163
|
+
const brands = await this.fetchApi(`/tcg/brands`, externalService);
|
|
164
|
+
if (this.isErrorResult(brands))
|
|
165
|
+
throw new Error('Could not fetch brands info');
|
|
166
|
+
for (let slug of newCardGameValues) {
|
|
167
|
+
const brandSlug = supplier.reduce((prev, sup) => {
|
|
168
|
+
return sup.slug == slug ? sup.brand_slug : prev;
|
|
169
|
+
}, undefined);
|
|
170
|
+
const thisBrand = brands.find((b) => b.slug == brandSlug);
|
|
171
|
+
if (thisBrand) {
|
|
172
|
+
converted.push({
|
|
173
|
+
created_from_external_service: IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE,
|
|
174
|
+
slug: thisBrand.slug,
|
|
175
|
+
name: [
|
|
176
|
+
{ lang: 'fr', value: thisBrand.name_fr },
|
|
177
|
+
{ lang: 'en', value: thisBrand.name_en }
|
|
178
|
+
],
|
|
179
|
+
description: [
|
|
180
|
+
{ lang: 'fr', value: (_a = thisBrand.description_fr) !== null && _a !== void 0 ? _a : '' },
|
|
181
|
+
{ lang: 'en', value: (_b = thisBrand.description_en) !== null && _b !== void 0 ? _b : '' }
|
|
182
|
+
],
|
|
183
|
+
image: !!thisBrand.img_url ? { img_path: thisBrand.img_url } : undefined,
|
|
184
|
+
id: thisBrand.slug,
|
|
185
|
+
seo_info: {
|
|
186
|
+
seoTitle: [
|
|
187
|
+
{ lang: 'fr', value: thisBrand.name_fr },
|
|
188
|
+
{ lang: 'en', value: thisBrand.name_en }
|
|
189
|
+
],
|
|
190
|
+
seoDescription: [
|
|
191
|
+
{ lang: 'fr', value: (_c = thisBrand.description_fr) !== null && _c !== void 0 ? _c : '' },
|
|
192
|
+
{ lang: 'en', value: (_d = thisBrand.description_en) !== null && _d !== void 0 ? _d : '' }
|
|
193
|
+
],
|
|
194
|
+
seoImage: !!thisBrand.img_url ? { img_path: thisBrand.img_url } : undefined
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return converted;
|
|
201
|
+
}
|
|
202
|
+
async getAttributes() {
|
|
203
|
+
var _a, _b;
|
|
204
|
+
const converted = [];
|
|
205
|
+
// Only keep going if property external_service_params.cardgame_slugs is set
|
|
206
|
+
const externalService = await super.getExternalServiceData(IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE);
|
|
207
|
+
if (!!!externalService)
|
|
208
|
+
throw new Error('Could not find service');
|
|
209
|
+
const newCardGameValues = (0, object_1.recursiveCheckObject)(externalService, 'external_service_params.cardgame_slugs');
|
|
210
|
+
if (typeof newCardGameValues != 'undefined') {
|
|
211
|
+
const supplierSlugs = newCardGameValues.map((s) => 'cardGameSlugs=' + s).join('&');
|
|
212
|
+
if (supplierSlugs) {
|
|
213
|
+
const attribs = await this.fetchApi(`/tcg/attributes?${supplierSlugs}`, externalService);
|
|
214
|
+
if (this.isErrorResult(attribs))
|
|
215
|
+
throw new Error('Could not fetch attributes info');
|
|
216
|
+
for (let attrib of attribs) {
|
|
217
|
+
converted.push({
|
|
218
|
+
created_from_external_service: IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE,
|
|
219
|
+
description: [
|
|
220
|
+
{ lang: 'fr', value: (_a = attrib.description_fr) !== null && _a !== void 0 ? _a : '' },
|
|
221
|
+
{ lang: 'en', value: (_b = attrib.description_en) !== null && _b !== void 0 ? _b : '' }
|
|
222
|
+
],
|
|
223
|
+
is_facet: true,
|
|
224
|
+
is_multiple: false,
|
|
225
|
+
is_searchable: false,
|
|
226
|
+
name: [
|
|
227
|
+
{ lang: 'fr', value: attrib.name_fr },
|
|
228
|
+
{ lang: 'en', value: attrib.name_en }
|
|
229
|
+
],
|
|
230
|
+
id: attrib.slug,
|
|
231
|
+
slug: attrib.slug,
|
|
232
|
+
type: Attribute_1.AttributeTypeEnum.STRING,
|
|
233
|
+
values: attrib.attributeValues.map((v) => ({
|
|
234
|
+
slug: v.slug,
|
|
235
|
+
value: [
|
|
236
|
+
{ lang: 'fr', value: v.name_fr },
|
|
237
|
+
{ lang: 'en', value: v.name_en }
|
|
238
|
+
],
|
|
239
|
+
default_tag: v.default_tag,
|
|
240
|
+
is_external: true,
|
|
241
|
+
associated_to: v.game_slug_csv.split(','),
|
|
242
|
+
other_details: v.image_url ? { image: v.image_url } : undefined
|
|
243
|
+
}))
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
return converted;
|
|
249
|
+
}
|
|
250
|
+
async getProduct(_slug, space) {
|
|
251
|
+
var _a;
|
|
252
|
+
if (space)
|
|
253
|
+
this._spaceData = space;
|
|
254
|
+
const product = await this.fetchApi('/tcg/cards/' + encodeURI(_slug));
|
|
255
|
+
if (this.isErrorResult(product)) {
|
|
256
|
+
if (product.status == 'not_found')
|
|
257
|
+
return;
|
|
258
|
+
throw new Error(product.error);
|
|
259
|
+
}
|
|
260
|
+
await this.getEcommAttributes();
|
|
261
|
+
// create default attributes
|
|
262
|
+
const attributes = [];
|
|
263
|
+
const setAttr = this._attributes.find((x) => x.slug == TCG_1.TCGAttributesEnum.SET);
|
|
264
|
+
const setAttributeValue = setAttr ? this.getSetsAttribute(product.setSlug, setAttr) : undefined;
|
|
265
|
+
for (const attr of this._attributes) {
|
|
266
|
+
attributes.push({
|
|
267
|
+
attribute_id: attr.id,
|
|
268
|
+
attribute_name: attr.name,
|
|
269
|
+
is_multiple: false,
|
|
270
|
+
values: [],
|
|
271
|
+
default_value: attr.id == TCG_1.TCGAttributesEnum.SET ? setAttributeValue : undefined
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
// get all price type and other values needed
|
|
275
|
+
const finishes = this.getPricesAndType(product);
|
|
276
|
+
const shippingInfo = await this.getShippingInfo(product);
|
|
277
|
+
const finishAttrib = this._attributes.find((x) => x.slug == TCG_1.TCGAttributesEnum.FINISH);
|
|
278
|
+
const productTypeAttrib = this._attributes.find((x) => x.slug == TCG_1.TCGAttributesEnum.TYPE);
|
|
279
|
+
const nmAttrib = this.getNmCondition();
|
|
280
|
+
const enAttrib = this.getEnglishLanguage();
|
|
281
|
+
const stAttrib = this.getSingleType();
|
|
282
|
+
const categoryPath = `/the_beast/1.0.0/orgs/${this._orgId}/spaces/${this._spaceId}/categories`;
|
|
283
|
+
const categoryData = await DatabaseService_1.default.getDocument(categoryPath, product.category);
|
|
284
|
+
if (!categoryData.exists)
|
|
285
|
+
throw new Error('Category not found, unable to continue');
|
|
286
|
+
const category = new Category_1.default(categoryData.data, { path: categoryPath }, this._serviceSlug);
|
|
287
|
+
// create min declination
|
|
288
|
+
const declinations = [];
|
|
289
|
+
if (product.isSingle) {
|
|
290
|
+
for (const finish of finishes) {
|
|
291
|
+
const attrib = {
|
|
292
|
+
attribute_id: TCG_1.TCGAttributesEnum.FINISH,
|
|
293
|
+
values: [
|
|
294
|
+
{
|
|
295
|
+
slug: finish.subType,
|
|
296
|
+
value: [
|
|
297
|
+
{ lang: 'fr', value: finish.subType },
|
|
298
|
+
{ lang: 'en', value: finish.subType }
|
|
299
|
+
],
|
|
300
|
+
default_tag: (0, string_1.string_to_slug)(finish.subType)
|
|
301
|
+
}
|
|
302
|
+
]
|
|
303
|
+
};
|
|
304
|
+
if (finishAttrib) {
|
|
305
|
+
const val = finishAttrib.values.find((x) => x.slug == finish.subType);
|
|
306
|
+
if (val)
|
|
307
|
+
attrib.values = [val];
|
|
308
|
+
}
|
|
309
|
+
const usedAttributes = [];
|
|
310
|
+
if (nmAttrib)
|
|
311
|
+
usedAttributes.push(nmAttrib);
|
|
312
|
+
if (enAttrib)
|
|
313
|
+
usedAttributes.push(enAttrib);
|
|
314
|
+
if (stAttrib)
|
|
315
|
+
usedAttributes.push(stAttrib);
|
|
316
|
+
const finishDeclis = BaseClass_1.default.createRecursiveAddioDeclinations(product.category, product.slug, shippingInfo, !!setAttributeValue ? { attribute_id: TCG_1.TCGAttributesEnum.SET, values: [setAttributeValue] } : undefined, [attrib], usedAttributes, this._serviceSlug);
|
|
317
|
+
declinations.push(...finishDeclis.map((d) => {
|
|
318
|
+
const newPrice = category.costPriceRule(finish.price, d, 'sell');
|
|
319
|
+
return Object.assign(Object.assign({}, d), { price: Object.assign(Object.assign({}, d.price), { regular: { amount: newPrice }, pdsf: { amount: finish.price } }), image_files: [] });
|
|
320
|
+
}));
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
else {
|
|
324
|
+
//créer une declination
|
|
325
|
+
const productType = (_a = product.attributes.find((attr) => attr.name === 'ProductType')) === null || _a === void 0 ? void 0 : _a.value;
|
|
326
|
+
const tcgProductType = productType ? `tcg_${productType}` : 'tcg_other';
|
|
327
|
+
const attrib = {
|
|
328
|
+
attribute_id: TCG_1.TCGAttributesEnum.TYPE,
|
|
329
|
+
values: [
|
|
330
|
+
{
|
|
331
|
+
slug: tcgProductType,
|
|
332
|
+
value: [
|
|
333
|
+
{ lang: 'fr', value: tcgProductType },
|
|
334
|
+
{ lang: 'en', value: tcgProductType }
|
|
335
|
+
],
|
|
336
|
+
default_tag: undefined
|
|
337
|
+
}
|
|
338
|
+
]
|
|
339
|
+
};
|
|
340
|
+
if (productTypeAttrib) {
|
|
341
|
+
const val = productTypeAttrib.values.find((x) => x.slug == tcgProductType);
|
|
342
|
+
if (val)
|
|
343
|
+
attrib.values = [val];
|
|
344
|
+
}
|
|
345
|
+
const declination = [
|
|
346
|
+
Object.assign(Object.assign({}, (0, Declination_1.emptyDeclination)()), { attributes: [
|
|
347
|
+
attrib,
|
|
348
|
+
...(setAttributeValue ? [{ attribute_id: TCG_1.TCGAttributesEnum.SET, values: [setAttributeValue] }] : [])
|
|
349
|
+
], discount_rules: [], image_files: [], name: [
|
|
350
|
+
{ lang: 'fr', value: product.name.fr },
|
|
351
|
+
{ lang: 'en', value: product.name.en }
|
|
352
|
+
], created_from_external_service: this._serviceSlug, slug: product.slug, sku: product.slug + '_' + (productType ? productType : 'other'), price: { regular: { amount: 0 } }, shipping_info: shippingInfo, description: [] })
|
|
353
|
+
];
|
|
354
|
+
const images = product.images.map((x) => ({ img_path: x }));
|
|
355
|
+
declinations.push(...declination.map((d) => {
|
|
356
|
+
var _a, _b, _c, _d;
|
|
357
|
+
return Object.assign(Object.assign({}, d), { price: Object.assign(Object.assign({}, d.price), { regular: { amount: (_b = (_a = finishes === null || finishes === void 0 ? void 0 : finishes[0]) === null || _a === void 0 ? void 0 : _a.price) !== null && _b !== void 0 ? _b : 0 }, pdsf: { amount: (_d = (_c = finishes === null || finishes === void 0 ? void 0 : finishes[0]) === null || _c === void 0 ? void 0 : _c.price) !== null && _d !== void 0 ? _d : 0 } }), image_files: images });
|
|
358
|
+
}));
|
|
359
|
+
}
|
|
360
|
+
let tcgAttributes = {};
|
|
361
|
+
for (let a of product.attributes) {
|
|
362
|
+
tcgAttributes = Object.assign(Object.assign({}, tcgAttributes), { [`${a.name}`]: a.value });
|
|
363
|
+
}
|
|
364
|
+
return {
|
|
365
|
+
draft: false,
|
|
366
|
+
name: [
|
|
367
|
+
{ lang: 'fr', value: product.name.fr },
|
|
368
|
+
{ lang: 'en', value: product.name.en }
|
|
369
|
+
],
|
|
370
|
+
slug: product.slug,
|
|
371
|
+
brand: product.brandSlug,
|
|
372
|
+
category: product.category,
|
|
373
|
+
is_hidden_in_client_pos: !product.isSingle,
|
|
374
|
+
is_presale: product.isPresale,
|
|
375
|
+
release_date: product.releaseDate,
|
|
376
|
+
created_from_external_service: IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE,
|
|
377
|
+
description: [
|
|
378
|
+
{ lang: 'fr', value: product.description.fr },
|
|
379
|
+
{ lang: 'en', value: product.description.en }
|
|
380
|
+
],
|
|
381
|
+
id: product.slug,
|
|
382
|
+
product_attributes: attributes,
|
|
383
|
+
image_files: product.images.map((x) => ({ img_path: x })),
|
|
384
|
+
declinations: declinations,
|
|
385
|
+
seo_info: {
|
|
386
|
+
seoTitle: [
|
|
387
|
+
{ lang: 'fr', value: product.name.fr },
|
|
388
|
+
{ lang: 'en', value: product.name.en }
|
|
389
|
+
],
|
|
390
|
+
seoDescription: [
|
|
391
|
+
{ lang: 'fr', value: product.description.fr },
|
|
392
|
+
{ lang: 'en', value: product.description.en }
|
|
393
|
+
],
|
|
394
|
+
seoImage: product.images.length > 0 ? { img_path: product.images[0] } : undefined
|
|
395
|
+
},
|
|
396
|
+
default_size: shippingInfo.shipping_details,
|
|
397
|
+
tcg_attributes: tcgAttributes
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
async getPredefinedFormats(locale) {
|
|
401
|
+
return tcg_formats.map((x) => (Object.assign(Object.assign({}, x), { dimension_unit: 'centimeters', weight_unit: 'kilograms', name: (0, locale_1.translateILang)(x.name, locale) })));
|
|
402
|
+
}
|
|
403
|
+
//#endregion
|
|
404
|
+
//#region Class specific function
|
|
405
|
+
async getExternalServiceSupplierSlugs() {
|
|
406
|
+
const externalService = await super.getExternalServiceData(IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE);
|
|
407
|
+
if (!!!externalService)
|
|
408
|
+
throw new Error('Could not find service');
|
|
409
|
+
return (0, object_1.recursiveCheckObject)(externalService, 'external_service_params.cardgame_slugs');
|
|
410
|
+
}
|
|
411
|
+
async getExternalServiceBaseParentCategory() {
|
|
412
|
+
const externalService = await super.getExternalServiceData(IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE);
|
|
413
|
+
if (!!!externalService)
|
|
414
|
+
throw new Error('Could not find service');
|
|
415
|
+
return (0, object_1.recursiveCheckObject)(externalService, 'external_service_params.default_parent_cat');
|
|
416
|
+
}
|
|
417
|
+
async fetchApi(endpoint, externalService) {
|
|
418
|
+
if (!externalService) {
|
|
419
|
+
externalService = await super.getExternalServiceData(IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE);
|
|
420
|
+
if (!!!externalService)
|
|
421
|
+
throw new Error('Could not find service');
|
|
422
|
+
}
|
|
423
|
+
const urlToUse = externalService.external_service_infos.api_url;
|
|
424
|
+
const query = await fetch(`${urlToUse}${endpoint}`, {
|
|
425
|
+
method: 'GET',
|
|
426
|
+
headers: { 'x-tcg-token': process.env.NEXT_PUBLIC_TCG_API_TOKEN || '' }
|
|
427
|
+
});
|
|
428
|
+
return (await query.json());
|
|
429
|
+
}
|
|
430
|
+
isErrorResult(obj) {
|
|
431
|
+
return obj.status !== undefined;
|
|
432
|
+
}
|
|
433
|
+
async getEcommAttributes() {
|
|
434
|
+
if (this._attributes)
|
|
435
|
+
return;
|
|
436
|
+
const docs = await DatabaseService_1.default.getDocuments(`/the_beast/1.0.0/orgs/${this._orgId}/spaces/${this._spaceId}/attributes`);
|
|
437
|
+
this._attributes = docs
|
|
438
|
+
.map((x) => x.data)
|
|
439
|
+
.filter((x) => !x.draft && x.created_from_external_service == this._serviceSlug);
|
|
440
|
+
}
|
|
441
|
+
getSetsAttribute(slug, attr) {
|
|
442
|
+
const entry = attr.values.find((x) => x.slug == slug);
|
|
443
|
+
return {
|
|
444
|
+
slug: slug,
|
|
445
|
+
value: entry
|
|
446
|
+
? entry.value
|
|
447
|
+
: [
|
|
448
|
+
{ lang: 'fr', value: slug },
|
|
449
|
+
{ lang: 'en', value: slug }
|
|
450
|
+
]
|
|
451
|
+
};
|
|
452
|
+
}
|
|
453
|
+
getPricesAndType(card) {
|
|
454
|
+
const result = [];
|
|
455
|
+
if (card.priceHistory.length == 0 || card.priceHistory[0].prices.length == 0)
|
|
456
|
+
return [{ price: 0, subType: 'normal' }]; // no price, no history... edge case
|
|
457
|
+
let lastDate = '';
|
|
458
|
+
for (let p of card.priceHistory[0].prices) {
|
|
459
|
+
if (!lastDate || lastDate == p.date) {
|
|
460
|
+
lastDate = p.date;
|
|
461
|
+
const subT = (p.subType || 'normal').toLowerCase();
|
|
462
|
+
if (!result.some((x) => x.subType == subT)) {
|
|
463
|
+
result.push({ price: Number(p.market), subType: subT });
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
return result;
|
|
468
|
+
}
|
|
469
|
+
async getShippingInfo(card) {
|
|
470
|
+
const isPack = card.attributes.some((x) => x.name.toLowerCase() == 'producttype' && x.value == 'sealed_booster_packs');
|
|
471
|
+
const formatSlug = card.isSingle
|
|
472
|
+
? TCG_1.TCGProductFormatsEnum.CARD
|
|
473
|
+
: isPack
|
|
474
|
+
? TCG_1.TCGProductFormatsEnum.PACK
|
|
475
|
+
: TCG_1.TCGProductFormatsEnum.BUNDLE;
|
|
476
|
+
let format = tcg_formats.find((x) => x.slug == formatSlug);
|
|
477
|
+
// use the predeterminated formats of the space if available
|
|
478
|
+
const spaceData = await this.getSpaceData();
|
|
479
|
+
if (spaceData.transport_preferences.predefined_products) {
|
|
480
|
+
const box = spaceData.transport_preferences.predefined_products.find((x) => x.slug == formatSlug);
|
|
481
|
+
if (box)
|
|
482
|
+
return {
|
|
483
|
+
unit_measurments: 'centimeters',
|
|
484
|
+
unit_weight: 'kilograms',
|
|
485
|
+
height: box.height,
|
|
486
|
+
length: box.length,
|
|
487
|
+
width: box.width,
|
|
488
|
+
weight: box.weight,
|
|
489
|
+
shipping_details: formatSlug
|
|
490
|
+
};
|
|
491
|
+
}
|
|
492
|
+
return {
|
|
493
|
+
unit_measurments: 'centimeters',
|
|
494
|
+
unit_weight: 'kilograms',
|
|
495
|
+
height: format.height,
|
|
496
|
+
length: format.length,
|
|
497
|
+
width: format.width,
|
|
498
|
+
weight: format.weight,
|
|
499
|
+
shipping_details: formatSlug
|
|
500
|
+
};
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
exports.default = TCGServiceClass;
|
|
504
504
|
//# sourceMappingURL=TCGService.js.map
|