@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,5 +1,6 @@
|
|
|
1
1
|
import { generateCommonJsSessionTokenResolverCode } from './session-cookie-resolver';
|
|
2
2
|
import { ROLE_OF_TOKEN_CODE } from './workflow-auth-generator';
|
|
3
|
+
import { securityRuntimeSpecifier } from './security-runtime';
|
|
3
4
|
const FILE_STORAGE_NODE_TYPES = new Set([
|
|
4
5
|
'file-storage-upload',
|
|
5
6
|
'file-storage-list',
|
|
@@ -66,7 +67,45 @@ export const VISITOR_UPLOAD_MIME_TYPES = [
|
|
|
66
67
|
];
|
|
67
68
|
export const VISITOR_MAX_FILE_BYTES = 5 * 1024 * 1024;
|
|
68
69
|
export const VISITOR_MAX_FILES = 10;
|
|
69
|
-
|
|
70
|
+
/**
|
|
71
|
+
* How much one visitor (by address, IPv6 by its /64) and the whole site may
|
|
72
|
+
* upload, through the shared security runtime:
|
|
73
|
+
* - VISITOR_UPLOAD_LIMITS: requests, `[limit, windowSeconds]`, checked before
|
|
74
|
+
* the body is read;
|
|
75
|
+
* - VISITOR_UPLOAD_MB_PER_DAY: bytes, counted per file in whole MB (a file
|
|
76
|
+
* counts at least 1), after the form passed its checks;
|
|
77
|
+
* - SITE_VISITOR_FILES_PER_DAY: files from all visitors together, counted only
|
|
78
|
+
* for forms that passed, so junk requests cannot pause everyone's uploads.
|
|
79
|
+
* The storage worker also holds all guests together to their share of the
|
|
80
|
+
* project's quota. Without these a guest could fill the merchant's quota with
|
|
81
|
+
* allowed files until the admin's own uploads fail.
|
|
82
|
+
*/
|
|
83
|
+
export const VISITOR_UPLOAD_LIMITS = [
|
|
84
|
+
[20, 3600],
|
|
85
|
+
[60, 86400],
|
|
86
|
+
];
|
|
87
|
+
export const VISITOR_UPLOAD_MB_PER_DAY = 25;
|
|
88
|
+
export const SITE_VISITOR_FILES_PER_DAY = 500;
|
|
89
|
+
/** The true values of the `private` flag, read the way the storage worker reads them. */
|
|
90
|
+
export const PRIVATE_FLAG_VALUES = ['true', '1', 'yes'];
|
|
91
|
+
/** The extensions a proven type keeps; any other is replaced by the first. */
|
|
92
|
+
export const PROVEN_TYPE_EXTENSIONS = {
|
|
93
|
+
'image/jpeg': ['.jpg', '.jpeg'],
|
|
94
|
+
'image/png': ['.png'],
|
|
95
|
+
'image/webp': ['.webp'],
|
|
96
|
+
'image/gif': ['.gif'],
|
|
97
|
+
'application/pdf': ['.pdf'],
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Tells the storage worker which policy a forwarded upload gets. Only this
|
|
101
|
+
* route sends it (the request carries the project key): `visitor` uploads
|
|
102
|
+
* meet the worker's own allow-list as well as this route's, `trusted` ones
|
|
103
|
+
* (the store's server code, an admin) upload any type as before. A site
|
|
104
|
+
* exported before this header existed sends none, and the worker refuses
|
|
105
|
+
* active content (HTML, SVG, XML, scripts) from it.
|
|
106
|
+
*/
|
|
107
|
+
export const UPLOAD_ACCESS_HEADER = 'x-teleport-upload-access';
|
|
108
|
+
export const generateRuntimeStorageUploadRoute = (options = {}) => {
|
|
70
109
|
return `var RUNTIME_STORAGE_URL = process.env.RUNTIME_STORAGE_URL;
|
|
71
110
|
var RUNTIME_STORAGE_API_KEY = process.env.RUNTIME_STORAGE_API_KEY;
|
|
72
111
|
var RUNTIME_STORAGE_PROJECT_ID = process.env.RUNTIME_STORAGE_PROJECT_ID;
|
|
@@ -75,7 +114,9 @@ var RUNTIME_STORAGE_PROJECT_ID = process.env.RUNTIME_STORAGE_PROJECT_ID;
|
|
|
75
114
|
// must become a 504, never a request the browser waits on forever.
|
|
76
115
|
var UPLOAD_TIMEOUT_MS = ${UPLOAD_PROXY_TIMEOUT_MS};
|
|
77
116
|
|
|
78
|
-
${generateCommonJsSessionTokenResolverCode(
|
|
117
|
+
${generateCommonJsSessionTokenResolverCode('../../..', {
|
|
118
|
+
withRevocation: options.withSessionRevocation !== false,
|
|
119
|
+
})}
|
|
79
120
|
${ROLE_OF_TOKEN_CODE}
|
|
80
121
|
|
|
81
122
|
// What a visitor may upload — see TRUSTED_UPLOAD_ROLES in the generator.
|
|
@@ -89,6 +130,14 @@ var VISITOR_MAX_REQUEST_BYTES = VISITOR_MAX_FILES * VISITOR_MAX_FILE_BYTES + 256
|
|
|
89
130
|
var CRLF = Buffer.from([13, 10]);
|
|
90
131
|
var BLANK_LINE = Buffer.from([13, 10, 13, 10]);
|
|
91
132
|
|
|
133
|
+
var __security = require('${securityRuntimeSpecifier('../../..')}');
|
|
134
|
+
var VISITOR_UPLOAD_LIMITS = ${JSON.stringify(VISITOR_UPLOAD_LIMITS)};
|
|
135
|
+
var VISITOR_UPLOAD_MB_PER_DAY = ${VISITOR_UPLOAD_MB_PER_DAY};
|
|
136
|
+
var SITE_VISITOR_FILES_PER_DAY = ${SITE_VISITOR_FILES_PER_DAY};
|
|
137
|
+
var PRIVATE_FLAG_VALUES = ${JSON.stringify(PRIVATE_FLAG_VALUES)};
|
|
138
|
+
var PROVEN_TYPE_EXTENSIONS = ${JSON.stringify(PROVEN_TYPE_EXTENSIONS)};
|
|
139
|
+
var UPLOAD_ACCESS_HEADER = '${UPLOAD_ACCESS_HEADER}';
|
|
140
|
+
|
|
92
141
|
// Only server code can read NEXTAUTH_SECRET, so a browser cannot present it.
|
|
93
142
|
function presentsAppSecret(req) {
|
|
94
143
|
var given = req && req.headers ? req.headers['x-internal-data-secret'] : '';
|
|
@@ -151,23 +200,113 @@ function multipartBoundary(contentType) {
|
|
|
151
200
|
return match ? (match[1] || match[2] || '').trim() : '';
|
|
152
201
|
}
|
|
153
202
|
|
|
203
|
+
// RFC 7230 token characters: what busboy accepts as a disposition type or a
|
|
204
|
+
// parameter name.
|
|
205
|
+
var TOKEN_CHAR = /[!#$%&'*+.^_\\x60|~0-9A-Za-z-]/;
|
|
206
|
+
|
|
207
|
+
// A Content-Disposition value read the way busboy (the storage worker's
|
|
208
|
+
// parser) reads it: the type, then ';'-separated parameters whose value is a
|
|
209
|
+
// token, a quoted string (backslash escapes) or, for a name ending in '*', an
|
|
210
|
+
// RFC 5987 extended value (charset'language'percent-encoded). null when it is
|
|
211
|
+
// malformed. Deciding "is this a file" on any other reading lets a part the
|
|
212
|
+
// worker stores as a file pass this route as a plain field.
|
|
213
|
+
function parseDisposition(value) {
|
|
214
|
+
var i = 0;
|
|
215
|
+
while (i < value.length && TOKEN_CHAR.test(value[i])) i++;
|
|
216
|
+
var type = value.slice(0, i).toLowerCase();
|
|
217
|
+
if (!type) return null;
|
|
218
|
+
var params = {};
|
|
219
|
+
while (i < value.length) {
|
|
220
|
+
while (value[i] === ' ' || value[i] === '\\t') i++;
|
|
221
|
+
if (i >= value.length) break;
|
|
222
|
+
if (value[i] !== ';') return null;
|
|
223
|
+
i++;
|
|
224
|
+
while (value[i] === ' ' || value[i] === '\\t') i++;
|
|
225
|
+
var nameStart = i;
|
|
226
|
+
while (i < value.length && TOKEN_CHAR.test(value[i])) i++;
|
|
227
|
+
if (i === nameStart || value[i] !== '=') return null;
|
|
228
|
+
var name = value.slice(nameStart, i).toLowerCase();
|
|
229
|
+
i++;
|
|
230
|
+
var paramValue = '';
|
|
231
|
+
if (name.charAt(name.length - 1) === '*') {
|
|
232
|
+
var ext = /^([^']*)'[^']*'([^;\\s]*)/.exec(value.slice(i));
|
|
233
|
+
if (!ext) return null;
|
|
234
|
+
i += ext[0].length;
|
|
235
|
+
try {
|
|
236
|
+
paramValue = /^utf-?8$/i.test(ext[1])
|
|
237
|
+
? decodeURIComponent(ext[2])
|
|
238
|
+
: unescape(ext[2]);
|
|
239
|
+
} catch (e) {
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
} else if (value[i] === '"') {
|
|
243
|
+
i++;
|
|
244
|
+
var closed = false;
|
|
245
|
+
while (i < value.length) {
|
|
246
|
+
var ch = value[i];
|
|
247
|
+
if (ch === '\\\\' && i + 1 < value.length) {
|
|
248
|
+
paramValue += value[i + 1];
|
|
249
|
+
i += 2;
|
|
250
|
+
continue;
|
|
251
|
+
}
|
|
252
|
+
if (ch === '"') {
|
|
253
|
+
closed = true;
|
|
254
|
+
i++;
|
|
255
|
+
break;
|
|
256
|
+
}
|
|
257
|
+
paramValue += ch;
|
|
258
|
+
i++;
|
|
259
|
+
}
|
|
260
|
+
if (!closed) return null;
|
|
261
|
+
} else {
|
|
262
|
+
var valueStart = i;
|
|
263
|
+
while (i < value.length && TOKEN_CHAR.test(value[i])) i++;
|
|
264
|
+
if (i === valueStart) return null;
|
|
265
|
+
paramValue = value.slice(valueStart, i);
|
|
266
|
+
}
|
|
267
|
+
if (!Object.prototype.hasOwnProperty.call(params, name)) params[name] = paramValue;
|
|
268
|
+
}
|
|
269
|
+
return { type: type, params: params };
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
// One part's name, filename and declared type. A file is what the storage
|
|
273
|
+
// worker stores as one: a part whose 'filename*' or 'filename' is not empty
|
|
274
|
+
// ('filename*' first), quoted, unquoted or extended alike. The ambiguous flag marks a
|
|
275
|
+
// part two parsers could read differently (a second disposition, a folded
|
|
276
|
+
// header line, a disposition that is not well-formed form-data); a visitor's
|
|
277
|
+
// form with one is refused.
|
|
154
278
|
function readPart(headerText, data) {
|
|
155
|
-
var part = { name: '', filename: null, type: '', data: data };
|
|
279
|
+
var part = { name: '', filename: null, type: '', data: data, ambiguous: false };
|
|
280
|
+
var sawDisposition = false;
|
|
156
281
|
var lines = headerText.split(String.fromCharCode(13, 10));
|
|
157
282
|
for (var i = 0; i < lines.length; i++) {
|
|
283
|
+
if (lines[i].charAt(0) === ' ' || lines[i].charAt(0) === '\\t') {
|
|
284
|
+
part.ambiguous = true;
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
158
287
|
var colon = lines[i].indexOf(':');
|
|
159
288
|
if (colon <= 0) continue;
|
|
160
289
|
var key = lines[i].slice(0, colon).trim().toLowerCase();
|
|
161
290
|
var value = lines[i].slice(colon + 1).trim();
|
|
162
291
|
if (key === 'content-disposition') {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
292
|
+
if (sawDisposition) {
|
|
293
|
+
part.ambiguous = true;
|
|
294
|
+
continue;
|
|
295
|
+
}
|
|
296
|
+
sawDisposition = true;
|
|
297
|
+
var disposition = parseDisposition(value);
|
|
298
|
+
if (!disposition || disposition.type !== 'form-data') {
|
|
299
|
+
part.ambiguous = true;
|
|
300
|
+
continue;
|
|
301
|
+
}
|
|
302
|
+
part.name = disposition.params.name || '';
|
|
303
|
+
var filename = disposition.params['filename*'] || disposition.params.filename || '';
|
|
304
|
+
part.filename = filename ? filename : null;
|
|
167
305
|
} else if (key === 'content-type') {
|
|
168
306
|
part.type = value.split(';')[0].trim().toLowerCase();
|
|
169
307
|
}
|
|
170
308
|
}
|
|
309
|
+
if (!sawDisposition) part.ambiguous = true;
|
|
171
310
|
return part;
|
|
172
311
|
}
|
|
173
312
|
|
|
@@ -211,8 +350,12 @@ function visitorUploadRefusal(parts) {
|
|
|
211
350
|
var files = 0;
|
|
212
351
|
for (var i = 0; i < parts.length; i++) {
|
|
213
352
|
var part = parts[i];
|
|
353
|
+
if (part.ambiguous) {
|
|
354
|
+
return { status: 400, code: 'UPLOAD_INVALID', message: 'The upload is not a file form.' };
|
|
355
|
+
}
|
|
214
356
|
if (part.filename === null) {
|
|
215
|
-
|
|
357
|
+
// Every value the storage worker takes as private (true, 1, yes; any case).
|
|
358
|
+
if (part.name === 'private' && PRIVATE_FLAG_VALUES.indexOf(part.data.toString('utf8').trim().toLowerCase()) !== -1) {
|
|
216
359
|
return { status: 403, code: 'UPLOAD_PRIVATE_FORBIDDEN', message: 'Only the store can upload private files.' };
|
|
217
360
|
}
|
|
218
361
|
continue;
|
|
@@ -234,6 +377,103 @@ function visitorUploadRefusal(parts) {
|
|
|
234
377
|
return null;
|
|
235
378
|
}
|
|
236
379
|
|
|
380
|
+
// The file's base name with the extension its proven type has: x.html holding
|
|
381
|
+
// PNG bytes is stored as x.png, never under a name that says it is a page.
|
|
382
|
+
function provenFileName(filename, type) {
|
|
383
|
+
var base = String(filename).split(/[\\\\/]/).pop() || 'file';
|
|
384
|
+
var allowed = PROVEN_TYPE_EXTENSIONS[type] || [];
|
|
385
|
+
var dot = base.lastIndexOf('.');
|
|
386
|
+
var ext = dot > 0 ? base.slice(dot).toLowerCase() : '';
|
|
387
|
+
if (allowed.indexOf(ext) !== -1) return base;
|
|
388
|
+
var stem = dot > 0 ? base.slice(0, dot) : base;
|
|
389
|
+
var stemDot = stem.lastIndexOf('.');
|
|
390
|
+
if (stemDot > 0 && allowed.indexOf(stem.slice(stemDot).toLowerCase()) !== -1) return stem;
|
|
391
|
+
return (stem || 'file') + (allowed[0] || '');
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
// Header-safe: no quote, backslash or control character survives.
|
|
395
|
+
function headerSafe(text) {
|
|
396
|
+
return String(text).replace(/["\\\\\\u0000-\\u001f\\u007f]/g, '_');
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
// The checked form, written afresh: one quoted disposition per part, each
|
|
400
|
+
// file with the type its bytes proved and its base name, under a boundary of
|
|
401
|
+
// our own. The storage worker parses this and nothing else, so what it stores
|
|
402
|
+
// is exactly what visitorUploadRefusal passed — not a second reading of the
|
|
403
|
+
// visitor's bytes. null when the boundary cannot be made unique.
|
|
404
|
+
function serializeVisitorForm(parts) {
|
|
405
|
+
for (var attempt = 0; attempt < 3; attempt++) {
|
|
406
|
+
var boundary = '----tqupload' + require('crypto').randomBytes(16).toString('hex');
|
|
407
|
+
var marker = Buffer.from('--' + boundary);
|
|
408
|
+
var clash = false;
|
|
409
|
+
var chunks = [];
|
|
410
|
+
for (var i = 0; i < parts.length && !clash; i++) {
|
|
411
|
+
var part = parts[i];
|
|
412
|
+
if (part.data.indexOf(marker) !== -1) {
|
|
413
|
+
clash = true;
|
|
414
|
+
break;
|
|
415
|
+
}
|
|
416
|
+
var head = '--' + boundary + '\\r\\nContent-Disposition: form-data; name="' + headerSafe(part.name) + '"';
|
|
417
|
+
if (part.filename !== null) {
|
|
418
|
+
var type = sniffMimeType(part.data);
|
|
419
|
+
head += '; filename="' + headerSafe(provenFileName(part.filename, type)) + '"\\r\\nContent-Type: ' + type;
|
|
420
|
+
}
|
|
421
|
+
chunks.push(Buffer.from(head + '\\r\\n\\r\\n', 'utf8'), part.data, CRLF);
|
|
422
|
+
}
|
|
423
|
+
if (clash) continue;
|
|
424
|
+
chunks.push(Buffer.from('--' + boundary + '--\\r\\n'));
|
|
425
|
+
return { boundary: boundary, body: Buffer.concat(chunks) };
|
|
426
|
+
}
|
|
427
|
+
return null;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
// A visitor's request allowance, before the body is read.
|
|
431
|
+
// false = the 429 is already sent.
|
|
432
|
+
async function visitorMayUpload(req, res) {
|
|
433
|
+
for (var i = 0; i < VISITOR_UPLOAD_LIMITS.length; i++) {
|
|
434
|
+
var ok = await __security.rateLimitRequest(req, res, {
|
|
435
|
+
scope: 'runtime-storage-upload',
|
|
436
|
+
limit: VISITOR_UPLOAD_LIMITS[i][0],
|
|
437
|
+
windowSeconds: VISITOR_UPLOAD_LIMITS[i][1],
|
|
438
|
+
});
|
|
439
|
+
if (!ok) return false;
|
|
440
|
+
}
|
|
441
|
+
return true;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
// A checked form's cost, per file: its size in whole MB out of the visitor's
|
|
445
|
+
// daily byte budget, then one file out of the site's daily visitor files.
|
|
446
|
+
// false = the 429 is already sent.
|
|
447
|
+
async function visitorMayStore(req, res, parts) {
|
|
448
|
+
var files = 0;
|
|
449
|
+
for (var i = 0; i < parts.length; i++) {
|
|
450
|
+
if (parts[i].filename === null) continue;
|
|
451
|
+
files += 1;
|
|
452
|
+
var units = Math.max(1, Math.ceil(parts[i].data.length / 1048576));
|
|
453
|
+
for (var u = 0; u < units; u++) {
|
|
454
|
+
var ok = await __security.rateLimitRequest(req, res, {
|
|
455
|
+
scope: 'runtime-storage-upload-mb',
|
|
456
|
+
limit: VISITOR_UPLOAD_MB_PER_DAY,
|
|
457
|
+
windowSeconds: 86400,
|
|
458
|
+
});
|
|
459
|
+
if (!ok) return false;
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
for (var f = 0; f < files; f++) {
|
|
463
|
+
var site = await __security.rateLimit({
|
|
464
|
+
key: 'site:visitor-uploads',
|
|
465
|
+
limit: SITE_VISITOR_FILES_PER_DAY,
|
|
466
|
+
windowSeconds: 86400,
|
|
467
|
+
});
|
|
468
|
+
if (!site.allowed) {
|
|
469
|
+
res.setHeader('Retry-After', String(site.retryAfter));
|
|
470
|
+
refuse(res, 429, 'UPLOAD_LIMIT_REACHED', 'Uploads are paused for now. Please try again later.');
|
|
471
|
+
return false;
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
return true;
|
|
475
|
+
}
|
|
476
|
+
|
|
237
477
|
module.exports = async function handler(req, res) {
|
|
238
478
|
if (req.method !== 'POST') {
|
|
239
479
|
res.status(405).json({ error: 'Method not allowed' });
|
|
@@ -248,8 +488,10 @@ module.exports = async function handler(req, res) {
|
|
|
248
488
|
var trusted = await isTrustedUploader(req);
|
|
249
489
|
var body = req;
|
|
250
490
|
var contentLength = req.headers['content-length'];
|
|
491
|
+
var contentType = req.headers['content-type'];
|
|
251
492
|
|
|
252
493
|
if (!trusted) {
|
|
494
|
+
if (!(await visitorMayUpload(req, res))) return;
|
|
253
495
|
var declaredLength = parseInt(contentLength, 10);
|
|
254
496
|
if (!isNaN(declaredLength) && declaredLength > VISITOR_MAX_REQUEST_BYTES) {
|
|
255
497
|
refuse(res, 413, 'UPLOAD_TOO_LARGE', 'The upload is too large.');
|
|
@@ -280,6 +522,14 @@ module.exports = async function handler(req, res) {
|
|
|
280
522
|
refuse(res, refusal.status, refusal.code, refusal.message);
|
|
281
523
|
return;
|
|
282
524
|
}
|
|
525
|
+
if (!(await visitorMayStore(req, res, parts))) return;
|
|
526
|
+
var checked = serializeVisitorForm(parts);
|
|
527
|
+
if (!checked) {
|
|
528
|
+
refuse(res, 400, 'UPLOAD_INVALID', 'The upload could not be read.');
|
|
529
|
+
return;
|
|
530
|
+
}
|
|
531
|
+
body = checked.body;
|
|
532
|
+
contentType = 'multipart/form-data; boundary=' + checked.boundary;
|
|
283
533
|
contentLength = String(body.length);
|
|
284
534
|
}
|
|
285
535
|
|
|
@@ -296,9 +546,12 @@ module.exports = async function handler(req, res) {
|
|
|
296
546
|
var headers = {
|
|
297
547
|
'Authorization': 'Bearer ' + RUNTIME_STORAGE_API_KEY,
|
|
298
548
|
};
|
|
549
|
+
// Which of the storage worker's policies this upload gets (only this
|
|
550
|
+
// server can send it: the request carries the project key).
|
|
551
|
+
headers[UPLOAD_ACCESS_HEADER] = trusted ? 'trusted' : 'visitor';
|
|
299
552
|
|
|
300
|
-
if (
|
|
301
|
-
headers['content-type'] =
|
|
553
|
+
if (contentType) {
|
|
554
|
+
headers['content-type'] = contentType;
|
|
302
555
|
}
|
|
303
556
|
if (contentLength) {
|
|
304
557
|
headers['content-length'] = contentLength;
|
|
@@ -308,7 +561,7 @@ module.exports = async function handler(req, res) {
|
|
|
308
561
|
method: 'POST',
|
|
309
562
|
headers: headers,
|
|
310
563
|
// A trusted caller's form is streamed through untouched; a visitor's was
|
|
311
|
-
// read in full
|
|
564
|
+
// read in full, checked, and is forwarded as the form it was checked as.
|
|
312
565
|
body: body,
|
|
313
566
|
duplex: 'half',
|
|
314
567
|
signal: controller.signal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-storage-generator.js","sourceRoot":"","sources":["../../src/runtime-storage-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wCAAwC,EAAE,MAAM,2BAA2B,CAAA;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"runtime-storage-generator.js","sourceRoot":"","sources":["../../src/runtime-storage-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,37 @@
|
|
|
1
|
+
import { FileType } from '@teleporthq/teleport-types';
|
|
2
|
+
import { getDatabaseDriverDependencies } from '../auth-generator';
|
|
3
|
+
import { resolveInvoiceDataSource } from '../invoice/resolve-data-source';
|
|
4
|
+
import { generateSecurityRuntimeCode, SECURITY_RUNTIME_FILE_KEY, SECURITY_RUNTIME_FILE_NAME, SECURITY_RUNTIME_PATH, } from './security-runtime-code';
|
|
5
|
+
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';
|
|
6
|
+
/**
|
|
7
|
+
* Writes `utils/security-runtime.js` into the project, once. The workflow
|
|
8
|
+
* project plugin calls it for every app with server routes; an emitter whose
|
|
9
|
+
* route can exist in an app without them calls it where it emits the route
|
|
10
|
+
* that `require`s the module.
|
|
11
|
+
*
|
|
12
|
+
* The module is the same for every app (it finds the database at run time);
|
|
13
|
+
* the `pg` driver is added only when the project's database is Postgres,
|
|
14
|
+
* through the same driver map auth and invoices use.
|
|
15
|
+
*/
|
|
16
|
+
export const ensureSecurityRuntimeModule = (structure) => {
|
|
17
|
+
const { files, dependencies } = structure;
|
|
18
|
+
if (files.has(SECURITY_RUNTIME_FILE_KEY)) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
files.set(SECURITY_RUNTIME_FILE_KEY, {
|
|
22
|
+
path: SECURITY_RUNTIME_PATH,
|
|
23
|
+
files: [
|
|
24
|
+
{
|
|
25
|
+
name: SECURITY_RUNTIME_FILE_NAME,
|
|
26
|
+
fileType: FileType.JS,
|
|
27
|
+
content: generateSecurityRuntimeCode(),
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
});
|
|
31
|
+
const { dataSourceType } = resolveInvoiceDataSource(structure);
|
|
32
|
+
const driverDeps = getDatabaseDriverDependencies(dataSourceType);
|
|
33
|
+
if ('pg' in driverDeps && !dependencies.pg) {
|
|
34
|
+
dependencies.pg = driverDeps.pg;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/security-runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA0B,MAAM,4BAA4B,CAAA;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAA;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AACzE,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,2BAA2B,EAC3B,iBAAiB,EACjB,yBAAyB,EACzB,0BAA0B,EAC1B,qBAAqB,EACrB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAA;AAEhC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,SAAiC,EAAQ,EAAE;IACrF,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,SAAS,CAAA;IACzC,IAAI,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE;QACxC,OAAM;KACP;IAED,KAAK,CAAC,GAAG,CAAC,yBAAyB,EAAE;QACnC,IAAI,EAAE,qBAAqB;QAC3B,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,0BAA0B;gBAChC,QAAQ,EAAE,QAAQ,CAAC,EAAE;gBACrB,OAAO,EAAE,2BAA2B,EAAE;aACvC;SACF;KACF,CAAC,CAAA;IAEF,MAAM,EAAE,cAAc,EAAE,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAA;IAC9D,MAAM,UAAU,GAAG,6BAA6B,CAAC,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"}
|
|
@@ -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"}
|