@unchainedshop/core 3.0.0-alpha7 → 3.0.0-rc10

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 (462) hide show
  1. package/lib/core-index.d.ts +8 -61
  2. package/lib/core-index.d.ts.map +1 -1
  3. package/lib/core-index.js +9 -140
  4. package/lib/core-index.js.map +1 -1
  5. package/lib/directors/BaseDiscountAdapter.d.ts +36 -0
  6. package/lib/directors/BaseDiscountAdapter.d.ts.map +1 -0
  7. package/lib/directors/BaseDiscountAdapter.js +48 -0
  8. package/lib/directors/BaseDiscountAdapter.js.map +1 -0
  9. package/lib/directors/BaseDiscountDirector.d.ts +15 -0
  10. package/lib/directors/BaseDiscountDirector.d.ts.map +1 -0
  11. package/lib/directors/BaseDiscountDirector.js +45 -0
  12. package/lib/directors/BaseDiscountDirector.js.map +1 -0
  13. package/lib/directors/BasePricingAdapter.d.ts +34 -0
  14. package/lib/directors/BasePricingAdapter.d.ts.map +1 -0
  15. package/lib/directors/BasePricingAdapter.js +25 -0
  16. package/lib/directors/BasePricingAdapter.js.map +1 -0
  17. package/lib/directors/BasePricingDirector.d.ts +17 -0
  18. package/lib/directors/BasePricingDirector.d.ts.map +1 -0
  19. package/lib/directors/BasePricingDirector.js +70 -0
  20. package/lib/directors/BasePricingDirector.js.map +1 -0
  21. package/lib/directors/BasePricingSheet.d.ts +46 -0
  22. package/lib/directors/BasePricingSheet.d.ts.map +1 -0
  23. package/lib/directors/BasePricingSheet.js +74 -0
  24. package/lib/directors/BasePricingSheet.js.map +1 -0
  25. package/lib/directors/DeliveryAdapter.d.ts +46 -0
  26. package/lib/directors/DeliveryAdapter.d.ts.map +1 -0
  27. package/lib/directors/DeliveryAdapter.js +50 -0
  28. package/lib/directors/DeliveryAdapter.js.map +1 -0
  29. package/lib/directors/DeliveryDirector.d.ts +15 -0
  30. package/lib/directors/DeliveryDirector.d.ts.map +1 -0
  31. package/lib/directors/DeliveryDirector.js +96 -0
  32. package/lib/directors/DeliveryDirector.js.map +1 -0
  33. package/lib/directors/DeliveryPricingAdapter.d.ts +49 -0
  34. package/lib/directors/DeliveryPricingAdapter.d.ts.map +1 -0
  35. package/lib/directors/DeliveryPricingAdapter.js +25 -0
  36. package/lib/directors/DeliveryPricingAdapter.js.map +1 -0
  37. package/lib/directors/DeliveryPricingDirector.d.ts +20 -0
  38. package/lib/directors/DeliveryPricingDirector.d.ts.map +1 -0
  39. package/lib/directors/DeliveryPricingDirector.js +50 -0
  40. package/lib/directors/DeliveryPricingDirector.js.map +1 -0
  41. package/lib/directors/DeliveryPricingSheet.d.ts +10 -0
  42. package/lib/directors/DeliveryPricingSheet.d.ts.map +1 -0
  43. package/lib/directors/DeliveryPricingSheet.js +75 -0
  44. package/lib/directors/DeliveryPricingSheet.js.map +1 -0
  45. package/lib/directors/EnrollmentAdapter.d.ts +27 -0
  46. package/lib/directors/EnrollmentAdapter.d.ts.map +1 -0
  47. package/lib/directors/EnrollmentAdapter.js +73 -0
  48. package/lib/directors/EnrollmentAdapter.js.map +1 -0
  49. package/lib/directors/EnrollmentDirector.d.ts +14 -0
  50. package/lib/directors/EnrollmentDirector.d.ts.map +1 -0
  51. package/lib/directors/EnrollmentDirector.js +44 -0
  52. package/lib/directors/EnrollmentDirector.js.map +1 -0
  53. package/lib/directors/FilterAdapter.d.ts +54 -0
  54. package/lib/directors/FilterAdapter.d.ts.map +1 -0
  55. package/lib/directors/FilterAdapter.js +38 -0
  56. package/lib/directors/FilterAdapter.js.map +1 -0
  57. package/lib/directors/FilterDirector.d.ts +40 -0
  58. package/lib/directors/FilterDirector.d.ts.map +1 -0
  59. package/lib/directors/FilterDirector.js +173 -0
  60. package/lib/directors/FilterDirector.js.map +1 -0
  61. package/lib/directors/MessagingDirector.d.ts +46 -0
  62. package/lib/directors/MessagingDirector.d.ts.map +1 -0
  63. package/lib/directors/MessagingDirector.js +10 -0
  64. package/lib/directors/MessagingDirector.js.map +1 -0
  65. package/lib/directors/OrderDiscountAdapter.d.ts +3 -0
  66. package/lib/directors/OrderDiscountAdapter.d.ts.map +1 -0
  67. package/lib/directors/OrderDiscountAdapter.js +3 -0
  68. package/lib/directors/OrderDiscountAdapter.js.map +1 -0
  69. package/lib/directors/OrderDiscountConfiguration.d.ts +6 -0
  70. package/lib/directors/OrderDiscountConfiguration.d.ts.map +1 -0
  71. package/lib/directors/OrderDiscountConfiguration.js +2 -0
  72. package/lib/directors/OrderDiscountConfiguration.js.map +1 -0
  73. package/lib/directors/OrderDiscountDirector.d.ts +3 -0
  74. package/lib/directors/OrderDiscountDirector.d.ts.map +1 -0
  75. package/lib/directors/OrderDiscountDirector.js +3 -0
  76. package/lib/directors/OrderDiscountDirector.js.map +1 -0
  77. package/lib/directors/OrderPricingAdapter.d.ts +18 -0
  78. package/lib/directors/OrderPricingAdapter.d.ts.map +1 -0
  79. package/lib/directors/OrderPricingAdapter.js +24 -0
  80. package/lib/directors/OrderPricingAdapter.js.map +1 -0
  81. package/lib/directors/OrderPricingDirector.d.ts +18 -0
  82. package/lib/directors/OrderPricingDirector.d.ts.map +1 -0
  83. package/lib/directors/OrderPricingDirector.js +31 -0
  84. package/lib/directors/OrderPricingDirector.js.map +1 -0
  85. package/lib/directors/OrderPricingSheet.d.ts +37 -0
  86. package/lib/directors/OrderPricingSheet.d.ts.map +1 -0
  87. package/lib/directors/OrderPricingSheet.js +108 -0
  88. package/lib/directors/OrderPricingSheet.js.map +1 -0
  89. package/lib/directors/PaymentAdapter.d.ts +50 -0
  90. package/lib/directors/PaymentAdapter.d.ts.map +1 -0
  91. package/lib/directors/PaymentAdapter.js +55 -0
  92. package/lib/directors/PaymentAdapter.js.map +1 -0
  93. package/lib/directors/PaymentDirector.d.ts +21 -0
  94. package/lib/directors/PaymentDirector.d.ts.map +1 -0
  95. package/lib/directors/PaymentDirector.js +172 -0
  96. package/lib/directors/PaymentDirector.js.map +1 -0
  97. package/lib/directors/PaymentPricingAdapter.d.ts +48 -0
  98. package/lib/directors/PaymentPricingAdapter.d.ts.map +1 -0
  99. package/lib/directors/PaymentPricingAdapter.js +25 -0
  100. package/lib/directors/PaymentPricingAdapter.js.map +1 -0
  101. package/lib/directors/PaymentPricingDirector.d.ts +18 -0
  102. package/lib/directors/PaymentPricingDirector.d.ts.map +1 -0
  103. package/lib/directors/PaymentPricingDirector.js +51 -0
  104. package/lib/directors/PaymentPricingDirector.js.map +1 -0
  105. package/lib/directors/PaymentPricingSheet.d.ts +9 -0
  106. package/lib/directors/PaymentPricingSheet.d.ts.map +1 -0
  107. package/lib/directors/PaymentPricingSheet.js +75 -0
  108. package/lib/directors/PaymentPricingSheet.js.map +1 -0
  109. package/lib/directors/ProductDiscountAdapter.d.ts +3 -0
  110. package/lib/directors/ProductDiscountAdapter.d.ts.map +1 -0
  111. package/lib/directors/ProductDiscountAdapter.js +3 -0
  112. package/lib/directors/ProductDiscountAdapter.js.map +1 -0
  113. package/lib/directors/ProductDiscountConfiguration.d.ts +13 -0
  114. package/lib/directors/ProductDiscountConfiguration.d.ts.map +1 -0
  115. package/lib/directors/ProductDiscountConfiguration.js +2 -0
  116. package/lib/directors/ProductDiscountConfiguration.js.map +1 -0
  117. package/lib/directors/ProductDiscountDirector.d.ts +3 -0
  118. package/lib/directors/ProductDiscountDirector.d.ts.map +1 -0
  119. package/lib/directors/ProductDiscountDirector.js +3 -0
  120. package/lib/directors/ProductDiscountDirector.js.map +1 -0
  121. package/lib/directors/ProductPricingAdapter.d.ts +19 -0
  122. package/lib/directors/ProductPricingAdapter.d.ts.map +1 -0
  123. package/lib/directors/ProductPricingAdapter.js +24 -0
  124. package/lib/directors/ProductPricingAdapter.js.map +1 -0
  125. package/lib/directors/ProductPricingDirector.d.ts +21 -0
  126. package/lib/directors/ProductPricingDirector.d.ts.map +1 -0
  127. package/lib/directors/ProductPricingDirector.js +52 -0
  128. package/lib/directors/ProductPricingDirector.js.map +1 -0
  129. package/lib/directors/ProductPricingSheet.d.ts +35 -0
  130. package/lib/directors/ProductPricingSheet.d.ts.map +1 -0
  131. package/lib/directors/ProductPricingSheet.js +83 -0
  132. package/lib/directors/ProductPricingSheet.js.map +1 -0
  133. package/lib/directors/QuotationAdapter.d.ts +28 -0
  134. package/lib/directors/QuotationAdapter.d.ts.map +1 -0
  135. package/lib/directors/QuotationAdapter.js +46 -0
  136. package/lib/directors/QuotationAdapter.js.map +1 -0
  137. package/lib/directors/QuotationDirector.d.ts +7 -0
  138. package/lib/directors/QuotationDirector.d.ts.map +1 -0
  139. package/lib/directors/QuotationDirector.js +84 -0
  140. package/lib/directors/QuotationDirector.js.map +1 -0
  141. package/lib/directors/WarehousingAdapter.d.ts +40 -0
  142. package/lib/directors/WarehousingAdapter.d.ts.map +1 -0
  143. package/lib/directors/WarehousingAdapter.js +32 -0
  144. package/lib/directors/WarehousingAdapter.js.map +1 -0
  145. package/lib/directors/WarehousingDirector.d.ts +41 -0
  146. package/lib/directors/WarehousingDirector.d.ts.map +1 -0
  147. package/lib/directors/WarehousingDirector.js +169 -0
  148. package/lib/directors/WarehousingDirector.js.map +1 -0
  149. package/lib/directors/WorkerAdapter.d.ts +17 -0
  150. package/lib/directors/WorkerAdapter.d.ts.map +1 -0
  151. package/lib/directors/WorkerAdapter.js +11 -0
  152. package/lib/directors/WorkerAdapter.js.map +1 -0
  153. package/lib/directors/WorkerDirector.d.ts +26 -0
  154. package/lib/directors/WorkerDirector.d.ts.map +1 -0
  155. package/lib/directors/WorkerDirector.js +102 -0
  156. package/lib/directors/WorkerDirector.js.map +1 -0
  157. package/lib/directors/index.d.ts +39 -0
  158. package/lib/directors/index.d.ts.map +1 -0
  159. package/lib/directors/index.js +39 -0
  160. package/lib/directors/index.js.map +1 -0
  161. package/lib/modules.d.ts +59 -0
  162. package/lib/modules.d.ts.map +1 -0
  163. package/lib/modules.js +126 -0
  164. package/lib/modules.js.map +1 -0
  165. package/lib/services/activateEnrollment.d.ts +4 -0
  166. package/lib/services/activateEnrollment.d.ts.map +1 -0
  167. package/lib/services/activateEnrollment.js +25 -0
  168. package/lib/services/activateEnrollment.js.map +1 -0
  169. package/lib/services/calculateDiscountTotal.d.ts +7 -0
  170. package/lib/services/calculateDiscountTotal.d.ts.map +1 -0
  171. package/lib/services/calculateDiscountTotal.js +49 -0
  172. package/lib/services/calculateDiscountTotal.js.map +1 -0
  173. package/lib/services/checkoutOrder.d.ts +9 -0
  174. package/lib/services/checkoutOrder.d.ts.map +1 -0
  175. package/lib/services/checkoutOrder.js +28 -0
  176. package/lib/services/checkoutOrder.js.map +1 -0
  177. package/lib/services/confirmOrder.d.ts +9 -0
  178. package/lib/services/confirmOrder.d.ts.map +1 -0
  179. package/lib/services/confirmOrder.js +17 -0
  180. package/lib/services/confirmOrder.js.map +1 -0
  181. package/lib/services/createDownloadStream.d.ts +5 -0
  182. package/lib/services/createDownloadStream.d.ts.map +1 -0
  183. package/lib/services/createDownloadStream.js +8 -0
  184. package/lib/services/createDownloadStream.js.map +1 -0
  185. package/lib/services/createEnrollmentFromCheckout.d.ts +15 -0
  186. package/lib/services/createEnrollmentFromCheckout.d.ts.map +1 -0
  187. package/lib/services/createEnrollmentFromCheckout.js +40 -0
  188. package/lib/services/createEnrollmentFromCheckout.js.map +1 -0
  189. package/lib/services/createManualOrderDiscount.d.ts +7 -0
  190. package/lib/services/createManualOrderDiscount.d.ts.map +1 -0
  191. package/lib/services/createManualOrderDiscount.js +47 -0
  192. package/lib/services/createManualOrderDiscount.js.map +1 -0
  193. package/lib/services/createSignedURL.d.ts +8 -0
  194. package/lib/services/createSignedURL.d.ts.map +1 -0
  195. package/lib/services/createSignedURL.js +15 -0
  196. package/lib/services/createSignedURL.js.map +1 -0
  197. package/lib/services/deleteUser.d.ts +5 -0
  198. package/lib/services/deleteUser.d.ts.map +1 -0
  199. package/lib/services/deleteUser.js +26 -0
  200. package/lib/services/deleteUser.js.map +1 -0
  201. package/lib/services/discountedEntities.d.ts +5 -0
  202. package/lib/services/discountedEntities.d.ts.map +1 -0
  203. package/lib/services/discountedEntities.js +61 -0
  204. package/lib/services/discountedEntities.js.map +1 -0
  205. package/lib/services/ercMetadata.d.ts +7 -0
  206. package/lib/services/ercMetadata.d.ts.map +1 -0
  207. package/lib/services/ercMetadata.js +22 -0
  208. package/lib/services/ercMetadata.js.map +1 -0
  209. package/lib/services/findOrInitCart.d.ts +9 -0
  210. package/lib/services/findOrInitCart.d.ts.map +1 -0
  211. package/lib/services/findOrInitCart.js +15 -0
  212. package/lib/services/findOrInitCart.js.map +1 -0
  213. package/lib/services/fullfillQuotation.d.ts +4 -0
  214. package/lib/services/fullfillQuotation.d.ts.map +1 -0
  215. package/lib/services/fullfillQuotation.js +12 -0
  216. package/lib/services/fullfillQuotation.js.map +1 -0
  217. package/lib/services/index.d.ts +118 -0
  218. package/lib/services/index.d.ts.map +1 -0
  219. package/lib/services/index.js +132 -0
  220. package/lib/services/index.js.map +1 -0
  221. package/lib/services/initCartProviders.d.ts +4 -0
  222. package/lib/services/initCartProviders.d.ts.map +1 -0
  223. package/lib/services/initCartProviders.js +55 -0
  224. package/lib/services/initCartProviders.js.map +1 -0
  225. package/lib/services/initializeEnrollment.d.ts +7 -0
  226. package/lib/services/initializeEnrollment.d.ts.map +1 -0
  227. package/lib/services/initializeEnrollment.js +28 -0
  228. package/lib/services/initializeEnrollment.js.map +1 -0
  229. package/lib/services/invalidateFilterCache.d.ts +3 -0
  230. package/lib/services/invalidateFilterCache.d.ts.map +1 -0
  231. package/lib/services/invalidateFilterCache.js +12 -0
  232. package/lib/services/invalidateFilterCache.js.map +1 -0
  233. package/lib/services/linkFileService.d.ts +7 -0
  234. package/lib/services/linkFileService.d.ts.map +1 -0
  235. package/lib/services/linkFileService.js +18 -0
  236. package/lib/services/linkFileService.js.map +1 -0
  237. package/lib/services/loadFilterOptions.d.ts +14 -0
  238. package/lib/services/loadFilterOptions.d.ts.map +1 -0
  239. package/lib/services/loadFilterOptions.js +29 -0
  240. package/lib/services/loadFilterOptions.js.map +1 -0
  241. package/lib/services/loadFilters.d.ts +14 -0
  242. package/lib/services/loadFilters.d.ts.map +1 -0
  243. package/lib/services/loadFilters.js +36 -0
  244. package/lib/services/loadFilters.js.map +1 -0
  245. package/lib/services/migrateBookmarks.d.ts +8 -0
  246. package/lib/services/migrateBookmarks.d.ts.map +1 -0
  247. package/lib/services/migrateBookmarks.js +26 -0
  248. package/lib/services/migrateBookmarks.js.map +1 -0
  249. package/lib/services/migrateOrderCart.d.ts +8 -0
  250. package/lib/services/migrateOrderCart.d.ts.map +1 -0
  251. package/lib/services/migrateOrderCart.js +32 -0
  252. package/lib/services/migrateOrderCart.js.map +1 -0
  253. package/lib/services/migrateUserData.d.ts +2 -0
  254. package/lib/services/migrateUserData.d.ts.map +1 -0
  255. package/lib/services/migrateUserData.js +20 -0
  256. package/lib/services/migrateUserData.js.map +1 -0
  257. package/lib/services/nextUserCart.d.ts +9 -0
  258. package/lib/services/nextUserCart.d.ts.map +1 -0
  259. package/lib/services/nextUserCart.js +34 -0
  260. package/lib/services/nextUserCart.js.map +1 -0
  261. package/lib/services/processEnrollment.d.ts +4 -0
  262. package/lib/services/processEnrollment.d.ts.map +1 -0
  263. package/lib/services/processEnrollment.js +33 -0
  264. package/lib/services/processEnrollment.js.map +1 -0
  265. package/lib/services/processOrder.d.ts +9 -0
  266. package/lib/services/processOrder.d.ts.map +1 -0
  267. package/lib/services/processOrder.js +161 -0
  268. package/lib/services/processOrder.js.map +1 -0
  269. package/lib/services/processQuotation.d.ts +6 -0
  270. package/lib/services/processQuotation.d.ts.map +1 -0
  271. package/lib/services/processQuotation.js +60 -0
  272. package/lib/services/processQuotation.js.map +1 -0
  273. package/lib/services/proposeQuotation.d.ts +6 -0
  274. package/lib/services/proposeQuotation.d.ts.map +1 -0
  275. package/lib/services/proposeQuotation.js +12 -0
  276. package/lib/services/proposeQuotation.js.map +1 -0
  277. package/lib/services/registerPaymentCredentials.d.ts +5 -0
  278. package/lib/services/registerPaymentCredentials.d.ts.map +1 -0
  279. package/lib/services/registerPaymentCredentials.js +21 -0
  280. package/lib/services/registerPaymentCredentials.js.map +1 -0
  281. package/lib/services/rejectOrder.d.ts +9 -0
  282. package/lib/services/rejectOrder.d.ts.map +1 -0
  283. package/lib/services/rejectOrder.js +17 -0
  284. package/lib/services/rejectOrder.js.map +1 -0
  285. package/lib/services/rejectQuotation.d.ts +6 -0
  286. package/lib/services/rejectQuotation.d.ts.map +1 -0
  287. package/lib/services/rejectQuotation.js +12 -0
  288. package/lib/services/rejectQuotation.js.map +1 -0
  289. package/lib/services/removeFiles.d.ts +5 -0
  290. package/lib/services/removeFiles.d.ts.map +1 -0
  291. package/lib/services/removeFiles.js +19 -0
  292. package/lib/services/removeFiles.js.map +1 -0
  293. package/lib/services/removeProduct.d.ts +5 -0
  294. package/lib/services/removeProduct.d.ts.map +1 -0
  295. package/lib/services/removeProduct.js +26 -0
  296. package/lib/services/removeProduct.js.map +1 -0
  297. package/lib/services/searchAssortments.d.ts +19 -0
  298. package/lib/services/searchAssortments.d.ts.map +1 -0
  299. package/lib/services/searchAssortments.js +33 -0
  300. package/lib/services/searchAssortments.js.map +1 -0
  301. package/lib/services/searchProducts.d.ts +16 -0
  302. package/lib/services/searchProducts.d.ts.map +1 -0
  303. package/lib/services/searchProducts.js +41 -0
  304. package/lib/services/searchProducts.js.map +1 -0
  305. package/lib/services/simulateProductDispatching.d.ts +15 -0
  306. package/lib/services/simulateProductDispatching.d.ts.map +1 -0
  307. package/lib/services/simulateProductDispatching.js +30 -0
  308. package/lib/services/simulateProductDispatching.js.map +1 -0
  309. package/lib/services/simulateProductInventory.d.ts +15 -0
  310. package/lib/services/simulateProductInventory.d.ts.map +1 -0
  311. package/lib/services/simulateProductInventory.js +29 -0
  312. package/lib/services/simulateProductInventory.js.map +1 -0
  313. package/lib/services/simulateProductPricing.d.ts +12 -0
  314. package/lib/services/simulateProductPricing.d.ts.map +1 -0
  315. package/lib/services/simulateProductPricing.js +8 -0
  316. package/lib/services/simulateProductPricing.js.map +1 -0
  317. package/lib/services/supportedDeliveryProviders.d.ts +5 -0
  318. package/lib/services/supportedDeliveryProviders.d.ts.map +1 -0
  319. package/lib/services/supportedDeliveryProviders.js +14 -0
  320. package/lib/services/supportedDeliveryProviders.js.map +1 -0
  321. package/lib/services/supportedPaymentProviders.d.ts +5 -0
  322. package/lib/services/supportedPaymentProviders.d.ts.map +1 -0
  323. package/lib/services/supportedPaymentProviders.js +14 -0
  324. package/lib/services/supportedPaymentProviders.js.map +1 -0
  325. package/lib/services/supportedWarehousingProviders.d.ts +5 -0
  326. package/lib/services/supportedWarehousingProviders.d.ts.map +1 -0
  327. package/lib/services/supportedWarehousingProviders.js +10 -0
  328. package/lib/services/supportedWarehousingProviders.js.map +1 -0
  329. package/lib/services/terminateEnrollment.d.ts +3 -0
  330. package/lib/services/terminateEnrollment.d.ts.map +1 -0
  331. package/lib/services/terminateEnrollment.js +25 -0
  332. package/lib/services/terminateEnrollment.js.map +1 -0
  333. package/lib/services/updateCalculation.d.ts +3 -0
  334. package/lib/services/updateCalculation.d.ts.map +1 -0
  335. package/lib/services/updateCalculation.js +101 -0
  336. package/lib/services/updateCalculation.js.map +1 -0
  337. package/lib/services/updateScheduling.d.ts +8 -0
  338. package/lib/services/updateScheduling.d.ts.map +1 -0
  339. package/lib/services/updateScheduling.js +42 -0
  340. package/lib/services/updateScheduling.js.map +1 -0
  341. package/lib/services/updateUserAvatarAfterUpload.d.ts +6 -0
  342. package/lib/services/updateUserAvatarAfterUpload.d.ts.map +1 -0
  343. package/lib/services/updateUserAvatarAfterUpload.js +25 -0
  344. package/lib/services/updateUserAvatarAfterUpload.js.map +1 -0
  345. package/lib/services/uploadFileFromStream.d.ts +8 -0
  346. package/lib/services/uploadFileFromStream.d.ts.map +1 -0
  347. package/lib/services/uploadFileFromStream.js +11 -0
  348. package/lib/services/uploadFileFromStream.js.map +1 -0
  349. package/lib/services/uploadFileFromURL.d.ts +13 -0
  350. package/lib/services/uploadFileFromURL.d.ts.map +1 -0
  351. package/lib/services/uploadFileFromURL.js +11 -0
  352. package/lib/services/uploadFileFromURL.js.map +1 -0
  353. package/lib/services/validateOrder.d.ts +4 -0
  354. package/lib/services/validateOrder.d.ts.map +1 -0
  355. package/lib/services/validateOrder.js +45 -0
  356. package/lib/services/validateOrder.js.map +1 -0
  357. package/lib/services/verifyQuotation.d.ts +6 -0
  358. package/lib/services/verifyQuotation.d.ts.map +1 -0
  359. package/lib/services/verifyQuotation.js +12 -0
  360. package/lib/services/verifyQuotation.js.map +1 -0
  361. package/package.json +30 -29
  362. package/src/core-index.ts +14 -241
  363. package/src/directors/BaseDiscountAdapter.test.ts +49 -0
  364. package/src/directors/BaseDiscountAdapter.ts +90 -0
  365. package/src/directors/BaseDiscountDirector.ts +73 -0
  366. package/src/directors/BasePricingAdapter.ts +80 -0
  367. package/src/directors/BasePricingDirector.ts +137 -0
  368. package/src/directors/BasePricingSheet.test.ts +43 -0
  369. package/src/directors/BasePricingSheet.ts +140 -0
  370. package/src/directors/DeliveryAdapter.ts +110 -0
  371. package/src/directors/DeliveryDirector.ts +135 -0
  372. package/src/directors/DeliveryPricingAdapter.ts +87 -0
  373. package/src/directors/DeliveryPricingDirector.ts +92 -0
  374. package/src/directors/DeliveryPricingSheet.ts +86 -0
  375. package/src/directors/EnrollmentAdapter.ts +113 -0
  376. package/src/directors/EnrollmentDirector.ts +70 -0
  377. package/src/directors/FilterAdapter.ts +103 -0
  378. package/src/directors/FilterDirector.ts +309 -0
  379. package/src/directors/MessagingDirector.test.ts +5 -0
  380. package/src/directors/MessagingDirector.ts +59 -0
  381. package/src/directors/OrderDiscountAdapter.ts +10 -0
  382. package/src/directors/OrderDiscountConfiguration.ts +5 -0
  383. package/src/directors/OrderDiscountDirector.ts +5 -0
  384. package/src/directors/OrderPricingAdapter.ts +63 -0
  385. package/src/directors/OrderPricingDirector.ts +74 -0
  386. package/src/directors/OrderPricingSheet.ts +147 -0
  387. package/src/directors/PaymentAdapter.ts +118 -0
  388. package/src/directors/PaymentDirector.ts +275 -0
  389. package/src/directors/PaymentPricingAdapter.ts +86 -0
  390. package/src/directors/PaymentPricingDirector.ts +94 -0
  391. package/src/directors/PaymentPricingSheet.ts +91 -0
  392. package/src/directors/ProductDiscountAdapter.ts +10 -0
  393. package/src/directors/ProductDiscountConfiguration.ts +18 -0
  394. package/src/directors/ProductDiscountDirector.ts +4 -0
  395. package/src/directors/ProductPricingAdapter.ts +58 -0
  396. package/src/directors/ProductPricingDirector.ts +100 -0
  397. package/src/directors/ProductPricingSheet.test.ts +129 -0
  398. package/src/directors/ProductPricingSheet.ts +124 -0
  399. package/src/directors/QuotationAdapter.ts +86 -0
  400. package/src/directors/QuotationDirector.ts +105 -0
  401. package/src/directors/WarehousingAdapter.ts +83 -0
  402. package/src/directors/WarehousingDirector.ts +236 -0
  403. package/src/directors/WorkerAdapter.ts +30 -0
  404. package/src/directors/WorkerDirector.ts +154 -0
  405. package/src/directors/index.ts +49 -0
  406. package/src/directors/periodForReferenceDate.test.ts +23 -0
  407. package/src/modules.ts +208 -0
  408. package/src/services/activateEnrollment.ts +30 -0
  409. package/src/services/calculateDiscountTotal.ts +71 -0
  410. package/src/services/checkoutOrder.ts +43 -0
  411. package/src/services/confirmOrder.ts +26 -0
  412. package/src/services/createDownloadStream.ts +16 -0
  413. package/src/services/createEnrollmentFromCheckout.ts +66 -0
  414. package/src/services/createManualOrderDiscount.ts +56 -0
  415. package/src/services/createSignedURL.ts +20 -0
  416. package/src/services/deleteUser.ts +33 -0
  417. package/src/services/discountedEntities.ts +81 -0
  418. package/src/services/ercMetadata.ts +33 -0
  419. package/src/services/findOrInitCart.ts +29 -0
  420. package/src/services/fullfillQuotation.ts +14 -0
  421. package/src/services/index.ts +168 -0
  422. package/src/services/initCartProviders.ts +86 -0
  423. package/src/services/initializeEnrollment.ts +38 -0
  424. package/src/services/invalidateFilterCache.ts +16 -0
  425. package/src/services/linkFileService.ts +22 -0
  426. package/src/services/loadFilterOptions.ts +49 -0
  427. package/src/services/loadFilters.ts +52 -0
  428. package/src/services/migrateBookmarks.ts +39 -0
  429. package/src/services/migrateOrderCart.ts +52 -0
  430. package/src/services/migrateUserData.ts +22 -0
  431. package/src/services/nextUserCart.ts +52 -0
  432. package/src/services/processEnrollment.ts +37 -0
  433. package/src/services/processOrder.ts +241 -0
  434. package/src/services/processQuotation.ts +75 -0
  435. package/src/services/proposeQuotation.ts +18 -0
  436. package/src/services/registerPaymentCredentials.ts +30 -0
  437. package/src/services/rejectOrder.ts +26 -0
  438. package/src/services/rejectQuotation.ts +18 -0
  439. package/src/services/removeFiles.ts +25 -0
  440. package/src/services/removeProduct.ts +34 -0
  441. package/src/services/searchAssortments.ts +58 -0
  442. package/src/services/searchProducts.ts +73 -0
  443. package/src/services/simulateProductDispatching.ts +59 -0
  444. package/src/services/simulateProductInventory.ts +56 -0
  445. package/src/services/simulateProductPricing.ts +20 -0
  446. package/src/services/supportedDeliveryProviders.ts +24 -0
  447. package/src/services/supportedPaymentProviders.ts +25 -0
  448. package/src/services/supportedWarehousingProviders.ts +18 -0
  449. package/src/services/terminateEnrollment.ts +29 -0
  450. package/src/services/updateCalculation.ts +143 -0
  451. package/src/services/updateScheduling.ts +64 -0
  452. package/src/services/updateUserAvatarAfterUpload.ts +30 -0
  453. package/src/services/uploadFileFromStream.ts +15 -0
  454. package/src/services/uploadFileFromURL.ts +29 -0
  455. package/src/services/validateOrder.ts +53 -0
  456. package/src/services/verifyQuotation.ts +18 -0
  457. package/tsconfig.json +5 -7
  458. package/lib/types.d.ts +0 -4
  459. package/lib/types.d.ts.map +0 -1
  460. package/lib/types.js +0 -5
  461. package/lib/types.js.map +0 -1
  462. package/src/types.ts +0 -7
@@ -0,0 +1,168 @@
1
+ import { Modules } from '../modules.js';
2
+ import { migrateUserDataService } from './migrateUserData.js';
3
+ import { updateUserAvatarAfterUploadService } from './updateUserAvatarAfterUpload.js';
4
+ import { linkFileService } from './linkFileService.js';
5
+ import { createSignedURLService } from './createSignedURL.js';
6
+ import { uploadFileFromURLService } from './uploadFileFromURL.js';
7
+ import { uploadFileFromStreamService } from './uploadFileFromStream.js';
8
+ import { removeFilesService } from './removeFiles.js';
9
+ import { createDownloadStreamService } from './createDownloadStream.js';
10
+ import { migrateBookmarksService } from './migrateBookmarks.js';
11
+ import { migrateOrderCartsService } from './migrateOrderCart.js';
12
+ import { nextUserCartService } from './nextUserCart.js';
13
+ import { removeProductService } from './removeProduct.js';
14
+ import { initCartProvidersService } from './initCartProviders.js';
15
+ import { updateCalculationService } from './updateCalculation.js';
16
+ import { supportedDeliveryProvidersService } from './supportedDeliveryProviders.js';
17
+ import { deleteUserService } from './deleteUser.js';
18
+ import { supportedPaymentProvidersService } from './supportedPaymentProviders.js';
19
+ import { supportedWarehousingProvidersService } from './supportedWarehousingProviders.js';
20
+ import { createEnrollmentFromCheckoutService } from './createEnrollmentFromCheckout.js';
21
+ import { searchAssortmentsService } from './searchAssortments.js';
22
+ import { searchProductsService } from './searchProducts.js';
23
+ import { calculateDiscountTotalService } from './calculateDiscountTotal.js';
24
+ import { registerPaymentCredentialsService } from './registerPaymentCredentials.js';
25
+ import { processOrderService } from './processOrder.js';
26
+ import { checkoutOrderService } from './checkoutOrder.js';
27
+ import { confirmOrderService } from './confirmOrder.js';
28
+ import { rejectOrderService } from './rejectOrder.js';
29
+ import { discountedEntitiesService } from './discountedEntities.js';
30
+ import { createManualOrderDiscountService } from './createManualOrderDiscount.js';
31
+ import { initializeEnrollmentService } from './initializeEnrollment.js';
32
+ import { activateEnrollmentService } from './activateEnrollment.js';
33
+ import { terminateEnrollmentService } from './terminateEnrollment.js';
34
+ import { invalidateFilterCacheService } from './invalidateFilterCache.js';
35
+ import { fullfillQuotationService } from './fullfillQuotation.js';
36
+ import { processQuotationService } from './processQuotation.js';
37
+ import { proposeQuotationService } from './proposeQuotation.js';
38
+ import { rejectQuotationService } from './rejectQuotation.js';
39
+ import { verifyQuotationService } from './verifyQuotation.js';
40
+ import { loadFiltersService } from './loadFilters.js';
41
+ import { loadFilterOptionsService } from './loadFilterOptions.js';
42
+ import { ercMetadataService } from './ercMetadata.js';
43
+ import { simulateProductPricingService } from './simulateProductPricing.js';
44
+ import { simulateProductDispatchingService } from './simulateProductDispatching.js';
45
+ import { simulateProductInventoryService } from './simulateProductInventory.js';
46
+ import { findOrInitCartService } from './findOrInitCart.js';
47
+
48
+ // TODO: Auto-Inject Unchained API as last parameter
49
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy
50
+
51
+ function bindMethodsToModules(modules: Modules) {
52
+ return {
53
+ get(target, prop, receiver) {
54
+ const value = target[prop];
55
+ if (value instanceof Function) {
56
+ return value.bind(modules);
57
+ } else if (value instanceof Object) {
58
+ return new Proxy(value, bindMethodsToModules(modules));
59
+ }
60
+ return Reflect.get(target, prop, receiver);
61
+ },
62
+ };
63
+ }
64
+
65
+ export interface ServiceInterface {
66
+ (this: Modules, ...args: any[]): any;
67
+ }
68
+
69
+ export type Bound<T extends ServiceInterface> = OmitThisParameter<T>;
70
+
71
+ export default function initServices(
72
+ modules: Modules,
73
+ customServices: Record<string, ServiceInterface> = {},
74
+ ) {
75
+ const services = {
76
+ bookmarks: {
77
+ migrateBookmarks: migrateBookmarksService as Bound<typeof migrateBookmarksService>,
78
+ },
79
+ files: {
80
+ linkFile: linkFileService as Bound<typeof linkFileService>,
81
+ createSignedURL: createSignedURLService as Bound<typeof createSignedURLService>,
82
+ uploadFileFromURL: uploadFileFromURLService as Bound<typeof uploadFileFromURLService>,
83
+ uploadFileFromStream: uploadFileFromStreamService as Bound<typeof uploadFileFromStreamService>,
84
+ removeFiles: removeFilesService as Bound<typeof removeFilesService>,
85
+ createDownloadStream: createDownloadStreamService as Bound<typeof createDownloadStreamService>,
86
+ },
87
+ orders: {
88
+ registerPaymentCredentials: registerPaymentCredentialsService as Bound<
89
+ typeof registerPaymentCredentialsService
90
+ >,
91
+ calculateDiscountTotal: calculateDiscountTotalService as Bound<
92
+ typeof calculateDiscountTotalService
93
+ >,
94
+ migrateOrderCarts: migrateOrderCartsService as Bound<typeof migrateOrderCartsService>,
95
+ nextUserCart: nextUserCartService as Bound<typeof nextUserCartService>,
96
+ findOrInitCart: findOrInitCartService as Bound<typeof findOrInitCartService>,
97
+ initCartProviders: initCartProvidersService as Bound<typeof initCartProvidersService>,
98
+ updateCalculation: updateCalculationService as Bound<typeof updateCalculationService>,
99
+ supportedDeliveryProviders: supportedDeliveryProvidersService as Bound<
100
+ typeof supportedDeliveryProvidersService
101
+ >,
102
+ supportedPaymentProviders: supportedPaymentProvidersService as Bound<
103
+ typeof supportedPaymentProvidersService
104
+ >,
105
+ supportedWarehousingProviders: supportedWarehousingProvidersService as Bound<
106
+ typeof supportedWarehousingProvidersService
107
+ >,
108
+ processOrder: processOrderService as Bound<typeof processOrderService>,
109
+ checkoutOrder: checkoutOrderService as Bound<typeof checkoutOrderService>,
110
+ confirmOrder: confirmOrderService as Bound<typeof confirmOrderService>,
111
+ rejectOrder: rejectOrderService as Bound<typeof rejectOrderService>,
112
+ discountedEntities: discountedEntitiesService as Bound<typeof discountedEntitiesService>,
113
+ createManualOrderDiscount: createManualOrderDiscountService as Bound<
114
+ typeof createManualOrderDiscountService
115
+ >,
116
+ },
117
+ products: {
118
+ simulateProductPricing: simulateProductPricingService as Bound<
119
+ typeof simulateProductPricingService
120
+ >,
121
+ simulateProductDispatching: simulateProductDispatchingService as Bound<
122
+ typeof simulateProductDispatchingService
123
+ >,
124
+ simulateProductInventory: simulateProductInventoryService as Bound<
125
+ typeof simulateProductInventoryService
126
+ >,
127
+ removeProduct: removeProductService as Bound<typeof removeProductService>,
128
+ },
129
+ users: {
130
+ migrateUserData: migrateUserDataService as Bound<typeof migrateUserDataService>,
131
+ updateUserAvatarAfterUpload: updateUserAvatarAfterUploadService as Bound<
132
+ typeof updateUserAvatarAfterUploadService
133
+ >,
134
+ deleteUser: deleteUserService as Bound<typeof deleteUserService>,
135
+ },
136
+ enrollments: {
137
+ createEnrollmentFromCheckout: createEnrollmentFromCheckoutService as Bound<
138
+ typeof createEnrollmentFromCheckoutService
139
+ >,
140
+ processEnrollment: processOrderService as Bound<typeof processOrderService>,
141
+ initializeEnrollment: initializeEnrollmentService as Bound<typeof initializeEnrollmentService>,
142
+ activateEnrollment: activateEnrollmentService as Bound<typeof activateEnrollmentService>,
143
+ terminateEnrollment: terminateEnrollmentService as Bound<typeof terminateEnrollmentService>,
144
+ },
145
+ quotations: {
146
+ fullfillQuotation: fullfillQuotationService as Bound<typeof fullfillQuotationService>,
147
+ processQuotation: processQuotationService as Bound<typeof processQuotationService>,
148
+ proposeQuotation: proposeQuotationService as Bound<typeof proposeQuotationService>,
149
+ rejectQuotation: rejectQuotationService as Bound<typeof rejectQuotationService>,
150
+ verifyQuotation: verifyQuotationService as Bound<typeof verifyQuotationService>,
151
+ },
152
+ filters: {
153
+ searchAssortments: searchAssortmentsService as Bound<typeof searchAssortmentsService>,
154
+ searchProducts: searchProductsService as Bound<typeof searchProductsService>,
155
+ invalidateFilterCache: invalidateFilterCacheService as Bound<typeof invalidateFilterCacheService>,
156
+ loadFilters: loadFiltersService as Bound<typeof loadFiltersService>,
157
+ loadFilterOptions: loadFilterOptionsService as Bound<typeof loadFilterOptionsService>,
158
+ },
159
+ warehousing: {
160
+ ercMetadata: ercMetadataService as Bound<typeof ercMetadataService>,
161
+ },
162
+ };
163
+
164
+ // This Proxy Binds all services to the Modules Object
165
+ return new Proxy<typeof services>({ ...services, ...customServices }, bindMethodsToModules(modules));
166
+ }
167
+
168
+ export type Services = ReturnType<typeof initServices>;
@@ -0,0 +1,86 @@
1
+ import { Order } from '@unchainedshop/core-orders';
2
+ import { deliverySettings } from '@unchainedshop/core-delivery';
3
+ import { paymentSettings } from '@unchainedshop/core-payment';
4
+ import { supportedDeliveryProvidersService } from './supportedDeliveryProviders.js';
5
+ import { supportedPaymentProvidersService } from './supportedPaymentProviders.js';
6
+ import { Modules } from '../modules.js';
7
+
8
+ export async function initCartProvidersService(this: Modules, order: Order) {
9
+ let updatedOrder = order;
10
+
11
+ // Init delivery provider
12
+ const supportedDeliveryProviders = await supportedDeliveryProvidersService.bind(this)({
13
+ order: updatedOrder,
14
+ });
15
+
16
+ const orderDelivery = await this.orders.deliveries.findDelivery({
17
+ orderDeliveryId: updatedOrder.deliveryId,
18
+ });
19
+ const deliveryProviderId = orderDelivery?.deliveryProviderId;
20
+
21
+ const isAlreadyInitializedWithSupportedDeliveryProvider = supportedDeliveryProviders?.some(
22
+ (provider) => {
23
+ return provider._id === deliveryProviderId;
24
+ },
25
+ );
26
+
27
+ if (supportedDeliveryProviders?.length > 0 && !isAlreadyInitializedWithSupportedDeliveryProvider) {
28
+ const defaultOrderDeliveryProvider = await deliverySettings.determineDefaultProvider(
29
+ {
30
+ providers: supportedDeliveryProviders,
31
+ order: updatedOrder,
32
+ },
33
+ { modules: this },
34
+ );
35
+ if (defaultOrderDeliveryProvider) {
36
+ updatedOrder = await this.orders.setDeliveryProvider(
37
+ updatedOrder._id,
38
+ defaultOrderDeliveryProvider._id,
39
+ );
40
+ }
41
+ }
42
+
43
+ // Init payment provider
44
+ const supportedPaymentProviders = await supportedPaymentProvidersService.bind(this)({
45
+ order: updatedOrder,
46
+ });
47
+
48
+ const orderPayment = await this.orders.payments.findOrderPayment({
49
+ orderPaymentId: updatedOrder.paymentId,
50
+ });
51
+ const paymentProviderId = orderPayment?.paymentProviderId;
52
+
53
+ const isAlreadyInitializedWithSupportedPaymentProvider = supportedPaymentProviders?.some(
54
+ (provider) => {
55
+ return provider._id === paymentProviderId;
56
+ },
57
+ );
58
+
59
+ if (supportedPaymentProviders?.length > 0 && !isAlreadyInitializedWithSupportedPaymentProvider) {
60
+ const paymentCredentials = await this.payment.paymentCredentials.findPaymentCredentials(
61
+ { userId: updatedOrder.userId, isPreferred: true },
62
+ {
63
+ sort: {
64
+ created: -1,
65
+ },
66
+ },
67
+ );
68
+
69
+ const defaultOrderPaymentProvider = await paymentSettings.determineDefaultProvider(
70
+ {
71
+ providers: supportedPaymentProviders,
72
+ order: updatedOrder,
73
+ paymentCredentials,
74
+ },
75
+ { modules: this },
76
+ );
77
+
78
+ if (defaultOrderPaymentProvider) {
79
+ updatedOrder = await this.orders.setPaymentProvider(
80
+ updatedOrder._id,
81
+ defaultOrderPaymentProvider._id,
82
+ );
83
+ }
84
+ }
85
+ return updatedOrder;
86
+ }
@@ -0,0 +1,38 @@
1
+ import { Enrollment } from '@unchainedshop/core-enrollments';
2
+ import { EnrollmentDirector } from '../core-index.js';
3
+ import { processEnrollmentService } from './processEnrollment.js';
4
+ import { Modules } from '../modules.js';
5
+
6
+ export async function initializeEnrollmentService(
7
+ this: Modules,
8
+ enrollment: Enrollment,
9
+ params: { orderIdForFirstPeriod?: string; reason: string },
10
+ ) {
11
+ const director = await EnrollmentDirector.actions({ enrollment }, { modules: this });
12
+ const period = await director.nextPeriod();
13
+
14
+ let updatedEnrollment = enrollment;
15
+ if (period && (params.orderIdForFirstPeriod || period.isTrial)) {
16
+ updatedEnrollment = await this.enrollments.addEnrollmentPeriod(enrollment._id, {
17
+ ...period,
18
+ orderId: params.orderIdForFirstPeriod,
19
+ });
20
+ }
21
+
22
+ const processedEnrollment = await processEnrollmentService.bind(this)(updatedEnrollment);
23
+ const user = await this.users.findUserById(enrollment.userId);
24
+ const locale = this.users.userLocale(user);
25
+
26
+ await this.worker.addWork({
27
+ type: 'MESSAGE',
28
+ retries: 0,
29
+ input: {
30
+ reason: params.reason || 'status_change',
31
+ locale: locale.baseName,
32
+ template: 'ENROLLMENT_STATUS',
33
+ enrollmentId: processedEnrollment._id,
34
+ },
35
+ });
36
+
37
+ return processedEnrollment;
38
+ }
@@ -0,0 +1,16 @@
1
+ import { Modules } from '../modules.js';
2
+ import { FilterDirector } from '../core-index.js';
3
+ import { createLogger } from '@unchainedshop/logger';
4
+
5
+ const logger = createLogger('unchained:core');
6
+
7
+ export async function invalidateFilterCacheService(this: Modules) {
8
+ logger.debug('Filters: Start invalidating filter caches');
9
+
10
+ const filters = await this.filters.findFilters({ includeInactive: true });
11
+
12
+ await filters.reduce(async (lastPromise, filter) => {
13
+ await lastPromise;
14
+ return FilterDirector.invalidateProductIdCache(filter, { modules: this });
15
+ }, Promise.resolve(undefined));
16
+ }
@@ -0,0 +1,22 @@
1
+ import { FileDirector } from '@unchainedshop/file-upload';
2
+ import { Modules } from '../modules.js';
3
+
4
+ export async function linkFileService(
5
+ this: Modules,
6
+ { fileId, size, type }: { fileId: string; size: number; type?: string },
7
+ ) {
8
+ const file = await this.files.findFile({ fileId });
9
+ if (file?.expires) {
10
+ await this.files.update(file._id, {
11
+ size: size || file.size,
12
+ type: type || file.type,
13
+ expires: null,
14
+ });
15
+ const callback = FileDirector.getFileUploadCallback(file.path);
16
+ if (callback) {
17
+ await callback(file, { modules: this });
18
+ }
19
+ return this.files.findFile({ fileId });
20
+ }
21
+ return file;
22
+ }
@@ -0,0 +1,49 @@
1
+ import { FilterType, Filter, SearchQuery } from '@unchainedshop/core-filters';
2
+ import { Modules } from '../modules.js';
3
+ import { FilterDirector, parseQueryArray } from '../directors/FilterDirector.js';
4
+
5
+ export async function loadFilterOptionsService(
6
+ this: Modules,
7
+ filter: Filter,
8
+ params: {
9
+ searchQuery: SearchQuery;
10
+ forceLiveCollection: boolean;
11
+ productIdSet: Set<string>;
12
+ },
13
+ ) {
14
+ const { forceLiveCollection, productIdSet, searchQuery } = params;
15
+
16
+ const filterQueryParsed = parseQueryArray(searchQuery?.filterQuery);
17
+ const values = filterQueryParsed[filter.key];
18
+
19
+ const allOptions = (filter.type === FilterType.SWITCH && ['true', 'false']) || filter.options || [];
20
+ const mappedOptions = await Promise.all(
21
+ allOptions.map(async (value) => {
22
+ const filterOptionProductIds = await FilterDirector.filterProductIds(
23
+ filter,
24
+ {
25
+ values: [value],
26
+ forceLiveCollection,
27
+ },
28
+ { modules: this },
29
+ );
30
+ const filteredProductIdSet = productIdSet.intersection(new Set(filterOptionProductIds));
31
+
32
+ const normalizedValues = values && this.filters.parse(filter, values, [value]);
33
+ const isSelected = normalizedValues && normalizedValues.indexOf(value) !== -1;
34
+
35
+ if (!filteredProductIdSet.size && !isSelected) {
36
+ return null;
37
+ }
38
+
39
+ return {
40
+ filteredProductIdSet,
41
+ searchQuery,
42
+ value,
43
+ filter,
44
+ isSelected,
45
+ };
46
+ }),
47
+ );
48
+ return mappedOptions.filter(Boolean);
49
+ }
@@ -0,0 +1,52 @@
1
+ import { SearchQuery, defaultFilterSelector } from '@unchainedshop/core-filters';
2
+ import { Modules } from '../modules.js';
3
+ import { FilterDirector } from '../directors/FilterDirector.js';
4
+
5
+ export async function loadFiltersService(
6
+ this: Modules,
7
+ searchQuery: SearchQuery,
8
+ { productIds, forceLiveCollection }: { productIds: Array<string>; forceLiveCollection: boolean },
9
+ ) {
10
+ const filterActions = await FilterDirector.actions({ searchQuery }, { modules: this });
11
+ const filterSelector = await filterActions.transformFilterSelector(defaultFilterSelector(searchQuery));
12
+
13
+ if (!filterSelector) return [];
14
+
15
+ const otherFilters = await this.filters.findFilters({
16
+ ...filterSelector,
17
+ limit: 0,
18
+ includeInactive: true,
19
+ });
20
+
21
+ const extractedFilterIds = (filterSelector?._id as any)?.$in || [];
22
+ const sortedFilters = otherFilters.toSorted((left, right) => {
23
+ const leftIndex = extractedFilterIds.indexOf(left._id);
24
+ const rightIndex = extractedFilterIds.indexOf(right._id);
25
+ return leftIndex - rightIndex;
26
+ });
27
+
28
+ return Promise.all(
29
+ sortedFilters.map(async (filter) => {
30
+ const { examinedProductIdSet, filteredByOtherFiltersSet, filteredByThisFilterSet } =
31
+ await FilterDirector.filterFacets(
32
+ filter,
33
+ {
34
+ searchQuery,
35
+ forceLiveCollection,
36
+ allProductIds: productIds,
37
+ otherFilters: sortedFilters,
38
+ },
39
+ { modules: this },
40
+ );
41
+
42
+ return {
43
+ forceLiveCollection,
44
+ searchQuery,
45
+ filter,
46
+ examinedProductIdSet,
47
+ filteredByOtherFiltersSet,
48
+ filteredByThisFilterSet,
49
+ };
50
+ }),
51
+ );
52
+ }
@@ -0,0 +1,39 @@
1
+ import { Modules } from '../modules.js';
2
+
3
+ const hashBookmark = (bookmark) => {
4
+ return `${bookmark.productId}:${bookmark.userId}:${JSON.stringify(bookmark.meta || {})}`;
5
+ };
6
+
7
+ export async function migrateBookmarksService(
8
+ this: Modules,
9
+ {
10
+ fromUserId,
11
+ toUserId,
12
+ shouldMerge,
13
+ }: {
14
+ fromUserId: string;
15
+ toUserId: string;
16
+ shouldMerge: boolean;
17
+ countryContext: string;
18
+ },
19
+ ) {
20
+ const fromBookmarks = await this.bookmarks.findBookmarks({ userId: fromUserId });
21
+ if (!fromBookmarks) {
22
+ // No bookmarks no copy needed
23
+ return;
24
+ }
25
+ if (!shouldMerge) {
26
+ await this.bookmarks.deleteByUserId(toUserId);
27
+ await this.bookmarks.replaceUserId(fromUserId, toUserId);
28
+ } else {
29
+ const toBookmarks = await this.bookmarks.findBookmarks({ userId: toUserId });
30
+ const toBookmarkHashes = toBookmarks.map(hashBookmark);
31
+ const newBookmarkIds = fromBookmarks
32
+ .filter((fromBookmark) => {
33
+ const hash = hashBookmark(fromBookmark);
34
+ return !toBookmarkHashes.includes(hash);
35
+ })
36
+ .map((bookmark) => bookmark._id);
37
+ await this.bookmarks.replaceUserId(fromUserId, toUserId, newBookmarkIds);
38
+ }
39
+ }
@@ -0,0 +1,52 @@
1
+ import { updateCalculationService } from './updateCalculation.js';
2
+ import { Modules } from '../modules.js';
3
+
4
+ export async function migrateOrderCartsService(
5
+ this: Modules,
6
+ {
7
+ fromUserId,
8
+ toUserId,
9
+ shouldMerge,
10
+ countryContext,
11
+ }: {
12
+ fromUserId: string;
13
+ toUserId: string;
14
+ shouldMerge: boolean;
15
+ countryContext: string;
16
+ },
17
+ ) {
18
+ const fromCart = await this.orders.cart({
19
+ countryCode: countryContext,
20
+ userId: fromUserId,
21
+ });
22
+ const toCart = await this.orders.cart({
23
+ countryCode: countryContext,
24
+ userId: toUserId,
25
+ });
26
+
27
+ if (!fromCart) {
28
+ // No cart, don't copy
29
+ return toCart;
30
+ }
31
+
32
+ if (!toCart || !shouldMerge) {
33
+ // No destination cart, move whole cart
34
+ this.orders.setCartOwner({ orderId: fromCart._id, userId: toUserId });
35
+ return updateCalculationService.bind(this)(fromCart._id);
36
+ }
37
+
38
+ // Move positions
39
+ this.orders.moveCartPositions({ fromOrderId: fromCart._id, toOrderId: toCart._id });
40
+
41
+ // Move billing address if target order has none
42
+ if (fromCart.billingAddress && !toCart.billingAddress) {
43
+ await this.orders.updateBillingAddress(toCart._id, fromCart.billingAddress);
44
+ }
45
+
46
+ // Move contact data if target order has none
47
+ if (fromCart.contact && !toCart.contact) {
48
+ await this.orders.updateContact(toCart._id, fromCart.contact);
49
+ }
50
+
51
+ return updateCalculationService.bind(this)(toCart._id);
52
+ }
@@ -0,0 +1,22 @@
1
+ import { userSettings } from '@unchainedshop/core-users';
2
+ import { migrateBookmarksService } from './migrateBookmarks.js';
3
+ import { migrateOrderCartsService } from './migrateOrderCart.js';
4
+
5
+ export async function migrateUserDataService(userIdBeforeLogin: string, userId: string) {
6
+ const user = await this.users.findUserById(userId);
7
+ const userBeforeLogin = await this.users.findUserById(userIdBeforeLogin);
8
+
9
+ await migrateOrderCartsService.bind(this)({
10
+ fromUserId: userIdBeforeLogin,
11
+ toUserId: userId,
12
+ shouldMerge: userSettings.mergeUserCartsOnLogin,
13
+ countryContext: userBeforeLogin.lastLogin?.countryCode || user.lastLogin?.countryCode,
14
+ });
15
+
16
+ await migrateBookmarksService.bind(this)({
17
+ fromUserId: userIdBeforeLogin,
18
+ toUserId: userId,
19
+ shouldMerge: userSettings.mergeUserCartsOnLogin,
20
+ countryContext: userBeforeLogin.lastLogin?.countryCode || user.lastLogin?.countryCode,
21
+ });
22
+ }
@@ -0,0 +1,52 @@
1
+ import { resolveBestCurrency } from '@unchainedshop/utils';
2
+ import { User } from '@unchainedshop/core-users';
3
+ import { ordersSettings } from '@unchainedshop/core-orders';
4
+ import { initCartProvidersService } from './initCartProviders.js';
5
+ import { Modules } from '../modules.js';
6
+
7
+ export async function nextUserCartService(
8
+ this: Modules,
9
+ {
10
+ user,
11
+ orderNumber,
12
+ countryCode,
13
+ forceCartCreation,
14
+ }: {
15
+ user: User;
16
+ orderNumber?: string;
17
+ countryCode: string;
18
+ forceCartCreation?: boolean;
19
+ },
20
+ ) {
21
+ const cart = await this.orders.cart({
22
+ countryCode,
23
+ orderNumber,
24
+ userId: user._id,
25
+ });
26
+ if (cart) return cart;
27
+
28
+ const shouldCreateNewCart = forceCartCreation || ordersSettings.ensureUserHasCart;
29
+ if (!shouldCreateNewCart) return null;
30
+
31
+ const countryObject = await this.countries.findCountry({ isoCode: countryCode });
32
+ const currencies = await this.currencies.findCurrencies({ includeInactive: false });
33
+ const currency = resolveBestCurrency(countryObject.defaultCurrencyCode, currencies);
34
+
35
+ const order = await this.orders.create({
36
+ userId: user._id,
37
+ orderNumber,
38
+ currency,
39
+ countryCode,
40
+ billingAddress: user.lastBillingAddress || user.profile?.address,
41
+ contact:
42
+ user.lastContact ||
43
+ (!user.guest
44
+ ? {
45
+ telNumber: user.profile?.phoneMobile,
46
+ emailAddress: this.users.primaryEmail(user)?.address,
47
+ }
48
+ : {}),
49
+ });
50
+
51
+ return initCartProvidersService.bind(this)(order);
52
+ }
@@ -0,0 +1,37 @@
1
+ import { Enrollment, EnrollmentStatus } from '@unchainedshop/core-enrollments';
2
+ import { Modules } from '../modules.js';
3
+ import { EnrollmentDirector } from '../core-index.js';
4
+
5
+ const findNextStatus = async (enrollment: Enrollment, modules: Modules): Promise<EnrollmentStatus> => {
6
+ let status = enrollment.status;
7
+ const director = await EnrollmentDirector.actions({ enrollment }, { modules });
8
+
9
+ if (status === EnrollmentStatus.INITIAL || status === EnrollmentStatus.PAUSED) {
10
+ if (await director.isValidForActivation()) {
11
+ status = EnrollmentStatus.ACTIVE;
12
+ }
13
+ } else if (status === EnrollmentStatus.ACTIVE) {
14
+ if (await director.isOverdue()) {
15
+ status = EnrollmentStatus.PAUSED;
16
+ }
17
+ } else if (modules.enrollments.isExpired(enrollment, {})) {
18
+ status = EnrollmentStatus.TERMINATED;
19
+ }
20
+
21
+ return status;
22
+ };
23
+
24
+ export async function processEnrollmentService(this: Modules, enrollment: Enrollment) {
25
+ const status = await findNextStatus(enrollment, this);
26
+
27
+ if (status === EnrollmentStatus.ACTIVE) {
28
+ // const nextEnrollment = await reactivateEnrollment(enrollment);
29
+ // TODO: Reactivate!
30
+ // status = await findNextStatus(nextEnrollment, unchainedAPI);
31
+ }
32
+
33
+ return this.enrollments.updateStatus(enrollment._id, {
34
+ status,
35
+ info: 'enrollment processed',
36
+ });
37
+ }