@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
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import * as fs from 'fs'
|
|
2
|
+
import * as path from 'path'
|
|
3
|
+
import * as ts from 'typescript'
|
|
4
|
+
import {
|
|
5
|
+
PROTECTED_ENV_NAMES,
|
|
6
|
+
PROTECTED_ENV_NAME_PATTERN,
|
|
7
|
+
PLATFORM_ENV_NAME_PATTERN,
|
|
8
|
+
INTEGRATION_ENV_NAME_PATTERN,
|
|
9
|
+
SANDBOX_ESCAPE_PATTERNS,
|
|
10
|
+
} from '../src/security-scanner'
|
|
11
|
+
import { generalCustomJs } from '../src/nodes/general/general-custom-js'
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* The custom-JS security lists are kept in several copies, one per checkpoint:
|
|
15
|
+
* the editor (teleport-gui `workflow-schema`), the publish gate
|
|
16
|
+
* (teleport-services-worker), the codegen gate (`security-scanner.ts`) and the
|
|
17
|
+
* runtime `process` shadow inlined in the custom-JS handler. A name or a
|
|
18
|
+
* pattern added to one and not the others is a hole at that checkpoint, so
|
|
19
|
+
* this spec reads every copy by path and fails when they drift. It also holds
|
|
20
|
+
* the rule that every secret TeleportHQ keeps for the site (the system-managed
|
|
21
|
+
* list, GUI and worker) is protected from custom JS.
|
|
22
|
+
*
|
|
23
|
+
* The GUI and worker copies are read from the sibling checkouts
|
|
24
|
+
* (`<workspace>/teleport-gui`, `<workspace>/teleport-services-worker`). A
|
|
25
|
+
* checkout of this repository alone skips those comparisons, saying so; in a
|
|
26
|
+
* checkout that has the sibling, a copy that is not where this spec looks
|
|
27
|
+
* fails ("copy not found at <path>") — a moved copy is never left unchecked.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
const WORKSPACE = path.resolve(__dirname, '..', '..', '..', '..')
|
|
31
|
+
const GUI = path.join(WORKSPACE, 'teleport-gui')
|
|
32
|
+
const WORKER = path.join(WORKSPACE, 'teleport-services-worker')
|
|
33
|
+
|
|
34
|
+
const GUI_FILES = {
|
|
35
|
+
protectedNames: path.join(GUI, 'packages/workflow-schema/src/security/protected-env-names.ts'),
|
|
36
|
+
sandboxEscapes: path.join(
|
|
37
|
+
GUI,
|
|
38
|
+
'packages/workflow-schema/src/security/sandbox-escape-patterns.ts'
|
|
39
|
+
),
|
|
40
|
+
systemManaged: path.join(GUI, 'apps/gui/app/utils/string.ts'),
|
|
41
|
+
platformInternal: path.join(GUI, 'apps/gui/app/utils/platform-internal-secrets.ts'),
|
|
42
|
+
}
|
|
43
|
+
const WORKER_FILES = {
|
|
44
|
+
protectedNames: path.join(WORKER, 'src/modules/vercel/security/protected-env-names.ts'),
|
|
45
|
+
sandboxEscapes: path.join(WORKER, 'src/modules/vercel/security/sandbox-escape-patterns.ts'),
|
|
46
|
+
systemManaged: path.join(WORKER, 'src/api/middlewares/system-managed-secrets.ts'),
|
|
47
|
+
platformInternal: path.join(WORKER, 'src/modules/project/platform-internal-secrets.ts'),
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** Whether a sibling repository is checked out: its root, not any one file. */
|
|
51
|
+
const isCheckedOut = (root: string): boolean => fs.existsSync(path.join(root, 'package.json'))
|
|
52
|
+
|
|
53
|
+
/** A repository's copies, or — only when the repository is absent — a skipped describe that says why. */
|
|
54
|
+
const describeCopiesOf = (repo: string, root: string) => {
|
|
55
|
+
if (isCheckedOut(root)) {
|
|
56
|
+
return describe
|
|
57
|
+
}
|
|
58
|
+
// eslint-disable-next-line no-console
|
|
59
|
+
console.warn(
|
|
60
|
+
`[security-lists-parity] SKIPPED the ${repo} copies: ${root} is not checked out next to ` +
|
|
61
|
+
'teleport-code-generators.'
|
|
62
|
+
)
|
|
63
|
+
return describe.skip
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Evaluates a TypeScript source file for its exported constants. The files
|
|
68
|
+
* read here import types only (or modules their functions use when called,
|
|
69
|
+
* which these checks never do), so every require answers an empty module.
|
|
70
|
+
*/
|
|
71
|
+
const loadTs = (file: string): Record<string, any> => {
|
|
72
|
+
if (!fs.existsSync(file)) {
|
|
73
|
+
throw new Error(`copy not found at ${file}`)
|
|
74
|
+
}
|
|
75
|
+
const { outputText } = ts.transpileModule(fs.readFileSync(file, 'utf8'), {
|
|
76
|
+
compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2019 },
|
|
77
|
+
})
|
|
78
|
+
const module = { exports: {} as Record<string, any> }
|
|
79
|
+
// eslint-disable-next-line no-new-func
|
|
80
|
+
new Function('module', 'exports', 'require', outputText)(module, module.exports, () => ({}))
|
|
81
|
+
return module.exports
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const describePatterns = (
|
|
85
|
+
patterns: ReadonlyArray<{ ruleId: string; message: string; pattern: RegExp }>
|
|
86
|
+
) =>
|
|
87
|
+
patterns.map(({ ruleId, message, pattern }) => ({
|
|
88
|
+
ruleId,
|
|
89
|
+
message,
|
|
90
|
+
source: pattern.source,
|
|
91
|
+
flags: pattern.flags,
|
|
92
|
+
}))
|
|
93
|
+
|
|
94
|
+
/** A pattern as it matches: a flag (`g` keeps state between tests, `i` widens) is drift too. */
|
|
95
|
+
const patternOf = (pattern: RegExp) => ({ source: pattern.source, flags: pattern.flags })
|
|
96
|
+
|
|
97
|
+
const CODEGEN = {
|
|
98
|
+
names: [...PROTECTED_ENV_NAMES],
|
|
99
|
+
pattern: patternOf(PROTECTED_ENV_NAME_PATTERN),
|
|
100
|
+
platformPattern: patternOf(PLATFORM_ENV_NAME_PATTERN),
|
|
101
|
+
integrationPattern: patternOf(INTEGRATION_ENV_NAME_PATTERN),
|
|
102
|
+
escapes: describePatterns(SANDBOX_ESCAPE_PATTERNS),
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* The names the integrations store (and look-alikes that are not theirs), to
|
|
107
|
+
* hold the custom-JS rule to the rule that decides which stored secrets are an
|
|
108
|
+
* integration's (`platform-internal-secrets.ts`, worker and GUI).
|
|
109
|
+
*/
|
|
110
|
+
const INTEGRATION_NAME_SAMPLES = [
|
|
111
|
+
'__gsc_access',
|
|
112
|
+
'__gsc_refresh',
|
|
113
|
+
'__gsc_keyword_audit',
|
|
114
|
+
'__google_merchant_refresh',
|
|
115
|
+
'__social_oauth_linkedin_access',
|
|
116
|
+
'__social_oauth_instagram_story_refresh',
|
|
117
|
+
'MAILCHIMP_API_KEY',
|
|
118
|
+
'MY__KEY',
|
|
119
|
+
'_single',
|
|
120
|
+
'gsc_access',
|
|
121
|
+
]
|
|
122
|
+
|
|
123
|
+
/** The custom-JS rule and a copy's `isPlatformInternalSecretName` agree on every sample. */
|
|
124
|
+
const expectIntegrationRuleMatches = (file: string) => {
|
|
125
|
+
const isInternal = loadTs(file).isPlatformInternalSecretName as (name: string) => boolean
|
|
126
|
+
expect(INTEGRATION_NAME_SAMPLES.filter(isInternal)).toEqual(
|
|
127
|
+
INTEGRATION_NAME_SAMPLES.filter((name) => INTEGRATION_ENV_NAME_PATTERN.test(name))
|
|
128
|
+
)
|
|
129
|
+
expect(INTEGRATION_NAME_SAMPLES.filter(isInternal)).toHaveLength(6)
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/** The shadow's regex literal named `name`, as `{ source, flags }`. */
|
|
133
|
+
const shadowPatternOf = (handler: string, name: string) => {
|
|
134
|
+
const literal = new RegExp(`var ${name} = /(.+)/([a-z]*);`).exec(handler)
|
|
135
|
+
return literal ? { source: literal[1], flags: literal[2] } : null
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/** Protected in custom JS: by name, or by the TELEPORT_DB_ rule. */
|
|
139
|
+
const isProtectedPlatformName = (name: string): boolean =>
|
|
140
|
+
CODEGEN.names.indexOf(name as (typeof CODEGEN.names)[number]) !== -1 ||
|
|
141
|
+
PLATFORM_ENV_NAME_PATTERN.test(name)
|
|
142
|
+
|
|
143
|
+
describe('the runtime process shadow in general-custom-js', () => {
|
|
144
|
+
const handler = generalCustomJs.generateHandler()
|
|
145
|
+
const start = handler.indexOf('var __TQ_PROTECTED = {')
|
|
146
|
+
const end = handler.indexOf('var __TQ_PROTECTED_RE')
|
|
147
|
+
|
|
148
|
+
it('hides exactly the protected names', () => {
|
|
149
|
+
expect(start).toBeGreaterThan(-1)
|
|
150
|
+
expect(end).toBeGreaterThan(start)
|
|
151
|
+
const shadowed = (handler.slice(start, end).match(/"[A-Z][A-Z0-9_]*":1/g) || []).map((entry) =>
|
|
152
|
+
entry.slice(1, entry.indexOf('"', 1))
|
|
153
|
+
)
|
|
154
|
+
expect(shadowed).toEqual(CODEGEN.names)
|
|
155
|
+
})
|
|
156
|
+
|
|
157
|
+
it('hides the payment credentials by the same pattern, with no flags', () => {
|
|
158
|
+
expect(CODEGEN.pattern.flags).toBe('')
|
|
159
|
+
expect(shadowPatternOf(handler, '__TQ_PROTECTED_RE')).toEqual(CODEGEN.pattern)
|
|
160
|
+
})
|
|
161
|
+
|
|
162
|
+
it('hides every TELEPORT_DB_ name by the same rule, with no flags', () => {
|
|
163
|
+
expect(CODEGEN.platformPattern.flags).toBe('')
|
|
164
|
+
expect(shadowPatternOf(handler, '__TQ_PROTECTED_PLATFORM_RE')).toEqual(CODEGEN.platformPattern)
|
|
165
|
+
})
|
|
166
|
+
|
|
167
|
+
it("hides every integration's __ name by the same rule, with no flags", () => {
|
|
168
|
+
expect(CODEGEN.integrationPattern.flags).toBe('')
|
|
169
|
+
expect(shadowPatternOf(handler, '__TQ_PROTECTED_INTEGRATION_RE')).toEqual(
|
|
170
|
+
CODEGEN.integrationPattern
|
|
171
|
+
)
|
|
172
|
+
expect(handler).toContain('__TQ_PROTECTED_INTEGRATION_RE.test(k)')
|
|
173
|
+
})
|
|
174
|
+
})
|
|
175
|
+
|
|
176
|
+
describeCopiesOf('teleport-gui', GUI)('the editor copies (teleport-gui)', () => {
|
|
177
|
+
it('protect the same env names and credential pattern', () => {
|
|
178
|
+
const copy = loadTs(GUI_FILES.protectedNames)
|
|
179
|
+
expect([...copy.PROTECTED_ENV_NAMES]).toEqual(CODEGEN.names)
|
|
180
|
+
expect(patternOf(copy.PROTECTED_ENV_NAME_PATTERN)).toEqual(CODEGEN.pattern)
|
|
181
|
+
expect(patternOf(copy.PLATFORM_ENV_NAME_PATTERN)).toEqual(CODEGEN.platformPattern)
|
|
182
|
+
expect(patternOf(copy.INTEGRATION_ENV_NAME_PATTERN)).toEqual(CODEGEN.integrationPattern)
|
|
183
|
+
})
|
|
184
|
+
|
|
185
|
+
it("protect exactly the names the editor treats as an integration's", () => {
|
|
186
|
+
expectIntegrationRuleMatches(GUI_FILES.platformInternal)
|
|
187
|
+
})
|
|
188
|
+
|
|
189
|
+
it('protect every secret name the editor reserves for the platform database', () => {
|
|
190
|
+
const reserved: string[] = Array.from(loadTs(GUI_FILES.systemManaged).RESERVED_SECRET_NAMES)
|
|
191
|
+
expect(reserved.length).toBeGreaterThan(0)
|
|
192
|
+
expect(reserved.filter((name) => !isProtectedPlatformName(name))).toEqual([])
|
|
193
|
+
})
|
|
194
|
+
|
|
195
|
+
it('refuse the same sandbox escapes', () => {
|
|
196
|
+
expect(describePatterns(loadTs(GUI_FILES.sandboxEscapes).SANDBOX_ESCAPE_PATTERNS)).toEqual(
|
|
197
|
+
CODEGEN.escapes
|
|
198
|
+
)
|
|
199
|
+
})
|
|
200
|
+
|
|
201
|
+
it('protect every secret the editor lists as system-managed', () => {
|
|
202
|
+
const managed: string[] = Array.from(
|
|
203
|
+
loadTs(GUI_FILES.systemManaged).SYSTEM_MANAGED_SECRET_NAMES
|
|
204
|
+
)
|
|
205
|
+
expect(managed.length).toBeGreaterThan(0)
|
|
206
|
+
expect(CODEGEN.names).toEqual(expect.arrayContaining(managed))
|
|
207
|
+
})
|
|
208
|
+
})
|
|
209
|
+
|
|
210
|
+
describeCopiesOf('teleport-services-worker', WORKER)(
|
|
211
|
+
'the publish gate copies (teleport-services-worker)',
|
|
212
|
+
() => {
|
|
213
|
+
it('protect the same env names and credential pattern', () => {
|
|
214
|
+
const copy = loadTs(WORKER_FILES.protectedNames)
|
|
215
|
+
expect([...copy.PROTECTED_ENV_NAMES]).toEqual(CODEGEN.names)
|
|
216
|
+
expect(patternOf(copy.PROTECTED_ENV_NAME_PATTERN)).toEqual(CODEGEN.pattern)
|
|
217
|
+
expect(patternOf(copy.PLATFORM_ENV_NAME_PATTERN)).toEqual(CODEGEN.platformPattern)
|
|
218
|
+
expect(patternOf(copy.INTEGRATION_ENV_NAME_PATTERN)).toEqual(CODEGEN.integrationPattern)
|
|
219
|
+
})
|
|
220
|
+
|
|
221
|
+
it("protect exactly the names the worker treats as an integration's", () => {
|
|
222
|
+
expectIntegrationRuleMatches(WORKER_FILES.platformInternal)
|
|
223
|
+
})
|
|
224
|
+
|
|
225
|
+
it('refuse the same sandbox escapes', () => {
|
|
226
|
+
expect(describePatterns(loadTs(WORKER_FILES.sandboxEscapes).SANDBOX_ESCAPE_PATTERNS)).toEqual(
|
|
227
|
+
CODEGEN.escapes
|
|
228
|
+
)
|
|
229
|
+
})
|
|
230
|
+
|
|
231
|
+
it('protect every secret the worker keeps as system-managed', () => {
|
|
232
|
+
const managed: string[] = Array.from(
|
|
233
|
+
loadTs(WORKER_FILES.systemManaged).SYSTEM_MANAGED_SECRET_NAMES
|
|
234
|
+
)
|
|
235
|
+
expect(managed.length).toBeGreaterThan(0)
|
|
236
|
+
expect(CODEGEN.names).toEqual(expect.arrayContaining(managed))
|
|
237
|
+
// The editor shows the same names read-only.
|
|
238
|
+
if (isCheckedOut(GUI)) {
|
|
239
|
+
expect([...managed].sort()).toEqual(
|
|
240
|
+
Array.from(loadTs(GUI_FILES.systemManaged).SYSTEM_MANAGED_SECRET_NAMES).sort()
|
|
241
|
+
)
|
|
242
|
+
}
|
|
243
|
+
})
|
|
244
|
+
}
|
|
245
|
+
)
|
|
@@ -1,11 +1,31 @@
|
|
|
1
1
|
import { loadHandler } from './_helpers/load-handler'
|
|
2
2
|
import {
|
|
3
3
|
assertWorkflowsAreSecure,
|
|
4
|
+
foldStringConcatenations,
|
|
4
5
|
CodegenSecurityError,
|
|
5
6
|
PROTECTED_ENV_NAMES,
|
|
6
7
|
PROTECTED_ENV_NAME_PATTERN,
|
|
8
|
+
PLATFORM_ENV_NAME_PATTERN,
|
|
7
9
|
} from '../src/security-scanner'
|
|
8
10
|
|
|
11
|
+
const SITE_SECRETS = [
|
|
12
|
+
'NEXTAUTH_SECRET',
|
|
13
|
+
'AUTH_PEPPER_SECRET',
|
|
14
|
+
'VERCEL_AUTOMATION_BYPASS_SECRET',
|
|
15
|
+
'TQ_CACHE_SECRET',
|
|
16
|
+
]
|
|
17
|
+
|
|
18
|
+
// The TeleportHQ database's parts, and one no copy lists by name (any later one).
|
|
19
|
+
const DATABASE_SECRETS = [
|
|
20
|
+
'TELEPORT_DB_HOST',
|
|
21
|
+
'TELEPORT_DB_PORT',
|
|
22
|
+
'TELEPORT_DB_USER',
|
|
23
|
+
'TELEPORT_DB_PASSWORD',
|
|
24
|
+
'TELEPORT_DB_NAME',
|
|
25
|
+
'TELEPORT_DB_SSL',
|
|
26
|
+
'TELEPORT_DB_REPLICA_URL',
|
|
27
|
+
]
|
|
28
|
+
|
|
9
29
|
// Verifies the two security layers added on top of the general-custom-js
|
|
10
30
|
// handler:
|
|
11
31
|
//
|
|
@@ -124,6 +144,41 @@ describe('assertWorkflowsAreSecure (codegen gate)', () => {
|
|
|
124
144
|
}
|
|
125
145
|
})
|
|
126
146
|
|
|
147
|
+
it('refuses custom JS that reads any TELEPORT_DB_ name', () => {
|
|
148
|
+
for (const name of DATABASE_SECRETS) {
|
|
149
|
+
for (const read of [`process.env.${name}`, `process.env['${name}']`]) {
|
|
150
|
+
const uidlWorkflows = {
|
|
151
|
+
workflows: {
|
|
152
|
+
w: {
|
|
153
|
+
nodes: [
|
|
154
|
+
{
|
|
155
|
+
id: 'a',
|
|
156
|
+
type: 'general-custom-js',
|
|
157
|
+
config: { code: `function customHandler(){ return ${read}; }` },
|
|
158
|
+
},
|
|
159
|
+
],
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
}
|
|
163
|
+
expect(() => assertWorkflowsAreSecure(uidlWorkflows)).toThrowError(CodegenSecurityError)
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
})
|
|
167
|
+
|
|
168
|
+
it('the TELEPORT_DB_ rule covers the whole family and nothing else', () => {
|
|
169
|
+
for (const name of [...DATABASE_SECRETS, 'TELEPORT_DB_CONNECTION_STRING']) {
|
|
170
|
+
expect(PLATFORM_ENV_NAME_PATTERN.test(name)).toBe(true)
|
|
171
|
+
}
|
|
172
|
+
for (const name of [
|
|
173
|
+
'TELEPORT_DB_',
|
|
174
|
+
'MY_TELEPORT_DB_PASSWORD',
|
|
175
|
+
'TELEPORT_DBX',
|
|
176
|
+
'teleport_db_host',
|
|
177
|
+
]) {
|
|
178
|
+
expect(PLATFORM_ENV_NAME_PATTERN.test(name)).toBe(false)
|
|
179
|
+
}
|
|
180
|
+
})
|
|
181
|
+
|
|
127
182
|
it('the payment credential pattern covers every provider and nothing else', () => {
|
|
128
183
|
for (const name of [
|
|
129
184
|
'STRIPE_WEBHOOK_SECRET',
|
|
@@ -145,7 +200,7 @@ describe('assertWorkflowsAreSecure (codegen gate)', () => {
|
|
|
145
200
|
}
|
|
146
201
|
})
|
|
147
202
|
|
|
148
|
-
it('PROTECTED_ENV_NAMES contains exactly the
|
|
203
|
+
it('PROTECTED_ENV_NAMES contains exactly the 17 documented secrets', () => {
|
|
149
204
|
expect([...PROTECTED_ENV_NAMES].sort()).toEqual(
|
|
150
205
|
[
|
|
151
206
|
'PDF_SERVICE_API_KEY',
|
|
@@ -158,11 +213,43 @@ describe('assertWorkflowsAreSecure (codegen gate)', () => {
|
|
|
158
213
|
'TELEPORT_CRON_SECRET_PREVIOUS',
|
|
159
214
|
'TELEPORT_DB_CONNECTION_STRING',
|
|
160
215
|
'TELEPORT_PROJECT_TOKEN',
|
|
216
|
+
'NEXTAUTH_SECRET',
|
|
217
|
+
'AUTH_PEPPER_SECRET',
|
|
218
|
+
'VERCEL_AUTOMATION_BYPASS_SECRET',
|
|
219
|
+
'TQ_CACHE_SECRET',
|
|
220
|
+
// The site's newsletter service key and the services worker's address
|
|
221
|
+
// (the admin panel's newsletter route reads them, nothing else).
|
|
222
|
+
'NEWSLETTER_SERVICE_TOKEN',
|
|
223
|
+
'NEWSLETTER_SERVICE_URL',
|
|
161
224
|
'TELEPORT_WALL_SECRET',
|
|
162
225
|
].sort()
|
|
163
226
|
)
|
|
164
227
|
})
|
|
165
228
|
|
|
229
|
+
// The secrets TeleportHQ keeps for the site: the app secret every guard of
|
|
230
|
+
// the site rests on, the password pepper, the deployment-protection bypass
|
|
231
|
+
// and the cache-revalidation key.
|
|
232
|
+
it('refuses custom JS that reads a site secret TeleportHQ keeps', () => {
|
|
233
|
+
for (const name of SITE_SECRETS) {
|
|
234
|
+
for (const read of [`process.env.${name}`, `process.env['${name}']`]) {
|
|
235
|
+
const uidlWorkflows = {
|
|
236
|
+
workflows: {
|
|
237
|
+
w: {
|
|
238
|
+
nodes: [
|
|
239
|
+
{
|
|
240
|
+
id: 'a',
|
|
241
|
+
type: 'general-custom-js',
|
|
242
|
+
config: { code: `function customHandler(){ return ${read}; }` },
|
|
243
|
+
},
|
|
244
|
+
],
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
}
|
|
248
|
+
expect(() => assertWorkflowsAreSecure(uidlWorkflows)).toThrowError(CodegenSecurityError)
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
})
|
|
252
|
+
|
|
166
253
|
it('refuses custom JS that reads a cron signing key', () => {
|
|
167
254
|
for (const name of ['TELEPORT_CRON_SECRET', 'TELEPORT_CRON_SECRET_PREVIOUS']) {
|
|
168
255
|
const uidlWorkflows = {
|
|
@@ -181,6 +268,49 @@ describe('assertWorkflowsAreSecure (codegen gate)', () => {
|
|
|
181
268
|
expect(() => assertWorkflowsAreSecure(uidlWorkflows)).toThrowError(CodegenSecurityError)
|
|
182
269
|
}
|
|
183
270
|
})
|
|
271
|
+
|
|
272
|
+
// The bypasses the deploy-time scanner let through (A8-18): each reaches the
|
|
273
|
+
// real global scope or process.env past the runtime's process shadow.
|
|
274
|
+
const withCode = (code: string) => ({
|
|
275
|
+
workflows: { w: { nodes: [{ id: 'a', type: 'general-custom-js', config: { code } }] } },
|
|
276
|
+
})
|
|
277
|
+
|
|
278
|
+
it('refuses the function-constructor and descriptor escapes', () => {
|
|
279
|
+
const escapes = [
|
|
280
|
+
"return (function(){}).constructor('return proc' + 'ess')().env",
|
|
281
|
+
"return Function.prototype.constructor('return this')().process.env",
|
|
282
|
+
"return (async function(){}).constructor('return 1')",
|
|
283
|
+
"return [].map['constructor']('return this')()",
|
|
284
|
+
"return Object.getOwnPropertyDescriptor(process, 'env').value",
|
|
285
|
+
"return Reflect.get(process, 'env')",
|
|
286
|
+
'return Object.values(globalThis).find(function (v) { return v && v.env && v.pid })',
|
|
287
|
+
'for (var k in globalThis) { if (globalThis[k] && globalThis[k].pid) return globalThis[k] }',
|
|
288
|
+
// The variants of the same class (fix round 1).
|
|
289
|
+
"var C = (function(){}).constructor; return C('return process')().env",
|
|
290
|
+
"return (function(){}).constructor.call(null, 'return process')().env",
|
|
291
|
+
"return (() => {}).constructor.apply(null, ['return process'])().env",
|
|
292
|
+
"const { constructor: F } = () => {}; return F('return process')().env",
|
|
293
|
+
"return (function(){})['const' + 'ructor']('return process')().env",
|
|
294
|
+
"return (function(){ return this })().process.env['TELEPORT_DB_' + 'CONNECTION_STRING']",
|
|
295
|
+
]
|
|
296
|
+
for (const code of escapes) {
|
|
297
|
+
expect(() =>
|
|
298
|
+
assertWorkflowsAreSecure(withCode(`function customHandler(){ ${code} }`))
|
|
299
|
+
).toThrowError(CodegenSecurityError)
|
|
300
|
+
}
|
|
301
|
+
})
|
|
302
|
+
|
|
303
|
+
it('still passes code that only compares a constructor or reads its name', () => {
|
|
304
|
+
const code =
|
|
305
|
+
'function customHandler(p){ var v = p[0]; var kind = v && v.constructor.name; ' +
|
|
306
|
+
'return v && v.constructor === Object ? Object.keys(v).concat([kind]) : [] }'
|
|
307
|
+
expect(() => assertWorkflowsAreSecure(withCode(code))).not.toThrow()
|
|
308
|
+
})
|
|
309
|
+
|
|
310
|
+
it('matches a name split across string literals as the whole name', () => {
|
|
311
|
+
expect(foldStringConcatenations("x['const' + 'ruc' + \"tor\"]")).toBe("x['constructor']")
|
|
312
|
+
expect(foldStringConcatenations("a + 'b' + c")).toBe("a + 'b' + c")
|
|
313
|
+
})
|
|
184
314
|
})
|
|
185
315
|
|
|
186
316
|
describe('general-custom-js handler — runtime process shadow', () => {
|
|
@@ -197,6 +327,12 @@ describe('general-custom-js handler — runtime process shadow', () => {
|
|
|
197
327
|
process.env.CONFIGURATION_PAYPAL_CLIENT_SECRET2 = 'paypal-secret'
|
|
198
328
|
process.env.TELEPORT_CRON_SECRET = 'cron-key'
|
|
199
329
|
process.env.TELEPORT_CRON_SECRET_PREVIOUS = 'old-cron-key'
|
|
330
|
+
for (const name of SITE_SECRETS) {
|
|
331
|
+
process.env[name] = 'site-secret-' + name
|
|
332
|
+
}
|
|
333
|
+
for (const name of DATABASE_SECRETS) {
|
|
334
|
+
process.env[name] = 'database-secret-' + name
|
|
335
|
+
}
|
|
200
336
|
})
|
|
201
337
|
afterAll(() => {
|
|
202
338
|
// Restore exactly what was there.
|
|
@@ -268,6 +404,63 @@ describe('general-custom-js handler — runtime process shadow', () => {
|
|
|
268
404
|
expect(out).toEqual({ current: undefined, previous: undefined, listed: [] })
|
|
269
405
|
})
|
|
270
406
|
|
|
407
|
+
it('hides the site secrets TeleportHQ keeps, by name and from every enumeration', async () => {
|
|
408
|
+
const code = `function customHandler(){
|
|
409
|
+
var names = ${JSON.stringify(SITE_SECRETS)};
|
|
410
|
+
return {
|
|
411
|
+
dotted: [process.env.NEXTAUTH_SECRET, process.env.AUTH_PEPPER_SECRET,
|
|
412
|
+
process.env.VERCEL_AUTOMATION_BYPASS_SECRET, process.env.TQ_CACHE_SECRET],
|
|
413
|
+
bracketed: names.map(function (n) { return process.env[n]; }),
|
|
414
|
+
viaGlobal: names.map(function (n) { return globalThis.process.env[n]; }),
|
|
415
|
+
has: names.filter(function (n) { return n in process.env; }),
|
|
416
|
+
described: names.map(function (n) { return Object.getOwnPropertyDescriptor(process.env, n); }),
|
|
417
|
+
listed: Object.keys(process.env).filter(function (k) { return names.indexOf(k) !== -1; }),
|
|
418
|
+
spread: Object.keys({ ...process.env }).filter(function (k) { return names.indexOf(k) !== -1; }),
|
|
419
|
+
allowed: process.env.PUBLIC_FEATURE_FLAG,
|
|
420
|
+
}
|
|
421
|
+
}`
|
|
422
|
+
const out = (await handler({ code, __nodeId: 'a' }, {})) as Record<string, unknown>
|
|
423
|
+
const none = SITE_SECRETS.map(() => undefined)
|
|
424
|
+
expect(out).toEqual({
|
|
425
|
+
dotted: none,
|
|
426
|
+
bracketed: none,
|
|
427
|
+
viaGlobal: none,
|
|
428
|
+
has: [],
|
|
429
|
+
described: none,
|
|
430
|
+
listed: [],
|
|
431
|
+
spread: [],
|
|
432
|
+
allowed: 'allowed',
|
|
433
|
+
})
|
|
434
|
+
expect(JSON.stringify(out)).not.toContain('site-secret-')
|
|
435
|
+
})
|
|
436
|
+
|
|
437
|
+
it('hides every TELEPORT_DB_ name, by name and from every enumeration', async () => {
|
|
438
|
+
const code = `function customHandler(){
|
|
439
|
+
var names = ${JSON.stringify(DATABASE_SECRETS)};
|
|
440
|
+
return {
|
|
441
|
+
dotted: process.env.TELEPORT_DB_PASSWORD,
|
|
442
|
+
bracketed: names.map(function (n) { return process.env[n]; }),
|
|
443
|
+
has: names.filter(function (n) { return n in process.env; }),
|
|
444
|
+
described: names.map(function (n) { return Object.getOwnPropertyDescriptor(process.env, n); }),
|
|
445
|
+
listed: Object.keys(process.env).filter(function (k) { return k.indexOf('TELEPORT_DB_') === 0; }),
|
|
446
|
+
spread: Object.keys({ ...process.env }).filter(function (k) { return k.indexOf('TELEPORT_DB_') === 0; }),
|
|
447
|
+
allowed: process.env.PUBLIC_FEATURE_FLAG,
|
|
448
|
+
}
|
|
449
|
+
}`
|
|
450
|
+
const out = (await handler({ code, __nodeId: 'a' }, {})) as Record<string, unknown>
|
|
451
|
+
const none = DATABASE_SECRETS.map(() => undefined)
|
|
452
|
+
expect(out).toEqual({
|
|
453
|
+
dotted: undefined,
|
|
454
|
+
bracketed: none,
|
|
455
|
+
has: [],
|
|
456
|
+
described: none,
|
|
457
|
+
listed: [],
|
|
458
|
+
spread: [],
|
|
459
|
+
allowed: 'allowed',
|
|
460
|
+
})
|
|
461
|
+
expect(JSON.stringify(out)).not.toContain('database-secret-')
|
|
462
|
+
})
|
|
463
|
+
|
|
271
464
|
it('hides the merchant payment credentials from user code', async () => {
|
|
272
465
|
const code = `function customHandler(){
|
|
273
466
|
return {
|
|
@@ -288,6 +481,36 @@ describe('general-custom-js handler — runtime process shadow', () => {
|
|
|
288
481
|
})
|
|
289
482
|
})
|
|
290
483
|
|
|
484
|
+
it('runs server code in strict mode: a plain call gets no global this', async () => {
|
|
485
|
+
const code = `function customHandler(){
|
|
486
|
+
var self = (function(){ return this })();
|
|
487
|
+
return { selfIsUndefined: self === undefined };
|
|
488
|
+
}`
|
|
489
|
+
expect(await handler({ code, __nodeId: 'n' }, {})).toEqual({ selfIsUndefined: true })
|
|
490
|
+
const escape = `function customHandler(){
|
|
491
|
+
return (function(){ return this })().process.env.TELEPORT_DB_CONNECTION_STRING;
|
|
492
|
+
}`
|
|
493
|
+
const result = (await handler({ code: escape, __nodeId: 'n' }, {})) as { error?: string }
|
|
494
|
+
expect(result.error).toMatch(/undefined/)
|
|
495
|
+
expect(JSON.stringify(result)).not.toContain('secret-db-url')
|
|
496
|
+
})
|
|
497
|
+
|
|
498
|
+
it('keeps a handler with a default parameter working under strict mode', async () => {
|
|
499
|
+
const code = `function customHandler(params = []) {
|
|
500
|
+
return { count: params.length, strict: (function(){ return this })() === undefined };
|
|
501
|
+
}`
|
|
502
|
+
expect(await handler({ code, __nodeId: 'n' }, { a: 1, b: 2 })).toEqual({
|
|
503
|
+
count: 2,
|
|
504
|
+
strict: true,
|
|
505
|
+
})
|
|
506
|
+
// A destructured signature still compiles and runs under strict mode (its
|
|
507
|
+
// values are not forwarded by name — they never were).
|
|
508
|
+
const destructured = `function customHandler({ items } = {}) {
|
|
509
|
+
return { ran: true };
|
|
510
|
+
}`
|
|
511
|
+
expect(await handler({ code: destructured, __nodeId: 'n' }, { a: 1 })).toEqual({ ran: true })
|
|
512
|
+
})
|
|
513
|
+
|
|
291
514
|
it('does not break access to non-process bindings', async () => {
|
|
292
515
|
const code = `function customHandler(){
|
|
293
516
|
return 1 + 2;
|