@teleporthq/teleport-plugin-next-workflows 0.44.11 → 0.45.0
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/fake-fetch.ts +75 -0
- package/__tests__/_helpers/gui-place-order-statements.ts +17 -0
- package/__tests__/_helpers/inserted-lines.ts +22 -0
- package/__tests__/_helpers/invoice-store.ts +10 -1
- package/__tests__/_helpers/load-security-runtime.ts +45 -0
- package/__tests__/_helpers/load-server-runtime.ts +26 -3
- package/__tests__/_helpers/run-account-delete-route.ts +3 -1
- package/__tests__/_helpers/run-generated-middleware.ts +7 -2
- package/__tests__/account-delete-owned-rows.test.ts +3 -1
- package/__tests__/adopted-element-trigger-code.test.ts +128 -0
- package/__tests__/analytics-track-outcome.test.ts +145 -0
- package/__tests__/auth-password-change-ends-sessions.test.ts +8 -1
- package/__tests__/auth-password-security.test.ts +2275 -0
- package/__tests__/auth-session-cost.test.ts +31 -0
- package/__tests__/auth-signup-route.test.ts +960 -0
- package/__tests__/authored-code-every-path.test.ts +247 -0
- package/__tests__/automations-bus.test.ts +3820 -0
- package/__tests__/automations-catalog-drift.test.ts +97 -0
- package/__tests__/booking-calendar-feed-route.test.ts +20 -3
- package/__tests__/cart-price-order.test.ts +336 -1
- package/__tests__/code-lookup-rate-limit-route.test.ts +189 -0
- package/__tests__/cost-bearing-node-types.test.ts +119 -0
- package/__tests__/credential-columns-reply.test.ts +9 -0
- package/__tests__/credential-result-reply.test.ts +19 -5
- package/__tests__/cron-route-loop-templateparams.test.ts +6 -3
- package/__tests__/custom-js-authored-code.test.ts +304 -0
- package/__tests__/custom-node-custom-code-gate.test.ts +136 -0
- package/__tests__/custom-node-step-handlers.test.ts +251 -0
- package/__tests__/custom-node-step-reach.test.ts +63 -0
- package/__tests__/data-api-anon-user-id-fallback.test.ts +7 -2
- package/__tests__/data-api-browser-reads.test.ts +7 -0
- package/__tests__/data-api-business-events.test.ts +403 -0
- package/__tests__/data-api-invalid-body.test.ts +7 -0
- package/__tests__/data-api-low-stock-autofire.test.ts +30 -4
- package/__tests__/data-api-optional-feature-columns.test.ts +44 -0
- package/__tests__/data-api-owner-scope-credentials.test.ts +1324 -0
- package/__tests__/data-api-protected-tables.test.ts +48 -15
- package/__tests__/data-api-retired-table-and-account-fields.test.ts +208 -0
- package/__tests__/email-locale-senders.test.ts +5 -3
- package/__tests__/expression-injection.test.ts +343 -0
- package/__tests__/fixtures/admin-file-workflows.json +242 -0
- package/__tests__/form-confirmation-email-template.test.ts +44 -0
- package/__tests__/internal-request-headers.test.ts +25 -0
- package/__tests__/invoice-pdf-service-project-header.test.ts +120 -0
- package/__tests__/invoice-self-call-origin.test.ts +57 -1
- package/__tests__/legacy-webhook-self-calls.test.ts +86 -1
- package/__tests__/middleware-home-route-protection.test.ts +3 -1
- package/__tests__/middleware-subscriber-access.test.ts +1 -1
- package/__tests__/newsletter-admin-route.test.ts +649 -0
- package/__tests__/newsletter-plugin.test.ts +1248 -0
- package/__tests__/outbound-nodes-security.test.ts +1929 -0
- package/__tests__/page-access-guard.test.ts +217 -0
- package/__tests__/page-access-route-table.test.ts +231 -0
- package/__tests__/payment-drivers-module.test.ts +23 -0
- package/__tests__/payment-legacy-webhook-routes.test.ts +100 -5
- package/__tests__/payment-webhook-route.test.ts +4 -1
- package/__tests__/paypal-webhook-signature-verification.test.ts +44 -0
- package/__tests__/place-order-guards.test.ts +506 -0
- package/__tests__/public-step-guards.test.ts +310 -0
- package/__tests__/publish-refusals.test.ts +505 -0
- package/__tests__/realtime-identity-routes.test.ts +492 -0
- package/__tests__/record-event-writer-server-only.test.ts +975 -0
- package/__tests__/resolve-config-template-params.test.ts +3 -3
- package/__tests__/runtime-storage-upload-access.test.ts +280 -17
- package/__tests__/security-integration-env-names.test.ts +74 -0
- package/__tests__/security-lists-parity.test.ts +245 -0
- package/__tests__/security-runtime-shadow.test.ts +224 -1
- package/__tests__/security-runtime.test.ts +893 -0
- package/__tests__/segment-rate-limit-error-branch.test.ts +284 -0
- package/__tests__/segment-route-abuse-gate.test.ts +309 -0
- package/__tests__/server-job-hops-real-data-api.test.ts +669 -0
- package/__tests__/server-session-identity.test.ts +522 -0
- package/__tests__/server-step-chain.test.ts +222 -0
- package/__tests__/server-step-signing.test.ts +107 -2
- package/__tests__/session-cookie-resolver.test.ts +62 -106
- package/__tests__/signup-event.test.ts +649 -0
- package/__tests__/signup-reply-identical.test.ts +144 -0
- package/__tests__/slack-message-escaping.test.ts +123 -0
- package/__tests__/visitor-step-limits.test.ts +318 -0
- package/__tests__/webhook-delivery-lease.test.ts +4 -1
- package/__tests__/webpack-safe-handlers.test.ts +57 -8
- package/__tests__/workflow-auth-guard.test.ts +9 -1
- package/dist/cjs/account-delete-route-generator.d.ts +1 -0
- package/dist/cjs/account-delete-route-generator.d.ts.map +1 -1
- package/dist/cjs/account-delete-route-generator.js +18 -3
- package/dist/cjs/account-delete-route-generator.js.map +1 -1
- package/dist/cjs/api-route-generator.d.ts +52 -3
- package/dist/cjs/api-route-generator.d.ts.map +1 -1
- package/dist/cjs/api-route-generator.js +600 -145
- package/dist/cjs/api-route-generator.js.map +1 -1
- package/dist/cjs/auth-generator.d.ts +126 -3
- package/dist/cjs/auth-generator.d.ts.map +1 -1
- package/dist/cjs/auth-generator.js +1353 -139
- package/dist/cjs/auth-generator.js.map +1 -1
- package/dist/cjs/automations/activity-kicks.d.ts +12 -0
- package/dist/cjs/automations/activity-kicks.d.ts.map +1 -0
- package/dist/cjs/automations/activity-kicks.js +123 -0
- package/dist/cjs/automations/activity-kicks.js.map +1 -0
- package/dist/cjs/automations/app-events-source.d.ts +33 -0
- package/dist/cjs/automations/app-events-source.d.ts.map +1 -0
- package/dist/cjs/automations/app-events-source.js +109 -0
- package/dist/cjs/automations/app-events-source.js.map +1 -0
- package/dist/cjs/automations/automations-project-plugin.d.ts +21 -0
- package/dist/cjs/automations/automations-project-plugin.d.ts.map +1 -0
- package/dist/cjs/automations/automations-project-plugin.js +102 -0
- package/dist/cjs/automations/automations-project-plugin.js.map +1 -0
- package/dist/cjs/automations/automations-scope.d.ts +104 -0
- package/dist/cjs/automations/automations-scope.d.ts.map +1 -0
- package/dist/cjs/automations/automations-scope.js +176 -0
- package/dist/cjs/automations/automations-scope.js.map +1 -0
- package/dist/cjs/automations/dispatcher-source.d.ts +72 -0
- package/dist/cjs/automations/dispatcher-source.d.ts.map +1 -0
- package/dist/cjs/automations/dispatcher-source.js +1008 -0
- package/dist/cjs/automations/dispatcher-source.js.map +1 -0
- package/dist/cjs/automations/event-bus-source.d.ts +44 -0
- package/dist/cjs/automations/event-bus-source.d.ts.map +1 -0
- package/dist/cjs/automations/event-bus-source.js +427 -0
- package/dist/cjs/automations/event-bus-source.js.map +1 -0
- package/dist/cjs/automations/handler-module-generator.d.ts +25 -0
- package/dist/cjs/automations/handler-module-generator.d.ts.map +1 -0
- package/dist/cjs/automations/handler-module-generator.js +78 -0
- package/dist/cjs/automations/handler-module-generator.js.map +1 -0
- package/dist/cjs/automations/hydrators-source.d.ts +33 -0
- package/dist/cjs/automations/hydrators-source.d.ts.map +1 -0
- package/dist/cjs/automations/hydrators-source.js +571 -0
- package/dist/cjs/automations/hydrators-source.js.map +1 -0
- package/dist/cjs/booking-calendar-feed-route-generator.d.ts.map +1 -1
- package/dist/cjs/booking-calendar-feed-route-generator.js +8 -0
- package/dist/cjs/booking-calendar-feed-route-generator.js.map +1 -1
- package/dist/cjs/configured-nextauth-url.d.ts +17 -0
- package/dist/cjs/configured-nextauth-url.d.ts.map +1 -0
- package/dist/cjs/configured-nextauth-url.js +20 -0
- package/dist/cjs/configured-nextauth-url.js.map +1 -0
- package/dist/cjs/cron-request-verification.d.ts +22 -1
- package/dist/cjs/cron-request-verification.d.ts.map +1 -1
- package/dist/cjs/cron-request-verification.js +50 -6
- package/dist/cjs/cron-request-verification.js.map +1 -1
- package/dist/cjs/data-api-route-generator.d.ts +19 -0
- package/dist/cjs/data-api-route-generator.d.ts.map +1 -1
- package/dist/cjs/data-api-route-generator.js +711 -43
- package/dist/cjs/data-api-route-generator.js.map +1 -1
- package/dist/cjs/ecommerce/parameterized-stock-chain.d.ts +3 -1
- package/dist/cjs/ecommerce/parameterized-stock-chain.d.ts.map +1 -1
- package/dist/cjs/ecommerce/parameterized-stock-chain.js +45 -5
- package/dist/cjs/ecommerce/parameterized-stock-chain.js.map +1 -1
- package/dist/cjs/ecommerce/place-order-guards.d.ts +126 -0
- package/dist/cjs/ecommerce/place-order-guards.d.ts.map +1 -0
- package/dist/cjs/ecommerce/place-order-guards.js +670 -0
- package/dist/cjs/ecommerce/place-order-guards.js.map +1 -0
- package/dist/cjs/ecommerce-customhandler-rewriter.d.ts +2 -0
- package/dist/cjs/ecommerce-customhandler-rewriter.d.ts.map +1 -1
- package/dist/cjs/ecommerce-customhandler-rewriter.js +38 -2
- package/dist/cjs/ecommerce-customhandler-rewriter.js.map +1 -1
- package/dist/cjs/executor-generator.d.ts.map +1 -1
- package/dist/cjs/executor-generator.js +368 -60
- package/dist/cjs/executor-generator.js.map +1 -1
- package/dist/cjs/graph-utils.d.ts +9 -0
- package/dist/cjs/graph-utils.d.ts.map +1 -1
- package/dist/cjs/graph-utils.js +32 -1
- package/dist/cjs/graph-utils.js.map +1 -1
- package/dist/cjs/index.d.ts +20 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +72 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/invoice/api-routes-code.d.ts +9 -3
- package/dist/cjs/invoice/api-routes-code.d.ts.map +1 -1
- package/dist/cjs/invoice/api-routes-code.js +9 -7
- package/dist/cjs/invoice/api-routes-code.js.map +1 -1
- package/dist/cjs/invoice/index.d.ts.map +1 -1
- package/dist/cjs/invoice/index.js +12 -7
- package/dist/cjs/invoice/index.js.map +1 -1
- package/dist/cjs/invoice/invoice-assembly-code.d.ts.map +1 -1
- package/dist/cjs/invoice/invoice-assembly-code.js +8 -3
- package/dist/cjs/invoice/invoice-assembly-code.js.map +1 -1
- package/dist/cjs/invoice/pdf-generator-code.d.ts.map +1 -1
- package/dist/cjs/invoice/pdf-generator-code.js +2 -1
- package/dist/cjs/invoice/pdf-generator-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 +15 -7
- package/dist/cjs/invoice/pdf-service-client-code.js.map +1 -1
- package/dist/cjs/newsletter/admin-route-code.d.ts +60 -0
- package/dist/cjs/newsletter/admin-route-code.d.ts.map +1 -0
- package/dist/cjs/newsletter/admin-route-code.js +300 -0
- package/dist/cjs/newsletter/admin-route-code.js.map +1 -0
- package/dist/cjs/newsletter/helper-code.d.ts +109 -0
- package/dist/cjs/newsletter/helper-code.d.ts.map +1 -0
- package/dist/cjs/newsletter/helper-code.js +662 -0
- package/dist/cjs/newsletter/helper-code.js.map +1 -0
- package/dist/cjs/newsletter/newsletter-scope.d.ts +65 -0
- package/dist/cjs/newsletter/newsletter-scope.d.ts.map +1 -0
- package/dist/cjs/newsletter/newsletter-scope.js +103 -0
- package/dist/cjs/newsletter/newsletter-scope.js.map +1 -0
- package/dist/cjs/newsletter/project-plugin.d.ts +18 -0
- package/dist/cjs/newsletter/project-plugin.d.ts.map +1 -0
- package/dist/cjs/newsletter/project-plugin.js +97 -0
- package/dist/cjs/newsletter/project-plugin.js.map +1 -0
- package/dist/cjs/newsletter/routes-code.d.ts +6 -0
- package/dist/cjs/newsletter/routes-code.d.ts.map +1 -0
- package/dist/cjs/newsletter/routes-code.js +181 -0
- package/dist/cjs/newsletter/routes-code.js.map +1 -0
- package/dist/cjs/nodes/account/account-compare-passwords.d.ts.map +1 -1
- package/dist/cjs/nodes/account/account-compare-passwords.js +16 -6
- package/dist/cjs/nodes/account/account-compare-passwords.js.map +1 -1
- package/dist/cjs/nodes/account/account-delete-current.js +1 -1
- package/dist/cjs/nodes/account/account-get-current.js +1 -1
- package/dist/cjs/nodes/account/account-hash-password.d.ts.map +1 -1
- package/dist/cjs/nodes/account/account-hash-password.js +15 -3
- package/dist/cjs/nodes/account/account-hash-password.js.map +1 -1
- package/dist/cjs/nodes/account/account-login.d.ts.map +1 -1
- package/dist/cjs/nodes/account/account-login.js +23 -6
- package/dist/cjs/nodes/account/account-login.js.map +1 -1
- package/dist/cjs/nodes/account/account-logout.js +1 -1
- package/dist/cjs/nodes/account/account-refresh-session.js +1 -1
- package/dist/cjs/nodes/account/account-request-password-reset.d.ts +3 -0
- package/dist/cjs/nodes/account/account-request-password-reset.d.ts.map +1 -0
- package/dist/cjs/nodes/account/account-request-password-reset.js +46 -0
- package/dist/cjs/nodes/account/account-request-password-reset.js.map +1 -0
- package/dist/cjs/nodes/account/account-reset-password.d.ts +3 -0
- package/dist/cjs/nodes/account/account-reset-password.d.ts.map +1 -0
- package/dist/cjs/nodes/account/account-reset-password.js +44 -0
- package/dist/cjs/nodes/account/account-reset-password.js.map +1 -0
- package/dist/cjs/nodes/account/account-signup.d.ts.map +1 -1
- package/dist/cjs/nodes/account/account-signup.js +82 -19
- package/dist/cjs/nodes/account/account-signup.js.map +1 -1
- package/dist/cjs/nodes/account/account-social-login.js +1 -1
- package/dist/cjs/nodes/ai/ai-custom-prompt.d.ts.map +1 -1
- package/dist/cjs/nodes/ai/ai-custom-prompt.js +20 -5
- package/dist/cjs/nodes/ai/ai-custom-prompt.js.map +1 -1
- package/dist/cjs/nodes/ai/ai-detect-language.d.ts.map +1 -1
- package/dist/cjs/nodes/ai/ai-detect-language.js +20 -5
- package/dist/cjs/nodes/ai/ai-detect-language.js.map +1 -1
- package/dist/cjs/nodes/ai/ai-generate-text-embedding.d.ts.map +1 -1
- package/dist/cjs/nodes/ai/ai-generate-text-embedding.js +10 -2
- package/dist/cjs/nodes/ai/ai-generate-text-embedding.js.map +1 -1
- package/dist/cjs/nodes/ai/ai-provider-utils-sources.generated.js +2 -2
- package/dist/cjs/nodes/ai/ai-provider-utils-sources.generated.js.map +1 -1
- package/dist/cjs/nodes/ai/ai-provider-utils.d.ts +31 -2
- package/dist/cjs/nodes/ai/ai-provider-utils.d.ts.map +1 -1
- package/dist/cjs/nodes/ai/ai-provider-utils.js +125 -11
- package/dist/cjs/nodes/ai/ai-provider-utils.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 -2
- package/dist/cjs/nodes/ai/ai-select-database-data.js.map +1 -1
- package/dist/cjs/nodes/ai/ai-sentiment-analysis.d.ts.map +1 -1
- package/dist/cjs/nodes/ai/ai-sentiment-analysis.js +20 -5
- package/dist/cjs/nodes/ai/ai-sentiment-analysis.js.map +1 -1
- package/dist/cjs/nodes/ai/ai-summarization.d.ts.map +1 -1
- package/dist/cjs/nodes/ai/ai-summarization.js +20 -5
- package/dist/cjs/nodes/ai/ai-summarization.js.map +1 -1
- package/dist/cjs/nodes/ai/ai-text-classifier.d.ts.map +1 -1
- package/dist/cjs/nodes/ai/ai-text-classifier.js +20 -5
- package/dist/cjs/nodes/ai/ai-text-classifier.js.map +1 -1
- package/dist/cjs/nodes/ai/ai-text-transform.d.ts.map +1 -1
- package/dist/cjs/nodes/ai/ai-text-transform.js +20 -5
- package/dist/cjs/nodes/ai/ai-text-transform.js.map +1 -1
- package/dist/cjs/nodes/analytics/analytics-track-outcome.d.ts +3 -0
- package/dist/cjs/nodes/analytics/analytics-track-outcome.d.ts.map +1 -0
- package/dist/cjs/nodes/analytics/analytics-track-outcome.js +110 -0
- package/dist/cjs/nodes/analytics/analytics-track-outcome.js.map +1 -0
- package/dist/cjs/nodes/cart/cart-price-order.d.ts.map +1 -1
- package/dist/cjs/nodes/cart/cart-price-order.js +161 -2
- package/dist/cjs/nodes/cart/cart-price-order.js.map +1 -1
- package/dist/cjs/nodes/cost-bearing-node-types.d.ts +4 -0
- package/dist/cjs/nodes/cost-bearing-node-types.d.ts.map +1 -0
- package/dist/cjs/nodes/cost-bearing-node-types.js +43 -0
- package/dist/cjs/nodes/cost-bearing-node-types.js.map +1 -0
- package/dist/cjs/nodes/data/data-select.d.ts.map +1 -1
- package/dist/cjs/nodes/data/data-select.js +12 -2
- package/dist/cjs/nodes/data/data-select.js.map +1 -1
- package/dist/cjs/nodes/email/email-mailersend.d.ts.map +1 -1
- package/dist/cjs/nodes/email/email-mailersend.js +15 -11
- package/dist/cjs/nodes/email/email-mailersend.js.map +1 -1
- package/dist/cjs/nodes/email/email-mailgun.d.ts.map +1 -1
- package/dist/cjs/nodes/email/email-mailgun.js +15 -15
- package/dist/cjs/nodes/email/email-mailgun.js.map +1 -1
- package/dist/cjs/nodes/email/email-postmark.d.ts.map +1 -1
- package/dist/cjs/nodes/email/email-postmark.js +15 -15
- package/dist/cjs/nodes/email/email-postmark.js.map +1 -1
- package/dist/cjs/nodes/email/email-resend.d.ts.map +1 -1
- package/dist/cjs/nodes/email/email-resend.js +15 -15
- package/dist/cjs/nodes/email/email-resend.js.map +1 -1
- package/dist/cjs/nodes/email/email-sendgrid.d.ts.map +1 -1
- package/dist/cjs/nodes/email/email-sendgrid.js +15 -15
- package/dist/cjs/nodes/email/email-sendgrid.js.map +1 -1
- package/dist/cjs/nodes/email/html-escape-code.d.ts +3 -0
- package/dist/cjs/nodes/email/html-escape-code.d.ts.map +1 -0
- package/dist/cjs/nodes/email/html-escape-code.js +23 -0
- package/dist/cjs/nodes/email/html-escape-code.js.map +1 -0
- package/dist/cjs/nodes/email/message-trust.d.ts +40 -0
- package/dist/cjs/nodes/email/message-trust.d.ts.map +1 -0
- package/dist/cjs/nodes/email/message-trust.js +167 -0
- package/dist/cjs/nodes/email/message-trust.js.map +1 -0
- package/dist/cjs/nodes/email/outbound-message-guard.d.ts +113 -0
- package/dist/cjs/nodes/email/outbound-message-guard.d.ts.map +1 -0
- package/dist/cjs/nodes/email/outbound-message-guard.js +460 -0
- package/dist/cjs/nodes/email/outbound-message-guard.js.map +1 -0
- package/dist/cjs/nodes/email/trusted-html-code.d.ts +22 -0
- package/dist/cjs/nodes/email/trusted-html-code.d.ts.map +1 -0
- package/dist/cjs/nodes/email/trusted-html-code.js +52 -0
- package/dist/cjs/nodes/email/trusted-html-code.js.map +1 -0
- package/dist/cjs/nodes/general/general-custom-js.d.ts.map +1 -1
- package/dist/cjs/nodes/general/general-custom-js.js +44 -7
- package/dist/cjs/nodes/general/general-custom-js.js.map +1 -1
- package/dist/cjs/nodes/general/general-http-request.d.ts.map +1 -1
- package/dist/cjs/nodes/general/general-http-request.js +431 -45
- package/dist/cjs/nodes/general/general-http-request.js.map +1 -1
- package/dist/cjs/nodes/general/general-rate-limiter.d.ts.map +1 -1
- package/dist/cjs/nodes/general/general-rate-limiter.js +46 -78
- package/dist/cjs/nodes/general/general-rate-limiter.js.map +1 -1
- package/dist/cjs/nodes/general/general-wait.d.ts +3 -0
- package/dist/cjs/nodes/general/general-wait.d.ts.map +1 -0
- package/dist/cjs/nodes/general/general-wait.js +81 -0
- package/dist/cjs/nodes/general/general-wait.js.map +1 -0
- package/dist/cjs/nodes/general/visitor-request.d.ts +44 -0
- package/dist/cjs/nodes/general/visitor-request.d.ts.map +1 -0
- package/dist/cjs/nodes/general/visitor-request.js +72 -0
- package/dist/cjs/nodes/general/visitor-request.js.map +1 -0
- package/dist/cjs/nodes/index.d.ts.map +1 -1
- package/dist/cjs/nodes/index.js +7 -1
- package/dist/cjs/nodes/index.js.map +1 -1
- package/dist/cjs/nodes/integrations/integration-slack.d.ts.map +1 -1
- package/dist/cjs/nodes/integrations/integration-slack.js +17 -6
- package/dist/cjs/nodes/integrations/integration-slack.js.map +1 -1
- package/dist/cjs/nodes/newsletter/newsletter-confirm.d.ts +3 -0
- package/dist/cjs/nodes/newsletter/newsletter-confirm.d.ts.map +1 -0
- package/dist/cjs/nodes/newsletter/newsletter-confirm.js +41 -0
- package/dist/cjs/nodes/newsletter/newsletter-confirm.js.map +1 -0
- package/dist/cjs/nodes/newsletter/newsletter-subscribe.d.ts +7 -0
- package/dist/cjs/nodes/newsletter/newsletter-subscribe.d.ts.map +1 -0
- package/dist/cjs/nodes/newsletter/newsletter-subscribe.js +69 -0
- package/dist/cjs/nodes/newsletter/newsletter-subscribe.js.map +1 -0
- package/dist/cjs/nodes/newsletter/newsletter-unsubscribe.d.ts +3 -0
- package/dist/cjs/nodes/newsletter/newsletter-unsubscribe.d.ts.map +1 -0
- package/dist/cjs/nodes/newsletter/newsletter-unsubscribe.js +42 -0
- package/dist/cjs/nodes/newsletter/newsletter-unsubscribe.js.map +1 -0
- package/dist/cjs/nodes/realtime/realtime-join-channel.d.ts.map +1 -1
- package/dist/cjs/nodes/realtime/realtime-join-channel.js +5 -4
- package/dist/cjs/nodes/realtime/realtime-join-channel.js.map +1 -1
- package/dist/cjs/nodes/realtime/realtime-send-channel-event.d.ts.map +1 -1
- package/dist/cjs/nodes/realtime/realtime-send-channel-event.js +11 -2
- package/dist/cjs/nodes/realtime/realtime-send-channel-event.js.map +1 -1
- package/dist/cjs/nodes/realtime/realtime-send-channel-message.d.ts.map +1 -1
- package/dist/cjs/nodes/realtime/realtime-send-channel-message.js +11 -2
- package/dist/cjs/nodes/realtime/realtime-send-channel-message.js.map +1 -1
- package/dist/cjs/nodes/sms/sms-infobip.d.ts.map +1 -1
- package/dist/cjs/nodes/sms/sms-infobip.js +11 -8
- package/dist/cjs/nodes/sms/sms-infobip.js.map +1 -1
- package/dist/cjs/nodes/sms/sms-smsapi.d.ts.map +1 -1
- package/dist/cjs/nodes/sms/sms-smsapi.js +11 -8
- package/dist/cjs/nodes/sms/sms-smsapi.js.map +1 -1
- package/dist/cjs/nodes/sms/sms-textmagic.d.ts.map +1 -1
- package/dist/cjs/nodes/sms/sms-textmagic.js +11 -8
- package/dist/cjs/nodes/sms/sms-textmagic.js.map +1 -1
- package/dist/cjs/nodes/sms/sms-twilio.d.ts.map +1 -1
- package/dist/cjs/nodes/sms/sms-twilio.js +12 -10
- package/dist/cjs/nodes/sms/sms-twilio.js.map +1 -1
- package/dist/cjs/nodes/types.d.ts +8 -1
- package/dist/cjs/nodes/types.d.ts.map +1 -1
- package/dist/cjs/nodes/utility/utility-similarity-scoring.d.ts.map +1 -1
- package/dist/cjs/nodes/utility/utility-similarity-scoring.js +29 -10
- package/dist/cjs/nodes/utility/utility-similarity-scoring.js.map +1 -1
- package/dist/cjs/page-access-guard-generator.d.ts +23 -0
- package/dist/cjs/page-access-guard-generator.d.ts.map +1 -0
- package/dist/cjs/page-access-guard-generator.js +135 -0
- package/dist/cjs/page-access-guard-generator.js.map +1 -0
- package/dist/cjs/password-reset-route-generator.d.ts +119 -0
- package/dist/cjs/password-reset-route-generator.d.ts.map +1 -0
- package/dist/cjs/password-reset-route-generator.js +460 -0
- package/dist/cjs/password-reset-route-generator.js.map +1 -0
- package/dist/cjs/payments/payment-core-code.d.ts.map +1 -1
- package/dist/cjs/payments/payment-core-code.js +12 -7
- package/dist/cjs/payments/payment-core-code.js.map +1 -1
- package/dist/cjs/project-code-scanner.d.ts +11 -0
- package/dist/cjs/project-code-scanner.d.ts.map +1 -0
- package/dist/cjs/project-code-scanner.js +80 -0
- package/dist/cjs/project-code-scanner.js.map +1 -0
- package/dist/cjs/public-step-guards.d.ts +122 -0
- package/dist/cjs/public-step-guards.d.ts.map +1 -0
- package/dist/cjs/public-step-guards.js +288 -0
- package/dist/cjs/public-step-guards.js.map +1 -0
- package/dist/cjs/publish-refusals.d.ts +66 -0
- package/dist/cjs/publish-refusals.d.ts.map +1 -0
- package/dist/cjs/publish-refusals.js +278 -0
- package/dist/cjs/publish-refusals.js.map +1 -0
- package/dist/cjs/realtime-generator.d.ts +63 -1
- package/dist/cjs/realtime-generator.d.ts.map +1 -1
- package/dist/cjs/realtime-generator.js +404 -230
- package/dist/cjs/realtime-generator.js.map +1 -1
- package/dist/cjs/runtime-storage-generator.d.ts +32 -1
- package/dist/cjs/runtime-storage-generator.d.ts.map +1 -1
- package/dist/cjs/runtime-storage-generator.js +265 -12
- package/dist/cjs/runtime-storage-generator.js.map +1 -1
- package/dist/cjs/security-runtime/index.d.ts +14 -0
- package/dist/cjs/security-runtime/index.d.ts.map +1 -0
- package/dist/cjs/security-runtime/index.js +48 -0
- package/dist/cjs/security-runtime/index.js.map +1 -0
- package/dist/cjs/security-runtime/security-runtime-code.d.ts +53 -0
- package/dist/cjs/security-runtime/security-runtime-code.d.ts.map +1 -0
- package/dist/cjs/security-runtime/security-runtime-code.js +580 -0
- package/dist/cjs/security-runtime/security-runtime-code.js.map +1 -0
- package/dist/cjs/security-scanner.d.ts +72 -3
- package/dist/cjs/security-scanner.d.ts.map +1 -1
- package/dist/cjs/security-scanner.js +220 -8
- package/dist/cjs/security-scanner.js.map +1 -1
- package/dist/cjs/segment-splitter.d.ts.map +1 -1
- package/dist/cjs/segment-splitter.js +10 -2
- package/dist/cjs/segment-splitter.js.map +1 -1
- package/dist/cjs/segment-trust.d.ts +36 -0
- package/dist/cjs/segment-trust.d.ts.map +1 -1
- package/dist/cjs/segment-trust.js +147 -3
- package/dist/cjs/segment-trust.js.map +1 -1
- package/dist/cjs/self-call-headers.d.ts +31 -0
- package/dist/cjs/self-call-headers.d.ts.map +1 -0
- package/dist/cjs/self-call-headers.js +48 -0
- package/dist/cjs/self-call-headers.js.map +1 -0
- package/dist/cjs/sent-email-log/index.d.ts +7 -0
- package/dist/cjs/sent-email-log/index.d.ts.map +1 -1
- package/dist/cjs/sent-email-log/index.js +17 -1
- package/dist/cjs/sent-email-log/index.js.map +1 -1
- package/dist/cjs/sent-email-log/sent-email-log-code.d.ts +7 -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 +17 -3
- package/dist/cjs/sent-email-log/sent-email-log-code.js.map +1 -1
- package/dist/cjs/server-custom-node-call.d.ts +79 -0
- package/dist/cjs/server-custom-node-call.d.ts.map +1 -0
- package/dist/cjs/server-custom-node-call.js +285 -0
- package/dist/cjs/server-custom-node-call.js.map +1 -0
- package/dist/cjs/server-runtime-code.d.ts +39 -12
- package/dist/cjs/server-runtime-code.d.ts.map +1 -1
- package/dist/cjs/server-runtime-code.js +484 -41
- package/dist/cjs/server-runtime-code.js.map +1 -1
- package/dist/cjs/session-cookie-resolver.d.ts +3 -1
- package/dist/cjs/session-cookie-resolver.d.ts.map +1 -1
- package/dist/cjs/session-revocation-generator.d.ts +39 -0
- package/dist/cjs/session-revocation-generator.d.ts.map +1 -0
- package/dist/cjs/session-revocation-generator.js +177 -0
- package/dist/cjs/session-revocation-generator.js.map +1 -0
- package/dist/cjs/slack-message-values.d.ts +6 -0
- package/dist/cjs/slack-message-values.d.ts.map +1 -0
- package/dist/cjs/slack-message-values.js +73 -0
- package/dist/cjs/slack-message-values.js.map +1 -0
- package/dist/cjs/transactional-email-code.d.ts +11 -0
- package/dist/cjs/transactional-email-code.d.ts.map +1 -1
- package/dist/cjs/transactional-email-code.js +29 -5
- package/dist/cjs/transactional-email-code.js.map +1 -1
- package/dist/cjs/trigger-generator.d.ts +2 -0
- package/dist/cjs/trigger-generator.d.ts.map +1 -1
- package/dist/cjs/trigger-generator.js +17 -4
- package/dist/cjs/trigger-generator.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/visitor-step-limits.d.ts +66 -0
- package/dist/cjs/visitor-step-limits.d.ts.map +1 -0
- package/dist/cjs/visitor-step-limits.js +187 -0
- package/dist/cjs/visitor-step-limits.js.map +1 -0
- package/dist/cjs/webhook-generator.d.ts.map +1 -1
- package/dist/cjs/webhook-generator.js +93 -15
- package/dist/cjs/webhook-generator.js.map +1 -1
- package/dist/cjs/webhook-signature-verification.d.ts.map +1 -1
- package/dist/cjs/webhook-signature-verification.js +13 -3
- package/dist/cjs/webhook-signature-verification.js.map +1 -1
- package/dist/cjs/workflow-auth-generator.d.ts +4 -1
- package/dist/cjs/workflow-auth-generator.d.ts.map +1 -1
- package/dist/cjs/workflow-auth-generator.js +8 -3
- package/dist/cjs/workflow-auth-generator.js.map +1 -1
- package/dist/cjs/workflow-component-plugin.js +11 -3
- package/dist/cjs/workflow-component-plugin.js.map +1 -1
- package/dist/cjs/workflow-project-plugin.d.ts.map +1 -1
- package/dist/cjs/workflow-project-plugin.js +302 -56
- package/dist/cjs/workflow-project-plugin.js.map +1 -1
- package/dist/cjs/workflow-scope.d.ts.map +1 -1
- package/dist/cjs/workflow-scope.js +5 -0
- package/dist/cjs/workflow-scope.js.map +1 -1
- package/dist/esm/account-delete-route-generator.d.ts +1 -0
- package/dist/esm/account-delete-route-generator.d.ts.map +1 -1
- package/dist/esm/account-delete-route-generator.js +18 -3
- package/dist/esm/account-delete-route-generator.js.map +1 -1
- package/dist/esm/api-route-generator.d.ts +52 -3
- package/dist/esm/api-route-generator.d.ts.map +1 -1
- package/dist/esm/api-route-generator.js +595 -142
- package/dist/esm/api-route-generator.js.map +1 -1
- package/dist/esm/auth-generator.d.ts +126 -3
- package/dist/esm/auth-generator.d.ts.map +1 -1
- package/dist/esm/auth-generator.js +1350 -140
- package/dist/esm/auth-generator.js.map +1 -1
- package/dist/esm/automations/activity-kicks.d.ts +12 -0
- package/dist/esm/automations/activity-kicks.d.ts.map +1 -0
- package/dist/esm/automations/activity-kicks.js +118 -0
- package/dist/esm/automations/activity-kicks.js.map +1 -0
- package/dist/esm/automations/app-events-source.d.ts +33 -0
- package/dist/esm/automations/app-events-source.d.ts.map +1 -0
- package/dist/esm/automations/app-events-source.js +104 -0
- package/dist/esm/automations/app-events-source.js.map +1 -0
- package/dist/esm/automations/automations-project-plugin.d.ts +21 -0
- package/dist/esm/automations/automations-project-plugin.d.ts.map +1 -0
- package/dist/esm/automations/automations-project-plugin.js +98 -0
- package/dist/esm/automations/automations-project-plugin.js.map +1 -0
- package/dist/esm/automations/automations-scope.d.ts +104 -0
- package/dist/esm/automations/automations-scope.d.ts.map +1 -0
- package/dist/esm/automations/automations-scope.js +165 -0
- package/dist/esm/automations/automations-scope.js.map +1 -0
- package/dist/esm/automations/dispatcher-source.d.ts +72 -0
- package/dist/esm/automations/dispatcher-source.d.ts.map +1 -0
- package/dist/esm/automations/dispatcher-source.js +999 -0
- package/dist/esm/automations/dispatcher-source.js.map +1 -0
- package/dist/esm/automations/event-bus-source.d.ts +44 -0
- package/dist/esm/automations/event-bus-source.d.ts.map +1 -0
- package/dist/esm/automations/event-bus-source.js +421 -0
- package/dist/esm/automations/event-bus-source.js.map +1 -0
- package/dist/esm/automations/handler-module-generator.d.ts +25 -0
- package/dist/esm/automations/handler-module-generator.d.ts.map +1 -0
- package/dist/esm/automations/handler-module-generator.js +71 -0
- package/dist/esm/automations/handler-module-generator.js.map +1 -0
- package/dist/esm/automations/hydrators-source.d.ts +33 -0
- package/dist/esm/automations/hydrators-source.d.ts.map +1 -0
- package/dist/esm/automations/hydrators-source.js +567 -0
- package/dist/esm/automations/hydrators-source.js.map +1 -0
- package/dist/esm/booking-calendar-feed-route-generator.d.ts.map +1 -1
- package/dist/esm/booking-calendar-feed-route-generator.js +8 -0
- package/dist/esm/booking-calendar-feed-route-generator.js.map +1 -1
- package/dist/esm/configured-nextauth-url.d.ts +17 -0
- package/dist/esm/configured-nextauth-url.d.ts.map +1 -0
- package/dist/esm/configured-nextauth-url.js +17 -0
- package/dist/esm/configured-nextauth-url.js.map +1 -0
- package/dist/esm/cron-request-verification.d.ts +22 -1
- package/dist/esm/cron-request-verification.d.ts.map +1 -1
- package/dist/esm/cron-request-verification.js +48 -5
- package/dist/esm/cron-request-verification.js.map +1 -1
- package/dist/esm/data-api-route-generator.d.ts +19 -0
- package/dist/esm/data-api-route-generator.d.ts.map +1 -1
- package/dist/esm/data-api-route-generator.js +710 -43
- package/dist/esm/data-api-route-generator.js.map +1 -1
- package/dist/esm/ecommerce/parameterized-stock-chain.d.ts +3 -1
- package/dist/esm/ecommerce/parameterized-stock-chain.d.ts.map +1 -1
- package/dist/esm/ecommerce/parameterized-stock-chain.js +43 -4
- package/dist/esm/ecommerce/parameterized-stock-chain.js.map +1 -1
- package/dist/esm/ecommerce/place-order-guards.d.ts +126 -0
- package/dist/esm/ecommerce/place-order-guards.d.ts.map +1 -0
- package/dist/esm/ecommerce/place-order-guards.js +655 -0
- package/dist/esm/ecommerce/place-order-guards.js.map +1 -0
- package/dist/esm/ecommerce-customhandler-rewriter.d.ts +2 -0
- package/dist/esm/ecommerce-customhandler-rewriter.d.ts.map +1 -1
- package/dist/esm/ecommerce-customhandler-rewriter.js +38 -2
- package/dist/esm/ecommerce-customhandler-rewriter.js.map +1 -1
- package/dist/esm/executor-generator.d.ts.map +1 -1
- package/dist/esm/executor-generator.js +368 -60
- package/dist/esm/executor-generator.js.map +1 -1
- package/dist/esm/graph-utils.d.ts +9 -0
- package/dist/esm/graph-utils.d.ts.map +1 -1
- package/dist/esm/graph-utils.js +30 -0
- package/dist/esm/graph-utils.js.map +1 -1
- package/dist/esm/index.d.ts +20 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +27 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/invoice/api-routes-code.d.ts +9 -3
- package/dist/esm/invoice/api-routes-code.d.ts.map +1 -1
- package/dist/esm/invoice/api-routes-code.js +9 -7
- package/dist/esm/invoice/api-routes-code.js.map +1 -1
- package/dist/esm/invoice/index.d.ts.map +1 -1
- package/dist/esm/invoice/index.js +12 -7
- package/dist/esm/invoice/index.js.map +1 -1
- package/dist/esm/invoice/invoice-assembly-code.d.ts.map +1 -1
- package/dist/esm/invoice/invoice-assembly-code.js +8 -3
- package/dist/esm/invoice/invoice-assembly-code.js.map +1 -1
- package/dist/esm/invoice/pdf-generator-code.d.ts.map +1 -1
- package/dist/esm/invoice/pdf-generator-code.js +2 -1
- package/dist/esm/invoice/pdf-generator-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 +15 -7
- package/dist/esm/invoice/pdf-service-client-code.js.map +1 -1
- package/dist/esm/newsletter/admin-route-code.d.ts +60 -0
- package/dist/esm/newsletter/admin-route-code.d.ts.map +1 -0
- package/dist/esm/newsletter/admin-route-code.js +295 -0
- package/dist/esm/newsletter/admin-route-code.js.map +1 -0
- package/dist/esm/newsletter/helper-code.d.ts +109 -0
- package/dist/esm/newsletter/helper-code.d.ts.map +1 -0
- package/dist/esm/newsletter/helper-code.js +656 -0
- package/dist/esm/newsletter/helper-code.js.map +1 -0
- package/dist/esm/newsletter/newsletter-scope.d.ts +65 -0
- package/dist/esm/newsletter/newsletter-scope.d.ts.map +1 -0
- package/dist/esm/newsletter/newsletter-scope.js +97 -0
- package/dist/esm/newsletter/newsletter-scope.js.map +1 -0
- package/dist/esm/newsletter/project-plugin.d.ts +18 -0
- package/dist/esm/newsletter/project-plugin.d.ts.map +1 -0
- package/dist/esm/newsletter/project-plugin.js +93 -0
- package/dist/esm/newsletter/project-plugin.js.map +1 -0
- package/dist/esm/newsletter/routes-code.d.ts +6 -0
- package/dist/esm/newsletter/routes-code.d.ts.map +1 -0
- package/dist/esm/newsletter/routes-code.js +175 -0
- package/dist/esm/newsletter/routes-code.js.map +1 -0
- package/dist/esm/nodes/account/account-compare-passwords.d.ts.map +1 -1
- package/dist/esm/nodes/account/account-compare-passwords.js +16 -6
- package/dist/esm/nodes/account/account-compare-passwords.js.map +1 -1
- package/dist/esm/nodes/account/account-delete-current.js +1 -1
- package/dist/esm/nodes/account/account-get-current.js +1 -1
- package/dist/esm/nodes/account/account-hash-password.d.ts.map +1 -1
- package/dist/esm/nodes/account/account-hash-password.js +15 -3
- package/dist/esm/nodes/account/account-hash-password.js.map +1 -1
- package/dist/esm/nodes/account/account-login.d.ts.map +1 -1
- package/dist/esm/nodes/account/account-login.js +23 -6
- package/dist/esm/nodes/account/account-login.js.map +1 -1
- package/dist/esm/nodes/account/account-logout.js +1 -1
- package/dist/esm/nodes/account/account-refresh-session.js +1 -1
- package/dist/esm/nodes/account/account-request-password-reset.d.ts +3 -0
- package/dist/esm/nodes/account/account-request-password-reset.d.ts.map +1 -0
- package/dist/esm/nodes/account/account-request-password-reset.js +43 -0
- package/dist/esm/nodes/account/account-request-password-reset.js.map +1 -0
- package/dist/esm/nodes/account/account-reset-password.d.ts +3 -0
- package/dist/esm/nodes/account/account-reset-password.d.ts.map +1 -0
- package/dist/esm/nodes/account/account-reset-password.js +41 -0
- package/dist/esm/nodes/account/account-reset-password.js.map +1 -0
- package/dist/esm/nodes/account/account-signup.d.ts.map +1 -1
- package/dist/esm/nodes/account/account-signup.js +82 -19
- package/dist/esm/nodes/account/account-signup.js.map +1 -1
- package/dist/esm/nodes/account/account-social-login.js +1 -1
- package/dist/esm/nodes/ai/ai-custom-prompt.d.ts.map +1 -1
- package/dist/esm/nodes/ai/ai-custom-prompt.js +20 -5
- package/dist/esm/nodes/ai/ai-custom-prompt.js.map +1 -1
- package/dist/esm/nodes/ai/ai-detect-language.d.ts.map +1 -1
- package/dist/esm/nodes/ai/ai-detect-language.js +20 -5
- package/dist/esm/nodes/ai/ai-detect-language.js.map +1 -1
- package/dist/esm/nodes/ai/ai-generate-text-embedding.d.ts.map +1 -1
- package/dist/esm/nodes/ai/ai-generate-text-embedding.js +10 -2
- package/dist/esm/nodes/ai/ai-generate-text-embedding.js.map +1 -1
- package/dist/esm/nodes/ai/ai-provider-utils-sources.generated.js +2 -2
- package/dist/esm/nodes/ai/ai-provider-utils-sources.generated.js.map +1 -1
- package/dist/esm/nodes/ai/ai-provider-utils.d.ts +31 -2
- package/dist/esm/nodes/ai/ai-provider-utils.d.ts.map +1 -1
- package/dist/esm/nodes/ai/ai-provider-utils.js +124 -10
- package/dist/esm/nodes/ai/ai-provider-utils.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 -2
- package/dist/esm/nodes/ai/ai-select-database-data.js.map +1 -1
- package/dist/esm/nodes/ai/ai-sentiment-analysis.d.ts.map +1 -1
- package/dist/esm/nodes/ai/ai-sentiment-analysis.js +20 -5
- package/dist/esm/nodes/ai/ai-sentiment-analysis.js.map +1 -1
- package/dist/esm/nodes/ai/ai-summarization.d.ts.map +1 -1
- package/dist/esm/nodes/ai/ai-summarization.js +20 -5
- package/dist/esm/nodes/ai/ai-summarization.js.map +1 -1
- package/dist/esm/nodes/ai/ai-text-classifier.d.ts.map +1 -1
- package/dist/esm/nodes/ai/ai-text-classifier.js +20 -5
- package/dist/esm/nodes/ai/ai-text-classifier.js.map +1 -1
- package/dist/esm/nodes/ai/ai-text-transform.d.ts.map +1 -1
- package/dist/esm/nodes/ai/ai-text-transform.js +20 -5
- package/dist/esm/nodes/ai/ai-text-transform.js.map +1 -1
- package/dist/esm/nodes/analytics/analytics-track-outcome.d.ts +3 -0
- package/dist/esm/nodes/analytics/analytics-track-outcome.d.ts.map +1 -0
- package/dist/esm/nodes/analytics/analytics-track-outcome.js +107 -0
- package/dist/esm/nodes/analytics/analytics-track-outcome.js.map +1 -0
- package/dist/esm/nodes/cart/cart-price-order.d.ts.map +1 -1
- package/dist/esm/nodes/cart/cart-price-order.js +161 -2
- package/dist/esm/nodes/cart/cart-price-order.js.map +1 -1
- package/dist/esm/nodes/cost-bearing-node-types.d.ts +4 -0
- package/dist/esm/nodes/cost-bearing-node-types.d.ts.map +1 -0
- package/dist/esm/nodes/cost-bearing-node-types.js +39 -0
- package/dist/esm/nodes/cost-bearing-node-types.js.map +1 -0
- package/dist/esm/nodes/data/data-select.d.ts.map +1 -1
- package/dist/esm/nodes/data/data-select.js +12 -2
- package/dist/esm/nodes/data/data-select.js.map +1 -1
- package/dist/esm/nodes/email/email-mailersend.d.ts.map +1 -1
- package/dist/esm/nodes/email/email-mailersend.js +15 -11
- package/dist/esm/nodes/email/email-mailersend.js.map +1 -1
- package/dist/esm/nodes/email/email-mailgun.d.ts.map +1 -1
- package/dist/esm/nodes/email/email-mailgun.js +15 -15
- package/dist/esm/nodes/email/email-mailgun.js.map +1 -1
- package/dist/esm/nodes/email/email-postmark.d.ts.map +1 -1
- package/dist/esm/nodes/email/email-postmark.js +15 -15
- package/dist/esm/nodes/email/email-postmark.js.map +1 -1
- package/dist/esm/nodes/email/email-resend.d.ts.map +1 -1
- package/dist/esm/nodes/email/email-resend.js +15 -15
- package/dist/esm/nodes/email/email-resend.js.map +1 -1
- package/dist/esm/nodes/email/email-sendgrid.d.ts.map +1 -1
- package/dist/esm/nodes/email/email-sendgrid.js +15 -15
- package/dist/esm/nodes/email/email-sendgrid.js.map +1 -1
- package/dist/esm/nodes/email/html-escape-code.d.ts +3 -0
- package/dist/esm/nodes/email/html-escape-code.d.ts.map +1 -0
- package/dist/esm/nodes/email/html-escape-code.js +18 -0
- package/dist/esm/nodes/email/html-escape-code.js.map +1 -0
- package/dist/esm/nodes/email/message-trust.d.ts +40 -0
- package/dist/esm/nodes/email/message-trust.d.ts.map +1 -0
- package/dist/esm/nodes/email/message-trust.js +161 -0
- package/dist/esm/nodes/email/message-trust.js.map +1 -0
- package/dist/esm/nodes/email/outbound-message-guard.d.ts +113 -0
- package/dist/esm/nodes/email/outbound-message-guard.d.ts.map +1 -0
- package/dist/esm/nodes/email/outbound-message-guard.js +452 -0
- package/dist/esm/nodes/email/outbound-message-guard.js.map +1 -0
- package/dist/esm/nodes/email/trusted-html-code.d.ts +22 -0
- package/dist/esm/nodes/email/trusted-html-code.d.ts.map +1 -0
- package/dist/esm/nodes/email/trusted-html-code.js +49 -0
- package/dist/esm/nodes/email/trusted-html-code.js.map +1 -0
- package/dist/esm/nodes/general/general-custom-js.d.ts.map +1 -1
- package/dist/esm/nodes/general/general-custom-js.js +44 -7
- package/dist/esm/nodes/general/general-custom-js.js.map +1 -1
- package/dist/esm/nodes/general/general-http-request.d.ts.map +1 -1
- package/dist/esm/nodes/general/general-http-request.js +431 -45
- package/dist/esm/nodes/general/general-http-request.js.map +1 -1
- package/dist/esm/nodes/general/general-rate-limiter.d.ts.map +1 -1
- package/dist/esm/nodes/general/general-rate-limiter.js +46 -78
- package/dist/esm/nodes/general/general-rate-limiter.js.map +1 -1
- package/dist/esm/nodes/general/general-wait.d.ts +3 -0
- package/dist/esm/nodes/general/general-wait.d.ts.map +1 -0
- package/dist/esm/nodes/general/general-wait.js +78 -0
- package/dist/esm/nodes/general/general-wait.js.map +1 -0
- package/dist/esm/nodes/general/visitor-request.d.ts +44 -0
- package/dist/esm/nodes/general/visitor-request.d.ts.map +1 -0
- package/dist/esm/nodes/general/visitor-request.js +65 -0
- package/dist/esm/nodes/general/visitor-request.js.map +1 -0
- package/dist/esm/nodes/index.d.ts.map +1 -1
- package/dist/esm/nodes/index.js +7 -1
- package/dist/esm/nodes/index.js.map +1 -1
- package/dist/esm/nodes/integrations/integration-slack.d.ts.map +1 -1
- package/dist/esm/nodes/integrations/integration-slack.js +17 -6
- package/dist/esm/nodes/integrations/integration-slack.js.map +1 -1
- package/dist/esm/nodes/newsletter/newsletter-confirm.d.ts +3 -0
- package/dist/esm/nodes/newsletter/newsletter-confirm.d.ts.map +1 -0
- package/dist/esm/nodes/newsletter/newsletter-confirm.js +38 -0
- package/dist/esm/nodes/newsletter/newsletter-confirm.js.map +1 -0
- package/dist/esm/nodes/newsletter/newsletter-subscribe.d.ts +7 -0
- package/dist/esm/nodes/newsletter/newsletter-subscribe.d.ts.map +1 -0
- package/dist/esm/nodes/newsletter/newsletter-subscribe.js +66 -0
- package/dist/esm/nodes/newsletter/newsletter-subscribe.js.map +1 -0
- package/dist/esm/nodes/newsletter/newsletter-unsubscribe.d.ts +3 -0
- package/dist/esm/nodes/newsletter/newsletter-unsubscribe.d.ts.map +1 -0
- package/dist/esm/nodes/newsletter/newsletter-unsubscribe.js +39 -0
- package/dist/esm/nodes/newsletter/newsletter-unsubscribe.js.map +1 -0
- package/dist/esm/nodes/realtime/realtime-join-channel.d.ts.map +1 -1
- package/dist/esm/nodes/realtime/realtime-join-channel.js +5 -4
- package/dist/esm/nodes/realtime/realtime-join-channel.js.map +1 -1
- package/dist/esm/nodes/realtime/realtime-send-channel-event.d.ts.map +1 -1
- package/dist/esm/nodes/realtime/realtime-send-channel-event.js +11 -2
- package/dist/esm/nodes/realtime/realtime-send-channel-event.js.map +1 -1
- package/dist/esm/nodes/realtime/realtime-send-channel-message.d.ts.map +1 -1
- package/dist/esm/nodes/realtime/realtime-send-channel-message.js +11 -2
- package/dist/esm/nodes/realtime/realtime-send-channel-message.js.map +1 -1
- package/dist/esm/nodes/sms/sms-infobip.d.ts.map +1 -1
- package/dist/esm/nodes/sms/sms-infobip.js +11 -8
- package/dist/esm/nodes/sms/sms-infobip.js.map +1 -1
- package/dist/esm/nodes/sms/sms-smsapi.d.ts.map +1 -1
- package/dist/esm/nodes/sms/sms-smsapi.js +11 -8
- package/dist/esm/nodes/sms/sms-smsapi.js.map +1 -1
- package/dist/esm/nodes/sms/sms-textmagic.d.ts.map +1 -1
- package/dist/esm/nodes/sms/sms-textmagic.js +11 -8
- package/dist/esm/nodes/sms/sms-textmagic.js.map +1 -1
- package/dist/esm/nodes/sms/sms-twilio.d.ts.map +1 -1
- package/dist/esm/nodes/sms/sms-twilio.js +12 -10
- package/dist/esm/nodes/sms/sms-twilio.js.map +1 -1
- package/dist/esm/nodes/types.d.ts +8 -1
- package/dist/esm/nodes/types.d.ts.map +1 -1
- package/dist/esm/nodes/utility/utility-similarity-scoring.d.ts.map +1 -1
- package/dist/esm/nodes/utility/utility-similarity-scoring.js +29 -10
- package/dist/esm/nodes/utility/utility-similarity-scoring.js.map +1 -1
- package/dist/esm/page-access-guard-generator.d.ts +23 -0
- package/dist/esm/page-access-guard-generator.d.ts.map +1 -0
- package/dist/esm/page-access-guard-generator.js +131 -0
- package/dist/esm/page-access-guard-generator.js.map +1 -0
- package/dist/esm/password-reset-route-generator.d.ts +119 -0
- package/dist/esm/password-reset-route-generator.d.ts.map +1 -0
- package/dist/esm/password-reset-route-generator.js +448 -0
- package/dist/esm/password-reset-route-generator.js.map +1 -0
- package/dist/esm/payments/payment-core-code.d.ts.map +1 -1
- package/dist/esm/payments/payment-core-code.js +12 -7
- package/dist/esm/payments/payment-core-code.js.map +1 -1
- package/dist/esm/project-code-scanner.d.ts +11 -0
- package/dist/esm/project-code-scanner.d.ts.map +1 -0
- package/dist/esm/project-code-scanner.js +75 -0
- package/dist/esm/project-code-scanner.js.map +1 -0
- package/dist/esm/public-step-guards.d.ts +122 -0
- package/dist/esm/public-step-guards.d.ts.map +1 -0
- package/dist/esm/public-step-guards.js +280 -0
- package/dist/esm/public-step-guards.js.map +1 -0
- package/dist/esm/publish-refusals.d.ts +66 -0
- package/dist/esm/publish-refusals.d.ts.map +1 -0
- package/dist/esm/publish-refusals.js +271 -0
- package/dist/esm/publish-refusals.js.map +1 -0
- package/dist/esm/realtime-generator.d.ts +63 -1
- package/dist/esm/realtime-generator.d.ts.map +1 -1
- package/dist/esm/realtime-generator.js +401 -229
- package/dist/esm/realtime-generator.js.map +1 -1
- package/dist/esm/runtime-storage-generator.d.ts +32 -1
- package/dist/esm/runtime-storage-generator.d.ts.map +1 -1
- package/dist/esm/runtime-storage-generator.js +264 -11
- package/dist/esm/runtime-storage-generator.js.map +1 -1
- package/dist/esm/security-runtime/index.d.ts +14 -0
- package/dist/esm/security-runtime/index.d.ts.map +1 -0
- package/dist/esm/security-runtime/index.js +37 -0
- package/dist/esm/security-runtime/index.js.map +1 -0
- package/dist/esm/security-runtime/security-runtime-code.d.ts +53 -0
- package/dist/esm/security-runtime/security-runtime-code.d.ts.map +1 -0
- package/dist/esm/security-runtime/security-runtime-code.js +575 -0
- package/dist/esm/security-runtime/security-runtime-code.js.map +1 -0
- package/dist/esm/security-scanner.d.ts +72 -3
- package/dist/esm/security-scanner.d.ts.map +1 -1
- package/dist/esm/security-scanner.js +217 -8
- package/dist/esm/security-scanner.js.map +1 -1
- package/dist/esm/segment-splitter.d.ts.map +1 -1
- package/dist/esm/segment-splitter.js +10 -2
- package/dist/esm/segment-splitter.js.map +1 -1
- package/dist/esm/segment-trust.d.ts +36 -0
- package/dist/esm/segment-trust.d.ts.map +1 -1
- package/dist/esm/segment-trust.js +146 -2
- package/dist/esm/segment-trust.js.map +1 -1
- package/dist/esm/self-call-headers.d.ts +31 -0
- package/dist/esm/self-call-headers.d.ts.map +1 -0
- package/dist/esm/self-call-headers.js +43 -0
- package/dist/esm/self-call-headers.js.map +1 -0
- package/dist/esm/sent-email-log/index.d.ts +7 -0
- package/dist/esm/sent-email-log/index.d.ts.map +1 -1
- package/dist/esm/sent-email-log/index.js +15 -0
- package/dist/esm/sent-email-log/index.js.map +1 -1
- package/dist/esm/sent-email-log/sent-email-log-code.d.ts +7 -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 +17 -3
- package/dist/esm/sent-email-log/sent-email-log-code.js.map +1 -1
- package/dist/esm/server-custom-node-call.d.ts +79 -0
- package/dist/esm/server-custom-node-call.d.ts.map +1 -0
- package/dist/esm/server-custom-node-call.js +278 -0
- package/dist/esm/server-custom-node-call.js.map +1 -0
- package/dist/esm/server-runtime-code.d.ts +39 -12
- package/dist/esm/server-runtime-code.d.ts.map +1 -1
- package/dist/esm/server-runtime-code.js +483 -40
- package/dist/esm/server-runtime-code.js.map +1 -1
- package/dist/esm/session-cookie-resolver.d.ts +3 -1
- package/dist/esm/session-cookie-resolver.d.ts.map +1 -1
- package/dist/esm/session-revocation-generator.d.ts +39 -0
- package/dist/esm/session-revocation-generator.d.ts.map +1 -0
- package/dist/esm/session-revocation-generator.js +172 -0
- package/dist/esm/session-revocation-generator.js.map +1 -0
- package/dist/esm/slack-message-values.d.ts +6 -0
- package/dist/esm/slack-message-values.d.ts.map +1 -0
- package/dist/esm/slack-message-values.js +68 -0
- package/dist/esm/slack-message-values.js.map +1 -0
- package/dist/esm/transactional-email-code.d.ts +11 -0
- package/dist/esm/transactional-email-code.d.ts.map +1 -1
- package/dist/esm/transactional-email-code.js +28 -4
- package/dist/esm/transactional-email-code.js.map +1 -1
- package/dist/esm/trigger-generator.d.ts +2 -0
- package/dist/esm/trigger-generator.d.ts.map +1 -1
- package/dist/esm/trigger-generator.js +15 -3
- package/dist/esm/trigger-generator.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/visitor-step-limits.d.ts +66 -0
- package/dist/esm/visitor-step-limits.d.ts.map +1 -0
- package/dist/esm/visitor-step-limits.js +181 -0
- package/dist/esm/visitor-step-limits.js.map +1 -0
- package/dist/esm/webhook-generator.d.ts.map +1 -1
- package/dist/esm/webhook-generator.js +93 -15
- package/dist/esm/webhook-generator.js.map +1 -1
- package/dist/esm/webhook-signature-verification.d.ts.map +1 -1
- package/dist/esm/webhook-signature-verification.js +13 -3
- package/dist/esm/webhook-signature-verification.js.map +1 -1
- package/dist/esm/workflow-auth-generator.d.ts +4 -1
- package/dist/esm/workflow-auth-generator.d.ts.map +1 -1
- package/dist/esm/workflow-auth-generator.js +8 -3
- package/dist/esm/workflow-auth-generator.js.map +1 -1
- package/dist/esm/workflow-component-plugin.js +12 -4
- package/dist/esm/workflow-component-plugin.js.map +1 -1
- package/dist/esm/workflow-project-plugin.d.ts.map +1 -1
- package/dist/esm/workflow-project-plugin.js +306 -60
- package/dist/esm/workflow-project-plugin.js.map +1 -1
- package/dist/esm/workflow-scope.d.ts.map +1 -1
- package/dist/esm/workflow-scope.js +5 -0
- package/dist/esm/workflow-scope.js.map +1 -1
- package/package.json +4 -4
- package/src/account-delete-route-generator.ts +28 -4
- package/src/api-route-generator.ts +712 -134
- package/src/auth-generator.ts +1471 -142
- package/src/automations/activity-kicks.ts +139 -0
- package/src/automations/app-events-source.ts +117 -0
- package/src/automations/automations-project-plugin.ts +202 -0
- package/src/automations/automations-scope.ts +196 -0
- package/src/automations/dispatcher-source.ts +1072 -0
- package/src/automations/event-bus-source.ts +428 -0
- package/src/automations/handler-module-generator.ts +107 -0
- package/src/automations/hydrators-source.ts +647 -0
- package/src/booking-calendar-feed-route-generator.ts +8 -0
- package/src/configured-nextauth-url.ts +17 -0
- package/src/cron-request-verification.ts +55 -5
- package/src/data-api-route-generator.ts +780 -43
- package/src/ecommerce/parameterized-stock-chain.ts +52 -5
- package/src/ecommerce/place-order-guards.ts +785 -0
- package/src/ecommerce-customhandler-rewriter.ts +55 -2
- package/src/executor-generator.ts +372 -60
- package/src/graph-utils.ts +33 -0
- package/src/index.ts +70 -0
- package/src/invoice/api-routes-code.ts +20 -7
- package/src/invoice/index.ts +11 -6
- package/src/invoice/invoice-assembly-code.ts +8 -3
- package/src/invoice/pdf-generator-code.ts +2 -1
- package/src/invoice/pdf-service-client-code.ts +15 -7
- package/src/newsletter/admin-route-code.ts +319 -0
- package/src/newsletter/helper-code.ts +748 -0
- package/src/newsletter/newsletter-scope.ts +116 -0
- package/src/newsletter/project-plugin.ts +119 -0
- package/src/newsletter/routes-code.ts +186 -0
- package/src/nodes/account/account-compare-passwords.ts +17 -6
- package/src/nodes/account/account-delete-current.ts +1 -1
- package/src/nodes/account/account-get-current.ts +1 -1
- package/src/nodes/account/account-hash-password.ts +19 -3
- package/src/nodes/account/account-login.ts +24 -7
- package/src/nodes/account/account-logout.ts +1 -1
- package/src/nodes/account/account-refresh-session.ts +1 -1
- package/src/nodes/account/account-request-password-reset.ts +47 -0
- package/src/nodes/account/account-reset-password.ts +45 -0
- package/src/nodes/account/account-signup.ts +86 -20
- package/src/nodes/account/account-social-login.ts +1 -1
- package/src/nodes/ai/ai-custom-prompt.ts +25 -6
- package/src/nodes/ai/ai-detect-language.ts +25 -6
- package/src/nodes/ai/ai-generate-text-embedding.ts +16 -3
- package/src/nodes/ai/ai-provider-utils-sources.generated.ts +2 -2
- package/src/nodes/ai/ai-provider-utils.ts +135 -10
- package/src/nodes/ai/ai-select-database-data.ts +8 -3
- package/src/nodes/ai/ai-sentiment-analysis.ts +25 -6
- package/src/nodes/ai/ai-summarization.ts +25 -6
- package/src/nodes/ai/ai-text-classifier.ts +25 -6
- package/src/nodes/ai/ai-text-transform.ts +25 -6
- package/src/nodes/analytics/analytics-track-outcome.ts +111 -0
- package/src/nodes/cart/cart-price-order.ts +200 -2
- package/src/nodes/cost-bearing-node-types.ts +45 -0
- package/src/nodes/data/data-select.ts +11 -2
- package/src/nodes/email/email-mailersend.ts +16 -8
- package/src/nodes/email/email-mailgun.ts +17 -12
- package/src/nodes/email/email-postmark.ts +17 -12
- package/src/nodes/email/email-resend.ts +17 -12
- package/src/nodes/email/email-sendgrid.ts +17 -12
- package/src/nodes/email/html-escape-code.ts +21 -0
- package/src/nodes/email/message-trust.ts +198 -0
- package/src/nodes/email/outbound-message-guard.ts +572 -0
- package/src/nodes/email/trusted-html-code.ts +49 -0
- package/src/nodes/general/general-custom-js.ts +46 -7
- package/src/nodes/general/general-http-request.ts +449 -46
- package/src/nodes/general/general-rate-limiter.ts +54 -81
- package/src/nodes/general/general-wait.ts +80 -0
- package/src/nodes/general/visitor-request.ts +79 -0
- package/src/nodes/index.ts +12 -0
- package/src/nodes/integrations/integration-slack.ts +21 -6
- package/src/nodes/newsletter/newsletter-confirm.ts +44 -0
- package/src/nodes/newsletter/newsletter-subscribe.ts +78 -0
- package/src/nodes/newsletter/newsletter-unsubscribe.ts +43 -0
- package/src/nodes/realtime/realtime-join-channel.ts +5 -4
- package/src/nodes/realtime/realtime-send-channel-event.ts +13 -2
- package/src/nodes/realtime/realtime-send-channel-message.ts +13 -2
- package/src/nodes/sms/sms-infobip.ts +14 -4
- package/src/nodes/sms/sms-smsapi.ts +14 -4
- package/src/nodes/sms/sms-textmagic.ts +14 -4
- package/src/nodes/sms/sms-twilio.ts +14 -4
- package/src/nodes/types.ts +9 -1
- package/src/nodes/utility/utility-similarity-scoring.ts +33 -12
- package/src/page-access-guard-generator.ts +154 -0
- package/src/password-reset-route-generator.ts +531 -0
- package/src/payments/payment-core-code.ts +12 -7
- package/src/project-code-scanner.ts +98 -0
- package/src/public-step-guards.ts +448 -0
- package/src/publish-refusals.ts +459 -0
- package/src/realtime-generator.ts +457 -234
- package/src/runtime-storage-generator.ts +270 -11
- package/src/security-runtime/index.ts +53 -0
- package/src/security-runtime/security-runtime-code.ts +579 -0
- package/src/security-scanner.ts +253 -10
- package/src/segment-splitter.ts +10 -2
- package/src/segment-trust.ts +205 -2
- package/src/self-call-headers.ts +46 -0
- package/src/sent-email-log/index.ts +16 -0
- package/src/sent-email-log/sent-email-log-code.ts +30 -4
- package/src/server-custom-node-call.ts +331 -0
- package/src/server-runtime-code.ts +488 -40
- package/src/session-revocation-generator.ts +177 -0
- package/src/slack-message-values.ts +84 -0
- package/src/transactional-email-code.ts +30 -4
- package/src/trigger-generator.ts +19 -3
- package/src/visitor-step-limits.ts +228 -0
- package/src/webhook-generator.ts +94 -14
- package/src/webhook-signature-verification.ts +13 -3
- package/src/workflow-auth-generator.ts +9 -4
- package/src/workflow-component-plugin.ts +14 -4
- package/src/workflow-project-plugin.ts +374 -61
- package/src/workflow-scope.ts +6 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime-generator.js","sourceRoot":"","sources":["../../src/realtime-generator.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"realtime-generator.js","sourceRoot":"","sources":["../../src/realtime-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,5 +45,36 @@ export declare const TRUSTED_UPLOAD_ROLES: ReadonlyArray<string>;
|
|
|
45
45
|
export declare const VISITOR_UPLOAD_MIME_TYPES: ReadonlyArray<string>;
|
|
46
46
|
export declare const VISITOR_MAX_FILE_BYTES: number;
|
|
47
47
|
export declare const VISITOR_MAX_FILES = 10;
|
|
48
|
-
|
|
48
|
+
/**
|
|
49
|
+
* How much one visitor (by address, IPv6 by its /64) and the whole site may
|
|
50
|
+
* upload, through the shared security runtime:
|
|
51
|
+
* - VISITOR_UPLOAD_LIMITS: requests, `[limit, windowSeconds]`, checked before
|
|
52
|
+
* the body is read;
|
|
53
|
+
* - VISITOR_UPLOAD_MB_PER_DAY: bytes, counted per file in whole MB (a file
|
|
54
|
+
* counts at least 1), after the form passed its checks;
|
|
55
|
+
* - SITE_VISITOR_FILES_PER_DAY: files from all visitors together, counted only
|
|
56
|
+
* for forms that passed, so junk requests cannot pause everyone's uploads.
|
|
57
|
+
* The storage worker also holds all guests together to their share of the
|
|
58
|
+
* project's quota. Without these a guest could fill the merchant's quota with
|
|
59
|
+
* allowed files until the admin's own uploads fail.
|
|
60
|
+
*/
|
|
61
|
+
export declare const VISITOR_UPLOAD_LIMITS: ReadonlyArray<[number, number]>;
|
|
62
|
+
export declare const VISITOR_UPLOAD_MB_PER_DAY = 25;
|
|
63
|
+
export declare const SITE_VISITOR_FILES_PER_DAY = 500;
|
|
64
|
+
/** The true values of the `private` flag, read the way the storage worker reads them. */
|
|
65
|
+
export declare const PRIVATE_FLAG_VALUES: ReadonlyArray<string>;
|
|
66
|
+
/** The extensions a proven type keeps; any other is replaced by the first. */
|
|
67
|
+
export declare const PROVEN_TYPE_EXTENSIONS: Record<string, string[]>;
|
|
68
|
+
/**
|
|
69
|
+
* Tells the storage worker which policy a forwarded upload gets. Only this
|
|
70
|
+
* route sends it (the request carries the project key): `visitor` uploads
|
|
71
|
+
* meet the worker's own allow-list as well as this route's, `trusted` ones
|
|
72
|
+
* (the store's server code, an admin) upload any type as before. A site
|
|
73
|
+
* exported before this header existed sends none, and the worker refuses
|
|
74
|
+
* active content (HTML, SVG, XML, scripts) from it.
|
|
75
|
+
*/
|
|
76
|
+
export declare const UPLOAD_ACCESS_HEADER = "x-teleport-upload-access";
|
|
77
|
+
export declare const generateRuntimeStorageUploadRoute: (options?: {
|
|
78
|
+
withSessionRevocation?: boolean;
|
|
79
|
+
}) => string;
|
|
49
80
|
//# 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":"AAWA,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;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAGjE,CAAA;AACD,eAAO,MAAM,yBAAyB,KAAK,CAAA;AAC3C,eAAO,MAAM,0BAA0B,MAAM,CAAA;AAE7C,yFAAyF;AACzF,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,MAAM,CAAwB,CAAA;AAE9E,8EAA8E;AAC9E,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAM3D,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,6BAA6B,CAAA;AAE9D,eAAO,MAAM,iCAAiC,aACnC;IAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAAE,KAC3C,MAsfF,CAAA"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateRuntimeStorageUploadRoute = exports.VISITOR_MAX_FILES = exports.VISITOR_MAX_FILE_BYTES = exports.VISITOR_UPLOAD_MIME_TYPES = exports.TRUSTED_UPLOAD_ROLES = exports.UPLOAD_PROXY_TIMEOUT_MS = exports.needsRuntimeStorageRoute = void 0;
|
|
3
|
+
exports.generateRuntimeStorageUploadRoute = exports.UPLOAD_ACCESS_HEADER = exports.PROVEN_TYPE_EXTENSIONS = exports.PRIVATE_FLAG_VALUES = exports.SITE_VISITOR_FILES_PER_DAY = exports.VISITOR_UPLOAD_MB_PER_DAY = exports.VISITOR_UPLOAD_LIMITS = exports.VISITOR_MAX_FILES = exports.VISITOR_MAX_FILE_BYTES = exports.VISITOR_UPLOAD_MIME_TYPES = exports.TRUSTED_UPLOAD_ROLES = exports.UPLOAD_PROXY_TIMEOUT_MS = exports.needsRuntimeStorageRoute = void 0;
|
|
4
4
|
const session_cookie_resolver_1 = require("./session-cookie-resolver");
|
|
5
5
|
const workflow_auth_generator_1 = require("./workflow-auth-generator");
|
|
6
|
+
const security_runtime_1 = require("./security-runtime");
|
|
6
7
|
const FILE_STORAGE_NODE_TYPES = new Set([
|
|
7
8
|
'file-storage-upload',
|
|
8
9
|
'file-storage-list',
|
|
@@ -70,7 +71,45 @@ exports.VISITOR_UPLOAD_MIME_TYPES = [
|
|
|
70
71
|
];
|
|
71
72
|
exports.VISITOR_MAX_FILE_BYTES = 5 * 1024 * 1024;
|
|
72
73
|
exports.VISITOR_MAX_FILES = 10;
|
|
73
|
-
|
|
74
|
+
/**
|
|
75
|
+
* How much one visitor (by address, IPv6 by its /64) and the whole site may
|
|
76
|
+
* upload, through the shared security runtime:
|
|
77
|
+
* - VISITOR_UPLOAD_LIMITS: requests, `[limit, windowSeconds]`, checked before
|
|
78
|
+
* the body is read;
|
|
79
|
+
* - VISITOR_UPLOAD_MB_PER_DAY: bytes, counted per file in whole MB (a file
|
|
80
|
+
* counts at least 1), after the form passed its checks;
|
|
81
|
+
* - SITE_VISITOR_FILES_PER_DAY: files from all visitors together, counted only
|
|
82
|
+
* for forms that passed, so junk requests cannot pause everyone's uploads.
|
|
83
|
+
* The storage worker also holds all guests together to their share of the
|
|
84
|
+
* project's quota. Without these a guest could fill the merchant's quota with
|
|
85
|
+
* allowed files until the admin's own uploads fail.
|
|
86
|
+
*/
|
|
87
|
+
exports.VISITOR_UPLOAD_LIMITS = [
|
|
88
|
+
[20, 3600],
|
|
89
|
+
[60, 86400],
|
|
90
|
+
];
|
|
91
|
+
exports.VISITOR_UPLOAD_MB_PER_DAY = 25;
|
|
92
|
+
exports.SITE_VISITOR_FILES_PER_DAY = 500;
|
|
93
|
+
/** The true values of the `private` flag, read the way the storage worker reads them. */
|
|
94
|
+
exports.PRIVATE_FLAG_VALUES = ['true', '1', 'yes'];
|
|
95
|
+
/** The extensions a proven type keeps; any other is replaced by the first. */
|
|
96
|
+
exports.PROVEN_TYPE_EXTENSIONS = {
|
|
97
|
+
'image/jpeg': ['.jpg', '.jpeg'],
|
|
98
|
+
'image/png': ['.png'],
|
|
99
|
+
'image/webp': ['.webp'],
|
|
100
|
+
'image/gif': ['.gif'],
|
|
101
|
+
'application/pdf': ['.pdf'],
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Tells the storage worker which policy a forwarded upload gets. Only this
|
|
105
|
+
* route sends it (the request carries the project key): `visitor` uploads
|
|
106
|
+
* meet the worker's own allow-list as well as this route's, `trusted` ones
|
|
107
|
+
* (the store's server code, an admin) upload any type as before. A site
|
|
108
|
+
* exported before this header existed sends none, and the worker refuses
|
|
109
|
+
* active content (HTML, SVG, XML, scripts) from it.
|
|
110
|
+
*/
|
|
111
|
+
exports.UPLOAD_ACCESS_HEADER = 'x-teleport-upload-access';
|
|
112
|
+
const generateRuntimeStorageUploadRoute = (options = {}) => {
|
|
74
113
|
return `var RUNTIME_STORAGE_URL = process.env.RUNTIME_STORAGE_URL;
|
|
75
114
|
var RUNTIME_STORAGE_API_KEY = process.env.RUNTIME_STORAGE_API_KEY;
|
|
76
115
|
var RUNTIME_STORAGE_PROJECT_ID = process.env.RUNTIME_STORAGE_PROJECT_ID;
|
|
@@ -79,7 +118,9 @@ var RUNTIME_STORAGE_PROJECT_ID = process.env.RUNTIME_STORAGE_PROJECT_ID;
|
|
|
79
118
|
// must become a 504, never a request the browser waits on forever.
|
|
80
119
|
var UPLOAD_TIMEOUT_MS = ${exports.UPLOAD_PROXY_TIMEOUT_MS};
|
|
81
120
|
|
|
82
|
-
${(0, session_cookie_resolver_1.generateCommonJsSessionTokenResolverCode)(
|
|
121
|
+
${(0, session_cookie_resolver_1.generateCommonJsSessionTokenResolverCode)('../../..', {
|
|
122
|
+
withRevocation: options.withSessionRevocation !== false,
|
|
123
|
+
})}
|
|
83
124
|
${workflow_auth_generator_1.ROLE_OF_TOKEN_CODE}
|
|
84
125
|
|
|
85
126
|
// What a visitor may upload — see TRUSTED_UPLOAD_ROLES in the generator.
|
|
@@ -93,6 +134,14 @@ var VISITOR_MAX_REQUEST_BYTES = VISITOR_MAX_FILES * VISITOR_MAX_FILE_BYTES + 256
|
|
|
93
134
|
var CRLF = Buffer.from([13, 10]);
|
|
94
135
|
var BLANK_LINE = Buffer.from([13, 10, 13, 10]);
|
|
95
136
|
|
|
137
|
+
var __security = require('${(0, security_runtime_1.securityRuntimeSpecifier)('../../..')}');
|
|
138
|
+
var VISITOR_UPLOAD_LIMITS = ${JSON.stringify(exports.VISITOR_UPLOAD_LIMITS)};
|
|
139
|
+
var VISITOR_UPLOAD_MB_PER_DAY = ${exports.VISITOR_UPLOAD_MB_PER_DAY};
|
|
140
|
+
var SITE_VISITOR_FILES_PER_DAY = ${exports.SITE_VISITOR_FILES_PER_DAY};
|
|
141
|
+
var PRIVATE_FLAG_VALUES = ${JSON.stringify(exports.PRIVATE_FLAG_VALUES)};
|
|
142
|
+
var PROVEN_TYPE_EXTENSIONS = ${JSON.stringify(exports.PROVEN_TYPE_EXTENSIONS)};
|
|
143
|
+
var UPLOAD_ACCESS_HEADER = '${exports.UPLOAD_ACCESS_HEADER}';
|
|
144
|
+
|
|
96
145
|
// Only server code can read NEXTAUTH_SECRET, so a browser cannot present it.
|
|
97
146
|
function presentsAppSecret(req) {
|
|
98
147
|
var given = req && req.headers ? req.headers['x-internal-data-secret'] : '';
|
|
@@ -155,23 +204,113 @@ function multipartBoundary(contentType) {
|
|
|
155
204
|
return match ? (match[1] || match[2] || '').trim() : '';
|
|
156
205
|
}
|
|
157
206
|
|
|
207
|
+
// RFC 7230 token characters: what busboy accepts as a disposition type or a
|
|
208
|
+
// parameter name.
|
|
209
|
+
var TOKEN_CHAR = /[!#$%&'*+.^_\\x60|~0-9A-Za-z-]/;
|
|
210
|
+
|
|
211
|
+
// A Content-Disposition value read the way busboy (the storage worker's
|
|
212
|
+
// parser) reads it: the type, then ';'-separated parameters whose value is a
|
|
213
|
+
// token, a quoted string (backslash escapes) or, for a name ending in '*', an
|
|
214
|
+
// RFC 5987 extended value (charset'language'percent-encoded). null when it is
|
|
215
|
+
// malformed. Deciding "is this a file" on any other reading lets a part the
|
|
216
|
+
// worker stores as a file pass this route as a plain field.
|
|
217
|
+
function parseDisposition(value) {
|
|
218
|
+
var i = 0;
|
|
219
|
+
while (i < value.length && TOKEN_CHAR.test(value[i])) i++;
|
|
220
|
+
var type = value.slice(0, i).toLowerCase();
|
|
221
|
+
if (!type) return null;
|
|
222
|
+
var params = {};
|
|
223
|
+
while (i < value.length) {
|
|
224
|
+
while (value[i] === ' ' || value[i] === '\\t') i++;
|
|
225
|
+
if (i >= value.length) break;
|
|
226
|
+
if (value[i] !== ';') return null;
|
|
227
|
+
i++;
|
|
228
|
+
while (value[i] === ' ' || value[i] === '\\t') i++;
|
|
229
|
+
var nameStart = i;
|
|
230
|
+
while (i < value.length && TOKEN_CHAR.test(value[i])) i++;
|
|
231
|
+
if (i === nameStart || value[i] !== '=') return null;
|
|
232
|
+
var name = value.slice(nameStart, i).toLowerCase();
|
|
233
|
+
i++;
|
|
234
|
+
var paramValue = '';
|
|
235
|
+
if (name.charAt(name.length - 1) === '*') {
|
|
236
|
+
var ext = /^([^']*)'[^']*'([^;\\s]*)/.exec(value.slice(i));
|
|
237
|
+
if (!ext) return null;
|
|
238
|
+
i += ext[0].length;
|
|
239
|
+
try {
|
|
240
|
+
paramValue = /^utf-?8$/i.test(ext[1])
|
|
241
|
+
? decodeURIComponent(ext[2])
|
|
242
|
+
: unescape(ext[2]);
|
|
243
|
+
} catch (e) {
|
|
244
|
+
return null;
|
|
245
|
+
}
|
|
246
|
+
} else if (value[i] === '"') {
|
|
247
|
+
i++;
|
|
248
|
+
var closed = false;
|
|
249
|
+
while (i < value.length) {
|
|
250
|
+
var ch = value[i];
|
|
251
|
+
if (ch === '\\\\' && i + 1 < value.length) {
|
|
252
|
+
paramValue += value[i + 1];
|
|
253
|
+
i += 2;
|
|
254
|
+
continue;
|
|
255
|
+
}
|
|
256
|
+
if (ch === '"') {
|
|
257
|
+
closed = true;
|
|
258
|
+
i++;
|
|
259
|
+
break;
|
|
260
|
+
}
|
|
261
|
+
paramValue += ch;
|
|
262
|
+
i++;
|
|
263
|
+
}
|
|
264
|
+
if (!closed) return null;
|
|
265
|
+
} else {
|
|
266
|
+
var valueStart = i;
|
|
267
|
+
while (i < value.length && TOKEN_CHAR.test(value[i])) i++;
|
|
268
|
+
if (i === valueStart) return null;
|
|
269
|
+
paramValue = value.slice(valueStart, i);
|
|
270
|
+
}
|
|
271
|
+
if (!Object.prototype.hasOwnProperty.call(params, name)) params[name] = paramValue;
|
|
272
|
+
}
|
|
273
|
+
return { type: type, params: params };
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
// One part's name, filename and declared type. A file is what the storage
|
|
277
|
+
// worker stores as one: a part whose 'filename*' or 'filename' is not empty
|
|
278
|
+
// ('filename*' first), quoted, unquoted or extended alike. The ambiguous flag marks a
|
|
279
|
+
// part two parsers could read differently (a second disposition, a folded
|
|
280
|
+
// header line, a disposition that is not well-formed form-data); a visitor's
|
|
281
|
+
// form with one is refused.
|
|
158
282
|
function readPart(headerText, data) {
|
|
159
|
-
var part = { name: '', filename: null, type: '', data: data };
|
|
283
|
+
var part = { name: '', filename: null, type: '', data: data, ambiguous: false };
|
|
284
|
+
var sawDisposition = false;
|
|
160
285
|
var lines = headerText.split(String.fromCharCode(13, 10));
|
|
161
286
|
for (var i = 0; i < lines.length; i++) {
|
|
287
|
+
if (lines[i].charAt(0) === ' ' || lines[i].charAt(0) === '\\t') {
|
|
288
|
+
part.ambiguous = true;
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
162
291
|
var colon = lines[i].indexOf(':');
|
|
163
292
|
if (colon <= 0) continue;
|
|
164
293
|
var key = lines[i].slice(0, colon).trim().toLowerCase();
|
|
165
294
|
var value = lines[i].slice(colon + 1).trim();
|
|
166
295
|
if (key === 'content-disposition') {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
296
|
+
if (sawDisposition) {
|
|
297
|
+
part.ambiguous = true;
|
|
298
|
+
continue;
|
|
299
|
+
}
|
|
300
|
+
sawDisposition = true;
|
|
301
|
+
var disposition = parseDisposition(value);
|
|
302
|
+
if (!disposition || disposition.type !== 'form-data') {
|
|
303
|
+
part.ambiguous = true;
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
306
|
+
part.name = disposition.params.name || '';
|
|
307
|
+
var filename = disposition.params['filename*'] || disposition.params.filename || '';
|
|
308
|
+
part.filename = filename ? filename : null;
|
|
171
309
|
} else if (key === 'content-type') {
|
|
172
310
|
part.type = value.split(';')[0].trim().toLowerCase();
|
|
173
311
|
}
|
|
174
312
|
}
|
|
313
|
+
if (!sawDisposition) part.ambiguous = true;
|
|
175
314
|
return part;
|
|
176
315
|
}
|
|
177
316
|
|
|
@@ -215,8 +354,12 @@ function visitorUploadRefusal(parts) {
|
|
|
215
354
|
var files = 0;
|
|
216
355
|
for (var i = 0; i < parts.length; i++) {
|
|
217
356
|
var part = parts[i];
|
|
357
|
+
if (part.ambiguous) {
|
|
358
|
+
return { status: 400, code: 'UPLOAD_INVALID', message: 'The upload is not a file form.' };
|
|
359
|
+
}
|
|
218
360
|
if (part.filename === null) {
|
|
219
|
-
|
|
361
|
+
// Every value the storage worker takes as private (true, 1, yes; any case).
|
|
362
|
+
if (part.name === 'private' && PRIVATE_FLAG_VALUES.indexOf(part.data.toString('utf8').trim().toLowerCase()) !== -1) {
|
|
220
363
|
return { status: 403, code: 'UPLOAD_PRIVATE_FORBIDDEN', message: 'Only the store can upload private files.' };
|
|
221
364
|
}
|
|
222
365
|
continue;
|
|
@@ -238,6 +381,103 @@ function visitorUploadRefusal(parts) {
|
|
|
238
381
|
return null;
|
|
239
382
|
}
|
|
240
383
|
|
|
384
|
+
// The file's base name with the extension its proven type has: x.html holding
|
|
385
|
+
// PNG bytes is stored as x.png, never under a name that says it is a page.
|
|
386
|
+
function provenFileName(filename, type) {
|
|
387
|
+
var base = String(filename).split(/[\\\\/]/).pop() || 'file';
|
|
388
|
+
var allowed = PROVEN_TYPE_EXTENSIONS[type] || [];
|
|
389
|
+
var dot = base.lastIndexOf('.');
|
|
390
|
+
var ext = dot > 0 ? base.slice(dot).toLowerCase() : '';
|
|
391
|
+
if (allowed.indexOf(ext) !== -1) return base;
|
|
392
|
+
var stem = dot > 0 ? base.slice(0, dot) : base;
|
|
393
|
+
var stemDot = stem.lastIndexOf('.');
|
|
394
|
+
if (stemDot > 0 && allowed.indexOf(stem.slice(stemDot).toLowerCase()) !== -1) return stem;
|
|
395
|
+
return (stem || 'file') + (allowed[0] || '');
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
// Header-safe: no quote, backslash or control character survives.
|
|
399
|
+
function headerSafe(text) {
|
|
400
|
+
return String(text).replace(/["\\\\\\u0000-\\u001f\\u007f]/g, '_');
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
// The checked form, written afresh: one quoted disposition per part, each
|
|
404
|
+
// file with the type its bytes proved and its base name, under a boundary of
|
|
405
|
+
// our own. The storage worker parses this and nothing else, so what it stores
|
|
406
|
+
// is exactly what visitorUploadRefusal passed — not a second reading of the
|
|
407
|
+
// visitor's bytes. null when the boundary cannot be made unique.
|
|
408
|
+
function serializeVisitorForm(parts) {
|
|
409
|
+
for (var attempt = 0; attempt < 3; attempt++) {
|
|
410
|
+
var boundary = '----tqupload' + require('crypto').randomBytes(16).toString('hex');
|
|
411
|
+
var marker = Buffer.from('--' + boundary);
|
|
412
|
+
var clash = false;
|
|
413
|
+
var chunks = [];
|
|
414
|
+
for (var i = 0; i < parts.length && !clash; i++) {
|
|
415
|
+
var part = parts[i];
|
|
416
|
+
if (part.data.indexOf(marker) !== -1) {
|
|
417
|
+
clash = true;
|
|
418
|
+
break;
|
|
419
|
+
}
|
|
420
|
+
var head = '--' + boundary + '\\r\\nContent-Disposition: form-data; name="' + headerSafe(part.name) + '"';
|
|
421
|
+
if (part.filename !== null) {
|
|
422
|
+
var type = sniffMimeType(part.data);
|
|
423
|
+
head += '; filename="' + headerSafe(provenFileName(part.filename, type)) + '"\\r\\nContent-Type: ' + type;
|
|
424
|
+
}
|
|
425
|
+
chunks.push(Buffer.from(head + '\\r\\n\\r\\n', 'utf8'), part.data, CRLF);
|
|
426
|
+
}
|
|
427
|
+
if (clash) continue;
|
|
428
|
+
chunks.push(Buffer.from('--' + boundary + '--\\r\\n'));
|
|
429
|
+
return { boundary: boundary, body: Buffer.concat(chunks) };
|
|
430
|
+
}
|
|
431
|
+
return null;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
// A visitor's request allowance, before the body is read.
|
|
435
|
+
// false = the 429 is already sent.
|
|
436
|
+
async function visitorMayUpload(req, res) {
|
|
437
|
+
for (var i = 0; i < VISITOR_UPLOAD_LIMITS.length; i++) {
|
|
438
|
+
var ok = await __security.rateLimitRequest(req, res, {
|
|
439
|
+
scope: 'runtime-storage-upload',
|
|
440
|
+
limit: VISITOR_UPLOAD_LIMITS[i][0],
|
|
441
|
+
windowSeconds: VISITOR_UPLOAD_LIMITS[i][1],
|
|
442
|
+
});
|
|
443
|
+
if (!ok) return false;
|
|
444
|
+
}
|
|
445
|
+
return true;
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
// A checked form's cost, per file: its size in whole MB out of the visitor's
|
|
449
|
+
// daily byte budget, then one file out of the site's daily visitor files.
|
|
450
|
+
// false = the 429 is already sent.
|
|
451
|
+
async function visitorMayStore(req, res, parts) {
|
|
452
|
+
var files = 0;
|
|
453
|
+
for (var i = 0; i < parts.length; i++) {
|
|
454
|
+
if (parts[i].filename === null) continue;
|
|
455
|
+
files += 1;
|
|
456
|
+
var units = Math.max(1, Math.ceil(parts[i].data.length / 1048576));
|
|
457
|
+
for (var u = 0; u < units; u++) {
|
|
458
|
+
var ok = await __security.rateLimitRequest(req, res, {
|
|
459
|
+
scope: 'runtime-storage-upload-mb',
|
|
460
|
+
limit: VISITOR_UPLOAD_MB_PER_DAY,
|
|
461
|
+
windowSeconds: 86400,
|
|
462
|
+
});
|
|
463
|
+
if (!ok) return false;
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
for (var f = 0; f < files; f++) {
|
|
467
|
+
var site = await __security.rateLimit({
|
|
468
|
+
key: 'site:visitor-uploads',
|
|
469
|
+
limit: SITE_VISITOR_FILES_PER_DAY,
|
|
470
|
+
windowSeconds: 86400,
|
|
471
|
+
});
|
|
472
|
+
if (!site.allowed) {
|
|
473
|
+
res.setHeader('Retry-After', String(site.retryAfter));
|
|
474
|
+
refuse(res, 429, 'UPLOAD_LIMIT_REACHED', 'Uploads are paused for now. Please try again later.');
|
|
475
|
+
return false;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
return true;
|
|
479
|
+
}
|
|
480
|
+
|
|
241
481
|
module.exports = async function handler(req, res) {
|
|
242
482
|
if (req.method !== 'POST') {
|
|
243
483
|
res.status(405).json({ error: 'Method not allowed' });
|
|
@@ -252,8 +492,10 @@ module.exports = async function handler(req, res) {
|
|
|
252
492
|
var trusted = await isTrustedUploader(req);
|
|
253
493
|
var body = req;
|
|
254
494
|
var contentLength = req.headers['content-length'];
|
|
495
|
+
var contentType = req.headers['content-type'];
|
|
255
496
|
|
|
256
497
|
if (!trusted) {
|
|
498
|
+
if (!(await visitorMayUpload(req, res))) return;
|
|
257
499
|
var declaredLength = parseInt(contentLength, 10);
|
|
258
500
|
if (!isNaN(declaredLength) && declaredLength > VISITOR_MAX_REQUEST_BYTES) {
|
|
259
501
|
refuse(res, 413, 'UPLOAD_TOO_LARGE', 'The upload is too large.');
|
|
@@ -284,6 +526,14 @@ module.exports = async function handler(req, res) {
|
|
|
284
526
|
refuse(res, refusal.status, refusal.code, refusal.message);
|
|
285
527
|
return;
|
|
286
528
|
}
|
|
529
|
+
if (!(await visitorMayStore(req, res, parts))) return;
|
|
530
|
+
var checked = serializeVisitorForm(parts);
|
|
531
|
+
if (!checked) {
|
|
532
|
+
refuse(res, 400, 'UPLOAD_INVALID', 'The upload could not be read.');
|
|
533
|
+
return;
|
|
534
|
+
}
|
|
535
|
+
body = checked.body;
|
|
536
|
+
contentType = 'multipart/form-data; boundary=' + checked.boundary;
|
|
287
537
|
contentLength = String(body.length);
|
|
288
538
|
}
|
|
289
539
|
|
|
@@ -300,9 +550,12 @@ module.exports = async function handler(req, res) {
|
|
|
300
550
|
var headers = {
|
|
301
551
|
'Authorization': 'Bearer ' + RUNTIME_STORAGE_API_KEY,
|
|
302
552
|
};
|
|
553
|
+
// Which of the storage worker's policies this upload gets (only this
|
|
554
|
+
// server can send it: the request carries the project key).
|
|
555
|
+
headers[UPLOAD_ACCESS_HEADER] = trusted ? 'trusted' : 'visitor';
|
|
303
556
|
|
|
304
|
-
if (
|
|
305
|
-
headers['content-type'] =
|
|
557
|
+
if (contentType) {
|
|
558
|
+
headers['content-type'] = contentType;
|
|
306
559
|
}
|
|
307
560
|
if (contentLength) {
|
|
308
561
|
headers['content-length'] = contentLength;
|
|
@@ -312,7 +565,7 @@ module.exports = async function handler(req, res) {
|
|
|
312
565
|
method: 'POST',
|
|
313
566
|
headers: headers,
|
|
314
567
|
// A trusted caller's form is streamed through untouched; a visitor's was
|
|
315
|
-
// read in full
|
|
568
|
+
// read in full, checked, and is forwarded as the form it was checked as.
|
|
316
569
|
body: body,
|
|
317
570
|
duplex: 'half',
|
|
318
571
|
signal: controller.signal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-storage-generator.js","sourceRoot":"","sources":["../../src/runtime-storage-generator.ts"],"names":[],"mappings":";;;AAAA,uEAAoF;AACpF,uEAA8D;
|
|
1
|
+
{"version":3,"file":"runtime-storage-generator.js","sourceRoot":"","sources":["../../src/runtime-storage-generator.ts"],"names":[],"mappings":";;;AAAA,uEAAoF;AACpF,uEAA8D;AAC9D,yDAA6D;AAE7D,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,qBAAqB;IACrB,mBAAmB;IACnB,0BAA0B;IAC1B,qBAAqB;CACtB,CAAC,CAAA;AAEK,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;AAPY,QAAA,wBAAwB,4BAOpC;AAED;;;;;;;;;;;;;;;;GAgBG;AACU,QAAA,uBAAuB,GAAG,MAAM,CAAA;AAE7C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACU,QAAA,oBAAoB,GAA0B,CAAC,OAAO,CAAC,CAAA;AACvD,QAAA,yBAAyB,GAA0B;IAC9D,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,WAAW;IACX,iBAAiB;CAClB,CAAA;AACY,QAAA,sBAAsB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AACxC,QAAA,iBAAiB,GAAG,EAAE,CAAA;AAEnC;;;;;;;;;;;;GAYG;AACU,QAAA,qBAAqB,GAAoC;IACpE,CAAC,EAAE,EAAE,IAAI,CAAC;IACV,CAAC,EAAE,EAAE,KAAK,CAAC;CACZ,CAAA;AACY,QAAA,yBAAyB,GAAG,EAAE,CAAA;AAC9B,QAAA,0BAA0B,GAAG,GAAG,CAAA;AAE7C,yFAAyF;AAC5E,QAAA,mBAAmB,GAA0B,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;AAE9E,8EAA8E;AACjE,QAAA,sBAAsB,GAA6B;IAC9D,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/B,WAAW,EAAE,CAAC,MAAM,CAAC;IACrB,YAAY,EAAE,CAAC,OAAO,CAAC;IACvB,WAAW,EAAE,CAAC,MAAM,CAAC;IACrB,iBAAiB,EAAE,CAAC,MAAM,CAAC;CAC5B,CAAA;AAED;;;;;;;GAOG;AACU,QAAA,oBAAoB,GAAG,0BAA0B,CAAA;AAEvD,MAAM,iCAAiC,GAAG,CAC/C,UAA+C,EAAE,EACzC,EAAE;IACV,OAAO;;;;;;0BAMiB,+BAAuB;;EAE/C,IAAA,kEAAwC,EAAC,UAAU,EAAE;QACrD,cAAc,EAAE,OAAO,CAAC,qBAAqB,KAAK,KAAK;KACxD,CAAC;EACA,4CAAkB;;;6BAGS,IAAI,CAAC,SAAS,CAAC,4BAAoB,CAAC;kCAC/B,IAAI,CAAC,SAAS,CAAC,iCAAyB,CAAC;+BAC5C,8BAAsB;0BAC3B,yBAAiB;;;;;;;4BAOf,IAAA,2CAAwB,EAAC,UAAU,CAAC;8BAClC,IAAI,CAAC,SAAS,CAAC,6BAAqB,CAAC;kCACjC,iCAAyB;mCACxB,kCAA0B;4BACjC,IAAI,CAAC,SAAS,CAAC,2BAAmB,CAAC;+BAChC,IAAI,CAAC,SAAS,CAAC,8BAAsB,CAAC;8BACvC,4BAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsdjD,CAAA;AACD,CAAC,CAAA;AAxfY,QAAA,iCAAiC,qCAwf7C"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ProjectPluginStructure } from '@teleporthq/teleport-types';
|
|
2
|
+
export { generateSecurityRuntimeCode, RATE_LIMITS_TABLE, SECURITY_RUNTIME_FILE_KEY, SECURITY_RUNTIME_FILE_NAME, SECURITY_RUNTIME_PATH, securityRuntimeSpecifier, TOO_MANY_REQUESTS_MESSAGE, } from './security-runtime-code';
|
|
3
|
+
/**
|
|
4
|
+
* Writes `utils/security-runtime.js` into the project, once. The workflow
|
|
5
|
+
* project plugin calls it for every app with server routes; an emitter whose
|
|
6
|
+
* route can exist in an app without them calls it where it emits the route
|
|
7
|
+
* that `require`s the module.
|
|
8
|
+
*
|
|
9
|
+
* The module is the same for every app (it finds the database at run time);
|
|
10
|
+
* the `pg` driver is added only when the project's database is Postgres,
|
|
11
|
+
* through the same driver map auth and invoices use.
|
|
12
|
+
*/
|
|
13
|
+
export declare const ensureSecurityRuntimeModule: (structure: ProjectPluginStructure) => void;
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/security-runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAU7E,OAAO,EACL,2BAA2B,EAC3B,iBAAiB,EACjB,yBAAyB,EACzB,0BAA0B,EAC1B,qBAAqB,EACrB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAA;AAEhC;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,cAAe,sBAAsB,KAAG,IAsB/E,CAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ensureSecurityRuntimeModule = exports.TOO_MANY_REQUESTS_MESSAGE = exports.securityRuntimeSpecifier = exports.SECURITY_RUNTIME_PATH = exports.SECURITY_RUNTIME_FILE_NAME = exports.SECURITY_RUNTIME_FILE_KEY = exports.RATE_LIMITS_TABLE = exports.generateSecurityRuntimeCode = void 0;
|
|
4
|
+
const teleport_types_1 = require("@teleporthq/teleport-types");
|
|
5
|
+
const auth_generator_1 = require("../auth-generator");
|
|
6
|
+
const resolve_data_source_1 = require("../invoice/resolve-data-source");
|
|
7
|
+
const security_runtime_code_1 = require("./security-runtime-code");
|
|
8
|
+
var security_runtime_code_2 = require("./security-runtime-code");
|
|
9
|
+
Object.defineProperty(exports, "generateSecurityRuntimeCode", { enumerable: true, get: function () { return security_runtime_code_2.generateSecurityRuntimeCode; } });
|
|
10
|
+
Object.defineProperty(exports, "RATE_LIMITS_TABLE", { enumerable: true, get: function () { return security_runtime_code_2.RATE_LIMITS_TABLE; } });
|
|
11
|
+
Object.defineProperty(exports, "SECURITY_RUNTIME_FILE_KEY", { enumerable: true, get: function () { return security_runtime_code_2.SECURITY_RUNTIME_FILE_KEY; } });
|
|
12
|
+
Object.defineProperty(exports, "SECURITY_RUNTIME_FILE_NAME", { enumerable: true, get: function () { return security_runtime_code_2.SECURITY_RUNTIME_FILE_NAME; } });
|
|
13
|
+
Object.defineProperty(exports, "SECURITY_RUNTIME_PATH", { enumerable: true, get: function () { return security_runtime_code_2.SECURITY_RUNTIME_PATH; } });
|
|
14
|
+
Object.defineProperty(exports, "securityRuntimeSpecifier", { enumerable: true, get: function () { return security_runtime_code_2.securityRuntimeSpecifier; } });
|
|
15
|
+
Object.defineProperty(exports, "TOO_MANY_REQUESTS_MESSAGE", { enumerable: true, get: function () { return security_runtime_code_2.TOO_MANY_REQUESTS_MESSAGE; } });
|
|
16
|
+
/**
|
|
17
|
+
* Writes `utils/security-runtime.js` into the project, once. The workflow
|
|
18
|
+
* project plugin calls it for every app with server routes; an emitter whose
|
|
19
|
+
* route can exist in an app without them calls it where it emits the route
|
|
20
|
+
* that `require`s the module.
|
|
21
|
+
*
|
|
22
|
+
* The module is the same for every app (it finds the database at run time);
|
|
23
|
+
* the `pg` driver is added only when the project's database is Postgres,
|
|
24
|
+
* through the same driver map auth and invoices use.
|
|
25
|
+
*/
|
|
26
|
+
const ensureSecurityRuntimeModule = (structure) => {
|
|
27
|
+
const { files, dependencies } = structure;
|
|
28
|
+
if (files.has(security_runtime_code_1.SECURITY_RUNTIME_FILE_KEY)) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
files.set(security_runtime_code_1.SECURITY_RUNTIME_FILE_KEY, {
|
|
32
|
+
path: security_runtime_code_1.SECURITY_RUNTIME_PATH,
|
|
33
|
+
files: [
|
|
34
|
+
{
|
|
35
|
+
name: security_runtime_code_1.SECURITY_RUNTIME_FILE_NAME,
|
|
36
|
+
fileType: teleport_types_1.FileType.JS,
|
|
37
|
+
content: (0, security_runtime_code_1.generateSecurityRuntimeCode)(),
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
});
|
|
41
|
+
const { dataSourceType } = (0, resolve_data_source_1.resolveInvoiceDataSource)(structure);
|
|
42
|
+
const driverDeps = (0, auth_generator_1.getDatabaseDriverDependencies)(dataSourceType);
|
|
43
|
+
if ('pg' in driverDeps && !dependencies.pg) {
|
|
44
|
+
dependencies.pg = driverDeps.pg;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
exports.ensureSecurityRuntimeModule = ensureSecurityRuntimeModule;
|
|
48
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/security-runtime/index.ts"],"names":[],"mappings":";;;AAAA,+DAA6E;AAC7E,sDAAiE;AACjE,wEAAyE;AACzE,mEAKgC;AAEhC,iEAQgC;AAP9B,oIAAA,2BAA2B,OAAA;AAC3B,0HAAA,iBAAiB,OAAA;AACjB,kIAAA,yBAAyB,OAAA;AACzB,mIAAA,0BAA0B,OAAA;AAC1B,8HAAA,qBAAqB,OAAA;AACrB,iIAAA,wBAAwB,OAAA;AACxB,kIAAA,yBAAyB,OAAA;AAG3B;;;;;;;;;GASG;AACI,MAAM,2BAA2B,GAAG,CAAC,SAAiC,EAAQ,EAAE;IACrF,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,SAAS,CAAA;IACzC,IAAI,KAAK,CAAC,GAAG,CAAC,iDAAyB,CAAC,EAAE;QACxC,OAAM;KACP;IAED,KAAK,CAAC,GAAG,CAAC,iDAAyB,EAAE;QACnC,IAAI,EAAE,6CAAqB;QAC3B,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,kDAA0B;gBAChC,QAAQ,EAAE,yBAAQ,CAAC,EAAE;gBACrB,OAAO,EAAE,IAAA,mDAA2B,GAAE;aACvC;SACF;KACF,CAAC,CAAA;IAEF,MAAM,EAAE,cAAc,EAAE,GAAG,IAAA,8CAAwB,EAAC,SAAS,CAAC,CAAA;IAC9D,MAAM,UAAU,GAAG,IAAA,8CAA6B,EAAC,cAAc,CAAC,CAAA;IAChE,IAAI,IAAI,IAAI,UAAU,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE;QAC1C,YAAY,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAA;KAChC;AACH,CAAC,CAAA;AAtBY,QAAA,2BAA2B,+BAsBvC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where the shared security runtime lives in the generated project
|
|
3
|
+
* (`utils/security-runtime.js`), and the table its rate limits keep.
|
|
4
|
+
*/
|
|
5
|
+
export declare const SECURITY_RUNTIME_FILE_KEY = "security-runtime";
|
|
6
|
+
export declare const SECURITY_RUNTIME_PATH: string[];
|
|
7
|
+
export declare const SECURITY_RUNTIME_FILE_NAME = "security-runtime";
|
|
8
|
+
export declare const RATE_LIMITS_TABLE = "teleport_rate_limits";
|
|
9
|
+
/** What `rateLimitRequest` answers a refused request, with a 429. */
|
|
10
|
+
export declare const TOO_MANY_REQUESTS_MESSAGE = "Too many requests. Try again later.";
|
|
11
|
+
/**
|
|
12
|
+
* The `require` specifier of the runtime from a generated file whose folder
|
|
13
|
+
* is `relativePrefix` below the project root: `'../../..'` for
|
|
14
|
+
* `pages/api/<folder>/<route>.js`, `'../..'` for `pages/api/<route>.js` and
|
|
15
|
+
* for `utils/workflows/server-runtime.js`.
|
|
16
|
+
*/
|
|
17
|
+
export declare const securityRuntimeSpecifier: (relativePrefix: string) => string;
|
|
18
|
+
/**
|
|
19
|
+
* Emits `utils/security-runtime.js` — the one place the generated app's
|
|
20
|
+
* server code takes the visitor's address, compares secrets, counts rate
|
|
21
|
+
* limits and answers errors from.
|
|
22
|
+
*
|
|
23
|
+
* - `clientIp(req)` reads the address only where the host guarantees it: on
|
|
24
|
+
* Vercel the headers its edge sets; elsewhere `X-Forwarded-For` only when
|
|
25
|
+
* the connection comes from a proxy on a private address, and only the hop
|
|
26
|
+
* that proxy appended; otherwise the socket address. A visitor-written hop
|
|
27
|
+
* is never read. `TQ_TRUSTED_PROXY` (`private` default | `vercel` | `none`)
|
|
28
|
+
* lets a self-hoster narrow that (see the emitted header).
|
|
29
|
+
* - `safeEqual(a, b)` is a constant-time compare that is false for anything
|
|
30
|
+
* missing, empty or of another length, and never throws.
|
|
31
|
+
* - `visitorKey(ip)` is the visitor an address stands for: an IPv4 address
|
|
32
|
+
* itself, an IPv6 one its /64 (an IPv4 tail counted as the two groups it
|
|
33
|
+
* fills). Every rate limit keyed by visitor uses it.
|
|
34
|
+
* - `rateLimit` counts fixed windows in the app's Postgres database (table
|
|
35
|
+
* `teleport_rate_limits`, created on first use under an advisory lock), so
|
|
36
|
+
* every instance of a serverless app counts together. Only an app with no
|
|
37
|
+
* database (or no `pg` driver) counts in a bounded per-instance map; a
|
|
38
|
+
* database error counts in that map for a short while and is logged once.
|
|
39
|
+
* A request waits on the database at most 1.5 s; after a failure one
|
|
40
|
+
* request at a time probes it. Keys are stored as `<windowSeconds>:<sha256>`,
|
|
41
|
+
* so no address or email reaches the table; each row carries its indexed
|
|
42
|
+
* `expires_at`, and an unawaited cleanup deletes windows that are over.
|
|
43
|
+
* - `rateLimitRequest` keys by route scope, visitor (an IPv6 visitor by its
|
|
44
|
+
* /64) and optional parts, and answers a refusal with a 429 itself.
|
|
45
|
+
* - `sendClientError` answers `{ error, id }` with a generic message and logs
|
|
46
|
+
* the detail under the same opaque id, server-side only.
|
|
47
|
+
*
|
|
48
|
+
* One module for every app: whether a database is there is read at run time
|
|
49
|
+
* (`TELEPORT_DB_CONNECTION_STRING` / `TELEPORT_DB_HOST` and the driver), and
|
|
50
|
+
* the driver is loaded on first use, so an app without `pg` still builds.
|
|
51
|
+
*/
|
|
52
|
+
export declare const generateSecurityRuntimeCode: () => string;
|
|
53
|
+
//# sourceMappingURL=security-runtime-code.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-runtime-code.d.ts","sourceRoot":"","sources":["../../../src/security-runtime/security-runtime-code.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,yBAAyB,qBAAqB,CAAA;AAC3D,eAAO,MAAM,qBAAqB,UAAY,CAAA;AAC9C,eAAO,MAAM,0BAA0B,qBAAqB,CAAA;AAC5D,eAAO,MAAM,iBAAiB,yBAAyB,CAAA;AAEvD,qEAAqE;AACrE,eAAO,MAAM,yBAAyB,wCAAwC,CAAA;AAE9E;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,mBAAoB,MAAM,KAAG,MACoB,CAAA;AAEtF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,2BAA2B,QAAO,MAygB9C,CAAA"}
|