@teleporthq/teleport-plugin-next-workflows 0.43.67 → 0.43.69
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/__tests__/_helpers/bind-workflow-utils.ts +16 -1
- package/__tests__/_helpers/fake-fetch.ts +96 -0
- package/__tests__/_helpers/fake-stripe.ts +52 -0
- package/__tests__/_helpers/load-handler.ts +22 -3
- package/__tests__/_helpers/load-invoice-route.ts +75 -0
- package/__tests__/_helpers/load-payment-drivers.ts +69 -0
- package/__tests__/_helpers/load-server-runtime.ts +33 -0
- package/__tests__/_helpers/run-generated-middleware.ts +50 -9
- package/__tests__/admin-form-hydration-target.test.ts +39 -0
- package/__tests__/admin-form-row-hydration.test.ts +58 -0
- package/__tests__/ai-select-database-data-handler.test.ts +14 -3
- package/__tests__/api-route-file-name-segments.test.ts +33 -0
- package/__tests__/app-secret-env.test.ts +55 -0
- package/__tests__/auth-env-secret-preservation.test.ts +22 -3
- package/__tests__/auth-nextauth-url.test.ts +134 -50
- package/__tests__/cart-add-item-kinds.test.ts +259 -0
- package/__tests__/cart-add-item-line-fields.test.ts +328 -0
- package/__tests__/cart-availability-add-to-cart.test.ts +108 -0
- package/__tests__/cart-get-total-discounts.test.ts +499 -0
- package/__tests__/cart-get-total-product-options.test.ts +195 -0
- package/__tests__/cart-get-total-subscriptions.test.ts +221 -0
- package/__tests__/cart-price-order.test.ts +283 -0
- package/__tests__/cart-update-item-quantity-recurring.test.ts +75 -0
- package/__tests__/client-loop-current-item.test.ts +164 -0
- package/__tests__/cron-route-loop-custom-node.test.ts +123 -0
- package/__tests__/cron-route-loop-templateparams.test.ts +7 -0
- package/__tests__/cron-route-verification.test.ts +252 -0
- package/__tests__/custom-js-runtime-base-url.test.ts +64 -0
- package/__tests__/custom-nodes-admin-module.test.ts +310 -0
- package/__tests__/data-api-browser-reads.test.ts +341 -0
- package/__tests__/data-api-low-stock-autofire.test.ts +67 -17
- package/__tests__/data-api-optional-feature-columns.test.ts +240 -0
- package/__tests__/data-api-protected-tables.test.ts +948 -0
- package/__tests__/data-node-not-awaited.test.ts +7 -3
- package/__tests__/data-write-missing-filter.test.ts +119 -0
- package/__tests__/ecommerce-rewriter-product-options.test.ts +143 -0
- package/__tests__/email-locale-senders.test.ts +1 -1
- package/__tests__/file-storage-upload-picked-files.test.ts +20 -0
- package/__tests__/input-debounce-per-field.test.ts +141 -0
- package/__tests__/internal-request-headers.test.ts +7 -3
- package/__tests__/invoice-data-access-replace.test.ts +340 -0
- package/__tests__/invoice-delivery-fee.test.ts +3 -2
- package/__tests__/invoice-generate-hydration.test.ts +20 -12
- package/__tests__/invoice-order-items-settle.test.ts +51 -46
- package/__tests__/invoice-product-options.test.ts +177 -0
- package/__tests__/invoice-regenerate-route.test.ts +488 -0
- package/__tests__/invoice-regional-tax.test.ts +3 -2
- package/__tests__/invoice-reservation.test.ts +195 -0
- package/__tests__/invoice-route-access.test.ts +275 -0
- package/__tests__/invoice-self-call-origin.test.ts +117 -0
- package/__tests__/invoice-tender.test.ts +550 -0
- package/__tests__/legacy-webhook-self-calls.test.ts +187 -0
- package/__tests__/locale-aware-redirects.test.ts +55 -26
- package/__tests__/loop-collection-unwrap.test.ts +6 -1
- package/__tests__/middleware-subscriber-access.test.ts +269 -0
- package/__tests__/payment-charge-user-earlier-attempt.test.ts +267 -0
- package/__tests__/payment-charge-user-handler-serialization.test.ts +47 -82
- package/__tests__/payment-charge-user-line-descriptions.test.ts +124 -0
- package/__tests__/payment-charge-user-report-refusal.test.ts +105 -0
- package/__tests__/payment-close-checkout-node.test.ts +127 -0
- package/__tests__/payment-driver-close-checkout.test.ts +1163 -0
- package/__tests__/payment-driver-coingate.test.ts +470 -0
- package/__tests__/payment-driver-inspect-checkout.test.ts +648 -0
- package/__tests__/payment-driver-mollie.test.ts +864 -0
- package/__tests__/payment-driver-paddle.test.ts +870 -0
- package/__tests__/payment-driver-paypal-capture.test.ts +158 -0
- package/__tests__/payment-driver-paypal-webhook.test.ts +367 -0
- package/__tests__/payment-driver-razorpay.test.ts +895 -0
- package/__tests__/payment-driver-square.test.ts +977 -0
- package/__tests__/payment-driver-stripe.test.ts +267 -0
- package/__tests__/payment-drivers-module.test.ts +429 -0
- package/__tests__/payment-legacy-webhook-routes.test.ts +588 -0
- package/__tests__/payment-redirect-and-order-notification.test.ts +98 -39
- package/__tests__/payment-refund.test.ts +523 -22
- package/__tests__/payment-subscription-nodes.test.ts +1360 -0
- package/__tests__/payment-webhook-route.test.ts +523 -0
- package/__tests__/paypal-webhook-signature-verification.test.ts +205 -0
- package/__tests__/prune-context-oversized-leaf.test.ts +1 -0
- package/__tests__/prune-context-state-keys.test.ts +89 -0
- package/__tests__/push-node-handlers.test.ts +291 -0
- package/__tests__/route-changed-trigger.test.ts +40 -0
- package/__tests__/runtime-storage-upload-access.test.ts +255 -0
- package/__tests__/security-runtime-shadow.test.ts +103 -1
- package/__tests__/segment-reply-changed-keys.test.ts +146 -0
- package/__tests__/segment-state-keys-emission.test.ts +185 -0
- package/__tests__/segment-state-needs.test.ts +102 -0
- package/__tests__/server-segment-context-integrity.test.ts +210 -0
- package/__tests__/server-step-signing.test.ts +371 -0
- package/__tests__/session-cookie-resolver.test.ts +59 -0
- package/__tests__/stock-decrement-audit.test.ts +17 -0
- package/__tests__/subscriber-access-route.test.ts +406 -0
- package/__tests__/webhook-delivery-lease.test.ts +316 -0
- package/__tests__/workflow-auth-guard.test.ts +253 -2
- package/dist/cjs/admin-form-hydration.d.ts +10 -0
- package/dist/cjs/admin-form-hydration.d.ts.map +1 -0
- package/dist/cjs/admin-form-hydration.js +25 -0
- package/dist/cjs/admin-form-hydration.js.map +1 -0
- package/dist/cjs/api-route-generator.d.ts +19 -3
- package/dist/cjs/api-route-generator.d.ts.map +1 -1
- package/dist/cjs/api-route-generator.js +190 -70
- package/dist/cjs/api-route-generator.js.map +1 -1
- package/dist/cjs/auth-generator.d.ts +4 -1
- package/dist/cjs/auth-generator.d.ts.map +1 -1
- package/dist/cjs/auth-generator.js +241 -62
- package/dist/cjs/auth-generator.js.map +1 -1
- package/dist/cjs/auth-return/signed-in-destination-code.d.ts +17 -0
- package/dist/cjs/auth-return/signed-in-destination-code.d.ts.map +1 -0
- package/dist/cjs/auth-return/signed-in-destination-code.js +37 -0
- package/dist/cjs/auth-return/signed-in-destination-code.js.map +1 -0
- package/dist/cjs/cart-pricing-preamble.d.ts +12 -0
- package/dist/cjs/cart-pricing-preamble.d.ts.map +1 -0
- package/dist/cjs/cart-pricing-preamble.js +23 -0
- package/dist/cjs/cart-pricing-preamble.js.map +1 -0
- package/dist/cjs/cron-request-verification.d.ts +24 -0
- package/dist/cjs/cron-request-verification.d.ts.map +1 -0
- package/dist/cjs/cron-request-verification.js +84 -0
- package/dist/cjs/cron-request-verification.js.map +1 -0
- package/dist/cjs/custom-node-modules.d.ts +30 -0
- package/dist/cjs/custom-node-modules.d.ts.map +1 -0
- package/dist/cjs/custom-node-modules.js +90 -0
- package/dist/cjs/custom-node-modules.js.map +1 -0
- package/dist/cjs/data-api-route-generator.d.ts +27 -0
- package/dist/cjs/data-api-route-generator.d.ts.map +1 -1
- package/dist/cjs/data-api-route-generator.js +366 -29
- package/dist/cjs/data-api-route-generator.js.map +1 -1
- package/dist/cjs/ecommerce/cart-availability.d.ts.map +1 -1
- package/dist/cjs/ecommerce/cart-availability.js +22 -13
- package/dist/cjs/ecommerce/cart-availability.js.map +1 -1
- package/dist/cjs/ecommerce/stock-decrement.d.ts +2 -1
- package/dist/cjs/ecommerce/stock-decrement.d.ts.map +1 -1
- package/dist/cjs/ecommerce/stock-decrement.js +6 -0
- package/dist/cjs/ecommerce/stock-decrement.js.map +1 -1
- package/dist/cjs/executor-generator.d.ts +0 -1
- package/dist/cjs/executor-generator.d.ts.map +1 -1
- package/dist/cjs/executor-generator.js +213 -20
- package/dist/cjs/executor-generator.js.map +1 -1
- package/dist/cjs/index.d.ts +12 -4
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +25 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/invoice/api-routes-code.d.ts +26 -0
- package/dist/cjs/invoice/api-routes-code.d.ts.map +1 -1
- package/dist/cjs/invoice/api-routes-code.js +423 -391
- package/dist/cjs/invoice/api-routes-code.js.map +1 -1
- package/dist/cjs/invoice/data-access-code.d.ts.map +1 -1
- package/dist/cjs/invoice/data-access-code.js +420 -107
- package/dist/cjs/invoice/data-access-code.js.map +1 -1
- package/dist/cjs/invoice/index.d.ts.map +1 -1
- package/dist/cjs/invoice/index.js +24 -0
- package/dist/cjs/invoice/index.js.map +1 -1
- package/dist/cjs/invoice/invoice-assembly-code.d.ts +12 -0
- package/dist/cjs/invoice/invoice-assembly-code.d.ts.map +1 -0
- package/dist/cjs/invoice/invoice-assembly-code.js +517 -0
- package/dist/cjs/invoice/invoice-assembly-code.js.map +1 -0
- package/dist/cjs/invoice/invoice-html-code.d.ts.map +1 -1
- package/dist/cjs/invoice/invoice-html-code.js +111 -9
- package/dist/cjs/invoice/invoice-html-code.js.map +1 -1
- package/dist/cjs/invoice/pdf-service-client-code.d.ts.map +1 -1
- package/dist/cjs/invoice/pdf-service-client-code.js +3 -4
- package/dist/cjs/invoice/pdf-service-client-code.js.map +1 -1
- package/dist/cjs/nodes/account/account-login.d.ts.map +1 -1
- package/dist/cjs/nodes/account/account-login.js +4 -3
- package/dist/cjs/nodes/account/account-login.js.map +1 -1
- package/dist/cjs/nodes/account/account-signup.d.ts.map +1 -1
- package/dist/cjs/nodes/account/account-signup.js +7 -4
- package/dist/cjs/nodes/account/account-signup.js.map +1 -1
- package/dist/cjs/nodes/ai/ai-select-database-data.d.ts.map +1 -1
- package/dist/cjs/nodes/ai/ai-select-database-data.js +6 -1
- package/dist/cjs/nodes/ai/ai-select-database-data.js.map +1 -1
- package/dist/cjs/nodes/browser/browser-get-push-subscription.d.ts +9 -0
- package/dist/cjs/nodes/browser/browser-get-push-subscription.d.ts.map +1 -0
- package/dist/cjs/nodes/browser/browser-get-push-subscription.js +25 -0
- package/dist/cjs/nodes/browser/browser-get-push-subscription.js.map +1 -0
- package/dist/cjs/nodes/browser/browser-show-notification.d.ts +10 -0
- package/dist/cjs/nodes/browser/browser-show-notification.d.ts.map +1 -1
- package/dist/cjs/nodes/browser/browser-show-notification.js +65 -40
- package/dist/cjs/nodes/browser/browser-show-notification.js.map +1 -1
- package/dist/cjs/nodes/browser/browser-subscribe-to-push.d.ts +11 -0
- package/dist/cjs/nodes/browser/browser-subscribe-to-push.d.ts.map +1 -1
- package/dist/cjs/nodes/browser/browser-subscribe-to-push.js +21 -31
- package/dist/cjs/nodes/browser/browser-subscribe-to-push.js.map +1 -1
- package/dist/cjs/nodes/browser/browser-unsubscribe-from-push.d.ts +8 -0
- package/dist/cjs/nodes/browser/browser-unsubscribe-from-push.d.ts.map +1 -0
- package/dist/cjs/nodes/browser/browser-unsubscribe-from-push.js +24 -0
- package/dist/cjs/nodes/browser/browser-unsubscribe-from-push.js.map +1 -0
- package/dist/cjs/nodes/browser/push-api-access.d.ts +12 -0
- package/dist/cjs/nodes/browser/push-api-access.d.ts.map +1 -0
- package/dist/cjs/nodes/browser/push-api-access.js +19 -0
- package/dist/cjs/nodes/browser/push-api-access.js.map +1 -0
- package/dist/cjs/nodes/cart/cart-add-item.d.ts.map +1 -1
- package/dist/cjs/nodes/cart/cart-add-item.js +174 -10
- package/dist/cjs/nodes/cart/cart-add-item.js.map +1 -1
- package/dist/cjs/nodes/cart/cart-clear.d.ts.map +1 -1
- package/dist/cjs/nodes/cart/cart-clear.js +11 -0
- package/dist/cjs/nodes/cart/cart-clear.js.map +1 -1
- package/dist/cjs/nodes/cart/cart-get-total.d.ts.map +1 -1
- package/dist/cjs/nodes/cart/cart-get-total.js +260 -3
- package/dist/cjs/nodes/cart/cart-get-total.js.map +1 -1
- package/dist/cjs/nodes/cart/cart-price-order.d.ts +3 -0
- package/dist/cjs/nodes/cart/cart-price-order.d.ts.map +1 -0
- package/dist/cjs/nodes/cart/cart-price-order.js +281 -0
- package/dist/cjs/nodes/cart/cart-price-order.js.map +1 -0
- package/dist/cjs/nodes/cart/cart-update-item-quantity.d.ts.map +1 -1
- package/dist/cjs/nodes/cart/cart-update-item-quantity.js +7 -0
- package/dist/cjs/nodes/cart/cart-update-item-quantity.js.map +1 -1
- package/dist/cjs/nodes/data/data-count.d.ts.map +1 -1
- package/dist/cjs/nodes/data/data-count.js +6 -1
- package/dist/cjs/nodes/data/data-count.js.map +1 -1
- package/dist/cjs/nodes/data/data-create-item.d.ts.map +1 -1
- package/dist/cjs/nodes/data/data-create-item.js +11 -1
- package/dist/cjs/nodes/data/data-create-item.js.map +1 -1
- package/dist/cjs/nodes/data/data-delete-item.d.ts.map +1 -1
- package/dist/cjs/nodes/data/data-delete-item.js +29 -0
- package/dist/cjs/nodes/data/data-delete-item.js.map +1 -1
- package/dist/cjs/nodes/data/data-raw-query.d.ts.map +1 -1
- package/dist/cjs/nodes/data/data-raw-query.js +6 -1
- package/dist/cjs/nodes/data/data-raw-query.js.map +1 -1
- package/dist/cjs/nodes/data/data-select.d.ts.map +1 -1
- package/dist/cjs/nodes/data/data-select.js +6 -1
- package/dist/cjs/nodes/data/data-select.js.map +1 -1
- package/dist/cjs/nodes/data/data-update-item.d.ts.map +1 -1
- package/dist/cjs/nodes/data/data-update-item.js +29 -0
- package/dist/cjs/nodes/data/data-update-item.js.map +1 -1
- package/dist/cjs/nodes/ecommerce/ecommerce-generate-invoice.d.ts.map +1 -1
- package/dist/cjs/nodes/ecommerce/ecommerce-generate-invoice.js +7 -1
- package/dist/cjs/nodes/ecommerce/ecommerce-generate-invoice.js.map +1 -1
- package/dist/cjs/nodes/file-storage/file-storage-upload.d.ts.map +1 -1
- package/dist/cjs/nodes/file-storage/file-storage-upload.js +7 -0
- package/dist/cjs/nodes/file-storage/file-storage-upload.js.map +1 -1
- package/dist/cjs/nodes/general/general-custom-js.d.ts.map +1 -1
- package/dist/cjs/nodes/general/general-custom-js.js +21 -5
- package/dist/cjs/nodes/general/general-custom-js.js.map +1 -1
- package/dist/cjs/nodes/index.d.ts.map +1 -1
- package/dist/cjs/nodes/index.js +9 -4
- package/dist/cjs/nodes/index.js.map +1 -1
- package/dist/cjs/nodes/payment/payment-billing-portal.d.ts +3 -0
- package/dist/cjs/nodes/payment/payment-billing-portal.d.ts.map +1 -0
- package/dist/cjs/nodes/payment/payment-billing-portal.js +52 -0
- package/dist/cjs/nodes/payment/payment-billing-portal.js.map +1 -0
- package/dist/cjs/nodes/payment/payment-charge-user.d.ts.map +1 -1
- package/dist/cjs/nodes/payment/payment-charge-user.js +227 -360
- package/dist/cjs/nodes/payment/payment-charge-user.js.map +1 -1
- package/dist/cjs/nodes/payment/payment-close-checkout.d.ts +3 -0
- package/dist/cjs/nodes/payment/payment-close-checkout.d.ts.map +1 -0
- package/dist/cjs/nodes/payment/payment-close-checkout.js +141 -0
- package/dist/cjs/nodes/payment/payment-close-checkout.js.map +1 -0
- package/dist/cjs/nodes/payment/payment-ensure-subscription-plan.d.ts +3 -0
- package/dist/cjs/nodes/payment/payment-ensure-subscription-plan.d.ts.map +1 -0
- package/dist/cjs/nodes/payment/payment-ensure-subscription-plan.js +67 -0
- package/dist/cjs/nodes/payment/payment-ensure-subscription-plan.js.map +1 -0
- package/dist/cjs/nodes/payment/payment-manage-subscription.d.ts +3 -0
- package/dist/cjs/nodes/payment/payment-manage-subscription.d.ts.map +1 -0
- package/dist/cjs/nodes/payment/payment-manage-subscription.js +89 -0
- package/dist/cjs/nodes/payment/payment-manage-subscription.js.map +1 -0
- package/dist/cjs/nodes/payment/payment-refund.d.ts.map +1 -1
- package/dist/cjs/nodes/payment/payment-refund.js +50 -404
- package/dist/cjs/nodes/payment/payment-refund.js.map +1 -1
- package/dist/cjs/nodes/push/push-send-notification.d.ts +14 -0
- package/dist/cjs/nodes/push/push-send-notification.d.ts.map +1 -0
- package/dist/cjs/nodes/push/push-send-notification.js +83 -0
- package/dist/cjs/nodes/push/push-send-notification.js.map +1 -0
- package/dist/cjs/payments/drivers/coingate-driver-code.d.ts +16 -0
- package/dist/cjs/payments/drivers/coingate-driver-code.d.ts.map +1 -0
- package/dist/cjs/payments/drivers/coingate-driver-code.js +471 -0
- package/dist/cjs/payments/drivers/coingate-driver-code.js.map +1 -0
- package/dist/cjs/payments/drivers/mollie-driver-code.d.ts +16 -0
- package/dist/cjs/payments/drivers/mollie-driver-code.d.ts.map +1 -0
- package/dist/cjs/payments/drivers/mollie-driver-code.js +623 -0
- package/dist/cjs/payments/drivers/mollie-driver-code.js.map +1 -0
- package/dist/cjs/payments/drivers/paddle-driver-code.d.ts +12 -0
- package/dist/cjs/payments/drivers/paddle-driver-code.d.ts.map +1 -0
- package/dist/cjs/payments/drivers/paddle-driver-code.js +683 -0
- package/dist/cjs/payments/drivers/paddle-driver-code.js.map +1 -0
- package/dist/cjs/payments/drivers/paypal-driver-code.d.ts +12 -0
- package/dist/cjs/payments/drivers/paypal-driver-code.d.ts.map +1 -0
- package/dist/cjs/payments/drivers/paypal-driver-code.js +1261 -0
- package/dist/cjs/payments/drivers/paypal-driver-code.js.map +1 -0
- package/dist/cjs/payments/drivers/razorpay-driver-code.d.ts +12 -0
- package/dist/cjs/payments/drivers/razorpay-driver-code.d.ts.map +1 -0
- package/dist/cjs/payments/drivers/razorpay-driver-code.js +732 -0
- package/dist/cjs/payments/drivers/razorpay-driver-code.js.map +1 -0
- package/dist/cjs/payments/drivers/square-driver-code.d.ts +14 -0
- package/dist/cjs/payments/drivers/square-driver-code.d.ts.map +1 -0
- package/dist/cjs/payments/drivers/square-driver-code.js +931 -0
- package/dist/cjs/payments/drivers/square-driver-code.js.map +1 -0
- package/dist/cjs/payments/drivers/stripe-driver-code.d.ts +12 -0
- package/dist/cjs/payments/drivers/stripe-driver-code.d.ts.map +1 -0
- package/dist/cjs/payments/drivers/stripe-driver-code.js +778 -0
- package/dist/cjs/payments/drivers/stripe-driver-code.js.map +1 -0
- package/dist/cjs/payments/index.d.ts +66 -0
- package/dist/cjs/payments/index.d.ts.map +1 -0
- package/dist/cjs/payments/index.js +175 -0
- package/dist/cjs/payments/index.js.map +1 -0
- package/dist/cjs/payments/payment-core-code.d.ts +19 -0
- package/dist/cjs/payments/payment-core-code.d.ts.map +1 -0
- package/dist/cjs/payments/payment-core-code.js +422 -0
- package/dist/cjs/payments/payment-core-code.js.map +1 -0
- package/dist/cjs/payments/payment-driver-code-map.d.ts +4 -0
- package/dist/cjs/payments/payment-driver-code-map.d.ts.map +1 -0
- package/dist/cjs/payments/payment-driver-code-map.js +21 -0
- package/dist/cjs/payments/payment-driver-code-map.js.map +1 -0
- package/dist/cjs/payments/payment-drivers-scope.d.ts +35 -0
- package/dist/cjs/payments/payment-drivers-scope.d.ts.map +1 -0
- package/dist/cjs/payments/payment-drivers-scope.js +56 -0
- package/dist/cjs/payments/payment-drivers-scope.js.map +1 -0
- package/dist/cjs/payments/payment-registry-code.d.ts +8 -0
- package/dist/cjs/payments/payment-registry-code.d.ts.map +1 -0
- package/dist/cjs/payments/payment-registry-code.js +41 -0
- package/dist/cjs/payments/payment-registry-code.js.map +1 -0
- package/dist/cjs/pg-client-code.d.ts +10 -0
- package/dist/cjs/pg-client-code.d.ts.map +1 -1
- package/dist/cjs/pg-client-code.js +27 -1
- package/dist/cjs/pg-client-code.js.map +1 -1
- package/dist/cjs/runtime-storage-generator.d.ts +28 -0
- package/dist/cjs/runtime-storage-generator.d.ts.map +1 -1
- package/dist/cjs/runtime-storage-generator.js +240 -5
- package/dist/cjs/runtime-storage-generator.js.map +1 -1
- package/dist/cjs/secret-collector.d.ts.map +1 -1
- package/dist/cjs/secret-collector.js +8 -3
- package/dist/cjs/secret-collector.js.map +1 -1
- package/dist/cjs/security-scanner.d.ts +10 -1
- package/dist/cjs/security-scanner.d.ts.map +1 -1
- package/dist/cjs/security-scanner.js +19 -1
- package/dist/cjs/security-scanner.js.map +1 -1
- package/dist/cjs/segment-context-needs.d.ts +38 -0
- package/dist/cjs/segment-context-needs.d.ts.map +1 -0
- package/dist/cjs/segment-context-needs.js +129 -0
- package/dist/cjs/segment-context-needs.js.map +1 -0
- package/dist/cjs/segment-splitter.d.ts.map +1 -1
- package/dist/cjs/segment-splitter.js +6 -1
- package/dist/cjs/segment-splitter.js.map +1 -1
- package/dist/cjs/segment-trust.d.ts +50 -0
- package/dist/cjs/segment-trust.d.ts.map +1 -0
- package/dist/cjs/segment-trust.js +115 -0
- package/dist/cjs/segment-trust.js.map +1 -0
- package/dist/cjs/sent-email-log/sent-email-log-code.d.ts +19 -0
- package/dist/cjs/sent-email-log/sent-email-log-code.d.ts.map +1 -1
- package/dist/cjs/sent-email-log/sent-email-log-code.js +1 -24
- package/dist/cjs/sent-email-log/sent-email-log-code.js.map +1 -1
- package/dist/cjs/server-runtime-code.d.ts +34 -0
- package/dist/cjs/server-runtime-code.d.ts.map +1 -0
- package/dist/cjs/server-runtime-code.js +303 -0
- package/dist/cjs/server-runtime-code.js.map +1 -0
- package/dist/cjs/session-cookie-resolver.d.ts +3 -78
- package/dist/cjs/session-cookie-resolver.d.ts.map +1 -1
- package/dist/cjs/session-cookie-resolver.js +7 -276
- package/dist/cjs/session-cookie-resolver.js.map +1 -1
- package/dist/cjs/subscriber-access-route-generator.d.ts +71 -0
- package/dist/cjs/subscriber-access-route-generator.d.ts.map +1 -0
- package/dist/cjs/subscriber-access-route-generator.js +301 -0
- package/dist/cjs/subscriber-access-route-generator.js.map +1 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/types.d.ts +6 -0
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/webhook-delivery-lease/index.d.ts +8 -0
- package/dist/cjs/webhook-delivery-lease/index.d.ts.map +1 -0
- package/dist/cjs/webhook-delivery-lease/index.js +41 -0
- package/dist/cjs/webhook-delivery-lease/index.js.map +1 -0
- package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.d.ts +26 -0
- package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.d.ts.map +1 -0
- package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.js +151 -0
- package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.js.map +1 -0
- package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-scope.d.ts +16 -0
- package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-scope.d.ts.map +1 -0
- package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-scope.js +19 -0
- package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-scope.js.map +1 -0
- package/dist/cjs/webhook-generator.d.ts +1 -1
- package/dist/cjs/webhook-generator.d.ts.map +1 -1
- package/dist/cjs/webhook-generator.js +342 -254
- package/dist/cjs/webhook-generator.js.map +1 -1
- package/dist/cjs/webhook-signature-verification.d.ts +17 -1
- package/dist/cjs/webhook-signature-verification.d.ts.map +1 -1
- package/dist/cjs/webhook-signature-verification.js +182 -27
- package/dist/cjs/webhook-signature-verification.js.map +1 -1
- package/dist/cjs/workflow-auth-generator.d.ts +9 -6
- package/dist/cjs/workflow-auth-generator.d.ts.map +1 -1
- package/dist/cjs/workflow-auth-generator.js +133 -29
- package/dist/cjs/workflow-auth-generator.js.map +1 -1
- package/dist/cjs/workflow-component-plugin.d.ts.map +1 -1
- package/dist/cjs/workflow-component-plugin.js +65 -28
- package/dist/cjs/workflow-component-plugin.js.map +1 -1
- package/dist/cjs/workflow-project-plugin.d.ts +13 -0
- package/dist/cjs/workflow-project-plugin.d.ts.map +1 -1
- package/dist/cjs/workflow-project-plugin.js +215 -65
- package/dist/cjs/workflow-project-plugin.js.map +1 -1
- package/dist/esm/admin-form-hydration.d.ts +10 -0
- package/dist/esm/admin-form-hydration.d.ts.map +1 -0
- package/dist/esm/admin-form-hydration.js +21 -0
- package/dist/esm/admin-form-hydration.js.map +1 -0
- package/dist/esm/api-route-generator.d.ts +19 -3
- package/dist/esm/api-route-generator.d.ts.map +1 -1
- package/dist/esm/api-route-generator.js +189 -70
- package/dist/esm/api-route-generator.js.map +1 -1
- package/dist/esm/auth-generator.d.ts +4 -1
- package/dist/esm/auth-generator.d.ts.map +1 -1
- package/dist/esm/auth-generator.js +241 -62
- package/dist/esm/auth-generator.js.map +1 -1
- package/dist/esm/auth-return/signed-in-destination-code.d.ts +17 -0
- package/dist/esm/auth-return/signed-in-destination-code.d.ts.map +1 -0
- package/dist/esm/auth-return/signed-in-destination-code.js +33 -0
- package/dist/esm/auth-return/signed-in-destination-code.js.map +1 -0
- package/dist/esm/cart-pricing-preamble.d.ts +12 -0
- package/dist/esm/cart-pricing-preamble.d.ts.map +1 -0
- package/dist/esm/cart-pricing-preamble.js +19 -0
- package/dist/esm/cart-pricing-preamble.js.map +1 -0
- package/dist/esm/cron-request-verification.d.ts +24 -0
- package/dist/esm/cron-request-verification.d.ts.map +1 -0
- package/dist/esm/cron-request-verification.js +80 -0
- package/dist/esm/cron-request-verification.js.map +1 -0
- package/dist/esm/custom-node-modules.d.ts +30 -0
- package/dist/esm/custom-node-modules.d.ts.map +1 -0
- package/dist/esm/custom-node-modules.js +84 -0
- package/dist/esm/custom-node-modules.js.map +1 -0
- package/dist/esm/data-api-route-generator.d.ts +27 -0
- package/dist/esm/data-api-route-generator.d.ts.map +1 -1
- package/dist/esm/data-api-route-generator.js +365 -28
- package/dist/esm/data-api-route-generator.js.map +1 -1
- package/dist/esm/ecommerce/cart-availability.d.ts.map +1 -1
- package/dist/esm/ecommerce/cart-availability.js +22 -13
- package/dist/esm/ecommerce/cart-availability.js.map +1 -1
- package/dist/esm/ecommerce/stock-decrement.d.ts +2 -1
- package/dist/esm/ecommerce/stock-decrement.d.ts.map +1 -1
- package/dist/esm/ecommerce/stock-decrement.js +6 -0
- package/dist/esm/ecommerce/stock-decrement.js.map +1 -1
- package/dist/esm/executor-generator.d.ts +0 -1
- package/dist/esm/executor-generator.d.ts.map +1 -1
- package/dist/esm/executor-generator.js +212 -18
- package/dist/esm/executor-generator.js.map +1 -1
- package/dist/esm/index.d.ts +12 -4
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +10 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/invoice/api-routes-code.d.ts +26 -0
- package/dist/esm/invoice/api-routes-code.d.ts.map +1 -1
- package/dist/esm/invoice/api-routes-code.js +421 -390
- package/dist/esm/invoice/api-routes-code.js.map +1 -1
- package/dist/esm/invoice/data-access-code.d.ts.map +1 -1
- package/dist/esm/invoice/data-access-code.js +420 -107
- package/dist/esm/invoice/data-access-code.js.map +1 -1
- package/dist/esm/invoice/index.d.ts.map +1 -1
- package/dist/esm/invoice/index.js +25 -1
- package/dist/esm/invoice/index.js.map +1 -1
- package/dist/esm/invoice/invoice-assembly-code.d.ts +12 -0
- package/dist/esm/invoice/invoice-assembly-code.d.ts.map +1 -0
- package/dist/esm/invoice/invoice-assembly-code.js +513 -0
- package/dist/esm/invoice/invoice-assembly-code.js.map +1 -0
- package/dist/esm/invoice/invoice-html-code.d.ts.map +1 -1
- package/dist/esm/invoice/invoice-html-code.js +111 -9
- package/dist/esm/invoice/invoice-html-code.js.map +1 -1
- package/dist/esm/invoice/pdf-service-client-code.d.ts.map +1 -1
- package/dist/esm/invoice/pdf-service-client-code.js +3 -4
- package/dist/esm/invoice/pdf-service-client-code.js.map +1 -1
- package/dist/esm/nodes/account/account-login.d.ts.map +1 -1
- package/dist/esm/nodes/account/account-login.js +4 -3
- package/dist/esm/nodes/account/account-login.js.map +1 -1
- package/dist/esm/nodes/account/account-signup.d.ts.map +1 -1
- package/dist/esm/nodes/account/account-signup.js +7 -4
- package/dist/esm/nodes/account/account-signup.js.map +1 -1
- package/dist/esm/nodes/ai/ai-select-database-data.d.ts.map +1 -1
- package/dist/esm/nodes/ai/ai-select-database-data.js +6 -1
- package/dist/esm/nodes/ai/ai-select-database-data.js.map +1 -1
- package/dist/esm/nodes/browser/browser-get-push-subscription.d.ts +9 -0
- package/dist/esm/nodes/browser/browser-get-push-subscription.d.ts.map +1 -0
- package/dist/esm/nodes/browser/browser-get-push-subscription.js +22 -0
- package/dist/esm/nodes/browser/browser-get-push-subscription.js.map +1 -0
- package/dist/esm/nodes/browser/browser-show-notification.d.ts +10 -0
- package/dist/esm/nodes/browser/browser-show-notification.d.ts.map +1 -1
- package/dist/esm/nodes/browser/browser-show-notification.js +65 -40
- package/dist/esm/nodes/browser/browser-show-notification.js.map +1 -1
- package/dist/esm/nodes/browser/browser-subscribe-to-push.d.ts +11 -0
- package/dist/esm/nodes/browser/browser-subscribe-to-push.d.ts.map +1 -1
- package/dist/esm/nodes/browser/browser-subscribe-to-push.js +21 -31
- package/dist/esm/nodes/browser/browser-subscribe-to-push.js.map +1 -1
- package/dist/esm/nodes/browser/browser-unsubscribe-from-push.d.ts +8 -0
- package/dist/esm/nodes/browser/browser-unsubscribe-from-push.d.ts.map +1 -0
- package/dist/esm/nodes/browser/browser-unsubscribe-from-push.js +21 -0
- package/dist/esm/nodes/browser/browser-unsubscribe-from-push.js.map +1 -0
- package/dist/esm/nodes/browser/push-api-access.d.ts +12 -0
- package/dist/esm/nodes/browser/push-api-access.d.ts.map +1 -0
- package/dist/esm/nodes/browser/push-api-access.js +13 -0
- package/dist/esm/nodes/browser/push-api-access.js.map +1 -0
- package/dist/esm/nodes/cart/cart-add-item.d.ts.map +1 -1
- package/dist/esm/nodes/cart/cart-add-item.js +174 -10
- package/dist/esm/nodes/cart/cart-add-item.js.map +1 -1
- package/dist/esm/nodes/cart/cart-clear.d.ts.map +1 -1
- package/dist/esm/nodes/cart/cart-clear.js +11 -0
- package/dist/esm/nodes/cart/cart-clear.js.map +1 -1
- package/dist/esm/nodes/cart/cart-get-total.d.ts.map +1 -1
- package/dist/esm/nodes/cart/cart-get-total.js +261 -4
- package/dist/esm/nodes/cart/cart-get-total.js.map +1 -1
- package/dist/esm/nodes/cart/cart-price-order.d.ts +3 -0
- package/dist/esm/nodes/cart/cart-price-order.d.ts.map +1 -0
- package/dist/esm/nodes/cart/cart-price-order.js +278 -0
- package/dist/esm/nodes/cart/cart-price-order.js.map +1 -0
- package/dist/esm/nodes/cart/cart-update-item-quantity.d.ts.map +1 -1
- package/dist/esm/nodes/cart/cart-update-item-quantity.js +7 -0
- package/dist/esm/nodes/cart/cart-update-item-quantity.js.map +1 -1
- package/dist/esm/nodes/data/data-count.d.ts.map +1 -1
- package/dist/esm/nodes/data/data-count.js +6 -1
- package/dist/esm/nodes/data/data-count.js.map +1 -1
- package/dist/esm/nodes/data/data-create-item.d.ts.map +1 -1
- package/dist/esm/nodes/data/data-create-item.js +11 -1
- package/dist/esm/nodes/data/data-create-item.js.map +1 -1
- package/dist/esm/nodes/data/data-delete-item.d.ts.map +1 -1
- package/dist/esm/nodes/data/data-delete-item.js +29 -0
- package/dist/esm/nodes/data/data-delete-item.js.map +1 -1
- package/dist/esm/nodes/data/data-raw-query.d.ts.map +1 -1
- package/dist/esm/nodes/data/data-raw-query.js +6 -1
- package/dist/esm/nodes/data/data-raw-query.js.map +1 -1
- package/dist/esm/nodes/data/data-select.d.ts.map +1 -1
- package/dist/esm/nodes/data/data-select.js +6 -1
- package/dist/esm/nodes/data/data-select.js.map +1 -1
- package/dist/esm/nodes/data/data-update-item.d.ts.map +1 -1
- package/dist/esm/nodes/data/data-update-item.js +29 -0
- package/dist/esm/nodes/data/data-update-item.js.map +1 -1
- package/dist/esm/nodes/ecommerce/ecommerce-generate-invoice.d.ts.map +1 -1
- package/dist/esm/nodes/ecommerce/ecommerce-generate-invoice.js +7 -1
- package/dist/esm/nodes/ecommerce/ecommerce-generate-invoice.js.map +1 -1
- package/dist/esm/nodes/file-storage/file-storage-upload.d.ts.map +1 -1
- package/dist/esm/nodes/file-storage/file-storage-upload.js +7 -0
- package/dist/esm/nodes/file-storage/file-storage-upload.js.map +1 -1
- package/dist/esm/nodes/general/general-custom-js.d.ts.map +1 -1
- package/dist/esm/nodes/general/general-custom-js.js +21 -5
- package/dist/esm/nodes/general/general-custom-js.js.map +1 -1
- package/dist/esm/nodes/index.d.ts.map +1 -1
- package/dist/esm/nodes/index.js +9 -4
- package/dist/esm/nodes/index.js.map +1 -1
- package/dist/esm/nodes/payment/payment-billing-portal.d.ts +3 -0
- package/dist/esm/nodes/payment/payment-billing-portal.d.ts.map +1 -0
- package/dist/esm/nodes/payment/payment-billing-portal.js +49 -0
- package/dist/esm/nodes/payment/payment-billing-portal.js.map +1 -0
- package/dist/esm/nodes/payment/payment-charge-user.d.ts.map +1 -1
- package/dist/esm/nodes/payment/payment-charge-user.js +227 -360
- package/dist/esm/nodes/payment/payment-charge-user.js.map +1 -1
- package/dist/esm/nodes/payment/payment-close-checkout.d.ts +3 -0
- package/dist/esm/nodes/payment/payment-close-checkout.d.ts.map +1 -0
- package/dist/esm/nodes/payment/payment-close-checkout.js +138 -0
- package/dist/esm/nodes/payment/payment-close-checkout.js.map +1 -0
- package/dist/esm/nodes/payment/payment-ensure-subscription-plan.d.ts +3 -0
- package/dist/esm/nodes/payment/payment-ensure-subscription-plan.d.ts.map +1 -0
- package/dist/esm/nodes/payment/payment-ensure-subscription-plan.js +64 -0
- package/dist/esm/nodes/payment/payment-ensure-subscription-plan.js.map +1 -0
- package/dist/esm/nodes/payment/payment-manage-subscription.d.ts +3 -0
- package/dist/esm/nodes/payment/payment-manage-subscription.d.ts.map +1 -0
- package/dist/esm/nodes/payment/payment-manage-subscription.js +86 -0
- package/dist/esm/nodes/payment/payment-manage-subscription.js.map +1 -0
- package/dist/esm/nodes/payment/payment-refund.d.ts.map +1 -1
- package/dist/esm/nodes/payment/payment-refund.js +50 -404
- package/dist/esm/nodes/payment/payment-refund.js.map +1 -1
- package/dist/esm/nodes/push/push-send-notification.d.ts +14 -0
- package/dist/esm/nodes/push/push-send-notification.d.ts.map +1 -0
- package/dist/esm/nodes/push/push-send-notification.js +80 -0
- package/dist/esm/nodes/push/push-send-notification.js.map +1 -0
- package/dist/esm/payments/drivers/coingate-driver-code.d.ts +16 -0
- package/dist/esm/payments/drivers/coingate-driver-code.d.ts.map +1 -0
- package/dist/esm/payments/drivers/coingate-driver-code.js +467 -0
- package/dist/esm/payments/drivers/coingate-driver-code.js.map +1 -0
- package/dist/esm/payments/drivers/mollie-driver-code.d.ts +16 -0
- package/dist/esm/payments/drivers/mollie-driver-code.d.ts.map +1 -0
- package/dist/esm/payments/drivers/mollie-driver-code.js +619 -0
- package/dist/esm/payments/drivers/mollie-driver-code.js.map +1 -0
- package/dist/esm/payments/drivers/paddle-driver-code.d.ts +12 -0
- package/dist/esm/payments/drivers/paddle-driver-code.d.ts.map +1 -0
- package/dist/esm/payments/drivers/paddle-driver-code.js +679 -0
- package/dist/esm/payments/drivers/paddle-driver-code.js.map +1 -0
- package/dist/esm/payments/drivers/paypal-driver-code.d.ts +12 -0
- package/dist/esm/payments/drivers/paypal-driver-code.d.ts.map +1 -0
- package/dist/esm/payments/drivers/paypal-driver-code.js +1257 -0
- package/dist/esm/payments/drivers/paypal-driver-code.js.map +1 -0
- package/dist/esm/payments/drivers/razorpay-driver-code.d.ts +12 -0
- package/dist/esm/payments/drivers/razorpay-driver-code.d.ts.map +1 -0
- package/dist/esm/payments/drivers/razorpay-driver-code.js +728 -0
- package/dist/esm/payments/drivers/razorpay-driver-code.js.map +1 -0
- package/dist/esm/payments/drivers/square-driver-code.d.ts +14 -0
- package/dist/esm/payments/drivers/square-driver-code.d.ts.map +1 -0
- package/dist/esm/payments/drivers/square-driver-code.js +927 -0
- package/dist/esm/payments/drivers/square-driver-code.js.map +1 -0
- package/dist/esm/payments/drivers/stripe-driver-code.d.ts +12 -0
- package/dist/esm/payments/drivers/stripe-driver-code.d.ts.map +1 -0
- package/dist/esm/payments/drivers/stripe-driver-code.js +774 -0
- package/dist/esm/payments/drivers/stripe-driver-code.js.map +1 -0
- package/dist/esm/payments/index.d.ts +66 -0
- package/dist/esm/payments/index.d.ts.map +1 -0
- package/dist/esm/payments/index.js +164 -0
- package/dist/esm/payments/index.js.map +1 -0
- package/dist/esm/payments/payment-core-code.d.ts +19 -0
- package/dist/esm/payments/payment-core-code.d.ts.map +1 -0
- package/dist/esm/payments/payment-core-code.js +418 -0
- package/dist/esm/payments/payment-core-code.js.map +1 -0
- package/dist/esm/payments/payment-driver-code-map.d.ts +4 -0
- package/dist/esm/payments/payment-driver-code-map.d.ts.map +1 -0
- package/dist/esm/payments/payment-driver-code-map.js +18 -0
- package/dist/esm/payments/payment-driver-code-map.js.map +1 -0
- package/dist/esm/payments/payment-drivers-scope.d.ts +35 -0
- package/dist/esm/payments/payment-drivers-scope.d.ts.map +1 -0
- package/dist/esm/payments/payment-drivers-scope.js +51 -0
- package/dist/esm/payments/payment-drivers-scope.js.map +1 -0
- package/dist/esm/payments/payment-registry-code.d.ts +8 -0
- package/dist/esm/payments/payment-registry-code.d.ts.map +1 -0
- package/dist/esm/payments/payment-registry-code.js +37 -0
- package/dist/esm/payments/payment-registry-code.js.map +1 -0
- package/dist/esm/pg-client-code.d.ts +10 -0
- package/dist/esm/pg-client-code.d.ts.map +1 -1
- package/dist/esm/pg-client-code.js +25 -0
- package/dist/esm/pg-client-code.js.map +1 -1
- package/dist/esm/runtime-storage-generator.d.ts +28 -0
- package/dist/esm/runtime-storage-generator.d.ts.map +1 -1
- package/dist/esm/runtime-storage-generator.js +239 -4
- package/dist/esm/runtime-storage-generator.js.map +1 -1
- package/dist/esm/secret-collector.d.ts.map +1 -1
- package/dist/esm/secret-collector.js +8 -3
- package/dist/esm/secret-collector.js.map +1 -1
- package/dist/esm/security-scanner.d.ts +10 -1
- package/dist/esm/security-scanner.d.ts.map +1 -1
- package/dist/esm/security-scanner.js +18 -0
- package/dist/esm/security-scanner.js.map +1 -1
- package/dist/esm/segment-context-needs.d.ts +38 -0
- package/dist/esm/segment-context-needs.d.ts.map +1 -0
- package/dist/esm/segment-context-needs.js +125 -0
- package/dist/esm/segment-context-needs.js.map +1 -0
- package/dist/esm/segment-splitter.d.ts.map +1 -1
- package/dist/esm/segment-splitter.js +6 -1
- package/dist/esm/segment-splitter.js.map +1 -1
- package/dist/esm/segment-trust.d.ts +50 -0
- package/dist/esm/segment-trust.d.ts.map +1 -0
- package/dist/esm/segment-trust.js +111 -0
- package/dist/esm/segment-trust.js.map +1 -0
- package/dist/esm/sent-email-log/sent-email-log-code.d.ts +19 -0
- package/dist/esm/sent-email-log/sent-email-log-code.d.ts.map +1 -1
- package/dist/esm/sent-email-log/sent-email-log-code.js +2 -25
- package/dist/esm/sent-email-log/sent-email-log-code.js.map +1 -1
- package/dist/esm/server-runtime-code.d.ts +34 -0
- package/dist/esm/server-runtime-code.d.ts.map +1 -0
- package/dist/esm/server-runtime-code.js +299 -0
- package/dist/esm/server-runtime-code.js.map +1 -0
- package/dist/esm/session-cookie-resolver.d.ts +3 -78
- package/dist/esm/session-cookie-resolver.d.ts.map +1 -1
- package/dist/esm/session-cookie-resolver.js +7 -274
- package/dist/esm/session-cookie-resolver.js.map +1 -1
- package/dist/esm/subscriber-access-route-generator.d.ts +71 -0
- package/dist/esm/subscriber-access-route-generator.d.ts.map +1 -0
- package/dist/esm/subscriber-access-route-generator.js +292 -0
- package/dist/esm/subscriber-access-route-generator.js.map +1 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/types.d.ts +6 -0
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/webhook-delivery-lease/index.d.ts +8 -0
- package/dist/esm/webhook-delivery-lease/index.d.ts.map +1 -0
- package/dist/esm/webhook-delivery-lease/index.js +37 -0
- package/dist/esm/webhook-delivery-lease/index.js.map +1 -0
- package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.d.ts +26 -0
- package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.d.ts.map +1 -0
- package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.js +147 -0
- package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.js.map +1 -0
- package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-scope.d.ts +16 -0
- package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-scope.d.ts.map +1 -0
- package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-scope.js +16 -0
- package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-scope.js.map +1 -0
- package/dist/esm/webhook-generator.d.ts +1 -1
- package/dist/esm/webhook-generator.d.ts.map +1 -1
- package/dist/esm/webhook-generator.js +342 -254
- package/dist/esm/webhook-generator.js.map +1 -1
- package/dist/esm/webhook-signature-verification.d.ts +17 -1
- package/dist/esm/webhook-signature-verification.d.ts.map +1 -1
- package/dist/esm/webhook-signature-verification.js +179 -25
- package/dist/esm/webhook-signature-verification.js.map +1 -1
- package/dist/esm/workflow-auth-generator.d.ts +9 -6
- package/dist/esm/workflow-auth-generator.d.ts.map +1 -1
- package/dist/esm/workflow-auth-generator.js +132 -28
- package/dist/esm/workflow-auth-generator.js.map +1 -1
- package/dist/esm/workflow-component-plugin.d.ts.map +1 -1
- package/dist/esm/workflow-component-plugin.js +65 -28
- package/dist/esm/workflow-component-plugin.js.map +1 -1
- package/dist/esm/workflow-project-plugin.d.ts +13 -0
- package/dist/esm/workflow-project-plugin.d.ts.map +1 -1
- package/dist/esm/workflow-project-plugin.js +212 -63
- package/dist/esm/workflow-project-plugin.js.map +1 -1
- package/package.json +4 -4
- package/src/admin-form-hydration.ts +28 -0
- package/src/api-route-generator.ts +251 -64
- package/src/auth-generator.ts +273 -53
- package/src/auth-return/signed-in-destination-code.ts +32 -0
- package/src/cart-pricing-preamble.ts +22 -0
- package/src/cron-request-verification.ts +79 -0
- package/src/custom-node-modules.ts +102 -0
- package/src/data-api-route-generator.ts +370 -28
- package/src/ecommerce/cart-availability.ts +22 -13
- package/src/ecommerce/stock-decrement.ts +13 -1
- package/src/executor-generator.ts +212 -19
- package/src/index.ts +28 -7
- package/src/invoice/api-routes-code.ts +424 -391
- package/src/invoice/data-access-code.ts +431 -110
- package/src/invoice/index.ts +31 -1
- package/src/invoice/invoice-assembly-code.ts +514 -0
- package/src/invoice/invoice-html-code.ts +111 -9
- package/src/invoice/pdf-service-client-code.ts +3 -4
- package/src/nodes/account/account-login.ts +4 -3
- package/src/nodes/account/account-signup.ts +7 -4
- package/src/nodes/ai/ai-select-database-data.ts +10 -1
- package/src/nodes/browser/browser-get-push-subscription.ts +23 -0
- package/src/nodes/browser/browser-show-notification.ts +61 -38
- package/src/nodes/browser/browser-subscribe-to-push.ts +26 -36
- package/src/nodes/browser/browser-unsubscribe-from-push.ts +22 -0
- package/src/nodes/browser/push-api-access.ts +20 -0
- package/src/nodes/cart/cart-add-item.ts +200 -9
- package/src/nodes/cart/cart-clear.ts +11 -0
- package/src/nodes/cart/cart-get-total.ts +279 -7
- package/src/nodes/cart/cart-price-order.ts +351 -0
- package/src/nodes/cart/cart-update-item-quantity.ts +7 -0
- package/src/nodes/data/data-count.ts +9 -1
- package/src/nodes/data/data-create-item.ts +15 -1
- package/src/nodes/data/data-delete-item.ts +32 -0
- package/src/nodes/data/data-raw-query.ts +9 -1
- package/src/nodes/data/data-select.ts +9 -1
- package/src/nodes/data/data-update-item.ts +32 -0
- package/src/nodes/ecommerce/ecommerce-generate-invoice.ts +11 -1
- package/src/nodes/file-storage/file-storage-upload.ts +8 -0
- package/src/nodes/general/general-custom-js.ts +21 -5
- package/src/nodes/index.ts +16 -6
- package/src/nodes/payment/payment-billing-portal.ts +51 -0
- package/src/nodes/payment/payment-charge-user.ts +236 -442
- package/src/nodes/payment/payment-close-checkout.ts +137 -0
- package/src/nodes/payment/payment-ensure-subscription-plan.ts +66 -0
- package/src/nodes/payment/payment-manage-subscription.ts +89 -0
- package/src/nodes/payment/payment-refund.ts +52 -467
- package/src/nodes/payment-drivers-global.d.ts +13 -0
- package/src/nodes/push/push-send-notification.ts +83 -0
- package/src/nodes/workflow-utils-global.d.ts +5 -0
- package/src/payments/drivers/coingate-driver-code.ts +466 -0
- package/src/payments/drivers/mollie-driver-code.ts +618 -0
- package/src/payments/drivers/paddle-driver-code.ts +678 -0
- package/src/payments/drivers/paypal-driver-code.ts +1256 -0
- package/src/payments/drivers/razorpay-driver-code.ts +727 -0
- package/src/payments/drivers/square-driver-code.ts +926 -0
- package/src/payments/drivers/stripe-driver-code.ts +773 -0
- package/src/payments/index.ts +204 -0
- package/src/payments/payment-core-code.ts +421 -0
- package/src/payments/payment-driver-code-map.ts +19 -0
- package/src/payments/payment-drivers-scope.ts +66 -0
- package/src/payments/payment-registry-code.ts +38 -0
- package/src/pg-client-code.ts +30 -0
- package/src/runtime-storage-generator.ts +241 -4
- package/src/secret-collector.ts +8 -3
- package/src/security-scanner.ts +22 -0
- package/src/segment-context-needs.ts +148 -0
- package/src/segment-splitter.ts +6 -1
- package/src/segment-trust.ts +170 -0
- package/src/sent-email-log/sent-email-log-code.ts +2 -32
- package/src/server-runtime-code.ts +298 -0
- package/src/session-cookie-resolver.ts +9 -277
- package/src/subscriber-access-route-generator.ts +351 -0
- package/src/types.ts +6 -0
- package/src/webhook-delivery-lease/index.ts +44 -0
- package/src/webhook-delivery-lease/webhook-delivery-lease-code.ts +151 -0
- package/src/webhook-delivery-lease/webhook-delivery-lease-scope.ts +18 -0
- package/src/webhook-generator.ts +359 -260
- package/src/webhook-signature-verification.ts +180 -25
- package/src/workflow-auth-generator.ts +137 -28
- package/src/workflow-component-plugin.ts +77 -20
- package/src/workflow-project-plugin.ts +247 -44
- package/dist/cjs/nodes/payment/payment-cancel-plan.d.ts +0 -3
- package/dist/cjs/nodes/payment/payment-cancel-plan.d.ts.map +0 -1
- package/dist/cjs/nodes/payment/payment-cancel-plan.js +0 -33
- package/dist/cjs/nodes/payment/payment-cancel-plan.js.map +0 -1
- package/dist/cjs/nodes/payment/payment-create-subscription.d.ts +0 -3
- package/dist/cjs/nodes/payment/payment-create-subscription.d.ts.map +0 -1
- package/dist/cjs/nodes/payment/payment-create-subscription.js +0 -41
- package/dist/cjs/nodes/payment/payment-create-subscription.js.map +0 -1
- package/dist/cjs/nodes/payment/payment-subscribe-to-plan.d.ts +0 -3
- package/dist/cjs/nodes/payment/payment-subscribe-to-plan.d.ts.map +0 -1
- package/dist/cjs/nodes/payment/payment-subscribe-to-plan.js +0 -45
- package/dist/cjs/nodes/payment/payment-subscribe-to-plan.js.map +0 -1
- package/dist/esm/nodes/payment/payment-cancel-plan.d.ts +0 -3
- package/dist/esm/nodes/payment/payment-cancel-plan.d.ts.map +0 -1
- package/dist/esm/nodes/payment/payment-cancel-plan.js +0 -30
- package/dist/esm/nodes/payment/payment-cancel-plan.js.map +0 -1
- package/dist/esm/nodes/payment/payment-create-subscription.d.ts +0 -3
- package/dist/esm/nodes/payment/payment-create-subscription.d.ts.map +0 -1
- package/dist/esm/nodes/payment/payment-create-subscription.js +0 -38
- package/dist/esm/nodes/payment/payment-create-subscription.js.map +0 -1
- package/dist/esm/nodes/payment/payment-subscribe-to-plan.d.ts +0 -3
- package/dist/esm/nodes/payment/payment-subscribe-to-plan.d.ts.map +0 -1
- package/dist/esm/nodes/payment/payment-subscribe-to-plan.js +0 -42
- package/dist/esm/nodes/payment/payment-subscribe-to-plan.js.map +0 -1
- package/src/nodes/payment/payment-cancel-plan.ts +0 -33
- package/src/nodes/payment/payment-create-subscription.ts +0 -42
- package/src/nodes/payment/payment-subscribe-to-plan.ts +0 -46
|
@@ -0,0 +1,618 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Emits `utils/payments/drivers/mollie.js`: the Payments API (hosted checkout,
|
|
3
|
+
* one webhook URL per payment), refunds, and subscriptions through a FIRST
|
|
4
|
+
* payment that creates the customer's mandate.
|
|
5
|
+
*
|
|
6
|
+
* Mollie posts only `id=tr_…` to a webhook and signs nothing: the payment is
|
|
7
|
+
* always read back with the store's key, and that copy is what the store acts
|
|
8
|
+
* on. A subscription does not exist until its first payment is paid, so the
|
|
9
|
+
* webhook that learns of that payment also creates it (idempotently), with
|
|
10
|
+
* the plan the checkout stored in the payment's metadata.
|
|
11
|
+
*
|
|
12
|
+
* A subscription is addressed through its customer, so the store keeps its
|
|
13
|
+
* provider id as `<customer id>:<subscription id>`.
|
|
14
|
+
*/
|
|
15
|
+
export const generateMollieDriverCode = (): string => `'use strict';
|
|
16
|
+
/**
|
|
17
|
+
* Mollie driver. Generated by TeleportHQ — changes are overwritten on the next export.
|
|
18
|
+
*/
|
|
19
|
+
module.exports = function createMollieDriver(core) {
|
|
20
|
+
var API = 'https://api.mollie.com/v2';
|
|
21
|
+
var MISSING_KEY = 'MOLLIE_API_KEY is not configured';
|
|
22
|
+
// Mollie's currencies without decimals; every other one takes two.
|
|
23
|
+
var ZERO_DECIMAL = ['ISK', 'JPY'];
|
|
24
|
+
// Mollie bills at most once a year.
|
|
25
|
+
var MAX_INTERVAL_DAYS = 365;
|
|
26
|
+
|
|
27
|
+
function apiKey() {
|
|
28
|
+
return core.credential('mollie', 'apiKey');
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function amount(major, currency) {
|
|
32
|
+
var code = String(currency || '').toUpperCase();
|
|
33
|
+
var value = Number(major);
|
|
34
|
+
var safe = isFinite(value) && value > 0 ? value : 0;
|
|
35
|
+
return { currency: code, value: ZERO_DECIMAL.indexOf(code) >= 0 ? String(Math.round(safe)) : safe.toFixed(2) };
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// A Mollie amount object as a number; 0 when absent.
|
|
39
|
+
function moneyValue(value) {
|
|
40
|
+
var number = Number(value && value.value);
|
|
41
|
+
return isFinite(number) ? number : 0;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function problem(data, fallback) {
|
|
45
|
+
return (data && (data.detail || data.title)) || fallback;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
async function call(method, path, body, idempotencyKey) {
|
|
49
|
+
var headers = { Authorization: 'Bearer ' + apiKey(), Accept: 'application/json' };
|
|
50
|
+
if (body) {
|
|
51
|
+
headers['Content-Type'] = 'application/json';
|
|
52
|
+
}
|
|
53
|
+
if (idempotencyKey) {
|
|
54
|
+
headers['Idempotency-Key'] = String(idempotencyKey).slice(0, 255);
|
|
55
|
+
}
|
|
56
|
+
return core.request(API + path, { method: method, headers: headers, body: body ? JSON.stringify(body) : undefined });
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Mollie refuses a payment whose webhook URL it cannot reach, so a local run
|
|
60
|
+
// creates payments without one (a tunnel URL as the site origin restores it).
|
|
61
|
+
// Local means this machine, a private network (10/8, 172.16/12, 192.168/16,
|
|
62
|
+
// link-local, IPv6 unique-local) or a name only that network resolves (one
|
|
63
|
+
// with no dot, or under .local / .localhost / .internal).
|
|
64
|
+
function isLocalHost(host) {
|
|
65
|
+
var name = String(host || '').toLowerCase().replace(/\\.$/, '');
|
|
66
|
+
if (name.charAt(0) === '[') {
|
|
67
|
+
return /^\\[(::1?|f[cd][0-9a-f]*:.*|fe80:.*)\\]$/.test(name);
|
|
68
|
+
}
|
|
69
|
+
if (name.indexOf('.') === -1 || /\\.(local|localhost|internal)$/.test(name)) {
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
return /^(127\\.|10\\.|0\\.0\\.0\\.0$|192\\.168\\.|169\\.254\\.|172\\.(1[6-9]|2[0-9]|3[01])\\.)/.test(name);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function reachableWebhookUrl(baseUrl) {
|
|
76
|
+
var url = core.webhookUrl(baseUrl, 'mollie');
|
|
77
|
+
var host = /^https?:\\/\\/(\\[[^\\]]*\\]|[^/:?#]*)/i.exec(String(url || ''));
|
|
78
|
+
return !host || isLocalHost(host[1]) ? undefined : url;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// "1 month", "14 days": Mollie's interval, or '' for one it cannot bill.
|
|
82
|
+
function intervalOf(unit, count) {
|
|
83
|
+
var n = Math.max(1, Math.floor(Number(count) || 1));
|
|
84
|
+
var name = String(unit || 'month').toLowerCase();
|
|
85
|
+
if (name === 'year') {
|
|
86
|
+
name = 'month';
|
|
87
|
+
n = n * 12;
|
|
88
|
+
}
|
|
89
|
+
var days = name === 'day' ? n : name === 'week' ? n * 7 : name === 'month' ? n * 30 : 0;
|
|
90
|
+
if (!days || days > MAX_INTERVAL_DAYS) {
|
|
91
|
+
return '';
|
|
92
|
+
}
|
|
93
|
+
return n + ' ' + name + (n === 1 ? '' : 's');
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
function addInterval(date, interval) {
|
|
97
|
+
var parts = interval.split(' ');
|
|
98
|
+
var n = Number(parts[0]);
|
|
99
|
+
var unit = parts[1].replace(/s$/, '');
|
|
100
|
+
var next = new Date(date.getTime());
|
|
101
|
+
if (unit === 'day') {
|
|
102
|
+
next.setUTCDate(next.getUTCDate() + n);
|
|
103
|
+
} else if (unit === 'week') {
|
|
104
|
+
next.setUTCDate(next.getUTCDate() + n * 7);
|
|
105
|
+
} else {
|
|
106
|
+
var day = next.getUTCDate();
|
|
107
|
+
next.setUTCDate(1);
|
|
108
|
+
next.setUTCMonth(next.getUTCMonth() + n);
|
|
109
|
+
var lastDay = new Date(Date.UTC(next.getUTCFullYear(), next.getUTCMonth() + 1, 0)).getUTCDate();
|
|
110
|
+
next.setUTCDate(Math.min(day, lastDay));
|
|
111
|
+
}
|
|
112
|
+
return next;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function isoDate(date) {
|
|
116
|
+
return date.toISOString().slice(0, 10);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
async function createCheckout(input) {
|
|
120
|
+
if (!apiKey()) {
|
|
121
|
+
return { checkoutUrl: '', sessionId: '', error: MISSING_KEY };
|
|
122
|
+
}
|
|
123
|
+
try {
|
|
124
|
+
var answer = await call('POST', '/payments', {
|
|
125
|
+
amount: amount(input.amount, input.currency),
|
|
126
|
+
description: String(input.description || 'Order').slice(0, 255),
|
|
127
|
+
redirectUrl: input.successUrl || undefined,
|
|
128
|
+
cancelUrl: input.cancelUrl || undefined,
|
|
129
|
+
webhookUrl: reachableWebhookUrl(input.baseUrl),
|
|
130
|
+
metadata: input.metadata || undefined,
|
|
131
|
+
});
|
|
132
|
+
if (!answer.ok || !answer.data) {
|
|
133
|
+
return { checkoutUrl: '', sessionId: '', error: problem(answer.data, 'Mollie refused the payment (HTTP ' + answer.status + ')') };
|
|
134
|
+
}
|
|
135
|
+
var links = answer.data._links || {};
|
|
136
|
+
return { checkoutUrl: (links.checkout && links.checkout.href) || '', sessionId: answer.data.id || '' };
|
|
137
|
+
} catch (err) {
|
|
138
|
+
return { checkoutUrl: '', sessionId: '', error: core.describeError(err) };
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// A subscription opens with a FIRST payment that creates the mandate: the
|
|
143
|
+
// first cycle (less a gift card), or 0.00 before a free trial. The plan rides
|
|
144
|
+
// in the payment's metadata for the webhook that creates the subscription.
|
|
145
|
+
async function createSubscriptionCheckout(input) {
|
|
146
|
+
if (!apiKey()) {
|
|
147
|
+
return { checkoutUrl: '', sessionId: '', error: MISSING_KEY };
|
|
148
|
+
}
|
|
149
|
+
var interval = intervalOf(input.recurringInterval, input.recurringIntervalCount);
|
|
150
|
+
if (!interval) {
|
|
151
|
+
return { checkoutUrl: '', sessionId: '', error: 'Mollie bills a subscription at most once a year.' };
|
|
152
|
+
}
|
|
153
|
+
var regular = Number(input.amount);
|
|
154
|
+
if (!isFinite(regular) || regular <= 0) {
|
|
155
|
+
return { checkoutUrl: '', sessionId: '', error: 'A subscription needs a positive amount to bill' };
|
|
156
|
+
}
|
|
157
|
+
var trialDays = Math.max(0, Math.floor(Number(input.trialDays) || 0));
|
|
158
|
+
var due = Number(input.amountDue);
|
|
159
|
+
var firstCharge = trialDays > 0 ? 0 : isFinite(due) && due < regular ? due : regular;
|
|
160
|
+
if (trialDays === 0 && firstCharge <= 0) {
|
|
161
|
+
return { checkoutUrl: '', sessionId: '', error: 'A gift card cannot cover the whole first payment of a subscription' };
|
|
162
|
+
}
|
|
163
|
+
var metadata = input.metadata || {};
|
|
164
|
+
try {
|
|
165
|
+
var customer = await call('POST', '/customers', {
|
|
166
|
+
email: input.customerEmail ? String(input.customerEmail) : undefined,
|
|
167
|
+
metadata: { subscriptionId: metadata.subscriptionId || '' },
|
|
168
|
+
});
|
|
169
|
+
if (!customer.ok || !customer.data || !customer.data.id) {
|
|
170
|
+
return { checkoutUrl: '', sessionId: '', error: problem(customer.data, 'Mollie refused the customer (HTTP ' + customer.status + ')') };
|
|
171
|
+
}
|
|
172
|
+
var payment = await call('POST', '/payments', {
|
|
173
|
+
// 0.00 before a trial: Mollie then collects the mandate and debits
|
|
174
|
+
// nothing, which only a card or PayPal can do.
|
|
175
|
+
amount: amount(firstCharge, input.currency),
|
|
176
|
+
method: firstCharge > 0 ? undefined : ['creditcard', 'paypal'],
|
|
177
|
+
description: String(input.description || 'Subscription').slice(0, 255),
|
|
178
|
+
redirectUrl: input.successUrl || undefined,
|
|
179
|
+
cancelUrl: input.cancelUrl || undefined,
|
|
180
|
+
webhookUrl: reachableWebhookUrl(input.baseUrl),
|
|
181
|
+
sequenceType: 'first',
|
|
182
|
+
customerId: customer.data.id,
|
|
183
|
+
metadata: {
|
|
184
|
+
orderId: metadata.orderId || '',
|
|
185
|
+
subscriptionId: metadata.subscriptionId || '',
|
|
186
|
+
plan: {
|
|
187
|
+
amount: amount(regular, input.currency).value,
|
|
188
|
+
currency: String(input.currency).toUpperCase(),
|
|
189
|
+
interval: interval,
|
|
190
|
+
trialDays: trialDays,
|
|
191
|
+
description: String(input.description || 'Subscription').slice(0, 200),
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
});
|
|
195
|
+
if (!payment.ok || !payment.data) {
|
|
196
|
+
return { checkoutUrl: '', sessionId: '', error: problem(payment.data, 'Mollie refused the payment (HTTP ' + payment.status + ')') };
|
|
197
|
+
}
|
|
198
|
+
var links = payment.data._links || {};
|
|
199
|
+
return { checkoutUrl: (links.checkout && links.checkout.href) || '', sessionId: payment.data.id || '', providerSubscriptionId: '' };
|
|
200
|
+
} catch (err) {
|
|
201
|
+
return { checkoutUrl: '', sessionId: '', error: core.describeError(err) };
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// What became of a payment the store opened earlier. An open one is paid on
|
|
206
|
+
// its own checkout page (a bank transfer's instructions included); pending
|
|
207
|
+
// and authorized ones are on their way; paid is paid; a canceled, expired or
|
|
208
|
+
// failed payment takes no more money, nor does one Mollie does not know.
|
|
209
|
+
async function inspectCheckout(input) {
|
|
210
|
+
var reference = String((input && input.reference) || '').trim();
|
|
211
|
+
if (reference.indexOf('tr_') !== 0) {
|
|
212
|
+
return { state: 'closed', checkoutUrl: '' };
|
|
213
|
+
}
|
|
214
|
+
if (!apiKey()) {
|
|
215
|
+
return { state: '', checkoutUrl: '', error: MISSING_KEY };
|
|
216
|
+
}
|
|
217
|
+
try {
|
|
218
|
+
var answer = await call('GET', '/payments/' + encodeURIComponent(reference));
|
|
219
|
+
if (answer.status === 404 || answer.status === 410) {
|
|
220
|
+
return { state: 'closed', checkoutUrl: '' };
|
|
221
|
+
}
|
|
222
|
+
if (!answer.ok || !answer.data) {
|
|
223
|
+
return { state: '', checkoutUrl: '', error: problem(answer.data, 'Mollie could not be asked about payment ' + reference) };
|
|
224
|
+
}
|
|
225
|
+
var found = paymentState(answer.data);
|
|
226
|
+
if (found.state === 'open' && !found.checkoutUrl) {
|
|
227
|
+
return { state: 'confirming', checkoutUrl: '' };
|
|
228
|
+
}
|
|
229
|
+
return { state: found.state, checkoutUrl: found.checkoutUrl };
|
|
230
|
+
} catch (err) {
|
|
231
|
+
return { state: '', checkoutUrl: '', error: core.describeError(err) };
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
function paymentState(payment) {
|
|
236
|
+
var status = String((payment && payment.status) || '');
|
|
237
|
+
if (status === 'open') {
|
|
238
|
+
var links = payment._links || {};
|
|
239
|
+
var page = links.checkout && links.checkout.href ? String(links.checkout.href) : '';
|
|
240
|
+
return { state: 'open', checkoutUrl: page, openUntil: String(payment.expiresAt || '') };
|
|
241
|
+
}
|
|
242
|
+
if (status === 'pending' || status === 'authorized') {
|
|
243
|
+
return { state: 'confirming', checkoutUrl: '', openUntil: '' };
|
|
244
|
+
}
|
|
245
|
+
if (status === 'paid') {
|
|
246
|
+
return { state: 'paid', checkoutUrl: '', openUntil: '' };
|
|
247
|
+
}
|
|
248
|
+
return { state: 'closed', checkoutUrl: '', openUntil: '' };
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
// Closes a payment the order no longer needs. Mollie cancels an open payment
|
|
252
|
+
// only while it says the payment is cancelable (some methods, for a while);
|
|
253
|
+
// any other open payment stays payable until it expires, and says when.
|
|
254
|
+
async function closeCheckout(input) {
|
|
255
|
+
var reference = String((input && input.reference) || '').trim();
|
|
256
|
+
if (reference.indexOf('tr_') !== 0) {
|
|
257
|
+
return { state: 'closed', checkoutUrl: '', openUntil: '' };
|
|
258
|
+
}
|
|
259
|
+
if (!apiKey()) {
|
|
260
|
+
return { state: '', error: MISSING_KEY };
|
|
261
|
+
}
|
|
262
|
+
try {
|
|
263
|
+
var path = '/payments/' + encodeURIComponent(reference);
|
|
264
|
+
var answer = await call('GET', path);
|
|
265
|
+
if (answer.status === 404 || answer.status === 410) {
|
|
266
|
+
return { state: 'closed', checkoutUrl: '', openUntil: '' };
|
|
267
|
+
}
|
|
268
|
+
if (!answer.ok || !answer.data) {
|
|
269
|
+
return { state: '', error: problem(answer.data, 'Mollie could not be asked about payment ' + reference) };
|
|
270
|
+
}
|
|
271
|
+
var found = paymentState(answer.data);
|
|
272
|
+
if (found.state !== 'open' || !answer.data.isCancelable) {
|
|
273
|
+
return found;
|
|
274
|
+
}
|
|
275
|
+
var cancelled = await call('DELETE', path);
|
|
276
|
+
if (cancelled.ok) {
|
|
277
|
+
return { state: 'closed', checkoutUrl: '', openUntil: '' };
|
|
278
|
+
}
|
|
279
|
+
var again = await call('GET', path);
|
|
280
|
+
return again.ok && again.data ? paymentState(again.data) : { state: '', error: problem(cancelled.data, 'Mollie did not cancel payment ' + reference) };
|
|
281
|
+
} catch (err) {
|
|
282
|
+
return { state: '', error: core.describeError(err) };
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
// The payments opened for an order around the moment it was placed (they
|
|
287
|
+
// carry the order in their metadata). Mollie lists payments newest first, so
|
|
288
|
+
// the list is read back until it passes that moment.
|
|
289
|
+
async function findCheckouts(input) {
|
|
290
|
+
var orderId = String((input && input.orderId) || '').trim();
|
|
291
|
+
var span = core.searchWindow(input && input.placedAt);
|
|
292
|
+
if (!orderId || !span) {
|
|
293
|
+
return { error: 'The order to look up names no id or no time it was placed.' };
|
|
294
|
+
}
|
|
295
|
+
if (!apiKey()) {
|
|
296
|
+
return { error: MISSING_KEY };
|
|
297
|
+
}
|
|
298
|
+
try {
|
|
299
|
+
var references = [];
|
|
300
|
+
var path = '/payments?limit=250';
|
|
301
|
+
for (var page = 0; page < core.SEARCH_PAGE_LIMIT; page++) {
|
|
302
|
+
var answer = await call('GET', path);
|
|
303
|
+
if (!answer.ok || !answer.data) {
|
|
304
|
+
return { error: problem(answer.data, 'Mollie could not list its payments') };
|
|
305
|
+
}
|
|
306
|
+
var payments = answer.data._embedded && Array.isArray(answer.data._embedded.payments) ? answer.data._embedded.payments : [];
|
|
307
|
+
var passed = false;
|
|
308
|
+
payments.forEach(function (payment) {
|
|
309
|
+
var created = new Date(String(payment.createdAt || '')).getTime();
|
|
310
|
+
if (isFinite(created) && created < span.from) {
|
|
311
|
+
passed = true;
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
if (payment.id && String(core.readMetadata(payment.metadata).orderId || '') === orderId) {
|
|
315
|
+
references.push(String(payment.id));
|
|
316
|
+
}
|
|
317
|
+
});
|
|
318
|
+
var next = answer.data._links && answer.data._links.next && answer.data._links.next.href ? String(answer.data._links.next.href) : '';
|
|
319
|
+
if (passed || !next || payments.length === 0) {
|
|
320
|
+
return { references: references };
|
|
321
|
+
}
|
|
322
|
+
path = next.indexOf(API) === 0 ? next.slice(API.length) : next;
|
|
323
|
+
}
|
|
324
|
+
return { error: 'Mollie has more payments since this order was placed than the store can search.' };
|
|
325
|
+
} catch (err) {
|
|
326
|
+
return { error: core.describeError(err) };
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
// Mollie takes the price on the subscription itself: no plan to create.
|
|
331
|
+
async function ensurePlan() {
|
|
332
|
+
return { ok: 'true', planId: '', providerProductId: '', created: 'false' };
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
function splitSubscriptionId(value) {
|
|
336
|
+
var parts = String(value || '').split(':');
|
|
337
|
+
return parts.length === 2 && parts[0].indexOf('cst_') === 0 && parts[1].indexOf('sub_') === 0
|
|
338
|
+
? { customerId: parts[0], subscriptionId: parts[1] }
|
|
339
|
+
: null;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
// The customer's subscription the store opened as \`subscriptionId\`, read
|
|
343
|
+
// through every page; \`{ error }\` when Mollie could not list them, since
|
|
344
|
+
// an unread list is not an empty one.
|
|
345
|
+
async function findSubscription(customerId, subscriptionId) {
|
|
346
|
+
var path = '/customers/' + encodeURIComponent(customerId) + '/subscriptions?limit=250';
|
|
347
|
+
for (var page = 0; page < core.SEARCH_PAGE_LIMIT; page++) {
|
|
348
|
+
var answer = await call('GET', path);
|
|
349
|
+
if (!answer.ok || !answer.data) {
|
|
350
|
+
return { error: problem(answer.data, 'Mollie could not list the subscriptions of customer ' + customerId + ' (HTTP ' + answer.status + ')') };
|
|
351
|
+
}
|
|
352
|
+
var list = (answer.data._embedded && answer.data._embedded.subscriptions) || [];
|
|
353
|
+
for (var i = 0; i < list.length; i++) {
|
|
354
|
+
if (core.readMetadata(list[i].metadata).subscriptionId === subscriptionId) {
|
|
355
|
+
return { subscription: list[i] };
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
var next = answer.data._links && answer.data._links.next && answer.data._links.next.href ? String(answer.data._links.next.href) : '';
|
|
359
|
+
if (!next || list.length === 0) {
|
|
360
|
+
return { subscription: null };
|
|
361
|
+
}
|
|
362
|
+
path = next.indexOf(API) === 0 ? next.slice(API.length) : next;
|
|
363
|
+
}
|
|
364
|
+
return { error: 'Mollie lists more subscriptions for customer ' + customerId + ' than the store can read.' };
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
// Creates the subscription a paid FIRST payment opens, once: a replayed
|
|
368
|
+
// webhook finds the one it created before by the store's subscription id —
|
|
369
|
+
// cancelled or not, since a cancelled one must never be billed again. The
|
|
370
|
+
// idempotency key only lasts an hour, so the list decides: one Mollie could
|
|
371
|
+
// not read fails the activation (Mollie calls again) rather than opening a
|
|
372
|
+
// second subscription.
|
|
373
|
+
async function ensureSubscription(payment) {
|
|
374
|
+
var metadata = core.readMetadata(payment.metadata);
|
|
375
|
+
var plan = metadata.plan || {};
|
|
376
|
+
var customerId = String(payment.customerId || '');
|
|
377
|
+
if (!customerId || !metadata.subscriptionId || !plan.interval) {
|
|
378
|
+
return { error: 'The Mollie payment ' + payment.id + ' carries no subscription to start.' };
|
|
379
|
+
}
|
|
380
|
+
var existing = await findSubscription(customerId, metadata.subscriptionId);
|
|
381
|
+
if (existing.error || existing.subscription) {
|
|
382
|
+
return existing;
|
|
383
|
+
}
|
|
384
|
+
var paidAt = payment.paidAt ? new Date(payment.paidAt) : new Date();
|
|
385
|
+
var trialDays = Math.max(0, Math.floor(Number(plan.trialDays) || 0));
|
|
386
|
+
var start = new Date(paidAt.getTime());
|
|
387
|
+
if (trialDays > 0) {
|
|
388
|
+
start.setUTCDate(start.getUTCDate() + trialDays);
|
|
389
|
+
} else {
|
|
390
|
+
start = addInterval(start, String(plan.interval));
|
|
391
|
+
}
|
|
392
|
+
var subscription = {
|
|
393
|
+
amount: { currency: String(plan.currency), value: String(plan.amount) },
|
|
394
|
+
interval: String(plan.interval),
|
|
395
|
+
// Unique per customer among its active subscriptions.
|
|
396
|
+
description: String(plan.description || 'Subscription') + ' · ' + String(metadata.subscriptionId).slice(0, 8),
|
|
397
|
+
// Mollie copies this onto every renewal payment: the first order's id
|
|
398
|
+
// here would book a renewal's refund on the first order.
|
|
399
|
+
metadata: { subscriptionId: metadata.subscriptionId },
|
|
400
|
+
webhookUrl: payment.webhookUrl || undefined,
|
|
401
|
+
};
|
|
402
|
+
// A start that is already due (the webhook came, or was retried, after the
|
|
403
|
+
// paid cycle or the trial ran out) is left out, and Mollie starts the
|
|
404
|
+
// subscription on its own current date, charging the cycle due now: a
|
|
405
|
+
// past date is refused, and the refusal would be retried on every
|
|
406
|
+
// delivery. Only a date after today in UTC is sent, since UTC's today can
|
|
407
|
+
// still be yesterday where Mollie keeps its calendar.
|
|
408
|
+
if (isoDate(start) > isoDate(new Date())) {
|
|
409
|
+
subscription.startDate = isoDate(start);
|
|
410
|
+
}
|
|
411
|
+
var created = await call(
|
|
412
|
+
'POST',
|
|
413
|
+
'/customers/' + encodeURIComponent(customerId) + '/subscriptions',
|
|
414
|
+
subscription,
|
|
415
|
+
'teleport-activate-' + payment.id
|
|
416
|
+
);
|
|
417
|
+
if (!created.ok || !created.data) {
|
|
418
|
+
return { error: problem(created.data, 'Mollie refused the subscription (HTTP ' + created.status + ')') };
|
|
419
|
+
}
|
|
420
|
+
return { subscription: created.data };
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
function subscriptionStatus(status) {
|
|
424
|
+
var map = { active: 'active', pending: 'pending', canceled: 'cancelled', suspended: 'past_due', completed: 'expired' };
|
|
425
|
+
return map[String(status || '').toLowerCase()] || '';
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
function manageFailure(message) {
|
|
429
|
+
return { ok: 'false', status: '', cancelAtPeriodEnd: 'false', currentPeriodStart: '', currentPeriodEnd: '', error: message };
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
// Mollie charges each cycle up front and has no pause: a cancellation stops
|
|
433
|
+
// every later payment at once, the running cycle stays paid.
|
|
434
|
+
async function manageSubscription(input) {
|
|
435
|
+
if (!apiKey()) {
|
|
436
|
+
return manageFailure(MISSING_KEY);
|
|
437
|
+
}
|
|
438
|
+
var ids = splitSubscriptionId(input.subscriptionId);
|
|
439
|
+
if (!ids) {
|
|
440
|
+
return manageFailure('This is not a Mollie subscription reference.');
|
|
441
|
+
}
|
|
442
|
+
if (input.action === 'pause' || input.action === 'resume') {
|
|
443
|
+
return manageFailure('Mollie cannot pause or resume a subscription; cancel it instead.');
|
|
444
|
+
}
|
|
445
|
+
try {
|
|
446
|
+
var path = '/customers/' + encodeURIComponent(ids.customerId) + '/subscriptions/' + encodeURIComponent(ids.subscriptionId);
|
|
447
|
+
var answer = await call(input.action === 'refresh' ? 'GET' : 'DELETE', path);
|
|
448
|
+
if (!answer.ok || !answer.data) {
|
|
449
|
+
return manageFailure(problem(answer.data, 'Mollie could not ' + (input.action === 'refresh' ? 'read' : 'cancel') + ' the subscription (HTTP ' + answer.status + ')'));
|
|
450
|
+
}
|
|
451
|
+
return {
|
|
452
|
+
ok: 'true',
|
|
453
|
+
status: subscriptionStatus(answer.data.status),
|
|
454
|
+
cancelAtPeriodEnd: 'false',
|
|
455
|
+
currentPeriodStart: '',
|
|
456
|
+
currentPeriodEnd: answer.data.nextPaymentDate ? new Date(answer.data.nextPaymentDate + 'T00:00:00Z').toISOString() : '',
|
|
457
|
+
};
|
|
458
|
+
} catch (err) {
|
|
459
|
+
return manageFailure(core.describeError(err));
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
async function billingPortal() {
|
|
464
|
+
return { ok: 'false', url: '', error: 'Mollie has no billing page for subscribers.' };
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
function refundFailure(currency, message, extra) {
|
|
468
|
+
var result = { success: false, refundId: '', amount: 0, currency: currency, status: '', error: message };
|
|
469
|
+
if (extra) {
|
|
470
|
+
Object.keys(extra).forEach(function (key) {
|
|
471
|
+
result[key] = extra[key];
|
|
472
|
+
});
|
|
473
|
+
}
|
|
474
|
+
return result;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
// Mollie always needs an amount: an omitted one refunds what is left on the
|
|
478
|
+
// payment, read from the payment itself (its own currency, not the request's).
|
|
479
|
+
async function refund(input) {
|
|
480
|
+
var currency = String(input.currency || '').toUpperCase();
|
|
481
|
+
if (!apiKey()) {
|
|
482
|
+
return refundFailure(currency, MISSING_KEY);
|
|
483
|
+
}
|
|
484
|
+
var paymentId = String(input.paymentReference || '').trim();
|
|
485
|
+
if (paymentId.indexOf('tr_') !== 0) {
|
|
486
|
+
return refundFailure(currency, 'This is not a Mollie payment reference.');
|
|
487
|
+
}
|
|
488
|
+
try {
|
|
489
|
+
var payment = await call('GET', '/payments/' + encodeURIComponent(paymentId));
|
|
490
|
+
if (!payment.ok || !payment.data) {
|
|
491
|
+
return refundFailure(currency, problem(payment.data, 'Mollie could not find the payment ' + paymentId + '.'));
|
|
492
|
+
}
|
|
493
|
+
var paymentCurrency = String((payment.data.amount && payment.data.amount.currency) || currency).toUpperCase();
|
|
494
|
+
var remaining = Number(payment.data.amountRemaining && payment.data.amountRemaining.value);
|
|
495
|
+
var requested = input.amount > 0 ? input.amount : remaining;
|
|
496
|
+
if (!isFinite(requested) || requested <= 0) {
|
|
497
|
+
return refundFailure(paymentCurrency, 'Nothing is left to refund on this Mollie payment.');
|
|
498
|
+
}
|
|
499
|
+
var value = amount(requested, paymentCurrency);
|
|
500
|
+
if (Number(value.value) <= 0) {
|
|
501
|
+
return refundFailure(paymentCurrency, 'The amount is smaller than the smallest unit of ' + paymentCurrency + '.');
|
|
502
|
+
}
|
|
503
|
+
var body = { amount: value };
|
|
504
|
+
var note = String(input.reason || '').trim();
|
|
505
|
+
if (note) {
|
|
506
|
+
body.description = note.slice(0, 255);
|
|
507
|
+
}
|
|
508
|
+
if (input.orderId) {
|
|
509
|
+
body.metadata = { orderId: input.orderId };
|
|
510
|
+
}
|
|
511
|
+
var created = await call('POST', '/payments/' + encodeURIComponent(paymentId) + '/refunds', body, input.idempotencyKey);
|
|
512
|
+
if (!created.ok || !created.data) {
|
|
513
|
+
return refundFailure(paymentCurrency, problem(created.data, 'Mollie refused the refund (HTTP ' + created.status + ')'));
|
|
514
|
+
}
|
|
515
|
+
var status = String(created.data.status || '');
|
|
516
|
+
if (status === 'failed' || status === 'canceled') {
|
|
517
|
+
return refundFailure(paymentCurrency, 'Mollie reported the refund as ' + status + '.', { refundId: created.data.id || '', status: status });
|
|
518
|
+
}
|
|
519
|
+
return {
|
|
520
|
+
success: true,
|
|
521
|
+
refundId: created.data.id || '',
|
|
522
|
+
amount: Number(created.data.amount && created.data.amount.value) || requested,
|
|
523
|
+
currency: String((created.data.amount && created.data.amount.currency) || paymentCurrency).toUpperCase(),
|
|
524
|
+
status: status,
|
|
525
|
+
error: '',
|
|
526
|
+
};
|
|
527
|
+
} catch (err) {
|
|
528
|
+
return refundFailure(currency, core.describeError(err));
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
// The payment (with its refunds and chargebacks) read back with the store's
|
|
533
|
+
// key: the event the webhook hands the store. \`missing\` for an id Mollie
|
|
534
|
+
// does not know.
|
|
535
|
+
async function paymentEvent(id) {
|
|
536
|
+
if (!apiKey()) {
|
|
537
|
+
return { ok: false, retry: true, reason: MISSING_KEY };
|
|
538
|
+
}
|
|
539
|
+
try {
|
|
540
|
+
var answer = await call('GET', '/payments/' + encodeURIComponent(id) + '?embed=refunds,chargebacks');
|
|
541
|
+
if (answer.status === 404) {
|
|
542
|
+
return { ok: false, missing: true, reason: 'Mollie does not know payment ' + id + '.' };
|
|
543
|
+
}
|
|
544
|
+
if (!answer.ok || !answer.data || answer.data.id !== id) {
|
|
545
|
+
return { ok: false, retry: true, reason: problem(answer.data, 'Mollie could not be asked about ' + id + ' (HTTP ' + answer.status + ')') };
|
|
546
|
+
}
|
|
547
|
+
var payment = answer.data;
|
|
548
|
+
// A refund or a chargeback of the first payment calls the same webhook
|
|
549
|
+
// while the payment still reads "paid": it never starts the billing.
|
|
550
|
+
var givenBack = moneyValue(payment.amountRefunded) + moneyValue(payment.amountChargedBack);
|
|
551
|
+
if (payment.status === 'paid' && payment.sequenceType === 'first' && core.readMetadata(payment.metadata).plan && !(givenBack > 0)) {
|
|
552
|
+
var activation = await ensureSubscription(payment);
|
|
553
|
+
if (activation.error) {
|
|
554
|
+
// Answered 503, so Mollie calls again and the activation is retried.
|
|
555
|
+
return { ok: false, retry: true, reason: activation.error };
|
|
556
|
+
}
|
|
557
|
+
payment.teleportSubscription = activation.subscription;
|
|
558
|
+
}
|
|
559
|
+
return { ok: true, body: payment };
|
|
560
|
+
} catch (err) {
|
|
561
|
+
return { ok: false, retry: true, reason: core.describeError(err) };
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
// The webhook carries \`id=tr_…\` only. An id Mollie does not know — or an
|
|
566
|
+
// object the store never asked about — is answered 200 and ignored, as
|
|
567
|
+
// Mollie requires, so a stranger learns nothing.
|
|
568
|
+
async function verifyWebhook(input) {
|
|
569
|
+
var id = String((input.body && input.body.id) || '').trim();
|
|
570
|
+
if (id.indexOf('tr_') !== 0) {
|
|
571
|
+
return { ok: true, body: { resource: 'ignored', id: id } };
|
|
572
|
+
}
|
|
573
|
+
var read = await paymentEvent(id);
|
|
574
|
+
return read.missing ? { ok: true, body: { resource: 'ignored', id: id } } : read;
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
// A payment whose webhook never came (a local run gives Mollie no webhook
|
|
578
|
+
// URL) is settled from Mollie itself, as the webhook would have: nothing
|
|
579
|
+
// but the payment id comes from the request.
|
|
580
|
+
var PAYMENT_ID_PATTERN = /^tr_[A-Za-z0-9]{4,64}$/;
|
|
581
|
+
|
|
582
|
+
async function reconcile(request) {
|
|
583
|
+
var kind = String((request && request.kind) || '');
|
|
584
|
+
var id = String((request && request.id) || '').trim();
|
|
585
|
+
if (kind !== 'checkout' || !PAYMENT_ID_PATTERN.test(id)) {
|
|
586
|
+
return { ok: false, reason: 'The request names no Mollie payment to settle.' };
|
|
587
|
+
}
|
|
588
|
+
var read = await paymentEvent(id);
|
|
589
|
+
if (read.missing) {
|
|
590
|
+
return { ok: false, reason: read.reason };
|
|
591
|
+
}
|
|
592
|
+
if (read.ok && read.body.status === 'open') {
|
|
593
|
+
return { ok: false, reason: 'Mollie payment ' + id + ' is still open.' };
|
|
594
|
+
}
|
|
595
|
+
return read;
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
function reconcileKinds(reference) {
|
|
599
|
+
return PAYMENT_ID_PATTERN.test(String(reference || '').trim()) ? ['checkout'] : [];
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
return {
|
|
603
|
+
id: 'mollie',
|
|
604
|
+
createCheckout: createCheckout,
|
|
605
|
+
createSubscriptionCheckout: createSubscriptionCheckout,
|
|
606
|
+
inspectCheckout: inspectCheckout,
|
|
607
|
+
closeCheckout: closeCheckout,
|
|
608
|
+
findCheckouts: findCheckouts,
|
|
609
|
+
ensurePlan: ensurePlan,
|
|
610
|
+
refund: refund,
|
|
611
|
+
manageSubscription: manageSubscription,
|
|
612
|
+
billingPortal: billingPortal,
|
|
613
|
+
reconcile: reconcile,
|
|
614
|
+
reconcileKinds: reconcileKinds,
|
|
615
|
+
verifyWebhook: verifyWebhook,
|
|
616
|
+
};
|
|
617
|
+
};
|
|
618
|
+
`
|