@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,728 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Emits `utils/payments/drivers/razorpay.js`: Payment Links for one-time
|
|
3
|
+
* checkouts, Plans + Subscriptions (authorised on the store's own
|
|
4
|
+
* `/pay/razorpay` page through Razorpay Checkout, which is the only way the
|
|
5
|
+
* buyer comes back to the store), refunds, subscription management, and the
|
|
6
|
+
* `X-Razorpay-Signature` webhook check the store REQUIRES.
|
|
7
|
+
*
|
|
8
|
+
* Amounts are integers in the currency's sub-unit; a three-decimal amount must
|
|
9
|
+
* end in 0, so it is rounded to one.
|
|
10
|
+
*/
|
|
11
|
+
export const generateRazorpayDriverCode = () => `'use strict';
|
|
12
|
+
/**
|
|
13
|
+
* Razorpay driver. Generated by TeleportHQ — changes are overwritten on the next export.
|
|
14
|
+
*/
|
|
15
|
+
module.exports = function createRazorpayDriver(core) {
|
|
16
|
+
var API = 'https://api.razorpay.com/v1';
|
|
17
|
+
var MISSING_KEYS = 'RAZORPAY_KEY_ID and RAZORPAY_KEY_SECRET are not configured';
|
|
18
|
+
var ZERO_DECIMAL = ['BIF', 'CLP', 'DJF', 'GNF', 'ISK', 'JPY', 'KMF', 'KRW', 'PYG', 'RWF', 'UGX', 'VND', 'VUV', 'XAF', 'XOF', 'XPF'];
|
|
19
|
+
var THREE_DECIMAL = ['BHD', 'IQD', 'JOD', 'KWD', 'OMR', 'TND'];
|
|
20
|
+
var PERIODS = { day: 'daily', week: 'weekly', month: 'monthly', year: 'yearly' };
|
|
21
|
+
// A plan billed every day must bill at most once a week.
|
|
22
|
+
var MIN_DAILY_INTERVAL = 7;
|
|
23
|
+
// Razorpay needs a cycle count; a subscription may run up to 100 years.
|
|
24
|
+
var MAX_SUBSCRIPTION_YEARS = 99;
|
|
25
|
+
// An unpaid link expires after a day, so its stock is released.
|
|
26
|
+
var LINK_LIFETIME_SECONDS = 24 * 60 * 60;
|
|
27
|
+
// How many times an order's link may be opened again after the one before
|
|
28
|
+
// it expired or was cancelled: each carries the order's reference with its
|
|
29
|
+
// number (\`-1\`, \`-2\`, …), so the links of an order can be searched.
|
|
30
|
+
var LINK_REISSUE_LIMIT = 20;
|
|
31
|
+
// A subscription in either status has not started its first billing cycle.
|
|
32
|
+
var BEFORE_FIRST_CYCLE = { created: true, authenticated: true };
|
|
33
|
+
var PAUSE_ONLY_ACTIVE =
|
|
34
|
+
'Razorpay can pause only an active subscription: one still in its free trial would be cancelled for good, and one with a payment due cannot be paused.';
|
|
35
|
+
var CANCELLED_BEFORE_FIRST_CYCLE =
|
|
36
|
+
'Razorpay cannot schedule a cancellation before the first billing cycle has started, so the subscription was cancelled immediately. No payment will be taken.';
|
|
37
|
+
|
|
38
|
+
function keys() {
|
|
39
|
+
return { keyId: core.credential('razorpay', 'keyId'), keySecret: core.credential('razorpay', 'keySecret') };
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function configured() {
|
|
43
|
+
var k = keys();
|
|
44
|
+
return !!(k.keyId && k.keySecret);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function minor(major, currency) {
|
|
48
|
+
var code = String(currency || '').toUpperCase();
|
|
49
|
+
var value = Number(major);
|
|
50
|
+
if (!isFinite(value) || value <= 0) {
|
|
51
|
+
return 0;
|
|
52
|
+
}
|
|
53
|
+
if (ZERO_DECIMAL.indexOf(code) >= 0) {
|
|
54
|
+
return Math.round(value);
|
|
55
|
+
}
|
|
56
|
+
if (THREE_DECIMAL.indexOf(code) >= 0) {
|
|
57
|
+
return Math.round((value * 1000) / 10) * 10;
|
|
58
|
+
}
|
|
59
|
+
return Math.round(value * 100);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function major(minorValue, currency) {
|
|
63
|
+
var code = String(currency || '').toUpperCase();
|
|
64
|
+
var value = Number(minorValue);
|
|
65
|
+
if (!isFinite(value)) {
|
|
66
|
+
return 0;
|
|
67
|
+
}
|
|
68
|
+
return ZERO_DECIMAL.indexOf(code) >= 0 ? value : THREE_DECIMAL.indexOf(code) >= 0 ? value / 1000 : value / 100;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function problem(data, fallback) {
|
|
72
|
+
return (data && data.error && (data.error.description || data.error.reason)) || fallback;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
async function call(method, path, body, headers) {
|
|
76
|
+
var k = keys();
|
|
77
|
+
var allHeaders = {
|
|
78
|
+
Authorization: 'Basic ' + Buffer.from(k.keyId + ':' + k.keySecret).toString('base64'),
|
|
79
|
+
'Content-Type': 'application/json',
|
|
80
|
+
};
|
|
81
|
+
Object.keys(headers || {}).forEach(function (name) {
|
|
82
|
+
allHeaders[name] = headers[name];
|
|
83
|
+
});
|
|
84
|
+
return core.request(API + path, { method: method, headers: allHeaders, body: body ? JSON.stringify(body) : undefined });
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Notes carry at most 15 values of 255 characters each.
|
|
88
|
+
function notes(metadata) {
|
|
89
|
+
var result = {};
|
|
90
|
+
Object.keys(metadata || {}).slice(0, 15).forEach(function (key) {
|
|
91
|
+
var value = metadata[key];
|
|
92
|
+
if (value !== undefined && value !== null && typeof value !== 'object') {
|
|
93
|
+
result[key] = String(value).slice(0, 255);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
return result;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// A link the buyer can still pay; any other status is final.
|
|
100
|
+
var PAYABLE_LINK_STATUSES = { created: true, partially_paid: true };
|
|
101
|
+
|
|
102
|
+
// A link's reference must be unique: a retried place-order finds the link it
|
|
103
|
+
// created before instead of failing on the duplicate.
|
|
104
|
+
async function findLinkByReference(reference) {
|
|
105
|
+
var answer = await call('GET', '/payment_links?reference_id=' + encodeURIComponent(reference));
|
|
106
|
+
var links = answer.ok && answer.data && Array.isArray(answer.data.payment_links) ? answer.data.payment_links : [];
|
|
107
|
+
return links.length > 0 ? links[0] : null;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// The reference of the order's link opened again for the \`n\`th time.
|
|
111
|
+
function reissuedReference(reference, n) {
|
|
112
|
+
return reference.slice(0, 32) + '-' + n;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function isDuplicateReference(answer) {
|
|
116
|
+
return !answer.ok && /reference/i.test(problem(answer.data, ''));
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
async function createCheckout(input) {
|
|
120
|
+
if (!configured()) {
|
|
121
|
+
return { checkoutUrl: '', sessionId: '', error: MISSING_KEYS };
|
|
122
|
+
}
|
|
123
|
+
var metadata = input.metadata || {};
|
|
124
|
+
var reference = String(metadata.orderId || '').slice(0, 40);
|
|
125
|
+
var amountMinor = minor(input.amount, input.currency);
|
|
126
|
+
if (amountMinor <= 0) {
|
|
127
|
+
return { checkoutUrl: '', sessionId: '', error: 'A payment needs a positive amount.' };
|
|
128
|
+
}
|
|
129
|
+
try {
|
|
130
|
+
var body = {
|
|
131
|
+
amount: amountMinor,
|
|
132
|
+
currency: String(input.currency || '').toUpperCase(),
|
|
133
|
+
description: String(input.description || 'Order').slice(0, 2048),
|
|
134
|
+
expire_by: Math.floor(Date.now() / 1000) + LINK_LIFETIME_SECONDS,
|
|
135
|
+
notes: notes(metadata),
|
|
136
|
+
};
|
|
137
|
+
if (reference) {
|
|
138
|
+
body.reference_id = reference;
|
|
139
|
+
}
|
|
140
|
+
if (input.successUrl) {
|
|
141
|
+
body.callback_url = input.successUrl;
|
|
142
|
+
body.callback_method = 'get';
|
|
143
|
+
}
|
|
144
|
+
var answer = await call('POST', '/payment_links', body);
|
|
145
|
+
var link = answer.ok ? answer.data : null;
|
|
146
|
+
if (!link && reference && isDuplicateReference(answer)) {
|
|
147
|
+
link = await findLinkByReference(reference);
|
|
148
|
+
// The order's first link expired or was cancelled (a buyer coming back
|
|
149
|
+
// to pay later): a new link carries the reference numbered, the next
|
|
150
|
+
// number not taken yet, or the link under a number that still takes
|
|
151
|
+
// money. The webhook names the order from the link's notes, which
|
|
152
|
+
// still carry its id.
|
|
153
|
+
for (var n = 1; n <= LINK_REISSUE_LIMIT && link && !PAYABLE_LINK_STATUSES[String(link.status || '')]; n++) {
|
|
154
|
+
body.reference_id = reissuedReference(reference, n);
|
|
155
|
+
answer = await call('POST', '/payment_links', body);
|
|
156
|
+
link = answer.ok ? answer.data : null;
|
|
157
|
+
if (!link && isDuplicateReference(answer)) {
|
|
158
|
+
link = await findLinkByReference(body.reference_id);
|
|
159
|
+
} else if (!link) {
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (link && !PAYABLE_LINK_STATUSES[String(link.status || '')]) {
|
|
164
|
+
return { checkoutUrl: '', sessionId: '', error: 'This order has opened more Razorpay payment links than the store allows.' };
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (!link || !link.short_url) {
|
|
168
|
+
return { checkoutUrl: '', sessionId: '', error: problem(answer.data, 'Razorpay refused the payment link (HTTP ' + answer.status + ')') };
|
|
169
|
+
}
|
|
170
|
+
return { checkoutUrl: String(link.short_url), sessionId: String(link.id || '') };
|
|
171
|
+
} catch (err) {
|
|
172
|
+
return { checkoutUrl: '', sessionId: '', error: core.describeError(err) };
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// What became of a payment link the store opened earlier: one still taking
|
|
177
|
+
// money is paid on its own page, a paid one is paid, and an expired or
|
|
178
|
+
// cancelled one (or one Razorpay does not know) takes no more.
|
|
179
|
+
async function inspectCheckout(input) {
|
|
180
|
+
var reference = String((input && input.reference) || '').trim();
|
|
181
|
+
if (reference.indexOf('plink_') !== 0) {
|
|
182
|
+
return { state: 'closed', checkoutUrl: '' };
|
|
183
|
+
}
|
|
184
|
+
if (!configured()) {
|
|
185
|
+
return { state: '', checkoutUrl: '', error: MISSING_KEYS };
|
|
186
|
+
}
|
|
187
|
+
try {
|
|
188
|
+
var answer = await call('GET', '/payment_links/' + encodeURIComponent(reference));
|
|
189
|
+
if (isUnknown(answer)) {
|
|
190
|
+
return { state: 'closed', checkoutUrl: '' };
|
|
191
|
+
}
|
|
192
|
+
if (!answer.ok || !answer.data) {
|
|
193
|
+
return { state: '', checkoutUrl: '', error: problem(answer.data, 'Razorpay could not be asked about payment link ' + reference) };
|
|
194
|
+
}
|
|
195
|
+
var status = String(answer.data.status || '');
|
|
196
|
+
if (PAYABLE_LINK_STATUSES[status]) {
|
|
197
|
+
return answer.data.short_url ? { state: 'open', checkoutUrl: String(answer.data.short_url) } : { state: 'confirming', checkoutUrl: '' };
|
|
198
|
+
}
|
|
199
|
+
return { state: status === 'paid' ? 'paid' : 'closed', checkoutUrl: '' };
|
|
200
|
+
} catch (err) {
|
|
201
|
+
return { state: '', checkoutUrl: '', error: core.describeError(err) };
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
function isUnknown(answer) {
|
|
206
|
+
return answer.status === 404 || (answer.status === 400 && /not.*(found|exist)|invalid.*id/i.test(problem(answer.data, '')));
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// A link or subscription status as a checkout state: \`created\` still takes
|
|
210
|
+
// money; a link paid in part, or a subscription the buyer authorised, took some.
|
|
211
|
+
var LINK_TAKEN = { paid: 'paid', partially_paid: 'confirming' };
|
|
212
|
+
var SUBSCRIPTION_TAKEN = { authenticated: 'paid', active: 'paid', pending: 'paid', halted: 'paid', paused: 'paid' };
|
|
213
|
+
|
|
214
|
+
function checkoutState(isLink, status) {
|
|
215
|
+
if (status === 'created') {
|
|
216
|
+
return 'open';
|
|
217
|
+
}
|
|
218
|
+
return (isLink ? LINK_TAKEN : SUBSCRIPTION_TAKEN)[status] || 'closed';
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// Closes a checkout the order no longer needs: a payment link still taking
|
|
222
|
+
// money is cancelled, and so is a subscription nobody authorised yet.
|
|
223
|
+
async function closeCheckout(input) {
|
|
224
|
+
var reference = String((input && input.reference) || '').trim();
|
|
225
|
+
var isLink = reference.indexOf('plink_') === 0;
|
|
226
|
+
if (!isLink && reference.indexOf('sub_') !== 0) {
|
|
227
|
+
return { state: 'closed', checkoutUrl: '', openUntil: '' };
|
|
228
|
+
}
|
|
229
|
+
if (!configured()) {
|
|
230
|
+
return { state: '', error: MISSING_KEYS };
|
|
231
|
+
}
|
|
232
|
+
try {
|
|
233
|
+
var path = (isLink ? '/payment_links/' : '/subscriptions/') + encodeURIComponent(reference);
|
|
234
|
+
var answer = await call('GET', path);
|
|
235
|
+
if (isUnknown(answer)) {
|
|
236
|
+
return { state: 'closed', checkoutUrl: '', openUntil: '' };
|
|
237
|
+
}
|
|
238
|
+
if (!answer.ok || !answer.data) {
|
|
239
|
+
return { state: '', error: problem(answer.data, 'Razorpay could not be asked about ' + reference) };
|
|
240
|
+
}
|
|
241
|
+
var state = checkoutState(isLink, String(answer.data.status || ''));
|
|
242
|
+
if (state !== 'open') {
|
|
243
|
+
return { state: state, checkoutUrl: '', openUntil: '' };
|
|
244
|
+
}
|
|
245
|
+
var cancelled = await call('POST', path + '/cancel');
|
|
246
|
+
if (cancelled.ok) {
|
|
247
|
+
return { state: 'closed', checkoutUrl: '', openUntil: '' };
|
|
248
|
+
}
|
|
249
|
+
// Paid between the read and the cancellation: answer what it became.
|
|
250
|
+
var again = await call('GET', path);
|
|
251
|
+
var after = again.ok && again.data ? checkoutState(isLink, String(again.data.status || '')) : '';
|
|
252
|
+
return after && after !== 'open'
|
|
253
|
+
? { state: after, checkoutUrl: '', openUntil: '' }
|
|
254
|
+
: { state: '', error: problem(cancelled.data, 'Razorpay did not cancel ' + reference) };
|
|
255
|
+
} catch (err) {
|
|
256
|
+
return { state: '', error: core.describeError(err) };
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// The payment link the order's placing opened carries the order as its
|
|
261
|
+
// reference, which Razorpay looks up directly; a link opened again after it
|
|
262
|
+
// carries the reference numbered, and the numbers are taken in turn, so the
|
|
263
|
+
// search stops at the first one no link carries.
|
|
264
|
+
async function findCheckouts(input) {
|
|
265
|
+
var orderId = String((input && input.orderId) || '').trim();
|
|
266
|
+
if (!orderId) {
|
|
267
|
+
return { error: 'The order to look up names no id.' };
|
|
268
|
+
}
|
|
269
|
+
if (!configured()) {
|
|
270
|
+
return { error: MISSING_KEYS };
|
|
271
|
+
}
|
|
272
|
+
try {
|
|
273
|
+
var reference = orderId.slice(0, 40);
|
|
274
|
+
var references = [];
|
|
275
|
+
for (var n = 0; n <= LINK_REISSUE_LIMIT; n++) {
|
|
276
|
+
var wanted = n === 0 ? reference : reissuedReference(reference, n);
|
|
277
|
+
var answer = await call('GET', '/payment_links?reference_id=' + encodeURIComponent(wanted));
|
|
278
|
+
if (!answer.ok || !answer.data) {
|
|
279
|
+
return { error: problem(answer.data, 'Razorpay could not look up the payment links of order ' + orderId) };
|
|
280
|
+
}
|
|
281
|
+
var links = Array.isArray(answer.data.payment_links) ? answer.data.payment_links : [];
|
|
282
|
+
if (links.length === 0) {
|
|
283
|
+
break;
|
|
284
|
+
}
|
|
285
|
+
links.forEach(function (link) {
|
|
286
|
+
if (link && link.id) {
|
|
287
|
+
references.push(String(link.id));
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
return { references: references };
|
|
292
|
+
} catch (err) {
|
|
293
|
+
return { error: core.describeError(err) };
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
function planFailure(message) {
|
|
298
|
+
return { ok: 'false', planId: '', providerProductId: '', created: 'false', error: message };
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
// Plans are immutable, so one is created per product and price and cached
|
|
302
|
+
// by the workflow (\`teleport_provider_plans\`). A plan belongs to the mode
|
|
303
|
+
// of the keys that created it: a cached plan the current keys do not know
|
|
304
|
+
// (the store moved between test and live keys) is created again under
|
|
305
|
+
// them. A cached plan that cannot be checked right now is used as it is.
|
|
306
|
+
async function ensurePlan(input) {
|
|
307
|
+
if (!configured()) {
|
|
308
|
+
return planFailure(MISSING_KEYS);
|
|
309
|
+
}
|
|
310
|
+
var cached = String(input.planId || '').trim();
|
|
311
|
+
if (cached) {
|
|
312
|
+
try {
|
|
313
|
+
var known = await call('GET', '/plans/' + encodeURIComponent(cached));
|
|
314
|
+
if (!isUnknown(known)) {
|
|
315
|
+
return { ok: 'true', planId: cached, providerProductId: '', created: 'false' };
|
|
316
|
+
}
|
|
317
|
+
} catch (_err) {
|
|
318
|
+
return { ok: 'true', planId: cached, providerProductId: '', created: 'false' };
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
var period = PERIODS[String(input.interval || 'month').toLowerCase()];
|
|
322
|
+
if (!period) {
|
|
323
|
+
return planFailure('Unknown billing interval "' + input.interval + '".');
|
|
324
|
+
}
|
|
325
|
+
var interval = Math.max(1, Math.floor(Number(input.intervalCount) || 1));
|
|
326
|
+
if (period === 'daily' && interval < MIN_DAILY_INTERVAL) {
|
|
327
|
+
return planFailure('Razorpay bills a daily plan at most once every ' + MIN_DAILY_INTERVAL + ' days.');
|
|
328
|
+
}
|
|
329
|
+
var amountMinor = minor(input.amount, input.currency);
|
|
330
|
+
if (amountMinor <= 0) {
|
|
331
|
+
return planFailure('A subscription needs a positive amount to bill.');
|
|
332
|
+
}
|
|
333
|
+
try {
|
|
334
|
+
var answer = await call('POST', '/plans', {
|
|
335
|
+
period: period,
|
|
336
|
+
interval: interval,
|
|
337
|
+
item: {
|
|
338
|
+
name: String(input.productName || 'Subscription').slice(0, 255),
|
|
339
|
+
amount: amountMinor,
|
|
340
|
+
currency: String(input.currency || '').toUpperCase(),
|
|
341
|
+
},
|
|
342
|
+
notes: notes({ productId: input.productId || '' }),
|
|
343
|
+
});
|
|
344
|
+
if (!answer.ok || !answer.data || !answer.data.id) {
|
|
345
|
+
return planFailure(problem(answer.data, 'Razorpay refused the plan (HTTP ' + answer.status + ')'));
|
|
346
|
+
}
|
|
347
|
+
return { ok: 'true', planId: String(answer.data.id), providerProductId: '', created: 'true' };
|
|
348
|
+
} catch (err) {
|
|
349
|
+
return planFailure(core.describeError(err));
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
function cyclesIn(years, unit, count) {
|
|
354
|
+
var perYear = { day: 365, week: 52, month: 12, year: 1 }[unit] || 12;
|
|
355
|
+
return Math.max(1, Math.floor((years * perYear) / Math.max(1, count)));
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
// The buyer authorises the subscription on the store's own page (Razorpay
|
|
359
|
+
// Checkout needs the subscription id and the public key id), which returns
|
|
360
|
+
// them to the order page. A trial starts the billing later; Razorpay then
|
|
361
|
+
// takes a small authorisation charge it refunds itself.
|
|
362
|
+
async function createSubscriptionCheckout(input) {
|
|
363
|
+
if (!configured()) {
|
|
364
|
+
return { checkoutUrl: '', sessionId: '', error: MISSING_KEYS };
|
|
365
|
+
}
|
|
366
|
+
var planId = String(input.planId || '').trim();
|
|
367
|
+
if (!planId) {
|
|
368
|
+
return { checkoutUrl: '', sessionId: '', error: 'No Razorpay plan was supplied for the subscription' };
|
|
369
|
+
}
|
|
370
|
+
var regular = Number(input.amount);
|
|
371
|
+
var due = Number(input.amountDue);
|
|
372
|
+
if (isFinite(due) && due < regular) {
|
|
373
|
+
return { checkoutUrl: '', sessionId: '', error: 'Razorpay cannot take a gift card toward a subscription payment.' };
|
|
374
|
+
}
|
|
375
|
+
var unit = String(input.recurringInterval || 'month').toLowerCase();
|
|
376
|
+
var count = Math.max(1, Math.floor(Number(input.recurringIntervalCount) || 1));
|
|
377
|
+
var trialDays = Math.max(0, Math.floor(Number(input.trialDays) || 0));
|
|
378
|
+
var metadata = input.metadata || {};
|
|
379
|
+
var now = Math.floor(Date.now() / 1000);
|
|
380
|
+
try {
|
|
381
|
+
var body = {
|
|
382
|
+
plan_id: planId,
|
|
383
|
+
total_count: cyclesIn(MAX_SUBSCRIPTION_YEARS, unit, count),
|
|
384
|
+
quantity: 1,
|
|
385
|
+
customer_notify: false,
|
|
386
|
+
// The buyer has a day to authorise it, as long as an unpaid link
|
|
387
|
+
// stays open; left out, Razorpay would keep it open for 30 years.
|
|
388
|
+
expire_by: now + LINK_LIFETIME_SECONDS,
|
|
389
|
+
notes: notes({
|
|
390
|
+
orderId: metadata.orderId,
|
|
391
|
+
subscriptionId: metadata.subscriptionId,
|
|
392
|
+
successUrl: input.successUrl,
|
|
393
|
+
cancelUrl: input.cancelUrl,
|
|
394
|
+
}),
|
|
395
|
+
};
|
|
396
|
+
if (trialDays > 0) {
|
|
397
|
+
body.start_at = now + trialDays * 24 * 60 * 60;
|
|
398
|
+
// Never past the moment the trial ends and billing starts.
|
|
399
|
+
body.expire_by = Math.min(body.expire_by, body.start_at);
|
|
400
|
+
}
|
|
401
|
+
var answer = await call('POST', '/subscriptions', body);
|
|
402
|
+
if (!answer.ok || !answer.data || !answer.data.id) {
|
|
403
|
+
return { checkoutUrl: '', sessionId: '', error: problem(answer.data, 'Razorpay refused the subscription (HTTP ' + answer.status + ')') };
|
|
404
|
+
}
|
|
405
|
+
var subscriptionId = String(answer.data.id);
|
|
406
|
+
return {
|
|
407
|
+
checkoutUrl: core.absoluteUrl('/pay/razorpay?subscription=' + encodeURIComponent(subscriptionId), input.baseUrl),
|
|
408
|
+
sessionId: subscriptionId,
|
|
409
|
+
providerSubscriptionId: subscriptionId,
|
|
410
|
+
};
|
|
411
|
+
} catch (err) {
|
|
412
|
+
return { checkoutUrl: '', sessionId: '', error: core.describeError(err) };
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
function unixToIso(value) {
|
|
417
|
+
var seconds = Number(value);
|
|
418
|
+
return isFinite(seconds) && seconds > 0 ? new Date(seconds * 1000).toISOString() : '';
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
function subscriptionStatus(status) {
|
|
422
|
+
var map = {
|
|
423
|
+
created: 'pending',
|
|
424
|
+
authenticated: 'trialing',
|
|
425
|
+
active: 'active',
|
|
426
|
+
pending: 'past_due',
|
|
427
|
+
halted: 'past_due',
|
|
428
|
+
paused: 'paused',
|
|
429
|
+
cancelled: 'cancelled',
|
|
430
|
+
completed: 'expired',
|
|
431
|
+
expired: 'expired',
|
|
432
|
+
};
|
|
433
|
+
return map[String(status || '').toLowerCase()] || '';
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
function manageFailure(message) {
|
|
437
|
+
return { ok: 'false', status: '', cancelAtPeriodEnd: 'false', currentPeriodStart: '', currentPeriodEnd: '', error: message };
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
// A pause and a cancellation at the cycle end read the subscription first:
|
|
441
|
+
// Razorpay pauses only an active one (a paused trial is cancelled for
|
|
442
|
+
// good), and schedules no cancellation before the first cycle has started,
|
|
443
|
+
// so a subscription still in its trial is cancelled at once and says so.
|
|
444
|
+
async function manageSubscription(input) {
|
|
445
|
+
if (!configured()) {
|
|
446
|
+
return manageFailure(MISSING_KEYS);
|
|
447
|
+
}
|
|
448
|
+
var path = '/subscriptions/' + encodeURIComponent(input.subscriptionId);
|
|
449
|
+
try {
|
|
450
|
+
var current = '';
|
|
451
|
+
if (input.action === 'pause' || input.action === 'cancel_at_period_end') {
|
|
452
|
+
var read = await call('GET', path);
|
|
453
|
+
if (!read.ok || !read.data) {
|
|
454
|
+
return manageFailure(problem(read.data, 'Razorpay could not read the subscription (HTTP ' + read.status + ')'));
|
|
455
|
+
}
|
|
456
|
+
current = String(read.data.status || '');
|
|
457
|
+
}
|
|
458
|
+
if (input.action === 'pause' && current !== 'active') {
|
|
459
|
+
return manageFailure(PAUSE_ONLY_ACTIVE);
|
|
460
|
+
}
|
|
461
|
+
var schedulesCancel = input.action === 'cancel_at_period_end' && !BEFORE_FIRST_CYCLE[current];
|
|
462
|
+
var answer;
|
|
463
|
+
if (input.action === 'refresh') {
|
|
464
|
+
answer = await call('GET', path);
|
|
465
|
+
} else if (input.action === 'cancel' || input.action === 'cancel_at_period_end') {
|
|
466
|
+
answer = await call('POST', path + '/cancel', { cancel_at_cycle_end: schedulesCancel });
|
|
467
|
+
} else if (input.action === 'pause') {
|
|
468
|
+
answer = await call('POST', path + '/pause', { pause_at: 'now' });
|
|
469
|
+
} else {
|
|
470
|
+
answer = await call('POST', path + '/resume', { resume_at: 'now' });
|
|
471
|
+
}
|
|
472
|
+
if (!answer.ok || !answer.data) {
|
|
473
|
+
return manageFailure(problem(answer.data, 'Razorpay refused the change (HTTP ' + answer.status + ')'));
|
|
474
|
+
}
|
|
475
|
+
var subscription = answer.data;
|
|
476
|
+
var scheduled = schedulesCancel || (!!subscription.has_scheduled_changes && subscription.status !== 'cancelled');
|
|
477
|
+
var result = {
|
|
478
|
+
ok: 'true',
|
|
479
|
+
status: subscriptionStatus(subscription.status),
|
|
480
|
+
cancelAtPeriodEnd: scheduled && subscription.status !== 'cancelled' ? 'true' : 'false',
|
|
481
|
+
currentPeriodStart: unixToIso(subscription.current_start),
|
|
482
|
+
currentPeriodEnd: unixToIso(subscription.current_end || subscription.charge_at),
|
|
483
|
+
};
|
|
484
|
+
if (input.action === 'cancel_at_period_end' && !schedulesCancel) {
|
|
485
|
+
result.message = CANCELLED_BEFORE_FIRST_CYCLE;
|
|
486
|
+
}
|
|
487
|
+
return result;
|
|
488
|
+
} catch (err) {
|
|
489
|
+
return manageFailure(core.describeError(err));
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
async function billingPortal() {
|
|
494
|
+
return { ok: 'false', url: '', error: 'Razorpay has no billing page for subscribers.' };
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
function refundFailure(currency, message, extra) {
|
|
498
|
+
var result = { success: false, refundId: '', amount: 0, currency: currency, status: '', error: message };
|
|
499
|
+
if (extra) {
|
|
500
|
+
Object.keys(extra).forEach(function (key) {
|
|
501
|
+
result[key] = extra[key];
|
|
502
|
+
});
|
|
503
|
+
}
|
|
504
|
+
return result;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
// Refunds pay out of the merchant's Razorpay balance. The idempotency header
|
|
508
|
+
// takes letters, digits, hyphens and underscores, 10 or more.
|
|
509
|
+
async function refund(input) {
|
|
510
|
+
var currency = String(input.currency || '').toUpperCase();
|
|
511
|
+
if (!configured()) {
|
|
512
|
+
return refundFailure(currency, MISSING_KEYS);
|
|
513
|
+
}
|
|
514
|
+
var paymentId = String(input.paymentReference || '').trim();
|
|
515
|
+
try {
|
|
516
|
+
if (paymentId.indexOf('plink_') === 0) {
|
|
517
|
+
var link = await call('GET', '/payment_links/' + encodeURIComponent(paymentId));
|
|
518
|
+
var payments = link.ok && link.data && Array.isArray(link.data.payments) ? link.data.payments : [];
|
|
519
|
+
paymentId = payments.length > 0 ? String(payments[0].payment_id || '') : '';
|
|
520
|
+
}
|
|
521
|
+
if (paymentId.indexOf('pay_') !== 0) {
|
|
522
|
+
return refundFailure(currency, 'This order has no captured Razorpay payment to refund.');
|
|
523
|
+
}
|
|
524
|
+
var body = { notes: notes({ orderId: input.orderId, reason: input.reason }) };
|
|
525
|
+
if (input.amount > 0) {
|
|
526
|
+
var amountMinor = minor(input.amount, currency);
|
|
527
|
+
if (amountMinor <= 0) {
|
|
528
|
+
return refundFailure(currency, 'The amount is smaller than the smallest unit of ' + currency + '.');
|
|
529
|
+
}
|
|
530
|
+
body.amount = amountMinor;
|
|
531
|
+
}
|
|
532
|
+
var key = String(input.idempotencyKey || '').replace(/[^A-Za-z0-9_-]/g, '-');
|
|
533
|
+
var answer = await call('POST', '/payments/' + encodeURIComponent(paymentId) + '/refund', body, {
|
|
534
|
+
'X-Refund-Idempotency': key.length >= 10 ? key.slice(0, 64) : (key + '-refund-key').slice(0, 64),
|
|
535
|
+
});
|
|
536
|
+
if (!answer.ok || !answer.data) {
|
|
537
|
+
return refundFailure(currency, problem(answer.data, 'Razorpay refused the refund (HTTP ' + answer.status + ')'));
|
|
538
|
+
}
|
|
539
|
+
var created = answer.data;
|
|
540
|
+
var refundCurrency = String(created.currency || currency).toUpperCase();
|
|
541
|
+
if (created.status === 'failed') {
|
|
542
|
+
return refundFailure(refundCurrency, 'Razorpay reported the refund as failed.', { refundId: created.id || '', status: 'failed' });
|
|
543
|
+
}
|
|
544
|
+
return {
|
|
545
|
+
success: true,
|
|
546
|
+
refundId: created.id || '',
|
|
547
|
+
amount: major(created.amount, refundCurrency),
|
|
548
|
+
currency: refundCurrency,
|
|
549
|
+
status: String(created.status || ''),
|
|
550
|
+
error: '',
|
|
551
|
+
};
|
|
552
|
+
} catch (err) {
|
|
553
|
+
return refundFailure(currency, core.describeError(err));
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
// A checkout whose webhook never came (no webhook set up for this store's
|
|
558
|
+
// address, a wrong secret) is settled from Razorpay itself: the link or the
|
|
559
|
+
// subscription is READ with the store's keys and answered as the event
|
|
560
|
+
// Razorpay sends for its current state. Nothing but its id comes from the
|
|
561
|
+
// request.
|
|
562
|
+
var LINK_ID_PATTERN = /^plink_[A-Za-z0-9]{6,40}$/;
|
|
563
|
+
var SUBSCRIPTION_ID_PATTERN = /^sub_[A-Za-z0-9]{6,40}$/;
|
|
564
|
+
|
|
565
|
+
// \`entities\` by payload name, as Razorpay's own event carries them.
|
|
566
|
+
function settledEvent(name, entities) {
|
|
567
|
+
var payload = {};
|
|
568
|
+
Object.keys(entities).forEach(function (key) {
|
|
569
|
+
payload[key] = { entity: entities[key] };
|
|
570
|
+
});
|
|
571
|
+
return {
|
|
572
|
+
ok: true,
|
|
573
|
+
body: { entity: 'event', event: name, contains: Object.keys(entities), payload: payload, created_at: Math.floor(Date.now() / 1000) },
|
|
574
|
+
};
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
function unanswered(answer, fallback) {
|
|
578
|
+
return { ok: false, retry: answer.status >= 500 || answer.status === 429, reason: problem(answer.data, fallback) };
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
async function readPayment(paymentId) {
|
|
582
|
+
var answer = await call('GET', '/payments/' + encodeURIComponent(paymentId));
|
|
583
|
+
return answer.ok && answer.data ? { entity: answer.data } : { failure: unanswered(answer, 'Razorpay could not be asked about payment ' + paymentId) };
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
// The payment that paid a link: its latest attempt that did not fail (a
|
|
587
|
+
// failed one stays listed beside it).
|
|
588
|
+
function linkPaymentId(link) {
|
|
589
|
+
var payments = Array.isArray(link.payments) ? link.payments : [];
|
|
590
|
+
for (var i = payments.length - 1; i >= 0; i--) {
|
|
591
|
+
if (payments[i] && payments[i].payment_id && payments[i].status !== 'failed') {
|
|
592
|
+
return String(payments[i].payment_id);
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
return '';
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
async function settleLink(linkId) {
|
|
599
|
+
var answer = await call('GET', '/payment_links/' + encodeURIComponent(linkId));
|
|
600
|
+
if (!answer.ok || !answer.data) {
|
|
601
|
+
return unanswered(answer, 'Razorpay could not be asked about payment link ' + linkId);
|
|
602
|
+
}
|
|
603
|
+
var link = answer.data;
|
|
604
|
+
var status = String(link.status || '');
|
|
605
|
+
if (status === 'expired' || status === 'cancelled') {
|
|
606
|
+
return settledEvent('payment_link.' + status, { payment_link: link });
|
|
607
|
+
}
|
|
608
|
+
var paymentId = status === 'paid' ? linkPaymentId(link) : '';
|
|
609
|
+
if (!paymentId) {
|
|
610
|
+
return { ok: false, reason: 'Razorpay payment link ' + linkId + ' is ' + (status || 'not paid') + ', with no payment to settle.' };
|
|
611
|
+
}
|
|
612
|
+
var payment = await readPayment(paymentId);
|
|
613
|
+
return payment.failure || settledEvent('payment_link.paid', { payment_link: link, payment: payment.entity });
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
// A subscription the buyer authorised before a trial answers that mandate;
|
|
617
|
+
// one charged since answers its FIRST charge (the earliest paid invoice),
|
|
618
|
+
// which pays the order.
|
|
619
|
+
async function settleSubscription(subscriptionId) {
|
|
620
|
+
var answer = await call('GET', '/subscriptions/' + encodeURIComponent(subscriptionId));
|
|
621
|
+
if (!answer.ok || !answer.data) {
|
|
622
|
+
return unanswered(answer, 'Razorpay could not be asked about subscription ' + subscriptionId);
|
|
623
|
+
}
|
|
624
|
+
var subscription = answer.data;
|
|
625
|
+
var status = String(subscription.status || '');
|
|
626
|
+
if (status === 'authenticated') {
|
|
627
|
+
return settledEvent('subscription.authenticated', { subscription: subscription });
|
|
628
|
+
}
|
|
629
|
+
if (status === 'created') {
|
|
630
|
+
return { ok: false, reason: 'Razorpay subscription ' + subscriptionId + ' is not authorised yet.' };
|
|
631
|
+
}
|
|
632
|
+
var invoices = await call('GET', '/invoices?subscription_id=' + encodeURIComponent(subscriptionId) + '&count=100');
|
|
633
|
+
if (!invoices.ok || !invoices.data) {
|
|
634
|
+
return unanswered(invoices, 'Razorpay could not list the invoices of subscription ' + subscriptionId);
|
|
635
|
+
}
|
|
636
|
+
var first = (Array.isArray(invoices.data.items) ? invoices.data.items : [])
|
|
637
|
+
.filter(function (invoice) {
|
|
638
|
+
return invoice && invoice.status === 'paid' && invoice.payment_id;
|
|
639
|
+
})
|
|
640
|
+
.sort(function (a, b) {
|
|
641
|
+
return Number(a.paid_at || a.created_at || 0) - Number(b.paid_at || b.created_at || 0);
|
|
642
|
+
})[0];
|
|
643
|
+
if (!first) {
|
|
644
|
+
return { ok: false, reason: 'Razorpay has not charged subscription ' + subscriptionId + ' yet.' };
|
|
645
|
+
}
|
|
646
|
+
var payment = await readPayment(String(first.payment_id));
|
|
647
|
+
return payment.failure || settledEvent('subscription.charged', { subscription: subscription, payment: payment.entity });
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
async function reconcile(request) {
|
|
651
|
+
var kind = String((request && request.kind) || '');
|
|
652
|
+
var id = String((request && request.id) || '').trim();
|
|
653
|
+
var isLink = LINK_ID_PATTERN.test(id);
|
|
654
|
+
if (kind !== 'checkout' || (!isLink && !SUBSCRIPTION_ID_PATTERN.test(id))) {
|
|
655
|
+
return { ok: false, reason: 'The request names no Razorpay checkout to settle.' };
|
|
656
|
+
}
|
|
657
|
+
if (!configured()) {
|
|
658
|
+
return { ok: false, retry: true, reason: MISSING_KEYS };
|
|
659
|
+
}
|
|
660
|
+
try {
|
|
661
|
+
return isLink ? await settleLink(id) : await settleSubscription(id);
|
|
662
|
+
} catch (err) {
|
|
663
|
+
return { ok: false, retry: true, reason: core.describeError(err) };
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
function reconcileKinds(reference) {
|
|
668
|
+
var id = String(reference || '').trim();
|
|
669
|
+
return LINK_ID_PATTERN.test(id) || SUBSCRIPTION_ID_PATTERN.test(id) ? ['checkout'] : [];
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
// Signed with the webhook secret the merchant chose in the Razorpay
|
|
673
|
+
// Dashboard (not the key secret), over the raw body.
|
|
674
|
+
async function verifyWebhook(input) {
|
|
675
|
+
var secret = input.secret || core.credential('razorpay', 'webhookSecret');
|
|
676
|
+
if (!secret) {
|
|
677
|
+
return { ok: false, reason: 'The Razorpay webhook secret (RAZORPAY_WEBHOOK_SECRET) is not configured.' };
|
|
678
|
+
}
|
|
679
|
+
var signature = core.header(input.headers, 'x-razorpay-signature');
|
|
680
|
+
if (!signature) {
|
|
681
|
+
return { ok: false, reason: 'The X-Razorpay-Signature header is missing.' };
|
|
682
|
+
}
|
|
683
|
+
return core.safeEqual(core.hmac('sha256', secret, input.rawBody, 'hex'), signature)
|
|
684
|
+
? { ok: true, body: input.body }
|
|
685
|
+
: { ok: false, reason: 'The Razorpay signature does not match the webhook secret.' };
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
// What the store's \`/pay/razorpay\` page needs to open Razorpay Checkout for
|
|
689
|
+
// a subscription: the PUBLIC key id, and where the buyer goes afterwards.
|
|
690
|
+
// Only a subscription still waiting for its authorisation (\`created\`) is
|
|
691
|
+
// opened; any other was authorised, cancelled or expired already.
|
|
692
|
+
async function checkoutPage(subscriptionId) {
|
|
693
|
+
var id = String(subscriptionId || '').trim();
|
|
694
|
+
if (id.indexOf('sub_') !== 0 || !configured()) {
|
|
695
|
+
return null;
|
|
696
|
+
}
|
|
697
|
+
var answer = await call('GET', '/subscriptions/' + encodeURIComponent(id));
|
|
698
|
+
if (!answer.ok || !answer.data || answer.data.status !== 'created') {
|
|
699
|
+
return null;
|
|
700
|
+
}
|
|
701
|
+
var saved = answer.data.notes && typeof answer.data.notes === 'object' ? answer.data.notes : {};
|
|
702
|
+
return {
|
|
703
|
+
subscriptionId: id,
|
|
704
|
+
keyId: keys().keyId,
|
|
705
|
+
successUrl: String(saved.successUrl || ''),
|
|
706
|
+
cancelUrl: String(saved.cancelUrl || ''),
|
|
707
|
+
};
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
return {
|
|
711
|
+
id: 'razorpay',
|
|
712
|
+
createCheckout: createCheckout,
|
|
713
|
+
createSubscriptionCheckout: createSubscriptionCheckout,
|
|
714
|
+
inspectCheckout: inspectCheckout,
|
|
715
|
+
closeCheckout: closeCheckout,
|
|
716
|
+
findCheckouts: findCheckouts,
|
|
717
|
+
ensurePlan: ensurePlan,
|
|
718
|
+
refund: refund,
|
|
719
|
+
manageSubscription: manageSubscription,
|
|
720
|
+
billingPortal: billingPortal,
|
|
721
|
+
reconcile: reconcile,
|
|
722
|
+
reconcileKinds: reconcileKinds,
|
|
723
|
+
verifyWebhook: verifyWebhook,
|
|
724
|
+
checkoutPage: checkoutPage,
|
|
725
|
+
};
|
|
726
|
+
};
|
|
727
|
+
`;
|
|
728
|
+
//# sourceMappingURL=razorpay-driver-code.js.map
|