@unchainedshop/core 4.0.0-rc.8 → 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.
- package/lib/bulk-importer/createBulkImporter.d.ts +84 -0
- package/lib/bulk-importer/createBulkImporter.d.ts.map +1 -0
- package/lib/bulk-importer/createBulkImporter.js +142 -0
- package/lib/bulk-importer/createBulkImporter.js.map +1 -0
- package/lib/bulk-importer/handlers/assortment/create.d.ts +565 -0
- package/lib/bulk-importer/handlers/assortment/create.d.ts.map +1 -0
- package/lib/bulk-importer/handlers/assortment/create.js +89 -0
- package/lib/bulk-importer/handlers/assortment/create.js.map +1 -0
- package/lib/bulk-importer/handlers/assortment/index.d.ts +4 -0
- package/lib/bulk-importer/handlers/assortment/index.d.ts.map +1 -0
- package/lib/bulk-importer/handlers/assortment/index.js +4 -0
- package/lib/bulk-importer/handlers/assortment/index.js.map +1 -0
- package/lib/bulk-importer/handlers/assortment/remove.d.ts +30 -0
- package/lib/bulk-importer/handlers/assortment/remove.d.ts.map +1 -0
- package/lib/bulk-importer/handlers/assortment/remove.js +18 -0
- package/lib/bulk-importer/handlers/assortment/remove.js.map +1 -0
- package/lib/bulk-importer/handlers/assortment/update.d.ts +566 -0
- package/lib/bulk-importer/handlers/assortment/update.d.ts.map +1 -0
- package/lib/bulk-importer/handlers/assortment/update.js +98 -0
- package/lib/bulk-importer/handlers/assortment/update.js.map +1 -0
- package/lib/bulk-importer/handlers/assortment/upsertAssortmentChildren.d.ts +29 -0
- package/lib/bulk-importer/handlers/assortment/upsertAssortmentChildren.d.ts.map +1 -0
- package/lib/bulk-importer/handlers/assortment/upsertAssortmentChildren.js +45 -0
- package/lib/bulk-importer/handlers/assortment/upsertAssortmentChildren.js.map +1 -0
- package/lib/bulk-importer/handlers/assortment/upsertAssortmentFilters.d.ts +29 -0
- package/lib/bulk-importer/handlers/assortment/upsertAssortmentFilters.d.ts.map +1 -0
- package/lib/bulk-importer/handlers/assortment/upsertAssortmentFilters.js +41 -0
- package/lib/bulk-importer/handlers/assortment/upsertAssortmentFilters.js.map +1 -0
- package/lib/bulk-importer/handlers/assortment/upsertAssortmentProducts.d.ts +29 -0
- package/lib/bulk-importer/handlers/assortment/upsertAssortmentProducts.d.ts.map +1 -0
- package/lib/bulk-importer/handlers/assortment/upsertAssortmentProducts.js +46 -0
- package/lib/bulk-importer/handlers/assortment/upsertAssortmentProducts.js.map +1 -0
- package/lib/bulk-importer/handlers/assortment/upsertMedia.d.ts +76 -0
- package/lib/bulk-importer/handlers/assortment/upsertMedia.d.ts.map +1 -0
- package/lib/bulk-importer/handlers/assortment/upsertMedia.js +53 -0
- package/lib/bulk-importer/handlers/assortment/upsertMedia.js.map +1 -0
- package/lib/bulk-importer/handlers/filter/create.d.ts +138 -0
- package/lib/bulk-importer/handlers/filter/create.d.ts.map +1 -0
- package/lib/bulk-importer/handlers/filter/create.js +80 -0
- package/lib/bulk-importer/handlers/filter/create.js.map +1 -0
- package/lib/bulk-importer/handlers/filter/index.d.ts +4 -0
- package/lib/bulk-importer/handlers/filter/index.d.ts.map +1 -0
- package/lib/bulk-importer/handlers/filter/index.js +4 -0
- package/lib/bulk-importer/handlers/filter/index.js.map +1 -0
- package/lib/bulk-importer/handlers/filter/remove.d.ts +20 -0
- package/lib/bulk-importer/handlers/filter/remove.d.ts.map +1 -0
- package/lib/bulk-importer/handlers/filter/remove.js +18 -0
- package/lib/bulk-importer/handlers/filter/remove.js.map +1 -0
- package/lib/bulk-importer/handlers/filter/update.d.ts +138 -0
- package/lib/bulk-importer/handlers/filter/update.d.ts.map +1 -0
- package/lib/bulk-importer/handlers/filter/update.js +70 -0
- package/lib/bulk-importer/handlers/filter/update.js.map +1 -0
- package/lib/bulk-importer/handlers/product/create.d.ts +1330 -0
- package/lib/bulk-importer/handlers/product/create.d.ts.map +1 -0
- package/lib/bulk-importer/handlers/product/create.js +132 -0
- package/lib/bulk-importer/handlers/product/create.js.map +1 -0
- package/lib/bulk-importer/handlers/product/index.d.ts +4 -0
- package/lib/bulk-importer/handlers/product/index.d.ts.map +1 -0
- package/lib/bulk-importer/handlers/product/index.js +4 -0
- package/lib/bulk-importer/handlers/product/index.js.map +1 -0
- package/lib/bulk-importer/handlers/product/remove.d.ts +32 -0
- package/lib/bulk-importer/handlers/product/remove.d.ts.map +1 -0
- package/lib/bulk-importer/handlers/product/remove.js +18 -0
- package/lib/bulk-importer/handlers/product/remove.js.map +1 -0
- package/lib/bulk-importer/handlers/product/update.d.ts +1330 -0
- package/lib/bulk-importer/handlers/product/update.d.ts.map +1 -0
- package/lib/bulk-importer/handlers/product/update.js +132 -0
- package/lib/bulk-importer/handlers/product/update.js.map +1 -0
- package/lib/bulk-importer/handlers/product/upsertMedia.d.ts +75 -0
- package/lib/bulk-importer/handlers/product/upsertMedia.d.ts.map +1 -0
- package/lib/bulk-importer/handlers/product/upsertMedia.js +59 -0
- package/lib/bulk-importer/handlers/product/upsertMedia.js.map +1 -0
- package/lib/bulk-importer/handlers/product/upsertVariations.d.ts +79 -0
- package/lib/bulk-importer/handlers/product/upsertVariations.d.ts.map +1 -0
- package/lib/bulk-importer/handlers/product/upsertVariations.js +72 -0
- package/lib/bulk-importer/handlers/product/upsertVariations.js.map +1 -0
- package/lib/bulk-importer/handlers/utils/convertTagsToLowerCase.d.ts +3 -0
- package/lib/bulk-importer/handlers/utils/convertTagsToLowerCase.d.ts.map +1 -0
- package/lib/bulk-importer/handlers/utils/convertTagsToLowerCase.js +6 -0
- package/lib/bulk-importer/handlers/utils/convertTagsToLowerCase.js.map +1 -0
- package/lib/bulk-importer/index.d.ts +4 -0
- package/lib/bulk-importer/index.d.ts.map +1 -0
- package/lib/bulk-importer/index.js +4 -0
- package/lib/bulk-importer/index.js.map +1 -0
- package/lib/bulk-importer/upsertAsset.d.ts +28 -0
- package/lib/bulk-importer/upsertAsset.d.ts.map +1 -0
- package/lib/bulk-importer/upsertAsset.js +41 -0
- package/lib/bulk-importer/upsertAsset.js.map +1 -0
- package/lib/core-index.d.ts +9 -6
- package/lib/core-index.d.ts.map +1 -1
- package/lib/core-index.js +5 -1
- package/lib/core-index.js.map +1 -1
- package/lib/directors/BaseDiscountAdapter.d.ts +4 -4
- package/lib/directors/BaseDiscountAdapter.d.ts.map +1 -1
- package/lib/directors/BaseDiscountAdapter.js +1 -1
- package/lib/directors/BaseDiscountAdapter.js.map +1 -1
- package/lib/directors/BaseDiscountDirector.d.ts +1 -1
- package/lib/directors/BaseDiscountDirector.d.ts.map +1 -1
- package/lib/directors/BaseDiscountDirector.js +1 -1
- package/lib/directors/BaseDiscountDirector.js.map +1 -1
- package/lib/directors/BasePricingAdapter.d.ts +2 -2
- package/lib/directors/BasePricingAdapter.d.ts.map +1 -1
- package/lib/directors/BasePricingDirector.d.ts.map +1 -1
- package/lib/directors/BasePricingDirector.js +3 -3
- package/lib/directors/BasePricingDirector.js.map +1 -1
- package/lib/directors/BasePricingSheet.js.map +1 -1
- package/lib/directors/BaseWorker.js +1 -1
- package/lib/directors/BaseWorker.js.map +1 -1
- package/lib/directors/DeliveryAdapter.d.ts +4 -5
- package/lib/directors/DeliveryAdapter.d.ts.map +1 -1
- package/lib/directors/DeliveryAdapter.js.map +1 -1
- package/lib/directors/DeliveryDirector.d.ts +3 -3
- package/lib/directors/DeliveryDirector.d.ts.map +1 -1
- package/lib/directors/DeliveryDirector.js +29 -16
- package/lib/directors/DeliveryDirector.js.map +1 -1
- package/lib/directors/DeliveryPricingAdapter.d.ts +1 -1
- package/lib/directors/DeliveryPricingAdapter.d.ts.map +1 -1
- package/lib/directors/DeliveryPricingDirector.d.ts.map +1 -1
- package/lib/directors/DeliveryPricingDirector.js +3 -4
- package/lib/directors/DeliveryPricingDirector.js.map +1 -1
- package/lib/directors/DeliveryPricingSheet.d.ts.map +1 -1
- package/lib/directors/DeliveryPricingSheet.js +2 -1
- package/lib/directors/DeliveryPricingSheet.js.map +1 -1
- package/lib/directors/EnrollmentAdapter.d.ts +7 -4
- package/lib/directors/EnrollmentAdapter.d.ts.map +1 -1
- package/lib/directors/EnrollmentAdapter.js +1 -4
- package/lib/directors/EnrollmentAdapter.js.map +1 -1
- package/lib/directors/EnrollmentDirector.d.ts +1 -1
- package/lib/directors/EnrollmentDirector.d.ts.map +1 -1
- package/lib/directors/EnrollmentDirector.js +1 -5
- package/lib/directors/EnrollmentDirector.js.map +1 -1
- package/lib/directors/FilterAdapter.d.ts +3 -3
- package/lib/directors/FilterAdapter.d.ts.map +1 -1
- package/lib/directors/FilterDirector.d.ts +1 -1
- package/lib/directors/FilterDirector.d.ts.map +1 -1
- package/lib/directors/FilterDirector.js +7 -8
- package/lib/directors/FilterDirector.js.map +1 -1
- package/lib/directors/MessagingDirector.d.ts +2 -2
- package/lib/directors/MessagingDirector.d.ts.map +1 -1
- package/lib/directors/OrderDiscountAdapter.d.ts +1 -1
- package/lib/directors/OrderDiscountAdapter.d.ts.map +1 -1
- package/lib/directors/OrderDiscountAdapter.js.map +1 -1
- package/lib/directors/OrderPricingAdapter.d.ts +2 -2
- package/lib/directors/OrderPricingAdapter.d.ts.map +1 -1
- package/lib/directors/OrderPricingDirector.d.ts +2 -2
- package/lib/directors/OrderPricingDirector.d.ts.map +1 -1
- package/lib/directors/OrderPricingDirector.js +1 -1
- package/lib/directors/OrderPricingDirector.js.map +1 -1
- package/lib/directors/OrderPricingSheet.d.ts.map +1 -1
- package/lib/directors/OrderPricingSheet.js +2 -1
- package/lib/directors/OrderPricingSheet.js.map +1 -1
- package/lib/directors/PaymentAdapter.d.ts +2 -2
- package/lib/directors/PaymentAdapter.d.ts.map +1 -1
- package/lib/directors/PaymentDirector.d.ts +4 -4
- package/lib/directors/PaymentDirector.d.ts.map +1 -1
- package/lib/directors/PaymentDirector.js +24 -6
- package/lib/directors/PaymentDirector.js.map +1 -1
- package/lib/directors/PaymentPricingAdapter.d.ts +2 -2
- package/lib/directors/PaymentPricingAdapter.d.ts.map +1 -1
- package/lib/directors/PaymentPricingDirector.d.ts +1 -1
- package/lib/directors/PaymentPricingDirector.d.ts.map +1 -1
- package/lib/directors/PaymentPricingDirector.js +3 -5
- package/lib/directors/PaymentPricingDirector.js.map +1 -1
- package/lib/directors/PaymentPricingSheet.d.ts.map +1 -1
- package/lib/directors/PaymentPricingSheet.js +2 -1
- package/lib/directors/PaymentPricingSheet.js.map +1 -1
- package/lib/directors/ProductDiscountAdapter.d.ts +1 -1
- package/lib/directors/ProductDiscountAdapter.d.ts.map +1 -1
- package/lib/directors/ProductDiscountAdapter.js.map +1 -1
- package/lib/directors/ProductDiscountConfiguration.d.ts +1 -1
- package/lib/directors/ProductDiscountConfiguration.d.ts.map +1 -1
- package/lib/directors/ProductPricingAdapter.d.ts +1 -1
- package/lib/directors/ProductPricingAdapter.d.ts.map +1 -1
- package/lib/directors/ProductPricingDirector.d.ts +2 -2
- package/lib/directors/ProductPricingDirector.d.ts.map +1 -1
- package/lib/directors/ProductPricingDirector.js +3 -3
- package/lib/directors/ProductPricingDirector.js.map +1 -1
- package/lib/directors/ProductPricingSheet.d.ts +2 -2
- package/lib/directors/ProductPricingSheet.d.ts.map +1 -1
- package/lib/directors/ProductPricingSheet.js +2 -1
- package/lib/directors/ProductPricingSheet.js.map +1 -1
- package/lib/directors/QuotationAdapter.d.ts +2 -2
- package/lib/directors/QuotationAdapter.d.ts.map +1 -1
- package/lib/directors/QuotationDirector.js +2 -2
- package/lib/directors/WarehousingAdapter.d.ts +3 -4
- package/lib/directors/WarehousingAdapter.d.ts.map +1 -1
- package/lib/directors/WarehousingAdapter.js.map +1 -1
- package/lib/directors/WarehousingDirector.d.ts +5 -5
- package/lib/directors/WarehousingDirector.d.ts.map +1 -1
- package/lib/directors/WarehousingDirector.js +10 -13
- package/lib/directors/WarehousingDirector.js.map +1 -1
- package/lib/directors/WorkerAdapter.d.ts +3 -2
- package/lib/directors/WorkerAdapter.d.ts.map +1 -1
- package/lib/directors/WorkerAdapter.js +1 -1
- package/lib/directors/WorkerAdapter.js.map +1 -1
- package/lib/directors/WorkerDirector.d.ts +2 -2
- package/lib/directors/WorkerDirector.d.ts.map +1 -1
- package/lib/directors/WorkerDirector.js +2 -3
- package/lib/directors/WorkerDirector.js.map +1 -1
- package/lib/factory/index.d.ts +3 -0
- package/lib/factory/index.d.ts.map +1 -0
- package/lib/factory/index.js +3 -0
- package/lib/factory/index.js.map +1 -0
- package/lib/factory/registerProductDiscoverabilityFilter.d.ts +5 -0
- package/lib/factory/registerProductDiscoverabilityFilter.d.ts.map +1 -0
- package/lib/factory/registerProductDiscoverabilityFilter.js +27 -0
- package/lib/factory/registerProductDiscoverabilityFilter.js.map +1 -0
- package/lib/modules.d.ts +4 -5
- package/lib/modules.d.ts.map +1 -1
- package/lib/modules.js +3 -3
- package/lib/modules.js.map +1 -1
- package/lib/services/activateEnrollment.d.ts.map +1 -1
- package/lib/services/activateEnrollment.js +8 -12
- package/lib/services/activateEnrollment.js.map +1 -1
- package/lib/services/addMessage.d.ts +4 -0
- package/lib/services/addMessage.d.ts.map +1 -0
- package/lib/services/addMessage.js +15 -0
- package/lib/services/addMessage.js.map +1 -0
- package/lib/services/calculateDiscountTotal.js +2 -2
- package/lib/services/calculateDiscountTotal.js.map +1 -1
- package/lib/services/checkoutOrder.d.ts +1 -1
- package/lib/services/checkoutOrder.d.ts.map +1 -1
- package/lib/services/checkoutOrder.js +10 -4
- package/lib/services/checkoutOrder.js.map +1 -1
- package/lib/services/confirmOrder.d.ts +1 -1
- package/lib/services/confirmOrder.d.ts.map +1 -1
- package/lib/services/createDownloadStream.d.ts +1 -1
- package/lib/services/createDownloadStream.d.ts.map +1 -1
- package/lib/services/createDownloadStream.js +2 -0
- package/lib/services/createDownloadStream.js.map +1 -1
- package/lib/services/createEnrollmentFromCheckout.d.ts.map +1 -1
- package/lib/services/createEnrollmentFromCheckout.js +2 -2
- package/lib/services/createEnrollmentFromCheckout.js.map +1 -1
- package/lib/services/createManualOrderDiscount.d.ts +2 -2
- package/lib/services/createManualOrderDiscount.d.ts.map +1 -1
- package/lib/services/createSignedURL.d.ts.map +1 -1
- package/lib/services/createSignedURL.js +2 -0
- package/lib/services/createSignedURL.js.map +1 -1
- package/lib/services/deleteUser.d.ts +1 -1
- package/lib/services/deleteUser.d.ts.map +1 -1
- package/lib/services/deleteUser.js +4 -2
- package/lib/services/deleteUser.js.map +1 -1
- package/lib/services/discountedEntities.js.map +1 -1
- package/lib/services/findOrInitCart.d.ts +1 -2
- package/lib/services/findOrInitCart.d.ts.map +1 -1
- package/lib/services/findOrInitCart.js.map +1 -1
- package/lib/services/fullfillQuotation.d.ts +1 -1
- package/lib/services/fullfillQuotation.d.ts.map +1 -1
- package/lib/services/fullfillQuotation.js.map +1 -1
- package/lib/services/generateOrderFromEnrollment.d.ts +7 -0
- package/lib/services/generateOrderFromEnrollment.d.ts.map +1 -0
- package/lib/services/generateOrderFromEnrollment.js +34 -0
- package/lib/services/generateOrderFromEnrollment.js.map +1 -0
- package/lib/services/index.d.ts +6 -0
- package/lib/services/index.d.ts.map +1 -1
- package/lib/services/index.js +6 -0
- package/lib/services/index.js.map +1 -1
- package/lib/services/initCartProviders.d.ts.map +1 -1
- package/lib/services/initCartProviders.js +6 -2
- package/lib/services/initCartProviders.js.map +1 -1
- package/lib/services/initializeEnrollment.d.ts +1 -1
- package/lib/services/initializeEnrollment.d.ts.map +1 -1
- package/lib/services/initializeEnrollment.js +11 -12
- package/lib/services/initializeEnrollment.js.map +1 -1
- package/lib/services/linkFileService.d.ts +1 -1
- package/lib/services/linkFileService.d.ts.map +1 -1
- package/lib/services/linkFileService.js +3 -1
- package/lib/services/linkFileService.js.map +1 -1
- package/lib/services/loadFilterOptions.d.ts +2 -2
- package/lib/services/loadFilterOptions.d.ts.map +1 -1
- package/lib/services/migrateOrderCart.d.ts +1 -1
- package/lib/services/migrateOrderCart.d.ts.map +1 -1
- package/lib/services/nextUserCart.d.ts +1 -1
- package/lib/services/nextUserCart.d.ts.map +1 -1
- package/lib/services/nextUserCart.js +1 -1
- package/lib/services/nextUserCart.js.map +1 -1
- package/lib/services/processEnrollment.d.ts.map +1 -1
- package/lib/services/processEnrollment.js +13 -5
- package/lib/services/processEnrollment.js.map +1 -1
- package/lib/services/processOrder.d.ts.map +1 -1
- package/lib/services/processOrder.js +30 -30
- package/lib/services/processOrder.js.map +1 -1
- package/lib/services/processQuotation.d.ts.map +1 -1
- package/lib/services/processQuotation.js +10 -14
- package/lib/services/processQuotation.js.map +1 -1
- package/lib/services/proposeQuotation.d.ts +1 -1
- package/lib/services/proposeQuotation.d.ts.map +1 -1
- package/lib/services/proposeQuotation.js +2 -2
- package/lib/services/proposeQuotation.js.map +1 -1
- package/lib/services/registerPaymentCredentials.d.ts +1 -2
- package/lib/services/registerPaymentCredentials.d.ts.map +1 -1
- package/lib/services/registerPaymentCredentials.js +4 -6
- package/lib/services/registerPaymentCredentials.js.map +1 -1
- package/lib/services/rejectOrder.d.ts +1 -1
- package/lib/services/rejectOrder.d.ts.map +1 -1
- package/lib/services/rejectQuotation.d.ts +1 -1
- package/lib/services/rejectQuotation.d.ts.map +1 -1
- package/lib/services/rejectQuotation.js +2 -2
- package/lib/services/rejectQuotation.js.map +1 -1
- package/lib/services/removeFiles.js +2 -2
- package/lib/services/removeFiles.js.map +1 -1
- package/lib/services/removeProduct.d.ts.map +1 -1
- package/lib/services/removeProduct.js +4 -3
- package/lib/services/removeProduct.js.map +1 -1
- package/lib/services/searchAssortments.d.ts.map +1 -1
- package/lib/services/searchAssortments.js +3 -2
- package/lib/services/searchAssortments.js.map +1 -1
- package/lib/services/searchProducts.d.ts.map +1 -1
- package/lib/services/searchProducts.js +3 -2
- package/lib/services/searchProducts.js.map +1 -1
- package/lib/services/simulateProductDispatching.d.ts +1 -1
- package/lib/services/simulateProductDispatching.d.ts.map +1 -1
- package/lib/services/simulateProductInventory.d.ts +1 -1
- package/lib/services/simulateProductInventory.d.ts.map +1 -1
- package/lib/services/simulateProductInventory.js.map +1 -1
- package/lib/services/simulateProductPricing.d.ts +7 -4
- package/lib/services/simulateProductPricing.d.ts.map +1 -1
- package/lib/services/simulateProductPricing.js.map +1 -1
- package/lib/services/terminateEnrollment.d.ts.map +1 -1
- package/lib/services/terminateEnrollment.js +5 -9
- package/lib/services/terminateEnrollment.js.map +1 -1
- package/lib/services/updateCalculation.d.ts +2 -1
- package/lib/services/updateCalculation.d.ts.map +1 -1
- package/lib/services/updateCalculation.js +20 -12
- package/lib/services/updateCalculation.js.map +1 -1
- package/lib/services/updateScheduling.d.ts +1 -1
- package/lib/services/updateScheduling.d.ts.map +1 -1
- package/lib/services/updateScheduling.js +7 -11
- package/lib/services/updateScheduling.js.map +1 -1
- package/lib/services/updateUserAvatarAfterUpload.d.ts +1 -1
- package/lib/services/updateUserAvatarAfterUpload.d.ts.map +1 -1
- package/lib/services/updateUserAvatarAfterUpload.js.map +1 -1
- package/lib/services/uploadFileFromStream.d.ts.map +1 -1
- package/lib/services/uploadFileFromStream.js +4 -1
- package/lib/services/uploadFileFromStream.js.map +1 -1
- package/lib/services/uploadFileFromURL.d.ts +1 -2
- package/lib/services/uploadFileFromURL.d.ts.map +1 -1
- package/lib/services/uploadFileFromURL.js.map +1 -1
- package/lib/services/validateOrder.d.ts +1 -1
- package/lib/services/validateOrder.d.ts.map +1 -1
- package/lib/services/validateOrder.js +17 -24
- package/lib/services/validateOrder.js.map +1 -1
- package/lib/services/verifyQuotation.d.ts +1 -1
- package/lib/services/verifyQuotation.d.ts.map +1 -1
- package/lib/services/verifyQuotation.js +2 -2
- package/lib/services/verifyQuotation.js.map +1 -1
- package/package.json +21 -20
- package/src/bulk-importer/createBulkImporter.ts +205 -0
- package/src/bulk-importer/handlers/assortment/create.ts +118 -0
- package/src/bulk-importer/handlers/assortment/index.ts +3 -0
- package/src/bulk-importer/handlers/assortment/remove.ts +26 -0
- package/src/bulk-importer/handlers/assortment/update.ts +133 -0
- package/src/bulk-importer/handlers/assortment/upsertAssortmentChildren.ts +77 -0
- package/src/bulk-importer/handlers/assortment/upsertAssortmentFilters.ts +70 -0
- package/src/bulk-importer/handlers/assortment/upsertAssortmentProducts.ts +76 -0
- package/src/bulk-importer/handlers/assortment/upsertMedia.ts +76 -0
- package/src/bulk-importer/handlers/filter/create.ts +104 -0
- package/src/bulk-importer/handlers/filter/index.ts +3 -0
- package/src/bulk-importer/handlers/filter/remove.ts +25 -0
- package/src/bulk-importer/handlers/filter/update.ts +94 -0
- package/src/bulk-importer/handlers/product/create.ts +170 -0
- package/src/bulk-importer/handlers/product/index.ts +3 -0
- package/src/bulk-importer/handlers/product/remove.ts +27 -0
- package/src/bulk-importer/handlers/product/update.ts +175 -0
- package/src/bulk-importer/handlers/product/upsertMedia.ts +81 -0
- package/src/bulk-importer/handlers/product/upsertVariations.ts +110 -0
- package/src/bulk-importer/handlers/utils/convertTagsToLowerCase.ts +4 -0
- package/src/bulk-importer/index.ts +3 -0
- package/src/bulk-importer/upsertAsset.ts +50 -0
- package/src/core-index.ts +10 -7
- package/src/directors/BaseDiscountAdapter.test.ts +1 -1
- package/src/directors/BaseDiscountAdapter.ts +5 -5
- package/src/directors/BaseDiscountDirector.ts +2 -2
- package/src/directors/BasePricingAdapter.ts +2 -2
- package/src/directors/BasePricingDirector.ts +47 -44
- package/src/directors/BasePricingSheet.ts +1 -1
- package/src/directors/BaseWorker.ts +1 -1
- package/src/directors/DeliveryAdapter.ts +3 -5
- package/src/directors/DeliveryDirector.ts +33 -23
- package/src/directors/DeliveryPricingAdapter.ts +1 -1
- package/src/directors/DeliveryPricingDirector.ts +5 -6
- package/src/directors/DeliveryPricingSheet.ts +3 -2
- package/src/directors/EnrollmentAdapter.ts +9 -6
- package/src/directors/EnrollmentDirector.ts +9 -8
- package/src/directors/FilterAdapter.ts +3 -3
- package/src/directors/FilterDirector.ts +11 -12
- package/src/directors/MessagingDirector.ts +1 -1
- package/src/directors/OrderDiscountAdapter.ts +2 -2
- package/src/directors/OrderPricingAdapter.ts +2 -2
- package/src/directors/OrderPricingDirector.ts +3 -3
- package/src/directors/OrderPricingSheet.ts +3 -2
- package/src/directors/PaymentAdapter.ts +2 -2
- package/src/directors/PaymentDirector.ts +34 -10
- package/src/directors/PaymentPricingAdapter.ts +2 -2
- package/src/directors/PaymentPricingDirector.ts +6 -8
- package/src/directors/PaymentPricingSheet.ts +3 -2
- package/src/directors/ProductDiscountAdapter.ts +2 -2
- package/src/directors/ProductDiscountConfiguration.ts +1 -1
- package/src/directors/ProductPricingAdapter.ts +1 -1
- package/src/directors/ProductPricingDirector.ts +7 -7
- package/src/directors/ProductPricingSheet.ts +4 -3
- package/src/directors/QuotationAdapter.ts +2 -2
- package/src/directors/QuotationDirector.ts +2 -2
- package/src/directors/WarehousingAdapter.ts +3 -4
- package/src/directors/WarehousingDirector.ts +20 -23
- package/src/directors/WorkerAdapter.ts +9 -4
- package/src/directors/WorkerDirector.ts +5 -6
- package/src/factory/index.ts +3 -0
- package/src/factory/registerProductDiscoverabilityFilter.ts +36 -0
- package/src/modules.ts +6 -7
- package/src/services/activateEnrollment.ts +9 -13
- package/src/services/addMessage.ts +20 -0
- package/src/services/calculateDiscountTotal.ts +4 -4
- package/src/services/checkoutOrder.ts +10 -5
- package/src/services/createDownloadStream.ts +1 -0
- package/src/services/createEnrollmentFromCheckout.ts +22 -20
- package/src/services/createManualOrderDiscount.ts +2 -2
- package/src/services/createSignedURL.ts +1 -0
- package/src/services/deleteUser.ts +7 -2
- package/src/services/discountedEntities.ts +6 -6
- package/src/services/findOrInitCart.ts +1 -2
- package/src/services/fullfillQuotation.ts +1 -1
- package/src/services/generateOrderFromEnrollment.ts +54 -0
- package/src/services/index.ts +8 -0
- package/src/services/initCartProviders.ts +8 -10
- package/src/services/initializeEnrollment.ts +16 -13
- package/src/services/linkFileService.ts +3 -1
- package/src/services/nextUserCart.ts +1 -1
- package/src/services/processEnrollment.ts +18 -6
- package/src/services/processOrder.ts +37 -36
- package/src/services/processQuotation.ts +10 -14
- package/src/services/proposeQuotation.ts +2 -2
- package/src/services/registerPaymentCredentials.ts +6 -8
- package/src/services/rejectQuotation.ts +2 -2
- package/src/services/removeFiles.ts +2 -2
- package/src/services/removeProduct.ts +5 -3
- package/src/services/searchAssortments.ts +3 -2
- package/src/services/searchProducts.ts +4 -2
- package/src/services/simulateProductDispatching.ts +1 -1
- package/src/services/simulateProductInventory.ts +7 -3
- package/src/services/simulateProductPricing.ts +6 -3
- package/src/services/terminateEnrollment.ts +5 -9
- package/src/services/updateCalculation.ts +37 -20
- package/src/services/updateScheduling.ts +19 -20
- package/src/services/updateUserAvatarAfterUpload.ts +4 -1
- package/src/services/uploadFileFromStream.ts +3 -1
- package/src/services/uploadFileFromURL.ts +2 -2
- package/src/services/validateOrder.ts +34 -38
- 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(
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
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
|
|
98
|
-
|
|
99
|
-
|
|
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
|
-
|
|
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;
|
|
@@ -7,7 +7,6 @@ import type { User } from '@unchainedshop/core-users';
|
|
|
7
7
|
import {
|
|
8
8
|
DeliveryConfiguration,
|
|
9
9
|
DeliveryLocation,
|
|
10
|
-
DeliveryProvider,
|
|
11
10
|
DeliveryProviderType,
|
|
12
11
|
} from '@unchainedshop/core-delivery';
|
|
13
12
|
import { Modules } from '../modules.js';
|
|
@@ -20,18 +19,17 @@ export enum DeliveryError {
|
|
|
20
19
|
}
|
|
21
20
|
|
|
22
21
|
export interface DeliveryAdapterActions {
|
|
23
|
-
configurationError: (transactionContext?: any) => DeliveryError;
|
|
24
|
-
estimatedDeliveryThroughput: (warehousingThroughputTime: number) => Promise<number>;
|
|
22
|
+
configurationError: (transactionContext?: any) => DeliveryError | null;
|
|
23
|
+
estimatedDeliveryThroughput: (warehousingThroughputTime: number) => Promise<number | null>;
|
|
25
24
|
isActive: () => boolean;
|
|
26
25
|
isAutoReleaseAllowed: () => boolean;
|
|
27
|
-
pickUpLocationById: (locationId: string) => Promise<DeliveryLocation>;
|
|
26
|
+
pickUpLocationById: (locationId: string) => Promise<DeliveryLocation | null>;
|
|
28
27
|
pickUpLocations: () => Promise<DeliveryLocation[]>;
|
|
29
28
|
send: () => Promise<boolean | Work>;
|
|
30
29
|
}
|
|
31
30
|
|
|
32
31
|
export interface DeliveryContext {
|
|
33
32
|
countryCode?: string;
|
|
34
|
-
deliveryProvider?: DeliveryProvider;
|
|
35
33
|
order?: Order;
|
|
36
34
|
orderDelivery?: OrderDelivery;
|
|
37
35
|
orderPosition?: OrderPosition;
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
DeliveryError,
|
|
7
7
|
} from './DeliveryAdapter.js';
|
|
8
8
|
import { DeliveryProvider } from '@unchainedshop/core-delivery';
|
|
9
|
-
import {
|
|
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
|
-
|
|
17
|
+
order: Order,
|
|
18
18
|
transactionContext: Record<string, any>,
|
|
19
19
|
unchainedAPI: { modules: Modules },
|
|
20
|
-
) => Promise<
|
|
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
|
|
41
|
+
const adapter = Adapter.actions(deliveryProvider.configuration, context);
|
|
38
42
|
|
|
39
43
|
return {
|
|
40
44
|
configurationError: () => {
|
|
41
|
-
|
|
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
|
|
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
|
-
|
|
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 (
|
|
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) !==
|
|
110
|
+
unchainedAPI.modules.orders.deliveries.normalizedStatus(orderDelivery!) !==
|
|
111
|
+
OrderDeliveryStatus.OPEN
|
|
99
112
|
)
|
|
100
|
-
return
|
|
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
|
|
116
|
+
deliveryProviderId: orderDelivery!.deliveryProviderId,
|
|
105
117
|
});
|
|
106
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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<
|
|
13
|
+
doc: Omit<
|
|
14
|
+
Enrollment,
|
|
15
|
+
'configuration' | 'productId' | 'quantity' | 'status' | 'periods' | 'log' | '_id' | 'created'
|
|
16
|
+
>,
|
|
14
17
|
unchainedAPI,
|
|
15
|
-
) => Promise<
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
OrderDiscountConfiguration,
|
|
5
5
|
} from '../directors/index.js';
|
|
6
6
|
|
|
7
|
-
export const OrderDiscountAdapter
|
|
7
|
+
export const OrderDiscountAdapter = BaseDiscountAdapter as Omit<
|
|
8
8
|
IDiscountAdapter<OrderDiscountConfiguration>,
|
|
9
9
|
'key' | 'label' | 'version'
|
|
10
|
-
|
|
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
|
-
|
|
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>;
|