addio-admin-sdk 1.7.90 → 1.7.96

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 (557) hide show
  1. package/.babelrc +17 -17
  2. package/.env +15 -0
  3. package/.env.dev +14 -14
  4. package/.github/workflows/publish_coverage.yam_ +69 -69
  5. package/addio-sdk-doc.md +1473 -1473
  6. package/changelog.md +537 -537
  7. package/dist/Interfaces/Address/index.d.ts +21 -21
  8. package/dist/Interfaces/Address/index.js +16 -16
  9. package/dist/Interfaces/Algolia/index.d.ts +164 -164
  10. package/dist/Interfaces/Algolia/index.js +2 -2
  11. package/dist/Interfaces/Attachement/index.d.ts +5 -5
  12. package/dist/Interfaces/Attachement/index.js +2 -2
  13. package/dist/Interfaces/Attribute/index.d.ts +52 -52
  14. package/dist/Interfaces/Attribute/index.js +10 -10
  15. package/dist/Interfaces/BGJob/index.d.ts +56 -56
  16. package/dist/Interfaces/BGJob/index.js +25 -25
  17. package/dist/Interfaces/BaseClass/index.d.ts +8 -8
  18. package/dist/Interfaces/BaseClass/index.js +2 -2
  19. package/dist/Interfaces/Blog/IBlogArticle.d.ts +18 -18
  20. package/dist/Interfaces/Blog/IBlogArticle.js +2 -2
  21. package/dist/Interfaces/Blog/IBlogAuthor.d.ts +7 -7
  22. package/dist/Interfaces/Blog/IBlogAuthor.js +2 -2
  23. package/dist/Interfaces/Blog/IBlogCategory.d.ts +9 -9
  24. package/dist/Interfaces/Blog/IBlogCategory.js +2 -2
  25. package/dist/Interfaces/Blog/IBlogComment.d.ts +13 -13
  26. package/dist/Interfaces/Blog/IBlogComment.js +2 -2
  27. package/dist/Interfaces/Blog/IBlogKeywords.d.ts +9 -9
  28. package/dist/Interfaces/Blog/IBlogKeywords.js +2 -2
  29. package/dist/Interfaces/Booking/index.d.ts +74 -74
  30. package/dist/Interfaces/Booking/index.js +17 -17
  31. package/dist/Interfaces/Brand/index.d.ts +15 -15
  32. package/dist/Interfaces/Brand/index.js +2 -2
  33. package/dist/Interfaces/CMS/index.d.ts +25 -25
  34. package/dist/Interfaces/CMS/index.js +2 -2
  35. package/dist/Interfaces/Cart/IElavonPayload.d.ts +93 -93
  36. package/dist/Interfaces/Cart/IElavonPayload.js +17 -17
  37. package/dist/Interfaces/Cart/IPandaPayload.d.ts +64 -64
  38. package/dist/Interfaces/Cart/IPandaPayload.js +18 -18
  39. package/dist/Interfaces/Cart/IPaymentCard.d.ts +22 -22
  40. package/dist/Interfaces/Cart/IPaymentCard.js +44 -44
  41. package/dist/Interfaces/Cart/IPaypalPayload.d.ts +9 -9
  42. package/dist/Interfaces/Cart/IPaypalPayload.js +2 -2
  43. package/dist/Interfaces/Cart/IPaysafePayload.d.ts +72 -72
  44. package/dist/Interfaces/Cart/IPaysafePayload.js +2 -2
  45. package/dist/Interfaces/Cart/IStripePayload.d.ts +66 -66
  46. package/dist/Interfaces/Cart/IStripePayload.js +2 -2
  47. package/dist/Interfaces/Cart/index.d.ts +425 -425
  48. package/dist/Interfaces/Cart/index.js +192 -192
  49. package/dist/Interfaces/Catalogue/index.d.ts +68 -68
  50. package/dist/Interfaces/Catalogue/index.js +37 -37
  51. package/dist/Interfaces/Category/index.d.ts +33 -33
  52. package/dist/Interfaces/Category/index.js +2 -2
  53. package/dist/Interfaces/Chart/index.d.ts +11 -11
  54. package/dist/Interfaces/Chart/index.js +2 -2
  55. package/dist/Interfaces/Class/index.d.ts +8 -8
  56. package/dist/Interfaces/Class/index.js +2 -2
  57. package/dist/Interfaces/Consent/index.d.ts +6 -6
  58. package/dist/Interfaces/Consent/index.js +2 -2
  59. package/dist/Interfaces/Context/IContextProps.d.ts +4 -4
  60. package/dist/Interfaces/Context/IContextProps.js +2 -2
  61. package/dist/Interfaces/Context/IContextState.d.ts +15 -15
  62. package/dist/Interfaces/Context/IContextState.js +2 -2
  63. package/dist/Interfaces/Customer/ICustomerBadge.d.ts +2 -2
  64. package/dist/Interfaces/Customer/ICustomerBadge.js +2 -2
  65. package/dist/Interfaces/Customer/ICustomerRating.d.ts +10 -10
  66. package/dist/Interfaces/Customer/ICustomerRating.js +2 -2
  67. package/dist/Interfaces/Customer/IStoreCredit.d.ts +12 -12
  68. package/dist/Interfaces/Customer/IStoreCredit.js +2 -2
  69. package/dist/Interfaces/Customer/index.d.ts +97 -97
  70. package/dist/Interfaces/Customer/index.js +141 -141
  71. package/dist/Interfaces/Declination/index.d.ts +114 -114
  72. package/dist/Interfaces/Declination/index.js +60 -60
  73. package/dist/Interfaces/Document/index.d.ts +8 -8
  74. package/dist/Interfaces/Document/index.js +2 -2
  75. package/dist/Interfaces/Elastic/index.d.ts +89 -89
  76. package/dist/Interfaces/Elastic/index.js +2 -2
  77. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.d.ts +11 -11
  78. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.js +2 -2
  79. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.d.ts +15 -15
  80. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.js +2 -2
  81. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.d.ts +12 -12
  82. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.js +2 -2
  83. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.d.ts +36 -36
  84. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.js +2 -2
  85. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.d.ts +12 -12
  86. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.js +2 -2
  87. package/dist/Interfaces/Email/CustomGR/ITransportEmail.d.ts +12 -12
  88. package/dist/Interfaces/Email/CustomGR/ITransportEmail.js +2 -2
  89. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.d.ts +12 -12
  90. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.js +2 -2
  91. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.d.ts +16 -16
  92. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.js +2 -2
  93. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.d.ts +15 -15
  94. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.js +2 -2
  95. package/dist/Interfaces/Email/IAbandonnedCartEmail.d.ts +29 -29
  96. package/dist/Interfaces/Email/IAbandonnedCartEmail.js +2 -2
  97. package/dist/Interfaces/Email/IAccountConfirmationEmail.d.ts +22 -22
  98. package/dist/Interfaces/Email/IAccountConfirmationEmail.js +2 -2
  99. package/dist/Interfaces/Email/IApplicationEmail.d.ts +19 -19
  100. package/dist/Interfaces/Email/IApplicationEmail.js +2 -2
  101. package/dist/Interfaces/Email/IBackInStockEmail.d.ts +21 -21
  102. package/dist/Interfaces/Email/IBackInStockEmail.js +2 -2
  103. package/dist/Interfaces/Email/IContactEmail.d.ts +20 -20
  104. package/dist/Interfaces/Email/IContactEmail.js +2 -2
  105. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.d.ts +15 -15
  106. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.js +2 -2
  107. package/dist/Interfaces/Email/ICustomerBookingEmail.d.ts +14 -14
  108. package/dist/Interfaces/Email/ICustomerBookingEmail.js +2 -2
  109. package/dist/Interfaces/Email/IEmail.d.ts +20 -20
  110. package/dist/Interfaces/Email/IEmail.js +56 -56
  111. package/dist/Interfaces/Email/IOrderConfirmationEmail.d.ts +47 -47
  112. package/dist/Interfaces/Email/IOrderConfirmationEmail.js +2 -2
  113. package/dist/Interfaces/Email/IPasswordResetEmail.d.ts +17 -17
  114. package/dist/Interfaces/Email/IPasswordResetEmail.js +2 -2
  115. package/dist/Interfaces/Email/IPhotoShootEmail.d.ts +14 -14
  116. package/dist/Interfaces/Email/IPhotoShootEmail.js +2 -2
  117. package/dist/Interfaces/Email/IPickupConfirmation.d.ts +23 -23
  118. package/dist/Interfaces/Email/IPickupConfirmation.js +2 -2
  119. package/dist/Interfaces/Email/IShippingConfirmation.d.ts +23 -23
  120. package/dist/Interfaces/Email/IShippingConfirmation.js +2 -2
  121. package/dist/Interfaces/Email/IWelcomeEmail.d.ts +19 -19
  122. package/dist/Interfaces/Email/IWelcomeEmail.js +2 -2
  123. package/dist/Interfaces/ExportSchema/index.d.ts +7 -7
  124. package/dist/Interfaces/ExportSchema/index.js +2 -2
  125. package/dist/Interfaces/ExternalService/BaseExternalService.d.ts +12 -12
  126. package/dist/Interfaces/ExternalService/BaseExternalService.js +2 -2
  127. package/dist/Interfaces/ExternalService/ExternalProductsService.d.ts +4 -4
  128. package/dist/Interfaces/ExternalService/ExternalProductsService.js +2 -2
  129. package/dist/Interfaces/ExternalService/index.d.ts +9 -9
  130. package/dist/Interfaces/ExternalService/index.js +2 -2
  131. package/dist/Interfaces/FirstOrderTracking/index.d.ts +5 -5
  132. package/dist/Interfaces/FirstOrderTracking/index.js +2 -2
  133. package/dist/Interfaces/G2/index.d.ts +556 -556
  134. package/dist/Interfaces/G2/index.js +36 -36
  135. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.d.ts +20 -20
  136. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.js +2 -2
  137. package/dist/Interfaces/Indexed/Product/index.d.ts +97 -97
  138. package/dist/Interfaces/Indexed/Product/index.js +212 -212
  139. package/dist/Interfaces/Inventory/index.d.ts +19 -19
  140. package/dist/Interfaces/Inventory/index.js +8 -8
  141. package/dist/Interfaces/Invoice/index.d.ts +4 -4
  142. package/dist/Interfaces/Invoice/index.js +2 -2
  143. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.d.ts +3 -3
  144. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.js +2 -2
  145. package/dist/Interfaces/MarketplacePublication/index.d.ts +23 -23
  146. package/dist/Interfaces/MarketplacePublication/index.js +22 -22
  147. package/dist/Interfaces/Menu/index.d.ts +23 -23
  148. package/dist/Interfaces/Menu/index.js +10 -10
  149. package/dist/Interfaces/Note/index.d.ts +10 -10
  150. package/dist/Interfaces/Note/index.js +7 -7
  151. package/dist/Interfaces/Operations/ICreatedBy.d.ts +6 -6
  152. package/dist/Interfaces/Operations/ICreatedBy.js +2 -2
  153. package/dist/Interfaces/Operations/IUpdate.d.ts +5 -5
  154. package/dist/Interfaces/Operations/IUpdate.js +2 -2
  155. package/dist/Interfaces/Order/index.d.ts +4 -4
  156. package/dist/Interfaces/Order/index.js +2 -2
  157. package/dist/Interfaces/Org/IRelUser.d.ts +9 -9
  158. package/dist/Interfaces/Org/IRelUser.js +2 -2
  159. package/dist/Interfaces/Org/index.d.ts +29 -29
  160. package/dist/Interfaces/Org/index.js +12 -12
  161. package/dist/Interfaces/Payment/index.d.ts +13 -13
  162. package/dist/Interfaces/Payment/index.js +2 -2
  163. package/dist/Interfaces/Product/IAttributeFamily.d.ts +6 -6
  164. package/dist/Interfaces/Product/IAttributeFamily.js +2 -2
  165. package/dist/Interfaces/Product/IImportProduct.d.ts +42 -42
  166. package/dist/Interfaces/Product/IImportProduct.js +791 -791
  167. package/dist/Interfaces/Product/IInventoryItem.d.ts +84 -84
  168. package/dist/Interfaces/Product/IInventoryItem.js +36 -36
  169. package/dist/Interfaces/Product/IPricing.d.ts +177 -177
  170. package/dist/Interfaces/Product/IPricing.js +174 -174
  171. package/dist/Interfaces/Product/index.d.ts +127 -127
  172. package/dist/Interfaces/Product/index.js +56 -56
  173. package/dist/Interfaces/ProductAttribute/index.d.ts +11 -11
  174. package/dist/Interfaces/ProductAttribute/index.js +2 -2
  175. package/dist/Interfaces/PromiseToPurchase/BankType.d.ts +41 -41
  176. package/dist/Interfaces/PromiseToPurchase/BankType.js +41 -41
  177. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.d.ts +33 -33
  178. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.js +15 -15
  179. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.d.ts +19 -19
  180. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.js +2 -2
  181. package/dist/Interfaces/PromiseToPurchase/index.d.ts +50 -50
  182. package/dist/Interfaces/PromiseToPurchase/index.js +13 -13
  183. package/dist/Interfaces/PurchaseOrder/index.d.ts +17 -17
  184. package/dist/Interfaces/PurchaseOrder/index.js +2 -2
  185. package/dist/Interfaces/Query/IBrandQueryOptions.d.ts +11 -11
  186. package/dist/Interfaces/Query/IBrandQueryOptions.js +2 -2
  187. package/dist/Interfaces/Query/ICategoryQueryOptions.d.ts +11 -11
  188. package/dist/Interfaces/Query/ICategoryQueryOptions.js +2 -2
  189. package/dist/Interfaces/Query/IProductQueryOptions.d.ts +16 -16
  190. package/dist/Interfaces/Query/IProductQueryOptions.js +2 -2
  191. package/dist/Interfaces/Quote/index.d.ts +5 -5
  192. package/dist/Interfaces/Quote/index.js +2 -2
  193. package/dist/Interfaces/Refunds/index.d.ts +106 -106
  194. package/dist/Interfaces/Refunds/index.js +2 -2
  195. package/dist/Interfaces/Rules/IDiscountRule.d.ts +137 -137
  196. package/dist/Interfaces/Rules/IDiscountRule.js +95 -95
  197. package/dist/Interfaces/Schedule/index.d.ts +48 -48
  198. package/dist/Interfaces/Schedule/index.js +2 -2
  199. package/dist/Interfaces/Services/IAddServiceResponse.d.ts +4 -4
  200. package/dist/Interfaces/Services/IAddServiceResponse.js +2 -2
  201. package/dist/Interfaces/Services/IService.d.ts +12 -12
  202. package/dist/Interfaces/Services/IService.js +2 -2
  203. package/dist/Interfaces/Services/IServiceSecret.d.ts +8 -8
  204. package/dist/Interfaces/Services/IServiceSecret.js +2 -2
  205. package/dist/Interfaces/Shipping/Shipstation/carriers.d.ts +10 -10
  206. package/dist/Interfaces/Shipping/Shipstation/carriers.js +2 -2
  207. package/dist/Interfaces/Shipping/Shipstation/order.d.ts +227 -227
  208. package/dist/Interfaces/Shipping/Shipstation/order.js +2 -2
  209. package/dist/Interfaces/Shipping/Shipstation/quote.d.ts +31 -31
  210. package/dist/Interfaces/Shipping/Shipstation/quote.js +2 -2
  211. package/dist/Interfaces/Shipping/Shiptime/order.d.ts +54 -54
  212. package/dist/Interfaces/Shipping/Shiptime/order.js +48 -48
  213. package/dist/Interfaces/Shipping/Shiptime/quote.d.ts +111 -111
  214. package/dist/Interfaces/Shipping/Shiptime/quote.js +2 -2
  215. package/dist/Interfaces/Slider/GR.d.ts +114 -114
  216. package/dist/Interfaces/Slider/GR.js +271 -271
  217. package/dist/Interfaces/Slider/index.d.ts +30 -30
  218. package/dist/Interfaces/Slider/index.js +2 -2
  219. package/dist/Interfaces/Space/IExternalService.d.ts +52 -52
  220. package/dist/Interfaces/Space/IExternalService.js +43 -43
  221. package/dist/Interfaces/Space/IMember.d.ts +16 -16
  222. package/dist/Interfaces/Space/IMember.js +9 -9
  223. package/dist/Interfaces/Space/index.d.ts +390 -390
  224. package/dist/Interfaces/Space/index.js +160 -160
  225. package/dist/Interfaces/Specials/gr.d.ts +61 -61
  226. package/dist/Interfaces/Specials/gr.js +2 -2
  227. package/dist/Interfaces/StockNotification/index.d.ts +7 -7
  228. package/dist/Interfaces/StockNotification/index.js +2 -2
  229. package/dist/Interfaces/Store/index.d.ts +62 -62
  230. package/dist/Interfaces/Store/index.js +27 -27
  231. package/dist/Interfaces/Supplier/ICommand.d.ts +11 -11
  232. package/dist/Interfaces/Supplier/ICommand.js +2 -2
  233. package/dist/Interfaces/Supplier/index.d.ts +36 -36
  234. package/dist/Interfaces/Supplier/index.js +24 -24
  235. package/dist/Interfaces/TCG/index.d.ts +110 -110
  236. package/dist/Interfaces/TCG/index.js +27 -27
  237. package/dist/Interfaces/Tag/index.d.ts +18 -18
  238. package/dist/Interfaces/Tag/index.js +2 -2
  239. package/dist/Interfaces/Tax/index.d.ts +13 -13
  240. package/dist/Interfaces/Tax/index.js +2 -2
  241. package/dist/Interfaces/TransferRequest/index.d.ts +103 -103
  242. package/dist/Interfaces/TransferRequest/index.js +43 -43
  243. package/dist/Interfaces/Translation/index.d.ts +8 -8
  244. package/dist/Interfaces/Translation/index.js +5 -5
  245. package/dist/Interfaces/Update/index.d.ts +10 -10
  246. package/dist/Interfaces/Update/index.js +2 -2
  247. package/dist/Interfaces/User/IUser.d.ts +65 -65
  248. package/dist/Interfaces/User/IUser.js +8 -8
  249. package/dist/Interfaces/Version/index.d.ts +11 -11
  250. package/dist/Interfaces/Version/index.js +2 -2
  251. package/dist/Interfaces/Wishlist/index.d.ts +7 -7
  252. package/dist/Interfaces/Wishlist/index.js +2 -2
  253. package/dist/constants/Interfaces/IBaseApi.d.ts +15 -15
  254. package/dist/constants/Interfaces/IBaseApi.js +2 -2
  255. package/dist/constants/Interfaces/IEndpointResult.d.ts +9 -9
  256. package/dist/constants/Interfaces/IEndpointResult.js +2 -2
  257. package/dist/constants/enums.d.ts +6 -6
  258. package/dist/constants/enums.js +10 -10
  259. package/dist/constants/services.d.ts +2 -2
  260. package/dist/constants/services.js +111 -111
  261. package/dist/constants/version.d.ts +2 -2
  262. package/dist/constants/version.js +5 -5
  263. package/dist/index.d.ts +32 -32
  264. package/dist/index.js +242 -242
  265. package/dist/lib/Attribute/index.d.ts +14 -14
  266. package/dist/lib/Attribute/index.js +143 -143
  267. package/dist/lib/BGJob/index.d.ts +9 -9
  268. package/dist/lib/BGJob/index.js +212 -212
  269. package/dist/lib/BackgroundWorker/index.d.ts +34 -34
  270. package/dist/lib/BackgroundWorker/index.js +59 -59
  271. package/dist/lib/Blog/BlogArticle.d.ts +5 -5
  272. package/dist/lib/Blog/BlogArticle.js +10 -10
  273. package/dist/lib/Blog/BlogAuthor.d.ts +5 -5
  274. package/dist/lib/Blog/BlogAuthor.js +10 -10
  275. package/dist/lib/Blog/BlogCategory.d.ts +5 -5
  276. package/dist/lib/Blog/BlogCategory.js +10 -10
  277. package/dist/lib/Blog/BlogKeyword.d.ts +5 -5
  278. package/dist/lib/Blog/BlogKeyword.js +10 -10
  279. package/dist/lib/Booking/index.d.ts +70 -70
  280. package/dist/lib/Booking/index.js +576 -576
  281. package/dist/lib/Brand/index.d.ts +17 -17
  282. package/dist/lib/Brand/index.js +113 -113
  283. package/dist/lib/Cart/index.d.ts +206 -206
  284. package/dist/lib/Cart/index.js +3165 -3165
  285. package/dist/lib/Catalogue/index.d.ts +9 -9
  286. package/dist/lib/Catalogue/index.js +69 -69
  287. package/dist/lib/Category/index.d.ts +27 -27
  288. package/dist/lib/Category/index.js +190 -190
  289. package/dist/lib/Class/index.d.ts +12 -12
  290. package/dist/lib/Class/index.js +58 -58
  291. package/dist/lib/Consent/index.d.ts +4 -4
  292. package/dist/lib/Consent/index.js +29 -29
  293. package/dist/lib/Customer/index.d.ts +11 -11
  294. package/dist/lib/Customer/index.js +68 -68
  295. package/dist/lib/Declination/index.d.ts +9 -9
  296. package/dist/lib/Declination/index.js +24 -24
  297. package/dist/lib/Discount/index.d.ts +18 -18
  298. package/dist/lib/Discount/index.js +470 -470
  299. package/dist/lib/ElasticSearch/index.d.ts +8 -8
  300. package/dist/lib/ElasticSearch/index.js +45 -45
  301. package/dist/lib/Elavon/index.d.ts +18 -18
  302. package/dist/lib/Elavon/index.js +130 -130
  303. package/dist/lib/Email/AbandonedCartEmail.d.ts +8 -8
  304. package/dist/lib/Email/AbandonedCartEmail.js +16 -16
  305. package/dist/lib/Email/AccountConfirmationEmail.d.ts +11 -11
  306. package/dist/lib/Email/AccountConfirmationEmail.js +22 -22
  307. package/dist/lib/Email/AdminOrderConfirmationEmail.d.ts +8 -8
  308. package/dist/lib/Email/AdminOrderConfirmationEmail.js +16 -16
  309. package/dist/lib/Email/ApplicationEmail.d.ts +8 -8
  310. package/dist/lib/Email/ApplicationEmail.js +16 -16
  311. package/dist/lib/Email/BackInStockEmail.d.ts +8 -8
  312. package/dist/lib/Email/BackInStockEmail.js +16 -16
  313. package/dist/lib/Email/ContactEmail.d.ts +8 -8
  314. package/dist/lib/Email/ContactEmail.js +16 -16
  315. package/dist/lib/Email/CustomerBookingAdminEmail.d.ts +8 -8
  316. package/dist/lib/Email/CustomerBookingAdminEmail.js +16 -16
  317. package/dist/lib/Email/CustomerBookingEmail.d.ts +8 -8
  318. package/dist/lib/Email/CustomerBookingEmail.js +16 -16
  319. package/dist/lib/Email/OrderConfirmationEmail.d.ts +8 -8
  320. package/dist/lib/Email/OrderConfirmationEmail.js +16 -16
  321. package/dist/lib/Email/OrderDenounciationEmail.d.ts +8 -8
  322. package/dist/lib/Email/OrderDenounciationEmail.js +16 -16
  323. package/dist/lib/Email/OrderSampleEmail.d.ts +8 -8
  324. package/dist/lib/Email/OrderSampleEmail.js +16 -16
  325. package/dist/lib/Email/OtherTypeEmails.d.ts +8 -8
  326. package/dist/lib/Email/OtherTypeEmails.js +19 -19
  327. package/dist/lib/Email/PasswordResetEmail.d.ts +8 -8
  328. package/dist/lib/Email/PasswordResetEmail.js +16 -16
  329. package/dist/lib/Email/PhotoShootEmail.d.ts +8 -8
  330. package/dist/lib/Email/PhotoShootEmail.js +16 -16
  331. package/dist/lib/Email/PickUpConfirmation.d.ts +8 -8
  332. package/dist/lib/Email/PickUpConfirmation.js +16 -16
  333. package/dist/lib/Email/ShippingConfirmation.d.ts +8 -8
  334. package/dist/lib/Email/ShippingConfirmation.js +16 -16
  335. package/dist/lib/Email/WelcomeEmail.d.ts +8 -8
  336. package/dist/lib/Email/WelcomeEmail.js +16 -16
  337. package/dist/lib/Email/index.d.ts +8 -8
  338. package/dist/lib/Email/index.js +23 -23
  339. package/dist/lib/ExternalService/Ebay.d.ts +62 -62
  340. package/dist/lib/ExternalService/Ebay.js +102 -102
  341. package/dist/lib/ExternalService/index.d.ts +5 -5
  342. package/dist/lib/ExternalService/index.js +10 -10
  343. package/dist/lib/FirstOrderTracking/index.d.ts +5 -5
  344. package/dist/lib/FirstOrderTracking/index.js +10 -10
  345. package/dist/lib/Indexed/IndexedCart.d.ts +13 -13
  346. package/dist/lib/Indexed/IndexedCart.js +86 -86
  347. package/dist/lib/Indexed/Product.d.ts +17 -17
  348. package/dist/lib/Indexed/Product.js +48 -48
  349. package/dist/lib/Inventory/index.d.ts +49 -49
  350. package/dist/lib/Inventory/index.js +314 -314
  351. package/dist/lib/Invoice/index.d.ts +5 -5
  352. package/dist/lib/Invoice/index.js +10 -10
  353. package/dist/lib/MarketplacePublication/index.d.ts +9 -9
  354. package/dist/lib/MarketplacePublication/index.js +118 -118
  355. package/dist/lib/Menu/index.d.ts +11 -11
  356. package/dist/lib/Menu/index.js +105 -105
  357. package/dist/lib/MongoDB/BaseAPI.d.ts +18 -18
  358. package/dist/lib/MongoDB/BaseAPI.js +200 -200
  359. package/dist/lib/Note/index.d.ts +4 -4
  360. package/dist/lib/Note/index.js +6 -6
  361. package/dist/lib/Order/index.d.ts +7 -7
  362. package/dist/lib/Order/index.js +33 -33
  363. package/dist/lib/Org/index.d.ts +27 -27
  364. package/dist/lib/Org/index.js +175 -175
  365. package/dist/lib/PandaPay/index.d.ts +16 -16
  366. package/dist/lib/PandaPay/index.js +170 -170
  367. package/dist/lib/Paysafe/index.d.ts +11 -11
  368. package/dist/lib/Paysafe/index.js +40 -40
  369. package/dist/lib/Product/index.d.ts +154 -154
  370. package/dist/lib/Product/index.js +793 -793
  371. package/dist/lib/ProductAttribute/index.d.ts +15 -15
  372. package/dist/lib/ProductAttribute/index.js +45 -45
  373. package/dist/lib/PromiseToPurchase/index.d.ts +37 -37
  374. package/dist/lib/PromiseToPurchase/index.js +264 -264
  375. package/dist/lib/PurchaseOrder/index.d.ts +9 -9
  376. package/dist/lib/PurchaseOrder/index.js +16 -16
  377. package/dist/lib/Queue/index.d.ts +40 -0
  378. package/dist/lib/Queue/index.js +255 -0
  379. package/dist/lib/Queue/index.js.map +1 -0
  380. package/dist/lib/Schedule/index.d.ts +5 -5
  381. package/dist/lib/Schedule/index.js +12 -12
  382. package/dist/lib/Service/Enum/ServiceEnum.d.ts +3 -3
  383. package/dist/lib/Service/Enum/ServiceEnum.js +7 -7
  384. package/dist/lib/Service/index.d.ts +5 -5
  385. package/dist/lib/Service/index.js +13 -13
  386. package/dist/lib/Shipment/index.d.ts +28 -28
  387. package/dist/lib/Shipment/index.js +357 -357
  388. package/dist/lib/Slider/index.d.ts +16 -16
  389. package/dist/lib/Slider/index.js +113 -113
  390. package/dist/lib/Space/index.d.ts +883 -883
  391. package/dist/lib/Space/index.js +5134 -5134
  392. package/dist/lib/StockNotification/index.d.ts +4 -4
  393. package/dist/lib/StockNotification/index.js +6 -6
  394. package/dist/lib/Store/index.d.ts +5 -5
  395. package/dist/lib/Store/index.js +12 -12
  396. package/dist/lib/Supplier/Command.d.ts +5 -5
  397. package/dist/lib/Supplier/Command.js +10 -10
  398. package/dist/lib/Supplier/index.d.ts +25 -25
  399. package/dist/lib/Supplier/index.js +22 -22
  400. package/dist/lib/Tags/index.d.ts +6 -6
  401. package/dist/lib/Tags/index.js +21 -21
  402. package/dist/lib/Tax/index.d.ts +8 -8
  403. package/dist/lib/Tax/index.js +54 -54
  404. package/dist/lib/TransferRequest/index.d.ts +112 -112
  405. package/dist/lib/TransferRequest/index.js +794 -794
  406. package/dist/lib/Update/index.d.ts +10 -10
  407. package/dist/lib/Update/index.js +22 -22
  408. package/dist/lib/User/index.d.ts +35 -35
  409. package/dist/lib/User/index.js +248 -248
  410. package/dist/lib/Wishlist/index.d.ts +5 -5
  411. package/dist/lib/Wishlist/index.js +10 -10
  412. package/dist/lib/base.d.ts +14 -14
  413. package/dist/lib/base.js +62 -62
  414. package/dist/lib/baseService.d.ts +17 -17
  415. package/dist/lib/baseService.js +43 -43
  416. package/dist/rules/GR/constants/data.d.ts +26 -26
  417. package/dist/rules/GR/constants/data.js +55 -55
  418. package/dist/rules/GR/constants/products.d.ts +8 -8
  419. package/dist/rules/GR/constants/products.js +234 -234
  420. package/dist/rules/GR/interfaces/cart.d.ts +84 -84
  421. package/dist/rules/GR/interfaces/cart.js +41 -41
  422. package/dist/rules/GR/interfaces/data.d.ts +97 -97
  423. package/dist/rules/GR/interfaces/data.js +104 -104
  424. package/dist/rules/GR/interfaces/products.d.ts +61 -61
  425. package/dist/rules/GR/interfaces/products.js +10 -10
  426. package/dist/rules/GR/utils/cart.d.ts +53 -53
  427. package/dist/rules/GR/utils/cart.js +637 -637
  428. package/dist/rules/GR/utils/data.d.ts +3 -3
  429. package/dist/rules/GR/utils/data.js +25 -25
  430. package/dist/rules/GR/utils/expedition.d.ts +71 -71
  431. package/dist/rules/GR/utils/expedition.js +1542 -1542
  432. package/dist/rules/GR/utils/g2.d.ts +176 -176
  433. package/dist/rules/GR/utils/g2.js +849 -849
  434. package/dist/rules/GR/utils/invoices.d.ts +24 -24
  435. package/dist/rules/GR/utils/invoices.js +174 -174
  436. package/dist/rules/GR/utils/products.d.ts +104 -104
  437. package/dist/rules/GR/utils/products.js +984 -984
  438. package/dist/rules/GR/utils/upsells.d.ts +79 -79
  439. package/dist/rules/GR/utils/upsells.js +183 -183
  440. package/dist/services/database/BaseProvider.d.ts +29 -29
  441. package/dist/services/database/BaseProvider.js +28 -28
  442. package/dist/services/database/BatchUtils.d.ts +14 -14
  443. package/dist/services/database/BatchUtils.js +43 -43
  444. package/dist/services/database/Config.d.ts +2 -2
  445. package/dist/services/database/Config.js +5 -5
  446. package/dist/services/database/DatabaseService.d.ts +41 -41
  447. package/dist/services/database/DatabaseService.js +152 -152
  448. package/dist/services/database/FirebaseProvider.d.ts +17 -17
  449. package/dist/services/database/FirebaseProvider.js +218 -218
  450. package/dist/services/database/NotFirebaseProvider.d.ts +35 -35
  451. package/dist/services/database/NotFirebaseProvider.js +243 -243
  452. package/dist/services/g2/G2OrderSlip.d.ts +42 -42
  453. package/dist/services/g2/G2OrderSlip.js +210 -210
  454. package/dist/services/g2/utils.d.ts +9 -9
  455. package/dist/services/g2/utils.js +703 -703
  456. package/dist/services/logs/index.d.ts +20 -20
  457. package/dist/services/logs/index.js +61 -61
  458. package/dist/services/products/BaseClass.d.ts +50 -50
  459. package/dist/services/products/BaseClass.js +64 -64
  460. package/dist/services/products/TCGService.d.ts +29 -29
  461. package/dist/services/products/TCGService.js +499 -499
  462. package/dist/services/products/utils.d.ts +9 -9
  463. package/dist/services/products/utils.js +94 -94
  464. package/dist/utils/algolia.d.ts +6 -6
  465. package/dist/utils/algolia.js +21 -21
  466. package/dist/utils/anonymisation.d.ts +30 -30
  467. package/dist/utils/anonymisation.js +250 -250
  468. package/dist/utils/array.d.ts +5 -5
  469. package/dist/utils/array.js +14 -14
  470. package/dist/utils/aws.d.ts +14 -14
  471. package/dist/utils/aws.js +126 -126
  472. package/dist/utils/booking.d.ts +22 -22
  473. package/dist/utils/booking.js +118 -118
  474. package/dist/utils/cart.d.ts +134 -134
  475. package/dist/utils/cart.js +867 -862
  476. package/dist/utils/cart.js.map +1 -1
  477. package/dist/utils/categories.d.ts +2 -2
  478. package/dist/utils/categories.js +54 -54
  479. package/dist/utils/cmv.d.ts +10 -10
  480. package/dist/utils/cmv.js +107 -107
  481. package/dist/utils/console.d.ts +6 -6
  482. package/dist/utils/console.js +59 -59
  483. package/dist/utils/context.d.ts +20 -20
  484. package/dist/utils/context.js +61 -61
  485. package/dist/utils/currency.d.ts +6 -6
  486. package/dist/utils/currency.js +61 -61
  487. package/dist/utils/data.d.ts +31 -31
  488. package/dist/utils/data.js +294 -294
  489. package/dist/utils/date.d.ts +1 -1
  490. package/dist/utils/date.js +16 -16
  491. package/dist/utils/dimensions.d.ts +3 -3
  492. package/dist/utils/dimensions.js +16 -16
  493. package/dist/utils/discount.d.ts +46 -46
  494. package/dist/utils/discount.js +934 -934
  495. package/dist/utils/errors.d.ts +113 -113
  496. package/dist/utils/errors.js +113 -113
  497. package/dist/utils/file-admin.d.ts +8 -8
  498. package/dist/utils/file-admin.js +38 -38
  499. package/dist/utils/file.d.ts +38 -38
  500. package/dist/utils/file.js +200 -200
  501. package/dist/utils/firebase-admin.d.ts +2 -2
  502. package/dist/utils/firebase-admin.js +61 -61
  503. package/dist/utils/firebase.d.ts +41 -41
  504. package/dist/utils/firebase.js +131 -131
  505. package/dist/utils/import.d.ts +1 -1
  506. package/dist/utils/import.js +21 -21
  507. package/dist/utils/inventories.d.ts +49 -49
  508. package/dist/utils/inventories.js +392 -392
  509. package/dist/utils/locale.d.ts +15 -15
  510. package/dist/utils/locale.js +78 -78
  511. package/dist/utils/mailchimp.d.ts +58 -58
  512. package/dist/utils/mailchimp.js +495 -495
  513. package/dist/utils/mathUtils.d.ts +17 -17
  514. package/dist/utils/mathUtils.js +315 -315
  515. package/dist/utils/mongodb.d.ts +1 -1
  516. package/dist/utils/mongodb.js +22 -22
  517. package/dist/utils/object.d.ts +13 -13
  518. package/dist/utils/object.js +115 -115
  519. package/dist/utils/payment.d.ts +10 -10
  520. package/dist/utils/payment.js +23 -23
  521. package/dist/utils/products.d.ts +32 -32
  522. package/dist/utils/products.js +186 -186
  523. package/dist/utils/promiseToPurchase.d.ts +56 -56
  524. package/dist/utils/promiseToPurchase.js +195 -195
  525. package/dist/utils/prosprsearch.d.ts +26 -26
  526. package/dist/utils/prosprsearch.js +182 -182
  527. package/dist/utils/refunds.d.ts +2 -2
  528. package/dist/utils/refunds.js +21 -21
  529. package/dist/utils/sdc.d.ts +10 -10
  530. package/dist/utils/sdc.js +1302 -1302
  531. package/dist/utils/searchIndexes.d.ts +21 -21
  532. package/dist/utils/searchIndexes.js +210 -210
  533. package/dist/utils/services.d.ts +42 -42
  534. package/dist/utils/services.js +409 -409
  535. package/dist/utils/shipment.d.ts +110 -110
  536. package/dist/utils/shipment.js +345 -345
  537. package/dist/utils/simpletexting.d.ts +2 -2
  538. package/dist/utils/simpletexting.js +45 -45
  539. package/dist/utils/sliders.d.ts +4 -4
  540. package/dist/utils/sliders.js +24 -24
  541. package/dist/utils/string.d.ts +16 -16
  542. package/dist/utils/string.js +191 -191
  543. package/dist/utils/tcgService.d.ts +2 -2
  544. package/dist/utils/tcgService.js +8 -8
  545. package/dist/utils/tools.d.ts +1 -1
  546. package/dist/utils/tools.js +9 -9
  547. package/dist/utils/transferRequests.d.ts +19 -19
  548. package/dist/utils/transferRequests.js +43 -43
  549. package/dist/utils/update.d.ts +7 -7
  550. package/dist/utils/update.js +125 -125
  551. package/dist/utils/weight.d.ts +3 -3
  552. package/dist/utils/weight.js +16 -16
  553. package/dist/utils/zones.d.ts +11 -11
  554. package/dist/utils/zones.js +218 -218
  555. package/package.json +110 -110
  556. package/publish.sh +143 -143
  557. package/readme.md +182 -182
@@ -1,471 +1,471 @@
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 console_1 = require("../../utils/console");
7
- const discount_1 = require("../../utils/discount");
8
- const Space_1 = __importDefault(require("../Space"));
9
- const chunk_1 = __importDefault(require("lodash/chunk"));
10
- const baseService_1 = require("../baseService");
11
- const DatabaseService_1 = __importDefault(require("../../services/database/DatabaseService"));
12
- const BatchUtils_1 = __importDefault(require("../../services/database/BatchUtils"));
13
- class Discount extends baseService_1.BaseServiceClass {
14
- constructor() {
15
- super(...arguments);
16
- this.data = () => this._data;
17
- this._spread = async () => {
18
- (0, console_1.workingMessage)('Spreading...');
19
- const associations = [];
20
- try {
21
- const association = await this._spreadTo(this.data().appliesTo.label);
22
- associations.push(association);
23
- }
24
- catch (error) {
25
- (0, console_1.errorMessage)(`Can't spread ${this.data().appliesTo.label}`);
26
- throw error;
27
- }
28
- (0, console_1.workingMessage)('Done spreading!');
29
- };
30
- this._unspread = async (label) => {
31
- (0, console_1.workingMessage)('Unspreading...');
32
- console.log('dans le _unspread');
33
- const associations = [];
34
- try {
35
- const association = await this._unspreadTo(!!label ? label : this.data().appliesTo.label);
36
- associations.push(association);
37
- }
38
- catch (error) {
39
- (0, console_1.errorMessage)(`Can't unspread ${this.data().appliesTo.label}`);
40
- throw error;
41
- }
42
- (0, console_1.workingMessage)('Done unspreading!');
43
- };
44
- this._spreadTo = async (typeOfSpread) => {
45
- try {
46
- switch (typeOfSpread) {
47
- case 'allproducts':
48
- return await this._spreadToProducts();
49
- case 'product':
50
- return await this._spreadToProduct();
51
- case 'category':
52
- return await this._spreadToProductCategories();
53
- default:
54
- break;
55
- }
56
- }
57
- catch (error) {
58
- console.log('error: ', error);
59
- }
60
- };
61
- this._unspreadTo = async (typeOfSpread) => {
62
- console.log('dans le _unspreadTo: ', typeOfSpread);
63
- switch (typeOfSpread) {
64
- case 'allproducts':
65
- return await this._unspreadToProducts();
66
- case 'product':
67
- return await this._unspreadToProduct();
68
- case 'category':
69
- console.log('calling unspread to Categories');
70
- return await this._unspreadToCategories();
71
- default:
72
- break;
73
- }
74
- };
75
- this._unspreadToProducts = async () => {
76
- if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
77
- throw new Error(`Can't access products collection to fetch all products`);
78
- }
79
- try {
80
- const allProducts = await this._fetchProductsByBatch({});
81
- for (let products of (0, chunk_1.default)(allProducts, 100)) {
82
- const batch = new BatchUtils_1.default();
83
- for (const productSnap of products) {
84
- if (!productSnap.exists)
85
- continue;
86
- const productData = productSnap.data;
87
- if (!!!productData)
88
- continue;
89
- if (!!!productData.declinations)
90
- continue;
91
- if (!!!productData.declinations.length)
92
- continue;
93
- const declinations = productData.declinations;
94
- try {
95
- batch.set(productSnap.path, productSnap.id, {
96
- declinations: declinations.map((_declination, _dIndex) => {
97
- if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id)) {
98
- const newDiscountRules = _declination.discount_rules
99
- .filter((_dr) => _dr.id !== this.data().id)
100
- .filter((_dr) => !!_dr);
101
- return Object.assign(Object.assign({}, _declination), { discount_rules: newDiscountRules });
102
- }
103
- return _declination;
104
- })
105
- }, { merge: true });
106
- }
107
- catch (error) {
108
- throw error;
109
- }
110
- }
111
- try {
112
- await batch.commit();
113
- }
114
- catch (error) {
115
- (0, console_1.errorMessage)(`Error while commiting products spread: ${error} - ${JSON.stringify(error)}`);
116
- throw error;
117
- }
118
- }
119
- }
120
- catch (error) {
121
- throw error;
122
- }
123
- };
124
- this._unspreadToProduct = async () => {
125
- if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
126
- throw new Error(`Can't access products collection to fetch all products`);
127
- }
128
- const productSlug = this.data().appliesTo.value;
129
- const productSnap = await DatabaseService_1.default.getDocuments(DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'products'), { query: [{ field: 'slug', operator: '==', value: productSlug }] });
130
- if (!!!productSnap.length)
131
- return;
132
- const product = productSnap[0];
133
- if (!product.exists)
134
- return;
135
- if (!!!product)
136
- return;
137
- const productData = product.data;
138
- if (!!!productData)
139
- return;
140
- if (!!!productData.declinations)
141
- return;
142
- const declinations = productData.declinations;
143
- try {
144
- await DatabaseService_1.default.saveDocument(product.path, product.id, product.timestamp, {
145
- declinations: declinations.map((_declination, _dIndex) => {
146
- if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id)) {
147
- const newDiscountRules = _declination.discount_rules
148
- .filter((_dr) => _dr.id !== this.data().id)
149
- .filter((_dr) => !!_dr);
150
- return Object.assign(Object.assign({}, _declination), { discount_rules: newDiscountRules });
151
- }
152
- return _declination;
153
- })
154
- }, { merge: true });
155
- }
156
- catch (error) {
157
- throw error;
158
- }
159
- };
160
- this._spreadToProducts = async () => {
161
- if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
162
- throw new Error(`Can't access products collection to fetch all products`);
163
- }
164
- const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
165
- if (!!!space)
166
- return;
167
- try {
168
- const allProducts = await this._fetchProductsByBatch();
169
- for (let products of (0, chunk_1.default)(allProducts, 100)) {
170
- const batch = new BatchUtils_1.default();
171
- for (const productSnap of products) {
172
- if (!productSnap.exists)
173
- continue;
174
- const productData = productSnap.data;
175
- if (!!!productData)
176
- continue;
177
- if (!!!productData.declinations)
178
- continue;
179
- if (!!!productData.declinations.length)
180
- continue;
181
- const declinations = productData.declinations;
182
- const declinationsToAddDiscount = declinations
183
- .filter((declination) => !!(0, discount_1.shouldApplyRuleToDeclination)(this.data(), declination))
184
- .map((d) => d.sku);
185
- const isSameSku = (sku) => {
186
- return !!declinationsToAddDiscount.some((aSku) => !!aSku && !!sku && aSku.toLowerCase().trim() === sku.toLowerCase().trim());
187
- };
188
- try {
189
- batch.set(productSnap.path, productSnap.id, {
190
- declinations: declinations.map((_declination, _dIndex) => {
191
- if (_declination.discount_rules.some((_dr) => _dr.id === this.data().id))
192
- return Object.assign(Object.assign({}, _declination), { discount_rules: _declination.discount_rules
193
- .map((_dr) => {
194
- if (_dr.id !== this.data().id)
195
- return _dr;
196
- if (!!isSameSku(_declination.sku)) {
197
- if (!!!this.data().draft)
198
- return this.data();
199
- }
200
- return undefined;
201
- })
202
- .filter((_dr) => !!_dr) });
203
- return Object.assign(Object.assign({}, _declination), { discount_rules: [
204
- ..._declination.discount_rules,
205
- ...(!!isSameSku(_declination.sku) ? [this.data()] : [])
206
- ] });
207
- })
208
- }, { merge: true });
209
- }
210
- catch (error) {
211
- console.log('error dans le catch: ', error);
212
- throw error;
213
- }
214
- }
215
- try {
216
- await batch.commit();
217
- }
218
- catch (error) {
219
- (0, console_1.errorMessage)(`Error while commiting products spread: ${error} - ${JSON.stringify(error)}`);
220
- throw error;
221
- }
222
- }
223
- console.log(`Batch is done`);
224
- }
225
- catch (error) {
226
- throw error;
227
- }
228
- };
229
- this._spreadToProduct = async () => {
230
- if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
231
- throw new Error(`Can't access products collection to fetch all products`);
232
- }
233
- const productSlug = this.data().appliesTo.value;
234
- const productSnap = await DatabaseService_1.default.getDocuments(DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'products'), { query: [{ field: 'slug', operator: '==', value: productSlug }] });
235
- if (!!!productSnap.length)
236
- return;
237
- const product = productSnap[0];
238
- if (!product.exists)
239
- return;
240
- if (!!!product)
241
- return;
242
- const productData = product.data;
243
- if (!!!productData)
244
- return;
245
- if (!!!productData.declinations)
246
- return;
247
- const declinations = productData.declinations;
248
- const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
249
- if (!!!space)
250
- return;
251
- const declinationsToAddDiscount = declinations.filter((declination) => !!(0, discount_1.shouldApplyRuleToDeclination)(this.data(), declination));
252
- try {
253
- await DatabaseService_1.default.saveDocument(product.path, product.id, product.timestamp, {
254
- declinations: declinations.map((_declination, _dIndex) => {
255
- if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id))
256
- return Object.assign(Object.assign({}, _declination), { discount_rules: _declination.discount_rules
257
- .map((_dr) => {
258
- if (_dr.id !== this.data().id)
259
- return _dr;
260
- if (!!declinationsToAddDiscount.some((decliDiscount) => decliDiscount.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())) {
261
- if (!!this.data().draft)
262
- return undefined;
263
- return this.data();
264
- }
265
- return undefined;
266
- })
267
- .filter((_dr) => !!_dr) });
268
- return Object.assign(Object.assign({}, _declination), { discount_rules: [
269
- ..._declination.discount_rules,
270
- ...(!!declinationsToAddDiscount.some((decliDiscount) => decliDiscount.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())
271
- ? [this.data()]
272
- : [])
273
- ] });
274
- })
275
- }, { merge: true });
276
- }
277
- catch (error) {
278
- throw error;
279
- }
280
- };
281
- this._spreadToProductCategories = async () => {
282
- if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
283
- throw new Error(`Can't access products collection to fetch all products`);
284
- }
285
- const discountData = this.data();
286
- if (!!!discountData)
287
- return;
288
- const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
289
- if (!!!space)
290
- return;
291
- try {
292
- const allProducts = await this._fetchProductsByBatch({
293
- queryToApply: [{ field: 'category', operator: '==', value: discountData.appliesTo.value }]
294
- });
295
- for (let products of (0, chunk_1.default)(allProducts, 20)) {
296
- const batch = new BatchUtils_1.default();
297
- for (const productSnap of products) {
298
- if (!productSnap.exists)
299
- continue;
300
- const productData = productSnap.data;
301
- if (!!!productData)
302
- continue;
303
- if (!!!productData.category)
304
- continue;
305
- if (!!!productData.declinations)
306
- continue;
307
- if (!!!productData.declinations.length)
308
- continue;
309
- const declinations = productData.declinations;
310
- if (!!discountData.rules && !!discountData.rules.length) {
311
- const rulesOnProduct = discountData.rules.filter((rule) => rule.field === 'product');
312
- if (!!rulesOnProduct.length) {
313
- const isProductSlugFoundInADiscountRule = rulesOnProduct.some((rule) => rule.ruleDetails.some((ruleDetail) => {
314
- return ruleDetail.operator == '=='
315
- ? ruleDetail.value.includes(productData.slug)
316
- : !ruleDetail.value.includes(productData.slug);
317
- }));
318
- const isRuleCurrentlyAppliedToDeclinations = declinations.some((decli) => (decli.discount_rules || []).some((rule) => rule.id == discountData.id));
319
- if (!isProductSlugFoundInADiscountRule && !isRuleCurrentlyAppliedToDeclinations)
320
- continue;
321
- }
322
- }
323
- const declinationsToAddDiscount = declinations.filter((declination) => !!(0, discount_1.shouldApplyRuleToDeclination)(this.data(), declination, productData.slug));
324
- try {
325
- batch.set(productSnap.path, productSnap.id, {
326
- declinations: declinations.map((_declination, _dIndex) => {
327
- if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id))
328
- return Object.assign(Object.assign({}, _declination), { discount_rules: _declination.discount_rules
329
- .map((_dr) => {
330
- if (_dr.id !== this.data().id)
331
- return _dr;
332
- if (!!declinationsToAddDiscount.some((__declination) => __declination.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())) {
333
- if (!!this.data().draft)
334
- return undefined;
335
- return this.data();
336
- }
337
- return undefined;
338
- })
339
- .filter((_dr) => !!_dr) });
340
- return Object.assign(Object.assign({}, _declination), { discount_rules: [
341
- ..._declination.discount_rules,
342
- ...(!!declinationsToAddDiscount.some((__declination) => __declination.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())
343
- ? [this.data()]
344
- : [])
345
- ] });
346
- })
347
- }, { merge: true });
348
- }
349
- catch (error) {
350
- throw error;
351
- }
352
- }
353
- try {
354
- await batch.commit();
355
- }
356
- catch (error) {
357
- (0, console_1.errorMessage)(`Error while commiting products spread: ${error} - ${JSON.stringify(error)}`);
358
- throw error;
359
- }
360
- }
361
- }
362
- catch (error) {
363
- throw error;
364
- }
365
- };
366
- this._unspreadToCategories = async () => {
367
- if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
368
- console.log('path is /, returning');
369
- throw new Error(`Can't access products collection to fetch all categories`);
370
- }
371
- const discountData = this.data();
372
- if (!!!discountData) {
373
- console.log('no discount data! Returning');
374
- return;
375
- }
376
- const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
377
- if (!!!space) {
378
- console.log('no space! returning');
379
- return;
380
- }
381
- try {
382
- const allProducts = await this._fetchProductsByBatch({
383
- queryToApply: [{ field: 'category', operator: '==', value: discountData.appliesTo.value }]
384
- });
385
- if (!!!allProducts.length) {
386
- console.log('no products with category found, returning!');
387
- return;
388
- }
389
- for (let products of (0, chunk_1.default)(allProducts, 20)) {
390
- const batch = new BatchUtils_1.default();
391
- for (const productSnap of products) {
392
- if (!productSnap.exists)
393
- continue;
394
- const productData = productSnap.data;
395
- if (!!!productData)
396
- continue;
397
- if (!!!productData.category)
398
- continue;
399
- if (!!!productData.declinations)
400
- continue;
401
- if (!!!productData.declinations.length)
402
- continue;
403
- const declinations = productData.declinations;
404
- const isRuleAlreadyInDecli = declinations.some((d) => (d.discount_rules || []).some((d) => d.id == discountData.id));
405
- if (!isRuleAlreadyInDecli)
406
- continue;
407
- try {
408
- batch.set(productSnap.path, productSnap.id, {
409
- declinations: declinations.map((_declination, _dIndex) => {
410
- if (!!_declination.discount_rules.some((_dr) => _dr.id === this.data().id)) {
411
- const newDiscountRules = _declination.discount_rules
412
- .filter((_dr) => _dr.id !== this.data().id)
413
- .filter((_dr) => !!_dr);
414
- return Object.assign(Object.assign({}, _declination), { discount_rules: newDiscountRules });
415
- }
416
- return _declination;
417
- })
418
- }, { merge: true });
419
- }
420
- catch (error) {
421
- throw error;
422
- }
423
- }
424
- try {
425
- await batch.commit();
426
- }
427
- catch (error) {
428
- (0, console_1.errorMessage)(`Error while commiting products unspread: ${error} - ${JSON.stringify(error)}`);
429
- throw error;
430
- }
431
- }
432
- }
433
- catch (error) {
434
- throw error;
435
- }
436
- };
437
- this._fetchProductsByBatch = async (props) => {
438
- let allProducts = [];
439
- let lastID = '';
440
- const fetchProductLimit = 50;
441
- const fetchProducts = async (lastID) => {
442
- const result = await DatabaseService_1.default.getDocuments(DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'products'), Object.assign(Object.assign({ orderBy: !!props && !!props.orderByField ? props.orderByField : 'id', limit: !!props && !!props.fetchLimit ? props.fetchLimit : 50 }, (!!lastID ? { startAfter: lastID } : {})), (!!props && !!props.queryToApply ? { query: props.queryToApply } : {})));
443
- return result;
444
- };
445
- try {
446
- while (true) {
447
- const result = await fetchProducts(lastID);
448
- allProducts.push(...result);
449
- if (!!result.length) {
450
- const lastEntryData = result[result.length - 1].data;
451
- if (!!!lastEntryData || !!!lastEntryData.id) {
452
- console.log('cannot continue checks for bulk fetch, last entry has no data or no id. Returning found entries up to this point.');
453
- break;
454
- }
455
- lastID = lastEntryData.id;
456
- }
457
- if (result.length < fetchProductLimit)
458
- break;
459
- }
460
- }
461
- catch (e) {
462
- console.log('error on fetching products with category: ', e);
463
- }
464
- return allProducts;
465
- };
466
- this.spread = this._spread;
467
- this.unspread = this._unspread;
468
- }
469
- }
470
- exports.default = Discount;
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 console_1 = require("../../utils/console");
7
+ const discount_1 = require("../../utils/discount");
8
+ const Space_1 = __importDefault(require("../Space"));
9
+ const chunk_1 = __importDefault(require("lodash/chunk"));
10
+ const baseService_1 = require("../baseService");
11
+ const DatabaseService_1 = __importDefault(require("../../services/database/DatabaseService"));
12
+ const BatchUtils_1 = __importDefault(require("../../services/database/BatchUtils"));
13
+ class Discount extends baseService_1.BaseServiceClass {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.data = () => this._data;
17
+ this._spread = async () => {
18
+ (0, console_1.workingMessage)('Spreading...');
19
+ const associations = [];
20
+ try {
21
+ const association = await this._spreadTo(this.data().appliesTo.label);
22
+ associations.push(association);
23
+ }
24
+ catch (error) {
25
+ (0, console_1.errorMessage)(`Can't spread ${this.data().appliesTo.label}`);
26
+ throw error;
27
+ }
28
+ (0, console_1.workingMessage)('Done spreading!');
29
+ };
30
+ this._unspread = async (label) => {
31
+ (0, console_1.workingMessage)('Unspreading...');
32
+ console.log('dans le _unspread');
33
+ const associations = [];
34
+ try {
35
+ const association = await this._unspreadTo(!!label ? label : this.data().appliesTo.label);
36
+ associations.push(association);
37
+ }
38
+ catch (error) {
39
+ (0, console_1.errorMessage)(`Can't unspread ${this.data().appliesTo.label}`);
40
+ throw error;
41
+ }
42
+ (0, console_1.workingMessage)('Done unspreading!');
43
+ };
44
+ this._spreadTo = async (typeOfSpread) => {
45
+ try {
46
+ switch (typeOfSpread) {
47
+ case 'allproducts':
48
+ return await this._spreadToProducts();
49
+ case 'product':
50
+ return await this._spreadToProduct();
51
+ case 'category':
52
+ return await this._spreadToProductCategories();
53
+ default:
54
+ break;
55
+ }
56
+ }
57
+ catch (error) {
58
+ console.log('error: ', error);
59
+ }
60
+ };
61
+ this._unspreadTo = async (typeOfSpread) => {
62
+ console.log('dans le _unspreadTo: ', typeOfSpread);
63
+ switch (typeOfSpread) {
64
+ case 'allproducts':
65
+ return await this._unspreadToProducts();
66
+ case 'product':
67
+ return await this._unspreadToProduct();
68
+ case 'category':
69
+ console.log('calling unspread to Categories');
70
+ return await this._unspreadToCategories();
71
+ default:
72
+ break;
73
+ }
74
+ };
75
+ this._unspreadToProducts = async () => {
76
+ if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
77
+ throw new Error(`Can't access products collection to fetch all products`);
78
+ }
79
+ try {
80
+ const allProducts = await this._fetchProductsByBatch({});
81
+ for (let products of (0, chunk_1.default)(allProducts, 100)) {
82
+ const batch = new BatchUtils_1.default();
83
+ for (const productSnap of products) {
84
+ if (!productSnap.exists)
85
+ continue;
86
+ const productData = productSnap.data;
87
+ if (!!!productData)
88
+ continue;
89
+ if (!!!productData.declinations)
90
+ continue;
91
+ if (!!!productData.declinations.length)
92
+ continue;
93
+ const declinations = productData.declinations;
94
+ try {
95
+ batch.set(productSnap.path, productSnap.id, {
96
+ declinations: declinations.map((_declination, _dIndex) => {
97
+ if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id)) {
98
+ const newDiscountRules = _declination.discount_rules
99
+ .filter((_dr) => _dr.id !== this.data().id)
100
+ .filter((_dr) => !!_dr);
101
+ return Object.assign(Object.assign({}, _declination), { discount_rules: newDiscountRules });
102
+ }
103
+ return _declination;
104
+ })
105
+ }, { merge: true });
106
+ }
107
+ catch (error) {
108
+ throw error;
109
+ }
110
+ }
111
+ try {
112
+ await batch.commit();
113
+ }
114
+ catch (error) {
115
+ (0, console_1.errorMessage)(`Error while commiting products spread: ${error} - ${JSON.stringify(error)}`);
116
+ throw error;
117
+ }
118
+ }
119
+ }
120
+ catch (error) {
121
+ throw error;
122
+ }
123
+ };
124
+ this._unspreadToProduct = async () => {
125
+ if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
126
+ throw new Error(`Can't access products collection to fetch all products`);
127
+ }
128
+ const productSlug = this.data().appliesTo.value;
129
+ const productSnap = await DatabaseService_1.default.getDocuments(DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'products'), { query: [{ field: 'slug', operator: '==', value: productSlug }] });
130
+ if (!!!productSnap.length)
131
+ return;
132
+ const product = productSnap[0];
133
+ if (!product.exists)
134
+ return;
135
+ if (!!!product)
136
+ return;
137
+ const productData = product.data;
138
+ if (!!!productData)
139
+ return;
140
+ if (!!!productData.declinations)
141
+ return;
142
+ const declinations = productData.declinations;
143
+ try {
144
+ await DatabaseService_1.default.saveDocument(product.path, product.id, product.timestamp, {
145
+ declinations: declinations.map((_declination, _dIndex) => {
146
+ if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id)) {
147
+ const newDiscountRules = _declination.discount_rules
148
+ .filter((_dr) => _dr.id !== this.data().id)
149
+ .filter((_dr) => !!_dr);
150
+ return Object.assign(Object.assign({}, _declination), { discount_rules: newDiscountRules });
151
+ }
152
+ return _declination;
153
+ })
154
+ }, { merge: true });
155
+ }
156
+ catch (error) {
157
+ throw error;
158
+ }
159
+ };
160
+ this._spreadToProducts = async () => {
161
+ if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
162
+ throw new Error(`Can't access products collection to fetch all products`);
163
+ }
164
+ const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
165
+ if (!!!space)
166
+ return;
167
+ try {
168
+ const allProducts = await this._fetchProductsByBatch();
169
+ for (let products of (0, chunk_1.default)(allProducts, 100)) {
170
+ const batch = new BatchUtils_1.default();
171
+ for (const productSnap of products) {
172
+ if (!productSnap.exists)
173
+ continue;
174
+ const productData = productSnap.data;
175
+ if (!!!productData)
176
+ continue;
177
+ if (!!!productData.declinations)
178
+ continue;
179
+ if (!!!productData.declinations.length)
180
+ continue;
181
+ const declinations = productData.declinations;
182
+ const declinationsToAddDiscount = declinations
183
+ .filter((declination) => !!(0, discount_1.shouldApplyRuleToDeclination)(this.data(), declination))
184
+ .map((d) => d.sku);
185
+ const isSameSku = (sku) => {
186
+ return !!declinationsToAddDiscount.some((aSku) => !!aSku && !!sku && aSku.toLowerCase().trim() === sku.toLowerCase().trim());
187
+ };
188
+ try {
189
+ batch.set(productSnap.path, productSnap.id, {
190
+ declinations: declinations.map((_declination, _dIndex) => {
191
+ if (_declination.discount_rules.some((_dr) => _dr.id === this.data().id))
192
+ return Object.assign(Object.assign({}, _declination), { discount_rules: _declination.discount_rules
193
+ .map((_dr) => {
194
+ if (_dr.id !== this.data().id)
195
+ return _dr;
196
+ if (!!isSameSku(_declination.sku)) {
197
+ if (!!!this.data().draft)
198
+ return this.data();
199
+ }
200
+ return undefined;
201
+ })
202
+ .filter((_dr) => !!_dr) });
203
+ return Object.assign(Object.assign({}, _declination), { discount_rules: [
204
+ ..._declination.discount_rules,
205
+ ...(!!isSameSku(_declination.sku) ? [this.data()] : [])
206
+ ] });
207
+ })
208
+ }, { merge: true });
209
+ }
210
+ catch (error) {
211
+ console.log('error dans le catch: ', error);
212
+ throw error;
213
+ }
214
+ }
215
+ try {
216
+ await batch.commit();
217
+ }
218
+ catch (error) {
219
+ (0, console_1.errorMessage)(`Error while commiting products spread: ${error} - ${JSON.stringify(error)}`);
220
+ throw error;
221
+ }
222
+ }
223
+ console.log(`Batch is done`);
224
+ }
225
+ catch (error) {
226
+ throw error;
227
+ }
228
+ };
229
+ this._spreadToProduct = async () => {
230
+ if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
231
+ throw new Error(`Can't access products collection to fetch all products`);
232
+ }
233
+ const productSlug = this.data().appliesTo.value;
234
+ const productSnap = await DatabaseService_1.default.getDocuments(DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'products'), { query: [{ field: 'slug', operator: '==', value: productSlug }] });
235
+ if (!!!productSnap.length)
236
+ return;
237
+ const product = productSnap[0];
238
+ if (!product.exists)
239
+ return;
240
+ if (!!!product)
241
+ return;
242
+ const productData = product.data;
243
+ if (!!!productData)
244
+ return;
245
+ if (!!!productData.declinations)
246
+ return;
247
+ const declinations = productData.declinations;
248
+ const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
249
+ if (!!!space)
250
+ return;
251
+ const declinationsToAddDiscount = declinations.filter((declination) => !!(0, discount_1.shouldApplyRuleToDeclination)(this.data(), declination));
252
+ try {
253
+ await DatabaseService_1.default.saveDocument(product.path, product.id, product.timestamp, {
254
+ declinations: declinations.map((_declination, _dIndex) => {
255
+ if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id))
256
+ return Object.assign(Object.assign({}, _declination), { discount_rules: _declination.discount_rules
257
+ .map((_dr) => {
258
+ if (_dr.id !== this.data().id)
259
+ return _dr;
260
+ if (!!declinationsToAddDiscount.some((decliDiscount) => decliDiscount.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())) {
261
+ if (!!this.data().draft)
262
+ return undefined;
263
+ return this.data();
264
+ }
265
+ return undefined;
266
+ })
267
+ .filter((_dr) => !!_dr) });
268
+ return Object.assign(Object.assign({}, _declination), { discount_rules: [
269
+ ..._declination.discount_rules,
270
+ ...(!!declinationsToAddDiscount.some((decliDiscount) => decliDiscount.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())
271
+ ? [this.data()]
272
+ : [])
273
+ ] });
274
+ })
275
+ }, { merge: true });
276
+ }
277
+ catch (error) {
278
+ throw error;
279
+ }
280
+ };
281
+ this._spreadToProductCategories = async () => {
282
+ if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
283
+ throw new Error(`Can't access products collection to fetch all products`);
284
+ }
285
+ const discountData = this.data();
286
+ if (!!!discountData)
287
+ return;
288
+ const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
289
+ if (!!!space)
290
+ return;
291
+ try {
292
+ const allProducts = await this._fetchProductsByBatch({
293
+ queryToApply: [{ field: 'category', operator: '==', value: discountData.appliesTo.value }]
294
+ });
295
+ for (let products of (0, chunk_1.default)(allProducts, 20)) {
296
+ const batch = new BatchUtils_1.default();
297
+ for (const productSnap of products) {
298
+ if (!productSnap.exists)
299
+ continue;
300
+ const productData = productSnap.data;
301
+ if (!!!productData)
302
+ continue;
303
+ if (!!!productData.category)
304
+ continue;
305
+ if (!!!productData.declinations)
306
+ continue;
307
+ if (!!!productData.declinations.length)
308
+ continue;
309
+ const declinations = productData.declinations;
310
+ if (!!discountData.rules && !!discountData.rules.length) {
311
+ const rulesOnProduct = discountData.rules.filter((rule) => rule.field === 'product');
312
+ if (!!rulesOnProduct.length) {
313
+ const isProductSlugFoundInADiscountRule = rulesOnProduct.some((rule) => rule.ruleDetails.some((ruleDetail) => {
314
+ return ruleDetail.operator == '=='
315
+ ? ruleDetail.value.includes(productData.slug)
316
+ : !ruleDetail.value.includes(productData.slug);
317
+ }));
318
+ const isRuleCurrentlyAppliedToDeclinations = declinations.some((decli) => (decli.discount_rules || []).some((rule) => rule.id == discountData.id));
319
+ if (!isProductSlugFoundInADiscountRule && !isRuleCurrentlyAppliedToDeclinations)
320
+ continue;
321
+ }
322
+ }
323
+ const declinationsToAddDiscount = declinations.filter((declination) => !!(0, discount_1.shouldApplyRuleToDeclination)(this.data(), declination, productData.slug));
324
+ try {
325
+ batch.set(productSnap.path, productSnap.id, {
326
+ declinations: declinations.map((_declination, _dIndex) => {
327
+ if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id))
328
+ return Object.assign(Object.assign({}, _declination), { discount_rules: _declination.discount_rules
329
+ .map((_dr) => {
330
+ if (_dr.id !== this.data().id)
331
+ return _dr;
332
+ if (!!declinationsToAddDiscount.some((__declination) => __declination.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())) {
333
+ if (!!this.data().draft)
334
+ return undefined;
335
+ return this.data();
336
+ }
337
+ return undefined;
338
+ })
339
+ .filter((_dr) => !!_dr) });
340
+ return Object.assign(Object.assign({}, _declination), { discount_rules: [
341
+ ..._declination.discount_rules,
342
+ ...(!!declinationsToAddDiscount.some((__declination) => __declination.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())
343
+ ? [this.data()]
344
+ : [])
345
+ ] });
346
+ })
347
+ }, { merge: true });
348
+ }
349
+ catch (error) {
350
+ throw error;
351
+ }
352
+ }
353
+ try {
354
+ await batch.commit();
355
+ }
356
+ catch (error) {
357
+ (0, console_1.errorMessage)(`Error while commiting products spread: ${error} - ${JSON.stringify(error)}`);
358
+ throw error;
359
+ }
360
+ }
361
+ }
362
+ catch (error) {
363
+ throw error;
364
+ }
365
+ };
366
+ this._unspreadToCategories = async () => {
367
+ if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
368
+ console.log('path is /, returning');
369
+ throw new Error(`Can't access products collection to fetch all categories`);
370
+ }
371
+ const discountData = this.data();
372
+ if (!!!discountData) {
373
+ console.log('no discount data! Returning');
374
+ return;
375
+ }
376
+ const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
377
+ if (!!!space) {
378
+ console.log('no space! returning');
379
+ return;
380
+ }
381
+ try {
382
+ const allProducts = await this._fetchProductsByBatch({
383
+ queryToApply: [{ field: 'category', operator: '==', value: discountData.appliesTo.value }]
384
+ });
385
+ if (!!!allProducts.length) {
386
+ console.log('no products with category found, returning!');
387
+ return;
388
+ }
389
+ for (let products of (0, chunk_1.default)(allProducts, 20)) {
390
+ const batch = new BatchUtils_1.default();
391
+ for (const productSnap of products) {
392
+ if (!productSnap.exists)
393
+ continue;
394
+ const productData = productSnap.data;
395
+ if (!!!productData)
396
+ continue;
397
+ if (!!!productData.category)
398
+ continue;
399
+ if (!!!productData.declinations)
400
+ continue;
401
+ if (!!!productData.declinations.length)
402
+ continue;
403
+ const declinations = productData.declinations;
404
+ const isRuleAlreadyInDecli = declinations.some((d) => (d.discount_rules || []).some((d) => d.id == discountData.id));
405
+ if (!isRuleAlreadyInDecli)
406
+ continue;
407
+ try {
408
+ batch.set(productSnap.path, productSnap.id, {
409
+ declinations: declinations.map((_declination, _dIndex) => {
410
+ if (!!_declination.discount_rules.some((_dr) => _dr.id === this.data().id)) {
411
+ const newDiscountRules = _declination.discount_rules
412
+ .filter((_dr) => _dr.id !== this.data().id)
413
+ .filter((_dr) => !!_dr);
414
+ return Object.assign(Object.assign({}, _declination), { discount_rules: newDiscountRules });
415
+ }
416
+ return _declination;
417
+ })
418
+ }, { merge: true });
419
+ }
420
+ catch (error) {
421
+ throw error;
422
+ }
423
+ }
424
+ try {
425
+ await batch.commit();
426
+ }
427
+ catch (error) {
428
+ (0, console_1.errorMessage)(`Error while commiting products unspread: ${error} - ${JSON.stringify(error)}`);
429
+ throw error;
430
+ }
431
+ }
432
+ }
433
+ catch (error) {
434
+ throw error;
435
+ }
436
+ };
437
+ this._fetchProductsByBatch = async (props) => {
438
+ let allProducts = [];
439
+ let lastID = '';
440
+ const fetchProductLimit = 50;
441
+ const fetchProducts = async (lastID) => {
442
+ const result = await DatabaseService_1.default.getDocuments(DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'products'), Object.assign(Object.assign({ orderBy: !!props && !!props.orderByField ? props.orderByField : 'id', limit: !!props && !!props.fetchLimit ? props.fetchLimit : 50 }, (!!lastID ? { startAfter: lastID } : {})), (!!props && !!props.queryToApply ? { query: props.queryToApply } : {})));
443
+ return result;
444
+ };
445
+ try {
446
+ while (true) {
447
+ const result = await fetchProducts(lastID);
448
+ allProducts.push(...result);
449
+ if (!!result.length) {
450
+ const lastEntryData = result[result.length - 1].data;
451
+ if (!!!lastEntryData || !!!lastEntryData.id) {
452
+ console.log('cannot continue checks for bulk fetch, last entry has no data or no id. Returning found entries up to this point.');
453
+ break;
454
+ }
455
+ lastID = lastEntryData.id;
456
+ }
457
+ if (result.length < fetchProductLimit)
458
+ break;
459
+ }
460
+ }
461
+ catch (e) {
462
+ console.log('error on fetching products with category: ', e);
463
+ }
464
+ return allProducts;
465
+ };
466
+ this.spread = this._spread;
467
+ this.unspread = this._unspread;
468
+ }
469
+ }
470
+ exports.default = Discount;
471
471
  //# sourceMappingURL=index.js.map