@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
|
@@ -17,5 +17,33 @@ export declare const needsRuntimeStorageRoute: (usedNodeTypes: Set<string>) => b
|
|
|
17
17
|
* Changing one without the other breaks that ordering — a test pins it.
|
|
18
18
|
*/
|
|
19
19
|
export declare const UPLOAD_PROXY_TIMEOUT_MS = 120000;
|
|
20
|
+
/**
|
|
21
|
+
* Who may upload what through `/api/runtime-storage/upload`.
|
|
22
|
+
*
|
|
23
|
+
* The route stores files in the merchant's runtime storage, on the merchant's
|
|
24
|
+
* quota, at a public URL. It used to forward whatever arrived — any type, any
|
|
25
|
+
* size, any `private` flag — and the storage worker checked the file against
|
|
26
|
+
* `allowedMimeTypes` / `maxFileSize` fields the same request supplied, so the
|
|
27
|
+
* caller set its own limits.
|
|
28
|
+
*
|
|
29
|
+
* - The store's own server code (the invoice PDF upload presents the app
|
|
30
|
+
* secret) and a signed-in admin (the admin panel's image, asset and
|
|
31
|
+
* digital-product uploaders) upload as before: any type, private included.
|
|
32
|
+
* - Everyone else — a shopper's review photos, profile photo, a product
|
|
33
|
+
* option's print file, the upload widget on a public page — gets the limits
|
|
34
|
+
* of THIS route: the image and PDF types those uploaders accept, each file
|
|
35
|
+
* proven by its first bytes (never SVG: it runs script where it is served),
|
|
36
|
+
* at most VISITOR_MAX_FILE_BYTES per file and VISITOR_MAX_FILES per request,
|
|
37
|
+
* and never a private file. The fields the request sends can only narrow that.
|
|
38
|
+
*
|
|
39
|
+
* A signed-out visitor is NOT refused: a product option's file is chosen before
|
|
40
|
+
* the shopper decides whether to sign in (its custom node is declared
|
|
41
|
+
* guest-scoped), and the upload widget may sit on a public page. Refusing
|
|
42
|
+
* guests here would break both; the per-file proof and caps are what bound them.
|
|
43
|
+
*/
|
|
44
|
+
export declare const TRUSTED_UPLOAD_ROLES: ReadonlyArray<string>;
|
|
45
|
+
export declare const VISITOR_UPLOAD_MIME_TYPES: ReadonlyArray<string>;
|
|
46
|
+
export declare const VISITOR_MAX_FILE_BYTES: number;
|
|
47
|
+
export declare const VISITOR_MAX_FILES = 10;
|
|
20
48
|
export declare const generateRuntimeStorageUploadRoute: () => string;
|
|
21
49
|
//# sourceMappingURL=runtime-storage-generator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-storage-generator.d.ts","sourceRoot":"","sources":["../../src/runtime-storage-generator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtime-storage-generator.d.ts","sourceRoot":"","sources":["../../src/runtime-storage-generator.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,wBAAwB,kBAAmB,IAAI,MAAM,CAAC,KAAG,OAOrE,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,uBAAuB,SAAS,CAAA;AAE7C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,MAAM,CAAa,CAAA;AACpE,eAAO,MAAM,yBAAyB,EAAE,aAAa,CAAC,MAAM,CAM3D,CAAA;AACD,eAAO,MAAM,sBAAsB,QAAkB,CAAA;AACrD,eAAO,MAAM,iBAAiB,KAAK,CAAA;AAEnC,eAAO,MAAM,iCAAiC,QAAO,MAgSpD,CAAA"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { generateCommonJsSessionTokenResolverCode } from './session-cookie-resolver';
|
|
2
|
+
import { ROLE_OF_TOKEN_CODE } from './workflow-auth-generator';
|
|
1
3
|
const FILE_STORAGE_NODE_TYPES = new Set([
|
|
2
4
|
'file-storage-upload',
|
|
3
5
|
'file-storage-list',
|
|
@@ -30,6 +32,40 @@ export const needsRuntimeStorageRoute = (usedNodeTypes) => {
|
|
|
30
32
|
* Changing one without the other breaks that ordering — a test pins it.
|
|
31
33
|
*/
|
|
32
34
|
export const UPLOAD_PROXY_TIMEOUT_MS = 120000;
|
|
35
|
+
/**
|
|
36
|
+
* Who may upload what through `/api/runtime-storage/upload`.
|
|
37
|
+
*
|
|
38
|
+
* The route stores files in the merchant's runtime storage, on the merchant's
|
|
39
|
+
* quota, at a public URL. It used to forward whatever arrived — any type, any
|
|
40
|
+
* size, any `private` flag — and the storage worker checked the file against
|
|
41
|
+
* `allowedMimeTypes` / `maxFileSize` fields the same request supplied, so the
|
|
42
|
+
* caller set its own limits.
|
|
43
|
+
*
|
|
44
|
+
* - The store's own server code (the invoice PDF upload presents the app
|
|
45
|
+
* secret) and a signed-in admin (the admin panel's image, asset and
|
|
46
|
+
* digital-product uploaders) upload as before: any type, private included.
|
|
47
|
+
* - Everyone else — a shopper's review photos, profile photo, a product
|
|
48
|
+
* option's print file, the upload widget on a public page — gets the limits
|
|
49
|
+
* of THIS route: the image and PDF types those uploaders accept, each file
|
|
50
|
+
* proven by its first bytes (never SVG: it runs script where it is served),
|
|
51
|
+
* at most VISITOR_MAX_FILE_BYTES per file and VISITOR_MAX_FILES per request,
|
|
52
|
+
* and never a private file. The fields the request sends can only narrow that.
|
|
53
|
+
*
|
|
54
|
+
* A signed-out visitor is NOT refused: a product option's file is chosen before
|
|
55
|
+
* the shopper decides whether to sign in (its custom node is declared
|
|
56
|
+
* guest-scoped), and the upload widget may sit on a public page. Refusing
|
|
57
|
+
* guests here would break both; the per-file proof and caps are what bound them.
|
|
58
|
+
*/
|
|
59
|
+
export const TRUSTED_UPLOAD_ROLES = ['admin'];
|
|
60
|
+
export const VISITOR_UPLOAD_MIME_TYPES = [
|
|
61
|
+
'image/jpeg',
|
|
62
|
+
'image/png',
|
|
63
|
+
'image/webp',
|
|
64
|
+
'image/gif',
|
|
65
|
+
'application/pdf',
|
|
66
|
+
];
|
|
67
|
+
export const VISITOR_MAX_FILE_BYTES = 5 * 1024 * 1024;
|
|
68
|
+
export const VISITOR_MAX_FILES = 10;
|
|
33
69
|
export const generateRuntimeStorageUploadRoute = () => {
|
|
34
70
|
return `var RUNTIME_STORAGE_URL = process.env.RUNTIME_STORAGE_URL;
|
|
35
71
|
var RUNTIME_STORAGE_API_KEY = process.env.RUNTIME_STORAGE_API_KEY;
|
|
@@ -39,6 +75,165 @@ var RUNTIME_STORAGE_PROJECT_ID = process.env.RUNTIME_STORAGE_PROJECT_ID;
|
|
|
39
75
|
// must become a 504, never a request the browser waits on forever.
|
|
40
76
|
var UPLOAD_TIMEOUT_MS = ${UPLOAD_PROXY_TIMEOUT_MS};
|
|
41
77
|
|
|
78
|
+
${generateCommonJsSessionTokenResolverCode()}
|
|
79
|
+
${ROLE_OF_TOKEN_CODE}
|
|
80
|
+
|
|
81
|
+
// What a visitor may upload — see TRUSTED_UPLOAD_ROLES in the generator.
|
|
82
|
+
var TRUSTED_UPLOAD_ROLES = ${JSON.stringify(TRUSTED_UPLOAD_ROLES)};
|
|
83
|
+
var VISITOR_UPLOAD_MIME_TYPES = ${JSON.stringify(VISITOR_UPLOAD_MIME_TYPES)};
|
|
84
|
+
var VISITOR_MAX_FILE_BYTES = ${VISITOR_MAX_FILE_BYTES};
|
|
85
|
+
var VISITOR_MAX_FILES = ${VISITOR_MAX_FILES};
|
|
86
|
+
// The files plus room for the form's own fields and part headers.
|
|
87
|
+
var VISITOR_MAX_REQUEST_BYTES = VISITOR_MAX_FILES * VISITOR_MAX_FILE_BYTES + 256 * 1024;
|
|
88
|
+
|
|
89
|
+
var CRLF = Buffer.from([13, 10]);
|
|
90
|
+
var BLANK_LINE = Buffer.from([13, 10, 13, 10]);
|
|
91
|
+
|
|
92
|
+
// Only server code can read NEXTAUTH_SECRET, so a browser cannot present it.
|
|
93
|
+
function presentsAppSecret(req) {
|
|
94
|
+
var given = req && req.headers ? req.headers['x-internal-data-secret'] : '';
|
|
95
|
+
var expected = process.env.NEXTAUTH_SECRET;
|
|
96
|
+
if (typeof given !== 'string' || !given || !expected) return false;
|
|
97
|
+
var a = Buffer.from(given);
|
|
98
|
+
var b = Buffer.from(String(expected));
|
|
99
|
+
return a.length === b.length && require('crypto').timingSafeEqual(a, b);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
async function isTrustedUploader(req) {
|
|
103
|
+
if (presentsAppSecret(req)) return true;
|
|
104
|
+
var token = null;
|
|
105
|
+
try {
|
|
106
|
+
token = await __tqSessionToken(req);
|
|
107
|
+
} catch (e) {
|
|
108
|
+
token = null;
|
|
109
|
+
}
|
|
110
|
+
var role = roleOf(token);
|
|
111
|
+
return !!role && TRUSTED_UPLOAD_ROLES.indexOf(role) !== -1;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
function refuse(res, status, code, message) {
|
|
115
|
+
res.status(status).json({ error: code, message: message });
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// The whole request body, or an error with code UPLOAD_TOO_LARGE past limit.
|
|
119
|
+
function readBody(req, limit) {
|
|
120
|
+
return new Promise(function (resolve, reject) {
|
|
121
|
+
var chunks = [];
|
|
122
|
+
var size = 0;
|
|
123
|
+
var settled = false;
|
|
124
|
+
req.on('data', function (chunk) {
|
|
125
|
+
if (settled) return;
|
|
126
|
+
size += chunk.length;
|
|
127
|
+
if (size > limit) {
|
|
128
|
+
settled = true;
|
|
129
|
+
var err = new Error('Upload too large');
|
|
130
|
+
err.code = 'UPLOAD_TOO_LARGE';
|
|
131
|
+
reject(err);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
chunks.push(chunk);
|
|
135
|
+
});
|
|
136
|
+
req.on('end', function () {
|
|
137
|
+
if (settled) return;
|
|
138
|
+
settled = true;
|
|
139
|
+
resolve(Buffer.concat(chunks));
|
|
140
|
+
});
|
|
141
|
+
req.on('error', function (err) {
|
|
142
|
+
if (settled) return;
|
|
143
|
+
settled = true;
|
|
144
|
+
reject(err);
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
function multipartBoundary(contentType) {
|
|
150
|
+
var match = /boundary=(?:"([^"]+)"|([^;]+))/i.exec(String(contentType || ''));
|
|
151
|
+
return match ? (match[1] || match[2] || '').trim() : '';
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
function readPart(headerText, data) {
|
|
155
|
+
var part = { name: '', filename: null, type: '', data: data };
|
|
156
|
+
var lines = headerText.split(String.fromCharCode(13, 10));
|
|
157
|
+
for (var i = 0; i < lines.length; i++) {
|
|
158
|
+
var colon = lines[i].indexOf(':');
|
|
159
|
+
if (colon <= 0) continue;
|
|
160
|
+
var key = lines[i].slice(0, colon).trim().toLowerCase();
|
|
161
|
+
var value = lines[i].slice(colon + 1).trim();
|
|
162
|
+
if (key === 'content-disposition') {
|
|
163
|
+
var name = /[; ]name="([^"]*)"/i.exec(value);
|
|
164
|
+
var filename = /filename="([^"]*)"/i.exec(value);
|
|
165
|
+
part.name = name ? name[1] : '';
|
|
166
|
+
part.filename = filename ? filename[1] : null;
|
|
167
|
+
} else if (key === 'content-type') {
|
|
168
|
+
part.type = value.split(';')[0].trim().toLowerCase();
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return part;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// The form's parts, or null when the body is not well-formed multipart.
|
|
175
|
+
function parseMultipart(body, boundary) {
|
|
176
|
+
var delimiter = Buffer.from('--' + boundary);
|
|
177
|
+
var separator = Buffer.concat([CRLF, delimiter]);
|
|
178
|
+
var start = body.indexOf(delimiter);
|
|
179
|
+
if (start === -1) return null;
|
|
180
|
+
var parts = [];
|
|
181
|
+
var cursor = start + delimiter.length;
|
|
182
|
+
while (cursor + 1 < body.length) {
|
|
183
|
+
// '--' closes the form; CRLF opens the next part.
|
|
184
|
+
if (body[cursor] === 45 && body[cursor + 1] === 45) return parts;
|
|
185
|
+
if (body[cursor] !== 13 || body[cursor + 1] !== 10) return null;
|
|
186
|
+
var headerEnd = body.indexOf(BLANK_LINE, cursor + 2);
|
|
187
|
+
if (headerEnd === -1) return null;
|
|
188
|
+
var next = body.indexOf(separator, headerEnd + 4);
|
|
189
|
+
if (next === -1) return null;
|
|
190
|
+
parts.push(readPart(body.slice(cursor + 2, headerEnd).toString('utf8'), body.slice(headerEnd + 4, next)));
|
|
191
|
+
cursor = next + separator.length;
|
|
192
|
+
}
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// What a file IS, by its first bytes — never what the request says it is.
|
|
197
|
+
function sniffMimeType(data) {
|
|
198
|
+
var head = data.slice(0, 12).toString('latin1');
|
|
199
|
+
if (data.length >= 3 && data[0] === 255 && data[1] === 216 && data[2] === 255) return 'image/jpeg';
|
|
200
|
+
if (head.slice(0, 8) === String.fromCharCode(137, 80, 78, 71, 13, 10, 26, 10)) return 'image/png';
|
|
201
|
+
if (head.slice(0, 6) === 'GIF87a' || head.slice(0, 6) === 'GIF89a') return 'image/gif';
|
|
202
|
+
if (head.slice(0, 4) === 'RIFF' && head.slice(8, 12) === 'WEBP') return 'image/webp';
|
|
203
|
+
if (head.slice(0, 5) === '%PDF-') return 'application/pdf';
|
|
204
|
+
return '';
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
var DECLARED_TYPE_ALIASES = { 'image/jpg': 'image/jpeg', 'image/pjpeg': 'image/jpeg' };
|
|
208
|
+
|
|
209
|
+
// null when a visitor may upload this form, else the refusal.
|
|
210
|
+
function visitorUploadRefusal(parts) {
|
|
211
|
+
var files = 0;
|
|
212
|
+
for (var i = 0; i < parts.length; i++) {
|
|
213
|
+
var part = parts[i];
|
|
214
|
+
if (part.filename === null) {
|
|
215
|
+
if (part.name === 'private' && String(part.data.toString('utf8')).trim() === 'true') {
|
|
216
|
+
return { status: 403, code: 'UPLOAD_PRIVATE_FORBIDDEN', message: 'Only the store can upload private files.' };
|
|
217
|
+
}
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
files += 1;
|
|
221
|
+
if (files > VISITOR_MAX_FILES) {
|
|
222
|
+
return { status: 413, code: 'TOO_MANY_FILES', message: 'At most ' + VISITOR_MAX_FILES + ' files can be uploaded at once.' };
|
|
223
|
+
}
|
|
224
|
+
if (part.data.length > VISITOR_MAX_FILE_BYTES) {
|
|
225
|
+
return { status: 413, code: 'FILE_TOO_LARGE', message: 'Each file can be at most ' + Math.floor(VISITOR_MAX_FILE_BYTES / 1048576) + ' MB.' };
|
|
226
|
+
}
|
|
227
|
+
var actual = sniffMimeType(part.data);
|
|
228
|
+
var declared = DECLARED_TYPE_ALIASES[part.type] || part.type;
|
|
229
|
+
var declaredMatches = !declared || declared === 'application/octet-stream' || declared === actual;
|
|
230
|
+
if (!actual || VISITOR_UPLOAD_MIME_TYPES.indexOf(actual) === -1 || !declaredMatches) {
|
|
231
|
+
return { status: 415, code: 'FILE_TYPE_NOT_ALLOWED', message: 'Only JPG, PNG, WEBP, GIF and PDF files can be uploaded.' };
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return null;
|
|
235
|
+
}
|
|
236
|
+
|
|
42
237
|
module.exports = async function handler(req, res) {
|
|
43
238
|
if (req.method !== 'POST') {
|
|
44
239
|
res.status(405).json({ error: 'Method not allowed' });
|
|
@@ -50,6 +245,44 @@ module.exports = async function handler(req, res) {
|
|
|
50
245
|
return;
|
|
51
246
|
}
|
|
52
247
|
|
|
248
|
+
var trusted = await isTrustedUploader(req);
|
|
249
|
+
var body = req;
|
|
250
|
+
var contentLength = req.headers['content-length'];
|
|
251
|
+
|
|
252
|
+
if (!trusted) {
|
|
253
|
+
var declaredLength = parseInt(contentLength, 10);
|
|
254
|
+
if (!isNaN(declaredLength) && declaredLength > VISITOR_MAX_REQUEST_BYTES) {
|
|
255
|
+
refuse(res, 413, 'UPLOAD_TOO_LARGE', 'The upload is too large.');
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
var boundary = multipartBoundary(req.headers['content-type']);
|
|
259
|
+
if (!boundary) {
|
|
260
|
+
refuse(res, 400, 'UPLOAD_INVALID', 'The upload is not a file form.');
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
try {
|
|
264
|
+
body = await readBody(req, VISITOR_MAX_REQUEST_BYTES);
|
|
265
|
+
} catch (readErr) {
|
|
266
|
+
if (readErr && readErr.code === 'UPLOAD_TOO_LARGE') {
|
|
267
|
+
refuse(res, 413, 'UPLOAD_TOO_LARGE', 'The upload is too large.');
|
|
268
|
+
} else {
|
|
269
|
+
refuse(res, 400, 'UPLOAD_INVALID', 'The upload could not be read.');
|
|
270
|
+
}
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
var parts = parseMultipart(body, boundary);
|
|
274
|
+
if (!parts) {
|
|
275
|
+
refuse(res, 400, 'UPLOAD_INVALID', 'The upload is not a file form.');
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
var refusal = visitorUploadRefusal(parts);
|
|
279
|
+
if (refusal) {
|
|
280
|
+
refuse(res, refusal.status, refusal.code, refusal.message);
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
contentLength = String(body.length);
|
|
284
|
+
}
|
|
285
|
+
|
|
53
286
|
var controller = new AbortController();
|
|
54
287
|
var timedOut = false;
|
|
55
288
|
var timer = setTimeout(function () {
|
|
@@ -67,14 +300,16 @@ module.exports = async function handler(req, res) {
|
|
|
67
300
|
if (req.headers['content-type']) {
|
|
68
301
|
headers['content-type'] = req.headers['content-type'];
|
|
69
302
|
}
|
|
70
|
-
if (
|
|
71
|
-
headers['content-length'] =
|
|
303
|
+
if (contentLength) {
|
|
304
|
+
headers['content-length'] = contentLength;
|
|
72
305
|
}
|
|
73
306
|
|
|
74
307
|
var storageRes = await fetch(targetUrl, {
|
|
75
308
|
method: 'POST',
|
|
76
309
|
headers: headers,
|
|
77
|
-
|
|
310
|
+
// A trusted caller's form is streamed through untouched; a visitor's was
|
|
311
|
+
// read in full to be checked, and is forwarded byte for byte.
|
|
312
|
+
body: body,
|
|
78
313
|
duplex: 'half',
|
|
79
314
|
signal: controller.signal,
|
|
80
315
|
});
|
|
@@ -110,7 +345,7 @@ module.exports = async function handler(req, res) {
|
|
|
110
345
|
console.error('Runtime storage upload proxy error:', err);
|
|
111
346
|
res.status(502).json({
|
|
112
347
|
error: 'UPLOAD_PROXY_FAILED',
|
|
113
|
-
message:
|
|
348
|
+
message: 'The upload could not be completed. Please try again.',
|
|
114
349
|
});
|
|
115
350
|
} finally {
|
|
116
351
|
clearTimeout(timer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-storage-generator.js","sourceRoot":"","sources":["../../src/runtime-storage-generator.ts"],"names":[],"mappings":"AAAA,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,qBAAqB;IACrB,mBAAmB;IACnB,0BAA0B;IAC1B,qBAAqB;CACtB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,aAA0B,EAAW,EAAE;IAC9E,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE;QAC9B,IAAI,uBAAuB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YACnC,OAAO,IAAI,CAAA;SACZ;KACF;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAA;AAE7C,MAAM,CAAC,MAAM,iCAAiC,GAAG,GAAW,EAAE;IAC5D,OAAO;;;;;;0BAMiB,uBAAuB
|
|
1
|
+
{"version":3,"file":"runtime-storage-generator.js","sourceRoot":"","sources":["../../src/runtime-storage-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wCAAwC,EAAE,MAAM,2BAA2B,CAAA;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAE9D,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,qBAAqB;IACrB,mBAAmB;IACnB,0BAA0B;IAC1B,qBAAqB;CACtB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,aAA0B,EAAW,EAAE;IAC9E,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE;QAC9B,IAAI,uBAAuB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YACnC,OAAO,IAAI,CAAA;SACZ;KACF;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAA;AAE7C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA0B,CAAC,OAAO,CAAC,CAAA;AACpE,MAAM,CAAC,MAAM,yBAAyB,GAA0B;IAC9D,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,WAAW;IACX,iBAAiB;CAClB,CAAA;AACD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AACrD,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAA;AAEnC,MAAM,CAAC,MAAM,iCAAiC,GAAG,GAAW,EAAE;IAC5D,OAAO;;;;;;0BAMiB,uBAAuB;;EAE/C,wCAAwC,EAAE;EAC1C,kBAAkB;;;6BAGS,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC;kCAC/B,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC;+BAC5C,sBAAsB;0BAC3B,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Q1C,CAAA;AACD,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secret-collector.d.ts","sourceRoot":"","sources":["../../src/secret-collector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA4C,MAAM,4BAA4B,CAAA;AACpG,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"secret-collector.d.ts","sourceRoot":"","sources":["../../src/secret-collector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA4C,MAAM,4BAA4B,CAAA;AACpG,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AA4CrC,eAAO,MAAM,cAAc,cAAe,aAAa,KAAG,WAAW,EAmCpE,CAAA;AAqCD,eAAO,MAAM,sBAAsB,WACzB,OAAO,MAAM,EAAE,OAAO,CAAC,YACrB,MAAM,UACR,MAAM,WACL,WAAW,EAAE,KACrB,OAAO,MAAM,EAAE,OAAO,CAYxB,CAAA;AAwBD,eAAO,MAAM,8BAA8B,cAAe,aAAa,KAAG,MAAM,EA2C/E,CAAA"}
|
|
@@ -21,11 +21,16 @@ const KNOWN_SECRET_FIELDS = {
|
|
|
21
21
|
// Same credentials as the charge: a refund goes back through the provider
|
|
22
22
|
// that took the money.
|
|
23
23
|
'payment-refund': ['secretKey', 'clientId', 'clientSecret'],
|
|
24
|
-
'
|
|
25
|
-
|
|
24
|
+
// A subscription's plan and the merchant's cancel / pause / resume go back
|
|
25
|
+
// through the provider that bills it; Stripe needs no plan.
|
|
26
|
+
'payment-ensure-subscription-plan': ['clientId', 'clientSecret'],
|
|
27
|
+
'payment-manage-subscription': ['secretKey', 'clientId', 'clientSecret'],
|
|
28
|
+
// The subscriber's billing page at the same provider.
|
|
29
|
+
'payment-billing-portal': ['secretKey', 'clientId', 'clientSecret'],
|
|
30
|
+
// Closing an order's open checkout goes back through the provider that opened it.
|
|
31
|
+
'payment-close-checkout': ['secretKey', 'clientId', 'clientSecret'],
|
|
26
32
|
'payment-create-customer': ['secretKey', 'clientId', 'clientSecret'],
|
|
27
33
|
'payment-create-product': ['secretKey'],
|
|
28
|
-
'payment-create-subscription': ['secretKey'],
|
|
29
34
|
'payment-get-customer': ['secretKey'],
|
|
30
35
|
'payment-get-product': ['secretKey'],
|
|
31
36
|
'payment-list-customers': ['secretKey'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secret-collector.js","sourceRoot":"","sources":["../../src/secret-collector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC,MAAM,mBAAmB,GAA6B;IACpD,kBAAkB,EAAE,CAAC,OAAO,CAAC;IAC7B,uBAAuB,EAAE,CAAC,OAAO,CAAC;IAClC,kBAAkB,EAAE,CAAC,OAAO,CAAC;IAC7B,oBAAoB,EAAE,CAAC,OAAO,CAAC;IAC/B,mBAAmB,EAAE,CAAC,OAAO,CAAC;IAC9B,oBAAoB,EAAE,CAAC,OAAO,CAAC;IAC/B,4BAA4B,EAAE,CAAC,OAAO,CAAC;IACvC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;IAC9B,eAAe,EAAE,CAAC,QAAQ,CAAC;IAC3B,gBAAgB,EAAE,CAAC,aAAa,CAAC;IACjC,cAAc,EAAE,CAAC,QAAQ,CAAC;IAC1B,gBAAgB,EAAE,CAAC,QAAQ,CAAC;IAC5B,eAAe,EAAE,CAAC,QAAQ,CAAC;IAC3B,aAAa,EAAE,CAAC,QAAQ,CAAC;IACzB,YAAY,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;IACzC,YAAY,EAAE,CAAC,aAAa,CAAC;IAC7B,sBAAsB,EAAE,EAAE;IAC1B,qBAAqB,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,cAAc,CAAC;IAChE,0EAA0E;IAC1E,uBAAuB;IACvB,gBAAgB,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,cAAc,CAAC;IAC3D,
|
|
1
|
+
{"version":3,"file":"secret-collector.js","sourceRoot":"","sources":["../../src/secret-collector.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,16 @@
|
|
|
17
17
|
* - teleport-gui/packages/workflow-schema/src/security/protected-env-names.ts
|
|
18
18
|
* - teleport-services-worker/src/modules/vercel/security/protected-env-names.ts
|
|
19
19
|
*/
|
|
20
|
-
export declare const PROTECTED_ENV_NAMES: readonly ["TELEPORT_DB_CONNECTION_STRING", "RUNTIME_STORAGE_API_KEY", "RUNTIME_STORAGE_PROJECT_ID", "TELEPORT_PROJECT_TOKEN", "REALTIME_SERVER_API_KEY", "REALTIME_SERVER_URL", "PDF_SERVICE_URL", "PDF_SERVICE_API_KEY"];
|
|
20
|
+
export declare const PROTECTED_ENV_NAMES: readonly ["TELEPORT_DB_CONNECTION_STRING", "RUNTIME_STORAGE_API_KEY", "RUNTIME_STORAGE_PROJECT_ID", "TELEPORT_PROJECT_TOKEN", "REALTIME_SERVER_API_KEY", "REALTIME_SERVER_URL", "PDF_SERVICE_URL", "PDF_SERVICE_API_KEY", "TELEPORT_CRON_SECRET", "TELEPORT_CRON_SECRET_PREVIOUS"];
|
|
21
|
+
/**
|
|
22
|
+
* The merchant's payment-provider credentials, under the name a deploy writes
|
|
23
|
+
* (`STRIPE_SECRET_KEY`) or the one the editor stores (`CONFIGURATION_STRIPE_…`,
|
|
24
|
+
* numbered on a second save). Only the store's payment drivers read them: a
|
|
25
|
+
* server script that could would hand the merchant's API key to any visitor.
|
|
26
|
+
* Mirror of the GUI's `PROTECTED_ENV_NAME_PATTERN`; the runtime guard in
|
|
27
|
+
* `general-custom-js.ts` denies the same names.
|
|
28
|
+
*/
|
|
29
|
+
export declare const PROTECTED_ENV_NAME_PATTERN: RegExp;
|
|
21
30
|
export interface CodegenSecurityViolation {
|
|
22
31
|
workflowId: string;
|
|
23
32
|
workflowName?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security-scanner.d.ts","sourceRoot":"","sources":["../../src/security-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"security-scanner.d.ts","sourceRoot":"","sources":["../../src/security-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,eAAO,MAAM,mBAAmB,oRAWtB,CAAA;AAEV;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,QACqD,CAAA;AAE5F,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,oBAAqB,SAAQ,KAAK;aACjB,UAAU,EAAE,wBAAwB,EAAE;gBAAtC,UAAU,EAAE,wBAAwB,EAAE;CAWnE;AAED,UAAU,gBAAgB;IACxB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC3B;AAED,UAAU,YAAY;IACpB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAA;CAC3B;AAED,UAAU,kBAAkB;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CACzC;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,SAAS,GAAG,IAAI,CA2BjG"}
|
|
@@ -26,7 +26,18 @@ export const PROTECTED_ENV_NAMES = [
|
|
|
26
26
|
'REALTIME_SERVER_URL',
|
|
27
27
|
'PDF_SERVICE_URL',
|
|
28
28
|
'PDF_SERVICE_API_KEY',
|
|
29
|
+
'TELEPORT_CRON_SECRET',
|
|
30
|
+
'TELEPORT_CRON_SECRET_PREVIOUS',
|
|
29
31
|
];
|
|
32
|
+
/**
|
|
33
|
+
* The merchant's payment-provider credentials, under the name a deploy writes
|
|
34
|
+
* (`STRIPE_SECRET_KEY`) or the one the editor stores (`CONFIGURATION_STRIPE_…`,
|
|
35
|
+
* numbered on a second save). Only the store's payment drivers read them: a
|
|
36
|
+
* server script that could would hand the merchant's API key to any visitor.
|
|
37
|
+
* Mirror of the GUI's `PROTECTED_ENV_NAME_PATTERN`; the runtime guard in
|
|
38
|
+
* `general-custom-js.ts` denies the same names.
|
|
39
|
+
*/
|
|
40
|
+
export const PROTECTED_ENV_NAME_PATTERN = /^(?:CONFIGURATION_)?(?:STRIPE|PAYPAL|MOLLIE|RAZORPAY|SQUARE|PADDLE|COINGATE)_[A-Z0-9_]+$/;
|
|
30
41
|
export class CodegenSecurityError extends Error {
|
|
31
42
|
constructor(violations) {
|
|
32
43
|
super(`Codegen blocked by ${violations.length} security violation${violations.length === 1 ? '' : 's'}`);
|
|
@@ -92,6 +103,13 @@ function scanForObviousViolations(rawCode) {
|
|
|
92
103
|
});
|
|
93
104
|
}
|
|
94
105
|
}
|
|
106
|
+
const credentialNames = (code.match(/\b[A-Z][A-Z0-9_]+\b/g) || []).filter((word) => PROTECTED_ENV_NAME_PATTERN.test(word));
|
|
107
|
+
for (const name of Array.from(new Set(credentialNames))) {
|
|
108
|
+
out.push({
|
|
109
|
+
rule: 'protected-env-access',
|
|
110
|
+
message: `references payment credential "${name}"`,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
95
113
|
if (/\beval\s*\(/.test(code)) {
|
|
96
114
|
out.push({ rule: 'sandbox-escape-eval', message: 'calls eval(...)' });
|
|
97
115
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security-scanner.js","sourceRoot":"","sources":["../../src/security-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,+BAA+B;IAC/B,yBAAyB;IACzB,4BAA4B;IAC5B,wBAAwB;IACxB,yBAAyB;IACzB,qBAAqB;IACrB,iBAAiB;IACjB,qBAAqB;
|
|
1
|
+
{"version":3,"file":"security-scanner.js","sourceRoot":"","sources":["../../src/security-scanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { UIDLCustomWorkflowNode, UIDLWorkflowNode } from '@teleporthq/teleport-types';
|
|
2
|
+
/**
|
|
3
|
+
* Which of the page's state a server segment can read.
|
|
4
|
+
*
|
|
5
|
+
* The browser hands a server segment the workflow context it holds, and that
|
|
6
|
+
* context carries `__stateValues` — a snapshot of EVERY state the page has,
|
|
7
|
+
* once at the top level and once inside the trigger context. A checkout page
|
|
8
|
+
* holds its country list, its cart and its order history there; a voucher
|
|
9
|
+
* check reads none of it, yet every request shipped all of it, and every
|
|
10
|
+
* reply echoed it back.
|
|
11
|
+
*
|
|
12
|
+
* What a server segment can read off that bag is fixed when the app is
|
|
13
|
+
* generated, because a server node reads page state only through these:
|
|
14
|
+
* - a whole-string `{{state.<name>...}}` template token
|
|
15
|
+
* (`resolveTemplateTokenString`), or `{{Current User.id}}`, which reads
|
|
16
|
+
* `currentUser`;
|
|
17
|
+
* - a `workflowContext` reference whose path walks through `__stateValues`;
|
|
18
|
+
* - a JS expression evaluated against the context (an expression condition,
|
|
19
|
+
* an expression switch, a while / until loop), which can name the bag —
|
|
20
|
+
* any string that mentions it is taken as reading all of it;
|
|
21
|
+
* - a custom node it calls, whose own nodes may do any of the above; the
|
|
22
|
+
* custom node's inner server segments prune for themselves, but they can
|
|
23
|
+
* only prune what the calling segment carried, so the need is transitive.
|
|
24
|
+
* A custom-JS node cannot: the bag is a reserved key its handler never exposes.
|
|
25
|
+
*
|
|
26
|
+
* The client runtime keeps exactly these entries in the request
|
|
27
|
+
* (`pruneContext`); '*' keeps the whole bag, as before.
|
|
28
|
+
*/
|
|
29
|
+
/** Every state entry travels — an expression may read any of them. */
|
|
30
|
+
export declare const ALL_STATE_KEYS = "*";
|
|
31
|
+
export type SegmentStateKeys = string[] | typeof ALL_STATE_KEYS;
|
|
32
|
+
/**
|
|
33
|
+
* The page-state names the given nodes — and, transitively, the custom nodes
|
|
34
|
+
* they call — can read, sorted; or '*' when one of them evaluates an
|
|
35
|
+
* expression that may read the whole bag.
|
|
36
|
+
*/
|
|
37
|
+
export declare const collectSegmentStateKeys: (nodes: UIDLWorkflowNode[], customNodes: Record<string, UIDLCustomWorkflowNode> | undefined) => SegmentStateKeys;
|
|
38
|
+
//# sourceMappingURL=segment-context-needs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segment-context-needs.d.ts","sourceRoot":"","sources":["../../src/segment-context-needs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAErF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,sEAAsE;AACtE,eAAO,MAAM,cAAc,MAAM,CAAA;AAEjC,MAAM,MAAM,gBAAgB,GAAG,MAAM,EAAE,GAAG,OAAO,cAAc,CAAA;AAsG/D;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,UAC3B,gBAAgB,EAAE,eACZ,OAAO,MAAM,EAAE,sBAAsB,CAAC,GAAG,SAAS,KAC9D,gBAIF,CAAA"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which of the page's state a server segment can read.
|
|
3
|
+
*
|
|
4
|
+
* The browser hands a server segment the workflow context it holds, and that
|
|
5
|
+
* context carries `__stateValues` — a snapshot of EVERY state the page has,
|
|
6
|
+
* once at the top level and once inside the trigger context. A checkout page
|
|
7
|
+
* holds its country list, its cart and its order history there; a voucher
|
|
8
|
+
* check reads none of it, yet every request shipped all of it, and every
|
|
9
|
+
* reply echoed it back.
|
|
10
|
+
*
|
|
11
|
+
* What a server segment can read off that bag is fixed when the app is
|
|
12
|
+
* generated, because a server node reads page state only through these:
|
|
13
|
+
* - a whole-string `{{state.<name>...}}` template token
|
|
14
|
+
* (`resolveTemplateTokenString`), or `{{Current User.id}}`, which reads
|
|
15
|
+
* `currentUser`;
|
|
16
|
+
* - a `workflowContext` reference whose path walks through `__stateValues`;
|
|
17
|
+
* - a JS expression evaluated against the context (an expression condition,
|
|
18
|
+
* an expression switch, a while / until loop), which can name the bag —
|
|
19
|
+
* any string that mentions it is taken as reading all of it;
|
|
20
|
+
* - a custom node it calls, whose own nodes may do any of the above; the
|
|
21
|
+
* custom node's inner server segments prune for themselves, but they can
|
|
22
|
+
* only prune what the calling segment carried, so the need is transitive.
|
|
23
|
+
* A custom-JS node cannot: the bag is a reserved key its handler never exposes.
|
|
24
|
+
*
|
|
25
|
+
* The client runtime keeps exactly these entries in the request
|
|
26
|
+
* (`pruneContext`); '*' keeps the whole bag, as before.
|
|
27
|
+
*/
|
|
28
|
+
/** Every state entry travels — an expression may read any of them. */
|
|
29
|
+
export const ALL_STATE_KEYS = '*';
|
|
30
|
+
const STATE_BAG_KEY = '__stateValues';
|
|
31
|
+
/** The state a `{{Current User.id}}` / `{{currentUser.id}}` token reads. */
|
|
32
|
+
const CURRENT_USER_STATE_KEY = 'currentUser';
|
|
33
|
+
const STATE_TOKEN_PATTERN = /\{\{\s*state\.([A-Za-z_$][\w$]*)/g;
|
|
34
|
+
const CURRENT_USER_TOKEN_PATTERN = /\{\{\s*(?:Current User\.id|currentUser\.id)\s*\}\}/;
|
|
35
|
+
const collectFromString = (value, into) => {
|
|
36
|
+
if (value.indexOf(STATE_BAG_KEY) !== -1) {
|
|
37
|
+
into.all = true;
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (value.indexOf('{{') === -1) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
STATE_TOKEN_PATTERN.lastIndex = 0;
|
|
44
|
+
let match = STATE_TOKEN_PATTERN.exec(value);
|
|
45
|
+
while (match) {
|
|
46
|
+
into.keys.add(match[1]);
|
|
47
|
+
match = STATE_TOKEN_PATTERN.exec(value);
|
|
48
|
+
}
|
|
49
|
+
if (CURRENT_USER_TOKEN_PATTERN.test(value)) {
|
|
50
|
+
into.keys.add(CURRENT_USER_STATE_KEY);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
const collectFromContextRef = (path, into) => {
|
|
54
|
+
const bagIndex = path.indexOf(STATE_BAG_KEY);
|
|
55
|
+
if (bagIndex === -1) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const stateName = path[bagIndex + 1];
|
|
59
|
+
if (typeof stateName === 'string' && stateName.length > 0) {
|
|
60
|
+
into.keys.add(stateName);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
into.all = true;
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
const collectFromValue = (value, into) => {
|
|
67
|
+
if (into.all) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (typeof value === 'string') {
|
|
71
|
+
collectFromString(value, into);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
if (Array.isArray(value)) {
|
|
75
|
+
for (const entry of value) {
|
|
76
|
+
collectFromValue(entry, into);
|
|
77
|
+
}
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (!value || typeof value !== 'object') {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const record = value;
|
|
84
|
+
if (record.type === 'workflowContext' && Array.isArray(record.path)) {
|
|
85
|
+
// A reference names the bag in its path on purpose; that is a walk into
|
|
86
|
+
// one state, not an expression that may read all of them.
|
|
87
|
+
collectFromContextRef(record.path, into);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
for (const key of Object.keys(record)) {
|
|
91
|
+
collectFromValue(record[key], into);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
const collectFromNodes = (nodes, customNodes, visited, into) => {
|
|
95
|
+
for (const node of nodes) {
|
|
96
|
+
if (into.all) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const config = (node.config || {});
|
|
100
|
+
collectFromValue(config, into);
|
|
101
|
+
if (node.type !== 'general-custom-node' || !customNodes) {
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
const customNodeId = config.customNodeId;
|
|
105
|
+
if (typeof customNodeId !== 'string' || visited.has(customNodeId)) {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
visited.add(customNodeId);
|
|
109
|
+
const customNode = customNodes[customNodeId];
|
|
110
|
+
if (customNode && Array.isArray(customNode.nodes)) {
|
|
111
|
+
collectFromNodes(customNode.nodes, customNodes, visited, into);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* The page-state names the given nodes — and, transitively, the custom nodes
|
|
117
|
+
* they call — can read, sorted; or '*' when one of them evaluates an
|
|
118
|
+
* expression that may read the whole bag.
|
|
119
|
+
*/
|
|
120
|
+
export const collectSegmentStateKeys = (nodes, customNodes) => {
|
|
121
|
+
const into = { keys: new Set(), all: false };
|
|
122
|
+
collectFromNodes(nodes, customNodes, new Set(), into);
|
|
123
|
+
return into.all ? ALL_STATE_KEYS : Array.from(into.keys).sort();
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=segment-context-needs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segment-context-needs.js","sourceRoot":"","sources":["../../src/segment-context-needs.ts"],"names":[],"mappings":"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"}
|