@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,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
/** The raw request body, and the object it stands for (JSON or form-encoded). */
|
|
2
|
+
export const generateWebhookBodyCode = (): string => {
|
|
2
3
|
return `
|
|
3
4
|
function getRawBody(req) {
|
|
4
5
|
return new Promise(function(resolve, reject) {
|
|
@@ -11,6 +12,29 @@ function getRawBody(req) {
|
|
|
11
12
|
req.on('end', function() { resolve(Buffer.concat(chunks)); });
|
|
12
13
|
req.on('error', function(err) { reject(err); });
|
|
13
14
|
});
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// Some providers (Mollie, CoinGate) post \`application/x-www-form-urlencoded\`.
|
|
18
|
+
function parseWebhookBody(req, rawBody) {
|
|
19
|
+
var text = rawBody.toString('utf-8');
|
|
20
|
+
var contentType = String(req.headers['content-type'] || '').toLowerCase();
|
|
21
|
+
if (contentType.indexOf('application/x-www-form-urlencoded') === -1) {
|
|
22
|
+
try { return JSON.parse(text); } catch (_e) { return {}; }
|
|
23
|
+
}
|
|
24
|
+
var result = {};
|
|
25
|
+
var pairs = text ? text.split('&') : [];
|
|
26
|
+
for (var i = 0; i < pairs.length; i++) {
|
|
27
|
+
if (!pairs[i]) continue;
|
|
28
|
+
var eq = pairs[i].indexOf('=');
|
|
29
|
+
var key = eq >= 0 ? pairs[i].slice(0, eq) : pairs[i];
|
|
30
|
+
var value = eq >= 0 ? pairs[i].slice(eq + 1) : '';
|
|
31
|
+
try {
|
|
32
|
+
result[decodeURIComponent(key.replace(/\\+/g, ' '))] = decodeURIComponent(value.replace(/\\+/g, ' '));
|
|
33
|
+
} catch (_e) {
|
|
34
|
+
result[key] = value;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return result;
|
|
14
38
|
}`
|
|
15
39
|
}
|
|
16
40
|
|
|
@@ -60,16 +84,47 @@ function verifyStripeSignature(rawBody, sigHeader, secret) {
|
|
|
60
84
|
}`
|
|
61
85
|
}
|
|
62
86
|
|
|
87
|
+
// The credentials are read through the same fallback chain the payment nodes
|
|
88
|
+
// use: the canonical name the deploy writes, then the CONFIGURATION_* name the
|
|
89
|
+
// provider panel stores locally (a standalone run has only that one). The
|
|
90
|
+
// environment to verify against is the one that signed the event — PayPal
|
|
91
|
+
// names it in the cert URL. Both environments issue client ids starting with
|
|
92
|
+
// "A", so the id says nothing; the earlier "sb-" prefix check sent every
|
|
93
|
+
// sandbox verification to the live API, which rejected it.
|
|
63
94
|
export const generatePaypalSignatureVerificationCode = (): string => {
|
|
64
95
|
return `
|
|
96
|
+
function resolvePaypalEnv(candidates, prefix) {
|
|
97
|
+
var env = process.env;
|
|
98
|
+
for (var i = 0; i < candidates.length; i++) {
|
|
99
|
+
var value = candidates[i] ? env[candidates[i]] : '';
|
|
100
|
+
if (value && String(value).length > 0) return String(value);
|
|
101
|
+
}
|
|
102
|
+
var keys = Object.keys(env);
|
|
103
|
+
for (var k = 0; k < keys.length; k++) {
|
|
104
|
+
if (keys[k].indexOf(prefix) === 0 && env[keys[k]] && String(env[keys[k]]).length > 0) {
|
|
105
|
+
return String(env[keys[k]]);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return '';
|
|
109
|
+
}
|
|
110
|
+
|
|
65
111
|
async function verifyPaypalSignature(req, rawBody, webhookConfig) {
|
|
66
112
|
try {
|
|
67
|
-
var clientId =
|
|
68
|
-
var clientSecret =
|
|
69
|
-
|
|
113
|
+
var clientId = resolvePaypalEnv(['PAYPAL_CLIENT_ID', 'CONFIGURATION_PAYPAL_CLIENT_ID'], 'CONFIGURATION_PAYPAL_CLIENT_ID');
|
|
114
|
+
var clientSecret = resolvePaypalEnv(['PAYPAL_CLIENT_SECRET', 'CONFIGURATION_PAYPAL_CLIENT_SECRET'], 'CONFIGURATION_PAYPAL_CLIENT_SECRET');
|
|
115
|
+
var webhookId = resolvePaypalEnv([webhookConfig.signatureSecret || '', 'PAYPAL_WEBHOOK_ID', 'CONFIGURATION_PAYPAL_WEBHOOK_ID'], 'CONFIGURATION_PAYPAL_WEBHOOK_ID');
|
|
116
|
+
if (!clientId || !clientSecret) {
|
|
117
|
+
console.error('PayPal webhook rejected: PAYPAL_CLIENT_ID / PAYPAL_CLIENT_SECRET are not configured');
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
if (!webhookId) {
|
|
121
|
+
console.error('PayPal webhook rejected: the webhook id (PAYPAL_WEBHOOK_ID) is not configured');
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
70
124
|
|
|
71
|
-
var
|
|
72
|
-
var
|
|
125
|
+
var certUrl = String(req.headers['paypal-cert-url'] || '');
|
|
126
|
+
var isSandbox = certUrl.indexOf('sandbox.paypal.com') !== -1;
|
|
127
|
+
var baseUrl = isSandbox ? 'https://api-m.sandbox.paypal.com' : 'https://api-m.paypal.com';
|
|
73
128
|
|
|
74
129
|
var authResponse = await fetch(baseUrl + '/v1/oauth2/token', {
|
|
75
130
|
method: 'POST',
|
|
@@ -80,29 +135,39 @@ async function verifyPaypalSignature(req, rawBody, webhookConfig) {
|
|
|
80
135
|
body: 'grant_type=client_credentials',
|
|
81
136
|
});
|
|
82
137
|
var authData = await authResponse.json();
|
|
83
|
-
if (!authData.access_token)
|
|
84
|
-
|
|
85
|
-
|
|
138
|
+
if (!authData.access_token) {
|
|
139
|
+
console.error('PayPal webhook rejected: authentication against ' + baseUrl + ' failed — ' + (authData.error_description || authData.error || 'no token'));
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
86
142
|
|
|
143
|
+
// PayPal checks the signature over the event EXACTLY as it was sent, so
|
|
144
|
+
// the raw text is spliced in by position before the closing brace: parsed
|
|
145
|
+
// and serialised again, a number or a character escape can come back
|
|
146
|
+
// spelled differently and the signature no longer matches.
|
|
147
|
+
var fields = JSON.stringify({
|
|
148
|
+
auth_algo: req.headers['paypal-auth-algo'] || '',
|
|
149
|
+
cert_url: req.headers['paypal-cert-url'] || '',
|
|
150
|
+
transmission_id: req.headers['paypal-transmission-id'] || '',
|
|
151
|
+
transmission_sig: req.headers['paypal-transmission-sig'] || '',
|
|
152
|
+
transmission_time: req.headers['paypal-transmission-time'] || '',
|
|
153
|
+
webhook_id: webhookId,
|
|
154
|
+
});
|
|
87
155
|
var verifyResponse = await fetch(baseUrl + '/v1/notifications/verify-webhook-signature', {
|
|
88
156
|
method: 'POST',
|
|
89
157
|
headers: {
|
|
90
158
|
'Authorization': 'Bearer ' + authData.access_token,
|
|
91
159
|
'Content-Type': 'application/json',
|
|
92
160
|
},
|
|
93
|
-
body:
|
|
94
|
-
auth_algo: req.headers['paypal-auth-algo'] || '',
|
|
95
|
-
cert_url: req.headers['paypal-cert-url'] || '',
|
|
96
|
-
transmission_id: req.headers['paypal-transmission-id'] || '',
|
|
97
|
-
transmission_sig: req.headers['paypal-transmission-sig'] || '',
|
|
98
|
-
transmission_time: req.headers['paypal-transmission-time'] || '',
|
|
99
|
-
webhook_id: webhookId,
|
|
100
|
-
webhook_event: JSON.parse(rawBody.toString('utf-8')),
|
|
101
|
-
}),
|
|
161
|
+
body: fields.slice(0, -1) + ',"webhook_event":' + rawBody.toString('utf-8') + '}',
|
|
102
162
|
});
|
|
103
163
|
var verifyData = await verifyResponse.json();
|
|
104
|
-
|
|
105
|
-
|
|
164
|
+
var ok = verifyData.verification_status === 'SUCCESS';
|
|
165
|
+
if (!ok) {
|
|
166
|
+
console.error('PayPal webhook rejected by ' + baseUrl + ': verification_status=' + (verifyData.verification_status || '(missing)') + ', name=' + (verifyData.name || '(none)') + ', message=' + (verifyData.message || '(none)'));
|
|
167
|
+
}
|
|
168
|
+
return ok;
|
|
169
|
+
} catch (e) {
|
|
170
|
+
console.error('PayPal webhook verification failed:', e && e.message);
|
|
106
171
|
return false;
|
|
107
172
|
}
|
|
108
173
|
}`
|
|
@@ -139,23 +204,37 @@ function verifyHmac${
|
|
|
139
204
|
}`
|
|
140
205
|
}
|
|
141
206
|
|
|
207
|
+
// Fails CLOSED: a scheme it does not know, or a shared-secret scheme whose
|
|
208
|
+
// secret is not configured, is a refusal — an HMAC keyed with an empty string
|
|
209
|
+
// is one anybody can compute. `custom` is the author verifying the request in
|
|
210
|
+
// the workflow itself (headers and body are on the trigger context); payment
|
|
211
|
+
// webhooks never use it (see `generatePaymentWebhookVerificationCode`).
|
|
142
212
|
export const generateSignatureDispatcherCode = (): string => {
|
|
143
213
|
return `
|
|
144
214
|
async function verifyWebhookSignature(req, rawBody, webhookConfig) {
|
|
145
215
|
var algorithm = webhookConfig.signatureAlgorithm || 'hmac-sha256';
|
|
146
216
|
var sigHeader = webhookConfig.signatureHeader || '';
|
|
147
217
|
var sigSecret = webhookConfig.signatureSecret || '';
|
|
148
|
-
var secret = process.env[sigSecret] || '';
|
|
218
|
+
var secret = sigSecret ? process.env[sigSecret] || '' : '';
|
|
149
219
|
|
|
150
|
-
if (algorithm === '
|
|
151
|
-
|
|
152
|
-
return verifyStripeSignature(rawBody, sig, secret);
|
|
220
|
+
if (algorithm === 'custom') {
|
|
221
|
+
return true;
|
|
153
222
|
}
|
|
154
223
|
|
|
155
224
|
if (algorithm === 'paypal-v1') {
|
|
156
225
|
return await verifyPaypalSignature(req, rawBody, webhookConfig);
|
|
157
226
|
}
|
|
158
227
|
|
|
228
|
+
if (!secret) {
|
|
229
|
+
console.error('Webhook rejected: the signing secret (' + (sigSecret || 'none named') + ') is not configured.');
|
|
230
|
+
return false;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
if (algorithm === 'stripe-v1') {
|
|
234
|
+
var sig = req.headers[sigHeader || 'stripe-signature'] || '';
|
|
235
|
+
return verifyStripeSignature(rawBody, sig, secret);
|
|
236
|
+
}
|
|
237
|
+
|
|
159
238
|
if (algorithm === 'hmac-sha256') {
|
|
160
239
|
var hmacSig = req.headers[(sigHeader || '').toLowerCase()] || '';
|
|
161
240
|
return verifyHmacSignature(rawBody, hmacSig, secret);
|
|
@@ -166,7 +245,83 @@ async function verifyWebhookSignature(req, rawBody, webhookConfig) {
|
|
|
166
245
|
return verifyHmacSha1Signature(rawBody, hmacSha1Sig, secret);
|
|
167
246
|
}
|
|
168
247
|
|
|
169
|
-
|
|
248
|
+
console.error('Webhook rejected: unknown signature algorithm "' + algorithm + '".');
|
|
249
|
+
return false;
|
|
250
|
+
}`
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* A PAYMENT webhook is verified by the store's driver for its provider (see
|
|
255
|
+
* `src/payments`): a signature, or the event read back from the provider
|
|
256
|
+
* with the store's own key. The answer carries the AUTHORITATIVE body — the
|
|
257
|
+
* copy the provider gave back, where there is one — and whether the provider
|
|
258
|
+
* should try again (an outage) rather than drop the delivery.
|
|
259
|
+
*
|
|
260
|
+
* The store's own server may also ask the route to SETTLE a payment it just
|
|
261
|
+
* confirmed with the provider (a PayPal buyer's return): a body naming
|
|
262
|
+
* `teleportReconcile`, accepted only with the runtime's internal-call token.
|
|
263
|
+
* The driver reads the payment from the provider and answers the event the
|
|
264
|
+
* provider sends for it; nothing but the provider's id is taken from the
|
|
265
|
+
* request, and any other caller is refused outright.
|
|
266
|
+
*/
|
|
267
|
+
export const generatePaymentWebhookVerificationCode = (): string => {
|
|
268
|
+
return `
|
|
269
|
+
async function settlePaymentFromProvider(req, body, provider, driver) {
|
|
270
|
+
var internal = typeof utils !== 'undefined' && utils && typeof utils.isInternalCall === 'function' && utils.isInternalCall(req);
|
|
271
|
+
if (!internal || typeof driver.reconcile !== 'function') {
|
|
272
|
+
console.error('Payment webhook rejected (' + provider + '): a settlement request that did not come from this store.');
|
|
273
|
+
return { ok: false, retry: false };
|
|
274
|
+
}
|
|
275
|
+
try {
|
|
276
|
+
var settled = await driver.reconcile(body.teleportReconcile);
|
|
277
|
+
if (!settled || !settled.ok) {
|
|
278
|
+
console.error('Payment settlement skipped (' + provider + '): ' + ((settled && settled.reason) || 'not settled'));
|
|
279
|
+
return { ok: false, retry: !!(settled && settled.retry) };
|
|
280
|
+
}
|
|
281
|
+
return { ok: true, body: settled.body };
|
|
282
|
+
} catch (e) {
|
|
283
|
+
console.error('Payment settlement failed (' + provider + '):', e && e.message);
|
|
284
|
+
return { ok: false, retry: true };
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
async function verifyPaymentWebhook(req, rawBody, body, webhookConfig) {
|
|
289
|
+
var provider = webhookConfig.paymentProvider;
|
|
290
|
+
var driver = typeof __paymentDrivers !== 'undefined' && __paymentDrivers ? __paymentDrivers.get(provider) : null;
|
|
291
|
+
if (!driver || typeof driver.verifyWebhook !== 'function') {
|
|
292
|
+
console.error('Payment webhook rejected: this store has no ' + provider + ' payment driver.');
|
|
293
|
+
return { ok: false, retry: false };
|
|
294
|
+
}
|
|
295
|
+
if (body && typeof body === 'object' && body.teleportReconcile) {
|
|
296
|
+
return settlePaymentFromProvider(req, body, provider, driver);
|
|
297
|
+
}
|
|
298
|
+
var host = String(req.headers['x-forwarded-host'] || req.headers.host || '').split(',')[0].trim();
|
|
299
|
+
var proto = String(req.headers['x-forwarded-proto'] || '').split(',')[0].trim() ||
|
|
300
|
+
(host.indexOf('localhost') === 0 || host.indexOf('127.0.0.1') === 0 ? 'http' : 'https');
|
|
301
|
+
var sigSecret = webhookConfig.signatureSecret || '';
|
|
302
|
+
var sigSecretValue = sigSecret ? String(process.env[sigSecret] || '') : '';
|
|
303
|
+
try {
|
|
304
|
+
var result = await driver.verifyWebhook({
|
|
305
|
+
headers: req.headers || {},
|
|
306
|
+
rawBody: rawBody,
|
|
307
|
+
body: body,
|
|
308
|
+
query: req.query || {},
|
|
309
|
+
// The whole URL the provider posted to, query string included: Square
|
|
310
|
+
// signs the notification URL exactly as it was registered.
|
|
311
|
+
url: host ? proto + '://' + host + String(req.url || '') : '',
|
|
312
|
+
// A placeholder the deploy never resolved (a local run) is no secret:
|
|
313
|
+
// the driver then reads the saved credential itself.
|
|
314
|
+
secret: sigSecretValue.indexOf('teleporthq.secrets.') === 0 ? '' : sigSecretValue,
|
|
315
|
+
});
|
|
316
|
+
if (!result || !result.ok) {
|
|
317
|
+
console.error('Payment webhook rejected (' + provider + '): ' + ((result && result.reason) || 'not verified'));
|
|
318
|
+
return { ok: false, retry: !!(result && result.retry) };
|
|
319
|
+
}
|
|
320
|
+
return { ok: true, body: result.body || body };
|
|
321
|
+
} catch (e) {
|
|
322
|
+
console.error('Payment webhook verification failed (' + provider + '):', e && e.message);
|
|
323
|
+
return { ok: false, retry: true };
|
|
324
|
+
}
|
|
170
325
|
}`
|
|
171
326
|
}
|
|
172
327
|
|
|
@@ -1,6 +1,27 @@
|
|
|
1
1
|
import { UIDLWorkflowProtection } from '@teleporthq/teleport-types'
|
|
2
2
|
import { generateCommonJsSessionTokenResolverCode } from './session-cookie-resolver'
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* `roleOf(token)` — the role a decoded session token carries (`role`,
|
|
6
|
+
* `roleName`, or the first of `roles`), or null. Shared by every generated
|
|
7
|
+
* guard that authorises by role, so they can never read the claim differently.
|
|
8
|
+
*/
|
|
9
|
+
export const ROLE_OF_TOKEN_CODE = `function roleOf(token) {
|
|
10
|
+
if (!token || typeof token !== 'object') {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
if (typeof token.role === 'string') {
|
|
14
|
+
return token.role;
|
|
15
|
+
}
|
|
16
|
+
if (typeof token.roleName === 'string') {
|
|
17
|
+
return token.roleName;
|
|
18
|
+
}
|
|
19
|
+
if (Array.isArray(token.roles) && token.roles.length > 0 && typeof token.roles[0] === 'string') {
|
|
20
|
+
return token.roles[0];
|
|
21
|
+
}
|
|
22
|
+
return null;
|
|
23
|
+
}`
|
|
24
|
+
|
|
4
25
|
/**
|
|
5
26
|
* The shared, stateless auth guard for generated workflow API routes, emitted
|
|
6
27
|
* once at `utils/workflows/workflow-auth.js`.
|
|
@@ -19,7 +40,9 @@ import { generateCommonJsSessionTokenResolverCode } from './session-cookie-resol
|
|
|
19
40
|
* serverless instance that had not yet served an auth request was reported
|
|
20
41
|
* anonymous, and the page-load workflow answered 401.
|
|
21
42
|
*/
|
|
22
|
-
export const generateWorkflowAuthHelperFile = (
|
|
43
|
+
export const generateWorkflowAuthHelperFile = (
|
|
44
|
+
options: { withSubscriberAccess?: boolean } = {}
|
|
45
|
+
): string => {
|
|
23
46
|
return `'use strict';
|
|
24
47
|
|
|
25
48
|
// GENERATED — see generateWorkflowAuthHelperFile in
|
|
@@ -42,20 +65,22 @@ function sessionUserId(token) {
|
|
|
42
65
|
return token.id != null ? token.id : (token.sub != null ? token.sub : null);
|
|
43
66
|
}
|
|
44
67
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
68
|
+
${ROLE_OF_TOKEN_CODE}
|
|
69
|
+
|
|
70
|
+
${generateSubscriberAccessLoader(options.withSubscriberAccess === true)}
|
|
71
|
+
|
|
72
|
+
// true only when the session user holds an entitled subscription to one of the
|
|
73
|
+
// products (any product for an empty list). Every failure fails closed.
|
|
74
|
+
async function isEntitledSubscriber(token, productIds) {
|
|
75
|
+
var userId = sessionUserId(token);
|
|
76
|
+
if (userId == null || String(userId) === '') {
|
|
77
|
+
return false;
|
|
54
78
|
}
|
|
55
|
-
|
|
56
|
-
return
|
|
79
|
+
try {
|
|
80
|
+
return (await subscriberAccessModule().isSubscriberEntitled(String(userId), productIds || [])) === true;
|
|
81
|
+
} catch (e) {
|
|
82
|
+
return false;
|
|
57
83
|
}
|
|
58
|
-
return null;
|
|
59
84
|
}
|
|
60
85
|
|
|
61
86
|
// Overwrites context[nodeId] drilled down \`path\` with the session user id.
|
|
@@ -76,16 +101,35 @@ function bindPath(root, path, value) {
|
|
|
76
101
|
|
|
77
102
|
// Returns null when the request may proceed, or { status, message } to reject.
|
|
78
103
|
// Mutates \`context\` in place to bind user-owned columns to the session user.
|
|
104
|
+
function sameSecret(given, expected) {
|
|
105
|
+
if (typeof given !== 'string' || typeof expected !== 'string' || given.length !== expected.length) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
return require('crypto').timingSafeEqual(Buffer.from(given), Buffer.from(expected));
|
|
109
|
+
}
|
|
110
|
+
|
|
79
111
|
async function guardWorkflowRequest(req, context, policy) {
|
|
80
112
|
if (!policy) {
|
|
81
113
|
return null;
|
|
82
114
|
}
|
|
83
115
|
|
|
116
|
+
// This deployment's own server code (a webhook or cron route running a
|
|
117
|
+
// custom node) carries the internal-call token and passes every gate. A route
|
|
118
|
+
// only such code may call (serverOnly) answers nothing to anyone else — not a
|
|
119
|
+
// browser, not a signed-in admin.
|
|
120
|
+
var internalCall = require('./server-runtime').isInternalCall(req);
|
|
121
|
+
if (policy.serverOnly) {
|
|
122
|
+
return internalCall ? null : { status: 401, message: 'Unauthenticated' };
|
|
123
|
+
}
|
|
124
|
+
if (internalCall) {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
|
|
84
128
|
// Trusted internal server-to-server calls (e.g. password reset, server jobs)
|
|
85
129
|
// present the app secret in a header; only server code can read
|
|
86
130
|
// NEXTAUTH_SECRET, so a browser cannot forge it. These bypass the check.
|
|
87
131
|
var internal = req && req.headers && req.headers['x-internal-data-secret'];
|
|
88
|
-
if (internal && process.env.NEXTAUTH_SECRET && internal
|
|
132
|
+
if (internal && process.env.NEXTAUTH_SECRET && sameSecret(internal, process.env.NEXTAUTH_SECRET)) {
|
|
89
133
|
return null;
|
|
90
134
|
}
|
|
91
135
|
|
|
@@ -103,23 +147,53 @@ async function guardWorkflowRequest(req, context, policy) {
|
|
|
103
147
|
}
|
|
104
148
|
}
|
|
105
149
|
|
|
150
|
+
// Subscriber-only page: the route runs the same entitlement check the
|
|
151
|
+
// middleware asks the subscriber-access route for, after the session and the
|
|
152
|
+
// role are settled.
|
|
153
|
+
if (policy.requiresSubscription) {
|
|
154
|
+
if (!token) {
|
|
155
|
+
return { status: 401, message: 'Unauthenticated' };
|
|
156
|
+
}
|
|
157
|
+
if (!(await isEntitledSubscriber(token, policy.subscriptionProductIds || []))) {
|
|
158
|
+
return { status: 403, message: 'Subscription required' };
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
106
162
|
// Identity binding: force every user-owned column to the AUTHENTICATED session
|
|
107
|
-
// id so a caller can never act on another user's rows.
|
|
108
|
-
//
|
|
109
|
-
//
|
|
163
|
+
// id so a caller can never act on another user's rows.
|
|
164
|
+
// - A plain user-id binding only applies when a session is present — a guest
|
|
165
|
+
// keeps their (anonymous) client identity, which is why a guest-capable
|
|
166
|
+
// public write is not blocked here.
|
|
167
|
+
// - A \`claim: 'role'\` binding (a raw query's admin check) ALWAYS gets the
|
|
168
|
+
// session's role, '' for a guest or a session without one, so a browser
|
|
169
|
+
// can never claim a role it does not hold. Skipping it for a guest would
|
|
170
|
+
// let a signed-out request post \`role: 'admin'\` and read every row.
|
|
171
|
+
// - A \`claim: 'signedInUserId'\` binding always gets the session user id,
|
|
172
|
+
// '' for a guest: a statement that must only ever touch the signed-in
|
|
173
|
+
// caller's own row matches nothing for anybody else.
|
|
110
174
|
if (policy.userScoped && context) {
|
|
111
175
|
var sid = sessionUserId(token);
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
176
|
+
var sessionRole = roleOf(token) || '';
|
|
177
|
+
var bindings = (policy.userScoped && policy.userScoped.bindings) || [];
|
|
178
|
+
for (var i = 0; i < bindings.length; i++) {
|
|
179
|
+
var b = bindings[i];
|
|
180
|
+
if (!b || !b.nodeId) {
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
var value;
|
|
184
|
+
if (b.claim === 'role') {
|
|
185
|
+
value = sessionRole;
|
|
186
|
+
} else if (b.claim === 'signedInUserId') {
|
|
187
|
+
value = sid != null ? sid : '';
|
|
188
|
+
} else if (sid != null) {
|
|
189
|
+
value = sid;
|
|
190
|
+
} else {
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
if (context[b.nodeId] == null || typeof context[b.nodeId] !== 'object') {
|
|
194
|
+
context[b.nodeId] = {};
|
|
122
195
|
}
|
|
196
|
+
bindPath(context[b.nodeId], b.path || [], value);
|
|
123
197
|
}
|
|
124
198
|
}
|
|
125
199
|
|
|
@@ -135,6 +209,26 @@ module.exports = { guardWorkflowRequest: guardWorkflowRequest };
|
|
|
135
209
|
* generated API-route handler. Empty strings when the workflow has no policy,
|
|
136
210
|
* so an unprotected route is byte-identical to before.
|
|
137
211
|
*/
|
|
212
|
+
/**
|
|
213
|
+
* The entitlement query lives in `utils/auth/subscriber-access.js`, which the
|
|
214
|
+
* auth plugin emits only when a page is subscriber-only. A `require` of it is a
|
|
215
|
+
* static import to the bundler even inside a function, so it may only appear
|
|
216
|
+
* when that file exists — otherwise every project without such a page fails
|
|
217
|
+
* its build with "Module not found". Without the file the loader throws, and
|
|
218
|
+
* `isEntitledSubscriber` reads that as "not entitled" (fail closed).
|
|
219
|
+
*/
|
|
220
|
+
const generateSubscriberAccessLoader = (withSubscriberAccess: boolean): string =>
|
|
221
|
+
withSubscriberAccess
|
|
222
|
+
? `// Entitlement query emitted with the subscriber-access route.
|
|
223
|
+
function subscriberAccessModule() {
|
|
224
|
+
return require('../auth/subscriber-access');
|
|
225
|
+
}`
|
|
226
|
+
: `// No page is subscriber-only, so no entitlement query was emitted: a policy
|
|
227
|
+
// that still asks for a subscription fails closed.
|
|
228
|
+
function subscriberAccessModule() {
|
|
229
|
+
throw new Error('No subscriber-only pages in this project');
|
|
230
|
+
}`
|
|
231
|
+
|
|
138
232
|
export interface WorkflowAuthInjection {
|
|
139
233
|
// `require(...)` of the shared helper (placed with the other requires).
|
|
140
234
|
requireLine: string
|
|
@@ -150,7 +244,10 @@ const EMPTY_INJECTION: WorkflowAuthInjection = { requireLine: '', policyConst: '
|
|
|
150
244
|
export const buildWorkflowAuthInjection = (
|
|
151
245
|
protection: UIDLWorkflowProtection | undefined
|
|
152
246
|
): WorkflowAuthInjection => {
|
|
153
|
-
if (
|
|
247
|
+
if (
|
|
248
|
+
!protection ||
|
|
249
|
+
(!protection.requiresAuth && !protection.userScoped && !protection.serverOnly)
|
|
250
|
+
) {
|
|
154
251
|
return EMPTY_INJECTION
|
|
155
252
|
}
|
|
156
253
|
|
|
@@ -158,14 +255,26 @@ export const buildWorkflowAuthInjection = (
|
|
|
158
255
|
const policy: {
|
|
159
256
|
requiresAuth: boolean
|
|
160
257
|
allowedRoles: string[]
|
|
258
|
+
serverOnly?: boolean
|
|
161
259
|
userScoped?: UIDLWorkflowProtection['userScoped']
|
|
260
|
+
requiresSubscription?: boolean
|
|
261
|
+
subscriptionProductIds?: string[]
|
|
162
262
|
} = {
|
|
163
263
|
requiresAuth: !!protection.requiresAuth,
|
|
164
264
|
allowedRoles: protection.allowedRoles || [],
|
|
165
265
|
}
|
|
266
|
+
if (protection.serverOnly) {
|
|
267
|
+
policy.serverOnly = true
|
|
268
|
+
}
|
|
166
269
|
if (protection.userScoped) {
|
|
167
270
|
policy.userScoped = protection.userScoped
|
|
168
271
|
}
|
|
272
|
+
if (protection.requiresSubscription) {
|
|
273
|
+
policy.requiresSubscription = true
|
|
274
|
+
policy.subscriptionProductIds = (protection.subscriptionProductIds || [])
|
|
275
|
+
.map((id) => String(id).trim())
|
|
276
|
+
.filter((id) => id.length > 0)
|
|
277
|
+
}
|
|
169
278
|
|
|
170
279
|
return {
|
|
171
280
|
requireLine: `const __wfAuth = require('../../../utils/workflows/workflow-auth');\n`,
|