@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
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CartCurrency } from '@teleporthq/teleport-shared'
|
|
1
2
|
import { NodeHandlerGenerator, handlerToString } from '../types'
|
|
2
3
|
import {
|
|
3
4
|
COMMERCE_TRACKING_HELPER_SOURCE,
|
|
@@ -10,6 +11,11 @@ import {
|
|
|
10
11
|
// module scope. Declaring the name emits nothing and leaves a bare identifier
|
|
11
12
|
// that the appended helper source defines. See `commerce-tracking.ts`.
|
|
12
13
|
declare function trackCommerceStep(step: { name: string; detail?: Record<string, unknown> }): void
|
|
14
|
+
// Same, for the cart-currency rule (`CartCurrency` in teleport-shared).
|
|
15
|
+
declare function __ccCurrencyRefusal(input: {
|
|
16
|
+
lines: unknown[]
|
|
17
|
+
currency: unknown
|
|
18
|
+
}): { added: false; reason: string; message: string } | null
|
|
13
19
|
|
|
14
20
|
async function cart_add_item(config: any) {
|
|
15
21
|
const productId = config.productId
|
|
@@ -30,6 +36,120 @@ async function cart_add_item(config: any) {
|
|
|
30
36
|
const discountType = config.discountType || null
|
|
31
37
|
const discountValue = config.discountValue != null ? Number(config.discountValue) : null
|
|
32
38
|
const discountAmount = config.discountAmount != null ? Number(config.discountAmount) : 0
|
|
39
|
+
// What the discount engine prices the line by: its category ids INCLUDING
|
|
40
|
+
// ancestors (`category_filter_ids`), and whether the product IS a gift card
|
|
41
|
+
// — never discounted, and a cart holding one cannot be paid with one. The
|
|
42
|
+
// workflow may hand either the parsed array or the raw JSON column, and a
|
|
43
|
+
// config boolean arrives as the string 'true'; anything unreadable is
|
|
44
|
+
// "no categories" / "not a gift card", never a thrown add-to-cart.
|
|
45
|
+
let categoryIds: string[] = []
|
|
46
|
+
try {
|
|
47
|
+
let rawCategories = config.categoryIds
|
|
48
|
+
if (typeof rawCategories === 'string' && rawCategories !== '') {
|
|
49
|
+
rawCategories = JSON.parse(rawCategories)
|
|
50
|
+
}
|
|
51
|
+
if (Array.isArray(rawCategories)) {
|
|
52
|
+
categoryIds = rawCategories
|
|
53
|
+
.filter((entry: unknown) => entry !== null && entry !== undefined && entry !== '')
|
|
54
|
+
.map((entry: unknown) => String(entry))
|
|
55
|
+
}
|
|
56
|
+
} catch {
|
|
57
|
+
categoryIds = []
|
|
58
|
+
}
|
|
59
|
+
const readFlag = (value: unknown): boolean =>
|
|
60
|
+
value === true ||
|
|
61
|
+
value === 1 ||
|
|
62
|
+
(typeof value === 'string' && ['true', 't', '1', 'yes'].indexOf(value.toLowerCase()) !== -1)
|
|
63
|
+
const isGiftCard = readFlag(config.isGiftCard)
|
|
64
|
+
// The line's kind, from the product row the workflow fetched: a subscription
|
|
65
|
+
// is billed by the provider every interval and checks out alone at quantity
|
|
66
|
+
// one; a gift card is issued by email once paid; a digital line is delivered
|
|
67
|
+
// from the order page; anything else ships. One order holds ONE kind, so the
|
|
68
|
+
// cart does too — a line of another kind is refused here, before anything is
|
|
69
|
+
// written, and the workflow toasts why. One order is also charged in ONE
|
|
70
|
+
// currency, so a line priced in another currency is refused the same way.
|
|
71
|
+
const isRecurring = readFlag(config.isRecurring)
|
|
72
|
+
const isDigital = readFlag(config.isDigital)
|
|
73
|
+
const recurringInterval = isRecurring ? String(config.recurringInterval || 'month') : null
|
|
74
|
+
const recurringIntervalCount = isRecurring
|
|
75
|
+
? Math.max(1, Math.floor(Number(config.recurringIntervalCount)) || 1)
|
|
76
|
+
: null
|
|
77
|
+
const trialDays = isRecurring ? Math.max(0, Math.floor(Number(config.trialDays)) || 0) : null
|
|
78
|
+
const kindOf = (line: any): 'subscription' | 'gift-card' | 'digital' | 'physical' =>
|
|
79
|
+
readFlag(line && line.isRecurring)
|
|
80
|
+
? 'subscription'
|
|
81
|
+
: readFlag(line && line.isGiftCard)
|
|
82
|
+
? 'gift-card'
|
|
83
|
+
: readFlag(line && line.isDigital)
|
|
84
|
+
? 'digital'
|
|
85
|
+
: 'physical'
|
|
86
|
+
const KIND_LABELS = {
|
|
87
|
+
subscription: 'Subscriptions',
|
|
88
|
+
'gift-card': 'Gift cards',
|
|
89
|
+
digital: 'Digital products',
|
|
90
|
+
physical: 'Physical products',
|
|
91
|
+
}
|
|
92
|
+
const lineKind = kindOf({ isRecurring, isGiftCard, isDigital })
|
|
93
|
+
const refuse = (
|
|
94
|
+
reason: 'mixed-cart' | 'mixed-currency' | 'one-subscription' | 'options-invalid',
|
|
95
|
+
message: string
|
|
96
|
+
) => ({
|
|
97
|
+
added: false,
|
|
98
|
+
reason,
|
|
99
|
+
message,
|
|
100
|
+
})
|
|
101
|
+
|
|
102
|
+
// The options the shopper chose, priced by the add-to-cart workflow:
|
|
103
|
+
// `configuration` is the canonical JSON of the answers and `configurationKey`
|
|
104
|
+
// its hash. A line is identified by product, variant AND configuration, so
|
|
105
|
+
// two configurations of one product are two lines. `price` already includes
|
|
106
|
+
// the options' surcharge (`configurationPriceDelta`, NET per unit) on top of
|
|
107
|
+
// `basePrice`, the charged base, so every total downstream reads `price`
|
|
108
|
+
// unchanged. A line without options carries none of these fields.
|
|
109
|
+
const rawConfiguration = config.configuration
|
|
110
|
+
const configuration = Array.isArray(rawConfiguration)
|
|
111
|
+
? rawConfiguration.length > 0
|
|
112
|
+
? JSON.stringify(rawConfiguration)
|
|
113
|
+
: ''
|
|
114
|
+
: typeof rawConfiguration === 'string'
|
|
115
|
+
? rawConfiguration.trim()
|
|
116
|
+
: ''
|
|
117
|
+
const configurationKey = configuration
|
|
118
|
+
? String(config.configurationKey == null ? '' : config.configurationKey)
|
|
119
|
+
.trim()
|
|
120
|
+
.slice(0, 64)
|
|
121
|
+
: ''
|
|
122
|
+
const configurationPriceDelta =
|
|
123
|
+
config.configurationPriceDelta == null || config.configurationPriceDelta === ''
|
|
124
|
+
? 0
|
|
125
|
+
: Number(config.configurationPriceDelta)
|
|
126
|
+
// The same 8000-character cap the checkout enforces, so a line the checkout
|
|
127
|
+
// would refuse never reaches the cart.
|
|
128
|
+
if (configuration.length > 8000) {
|
|
129
|
+
return refuse('options-invalid', 'Your personalisation is too long. Please shorten it.')
|
|
130
|
+
}
|
|
131
|
+
if (
|
|
132
|
+
configuration &&
|
|
133
|
+
(!configurationKey || !isFinite(configurationPriceDelta) || configurationPriceDelta < 0)
|
|
134
|
+
) {
|
|
135
|
+
return refuse(
|
|
136
|
+
'options-invalid',
|
|
137
|
+
'Some of the options you chose are no longer available. Please review them.'
|
|
138
|
+
)
|
|
139
|
+
}
|
|
140
|
+
const statedBasePrice =
|
|
141
|
+
config.basePrice == null || config.basePrice === '' ? NaN : Number(config.basePrice)
|
|
142
|
+
const lineOptions = configurationKey
|
|
143
|
+
? {
|
|
144
|
+
configuration,
|
|
145
|
+
configurationKey,
|
|
146
|
+
configurationLabel: String(config.configurationLabel || '').slice(0, 500),
|
|
147
|
+
configurationPriceDelta,
|
|
148
|
+
basePrice: isFinite(statedBasePrice)
|
|
149
|
+
? statedBasePrice
|
|
150
|
+
: Math.round((price - configurationPriceDelta) * 100) / 100,
|
|
151
|
+
}
|
|
152
|
+
: null
|
|
33
153
|
|
|
34
154
|
// Per-product cap is published by `EcommerceProvider` to localStorage so
|
|
35
155
|
// workflow handlers (which run outside React) can enforce the same limit
|
|
@@ -49,11 +169,44 @@ async function cart_add_item(config: any) {
|
|
|
49
169
|
const raw = localStorage.getItem('workflow_cart')
|
|
50
170
|
const cart: any[] = raw ? JSON.parse(raw) : []
|
|
51
171
|
|
|
172
|
+
// The key is a lookup hint, not an identity: a configured line is the same
|
|
173
|
+
// line only when its configuration is identical too.
|
|
52
174
|
const existingIndex = cart.findIndex(
|
|
53
175
|
(item: any) =>
|
|
54
|
-
item.productId === productId &&
|
|
176
|
+
item.productId === productId &&
|
|
177
|
+
(item.variantId || null) === (variantId || null) &&
|
|
178
|
+
String(item.configurationKey || '') === configurationKey &&
|
|
179
|
+
(!configurationKey || item.configuration === configuration)
|
|
55
180
|
)
|
|
56
181
|
|
|
182
|
+
// A subscription already in the cart is the one unit it will ever be.
|
|
183
|
+
if (existingIndex >= 0 && (isRecurring || kindOf(cart[existingIndex]) === 'subscription')) {
|
|
184
|
+
return refuse(
|
|
185
|
+
'one-subscription',
|
|
186
|
+
'Subscriptions are checked out on their own. Finish or empty your current cart first.'
|
|
187
|
+
)
|
|
188
|
+
}
|
|
189
|
+
const otherLines = cart.filter((_line: any, index: number) => index !== existingIndex)
|
|
190
|
+
if (otherLines.length > 0) {
|
|
191
|
+
if (isRecurring || kindOf(otherLines[0]) === 'subscription') {
|
|
192
|
+
return refuse(
|
|
193
|
+
'one-subscription',
|
|
194
|
+
'Subscriptions are checked out on their own. Finish or empty your current cart first.'
|
|
195
|
+
)
|
|
196
|
+
}
|
|
197
|
+
if (kindOf(otherLines[0]) !== lineKind) {
|
|
198
|
+
return refuse(
|
|
199
|
+
'mixed-cart',
|
|
200
|
+
KIND_LABELS[lineKind] +
|
|
201
|
+
' need a separate order. Complete your current order or remove the other items from your cart first.'
|
|
202
|
+
)
|
|
203
|
+
}
|
|
204
|
+
const currencyRefusal = __ccCurrencyRefusal({ lines: otherLines, currency })
|
|
205
|
+
if (currencyRefusal) {
|
|
206
|
+
return refuse('mixed-currency', currencyRefusal.message)
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
57
210
|
if (existingIndex >= 0) {
|
|
58
211
|
let nextQty = (Number(cart[existingIndex].quantity) || 0) + quantity
|
|
59
212
|
if (maxQty !== null && nextQty > maxQty) {
|
|
@@ -86,6 +239,21 @@ async function cart_add_item(config: any) {
|
|
|
86
239
|
cart[existingIndex].discountType = discountType
|
|
87
240
|
cart[existingIndex].discountValue = discountValue
|
|
88
241
|
cart[existingIndex].discountAmount = discountAmount
|
|
242
|
+
// Same rule: a product moved to another category, or turned into a gift
|
|
243
|
+
// card, must re-price on the next add — the empty list and `false` are
|
|
244
|
+
// the values that say "none".
|
|
245
|
+
cart[existingIndex].categoryIds = categoryIds
|
|
246
|
+
cart[existingIndex].isGiftCard = isGiftCard
|
|
247
|
+
cart[existingIndex].isRecurring = isRecurring
|
|
248
|
+
cart[existingIndex].recurringInterval = recurringInterval
|
|
249
|
+
cart[existingIndex].recurringIntervalCount = recurringIntervalCount
|
|
250
|
+
cart[existingIndex].trialDays = trialDays
|
|
251
|
+
cart[existingIndex].isDigital = isDigital
|
|
252
|
+
// The same answers can carry a new label or surcharge (an option renamed
|
|
253
|
+
// or repriced since the line was added).
|
|
254
|
+
if (lineOptions) {
|
|
255
|
+
Object.assign(cart[existingIndex], lineOptions)
|
|
256
|
+
}
|
|
89
257
|
localStorage.setItem('workflow_cart', JSON.stringify(cart))
|
|
90
258
|
if (typeof window !== 'undefined') {
|
|
91
259
|
window.dispatchEvent(new CustomEvent('teleport:cart-changed'))
|
|
@@ -100,13 +268,18 @@ async function cart_add_item(config: any) {
|
|
|
100
268
|
items: [{ item_id: productId, item_name: name, price, quantity }],
|
|
101
269
|
},
|
|
102
270
|
})
|
|
103
|
-
|
|
271
|
+
const updated: any = {
|
|
104
272
|
id: cart[existingIndex].id,
|
|
105
273
|
productId,
|
|
106
274
|
quantity: cart[existingIndex].quantity,
|
|
275
|
+
added: true,
|
|
276
|
+
}
|
|
277
|
+
if (lineOptions) {
|
|
278
|
+
updated.configurationKey = configurationKey
|
|
107
279
|
}
|
|
280
|
+
return updated
|
|
108
281
|
} else {
|
|
109
|
-
let initialQty = quantity
|
|
282
|
+
let initialQty = isRecurring ? 1 : quantity
|
|
110
283
|
if (maxQty !== null && initialQty > maxQty) {
|
|
111
284
|
initialQty = maxQty
|
|
112
285
|
}
|
|
@@ -125,6 +298,16 @@ async function cart_add_item(config: any) {
|
|
|
125
298
|
discountType,
|
|
126
299
|
discountValue,
|
|
127
300
|
discountAmount,
|
|
301
|
+
categoryIds,
|
|
302
|
+
isGiftCard,
|
|
303
|
+
isRecurring,
|
|
304
|
+
recurringInterval,
|
|
305
|
+
recurringIntervalCount,
|
|
306
|
+
trialDays,
|
|
307
|
+
isDigital,
|
|
308
|
+
}
|
|
309
|
+
if (lineOptions) {
|
|
310
|
+
Object.assign(newItem, lineOptions)
|
|
128
311
|
}
|
|
129
312
|
cart.push(newItem)
|
|
130
313
|
localStorage.setItem('workflow_cart', JSON.stringify(cart))
|
|
@@ -139,7 +322,11 @@ async function cart_add_item(config: any) {
|
|
|
139
322
|
items: [{ item_id: productId, item_name: name, price, quantity: initialQty }],
|
|
140
323
|
},
|
|
141
324
|
})
|
|
142
|
-
|
|
325
|
+
const added: any = { id: newItem.id, productId, quantity: initialQty, added: true }
|
|
326
|
+
if (lineOptions) {
|
|
327
|
+
added.configurationKey = configurationKey
|
|
328
|
+
}
|
|
329
|
+
return added
|
|
143
330
|
}
|
|
144
331
|
} catch (err: unknown) {
|
|
145
332
|
return { success: false, error: (err as Error).message }
|
|
@@ -149,12 +336,16 @@ export const cartAddItem: NodeHandlerGenerator = {
|
|
|
149
336
|
nodeType: 'cart-add-item',
|
|
150
337
|
executionEnv: 'client',
|
|
151
338
|
generateHandler(): string {
|
|
152
|
-
// The
|
|
153
|
-
// serialized function body with no module scope.
|
|
154
|
-
// rather than a `.toString()` so a consumer's minifier cannot
|
|
155
|
-
// declaration
|
|
339
|
+
// The helpers are concatenated rather than imported: the handler ships as
|
|
340
|
+
// a serialized function body with no module scope. They are string
|
|
341
|
+
// literals rather than a `.toString()` so a consumer's minifier cannot
|
|
342
|
+
// strip their declaration names. See `commerce-tracking.ts`.
|
|
156
343
|
return assertHandlerHasNoModuleRefs(
|
|
157
|
-
handlerToString(cart_add_item) +
|
|
344
|
+
handlerToString(cart_add_item) +
|
|
345
|
+
'\n' +
|
|
346
|
+
COMMERCE_TRACKING_HELPER_SOURCE +
|
|
347
|
+
'\n' +
|
|
348
|
+
CartCurrency.generateCartCurrencyHelperCode(),
|
|
158
349
|
'cart-add-item'
|
|
159
350
|
)
|
|
160
351
|
},
|
|
@@ -43,6 +43,15 @@ async function cart_clear() {
|
|
|
43
43
|
// key — a serialized handler cannot import
|
|
44
44
|
// `RegionalPricing.SHIPPING_RATE_STORAGE_KEY`.
|
|
45
45
|
localStorage.removeItem('workflow_shipping_rate')
|
|
46
|
+
// And the gift card applied to it: its balance belongs to the shopper,
|
|
47
|
+
// not to this cart, so the next order asks for the code again rather
|
|
48
|
+
// than silently spending what is left. Literal key — a serialized
|
|
49
|
+
// handler cannot import `DiscountEngine.GIFT_CARD_STORAGE_KEY`.
|
|
50
|
+
localStorage.removeItem('workflow_gift_card')
|
|
51
|
+
// And the discount set chosen for it: the next order's choice is made
|
|
52
|
+
// over the next order's discounts. Literal key — a serialized handler
|
|
53
|
+
// cannot import `DiscountEngine.DISCOUNT_CHOICE_STORAGE_KEY`.
|
|
54
|
+
localStorage.removeItem('workflow_discount_choice')
|
|
46
55
|
const sessionId = localStorage.getItem('workflow_cart_session_id') || null
|
|
47
56
|
fetch('/api/cart/sync', {
|
|
48
57
|
method: 'POST',
|
|
@@ -55,6 +64,8 @@ async function cart_clear() {
|
|
|
55
64
|
window.dispatchEvent(new CustomEvent('teleport:cart-changed'))
|
|
56
65
|
window.dispatchEvent(new CustomEvent('teleport:voucher-changed'))
|
|
57
66
|
window.dispatchEvent(new CustomEvent('teleport:shipping-rate-changed'))
|
|
67
|
+
window.dispatchEvent(new CustomEvent('teleport:gift-card-changed'))
|
|
68
|
+
window.dispatchEvent(new CustomEvent('teleport:discount-choice-changed'))
|
|
58
69
|
}
|
|
59
70
|
return { success: true }
|
|
60
71
|
} catch (err: unknown) {
|
|
@@ -1,13 +1,21 @@
|
|
|
1
|
-
import { RegionalPricing } from '@teleporthq/teleport-shared'
|
|
1
|
+
import { CartCurrency, DiscountEngine, RegionalPricing } from '@teleporthq/teleport-shared'
|
|
2
2
|
import { NodeHandlerGenerator, handlerToString } from '../types'
|
|
3
3
|
|
|
4
4
|
// AMBIENT, not imported: the handler ships as a serialized function with no
|
|
5
|
-
// module scope, and the shared regional-pricing
|
|
6
|
-
// body by `generateHandler` below. See
|
|
7
|
-
// would compile to a module reference
|
|
5
|
+
// module scope, and the shared regional-pricing and discount-engine helpers
|
|
6
|
+
// are spliced into its body by `generateHandler` below. See
|
|
7
|
+
// `commerce-tracking.ts` for why an import would compile to a module reference
|
|
8
|
+
// that throws in the browser.
|
|
8
9
|
declare function __rpQuote(input: Record<string, unknown>): any
|
|
9
10
|
declare function __rpNormalizeConfig(rows: unknown): Record<string, unknown>
|
|
10
11
|
declare function __rpReadCheckoutDestination(countryCodes: unknown): Record<string, string> | null
|
|
12
|
+
declare function __deNormalizeRule(row: unknown, source: string): Record<string, unknown> | null
|
|
13
|
+
declare function __deLinesFromCart(items: unknown): unknown[]
|
|
14
|
+
declare function __deResolve(input: Record<string, unknown>): any
|
|
15
|
+
declare function __deTender(input: Record<string, unknown>): { applied: number; amountDue: number }
|
|
16
|
+
declare function __deBool(value: unknown, fallback: boolean): boolean
|
|
17
|
+
declare function __ccCode(value: unknown): string
|
|
18
|
+
declare function __ccCartCurrency(lines: unknown): string
|
|
11
19
|
|
|
12
20
|
async function cart_get_total() {
|
|
13
21
|
try {
|
|
@@ -55,6 +63,39 @@ async function cart_get_total() {
|
|
|
55
63
|
// provider priced the page from, mirrored for exactly this moment. Present
|
|
56
64
|
// only on a store with regional pricing.
|
|
57
65
|
let regionalSnapshot: Record<string, any> | null = null
|
|
66
|
+
// The discount engine's rule feed (`{ enabled, automaticDiscounts, rows,
|
|
67
|
+
// customer }`), the shopper context the checkout page-load workflow wrote
|
|
68
|
+
// (`{ isFirstOrder, resolvedAt }`) and the gift-card feature
|
|
69
|
+
// (`{ enabled, currency }`), all mirrored by the provider for exactly this
|
|
70
|
+
// moment. Each is absent on a store without the feature, and on a
|
|
71
|
+
// storefront exported before it existed — which correctly resolves to the
|
|
72
|
+
// flat voucher rule and no tender. Whether a stored voucher is honoured
|
|
73
|
+
// at all travels the same way; absent means no objection.
|
|
74
|
+
let discountsSnapshot: Record<string, any> | null = null
|
|
75
|
+
let customerSnapshot: Record<string, any> | null = null
|
|
76
|
+
let giftCardsSnapshot: Record<string, any> | null = null
|
|
77
|
+
// Whether recurring products can be sold and by which providers — mirrored
|
|
78
|
+
// at export, so the place-order script reads the CURRENT capability rather
|
|
79
|
+
// than the list baked into it when the checkout page was built.
|
|
80
|
+
let subscriptionsSnapshot: Record<string, any> | null = null
|
|
81
|
+
// Which cart kinds each provider may be paid for (see the storefront context).
|
|
82
|
+
let paymentKindsSnapshot: Record<string, unknown> | null = null
|
|
83
|
+
let vouchersEnabled = true
|
|
84
|
+
// The gift card the shopper applied — `{ id, last4, balance, currency }`
|
|
85
|
+
// as the Apply Gift Card workflow left it. The place-order workflow uses
|
|
86
|
+
// ONLY its `id`, to re-read and debit the row; the balance here decides
|
|
87
|
+
// what the summary showed, never what is charged.
|
|
88
|
+
let storedGiftCard: Record<string, any> | null = null
|
|
89
|
+
// The set of discounts the shopper chose when several could apply but not
|
|
90
|
+
// together — the checkout's chooser writes it; unknown reads as "the set
|
|
91
|
+
// that saves the most". Literal key: a serialized handler cannot import
|
|
92
|
+
// `DiscountEngine.DISCOUNT_CHOICE_STORAGE_KEY`.
|
|
93
|
+
let discountChoice = ''
|
|
94
|
+
try {
|
|
95
|
+
discountChoice = localStorage.getItem('workflow_discount_choice') || ''
|
|
96
|
+
} catch (_choiceErr) {
|
|
97
|
+
discountChoice = ''
|
|
98
|
+
}
|
|
58
99
|
try {
|
|
59
100
|
const voucherRaw = localStorage.getItem('workflow_voucher')
|
|
60
101
|
if (voucherRaw) {
|
|
@@ -97,10 +138,41 @@ async function cart_get_total() {
|
|
|
97
138
|
const parsedRate = Number(parsed.taxConfig.storefrontTaxRate)
|
|
98
139
|
storefrontTaxRate = isFinite(parsedRate) && parsedRate > 0 ? parsedRate : 0
|
|
99
140
|
}
|
|
141
|
+
if (parsed && typeof parsed === 'object') {
|
|
142
|
+
if (parsed.discounts && typeof parsed.discounts === 'object') {
|
|
143
|
+
discountsSnapshot = parsed.discounts
|
|
144
|
+
}
|
|
145
|
+
if (parsed.customer && typeof parsed.customer === 'object') {
|
|
146
|
+
customerSnapshot = parsed.customer
|
|
147
|
+
}
|
|
148
|
+
if (parsed.giftCards && typeof parsed.giftCards === 'object') {
|
|
149
|
+
giftCardsSnapshot = parsed.giftCards
|
|
150
|
+
}
|
|
151
|
+
if (typeof parsed.vouchersEnabled === 'boolean') {
|
|
152
|
+
vouchersEnabled = parsed.vouchersEnabled
|
|
153
|
+
}
|
|
154
|
+
if (parsed.subscriptions && typeof parsed.subscriptions === 'object') {
|
|
155
|
+
subscriptionsSnapshot = parsed.subscriptions
|
|
156
|
+
}
|
|
157
|
+
if (parsed.paymentKinds && typeof parsed.paymentKinds === 'object') {
|
|
158
|
+
paymentKindsSnapshot = parsed.paymentKinds
|
|
159
|
+
}
|
|
160
|
+
}
|
|
100
161
|
}
|
|
101
162
|
} catch (_settingsErr) {
|
|
102
163
|
/* ignore — fall back to absent deliveryConfig / no tax */
|
|
103
164
|
}
|
|
165
|
+
try {
|
|
166
|
+
const giftCardRaw = localStorage.getItem('workflow_gift_card')
|
|
167
|
+
if (giftCardRaw) {
|
|
168
|
+
const parsedGiftCard = JSON.parse(giftCardRaw)
|
|
169
|
+
if (parsedGiftCard && typeof parsedGiftCard === 'object' && parsedGiftCard.id) {
|
|
170
|
+
storedGiftCard = parsedGiftCard
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
} catch (_giftCardErr) {
|
|
174
|
+
/* ignore — malformed or unavailable storage reads as no gift card */
|
|
175
|
+
}
|
|
104
176
|
|
|
105
177
|
const round = (n: number) => Math.round(n * 100) / 100
|
|
106
178
|
// Per-UNIT rounding, matching EcommerceProvider exactly, so the amount the
|
|
@@ -133,11 +205,35 @@ async function cart_get_total() {
|
|
|
133
205
|
|
|
134
206
|
let roundedGross = round(gross)
|
|
135
207
|
let tax = round(gross - net)
|
|
208
|
+
// The currency every line is priced in — one per cart (the add-to-cart
|
|
209
|
+
// node refuses a second) — or '' for a cart whose lines name none. The
|
|
210
|
+
// place-order workflow records and charges the order in it.
|
|
211
|
+
const cartCurrency = __ccCartCurrency(cart)
|
|
212
|
+
|
|
213
|
+
// The subscription in the basket (at most one — the add-to-cart node
|
|
214
|
+
// refuses a second), whether its first charge is a free trial, and
|
|
215
|
+
// whether every line is delivered without a parcel (a download or a gift
|
|
216
|
+
// card). Read off the flags the add-to-cart node and the provider's
|
|
217
|
+
// hydration stamp, so a storefront exported before them reads as neither.
|
|
218
|
+
let hasRecurringLines = false
|
|
219
|
+
let hasRecurringTrial = false
|
|
220
|
+
let digitalLines = 0
|
|
221
|
+
for (const item of cart) {
|
|
222
|
+
if (item && __deBool(item.isRecurring, false)) {
|
|
223
|
+
hasRecurringLines = true
|
|
224
|
+
if (Math.floor(Number(item.trialDays)) > 0) hasRecurringTrial = true
|
|
225
|
+
}
|
|
226
|
+
if (item && (__deBool(item.isDigital, false) || __deBool(item.isGiftCard, false))) {
|
|
227
|
+
digitalLines += 1
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
const isDigitalOnly = cart.length > 0 && digitalLines === cart.length
|
|
136
231
|
|
|
137
232
|
// Re-priced HERE, at submit, for the address on the checkout form right
|
|
138
233
|
// now — with the same rule and the same rows the provider displayed from —
|
|
139
234
|
// rather than trusting a figure computed before the buyer's last edit.
|
|
140
235
|
let regional: Record<string, unknown> | null = null
|
|
236
|
+
let regionalQuote: any = null
|
|
141
237
|
if (regionalSnapshot) {
|
|
142
238
|
const store =
|
|
143
239
|
regionalSnapshot.store && typeof regionalSnapshot.store === 'object'
|
|
@@ -163,6 +259,7 @@ async function cart_get_total() {
|
|
|
163
259
|
selectedRateId,
|
|
164
260
|
currency: regionalSnapshot.currency,
|
|
165
261
|
})
|
|
262
|
+
regionalQuote = quote
|
|
166
263
|
tax = quote.goodsTax
|
|
167
264
|
roundedGross = quote.goodsGross
|
|
168
265
|
regional = {
|
|
@@ -170,13 +267,17 @@ async function cart_get_total() {
|
|
|
170
267
|
destination: quote.destination,
|
|
171
268
|
zoneName: quote.zone ? quote.zone.name : '',
|
|
172
269
|
rateName: quote.rateName,
|
|
270
|
+
// The rate the buyer picked, so the server step prices the same one.
|
|
271
|
+
selectedRateId: quote.selectedRateId || '',
|
|
173
272
|
codAvailable: quote.codAvailable,
|
|
174
273
|
goodsNet: quote.goodsNet,
|
|
175
274
|
goodsTax: quote.goodsTax,
|
|
176
275
|
goodsGross: quote.goodsGross,
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
276
|
+
// A digital-only cart ships nothing, so the zone's fee is not charged
|
|
277
|
+
// — the provider priced the page the same way.
|
|
278
|
+
shippingNet: isDigitalOnly ? 0 : quote.shippingNet,
|
|
279
|
+
shippingTax: isDigitalOnly ? 0 : quote.shippingTax,
|
|
280
|
+
shippingGross: isDigitalOnly ? 0 : quote.shippingGross,
|
|
180
281
|
taxRate: quote.taxRate,
|
|
181
282
|
taxIncluded: quote.taxIncluded,
|
|
182
283
|
taxDecimals: quote.taxDecimals,
|
|
@@ -208,18 +309,185 @@ async function cart_get_total() {
|
|
|
208
309
|
// rounding, same source of truth.
|
|
209
310
|
total: roundedGross,
|
|
210
311
|
itemCount,
|
|
312
|
+
currency: cartCurrency,
|
|
211
313
|
// NET sum of the per-product markdowns already reflected in the prices
|
|
212
314
|
// above. Recorded on the order for reporting; never subtracted again.
|
|
213
315
|
productDiscountTotal: round(productDiscount),
|
|
214
316
|
deliveryConfig,
|
|
215
317
|
taxConfig: { storefrontTaxRate },
|
|
216
318
|
voucher,
|
|
319
|
+
// What the place-order workflow branches on: a subscription opens the
|
|
320
|
+
// provider's checkout in subscription mode, a digital-only order is
|
|
321
|
+
// charged no delivery and completes on payment.
|
|
322
|
+
hasRecurringLines,
|
|
323
|
+
isDigitalOnly,
|
|
217
324
|
}
|
|
218
325
|
// Absent on a store without regional pricing, which is what tells the
|
|
219
326
|
// place-order workflow to price shipping from `deliveryConfig` as before.
|
|
220
327
|
if (regional) {
|
|
221
328
|
result.regional = regional
|
|
222
329
|
}
|
|
330
|
+
if (subscriptionsSnapshot) {
|
|
331
|
+
result.subscriptions = subscriptionsSnapshot
|
|
332
|
+
}
|
|
333
|
+
if (paymentKindsSnapshot) {
|
|
334
|
+
result.paymentKinds = paymentKindsSnapshot
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
// The discount engine and the gift-card tender, re-priced HERE, at submit,
|
|
338
|
+
// exactly as the provider priced the summary: the same shared rule over the
|
|
339
|
+
// same lines, rules and shopper context, so the amount the place-order
|
|
340
|
+
// workflow compares against (`displayedAmountDue`) is the amount the buyer
|
|
341
|
+
// was shown. Only for a store that mirrored either feature — a legacy
|
|
342
|
+
// storefront's result keeps every key it ever had and gains none.
|
|
343
|
+
const discountsEnabled = discountsSnapshot !== null && discountsSnapshot.enabled === true
|
|
344
|
+
const giftCardsEnabled = giftCardsSnapshot !== null && giftCardsSnapshot.enabled === true
|
|
345
|
+
if (discountsEnabled || giftCardsEnabled) {
|
|
346
|
+
// The lines the engine prices: on a regional store already GROSS in the
|
|
347
|
+
// destination's tax (rate 0), otherwise the stored NET lines with the
|
|
348
|
+
// storefront rate — the provider's `regionalVoucherItems` projection.
|
|
349
|
+
let engineItems: any[] = cart
|
|
350
|
+
let engineTaxRate = storefrontTaxRate
|
|
351
|
+
// The delivery fee that would be charged before any discount, priced the
|
|
352
|
+
// way the provider's `computeShippingMeta` / regional quote prices it.
|
|
353
|
+
let shippingPrice = 0
|
|
354
|
+
if (regionalQuote) {
|
|
355
|
+
engineTaxRate = 0
|
|
356
|
+
shippingPrice = round(Number(regionalQuote.shippingGross) || 0)
|
|
357
|
+
engineItems = cart.map((item: any, index: number) => {
|
|
358
|
+
const key =
|
|
359
|
+
item && item.id !== undefined && item.id !== null ? String(item.id) : String(index)
|
|
360
|
+
const quoteLines: any[] = Array.isArray(regionalQuote.lines) ? regionalQuote.lines : []
|
|
361
|
+
for (const line of quoteLines) {
|
|
362
|
+
if (line && line.key === key) {
|
|
363
|
+
return { ...item, price: line.unitGross }
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
return item
|
|
367
|
+
})
|
|
368
|
+
} else if (deliveryConfig && deliveryConfig.deliveryEnabled === true) {
|
|
369
|
+
const threshold = round(deliveryConfig.freeDeliveryThreshold)
|
|
370
|
+
// Same half-cent epsilon as the provider, for the same IEEE-754 drift.
|
|
371
|
+
const shippingIsFree =
|
|
372
|
+
deliveryConfig.freeDeliveryEnabled && roundedGross + 0.005 >= threshold
|
|
373
|
+
shippingPrice = shippingIsFree ? 0 : round(deliveryConfig.deliveryPrice)
|
|
374
|
+
}
|
|
375
|
+
// Nothing to ship on a digital-only cart: no fee, so nothing to waive —
|
|
376
|
+
// the provider priced the page the same way.
|
|
377
|
+
if (isDigitalOnly) {
|
|
378
|
+
shippingPrice = 0
|
|
379
|
+
}
|
|
380
|
+
const customer = customerSnapshot || (discountsSnapshot && discountsSnapshot.customer) || null
|
|
381
|
+
const rules: unknown[] = []
|
|
382
|
+
if (
|
|
383
|
+
discountsEnabled &&
|
|
384
|
+
discountsSnapshot.automaticDiscounts === true &&
|
|
385
|
+
Array.isArray(discountsSnapshot.rows)
|
|
386
|
+
) {
|
|
387
|
+
// Exactly the rows the provider priced: the data route served only the
|
|
388
|
+
// rules the DATABASE calls live, and the browser clock is not asked
|
|
389
|
+
// again — the same clock re-prices the order server-side, so a rule
|
|
390
|
+
// that has since ended is caught there and the feed re-read.
|
|
391
|
+
for (const row of discountsSnapshot.rows) {
|
|
392
|
+
if (!row || typeof row !== 'object' || row.status !== 'active') continue
|
|
393
|
+
const rule = __deNormalizeRule(row, 'automatic')
|
|
394
|
+
if (rule) rules.push(rule)
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
const evaluation = __deResolve({
|
|
398
|
+
rules,
|
|
399
|
+
voucher: vouchersEnabled && voucher ? __deNormalizeRule(voucher, 'voucher') : null,
|
|
400
|
+
lines: __deLinesFromCart(engineItems),
|
|
401
|
+
taxRatePercent: engineTaxRate,
|
|
402
|
+
shippingPrice,
|
|
403
|
+
customer: {
|
|
404
|
+
isFirstOrder:
|
|
405
|
+
customer && typeof customer.isFirstOrder === 'boolean' ? customer.isFirstOrder : null,
|
|
406
|
+
},
|
|
407
|
+
// A store without the rule feed prices its voucher the way its baked
|
|
408
|
+
// place-order workflow does: no conditions, no stacking.
|
|
409
|
+
legacy: !discountsEnabled,
|
|
410
|
+
choice: discountChoice,
|
|
411
|
+
})
|
|
412
|
+
const effectiveShipping = Math.max(0, round(shippingPrice - evaluation.shippingDiscount))
|
|
413
|
+
const deliveryTotal = Math.max(
|
|
414
|
+
0,
|
|
415
|
+
round(roundedGross + effectiveShipping - evaluation.goodsDiscount)
|
|
416
|
+
)
|
|
417
|
+
if (discountsEnabled) {
|
|
418
|
+
const appliedIds: string[] = []
|
|
419
|
+
for (const entry of evaluation.applied) {
|
|
420
|
+
appliedIds.push(String(entry.id))
|
|
421
|
+
}
|
|
422
|
+
result.discounts = {
|
|
423
|
+
enabled: true,
|
|
424
|
+
automaticDiscounts: discountsSnapshot.automaticDiscounts === true,
|
|
425
|
+
rows: Array.isArray(discountsSnapshot.rows) ? discountsSnapshot.rows : null,
|
|
426
|
+
customer,
|
|
427
|
+
applied: evaluation.applied,
|
|
428
|
+
goodsDiscount: evaluation.goodsDiscount,
|
|
429
|
+
shippingDiscount: evaluation.shippingDiscount,
|
|
430
|
+
// Order-column shaped: everything each source took, goods and waived
|
|
431
|
+
// shipping alike, the way `automatic_discount_amount` records it.
|
|
432
|
+
automaticDiscount: round(
|
|
433
|
+
evaluation.automaticGoodsDiscount + evaluation.automaticShippingDiscount
|
|
434
|
+
),
|
|
435
|
+
voucherDiscount: round(
|
|
436
|
+
evaluation.voucherGoodsDiscount + evaluation.voucherShippingDiscount
|
|
437
|
+
),
|
|
438
|
+
appliedIds,
|
|
439
|
+
// The sets the shopper could choose between and the one applied, so
|
|
440
|
+
// the place-order workflow prices the order with the same pick.
|
|
441
|
+
options: evaluation.options,
|
|
442
|
+
choice: evaluation.choice,
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
let displayedAmountDue = deliveryTotal
|
|
446
|
+
if (giftCardsEnabled) {
|
|
447
|
+
let giftCard: Record<string, unknown> | null = null
|
|
448
|
+
// A card pays only in its own currency, so only a cart priced in it:
|
|
449
|
+
// the cart's currency, or the store's for a cart whose lines name
|
|
450
|
+
// none — the same gate the provider's tender applies.
|
|
451
|
+
const tenderCurrency = cartCurrency || __ccCode(giftCardsSnapshot.currency)
|
|
452
|
+
const cardCurrency = storedGiftCard ? __ccCode(storedGiftCard.currency) : ''
|
|
453
|
+
if (storedGiftCard && tenderCurrency !== '' && cardCurrency === tenderCurrency) {
|
|
454
|
+
let hasGiftCardLines = false
|
|
455
|
+
for (const item of cart) {
|
|
456
|
+
if (item && __deBool(item.isGiftCard, false)) hasGiftCardLines = true
|
|
457
|
+
}
|
|
458
|
+
const balance = Number(storedGiftCard.balance)
|
|
459
|
+
const tender = __deTender({
|
|
460
|
+
balance: isFinite(balance) ? balance : 0,
|
|
461
|
+
// On the DELIVERY total: the larger of the two shapes, so a pickup
|
|
462
|
+
// order's amount due can only come out lower than what was shown.
|
|
463
|
+
total: deliveryTotal,
|
|
464
|
+
currency: tenderCurrency,
|
|
465
|
+
hasGiftCardLines,
|
|
466
|
+
// A subscription is billed by the provider every cycle: the card
|
|
467
|
+
// pays part of the first charge only, none of a free trial, and
|
|
468
|
+
// nothing at all on a checkout that cannot reduce the first
|
|
469
|
+
// charge (the provider mirrors whether this one can).
|
|
470
|
+
hasRecurringLines,
|
|
471
|
+
recurringTenderAllowed: giftCardsSnapshot.recurringTender === true,
|
|
472
|
+
hasRecurringTrial,
|
|
473
|
+
})
|
|
474
|
+
// A card that pays nothing (no balance, a gift card in the basket) is
|
|
475
|
+
// not in play — the provider hides it the same way.
|
|
476
|
+
if (tender.applied > 0) {
|
|
477
|
+
giftCard = {
|
|
478
|
+
id: String(storedGiftCard.id),
|
|
479
|
+
last4: String(storedGiftCard.last4 || ''),
|
|
480
|
+
balance: isFinite(balance) ? balance : 0,
|
|
481
|
+
amount: tender.applied,
|
|
482
|
+
amountDue: tender.amountDue,
|
|
483
|
+
}
|
|
484
|
+
displayedAmountDue = tender.amountDue
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
result.giftCard = giftCard
|
|
488
|
+
}
|
|
489
|
+
result.displayedAmountDue = displayedAmountDue
|
|
490
|
+
}
|
|
223
491
|
return result
|
|
224
492
|
} catch (_err) {
|
|
225
493
|
return {
|
|
@@ -246,6 +514,10 @@ export const cartGetTotal: NodeHandlerGenerator = {
|
|
|
246
514
|
return (
|
|
247
515
|
source.slice(0, bodyStart) +
|
|
248
516
|
RegionalPricing.generateRegionalPricingHelperCode() +
|
|
517
|
+
'\n' +
|
|
518
|
+
DiscountEngine.generateDiscountEngineHelperCode() +
|
|
519
|
+
'\n' +
|
|
520
|
+
CartCurrency.generateCartCurrencyHelperCode() +
|
|
249
521
|
source.slice(bodyStart)
|
|
250
522
|
)
|
|
251
523
|
},
|