@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.
- package/lib/core-index.d.ts +8 -61
- package/lib/core-index.d.ts.map +1 -1
- package/lib/core-index.js +9 -140
- package/lib/core-index.js.map +1 -1
- package/lib/directors/BaseDiscountAdapter.d.ts +36 -0
- package/lib/directors/BaseDiscountAdapter.d.ts.map +1 -0
- package/lib/directors/BaseDiscountAdapter.js +48 -0
- package/lib/directors/BaseDiscountAdapter.js.map +1 -0
- package/lib/directors/BaseDiscountDirector.d.ts +15 -0
- package/lib/directors/BaseDiscountDirector.d.ts.map +1 -0
- package/lib/directors/BaseDiscountDirector.js +45 -0
- package/lib/directors/BaseDiscountDirector.js.map +1 -0
- package/lib/directors/BasePricingAdapter.d.ts +34 -0
- package/lib/directors/BasePricingAdapter.d.ts.map +1 -0
- package/lib/directors/BasePricingAdapter.js +25 -0
- package/lib/directors/BasePricingAdapter.js.map +1 -0
- package/lib/directors/BasePricingDirector.d.ts +17 -0
- package/lib/directors/BasePricingDirector.d.ts.map +1 -0
- package/lib/directors/BasePricingDirector.js +70 -0
- package/lib/directors/BasePricingDirector.js.map +1 -0
- package/lib/directors/BasePricingSheet.d.ts +46 -0
- package/lib/directors/BasePricingSheet.d.ts.map +1 -0
- package/lib/directors/BasePricingSheet.js +74 -0
- package/lib/directors/BasePricingSheet.js.map +1 -0
- package/lib/directors/DeliveryAdapter.d.ts +46 -0
- package/lib/directors/DeliveryAdapter.d.ts.map +1 -0
- package/lib/directors/DeliveryAdapter.js +50 -0
- package/lib/directors/DeliveryAdapter.js.map +1 -0
- package/lib/directors/DeliveryDirector.d.ts +15 -0
- package/lib/directors/DeliveryDirector.d.ts.map +1 -0
- package/lib/directors/DeliveryDirector.js +96 -0
- package/lib/directors/DeliveryDirector.js.map +1 -0
- package/lib/directors/DeliveryPricingAdapter.d.ts +49 -0
- package/lib/directors/DeliveryPricingAdapter.d.ts.map +1 -0
- package/lib/directors/DeliveryPricingAdapter.js +25 -0
- package/lib/directors/DeliveryPricingAdapter.js.map +1 -0
- package/lib/directors/DeliveryPricingDirector.d.ts +20 -0
- package/lib/directors/DeliveryPricingDirector.d.ts.map +1 -0
- package/lib/directors/DeliveryPricingDirector.js +50 -0
- package/lib/directors/DeliveryPricingDirector.js.map +1 -0
- package/lib/directors/DeliveryPricingSheet.d.ts +10 -0
- package/lib/directors/DeliveryPricingSheet.d.ts.map +1 -0
- package/lib/directors/DeliveryPricingSheet.js +75 -0
- package/lib/directors/DeliveryPricingSheet.js.map +1 -0
- package/lib/directors/EnrollmentAdapter.d.ts +27 -0
- package/lib/directors/EnrollmentAdapter.d.ts.map +1 -0
- package/lib/directors/EnrollmentAdapter.js +73 -0
- package/lib/directors/EnrollmentAdapter.js.map +1 -0
- package/lib/directors/EnrollmentDirector.d.ts +14 -0
- package/lib/directors/EnrollmentDirector.d.ts.map +1 -0
- package/lib/directors/EnrollmentDirector.js +44 -0
- package/lib/directors/EnrollmentDirector.js.map +1 -0
- package/lib/directors/FilterAdapter.d.ts +54 -0
- package/lib/directors/FilterAdapter.d.ts.map +1 -0
- package/lib/directors/FilterAdapter.js +38 -0
- package/lib/directors/FilterAdapter.js.map +1 -0
- package/lib/directors/FilterDirector.d.ts +40 -0
- package/lib/directors/FilterDirector.d.ts.map +1 -0
- package/lib/directors/FilterDirector.js +173 -0
- package/lib/directors/FilterDirector.js.map +1 -0
- package/lib/directors/MessagingDirector.d.ts +46 -0
- package/lib/directors/MessagingDirector.d.ts.map +1 -0
- package/lib/directors/MessagingDirector.js +10 -0
- package/lib/directors/MessagingDirector.js.map +1 -0
- package/lib/directors/OrderDiscountAdapter.d.ts +3 -0
- package/lib/directors/OrderDiscountAdapter.d.ts.map +1 -0
- package/lib/directors/OrderDiscountAdapter.js +3 -0
- package/lib/directors/OrderDiscountAdapter.js.map +1 -0
- package/lib/directors/OrderDiscountConfiguration.d.ts +6 -0
- package/lib/directors/OrderDiscountConfiguration.d.ts.map +1 -0
- package/lib/directors/OrderDiscountConfiguration.js +2 -0
- package/lib/directors/OrderDiscountConfiguration.js.map +1 -0
- package/lib/directors/OrderDiscountDirector.d.ts +3 -0
- package/lib/directors/OrderDiscountDirector.d.ts.map +1 -0
- package/lib/directors/OrderDiscountDirector.js +3 -0
- package/lib/directors/OrderDiscountDirector.js.map +1 -0
- package/lib/directors/OrderPricingAdapter.d.ts +18 -0
- package/lib/directors/OrderPricingAdapter.d.ts.map +1 -0
- package/lib/directors/OrderPricingAdapter.js +24 -0
- package/lib/directors/OrderPricingAdapter.js.map +1 -0
- package/lib/directors/OrderPricingDirector.d.ts +18 -0
- package/lib/directors/OrderPricingDirector.d.ts.map +1 -0
- package/lib/directors/OrderPricingDirector.js +31 -0
- package/lib/directors/OrderPricingDirector.js.map +1 -0
- package/lib/directors/OrderPricingSheet.d.ts +37 -0
- package/lib/directors/OrderPricingSheet.d.ts.map +1 -0
- package/lib/directors/OrderPricingSheet.js +108 -0
- package/lib/directors/OrderPricingSheet.js.map +1 -0
- package/lib/directors/PaymentAdapter.d.ts +50 -0
- package/lib/directors/PaymentAdapter.d.ts.map +1 -0
- package/lib/directors/PaymentAdapter.js +55 -0
- package/lib/directors/PaymentAdapter.js.map +1 -0
- package/lib/directors/PaymentDirector.d.ts +21 -0
- package/lib/directors/PaymentDirector.d.ts.map +1 -0
- package/lib/directors/PaymentDirector.js +172 -0
- package/lib/directors/PaymentDirector.js.map +1 -0
- package/lib/directors/PaymentPricingAdapter.d.ts +48 -0
- package/lib/directors/PaymentPricingAdapter.d.ts.map +1 -0
- package/lib/directors/PaymentPricingAdapter.js +25 -0
- package/lib/directors/PaymentPricingAdapter.js.map +1 -0
- package/lib/directors/PaymentPricingDirector.d.ts +18 -0
- package/lib/directors/PaymentPricingDirector.d.ts.map +1 -0
- package/lib/directors/PaymentPricingDirector.js +51 -0
- package/lib/directors/PaymentPricingDirector.js.map +1 -0
- package/lib/directors/PaymentPricingSheet.d.ts +9 -0
- package/lib/directors/PaymentPricingSheet.d.ts.map +1 -0
- package/lib/directors/PaymentPricingSheet.js +75 -0
- package/lib/directors/PaymentPricingSheet.js.map +1 -0
- package/lib/directors/ProductDiscountAdapter.d.ts +3 -0
- package/lib/directors/ProductDiscountAdapter.d.ts.map +1 -0
- package/lib/directors/ProductDiscountAdapter.js +3 -0
- package/lib/directors/ProductDiscountAdapter.js.map +1 -0
- package/lib/directors/ProductDiscountConfiguration.d.ts +13 -0
- package/lib/directors/ProductDiscountConfiguration.d.ts.map +1 -0
- package/lib/directors/ProductDiscountConfiguration.js +2 -0
- package/lib/directors/ProductDiscountConfiguration.js.map +1 -0
- package/lib/directors/ProductDiscountDirector.d.ts +3 -0
- package/lib/directors/ProductDiscountDirector.d.ts.map +1 -0
- package/lib/directors/ProductDiscountDirector.js +3 -0
- package/lib/directors/ProductDiscountDirector.js.map +1 -0
- package/lib/directors/ProductPricingAdapter.d.ts +19 -0
- package/lib/directors/ProductPricingAdapter.d.ts.map +1 -0
- package/lib/directors/ProductPricingAdapter.js +24 -0
- package/lib/directors/ProductPricingAdapter.js.map +1 -0
- package/lib/directors/ProductPricingDirector.d.ts +21 -0
- package/lib/directors/ProductPricingDirector.d.ts.map +1 -0
- package/lib/directors/ProductPricingDirector.js +52 -0
- package/lib/directors/ProductPricingDirector.js.map +1 -0
- package/lib/directors/ProductPricingSheet.d.ts +35 -0
- package/lib/directors/ProductPricingSheet.d.ts.map +1 -0
- package/lib/directors/ProductPricingSheet.js +83 -0
- package/lib/directors/ProductPricingSheet.js.map +1 -0
- package/lib/directors/QuotationAdapter.d.ts +28 -0
- package/lib/directors/QuotationAdapter.d.ts.map +1 -0
- package/lib/directors/QuotationAdapter.js +46 -0
- package/lib/directors/QuotationAdapter.js.map +1 -0
- package/lib/directors/QuotationDirector.d.ts +7 -0
- package/lib/directors/QuotationDirector.d.ts.map +1 -0
- package/lib/directors/QuotationDirector.js +84 -0
- package/lib/directors/QuotationDirector.js.map +1 -0
- package/lib/directors/WarehousingAdapter.d.ts +40 -0
- package/lib/directors/WarehousingAdapter.d.ts.map +1 -0
- package/lib/directors/WarehousingAdapter.js +32 -0
- package/lib/directors/WarehousingAdapter.js.map +1 -0
- package/lib/directors/WarehousingDirector.d.ts +41 -0
- package/lib/directors/WarehousingDirector.d.ts.map +1 -0
- package/lib/directors/WarehousingDirector.js +169 -0
- package/lib/directors/WarehousingDirector.js.map +1 -0
- package/lib/directors/WorkerAdapter.d.ts +17 -0
- package/lib/directors/WorkerAdapter.d.ts.map +1 -0
- package/lib/directors/WorkerAdapter.js +11 -0
- package/lib/directors/WorkerAdapter.js.map +1 -0
- package/lib/directors/WorkerDirector.d.ts +26 -0
- package/lib/directors/WorkerDirector.d.ts.map +1 -0
- package/lib/directors/WorkerDirector.js +102 -0
- package/lib/directors/WorkerDirector.js.map +1 -0
- package/lib/directors/index.d.ts +39 -0
- package/lib/directors/index.d.ts.map +1 -0
- package/lib/directors/index.js +39 -0
- package/lib/directors/index.js.map +1 -0
- package/lib/modules.d.ts +59 -0
- package/lib/modules.d.ts.map +1 -0
- package/lib/modules.js +126 -0
- package/lib/modules.js.map +1 -0
- package/lib/services/activateEnrollment.d.ts +4 -0
- package/lib/services/activateEnrollment.d.ts.map +1 -0
- package/lib/services/activateEnrollment.js +25 -0
- package/lib/services/activateEnrollment.js.map +1 -0
- package/lib/services/calculateDiscountTotal.d.ts +7 -0
- package/lib/services/calculateDiscountTotal.d.ts.map +1 -0
- package/lib/services/calculateDiscountTotal.js +49 -0
- package/lib/services/calculateDiscountTotal.js.map +1 -0
- package/lib/services/checkoutOrder.d.ts +9 -0
- package/lib/services/checkoutOrder.d.ts.map +1 -0
- package/lib/services/checkoutOrder.js +28 -0
- package/lib/services/checkoutOrder.js.map +1 -0
- package/lib/services/confirmOrder.d.ts +9 -0
- package/lib/services/confirmOrder.d.ts.map +1 -0
- package/lib/services/confirmOrder.js +17 -0
- package/lib/services/confirmOrder.js.map +1 -0
- package/lib/services/createDownloadStream.d.ts +5 -0
- package/lib/services/createDownloadStream.d.ts.map +1 -0
- package/lib/services/createDownloadStream.js +8 -0
- package/lib/services/createDownloadStream.js.map +1 -0
- package/lib/services/createEnrollmentFromCheckout.d.ts +15 -0
- package/lib/services/createEnrollmentFromCheckout.d.ts.map +1 -0
- package/lib/services/createEnrollmentFromCheckout.js +40 -0
- package/lib/services/createEnrollmentFromCheckout.js.map +1 -0
- package/lib/services/createManualOrderDiscount.d.ts +7 -0
- package/lib/services/createManualOrderDiscount.d.ts.map +1 -0
- package/lib/services/createManualOrderDiscount.js +47 -0
- package/lib/services/createManualOrderDiscount.js.map +1 -0
- package/lib/services/createSignedURL.d.ts +8 -0
- package/lib/services/createSignedURL.d.ts.map +1 -0
- package/lib/services/createSignedURL.js +15 -0
- package/lib/services/createSignedURL.js.map +1 -0
- package/lib/services/deleteUser.d.ts +5 -0
- package/lib/services/deleteUser.d.ts.map +1 -0
- package/lib/services/deleteUser.js +26 -0
- package/lib/services/deleteUser.js.map +1 -0
- package/lib/services/discountedEntities.d.ts +5 -0
- package/lib/services/discountedEntities.d.ts.map +1 -0
- package/lib/services/discountedEntities.js +61 -0
- package/lib/services/discountedEntities.js.map +1 -0
- package/lib/services/ercMetadata.d.ts +7 -0
- package/lib/services/ercMetadata.d.ts.map +1 -0
- package/lib/services/ercMetadata.js +22 -0
- package/lib/services/ercMetadata.js.map +1 -0
- package/lib/services/findOrInitCart.d.ts +9 -0
- package/lib/services/findOrInitCart.d.ts.map +1 -0
- package/lib/services/findOrInitCart.js +15 -0
- package/lib/services/findOrInitCart.js.map +1 -0
- package/lib/services/fullfillQuotation.d.ts +4 -0
- package/lib/services/fullfillQuotation.d.ts.map +1 -0
- package/lib/services/fullfillQuotation.js +12 -0
- package/lib/services/fullfillQuotation.js.map +1 -0
- package/lib/services/index.d.ts +118 -0
- package/lib/services/index.d.ts.map +1 -0
- package/lib/services/index.js +132 -0
- package/lib/services/index.js.map +1 -0
- package/lib/services/initCartProviders.d.ts +4 -0
- package/lib/services/initCartProviders.d.ts.map +1 -0
- package/lib/services/initCartProviders.js +55 -0
- package/lib/services/initCartProviders.js.map +1 -0
- package/lib/services/initializeEnrollment.d.ts +7 -0
- package/lib/services/initializeEnrollment.d.ts.map +1 -0
- package/lib/services/initializeEnrollment.js +28 -0
- package/lib/services/initializeEnrollment.js.map +1 -0
- package/lib/services/invalidateFilterCache.d.ts +3 -0
- package/lib/services/invalidateFilterCache.d.ts.map +1 -0
- package/lib/services/invalidateFilterCache.js +12 -0
- package/lib/services/invalidateFilterCache.js.map +1 -0
- package/lib/services/linkFileService.d.ts +7 -0
- package/lib/services/linkFileService.d.ts.map +1 -0
- package/lib/services/linkFileService.js +18 -0
- package/lib/services/linkFileService.js.map +1 -0
- package/lib/services/loadFilterOptions.d.ts +14 -0
- package/lib/services/loadFilterOptions.d.ts.map +1 -0
- package/lib/services/loadFilterOptions.js +29 -0
- package/lib/services/loadFilterOptions.js.map +1 -0
- package/lib/services/loadFilters.d.ts +14 -0
- package/lib/services/loadFilters.d.ts.map +1 -0
- package/lib/services/loadFilters.js +36 -0
- package/lib/services/loadFilters.js.map +1 -0
- package/lib/services/migrateBookmarks.d.ts +8 -0
- package/lib/services/migrateBookmarks.d.ts.map +1 -0
- package/lib/services/migrateBookmarks.js +26 -0
- package/lib/services/migrateBookmarks.js.map +1 -0
- package/lib/services/migrateOrderCart.d.ts +8 -0
- package/lib/services/migrateOrderCart.d.ts.map +1 -0
- package/lib/services/migrateOrderCart.js +32 -0
- package/lib/services/migrateOrderCart.js.map +1 -0
- package/lib/services/migrateUserData.d.ts +2 -0
- package/lib/services/migrateUserData.d.ts.map +1 -0
- package/lib/services/migrateUserData.js +20 -0
- package/lib/services/migrateUserData.js.map +1 -0
- package/lib/services/nextUserCart.d.ts +9 -0
- package/lib/services/nextUserCart.d.ts.map +1 -0
- package/lib/services/nextUserCart.js +34 -0
- package/lib/services/nextUserCart.js.map +1 -0
- package/lib/services/processEnrollment.d.ts +4 -0
- package/lib/services/processEnrollment.d.ts.map +1 -0
- package/lib/services/processEnrollment.js +33 -0
- package/lib/services/processEnrollment.js.map +1 -0
- package/lib/services/processOrder.d.ts +9 -0
- package/lib/services/processOrder.d.ts.map +1 -0
- package/lib/services/processOrder.js +161 -0
- package/lib/services/processOrder.js.map +1 -0
- package/lib/services/processQuotation.d.ts +6 -0
- package/lib/services/processQuotation.d.ts.map +1 -0
- package/lib/services/processQuotation.js +60 -0
- package/lib/services/processQuotation.js.map +1 -0
- package/lib/services/proposeQuotation.d.ts +6 -0
- package/lib/services/proposeQuotation.d.ts.map +1 -0
- package/lib/services/proposeQuotation.js +12 -0
- package/lib/services/proposeQuotation.js.map +1 -0
- package/lib/services/registerPaymentCredentials.d.ts +5 -0
- package/lib/services/registerPaymentCredentials.d.ts.map +1 -0
- package/lib/services/registerPaymentCredentials.js +21 -0
- package/lib/services/registerPaymentCredentials.js.map +1 -0
- package/lib/services/rejectOrder.d.ts +9 -0
- package/lib/services/rejectOrder.d.ts.map +1 -0
- package/lib/services/rejectOrder.js +17 -0
- package/lib/services/rejectOrder.js.map +1 -0
- package/lib/services/rejectQuotation.d.ts +6 -0
- package/lib/services/rejectQuotation.d.ts.map +1 -0
- package/lib/services/rejectQuotation.js +12 -0
- package/lib/services/rejectQuotation.js.map +1 -0
- package/lib/services/removeFiles.d.ts +5 -0
- package/lib/services/removeFiles.d.ts.map +1 -0
- package/lib/services/removeFiles.js +19 -0
- package/lib/services/removeFiles.js.map +1 -0
- package/lib/services/removeProduct.d.ts +5 -0
- package/lib/services/removeProduct.d.ts.map +1 -0
- package/lib/services/removeProduct.js +26 -0
- package/lib/services/removeProduct.js.map +1 -0
- package/lib/services/searchAssortments.d.ts +19 -0
- package/lib/services/searchAssortments.d.ts.map +1 -0
- package/lib/services/searchAssortments.js +33 -0
- package/lib/services/searchAssortments.js.map +1 -0
- package/lib/services/searchProducts.d.ts +16 -0
- package/lib/services/searchProducts.d.ts.map +1 -0
- package/lib/services/searchProducts.js +41 -0
- package/lib/services/searchProducts.js.map +1 -0
- package/lib/services/simulateProductDispatching.d.ts +15 -0
- package/lib/services/simulateProductDispatching.d.ts.map +1 -0
- package/lib/services/simulateProductDispatching.js +30 -0
- package/lib/services/simulateProductDispatching.js.map +1 -0
- package/lib/services/simulateProductInventory.d.ts +15 -0
- package/lib/services/simulateProductInventory.d.ts.map +1 -0
- package/lib/services/simulateProductInventory.js +29 -0
- package/lib/services/simulateProductInventory.js.map +1 -0
- package/lib/services/simulateProductPricing.d.ts +12 -0
- package/lib/services/simulateProductPricing.d.ts.map +1 -0
- package/lib/services/simulateProductPricing.js +8 -0
- package/lib/services/simulateProductPricing.js.map +1 -0
- package/lib/services/supportedDeliveryProviders.d.ts +5 -0
- package/lib/services/supportedDeliveryProviders.d.ts.map +1 -0
- package/lib/services/supportedDeliveryProviders.js +14 -0
- package/lib/services/supportedDeliveryProviders.js.map +1 -0
- package/lib/services/supportedPaymentProviders.d.ts +5 -0
- package/lib/services/supportedPaymentProviders.d.ts.map +1 -0
- package/lib/services/supportedPaymentProviders.js +14 -0
- package/lib/services/supportedPaymentProviders.js.map +1 -0
- package/lib/services/supportedWarehousingProviders.d.ts +5 -0
- package/lib/services/supportedWarehousingProviders.d.ts.map +1 -0
- package/lib/services/supportedWarehousingProviders.js +10 -0
- package/lib/services/supportedWarehousingProviders.js.map +1 -0
- package/lib/services/terminateEnrollment.d.ts +3 -0
- package/lib/services/terminateEnrollment.d.ts.map +1 -0
- package/lib/services/terminateEnrollment.js +25 -0
- package/lib/services/terminateEnrollment.js.map +1 -0
- package/lib/services/updateCalculation.d.ts +3 -0
- package/lib/services/updateCalculation.d.ts.map +1 -0
- package/lib/services/updateCalculation.js +101 -0
- package/lib/services/updateCalculation.js.map +1 -0
- package/lib/services/updateScheduling.d.ts +8 -0
- package/lib/services/updateScheduling.d.ts.map +1 -0
- package/lib/services/updateScheduling.js +42 -0
- package/lib/services/updateScheduling.js.map +1 -0
- package/lib/services/updateUserAvatarAfterUpload.d.ts +6 -0
- package/lib/services/updateUserAvatarAfterUpload.d.ts.map +1 -0
- package/lib/services/updateUserAvatarAfterUpload.js +25 -0
- package/lib/services/updateUserAvatarAfterUpload.js.map +1 -0
- package/lib/services/uploadFileFromStream.d.ts +8 -0
- package/lib/services/uploadFileFromStream.d.ts.map +1 -0
- package/lib/services/uploadFileFromStream.js +11 -0
- package/lib/services/uploadFileFromStream.js.map +1 -0
- package/lib/services/uploadFileFromURL.d.ts +13 -0
- package/lib/services/uploadFileFromURL.d.ts.map +1 -0
- package/lib/services/uploadFileFromURL.js +11 -0
- package/lib/services/uploadFileFromURL.js.map +1 -0
- package/lib/services/validateOrder.d.ts +4 -0
- package/lib/services/validateOrder.d.ts.map +1 -0
- package/lib/services/validateOrder.js +45 -0
- package/lib/services/validateOrder.js.map +1 -0
- package/lib/services/verifyQuotation.d.ts +6 -0
- package/lib/services/verifyQuotation.d.ts.map +1 -0
- package/lib/services/verifyQuotation.js +12 -0
- package/lib/services/verifyQuotation.js.map +1 -0
- package/package.json +30 -29
- package/src/core-index.ts +14 -241
- package/src/directors/BaseDiscountAdapter.test.ts +49 -0
- package/src/directors/BaseDiscountAdapter.ts +90 -0
- package/src/directors/BaseDiscountDirector.ts +73 -0
- package/src/directors/BasePricingAdapter.ts +80 -0
- package/src/directors/BasePricingDirector.ts +137 -0
- package/src/directors/BasePricingSheet.test.ts +43 -0
- package/src/directors/BasePricingSheet.ts +140 -0
- package/src/directors/DeliveryAdapter.ts +110 -0
- package/src/directors/DeliveryDirector.ts +135 -0
- package/src/directors/DeliveryPricingAdapter.ts +87 -0
- package/src/directors/DeliveryPricingDirector.ts +92 -0
- package/src/directors/DeliveryPricingSheet.ts +86 -0
- package/src/directors/EnrollmentAdapter.ts +113 -0
- package/src/directors/EnrollmentDirector.ts +70 -0
- package/src/directors/FilterAdapter.ts +103 -0
- package/src/directors/FilterDirector.ts +309 -0
- package/src/directors/MessagingDirector.test.ts +5 -0
- package/src/directors/MessagingDirector.ts +59 -0
- package/src/directors/OrderDiscountAdapter.ts +10 -0
- package/src/directors/OrderDiscountConfiguration.ts +5 -0
- package/src/directors/OrderDiscountDirector.ts +5 -0
- package/src/directors/OrderPricingAdapter.ts +63 -0
- package/src/directors/OrderPricingDirector.ts +74 -0
- package/src/directors/OrderPricingSheet.ts +147 -0
- package/src/directors/PaymentAdapter.ts +118 -0
- package/src/directors/PaymentDirector.ts +275 -0
- package/src/directors/PaymentPricingAdapter.ts +86 -0
- package/src/directors/PaymentPricingDirector.ts +94 -0
- package/src/directors/PaymentPricingSheet.ts +91 -0
- package/src/directors/ProductDiscountAdapter.ts +10 -0
- package/src/directors/ProductDiscountConfiguration.ts +18 -0
- package/src/directors/ProductDiscountDirector.ts +4 -0
- package/src/directors/ProductPricingAdapter.ts +58 -0
- package/src/directors/ProductPricingDirector.ts +100 -0
- package/src/directors/ProductPricingSheet.test.ts +129 -0
- package/src/directors/ProductPricingSheet.ts +124 -0
- package/src/directors/QuotationAdapter.ts +86 -0
- package/src/directors/QuotationDirector.ts +105 -0
- package/src/directors/WarehousingAdapter.ts +83 -0
- package/src/directors/WarehousingDirector.ts +236 -0
- package/src/directors/WorkerAdapter.ts +30 -0
- package/src/directors/WorkerDirector.ts +154 -0
- package/src/directors/index.ts +49 -0
- package/src/directors/periodForReferenceDate.test.ts +23 -0
- package/src/modules.ts +208 -0
- package/src/services/activateEnrollment.ts +30 -0
- package/src/services/calculateDiscountTotal.ts +71 -0
- package/src/services/checkoutOrder.ts +43 -0
- package/src/services/confirmOrder.ts +26 -0
- package/src/services/createDownloadStream.ts +16 -0
- package/src/services/createEnrollmentFromCheckout.ts +66 -0
- package/src/services/createManualOrderDiscount.ts +56 -0
- package/src/services/createSignedURL.ts +20 -0
- package/src/services/deleteUser.ts +33 -0
- package/src/services/discountedEntities.ts +81 -0
- package/src/services/ercMetadata.ts +33 -0
- package/src/services/findOrInitCart.ts +29 -0
- package/src/services/fullfillQuotation.ts +14 -0
- package/src/services/index.ts +168 -0
- package/src/services/initCartProviders.ts +86 -0
- package/src/services/initializeEnrollment.ts +38 -0
- package/src/services/invalidateFilterCache.ts +16 -0
- package/src/services/linkFileService.ts +22 -0
- package/src/services/loadFilterOptions.ts +49 -0
- package/src/services/loadFilters.ts +52 -0
- package/src/services/migrateBookmarks.ts +39 -0
- package/src/services/migrateOrderCart.ts +52 -0
- package/src/services/migrateUserData.ts +22 -0
- package/src/services/nextUserCart.ts +52 -0
- package/src/services/processEnrollment.ts +37 -0
- package/src/services/processOrder.ts +241 -0
- package/src/services/processQuotation.ts +75 -0
- package/src/services/proposeQuotation.ts +18 -0
- package/src/services/registerPaymentCredentials.ts +30 -0
- package/src/services/rejectOrder.ts +26 -0
- package/src/services/rejectQuotation.ts +18 -0
- package/src/services/removeFiles.ts +25 -0
- package/src/services/removeProduct.ts +34 -0
- package/src/services/searchAssortments.ts +58 -0
- package/src/services/searchProducts.ts +73 -0
- package/src/services/simulateProductDispatching.ts +59 -0
- package/src/services/simulateProductInventory.ts +56 -0
- package/src/services/simulateProductPricing.ts +20 -0
- package/src/services/supportedDeliveryProviders.ts +24 -0
- package/src/services/supportedPaymentProviders.ts +25 -0
- package/src/services/supportedWarehousingProviders.ts +18 -0
- package/src/services/terminateEnrollment.ts +29 -0
- package/src/services/updateCalculation.ts +143 -0
- package/src/services/updateScheduling.ts +64 -0
- package/src/services/updateUserAvatarAfterUpload.ts +30 -0
- package/src/services/uploadFileFromStream.ts +15 -0
- package/src/services/uploadFileFromURL.ts +29 -0
- package/src/services/validateOrder.ts +53 -0
- package/src/services/verifyQuotation.ts +18 -0
- package/tsconfig.json +5 -7
- package/lib/types.d.ts +0 -4
- package/lib/types.d.ts.map +0 -1
- package/lib/types.js +0 -5
- package/lib/types.js.map +0 -1
- 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
|
+
}
|