@teleporthq/teleport-plugin-next-workflows 0.44.11 → 0.44.17
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
|
@@ -6,6 +6,12 @@ import {
|
|
|
6
6
|
ProductOptions,
|
|
7
7
|
} from '@teleporthq/teleport-shared'
|
|
8
8
|
import { NodeHandlerGenerator, handlerToString } from '../types'
|
|
9
|
+
import {
|
|
10
|
+
STALLED_RESERVATION_RELEASE,
|
|
11
|
+
STOCK_RESERVATION_KEY,
|
|
12
|
+
buildStalledReservationCandidatesQuery,
|
|
13
|
+
buildStalledReservationReleaseQueries,
|
|
14
|
+
} from '../../ecommerce/place-order-guards'
|
|
9
15
|
import { cartGetTotal } from './cart-get-total'
|
|
10
16
|
|
|
11
17
|
// AMBIENT, not imported — see cart-get-total.ts. `__cartPricingSettings` is
|
|
@@ -13,6 +19,16 @@ import { cartGetTotal } from './cart-get-total'
|
|
|
13
19
|
// helpers and `__runCartTotal` are spliced into the handler by
|
|
14
20
|
// `generateHandler` below.
|
|
15
21
|
declare const __cartPricingSettings: any
|
|
22
|
+
// Spliced in by `generateHandler`: the statement that releases the stock of
|
|
23
|
+
// orders whose checkout never reached a payment page (place-order-guards.ts),
|
|
24
|
+
// in the forms tried in turn: logging each order with the ledger's record
|
|
25
|
+
// columns, logging on an older ledger, and for a store with no ledger.
|
|
26
|
+
declare const __stalledReservationReleaseQueries: string[]
|
|
27
|
+
// The orders a pass may release, read first (unlocked) so their metadata is
|
|
28
|
+
// parsed here: a malformed row is skipped and logged, never cast in SQL.
|
|
29
|
+
declare const __stalledReservationCandidatesQuery: string
|
|
30
|
+
declare const __stalledReservationKey: string
|
|
31
|
+
declare const __stalledReservationBatchSize: number
|
|
16
32
|
declare function __clPriceLine(
|
|
17
33
|
item: any,
|
|
18
34
|
product: any,
|
|
@@ -53,9 +69,37 @@ declare function __ccMixedCartMessage(codes: string[]): string
|
|
|
53
69
|
* here, what the order lines record). An order that cannot be priced answers
|
|
54
70
|
* `priced: false` with a `reason` for the buyer — never `error`, which the
|
|
55
71
|
* runtime treats as fatal — and the workflow refuses it.
|
|
72
|
+
*
|
|
73
|
+
* The payment method is decided here too, from the store's own methods
|
|
74
|
+
* (`paymentMethods` in the same settings): cash on delivery only where the
|
|
75
|
+
* store takes it, otherwise one of its enabled online providers. An empty
|
|
76
|
+
* method is refused — never read as cash on delivery — and so is a checkout
|
|
77
|
+
* that does not say which method it chose. The accepted method travels in
|
|
78
|
+
* the result (`paymentMethod`), so the order is assembled from the method
|
|
79
|
+
* checked here rather than whatever a later request says.
|
|
80
|
+
*
|
|
81
|
+
* `stockDeltas` is what the order takes from stock — the units per product
|
|
82
|
+
* (variantless lines) and per variant, duplicates summed — read off the lines
|
|
83
|
+
* priced here, for the statement that reserves them with the order.
|
|
84
|
+
*
|
|
85
|
+
* `pricedForm` / `pricedShipToDifferent` are the checkout form and the
|
|
86
|
+
* ship-to-different flag this step priced shipping and tax for. The assemble
|
|
87
|
+
* step builds the order's addresses from them, so the address an order
|
|
88
|
+
* records is always the one it was priced (and its zone decided) for.
|
|
56
89
|
*/
|
|
57
90
|
async function cart_price_order(config: any, context: any) {
|
|
58
|
-
const
|
|
91
|
+
const noStock = () => ({
|
|
92
|
+
productIds: [] as string[],
|
|
93
|
+
productQtys: [] as number[],
|
|
94
|
+
variantIds: [] as string[],
|
|
95
|
+
variantQtys: [] as number[],
|
|
96
|
+
})
|
|
97
|
+
const refuse = (reason: string) => ({
|
|
98
|
+
priced: false,
|
|
99
|
+
reason,
|
|
100
|
+
lines: [] as unknown[],
|
|
101
|
+
stockDeltas: noStock(),
|
|
102
|
+
})
|
|
59
103
|
const settings =
|
|
60
104
|
typeof __cartPricingSettings !== 'undefined' && __cartPricingSettings
|
|
61
105
|
? __cartPricingSettings
|
|
@@ -64,6 +108,25 @@ async function cart_price_order(config: any, context: any) {
|
|
|
64
108
|
return refuse('This store cannot price the order right now. Please try again later.')
|
|
65
109
|
}
|
|
66
110
|
|
|
111
|
+
const methods =
|
|
112
|
+
settings.paymentMethods && typeof settings.paymentMethods === 'object'
|
|
113
|
+
? settings.paymentMethods
|
|
114
|
+
: null
|
|
115
|
+
if (!methods || !Object.prototype.hasOwnProperty.call(config, 'paymentMethod')) {
|
|
116
|
+
return refuse('This store cannot take the order right now. Please try again later.')
|
|
117
|
+
}
|
|
118
|
+
const paymentMethod = typeof config.paymentMethod === 'string' ? config.paymentMethod.trim() : ''
|
|
119
|
+
if (!paymentMethod) {
|
|
120
|
+
return refuse('Choose a payment method to place your order.')
|
|
121
|
+
}
|
|
122
|
+
if (paymentMethod === 'cash_on_delivery') {
|
|
123
|
+
if (methods.cashOnDelivery !== true) {
|
|
124
|
+
return refuse("This store doesn't take payment on delivery. Choose another payment method.")
|
|
125
|
+
}
|
|
126
|
+
} else if (!Array.isArray(methods.providers) || methods.providers.indexOf(paymentMethod) === -1) {
|
|
127
|
+
return refuse("This payment method isn't available. Choose another payment method.")
|
|
128
|
+
}
|
|
129
|
+
|
|
67
130
|
const readRows = (value: any): any[] => {
|
|
68
131
|
if (Array.isArray(value)) {
|
|
69
132
|
return value
|
|
@@ -121,6 +184,105 @@ async function cart_price_order(config: any, context: any) {
|
|
|
121
184
|
return Array.isArray(body && body.rows) ? body.rows : []
|
|
122
185
|
}
|
|
123
186
|
|
|
187
|
+
// Orders that reserved stock but never reached a payment page get no
|
|
188
|
+
// provider event, and on a store without scheduled workflows nothing else
|
|
189
|
+
// runs for them: each checkout releases the ones past their hold first, at
|
|
190
|
+
// most one pass per instance every five minutes, never awaited where the
|
|
191
|
+
// runtime keeps it alive: a long-running server, or Vercel's waitUntil when
|
|
192
|
+
// the app has one. A Vercel function without it waits for the pass (one
|
|
193
|
+
// bounded statement). A pass that releases a full batch lets the next
|
|
194
|
+
// checkout run another at once, so a backlog drains at least as fast as
|
|
195
|
+
// checkouts add to it. A failed pass is retried by the first checkout after
|
|
196
|
+
// those five minutes.
|
|
197
|
+
if (settings.releaseStalledReservations === true) {
|
|
198
|
+
const scope = globalThis as any
|
|
199
|
+
const sweepAt = Date.now()
|
|
200
|
+
if (!scope.__tqReservationSweepAt || sweepAt - scope.__tqReservationSweepAt > 5 * 60 * 1000) {
|
|
201
|
+
scope.__tqReservationSweepAt = sweepAt
|
|
202
|
+
const releaseWith = (query: string, params: unknown[]) =>
|
|
203
|
+
fetch(baseUrl + '/api/data/' + settings.dataSourceId + '/raw-query', {
|
|
204
|
+
method: 'POST',
|
|
205
|
+
headers: {
|
|
206
|
+
'Content-Type': 'application/json',
|
|
207
|
+
'x-internal-data-secret': (env && env.NEXTAUTH_SECRET) || '',
|
|
208
|
+
...internalHeaders,
|
|
209
|
+
},
|
|
210
|
+
body: JSON.stringify({ query, params }),
|
|
211
|
+
})
|
|
212
|
+
const pass = (async () => {
|
|
213
|
+
const listed: any = await releaseWith(__stalledReservationCandidatesQuery, [])
|
|
214
|
+
const listing = await listed.json().catch(() => null)
|
|
215
|
+
if (!listed || !listed.ok || !listing || !Array.isArray(listing.rows)) {
|
|
216
|
+
return
|
|
217
|
+
}
|
|
218
|
+
const readable: string[] = []
|
|
219
|
+
const warned = scope.__tqUnreadableReservations || (scope.__tqUnreadableReservations = {})
|
|
220
|
+
for (const candidate of listing.rows) {
|
|
221
|
+
const id = String((candidate && candidate.id) || '')
|
|
222
|
+
let parsed: any = null
|
|
223
|
+
try {
|
|
224
|
+
parsed = JSON.parse(String((candidate && candidate.metadata) || ''))
|
|
225
|
+
} catch (_error) {
|
|
226
|
+
// Once per order and instance: its stock stays held for the
|
|
227
|
+
// merchant, and every other order is still released.
|
|
228
|
+
if (id && !warned[id]) {
|
|
229
|
+
warned[id] = true
|
|
230
|
+
// tslint:disable-next-line:no-console
|
|
231
|
+
console.warn(
|
|
232
|
+
'[checkout] order ' +
|
|
233
|
+
id +
|
|
234
|
+
' has metadata that is not valid JSON: its reserved stock is not released automatically.'
|
|
235
|
+
)
|
|
236
|
+
}
|
|
237
|
+
continue
|
|
238
|
+
}
|
|
239
|
+
if (
|
|
240
|
+
id &&
|
|
241
|
+
parsed &&
|
|
242
|
+
typeof parsed === 'object' &&
|
|
243
|
+
Array.isArray(parsed[__stalledReservationKey])
|
|
244
|
+
) {
|
|
245
|
+
readable.push(id)
|
|
246
|
+
}
|
|
247
|
+
if (readable.length >= __stalledReservationBatchSize) {
|
|
248
|
+
break
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
if (readable.length === 0) {
|
|
252
|
+
return
|
|
253
|
+
}
|
|
254
|
+
for (const query of __stalledReservationReleaseQueries) {
|
|
255
|
+
const response: any = await releaseWith(query, [readable])
|
|
256
|
+
const result = await response.json().catch(() => null)
|
|
257
|
+
if (response && response.ok) {
|
|
258
|
+
const row = result && Array.isArray(result.rows) ? result.rows[0] : null
|
|
259
|
+
if (row && Number(row.released) >= __stalledReservationBatchSize) {
|
|
260
|
+
scope.__tqReservationSweepAt = 0
|
|
261
|
+
}
|
|
262
|
+
return
|
|
263
|
+
}
|
|
264
|
+
// Only a ledger without the log's columns (42703) or without the
|
|
265
|
+
// table (42P01) moves on to the next form; anything else waits for
|
|
266
|
+
// the next pass.
|
|
267
|
+
const code = String((result && result.code) || '')
|
|
268
|
+
if (code !== '42703' && code !== '42P01') {
|
|
269
|
+
return
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
})().then(
|
|
273
|
+
() => undefined,
|
|
274
|
+
() => undefined
|
|
275
|
+
)
|
|
276
|
+
if (env && env.VERCEL) {
|
|
277
|
+
if (typeof scope.__tqWaitUntil === 'function') {
|
|
278
|
+
scope.__tqWaitUntil(pass)
|
|
279
|
+
} else {
|
|
280
|
+
await pass
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
|
|
124
286
|
const productIds: string[] = []
|
|
125
287
|
for (const line of chosen) {
|
|
126
288
|
if (productIds.indexOf(line.productId) === -1) {
|
|
@@ -319,7 +481,36 @@ async function cart_price_order(config: any, context: any) {
|
|
|
319
481
|
) {
|
|
320
482
|
return refuse('The order could not be priced right now. Please try again in a moment.')
|
|
321
483
|
}
|
|
322
|
-
|
|
484
|
+
// A variant line draws on its variant's stock, never its product's; lines
|
|
485
|
+
// drawing on the same row add up (two lines of 3 are 6 units).
|
|
486
|
+
const stockDeltas = noStock()
|
|
487
|
+
for (const line of lines) {
|
|
488
|
+
const ids = line.variantId ? stockDeltas.variantIds : stockDeltas.productIds
|
|
489
|
+
const qtys = line.variantId ? stockDeltas.variantQtys : stockDeltas.productQtys
|
|
490
|
+
const id = String(line.variantId || line.productId)
|
|
491
|
+
const units = Math.floor(Number(line.quantity))
|
|
492
|
+
const qty = isFinite(units) && units >= 1 ? units : 1
|
|
493
|
+
const at = ids.indexOf(id)
|
|
494
|
+
if (at === -1) {
|
|
495
|
+
ids.push(id)
|
|
496
|
+
qtys.push(qty)
|
|
497
|
+
} else {
|
|
498
|
+
qtys[at] += qty
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
// The address the order was priced for, exactly as this step read it: the
|
|
502
|
+
// order records its shipping address from here, never from a form a later
|
|
503
|
+
// request hands the assemble step (which could name another country).
|
|
504
|
+
return {
|
|
505
|
+
...total,
|
|
506
|
+
priced: true,
|
|
507
|
+
reason: '',
|
|
508
|
+
lines,
|
|
509
|
+
paymentMethod,
|
|
510
|
+
stockDeltas,
|
|
511
|
+
pricedForm: form,
|
|
512
|
+
pricedShipToDifferent: shipToDifferent ? 'true' : 'false',
|
|
513
|
+
}
|
|
323
514
|
}
|
|
324
515
|
|
|
325
516
|
export const cartPriceOrder: NodeHandlerGenerator = {
|
|
@@ -333,6 +524,13 @@ export const cartPriceOrder: NodeHandlerGenerator = {
|
|
|
333
524
|
const bodyStart = source.indexOf('{') + 1
|
|
334
525
|
return (
|
|
335
526
|
source.slice(0, bodyStart) +
|
|
527
|
+
`\nvar __stalledReservationReleaseQueries = ${JSON.stringify(
|
|
528
|
+
buildStalledReservationReleaseQueries()
|
|
529
|
+
)};\nvar __stalledReservationCandidatesQuery = ${JSON.stringify(
|
|
530
|
+
buildStalledReservationCandidatesQuery()
|
|
531
|
+
)};\nvar __stalledReservationKey = ${JSON.stringify(
|
|
532
|
+
STOCK_RESERVATION_KEY
|
|
533
|
+
)};\nvar __stalledReservationBatchSize = ${STALLED_RESERVATION_RELEASE.batchSize};\n` +
|
|
336
534
|
ProductDiscounts.generateProductDiscountHelperCode() +
|
|
337
535
|
'\n' +
|
|
338
536
|
ProductOptions.generateProductOptionsHelperCode() +
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { nodeRegistry } from './index'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The node types whose run spends the site's money or reaches outside it: AI
|
|
5
|
+
* models, mail and SMS providers, payment providers, integrations, and every
|
|
6
|
+
* node that fetches a URL the site does not own. A server segment that runs
|
|
7
|
+
* one is rate-limited per visitor whatever the page's protection (see the
|
|
8
|
+
* abuse gate in api-route-generator.ts).
|
|
9
|
+
*
|
|
10
|
+
* One set beside the node registry. `cost-bearing-node-types.test.ts` reads
|
|
11
|
+
* every registered node's server source and fails when one that calls an AI
|
|
12
|
+
* provider, a mail / SMS / payment provider or an outbound URL is missing here
|
|
13
|
+
* — a new node of that kind has to be named before it ships.
|
|
14
|
+
*/
|
|
15
|
+
const COST_BEARING_PREFIXES = ['ai-', 'email-', 'sms-', 'payment-', 'integration-']
|
|
16
|
+
|
|
17
|
+
const OUTBOUND_NODE_TYPES = [
|
|
18
|
+
'general-http-request',
|
|
19
|
+
'utility-scrape-website',
|
|
20
|
+
'utility-extract-links',
|
|
21
|
+
'utility-pdf-extract-text',
|
|
22
|
+
'utility-youtube-transcript',
|
|
23
|
+
'utility-ocr-extract-text',
|
|
24
|
+
// Its semantic mode embeds both texts through the owner's OpenAI key.
|
|
25
|
+
'utility-similarity-scoring',
|
|
26
|
+
'transform-image',
|
|
27
|
+
'transform-color',
|
|
28
|
+
'transform-geolocation',
|
|
29
|
+
'push-send-notification',
|
|
30
|
+
// Mails a confirmation or a welcome through the site's provider, inside the
|
|
31
|
+
// newsletter helper (the node's own source shows no provider call).
|
|
32
|
+
'newsletter-subscribe',
|
|
33
|
+
]
|
|
34
|
+
|
|
35
|
+
const hasCostBearingPrefix = (type: string): boolean =>
|
|
36
|
+
COST_BEARING_PREFIXES.some((prefix) => type.startsWith(prefix))
|
|
37
|
+
|
|
38
|
+
export const COST_BEARING_NODE_TYPES: ReadonlySet<string> = new Set([
|
|
39
|
+
...Object.keys(nodeRegistry).filter(hasCostBearingPrefix),
|
|
40
|
+
...OUTBOUND_NODE_TYPES,
|
|
41
|
+
])
|
|
42
|
+
|
|
43
|
+
/** A registered cost-bearing type, or any type named like one (an unknown `ai-…` included). */
|
|
44
|
+
export const isCostBearingNodeType = (type: string): boolean =>
|
|
45
|
+
COST_BEARING_NODE_TYPES.has(type) || hasCostBearingPrefix(type)
|
|
@@ -55,8 +55,16 @@ async function data_select(config: any, context: any) {
|
|
|
55
55
|
return false
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
// A filter this node would leave out is kept, marked: the data API leaves it
|
|
59
|
+
// out exactly as before, except on a customer table read for a visitor, where
|
|
60
|
+
// an empty or "all" value must not widen the read to every customer's rows.
|
|
61
|
+
const effectiveFilters: any[] = []
|
|
62
|
+
filters.forEach(function (filter: any) {
|
|
63
|
+
if (!shouldSkipOptionalFilter(filter)) {
|
|
64
|
+
effectiveFilters.push(filter)
|
|
65
|
+
} else if (filter && typeof filter === 'object') {
|
|
66
|
+
effectiveFilters.push({ ...filter, __skippable: true })
|
|
67
|
+
}
|
|
60
68
|
})
|
|
61
69
|
|
|
62
70
|
// A filter whose value is the unresolved route-param sentinel (see
|
|
@@ -71,6 +79,7 @@ async function data_select(config: any, context: any) {
|
|
|
71
79
|
const __f: any = effectiveFilters[__fi]
|
|
72
80
|
if (
|
|
73
81
|
__f &&
|
|
82
|
+
__f.__skippable !== true &&
|
|
74
83
|
(__f.value === '__TQ_UNRESOLVED_ROUTE_PARAM__' ||
|
|
75
84
|
__f.destination === '__TQ_UNRESOLVED_ROUTE_PARAM__')
|
|
76
85
|
) {
|
|
@@ -1,13 +1,23 @@
|
|
|
1
|
-
import { NodeHandlerGenerator
|
|
2
|
-
import {
|
|
1
|
+
import { NodeHandlerGenerator } from '../types'
|
|
2
|
+
import { outboundMessageHandlerSources } from './outbound-message-guard'
|
|
3
3
|
import { EMAIL_RECIPIENTS_HELPER_SOURCE, EmailDeliveriesPlan } from './email-recipients'
|
|
4
4
|
|
|
5
|
+
declare function __outboundMessageGuard(channel: string, config: any, context: any): Promise<any>
|
|
5
6
|
// Ambient, not imported: a serialized handler has no module scope, so
|
|
6
7
|
// generateHandler appends the recipients helper's source (beside this file).
|
|
7
8
|
declare function __emailRecipients(to: unknown): unknown[]
|
|
8
9
|
declare function __emailDeliveries(plan: EmailDeliveriesPlan): Promise<unknown>
|
|
9
10
|
|
|
10
11
|
async function email_mailersend(config: any, context: Record<string, unknown>) {
|
|
12
|
+
// Line breaks out of every header; a visitor-supplied recipient counted
|
|
13
|
+
// (see outbound-message-guard).
|
|
14
|
+
const refused = await __outboundMessageGuard('email', config, context)
|
|
15
|
+
if (refused) {
|
|
16
|
+
// Over a limit: skipped, not failed, so the visitor's action goes on.
|
|
17
|
+
return refused.skipped
|
|
18
|
+
? { messageId: '', skipped: true, reason: refused.skipped }
|
|
19
|
+
: { messageId: '', success: false, error: refused.error }
|
|
20
|
+
}
|
|
11
21
|
const apiKey = config.apiKey
|
|
12
22
|
const from = config.from
|
|
13
23
|
const fromName = config.fromName || ''
|
|
@@ -96,10 +106,8 @@ export const emailMailersend: NodeHandlerGenerator = {
|
|
|
96
106
|
dependencies: {
|
|
97
107
|
mailersend: '^2.0.0',
|
|
98
108
|
},
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
)
|
|
104
|
-
},
|
|
109
|
+
...outboundMessageHandlerSources(email_mailersend, {
|
|
110
|
+
nodeType: 'email-mailersend',
|
|
111
|
+
extraSource: EMAIL_RECIPIENTS_HELPER_SOURCE,
|
|
112
|
+
}),
|
|
105
113
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { EmailSender } from '@teleporthq/teleport-shared'
|
|
2
|
-
import { NodeHandlerGenerator
|
|
3
|
-
import {
|
|
2
|
+
import { NodeHandlerGenerator } from '../types'
|
|
3
|
+
import { outboundMessageHandlerSources } from './outbound-message-guard'
|
|
4
4
|
import { EMAIL_RECIPIENTS_HELPER_SOURCE, EmailDeliveriesPlan } from './email-recipients'
|
|
5
5
|
|
|
6
|
+
declare function __outboundMessageGuard(channel: string, config: any, context: any): Promise<any>
|
|
6
7
|
// Ambient, not imported: a serialized handler has no module scope, so
|
|
7
8
|
// generateHandler appends the helpers' source (EmailSender from teleport-shared,
|
|
8
9
|
// the recipients helper beside this file).
|
|
@@ -11,6 +12,15 @@ declare function __emailRecipients(to: unknown): unknown[]
|
|
|
11
12
|
declare function __emailDeliveries(plan: EmailDeliveriesPlan): Promise<unknown>
|
|
12
13
|
|
|
13
14
|
async function email_mailgun(config: any, context: Record<string, unknown>) {
|
|
15
|
+
// Line breaks out of every header; a visitor-supplied recipient counted
|
|
16
|
+
// (see outbound-message-guard).
|
|
17
|
+
const refused = await __outboundMessageGuard('email', config, context)
|
|
18
|
+
if (refused) {
|
|
19
|
+
// Over a limit: skipped, not failed, so the visitor's action goes on.
|
|
20
|
+
return refused.skipped
|
|
21
|
+
? { messageId: '', skipped: true, reason: refused.skipped }
|
|
22
|
+
: { messageId: '', success: false, error: refused.error }
|
|
23
|
+
}
|
|
14
24
|
const apiKey = config.apiKey
|
|
15
25
|
const domain = config.domain
|
|
16
26
|
const from = config.from
|
|
@@ -77,14 +87,9 @@ export const emailMailgun: NodeHandlerGenerator = {
|
|
|
77
87
|
'mailgun.js': '^10.0.0',
|
|
78
88
|
'form-data': '^4.0.0',
|
|
79
89
|
},
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
'\n' +
|
|
86
|
-
EMAIL_RECIPIENTS_HELPER_SOURCE,
|
|
87
|
-
'email-mailgun'
|
|
88
|
-
)
|
|
89
|
-
},
|
|
90
|
+
...outboundMessageHandlerSources(email_mailgun, {
|
|
91
|
+
nodeType: 'email-mailgun',
|
|
92
|
+
extraSource:
|
|
93
|
+
EmailSender.generateEmailSenderHelperCode() + '\n' + EMAIL_RECIPIENTS_HELPER_SOURCE,
|
|
94
|
+
}),
|
|
90
95
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { EmailSender } from '@teleporthq/teleport-shared'
|
|
2
|
-
import { NodeHandlerGenerator
|
|
3
|
-
import {
|
|
2
|
+
import { NodeHandlerGenerator } from '../types'
|
|
3
|
+
import { outboundMessageHandlerSources } from './outbound-message-guard'
|
|
4
4
|
import { EMAIL_RECIPIENTS_HELPER_SOURCE, EmailDeliveriesPlan } from './email-recipients'
|
|
5
5
|
|
|
6
|
+
declare function __outboundMessageGuard(channel: string, config: any, context: any): Promise<any>
|
|
6
7
|
// Ambient, not imported: a serialized handler has no module scope, so
|
|
7
8
|
// generateHandler appends the helpers' source (EmailSender from teleport-shared,
|
|
8
9
|
// the recipients helper beside this file).
|
|
@@ -11,6 +12,15 @@ declare function __emailRecipients(to: unknown): unknown[]
|
|
|
11
12
|
declare function __emailDeliveries(plan: EmailDeliveriesPlan): Promise<unknown>
|
|
12
13
|
|
|
13
14
|
async function email_postmark(config: any, context: Record<string, unknown>) {
|
|
15
|
+
// Line breaks out of every header; a visitor-supplied recipient counted
|
|
16
|
+
// (see outbound-message-guard).
|
|
17
|
+
const refused = await __outboundMessageGuard('email', config, context)
|
|
18
|
+
if (refused) {
|
|
19
|
+
// Over a limit: skipped, not failed, so the visitor's action goes on.
|
|
20
|
+
return refused.skipped
|
|
21
|
+
? { messageId: '', skipped: true, reason: refused.skipped }
|
|
22
|
+
: { messageId: '', success: false, error: refused.error }
|
|
23
|
+
}
|
|
14
24
|
const serverToken = config.serverToken
|
|
15
25
|
const from = config.from
|
|
16
26
|
const fromName = config.fromName
|
|
@@ -76,14 +86,9 @@ export const emailPostmark: NodeHandlerGenerator = {
|
|
|
76
86
|
dependencies: {
|
|
77
87
|
postmark: '^4.0.0',
|
|
78
88
|
},
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
'\n' +
|
|
85
|
-
EMAIL_RECIPIENTS_HELPER_SOURCE,
|
|
86
|
-
'email-postmark'
|
|
87
|
-
)
|
|
88
|
-
},
|
|
89
|
+
...outboundMessageHandlerSources(email_postmark, {
|
|
90
|
+
nodeType: 'email-postmark',
|
|
91
|
+
extraSource:
|
|
92
|
+
EmailSender.generateEmailSenderHelperCode() + '\n' + EMAIL_RECIPIENTS_HELPER_SOURCE,
|
|
93
|
+
}),
|
|
89
94
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { EmailSender } from '@teleporthq/teleport-shared'
|
|
2
|
-
import { NodeHandlerGenerator
|
|
3
|
-
import {
|
|
2
|
+
import { NodeHandlerGenerator } from '../types'
|
|
3
|
+
import { outboundMessageHandlerSources } from './outbound-message-guard'
|
|
4
4
|
import { EMAIL_RECIPIENTS_HELPER_SOURCE, EmailDeliveriesPlan } from './email-recipients'
|
|
5
5
|
|
|
6
|
+
declare function __outboundMessageGuard(channel: string, config: any, context: any): Promise<any>
|
|
6
7
|
// Ambient, not imported: a serialized handler has no module scope, so
|
|
7
8
|
// generateHandler appends the helpers' source (EmailSender from teleport-shared,
|
|
8
9
|
// the recipients helper beside this file).
|
|
@@ -11,6 +12,15 @@ declare function __emailRecipients(to: unknown): unknown[]
|
|
|
11
12
|
declare function __emailDeliveries(plan: EmailDeliveriesPlan): Promise<unknown>
|
|
12
13
|
|
|
13
14
|
async function email_resend(config: any, context: Record<string, unknown>) {
|
|
15
|
+
// Line breaks out of every header; a visitor-supplied recipient counted
|
|
16
|
+
// (see outbound-message-guard).
|
|
17
|
+
const refused = await __outboundMessageGuard('email', config, context)
|
|
18
|
+
if (refused) {
|
|
19
|
+
// Over a limit: skipped, not failed, so the visitor's action goes on.
|
|
20
|
+
return refused.skipped
|
|
21
|
+
? { id: '', skipped: true, reason: refused.skipped }
|
|
22
|
+
: { id: '', success: false, error: refused.error }
|
|
23
|
+
}
|
|
14
24
|
const apiKey = config.apiKey
|
|
15
25
|
const from = config.from
|
|
16
26
|
const fromName = config.fromName
|
|
@@ -73,14 +83,9 @@ export const emailResend: NodeHandlerGenerator = {
|
|
|
73
83
|
dependencies: {
|
|
74
84
|
resend: '^4.0.0',
|
|
75
85
|
},
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
'\n' +
|
|
82
|
-
EMAIL_RECIPIENTS_HELPER_SOURCE,
|
|
83
|
-
'email-resend'
|
|
84
|
-
)
|
|
85
|
-
},
|
|
86
|
+
...outboundMessageHandlerSources(email_resend, {
|
|
87
|
+
nodeType: 'email-resend',
|
|
88
|
+
extraSource:
|
|
89
|
+
EmailSender.generateEmailSenderHelperCode() + '\n' + EMAIL_RECIPIENTS_HELPER_SOURCE,
|
|
90
|
+
}),
|
|
86
91
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { EmailSender } from '@teleporthq/teleport-shared'
|
|
2
|
-
import { NodeHandlerGenerator
|
|
3
|
-
import {
|
|
2
|
+
import { NodeHandlerGenerator } from '../types'
|
|
3
|
+
import { outboundMessageHandlerSources } from './outbound-message-guard'
|
|
4
4
|
import { EMAIL_RECIPIENTS_HELPER_SOURCE, EmailDeliveriesPlan } from './email-recipients'
|
|
5
5
|
|
|
6
|
+
declare function __outboundMessageGuard(channel: string, config: any, context: any): Promise<any>
|
|
6
7
|
// Ambient, not imported: a serialized handler has no module scope, so
|
|
7
8
|
// generateHandler appends the helpers' source (EmailSender from teleport-shared,
|
|
8
9
|
// the recipients helper beside this file).
|
|
@@ -11,6 +12,15 @@ declare function __emailRecipients(to: unknown): unknown[]
|
|
|
11
12
|
declare function __emailDeliveries(plan: EmailDeliveriesPlan): Promise<unknown>
|
|
12
13
|
|
|
13
14
|
async function email_sendgrid(config: any, context: Record<string, unknown>) {
|
|
15
|
+
// Line breaks out of every header; a visitor-supplied recipient counted
|
|
16
|
+
// (see outbound-message-guard).
|
|
17
|
+
const refused = await __outboundMessageGuard('email', config, context)
|
|
18
|
+
if (refused) {
|
|
19
|
+
// Over a limit: skipped, not failed, so the visitor's action goes on.
|
|
20
|
+
return refused.skipped
|
|
21
|
+
? { messageId: '', skipped: true, reason: refused.skipped }
|
|
22
|
+
: { messageId: '', success: false, error: refused.error }
|
|
23
|
+
}
|
|
14
24
|
const apiKey = config.apiKey
|
|
15
25
|
const from = config.from
|
|
16
26
|
const fromName = config.fromName
|
|
@@ -86,14 +96,9 @@ export const emailSendgrid: NodeHandlerGenerator = {
|
|
|
86
96
|
dependencies: {
|
|
87
97
|
'@sendgrid/mail': '^8.0.0',
|
|
88
98
|
},
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
'\n' +
|
|
95
|
-
EMAIL_RECIPIENTS_HELPER_SOURCE,
|
|
96
|
-
'email-sendgrid'
|
|
97
|
-
)
|
|
98
|
-
},
|
|
99
|
+
...outboundMessageHandlerSources(email_sendgrid, {
|
|
100
|
+
nodeType: 'email-sendgrid',
|
|
101
|
+
extraSource:
|
|
102
|
+
EmailSender.generateEmailSenderHelperCode() + '\n' + EMAIL_RECIPIENTS_HELPER_SOURCE,
|
|
103
|
+
}),
|
|
99
104
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTML escaping for the values an email template is filled with, as emitted
|
|
3
|
+
* JavaScript. It is idempotent: an `&` that already starts a character
|
|
4
|
+
* reference (`&name;`, `{`, ``) is left as it is, every other `&`,
|
|
5
|
+
* `<` and `>` is escaped once. A value that arrives already escaped (the
|
|
6
|
+
* lifecycle token scripts escape their tokens) is therefore not escaped a
|
|
7
|
+
* second time, and a reference can only ever render as a character, never as
|
|
8
|
+
* markup, so leaving one in place is safe.
|
|
9
|
+
*
|
|
10
|
+
* - `escapeHtmlValueJs(expr)`: for an email HTML body, where a value can sit
|
|
11
|
+
* inside an attribute (`href="{{url}}"`): quotes are escaped too.
|
|
12
|
+
* - `escapeHtmlTextJs(expr)`: for a value that lands in text (a rich-text
|
|
13
|
+
* placeholder, a list item): `& < >` only, as before.
|
|
14
|
+
*/
|
|
15
|
+
const BARE_AMPERSAND = '/&(?!(?:[a-zA-Z][a-zA-Z0-9]{1,31}|#[0-9]{1,7}|#[xX][0-9a-fA-F]{1,6});)/g'
|
|
16
|
+
|
|
17
|
+
export const escapeHtmlTextJs = (expression: string): string =>
|
|
18
|
+
`${expression}.replace(${BARE_AMPERSAND}, '&').replace(/</g, '<').replace(/>/g, '>')`
|
|
19
|
+
|
|
20
|
+
export const escapeHtmlValueJs = (expression: string): string =>
|
|
21
|
+
`${escapeHtmlTextJs(expression)}.replace(/"/g, '"').replace(/'/g, ''')`
|