@unchainedshop/plugins 3.0.0-alpha7 → 3.0.0-rc10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/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 +2 -3
- 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 +7 -1
- package/lib/files/gridfs/gridfs-adapter.d.ts.map +1 -1
- package/lib/files/gridfs/gridfs-adapter.js +16 -8
- 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 +27 -8
- package/lib/files/gridfs/gridfs-webhook.js.map +1 -1
- package/lib/files/gridfs/index.d.ts +1 -0
- package/lib/files/gridfs/index.d.ts.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 +19 -32
- 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 +16 -21
- 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 +5 -10
- 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.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 +10 -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 +9 -15
- 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 +3 -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 +1 -2
- 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 +1 -2
- 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 +1 -2
- 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 +18 -19
- 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 +123 -85
- 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 +2 -3
- package/src/events/redis.ts +4 -2
- package/src/files/gridfs/gridfs-adapter.ts +29 -12
- package/src/files/gridfs/gridfs-webhook.ts +31 -11
- package/src/files/gridfs/index.ts +2 -0
- package/src/files/gridfs/sign.ts +20 -8
- package/src/files/minio/minio-adapter.ts +21 -37
- 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 +23 -41
- 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 +8 -12
- 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 +16 -7
- package/src/payment/payrexx/api/makeFetcher.ts +12 -16
- 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 +6 -5
- package/src/pricing/delivery-swiss-tax.ts +6 -2
- package/src/pricing/discount-100-off.ts +2 -2
- package/src/pricing/discount-half-price-manual.ts +6 -3
- package/src/pricing/discount-half-price.ts +6 -3
- 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 +20 -22
- 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/tests/mock/datatrans/v1/secure-fields.json +4 -0
- package/tests/mock/datatrans/v1/transactions/authorize.json +48 -0
- package/tests/mock/datatrans/v1/transactions/card_check_authorized.json +47 -0
- package/tests/mock/datatrans/v1/transactions/payment_alias_authorized/settle.json +1 -0
- package/tests/mock/datatrans/v1/transactions/payment_alias_authorized.json +48 -0
- package/tests/mock/datatrans/v1/transactions/payment_authorized/cancel.json +1 -0
- package/tests/mock/datatrans/v1/transactions/payment_authorized/settle.json +1 -0
- package/tests/mock/datatrans/v1/transactions/payment_authorized.json +48 -0
- package/tests/mock/datatrans/v1/transactions/payment_authorized_low_amount/cancel.json +1 -0
- package/tests/mock/datatrans/v1/transactions/payment_authorized_low_amount.json +48 -0
- package/tests/mock/datatrans/v1/transactions/validate.json +1 -0
- package/tests/mock/datatrans/v1/transactions.json +4 -0
- package/tests/mock/payrexx/Gateway/1000001.json +106 -0
- package/tests/mock/payrexx/Gateway.json +24 -0
- package/tests/mock/payrexx/transaction_example1.json +65 -0
- package/tests/mock/payrexx/transaction_example2.json +65 -0
- package/tests/mock/payrexx/transaction_example3.json +94 -0
- package/tsconfig.json +4 -5
- /package/src/payment/datatrans-v2/api/{types.d.ts → types.ts} +0 -0
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { WorkerDirector, WorkerAdapter } from '@unchainedshop/core
|
|
2
|
-
import { createLogger
|
|
1
|
+
import { WorkerDirector, WorkerAdapter, IWorkerAdapter } from '@unchainedshop/core';
|
|
2
|
+
import { createLogger } from '@unchainedshop/logger';
|
|
3
3
|
import JSONStream from 'JSONStream';
|
|
4
4
|
import { EventIterator } from 'event-iterator';
|
|
5
5
|
import { UnchainedCore } from '@unchainedshop/core';
|
|
6
|
-
import { IWorkerAdapter } from '@unchainedshop/core-worker';
|
|
7
6
|
|
|
8
|
-
const logger = createLogger('unchained:
|
|
7
|
+
const logger = createLogger('unchained:worker:bulk-import');
|
|
9
8
|
|
|
10
|
-
const streamPayloadToBulkImporter = async (
|
|
11
|
-
|
|
9
|
+
const streamPayloadToBulkImporter = async (
|
|
10
|
+
bulkImporter,
|
|
11
|
+
payloadId,
|
|
12
|
+
unchainedAPI: Pick<UnchainedCore, 'bulkImporter' | 'modules' | 'services'>,
|
|
13
|
+
) => {
|
|
14
|
+
logger.trace(`parseAsync start`);
|
|
12
15
|
|
|
13
|
-
const readStream = await unchainedAPI.services.files.createDownloadStream(
|
|
14
|
-
{ fileId: payloadId },
|
|
15
|
-
unchainedAPI,
|
|
16
|
-
);
|
|
16
|
+
const readStream = await unchainedAPI.services.files.createDownloadStream({ fileId: payloadId });
|
|
17
17
|
|
|
18
18
|
if (!readStream) {
|
|
19
19
|
throw new Error(
|
|
@@ -48,7 +48,7 @@ const streamPayloadToBulkImporter = async (bulkImporter, payloadId, unchainedAPI
|
|
|
48
48
|
await bulkImporter.prepare(event, unchainedAPI);
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
logger.
|
|
51
|
+
logger.trace(`parseAsync done`);
|
|
52
52
|
};
|
|
53
53
|
|
|
54
54
|
export const BulkImportWorker: IWorkerAdapter<any, Record<string, unknown>> = {
|
|
@@ -69,7 +69,6 @@ export const BulkImportWorker: IWorkerAdapter<any, Record<string, unknown>> = {
|
|
|
69
69
|
} = rawPayload;
|
|
70
70
|
|
|
71
71
|
const bulkImporter = unchainedAPI.bulkImporter.createBulkImporter({
|
|
72
|
-
logger,
|
|
73
72
|
createShouldUpsertIfIDExists,
|
|
74
73
|
updateShouldUpsertIfIDNotExists,
|
|
75
74
|
skipCacheInvalidation,
|
|
@@ -103,7 +102,7 @@ export const BulkImportWorker: IWorkerAdapter<any, Record<string, unknown>> = {
|
|
|
103
102
|
result,
|
|
104
103
|
};
|
|
105
104
|
} catch (err) {
|
|
106
|
-
logger.error(err
|
|
105
|
+
logger.error(err);
|
|
107
106
|
return {
|
|
108
107
|
success: false,
|
|
109
108
|
error: {
|
package/src/worker/email.ts
CHANGED
|
@@ -1,21 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { join, isAbsolute } from 'path';
|
|
3
|
-
import { tmpdir } from 'os';
|
|
4
|
-
import { WorkerDirector, WorkerAdapter } from '@unchainedshop/core-worker';
|
|
5
|
-
import { createLogger } from '@unchainedshop/logger';
|
|
6
|
-
import { IWorkerAdapter } from '@unchainedshop/core-worker';
|
|
7
|
-
import open from 'open';
|
|
1
|
+
import { WorkerDirector, WorkerAdapter, IWorkerAdapter } from '@unchainedshop/core';
|
|
8
2
|
import nodemailer from 'nodemailer';
|
|
9
3
|
|
|
10
|
-
const logger = createLogger('unchained:plugins:worker:email');
|
|
11
|
-
|
|
12
4
|
export const checkEmailInterceptionEnabled = () => {
|
|
13
5
|
return process.env.NODE_ENV !== 'production' && !process.env.UNCHAINED_DISABLE_EMAIL_INTERCEPTION;
|
|
14
6
|
};
|
|
15
7
|
|
|
16
|
-
const buildLink = ({ filename, content, href, contentType, encoding, path }) => {
|
|
8
|
+
const buildLink = async ({ filename, content, href, contentType, encoding, path }) => {
|
|
17
9
|
if (path) {
|
|
18
|
-
return `<a href="
|
|
10
|
+
return `<a href="file:/${path.startsWith('/') ? path : `${process.cwd()}/${path}`}">${filename}</a>`;
|
|
19
11
|
}
|
|
20
12
|
if (href) {
|
|
21
13
|
return `<a href="${href}">${filename}</a>`;
|
|
@@ -27,8 +19,12 @@ const buildLink = ({ filename, content, href, contentType, encoding, path }) =>
|
|
|
27
19
|
};
|
|
28
20
|
|
|
29
21
|
const openInBrowser = async (options) => {
|
|
30
|
-
|
|
22
|
+
// eslint-disable-next-line
|
|
23
|
+
// @ts-ignore
|
|
24
|
+
const { default: open, apps } = await import('open');
|
|
25
|
+
|
|
31
26
|
const messageBody = options.html || options.text.replace(/(\r\n|\n|\r)/gm, '<br/>');
|
|
27
|
+
const attachmentLinks = await Promise.all((options.attachments || []).map(buildLink));
|
|
32
28
|
const content = `
|
|
33
29
|
<!DOCTYPE html>
|
|
34
30
|
<html lang="en" xmlns="https://www.w3.org/1999/xhtml" xmlns:o="urn:schemas-microsoft-com:office:office">
|
|
@@ -44,16 +40,17 @@ const openInBrowser = async (options) => {
|
|
|
44
40
|
<b>Reply-To: </b>${options.replyTo}<br/>
|
|
45
41
|
<br/>
|
|
46
42
|
<b>subject: </b>${options.subject}<br/>
|
|
47
|
-
<b>attachments: </b>${
|
|
43
|
+
<b>attachments: </b>${attachmentLinks.join(', ')}<br/>
|
|
48
44
|
<hr/>
|
|
49
45
|
${messageBody}
|
|
50
46
|
</body>
|
|
51
47
|
</html>`;
|
|
52
48
|
|
|
53
|
-
const
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
49
|
+
const base64 = Buffer.from(content).toString('base64');
|
|
50
|
+
const dataUri = `data:text/html;base64,${base64}`;
|
|
51
|
+
|
|
52
|
+
await open(dataUri, { app: [{ name: apps.chrome }, { name: apps.firefox }, { name: apps.browser }] });
|
|
53
|
+
return true;
|
|
57
54
|
};
|
|
58
55
|
|
|
59
56
|
const EmailWorkerPlugin: IWorkerAdapter<
|
|
@@ -73,8 +70,6 @@ const EmailWorkerPlugin: IWorkerAdapter<
|
|
|
73
70
|
type: 'EMAIL',
|
|
74
71
|
|
|
75
72
|
doWork: async ({ from, to, subject, ...rest }) => {
|
|
76
|
-
logger.debug(`${EmailWorkerPlugin.key} -> doWork: ${from} -> ${to} (${subject})`);
|
|
77
|
-
|
|
78
73
|
if (!to) {
|
|
79
74
|
return {
|
|
80
75
|
success: false,
|
|
@@ -93,9 +88,12 @@ const EmailWorkerPlugin: IWorkerAdapter<
|
|
|
93
88
|
...rest,
|
|
94
89
|
};
|
|
95
90
|
if (checkEmailInterceptionEnabled()) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
91
|
+
const opened = await openInBrowser(sendMailOptions);
|
|
92
|
+
return {
|
|
93
|
+
success: opened,
|
|
94
|
+
result: opened ? { intercepted: true } : undefined,
|
|
95
|
+
error: !opened ? { message: "Interception failed due to missing package 'open'" } : undefined,
|
|
96
|
+
};
|
|
99
97
|
}
|
|
100
98
|
if (!process.env.MAIL_URL) {
|
|
101
99
|
return {
|
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
import { Enrollment } from '@unchainedshop/core-enrollments';
|
|
2
2
|
import { OrderPosition } from '@unchainedshop/core-orders';
|
|
3
|
-
import {
|
|
4
|
-
import { IWorkerAdapter } from '@unchainedshop/core-worker';
|
|
3
|
+
import { enrollmentsSettings, EnrollmentStatus } from '@unchainedshop/core-enrollments';
|
|
5
4
|
import {
|
|
6
5
|
EnrollmentDirector,
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
UnchainedCore,
|
|
7
|
+
WorkerDirector,
|
|
8
|
+
WorkerAdapter,
|
|
9
|
+
IWorkerAdapter,
|
|
10
|
+
} from '@unchainedshop/core';
|
|
12
11
|
|
|
13
12
|
const generateOrder = async (
|
|
14
13
|
enrollment: Enrollment,
|
|
15
14
|
params: {
|
|
16
|
-
|
|
15
|
+
orderPositions: Array<OrderPosition>;
|
|
17
16
|
} & { [x: string]: any },
|
|
18
|
-
unchainedAPI: UnchainedCore,
|
|
17
|
+
unchainedAPI: Pick<UnchainedCore, 'modules' | 'services'>,
|
|
19
18
|
) => {
|
|
20
19
|
if (!enrollment.payment || !enrollment.delivery) return null;
|
|
21
20
|
|
|
22
|
-
const { modules } = unchainedAPI;
|
|
23
|
-
const {
|
|
21
|
+
const { modules, services } = unchainedAPI;
|
|
22
|
+
const { orderPositions, ...configuration } = params;
|
|
24
23
|
let order = await modules.orders.create({
|
|
25
24
|
userId: enrollment.userId,
|
|
26
25
|
currency: enrollment.currencyCode,
|
|
@@ -32,46 +31,38 @@ const generateOrder = async (
|
|
|
32
31
|
});
|
|
33
32
|
const orderId = order._id;
|
|
34
33
|
|
|
35
|
-
if (
|
|
34
|
+
if (orderPositions) {
|
|
36
35
|
await Promise.all(
|
|
37
|
-
|
|
38
|
-
modules.orders.positions.addProductItem(orderPosition, { order, product }, unchainedAPI),
|
|
39
|
-
),
|
|
36
|
+
orderPositions.map((orderPosition) => modules.orders.positions.addProductItem(orderPosition)),
|
|
40
37
|
);
|
|
41
38
|
} else {
|
|
42
39
|
const product = await modules.products.findProduct({
|
|
43
40
|
productId: enrollment.productId,
|
|
44
41
|
});
|
|
45
|
-
await modules.orders.positions.addProductItem(
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
unchainedAPI,
|
|
52
|
-
);
|
|
42
|
+
await modules.orders.positions.addProductItem({
|
|
43
|
+
quantity: 1,
|
|
44
|
+
productId: product._id,
|
|
45
|
+
originalProductId: product._id,
|
|
46
|
+
orderId: order._id,
|
|
47
|
+
});
|
|
53
48
|
}
|
|
54
49
|
|
|
55
50
|
const { paymentProviderId, context: paymentContext } = enrollment.payment;
|
|
56
51
|
if (paymentProviderId) {
|
|
57
|
-
await modules.orders.setPaymentProvider(orderId, paymentProviderId
|
|
52
|
+
await modules.orders.setPaymentProvider(orderId, paymentProviderId);
|
|
58
53
|
}
|
|
59
54
|
|
|
60
55
|
const { deliveryProviderId, context: deliveryContext } = enrollment.delivery;
|
|
61
56
|
if (deliveryProviderId) {
|
|
62
|
-
await modules.orders.setDeliveryProvider(orderId, deliveryProviderId
|
|
57
|
+
await modules.orders.setDeliveryProvider(orderId, deliveryProviderId);
|
|
63
58
|
}
|
|
64
59
|
|
|
65
|
-
await
|
|
60
|
+
await services.orders.updateCalculation(orderId);
|
|
66
61
|
|
|
67
|
-
order = await
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
deliveryContext,
|
|
72
|
-
},
|
|
73
|
-
unchainedAPI,
|
|
74
|
-
);
|
|
62
|
+
order = await services.orders.checkoutOrder(order._id, {
|
|
63
|
+
paymentContext,
|
|
64
|
+
deliveryContext,
|
|
65
|
+
});
|
|
75
66
|
|
|
76
67
|
return order;
|
|
77
68
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { WorkerDirector, WorkerAdapter } from '@unchainedshop/core
|
|
1
|
+
import { WorkStatus } from '@unchainedshop/core-worker';
|
|
2
|
+
import { IWorkerAdapter, WorkerDirector, WorkerAdapter } from '@unchainedshop/core';
|
|
3
3
|
import later from '@breejs/later';
|
|
4
4
|
|
|
5
5
|
type Arg = {
|
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
WorkerAdapter,
|
|
4
|
-
WorkerEventTypes,
|
|
5
|
-
Work,
|
|
6
|
-
IWorkerAdapter,
|
|
7
|
-
} from '@unchainedshop/core-worker';
|
|
8
|
-
import { UnchainedCore } from '@unchainedshop/core';
|
|
1
|
+
import { WorkerEventTypes, Work } from '@unchainedshop/core-worker';
|
|
2
|
+
import { IWorkerAdapter, UnchainedCore, WorkerAdapter, WorkerDirector } from '@unchainedshop/core';
|
|
9
3
|
import { subscribe } from '@unchainedshop/events';
|
|
10
4
|
|
|
11
5
|
export const ExportTokenWorker: IWorkerAdapter<void, void> = {
|
package/src/worker/external.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { IWorkerAdapter } from '@unchainedshop/core
|
|
2
|
-
import { WorkerDirector, WorkerAdapter } from '@unchainedshop/core-worker';
|
|
1
|
+
import { IWorkerAdapter, WorkerAdapter, WorkerDirector } from '@unchainedshop/core';
|
|
3
2
|
|
|
4
3
|
export const ExternalWorkerPlugin: IWorkerAdapter<void, void> = {
|
|
5
4
|
...WorkerAdapter,
|
package/src/worker/heartbeat.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { IWorkerAdapter } from '@unchainedshop/core
|
|
2
|
-
import { WorkerDirector, WorkerAdapter } from '@unchainedshop/core-worker';
|
|
1
|
+
import { IWorkerAdapter, WorkerAdapter, WorkerDirector } from '@unchainedshop/core';
|
|
3
2
|
|
|
4
3
|
const wait = async (time: number) => {
|
|
5
4
|
return new Promise((resolve) => {
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import { IWorkerAdapter } from '@unchainedshop/core-worker';
|
|
3
|
-
import { WorkerDirector, WorkerAdapter } from '@unchainedshop/core-worker';
|
|
4
|
-
import { log, LogLevel } from '@unchainedshop/logger';
|
|
1
|
+
import { IWorkerAdapter, WorkerAdapter, WorkerDirector } from '@unchainedshop/core';
|
|
5
2
|
|
|
6
3
|
const postFetch = async (url, { data, headers }) => {
|
|
7
4
|
return fetch(url, {
|
|
@@ -33,10 +30,6 @@ const HttpRequestWorkerPlugin: IWorkerAdapter<
|
|
|
33
30
|
type: 'HTTP_REQUEST',
|
|
34
31
|
|
|
35
32
|
async doWork({ url, data = {}, headers, method = 'POST' } = { method: 'POST' }) {
|
|
36
|
-
log(`${this.key} -> doWork: ${method} ${url} ${data}`, {
|
|
37
|
-
level: LogLevel.Debug,
|
|
38
|
-
});
|
|
39
|
-
|
|
40
33
|
if (!url) {
|
|
41
34
|
return {
|
|
42
35
|
success: false,
|
package/src/worker/message.ts
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
import { MessagingDirector } from '@unchainedshop/core
|
|
2
|
-
import {
|
|
3
|
-
import { createLogger } from '@unchainedshop/logger';
|
|
4
|
-
|
|
5
|
-
export const messagingLogger = createLogger('unchained:core-messaging');
|
|
1
|
+
import { MessagingDirector, IWorkerAdapter, WorkerAdapter, WorkerDirector } from '@unchainedshop/core';
|
|
2
|
+
import { Work } from '@unchainedshop/core-worker';
|
|
6
3
|
|
|
7
4
|
export const MessageWorker: IWorkerAdapter<
|
|
8
5
|
{ template: string; _id?: string; [x: string]: any },
|
|
@@ -42,7 +39,6 @@ export const MessageWorker: IWorkerAdapter<
|
|
|
42
39
|
}
|
|
43
40
|
return { success: true, result: { info: 'Skipped Message' } };
|
|
44
41
|
} catch (err) {
|
|
45
|
-
messagingLogger.warn(err.stack);
|
|
46
42
|
return {
|
|
47
43
|
success: false,
|
|
48
44
|
error: {
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createLogger } from '@unchainedshop/logger';
|
|
3
|
-
import { IWorkerAdapter } from '@unchainedshop/core-worker';
|
|
1
|
+
import { IWorkerAdapter, WorkerAdapter, WorkerDirector } from '@unchainedshop/core';
|
|
4
2
|
import webPush from 'web-push';
|
|
5
3
|
|
|
6
4
|
const { PUSH_NOTIFICATION_PUBLIC_KEY, PUSH_NOTIFICATION_PRIVATE_KEY } = process.env;
|
|
7
5
|
|
|
8
|
-
const logger = createLogger('unchained:plugins:worker:push-notification');
|
|
9
|
-
|
|
10
6
|
type NotificationOptions = {
|
|
11
7
|
vapidDetails: {
|
|
12
8
|
subject: string;
|
|
@@ -38,7 +34,6 @@ const PushNotificationWorkerPlugin: IWorkerAdapter<
|
|
|
38
34
|
type: 'PUSH',
|
|
39
35
|
|
|
40
36
|
doWork: async ({ subscription, subject, payload, urgency = null, topic = null }) => {
|
|
41
|
-
logger.debug(`${PushNotificationWorkerPlugin.key} -> doWork: Push -> ${subject}`);
|
|
42
37
|
if (!PUSH_NOTIFICATION_PUBLIC_KEY)
|
|
43
38
|
return {
|
|
44
39
|
success: false,
|
package/src/worker/sms.ts
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createLogger } from '@unchainedshop/logger';
|
|
3
|
-
import { IWorkerAdapter } from '@unchainedshop/core-worker';
|
|
1
|
+
import { IWorkerAdapter, WorkerAdapter, WorkerDirector } from '@unchainedshop/core';
|
|
4
2
|
import Twilio from 'twilio';
|
|
5
3
|
|
|
6
4
|
const { TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, TWILIO_SMS_FROM } = process.env;
|
|
7
5
|
|
|
8
|
-
const logger = createLogger('unchained:plugins:worker:sms');
|
|
9
|
-
|
|
10
6
|
/* Potential: no need for twilio npm
|
|
11
7
|
curl -X POST "https://api.twilio.com/2010-04-01/Accounts/$TWILIO_ACCOUNT_SID/Messages.json" \
|
|
12
8
|
--data-urlencode "From=+15017122661" \
|
|
@@ -32,8 +28,6 @@ const SmsWorkerPlugin: IWorkerAdapter<
|
|
|
32
28
|
type: 'SMS',
|
|
33
29
|
|
|
34
30
|
doWork: async ({ from, to, text }) => {
|
|
35
|
-
logger.debug(`${SmsWorkerPlugin.key} -> doWork: ${from} -> ${to}`);
|
|
36
|
-
|
|
37
31
|
if (!TWILIO_SMS_FROM && !from) {
|
|
38
32
|
return {
|
|
39
33
|
success: false,
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import { IWorkerAdapter } from '@unchainedshop/core-worker';
|
|
3
|
-
import { WorkerAdapter, WorkerDirector } from '@unchainedshop/core-worker';
|
|
1
|
+
import { IWorkerAdapter, WorkerAdapter, WorkerDirector } from '@unchainedshop/core';
|
|
4
2
|
import later from '@breejs/later';
|
|
5
3
|
import { ProductPriceRate } from '@unchainedshop/core-products';
|
|
6
4
|
import { resolveBestCurrency } from '@unchainedshop/utils';
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import { IWorkerAdapter } from '@unchainedshop/core-worker';
|
|
3
|
-
import { WorkerAdapter, WorkerDirector } from '@unchainedshop/core-worker';
|
|
1
|
+
import { IWorkerAdapter, WorkerAdapter, WorkerDirector } from '@unchainedshop/core';
|
|
4
2
|
import later from '@breejs/later';
|
|
5
3
|
import { xml2json } from 'xml-js';
|
|
6
4
|
import { ProductPriceRate } from '@unchainedshop/core-products';
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { IWorkerAdapter } from '@unchainedshop/core
|
|
2
|
-
import { WorkerDirector, WorkerAdapter } from '@unchainedshop/core-worker';
|
|
1
|
+
import { IWorkerAdapter, WorkerAdapter, WorkerDirector } from '@unchainedshop/core';
|
|
3
2
|
import later from '@breejs/later';
|
|
4
3
|
|
|
5
4
|
const everyMinute = later.parse.cron('* * * * *');
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { IWorkerAdapter } from '@unchainedshop/core
|
|
2
|
-
import { WorkerDirector, WorkerAdapter } from '@unchainedshop/core-worker';
|
|
3
|
-
import { createLogger } from '@unchainedshop/logger';
|
|
4
|
-
|
|
5
|
-
const logger = createLogger('unchained:platform:zombie-killer');
|
|
1
|
+
import { IWorkerAdapter, WorkerAdapter, WorkerDirector } from '@unchainedshop/core';
|
|
6
2
|
|
|
7
3
|
export const ZombieKillerWorker: IWorkerAdapter<
|
|
8
|
-
|
|
4
|
+
{ bulkImportMaxAgeInDays: number },
|
|
9
5
|
{
|
|
10
6
|
deletedProductMediaCount: number;
|
|
11
7
|
deletedAssortmentMediaCount: number;
|
|
12
8
|
deletedFilesCount: number;
|
|
9
|
+
deletedFilterTextsCount: number;
|
|
10
|
+
deletedProductTextsCount: number;
|
|
11
|
+
deletedProductVariationsCount: number;
|
|
12
|
+
deletedAssortmentTextsCount: number;
|
|
13
13
|
}
|
|
14
14
|
> = {
|
|
15
15
|
...WorkerAdapter,
|
|
@@ -19,7 +19,7 @@ export const ZombieKillerWorker: IWorkerAdapter<
|
|
|
19
19
|
version: '1.0.0',
|
|
20
20
|
type: 'ZOMBIE_KILLER',
|
|
21
21
|
|
|
22
|
-
doWork: async (
|
|
22
|
+
doWork: async ({ bulkImportMaxAgeInDays } = { bulkImportMaxAgeInDays: 5 }, unchainedAPI) => {
|
|
23
23
|
const { modules, services } = unchainedAPI;
|
|
24
24
|
|
|
25
25
|
try {
|
|
@@ -49,11 +49,7 @@ export const ZombieKillerWorker: IWorkerAdapter<
|
|
|
49
49
|
});
|
|
50
50
|
|
|
51
51
|
// Remove unreferenced product entities
|
|
52
|
-
const
|
|
53
|
-
{ includeDrafts: true },
|
|
54
|
-
{ projection: { _id: 1 } },
|
|
55
|
-
);
|
|
56
|
-
const productIds = products.map((a) => a._id);
|
|
52
|
+
const productIds = await modules.products.findProductIds({ includeDrafts: true });
|
|
57
53
|
const deletedProductTextsCount = await modules.products.texts.deleteMany({
|
|
58
54
|
excludedProductIds: productIds,
|
|
59
55
|
});
|
|
@@ -82,20 +78,25 @@ export const ZombieKillerWorker: IWorkerAdapter<
|
|
|
82
78
|
)
|
|
83
79
|
).map((a) => a._id);
|
|
84
80
|
|
|
85
|
-
const fileIdsToRemove =
|
|
86
|
-
|
|
87
|
-
|
|
81
|
+
const fileIdsToRemove =
|
|
82
|
+
allFileIdsRelevant.filter((fileId) => {
|
|
83
|
+
return !allFileIdsLinked.includes(fileId);
|
|
84
|
+
}) || [];
|
|
88
85
|
|
|
89
|
-
|
|
86
|
+
// Remove bulk import streams older than X days
|
|
87
|
+
const bulkImportMedia = await await modules.files.findFiles({
|
|
88
|
+
path: 'bulk-import-streams',
|
|
89
|
+
created: { $lt: new Date(Date.now() - 1000 * 60 * 60 * 24 * bulkImportMaxAgeInDays) },
|
|
90
|
+
});
|
|
91
|
+
bulkImportMedia.forEach(async (media) => {
|
|
92
|
+
fileIdsToRemove.push(media._id);
|
|
93
|
+
});
|
|
90
94
|
|
|
91
95
|
const deletedFilesCount =
|
|
92
96
|
fileIdsToRemove.length > 0
|
|
93
|
-
? await services.files.removeFiles(
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
},
|
|
97
|
-
unchainedAPI,
|
|
98
|
-
)
|
|
97
|
+
? await services.files.removeFiles({
|
|
98
|
+
fileIds: fileIdsToRemove,
|
|
99
|
+
})
|
|
99
100
|
: 0;
|
|
100
101
|
|
|
101
102
|
// Return delete count
|
|
@@ -121,7 +122,6 @@ export const ZombieKillerWorker: IWorkerAdapter<
|
|
|
121
122
|
result,
|
|
122
123
|
};
|
|
123
124
|
} catch (err) {
|
|
124
|
-
logger.error(err.message, err);
|
|
125
125
|
return {
|
|
126
126
|
success: false,
|
|
127
127
|
error: {
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"transactionId": "payment_alias_authorized",
|
|
3
|
+
"type": "payment",
|
|
4
|
+
"status": "authorized",
|
|
5
|
+
"currency": "CHF",
|
|
6
|
+
"refno": "MTExMTExMjIyMjI=",
|
|
7
|
+
"refno2": "user",
|
|
8
|
+
"paymentMethod": "VIS",
|
|
9
|
+
"detail": {
|
|
10
|
+
"authorize": {
|
|
11
|
+
"amount": 30000,
|
|
12
|
+
"acquirerAuthorizationCode": "131704"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"language": "de",
|
|
16
|
+
"card": {
|
|
17
|
+
"alias": "70119122433810042",
|
|
18
|
+
"masked": "424242xxxxxx4242",
|
|
19
|
+
"expiryMonth": "12",
|
|
20
|
+
"expiryYear": "21",
|
|
21
|
+
"info": {
|
|
22
|
+
"brand": "VISA CREDIT",
|
|
23
|
+
"type": "credit",
|
|
24
|
+
"usage": "consumer",
|
|
25
|
+
"country": "GB",
|
|
26
|
+
"issuer": "DATATRANS"
|
|
27
|
+
},
|
|
28
|
+
"3D": {
|
|
29
|
+
"authenticationResponse": "D"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"history": [
|
|
33
|
+
{
|
|
34
|
+
"action": "init",
|
|
35
|
+
"source": "api",
|
|
36
|
+
"date": "2021-09-03T11:16:50Z",
|
|
37
|
+
"success": true,
|
|
38
|
+
"ip": "212.232.234.26"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"action": "authorize",
|
|
42
|
+
"source": "redirect",
|
|
43
|
+
"date": "2021-09-03T11:17:04Z",
|
|
44
|
+
"success": true,
|
|
45
|
+
"ip": "212.232.234.26"
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"transactionId": "card_check_authorized",
|
|
3
|
+
"type": "card_check",
|
|
4
|
+
"status": "authorized",
|
|
5
|
+
"currency": "CHF",
|
|
6
|
+
"refno": "ZDRkNGQ0ZDRkNA==",
|
|
7
|
+
"refno2": "user",
|
|
8
|
+
"paymentMethod": "VIS",
|
|
9
|
+
"detail": {
|
|
10
|
+
"authorize": {
|
|
11
|
+
"acquirerAuthorizationCode": "131704"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"language": "de",
|
|
15
|
+
"card": {
|
|
16
|
+
"alias": "70119122433810042",
|
|
17
|
+
"masked": "424242xxxxxx4242",
|
|
18
|
+
"expiryMonth": "12",
|
|
19
|
+
"expiryYear": "21",
|
|
20
|
+
"info": {
|
|
21
|
+
"brand": "VISA CREDIT",
|
|
22
|
+
"type": "credit",
|
|
23
|
+
"usage": "consumer",
|
|
24
|
+
"country": "GB",
|
|
25
|
+
"issuer": "DATATRANS"
|
|
26
|
+
},
|
|
27
|
+
"3D": {
|
|
28
|
+
"authenticationResponse": "D"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"history": [
|
|
32
|
+
{
|
|
33
|
+
"action": "init",
|
|
34
|
+
"source": "api",
|
|
35
|
+
"date": "2021-09-03T11:16:50Z",
|
|
36
|
+
"success": true,
|
|
37
|
+
"ip": "212.232.234.26"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"action": "authorize",
|
|
41
|
+
"source": "redirect",
|
|
42
|
+
"date": "2021-09-03T11:17:04Z",
|
|
43
|
+
"success": true,
|
|
44
|
+
"ip": "212.232.234.26"
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"transactionId": "payment_authorized",
|
|
3
|
+
"type": "payment",
|
|
4
|
+
"status": "authorized",
|
|
5
|
+
"currency": "CHF",
|
|
6
|
+
"refno": "MTExMTExMjIyMjI=",
|
|
7
|
+
"refno2": "user",
|
|
8
|
+
"paymentMethod": "VIS",
|
|
9
|
+
"detail": {
|
|
10
|
+
"authorize": {
|
|
11
|
+
"amount": 10000,
|
|
12
|
+
"acquirerAuthorizationCode": "131704"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"language": "de",
|
|
16
|
+
"card": {
|
|
17
|
+
"alias": "70119122433810042",
|
|
18
|
+
"masked": "424242xxxxxx4242",
|
|
19
|
+
"expiryMonth": "12",
|
|
20
|
+
"expiryYear": "21",
|
|
21
|
+
"info": {
|
|
22
|
+
"brand": "VISA CREDIT",
|
|
23
|
+
"type": "credit",
|
|
24
|
+
"usage": "consumer",
|
|
25
|
+
"country": "GB",
|
|
26
|
+
"issuer": "DATATRANS"
|
|
27
|
+
},
|
|
28
|
+
"3D": {
|
|
29
|
+
"authenticationResponse": "D"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"history": [
|
|
33
|
+
{
|
|
34
|
+
"action": "init",
|
|
35
|
+
"source": "api",
|
|
36
|
+
"date": "2021-09-03T11:16:50Z",
|
|
37
|
+
"success": true,
|
|
38
|
+
"ip": "212.232.234.26"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"action": "authorize",
|
|
42
|
+
"source": "redirect",
|
|
43
|
+
"date": "2021-09-03T11:17:04Z",
|
|
44
|
+
"success": true,
|
|
45
|
+
"ip": "212.232.234.26"
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|