@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
|
@@ -4,6 +4,13 @@ import {
|
|
|
4
4
|
generateWorkflowLocaleHelpersCode,
|
|
5
5
|
} from './email-locale'
|
|
6
6
|
import { generateSignedInDestinationCode } from './auth-return/signed-in-destination-code'
|
|
7
|
+
import {
|
|
8
|
+
PRODUCTS_LIST_PARAM,
|
|
9
|
+
PRODUCTS_ROWS_PARAM,
|
|
10
|
+
TRUSTED_HTML_RUNTIME_CODE,
|
|
11
|
+
} from './nodes/email/trusted-html-code'
|
|
12
|
+
import { escapeHtmlTextJs, escapeHtmlValueJs } from './nodes/email/html-escape-code'
|
|
13
|
+
import { generateProtectionBypassHeaderStatements } from './self-call-headers'
|
|
7
14
|
import { generateCredentialColumnsCode } from './credential-columns-code'
|
|
8
15
|
import { generateCredentialResultsCode } from './credential-results'
|
|
9
16
|
|
|
@@ -55,6 +62,22 @@ function resolveValue(value, context) {
|
|
|
55
62
|
}
|
|
56
63
|
|
|
57
64
|
function resolveContextRef(ref, context) {
|
|
65
|
+
// On the server, a read of the page state's currentUser — at any depth, in
|
|
66
|
+
// any copy of the bag the request carries — is a read of the SESSION's user
|
|
67
|
+
// (see bindSessionIdentity in the server runtime).
|
|
68
|
+
if (context && Object.prototype.hasOwnProperty.call(context, '__sessionUserId')) {
|
|
69
|
+
var walk = [ref.nodeId].concat(ref.path || []);
|
|
70
|
+
for (var wi = 0; wi < walk.length - 1; wi++) {
|
|
71
|
+
if (walk[wi] === '__stateValues' && walk[wi + 1] === 'currentUser') {
|
|
72
|
+
var sessionValue = context.__sessionUser || null;
|
|
73
|
+
for (var wj = wi + 2; wj < walk.length; wj++) {
|
|
74
|
+
if (sessionValue === undefined || sessionValue === null) return undefined;
|
|
75
|
+
sessionValue = sessionValue[walk[wj]];
|
|
76
|
+
}
|
|
77
|
+
return sessionValue === null ? undefined : sessionValue;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
58
81
|
const nodeOutput = context[ref.nodeId];
|
|
59
82
|
if (nodeOutput === undefined || nodeOutput === null) return undefined;
|
|
60
83
|
let result = nodeOutput;
|
|
@@ -203,27 +226,42 @@ function isSecretRef(value) {
|
|
|
203
226
|
// of the resolved value. Handles both the raw single-quoted attribute form and
|
|
204
227
|
// the Quill-serialized "-escaped form, plus the nested inner <span> Quill
|
|
205
228
|
// wraps the label in.
|
|
206
|
-
|
|
229
|
+
// asText: the text is not HTML (a subject, an SMS or toast message): a value
|
|
230
|
+
// loses its line breaks and gets no HTML entities.
|
|
231
|
+
function resolveRichTextContext(html, context, asText) {
|
|
207
232
|
if (typeof html !== 'string' || html.indexOf('context-value-inline') === -1) {
|
|
208
233
|
return html;
|
|
209
234
|
}
|
|
210
|
-
|
|
235
|
+
return splitRichTextChips(html).map(function(part) {
|
|
236
|
+
if (typeof part === 'string') return part;
|
|
237
|
+
if (!part.chip) return '';
|
|
238
|
+
var value = resolveContextRef(part.chip, context);
|
|
239
|
+
if (value === undefined || value === null) return '';
|
|
240
|
+
return asText ? plainTextValue(String(value)) : escapeHtmlText(String(value));
|
|
241
|
+
}).join('');
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// The rich text cut into its literal text (strings) and its inline context
|
|
245
|
+
// chips (\`{ chip: <workflowContext ref, or null when the chip names none> }\`),
|
|
246
|
+
// in order. An unrelated <span> stays text; a chip's nested inner spans are
|
|
247
|
+
// part of the chip.
|
|
248
|
+
function splitRichTextChips(html) {
|
|
249
|
+
var parts = [];
|
|
250
|
+
var text = '';
|
|
211
251
|
var i = 0;
|
|
212
252
|
while (i < html.length) {
|
|
213
253
|
var spanStart = html.indexOf('<span', i);
|
|
214
|
-
if (spanStart === -1) {
|
|
254
|
+
if (spanStart === -1) { text += html.slice(i); break; }
|
|
215
255
|
var openEnd = html.indexOf('>', spanStart);
|
|
216
|
-
if (openEnd === -1) {
|
|
256
|
+
if (openEnd === -1) { text += html.slice(i); break; }
|
|
217
257
|
var openTag = html.slice(spanStart, openEnd + 1);
|
|
218
258
|
if (openTag.indexOf('context-value-inline') === -1) {
|
|
219
259
|
// Unrelated <span> — copy it through verbatim and keep scanning.
|
|
220
|
-
|
|
260
|
+
text += html.slice(i, openEnd + 1);
|
|
221
261
|
i = openEnd + 1;
|
|
222
262
|
continue;
|
|
223
263
|
}
|
|
224
|
-
|
|
225
|
-
// (including any nested inner spans) with the resolved value.
|
|
226
|
-
out += html.slice(i, spanStart);
|
|
264
|
+
text += html.slice(i, spanStart);
|
|
227
265
|
var depth = 1;
|
|
228
266
|
var j = openEnd + 1;
|
|
229
267
|
while (j < html.length && depth > 0) {
|
|
@@ -239,13 +277,17 @@ function resolveRichTextContext(html, context) {
|
|
|
239
277
|
depth--;
|
|
240
278
|
}
|
|
241
279
|
}
|
|
242
|
-
|
|
280
|
+
parts.push(text);
|
|
281
|
+
text = '';
|
|
282
|
+
parts.push({ chip: richTextChipRef(openTag) });
|
|
243
283
|
i = j;
|
|
244
284
|
}
|
|
245
|
-
|
|
285
|
+
parts.push(text);
|
|
286
|
+
return parts;
|
|
246
287
|
}
|
|
247
288
|
|
|
248
|
-
|
|
289
|
+
// The context value a chip's opening tag names, as a workflowContext ref.
|
|
290
|
+
function richTextChipRef(openTag) {
|
|
249
291
|
var nodeId = extractHtmlAttr(openTag, 'data-ctx-node-id');
|
|
250
292
|
var pathRaw = extractHtmlAttr(openTag, 'data-ctx-path');
|
|
251
293
|
var path = null;
|
|
@@ -257,10 +299,7 @@ function resolveRichTextContextSpan(openTag, context) {
|
|
|
257
299
|
path = nodeId ? [nodeId] : [];
|
|
258
300
|
}
|
|
259
301
|
if (!nodeId && path.length > 0) { nodeId = path[0]; }
|
|
260
|
-
|
|
261
|
-
var value = resolveContextRef({ type: 'workflowContext', nodeId: nodeId, path: path }, context);
|
|
262
|
-
if (value === undefined || value === null) { return ''; }
|
|
263
|
-
return escapeHtmlText(String(value));
|
|
302
|
+
return nodeId ? { type: 'workflowContext', nodeId: nodeId, path: path } : null;
|
|
264
303
|
}
|
|
265
304
|
|
|
266
305
|
// Read a quoted HTML attribute value (double- or single-quoted) without a regex
|
|
@@ -277,8 +316,33 @@ function extractHtmlAttr(tag, name) {
|
|
|
277
316
|
return tag.slice(start, end);
|
|
278
317
|
}
|
|
279
318
|
|
|
319
|
+
// A value that lands in HTML text (a rich-text placeholder, a list item).
|
|
320
|
+
// Idempotent: an & that already starts a character reference stays as it is,
|
|
321
|
+
// so a value that arrives escaped is not escaped twice.
|
|
280
322
|
function escapeHtmlText(value) {
|
|
281
|
-
return
|
|
323
|
+
return ${escapeHtmlTextJs('value')};
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
// A value filled into an email HTML body, where it may sit inside an attribute
|
|
327
|
+
// (href="{{url}}"): quotes too. Idempotent like escapeHtmlText.
|
|
328
|
+
function escapeHtmlValue(value) {
|
|
329
|
+
return ${escapeHtmlValueJs('value')};
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
// A value placed in text that is not HTML (a subject, an SMS or toast
|
|
333
|
+
// message): the character references it arrived with (the lifecycle token
|
|
334
|
+
// scripts escape theirs) are read back as characters, and line breaks are
|
|
335
|
+
// taken out — after the read-back, so an encoded line break goes too.
|
|
336
|
+
function plainTextValue(value) {
|
|
337
|
+
return value.replace(/&(amp|lt|gt|quot|apos|#[0-9]{1,7}|#[xX][0-9a-fA-F]{1,6});/g, function(m, ref) {
|
|
338
|
+
if (ref === 'amp') return '&';
|
|
339
|
+
if (ref === 'lt') return '<';
|
|
340
|
+
if (ref === 'gt') return '>';
|
|
341
|
+
if (ref === 'quot') return '"';
|
|
342
|
+
if (ref === 'apos') return "'";
|
|
343
|
+
var code = ref.charAt(1) === 'x' || ref.charAt(1) === 'X' ? parseInt(ref.slice(2), 16) : parseInt(ref.slice(1), 10);
|
|
344
|
+
return code > 0 && code <= 0x10ffff ? String.fromCodePoint(code) : m;
|
|
345
|
+
}).replace(/[\\r\\n]+/g, ' ');
|
|
282
346
|
}
|
|
283
347
|
|
|
284
348
|
// Sentinel for a page-context template token ({{urlDifferentiator}} /
|
|
@@ -325,7 +389,16 @@ function resolveTemplateTokenString(value, context) {
|
|
|
325
389
|
}
|
|
326
390
|
return { matched: true, value: UNRESOLVED_ROUTE_PARAM };
|
|
327
391
|
}
|
|
328
|
-
|
|
392
|
+
var userField = currentUserTokenField(token);
|
|
393
|
+
if (userField) {
|
|
394
|
+
// On the server the visitor is the SESSION's user, never one the request
|
|
395
|
+
// describes: a server route fills these reserved keys from the session
|
|
396
|
+
// cookie (empty for a guest) before any node resolves — see
|
|
397
|
+
// bindSessionIdentity in the server runtime.
|
|
398
|
+
if (context && Object.prototype.hasOwnProperty.call(context, '__sessionUserId')) {
|
|
399
|
+
return { matched: true, value: sessionUserField(context, userField) };
|
|
400
|
+
}
|
|
401
|
+
if (userField !== 'id') return { matched: false };
|
|
329
402
|
var currentUser = context && context.__stateValues && context.__stateValues.currentUser;
|
|
330
403
|
var userId = currentUser && typeof currentUser === 'object' ? currentUser.id : undefined;
|
|
331
404
|
return { matched: true, value: userId === undefined ? null : userId };
|
|
@@ -333,10 +406,31 @@ function resolveTemplateTokenString(value, context) {
|
|
|
333
406
|
return { matched: false };
|
|
334
407
|
}
|
|
335
408
|
|
|
409
|
+
// 'id' for {{Current User.id}} / {{currentUser.id}}, the field for any other
|
|
410
|
+
// {{Current User.<field>}}; null for every other token.
|
|
411
|
+
function currentUserTokenField(token) {
|
|
412
|
+
var m = /^(?:Current User|currentUser)\\.([A-Za-z_$][A-Za-z0-9_$]*)$/.exec(token);
|
|
413
|
+
return m ? m[1] : null;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
function sessionUserField(context, field) {
|
|
417
|
+
var value;
|
|
418
|
+
if (field === 'id') value = context.__sessionUserId;
|
|
419
|
+
else if (field === 'role') value = context.__sessionRole;
|
|
420
|
+
else {
|
|
421
|
+
var user = context.__sessionUser;
|
|
422
|
+
value = user && typeof user === 'object' && Object.prototype.hasOwnProperty.call(user, field) ? user[field] : undefined;
|
|
423
|
+
}
|
|
424
|
+
return value === undefined ? null : value;
|
|
425
|
+
}
|
|
426
|
+
|
|
336
427
|
// Fills flat {{key}} merge tokens in a component-bodied email node's body/subject
|
|
337
428
|
// from its (already-resolved) templateParams. Unknown tokens are left verbatim so
|
|
338
429
|
// unrelated {{...}} (e.g. a campaign CustomerData {{name}}) is never blanked.
|
|
339
|
-
//
|
|
430
|
+
// Every value is escaped where it is filled in (it may come from the visitor —
|
|
431
|
+
// a form field, page state — or from a record a visitor once wrote), so only
|
|
432
|
+
// the author's template is HTML; asText (a subject, a header) takes its line
|
|
433
|
+
// breaks out instead. A value that must be markup goes through a list block.
|
|
340
434
|
// Expands each \`<!--tq:each KEY-->…{{field}}…<!--/tq:each-->\` block (emitted by
|
|
341
435
|
// the email serializer for a builder array mapper) by repeating the inner body
|
|
342
436
|
// once per row of lists[KEY], substituting each row's {{field}} with the
|
|
@@ -362,7 +456,8 @@ function expandListBlocks(text, lists) {
|
|
|
362
456
|
});
|
|
363
457
|
}
|
|
364
458
|
|
|
365
|
-
|
|
459
|
+
${TRUSTED_HTML_RUNTIME_CODE}
|
|
460
|
+
function applyTemplateParams(text, params, asText) {
|
|
366
461
|
if (typeof text !== 'string' || !Array.isArray(params)) return text;
|
|
367
462
|
var map = {};
|
|
368
463
|
for (var i = 0; i < params.length; i++) {
|
|
@@ -373,11 +468,17 @@ function applyTemplateParams(text, params) {
|
|
|
373
468
|
map[p.key] = p.value;
|
|
374
469
|
}
|
|
375
470
|
}
|
|
471
|
+
// The products list is built here from its lines, never taken as handed over.
|
|
472
|
+
if (Array.isArray(map.${PRODUCTS_ROWS_PARAM}) && Object.prototype.hasOwnProperty.call(map, '${PRODUCTS_LIST_PARAM}')) {
|
|
473
|
+
map.${PRODUCTS_LIST_PARAM} = renderProductsListHtml(map.${PRODUCTS_ROWS_PARAM});
|
|
474
|
+
}
|
|
376
475
|
var expanded = expandListBlocks(text, map);
|
|
377
476
|
return expanded.replace(/\\{\\{\\s*([\\w.-]+)\\s*\\}\\}/g, function(m, key) {
|
|
378
477
|
if (!Object.prototype.hasOwnProperty.call(map, key)) return m;
|
|
379
478
|
var v = map[key];
|
|
380
|
-
|
|
479
|
+
if (v === null || v === undefined) return '';
|
|
480
|
+
if (asText) return plainTextValue(String(v));
|
|
481
|
+
return isTrustedHtml(v) ? String(v) : escapeHtmlValue(String(v));
|
|
381
482
|
});
|
|
382
483
|
}
|
|
383
484
|
|
|
@@ -491,13 +592,13 @@ function finalizeResolvedConfig(nodeType, config) {
|
|
|
491
592
|
// Scalar config values are normally just secret-resolved. Rich-text strings
|
|
492
593
|
// (email bodies) additionally need their inline context placeholders resolved,
|
|
493
594
|
// and whole-string {{...}} template tokens resolve against the page context.
|
|
494
|
-
function resolveScalarValue(value, context) {
|
|
595
|
+
function resolveScalarValue(value, context, key) {
|
|
495
596
|
var tokenResolution = resolveTemplateTokenString(value, context);
|
|
496
597
|
if (tokenResolution.matched) {
|
|
497
598
|
return tokenResolution.value;
|
|
498
599
|
}
|
|
499
600
|
if (typeof value === 'string' && value.indexOf('context-value-inline') !== -1) {
|
|
500
|
-
return resolveRichTextContext(value, context);
|
|
601
|
+
return resolveRichTextContext(value, context, key === 'subject' || key === 'message');
|
|
501
602
|
}
|
|
502
603
|
return resolveSecret(value, context);
|
|
503
604
|
}
|
|
@@ -553,7 +654,7 @@ function resolveConfig(config, context) {
|
|
|
553
654
|
} else if (val && typeof val === 'object' && !Array.isArray(val)) {
|
|
554
655
|
resolved[key] = resolveConfig(val, context);
|
|
555
656
|
} else {
|
|
556
|
-
resolved[key] = resolveScalarValue(val, context);
|
|
657
|
+
resolved[key] = resolveScalarValue(val, context, key);
|
|
557
658
|
}
|
|
558
659
|
}
|
|
559
660
|
// Component-bodied email nodes carry their merge values as \`templateParams\`
|
|
@@ -587,18 +688,191 @@ function resolveConfig(config, context) {
|
|
|
587
688
|
resolved.body = applyTemplateParams(resolved.body, resolved.templateParams);
|
|
588
689
|
}
|
|
589
690
|
if (typeof resolved.subject === 'string') {
|
|
590
|
-
resolved.subject = applyTemplateParams(resolved.subject, resolved.templateParams);
|
|
691
|
+
resolved.subject = applyTemplateParams(resolved.subject, resolved.templateParams, true);
|
|
591
692
|
}
|
|
592
693
|
}
|
|
593
694
|
return resolved;
|
|
594
695
|
}
|
|
595
696
|
|
|
596
|
-
|
|
597
|
-
|
|
697
|
+
// The config fields a node compiles as code, and the mode fields that decide
|
|
698
|
+
// whether an if / switch compiles its condition. Only the text the author
|
|
699
|
+
// wrote may be: a field bound to a value — a {{…}} token, a context value, a
|
|
700
|
+
// secret, an inserted chip — is dropped from the resolved config, so the node
|
|
701
|
+
// runs its default (transform-array hands the item on as it is, a custom-JS
|
|
702
|
+
// step runs nothing, a condition compares as it does by default) and no
|
|
703
|
+
// request, webhook body or stored value ever becomes code. Every path that
|
|
704
|
+
// runs a node resolves its config through resolveNodeConfig: the client
|
|
705
|
+
// executor and the custom nodes it runs (in the browser, or in process inside
|
|
706
|
+
// a cron, webhook or automation route), and every loop of the segment, cron,
|
|
707
|
+
// webhook and automation routes.
|
|
708
|
+
var AUTHORED_ONLY_FIELDS = {
|
|
709
|
+
'general-custom-js': ['code'],
|
|
710
|
+
'transform-array': ['expression', 'mapExpression', 'filterExpression', 'reduceExpression', 'findExpression', 'sortExpression', 'includesExpression'],
|
|
711
|
+
'general-if-statement': ['conditionType'],
|
|
712
|
+
'general-switch': ['comparisonMode']
|
|
713
|
+
};
|
|
714
|
+
|
|
715
|
+
// Text the author wrote, taken as it is: no inserted chip, not a whole {{…}}
|
|
716
|
+
// token, not a secret reference.
|
|
717
|
+
function isAuthoredText(value) {
|
|
718
|
+
return typeof value === 'string' &&
|
|
719
|
+
value.indexOf('context-value-inline') === -1 &&
|
|
720
|
+
!/^\\s*\\{\\{[\\s\\S]*\\}\\}\\s*$/.test(value) &&
|
|
721
|
+
value.indexOf('WORKFLOW_SECRET_') !== 0 &&
|
|
722
|
+
value.indexOf('teleporthq.secrets.') !== 0;
|
|
723
|
+
}
|
|
724
|
+
|
|
725
|
+
// A node's config resolved for its handler (resolveConfig), with its code and
|
|
726
|
+
// mode fields only as the author wrote them.
|
|
727
|
+
function resolveNodeConfig(node, context) {
|
|
728
|
+
var authored = node ? node.config : undefined;
|
|
729
|
+
var resolved = resolveConfig(authored, context);
|
|
730
|
+
var fields = node ? AUTHORED_ONLY_FIELDS[node.type] : null;
|
|
731
|
+
if (!fields || !authored || typeof authored !== 'object' || !resolved || typeof resolved !== 'object') {
|
|
732
|
+
return resolved;
|
|
733
|
+
}
|
|
734
|
+
for (var i = 0; i < fields.length; i++) {
|
|
735
|
+
var field = fields[i];
|
|
736
|
+
if (authored[field] === undefined) continue;
|
|
737
|
+
if (isAuthoredText(authored[field])) {
|
|
738
|
+
resolved[field] = authored[field];
|
|
739
|
+
} else {
|
|
740
|
+
delete resolved[field];
|
|
741
|
+
}
|
|
742
|
+
}
|
|
743
|
+
return resolved;
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
// Only the expression the AUTHOR wrote is ever compiled, and only once. Every
|
|
747
|
+
// context chip in it (an inline chip of the rich-text input, a reference part
|
|
748
|
+
// of a parts array) is handed to the compiled function as a named argument —
|
|
749
|
+
// \`value > <chip max>\` runs as \`value > __tqv0\` with the chip's value passed
|
|
750
|
+
// in as \`__tqv0\` — so a value from the context is data, never code, and
|
|
751
|
+
// request text cannot run on the server (nor stored data in a visitor's
|
|
752
|
+
// browser). A chip the author wrote inside quotes (\`value === '<chip>'\`) is
|
|
753
|
+
// passed as a string. A condition that IS a reference, a whole {{…}} token or a
|
|
754
|
+
// secret has no code of the author's in it: its value is read as data, by its
|
|
755
|
+
// truth. \`authored\` is the node's config as written.
|
|
756
|
+
var WHOLE_TEMPLATE_TOKEN = /^\\{\\{\\s*[^{}]+?\\s*\\}\\}$/;
|
|
757
|
+
|
|
758
|
+
function authoredExpressionParts(authored) {
|
|
759
|
+
if (typeof authored === 'string') {
|
|
760
|
+
if (WHOLE_TEMPLATE_TOKEN.test(authored.trim())) return null;
|
|
761
|
+
if (authored.indexOf('WORKFLOW_SECRET_') === 0 || authored.indexOf('teleporthq.secrets.') === 0) return null;
|
|
762
|
+
return authored.indexOf('context-value-inline') === -1 ? [authored] : splitRichTextChips(authored);
|
|
763
|
+
}
|
|
764
|
+
if (Array.isArray(authored)) {
|
|
765
|
+
return authored.map(function(item) {
|
|
766
|
+
if (item && typeof item === 'object' && (item.type === 'workflowContext' || item.type === 'ctx')) {
|
|
767
|
+
return { chip: item };
|
|
768
|
+
}
|
|
769
|
+
return item === null || item === undefined ? '' : String(item);
|
|
770
|
+
});
|
|
771
|
+
}
|
|
772
|
+
return null;
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
var __compiledExpressions = new Map();
|
|
776
|
+
|
|
777
|
+
function compileExpression(parts, argNames) {
|
|
778
|
+
var text = '';
|
|
779
|
+
var chips = [];
|
|
780
|
+
var pending = parts.slice();
|
|
781
|
+
for (var i = 0; i < pending.length; i++) {
|
|
782
|
+
var part = pending[i];
|
|
783
|
+
if (typeof part === 'string') { text += part; continue; }
|
|
784
|
+
var quote = text.charAt(text.length - 1);
|
|
785
|
+
var next = pending[i + 1];
|
|
786
|
+
var quoted = (quote === '"' || quote === "'" || quote === '\`') && typeof next === 'string' && next.charAt(0) === quote;
|
|
787
|
+
if (quoted) {
|
|
788
|
+
text = text.slice(0, -1);
|
|
789
|
+
pending[i + 1] = next.slice(1);
|
|
790
|
+
}
|
|
791
|
+
text += '__tqv' + chips.length;
|
|
792
|
+
chips.push({ ref: part.chip, quoted: quoted });
|
|
793
|
+
}
|
|
794
|
+
var names = argNames.slice();
|
|
795
|
+
for (var c = 0; c < chips.length; c++) names.push('__tqv' + c);
|
|
796
|
+
var key = names.join(',') + '\\n' + text;
|
|
797
|
+
if (!__compiledExpressions.has(key)) {
|
|
798
|
+
var fn = null;
|
|
799
|
+
try { fn = Function.apply(null, names.concat(['return (' + text + ')'])); } catch (e) { fn = null; }
|
|
800
|
+
__compiledExpressions.set(key, fn);
|
|
801
|
+
}
|
|
802
|
+
return { fn: __compiledExpressions.get(key), chips: chips };
|
|
803
|
+
}
|
|
804
|
+
|
|
805
|
+
// The truth of a value read as data: a string reads as the word or number it
|
|
806
|
+
// spells ('false', '0', '' and 'null' are false), anything else by JS truth.
|
|
807
|
+
function truthOf(value) {
|
|
808
|
+
if (typeof value === 'string') {
|
|
809
|
+
var text = value.trim().toLowerCase();
|
|
810
|
+
if (text === '' || text === 'false' || text === 'null' || text === 'undefined' || text === 'nan') return false;
|
|
811
|
+
if (text === 'true') return true;
|
|
812
|
+
var number = Number(text);
|
|
813
|
+
return isNaN(number) ? true : number !== 0;
|
|
814
|
+
}
|
|
815
|
+
return !!value;
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
function chipValue(ref, context) {
|
|
819
|
+
if (!ref) return undefined;
|
|
820
|
+
return ref.type === 'ctx' ? resolveCtxRef(ref, context) : resolveContextRef(ref, context);
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
// The one chip a condition consists of, when the rest of it is only blank
|
|
824
|
+
// text or the editor's markup around it (\`<p>\`, \` \`); null otherwise.
|
|
825
|
+
function soleChip(parts) {
|
|
826
|
+
var chip = null;
|
|
827
|
+
for (var i = 0; i < parts.length; i++) {
|
|
828
|
+
var part = parts[i];
|
|
829
|
+
if (typeof part === 'string') {
|
|
830
|
+
if (part.replace(/<[^>]*>/g, '').replace(/ /g, ' ').trim() !== '') return null;
|
|
831
|
+
} else if (chip) {
|
|
832
|
+
return null;
|
|
833
|
+
} else {
|
|
834
|
+
chip = part;
|
|
835
|
+
}
|
|
836
|
+
}
|
|
837
|
+
return chip;
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
function runExpression(authored, resolved, argNames, args, context) {
|
|
841
|
+
var parts = authoredExpressionParts(authored);
|
|
842
|
+
if (!parts) return truthOf(resolved);
|
|
843
|
+
// A condition that is only a chip is a value, read by the word it spells
|
|
844
|
+
// ('false', '0' and '' are false), as a whole {{…}} token is.
|
|
845
|
+
var only = soleChip(parts);
|
|
846
|
+
if (only) return truthOf(chipValue(only.chip, context));
|
|
847
|
+
var compiled = compileExpression(parts, argNames);
|
|
848
|
+
if (!compiled.fn) return false;
|
|
849
|
+
var values = args.slice();
|
|
850
|
+
for (var c = 0; c < compiled.chips.length; c++) {
|
|
851
|
+
var chip = compiled.chips[c];
|
|
852
|
+
var value = chipValue(chip.ref, context);
|
|
853
|
+
values.push(chip.quoted ? (value === null || value === undefined ? '' : String(value)) : value);
|
|
854
|
+
}
|
|
855
|
+
try { return !!compiled.fn.apply(null, values); }
|
|
856
|
+
catch (e) { return false; }
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
// The mode a condition runs in (an if's conditionType, a switch's
|
|
860
|
+
// comparisonMode), as the author wrote it. A mode bound to a value — a {{…}}
|
|
861
|
+
// token, a context value, a secret, an inserted chip — is no mode: request text
|
|
862
|
+
// can never switch a step into compiling its expression.
|
|
863
|
+
function authoredMode(value) {
|
|
864
|
+
return isAuthoredText(value) ? value : '';
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
function evaluateCondition(config, context, authoredConfig) {
|
|
868
|
+
const written = arguments.length > 2 ? (authoredConfig || {}) : config;
|
|
869
|
+
const condType = authoredMode(written.conditionType) || 'simple-comparison';
|
|
598
870
|
if (condType === 'expression') {
|
|
599
871
|
const cond = resolveValue(config.condition, context);
|
|
600
|
-
|
|
601
|
-
|
|
872
|
+
// Callers pass the node's config as written; a caller that has only one
|
|
873
|
+
// config hands that one, whose condition is then its own text.
|
|
874
|
+
const authored = arguments.length > 2 ? (authoredConfig || {}).condition : config.condition;
|
|
875
|
+
return runExpression(authored, cond, ['context'], [context], context);
|
|
602
876
|
}
|
|
603
877
|
if (condType === 'multiple-conditions') {
|
|
604
878
|
const conditions = config.conditions || [];
|
|
@@ -609,6 +883,26 @@ function evaluateCondition(config, context) {
|
|
|
609
883
|
return evaluateSingleComparison(config, context);
|
|
610
884
|
}
|
|
611
885
|
|
|
886
|
+
// The id of the case a switch node takes, 'default' when none matches.
|
|
887
|
+
// \`authoredConfig\` is the node's config as written (see runExpression): in
|
|
888
|
+
// expression mode only an authored case condition is compiled, with the switch
|
|
889
|
+
// value handed in as \`value\`.
|
|
890
|
+
function matchSwitchCase(authoredConfig, resolvedConfig, context) {
|
|
891
|
+
var switchVal = resolveValue(resolvedConfig.switchValue, context);
|
|
892
|
+
var cases = resolvedConfig.cases || [];
|
|
893
|
+
var authoredCases = authoredConfig && Array.isArray(authoredConfig.cases) ? authoredConfig.cases : [];
|
|
894
|
+
for (var i = 0; i < cases.length; i++) {
|
|
895
|
+
var caseVal = resolveValue(cases[i].condition, context);
|
|
896
|
+
if (authoredMode((authoredConfig || resolvedConfig).comparisonMode) === 'expression') {
|
|
897
|
+
var authored = authoredCases[i] && typeof authoredCases[i] === 'object' ? authoredCases[i].condition : undefined;
|
|
898
|
+
if (runExpression(authored, caseVal, ['value', 'context'], [switchVal, context], context)) return cases[i].id;
|
|
899
|
+
} else if (switchVal === caseVal) {
|
|
900
|
+
return cases[i].id;
|
|
901
|
+
}
|
|
902
|
+
}
|
|
903
|
+
return 'default';
|
|
904
|
+
}
|
|
905
|
+
|
|
612
906
|
function coerceForComparison(a, b) {
|
|
613
907
|
if (typeof a === 'boolean' && typeof b === 'string') {
|
|
614
908
|
if (b === 'true') return [a, true];
|
|
@@ -923,7 +1217,7 @@ async function executeNodes(nodes, edges, context, nodeHandlers, workflowConfig,
|
|
|
923
1217
|
continue;
|
|
924
1218
|
}
|
|
925
1219
|
|
|
926
|
-
const resolvedConfig =
|
|
1220
|
+
const resolvedConfig = resolveNodeConfig(node, context);
|
|
927
1221
|
|
|
928
1222
|
try {
|
|
929
1223
|
const configError = finalizeResolvedConfig(node.type, resolvedConfig);
|
|
@@ -936,7 +1230,7 @@ async function executeNodes(nodes, edges, context, nodeHandlers, workflowConfig,
|
|
|
936
1230
|
// once — see the comment there.
|
|
937
1231
|
|
|
938
1232
|
if (node.type === 'general-if-statement') {
|
|
939
|
-
const condResult = evaluateCondition(resolvedConfig, context);
|
|
1233
|
+
const condResult = evaluateCondition(resolvedConfig, context, node.config);
|
|
940
1234
|
context[node.id] = { result: condResult };
|
|
941
1235
|
executed[node.id] = true;
|
|
942
1236
|
|
|
@@ -953,17 +1247,7 @@ async function executeNodes(nodes, edges, context, nodeHandlers, workflowConfig,
|
|
|
953
1247
|
}
|
|
954
1248
|
|
|
955
1249
|
if (node.type === 'general-switch') {
|
|
956
|
-
const
|
|
957
|
-
const cases = resolvedConfig.cases || [];
|
|
958
|
-
let matchedCase = 'default';
|
|
959
|
-
for (let ci = 0; ci < cases.length; ci++) {
|
|
960
|
-
const caseVal = resolveValue(cases[ci].condition, context);
|
|
961
|
-
if (resolvedConfig.comparisonMode === 'expression') {
|
|
962
|
-
try { if (new Function('value', 'context', 'return (' + caseVal + ')')(switchVal, context)) { matchedCase = cases[ci].id; break; } } catch(e) {}
|
|
963
|
-
} else {
|
|
964
|
-
if (switchVal === caseVal) { matchedCase = cases[ci].id; break; }
|
|
965
|
-
}
|
|
966
|
-
}
|
|
1250
|
+
const matchedCase = matchSwitchCase(node.config, resolvedConfig, context);
|
|
967
1251
|
context[node.id] = { matchedCase: matchedCase };
|
|
968
1252
|
executed[node.id] = true;
|
|
969
1253
|
|
|
@@ -1229,8 +1513,8 @@ async function executeLoop(loopNode, config, allNodes, edges, context, nodeHandl
|
|
|
1229
1513
|
const whileCtx = Object.assign({}, context);
|
|
1230
1514
|
whileCtx[loopNode.id + '_iter'] = { iteration: iter };
|
|
1231
1515
|
const condStr = resolveValue(config.condition, whileCtx);
|
|
1232
|
-
|
|
1233
|
-
|
|
1516
|
+
// Only the authored condition is compiled (see runExpression).
|
|
1517
|
+
const condResult = runExpression(loopNode.config && loopNode.config.condition, condStr, ['context'], [whileCtx], whileCtx);
|
|
1234
1518
|
if (loopType === 'while' && !condResult) break;
|
|
1235
1519
|
if (loopType === 'until' && condResult) break;
|
|
1236
1520
|
await executeNodes(bodyNodes, edges, whileCtx, nodeHandlers, workflowConfig, callServerSegment, executionId);
|
|
@@ -1411,12 +1695,17 @@ function snapshotIncomingContext(incoming) {
|
|
|
1411
1695
|
}
|
|
1412
1696
|
|
|
1413
1697
|
// Never replied: the caller's own page-state snapshot (the client never merges
|
|
1414
|
-
// it back — see mergeServerResults) and the route's private state
|
|
1698
|
+
// it back — see mergeServerResults) and the route's private state, the
|
|
1699
|
+
// visitor's session identity included (the server reads it from the cookie on
|
|
1700
|
+
// every request).
|
|
1415
1701
|
var SEGMENT_REPLY_PRIVATE_KEYS = {
|
|
1416
1702
|
__stateValues: true,
|
|
1417
1703
|
__internalHeaders: true,
|
|
1418
1704
|
__request: true,
|
|
1419
|
-
__pendingNodePromises: true
|
|
1705
|
+
__pendingNodePromises: true,
|
|
1706
|
+
__sessionUserId: true,
|
|
1707
|
+
__sessionRole: true,
|
|
1708
|
+
__sessionUser: true
|
|
1420
1709
|
};
|
|
1421
1710
|
|
|
1422
1711
|
// What a server segment replies with: the result of every node it ran itself
|
|
@@ -1506,12 +1795,7 @@ function internalRequestHeaders(req) {
|
|
|
1506
1795
|
if (req && req.headers && req.headers.cookie) {
|
|
1507
1796
|
headers.cookie = req.headers.cookie;
|
|
1508
1797
|
}
|
|
1509
|
-
|
|
1510
|
-
if (bypassSecret) {
|
|
1511
|
-
headers['x-vercel-protection-bypass'] = bypassSecret;
|
|
1512
|
-
// Tells Vercel not to hand the bypass back to the caller as a cookie.
|
|
1513
|
-
headers['x-vercel-set-bypass-cookie'] = 'false';
|
|
1514
|
-
}
|
|
1798
|
+
${generateProtectionBypassHeaderStatements('headers')}
|
|
1515
1799
|
return headers;
|
|
1516
1800
|
}
|
|
1517
1801
|
|
|
@@ -1528,6 +1812,7 @@ module.exports = {
|
|
|
1528
1812
|
resolveValue,
|
|
1529
1813
|
resolveSecret,
|
|
1530
1814
|
resolveConfig,
|
|
1815
|
+
resolveNodeConfig,
|
|
1531
1816
|
resolveContextRef,
|
|
1532
1817
|
resolveRichTextContext,
|
|
1533
1818
|
unwrapWorkflowCollection,
|
|
@@ -1537,6 +1822,7 @@ module.exports = {
|
|
|
1537
1822
|
withoutCredentialColumns,
|
|
1538
1823
|
credentialResultNodeIds,
|
|
1539
1824
|
evaluateCondition,
|
|
1825
|
+
matchSwitchCase,
|
|
1540
1826
|
evaluateSingleComparison,
|
|
1541
1827
|
normalizeComparisonOperator,
|
|
1542
1828
|
resolveTemplateTokenString,
|
|
@@ -1715,10 +2001,13 @@ function pruneContext(context, stateKeys) {
|
|
|
1715
2001
|
// Credentials for a server-side caller's own requests travel as HEADERS
|
|
1716
2002
|
// (see segmentRequestHeaders), never in the body.
|
|
1717
2003
|
if (key === '__internalHeaders') continue;
|
|
1718
|
-
// The
|
|
1719
|
-
//
|
|
1720
|
-
|
|
1721
|
-
|
|
2004
|
+
// The visitor's identity is the server's to read from the session cookie;
|
|
2005
|
+
// a route ignores any it is sent.
|
|
2006
|
+
if (key === '__sessionUserId' || key === '__sessionRole' || key === '__sessionUser') continue;
|
|
2007
|
+
// The signatures of earlier server results, of the key order and of the
|
|
2008
|
+
// run they belong to must cross whole: a pruned signature no longer
|
|
2009
|
+
// matches, and the server then treats the result it covers as never produced.
|
|
2010
|
+
if (key === '__sig' || key === '__sigOrder' || key === '__sigRun') {
|
|
1722
2011
|
pruned[key] = val;
|
|
1723
2012
|
continue;
|
|
1724
2013
|
}
|
|
@@ -1830,7 +2119,16 @@ async function callServerSegment(segmentUrl, context, stateKeys) {
|
|
|
1830
2119
|
let errorData;
|
|
1831
2120
|
try { errorData = await response.json(); } catch(e) { errorData = { error: response.statusText }; }
|
|
1832
2121
|
if (response.status === 429) {
|
|
1833
|
-
|
|
2122
|
+
// The sentence the visitor reads. A rate-limiter step answers its
|
|
2123
|
+
// author's own \`message\` beside a generic \`error\` ("Too Many
|
|
2124
|
+
// Requests"), so \`message\` comes first; every other 429 (the shared
|
|
2125
|
+
// security runtime, a step's visitor limit, the route's abuse gate, the
|
|
2126
|
+
// site's AI budget) says only \`error\`. No 429 carries internal text.
|
|
2127
|
+
var rlErr = new Error(
|
|
2128
|
+
(errorData && typeof errorData.message === 'string' && errorData.message) ||
|
|
2129
|
+
(errorData && typeof errorData.error === 'string' && errorData.error) ||
|
|
2130
|
+
'Too many requests. Try again later.'
|
|
2131
|
+
);
|
|
1834
2132
|
rlErr.__skipErrorHandler = true;
|
|
1835
2133
|
rlErr.__rateLimited = true;
|
|
1836
2134
|
rlErr.__earlyResponse = errorData;
|
|
@@ -1920,7 +2218,16 @@ async function callStreamingServerSegment(segmentUrl, context, streamingInfo, al
|
|
|
1920
2218
|
let errorData;
|
|
1921
2219
|
try { errorData = await response.json(); } catch(e) { errorData = { error: response.statusText }; }
|
|
1922
2220
|
if (response.status === 429) {
|
|
1923
|
-
|
|
2221
|
+
// The sentence the visitor reads. A rate-limiter step answers its
|
|
2222
|
+
// author's own \`message\` beside a generic \`error\` ("Too Many
|
|
2223
|
+
// Requests"), so \`message\` comes first; every other 429 (the shared
|
|
2224
|
+
// security runtime, a step's visitor limit, the route's abuse gate, the
|
|
2225
|
+
// site's AI budget) says only \`error\`. No 429 carries internal text.
|
|
2226
|
+
var rlErr = new Error(
|
|
2227
|
+
(errorData && typeof errorData.message === 'string' && errorData.message) ||
|
|
2228
|
+
(errorData && typeof errorData.error === 'string' && errorData.error) ||
|
|
2229
|
+
'Too many requests. Try again later.'
|
|
2230
|
+
);
|
|
1924
2231
|
rlErr.__skipErrorHandler = true;
|
|
1925
2232
|
rlErr.__rateLimited = true;
|
|
1926
2233
|
rlErr.__earlyResponse = errorData;
|
|
@@ -2179,14 +2486,19 @@ async function executeWorkflowWithSegments(workflowConfig, triggerContext, clien
|
|
|
2179
2486
|
}
|
|
2180
2487
|
}
|
|
2181
2488
|
} catch (error) {
|
|
2182
|
-
|
|
2489
|
+
// A step the server refused for its rate limit (429) is a failure the
|
|
2490
|
+
// visitor must see: the workflow's error branch runs with the server's
|
|
2491
|
+
// public sentence and \`rateLimited: true\`, so a busy button is released
|
|
2492
|
+
// and a message shown. Only a workflow without an error branch ends quietly.
|
|
2493
|
+
const errorHandler = findErrorHandlerNodes(workflowConfig);
|
|
2494
|
+
if (error.__rateLimited ? !errorHandler : error.__skipErrorHandler) {
|
|
2183
2495
|
return context;
|
|
2184
2496
|
}
|
|
2185
|
-
const errorHandler = findErrorHandlerNodes(workflowConfig);
|
|
2186
2497
|
if (errorHandler) {
|
|
2187
2498
|
context[workflowConfig.errorHandlerNodeId] = {
|
|
2188
2499
|
error: { message: error.message || String(error), stack: error.stack || '' },
|
|
2189
|
-
errorMessage: error.message || String(error)
|
|
2500
|
+
errorMessage: error.message || String(error),
|
|
2501
|
+
rateLimited: error.__rateLimited === true
|
|
2190
2502
|
};
|
|
2191
2503
|
try {
|
|
2192
2504
|
await utils.executeNodes(errorHandler.nodes, errorHandler.edges, context, clientHandlers, workflowConfig, null, executionId);
|