@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,282 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Resolving the NextAuth session token in a generated route, WITHOUT asking
|
|
4
|
-
* `process.env.NEXTAUTH_URL` what the session cookie is called.
|
|
5
|
-
*
|
|
6
|
-
* ## ⛔ THE REPORTED DEFECT
|
|
7
|
-
*
|
|
8
|
-
* A published project showed "Failed to load dashboard data. Please refresh."
|
|
9
|
-
* on the home page, "Failed to load meeting data." on the list page and "could
|
|
10
|
-
* not fetch the templates" on a third — for a user who was signed in, on a page
|
|
11
|
-
* whose own `/api/auth/session` returned that user. The failing call was the
|
|
12
|
-
* page-load workflow's server segment, answering **401 `Unauthenticated`** from
|
|
13
|
-
* `guardWorkflowRequest`. Reloading sometimes fixed it; fanning 50 concurrent
|
|
14
|
-
* requests at the same route returned **33 × 401 and 17 × 200**, while 40
|
|
15
|
-
* concurrent `/api/auth/session` calls resolved the user 40/40.
|
|
16
|
-
*
|
|
17
|
-
* ## The mechanism
|
|
18
|
-
*
|
|
19
|
-
* next-auth v4's `getToken()` derives the cookie it reads from an env var:
|
|
20
|
-
*
|
|
21
|
-
* ```js
|
|
22
|
-
* secureCookie = process.env.NEXTAUTH_URL?.startsWith('https://') ?? !!process.env.VERCEL,
|
|
23
|
-
* cookieName = secureCookie ? '__Secure-next-auth.session-token' : 'next-auth.session-token',
|
|
24
|
-
* ```
|
|
25
|
-
*
|
|
26
|
-
* A generated project ships `NEXTAUTH_URL=http://localhost:3000` — the build
|
|
27
|
-
* cannot know the domain it will be published to, so `pages/api/auth/[...nextauth].js`
|
|
28
|
-
* repairs `process.env.NEXTAUTH_URL` **from the incoming request** instead. That
|
|
29
|
-
* repair is process-local: it fixes the value for whichever serverless instance
|
|
30
|
-
* happened to serve an auth request, and for no other. Every other instance
|
|
31
|
-
* still holds `http://localhost:3000`, so `startsWith('https://')` is `false`
|
|
32
|
-
* (NOT `undefined` — the `??` fallback to `!!process.env.VERCEL` never runs),
|
|
33
|
-
* `getToken` looks for `next-auth.session-token`, the browser is holding
|
|
34
|
-
* `__Secure-next-auth.session-token`, nothing is found, and a signed-in user is
|
|
35
|
-
* reported as anonymous.
|
|
36
|
-
*
|
|
37
|
-
* Hence the coin-flip: it depends on whether the instance that served your
|
|
38
|
-
* request had previously served an auth request. Nothing about the session, the
|
|
39
|
-
* secret or the cookie is wrong.
|
|
40
|
-
*
|
|
41
|
-
* The same defect is why the generated middleware carries a `hasSessionCookie`
|
|
42
|
-
* fallback and a round trip to `/api/auth/session`, attributed there to an
|
|
43
|
-
* "Edge runtime quirk" — the Edge process holds that same localhost value.
|
|
44
|
-
*
|
|
45
|
-
* ## The rule
|
|
46
|
-
*
|
|
47
|
-
* ⭐ **A request must be authenticated from the REQUEST, never from an ambient
|
|
48
|
-
* env var that describes the deployment.** So this resolver reads which session
|
|
49
|
-
* cookie the caller actually sent, and tells `getToken` exactly that — falling
|
|
50
|
-
* back to the request's own protocol when the cookie header is unavailable.
|
|
51
|
-
*
|
|
52
|
-
* Emitted as plain ES5 text and inlined into each generated route: a route that
|
|
53
|
-
* carries its own copy cannot be broken by a missing sibling module or an
|
|
54
|
-
* untraced dependency, and every call site gets the identical implementation
|
|
55
|
-
* from this one definition.
|
|
56
|
-
*/
|
|
57
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
58
3
|
exports.generateCommonJsSessionTokenResolverCode = exports.generateSessionTokenResolverCode = exports.SESSION_TOKEN_RESOLVER_FN = void 0;
|
|
59
|
-
|
|
60
|
-
exports.SESSION_TOKEN_RESOLVER_FN = '__tqResolveSessionToken';
|
|
61
|
-
/**
|
|
62
|
-
* Session-cookie names next-auth/Auth.js writes, with the `secureCookie` flag
|
|
63
|
-
* that produces each. Order within a protocol is irrelevant — only ONE of these
|
|
64
|
-
* is ever present — but the https/http split decides which pair is tried first.
|
|
65
|
-
*
|
|
66
|
-
* `__Host-` is deliberately absent: next-auth uses it only for the CSRF and
|
|
67
|
-
* callback cookies, never for the session token.
|
|
68
|
-
*/
|
|
69
|
-
const KNOWN_SESSION_COOKIES = [
|
|
70
|
-
{ name: '__Secure-next-auth.session-token', secure: true },
|
|
71
|
-
{ name: 'next-auth.session-token', secure: false },
|
|
72
|
-
{ name: '__Secure-authjs.session-token', secure: true },
|
|
73
|
-
{ name: 'authjs.session-token', secure: false },
|
|
74
|
-
];
|
|
75
|
-
/**
|
|
76
|
-
* ES5 source for the shared session-token resolver, safe to inline into any
|
|
77
|
-
* generated CommonJS route or ESM middleware.
|
|
78
|
-
*
|
|
79
|
-
* Declares:
|
|
80
|
-
* - `__tqCookieNamesPresent(req)` — the set of cookie names on the request,
|
|
81
|
-
* parsed properly (a substring test would see `next-auth.session-token`
|
|
82
|
-
* inside `__Secure-next-auth.session-token` and pick the wrong one).
|
|
83
|
-
* - `__tqRequestIsSecure(req)` — https as the REQUEST reports it.
|
|
84
|
-
* - `__tqSessionTokenCandidates(req)` — `{cookieName, secureCookie}` pairs to try.
|
|
85
|
-
* - `__tqResolveSessionToken(getToken, req, secret)` — the token, or null.
|
|
86
|
-
*
|
|
87
|
-
* `getToken` is passed IN rather than required here, so the same body serves a
|
|
88
|
-
* CommonJS route (lazy `require('next-auth/jwt')`) and the Edge middleware
|
|
89
|
-
* (static `import`). Pure, total, never throws, no env reads.
|
|
90
|
-
*/
|
|
91
|
-
const generateSessionTokenResolverCode = () => {
|
|
92
|
-
return `// GENERATED — see generateSessionTokenResolverCode in
|
|
93
|
-
// @teleporthq/teleport-plugin-next-workflows/src/session-cookie-resolver.ts.
|
|
94
|
-
//
|
|
95
|
-
// next-auth's getToken() picks the session cookie name from
|
|
96
|
-
// process.env.NEXTAUTH_URL, which a generated project ships as a localhost
|
|
97
|
-
// default — so on a published https domain it looks for the non-secure cookie
|
|
98
|
-
// and reports a signed-in user as anonymous. These helpers read the cookie the
|
|
99
|
-
// request actually carries and tell getToken exactly which one it is.
|
|
100
|
-
var __TQ_SESSION_COOKIES = ${JSON.stringify(KNOWN_SESSION_COOKIES.map((c) => [c.name, c.secure]))};
|
|
101
|
-
|
|
102
|
-
// Every cookie NAME on the request. Parsed on the "; " separator rather than
|
|
103
|
-
// matched as a substring: "next-auth.session-token" occurs inside
|
|
104
|
-
// "__Secure-next-auth.session-token", so a substring test reports the plain
|
|
105
|
-
// cookie as present whenever the secure one is, and getToken then decodes the
|
|
106
|
-
// wrong (missing) cookie.
|
|
107
|
-
function __tqCookieNamesPresent(req) {
|
|
108
|
-
var present = {};
|
|
109
|
-
var raw = '';
|
|
110
|
-
try {
|
|
111
|
-
var headers = req && req.headers;
|
|
112
|
-
if (headers && typeof headers.get === 'function') {
|
|
113
|
-
// Edge / fetch Headers.
|
|
114
|
-
raw = headers.get('cookie') || '';
|
|
115
|
-
} else if (headers) {
|
|
116
|
-
var value = headers.cookie || headers.Cookie;
|
|
117
|
-
raw = Array.isArray(value) ? value.join('; ') : value || '';
|
|
118
|
-
}
|
|
119
|
-
} catch (e) {
|
|
120
|
-
raw = '';
|
|
121
|
-
}
|
|
122
|
-
var parts = String(raw).split(';');
|
|
123
|
-
for (var i = 0; i < parts.length; i++) {
|
|
124
|
-
var eq = parts[i].indexOf('=');
|
|
125
|
-
if (eq > 0) {
|
|
126
|
-
present[parts[i].slice(0, eq).trim()] = true;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
// Second source: the runtime's own parsed cookies. A Next.js API route hands
|
|
130
|
-
// over a plain object; the Edge RequestCookies exposes getAll().
|
|
131
|
-
try {
|
|
132
|
-
var cookies = req && req.cookies;
|
|
133
|
-
if (cookies && typeof cookies.getAll === 'function') {
|
|
134
|
-
var all = cookies.getAll() || [];
|
|
135
|
-
for (var a = 0; a < all.length; a++) {
|
|
136
|
-
if (all[a] && all[a].name) {
|
|
137
|
-
present[all[a].name] = true;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
} else if (cookies && typeof cookies === 'object') {
|
|
141
|
-
for (var key in cookies) {
|
|
142
|
-
if (Object.prototype.hasOwnProperty.call(cookies, key)) {
|
|
143
|
-
present[key] = true;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
} catch (e) {
|
|
148
|
-
/* the header pass above is enough */
|
|
149
|
-
}
|
|
150
|
-
return present;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
// Is this request https? Read from the proxy header the platform sets, then the
|
|
154
|
-
// socket, then the URL — never from an env var describing the deployment.
|
|
155
|
-
function __tqRequestIsSecure(req) {
|
|
156
|
-
try {
|
|
157
|
-
var headers = (req && req.headers) || {};
|
|
158
|
-
var proto =
|
|
159
|
-
typeof headers.get === 'function'
|
|
160
|
-
? headers.get('x-forwarded-proto')
|
|
161
|
-
: headers['x-forwarded-proto'];
|
|
162
|
-
if (Array.isArray(proto)) {
|
|
163
|
-
proto = proto[0];
|
|
164
|
-
}
|
|
165
|
-
if (typeof proto === 'string' && proto) {
|
|
166
|
-
// A chain of proxies appends: "https,http" — the client-facing hop is first.
|
|
167
|
-
return proto.split(',')[0].trim().toLowerCase() === 'https';
|
|
168
|
-
}
|
|
169
|
-
if (req && req.nextUrl && req.nextUrl.protocol === 'https:') {
|
|
170
|
-
return true;
|
|
171
|
-
}
|
|
172
|
-
if (req && req.socket && req.socket.encrypted) {
|
|
173
|
-
return true;
|
|
174
|
-
}
|
|
175
|
-
if (req && req.connection && req.connection.encrypted) {
|
|
176
|
-
return true;
|
|
177
|
-
}
|
|
178
|
-
if (typeof (req && req.url) === 'string' && req.url.indexOf('https://') === 0) {
|
|
179
|
-
return true;
|
|
180
|
-
}
|
|
181
|
-
} catch (e) {
|
|
182
|
-
/* fall through to false */
|
|
183
|
-
}
|
|
184
|
-
return false;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
// The { cookieName, secureCookie } pairs worth trying, most likely first.
|
|
188
|
-
// Normally exactly one cookie is present and this returns a single entry; the
|
|
189
|
-
// list only grows when a site has been reached over both http and https.
|
|
190
|
-
function __tqSessionTokenCandidates(req) {
|
|
191
|
-
var present = __tqCookieNamesPresent(req);
|
|
192
|
-
var secure = __tqRequestIsSecure(req);
|
|
193
|
-
var candidates = [];
|
|
194
|
-
for (var i = 0; i < __TQ_SESSION_COOKIES.length; i++) {
|
|
195
|
-
var name = __TQ_SESSION_COOKIES[i][0];
|
|
196
|
-
var isSecureName = __TQ_SESSION_COOKIES[i][1];
|
|
197
|
-
if (present[name] || present[name + '.0']) {
|
|
198
|
-
candidates.push({ cookieName: name, secureCookie: isSecureName });
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
candidates.sort(function (a, b) {
|
|
202
|
-
if (a.secureCookie === b.secureCookie) {
|
|
203
|
-
return 0;
|
|
204
|
-
}
|
|
205
|
-
return a.secureCookie === secure ? -1 : 1;
|
|
206
|
-
});
|
|
207
|
-
if (candidates.length === 0) {
|
|
208
|
-
// No cookie we recognise. The project may configure a custom cookie name in
|
|
209
|
-
// authOptions, so hand getToken the request's own protocol and let it apply
|
|
210
|
-
// its defaults — same behaviour as before this resolver existed, minus the
|
|
211
|
-
// localhost env var.
|
|
212
|
-
candidates.push({ secureCookie: secure });
|
|
213
|
-
}
|
|
214
|
-
return candidates;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
// The decoded session token, or null. Tries each candidate cookie in turn so a
|
|
218
|
-
// project that renamed its cookie, or one reached over both protocols, still
|
|
219
|
-
// resolves. Never throws.
|
|
220
|
-
function ${exports.SESSION_TOKEN_RESOLVER_FN}(getToken, req, secret) {
|
|
221
|
-
if (!secret || typeof getToken !== 'function') {
|
|
222
|
-
return Promise.resolve(null);
|
|
223
|
-
}
|
|
224
|
-
var candidates = __tqSessionTokenCandidates(req);
|
|
225
|
-
var attempt = function (index) {
|
|
226
|
-
if (index >= candidates.length) {
|
|
227
|
-
return Promise.resolve(null);
|
|
228
|
-
}
|
|
229
|
-
var candidate = candidates[index];
|
|
230
|
-
var params = { req: req, secret: secret, secureCookie: candidate.secureCookie };
|
|
231
|
-
if (candidate.cookieName) {
|
|
232
|
-
params.cookieName = candidate.cookieName;
|
|
233
|
-
}
|
|
234
|
-
return Promise.resolve()
|
|
235
|
-
.then(function () {
|
|
236
|
-
return getToken(params);
|
|
237
|
-
})
|
|
238
|
-
.catch(function () {
|
|
239
|
-
return null;
|
|
240
|
-
})
|
|
241
|
-
.then(function (token) {
|
|
242
|
-
return token || attempt(index + 1);
|
|
243
|
-
});
|
|
244
|
-
};
|
|
245
|
-
return attempt(0);
|
|
246
|
-
}
|
|
247
|
-
`;
|
|
248
|
-
};
|
|
249
|
-
exports.generateSessionTokenResolverCode = generateSessionTokenResolverCode;
|
|
4
|
+
const teleport_shared_1 = require("@teleporthq/teleport-shared");
|
|
250
5
|
/**
|
|
251
|
-
* The resolver
|
|
252
|
-
*
|
|
253
|
-
*
|
|
254
|
-
* authentication does not ship `next-auth`; such a project also has no session
|
|
255
|
-
* to read, so resolving to `null` there is the correct answer rather than a
|
|
256
|
-
* module-load crash.
|
|
6
|
+
* The session-cookie resolver lives in teleport-shared so the per-table data
|
|
7
|
+
* routes (teleport-plugin-next-data-source) decode a session exactly the way
|
|
8
|
+
* the workflow routes do. This module keeps the plugin's public export path.
|
|
257
9
|
*/
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
// installed, and no session to read either — null is the right answer there.
|
|
262
|
-
function __tqGetTokenFn() {
|
|
263
|
-
try {
|
|
264
|
-
var jwt = require('next-auth/jwt');
|
|
265
|
-
return jwt && typeof jwt.getToken === 'function' ? jwt.getToken : null;
|
|
266
|
-
} catch (e) {
|
|
267
|
-
return null;
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
// The session token for this request, or null. Reads NEXTAUTH_SECRET itself.
|
|
272
|
-
function __tqSessionToken(req) {
|
|
273
|
-
var secret = process.env.NEXTAUTH_SECRET;
|
|
274
|
-
if (!secret) {
|
|
275
|
-
return Promise.resolve(null);
|
|
276
|
-
}
|
|
277
|
-
return ${exports.SESSION_TOKEN_RESOLVER_FN}(__tqGetTokenFn(), req, secret);
|
|
278
|
-
}
|
|
279
|
-
`;
|
|
280
|
-
};
|
|
281
|
-
exports.generateCommonJsSessionTokenResolverCode = generateCommonJsSessionTokenResolverCode;
|
|
10
|
+
exports.SESSION_TOKEN_RESOLVER_FN = teleport_shared_1.SessionCookieResolver.SESSION_TOKEN_RESOLVER_FN;
|
|
11
|
+
exports.generateSessionTokenResolverCode = teleport_shared_1.SessionCookieResolver.generateSessionTokenResolverCode;
|
|
12
|
+
exports.generateCommonJsSessionTokenResolverCode = teleport_shared_1.SessionCookieResolver.generateCommonJsSessionTokenResolverCode;
|
|
282
13
|
//# sourceMappingURL=session-cookie-resolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-cookie-resolver.js","sourceRoot":"","sources":["../../src/session-cookie-resolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-cookie-resolver.js","sourceRoot":"","sources":["../../src/session-cookie-resolver.ts"],"names":[],"mappings":";;;AAAA,iEAAmE;AAEnE;;;;GAIG;AACU,QAAA,yBAAyB,GAAG,uCAAqB,CAAC,yBAAyB,CAAA;AAC3E,QAAA,gCAAgC,GAC3C,uCAAqB,CAAC,gCAAgC,CAAA;AAC3C,QAAA,wCAAwC,GACnD,uCAAqB,CAAC,wCAAwC,CAAA"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subscriber-only pages: the entitlement check a generated store runs for a
|
|
3
|
+
* page whose protection carries `requiresSubscription`.
|
|
4
|
+
*
|
|
5
|
+
* Two files, emitted together whenever at least one page is subscriber-only:
|
|
6
|
+
*
|
|
7
|
+
* - `utils/auth/subscriber-access.js` — the ONE parameterised query that
|
|
8
|
+
* decides entitlement (`SUBSCRIPTION_ENTITLEMENT_SQL` from teleport-shared,
|
|
9
|
+
* statuses baked from `SUBSCRIPTION_ENTITLED_STATUSES`) plus the lookup of
|
|
10
|
+
* the storefront page of the first product a page names. Shared by the
|
|
11
|
+
* route below and by the workflow-route guard (`workflow-auth.js`), so the
|
|
12
|
+
* middleware and a page's workflow routes can never disagree.
|
|
13
|
+
* - `pages/api/auth/subscriber-access.js` — what the Edge middleware asks
|
|
14
|
+
* (it has no database): `GET ?products=<comma ids>` with the visitor's
|
|
15
|
+
* cookie forwarded → 401 without a session, else
|
|
16
|
+
* `{ entitled: boolean, redirectTo?: string }`, never cached.
|
|
17
|
+
*
|
|
18
|
+
* The middleware itself lives in `auth-generator.ts` (`generateMiddlewareFile`).
|
|
19
|
+
*/
|
|
20
|
+
import { ProjectUIDL, UIDLAuthentication } from '@teleporthq/teleport-types';
|
|
21
|
+
/** Where the storefront serves a single product from, read off the UIDL's route table. */
|
|
22
|
+
export interface ProductDetailsRoute {
|
|
23
|
+
staticBase: string;
|
|
24
|
+
differentiatorColumn: string;
|
|
25
|
+
}
|
|
26
|
+
export declare const hasSubscriberOnlyPages: (auth: UIDLAuthentication | undefined) => boolean;
|
|
27
|
+
/**
|
|
28
|
+
* The STANDARD product-details page. When the store has custom product pages
|
|
29
|
+
* the UIDL names it (`ecommerceSettings.productPages.standard`). Otherwise it is
|
|
30
|
+
* the route value whose `detailsPageInfo` reads the products table — a
|
|
31
|
+
* storefront product page first, since the write-a-review page reads that table
|
|
32
|
+
* too. Its `navLink` is `<base>/[<column>]`; the base is what the list page
|
|
33
|
+
* shares with it by platform convention.
|
|
34
|
+
*/
|
|
35
|
+
export declare const resolveProductDetailsRoute: (uidl: ProjectUIDL | undefined) => ProductDetailsRoute | null;
|
|
36
|
+
/**
|
|
37
|
+
* Every custom product page by key (`ecommerceSettings.productPages.pages`),
|
|
38
|
+
* so a product that opens on one is sent there. Empty on a store without
|
|
39
|
+
* custom product pages.
|
|
40
|
+
*/
|
|
41
|
+
export declare const resolveCustomProductPageRoutes: (uidl: ProjectUIDL | undefined) => Record<string, ProductDetailsRoute>;
|
|
42
|
+
/**
|
|
43
|
+
* Where the middleware sends a visitor who lacks the subscription when the
|
|
44
|
+
* route could name no product page: the products listing when the store has
|
|
45
|
+
* one (a page served at the details page's static base), else the home page.
|
|
46
|
+
*/
|
|
47
|
+
export declare const resolveSubscriptionFallbackRoute: (uidl: ProjectUIDL | undefined) => string;
|
|
48
|
+
export interface SubscriberAccessHelperOptions {
|
|
49
|
+
productDetails: ProductDetailsRoute | null;
|
|
50
|
+
/** Custom product pages by key (`resolveCustomProductPageRoutes`); absent or empty = none. */
|
|
51
|
+
productPages?: Record<string, ProductDetailsRoute>;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* `utils/auth/subscriber-access.js` (CommonJS). Exports:
|
|
55
|
+
* - `normalizeProductIds(value)` — trimmed, de-duplicated ids from an array
|
|
56
|
+
* or a comma-separated string, capped.
|
|
57
|
+
* - `isSubscriberEntitled(userId, productIds)` — the entitlement query; an
|
|
58
|
+
* empty list means any product. Throws on a database failure so a caller
|
|
59
|
+
* can fail closed on its own terms.
|
|
60
|
+
* - `resolveProductRedirect(productIds)` — the storefront page of the FIRST
|
|
61
|
+
* product, or null (no product page, unknown product, database failure).
|
|
62
|
+
*/
|
|
63
|
+
export declare const generateSubscriberAccessHelperModule: (options: SubscriberAccessHelperOptions) => string;
|
|
64
|
+
/**
|
|
65
|
+
* `pages/api/auth/subscriber-access.js`: GET only, the session read from the
|
|
66
|
+
* forwarded cookie exactly as the workflow routes read it, then the shared
|
|
67
|
+
* helper. A failed query answers 500 — the middleware treats anything but an
|
|
68
|
+
* `entitled: true` body as "not entitled", so the page fails closed.
|
|
69
|
+
*/
|
|
70
|
+
export declare const generateSubscriberAccessRoute: () => string;
|
|
71
|
+
//# sourceMappingURL=subscriber-access-route-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscriber-access-route-generator.d.ts","sourceRoot":"","sources":["../../src/subscriber-access-route-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAS5E,0FAA0F;AAC1F,MAAM,WAAW,mBAAmB;IAGlC,UAAU,EAAE,MAAM,CAAA;IAElB,oBAAoB,EAAE,MAAM,CAAA;CAC7B;AAED,eAAO,MAAM,sBAAsB,SAAU,kBAAkB,GAAG,SAAS,KAAG,OAO7E,CAAA;AAkBD;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,SAC/B,WAAW,GAAG,SAAS,KAC5B,mBAAmB,GAAG,IAwBxB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,SACnC,WAAW,GAAG,SAAS,KAC5B,OAAO,MAAM,EAAE,mBAAmB,CAUpC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,SAAU,WAAW,GAAG,SAAS,KAAG,MAShF,CAAA;AA8DD,MAAM,WAAW,6BAA6B;IAC5C,cAAc,EAAE,mBAAmB,GAAG,IAAI,CAAA;IAC1C,8FAA8F;IAC9F,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;CACnD;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,oCAAoC,YACtC,6BAA6B,KACrC,MAiFF,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,QAAO,MAkDhD,CAAA"}
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateSubscriberAccessRoute = exports.generateSubscriberAccessHelperModule = exports.resolveSubscriptionFallbackRoute = exports.resolveCustomProductPageRoutes = exports.resolveProductDetailsRoute = exports.hasSubscriberOnlyPages = void 0;
|
|
4
|
+
const teleport_shared_1 = require("@teleporthq/teleport-shared");
|
|
5
|
+
const pg_client_code_1 = require("./pg-client-code");
|
|
6
|
+
const session_cookie_resolver_1 = require("./session-cookie-resolver");
|
|
7
|
+
const PRODUCTS_TABLE = 'teleport_products';
|
|
8
|
+
const MAX_PRODUCT_IDS = 50;
|
|
9
|
+
const IDENTIFIER_RE = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
10
|
+
const hasSubscriberOnlyPages = (auth) => {
|
|
11
|
+
if (!auth || !auth.pageProtection) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
return Object.values(auth.pageProtection).some((protection) => !!protection && protection.requiresSubscription === true);
|
|
15
|
+
};
|
|
16
|
+
exports.hasSubscriberOnlyPages = hasSubscriberOnlyPages;
|
|
17
|
+
const routeValuesOf = (uidl) => {
|
|
18
|
+
var _a, _b, _c;
|
|
19
|
+
const values = (_c = (_b = (_a = uidl === null || uidl === void 0 ? void 0 : uidl.root) === null || _a === void 0 ? void 0 : _a.stateDefinitions) === null || _b === void 0 ? void 0 : _b.route) === null || _c === void 0 ? void 0 : _c.values;
|
|
20
|
+
return Array.isArray(values) ? values : [];
|
|
21
|
+
};
|
|
22
|
+
/** The feature identifier every storefront product page exposes its product under. */
|
|
23
|
+
const STOREFRONT_PRODUCT_FEATURE = 'ecommerceProduct';
|
|
24
|
+
const toProductRoute = (route, attribute) => {
|
|
25
|
+
const staticBase = typeof route === 'string' && route.startsWith('/') ? route : '';
|
|
26
|
+
const column = typeof attribute === 'string' ? attribute : '';
|
|
27
|
+
return staticBase && IDENTIFIER_RE.test(column)
|
|
28
|
+
? { staticBase, differentiatorColumn: column }
|
|
29
|
+
: null;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* The STANDARD product-details page. When the store has custom product pages
|
|
33
|
+
* the UIDL names it (`ecommerceSettings.productPages.standard`). Otherwise it is
|
|
34
|
+
* the route value whose `detailsPageInfo` reads the products table — a
|
|
35
|
+
* storefront product page first, since the write-a-review page reads that table
|
|
36
|
+
* too. Its `navLink` is `<base>/[<column>]`; the base is what the list page
|
|
37
|
+
* shares with it by platform convention.
|
|
38
|
+
*/
|
|
39
|
+
const resolveProductDetailsRoute = (uidl) => {
|
|
40
|
+
var _a, _b;
|
|
41
|
+
const standard = (_b = (_a = uidl === null || uidl === void 0 ? void 0 : uidl.ecommerceSettings) === null || _a === void 0 ? void 0 : _a.productPages) === null || _b === void 0 ? void 0 : _b.standard;
|
|
42
|
+
if (standard) {
|
|
43
|
+
const route = toProductRoute(standard.route, standard.attribute);
|
|
44
|
+
if (route) {
|
|
45
|
+
return route;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const candidates = [];
|
|
49
|
+
for (const routeValue of routeValuesOf(uidl)) {
|
|
50
|
+
const pageOptions = routeValue === null || routeValue === void 0 ? void 0 : routeValue.pageOptions;
|
|
51
|
+
const info = pageOptions === null || pageOptions === void 0 ? void 0 : pageOptions.detailsPageInfo;
|
|
52
|
+
if (!info || String(info.tableName || '').toLowerCase() !== PRODUCTS_TABLE) {
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
const navLink = String(pageOptions.navLink || '');
|
|
56
|
+
const column = String(info.differentiatorColumn || pageOptions.dynamicRouteAttribute || '');
|
|
57
|
+
const route = toProductRoute(navLink.replace(/\/\[[^\]]*\]$/, '') || '/', column);
|
|
58
|
+
if (navLink.startsWith('/') && route) {
|
|
59
|
+
candidates.push({ route, storefront: info.featureIdentifier === STOREFRONT_PRODUCT_FEATURE });
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const chosen = candidates.find((candidate) => candidate.storefront) || candidates[0];
|
|
63
|
+
return chosen ? chosen.route : null;
|
|
64
|
+
};
|
|
65
|
+
exports.resolveProductDetailsRoute = resolveProductDetailsRoute;
|
|
66
|
+
/**
|
|
67
|
+
* Every custom product page by key (`ecommerceSettings.productPages.pages`),
|
|
68
|
+
* so a product that opens on one is sent there. Empty on a store without
|
|
69
|
+
* custom product pages.
|
|
70
|
+
*/
|
|
71
|
+
const resolveCustomProductPageRoutes = (uidl) => {
|
|
72
|
+
var _a, _b, _c, _d;
|
|
73
|
+
const pages = ((_b = (_a = uidl === null || uidl === void 0 ? void 0 : uidl.ecommerceSettings) === null || _a === void 0 ? void 0 : _a.productPages) === null || _b === void 0 ? void 0 : _b.pages) || {};
|
|
74
|
+
const routes = {};
|
|
75
|
+
for (const key of Object.keys(pages)) {
|
|
76
|
+
const route = toProductRoute((_c = pages[key]) === null || _c === void 0 ? void 0 : _c.route, (_d = pages[key]) === null || _d === void 0 ? void 0 : _d.attribute);
|
|
77
|
+
if (route) {
|
|
78
|
+
routes[key] = route;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return routes;
|
|
82
|
+
};
|
|
83
|
+
exports.resolveCustomProductPageRoutes = resolveCustomProductPageRoutes;
|
|
84
|
+
/**
|
|
85
|
+
* Where the middleware sends a visitor who lacks the subscription when the
|
|
86
|
+
* route could name no product page: the products listing when the store has
|
|
87
|
+
* one (a page served at the details page's static base), else the home page.
|
|
88
|
+
*/
|
|
89
|
+
const resolveSubscriptionFallbackRoute = (uidl) => {
|
|
90
|
+
const details = (0, exports.resolveProductDetailsRoute)(uidl);
|
|
91
|
+
if (!details || details.staticBase === '/') {
|
|
92
|
+
return '/';
|
|
93
|
+
}
|
|
94
|
+
const hasListing = routeValuesOf(uidl).some((routeValue) => { var _a; return String(((_a = routeValue === null || routeValue === void 0 ? void 0 : routeValue.pageOptions) === null || _a === void 0 ? void 0 : _a.navLink) || '') === details.staticBase; });
|
|
95
|
+
return hasListing ? details.staticBase : '/';
|
|
96
|
+
};
|
|
97
|
+
exports.resolveSubscriptionFallbackRoute = resolveSubscriptionFallbackRoute;
|
|
98
|
+
// The storefront page of the FIRST product a page names, on the standard page.
|
|
99
|
+
const STANDARD_PAGE_REDIRECT = `async function resolveProductRedirect(productIds) {
|
|
100
|
+
var ids = normalizeProductIds(productIds);
|
|
101
|
+
if (!PRODUCT_DETAILS || ids.length === 0) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
try {
|
|
105
|
+
return await withClient(async function (client) {
|
|
106
|
+
var result = await client.query(
|
|
107
|
+
'SELECT "' + PRODUCT_DETAILS.differentiatorColumn + '" AS value FROM ' + PRODUCTS_TABLE + ' WHERE id::text = $1 LIMIT 1',
|
|
108
|
+
[ids[0]]
|
|
109
|
+
);
|
|
110
|
+
var value = result && result.rows && result.rows[0] ? result.rows[0].value : null;
|
|
111
|
+
if (value == null || String(value) === '') {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
var base = PRODUCT_DETAILS.staticBase === '/' ? '' : PRODUCT_DETAILS.staticBase;
|
|
115
|
+
return base + '/' + encodeURIComponent(String(value));
|
|
116
|
+
});
|
|
117
|
+
} catch (e) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
}`;
|
|
121
|
+
// The same, on a store with custom product pages: the product's own page — the
|
|
122
|
+
// custom one its product_page names while that page exists, else the standard
|
|
123
|
+
// one. The row is read whole (to_jsonb) so a store whose table lacks one of the
|
|
124
|
+
// columns still answers.
|
|
125
|
+
const PRODUCT_PAGE_AWARE_REDIRECT = `async function resolveProductRedirect(productIds) {
|
|
126
|
+
var ids = normalizeProductIds(productIds);
|
|
127
|
+
if (!PRODUCT_DETAILS || ids.length === 0) {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
return await withClient(async function (client) {
|
|
132
|
+
var result = await client.query(
|
|
133
|
+
'SELECT to_jsonb(p) AS row FROM ' + PRODUCTS_TABLE + ' p WHERE p.id::text = $1 LIMIT 1',
|
|
134
|
+
[ids[0]]
|
|
135
|
+
);
|
|
136
|
+
var row = result && result.rows && result.rows[0] ? result.rows[0].row : null;
|
|
137
|
+
if (!row) {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
var key = typeof row.product_page === 'string' ? row.product_page.trim() : '';
|
|
141
|
+
var page =
|
|
142
|
+
key !== '' && Object.prototype.hasOwnProperty.call(PRODUCT_PAGES, key)
|
|
143
|
+
? PRODUCT_PAGES[key]
|
|
144
|
+
: PRODUCT_DETAILS;
|
|
145
|
+
var value = row[page.differentiatorColumn];
|
|
146
|
+
if (value == null || String(value) === '') {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
var base = page.staticBase === '/' ? '' : page.staticBase;
|
|
150
|
+
return base + '/' + encodeURIComponent(String(value));
|
|
151
|
+
});
|
|
152
|
+
} catch (e) {
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
}`;
|
|
156
|
+
/**
|
|
157
|
+
* `utils/auth/subscriber-access.js` (CommonJS). Exports:
|
|
158
|
+
* - `normalizeProductIds(value)` — trimmed, de-duplicated ids from an array
|
|
159
|
+
* or a comma-separated string, capped.
|
|
160
|
+
* - `isSubscriberEntitled(userId, productIds)` — the entitlement query; an
|
|
161
|
+
* empty list means any product. Throws on a database failure so a caller
|
|
162
|
+
* can fail closed on its own terms.
|
|
163
|
+
* - `resolveProductRedirect(productIds)` — the storefront page of the FIRST
|
|
164
|
+
* product, or null (no product page, unknown product, database failure).
|
|
165
|
+
*/
|
|
166
|
+
const generateSubscriberAccessHelperModule = (options) => {
|
|
167
|
+
const details = options.productDetails && IDENTIFIER_RE.test(options.productDetails.differentiatorColumn)
|
|
168
|
+
? options.productDetails
|
|
169
|
+
: null;
|
|
170
|
+
const productPages = options.productPages || {};
|
|
171
|
+
const hasProductPages = !!details && Object.keys(productPages).length > 0;
|
|
172
|
+
return `'use strict';
|
|
173
|
+
|
|
174
|
+
// GENERATED — see generateSubscriberAccessHelperModule in
|
|
175
|
+
// @teleporthq/teleport-plugin-next-workflows/src/subscriber-access-route-generator.ts.
|
|
176
|
+
//
|
|
177
|
+
// Whether a signed-in visitor holds an entitled subscription: the one query the
|
|
178
|
+
// subscriber-access route (for the middleware) and the workflow-route guard
|
|
179
|
+
// share, so a page and its workflows can never disagree about who may read.
|
|
180
|
+
${(0, pg_client_code_1.generatePgClientCode)()}
|
|
181
|
+
|
|
182
|
+
var SUBSCRIPTION_ENTITLED_STATUSES = ${JSON.stringify(teleport_shared_1.SubscriptionAccess.SUBSCRIPTION_ENTITLED_STATUSES)};
|
|
183
|
+
var ENTITLEMENT_SQL = ${JSON.stringify(teleport_shared_1.SubscriptionAccess.SUBSCRIPTION_ENTITLEMENT_SQL)};
|
|
184
|
+
var MAX_PRODUCT_IDS = ${MAX_PRODUCT_IDS};
|
|
185
|
+
// The product-details page, when the store has one: its static base and the
|
|
186
|
+
// product column its dynamic segment carries.
|
|
187
|
+
var PRODUCT_DETAILS = ${JSON.stringify(details)};
|
|
188
|
+
var PRODUCTS_TABLE = ${JSON.stringify(PRODUCTS_TABLE)};${hasProductPages
|
|
189
|
+
? `
|
|
190
|
+
// The custom product pages by key: a product whose product_page names one
|
|
191
|
+
// opens there instead of on the standard product page.
|
|
192
|
+
var PRODUCT_PAGES = ${JSON.stringify(productPages)};`
|
|
193
|
+
: ''}
|
|
194
|
+
|
|
195
|
+
function normalizeProductIds(value) {
|
|
196
|
+
var raw = Array.isArray(value) ? value : typeof value === 'string' ? value.split(',') : [];
|
|
197
|
+
var ids = [];
|
|
198
|
+
for (var i = 0; i < raw.length && ids.length < MAX_PRODUCT_IDS; i++) {
|
|
199
|
+
var id = String(raw[i] == null ? '' : raw[i]).trim();
|
|
200
|
+
if (id && ids.indexOf(id) === -1) {
|
|
201
|
+
ids.push(id);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return ids;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
async function withClient(run) {
|
|
208
|
+
var client = getClient();
|
|
209
|
+
try {
|
|
210
|
+
await client.connect();
|
|
211
|
+
return await run(client);
|
|
212
|
+
} finally {
|
|
213
|
+
try { await client.end(); } catch (e) {}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// true when the user holds a subscription in an entitled status to one of the
|
|
218
|
+
// products — to any product when the list is empty.
|
|
219
|
+
async function isSubscriberEntitled(userId, productIds) {
|
|
220
|
+
var id = String(userId == null ? '' : userId).trim();
|
|
221
|
+
if (!id) {
|
|
222
|
+
return false;
|
|
223
|
+
}
|
|
224
|
+
var ids = normalizeProductIds(productIds);
|
|
225
|
+
return withClient(async function (client) {
|
|
226
|
+
var result = await client.query(ENTITLEMENT_SQL, [id, SUBSCRIPTION_ENTITLED_STATUSES, ids]);
|
|
227
|
+
return !!(result && result.rows && result.rows.length > 0);
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// The storefront page of the first product a page names, or null.
|
|
232
|
+
${hasProductPages ? PRODUCT_PAGE_AWARE_REDIRECT : STANDARD_PAGE_REDIRECT}
|
|
233
|
+
|
|
234
|
+
module.exports = {
|
|
235
|
+
SUBSCRIPTION_ENTITLED_STATUSES: SUBSCRIPTION_ENTITLED_STATUSES,
|
|
236
|
+
normalizeProductIds: normalizeProductIds,
|
|
237
|
+
isSubscriberEntitled: isSubscriberEntitled,
|
|
238
|
+
resolveProductRedirect: resolveProductRedirect,
|
|
239
|
+
};
|
|
240
|
+
`;
|
|
241
|
+
};
|
|
242
|
+
exports.generateSubscriberAccessHelperModule = generateSubscriberAccessHelperModule;
|
|
243
|
+
/**
|
|
244
|
+
* `pages/api/auth/subscriber-access.js`: GET only, the session read from the
|
|
245
|
+
* forwarded cookie exactly as the workflow routes read it, then the shared
|
|
246
|
+
* helper. A failed query answers 500 — the middleware treats anything but an
|
|
247
|
+
* `entitled: true` body as "not entitled", so the page fails closed.
|
|
248
|
+
*/
|
|
249
|
+
const generateSubscriberAccessRoute = () => {
|
|
250
|
+
return `'use strict';
|
|
251
|
+
|
|
252
|
+
// GENERATED — see generateSubscriberAccessRoute in
|
|
253
|
+
// @teleporthq/teleport-plugin-next-workflows/src/subscriber-access-route-generator.ts.
|
|
254
|
+
//
|
|
255
|
+
// Asked by the middleware for a subscriber-only page: does the visitor behind
|
|
256
|
+
// this cookie hold an entitled subscription to one of ?products (any, when
|
|
257
|
+
// none are named)? Never cached — a subscription can end between two requests.
|
|
258
|
+
${(0, session_cookie_resolver_1.generateCommonJsSessionTokenResolverCode)()}
|
|
259
|
+
var __subscriberAccess = require('../../../utils/auth/subscriber-access');
|
|
260
|
+
|
|
261
|
+
module.exports = async function handler(req, res) {
|
|
262
|
+
res.setHeader('Cache-Control', 'no-store');
|
|
263
|
+
if (req.method !== 'GET') {
|
|
264
|
+
res.setHeader('Allow', 'GET');
|
|
265
|
+
return res.status(405).json({ error: 'Method not allowed' });
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
var token = null;
|
|
269
|
+
try {
|
|
270
|
+
token = await __tqSessionToken(req);
|
|
271
|
+
} catch (e) {
|
|
272
|
+
token = null;
|
|
273
|
+
}
|
|
274
|
+
var userId = token && (token.id != null ? token.id : token.sub);
|
|
275
|
+
if (userId == null || String(userId) === '') {
|
|
276
|
+
return res.status(401).json({ error: 'Unauthenticated' });
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
var productIds = __subscriberAccess.normalizeProductIds(req.query && req.query.products);
|
|
280
|
+
var entitled = false;
|
|
281
|
+
try {
|
|
282
|
+
entitled = await __subscriberAccess.isSubscriberEntitled(String(userId), productIds);
|
|
283
|
+
} catch (e) {
|
|
284
|
+
console.error('[subscriber-access] entitlement check failed:', e && e.message ? e.message : e);
|
|
285
|
+
return res.status(500).json({ error: 'Subscription check failed' });
|
|
286
|
+
}
|
|
287
|
+
if (entitled) {
|
|
288
|
+
return res.status(200).json({ entitled: true });
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
var body = { entitled: false };
|
|
292
|
+
var redirectTo = await __subscriberAccess.resolveProductRedirect(productIds);
|
|
293
|
+
if (redirectTo) {
|
|
294
|
+
body.redirectTo = redirectTo;
|
|
295
|
+
}
|
|
296
|
+
return res.status(200).json(body);
|
|
297
|
+
};
|
|
298
|
+
`;
|
|
299
|
+
};
|
|
300
|
+
exports.generateSubscriberAccessRoute = generateSubscriberAccessRoute;
|
|
301
|
+
//# sourceMappingURL=subscriber-access-route-generator.js.map
|