@unchainedshop/plugins 3.0.0-alpha6 → 3.0.0-rc1
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/delivery/pick-mup.js +1 -2
- package/lib/delivery/pick-mup.js.map +1 -1
- package/lib/delivery/post.js +2 -1
- package/lib/delivery/post.js.map +1 -1
- package/lib/delivery/send-message.js +2 -1
- package/lib/delivery/send-message.js.map +1 -1
- package/lib/delivery/stores.js +2 -1
- package/lib/delivery/stores.js.map +1 -1
- package/lib/enrollments/licensed.d.ts.map +1 -1
- package/lib/enrollments/licensed.js +1 -1
- package/lib/enrollments/licensed.js.map +1 -1
- package/lib/events/aws-eventbridge.d.ts +2 -0
- package/lib/events/aws-eventbridge.d.ts.map +1 -0
- package/lib/events/aws-eventbridge.js +36 -0
- package/lib/events/aws-eventbridge.js.map +1 -0
- package/lib/events/node-event-emitter.js +1 -2
- package/lib/events/node-event-emitter.js.map +1 -1
- package/lib/events/redis.js +4 -2
- package/lib/events/redis.js.map +1 -1
- package/lib/files/gridfs/gridfs-adapter.d.ts.map +1 -1
- package/lib/files/gridfs/gridfs-adapter.js +14 -5
- package/lib/files/gridfs/gridfs-adapter.js.map +1 -1
- package/lib/files/gridfs/gridfs-webhook.d.ts +1 -1
- package/lib/files/gridfs/gridfs-webhook.d.ts.map +1 -1
- package/lib/files/gridfs/gridfs-webhook.js +25 -6
- package/lib/files/gridfs/gridfs-webhook.js.map +1 -1
- package/lib/files/gridfs/sign.d.ts +1 -1
- package/lib/files/gridfs/sign.d.ts.map +1 -1
- package/lib/files/gridfs/sign.js +8 -7
- package/lib/files/gridfs/sign.js.map +1 -1
- package/lib/files/minio/minio-adapter.d.ts.map +1 -1
- package/lib/files/minio/minio-adapter.js +13 -9
- package/lib/files/minio/minio-adapter.js.map +1 -1
- package/lib/files/minio/minio-webhook.d.ts.map +1 -1
- package/lib/files/minio/minio-webhook.js +4 -3
- package/lib/files/minio/minio-webhook.js.map +1 -1
- package/lib/filters/local-search.d.ts +1 -1
- package/lib/filters/local-search.d.ts.map +1 -1
- package/lib/filters/local-search.js +1 -1
- package/lib/filters/local-search.js.map +1 -1
- package/lib/filters/strict-equal.js +1 -1
- package/lib/filters/strict-equal.js.map +1 -1
- package/lib/payment/apple-iap/adapter.d.ts.map +1 -1
- package/lib/payment/apple-iap/adapter.js +15 -20
- package/lib/payment/apple-iap/adapter.js.map +1 -1
- package/lib/payment/apple-iap/db/AppleTransactionsCollection.d.ts +1 -1
- package/lib/payment/apple-iap/db/AppleTransactionsCollection.d.ts.map +1 -1
- package/lib/payment/apple-iap/module/configureAppleTransactionsModule.d.ts +1 -1
- package/lib/payment/apple-iap/module/configureAppleTransactionsModule.d.ts.map +1 -1
- package/lib/payment/braintree.js +10 -8
- package/lib/payment/braintree.js.map +1 -1
- package/lib/payment/cryptopay/db/CryptopayTransactions.d.ts +1 -1
- package/lib/payment/cryptopay/db/CryptopayTransactions.d.ts.map +1 -1
- package/lib/payment/cryptopay/middleware.d.ts.map +1 -1
- package/lib/payment/cryptopay/middleware.js +4 -4
- package/lib/payment/cryptopay/middleware.js.map +1 -1
- package/lib/payment/cryptopay/plugin.d.ts +1 -1
- package/lib/payment/cryptopay/plugin.d.ts.map +1 -1
- package/lib/payment/cryptopay/plugin.js +8 -9
- package/lib/payment/cryptopay/plugin.js.map +1 -1
- package/lib/payment/datatrans-v2/api/authorize.d.ts +1 -1
- package/lib/payment/datatrans-v2/api/authorize.d.ts.map +1 -1
- package/lib/payment/datatrans-v2/api/authorizeAuthenticated.d.ts +1 -1
- package/lib/payment/datatrans-v2/api/authorizeAuthenticated.d.ts.map +1 -1
- package/lib/payment/datatrans-v2/api/cancel.d.ts +1 -1
- package/lib/payment/datatrans-v2/api/cancel.d.ts.map +1 -1
- package/lib/payment/datatrans-v2/api/init.d.ts +1 -1
- package/lib/payment/datatrans-v2/api/init.d.ts.map +1 -1
- package/lib/payment/datatrans-v2/api/makeFetcher.d.ts.map +1 -1
- package/lib/payment/datatrans-v2/api/makeFetcher.js +0 -1
- package/lib/payment/datatrans-v2/api/makeFetcher.js.map +1 -1
- package/lib/payment/datatrans-v2/api/secureFields.d.ts +1 -1
- package/lib/payment/datatrans-v2/api/secureFields.d.ts.map +1 -1
- package/lib/payment/datatrans-v2/api/settle.d.ts +1 -1
- package/lib/payment/datatrans-v2/api/settle.d.ts.map +1 -1
- package/lib/payment/datatrans-v2/api/status.d.ts +1 -1
- package/lib/payment/datatrans-v2/api/status.d.ts.map +1 -1
- package/lib/payment/datatrans-v2/api/types.d.ts +260 -0
- package/lib/payment/datatrans-v2/api/types.d.ts.map +1 -0
- package/lib/payment/datatrans-v2/api/types.js +2 -0
- package/lib/payment/datatrans-v2/api/types.js.map +1 -0
- package/lib/payment/datatrans-v2/api/validate.d.ts +1 -1
- package/lib/payment/datatrans-v2/api/validate.d.ts.map +1 -1
- package/lib/payment/datatrans-v2/generateSignature copy.d.ts +11 -0
- package/lib/payment/datatrans-v2/generateSignature copy.d.ts.map +1 -0
- package/lib/payment/datatrans-v2/generateSignature copy.js +19 -0
- package/lib/payment/datatrans-v2/generateSignature copy.js.map +1 -0
- package/lib/payment/datatrans-v2/generateSignature.d.ts +1 -1
- package/lib/payment/datatrans-v2/generateSignature.d.ts.map +1 -1
- package/lib/payment/datatrans-v2/generateSignature.js +7 -4
- package/lib/payment/datatrans-v2/generateSignature.js.map +1 -1
- package/lib/payment/datatrans-v2/index.d.ts.map +1 -1
- package/lib/payment/datatrans-v2/index.js +31 -29
- package/lib/payment/datatrans-v2/index.js.map +1 -1
- package/lib/payment/datatrans-v2/middleware.d.ts.map +1 -1
- package/lib/payment/datatrans-v2/middleware.js +7 -5
- package/lib/payment/datatrans-v2/middleware.js.map +1 -1
- package/lib/payment/datatrans-v2/parseRegistrationData.d.ts +4 -4
- package/lib/payment/datatrans-v2/parseRegistrationData.d.ts.map +1 -1
- package/lib/payment/datatrans-v2/parseRegistrationData.js +5 -3
- package/lib/payment/datatrans-v2/parseRegistrationData.js.map +1 -1
- package/lib/payment/datatrans-v2/roundedAmountFromOrder.d.ts +1 -2
- package/lib/payment/datatrans-v2/roundedAmountFromOrder.d.ts.map +1 -1
- package/lib/payment/datatrans-v2/roundedAmountFromOrder.js +6 -2
- package/lib/payment/datatrans-v2/roundedAmountFromOrder.js.map +1 -1
- package/lib/payment/datatrans-v2/splitProperties.d.ts +0 -1
- package/lib/payment/datatrans-v2/splitProperties.d.ts.map +1 -1
- package/lib/payment/datatrans-v2/splitProperties.js +0 -3
- package/lib/payment/datatrans-v2/splitProperties.js.map +1 -1
- package/lib/payment/invoice-prepaid.js +4 -3
- package/lib/payment/invoice-prepaid.js.map +1 -1
- package/lib/payment/invoice.js +4 -3
- package/lib/payment/invoice.js.map +1 -1
- package/lib/payment/paypal-checkout.js +8 -6
- package/lib/payment/paypal-checkout.js.map +1 -1
- package/lib/payment/payrexx/api/makeFetcher.d.ts.map +1 -1
- package/lib/payment/payrexx/api/makeFetcher.js +2 -3
- package/lib/payment/payrexx/api/makeFetcher.js.map +1 -1
- package/lib/payment/payrexx/index.d.ts.map +1 -1
- package/lib/payment/payrexx/index.js +20 -14
- package/lib/payment/payrexx/index.js.map +1 -1
- package/lib/payment/payrexx/middleware.d.ts.map +1 -1
- package/lib/payment/payrexx/middleware.js +12 -9
- package/lib/payment/payrexx/middleware.js.map +1 -1
- package/lib/payment/postfinance-checkout/index.d.ts.map +1 -1
- package/lib/payment/postfinance-checkout/index.js +18 -13
- package/lib/payment/postfinance-checkout/index.js.map +1 -1
- package/lib/payment/postfinance-checkout/middleware.d.ts.map +1 -1
- package/lib/payment/postfinance-checkout/middleware.js +4 -3
- package/lib/payment/postfinance-checkout/middleware.js.map +1 -1
- package/lib/payment/postfinance-checkout/utils.d.ts +2 -2
- package/lib/payment/postfinance-checkout/utils.d.ts.map +1 -1
- package/lib/payment/postfinance-checkout/utils.js +6 -2
- package/lib/payment/postfinance-checkout/utils.js.map +1 -1
- package/lib/payment/saferpay/adapter.d.ts +1 -1
- package/lib/payment/saferpay/adapter.d.ts.map +1 -1
- package/lib/payment/saferpay/adapter.js +17 -11
- package/lib/payment/saferpay/adapter.js.map +1 -1
- package/lib/payment/saferpay/api/api/SaferpayConnection.d.ts.map +1 -1
- package/lib/payment/saferpay/api/api/SaferpayConnection.js +0 -1
- package/lib/payment/saferpay/api/api/SaferpayConnection.js.map +1 -1
- package/lib/payment/saferpay/api/models/TransactionCapture.d.ts +1 -1
- package/lib/payment/saferpay/api/models/TransactionCapture.d.ts.map +1 -1
- package/lib/payment/saferpay/db/SaferpayTransactionsCollection.d.ts +1 -1
- package/lib/payment/saferpay/db/SaferpayTransactionsCollection.d.ts.map +1 -1
- package/lib/payment/saferpay/middleware.d.ts.map +1 -1
- package/lib/payment/saferpay/middleware.js +4 -4
- package/lib/payment/saferpay/middleware.js.map +1 -1
- package/lib/payment/stripe/index.d.ts.map +1 -1
- package/lib/payment/stripe/index.js +17 -11
- package/lib/payment/stripe/index.js.map +1 -1
- package/lib/payment/stripe/middleware.d.ts.map +1 -1
- package/lib/payment/stripe/middleware.js +10 -10
- package/lib/payment/stripe/middleware.js.map +1 -1
- package/lib/payment/stripe/stripe.d.ts +3 -4
- package/lib/payment/stripe/stripe.d.ts.map +1 -1
- package/lib/payment/stripe/stripe.js +1 -1
- package/lib/payment/stripe/stripe.js.map +1 -1
- package/lib/pricing/delivery-swiss-tax.d.ts +1 -1
- package/lib/pricing/delivery-swiss-tax.d.ts.map +1 -1
- package/lib/pricing/delivery-swiss-tax.js +1 -2
- package/lib/pricing/delivery-swiss-tax.js.map +1 -1
- package/lib/pricing/discount-100-off.d.ts +2 -3
- package/lib/pricing/discount-100-off.d.ts.map +1 -1
- package/lib/pricing/discount-100-off.js +1 -1
- package/lib/pricing/discount-100-off.js.map +1 -1
- package/lib/pricing/discount-half-price-manual.d.ts +2 -3
- package/lib/pricing/discount-half-price-manual.d.ts.map +1 -1
- package/lib/pricing/discount-half-price-manual.js +1 -1
- package/lib/pricing/discount-half-price-manual.js.map +1 -1
- package/lib/pricing/discount-half-price.d.ts +2 -3
- package/lib/pricing/discount-half-price.d.ts.map +1 -1
- package/lib/pricing/discount-half-price.js +1 -1
- package/lib/pricing/discount-half-price.js.map +1 -1
- package/lib/pricing/free-delivery.d.ts +1 -1
- package/lib/pricing/free-delivery.d.ts.map +1 -1
- package/lib/pricing/free-delivery.js +1 -1
- package/lib/pricing/free-delivery.js.map +1 -1
- package/lib/pricing/free-payment.d.ts +1 -1
- package/lib/pricing/free-payment.d.ts.map +1 -1
- package/lib/pricing/free-payment.js +1 -1
- package/lib/pricing/free-payment.js.map +1 -1
- package/lib/pricing/order-delivery.d.ts +1 -1
- package/lib/pricing/order-delivery.d.ts.map +1 -1
- package/lib/pricing/order-delivery.js +6 -3
- package/lib/pricing/order-delivery.js.map +1 -1
- package/lib/pricing/order-discount.d.ts +1 -2
- package/lib/pricing/order-discount.d.ts.map +1 -1
- package/lib/pricing/order-discount.js +15 -8
- package/lib/pricing/order-discount.js.map +1 -1
- package/lib/pricing/order-items-discount.js +7 -4
- package/lib/pricing/order-items-discount.js.map +1 -1
- package/lib/pricing/order-items.js +7 -3
- package/lib/pricing/order-items.js.map +1 -1
- package/lib/pricing/order-payment.js +6 -3
- package/lib/pricing/order-payment.js.map +1 -1
- package/lib/pricing/order-round.d.ts +1 -1
- package/lib/pricing/order-round.d.ts.map +1 -1
- package/lib/pricing/order-round.js +1 -2
- package/lib/pricing/order-round.js.map +1 -1
- package/lib/pricing/product-catalog-price.d.ts +2 -2
- package/lib/pricing/product-catalog-price.d.ts.map +1 -1
- package/lib/pricing/product-catalog-price.js +7 -6
- package/lib/pricing/product-catalog-price.js.map +1 -1
- package/lib/pricing/product-discount.js +1 -2
- package/lib/pricing/product-discount.js.map +1 -1
- package/lib/pricing/product-price-rateconversion.d.ts +1 -1
- package/lib/pricing/product-price-rateconversion.d.ts.map +1 -1
- package/lib/pricing/product-price-rateconversion.js +1 -1
- package/lib/pricing/product-price-rateconversion.js.map +1 -1
- package/lib/pricing/product-round.d.ts +1 -1
- package/lib/pricing/product-round.d.ts.map +1 -1
- package/lib/pricing/product-round.js +1 -1
- package/lib/pricing/product-round.js.map +1 -1
- package/lib/pricing/product-swiss-tax.d.ts +4 -3
- package/lib/pricing/product-swiss-tax.d.ts.map +1 -1
- package/lib/pricing/product-swiss-tax.js +1 -2
- package/lib/pricing/product-swiss-tax.js.map +1 -1
- package/lib/quotations/manual.js +1 -1
- package/lib/quotations/manual.js.map +1 -1
- package/lib/warehousing/eth-minter.js +7 -4
- package/lib/warehousing/eth-minter.js.map +1 -1
- package/lib/warehousing/store.js +2 -1
- package/lib/warehousing/store.js.map +1 -1
- package/lib/worker/BaseWorker.d.ts +30 -0
- package/lib/worker/BaseWorker.d.ts.map +1 -0
- package/lib/worker/BaseWorker.js +81 -0
- package/lib/worker/BaseWorker.js.map +1 -0
- package/lib/worker/EventListenerWorker.d.ts +6 -0
- package/lib/worker/EventListenerWorker.d.ts.map +1 -0
- package/lib/worker/EventListenerWorker.js +46 -0
- package/lib/worker/EventListenerWorker.js.map +1 -0
- package/lib/worker/FailedRescheduler.d.ts +15 -0
- package/lib/worker/FailedRescheduler.d.ts.map +1 -0
- package/lib/worker/FailedRescheduler.js +45 -0
- package/lib/worker/FailedRescheduler.js.map +1 -0
- package/lib/worker/IntervalWorker.d.ts +10 -0
- package/lib/worker/IntervalWorker.d.ts.map +1 -0
- package/lib/worker/IntervalWorker.js +37 -0
- package/lib/worker/IntervalWorker.js.map +1 -0
- package/lib/worker/bulk-import.d.ts +1 -1
- package/lib/worker/bulk-import.d.ts.map +1 -1
- package/lib/worker/bulk-import.js +7 -8
- package/lib/worker/bulk-import.js.map +1 -1
- package/lib/worker/email.d.ts.map +1 -1
- package/lib/worker/email.js +1 -5
- package/lib/worker/email.js.map +1 -1
- package/lib/worker/enrollment-order-generator.d.ts.map +1 -1
- package/lib/worker/enrollment-order-generator.js +17 -15
- package/lib/worker/enrollment-order-generator.js.map +1 -1
- package/lib/worker/error-notifications.d.ts +1 -1
- package/lib/worker/error-notifications.d.ts.map +1 -1
- package/lib/worker/error-notifications.js +1 -1
- package/lib/worker/error-notifications.js.map +1 -1
- package/lib/worker/export-token.d.ts +1 -2
- package/lib/worker/export-token.d.ts.map +1 -1
- package/lib/worker/export-token.js +2 -1
- package/lib/worker/export-token.js.map +1 -1
- package/lib/worker/external.d.ts +1 -1
- package/lib/worker/external.d.ts.map +1 -1
- package/lib/worker/external.js +1 -1
- package/lib/worker/external.js.map +1 -1
- package/lib/worker/heartbeat.js +1 -1
- package/lib/worker/heartbeat.js.map +1 -1
- package/lib/worker/http-request.d.ts +1 -1
- package/lib/worker/http-request.d.ts.map +1 -1
- package/lib/worker/http-request.js +1 -5
- package/lib/worker/http-request.js.map +1 -1
- package/lib/worker/message.d.ts +2 -2
- package/lib/worker/message.d.ts.map +1 -1
- package/lib/worker/message.js +1 -5
- package/lib/worker/message.js.map +1 -1
- package/lib/worker/push-notification.js +1 -4
- package/lib/worker/push-notification.js.map +1 -1
- package/lib/worker/sms.js +1 -4
- package/lib/worker/sms.js.map +1 -1
- package/lib/worker/update-coinbase-rates.js +1 -1
- package/lib/worker/update-coinbase-rates.js.map +1 -1
- package/lib/worker/update-ecb-rates.js +1 -1
- package/lib/worker/update-ecb-rates.js.map +1 -1
- package/lib/worker/update-token-ownership.d.ts +1 -1
- package/lib/worker/update-token-ownership.d.ts.map +1 -1
- package/lib/worker/update-token-ownership.js +1 -1
- package/lib/worker/update-token-ownership.js.map +1 -1
- package/lib/worker/zombie-killer.d.ts +8 -2
- package/lib/worker/zombie-killer.d.ts.map +1 -1
- package/lib/worker/zombie-killer.js +12 -9
- package/lib/worker/zombie-killer.js.map +1 -1
- package/package.json +37 -82
- package/src/delivery/pick-mup.ts +2 -3
- package/src/delivery/post.ts +2 -2
- package/src/delivery/send-message.ts +2 -2
- package/src/delivery/stores.ts +2 -2
- package/src/enrollments/licensed.ts +1 -2
- package/src/events/aws-eventbridge.ts +43 -0
- package/src/events/node-event-emitter.ts +1 -2
- package/src/events/redis.ts +4 -2
- package/src/files/gridfs/gridfs-adapter.ts +15 -5
- package/src/files/gridfs/gridfs-webhook.ts +29 -9
- package/src/files/gridfs/sign.ts +20 -8
- package/src/files/minio/minio-adapter.ts +14 -11
- package/src/files/minio/minio-webhook.ts +5 -3
- package/src/filters/local-search.ts +1 -2
- package/src/filters/strict-equal.ts +1 -2
- package/src/payment/apple-iap/adapter.ts +22 -40
- package/src/payment/apple-iap/db/AppleTransactionsCollection.ts +1 -1
- package/src/payment/apple-iap/module/configureAppleTransactionsModule.ts +1 -1
- package/src/payment/braintree.ts +16 -9
- package/src/payment/cryptopay/db/CryptopayTransactions.ts +1 -1
- package/src/payment/cryptopay/middleware.ts +11 -8
- package/src/payment/cryptopay/plugin.ts +14 -11
- package/src/payment/datatrans-v2/api/authorize.ts +1 -1
- package/src/payment/datatrans-v2/api/authorizeAuthenticated.ts +1 -1
- package/src/payment/datatrans-v2/api/cancel.ts +1 -1
- package/src/payment/datatrans-v2/api/init.ts +1 -1
- package/src/payment/datatrans-v2/api/makeFetcher.ts +0 -1
- package/src/payment/datatrans-v2/api/secureFields.ts +1 -1
- package/src/payment/datatrans-v2/api/settle.ts +1 -1
- package/src/payment/datatrans-v2/api/status.ts +1 -1
- package/src/payment/datatrans-v2/api/validate.ts +1 -1
- package/src/payment/datatrans-v2/generateSignature.test.ts +15 -0
- package/src/payment/datatrans-v2/generateSignature.ts +18 -6
- package/src/payment/datatrans-v2/index.ts +41 -36
- package/src/payment/datatrans-v2/middleware.ts +8 -12
- package/src/payment/datatrans-v2/parseRegistrationData.ts +7 -5
- package/src/payment/datatrans-v2/roundedAmountFromOrder.ts +6 -6
- package/src/payment/datatrans-v2/splitProperties.ts +0 -5
- package/src/payment/invoice-prepaid.ts +4 -4
- package/src/payment/invoice.ts +4 -4
- package/src/payment/paypal-checkout.ts +14 -7
- package/src/payment/payrexx/api/makeFetcher.ts +2 -3
- package/src/payment/payrexx/index.ts +26 -15
- package/src/payment/payrexx/middleware.ts +14 -19
- package/src/payment/postfinance-checkout/index.ts +26 -17
- package/src/payment/postfinance-checkout/middleware.ts +6 -9
- package/src/payment/postfinance-checkout/utils.ts +6 -3
- package/src/payment/saferpay/adapter.ts +23 -13
- package/src/payment/saferpay/api/api/SaferpayConnection.ts +0 -1
- package/src/payment/saferpay/api/models/TransactionCapture.ts +1 -1
- package/src/payment/saferpay/db/SaferpayTransactionsCollection.ts +1 -1
- package/src/payment/saferpay/middleware.ts +6 -10
- package/src/payment/stripe/index.ts +23 -12
- package/src/payment/stripe/middleware.ts +15 -23
- package/src/payment/stripe/stripe.ts +4 -5
- package/src/pricing/delivery-swiss-tax.ts +6 -2
- package/src/pricing/discount-100-off.ts +4 -3
- package/src/pricing/discount-half-price-manual.ts +9 -5
- package/src/pricing/discount-half-price.ts +9 -5
- package/src/pricing/free-delivery.ts +1 -1
- package/src/pricing/free-payment.ts +1 -1
- package/src/pricing/order-delivery.ts +11 -8
- package/src/pricing/order-discount.ts +26 -11
- package/src/pricing/order-items-discount.ts +12 -5
- package/src/pricing/order-items.ts +12 -8
- package/src/pricing/order-payment.ts +11 -8
- package/src/pricing/order-round.ts +6 -2
- package/src/pricing/product-catalog-price.ts +12 -7
- package/src/pricing/product-discount.ts +5 -4
- package/src/pricing/product-price-rateconversion.ts +5 -2
- package/src/pricing/product-round.ts +5 -2
- package/src/pricing/product-swiss-tax.ts +5 -3
- package/src/quotations/manual.ts +1 -2
- package/src/warehousing/eth-minter.ts +11 -10
- package/src/warehousing/store.ts +2 -6
- package/src/worker/BaseWorker.ts +119 -0
- package/src/worker/EventListenerWorker.ts +61 -0
- package/src/worker/FailedRescheduler.ts +80 -0
- package/src/worker/IntervalWorker.ts +54 -0
- package/src/worker/bulk-import.ts +12 -13
- package/src/worker/email.ts +1 -8
- package/src/worker/enrollment-order-generator.ts +25 -34
- package/src/worker/error-notifications.ts +2 -2
- package/src/worker/export-token.ts +2 -8
- package/src/worker/external.ts +1 -2
- package/src/worker/heartbeat.ts +1 -2
- package/src/worker/http-request.ts +1 -8
- package/src/worker/message.ts +2 -6
- package/src/worker/push-notification.ts +1 -6
- package/src/worker/sms.ts +1 -7
- package/src/worker/update-coinbase-rates.ts +1 -3
- package/src/worker/update-ecb-rates.ts +1 -3
- package/src/worker/update-token-ownership.ts +1 -2
- package/src/worker/zombie-killer.ts +23 -23
- package/tsconfig.json +4 -5
- /package/src/payment/datatrans-v2/api/{types.d.ts → types.ts} +0 -0
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
import { IWorkerAdapter } from '@unchainedshop/core
|
|
2
|
-
export declare const ZombieKillerWorker: IWorkerAdapter<
|
|
1
|
+
import { IWorkerAdapter } from '@unchainedshop/core';
|
|
2
|
+
export declare const ZombieKillerWorker: IWorkerAdapter<{
|
|
3
|
+
bulkImportMaxAgeInDays: number;
|
|
4
|
+
}, {
|
|
3
5
|
deletedProductMediaCount: number;
|
|
4
6
|
deletedAssortmentMediaCount: number;
|
|
5
7
|
deletedFilesCount: number;
|
|
8
|
+
deletedFilterTextsCount: number;
|
|
9
|
+
deletedProductTextsCount: number;
|
|
10
|
+
deletedProductVariationsCount: number;
|
|
11
|
+
deletedAssortmentTextsCount: number;
|
|
6
12
|
}>;
|
|
7
13
|
export default ZombieKillerWorker;
|
|
8
14
|
//# sourceMappingURL=zombie-killer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zombie-killer.d.ts","sourceRoot":"","sources":["../../src/worker/zombie-killer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"zombie-killer.d.ts","sourceRoot":"","sources":["../../src/worker/zombie-killer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAiC,MAAM,qBAAqB,CAAC;AAEpF,eAAO,MAAM,kBAAkB,EAAE,cAAc,CAC7C;IAAE,sBAAsB,EAAE,MAAM,CAAA;CAAE,EAClC;IACE,wBAAwB,EAAE,MAAM,CAAC;IACjC,2BAA2B,EAAE,MAAM,CAAC;IACpC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uBAAuB,EAAE,MAAM,CAAC;IAChC,wBAAwB,EAAE,MAAM,CAAC;IACjC,6BAA6B,EAAE,MAAM,CAAC;IACtC,2BAA2B,EAAE,MAAM,CAAC;CACrC,CA0HF,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createLogger } from '@unchainedshop/logger';
|
|
3
|
-
const logger = createLogger('unchained:platform:zombie-killer');
|
|
1
|
+
import { WorkerAdapter, WorkerDirector } from '@unchainedshop/core';
|
|
4
2
|
export const ZombieKillerWorker = {
|
|
5
3
|
...WorkerAdapter,
|
|
6
4
|
key: 'shop.unchained.worker-plugin.zombie-killer',
|
|
7
5
|
label: 'Zombie Killer',
|
|
8
6
|
version: '1.0.0',
|
|
9
7
|
type: 'ZOMBIE_KILLER',
|
|
10
|
-
doWork: async (
|
|
8
|
+
doWork: async ({ bulkImportMaxAgeInDays } = { bulkImportMaxAgeInDays: 5 }, unchainedAPI) => {
|
|
11
9
|
const { modules, services } = unchainedAPI;
|
|
12
10
|
try {
|
|
13
11
|
const error = false;
|
|
@@ -27,8 +25,7 @@ export const ZombieKillerWorker = {
|
|
|
27
25
|
excludedAssortmentIds: assortmentIds,
|
|
28
26
|
});
|
|
29
27
|
// Remove unreferenced product entities
|
|
30
|
-
const
|
|
31
|
-
const productIds = products.map((a) => a._id);
|
|
28
|
+
const productIds = await modules.products.findProductIds({ includeDrafts: true });
|
|
32
29
|
const deletedProductTextsCount = await modules.products.texts.deleteMany({
|
|
33
30
|
excludedProductIds: productIds,
|
|
34
31
|
});
|
|
@@ -45,12 +42,19 @@ export const ZombieKillerWorker = {
|
|
|
45
42
|
const allFileIdsRelevant = (await modules.files.findFiles({ path: { $in: ['product-media', 'assortment-media'] } }, { projection: { _id: 1 } })).map((a) => a._id);
|
|
46
43
|
const fileIdsToRemove = allFileIdsRelevant.filter((fileId) => {
|
|
47
44
|
return !allFileIdsLinked.includes(fileId);
|
|
45
|
+
}) || [];
|
|
46
|
+
// Remove bulk import streams older than X days
|
|
47
|
+
const bulkImportMedia = await await modules.files.findFiles({
|
|
48
|
+
path: 'bulk-import-streams',
|
|
49
|
+
created: { $lt: new Date(Date.now() - 1000 * 60 * 60 * 24 * bulkImportMaxAgeInDays) },
|
|
50
|
+
});
|
|
51
|
+
bulkImportMedia.forEach(async (media) => {
|
|
52
|
+
fileIdsToRemove.push(media._id);
|
|
48
53
|
});
|
|
49
|
-
logger.verbose(`File Id's to remove: ${fileIdsToRemove.join(', ')}`);
|
|
50
54
|
const deletedFilesCount = fileIdsToRemove.length > 0
|
|
51
55
|
? await services.files.removeFiles({
|
|
52
56
|
fileIds: fileIdsToRemove,
|
|
53
|
-
}
|
|
57
|
+
})
|
|
54
58
|
: 0;
|
|
55
59
|
// Return delete count
|
|
56
60
|
const result = {
|
|
@@ -75,7 +79,6 @@ export const ZombieKillerWorker = {
|
|
|
75
79
|
};
|
|
76
80
|
}
|
|
77
81
|
catch (err) {
|
|
78
|
-
logger.error(err.message, err);
|
|
79
82
|
return {
|
|
80
83
|
success: false,
|
|
81
84
|
error: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zombie-killer.js","sourceRoot":"","sources":["../../src/worker/zombie-killer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"zombie-killer.js","sourceRoot":"","sources":["../../src/worker/zombie-killer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,57 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/plugins",
|
|
3
|
-
"version": "3.0.0-
|
|
3
|
+
"version": "3.0.0-rc1",
|
|
4
4
|
"main": "lib/plugins-index.js",
|
|
5
5
|
"types": "lib/plugins-index.d.ts",
|
|
6
6
|
"exports": {
|
|
7
7
|
".": "./lib/plugins-index.js",
|
|
8
|
-
"./*": "./lib/*"
|
|
9
|
-
"./worker/BulkImportWorker": "./lib/worker/bulk-import",
|
|
10
|
-
"./worker/ZombieKillerWorker": "./lib/worker/zombie-killer",
|
|
11
|
-
"./worker/GenerateOrderWorker": "./lib/worker/enrollment-order-generator",
|
|
12
|
-
"./worker/MessageWorker": "./lib/worker/message"
|
|
13
|
-
},
|
|
14
|
-
"typesVersions": {
|
|
15
|
-
"*": {
|
|
16
|
-
"delivery/*": [
|
|
17
|
-
"./lib/delivery/*"
|
|
18
|
-
],
|
|
19
|
-
"enrollments/*": [
|
|
20
|
-
"./lib/enrollments/*"
|
|
21
|
-
],
|
|
22
|
-
"events/*": [
|
|
23
|
-
"./lib/events/*"
|
|
24
|
-
],
|
|
25
|
-
"files/*": [
|
|
26
|
-
"./lib/files/*"
|
|
27
|
-
],
|
|
28
|
-
"filters/*": [
|
|
29
|
-
"./lib/filters/*"
|
|
30
|
-
],
|
|
31
|
-
"payment/*": [
|
|
32
|
-
"./lib/payment/*"
|
|
33
|
-
],
|
|
34
|
-
"pricing/*": [
|
|
35
|
-
"./lib/pricing/*"
|
|
36
|
-
],
|
|
37
|
-
"quotations/*": [
|
|
38
|
-
"./lib/quotations/*"
|
|
39
|
-
],
|
|
40
|
-
"warehousing/*": [
|
|
41
|
-
"./lib/warehousing/*"
|
|
42
|
-
],
|
|
43
|
-
"worker/*": [
|
|
44
|
-
"./lib/worker/*"
|
|
45
|
-
],
|
|
46
|
-
"worker/GenerateOrderWorker": [
|
|
47
|
-
"./lib/worker/enrollment-order-generator"
|
|
48
|
-
]
|
|
49
|
-
}
|
|
8
|
+
"./*": "./lib/*"
|
|
50
9
|
},
|
|
51
10
|
"type": "module",
|
|
52
11
|
"scripts": {
|
|
53
|
-
"clean": "
|
|
54
|
-
"
|
|
12
|
+
"clean": "tsc -b --clean",
|
|
13
|
+
"build": "tsc -b",
|
|
14
|
+
"prepublishOnly": "npm run clean && npm run build",
|
|
55
15
|
"watch": "tsc -w",
|
|
56
16
|
"test": "NODE_OPTIONS=--experimental-vm-modules jest --detectOpenHandles --forceExit",
|
|
57
17
|
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch --detectOpenHandles --forceExit"
|
|
@@ -71,53 +31,48 @@
|
|
|
71
31
|
"url": "https://github.com/unchainedshop/unchained/issues"
|
|
72
32
|
},
|
|
73
33
|
"homepage": "https://github.com/unchainedshop/unchained#readme",
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"@unchainedshop/api": "^3.0.0-rc1",
|
|
36
|
+
"@unchainedshop/core-delivery": "^3.0.0-rc1",
|
|
37
|
+
"@unchainedshop/core-enrollments": "^3.0.0-rc1",
|
|
38
|
+
"@unchainedshop/core-orders": "^3.0.0-rc1",
|
|
39
|
+
"@unchainedshop/core-payment": "^3.0.0-rc1",
|
|
40
|
+
"@unchainedshop/core-products": "^3.0.0-rc1",
|
|
41
|
+
"@unchainedshop/core-warehousing": "^3.0.0-rc1",
|
|
42
|
+
"@unchainedshop/core-worker": "^3.0.0-rc1",
|
|
43
|
+
"@unchainedshop/events": "^3.0.0-rc1",
|
|
44
|
+
"@unchainedshop/file-upload": "^3.0.0-rc1",
|
|
45
|
+
"@unchainedshop/logger": "^3.0.0-rc1",
|
|
46
|
+
"@unchainedshop/utils": "^3.0.0-rc1"
|
|
47
|
+
},
|
|
74
48
|
"optionalDependencies": {
|
|
49
|
+
"@aws-sdk/client-eventbridge": "^3.713.0",
|
|
50
|
+
"@breejs/later": "^4.2.0",
|
|
75
51
|
"@paypal/checkout-server-sdk": "^1.0.3",
|
|
76
|
-
"@redis/client": "^1.
|
|
52
|
+
"@redis/client": "^1.6.0",
|
|
77
53
|
"bip32": "^4.0.0",
|
|
78
|
-
"bitcoinjs-lib": "^6.1.
|
|
54
|
+
"bitcoinjs-lib": "^6.1.7",
|
|
79
55
|
"ethers": "^6.13.4",
|
|
80
|
-
"express": "^4.x",
|
|
81
|
-
"memoizee": "^0.4.17",
|
|
82
|
-
"open": "^10.0.0",
|
|
83
|
-
"postfinancecheckout": "^4.1.1",
|
|
84
|
-
"stripe": "^17.2.1",
|
|
85
|
-
"tiny-secp256k1": "^2.2.3",
|
|
86
|
-
"twilio": "^5.3.5",
|
|
87
|
-
"web-push": "^3.6.3"
|
|
88
|
-
},
|
|
89
|
-
"devDependencies": {
|
|
90
|
-
"@redis/client": "^1.6.0",
|
|
91
|
-
"@types/node": "^22.8.1",
|
|
92
|
-
"@unchainedshop/api": "^3.0.0-alpha4",
|
|
93
|
-
"@unchainedshop/core-delivery": "^3.0.0-alpha4",
|
|
94
|
-
"@unchainedshop/core-enrollments": "^3.0.0-alpha4",
|
|
95
|
-
"@unchainedshop/core-filters": "^3.0.0-alpha4",
|
|
96
|
-
"@unchainedshop/core-messaging": "^3.0.0-alpha4",
|
|
97
|
-
"@unchainedshop/core-orders": "^3.0.0-alpha4",
|
|
98
|
-
"@unchainedshop/core-payment": "^3.0.0-alpha4",
|
|
99
|
-
"@unchainedshop/core-products": "^3.0.0-alpha4",
|
|
100
|
-
"@unchainedshop/core-quotations": "^3.0.0-alpha4",
|
|
101
|
-
"@unchainedshop/core-warehousing": "^3.0.0-alpha4",
|
|
102
|
-
"@unchainedshop/core-worker": "^3.0.0-alpha4",
|
|
103
|
-
"@unchainedshop/events": "^3.0.0-alpha4",
|
|
104
|
-
"@unchainedshop/file-upload": "^3.0.0-alpha4",
|
|
105
|
-
"@unchainedshop/logger": "^3.0.0-alpha4",
|
|
106
|
-
"@unchainedshop/utils": "^3.0.0-alpha4",
|
|
107
|
-
"bluebird": "^3.7.2",
|
|
108
56
|
"event-iterator": "^2.0.0",
|
|
109
|
-
"
|
|
110
|
-
"
|
|
57
|
+
"expiry-map": "^2.0.0",
|
|
58
|
+
"express": "^4.21.2",
|
|
111
59
|
"JSONStream": "^1.3.5",
|
|
60
|
+
"mime-types": "^2.1.35",
|
|
112
61
|
"minio": "^8.0.2",
|
|
113
|
-
"
|
|
114
|
-
"nodemailer": "^6.9.15",
|
|
62
|
+
"nodemailer": "^6.9.16",
|
|
115
63
|
"open": "^10.1.0",
|
|
64
|
+
"p-memoize": "^7.1.1",
|
|
116
65
|
"postfinancecheckout": "^4.5.0",
|
|
117
|
-
"
|
|
118
|
-
"
|
|
119
|
-
"
|
|
66
|
+
"stripe": "^17.4.0",
|
|
67
|
+
"tiny-secp256k1": "^2.2.3",
|
|
68
|
+
"twilio": "^5.4.0",
|
|
120
69
|
"web-push": "^3.6.7",
|
|
121
70
|
"xml-js": "^1.6.11"
|
|
71
|
+
},
|
|
72
|
+
"devDependencies": {
|
|
73
|
+
"@types/node": "^22.10.2",
|
|
74
|
+
"jest": "^29.7.0",
|
|
75
|
+
"ts-jest": "^29.2.5",
|
|
76
|
+
"typescript": "^5.7.2"
|
|
122
77
|
}
|
|
123
78
|
}
|
package/src/delivery/pick-mup.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import { DeliveryProviderType
|
|
3
|
-
import { DeliveryAdapter, DeliveryDirector, DeliveryError } from '@unchainedshop/core-delivery';
|
|
1
|
+
import { DeliveryAdapter, DeliveryDirector, DeliveryError, IDeliveryAdapter } from '@unchainedshop/core';
|
|
2
|
+
import { DeliveryProviderType } from '@unchainedshop/core-delivery';
|
|
4
3
|
|
|
5
4
|
const fetchPickMupLocations = async (key: string, idsFilter?: string) => {
|
|
6
5
|
// const pickMupUrl = `https://web-api.migros.ch/widgets/stores?key=${key}&verbosity=detail&limit=5000&aggregation_options%5Bempty_buckets%5D=true&filters%5Bmarkets%5D%5B0%5D%5B%5D=super&filters%5Bmarkets%5D%5B0%5D%5B%5D=mno&filters%5Bmarkets%5D%5B0%5D%5B%5D=voi&filters%5Bmarkets%5D%5B0%5D%5B%5D=mp&filters%5Bmarkets%5D%5B0%5D%5B%5D=out&filters%5Bmarkets%5D%5B0%5D%5B%5D=spx&filters%5Bmarkets%5D%5B0%5D%5B%5D=doi&filters%5Bmarkets%5D%5B0%5D%5B%5D=mec&filters%5Bmarkets%5D%5B0%5D%5B%5D=mica&filters%5Bmarkets%5D%5B0%5D%5B%5D=res&filters%5Bmarkets%5D%5B0%5D%5B%5D=flori&filters%5Bmarkets%5D%5B0%5D%5B%5D=gour&filters%5Bmarkets%5D%5B0%5D%5B%5D=alna&filters%5Bmarkets%5D%5B0%5D%5B%5D=cof&filters%5Bmarkets%5D%5B0%5D%5B%5D=chng&filters%5Bservices%5D%5Bsub_type%5D%5B%5D=pickmup&aggregation_groups%5B_custom%5D%5Bopen_on%5D%5Bnow%5D=20190923T11%3A45&aggregation_groups%5B_custom%5D%5Bopen_on%5D%5Bafter_1900%5D=20190923T19%3A01&aggregation_groups%5B_custom%5D%5Bopen_on%5D%5Bsundays%5D=sunday&aggregation_groups%5Bmarkets%5D%5B_terms%5D%5B%5D=super&aggregation_groups%5Bmarkets%5D%5B_terms%5D%5B%5D=voi&aggregation_groups%5Bmarkets%5D%5B_terms%5D%5B%5D=mp&aggregation_groups%5Bmarkets%5D%5B_terms%5D%5B%5D=mec&aggregation_groups%5Bmarkets%5D%5B_terms%5D%5B%5D=spx&aggregation_groups%5Bmarkets%5D%5B_terms%5D%5B%5D=doi&aggregation_groups%5Bmarkets%5D%5B_terms%5D%5B%5D=mica&aggregation_groups%5Bmarkets%5D%5B_terms%5D%5B%5D=out&aggregation_groups%5Bmarkets%5D%5B_terms%5D%5B%5D=flori&aggregation_groups%5Bmarkets%5D%5B_terms%5D%5B%5D=alna&aggregation_groups%5Bmarkets%5D%5B_terms%5D%5B%5D=res&aggregation_groups%5Bmarkets%5D%5B_terms%5D%5B%5D=gour&aggregation_groups%5Bmarkets%5D%5B_terms%5D%5B%5D=cof&aggregation_groups%5Bmarkets%5D%5B_terms%5D%5B%5D=res&aggregation_groups%5Bmarkets%5D%5B_terms%5D%5B%5D=gour&aggregation_groups%5Bmarkets%5D%5B_terms%5D%5B%5D=cof&aggregation_groups%5Bservices%5D%5Bsub_type%5D%5B_terms%5D%5B%5D=market-service-mig_clean&aggregation_groups%5Bservices%5D%5Bsub_type%5D%5B_terms%5D%5B%5D=market-service-mig_online&aggregation_groups%5Bservices%5D%5Bsub_type%5D%5B_terms%5D%5B%5D=pickmup&aggregation_groups%5Bservices%5D%5Bsub_type%5D%5B_terms%5D%5B%5D=post-service-point&aggregation_groups%5Bservices%5D%5Bsub_type%5D%5B_terms%5D%5B%5D=subito-selfscanning&aggregation_groups%5Bservices%5D%5Bsub_type%5D%5B_terms%5D%5B%5D=subito-selfcheckout&aggregation_groups%5Bservices%5D%5Bsub_type%5D%5B_terms%5D%5B%5D=market-service-mig_bakery&aggregation_groups%5Bservices%5D%5Bsub_type%5D%5B_terms%5D%5B%5D=counter-mez&aggregation_groups%5Bservices%5D%5Bsub_type%5D%5B_terms%5D%5B%5D=counter-fisch&aggregation_groups%5Bservices%5D%5Bsub_type%5D%5B_terms%5D%5B%5D=counter-kaes&aggregation_groups%5Bservices%5D%5Bsub_type%5D%5B_terms%5D%5B%5D=srv`;
|
package/src/delivery/post.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IDeliveryAdapter } from '@unchainedshop/core
|
|
2
|
-
import {
|
|
1
|
+
import { IDeliveryAdapter, DeliveryAdapter, DeliveryDirector } from '@unchainedshop/core';
|
|
2
|
+
import { DeliveryProviderType } from '@unchainedshop/core-delivery';
|
|
3
3
|
|
|
4
4
|
const Post: IDeliveryAdapter = {
|
|
5
5
|
...DeliveryAdapter,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IDeliveryAdapter } from '@unchainedshop/core
|
|
2
|
-
import {
|
|
1
|
+
import { DeliveryAdapter, DeliveryDirector, IDeliveryAdapter } from '@unchainedshop/core';
|
|
2
|
+
import { DeliveryProviderType } from '@unchainedshop/core-delivery';
|
|
3
3
|
|
|
4
4
|
const SendMessage: IDeliveryAdapter = {
|
|
5
5
|
...DeliveryAdapter,
|
package/src/delivery/stores.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IDeliveryAdapter } from '@unchainedshop/core
|
|
2
|
-
import {
|
|
1
|
+
import { DeliveryAdapter, DeliveryDirector, IDeliveryAdapter } from '@unchainedshop/core';
|
|
2
|
+
import { DeliveryProviderType } from '@unchainedshop/core-delivery';
|
|
3
3
|
|
|
4
4
|
const PickMup: IDeliveryAdapter = {
|
|
5
5
|
...DeliveryAdapter,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { IEnrollmentAdapter } from '@unchainedshop/core
|
|
2
|
-
import { EnrollmentDirector, EnrollmentAdapter } from '@unchainedshop/core-enrollments';
|
|
1
|
+
import { IEnrollmentAdapter, EnrollmentDirector, EnrollmentAdapter } from '@unchainedshop/core';
|
|
3
2
|
|
|
4
3
|
export const rangeMatcher = (date = new Date()) => {
|
|
5
4
|
const timestamp = date.getTime();
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { EmitAdapter, setEmitAdapter } from '@unchainedshop/events';
|
|
2
|
+
import { EventBridgeClient, PutEventsCommand, PutEventsRequestEntry } from '@aws-sdk/client-eventbridge';
|
|
3
|
+
import { createLogger } from '@unchainedshop/logger';
|
|
4
|
+
|
|
5
|
+
const logger = createLogger('unchained:eventbridge');
|
|
6
|
+
|
|
7
|
+
const EventBridgeEventEmitter = ({ region, source, busName }): EmitAdapter => {
|
|
8
|
+
const ebClient = new EventBridgeClient({ region });
|
|
9
|
+
|
|
10
|
+
return {
|
|
11
|
+
publish: (eventName, payload) => {
|
|
12
|
+
const entry: PutEventsRequestEntry = {
|
|
13
|
+
Source: source,
|
|
14
|
+
DetailType: eventName,
|
|
15
|
+
EventBusName: busName,
|
|
16
|
+
Detail: JSON.stringify(payload),
|
|
17
|
+
};
|
|
18
|
+
ebClient
|
|
19
|
+
.send(
|
|
20
|
+
new PutEventsCommand({
|
|
21
|
+
Entries: [entry],
|
|
22
|
+
}),
|
|
23
|
+
)
|
|
24
|
+
.catch((e) => {
|
|
25
|
+
logger.warn(e);
|
|
26
|
+
});
|
|
27
|
+
},
|
|
28
|
+
subscribe: () => {
|
|
29
|
+
throw new Error("You can't subscribe to EventBridge connected Events");
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const { EVENT_BRIDGE_REGION, EVENT_BRIDGE_SOURCE, EVENT_BRIDGE_BUS_NAME } = process.env;
|
|
35
|
+
if (EVENT_BRIDGE_REGION && EVENT_BRIDGE_SOURCE && EVENT_BRIDGE_BUS_NAME) {
|
|
36
|
+
setEmitAdapter(
|
|
37
|
+
EventBridgeEventEmitter({
|
|
38
|
+
source: EVENT_BRIDGE_SOURCE,
|
|
39
|
+
region: EVENT_BRIDGE_REGION,
|
|
40
|
+
busName: EVENT_BRIDGE_BUS_NAME,
|
|
41
|
+
}),
|
|
42
|
+
);
|
|
43
|
+
}
|
package/src/events/redis.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createClient } from '@redis/client';
|
|
2
2
|
import { setEmitAdapter, EmitAdapter } from '@unchainedshop/events';
|
|
3
3
|
|
|
4
|
-
const { REDIS_PORT = '6379', REDIS_HOST
|
|
4
|
+
const { REDIS_PORT = '6379', REDIS_HOST, REDIS_DB = '0' } = process.env;
|
|
5
5
|
|
|
6
6
|
const subscribedEvents = new Set();
|
|
7
7
|
|
|
@@ -29,4 +29,6 @@ const RedisEventEmitter = (): EmitAdapter => {
|
|
|
29
29
|
};
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
if (REDIS_HOST && REDIS_PORT && REDIS_DB) {
|
|
33
|
+
setEmitAdapter(RedisEventEmitter());
|
|
34
|
+
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference lib="dom" />
|
|
2
1
|
import { URL } from 'url';
|
|
3
2
|
import { Readable, PassThrough } from 'stream';
|
|
4
3
|
import { pipeline } from 'stream/promises';
|
|
@@ -12,6 +11,7 @@ import {
|
|
|
12
11
|
} from '@unchainedshop/file-upload';
|
|
13
12
|
import { UploadFileData } from '@unchainedshop/file-upload';
|
|
14
13
|
import sign from './sign.js';
|
|
14
|
+
import { filesSettings } from '@unchainedshop/core-files';
|
|
15
15
|
|
|
16
16
|
const { ROOT_URL } = process.env;
|
|
17
17
|
|
|
@@ -29,11 +29,21 @@ export const GridFSAdapter: IFileAdapter = {
|
|
|
29
29
|
version: '1.0.0',
|
|
30
30
|
|
|
31
31
|
...FileAdapter,
|
|
32
|
+
async createDownloadURL(file, expiry) {
|
|
33
|
+
// If public, just return the stored path from the db
|
|
34
|
+
if (!file.meta?.isPrivate) return file?.url;
|
|
32
35
|
|
|
36
|
+
const expiryTimestamp =
|
|
37
|
+
expiry ||
|
|
38
|
+
new Date(new Date().getTime() + (filesSettings?.privateFileSharingMaxAge || 0)).getTime();
|
|
39
|
+
|
|
40
|
+
const signature = await sign(file.path, file._id, expiryTimestamp);
|
|
41
|
+
return `${file.url}?s=${signature}&e=${expiryTimestamp}`;
|
|
42
|
+
},
|
|
33
43
|
async createSignedURL(directoryName, fileName) {
|
|
34
44
|
const expiryDate = resolveExpirationDate();
|
|
35
|
-
const hashedFilename = buildHashedFilename(directoryName, fileName, expiryDate);
|
|
36
|
-
const signature = sign(directoryName, hashedFilename, expiryDate.getTime());
|
|
45
|
+
const hashedFilename = await buildHashedFilename(directoryName, fileName, expiryDate);
|
|
46
|
+
const signature = await sign(directoryName, hashedFilename, expiryDate.getTime());
|
|
37
47
|
|
|
38
48
|
const putURL = new URL(
|
|
39
49
|
`/gridfs/${directoryName}/${encodeURIComponent(
|
|
@@ -67,7 +77,7 @@ export const GridFSAdapter: IFileAdapter = {
|
|
|
67
77
|
}
|
|
68
78
|
|
|
69
79
|
const expiryDate = resolveExpirationDate();
|
|
70
|
-
const hashedFilename = buildHashedFilename(directoryName, fileName, expiryDate);
|
|
80
|
+
const hashedFilename = await buildHashedFilename(directoryName, fileName, expiryDate);
|
|
71
81
|
const type = mimeType.lookup(fileName) || (await Promise.resolve(rawFile)).mimetype;
|
|
72
82
|
|
|
73
83
|
const writeStream = await modules.gridfsFileUploads.createWriteStream(
|
|
@@ -100,7 +110,7 @@ export const GridFSAdapter: IFileAdapter = {
|
|
|
100
110
|
const fileName = decodeURIComponent(fname || href.split('/').pop());
|
|
101
111
|
|
|
102
112
|
const expiryDate = resolveExpirationDate();
|
|
103
|
-
const hashedFilename = buildHashedFilename(directoryName, fileName, expiryDate);
|
|
113
|
+
const hashedFilename = await buildHashedFilename(directoryName, fileName, expiryDate);
|
|
104
114
|
|
|
105
115
|
const response = await fetch(href, { headers });
|
|
106
116
|
if (!response.ok) throw new Error(`Unexpected response for ${href}: ${response.statusText}`);
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { pipeline, finished } from 'stream/promises';
|
|
2
2
|
import { PassThrough } from 'stream';
|
|
3
|
-
import { log, LogLevel } from '@unchainedshop/logger';
|
|
4
3
|
import { buildHashedFilename } from '@unchainedshop/file-upload';
|
|
5
|
-
import { Context } from '@unchainedshop/api';
|
|
6
4
|
import express from 'express';
|
|
7
5
|
import sign from './sign.js';
|
|
8
6
|
import { configureGridFSFileUploadModule } from './index.js';
|
|
7
|
+
import { Context } from '@unchainedshop/api';
|
|
8
|
+
import { createLogger } from '@unchainedshop/logger';
|
|
9
|
+
import { getFileAdapter } from '@unchainedshop/core-files';
|
|
9
10
|
|
|
10
11
|
const { ROOT_URL } = process.env;
|
|
11
12
|
|
|
13
|
+
const logger = createLogger('unchained:plugins:gridfs');
|
|
14
|
+
|
|
12
15
|
export const gridfsHandler = async (
|
|
13
16
|
req: express.Request & {
|
|
14
17
|
unchainedContext: Context & {
|
|
@@ -39,15 +42,14 @@ export const gridfsHandler = async (
|
|
|
39
42
|
if (req.method === 'PUT') {
|
|
40
43
|
const { s: signature, e: expiryTimestamp } = req.query;
|
|
41
44
|
const expiryDate = new Date(parseInt(expiryTimestamp as string, 10));
|
|
42
|
-
const fileId = buildHashedFilename(directoryName, fileName, expiryDate);
|
|
43
|
-
if (sign(directoryName, fileId, expiryDate.getTime()) === signature) {
|
|
45
|
+
const fileId = await buildHashedFilename(directoryName, fileName, expiryDate);
|
|
46
|
+
if ((await sign(directoryName, fileId, expiryDate.getTime())) === signature) {
|
|
44
47
|
const file = await modules.files.findFile({ fileId });
|
|
45
48
|
if (file.expires === null) {
|
|
46
49
|
res.statusCode = 400;
|
|
47
50
|
res.end('File already linked');
|
|
48
51
|
return;
|
|
49
52
|
}
|
|
50
|
-
|
|
51
53
|
// If the type is octet-stream, prefer mimetype lookup from the filename
|
|
52
54
|
// Else prefer the content-type header
|
|
53
55
|
const type =
|
|
@@ -64,7 +66,7 @@ export const gridfsHandler = async (
|
|
|
64
66
|
await pipeline(req, new PassThrough(), writeStream);
|
|
65
67
|
|
|
66
68
|
const { length } = writeStream;
|
|
67
|
-
await services.files.linkFile({ fileId, size: length, type }
|
|
69
|
+
await services.files.linkFile({ fileId, size: length, type });
|
|
68
70
|
|
|
69
71
|
res.statusCode = 200;
|
|
70
72
|
res.end();
|
|
@@ -77,8 +79,26 @@ export const gridfsHandler = async (
|
|
|
77
79
|
|
|
78
80
|
if (req.method === 'GET') {
|
|
79
81
|
const fileId = fileName;
|
|
80
|
-
|
|
82
|
+
const { s: signature, e: expiryTimestamp } = req.query;
|
|
81
83
|
const file = await modules.gridfsFileUploads.getFileInfo(directoryName, fileId);
|
|
84
|
+
const fileDocument = await modules.files.findFile({ fileId });
|
|
85
|
+
if (fileDocument?.meta?.isPrivate) {
|
|
86
|
+
const expiry = parseInt(expiryTimestamp as string, 10);
|
|
87
|
+
if (expiry <= Date.now()) {
|
|
88
|
+
res.statusCode = 403;
|
|
89
|
+
res.end('Access restricted: Expired.');
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const fileUploadAdapter = getFileAdapter();
|
|
94
|
+
const signedUrl = await fileUploadAdapter.createDownloadURL(fileDocument, expiry);
|
|
95
|
+
|
|
96
|
+
if (new URL(signedUrl, 'file://').searchParams.get('s') !== signature) {
|
|
97
|
+
res.statusCode = 403;
|
|
98
|
+
res.end('Access restricted: Invalid signature.');
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
82
102
|
if (file?.metadata?.['content-type']) {
|
|
83
103
|
res.setHeader('Content-Type', file.metadata['content-type']);
|
|
84
104
|
}
|
|
@@ -97,11 +117,11 @@ export const gridfsHandler = async (
|
|
|
97
117
|
res.end();
|
|
98
118
|
} catch (e) {
|
|
99
119
|
if (e.code === 'ENOENT') {
|
|
100
|
-
|
|
120
|
+
logger.warn(e);
|
|
101
121
|
res.statusCode = 404;
|
|
102
122
|
res.end(e.message);
|
|
103
123
|
} else {
|
|
104
|
-
|
|
124
|
+
logger.warn(e);
|
|
105
125
|
res.statusCode = 503;
|
|
106
126
|
res.end(JSON.stringify({ name: e.name, code: e.code, message: e.message }));
|
|
107
127
|
}
|
package/src/files/gridfs/sign.ts
CHANGED
|
@@ -1,16 +1,28 @@
|
|
|
1
|
-
import crypto from 'crypto';
|
|
2
|
-
|
|
3
1
|
const { UNCHAINED_GRIDFS_PUT_UPLOAD_SECRET } = process.env;
|
|
4
2
|
|
|
5
|
-
const sign = (directoryName, hash, expiryTimestamp) => {
|
|
3
|
+
const sign = async (directoryName, hash, expiryTimestamp) => {
|
|
6
4
|
if (!UNCHAINED_GRIDFS_PUT_UPLOAD_SECRET)
|
|
7
5
|
throw new Error(
|
|
8
|
-
'To enable PUT based uploads you have to provide a random UNCHAINED_GRIDFS_PUT_UPLOAD_SECRET environment variable',
|
|
6
|
+
'To enable PUT based uploads or signed downloads you have to provide a random UNCHAINED_GRIDFS_PUT_UPLOAD_SECRET environment variable',
|
|
9
7
|
);
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
|
|
9
|
+
const key = await crypto.subtle.importKey(
|
|
10
|
+
'raw',
|
|
11
|
+
new TextEncoder().encode(UNCHAINED_GRIDFS_PUT_UPLOAD_SECRET),
|
|
12
|
+
{ name: 'HMAC', hash: 'SHA-256' },
|
|
13
|
+
false,
|
|
14
|
+
['sign'],
|
|
15
|
+
);
|
|
16
|
+
const signatureBinary = await crypto.subtle.sign(
|
|
17
|
+
'HMAC',
|
|
18
|
+
key,
|
|
19
|
+
new TextEncoder().encode([directoryName, hash, expiryTimestamp].join(':')),
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
const hmacSubtle = Array.from(new Uint8Array(signatureBinary))
|
|
23
|
+
.map((byte) => byte.toString(16).padStart(2, '0'))
|
|
24
|
+
.join('');
|
|
25
|
+
return hmacSubtle;
|
|
14
26
|
};
|
|
15
27
|
|
|
16
28
|
export default sign;
|
|
@@ -10,12 +10,13 @@ import {
|
|
|
10
10
|
resolveExpirationDate,
|
|
11
11
|
IFileAdapter,
|
|
12
12
|
} from '@unchainedshop/file-upload';
|
|
13
|
-
|
|
14
|
-
import { log, LogLevel } from '@unchainedshop/logger';
|
|
15
13
|
import mimeType from 'mime-types';
|
|
16
14
|
import { Client } from 'minio';
|
|
17
15
|
import { AssumeRoleProvider } from 'minio/dist/esm/AssumeRoleProvider.mjs';
|
|
18
|
-
import { expiryOffsetInMs } from '@unchainedshop/file-upload/put-expiration.js';
|
|
16
|
+
import { expiryOffsetInMs } from '@unchainedshop/file-upload/lib/put-expiration.js';
|
|
17
|
+
import { createLogger } from '@unchainedshop/logger';
|
|
18
|
+
|
|
19
|
+
const logger = createLogger('unchained:plugins:minio');
|
|
19
20
|
|
|
20
21
|
const {
|
|
21
22
|
MINIO_ACCESS_KEY,
|
|
@@ -33,9 +34,8 @@ let client: Client;
|
|
|
33
34
|
|
|
34
35
|
export async function connectToMinio() {
|
|
35
36
|
if (!MINIO_ENDPOINT || !MINIO_BUCKET_NAME) {
|
|
36
|
-
|
|
37
|
+
logger.error(
|
|
37
38
|
'Please configure Minio/S3 by providing MINIO_ENDPOINT & MINIO_BUCKET_NAME to use upload features',
|
|
38
|
-
{ level: LogLevel.Error },
|
|
39
39
|
);
|
|
40
40
|
return null;
|
|
41
41
|
}
|
|
@@ -67,9 +67,7 @@ export async function connectToMinio() {
|
|
|
67
67
|
}
|
|
68
68
|
return minioClient;
|
|
69
69
|
} catch (error) {
|
|
70
|
-
|
|
71
|
-
level: LogLevel.Error,
|
|
72
|
-
});
|
|
70
|
+
logger.error(`Exception while creating Minio client: ${error.message}`);
|
|
73
71
|
}
|
|
74
72
|
return null;
|
|
75
73
|
}
|
|
@@ -126,11 +124,16 @@ export const MinioAdapter: IFileAdapter = {
|
|
|
126
124
|
|
|
127
125
|
...FileAdapter,
|
|
128
126
|
|
|
127
|
+
async createDownloadURL(file) {
|
|
128
|
+
if (file.meta?.isPrivate) throw new Error("Minio Plugin doesn't support private files yet");
|
|
129
|
+
return generateMinioUrl(file.name, file._id);
|
|
130
|
+
},
|
|
131
|
+
|
|
129
132
|
async createSignedURL(directoryName, fileName) {
|
|
130
133
|
if (!client) throw new Error('Minio not connected, check env variables');
|
|
131
134
|
|
|
132
135
|
const expiryDate = resolveExpirationDate();
|
|
133
|
-
const _id = buildHashedFilename(directoryName, fileName, expiryDate);
|
|
136
|
+
const _id = await buildHashedFilename(directoryName, fileName, expiryDate);
|
|
134
137
|
|
|
135
138
|
const url = await client.presignedPutObject(
|
|
136
139
|
MINIO_BUCKET_NAME,
|
|
@@ -173,7 +176,7 @@ export const MinioAdapter: IFileAdapter = {
|
|
|
173
176
|
stream = bufferToStream(Buffer.from(rawFile.buffer, 'base64'));
|
|
174
177
|
}
|
|
175
178
|
|
|
176
|
-
const _id = buildHashedFilename(directoryName, fileName, new Date());
|
|
179
|
+
const _id = await buildHashedFilename(directoryName, fileName, new Date());
|
|
177
180
|
const type = mimeType.lookup(fileName) || (await Promise.resolve(rawFile)).mimetype;
|
|
178
181
|
|
|
179
182
|
const metaData = {
|
|
@@ -206,7 +209,7 @@ export const MinioAdapter: IFileAdapter = {
|
|
|
206
209
|
|
|
207
210
|
const { href } = new URL(fileLink);
|
|
208
211
|
const fileName = fname || href.split('/').pop();
|
|
209
|
-
const hashedFilename = buildHashedFilename(directoryName, fileName, new Date());
|
|
212
|
+
const hashedFilename = await buildHashedFilename(directoryName, fileName, new Date());
|
|
210
213
|
|
|
211
214
|
const stream = await createHttpDownloadStream(fileLink, headers);
|
|
212
215
|
const type = mimeType.lookup(fileName) || stream.headers['content-type'];
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createLogger } from '@unchainedshop/logger';
|
|
2
|
+
|
|
3
|
+
const logger = createLogger('unchained:plugins:minio');
|
|
2
4
|
|
|
3
5
|
const { MINIO_WEBHOOK_AUTH_TOKEN } = process.env;
|
|
4
6
|
|
|
@@ -18,7 +20,7 @@ export const minioHandler = async (req, res) => {
|
|
|
18
20
|
const { size, contentType: type } = object;
|
|
19
21
|
const [fileId] = object.key.split('.');
|
|
20
22
|
const { services } = req.unchainedContext;
|
|
21
|
-
await services.files.linkFile({ fileId, type, size }
|
|
23
|
+
await services.files.linkFile({ fileId, type, size });
|
|
22
24
|
res.writeHead(200);
|
|
23
25
|
res.end();
|
|
24
26
|
return;
|
|
@@ -27,7 +29,7 @@ export const minioHandler = async (req, res) => {
|
|
|
27
29
|
res.writeHead(404);
|
|
28
30
|
res.end();
|
|
29
31
|
} catch (e) {
|
|
30
|
-
|
|
32
|
+
logger.error(e);
|
|
31
33
|
res.writeHead(503);
|
|
32
34
|
res.end(JSON.stringify({ name: e.name, code: e.code, message: e.message }));
|
|
33
35
|
}
|