addio-admin-sdk 1.7.144 → 1.7.145

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.
Files changed (575) hide show
  1. package/.babelrc +17 -17
  2. package/.claude/settings.local.json +7 -0
  3. package/.env +14 -0
  4. package/.env.dev +14 -14
  5. package/.github/workflows/run_unit_test.yaml +48 -48
  6. package/addio-sdk-doc.md +1473 -1473
  7. package/changelog.md +564 -564
  8. package/dist/Interfaces/Address/index.d.ts +21 -21
  9. package/dist/Interfaces/Address/index.js +16 -16
  10. package/dist/Interfaces/Algolia/index.d.ts +177 -177
  11. package/dist/Interfaces/Algolia/index.js +2 -2
  12. package/dist/Interfaces/Attachement/index.d.ts +5 -5
  13. package/dist/Interfaces/Attachement/index.js +2 -2
  14. package/dist/Interfaces/Attribute/index.d.ts +53 -53
  15. package/dist/Interfaces/Attribute/index.js +10 -10
  16. package/dist/Interfaces/BGJob/index.d.ts +56 -56
  17. package/dist/Interfaces/BGJob/index.js +25 -25
  18. package/dist/Interfaces/BaseClass/index.d.ts +8 -8
  19. package/dist/Interfaces/BaseClass/index.js +2 -2
  20. package/dist/Interfaces/Blog/IBlogArticle.d.ts +18 -18
  21. package/dist/Interfaces/Blog/IBlogArticle.js +2 -2
  22. package/dist/Interfaces/Blog/IBlogAuthor.d.ts +7 -7
  23. package/dist/Interfaces/Blog/IBlogAuthor.js +2 -2
  24. package/dist/Interfaces/Blog/IBlogCategory.d.ts +9 -9
  25. package/dist/Interfaces/Blog/IBlogCategory.js +2 -2
  26. package/dist/Interfaces/Blog/IBlogComment.d.ts +13 -13
  27. package/dist/Interfaces/Blog/IBlogComment.js +2 -2
  28. package/dist/Interfaces/Blog/IBlogKeywords.d.ts +9 -9
  29. package/dist/Interfaces/Blog/IBlogKeywords.js +2 -2
  30. package/dist/Interfaces/Booking/index.d.ts +74 -74
  31. package/dist/Interfaces/Booking/index.js +17 -17
  32. package/dist/Interfaces/Brand/index.d.ts +15 -15
  33. package/dist/Interfaces/Brand/index.js +2 -2
  34. package/dist/Interfaces/CMS/index.d.ts +28 -28
  35. package/dist/Interfaces/CMS/index.js +5 -5
  36. package/dist/Interfaces/Cart/IElavonPayload.d.ts +93 -93
  37. package/dist/Interfaces/Cart/IElavonPayload.js +17 -17
  38. package/dist/Interfaces/Cart/IPandaPayload.d.ts +64 -64
  39. package/dist/Interfaces/Cart/IPandaPayload.js +18 -18
  40. package/dist/Interfaces/Cart/IPaymentCard.d.ts +22 -22
  41. package/dist/Interfaces/Cart/IPaymentCard.js +44 -44
  42. package/dist/Interfaces/Cart/IPaypalPayload.d.ts +9 -9
  43. package/dist/Interfaces/Cart/IPaypalPayload.js +2 -2
  44. package/dist/Interfaces/Cart/IPaysafePayload.d.ts +72 -72
  45. package/dist/Interfaces/Cart/IPaysafePayload.js +2 -2
  46. package/dist/Interfaces/Cart/IStripePayload.d.ts +66 -66
  47. package/dist/Interfaces/Cart/IStripePayload.js +2 -2
  48. package/dist/Interfaces/Cart/index.d.ts +444 -444
  49. package/dist/Interfaces/Cart/index.js +197 -197
  50. package/dist/Interfaces/CartReservedQuantities/index.d.ts +10 -10
  51. package/dist/Interfaces/CartReservedQuantities/index.js +2 -2
  52. package/dist/Interfaces/CashDrawers/index.d.ts +37 -37
  53. package/dist/Interfaces/CashDrawers/index.js +19 -19
  54. package/dist/Interfaces/Catalogue/index.d.ts +68 -68
  55. package/dist/Interfaces/Catalogue/index.js +37 -37
  56. package/dist/Interfaces/Category/index.d.ts +33 -33
  57. package/dist/Interfaces/Category/index.js +2 -2
  58. package/dist/Interfaces/Chart/index.d.ts +11 -11
  59. package/dist/Interfaces/Chart/index.js +2 -2
  60. package/dist/Interfaces/Class/index.d.ts +8 -8
  61. package/dist/Interfaces/Class/index.js +2 -2
  62. package/dist/Interfaces/Consent/index.d.ts +6 -6
  63. package/dist/Interfaces/Consent/index.js +2 -2
  64. package/dist/Interfaces/Context/IContextProps.d.ts +4 -4
  65. package/dist/Interfaces/Context/IContextProps.js +2 -2
  66. package/dist/Interfaces/Context/IContextState.d.ts +15 -15
  67. package/dist/Interfaces/Context/IContextState.js +2 -2
  68. package/dist/Interfaces/Customer/ICustomerBadge.d.ts +2 -2
  69. package/dist/Interfaces/Customer/ICustomerBadge.js +2 -2
  70. package/dist/Interfaces/Customer/ICustomerRating.d.ts +10 -10
  71. package/dist/Interfaces/Customer/ICustomerRating.js +2 -2
  72. package/dist/Interfaces/Customer/IStoreCredit.d.ts +13 -13
  73. package/dist/Interfaces/Customer/IStoreCredit.js +2 -2
  74. package/dist/Interfaces/Customer/index.d.ts +104 -104
  75. package/dist/Interfaces/Customer/index.js +148 -148
  76. package/dist/Interfaces/Declination/index.d.ts +117 -117
  77. package/dist/Interfaces/Declination/index.js +66 -66
  78. package/dist/Interfaces/Document/index.d.ts +8 -8
  79. package/dist/Interfaces/Document/index.js +2 -2
  80. package/dist/Interfaces/Elastic/index.d.ts +89 -89
  81. package/dist/Interfaces/Elastic/index.js +2 -2
  82. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.d.ts +11 -11
  83. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.js +2 -2
  84. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.d.ts +15 -15
  85. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.js +2 -2
  86. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.d.ts +12 -12
  87. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.js +2 -2
  88. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.d.ts +36 -36
  89. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.js +2 -2
  90. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.d.ts +12 -12
  91. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.js +2 -2
  92. package/dist/Interfaces/Email/CustomGR/ITransportEmail.d.ts +12 -12
  93. package/dist/Interfaces/Email/CustomGR/ITransportEmail.js +2 -2
  94. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.d.ts +12 -12
  95. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.js +2 -2
  96. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.d.ts +16 -16
  97. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.js +2 -2
  98. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.d.ts +15 -15
  99. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.js +2 -2
  100. package/dist/Interfaces/Email/IAbandonnedCartEmail.d.ts +29 -29
  101. package/dist/Interfaces/Email/IAbandonnedCartEmail.js +2 -2
  102. package/dist/Interfaces/Email/IAccountConfirmationEmail.d.ts +22 -22
  103. package/dist/Interfaces/Email/IAccountConfirmationEmail.js +2 -2
  104. package/dist/Interfaces/Email/IApplicationEmail.d.ts +19 -19
  105. package/dist/Interfaces/Email/IApplicationEmail.js +2 -2
  106. package/dist/Interfaces/Email/IBackInStockEmail.d.ts +21 -21
  107. package/dist/Interfaces/Email/IBackInStockEmail.js +2 -2
  108. package/dist/Interfaces/Email/IContactEmail.d.ts +20 -20
  109. package/dist/Interfaces/Email/IContactEmail.js +2 -2
  110. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.d.ts +15 -15
  111. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.js +2 -2
  112. package/dist/Interfaces/Email/ICustomerBookingEmail.d.ts +14 -14
  113. package/dist/Interfaces/Email/ICustomerBookingEmail.js +2 -2
  114. package/dist/Interfaces/Email/IEmail.d.ts +20 -20
  115. package/dist/Interfaces/Email/IEmail.js +60 -60
  116. package/dist/Interfaces/Email/IOrderConfirmationEmail.d.ts +47 -47
  117. package/dist/Interfaces/Email/IOrderConfirmationEmail.js +2 -2
  118. package/dist/Interfaces/Email/IPasswordResetEmail.d.ts +17 -17
  119. package/dist/Interfaces/Email/IPasswordResetEmail.js +2 -2
  120. package/dist/Interfaces/Email/IPhotoShootEmail.d.ts +14 -14
  121. package/dist/Interfaces/Email/IPhotoShootEmail.js +2 -2
  122. package/dist/Interfaces/Email/IPickupConfirmation.d.ts +23 -23
  123. package/dist/Interfaces/Email/IPickupConfirmation.js +2 -2
  124. package/dist/Interfaces/Email/IShippingConfirmation.d.ts +23 -23
  125. package/dist/Interfaces/Email/IShippingConfirmation.js +2 -2
  126. package/dist/Interfaces/Email/IWelcomeEmail.d.ts +19 -19
  127. package/dist/Interfaces/Email/IWelcomeEmail.js +2 -2
  128. package/dist/Interfaces/ExportSchema/index.d.ts +7 -7
  129. package/dist/Interfaces/ExportSchema/index.js +2 -2
  130. package/dist/Interfaces/ExternalService/BaseExternalService.d.ts +12 -12
  131. package/dist/Interfaces/ExternalService/BaseExternalService.js +2 -2
  132. package/dist/Interfaces/ExternalService/ExternalProductsService.d.ts +4 -4
  133. package/dist/Interfaces/ExternalService/ExternalProductsService.js +2 -2
  134. package/dist/Interfaces/ExternalService/index.d.ts +9 -9
  135. package/dist/Interfaces/ExternalService/index.js +2 -2
  136. package/dist/Interfaces/FirstOrderTracking/index.d.ts +5 -5
  137. package/dist/Interfaces/FirstOrderTracking/index.js +2 -2
  138. package/dist/Interfaces/G2/index.d.ts +556 -556
  139. package/dist/Interfaces/G2/index.js +38 -38
  140. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.d.ts +20 -20
  141. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.js +2 -2
  142. package/dist/Interfaces/Indexed/Product/index.d.ts +105 -105
  143. package/dist/Interfaces/Indexed/Product/index.js +253 -253
  144. package/dist/Interfaces/Inventory/index.d.ts +19 -19
  145. package/dist/Interfaces/Inventory/index.js +8 -8
  146. package/dist/Interfaces/Invoice/index.d.ts +4 -4
  147. package/dist/Interfaces/Invoice/index.js +2 -2
  148. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.d.ts +3 -3
  149. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.js +2 -2
  150. package/dist/Interfaces/MarketplacePublication/index.d.ts +23 -23
  151. package/dist/Interfaces/MarketplacePublication/index.js +22 -22
  152. package/dist/Interfaces/Menu/index.d.ts +40 -40
  153. package/dist/Interfaces/Menu/index.js +16 -16
  154. package/dist/Interfaces/Note/index.d.ts +10 -10
  155. package/dist/Interfaces/Note/index.js +7 -7
  156. package/dist/Interfaces/Operations/ICreatedBy.d.ts +6 -6
  157. package/dist/Interfaces/Operations/ICreatedBy.js +2 -2
  158. package/dist/Interfaces/Operations/IUpdate.d.ts +5 -5
  159. package/dist/Interfaces/Operations/IUpdate.js +2 -2
  160. package/dist/Interfaces/Order/index.d.ts +4 -4
  161. package/dist/Interfaces/Order/index.js +2 -2
  162. package/dist/Interfaces/Org/IRelUser.d.ts +9 -9
  163. package/dist/Interfaces/Org/IRelUser.js +2 -2
  164. package/dist/Interfaces/Org/index.d.ts +29 -29
  165. package/dist/Interfaces/Org/index.js +12 -12
  166. package/dist/Interfaces/Payment/index.d.ts +26 -26
  167. package/dist/Interfaces/Payment/index.js +14 -14
  168. package/dist/Interfaces/Product/IAttributeFamily.d.ts +6 -6
  169. package/dist/Interfaces/Product/IAttributeFamily.js +2 -2
  170. package/dist/Interfaces/Product/IImportProduct.d.ts +42 -42
  171. package/dist/Interfaces/Product/IImportProduct.js +882 -882
  172. package/dist/Interfaces/Product/IInventoryItem.d.ts +74 -74
  173. package/dist/Interfaces/Product/IInventoryItem.js +38 -38
  174. package/dist/Interfaces/Product/IPricing.d.ts +177 -177
  175. package/dist/Interfaces/Product/IPricing.js +180 -180
  176. package/dist/Interfaces/Product/index.d.ts +138 -138
  177. package/dist/Interfaces/Product/index.js +64 -64
  178. package/dist/Interfaces/ProductAttribute/index.d.ts +11 -11
  179. package/dist/Interfaces/ProductAttribute/index.js +2 -2
  180. package/dist/Interfaces/PromiseToPurchase/BankType.d.ts +41 -41
  181. package/dist/Interfaces/PromiseToPurchase/BankType.js +41 -41
  182. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.d.ts +33 -33
  183. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.js +15 -15
  184. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.d.ts +19 -19
  185. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.js +2 -2
  186. package/dist/Interfaces/PromiseToPurchase/index.d.ts +50 -50
  187. package/dist/Interfaces/PromiseToPurchase/index.js +13 -13
  188. package/dist/Interfaces/PurchaseOrder/index.d.ts +17 -17
  189. package/dist/Interfaces/PurchaseOrder/index.js +2 -2
  190. package/dist/Interfaces/Query/IBrandQueryOptions.d.ts +11 -11
  191. package/dist/Interfaces/Query/IBrandQueryOptions.js +2 -2
  192. package/dist/Interfaces/Query/ICategoryQueryOptions.d.ts +11 -11
  193. package/dist/Interfaces/Query/ICategoryQueryOptions.js +2 -2
  194. package/dist/Interfaces/Query/IProductQueryOptions.d.ts +16 -16
  195. package/dist/Interfaces/Query/IProductQueryOptions.js +2 -2
  196. package/dist/Interfaces/Quote/index.d.ts +5 -5
  197. package/dist/Interfaces/Quote/index.js +2 -2
  198. package/dist/Interfaces/Refunds/index.d.ts +106 -106
  199. package/dist/Interfaces/Refunds/index.js +2 -2
  200. package/dist/Interfaces/Rules/IDiscountRule.d.ts +155 -155
  201. package/dist/Interfaces/Rules/IDiscountRule.js +114 -114
  202. package/dist/Interfaces/Schedule/index.d.ts +48 -48
  203. package/dist/Interfaces/Schedule/index.js +2 -2
  204. package/dist/Interfaces/Services/IAddServiceResponse.d.ts +4 -4
  205. package/dist/Interfaces/Services/IAddServiceResponse.js +2 -2
  206. package/dist/Interfaces/Services/IService.d.ts +16 -16
  207. package/dist/Interfaces/Services/IService.js +2 -2
  208. package/dist/Interfaces/Services/IServiceSecret.d.ts +8 -8
  209. package/dist/Interfaces/Services/IServiceSecret.js +2 -2
  210. package/dist/Interfaces/Shipping/Shipstation/carriers.d.ts +10 -10
  211. package/dist/Interfaces/Shipping/Shipstation/carriers.js +2 -2
  212. package/dist/Interfaces/Shipping/Shipstation/order.d.ts +227 -227
  213. package/dist/Interfaces/Shipping/Shipstation/order.js +2 -2
  214. package/dist/Interfaces/Shipping/Shipstation/quote.d.ts +31 -31
  215. package/dist/Interfaces/Shipping/Shipstation/quote.js +2 -2
  216. package/dist/Interfaces/Shipping/Shiptime/order.d.ts +54 -54
  217. package/dist/Interfaces/Shipping/Shiptime/order.js +71 -71
  218. package/dist/Interfaces/Shipping/Shiptime/quote.d.ts +111 -111
  219. package/dist/Interfaces/Shipping/Shiptime/quote.js +2 -2
  220. package/dist/Interfaces/Slider/GR.d.ts +114 -114
  221. package/dist/Interfaces/Slider/GR.js +271 -271
  222. package/dist/Interfaces/Slider/index.d.ts +30 -30
  223. package/dist/Interfaces/Slider/index.js +2 -2
  224. package/dist/Interfaces/Space/IExternalService.d.ts +53 -53
  225. package/dist/Interfaces/Space/IExternalService.js +44 -44
  226. package/dist/Interfaces/Space/IMember.d.ts +16 -16
  227. package/dist/Interfaces/Space/IMember.js +9 -9
  228. package/dist/Interfaces/Space/index.d.ts +407 -405
  229. package/dist/Interfaces/Space/index.js +174 -174
  230. package/dist/Interfaces/Space/index.js.map +1 -1
  231. package/dist/Interfaces/Specials/gr.d.ts +61 -61
  232. package/dist/Interfaces/Specials/gr.js +2 -2
  233. package/dist/Interfaces/StockNotification/index.d.ts +7 -7
  234. package/dist/Interfaces/StockNotification/index.js +2 -2
  235. package/dist/Interfaces/Store/index.d.ts +63 -63
  236. package/dist/Interfaces/Store/index.js +27 -27
  237. package/dist/Interfaces/Supplier/ICommand.d.ts +11 -11
  238. package/dist/Interfaces/Supplier/ICommand.js +2 -2
  239. package/dist/Interfaces/Supplier/index.d.ts +36 -36
  240. package/dist/Interfaces/Supplier/index.js +24 -24
  241. package/dist/Interfaces/TCG/index.d.ts +161 -161
  242. package/dist/Interfaces/TCG/index.js +54 -54
  243. package/dist/Interfaces/Tag/index.d.ts +18 -18
  244. package/dist/Interfaces/Tag/index.js +2 -2
  245. package/dist/Interfaces/Tax/index.d.ts +13 -13
  246. package/dist/Interfaces/Tax/index.js +2 -2
  247. package/dist/Interfaces/TransferRequest/index.d.ts +103 -103
  248. package/dist/Interfaces/TransferRequest/index.js +46 -46
  249. package/dist/Interfaces/Translation/index.d.ts +8 -8
  250. package/dist/Interfaces/Translation/index.js +5 -5
  251. package/dist/Interfaces/Update/index.d.ts +10 -10
  252. package/dist/Interfaces/Update/index.js +2 -2
  253. package/dist/Interfaces/User/IUser.d.ts +65 -65
  254. package/dist/Interfaces/User/IUser.js +8 -8
  255. package/dist/Interfaces/Version/index.d.ts +11 -11
  256. package/dist/Interfaces/Version/index.js +2 -2
  257. package/dist/Interfaces/Wishlist/index.d.ts +7 -7
  258. package/dist/Interfaces/Wishlist/index.js +2 -2
  259. package/dist/constants/Interfaces/IBaseApi.d.ts +15 -15
  260. package/dist/constants/Interfaces/IBaseApi.js +2 -2
  261. package/dist/constants/Interfaces/IEndpointResult.d.ts +9 -9
  262. package/dist/constants/Interfaces/IEndpointResult.js +2 -2
  263. package/dist/constants/enums.d.ts +6 -6
  264. package/dist/constants/enums.js +10 -10
  265. package/dist/constants/services.d.ts +2 -2
  266. package/dist/constants/services.js +117 -117
  267. package/dist/constants/version.d.ts +2 -2
  268. package/dist/constants/version.js +5 -5
  269. package/dist/index.d.ts +50 -50
  270. package/dist/index.js +266 -266
  271. package/dist/lib/Attribute/index.d.ts +14 -14
  272. package/dist/lib/Attribute/index.js +186 -186
  273. package/dist/lib/BGJob/index.d.ts +9 -9
  274. package/dist/lib/BGJob/index.js +216 -216
  275. package/dist/lib/BackgroundWorker/index.d.ts +34 -34
  276. package/dist/lib/BackgroundWorker/index.js +59 -59
  277. package/dist/lib/Blog/BlogArticle.d.ts +5 -5
  278. package/dist/lib/Blog/BlogArticle.js +10 -10
  279. package/dist/lib/Blog/BlogAuthor.d.ts +5 -5
  280. package/dist/lib/Blog/BlogAuthor.js +10 -10
  281. package/dist/lib/Blog/BlogCategory.d.ts +5 -5
  282. package/dist/lib/Blog/BlogCategory.js +10 -10
  283. package/dist/lib/Blog/BlogKeyword.d.ts +5 -5
  284. package/dist/lib/Blog/BlogKeyword.js +10 -10
  285. package/dist/lib/Booking/index.d.ts +85 -85
  286. package/dist/lib/Booking/index.js +596 -596
  287. package/dist/lib/Brand/index.d.ts +26 -26
  288. package/dist/lib/Brand/index.js +131 -131
  289. package/dist/lib/Cart/index.d.ts +335 -335
  290. package/dist/lib/Cart/index.js +3977 -3977
  291. package/dist/lib/CartReservedQuantities/index.d.ts +49 -49
  292. package/dist/lib/CartReservedQuantities/index.js +159 -159
  293. package/dist/lib/CashDrawerShift/index.d.ts +83 -83
  294. package/dist/lib/CashDrawerShift/index.js +205 -205
  295. package/dist/lib/Catalogue/index.d.ts +15 -15
  296. package/dist/lib/Catalogue/index.js +78 -78
  297. package/dist/lib/Category/index.d.ts +34 -34
  298. package/dist/lib/Category/index.js +230 -230
  299. package/dist/lib/Class/index.d.ts +16 -16
  300. package/dist/lib/Class/index.js +66 -66
  301. package/dist/lib/Consent/index.d.ts +4 -4
  302. package/dist/lib/Consent/index.js +29 -29
  303. package/dist/lib/Customer/index.d.ts +30 -30
  304. package/dist/lib/Customer/index.js +92 -92
  305. package/dist/lib/Declination/index.d.ts +9 -9
  306. package/dist/lib/Declination/index.js +26 -26
  307. package/dist/lib/Discount/index.d.ts +27 -27
  308. package/dist/lib/Discount/index.js +493 -493
  309. package/dist/lib/ElasticSearch/index.d.ts +13 -13
  310. package/dist/lib/ElasticSearch/index.js +50 -50
  311. package/dist/lib/Elavon/index.d.ts +18 -18
  312. package/dist/lib/Elavon/index.js +135 -135
  313. package/dist/lib/Email/AbandonedCartEmail.d.ts +16 -16
  314. package/dist/lib/Email/AbandonedCartEmail.js +24 -24
  315. package/dist/lib/Email/AccountConfirmationEmail.d.ts +19 -19
  316. package/dist/lib/Email/AccountConfirmationEmail.js +30 -30
  317. package/dist/lib/Email/AdminOrderConfirmationEmail.d.ts +16 -16
  318. package/dist/lib/Email/AdminOrderConfirmationEmail.js +24 -24
  319. package/dist/lib/Email/ApplicationEmail.d.ts +16 -16
  320. package/dist/lib/Email/ApplicationEmail.js +24 -24
  321. package/dist/lib/Email/BackInStockEmail.d.ts +16 -16
  322. package/dist/lib/Email/BackInStockEmail.js +24 -24
  323. package/dist/lib/Email/ContactEmail.d.ts +16 -16
  324. package/dist/lib/Email/ContactEmail.js +24 -24
  325. package/dist/lib/Email/CustomerBookingAdminEmail.d.ts +16 -16
  326. package/dist/lib/Email/CustomerBookingAdminEmail.js +24 -24
  327. package/dist/lib/Email/CustomerBookingEmail.d.ts +16 -16
  328. package/dist/lib/Email/CustomerBookingEmail.js +24 -24
  329. package/dist/lib/Email/OrderConfirmationEmail.d.ts +16 -16
  330. package/dist/lib/Email/OrderConfirmationEmail.js +24 -24
  331. package/dist/lib/Email/OrderDenounciationEmail.d.ts +16 -16
  332. package/dist/lib/Email/OrderDenounciationEmail.js +24 -24
  333. package/dist/lib/Email/OrderSampleEmail.d.ts +16 -16
  334. package/dist/lib/Email/OrderSampleEmail.js +24 -24
  335. package/dist/lib/Email/OtherTypeEmails.d.ts +16 -16
  336. package/dist/lib/Email/OtherTypeEmails.js +27 -27
  337. package/dist/lib/Email/PasswordResetEmail.d.ts +16 -16
  338. package/dist/lib/Email/PasswordResetEmail.js +24 -24
  339. package/dist/lib/Email/PhotoShootEmail.d.ts +16 -16
  340. package/dist/lib/Email/PhotoShootEmail.js +24 -24
  341. package/dist/lib/Email/PickUpConfirmation.d.ts +16 -16
  342. package/dist/lib/Email/PickUpConfirmation.js +24 -24
  343. package/dist/lib/Email/ShippingConfirmation.d.ts +16 -16
  344. package/dist/lib/Email/ShippingConfirmation.js +24 -24
  345. package/dist/lib/Email/WelcomeEmail.d.ts +16 -16
  346. package/dist/lib/Email/WelcomeEmail.js +24 -24
  347. package/dist/lib/Email/index.d.ts +16 -16
  348. package/dist/lib/Email/index.js +31 -31
  349. package/dist/lib/ExternalService/Ebay.d.ts +74 -74
  350. package/dist/lib/ExternalService/Ebay.js +124 -124
  351. package/dist/lib/ExternalService/index.d.ts +5 -5
  352. package/dist/lib/ExternalService/index.js +10 -10
  353. package/dist/lib/FirstOrderTracking/index.d.ts +5 -5
  354. package/dist/lib/FirstOrderTracking/index.js +10 -10
  355. package/dist/lib/Indexed/IndexedCart.d.ts +13 -13
  356. package/dist/lib/Indexed/IndexedCart.js +91 -91
  357. package/dist/lib/Indexed/Product.d.ts +17 -17
  358. package/dist/lib/Indexed/Product.js +98 -98
  359. package/dist/lib/Inventory/index.d.ts +112 -112
  360. package/dist/lib/Inventory/index.js +492 -492
  361. package/dist/lib/Invoice/index.d.ts +16 -16
  362. package/dist/lib/Invoice/index.js +21 -21
  363. package/dist/lib/MarketplacePublication/index.d.ts +9 -9
  364. package/dist/lib/MarketplacePublication/index.js +426 -426
  365. package/dist/lib/Menu/index.d.ts +11 -11
  366. package/dist/lib/Menu/index.js +107 -107
  367. package/dist/lib/MongoDB/BaseAPI.d.ts +18 -18
  368. package/dist/lib/MongoDB/BaseAPI.js +200 -200
  369. package/dist/lib/Note/index.d.ts +4 -4
  370. package/dist/lib/Note/index.js +6 -6
  371. package/dist/lib/Order/index.d.ts +27 -27
  372. package/dist/lib/Order/index.js +56 -56
  373. package/dist/lib/Org/index.d.ts +68 -68
  374. package/dist/lib/Org/index.js +216 -216
  375. package/dist/lib/PandaPay/index.d.ts +16 -16
  376. package/dist/lib/PandaPay/index.js +176 -176
  377. package/dist/lib/Paysafe/index.d.ts +11 -11
  378. package/dist/lib/Paysafe/index.js +41 -41
  379. package/dist/lib/Product/index.d.ts +182 -182
  380. package/dist/lib/Product/index.js +847 -847
  381. package/dist/lib/ProductAttribute/index.d.ts +15 -15
  382. package/dist/lib/ProductAttribute/index.js +45 -45
  383. package/dist/lib/PromiseToPurchase/index.d.ts +109 -109
  384. package/dist/lib/PromiseToPurchase/index.js +343 -343
  385. package/dist/lib/PurchaseOrder/index.d.ts +20 -20
  386. package/dist/lib/PurchaseOrder/index.js +28 -28
  387. package/dist/lib/Schedule/index.d.ts +5 -5
  388. package/dist/lib/Schedule/index.js +12 -12
  389. package/dist/lib/Service/Enum/ServiceEnum.d.ts +3 -3
  390. package/dist/lib/Service/Enum/ServiceEnum.js +7 -7
  391. package/dist/lib/Service/index.d.ts +13 -13
  392. package/dist/lib/Service/index.js +21 -21
  393. package/dist/lib/Shipment/index.d.ts +28 -28
  394. package/dist/lib/Shipment/index.js +370 -370
  395. package/dist/lib/Slider/index.d.ts +22 -22
  396. package/dist/lib/Slider/index.js +119 -119
  397. package/dist/lib/Space/index.d.ts +1150 -1150
  398. package/dist/lib/Space/index.js +5792 -5792
  399. package/dist/lib/StockNotification/index.d.ts +4 -4
  400. package/dist/lib/StockNotification/index.js +6 -6
  401. package/dist/lib/Store/index.d.ts +5 -5
  402. package/dist/lib/Store/index.js +12 -12
  403. package/dist/lib/Supplier/Command.d.ts +5 -5
  404. package/dist/lib/Supplier/Command.js +10 -10
  405. package/dist/lib/Supplier/index.d.ts +25 -25
  406. package/dist/lib/Supplier/index.js +27 -27
  407. package/dist/lib/Tags/index.d.ts +6 -6
  408. package/dist/lib/Tags/index.js +26 -26
  409. package/dist/lib/Tax/index.d.ts +8 -8
  410. package/dist/lib/Tax/index.js +54 -54
  411. package/dist/lib/TransferRequest/index.d.ts +290 -290
  412. package/dist/lib/TransferRequest/index.js +1026 -1026
  413. package/dist/lib/Update/index.d.ts +10 -10
  414. package/dist/lib/Update/index.js +22 -22
  415. package/dist/lib/User/index.d.ts +89 -89
  416. package/dist/lib/User/index.js +328 -328
  417. package/dist/lib/Wishlist/index.d.ts +5 -5
  418. package/dist/lib/Wishlist/index.js +10 -10
  419. package/dist/lib/base.d.ts +14 -14
  420. package/dist/lib/base.js +62 -62
  421. package/dist/lib/baseService.d.ts +17 -17
  422. package/dist/lib/baseService.js +69 -69
  423. package/dist/rules/GR/constants/data.d.ts +26 -26
  424. package/dist/rules/GR/constants/data.js +81 -81
  425. package/dist/rules/GR/constants/expedition.d.ts +4 -4
  426. package/dist/rules/GR/constants/expedition.js +9 -9
  427. package/dist/rules/GR/constants/products.d.ts +22 -22
  428. package/dist/rules/GR/constants/products.js +263 -263
  429. package/dist/rules/GR/interfaces/cart.d.ts +84 -84
  430. package/dist/rules/GR/interfaces/cart.js +41 -41
  431. package/dist/rules/GR/interfaces/data.d.ts +101 -101
  432. package/dist/rules/GR/interfaces/data.js +114 -114
  433. package/dist/rules/GR/interfaces/products.d.ts +61 -61
  434. package/dist/rules/GR/interfaces/products.js +10 -10
  435. package/dist/rules/GR/utils/cart.d.ts +95 -95
  436. package/dist/rules/GR/utils/cart.js +839 -836
  437. package/dist/rules/GR/utils/cart.js.map +1 -1
  438. package/dist/rules/GR/utils/data.d.ts +3 -3
  439. package/dist/rules/GR/utils/data.js +28 -28
  440. package/dist/rules/GR/utils/expedition.d.ts +140 -140
  441. package/dist/rules/GR/utils/expedition.js +2016 -2016
  442. package/dist/rules/GR/utils/g2.d.ts +209 -209
  443. package/dist/rules/GR/utils/g2.js +999 -999
  444. package/dist/rules/GR/utils/invoices.d.ts +51 -51
  445. package/dist/rules/GR/utils/invoices.js +215 -215
  446. package/dist/rules/GR/utils/products.d.ts +277 -277
  447. package/dist/rules/GR/utils/products.js +1350 -1350
  448. package/dist/rules/GR/utils/upsells.d.ts +111 -111
  449. package/dist/rules/GR/utils/upsells.js +215 -215
  450. package/dist/services/database/BaseProvider.d.ts +29 -29
  451. package/dist/services/database/BaseProvider.js +28 -28
  452. package/dist/services/database/BatchUtils.d.ts +14 -14
  453. package/dist/services/database/BatchUtils.js +43 -43
  454. package/dist/services/database/Config.d.ts +2 -2
  455. package/dist/services/database/Config.js +5 -5
  456. package/dist/services/database/DatabaseService.d.ts +125 -125
  457. package/dist/services/database/DatabaseService.js +237 -237
  458. package/dist/services/database/FirebaseProvider.d.ts +17 -17
  459. package/dist/services/database/FirebaseProvider.js +235 -235
  460. package/dist/services/database/NotFirebaseProvider.d.ts +49 -49
  461. package/dist/services/database/NotFirebaseProvider.js +262 -262
  462. package/dist/services/g2/G2OrderSlip.d.ts +49 -49
  463. package/dist/services/g2/G2OrderSlip.js +228 -228
  464. package/dist/services/g2/utils.d.ts +19 -19
  465. package/dist/services/g2/utils.js +953 -953
  466. package/dist/services/logs/index.d.ts +23 -23
  467. package/dist/services/logs/index.js +66 -66
  468. package/dist/services/marketplace/BaseMarketServiceClass.d.ts +52 -52
  469. package/dist/services/marketplace/BaseMarketServiceClass.js +111 -111
  470. package/dist/services/marketplace/CardtraderServiceClass.d.ts +17 -17
  471. package/dist/services/marketplace/CardtraderServiceClass.js +139 -139
  472. package/dist/services/marketplace/utils.d.ts +14 -14
  473. package/dist/services/marketplace/utils.js +29 -29
  474. package/dist/services/products/BaseClass.d.ts +50 -50
  475. package/dist/services/products/BaseClass.js +66 -66
  476. package/dist/services/products/TCGService.d.ts +32 -32
  477. package/dist/services/products/TCGService.js +555 -555
  478. package/dist/services/products/utils.d.ts +31 -31
  479. package/dist/services/products/utils.js +144 -144
  480. package/dist/utils/algolia.d.ts +46 -46
  481. package/dist/utils/algolia.js +21 -21
  482. package/dist/utils/anonymisation.d.ts +54 -54
  483. package/dist/utils/anonymisation.js +280 -280
  484. package/dist/utils/array.d.ts +5 -5
  485. package/dist/utils/array.js +14 -14
  486. package/dist/utils/aws.d.ts +36 -36
  487. package/dist/utils/aws.js +154 -154
  488. package/dist/utils/booking.d.ts +30 -30
  489. package/dist/utils/booking.js +127 -127
  490. package/dist/utils/cart.d.ts +259 -259
  491. package/dist/utils/cart.js +1145 -1145
  492. package/dist/utils/categories.d.ts +2 -2
  493. package/dist/utils/categories.js +54 -54
  494. package/dist/utils/cmv.d.ts +10 -10
  495. package/dist/utils/cmv.js +107 -107
  496. package/dist/utils/console.d.ts +6 -6
  497. package/dist/utils/console.js +59 -59
  498. package/dist/utils/context.d.ts +20 -20
  499. package/dist/utils/context.js +61 -61
  500. package/dist/utils/currency.d.ts +6 -6
  501. package/dist/utils/currency.js +91 -91
  502. package/dist/utils/data.d.ts +31 -31
  503. package/dist/utils/data.js +296 -296
  504. package/dist/utils/date.d.ts +1 -1
  505. package/dist/utils/date.js +16 -16
  506. package/dist/utils/dimensions.d.ts +3 -3
  507. package/dist/utils/dimensions.js +16 -16
  508. package/dist/utils/discount.d.ts +164 -164
  509. package/dist/utils/discount.js +1111 -1111
  510. package/dist/utils/errors.d.ts +113 -113
  511. package/dist/utils/errors.js +113 -113
  512. package/dist/utils/file-admin.d.ts +8 -8
  513. package/dist/utils/file-admin.js +39 -39
  514. package/dist/utils/file.d.ts +39 -39
  515. package/dist/utils/file.js +208 -208
  516. package/dist/utils/firebase-admin.d.ts +11 -11
  517. package/dist/utils/firebase-admin.js +73 -73
  518. package/dist/utils/firebase.d.ts +58 -58
  519. package/dist/utils/firebase.js +148 -148
  520. package/dist/utils/import.d.ts +1 -1
  521. package/dist/utils/import.js +21 -21
  522. package/dist/utils/inventories.d.ts +101 -101
  523. package/dist/utils/inventories.js +467 -467
  524. package/dist/utils/locale.d.ts +24 -24
  525. package/dist/utils/locale.js +89 -89
  526. package/dist/utils/mailchimp.d.ts +58 -58
  527. package/dist/utils/mailchimp.js +531 -531
  528. package/dist/utils/mathUtils.d.ts +17 -17
  529. package/dist/utils/mathUtils.js +324 -324
  530. package/dist/utils/mongodb.d.ts +1 -1
  531. package/dist/utils/mongodb.js +22 -22
  532. package/dist/utils/object.d.ts +32 -32
  533. package/dist/utils/object.js +133 -133
  534. package/dist/utils/payment.d.ts +10 -10
  535. package/dist/utils/payment.js +23 -23
  536. package/dist/utils/products.d.ts +39 -39
  537. package/dist/utils/products.js +195 -195
  538. package/dist/utils/promiseToPurchase.d.ts +88 -88
  539. package/dist/utils/promiseToPurchase.js +229 -229
  540. package/dist/utils/prosprsearch.d.ts +42 -42
  541. package/dist/utils/prosprsearch.js +216 -216
  542. package/dist/utils/refunds.d.ts +2 -2
  543. package/dist/utils/refunds.js +21 -21
  544. package/dist/utils/sdc.d.ts +10 -10
  545. package/dist/utils/sdc.js +1309 -1309
  546. package/dist/utils/searchIndexes.d.ts +58 -58
  547. package/dist/utils/searchIndexes.js +247 -247
  548. package/dist/utils/services.d.ts +42 -42
  549. package/dist/utils/services.js +409 -409
  550. package/dist/utils/shipment.d.ts +110 -110
  551. package/dist/utils/shipment.js +345 -345
  552. package/dist/utils/simpletexting.d.ts +2 -2
  553. package/dist/utils/simpletexting.js +45 -45
  554. package/dist/utils/sliders.d.ts +4 -4
  555. package/dist/utils/sliders.js +24 -24
  556. package/dist/utils/string.d.ts +16 -16
  557. package/dist/utils/string.js +192 -192
  558. package/dist/utils/tcgService.d.ts +74 -74
  559. package/dist/utils/tcgService.js +308 -308
  560. package/dist/utils/tools.d.ts +5 -5
  561. package/dist/utils/tools.js +13 -13
  562. package/dist/utils/transferRequests.d.ts +43 -43
  563. package/dist/utils/transferRequests.js +67 -67
  564. package/dist/utils/update.d.ts +7 -7
  565. package/dist/utils/update.js +137 -137
  566. package/dist/utils/weight.d.ts +3 -3
  567. package/dist/utils/weight.js +16 -16
  568. package/dist/utils/zones.d.ts +11 -11
  569. package/dist/utils/zones.js +218 -218
  570. package/package.json +107 -107
  571. package/publish.sh +143 -143
  572. package/readme.md +182 -182
  573. package/dist/lib/Queue/index.d.ts +0 -40
  574. package/dist/lib/Queue/index.js +0 -255
  575. package/dist/lib/Queue/index.js.map +0 -1
@@ -1,556 +1,556 @@
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
- height: 0.1,
23
- length: 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
- height: 0.25,
31
- length: 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
- height: 5.1,
39
- length: 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 = this.createRecursiveDeclinations(product.category, product.slug, shippingInfo, setAttributeValue, [attrib], usedAttributes);
317
- const images = product.images.map((x) => ({ img_path: x }));
318
- declinations.push(...finishDeclis.map((d) => {
319
- const newPrice = category.costPriceRule(finish.price, d, 'sell');
320
- return Object.assign(Object.assign({}, d), { price: Object.assign(Object.assign({}, d.price), { regular: { amount: newPrice }, pdsf: { amount: finish.price } }), image_files: images });
321
- }));
322
- }
323
- }
324
- else {
325
- //créer une declination
326
- const productType = (_a = product.attributes.find((attr) => attr.name === 'ProductType')) === null || _a === void 0 ? void 0 : _a.value;
327
- const tcgProductType = productType ? `tcg_${productType}` : 'tcg_other';
328
- const attrib = {
329
- attribute_id: TCG_1.TCGAttributesEnum.TYPE,
330
- values: [
331
- {
332
- slug: tcgProductType,
333
- value: [
334
- { lang: 'fr', value: tcgProductType },
335
- { lang: 'en', value: tcgProductType }
336
- ],
337
- default_tag: undefined
338
- }
339
- ]
340
- };
341
- if (productTypeAttrib) {
342
- const val = productTypeAttrib.values.find((x) => x.slug == tcgProductType);
343
- if (val)
344
- attrib.values = [val];
345
- }
346
- const declination = [
347
- Object.assign(Object.assign({}, (0, Declination_1.emptyDeclination)()), { attributes: [
348
- attrib,
349
- ...(setAttributeValue ? [{ attribute_id: TCG_1.TCGAttributesEnum.SET, values: [setAttributeValue] }] : [])
350
- ], discount_rules: [], image_files: [], name: [
351
- { lang: 'fr', value: product.name.fr },
352
- { lang: 'en', value: product.name.en }
353
- ], created_from_external_service: this._serviceSlug, slug: product.slug, sku: product.slug + '_' + (productType ? productType : 'other'), price: { regular: { amount: 0 } }, shipping_info: shippingInfo, description: [] })
354
- ];
355
- const images = product.images.map((x) => ({ img_path: x }));
356
- declinations.push(...declination.map((d) => {
357
- var _a, _b, _c, _d;
358
- 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 });
359
- }));
360
- }
361
- let tcgAttributes = {};
362
- for (let a of product.attributes) {
363
- tcgAttributes = Object.assign(Object.assign({}, tcgAttributes), { [`${a.name}`]: a.value });
364
- }
365
- return {
366
- draft: false,
367
- name: [
368
- { lang: 'fr', value: product.name.fr },
369
- { lang: 'en', value: product.name.en }
370
- ],
371
- slug: product.slug,
372
- brand: product.brandSlug,
373
- category: product.category,
374
- is_hidden_in_client_pos: !product.isSingle,
375
- is_presale: product.isPresale,
376
- release_date: product.releaseDate,
377
- created_from_external_service: IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE,
378
- description: [
379
- { lang: 'fr', value: product.description.fr },
380
- { lang: 'en', value: product.description.en }
381
- ],
382
- id: product.slug,
383
- product_attributes: attributes,
384
- image_files: product.images.map((x) => ({ img_path: x })),
385
- declinations: declinations,
386
- seo_info: {
387
- seoTitle: [
388
- { lang: 'fr', value: product.name.fr },
389
- { lang: 'en', value: product.name.en }
390
- ],
391
- seoDescription: [
392
- { lang: 'fr', value: product.description.fr },
393
- { lang: 'en', value: product.description.en }
394
- ],
395
- seoImage: product.images.length > 0 ? { img_path: product.images[0] } : undefined
396
- },
397
- default_size: shippingInfo.shipping_details,
398
- tcg_attributes: tcgAttributes
399
- };
400
- }
401
- async getPredefinedFormats(locale) {
402
- return tcg_formats.map((x) => (Object.assign(Object.assign({}, x), { dimension_unit: 'centimeters', weight_unit: 'kilograms', name: (0, locale_1.translateILang)(x.name, locale) })));
403
- }
404
- //#endregion
405
- //#region Class specific function
406
- async getExternalServiceSupplierSlugs() {
407
- const externalService = await super.getExternalServiceData(IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE);
408
- if (!!!externalService)
409
- throw new Error('Could not find service');
410
- return (0, object_1.recursiveCheckObject)(externalService, 'external_service_params.cardgame_slugs');
411
- }
412
- async getExternalServiceBaseParentCategory() {
413
- const externalService = await super.getExternalServiceData(IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE);
414
- if (!!!externalService)
415
- throw new Error('Could not find service');
416
- return (0, object_1.recursiveCheckObject)(externalService, 'external_service_params.default_parent_cat');
417
- }
418
- async fetchApi(endpoint, externalService) {
419
- if (!externalService) {
420
- externalService = await super.getExternalServiceData(IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE);
421
- if (!!!externalService)
422
- throw new Error('Could not find service');
423
- }
424
- const urlToUse = externalService.external_service_infos.api_url;
425
- const query = await fetch(`${urlToUse}${endpoint}`, {
426
- method: 'GET',
427
- headers: { 'x-tcg-token': process.env.NEXT_PUBLIC_TCG_API_TOKEN || '' }
428
- });
429
- return (await query.json());
430
- }
431
- isErrorResult(obj) {
432
- return obj.status !== undefined;
433
- }
434
- async getEcommAttributes() {
435
- if (this._attributes)
436
- return;
437
- const docs = await DatabaseService_1.default.getDocuments(`/the_beast/1.0.0/orgs/${this._orgId}/spaces/${this._spaceId}/attributes`);
438
- this._attributes = docs
439
- .map((x) => x.data)
440
- .filter((x) => !x.draft && x.created_from_external_service == this._serviceSlug);
441
- }
442
- getSetsAttribute(slug, attr) {
443
- const entry = attr.values.find((x) => x.slug == slug);
444
- return {
445
- slug: slug,
446
- value: entry
447
- ? entry.value
448
- : [
449
- { lang: 'fr', value: slug },
450
- { lang: 'en', value: slug }
451
- ]
452
- };
453
- }
454
- getPricesAndType(card) {
455
- const result = [];
456
- if (card.priceHistory.length == 0 || card.priceHistory[0].prices.length == 0)
457
- return [{ price: 0, subType: 'normal' }]; // no price, no history... edge case
458
- let lastDate = '';
459
- for (let p of card.priceHistory[0].prices) {
460
- if (!lastDate || lastDate == p.date) {
461
- lastDate = p.date;
462
- const subT = (p.subType || 'normal').toLowerCase();
463
- if (!result.some((x) => x.subType == subT)) {
464
- result.push({ price: Number(p.market), subType: subT });
465
- }
466
- }
467
- }
468
- return result;
469
- }
470
- getNameFromAttributes(currentValues) {
471
- let fr = '';
472
- let en = '';
473
- for (let v of currentValues) {
474
- if (v.values.length == 0 || !v.values[0].default_tag || v.values[0].value.length == 0)
475
- continue;
476
- const valFr = v.values[0].value.find((x) => x.lang == 'fr') || v.values[0].value[0];
477
- const valEn = v.values[0].value.find((x) => x.lang == 'en') || v.values[0].value[0];
478
- fr += (fr != '' ? ' - ' : '') + valFr.value;
479
- en += (en != '' ? ' - ' : '') + valEn.value;
480
- }
481
- return [
482
- { lang: 'fr', value: fr },
483
- { lang: 'en', value: en }
484
- ];
485
- }
486
- getSkuFromAttributes(base, currentValues) {
487
- return (base +
488
- '_' +
489
- currentValues
490
- .filter((x) => x.values.length > 0 && x.values[0].default_tag)
491
- .map((x) => x.values[0].default_tag)
492
- .join('_'));
493
- }
494
- createRecursiveDeclinations(game, baseSlug, shipping, setAttributeValue, currentValues, otherAttribs) {
495
- if (otherAttribs.length == 0)
496
- return [];
497
- if (otherAttribs.length > 1) {
498
- const result = [];
499
- const nextAttribs = otherAttribs.slice(1);
500
- for (const v of otherAttribs[0].values) {
501
- if (v.default_tag && v.associated_to && v.associated_to.some((x) => x == game)) {
502
- // only those with tag and for the current game
503
- result.push(...this.createRecursiveDeclinations(game, baseSlug, shipping, setAttributeValue, [...currentValues, { attribute_id: otherAttribs[0].id, values: [v] }], nextAttribs));
504
- }
505
- }
506
- return result;
507
- }
508
- const result = [];
509
- for (const v of otherAttribs[0].values) {
510
- if (v.associated_to && v.associated_to.some((x) => x == game)) {
511
- const fullAttribs = [
512
- ...currentValues,
513
- { attribute_id: otherAttribs[0].id, values: [v] },
514
- ...(setAttributeValue ? [{ attribute_id: TCG_1.TCGAttributesEnum.SET, values: [setAttributeValue] }] : [])
515
- ];
516
- result.push(Object.assign(Object.assign({}, (0, Declination_1.emptyDeclination)()), { attributes: fullAttribs, discount_rules: [], image_files: [], name: this.getNameFromAttributes(fullAttribs), created_from_external_service: this._serviceSlug, slug: baseSlug, sku: this.getSkuFromAttributes(baseSlug, fullAttribs), price: { regular: { amount: 0 } }, shipping_info: shipping, description: [] }));
517
- }
518
- }
519
- return result;
520
- }
521
- async getShippingInfo(card) {
522
- const isPack = card.attributes.some((x) => x.name.toLowerCase() == 'producttype' && x.value == 'sealed_booster_packs');
523
- const formatSlug = card.isSingle
524
- ? TCG_1.TCGProductFormatsEnum.CARD
525
- : isPack
526
- ? TCG_1.TCGProductFormatsEnum.PACK
527
- : TCG_1.TCGProductFormatsEnum.BUNDLE;
528
- let format = tcg_formats.find((x) => x.slug == formatSlug);
529
- // use the predeterminated formats of the space if available
530
- const spaceData = await this.getSpaceData();
531
- if (spaceData.transport_preferences.predefined_products) {
532
- const box = spaceData.transport_preferences.predefined_products.find((x) => x.slug == formatSlug);
533
- if (box)
534
- return {
535
- unit_measurments: 'centimeters',
536
- unit_weight: 'kilograms',
537
- height: box.height,
538
- length: box.length,
539
- width: box.width,
540
- weight: box.weight,
541
- shipping_details: formatSlug
542
- };
543
- }
544
- return {
545
- unit_measurments: 'centimeters',
546
- unit_weight: 'kilograms',
547
- height: format.height,
548
- length: format.length,
549
- width: format.width,
550
- weight: format.weight,
551
- shipping_details: formatSlug
552
- };
553
- }
554
- }
555
- 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
+ height: 0.1,
23
+ length: 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
+ height: 0.25,
31
+ length: 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
+ height: 5.1,
39
+ length: 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 = this.createRecursiveDeclinations(product.category, product.slug, shippingInfo, setAttributeValue, [attrib], usedAttributes);
317
+ const images = product.images.map((x) => ({ img_path: x }));
318
+ declinations.push(...finishDeclis.map((d) => {
319
+ const newPrice = category.costPriceRule(finish.price, d, 'sell');
320
+ return Object.assign(Object.assign({}, d), { price: Object.assign(Object.assign({}, d.price), { regular: { amount: newPrice }, pdsf: { amount: finish.price } }), image_files: images });
321
+ }));
322
+ }
323
+ }
324
+ else {
325
+ //créer une declination
326
+ const productType = (_a = product.attributes.find((attr) => attr.name === 'ProductType')) === null || _a === void 0 ? void 0 : _a.value;
327
+ const tcgProductType = productType ? `tcg_${productType}` : 'tcg_other';
328
+ const attrib = {
329
+ attribute_id: TCG_1.TCGAttributesEnum.TYPE,
330
+ values: [
331
+ {
332
+ slug: tcgProductType,
333
+ value: [
334
+ { lang: 'fr', value: tcgProductType },
335
+ { lang: 'en', value: tcgProductType }
336
+ ],
337
+ default_tag: undefined
338
+ }
339
+ ]
340
+ };
341
+ if (productTypeAttrib) {
342
+ const val = productTypeAttrib.values.find((x) => x.slug == tcgProductType);
343
+ if (val)
344
+ attrib.values = [val];
345
+ }
346
+ const declination = [
347
+ Object.assign(Object.assign({}, (0, Declination_1.emptyDeclination)()), { attributes: [
348
+ attrib,
349
+ ...(setAttributeValue ? [{ attribute_id: TCG_1.TCGAttributesEnum.SET, values: [setAttributeValue] }] : [])
350
+ ], discount_rules: [], image_files: [], name: [
351
+ { lang: 'fr', value: product.name.fr },
352
+ { lang: 'en', value: product.name.en }
353
+ ], created_from_external_service: this._serviceSlug, slug: product.slug, sku: product.slug + '_' + (productType ? productType : 'other'), price: { regular: { amount: 0 } }, shipping_info: shippingInfo, description: [] })
354
+ ];
355
+ const images = product.images.map((x) => ({ img_path: x }));
356
+ declinations.push(...declination.map((d) => {
357
+ var _a, _b, _c, _d;
358
+ 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 });
359
+ }));
360
+ }
361
+ let tcgAttributes = {};
362
+ for (let a of product.attributes) {
363
+ tcgAttributes = Object.assign(Object.assign({}, tcgAttributes), { [`${a.name}`]: a.value });
364
+ }
365
+ return {
366
+ draft: false,
367
+ name: [
368
+ { lang: 'fr', value: product.name.fr },
369
+ { lang: 'en', value: product.name.en }
370
+ ],
371
+ slug: product.slug,
372
+ brand: product.brandSlug,
373
+ category: product.category,
374
+ is_hidden_in_client_pos: !product.isSingle,
375
+ is_presale: product.isPresale,
376
+ release_date: product.releaseDate,
377
+ created_from_external_service: IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE,
378
+ description: [
379
+ { lang: 'fr', value: product.description.fr },
380
+ { lang: 'en', value: product.description.en }
381
+ ],
382
+ id: product.slug,
383
+ product_attributes: attributes,
384
+ image_files: product.images.map((x) => ({ img_path: x })),
385
+ declinations: declinations,
386
+ seo_info: {
387
+ seoTitle: [
388
+ { lang: 'fr', value: product.name.fr },
389
+ { lang: 'en', value: product.name.en }
390
+ ],
391
+ seoDescription: [
392
+ { lang: 'fr', value: product.description.fr },
393
+ { lang: 'en', value: product.description.en }
394
+ ],
395
+ seoImage: product.images.length > 0 ? { img_path: product.images[0] } : undefined
396
+ },
397
+ default_size: shippingInfo.shipping_details,
398
+ tcg_attributes: tcgAttributes
399
+ };
400
+ }
401
+ async getPredefinedFormats(locale) {
402
+ return tcg_formats.map((x) => (Object.assign(Object.assign({}, x), { dimension_unit: 'centimeters', weight_unit: 'kilograms', name: (0, locale_1.translateILang)(x.name, locale) })));
403
+ }
404
+ //#endregion
405
+ //#region Class specific function
406
+ async getExternalServiceSupplierSlugs() {
407
+ const externalService = await super.getExternalServiceData(IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE);
408
+ if (!!!externalService)
409
+ throw new Error('Could not find service');
410
+ return (0, object_1.recursiveCheckObject)(externalService, 'external_service_params.cardgame_slugs');
411
+ }
412
+ async getExternalServiceBaseParentCategory() {
413
+ const externalService = await super.getExternalServiceData(IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE);
414
+ if (!!!externalService)
415
+ throw new Error('Could not find service');
416
+ return (0, object_1.recursiveCheckObject)(externalService, 'external_service_params.default_parent_cat');
417
+ }
418
+ async fetchApi(endpoint, externalService) {
419
+ if (!externalService) {
420
+ externalService = await super.getExternalServiceData(IExternalService_1.ExternalServiceSlugEnum.TCG_SERVICE);
421
+ if (!!!externalService)
422
+ throw new Error('Could not find service');
423
+ }
424
+ const urlToUse = externalService.external_service_infos.api_url;
425
+ const query = await fetch(`${urlToUse}${endpoint}`, {
426
+ method: 'GET',
427
+ headers: { 'x-tcg-token': process.env.NEXT_PUBLIC_TCG_API_TOKEN || '' }
428
+ });
429
+ return (await query.json());
430
+ }
431
+ isErrorResult(obj) {
432
+ return obj.status !== undefined;
433
+ }
434
+ async getEcommAttributes() {
435
+ if (this._attributes)
436
+ return;
437
+ const docs = await DatabaseService_1.default.getDocuments(`/the_beast/1.0.0/orgs/${this._orgId}/spaces/${this._spaceId}/attributes`);
438
+ this._attributes = docs
439
+ .map((x) => x.data)
440
+ .filter((x) => !x.draft && x.created_from_external_service == this._serviceSlug);
441
+ }
442
+ getSetsAttribute(slug, attr) {
443
+ const entry = attr.values.find((x) => x.slug == slug);
444
+ return {
445
+ slug: slug,
446
+ value: entry
447
+ ? entry.value
448
+ : [
449
+ { lang: 'fr', value: slug },
450
+ { lang: 'en', value: slug }
451
+ ]
452
+ };
453
+ }
454
+ getPricesAndType(card) {
455
+ const result = [];
456
+ if (card.priceHistory.length == 0 || card.priceHistory[0].prices.length == 0)
457
+ return [{ price: 0, subType: 'normal' }]; // no price, no history... edge case
458
+ let lastDate = '';
459
+ for (let p of card.priceHistory[0].prices) {
460
+ if (!lastDate || lastDate == p.date) {
461
+ lastDate = p.date;
462
+ const subT = (p.subType || 'normal').toLowerCase();
463
+ if (!result.some((x) => x.subType == subT)) {
464
+ result.push({ price: Number(p.market), subType: subT });
465
+ }
466
+ }
467
+ }
468
+ return result;
469
+ }
470
+ getNameFromAttributes(currentValues) {
471
+ let fr = '';
472
+ let en = '';
473
+ for (let v of currentValues) {
474
+ if (v.values.length == 0 || !v.values[0].default_tag || v.values[0].value.length == 0)
475
+ continue;
476
+ const valFr = v.values[0].value.find((x) => x.lang == 'fr') || v.values[0].value[0];
477
+ const valEn = v.values[0].value.find((x) => x.lang == 'en') || v.values[0].value[0];
478
+ fr += (fr != '' ? ' - ' : '') + valFr.value;
479
+ en += (en != '' ? ' - ' : '') + valEn.value;
480
+ }
481
+ return [
482
+ { lang: 'fr', value: fr },
483
+ { lang: 'en', value: en }
484
+ ];
485
+ }
486
+ getSkuFromAttributes(base, currentValues) {
487
+ return (base +
488
+ '_' +
489
+ currentValues
490
+ .filter((x) => x.values.length > 0 && x.values[0].default_tag)
491
+ .map((x) => x.values[0].default_tag)
492
+ .join('_'));
493
+ }
494
+ createRecursiveDeclinations(game, baseSlug, shipping, setAttributeValue, currentValues, otherAttribs) {
495
+ if (otherAttribs.length == 0)
496
+ return [];
497
+ if (otherAttribs.length > 1) {
498
+ const result = [];
499
+ const nextAttribs = otherAttribs.slice(1);
500
+ for (const v of otherAttribs[0].values) {
501
+ if (v.default_tag && v.associated_to && v.associated_to.some((x) => x == game)) {
502
+ // only those with tag and for the current game
503
+ result.push(...this.createRecursiveDeclinations(game, baseSlug, shipping, setAttributeValue, [...currentValues, { attribute_id: otherAttribs[0].id, values: [v] }], nextAttribs));
504
+ }
505
+ }
506
+ return result;
507
+ }
508
+ const result = [];
509
+ for (const v of otherAttribs[0].values) {
510
+ if (v.associated_to && v.associated_to.some((x) => x == game)) {
511
+ const fullAttribs = [
512
+ ...currentValues,
513
+ { attribute_id: otherAttribs[0].id, values: [v] },
514
+ ...(setAttributeValue ? [{ attribute_id: TCG_1.TCGAttributesEnum.SET, values: [setAttributeValue] }] : [])
515
+ ];
516
+ result.push(Object.assign(Object.assign({}, (0, Declination_1.emptyDeclination)()), { attributes: fullAttribs, discount_rules: [], image_files: [], name: this.getNameFromAttributes(fullAttribs), created_from_external_service: this._serviceSlug, slug: baseSlug, sku: this.getSkuFromAttributes(baseSlug, fullAttribs), price: { regular: { amount: 0 } }, shipping_info: shipping, description: [] }));
517
+ }
518
+ }
519
+ return result;
520
+ }
521
+ async getShippingInfo(card) {
522
+ const isPack = card.attributes.some((x) => x.name.toLowerCase() == 'producttype' && x.value == 'sealed_booster_packs');
523
+ const formatSlug = card.isSingle
524
+ ? TCG_1.TCGProductFormatsEnum.CARD
525
+ : isPack
526
+ ? TCG_1.TCGProductFormatsEnum.PACK
527
+ : TCG_1.TCGProductFormatsEnum.BUNDLE;
528
+ let format = tcg_formats.find((x) => x.slug == formatSlug);
529
+ // use the predeterminated formats of the space if available
530
+ const spaceData = await this.getSpaceData();
531
+ if (spaceData.transport_preferences.predefined_products) {
532
+ const box = spaceData.transport_preferences.predefined_products.find((x) => x.slug == formatSlug);
533
+ if (box)
534
+ return {
535
+ unit_measurments: 'centimeters',
536
+ unit_weight: 'kilograms',
537
+ height: box.height,
538
+ length: box.length,
539
+ width: box.width,
540
+ weight: box.weight,
541
+ shipping_details: formatSlug
542
+ };
543
+ }
544
+ return {
545
+ unit_measurments: 'centimeters',
546
+ unit_weight: 'kilograms',
547
+ height: format.height,
548
+ length: format.length,
549
+ width: format.width,
550
+ weight: format.weight,
551
+ shipping_details: formatSlug
552
+ };
553
+ }
554
+ }
555
+ exports.default = TCGServiceClass;
556
556
  //# sourceMappingURL=TCGService.js.map