@unchainedshop/plugins 4.0.0-rc.2 → 4.0.0-rc.21
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/accounts/google-oauth.d.ts +4 -0
- package/lib/accounts/google-oauth.d.ts.map +1 -0
- package/lib/accounts/google-oauth.js +145 -0
- package/lib/accounts/google-oauth.js.map +1 -0
- package/lib/accounts/linkedin-oauth.d.ts +4 -0
- package/lib/accounts/linkedin-oauth.d.ts.map +1 -0
- package/lib/accounts/linkedin-oauth.js +82 -0
- package/lib/accounts/linkedin-oauth.js.map +1 -0
- package/lib/delivery/send-message.js.map +1 -1
- package/lib/enrollments/licensed.js +15 -2
- package/lib/enrollments/licensed.js.map +1 -1
- package/lib/files/gridfs/adapter.d.ts.map +1 -1
- package/lib/files/gridfs/adapter.js +19 -11
- package/lib/files/gridfs/adapter.js.map +1 -1
- package/lib/files/gridfs/gridfs-adapter.d.ts +3 -0
- package/lib/files/gridfs/gridfs-adapter.d.ts.map +1 -0
- package/lib/files/gridfs/gridfs-adapter.js +97 -0
- package/lib/files/gridfs/gridfs-adapter.js.map +1 -0
- package/lib/files/gridfs/gridfs-webhook.d.ts +11 -0
- package/lib/files/gridfs/gridfs-webhook.d.ts.map +1 -0
- package/lib/files/gridfs/gridfs-webhook.js +84 -0
- package/lib/files/gridfs/gridfs-webhook.js.map +1 -0
- package/lib/files/gridfs/handler-express.d.ts.map +1 -1
- package/lib/files/gridfs/handler-express.js +27 -24
- package/lib/files/gridfs/handler-express.js.map +1 -1
- package/lib/files/gridfs/handler-fastify.d.ts.map +1 -1
- package/lib/files/gridfs/handler-fastify.js +57 -14
- package/lib/files/gridfs/handler-fastify.js.map +1 -1
- package/lib/files/gridfs/module.d.ts +4 -4
- package/lib/files/gridfs/module.d.ts.map +1 -1
- package/lib/files/gridfs/module.js +2 -2
- package/lib/files/gridfs/module.js.map +1 -1
- package/lib/files/minio/handler-express.d.ts.map +1 -1
- package/lib/files/minio/handler-express.js +4 -7
- package/lib/files/minio/handler-express.js.map +1 -1
- package/lib/files/minio/handler-fastify.js +2 -2
- package/lib/files/minio/handler-fastify.js.map +1 -1
- package/lib/files/minio/index.d.ts +1 -1
- package/lib/files/minio/index.d.ts.map +1 -1
- package/lib/files/minio/index.js +7 -7
- package/lib/files/minio/index.js.map +1 -1
- package/lib/files/minio/minio-adapter.d.ts +6 -0
- package/lib/files/minio/minio-adapter.d.ts.map +1 -0
- package/lib/files/minio/minio-adapter.js +181 -0
- package/lib/files/minio/minio-adapter.js.map +1 -0
- package/lib/files/minio/minio-webhook.d.ts +2 -0
- package/lib/files/minio/minio-webhook.d.ts.map +1 -0
- package/lib/files/minio/minio-webhook.js +33 -0
- package/lib/files/minio/minio-webhook.js.map +1 -0
- package/lib/filters/local-search.js +1 -1
- package/lib/filters/local-search.js.map +1 -1
- package/lib/payment/apple-iap/adapter.js +12 -10
- 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/handler-express.d.ts.map +1 -1
- package/lib/payment/apple-iap/handler-express.js +14 -10
- package/lib/payment/apple-iap/handler-express.js.map +1 -1
- package/lib/payment/apple-iap/handler-fastify.d.ts.map +1 -1
- package/lib/payment/apple-iap/handler-fastify.js +15 -8
- package/lib/payment/apple-iap/handler-fastify.js.map +1 -1
- package/lib/payment/apple-iap/module/configureAppleTransactionsModule.d.ts +9 -0
- package/lib/payment/apple-iap/module/configureAppleTransactionsModule.d.ts.map +1 -0
- package/lib/payment/apple-iap/module/configureAppleTransactionsModule.js +17 -0
- package/lib/payment/apple-iap/module/configureAppleTransactionsModule.js.map +1 -0
- package/lib/payment/apple-iap/module.d.ts +4 -4
- package/lib/payment/apple-iap/module.d.ts.map +1 -1
- package/lib/payment/apple-iap/module.js +4 -2
- package/lib/payment/apple-iap/module.js.map +1 -1
- package/lib/payment/braintree.js +3 -1
- 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/derive-btc-address.d.ts.map +1 -1
- package/lib/payment/cryptopay/derive-btc-address.js +2 -3
- package/lib/payment/cryptopay/derive-btc-address.js.map +1 -1
- package/lib/payment/cryptopay/derive-eth-address.d.ts.map +1 -1
- package/lib/payment/cryptopay/derive-eth-address.js +5 -3
- package/lib/payment/cryptopay/derive-eth-address.js.map +1 -1
- package/lib/payment/cryptopay/handle-webhook.js +2 -2
- package/lib/payment/cryptopay/handle-webhook.js.map +1 -1
- package/lib/payment/cryptopay/handler-express.d.ts.map +1 -1
- package/lib/payment/cryptopay/handler-express.js +4 -7
- package/lib/payment/cryptopay/handler-express.js.map +1 -1
- package/lib/payment/cryptopay/handler-fastify.d.ts.map +1 -1
- package/lib/payment/cryptopay/handler-fastify.js +1 -1
- package/lib/payment/cryptopay/handler-fastify.js.map +1 -1
- package/lib/payment/cryptopay/middleware.d.ts +2 -0
- package/lib/payment/cryptopay/middleware.d.ts.map +1 -0
- package/lib/payment/cryptopay/middleware.js +75 -0
- package/lib/payment/cryptopay/middleware.js.map +1 -0
- package/lib/payment/cryptopay/module/configureCryptopayModule.d.ts +25 -0
- package/lib/payment/cryptopay/module/configureCryptopayModule.d.ts.map +1 -0
- package/lib/payment/cryptopay/module/configureCryptopayModule.js +75 -0
- package/lib/payment/cryptopay/module/configureCryptopayModule.js.map +1 -0
- package/lib/payment/cryptopay/module.d.ts +2 -2
- package/lib/payment/cryptopay/module.d.ts.map +1 -1
- package/lib/payment/cryptopay/module.js +4 -4
- package/lib/payment/cryptopay/module.js.map +1 -1
- package/lib/payment/cryptopay/plugin.d.ts.map +1 -1
- package/lib/payment/cryptopay/plugin.js +18 -4
- package/lib/payment/cryptopay/plugin.js.map +1 -1
- package/lib/payment/datatrans-v2/handler-express.d.ts.map +1 -1
- package/lib/payment/datatrans-v2/handler-express.js +13 -11
- package/lib/payment/datatrans-v2/handler-express.js.map +1 -1
- package/lib/payment/datatrans-v2/handler-fastify.d.ts.map +1 -1
- package/lib/payment/datatrans-v2/handler-fastify.js +11 -5
- package/lib/payment/datatrans-v2/handler-fastify.js.map +1 -1
- package/lib/payment/datatrans-v2/index.js +63 -37
- package/lib/payment/datatrans-v2/index.js.map +1 -1
- package/lib/payment/datatrans-v2/middleware.d.ts +2 -0
- package/lib/payment/datatrans-v2/middleware.d.ts.map +1 -0
- package/lib/payment/datatrans-v2/middleware.js +68 -0
- package/lib/payment/datatrans-v2/middleware.js.map +1 -0
- package/lib/payment/datatrans-v2/parseRegistrationData.d.ts +1 -1
- package/lib/payment/datatrans-v2/parseRegistrationData.d.ts.map +1 -1
- package/lib/payment/paypal-checkout.js +8 -8
- package/lib/payment/paypal-checkout.js.map +1 -1
- package/lib/payment/payrexx/api/index.d.ts +1 -1
- package/lib/payment/payrexx/api/index.d.ts.map +1 -1
- package/lib/payment/payrexx/api/makeFetcher.d.ts +1 -1
- package/lib/payment/payrexx/api/makeFetcher.d.ts.map +1 -1
- package/lib/payment/payrexx/api/makeFetcher.js +1 -1
- package/lib/payment/payrexx/api/makeFetcher.js.map +1 -1
- package/lib/payment/payrexx/handler-express.d.ts.map +1 -1
- package/lib/payment/payrexx/handler-express.js +15 -15
- package/lib/payment/payrexx/handler-express.js.map +1 -1
- package/lib/payment/payrexx/handler-fastify.js +23 -15
- package/lib/payment/payrexx/handler-fastify.js.map +1 -1
- package/lib/payment/payrexx/index.js +21 -15
- package/lib/payment/payrexx/index.js.map +1 -1
- package/lib/payment/payrexx/middleware.d.ts +2 -0
- package/lib/payment/payrexx/middleware.d.ts.map +1 -0
- package/lib/payment/payrexx/middleware.js +86 -0
- package/lib/payment/payrexx/middleware.js.map +1 -0
- package/lib/payment/postfinance-checkout/api-client.d.ts +16 -0
- package/lib/payment/postfinance-checkout/api-client.d.ts.map +1 -0
- package/lib/payment/postfinance-checkout/api-client.js +75 -0
- package/lib/payment/postfinance-checkout/api-client.js.map +1 -0
- package/lib/payment/postfinance-checkout/api-types.d.ts +98 -0
- package/lib/payment/postfinance-checkout/api-types.d.ts.map +1 -0
- package/lib/payment/postfinance-checkout/api-types.js +51 -0
- package/lib/payment/postfinance-checkout/api-types.js.map +1 -0
- package/lib/payment/postfinance-checkout/api.d.ts +5 -5
- package/lib/payment/postfinance-checkout/api.d.ts.map +1 -1
- package/lib/payment/postfinance-checkout/api.js +38 -62
- package/lib/payment/postfinance-checkout/api.js.map +1 -1
- package/lib/payment/postfinance-checkout/handler-express.d.ts.map +1 -1
- package/lib/payment/postfinance-checkout/handler-express.js +10 -11
- package/lib/payment/postfinance-checkout/handler-express.js.map +1 -1
- package/lib/payment/postfinance-checkout/handler-fastify.d.ts.map +1 -1
- package/lib/payment/postfinance-checkout/handler-fastify.js +10 -8
- package/lib/payment/postfinance-checkout/handler-fastify.js.map +1 -1
- package/lib/payment/postfinance-checkout/index.d.ts +2 -1
- package/lib/payment/postfinance-checkout/index.d.ts.map +1 -1
- package/lib/payment/postfinance-checkout/index.js +44 -32
- package/lib/payment/postfinance-checkout/index.js.map +1 -1
- package/lib/payment/postfinance-checkout/middleware.d.ts +2 -0
- package/lib/payment/postfinance-checkout/middleware.d.ts.map +1 -0
- package/lib/payment/postfinance-checkout/middleware.js +38 -0
- package/lib/payment/postfinance-checkout/middleware.js.map +1 -0
- package/lib/payment/postfinance-checkout/utils.d.ts +3 -3
- package/lib/payment/postfinance-checkout/utils.d.ts.map +1 -1
- package/lib/payment/postfinance-checkout/utils.js +3 -4
- package/lib/payment/postfinance-checkout/utils.js.map +1 -1
- package/lib/payment/saferpay/adapter.d.ts.map +1 -1
- package/lib/payment/saferpay/adapter.js +9 -0
- package/lib/payment/saferpay/adapter.js.map +1 -1
- package/lib/payment/saferpay/handler-express.d.ts.map +1 -1
- package/lib/payment/saferpay/handler-express.js +10 -8
- package/lib/payment/saferpay/handler-express.js.map +1 -1
- package/lib/payment/saferpay/handler-fastify.d.ts.map +1 -1
- package/lib/payment/saferpay/handler-fastify.js +11 -5
- package/lib/payment/saferpay/handler-fastify.js.map +1 -1
- package/lib/payment/saferpay/middleware.d.ts +2 -0
- package/lib/payment/saferpay/middleware.d.ts.map +1 -0
- package/lib/payment/saferpay/middleware.js +57 -0
- package/lib/payment/saferpay/middleware.js.map +1 -0
- package/lib/payment/saferpay/module/configureSaferpayTransactionsModule.d.ts +10 -0
- package/lib/payment/saferpay/module/configureSaferpayTransactionsModule.d.ts.map +1 -0
- package/lib/payment/saferpay/module/configureSaferpayTransactionsModule.js +24 -0
- package/lib/payment/saferpay/module/configureSaferpayTransactionsModule.js.map +1 -0
- package/lib/payment/saferpay/module.d.ts +2 -2
- package/lib/payment/stripe/handler-express.js +25 -17
- package/lib/payment/stripe/handler-express.js.map +1 -1
- package/lib/payment/stripe/handler-fastify.d.ts.map +1 -1
- package/lib/payment/stripe/handler-fastify.js +33 -12
- package/lib/payment/stripe/handler-fastify.js.map +1 -1
- package/lib/payment/stripe/index.js +19 -13
- package/lib/payment/stripe/index.js.map +1 -1
- package/lib/payment/stripe/middleware.d.ts +6 -0
- package/lib/payment/stripe/middleware.d.ts.map +1 -0
- package/lib/payment/stripe/middleware.js +114 -0
- package/lib/payment/stripe/middleware.js.map +1 -0
- package/lib/payment/stripe/stripe.d.ts +2 -2
- package/lib/payment/stripe/stripe.d.ts.map +1 -1
- package/lib/payment/stripe/stripe.js +14 -11
- package/lib/payment/stripe/stripe.js.map +1 -1
- package/lib/plugins-index.d.ts +48 -0
- package/lib/plugins-index.d.ts.map +1 -0
- package/lib/plugins-index.js +107 -0
- package/lib/plugins-index.js.map +1 -0
- package/lib/presets/all.d.ts +9 -7
- package/lib/presets/all.d.ts.map +1 -1
- package/lib/presets/all.js +3 -1
- package/lib/presets/all.js.map +1 -1
- package/lib/pricing/delivery-swiss-tax.d.ts.map +1 -1
- package/lib/pricing/delivery-swiss-tax.js +13 -20
- package/lib/pricing/delivery-swiss-tax.js.map +1 -1
- package/lib/pricing/order-discount.d.ts.map +1 -1
- package/lib/pricing/order-discount.js +5 -3
- package/lib/pricing/order-discount.js.map +1 -1
- package/lib/pricing/order-round.d.ts.map +1 -1
- package/lib/pricing/order-round.js +4 -3
- package/lib/pricing/order-round.js.map +1 -1
- package/lib/pricing/product-catalog-price.d.ts.map +1 -1
- package/lib/pricing/product-catalog-price.js +26 -2
- package/lib/pricing/product-catalog-price.js.map +1 -1
- package/lib/pricing/product-price-rateconversion.js +3 -3
- package/lib/pricing/product-price-rateconversion.js.map +1 -1
- package/lib/pricing/product-swiss-tax.d.ts +1 -5
- package/lib/pricing/product-swiss-tax.d.ts.map +1 -1
- package/lib/pricing/product-swiss-tax.js +26 -22
- package/lib/pricing/product-swiss-tax.js.map +1 -1
- package/lib/pricing/tax/ch.d.ts +7 -2
- package/lib/pricing/tax/ch.d.ts.map +1 -1
- package/lib/pricing/tax/ch.js +16 -1
- package/lib/pricing/tax/ch.js.map +1 -1
- package/lib/pricing/utils/isDeliveryAddressInCountry.d.ts +7 -0
- package/lib/pricing/utils/isDeliveryAddressInCountry.d.ts.map +1 -0
- package/lib/pricing/utils/isDeliveryAddressInCountry.js +13 -0
- package/lib/pricing/utils/isDeliveryAddressInCountry.js.map +1 -0
- package/lib/warehousing/eth-minter.js +23 -11
- package/lib/warehousing/eth-minter.js.map +1 -1
- package/lib/worker/budgetsms.d.ts +10 -0
- package/lib/worker/budgetsms.d.ts.map +1 -0
- package/lib/worker/budgetsms.js +217 -0
- package/lib/worker/budgetsms.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 +11 -33
- package/lib/worker/bulk-import.js.map +1 -1
- package/lib/worker/bulkgate.d.ts +2 -0
- package/lib/worker/bulkgate.d.ts.map +1 -0
- package/lib/worker/bulkgate.js +104 -0
- package/lib/worker/bulkgate.js.map +1 -0
- package/lib/worker/email.d.ts.map +1 -1
- package/lib/worker/email.js +25 -7
- 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 +7 -49
- package/lib/worker/enrollment-order-generator.js.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.map +1 -1
- package/lib/worker/export-token.js +0 -1
- package/lib/worker/export-token.js.map +1 -1
- package/lib/worker/heartbeat.js +2 -8
- package/lib/worker/heartbeat.js.map +1 -1
- package/lib/worker/message.d.ts +1 -1
- package/lib/worker/message.d.ts.map +1 -1
- package/lib/worker/message.js +4 -2
- package/lib/worker/message.js.map +1 -1
- package/lib/worker/sms.js +16 -16
- package/lib/worker/sms.js.map +1 -1
- package/lib/worker/twilio.d.ts +2 -0
- package/lib/worker/twilio.d.ts.map +1 -0
- package/lib/worker/twilio.js +60 -0
- package/lib/worker/twilio.js.map +1 -0
- package/package.json +29 -45
- package/src/delivery/send-message.ts +1 -1
- package/src/enrollments/licensed.ts +15 -2
- package/src/files/gridfs/adapter.ts +24 -10
- package/src/files/gridfs/handler-express.ts +32 -24
- package/src/files/gridfs/handler-fastify.ts +63 -15
- package/src/files/gridfs/module.ts +7 -2
- package/src/files/minio/handler-express.ts +4 -7
- package/src/files/minio/handler-fastify.ts +2 -2
- package/src/files/minio/index.ts +16 -16
- package/src/filters/local-search.ts +1 -1
- package/src/payment/apple-iap/adapter.ts +12 -14
- package/src/payment/apple-iap/db/AppleTransactionsCollection.ts +1 -1
- package/src/payment/apple-iap/handler-express.ts +17 -11
- package/src/payment/apple-iap/handler-fastify.ts +19 -9
- package/src/payment/apple-iap/module.ts +9 -4
- package/src/payment/braintree.ts +4 -1
- package/src/payment/cryptopay/db/CryptopayTransactions.ts +1 -1
- package/src/payment/cryptopay/derive-btc-address.ts +1 -3
- package/src/payment/cryptopay/derive-eth-address.ts +5 -3
- package/src/payment/cryptopay/handle-webhook.ts +6 -6
- package/src/payment/cryptopay/handler-express.ts +4 -7
- package/src/payment/cryptopay/handler-fastify.ts +2 -2
- package/src/payment/cryptopay/module.ts +8 -5
- package/src/payment/cryptopay/plugin.ts +21 -4
- package/src/payment/datatrans-v2/handler-express.ts +17 -12
- package/src/payment/datatrans-v2/handler-fastify.ts +15 -6
- package/src/payment/datatrans-v2/index.ts +82 -50
- package/src/payment/paypal-checkout.ts +8 -11
- package/src/payment/payrexx/api/index.ts +1 -1
- package/src/payment/payrexx/api/makeFetcher.ts +2 -2
- package/src/payment/payrexx/handler-express.ts +24 -32
- package/src/payment/payrexx/handler-fastify.ts +33 -33
- package/src/payment/payrexx/index.ts +26 -16
- package/src/payment/postfinance-checkout/api-client.ts +111 -0
- package/src/payment/postfinance-checkout/api-types.ts +111 -0
- package/src/payment/postfinance-checkout/api.ts +58 -85
- package/src/payment/postfinance-checkout/handler-express.ts +11 -13
- package/src/payment/postfinance-checkout/handler-fastify.ts +11 -10
- package/src/payment/postfinance-checkout/index.ts +60 -38
- package/src/payment/postfinance-checkout/utils.ts +5 -10
- package/src/payment/saferpay/adapter.ts +14 -2
- package/src/payment/saferpay/handler-express.ts +14 -13
- package/src/payment/saferpay/handler-fastify.ts +14 -9
- package/src/payment/stripe/handler-express.ts +33 -33
- package/src/payment/stripe/handler-fastify.ts +40 -27
- package/src/payment/stripe/index.ts +17 -13
- package/src/payment/stripe/stripe.ts +17 -12
- package/src/presets/all.ts +3 -1
- package/src/pricing/delivery-swiss-tax.ts +16 -31
- package/src/pricing/order-discount.ts +6 -4
- package/src/pricing/order-round.ts +5 -4
- package/src/pricing/product-catalog-price.ts +25 -2
- package/src/pricing/product-price-rateconversion.ts +3 -3
- package/src/pricing/product-swiss-tax.ts +39 -40
- package/src/pricing/tax/ch.ts +33 -7
- package/src/pricing/utils/isDeliveryAddressInCountry.test.ts +106 -0
- package/src/pricing/utils/isDeliveryAddressInCountry.ts +26 -0
- package/src/warehousing/eth-minter.ts +30 -11
- package/src/worker/budgetsms.ts +268 -0
- package/src/worker/bulk-import.ts +12 -53
- package/src/worker/bulkgate.ts +138 -0
- package/src/worker/email.ts +30 -8
- package/src/worker/enrollment-order-generator.ts +14 -72
- package/src/worker/error-notifications.ts +2 -2
- package/src/worker/export-token.ts +0 -1
- package/src/worker/heartbeat.ts +2 -9
- package/src/worker/message.ts +5 -3
- package/src/worker/{sms.ts → twilio.ts} +15 -26
- package/lib/payment/cryptopay/de.d.ts +0 -2
- package/lib/payment/cryptopay/de.d.ts.map +0 -1
- package/lib/payment/cryptopay/de.js +0 -10
- package/lib/payment/cryptopay/de.js.map +0 -1
- package/lib/payment/cryptopay/derive-btc-address.test copy.d.ts +0 -2
- package/lib/payment/cryptopay/derive-btc-address.test copy.d.ts.map +0 -1
- package/lib/payment/cryptopay/derive-btc-address.test copy.js +0 -10
- package/lib/payment/cryptopay/derive-btc-address.test copy.js.map +0 -1
- package/src/pricing/product-swiss-tax.test.ts +0 -139
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"product-swiss-tax.js","sourceRoot":"","sources":["../../src/pricing/product-swiss-tax.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"product-swiss-tax.js","sourceRoot":"","sources":["../../src/pricing/product-swiss-tax.ts"],"names":[],"mappings":"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"}
|
package/lib/pricing/tax/ch.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
import { DeliveryProvider } from '@unchainedshop/core-delivery';
|
|
2
|
+
import { Product } from '@unchainedshop/core-products';
|
|
3
|
+
export interface SwissTaxCategoryResolver {
|
|
2
4
|
value: string;
|
|
3
5
|
rate: (referenceDate?: Date) => number;
|
|
4
|
-
}
|
|
6
|
+
}
|
|
7
|
+
export declare const SwissTaxCategories: Record<string, SwissTaxCategoryResolver>;
|
|
8
|
+
export declare const resolveTaxCategoryFromDeliveryProvider: (provider: DeliveryProvider) => SwissTaxCategoryResolver | null;
|
|
9
|
+
export declare const resolveTaxCategoryFromProduct: (product: Product) => SwissTaxCategoryResolver | null;
|
|
5
10
|
//# sourceMappingURL=ch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ch.d.ts","sourceRoot":"","sources":["../../../src/pricing/tax/ch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ch.d.ts","sourceRoot":"","sources":["../../../src/pricing/tax/ch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAMvD,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC;CACxC;AAED,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CA4BvE,CAAC;AAEF,eAAO,MAAM,sCAAsC,GACjD,UAAU,gBAAgB,KACzB,wBAAwB,GAAG,IAU7B,CAAC;AAEF,eAAO,MAAM,6BAA6B,GAAI,SAAS,OAAO,KAAG,wBAAwB,GAAG,IAQ3F,CAAC"}
|
package/lib/pricing/tax/ch.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
const startOf2024 = new Date('2024-01-01T00:00:00.000+0100');
|
|
2
|
-
// https://www.estv.admin.ch/estv/en/home/value-added-tax/vat-rates-switzerland.html
|
|
3
2
|
export const SwissTaxCategories = {
|
|
4
3
|
DEFAULT: {
|
|
5
4
|
value: 'default',
|
|
@@ -29,4 +28,20 @@ export const SwissTaxCategories = {
|
|
|
29
28
|
},
|
|
30
29
|
},
|
|
31
30
|
};
|
|
31
|
+
export const resolveTaxCategoryFromDeliveryProvider = (provider) => {
|
|
32
|
+
const taxCategoryFromProvider = provider?.configuration
|
|
33
|
+
?.find(({ key }) => {
|
|
34
|
+
if (key === 'swiss-tax-category')
|
|
35
|
+
return true;
|
|
36
|
+
return null;
|
|
37
|
+
})
|
|
38
|
+
?.value?.toUpperCase();
|
|
39
|
+
const taxCategory = taxCategoryFromProvider ? SwissTaxCategories[taxCategoryFromProvider] : null;
|
|
40
|
+
return taxCategory;
|
|
41
|
+
};
|
|
42
|
+
export const resolveTaxCategoryFromProduct = (product) => {
|
|
43
|
+
const productSpecialTaxTag = product.tags?.find((tag) => tag?.trim().toLowerCase().startsWith('swiss-tax-category:'));
|
|
44
|
+
const taxCategory = Object.values(SwissTaxCategories).find((t) => `swiss-tax-category:${t.value}` === productSpecialTaxTag?.trim().toLowerCase());
|
|
45
|
+
return taxCategory || null;
|
|
46
|
+
};
|
|
32
47
|
//# sourceMappingURL=ch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ch.js","sourceRoot":"","sources":["../../../src/pricing/tax/ch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ch.js","sourceRoot":"","sources":["../../../src/pricing/tax/ch.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,8BAA8B,CAAC,CAAC;AAS7D,MAAM,CAAC,MAAM,kBAAkB,GAA6C;IAC1E,OAAO,EAAE;QACP,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE;YACnC,IAAI,aAAa,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;gBACpD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF;IACD,OAAO,EAAE;QACP,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE;YACnC,IAAI,aAAa,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;gBACpD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF;IACD,OAAO,EAAE;QACP,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE;YACnC,IAAI,aAAa,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;gBACpD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,sCAAsC,GAAG,CACpD,QAA0B,EACO,EAAE;IACnC,MAAM,uBAAuB,GAAG,QAAQ,EAAE,aAAa;QACrD,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;QACjB,IAAI,GAAG,KAAK,oBAAoB;YAAE,OAAO,IAAI,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;QACF,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IAEzB,MAAM,WAAW,GAAG,uBAAuB,CAAC,CAAC,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjG,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,OAAgB,EAAmC,EAAE;IACjG,MAAM,oBAAoB,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CACtD,GAAG,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAC5D,CAAC;IACF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CACxD,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,KAAK,oBAAoB,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CACtF,CAAC;IACF,OAAO,WAAW,IAAI,IAAI,CAAC;AAC7B,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Order, OrderDelivery } from '@unchainedshop/core-orders';
|
|
2
|
+
export default function isDeliveryAddressInCountry({ orderDelivery, order, countryCode: forceCountryCode, }: {
|
|
3
|
+
orderDelivery?: OrderDelivery | null;
|
|
4
|
+
order?: Order | null;
|
|
5
|
+
countryCode?: string | null;
|
|
6
|
+
}, allowedCountryCodes: string[]): boolean;
|
|
7
|
+
//# sourceMappingURL=isDeliveryAddressInCountry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isDeliveryAddressInCountry.d.ts","sourceRoot":"","sources":["../../../src/pricing/utils/isDeliveryAddressInCountry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAElE,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAChD,EACE,aAAa,EACb,KAAK,EACL,WAAW,EAAE,gBAAuB,GACrC,EAAE;IACD,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,EACD,mBAAmB,EAAE,MAAM,EAAE,WAa9B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export default function isDeliveryAddressInCountry({ orderDelivery, order, countryCode: forceCountryCode = null, }, allowedCountryCodes) {
|
|
2
|
+
let countryCode = forceCountryCode?.toUpperCase().trim() || order?.countryCode;
|
|
3
|
+
if (orderDelivery || order) {
|
|
4
|
+
const address = orderDelivery?.context?.address || order?.billingAddress;
|
|
5
|
+
if (address?.countryCode > '') {
|
|
6
|
+
countryCode = address.countryCode?.toUpperCase().trim();
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
if (!countryCode)
|
|
10
|
+
return false;
|
|
11
|
+
return allowedCountryCodes.includes(countryCode);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=isDeliveryAddressInCountry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isDeliveryAddressInCountry.js","sourceRoot":"","sources":["../../../src/pricing/utils/isDeliveryAddressInCountry.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAChD,EACE,aAAa,EACb,KAAK,EACL,WAAW,EAAE,gBAAgB,GAAG,IAAI,GAKrC,EACD,mBAA6B;IAE7B,IAAI,WAAW,GAAG,gBAAgB,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,EAAE,WAAW,CAAC;IAE/E,IAAI,aAAa,IAAI,KAAK,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,aAAa,EAAE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,cAAc,CAAC;QACzE,IAAI,OAAO,EAAE,WAAW,GAAG,EAAE,EAAE,CAAC;YAC9B,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAC/B,OAAO,mBAAmB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { WarehousingDirector, WarehousingAdapter, } from '@unchainedshop/core';
|
|
1
|
+
import { WarehousingError, WarehousingDirector, WarehousingAdapter, } from '@unchainedshop/core';
|
|
2
2
|
import { WarehousingProviderType } from '@unchainedshop/core-warehousing';
|
|
3
3
|
import { ProductContractStandard, ProductTypes } from '@unchainedshop/core-products';
|
|
4
4
|
import { systemLocale } from '@unchainedshop/utils';
|
|
5
5
|
import { generateDbObjectId } from '@unchainedshop/mongodb';
|
|
6
6
|
import { getFileAdapter } from '@unchainedshop/core-files';
|
|
7
|
+
import { createLogger } from '@unchainedshop/logger';
|
|
7
8
|
const { MINTER_TOKEN_OFFSET = '0', ROOT_URL = 'http://localhost:4010' } = process.env;
|
|
9
|
+
const logger = createLogger('unchained:eth-minter');
|
|
8
10
|
const ETHMinter = {
|
|
9
11
|
...WarehousingAdapter,
|
|
10
12
|
key: 'shop.unchained.warehousing.infinite-minter',
|
|
@@ -23,7 +25,7 @@ const ETHMinter = {
|
|
|
23
25
|
? { contractAddress: contractStandard }
|
|
24
26
|
: {
|
|
25
27
|
contractAddress: contractStandard,
|
|
26
|
-
|
|
28
|
+
tokenSerialNumber: tokenId,
|
|
27
29
|
});
|
|
28
30
|
const tokensCreated = existingTokens.reduce((acc, curToken) => {
|
|
29
31
|
return acc + curToken.quantity;
|
|
@@ -36,6 +38,10 @@ const ETHMinter = {
|
|
|
36
38
|
return product?.type === ProductTypes.TokenizedProduct;
|
|
37
39
|
},
|
|
38
40
|
configurationError() {
|
|
41
|
+
if (contractStandard === 'ERC1155' && !tokenId) {
|
|
42
|
+
logger.error(`Token ID is required for ERC1155 contract standard (productId: ${product._id})`);
|
|
43
|
+
return WarehousingError.INCOMPLETE_CONFIGURATION;
|
|
44
|
+
}
|
|
39
45
|
return null;
|
|
40
46
|
},
|
|
41
47
|
stock: async () => {
|
|
@@ -49,11 +55,14 @@ const ETHMinter = {
|
|
|
49
55
|
const chainId = configuration.find(({ key }) => key === 'chainId')?.value || undefined;
|
|
50
56
|
const meta = { contractStandard };
|
|
51
57
|
const tokensCreated = await getTokensCreated();
|
|
58
|
+
if (!orderPosition) {
|
|
59
|
+
throw new Error('Order position not found in context');
|
|
60
|
+
}
|
|
52
61
|
if (contractStandard === 'ERC721') {
|
|
53
|
-
// ERC721 is non-fungible, thus every
|
|
54
|
-
const items = new Array(orderPosition
|
|
62
|
+
// ERC721 is non-fungible, thus every tokenSerialNumber unique!
|
|
63
|
+
const items = new Array(orderPosition.quantity).fill(null).map((_, i) => ({
|
|
55
64
|
_id: generateDbObjectId(),
|
|
56
|
-
|
|
65
|
+
tokenSerialNumber: Number(parseInt(MINTER_TOKEN_OFFSET, 10) + tokensCreated + (i + 1)).toString(),
|
|
57
66
|
contractAddress,
|
|
58
67
|
quantity: 1,
|
|
59
68
|
chainId,
|
|
@@ -65,18 +74,21 @@ const ETHMinter = {
|
|
|
65
74
|
return [
|
|
66
75
|
{
|
|
67
76
|
_id: generateDbObjectId(),
|
|
68
|
-
|
|
77
|
+
tokenSerialNumber: tokenId,
|
|
69
78
|
contractAddress,
|
|
70
|
-
quantity: orderPosition
|
|
79
|
+
quantity: orderPosition.quantity,
|
|
71
80
|
chainId,
|
|
72
81
|
meta,
|
|
73
82
|
},
|
|
74
83
|
];
|
|
75
84
|
},
|
|
76
|
-
tokenMetadata: async (
|
|
85
|
+
tokenMetadata: async (tokenSerialNumber) => {
|
|
77
86
|
// Metadata standards supported
|
|
78
87
|
// https://eips.ethereum.org/EIPS/eip-1155 (backward compatible with 721)
|
|
79
88
|
// https://eips.ethereum.org/EIPS/eip-721
|
|
89
|
+
if (!product) {
|
|
90
|
+
throw new Error('Product not found in context');
|
|
91
|
+
}
|
|
80
92
|
const allLanguages = await modules.languages.findLanguages({
|
|
81
93
|
includeInactive: false,
|
|
82
94
|
});
|
|
@@ -85,14 +97,14 @@ const ETHMinter = {
|
|
|
85
97
|
limit: 1,
|
|
86
98
|
});
|
|
87
99
|
const file = firstMedia && (await modules.files.findFile({ fileId: firstMedia.mediaId }));
|
|
88
|
-
const
|
|
89
|
-
const signedUrl = await
|
|
100
|
+
const fileAdapter = file && getFileAdapter();
|
|
101
|
+
const signedUrl = await fileAdapter?.createDownloadURL(file);
|
|
90
102
|
const url = signedUrl && (await modules.files.normalizeUrl(signedUrl, {}));
|
|
91
103
|
const text = await modules.products.texts.findLocalizedText({
|
|
92
104
|
productId: product._id,
|
|
93
105
|
locale: locale || systemLocale,
|
|
94
106
|
});
|
|
95
|
-
const name = `${text.title} #${
|
|
107
|
+
const name = `${text.title} #${tokenSerialNumber}`;
|
|
96
108
|
const isDefaultLanguageActive = locale ? locale.language === systemLocale.language : true;
|
|
97
109
|
const localization = isDefaultLanguageActive
|
|
98
110
|
? {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eth-minter.js","sourceRoot":"","sources":["../../src/warehousing/eth-minter.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"eth-minter.js","sourceRoot":"","sources":["../../src/warehousing/eth-minter.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,EAAE,mBAAmB,GAAG,GAAG,EAAE,QAAQ,GAAG,uBAAuB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAEtF,MAAM,MAAM,GAAG,YAAY,CAAC,sBAAsB,CAAC,CAAC;AAEpD,MAAM,SAAS,GAAwB;IACrC,GAAG,kBAAkB;IAErB,GAAG,EAAE,4CAA4C;IACjD,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,iBAAiB;IACxB,UAAU,EAAE,CAAC;IAEb,oBAAoB,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IAEtD,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE;QACtB,OAAO,IAAI,KAAK,uBAAuB,CAAC,OAAO,CAAC;IAClD,CAAC;IAED,OAAO,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE;QAClC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAC5C,CAAC;QAChB,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,GACjF,OAAO,EAAE,YAAY,IAAI,EAAE,CAAC;QAE9B,MAAM,gBAAgB,GAAG,KAAK,IAAI,EAAE;YAClC,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,UAAU,CACzD,gBAAgB,KAAK,uBAAuB,CAAC,MAAM;gBACjD,CAAC,CAAC,EAAE,eAAe,EAAE,gBAAgB,EAAE;gBACvC,CAAC,CAAC;oBACE,eAAe,EAAE,gBAAgB;oBACjC,iBAAiB,EAAE,OAAO;iBAC3B,CACN,CAAC;YACF,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;gBAC5D,OAAO,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC;YACjC,CAAC,EAAE,CAAC,CAAC,CAAC;YACN,OAAO,aAAa,CAAC;QACvB,CAAC,CAAC;QAEF,OAAO;YACL,GAAG,kBAAkB,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC;YAErD,QAAQ;gBACN,OAAO,OAAO,EAAE,IAAI,KAAK,YAAY,CAAC,gBAAgB,CAAC;YACzD,CAAC;YAED,kBAAkB;gBAChB,IAAI,gBAAgB,KAAK,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC/C,MAAM,CAAC,KAAK,CACV,kEAAkE,OAAQ,CAAC,GAAG,GAAG,CAClF,CAAC;oBACF,OAAO,gBAAgB,CAAC,wBAAwB,CAAC;gBACnD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,KAAK,EAAE,KAAK,IAAI,EAAE;gBAChB,MAAM,aAAa,GAAG,MAAM,gBAAgB,EAAE,CAAC;gBAC/C,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,CAAC;YAED,QAAQ,EAAE,KAAK,IAAI,EAAE;gBACnB,uBAAuB;gBACvB,0BAA0B;gBAC1B,mBAAmB;gBAEnB,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,EAAE,KAAK,IAAI,SAAS,CAAC;gBACvF,MAAM,IAAI,GAAG,EAAE,gBAAgB,EAAE,CAAC;gBAClC,MAAM,aAAa,GAAG,MAAM,gBAAgB,EAAE,CAAC;gBAE/C,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBACzD,CAAC;gBAED,IAAI,gBAAgB,KAAK,QAAQ,EAAE,CAAC;oBAClC,+DAA+D;oBAC/D,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;wBACxE,GAAG,EAAE,kBAAkB,EAAE;wBACzB,iBAAiB,EAAE,MAAM,CACvB,QAAQ,CAAC,mBAAmB,EAAE,EAAE,CAAC,GAAG,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAC5D,CAAC,QAAQ,EAAE;wBACZ,eAAe;wBACf,QAAQ,EAAE,CAAC;wBACX,OAAO;wBACP,IAAI;qBACL,CAAC,CAAC,CAAC;oBACJ,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,8CAA8C;gBAC9C,OAAO;oBACL;wBACE,GAAG,EAAE,kBAAkB,EAAE;wBACzB,iBAAiB,EAAE,OAAQ;wBAC3B,eAAe;wBACf,QAAQ,EAAE,aAAa,CAAC,QAAQ;wBAChC,OAAO;wBACP,IAAI;qBACL;iBACF,CAAC;YACJ,CAAC;YAED,aAAa,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE;gBACzC,+BAA+B;gBAC/B,yEAAyE;gBACzE,yCAAyC;gBAEzC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;gBAClD,CAAC;gBAED,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC;oBACzD,eAAe,EAAE,KAAK;iBACvB,CAAC,CAAC;gBAEH,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC;oBAClE,SAAS,EAAE,OAAO,CAAC,GAAG;oBACtB,KAAK,EAAE,CAAC;iBACT,CAAC,CAAC;gBACH,MAAM,IAAI,GAAG,UAAU,IAAI,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAE1F,MAAM,WAAW,GAAG,IAAI,IAAI,cAAc,EAAE,CAAC;gBAC7C,MAAM,SAAS,GAAG,MAAM,WAAW,EAAE,iBAAiB,CAAC,IAAK,CAAC,CAAC;gBAC9D,MAAM,GAAG,GAAG,SAAS,IAAI,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC3E,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC;oBAC1D,SAAS,EAAE,OAAO,CAAC,GAAG;oBACtB,MAAM,EAAE,MAAM,IAAI,YAAY;iBAC/B,CAAC,CAAC;gBAEH,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,KAAK,iBAAiB,EAAE,CAAC;gBAEnD,MAAM,uBAAuB,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC1F,MAAM,YAAY,GAAG,uBAAuB;oBAC1C,CAAC,CAAC;wBACE,GAAG,EAAE,GAAG,QAAQ,iBAAiB,OAAO,CAAC,GAAG,aAAa,OAAO,OAAO;wBACvE,OAAO,EAAE,YAAY,CAAC,QAAQ;wBAC9B,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;qBAClD;oBACH,CAAC,CAAC,SAAS,CAAC;gBAEd,OAAO;oBACL,IAAI;oBACJ,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,KAAK,EAAE,GAAG;oBACV,UAAU,EAAE,qBAAqB;oBACjC,YAAY;oBACZ,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC;iBACvB,CAAC;YACJ,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,mBAAmB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budgetsms.d.ts","sourceRoot":"","sources":["../../src/worker/budgetsms.ts"],"names":[],"mappings":"AA8OA,wBAAsB,yBAAyB;;;;;;;;GA6B9C"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { WorkerAdapter, WorkerDirector } from '@unchainedshop/core';
|
|
2
|
+
const { BUDGETSMS_USERNAME, BUDGETSMS_USERID, BUDGETSMS_HANDLE } = process.env;
|
|
3
|
+
// BudgetSMS Plugin - Verified against official API documentation
|
|
4
|
+
// Note: BudgetSMS API has a quirk where it returns error 1001 (authentication failed)
|
|
5
|
+
// when you have insufficient credit, instead of the correct error 1003.
|
|
6
|
+
const BudgetSMSWorker = {
|
|
7
|
+
...WorkerAdapter,
|
|
8
|
+
key: 'shop.unchained.worker-plugin.budgetsms',
|
|
9
|
+
label: 'Send Messages through BudgetSMS',
|
|
10
|
+
version: '1.0.0',
|
|
11
|
+
type: 'BUDGETSMS',
|
|
12
|
+
doWork: async ({ from, to, text, test = false, customid, price = false, mccmnc = false, credit = false, ...params }) => {
|
|
13
|
+
try {
|
|
14
|
+
// Validate credentials
|
|
15
|
+
if (!BUDGETSMS_USERNAME || !BUDGETSMS_USERID || !BUDGETSMS_HANDLE) {
|
|
16
|
+
throw new Error('Missing BudgetSMS credentials. Please set BUDGETSMS_USERNAME, BUDGETSMS_USERID, and BUDGETSMS_HANDLE');
|
|
17
|
+
}
|
|
18
|
+
// Trim credentials to remove any whitespace
|
|
19
|
+
const username = BUDGETSMS_USERNAME.trim();
|
|
20
|
+
const userid = BUDGETSMS_USERID.trim();
|
|
21
|
+
const handle = BUDGETSMS_HANDLE.trim();
|
|
22
|
+
// Validate userid is numeric only
|
|
23
|
+
if (!/^\d+$/.test(userid)) {
|
|
24
|
+
throw new Error('BUDGETSMS_USERID must be numeric only. Found: ' + userid);
|
|
25
|
+
}
|
|
26
|
+
// Choose endpoint based on test mode
|
|
27
|
+
const url = test ? 'https://api.budgetsms.net/testsms/' : 'https://api.budgetsms.net/sendsms/';
|
|
28
|
+
// Format phone number according to E.164 (no + or 00, no spaces/dashes)
|
|
29
|
+
const formattedTo = to.replace(/^\+|^00/, '').replace(/[\s-]/g, '');
|
|
30
|
+
// Build query parameters
|
|
31
|
+
const queryParams = new URLSearchParams({
|
|
32
|
+
username: username,
|
|
33
|
+
userid: userid,
|
|
34
|
+
handle: handle,
|
|
35
|
+
msg: text || '', // Note: parameter is 'msg' not 'text'
|
|
36
|
+
from: from || '',
|
|
37
|
+
to: formattedTo,
|
|
38
|
+
...(customid && { customid }),
|
|
39
|
+
...(!test && price && { price: '1' }), // Price info only for real sends
|
|
40
|
+
...(!test && mccmnc && { mccmnc: '1' }), // Carrier info only for real sends
|
|
41
|
+
...(!test && credit && { credit: '1' }), // Credit info only for real sends
|
|
42
|
+
...params,
|
|
43
|
+
});
|
|
44
|
+
// Make GET request
|
|
45
|
+
const fullUrl = `${url}?${queryParams.toString()}`;
|
|
46
|
+
const response = await fetch(fullUrl, {
|
|
47
|
+
method: 'GET',
|
|
48
|
+
headers: {
|
|
49
|
+
Accept: 'text/plain',
|
|
50
|
+
'User-Agent': 'Unchained/BudgetSMS-Plugin',
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
const responseText = await response.text().then((text) => text.trim());
|
|
54
|
+
// Parse response: "OK <smsid> [price] [parts] [mccmnc] [credit]" or "ERR <errorcode>"
|
|
55
|
+
if (responseText.startsWith('OK')) {
|
|
56
|
+
const parts = responseText.split(' ');
|
|
57
|
+
const result = {
|
|
58
|
+
sms_id: parts[1] || null,
|
|
59
|
+
status: test ? 'test_successful' : 'sent',
|
|
60
|
+
test_mode: test,
|
|
61
|
+
};
|
|
62
|
+
if (test) {
|
|
63
|
+
result.message = 'Test SMS validated successfully (no credit deducted)';
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
// Parse additional info based on parameters used
|
|
67
|
+
let index = 2;
|
|
68
|
+
if (price && parts[index] && parts[index + 1]) {
|
|
69
|
+
result.price = parseFloat(parts[index]);
|
|
70
|
+
result.parts = parseInt(parts[index + 1]);
|
|
71
|
+
index += 2;
|
|
72
|
+
}
|
|
73
|
+
if (mccmnc && parts[index]) {
|
|
74
|
+
result.mccmnc = parts[index];
|
|
75
|
+
index += 1;
|
|
76
|
+
}
|
|
77
|
+
if (credit && parts[index]) {
|
|
78
|
+
result.remaining_credit = parseFloat(parts[index]);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
success: true,
|
|
83
|
+
result,
|
|
84
|
+
error: null,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
if (responseText.startsWith('ERR')) {
|
|
88
|
+
const parts = responseText.split(' ');
|
|
89
|
+
const errorCode = parts[1] || 'UNKNOWN';
|
|
90
|
+
// Error code mappings from documentation
|
|
91
|
+
const errorMessages = {
|
|
92
|
+
'1001': 'Authentication failed OR insufficient credit (BudgetSMS returns 1001 for both)',
|
|
93
|
+
'1002': 'Account not active',
|
|
94
|
+
'1003': 'Insufficient credit',
|
|
95
|
+
'1004': 'No access to this API',
|
|
96
|
+
'1005': 'No handle provided',
|
|
97
|
+
'1006': 'No UserID provided',
|
|
98
|
+
'1007': 'No Username provided',
|
|
99
|
+
'2001': 'SMS message text is empty',
|
|
100
|
+
'2002': 'SMS numeric senderid can be max. 16 numbers',
|
|
101
|
+
'2003': 'SMS alphanumeric sender can be max. 11 characters',
|
|
102
|
+
'2004': 'SMS senderid is empty or invalid',
|
|
103
|
+
'2005': 'Destination number is too short',
|
|
104
|
+
'2006': 'Destination is not numeric',
|
|
105
|
+
'2007': 'Destination is empty',
|
|
106
|
+
'2008': 'SMS text is not OK (check encoding?)',
|
|
107
|
+
'2009': 'Parameter issue',
|
|
108
|
+
'2010': 'Destination number is invalidly formatted',
|
|
109
|
+
'2011': 'Destination is invalid',
|
|
110
|
+
'2012': 'SMS message text is too long',
|
|
111
|
+
'2013': 'SMS message is invalid',
|
|
112
|
+
'2014': 'SMS CustomID is used before',
|
|
113
|
+
'2015': 'Charset problem',
|
|
114
|
+
'2016': 'Invalid UTF-8 encoding',
|
|
115
|
+
'3001': 'No route to destination',
|
|
116
|
+
'3002': 'No routes are setup',
|
|
117
|
+
'3003': 'Invalid destination',
|
|
118
|
+
'4001': 'System error, related to customid',
|
|
119
|
+
'4002': 'System error, temporary issue',
|
|
120
|
+
};
|
|
121
|
+
// Special handling for 1001 error
|
|
122
|
+
let message = errorMessages[errorCode] || `Unknown error code: ${errorCode}`;
|
|
123
|
+
if (errorCode === '1001') {
|
|
124
|
+
message += '. Note: Check your account balance - BudgetSMS may return 1001 when credit is 0.';
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
success: false,
|
|
128
|
+
error: {
|
|
129
|
+
name: 'BUDGETSMS_ERROR',
|
|
130
|
+
code: errorCode,
|
|
131
|
+
message,
|
|
132
|
+
},
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
// Unexpected response
|
|
136
|
+
return {
|
|
137
|
+
success: false,
|
|
138
|
+
error: {
|
|
139
|
+
name: 'BUDGETSMS_ERROR',
|
|
140
|
+
message: 'Unexpected response format from BudgetSMS API',
|
|
141
|
+
response: responseText,
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
catch (err) {
|
|
146
|
+
return {
|
|
147
|
+
success: false,
|
|
148
|
+
error: {
|
|
149
|
+
name: err.name,
|
|
150
|
+
message: err.message,
|
|
151
|
+
stack: err.stack,
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
WorkerDirector.registerAdapter(BudgetSMSWorker);
|
|
158
|
+
// Environment variables needed:
|
|
159
|
+
// BUDGETSMS_USERNAME=your_username (alphanumeric)
|
|
160
|
+
// BUDGETSMS_USERID=your_userid (NUMERIC ONLY - found in BudgetSMS control panel)
|
|
161
|
+
// BUDGETSMS_HANDLE=your_api_handle (alphanumeric - found in BudgetSMS control panel)
|
|
162
|
+
// IMPORTANT: The userid MUST be numeric only. You can find it in the BudgetSMS control panel after login.
|
|
163
|
+
// Example: BUDGETSMS_USERID=12345 (NOT "user12345" or any non-numeric value)
|
|
164
|
+
// Usage examples:
|
|
165
|
+
//
|
|
166
|
+
// Send real SMS (requires credits):
|
|
167
|
+
// await WorkerDirector.doWork({
|
|
168
|
+
// type: 'BUDGETSMS',
|
|
169
|
+
// from: 'YourCompany',
|
|
170
|
+
// to: '+41791234567',
|
|
171
|
+
// text: 'Your message here',
|
|
172
|
+
// price: true, // Get price info
|
|
173
|
+
// credit: true, // Get remaining credit
|
|
174
|
+
// });
|
|
175
|
+
//
|
|
176
|
+
// Test SMS (no credit deducted):
|
|
177
|
+
// await WorkerDirector.doWork({
|
|
178
|
+
// type: 'BUDGETSMS',
|
|
179
|
+
// test: true,
|
|
180
|
+
// from: 'YourCompany',
|
|
181
|
+
// to: '+41791234567',
|
|
182
|
+
// text: 'Test message',
|
|
183
|
+
// });
|
|
184
|
+
//
|
|
185
|
+
// IMPORTANT: If you get error 1001, it could mean either:
|
|
186
|
+
// 1. Authentication failed (wrong credentials)
|
|
187
|
+
// 2. Insufficient credit (0 balance)
|
|
188
|
+
// Use the checkBudgetSmsCredentials() helper to verify which one it is.
|
|
189
|
+
// Helper function to check credentials and balance
|
|
190
|
+
export async function checkBudgetSmsCredentials() {
|
|
191
|
+
const url = 'https://api.budgetsms.net/checkcredit/';
|
|
192
|
+
const username = process.env.BUDGETSMS_USERNAME?.trim();
|
|
193
|
+
const userid = process.env.BUDGETSMS_USERID?.trim();
|
|
194
|
+
const handle = process.env.BUDGETSMS_HANDLE?.trim();
|
|
195
|
+
if (!username || !userid || !handle) {
|
|
196
|
+
return { error: 'Missing credentials' };
|
|
197
|
+
}
|
|
198
|
+
if (!/^\d+$/.test(userid)) {
|
|
199
|
+
return { error: 'UserID must be numeric only' };
|
|
200
|
+
}
|
|
201
|
+
const queryParams = new URLSearchParams({ username, userid, handle });
|
|
202
|
+
try {
|
|
203
|
+
const response = await fetch(`${url}?${queryParams.toString()}`, { method: 'GET' });
|
|
204
|
+
const text = await response.text();
|
|
205
|
+
if (text.startsWith('OK')) {
|
|
206
|
+
const credit = parseFloat(text.split(' ')[1]) || 0;
|
|
207
|
+
return { success: true, credit };
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
return { error: text };
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
catch (err) {
|
|
214
|
+
return { error: err.message };
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=budgetsms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budgetsms.js","sourceRoot":"","sources":["../../src/worker/budgetsms.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bulk-import.d.ts","sourceRoot":"","sources":["../../src/worker/bulk-import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"bulk-import.d.ts","sourceRoot":"","sources":["../../src/worker/bulk-import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAKpF,eAAO,MAAM,gBAAgB,EAAE,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAqErE,CAAC"}
|
|
@@ -1,35 +1,6 @@
|
|
|
1
1
|
import { WorkerDirector, WorkerAdapter } from '@unchainedshop/core';
|
|
2
2
|
import { createLogger } from '@unchainedshop/logger';
|
|
3
|
-
|
|
4
|
-
import { EventIterator } from 'event-iterator';
|
|
5
|
-
const logger = createLogger('unchained:worker:bulk-import');
|
|
6
|
-
const streamPayloadToBulkImporter = async (bulkImporter, payloadId, unchainedAPI) => {
|
|
7
|
-
logger.trace(`parseAsync start`);
|
|
8
|
-
const readStream = await unchainedAPI.services.files.createDownloadStream({ fileId: payloadId });
|
|
9
|
-
if (!readStream) {
|
|
10
|
-
throw new Error('The current file adapter does not support streams when downloading required for streamed events. Please use a different file adapter.');
|
|
11
|
-
}
|
|
12
|
-
const eventIterator = new EventIterator((queue) => {
|
|
13
|
-
const jsonStream = JSONStream.parse('events.*'); // rows, ANYTHING, doc
|
|
14
|
-
jsonStream.on('data', queue.push);
|
|
15
|
-
jsonStream.on('close', queue.stop);
|
|
16
|
-
jsonStream.on('error', queue.fail);
|
|
17
|
-
queue.on('highWater', () => readStream.pause());
|
|
18
|
-
queue.on('lowWater', () => readStream.resume());
|
|
19
|
-
readStream.pipe(jsonStream);
|
|
20
|
-
readStream.on('error', queue.fail);
|
|
21
|
-
return () => {
|
|
22
|
-
jsonStream.removeListener('data', queue.push);
|
|
23
|
-
jsonStream.removeListener('close', queue.stop);
|
|
24
|
-
jsonStream.removeListener('error', queue.fail);
|
|
25
|
-
jsonStream.destroy();
|
|
26
|
-
};
|
|
27
|
-
}, { highWaterMark: 100, lowWaterMark: 5 });
|
|
28
|
-
for await (const event of eventIterator) {
|
|
29
|
-
await bulkImporter.prepare(event, unchainedAPI);
|
|
30
|
-
}
|
|
31
|
-
logger.trace(`parseAsync done`);
|
|
32
|
-
};
|
|
3
|
+
const logger = createLogger('unchained:bulk-import');
|
|
33
4
|
export const BulkImportWorker = {
|
|
34
5
|
...WorkerAdapter,
|
|
35
6
|
key: 'shop.unchained.worker-plugin.bulk-import',
|
|
@@ -47,7 +18,13 @@ export const BulkImportWorker = {
|
|
|
47
18
|
});
|
|
48
19
|
if (rawPayload.payloadId) {
|
|
49
20
|
// stream payload from gridfs
|
|
50
|
-
|
|
21
|
+
const readStream = await unchainedAPI.services.files.createDownloadStream({
|
|
22
|
+
fileId: rawPayload.payloadId,
|
|
23
|
+
});
|
|
24
|
+
if (!readStream) {
|
|
25
|
+
throw new Error('Could not create download stream from uploaded file');
|
|
26
|
+
}
|
|
27
|
+
await unchainedAPI.bulkImporter.pipeEventStream(readStream, bulkImporter, unchainedAPI);
|
|
51
28
|
}
|
|
52
29
|
else {
|
|
53
30
|
const { events } = rawPayload;
|
|
@@ -55,6 +32,7 @@ export const BulkImportWorker = {
|
|
|
55
32
|
throw new Error('No events submitted');
|
|
56
33
|
await events.reduce(async (currentEventPromise, nextEvent) => {
|
|
57
34
|
await currentEventPromise;
|
|
35
|
+
await bulkImporter.validate(nextEvent);
|
|
58
36
|
return bulkImporter.prepare(nextEvent, unchainedAPI);
|
|
59
37
|
}, Promise.resolve());
|
|
60
38
|
}
|
|
@@ -63,13 +41,13 @@ export const BulkImportWorker = {
|
|
|
63
41
|
if (error) {
|
|
64
42
|
return {
|
|
65
43
|
success: false,
|
|
66
|
-
result,
|
|
44
|
+
result: result,
|
|
67
45
|
error,
|
|
68
46
|
};
|
|
69
47
|
}
|
|
70
48
|
return {
|
|
71
49
|
success: true,
|
|
72
|
-
result,
|
|
50
|
+
result: result,
|
|
73
51
|
};
|
|
74
52
|
}
|
|
75
53
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bulk-import.js","sourceRoot":"","sources":["../../src/worker/bulk-import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAkB,MAAM,qBAAqB,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"bulk-import.js","sourceRoot":"","sources":["../../src/worker/bulk-import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAkB,MAAM,qBAAqB,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,MAAM,GAAG,YAAY,CAAC,uBAAuB,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,gBAAgB,GAA6C;IACxE,GAAG,aAAa;IAEhB,GAAG,EAAE,0CAA0C;IAC/C,KAAK,EAAE,aAAa;IACpB,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,aAAa;IACnB,sBAAsB,EAAE,CAAC,EAAE,6CAA6C;IAExE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,MAAM,EACJ,4BAA4B,GAAG,KAAK,EACpC,qBAAqB,GAAG,KAAK,EAC7B,+BAA+B,GAAG,KAAK,GACxC,GAAG,UAAU,CAAC;YAEf,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC;gBAChE,4BAA4B;gBAC5B,+BAA+B;gBAC/B,qBAAqB;aACtB,CAAC,CAAC;YAEH,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;gBACzB,6BAA6B;gBAC7B,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CAAC;oBACxE,MAAM,EAAE,UAAU,CAAC,SAAS;iBAC7B,CAAC,CAAC;gBACH,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;gBACzE,CAAC;gBACD,MAAM,YAAY,CAAC,YAAY,CAAC,eAAe,CAAC,UAAU,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;YAC1F,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;gBAC9B,IAAI,CAAC,MAAM,EAAE,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBAE5D,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,EAAE;oBAC3D,MAAM,mBAAmB,CAAC;oBAC1B,MAAM,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;oBACvC,OAAO,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBACvD,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YACxB,CAAC;YAED,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YACrD,MAAM,YAAY,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAElD,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,MAAO;oBACf,KAAK;iBACN,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,MAAO;aAChB,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,KAAK,EAAE,GAAG,CAAC,KAAK;iBACjB;aACF,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC;AAEF,cAAc,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bulkgate.d.ts","sourceRoot":"","sources":["../../src/worker/bulkgate.ts"],"names":[],"mappings":""}
|