@unchainedshop/core 4.0.0-rc.9 → 4.0.0

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 (447) hide show
  1. package/lib/bulk-importer/createBulkImporter.d.ts +84 -0
  2. package/lib/bulk-importer/createBulkImporter.d.ts.map +1 -0
  3. package/lib/bulk-importer/createBulkImporter.js +142 -0
  4. package/lib/bulk-importer/createBulkImporter.js.map +1 -0
  5. package/lib/bulk-importer/handlers/assortment/create.d.ts +565 -0
  6. package/lib/bulk-importer/handlers/assortment/create.d.ts.map +1 -0
  7. package/lib/bulk-importer/handlers/assortment/create.js +89 -0
  8. package/lib/bulk-importer/handlers/assortment/create.js.map +1 -0
  9. package/lib/bulk-importer/handlers/assortment/index.d.ts +4 -0
  10. package/lib/bulk-importer/handlers/assortment/index.d.ts.map +1 -0
  11. package/lib/bulk-importer/handlers/assortment/index.js +4 -0
  12. package/lib/bulk-importer/handlers/assortment/index.js.map +1 -0
  13. package/lib/bulk-importer/handlers/assortment/remove.d.ts +30 -0
  14. package/lib/bulk-importer/handlers/assortment/remove.d.ts.map +1 -0
  15. package/lib/bulk-importer/handlers/assortment/remove.js +18 -0
  16. package/lib/bulk-importer/handlers/assortment/remove.js.map +1 -0
  17. package/lib/bulk-importer/handlers/assortment/update.d.ts +566 -0
  18. package/lib/bulk-importer/handlers/assortment/update.d.ts.map +1 -0
  19. package/lib/bulk-importer/handlers/assortment/update.js +98 -0
  20. package/lib/bulk-importer/handlers/assortment/update.js.map +1 -0
  21. package/lib/bulk-importer/handlers/assortment/upsertAssortmentChildren.d.ts +29 -0
  22. package/lib/bulk-importer/handlers/assortment/upsertAssortmentChildren.d.ts.map +1 -0
  23. package/lib/bulk-importer/handlers/assortment/upsertAssortmentChildren.js +45 -0
  24. package/lib/bulk-importer/handlers/assortment/upsertAssortmentChildren.js.map +1 -0
  25. package/lib/bulk-importer/handlers/assortment/upsertAssortmentFilters.d.ts +29 -0
  26. package/lib/bulk-importer/handlers/assortment/upsertAssortmentFilters.d.ts.map +1 -0
  27. package/lib/bulk-importer/handlers/assortment/upsertAssortmentFilters.js +41 -0
  28. package/lib/bulk-importer/handlers/assortment/upsertAssortmentFilters.js.map +1 -0
  29. package/lib/bulk-importer/handlers/assortment/upsertAssortmentProducts.d.ts +29 -0
  30. package/lib/bulk-importer/handlers/assortment/upsertAssortmentProducts.d.ts.map +1 -0
  31. package/lib/bulk-importer/handlers/assortment/upsertAssortmentProducts.js +46 -0
  32. package/lib/bulk-importer/handlers/assortment/upsertAssortmentProducts.js.map +1 -0
  33. package/lib/bulk-importer/handlers/assortment/upsertMedia.d.ts +76 -0
  34. package/lib/bulk-importer/handlers/assortment/upsertMedia.d.ts.map +1 -0
  35. package/lib/bulk-importer/handlers/assortment/upsertMedia.js +53 -0
  36. package/lib/bulk-importer/handlers/assortment/upsertMedia.js.map +1 -0
  37. package/lib/bulk-importer/handlers/filter/create.d.ts +138 -0
  38. package/lib/bulk-importer/handlers/filter/create.d.ts.map +1 -0
  39. package/lib/bulk-importer/handlers/filter/create.js +80 -0
  40. package/lib/bulk-importer/handlers/filter/create.js.map +1 -0
  41. package/lib/bulk-importer/handlers/filter/index.d.ts +4 -0
  42. package/lib/bulk-importer/handlers/filter/index.d.ts.map +1 -0
  43. package/lib/bulk-importer/handlers/filter/index.js +4 -0
  44. package/lib/bulk-importer/handlers/filter/index.js.map +1 -0
  45. package/lib/bulk-importer/handlers/filter/remove.d.ts +20 -0
  46. package/lib/bulk-importer/handlers/filter/remove.d.ts.map +1 -0
  47. package/lib/bulk-importer/handlers/filter/remove.js +18 -0
  48. package/lib/bulk-importer/handlers/filter/remove.js.map +1 -0
  49. package/lib/bulk-importer/handlers/filter/update.d.ts +138 -0
  50. package/lib/bulk-importer/handlers/filter/update.d.ts.map +1 -0
  51. package/lib/bulk-importer/handlers/filter/update.js +70 -0
  52. package/lib/bulk-importer/handlers/filter/update.js.map +1 -0
  53. package/lib/bulk-importer/handlers/product/create.d.ts +1330 -0
  54. package/lib/bulk-importer/handlers/product/create.d.ts.map +1 -0
  55. package/lib/bulk-importer/handlers/product/create.js +132 -0
  56. package/lib/bulk-importer/handlers/product/create.js.map +1 -0
  57. package/lib/bulk-importer/handlers/product/index.d.ts +4 -0
  58. package/lib/bulk-importer/handlers/product/index.d.ts.map +1 -0
  59. package/lib/bulk-importer/handlers/product/index.js +4 -0
  60. package/lib/bulk-importer/handlers/product/index.js.map +1 -0
  61. package/lib/bulk-importer/handlers/product/remove.d.ts +32 -0
  62. package/lib/bulk-importer/handlers/product/remove.d.ts.map +1 -0
  63. package/lib/bulk-importer/handlers/product/remove.js +18 -0
  64. package/lib/bulk-importer/handlers/product/remove.js.map +1 -0
  65. package/lib/bulk-importer/handlers/product/update.d.ts +1330 -0
  66. package/lib/bulk-importer/handlers/product/update.d.ts.map +1 -0
  67. package/lib/bulk-importer/handlers/product/update.js +132 -0
  68. package/lib/bulk-importer/handlers/product/update.js.map +1 -0
  69. package/lib/bulk-importer/handlers/product/upsertMedia.d.ts +75 -0
  70. package/lib/bulk-importer/handlers/product/upsertMedia.d.ts.map +1 -0
  71. package/lib/bulk-importer/handlers/product/upsertMedia.js +59 -0
  72. package/lib/bulk-importer/handlers/product/upsertMedia.js.map +1 -0
  73. package/lib/bulk-importer/handlers/product/upsertVariations.d.ts +79 -0
  74. package/lib/bulk-importer/handlers/product/upsertVariations.d.ts.map +1 -0
  75. package/lib/bulk-importer/handlers/product/upsertVariations.js +72 -0
  76. package/lib/bulk-importer/handlers/product/upsertVariations.js.map +1 -0
  77. package/lib/bulk-importer/handlers/utils/convertTagsToLowerCase.d.ts +3 -0
  78. package/lib/bulk-importer/handlers/utils/convertTagsToLowerCase.d.ts.map +1 -0
  79. package/lib/bulk-importer/handlers/utils/convertTagsToLowerCase.js +6 -0
  80. package/lib/bulk-importer/handlers/utils/convertTagsToLowerCase.js.map +1 -0
  81. package/lib/bulk-importer/index.d.ts +4 -0
  82. package/lib/bulk-importer/index.d.ts.map +1 -0
  83. package/lib/bulk-importer/index.js +4 -0
  84. package/lib/bulk-importer/index.js.map +1 -0
  85. package/lib/bulk-importer/upsertAsset.d.ts +28 -0
  86. package/lib/bulk-importer/upsertAsset.d.ts.map +1 -0
  87. package/lib/bulk-importer/upsertAsset.js +41 -0
  88. package/lib/bulk-importer/upsertAsset.js.map +1 -0
  89. package/lib/core-index.d.ts +9 -6
  90. package/lib/core-index.d.ts.map +1 -1
  91. package/lib/core-index.js +5 -1
  92. package/lib/core-index.js.map +1 -1
  93. package/lib/directors/BaseDiscountAdapter.d.ts +4 -4
  94. package/lib/directors/BaseDiscountAdapter.d.ts.map +1 -1
  95. package/lib/directors/BaseDiscountAdapter.js +1 -1
  96. package/lib/directors/BaseDiscountAdapter.js.map +1 -1
  97. package/lib/directors/BaseDiscountDirector.d.ts +1 -1
  98. package/lib/directors/BaseDiscountDirector.d.ts.map +1 -1
  99. package/lib/directors/BaseDiscountDirector.js +1 -1
  100. package/lib/directors/BaseDiscountDirector.js.map +1 -1
  101. package/lib/directors/BasePricingAdapter.d.ts +2 -2
  102. package/lib/directors/BasePricingAdapter.d.ts.map +1 -1
  103. package/lib/directors/BasePricingDirector.d.ts.map +1 -1
  104. package/lib/directors/BasePricingDirector.js +3 -3
  105. package/lib/directors/BasePricingDirector.js.map +1 -1
  106. package/lib/directors/BasePricingSheet.js.map +1 -1
  107. package/lib/directors/BaseWorker.js +1 -1
  108. package/lib/directors/BaseWorker.js.map +1 -1
  109. package/lib/directors/DeliveryAdapter.d.ts +3 -3
  110. package/lib/directors/DeliveryAdapter.d.ts.map +1 -1
  111. package/lib/directors/DeliveryDirector.d.ts +3 -3
  112. package/lib/directors/DeliveryDirector.d.ts.map +1 -1
  113. package/lib/directors/DeliveryDirector.js +29 -16
  114. package/lib/directors/DeliveryDirector.js.map +1 -1
  115. package/lib/directors/DeliveryPricingAdapter.d.ts +1 -1
  116. package/lib/directors/DeliveryPricingAdapter.d.ts.map +1 -1
  117. package/lib/directors/DeliveryPricingDirector.d.ts.map +1 -1
  118. package/lib/directors/DeliveryPricingDirector.js +3 -4
  119. package/lib/directors/DeliveryPricingDirector.js.map +1 -1
  120. package/lib/directors/DeliveryPricingSheet.d.ts.map +1 -1
  121. package/lib/directors/DeliveryPricingSheet.js +2 -1
  122. package/lib/directors/DeliveryPricingSheet.js.map +1 -1
  123. package/lib/directors/EnrollmentAdapter.d.ts +7 -4
  124. package/lib/directors/EnrollmentAdapter.d.ts.map +1 -1
  125. package/lib/directors/EnrollmentAdapter.js +1 -4
  126. package/lib/directors/EnrollmentAdapter.js.map +1 -1
  127. package/lib/directors/EnrollmentDirector.d.ts +1 -1
  128. package/lib/directors/EnrollmentDirector.d.ts.map +1 -1
  129. package/lib/directors/EnrollmentDirector.js +1 -5
  130. package/lib/directors/EnrollmentDirector.js.map +1 -1
  131. package/lib/directors/FilterAdapter.d.ts +3 -3
  132. package/lib/directors/FilterAdapter.d.ts.map +1 -1
  133. package/lib/directors/FilterDirector.d.ts +1 -1
  134. package/lib/directors/FilterDirector.d.ts.map +1 -1
  135. package/lib/directors/FilterDirector.js +7 -8
  136. package/lib/directors/FilterDirector.js.map +1 -1
  137. package/lib/directors/MessagingDirector.d.ts +2 -2
  138. package/lib/directors/MessagingDirector.d.ts.map +1 -1
  139. package/lib/directors/OrderDiscountAdapter.d.ts +1 -1
  140. package/lib/directors/OrderDiscountAdapter.d.ts.map +1 -1
  141. package/lib/directors/OrderDiscountAdapter.js.map +1 -1
  142. package/lib/directors/OrderPricingAdapter.d.ts +2 -2
  143. package/lib/directors/OrderPricingAdapter.d.ts.map +1 -1
  144. package/lib/directors/OrderPricingDirector.d.ts +2 -2
  145. package/lib/directors/OrderPricingDirector.d.ts.map +1 -1
  146. package/lib/directors/OrderPricingDirector.js +1 -1
  147. package/lib/directors/OrderPricingDirector.js.map +1 -1
  148. package/lib/directors/OrderPricingSheet.d.ts.map +1 -1
  149. package/lib/directors/OrderPricingSheet.js +2 -1
  150. package/lib/directors/OrderPricingSheet.js.map +1 -1
  151. package/lib/directors/PaymentAdapter.d.ts +2 -2
  152. package/lib/directors/PaymentAdapter.d.ts.map +1 -1
  153. package/lib/directors/PaymentDirector.d.ts +4 -4
  154. package/lib/directors/PaymentDirector.d.ts.map +1 -1
  155. package/lib/directors/PaymentDirector.js +24 -6
  156. package/lib/directors/PaymentDirector.js.map +1 -1
  157. package/lib/directors/PaymentPricingAdapter.d.ts +2 -2
  158. package/lib/directors/PaymentPricingAdapter.d.ts.map +1 -1
  159. package/lib/directors/PaymentPricingDirector.d.ts +1 -1
  160. package/lib/directors/PaymentPricingDirector.d.ts.map +1 -1
  161. package/lib/directors/PaymentPricingDirector.js +3 -5
  162. package/lib/directors/PaymentPricingDirector.js.map +1 -1
  163. package/lib/directors/PaymentPricingSheet.d.ts.map +1 -1
  164. package/lib/directors/PaymentPricingSheet.js +2 -1
  165. package/lib/directors/PaymentPricingSheet.js.map +1 -1
  166. package/lib/directors/ProductDiscountAdapter.d.ts +1 -1
  167. package/lib/directors/ProductDiscountAdapter.d.ts.map +1 -1
  168. package/lib/directors/ProductDiscountAdapter.js.map +1 -1
  169. package/lib/directors/ProductDiscountConfiguration.d.ts +1 -1
  170. package/lib/directors/ProductDiscountConfiguration.d.ts.map +1 -1
  171. package/lib/directors/ProductPricingAdapter.d.ts +1 -1
  172. package/lib/directors/ProductPricingAdapter.d.ts.map +1 -1
  173. package/lib/directors/ProductPricingDirector.d.ts +2 -2
  174. package/lib/directors/ProductPricingDirector.d.ts.map +1 -1
  175. package/lib/directors/ProductPricingDirector.js +3 -3
  176. package/lib/directors/ProductPricingDirector.js.map +1 -1
  177. package/lib/directors/ProductPricingSheet.d.ts +2 -2
  178. package/lib/directors/ProductPricingSheet.d.ts.map +1 -1
  179. package/lib/directors/ProductPricingSheet.js +2 -1
  180. package/lib/directors/ProductPricingSheet.js.map +1 -1
  181. package/lib/directors/QuotationAdapter.d.ts +2 -2
  182. package/lib/directors/QuotationAdapter.d.ts.map +1 -1
  183. package/lib/directors/QuotationDirector.js +2 -2
  184. package/lib/directors/WarehousingAdapter.d.ts +3 -4
  185. package/lib/directors/WarehousingAdapter.d.ts.map +1 -1
  186. package/lib/directors/WarehousingAdapter.js.map +1 -1
  187. package/lib/directors/WarehousingDirector.d.ts +5 -5
  188. package/lib/directors/WarehousingDirector.d.ts.map +1 -1
  189. package/lib/directors/WarehousingDirector.js +10 -13
  190. package/lib/directors/WarehousingDirector.js.map +1 -1
  191. package/lib/directors/WorkerAdapter.d.ts +3 -2
  192. package/lib/directors/WorkerAdapter.d.ts.map +1 -1
  193. package/lib/directors/WorkerAdapter.js +1 -1
  194. package/lib/directors/WorkerAdapter.js.map +1 -1
  195. package/lib/directors/WorkerDirector.d.ts +2 -2
  196. package/lib/directors/WorkerDirector.d.ts.map +1 -1
  197. package/lib/directors/WorkerDirector.js +2 -3
  198. package/lib/directors/WorkerDirector.js.map +1 -1
  199. package/lib/factory/index.d.ts +3 -0
  200. package/lib/factory/index.d.ts.map +1 -0
  201. package/lib/factory/index.js +3 -0
  202. package/lib/factory/index.js.map +1 -0
  203. package/lib/factory/registerProductDiscoverabilityFilter.d.ts +5 -0
  204. package/lib/factory/registerProductDiscoverabilityFilter.d.ts.map +1 -0
  205. package/lib/factory/registerProductDiscoverabilityFilter.js +27 -0
  206. package/lib/factory/registerProductDiscoverabilityFilter.js.map +1 -0
  207. package/lib/modules.d.ts +4 -5
  208. package/lib/modules.d.ts.map +1 -1
  209. package/lib/modules.js +3 -3
  210. package/lib/modules.js.map +1 -1
  211. package/lib/services/activateEnrollment.d.ts.map +1 -1
  212. package/lib/services/activateEnrollment.js +8 -12
  213. package/lib/services/activateEnrollment.js.map +1 -1
  214. package/lib/services/addMessage.d.ts +4 -0
  215. package/lib/services/addMessage.d.ts.map +1 -0
  216. package/lib/services/addMessage.js +15 -0
  217. package/lib/services/addMessage.js.map +1 -0
  218. package/lib/services/calculateDiscountTotal.js +2 -2
  219. package/lib/services/calculateDiscountTotal.js.map +1 -1
  220. package/lib/services/checkoutOrder.d.ts +1 -1
  221. package/lib/services/checkoutOrder.d.ts.map +1 -1
  222. package/lib/services/checkoutOrder.js +10 -4
  223. package/lib/services/checkoutOrder.js.map +1 -1
  224. package/lib/services/confirmOrder.d.ts +1 -1
  225. package/lib/services/confirmOrder.d.ts.map +1 -1
  226. package/lib/services/createDownloadStream.d.ts +1 -1
  227. package/lib/services/createDownloadStream.d.ts.map +1 -1
  228. package/lib/services/createDownloadStream.js +2 -0
  229. package/lib/services/createDownloadStream.js.map +1 -1
  230. package/lib/services/createEnrollmentFromCheckout.d.ts.map +1 -1
  231. package/lib/services/createEnrollmentFromCheckout.js +2 -2
  232. package/lib/services/createEnrollmentFromCheckout.js.map +1 -1
  233. package/lib/services/createManualOrderDiscount.d.ts +2 -2
  234. package/lib/services/createManualOrderDiscount.d.ts.map +1 -1
  235. package/lib/services/createSignedURL.d.ts.map +1 -1
  236. package/lib/services/createSignedURL.js +2 -0
  237. package/lib/services/createSignedURL.js.map +1 -1
  238. package/lib/services/deleteUser.d.ts +1 -1
  239. package/lib/services/deleteUser.d.ts.map +1 -1
  240. package/lib/services/deleteUser.js +4 -2
  241. package/lib/services/deleteUser.js.map +1 -1
  242. package/lib/services/discountedEntities.js.map +1 -1
  243. package/lib/services/findOrInitCart.d.ts +1 -2
  244. package/lib/services/findOrInitCart.d.ts.map +1 -1
  245. package/lib/services/findOrInitCart.js.map +1 -1
  246. package/lib/services/fullfillQuotation.d.ts +1 -1
  247. package/lib/services/fullfillQuotation.d.ts.map +1 -1
  248. package/lib/services/fullfillQuotation.js.map +1 -1
  249. package/lib/services/generateOrderFromEnrollment.d.ts +7 -0
  250. package/lib/services/generateOrderFromEnrollment.d.ts.map +1 -0
  251. package/lib/services/generateOrderFromEnrollment.js +34 -0
  252. package/lib/services/generateOrderFromEnrollment.js.map +1 -0
  253. package/lib/services/index.d.ts +6 -0
  254. package/lib/services/index.d.ts.map +1 -1
  255. package/lib/services/index.js +6 -0
  256. package/lib/services/index.js.map +1 -1
  257. package/lib/services/initCartProviders.d.ts.map +1 -1
  258. package/lib/services/initCartProviders.js +6 -2
  259. package/lib/services/initCartProviders.js.map +1 -1
  260. package/lib/services/initializeEnrollment.d.ts +1 -1
  261. package/lib/services/initializeEnrollment.d.ts.map +1 -1
  262. package/lib/services/initializeEnrollment.js +11 -12
  263. package/lib/services/initializeEnrollment.js.map +1 -1
  264. package/lib/services/linkFileService.d.ts +1 -1
  265. package/lib/services/linkFileService.d.ts.map +1 -1
  266. package/lib/services/linkFileService.js +3 -1
  267. package/lib/services/linkFileService.js.map +1 -1
  268. package/lib/services/loadFilterOptions.d.ts +2 -2
  269. package/lib/services/loadFilterOptions.d.ts.map +1 -1
  270. package/lib/services/migrateOrderCart.d.ts +1 -1
  271. package/lib/services/migrateOrderCart.d.ts.map +1 -1
  272. package/lib/services/nextUserCart.d.ts +1 -1
  273. package/lib/services/nextUserCart.d.ts.map +1 -1
  274. package/lib/services/nextUserCart.js +1 -1
  275. package/lib/services/nextUserCart.js.map +1 -1
  276. package/lib/services/processEnrollment.d.ts.map +1 -1
  277. package/lib/services/processEnrollment.js +13 -5
  278. package/lib/services/processEnrollment.js.map +1 -1
  279. package/lib/services/processOrder.d.ts.map +1 -1
  280. package/lib/services/processOrder.js +30 -30
  281. package/lib/services/processOrder.js.map +1 -1
  282. package/lib/services/processQuotation.d.ts.map +1 -1
  283. package/lib/services/processQuotation.js +10 -14
  284. package/lib/services/processQuotation.js.map +1 -1
  285. package/lib/services/proposeQuotation.d.ts +1 -1
  286. package/lib/services/proposeQuotation.d.ts.map +1 -1
  287. package/lib/services/proposeQuotation.js +2 -2
  288. package/lib/services/proposeQuotation.js.map +1 -1
  289. package/lib/services/registerPaymentCredentials.d.ts +1 -2
  290. package/lib/services/registerPaymentCredentials.d.ts.map +1 -1
  291. package/lib/services/registerPaymentCredentials.js +4 -6
  292. package/lib/services/registerPaymentCredentials.js.map +1 -1
  293. package/lib/services/rejectOrder.d.ts +1 -1
  294. package/lib/services/rejectOrder.d.ts.map +1 -1
  295. package/lib/services/rejectQuotation.d.ts +1 -1
  296. package/lib/services/rejectQuotation.d.ts.map +1 -1
  297. package/lib/services/rejectQuotation.js +2 -2
  298. package/lib/services/rejectQuotation.js.map +1 -1
  299. package/lib/services/removeFiles.js +2 -2
  300. package/lib/services/removeFiles.js.map +1 -1
  301. package/lib/services/removeProduct.js +3 -3
  302. package/lib/services/removeProduct.js.map +1 -1
  303. package/lib/services/searchAssortments.d.ts.map +1 -1
  304. package/lib/services/searchAssortments.js +3 -2
  305. package/lib/services/searchAssortments.js.map +1 -1
  306. package/lib/services/searchProducts.d.ts.map +1 -1
  307. package/lib/services/searchProducts.js +3 -2
  308. package/lib/services/searchProducts.js.map +1 -1
  309. package/lib/services/simulateProductDispatching.d.ts +1 -1
  310. package/lib/services/simulateProductDispatching.d.ts.map +1 -1
  311. package/lib/services/simulateProductInventory.d.ts +1 -1
  312. package/lib/services/simulateProductInventory.d.ts.map +1 -1
  313. package/lib/services/simulateProductInventory.js.map +1 -1
  314. package/lib/services/simulateProductPricing.d.ts +7 -4
  315. package/lib/services/simulateProductPricing.d.ts.map +1 -1
  316. package/lib/services/simulateProductPricing.js.map +1 -1
  317. package/lib/services/terminateEnrollment.d.ts.map +1 -1
  318. package/lib/services/terminateEnrollment.js +5 -9
  319. package/lib/services/terminateEnrollment.js.map +1 -1
  320. package/lib/services/updateCalculation.d.ts +2 -1
  321. package/lib/services/updateCalculation.d.ts.map +1 -1
  322. package/lib/services/updateCalculation.js +20 -12
  323. package/lib/services/updateCalculation.js.map +1 -1
  324. package/lib/services/updateScheduling.d.ts +1 -1
  325. package/lib/services/updateScheduling.d.ts.map +1 -1
  326. package/lib/services/updateScheduling.js +7 -11
  327. package/lib/services/updateScheduling.js.map +1 -1
  328. package/lib/services/updateUserAvatarAfterUpload.d.ts +1 -1
  329. package/lib/services/updateUserAvatarAfterUpload.d.ts.map +1 -1
  330. package/lib/services/updateUserAvatarAfterUpload.js.map +1 -1
  331. package/lib/services/uploadFileFromStream.d.ts.map +1 -1
  332. package/lib/services/uploadFileFromStream.js +4 -1
  333. package/lib/services/uploadFileFromStream.js.map +1 -1
  334. package/lib/services/uploadFileFromURL.d.ts +1 -2
  335. package/lib/services/uploadFileFromURL.d.ts.map +1 -1
  336. package/lib/services/uploadFileFromURL.js.map +1 -1
  337. package/lib/services/validateOrder.d.ts +1 -1
  338. package/lib/services/validateOrder.d.ts.map +1 -1
  339. package/lib/services/validateOrder.js +17 -24
  340. package/lib/services/validateOrder.js.map +1 -1
  341. package/lib/services/verifyQuotation.d.ts +1 -1
  342. package/lib/services/verifyQuotation.d.ts.map +1 -1
  343. package/lib/services/verifyQuotation.js +2 -2
  344. package/lib/services/verifyQuotation.js.map +1 -1
  345. package/package.json +21 -20
  346. package/src/bulk-importer/createBulkImporter.ts +205 -0
  347. package/src/bulk-importer/handlers/assortment/create.ts +118 -0
  348. package/src/bulk-importer/handlers/assortment/index.ts +3 -0
  349. package/src/bulk-importer/handlers/assortment/remove.ts +26 -0
  350. package/src/bulk-importer/handlers/assortment/update.ts +133 -0
  351. package/src/bulk-importer/handlers/assortment/upsertAssortmentChildren.ts +77 -0
  352. package/src/bulk-importer/handlers/assortment/upsertAssortmentFilters.ts +70 -0
  353. package/src/bulk-importer/handlers/assortment/upsertAssortmentProducts.ts +76 -0
  354. package/src/bulk-importer/handlers/assortment/upsertMedia.ts +76 -0
  355. package/src/bulk-importer/handlers/filter/create.ts +104 -0
  356. package/src/bulk-importer/handlers/filter/index.ts +3 -0
  357. package/src/bulk-importer/handlers/filter/remove.ts +25 -0
  358. package/src/bulk-importer/handlers/filter/update.ts +94 -0
  359. package/src/bulk-importer/handlers/product/create.ts +170 -0
  360. package/src/bulk-importer/handlers/product/index.ts +3 -0
  361. package/src/bulk-importer/handlers/product/remove.ts +27 -0
  362. package/src/bulk-importer/handlers/product/update.ts +175 -0
  363. package/src/bulk-importer/handlers/product/upsertMedia.ts +81 -0
  364. package/src/bulk-importer/handlers/product/upsertVariations.ts +110 -0
  365. package/src/bulk-importer/handlers/utils/convertTagsToLowerCase.ts +4 -0
  366. package/src/bulk-importer/index.ts +3 -0
  367. package/src/bulk-importer/upsertAsset.ts +50 -0
  368. package/src/core-index.ts +10 -7
  369. package/src/directors/BaseDiscountAdapter.test.ts +1 -1
  370. package/src/directors/BaseDiscountAdapter.ts +5 -5
  371. package/src/directors/BaseDiscountDirector.ts +2 -2
  372. package/src/directors/BasePricingAdapter.ts +2 -2
  373. package/src/directors/BasePricingDirector.ts +47 -44
  374. package/src/directors/BasePricingSheet.ts +1 -1
  375. package/src/directors/BaseWorker.ts +1 -1
  376. package/src/directors/DeliveryAdapter.ts +3 -3
  377. package/src/directors/DeliveryDirector.ts +33 -23
  378. package/src/directors/DeliveryPricingAdapter.ts +1 -1
  379. package/src/directors/DeliveryPricingDirector.ts +5 -6
  380. package/src/directors/DeliveryPricingSheet.ts +3 -2
  381. package/src/directors/EnrollmentAdapter.ts +9 -6
  382. package/src/directors/EnrollmentDirector.ts +9 -8
  383. package/src/directors/FilterAdapter.ts +3 -3
  384. package/src/directors/FilterDirector.ts +11 -12
  385. package/src/directors/MessagingDirector.ts +1 -1
  386. package/src/directors/OrderDiscountAdapter.ts +2 -2
  387. package/src/directors/OrderPricingAdapter.ts +2 -2
  388. package/src/directors/OrderPricingDirector.ts +3 -3
  389. package/src/directors/OrderPricingSheet.ts +3 -2
  390. package/src/directors/PaymentAdapter.ts +2 -2
  391. package/src/directors/PaymentDirector.ts +34 -10
  392. package/src/directors/PaymentPricingAdapter.ts +2 -2
  393. package/src/directors/PaymentPricingDirector.ts +6 -8
  394. package/src/directors/PaymentPricingSheet.ts +3 -2
  395. package/src/directors/ProductDiscountAdapter.ts +2 -2
  396. package/src/directors/ProductDiscountConfiguration.ts +1 -1
  397. package/src/directors/ProductPricingAdapter.ts +1 -1
  398. package/src/directors/ProductPricingDirector.ts +7 -7
  399. package/src/directors/ProductPricingSheet.ts +4 -3
  400. package/src/directors/QuotationAdapter.ts +2 -2
  401. package/src/directors/QuotationDirector.ts +2 -2
  402. package/src/directors/WarehousingAdapter.ts +3 -4
  403. package/src/directors/WarehousingDirector.ts +20 -23
  404. package/src/directors/WorkerAdapter.ts +9 -4
  405. package/src/directors/WorkerDirector.ts +5 -6
  406. package/src/factory/index.ts +3 -0
  407. package/src/factory/registerProductDiscoverabilityFilter.ts +36 -0
  408. package/src/modules.ts +6 -7
  409. package/src/services/activateEnrollment.ts +9 -13
  410. package/src/services/addMessage.ts +20 -0
  411. package/src/services/calculateDiscountTotal.ts +4 -4
  412. package/src/services/checkoutOrder.ts +10 -5
  413. package/src/services/createDownloadStream.ts +1 -0
  414. package/src/services/createEnrollmentFromCheckout.ts +22 -20
  415. package/src/services/createManualOrderDiscount.ts +2 -2
  416. package/src/services/createSignedURL.ts +1 -0
  417. package/src/services/deleteUser.ts +7 -2
  418. package/src/services/discountedEntities.ts +6 -6
  419. package/src/services/findOrInitCart.ts +1 -2
  420. package/src/services/fullfillQuotation.ts +1 -1
  421. package/src/services/generateOrderFromEnrollment.ts +54 -0
  422. package/src/services/index.ts +8 -0
  423. package/src/services/initCartProviders.ts +8 -10
  424. package/src/services/initializeEnrollment.ts +16 -13
  425. package/src/services/linkFileService.ts +3 -1
  426. package/src/services/nextUserCart.ts +1 -1
  427. package/src/services/processEnrollment.ts +18 -6
  428. package/src/services/processOrder.ts +37 -36
  429. package/src/services/processQuotation.ts +10 -14
  430. package/src/services/proposeQuotation.ts +2 -2
  431. package/src/services/registerPaymentCredentials.ts +6 -8
  432. package/src/services/rejectQuotation.ts +2 -2
  433. package/src/services/removeFiles.ts +2 -2
  434. package/src/services/removeProduct.ts +3 -3
  435. package/src/services/searchAssortments.ts +3 -2
  436. package/src/services/searchProducts.ts +4 -2
  437. package/src/services/simulateProductDispatching.ts +1 -1
  438. package/src/services/simulateProductInventory.ts +7 -3
  439. package/src/services/simulateProductPricing.ts +6 -3
  440. package/src/services/terminateEnrollment.ts +5 -9
  441. package/src/services/updateCalculation.ts +37 -20
  442. package/src/services/updateScheduling.ts +19 -20
  443. package/src/services/updateUserAvatarAfterUpload.ts +4 -1
  444. package/src/services/uploadFileFromStream.ts +3 -1
  445. package/src/services/uploadFileFromURL.ts +2 -2
  446. package/src/services/validateOrder.ts +34 -38
  447. package/src/services/verifyQuotation.ts +2 -2
@@ -70,7 +70,7 @@ export const BasePricingDirector = <
70
70
  async rebuildCalculation(this: typeof director, pricingContext, unchainedAPI) {
71
71
  const context = await this.buildPricingContext(pricingContext, unchainedAPI);
72
72
 
73
- let calculation: Calculation[] = [];
73
+ let calculation: Calculation[] | null = [];
74
74
 
75
75
  const Adapters = baseDirector.getAdapters({
76
76
  adapterFilter: (Adapter) => {
@@ -78,52 +78,55 @@ export const BasePricingDirector = <
78
78
  },
79
79
  });
80
80
 
81
- calculation = await Adapters.reduce(async (previousPromise, Adapter) => {
82
- const resolvedCalculation = await previousPromise;
83
- if (!resolvedCalculation) return null;
84
-
85
- const discounts: Discount<any>[] = await Promise.all(
86
- context.discounts.map(async (orderDiscount) => {
87
- const order = await unchainedAPI.modules.orders.findOrder({
88
- orderId: orderDiscount.orderId,
89
- });
90
- const DiscountAdapter = OrderDiscountDirector.getAdapter(orderDiscount.discountKey);
91
- if (!DiscountAdapter) return null;
92
-
93
- const adapter = await DiscountAdapter.actions({
94
- context: { order, orderDiscount, code: orderDiscount.code, ...unchainedAPI },
81
+ calculation = await Adapters.reduce(
82
+ async (previousPromise, Adapter) => {
83
+ const resolvedCalculation = await previousPromise;
84
+ if (!resolvedCalculation) return null;
85
+
86
+ const discounts: (Discount<any> | null)[] = await Promise.all(
87
+ context.discounts.map(async (orderDiscount) => {
88
+ const order = await unchainedAPI.modules.orders.findOrder({
89
+ orderId: orderDiscount.orderId,
90
+ });
91
+ const DiscountAdapter = OrderDiscountDirector.getAdapter(orderDiscount.discountKey);
92
+ if (!DiscountAdapter) return null;
93
+
94
+ const adapter = await DiscountAdapter.actions({
95
+ context: { order, orderDiscount, code: orderDiscount.code, ...unchainedAPI },
96
+ });
97
+
98
+ const configuration = adapter.discountForPricingAdapterKey({
99
+ pricingAdapterKey: Adapter.key,
100
+ calculationSheet: this.calculationSheet(pricingContext, resolvedCalculation),
101
+ });
102
+
103
+ return {
104
+ discountId: orderDiscount._id,
105
+ configuration,
106
+ };
107
+ }),
108
+ );
109
+
110
+ try {
111
+ const adapter = Adapter.actions({
112
+ context,
113
+ calculationSheet: this.calculationSheet(pricingContext, resolvedCalculation),
114
+ discounts: discounts.filter((d) => d?.configuration !== null) as Discount<any>[],
95
115
  });
96
116
 
97
- const configuration = adapter.discountForPricingAdapterKey({
98
- pricingAdapterKey: Adapter.key,
99
- calculationSheet: this.calculationSheet(pricingContext, calculation),
100
- });
117
+ const nextCalculationResult = await adapter.calculate();
118
+ if (!nextCalculationResult) return null;
119
+ calculation = resolvedCalculation.concat(nextCalculationResult);
120
+ return calculation;
121
+ } catch (error) {
122
+ logger.error(error);
123
+ }
124
+ return resolvedCalculation;
125
+ },
126
+ Promise.resolve([] as Calculation[]),
127
+ );
101
128
 
102
- return {
103
- discountId: orderDiscount._id,
104
- configuration,
105
- };
106
- }),
107
- );
108
-
109
- try {
110
- const adapter = Adapter.actions({
111
- context,
112
- calculationSheet: this.calculationSheet(pricingContext, calculation),
113
- discounts: discounts.filter((d) => d?.configuration !== null),
114
- });
115
-
116
- const nextCalculationResult = await adapter.calculate();
117
- if (!nextCalculationResult) return null;
118
- calculation = resolvedCalculation.concat(nextCalculationResult);
119
- return calculation;
120
- } catch (error) {
121
- logger.error(error);
122
- }
123
- return resolvedCalculation;
124
- }, Promise.resolve([]));
125
-
126
- return calculation;
129
+ return calculation || ([] as Calculation[]);
127
130
  },
128
131
  };
129
132
 
@@ -93,7 +93,7 @@ export const BasePricingSheet = <Calculation extends PricingCalculation>(
93
93
  (oldCalculation, filterKey) =>
94
94
  oldCalculation.filter(
95
95
  (row: Calculation) =>
96
- !!row && (filter[filterKey] === undefined || row[filterKey] === filter[filterKey]),
96
+ !!row && (filter![filterKey] === undefined || row[filterKey] === filter![filterKey]),
97
97
  ),
98
98
  this.calculation,
99
99
  );
@@ -83,7 +83,7 @@ export const BaseWorker: IWorker<WorkerParams> = {
83
83
  retries: workConfig.retries || 0,
84
84
  };
85
85
  if (workConfig.input) {
86
- workData.input = await workConfig.input(workData);
86
+ workData.input = (await workConfig.input(workData)) || {};
87
87
  // A work input fn can skip auto scheduling a new record
88
88
  // when it explicitly returns a falsish input instead of a dictionary
89
89
  if (!workData.input) return null;
@@ -19,11 +19,11 @@ export enum DeliveryError {
19
19
  }
20
20
 
21
21
  export interface DeliveryAdapterActions {
22
- configurationError: (transactionContext?: any) => DeliveryError;
23
- estimatedDeliveryThroughput: (warehousingThroughputTime: number) => Promise<number>;
22
+ configurationError: (transactionContext?: any) => DeliveryError | null;
23
+ estimatedDeliveryThroughput: (warehousingThroughputTime: number) => Promise<number | null>;
24
24
  isActive: () => boolean;
25
25
  isAutoReleaseAllowed: () => boolean;
26
- pickUpLocationById: (locationId: string) => Promise<DeliveryLocation>;
26
+ pickUpLocationById: (locationId: string) => Promise<DeliveryLocation | null>;
27
27
  pickUpLocations: () => Promise<DeliveryLocation[]>;
28
28
  send: () => Promise<boolean | Work>;
29
29
  }
@@ -6,7 +6,7 @@ import {
6
6
  DeliveryError,
7
7
  } from './DeliveryAdapter.js';
8
8
  import { DeliveryProvider } from '@unchainedshop/core-delivery';
9
- import { OrderDelivery, OrderDeliveryStatus } from '@unchainedshop/core-orders';
9
+ import { Order, OrderDeliveryStatus } from '@unchainedshop/core-orders';
10
10
  import { Modules } from '../modules.js';
11
11
  import { createLogger } from '@unchainedshop/logger';
12
12
 
@@ -14,10 +14,10 @@ const logger = createLogger('unchained:core');
14
14
 
15
15
  export type IDeliveryDirector = IBaseDirector<IDeliveryAdapter> & {
16
16
  sendOrderDelivery: (
17
- orderDelivery: OrderDelivery,
17
+ order: Order,
18
18
  transactionContext: Record<string, any>,
19
19
  unchainedAPI: { modules: Modules },
20
- ) => Promise<OrderDelivery>;
20
+ ) => Promise<void>;
21
21
  actions: (
22
22
  deliveryProvider: DeliveryProvider,
23
23
  deliveryContext: DeliveryContext,
@@ -33,21 +33,24 @@ export const DeliveryDirector: IDeliveryDirector = {
33
33
  actions: async (deliveryProvider, deliveryContext, unchainedAPI) => {
34
34
  const Adapter = baseDirector.getAdapter(deliveryProvider.adapterKey);
35
35
 
36
+ if (!Adapter) {
37
+ throw new Error(`Delivery Plugin ${deliveryProvider.adapterKey} not available`);
38
+ }
39
+
36
40
  const context = { ...deliveryContext, ...unchainedAPI };
37
- const adapter = Adapter?.actions(deliveryProvider.configuration, context);
41
+ const adapter = Adapter.actions(deliveryProvider.configuration, context);
38
42
 
39
43
  return {
40
44
  configurationError: () => {
41
- try {
42
- return adapter.configurationError();
43
- } catch {
45
+ if (!adapter) {
44
46
  return DeliveryError.ADAPTER_NOT_FOUND;
45
47
  }
48
+ return adapter.configurationError();
46
49
  },
47
50
 
48
51
  estimatedDeliveryThroughput: async (warehousingThroughputTime) => {
49
52
  try {
50
- const throughput = await adapter.estimatedDeliveryThroughput(warehousingThroughputTime);
53
+ const throughput = await adapter?.estimatedDeliveryThroughput(warehousingThroughputTime);
51
54
  return throughput;
52
55
  } catch (error) {
53
56
  logger.warn('Delivery Director -> Error while estimating delivery throughput', {
@@ -58,6 +61,7 @@ export const DeliveryDirector: IDeliveryDirector = {
58
61
  },
59
62
 
60
63
  isActive: () => {
64
+ if (!adapter) return false;
61
65
  try {
62
66
  return adapter.isActive();
63
67
  } catch (error) {
@@ -69,6 +73,7 @@ export const DeliveryDirector: IDeliveryDirector = {
69
73
  },
70
74
 
71
75
  isAutoReleaseAllowed: () => {
76
+ if (!adapter) return false;
72
77
  try {
73
78
  return adapter.isAutoReleaseAllowed();
74
79
  } catch (error) {
@@ -80,39 +85,47 @@ export const DeliveryDirector: IDeliveryDirector = {
80
85
  },
81
86
 
82
87
  send: async () => {
88
+ if (!adapter) throw new Error('Delivery adapter not found');
83
89
  return adapter.send();
84
90
  },
85
91
 
86
92
  pickUpLocationById: async (locationId) => {
87
- return adapter.pickUpLocationById(locationId);
93
+ if (!adapter) throw new Error('Delivery adapter not found');
94
+ return adapter?.pickUpLocationById(locationId);
88
95
  },
89
96
 
90
97
  pickUpLocations: async () => {
98
+ if (!adapter) throw new Error('Delivery adapter not found');
91
99
  return adapter.pickUpLocations();
92
100
  },
93
101
  };
94
102
  },
95
103
 
96
- sendOrderDelivery: async (orderDelivery, transactionContext, unchainedAPI) => {
104
+ sendOrderDelivery: async (order, transactionContext, unchainedAPI) => {
105
+ const orderDelivery = await unchainedAPI.modules.orders.deliveries.findDelivery({
106
+ orderDeliveryId: order.deliveryId!,
107
+ });
108
+
97
109
  if (
98
- unchainedAPI.modules.orders.deliveries.normalizedStatus(orderDelivery) !== OrderDeliveryStatus.OPEN
110
+ unchainedAPI.modules.orders.deliveries.normalizedStatus(orderDelivery!) !==
111
+ OrderDeliveryStatus.OPEN
99
112
  )
100
- return orderDelivery;
113
+ return;
101
114
 
102
- const order = await unchainedAPI.modules.orders.findOrder({ orderId: orderDelivery.orderId });
103
115
  const deliveryProvider = await unchainedAPI.modules.delivery.findProvider({
104
- deliveryProviderId: orderDelivery.deliveryProviderId,
116
+ deliveryProviderId: orderDelivery!.deliveryProviderId,
105
117
  });
106
- const address = orderDelivery.context?.address || order || order.billingAddress;
118
+
119
+ const address = orderDelivery!.context?.address || order!.billingAddress;
107
120
 
108
121
  const adapter = await DeliveryDirector.actions(
109
- deliveryProvider,
122
+ deliveryProvider!,
110
123
  {
111
- order,
112
- orderDelivery,
124
+ order: order!,
125
+ orderDelivery: orderDelivery!,
113
126
  transactionContext: {
114
127
  ...(transactionContext || {}),
115
- ...(orderDelivery.context || {}),
128
+ ...(orderDelivery!.context || {}),
116
129
  ...(address || {}),
117
130
  },
118
131
  },
@@ -120,14 +133,11 @@ export const DeliveryDirector: IDeliveryDirector = {
120
133
  );
121
134
 
122
135
  const arbitraryResponseData = await adapter.send();
123
-
124
136
  if (arbitraryResponseData) {
125
- return await unchainedAPI.modules.orders.deliveries.updateStatus(orderDelivery._id, {
137
+ await unchainedAPI.modules.orders.deliveries.updateStatus(orderDelivery!._id, {
126
138
  status: OrderDeliveryStatus.DELIVERED,
127
139
  info: JSON.stringify(arbitraryResponseData),
128
140
  });
129
141
  }
130
-
131
- return orderDelivery;
132
142
  },
133
143
  };
@@ -42,7 +42,7 @@ export interface DeliveryPricingAdapterContext extends BasePricingAdapterContext
42
42
  provider: DeliveryProvider;
43
43
  providerContext?: any;
44
44
  order: Order;
45
- orderDelivery: OrderDelivery;
45
+ orderDelivery?: OrderDelivery;
46
46
  user: User;
47
47
  discounts: OrderDiscount[];
48
48
  }
@@ -52,18 +52,18 @@ export const DeliveryPricingDirector: IDeliveryPricingDirector<any> = {
52
52
  const provider = await modules.delivery.findProvider({
53
53
  deliveryProviderId: item.deliveryProviderId,
54
54
  });
55
- const user = await modules.users.findUserById(order.userId);
55
+ const user = await modules.users.findUserById(order!.userId);
56
56
  const discounts = await modules.orders.discounts.findOrderDiscounts({
57
57
  orderId: item.orderId,
58
58
  });
59
59
 
60
60
  return {
61
61
  ...unchainedAPI,
62
- countryCode: order.countryCode,
62
+ countryCode: order!.countryCode,
63
63
  currencyCode,
64
- order,
65
- provider,
66
- user,
64
+ order: order!,
65
+ provider: provider!,
66
+ user: user!,
67
67
  discounts,
68
68
  orderDelivery: item,
69
69
  providerContext: null,
@@ -78,7 +78,6 @@ export const DeliveryPricingDirector: IDeliveryPricingDirector<any> = {
78
78
  provider: context.provider,
79
79
  user: context.user,
80
80
  discounts: [],
81
- orderDelivery: null,
82
81
  providerContext: context.providerContext,
83
82
  };
84
83
  },
@@ -61,7 +61,8 @@ export const DeliveryPricingSheet = (
61
61
  category: DeliveryPricingRowCategory.Discount,
62
62
  discountId: explicitDiscountId,
63
63
  })
64
- .map(({ discountId }) => discountId);
64
+ .map(({ discountId }) => discountId)
65
+ .filter(Boolean) as string[];
65
66
 
66
67
  return [...new Set(discountIds)]
67
68
  .map((discountId) => {
@@ -78,7 +79,7 @@ export const DeliveryPricingSheet = (
78
79
  currencyCode,
79
80
  };
80
81
  })
81
- .filter(Boolean);
82
+ .filter(Boolean) as { discountId: string; amount: number; currencyCode: string }[];
82
83
  },
83
84
  };
84
85
 
@@ -1,6 +1,7 @@
1
1
  import { BaseAdapter, IBaseAdapter } from '@unchainedshop/utils';
2
2
  import {
3
3
  Enrollment,
4
+ EnrollmentOrderPositionTemplate,
4
5
  EnrollmentPeriod,
5
6
  EnrollmentPlan,
6
7
  addToDate,
@@ -10,13 +11,17 @@ import type { OrderPosition } from '@unchainedshop/core-orders';
10
11
 
11
12
  export interface EnrollmentContext {
12
13
  enrollment: Enrollment;
14
+ product: Product;
13
15
  }
14
16
 
15
17
  export interface EnrollmentAdapterActions {
16
- configurationForOrder: (params: { period: EnrollmentPeriod; products: Product[] }) => Promise<any>;
18
+ configurationForOrder: (params: { period: EnrollmentPeriod }) => Promise<{
19
+ orderContext?: Record<string, any>;
20
+ orderPositionTemplates: EnrollmentOrderPositionTemplate[];
21
+ } | null>;
17
22
  isOverdue: () => Promise<boolean>;
18
23
  isValidForActivation: () => Promise<boolean>;
19
- nextPeriod: () => Promise<EnrollmentPeriod>;
24
+ nextPeriod: () => Promise<EnrollmentPeriod | null>;
20
25
  }
21
26
 
22
27
  export type IEnrollmentAdapter = IBaseAdapter & {
@@ -71,10 +76,8 @@ export const EnrollmentAdapter: Omit<IEnrollmentAdapter, 'key' | 'label' | 'vers
71
76
  isValidForActivation: async () => false,
72
77
 
73
78
  nextPeriod: async () => {
74
- const { enrollment } = context;
75
- const product = await (context as any).modules.products.findProduct({
76
- productId: enrollment.productId,
77
- });
79
+ const { enrollment, product } = context;
80
+
78
81
  const plan = product?.plan;
79
82
  const referenceDate = new Date();
80
83
  if (!plan) return null;
@@ -10,9 +10,15 @@ const logger = createLogger('unchained:core');
10
10
  export type IEnrollmentDirector = IBaseDirector<IEnrollmentAdapter> & {
11
11
  transformOrderItemToEnrollment: (
12
12
  item: { orderPosition: OrderPosition; product: Product },
13
- doc: Omit<Enrollment, 'configuration' | 'productId' | 'quantity' | 'status' | 'periods' | 'log'>,
13
+ doc: Omit<
14
+ Enrollment,
15
+ 'configuration' | 'productId' | 'quantity' | 'status' | 'periods' | 'log' | '_id' | 'created'
16
+ >,
14
17
  unchainedAPI,
15
- ) => Promise<Omit<Enrollment, 'status' | 'periods' | 'log'>>;
18
+ ) => Promise<
19
+ Omit<Enrollment, 'status' | 'periods' | 'log' | '_id' | 'created'> &
20
+ Pick<Partial<Enrollment>, '_id' | 'created'>
21
+ >;
16
22
 
17
23
  actions: (enrollmentContext: EnrollmentContext, unchainedAPI) => Promise<EnrollmentAdapterActions>;
18
24
  };
@@ -53,12 +59,7 @@ export const EnrollmentDirector: IEnrollmentDirector = {
53
59
  actions: async (enrollmentContext, unchainedAPI) => {
54
60
  const context = { ...enrollmentContext, ...unchainedAPI };
55
61
 
56
- // Resolve adapter
57
- const product = await context.modules.products.findProduct({
58
- productId: context.enrollment.productId,
59
- });
60
-
61
- const Adapter = findAppropriateAdapters(product?.plan)?.[0];
62
+ const Adapter = findAppropriateAdapters(enrollmentContext.product.plan)?.[0];
62
63
 
63
64
  if (!Adapter) {
64
65
  throw new Error('No suitable enrollment plugin available for this plan configuration');
@@ -21,7 +21,7 @@ export interface FilterAdapterActions {
21
21
 
22
22
  searchAssortments: (
23
23
  params: {
24
- assortmentIds: string[];
24
+ assortmentIds?: string[];
25
25
  },
26
26
  options: {
27
27
  filterSelector: mongodb.Filter<Filter>;
@@ -29,7 +29,7 @@ export interface FilterAdapterActions {
29
29
  sortStage: mongodb.FindOptions['sort'];
30
30
  locale: Intl.Locale;
31
31
  },
32
- ) => Promise<string[]>;
32
+ ) => Promise<string[] | undefined>;
33
33
 
34
34
  searchProducts: (
35
35
  params: {
@@ -41,7 +41,7 @@ export interface FilterAdapterActions {
41
41
  sortStage: mongodb.FindOptions['sort'];
42
42
  locale: Intl.Locale;
43
43
  },
44
- ) => Promise<string[]>;
44
+ ) => Promise<string[] | undefined>;
45
45
 
46
46
  transformFilterSelector: (
47
47
  query: mongodb.Filter<Filter>,
@@ -12,7 +12,7 @@ import {
12
12
  import { Product } from '@unchainedshop/core-products';
13
13
  import { Modules } from '../modules.js';
14
14
 
15
- export const parseQueryArray = (query: SearchFilterQuery): Record<string, string[]> =>
15
+ export const parseQueryArray = (query?: SearchFilterQuery): Record<string, string[]> =>
16
16
  (query || []).reduce(
17
17
  (accumulator, { key, value }) => ({
18
18
  ...accumulator,
@@ -80,7 +80,7 @@ export const FilterDirector: IFilterDirector = {
80
80
  initialValue: V,
81
81
  ) => {
82
82
  if (adapters.length === 0) {
83
- return null;
83
+ return initialValue;
84
84
  }
85
85
  return adapters.reduce(async (lastSearchPromise, adapter, index) => {
86
86
  return reducer(lastSearchPromise, adapter, index);
@@ -89,22 +89,21 @@ export const FilterDirector: IFilterDirector = {
89
89
 
90
90
  return {
91
91
  aggregateProductIds: (params) => {
92
- const reducedProductIds = adapters.reduce(
92
+ return adapters.reduce(
93
93
  (productIds, adapter) => adapter.aggregateProductIds({ productIds }),
94
94
  params.productIds,
95
95
  );
96
- return reducedProductIds;
97
96
  },
98
97
 
99
98
  searchAssortments: async (params, options) => {
100
- return reduceAdapters<string[]>(async (lastSearchPromise, adapter) => {
99
+ return reduceAdapters<string[] | undefined>(async (lastSearchPromise, adapter) => {
101
100
  const assortmentIds = await lastSearchPromise;
102
101
  return adapter.searchAssortments({ assortmentIds }, options);
103
102
  }, params.assortmentIds);
104
103
  },
105
104
 
106
105
  searchProducts: async (params, options) => {
107
- return reduceAdapters<string[]>(async (lastSearchPromise, adapter) => {
106
+ return reduceAdapters<string[] | undefined>(async (lastSearchPromise, adapter) => {
108
107
  const productIds = await lastSearchPromise;
109
108
  return adapter.searchProducts({ productIds }, options);
110
109
  }, params.productIds);
@@ -113,19 +112,19 @@ export const FilterDirector: IFilterDirector = {
113
112
  transformProductSelector: async (defaultSelector, options) => {
114
113
  return reduceAdapters<mongodb.Filter<Product>>(async (lastSelector, adapter) => {
115
114
  return adapter.transformProductSelector(await lastSelector, options);
116
- }, defaultSelector || null);
115
+ }, defaultSelector);
117
116
  },
118
117
 
119
118
  transformSortStage: async (defaultStage, options) => {
120
119
  return reduceAdapters<mongodb.FindOptions<Product>['sort']>(async (lastSortStage, adapter) => {
121
120
  return adapter.transformSortStage(await lastSortStage, options);
122
- }, defaultStage || null);
121
+ }, defaultStage);
123
122
  },
124
123
 
125
124
  transformFilterSelector: async (defaultSelector) => {
126
125
  return reduceAdapters<mongodb.Filter<Filter>>(async (lastSelector, adapter) => {
127
126
  return adapter.transformFilterSelector(await lastSelector);
128
- }, defaultSelector || null);
127
+ }, defaultSelector);
129
128
  },
130
129
  };
131
130
  },
@@ -161,7 +160,7 @@ export const FilterDirector: IFilterDirector = {
161
160
  filter.type === FilterType.SWITCH
162
161
  ? {
163
162
  true: await this.findProductIds(filter, { value: true }, unchainedAPI),
164
- false: await this.findProductIds(filter, { value: false }, unchainedAPI),
163
+ false: await this.findProductIds(filter, { value: { $in: [null, false] } }, unchainedAPI),
165
164
  }
166
165
  : await (filter.options || []).reduce(async (accumulatorPromise, option) => {
167
166
  const accumulator = await accumulatorPromise;
@@ -188,7 +187,7 @@ export const FilterDirector: IFilterDirector = {
188
187
  values,
189
188
  Object.keys(keyToProductIdMap),
190
189
  );
191
- const result = [];
190
+ const result: string[] = [];
192
191
  for (const key of filteredKeys) {
193
192
  const additionalValues = key === undefined ? allProductIds : keyToProductIdMap[key];
194
193
  if (additionalValues) {
@@ -245,7 +244,7 @@ export const FilterDirector: IFilterDirector = {
245
244
  async filterFacets(filter, params, unchainedAPI) {
246
245
  const { allProductIds, searchQuery, forceLiveCollection, otherFilters } = params;
247
246
 
248
- const filterQueryParsed = parseQueryArray(searchQuery?.filterQuery);
247
+ const filterQueryParsed = parseQueryArray(searchQuery.filterQuery);
249
248
 
250
249
  // The examinedProductIdSet is a set of product id's that:
251
250
  // - Fit this filter generally
@@ -21,7 +21,7 @@ export interface EmailTemplateType {
21
21
  }
22
22
 
23
23
  export interface SMSTemplateType {
24
- type: 'SMS';
24
+ type: 'TWILIO' | 'BULKGATE' | 'BUDGETSMS';
25
25
  input: {
26
26
  from: string;
27
27
  to: string;
@@ -4,7 +4,7 @@ import {
4
4
  OrderDiscountConfiguration,
5
5
  } from '../directors/index.js';
6
6
 
7
- export const OrderDiscountAdapter: Omit<
7
+ export const OrderDiscountAdapter = BaseDiscountAdapter as Omit<
8
8
  IDiscountAdapter<OrderDiscountConfiguration>,
9
9
  'key' | 'label' | 'version'
10
- > = BaseDiscountAdapter;
10
+ >;
@@ -20,9 +20,9 @@ export interface OrderPricingAdapterContext extends BasePricingAdapterContext {
20
20
  currencyCode?: string;
21
21
  discounts: OrderDiscount[];
22
22
  order: Order;
23
- orderDelivery: OrderDelivery;
24
23
  orderPositions: OrderPosition[];
25
- orderPayment: OrderPayment;
24
+ orderDelivery: OrderDelivery | null;
25
+ orderPayment: OrderPayment | null;
26
26
  user: User;
27
27
  }
28
28
 
@@ -13,9 +13,9 @@ import { Order, OrderDelivery, OrderPayment, OrderPosition } from '@unchainedsho
13
13
  export interface OrderPricingContext {
14
14
  currencyCode: string;
15
15
  order: Order;
16
- orderDelivery: OrderDelivery;
16
+ orderDelivery: OrderDelivery | null;
17
17
  orderPositions: OrderPosition[];
18
- orderPayment: OrderPayment;
18
+ orderPayment: OrderPayment | null;
19
19
  }
20
20
 
21
21
  export type OrderPricingDiscount = PricingDiscount & {
@@ -61,7 +61,7 @@ export const OrderPricingDirector: IOrderPricingDirector<any> = {
61
61
  orderDelivery: context.orderDelivery,
62
62
  orderPayment: context.orderPayment,
63
63
  orderPositions: context.orderPositions,
64
- user,
64
+ user: user!,
65
65
  };
66
66
  },
67
67
 
@@ -122,7 +122,8 @@ export const OrderPricingSheet = (
122
122
  category: OrderPricingRowCategory.Discounts,
123
123
  discountId: explicitDiscountId,
124
124
  })
125
- .map(({ discountId }) => discountId);
125
+ .map(({ discountId }) => discountId)
126
+ .filter(Boolean) as string[];
126
127
 
127
128
  return [...new Set(discountIds)]
128
129
  .map((discountId) => {
@@ -139,7 +140,7 @@ export const OrderPricingSheet = (
139
140
  currencyCode: basePricingSheet.currencyCode,
140
141
  };
141
142
  })
142
- .filter(Boolean);
143
+ .filter(Boolean) as { discountId: string; amount: number; currencyCode: string }[];
143
144
  },
144
145
  };
145
146
 
@@ -23,11 +23,11 @@ export type PaymentChargeActionResult = ChargeResult & {
23
23
  };
24
24
  export interface IPaymentActions {
25
25
  charge: (transactionContext?: any) => Promise<PaymentChargeActionResult | false>;
26
- configurationError: (transactionContext?: any) => PaymentError;
26
+ configurationError: (transactionContext?: any) => PaymentError | null;
27
27
  isActive: (transactionContext?: any) => boolean;
28
28
  isPayLaterAllowed: (transactionContext?: any) => boolean;
29
29
  register: (transactionContext?: any) => Promise<any>;
30
- sign: (transactionContext?: any) => Promise<string>;
30
+ sign: (transactionContext?: any) => Promise<string | null>;
31
31
  validate: (token?: any) => Promise<boolean>;
32
32
  cancel: (transactionContext?: any) => Promise<boolean>;
33
33
  confirm: (transactionContext?: any) => Promise<boolean>;