@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
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { EventEmitter } from 'events'
|
|
2
|
+
import { Readable } from 'stream'
|
|
3
|
+
|
|
1
4
|
export interface FetchCall {
|
|
2
5
|
url: string
|
|
3
6
|
method: string
|
|
@@ -94,3 +97,75 @@ export const withEnv = async <T>(
|
|
|
94
97
|
}
|
|
95
98
|
}
|
|
96
99
|
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* `dns`, `http` and `https` for a generated route under test, answered by the
|
|
103
|
+
* fake `globalThis.fetch` the test installed (see `withFetch`).
|
|
104
|
+
*
|
|
105
|
+
* The general-http-request node never calls `fetch`: it connects through its
|
|
106
|
+
* own DNS lookup and `http(s).request`, so it can refuse private addresses on
|
|
107
|
+
* the address it actually connects to. A route `require`-shim that answers
|
|
108
|
+
* these three ids from here lets that node reach the test's fake fetch, with
|
|
109
|
+
* every name resolving to one public address.
|
|
110
|
+
*/
|
|
111
|
+
export const FETCH_BACKED_NETWORK: Record<string, unknown> = (() => {
|
|
112
|
+
const PUBLIC_ADDRESS = { address: '93.184.216.34', family: 4 }
|
|
113
|
+
const dns = {
|
|
114
|
+
lookup(_hostname: string, options: any, callback: any) {
|
|
115
|
+
if (options && options.all) {
|
|
116
|
+
callback(null, [PUBLIC_ADDRESS])
|
|
117
|
+
} else {
|
|
118
|
+
callback(null, PUBLIC_ADDRESS.address, PUBLIC_ADDRESS.family)
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
}
|
|
122
|
+
const transport = (protocol: string) => ({
|
|
123
|
+
request(options: any, onResponse: (res: any) => void) {
|
|
124
|
+
const req: any = new EventEmitter()
|
|
125
|
+
const chunks: Buffer[] = []
|
|
126
|
+
req.write = (chunk: unknown) => {
|
|
127
|
+
chunks.push(Buffer.from(chunk as string))
|
|
128
|
+
return true
|
|
129
|
+
}
|
|
130
|
+
req.destroy = (): void => undefined
|
|
131
|
+
req.end = () => {
|
|
132
|
+
options.lookup(options.hostname, { all: true }, async (err: unknown) => {
|
|
133
|
+
if (err) {
|
|
134
|
+
req.emit('error', err)
|
|
135
|
+
return
|
|
136
|
+
}
|
|
137
|
+
try {
|
|
138
|
+
const port = options.port ? ':' + options.port : ''
|
|
139
|
+
const headers: Record<string, string> = {}
|
|
140
|
+
Object.keys(options.headers || {}).forEach((key) => {
|
|
141
|
+
headers[key] = String(options.headers[key])
|
|
142
|
+
})
|
|
143
|
+
const answer = await (globalThis as any).fetch(
|
|
144
|
+
protocol + '//' + options.hostname + port + options.path,
|
|
145
|
+
{
|
|
146
|
+
method: options.method,
|
|
147
|
+
headers,
|
|
148
|
+
body: chunks.length > 0 ? Buffer.concat(chunks).toString('utf8') : undefined,
|
|
149
|
+
}
|
|
150
|
+
)
|
|
151
|
+
const text = answer && typeof answer.text === 'function' ? await answer.text() : ''
|
|
152
|
+
const res: any = Readable.from(text ? [Buffer.from(text)] : [])
|
|
153
|
+
res.statusCode = answer.status
|
|
154
|
+
res.statusMessage = ''
|
|
155
|
+
res.headers = {}
|
|
156
|
+
if (answer.headers && typeof answer.headers.forEach === 'function') {
|
|
157
|
+
answer.headers.forEach((value: string, key: string) => {
|
|
158
|
+
res.headers[String(key).toLowerCase()] = value
|
|
159
|
+
})
|
|
160
|
+
}
|
|
161
|
+
onResponse(res)
|
|
162
|
+
} catch (fetchError) {
|
|
163
|
+
req.emit('error', fetchError)
|
|
164
|
+
}
|
|
165
|
+
})
|
|
166
|
+
}
|
|
167
|
+
return req
|
|
168
|
+
},
|
|
169
|
+
})
|
|
170
|
+
return { dns, http: transport('http:'), https: transport('https:') }
|
|
171
|
+
})()
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// The place-order statements exactly as the editor bakes them
|
|
2
|
+
// (apps/gui/.../builders/ecommerce/order-redemption-helper.ts,
|
|
3
|
+
// order-side-effects-helper.ts and settle-unpaid-order-custom-node.ts, read out of the editor on 2026-10-25). The
|
|
4
|
+
// export-time guards recognise these shapes, so a change to the editor's
|
|
5
|
+
// statements must keep matching them (the editor carries the mirror spec).
|
|
6
|
+
|
|
7
|
+
export const GUI_ORDER_REDEMPTION_QUERY =
|
|
8
|
+
"WITH locked_voucher AS (\n SELECT v.id, v.code, v.usage_limit, v.usage_count, (to_jsonb(v) ->> 'per_customer_limit')::int AS per_customer_limit\n FROM teleport_vouchers v\n WHERE COALESCE($1::text, '') <> '' AND v.id::text = $1::text\n FOR UPDATE\n),\nlocked_card AS (\n SELECT g.id, g.balance, g.status, g.expires_at, g.currency\n FROM teleport_gift_cards g\n WHERE COALESCE($8::text, '') <> '' AND g.id::text = $8::text\n FOR UPDATE\n),\nverdict AS (\n SELECT\n (COALESCE($1::text, '') = '' OR EXISTS (\n SELECT 1 FROM locked_voucher lv\n WHERE (lv.usage_limit IS NULL OR lv.usage_count < lv.usage_limit)\n AND (lv.per_customer_limit IS NULL\n OR (SELECT COUNT(*) FROM teleport_voucher_redemptions r\n WHERE r.voucher_id = lv.id\n AND (r.user_id::text = $3::text\n OR ($4::text <> '' AND r.user_id::text = $4::text)\n OR ($5::text <> '' AND LOWER(COALESCE(r.billing_email, '')) = LOWER($5::text)))) < lv.per_customer_limit)\n )) AS voucher_ok,\n (COALESCE($8::text, '') = '' OR EXISTS (\n SELECT 1 FROM locked_card lc\n WHERE lc.status = 'active'\n AND (lc.expires_at IS NULL OR lc.expires_at > NOW())\n AND $9::numeric > 0\n AND lc.balance >= $9::numeric\n AND UPPER(COALESCE(lc.currency, '')) = UPPER(COALESCE((SELECT oc.currency FROM teleport_orders oc WHERE oc.id::text = $2::text), ''))\n )) AS gift_card_ok\n),\nok AS (SELECT voucher_ok AND gift_card_ok AS ok FROM verdict),\nbump AS (\n UPDATE teleport_vouchers\n SET usage_count = usage_count + 1, updated_at = NOW()\n WHERE (SELECT ok FROM ok)\n AND COALESCE($1::text, '') <> ''\n AND id::text = $1::text\n AND (usage_limit IS NULL OR usage_count < usage_limit)\n RETURNING id, code\n),\nredemption AS (\n INSERT INTO teleport_voucher_redemptions\n (voucher_id, order_id, voucher_code, user_id, billing_email, discount_amount, item_product_ids)\n SELECT\n bump.id,\n ($2::text)::uuid,\n bump.code,\n NULLIF($3::text, '')::uuid,\n NULLIF($5::text, ''),\n $6::numeric,\n NULLIF($7::text, '')\n FROM bump\n RETURNING id\n),\ndebit AS (\n UPDATE teleport_gift_cards g\n SET balance = g.balance - $9::numeric, updated_at = NOW()\n WHERE (SELECT ok FROM ok)\n AND COALESCE($8::text, '') <> ''\n AND g.id::text = $8::text\n AND g.status = 'active'\n AND (g.expires_at IS NULL OR g.expires_at > NOW())\n AND $9::numeric > 0\n AND g.balance >= $9::numeric\n AND UPPER(COALESCE(g.currency, '')) = UPPER(COALESCE((SELECT oc.currency FROM teleport_orders oc WHERE oc.id::text = $2::text), ''))\n RETURNING g.id, right(g.code, 4) AS last4, g.balance\n),\nledger AS (\n INSERT INTO teleport_gift_card_transactions\n (gift_card_id, order_id, type, amount, balance_after, dedupe_key, note)\n SELECT\n debit.id,\n ($2::text)::uuid,\n 'redeem',\n -($9::numeric),\n debit.balance,\n 'redeem:' || $2::text,\n 'Redeemed at checkout'\n FROM debit\n RETURNING id\n),\norder_update AS (\n UPDATE teleport_orders o\n SET gift_card_amount = $9::numeric, gift_card_id = debit.id, gift_card_last4 = debit.last4, updated_at = NOW()\n FROM debit\n WHERE o.id = ($2::text)::uuid\n RETURNING o.id\n)\nSELECT\n (SELECT ok FROM ok) AS ok,\n (SELECT COUNT(*) FROM redemption) AS voucher_redeemed,\n (SELECT COUNT(*) FROM ledger) AS gift_card_debited"
|
|
9
|
+
|
|
10
|
+
export const GUI_SETTLE_ORDER_QUERY =
|
|
11
|
+
"WITH tender AS (\n SELECT COALESCE(-SUM(t.amount), 0) AS debited\n FROM teleport_gift_card_transactions t\n WHERE t.dedupe_key = 'redeem:' || $1::text\n)\nUPDATE teleport_orders o\nSET status = 'confirmed',\n payment_status = CASE WHEN (SELECT debited FROM tender) > 0 AND o.total_amount - (SELECT debited FROM tender) <= 0\n THEN 'paid' ELSE 'pending' END,\n payment_method = CASE WHEN (SELECT debited FROM tender) > 0 AND o.total_amount - (SELECT debited FROM tender) <= 0\n THEN 'gift_card' ELSE 'cash_on_delivery' END,\n payment_provider = '',\n order_number = $2::text,\n updated_at = NOW()\nWHERE o.id::text = $1::text\n AND o.status = 'pending'\nRETURNING o.id, o.payment_status, o.payment_method"
|
|
12
|
+
|
|
13
|
+
export const GUI_STOCK_DECREMENT_QUERY =
|
|
14
|
+
'WITH product_decrement AS ( UPDATE teleport_products AS p SET quantity = p.quantity - d.qty, updated_at = NOW() FROM unnest($1::text[], $2::int[]) AS d(id, qty) WHERE p.quantity IS NOT NULL AND p.id::text = d.id AND p.quantity >= d.qty ) UPDATE teleport_product_variants AS v SET quantity = v.quantity - d.qty, updated_at = NOW() FROM unnest($3::text[], $4::int[]) AS d(id, qty) WHERE v.quantity IS NOT NULL AND v.id::text = d.id AND v.quantity >= d.qty'
|
|
15
|
+
|
|
16
|
+
export const GUI_SETTLE_UNPAID_ORDER_QUERY =
|
|
17
|
+
"WITH target AS (\n SELECT o.id,\n LOWER(COALESCE(o.payment_status, '')) AS payment_status,\n LOWER(COALESCE(o.status, '')) AS status,\n LOWER(COALESCE(o.payment_method, '')) AS payment_method,\n (CASE WHEN COALESCE(to_jsonb(o) ->> 'payment_attempt_ref', '') <> ''\n THEN NOT (split_part(to_jsonb(o) ->> 'payment_attempt_ref', ':', 1) = ANY(string_to_array(COALESCE(NULLIF($4::text, ''), $3::text), ',')))\n ELSE COALESCE(o.payment_intent_id, '') <> '' AND NOT (o.payment_intent_id = ANY(string_to_array(COALESCE(NULLIF($4::text, ''), $3::text), ',')))\n END) AS stale,\n (COALESCE(to_jsonb(o) ->> 'provider_invoice_id', '') LIKE 'store:%') AS store_renewal\n FROM teleport_orders o\n WHERE $1::text <> '' AND o.id::text = $1::text\n FOR UPDATE\n),\nawaiting AS (\n UPDATE teleport_orders o\n SET payment_status = 'awaiting_confirmation',\n payment_intent_id = COALESCE(NULLIF($3::text, ''), o.payment_intent_id),\n updated_at = NOW()\n FROM target t\n WHERE o.id = t.id AND $2::text = 'awaiting'\n AND t.payment_status IN ('', 'unpaid', 'pending')\n AND t.status IN ('', 'pending')\n AND t.payment_method NOT IN ('cash_on_delivery', 'cod', 'cash', 'store_pickup', 'pickup')\n RETURNING o.id\n),\nreleased AS (\n UPDATE teleport_orders o\n SET payment_status = 'failed', status = 'cancelled', updated_at = NOW()\n FROM target t\n WHERE o.id = t.id AND $2::text IN ('failed', 'expired', 'cancelled')\n AND t.payment_status IN ('', 'unpaid', 'pending', 'awaiting_confirmation')\n AND t.status IN ('', 'pending')\n AND t.payment_method NOT IN ('cash_on_delivery', 'cod', 'cash', 'store_pickup', 'pickup')\n AND NOT t.stale AND NOT t.store_renewal\n RETURNING o.id, o.currency\n),\ndropped AS (\n UPDATE teleport_orders o\n SET payment_status = 'failed', updated_at = NOW()\n FROM target t\n WHERE o.id = t.id AND $2::text IN ('failed', 'expired', 'cancelled')\n AND t.payment_status = 'awaiting_confirmation' AND t.status = 'cancelled'\n AND t.payment_method NOT IN ('cash_on_delivery', 'cod', 'cash', 'store_pickup', 'pickup')\n AND NOT t.stale AND NOT t.store_renewal\n RETURNING o.id\n),\nreopened AS (\n UPDATE teleport_orders o\n SET payment_status = 'unpaid', updated_at = NOW()\n FROM target t\n WHERE o.id = t.id AND $2::text IN ('failed', 'expired', 'cancelled')\n AND t.store_renewal AND NOT t.stale AND t.payment_status = 'awaiting_confirmation'\n AND t.status IN ('', 'pending')\n RETURNING o.id\n),\nlines AS (\n SELECT oi.product_id::text AS product_id, NULLIF(COALESCE(oi.variant_id::text, ''), '') AS variant_id, oi.quantity\n FROM teleport_order_items oi JOIN released r ON oi.order_id = r.id\n WHERE oi.quantity > 0\n),\nproduct_restore AS (\n UPDATE teleport_products p SET quantity = p.quantity + d.qty, updated_at = NOW()\n FROM (SELECT product_id AS id, SUM(quantity)::int AS qty FROM lines\n WHERE variant_id IS NULL AND product_id IS NOT NULL GROUP BY product_id) d\n WHERE p.quantity IS NOT NULL AND p.id::text = d.id\n RETURNING p.id\n),\nvariant_restore AS (\n UPDATE teleport_product_variants v SET quantity = v.quantity + d.qty, updated_at = NOW()\n FROM (SELECT variant_id AS id, SUM(quantity)::int AS qty FROM lines\n WHERE variant_id IS NOT NULL GROUP BY variant_id) d\n WHERE v.quantity IS NOT NULL AND v.id::text = d.id\n RETURNING v.id\n)\nSELECT\n (SELECT COUNT(*) FROM awaiting) AS awaiting,\n (SELECT COUNT(*) FROM released) AS released,\n (SELECT COUNT(*) FROM dropped) AS dropped,\n (SELECT COUNT(*) FROM reopened) AS reopened,\n (SELECT COALESCE(SUM(quantity), 0) FROM lines) AS units,\n (SELECT COUNT(*) FROM product_restore) + (SELECT COUNT(*) FROM variant_restore) AS restocked_rows,\n (SELECT currency FROM released) AS currency"
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How `after` differs from `before`, line by line, when it may only ADD:
|
|
3
|
+
* `kept` is false when a line of `before` was removed or changed (it is not a
|
|
4
|
+
* subsequence of `after`), and `inserted` holds the lines `after` added.
|
|
5
|
+
*/
|
|
6
|
+
export const insertedLines = (
|
|
7
|
+
before: string,
|
|
8
|
+
after: string
|
|
9
|
+
): { kept: boolean; inserted: string[] } => {
|
|
10
|
+
const original = before.split('\n')
|
|
11
|
+
const changed = after.split('\n')
|
|
12
|
+
const inserted: string[] = []
|
|
13
|
+
let next = 0
|
|
14
|
+
for (const line of changed) {
|
|
15
|
+
if (next < original.length && line === original[next]) {
|
|
16
|
+
next++
|
|
17
|
+
} else {
|
|
18
|
+
inserted.push(line)
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return { kept: next === original.length, inserted }
|
|
22
|
+
}
|
|
@@ -180,6 +180,15 @@ export function openStore(options: { emailDelivery?: boolean } = {}): Store {
|
|
|
180
180
|
if (id === 'next-auth/jwt') {
|
|
181
181
|
return { getToken: async () => ({ id: 'admin-1', role: 'admin' }) }
|
|
182
182
|
}
|
|
183
|
+
if (/(^|\/)security-runtime$/.test(id)) {
|
|
184
|
+
return {
|
|
185
|
+
safeEqual: (given: unknown, expected: unknown) =>
|
|
186
|
+
typeof given === 'string' &&
|
|
187
|
+
typeof expected === 'string' &&
|
|
188
|
+
given !== '' &&
|
|
189
|
+
given === expected,
|
|
190
|
+
}
|
|
191
|
+
}
|
|
183
192
|
const name = id.split('/').pop() as string
|
|
184
193
|
if (sources[name] !== undefined) {
|
|
185
194
|
if (!(name in loaded)) {
|
|
@@ -224,7 +233,7 @@ export function openStore(options: { emailDelivery?: boolean } = {}): Store {
|
|
|
224
233
|
'x-forwarded-proto': 'https',
|
|
225
234
|
'x-teleport-locale': 'de',
|
|
226
235
|
referer: 'https://shop.test/de/admin/invoices',
|
|
227
|
-
cookie: 'next-auth.session-token=abc; NEXT_LOCALE=de',
|
|
236
|
+
cookie: '__Host-next-auth.session-token=abc; NEXT_LOCALE=de',
|
|
228
237
|
}
|
|
229
238
|
|
|
230
239
|
const store: Store = {
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import * as nodeCrypto from 'crypto'
|
|
2
|
+
import * as net from 'net'
|
|
3
|
+
import { generateSecurityRuntimeCode } from '../../src/security-runtime/security-runtime-code'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* A generated file's `require` of the shared security runtime
|
|
7
|
+
* (`utils/security-runtime.js`), from whatever folder it sits in.
|
|
8
|
+
*/
|
|
9
|
+
export const isSecurityRuntimeSpecifier = (name: string): boolean =>
|
|
10
|
+
/(^|\/)utils\/security-runtime$/.test(name)
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* One app instance's `utils/security-runtime.js` with no database: it counts
|
|
14
|
+
* rate limits in memory and logs nothing. What a spec's `require` shim answers
|
|
15
|
+
* for `isSecurityRuntimeSpecifier` (the data routes compare the app secret
|
|
16
|
+
* with its `safeEqual`).
|
|
17
|
+
*/
|
|
18
|
+
export const loadSecurityRuntime = (): any => {
|
|
19
|
+
const module = { exports: {} as any }
|
|
20
|
+
const quiet = {
|
|
21
|
+
warn: (): void => undefined,
|
|
22
|
+
error: (): void => undefined,
|
|
23
|
+
log: (): void => undefined,
|
|
24
|
+
}
|
|
25
|
+
const requireShim = (id: string): unknown => {
|
|
26
|
+
if (id === 'crypto') {
|
|
27
|
+
return nodeCrypto
|
|
28
|
+
}
|
|
29
|
+
if (id === 'net') {
|
|
30
|
+
return net
|
|
31
|
+
}
|
|
32
|
+
throw new Error("Cannot find module '" + id + "'")
|
|
33
|
+
}
|
|
34
|
+
// eslint-disable-next-line no-new-func
|
|
35
|
+
new Function(
|
|
36
|
+
'module',
|
|
37
|
+
'exports',
|
|
38
|
+
'require',
|
|
39
|
+
'process',
|
|
40
|
+
'console',
|
|
41
|
+
'Buffer',
|
|
42
|
+
generateSecurityRuntimeCode()
|
|
43
|
+
)(module, module.exports, requireShim, { env: {} }, quiet, Buffer)
|
|
44
|
+
return module.exports
|
|
45
|
+
}
|
|
@@ -2,13 +2,33 @@ import * as crypto from 'crypto'
|
|
|
2
2
|
import { generateSharedRuntimeUtilsCode } from '../../src/executor-generator'
|
|
3
3
|
import { generateServerRuntimeCode } from '../../src/server-runtime-code'
|
|
4
4
|
|
|
5
|
+
export interface ServerRuntimeOptions {
|
|
6
|
+
/**
|
|
7
|
+
* next-auth's `getToken`, for a runtime that decodes the visitor's session
|
|
8
|
+
* cookie. Without it `next-auth/jwt` is absent and every visitor is a guest.
|
|
9
|
+
*/
|
|
10
|
+
getToken?: (params: { req: unknown }) => unknown
|
|
11
|
+
/**
|
|
12
|
+
* Packages a project may have installed (`@vercel/functions`). Any other
|
|
13
|
+
* require is missing. A plain module map (no `getToken`) is accepted as this.
|
|
14
|
+
*/
|
|
15
|
+
modules?: Record<string, unknown>
|
|
16
|
+
}
|
|
17
|
+
|
|
5
18
|
/**
|
|
6
19
|
* The generated `utils/workflows/server-runtime.js` exactly as a route loads
|
|
7
20
|
* it: the shared runtime utilities plus the server-only signed hand-off,
|
|
8
|
-
* internal-call token and trusted base URL.
|
|
9
|
-
* project may have installed (`@vercel/functions`); any other is missing.
|
|
21
|
+
* session identity, internal-call token and trusted base URL.
|
|
10
22
|
*/
|
|
11
|
-
export function loadServerRuntime(
|
|
23
|
+
export function loadServerRuntime(
|
|
24
|
+
options: ServerRuntimeOptions | Record<string, unknown> = {}
|
|
25
|
+
): Record<string, any> {
|
|
26
|
+
const asOptions = options as ServerRuntimeOptions
|
|
27
|
+
const named =
|
|
28
|
+
typeof asOptions.getToken === 'function' ||
|
|
29
|
+
(asOptions.modules != null && typeof asOptions.modules === 'object')
|
|
30
|
+
const getToken = named ? asOptions.getToken : undefined
|
|
31
|
+
const modules = named ? asOptions.modules || {} : (options as Record<string, unknown>)
|
|
12
32
|
const shared: { exports: Record<string, unknown> } = { exports: {} }
|
|
13
33
|
// eslint-disable-next-line @typescript-eslint/no-implied-eval
|
|
14
34
|
new Function('module', 'exports', generateSharedRuntimeUtilsCode())(shared, shared.exports)
|
|
@@ -20,6 +40,9 @@ export function loadServerRuntime(modules: Record<string, unknown> = {}): Record
|
|
|
20
40
|
if (id === './runtime-utils') {
|
|
21
41
|
return shared.exports
|
|
22
42
|
}
|
|
43
|
+
if (id === 'next-auth/jwt' && getToken) {
|
|
44
|
+
return { getToken }
|
|
45
|
+
}
|
|
23
46
|
if (id in modules) {
|
|
24
47
|
return modules[id]
|
|
25
48
|
}
|
|
@@ -129,7 +129,9 @@ export const runAccountDeleteRoute = async (setup: DeleteRouteSetup): Promise<De
|
|
|
129
129
|
await handler(
|
|
130
130
|
{
|
|
131
131
|
method: 'POST',
|
|
132
|
-
|
|
132
|
+
// No host: the request is local http, so the plain session cookie is the
|
|
133
|
+
// one the reader accepts. getToken is stubbed and ignores its value.
|
|
134
|
+
headers: { cookie: 'next-auth.session-token=signed' },
|
|
133
135
|
...(setup.requestBody === undefined ? {} : { body: setup.requestBody }),
|
|
134
136
|
},
|
|
135
137
|
res
|
|
@@ -140,7 +140,12 @@ export const compileGeneratedMiddleware = (
|
|
|
140
140
|
): Promise<MiddlewareResult> => {
|
|
141
141
|
const origin = options.origin || 'https://shop.test'
|
|
142
142
|
const sessionUser = options.sessionUser ?? null
|
|
143
|
-
|
|
143
|
+
// The session cookie the site sets for the origin's protocol (see the auth options).
|
|
144
|
+
const sessionCookie =
|
|
145
|
+
origin.indexOf('https://') === 0
|
|
146
|
+
? '__Host-next-auth.session-token'
|
|
147
|
+
: 'next-auth.session-token'
|
|
148
|
+
const cookieHeader = sessionUser ? `${sessionCookie}=stub` : ''
|
|
144
149
|
const subscriberAccess: SubscriberAccessStub = options.subscriberAccess ?? { entitled: false }
|
|
145
150
|
|
|
146
151
|
const fetchImpl = async (url: string, init?: { headers?: { cookie?: string } }) => {
|
|
@@ -168,7 +173,7 @@ export const compileGeneratedMiddleware = (
|
|
|
168
173
|
url: `${origin}${localePrefix}${pathname}`,
|
|
169
174
|
cookies: {
|
|
170
175
|
get: (name: string) =>
|
|
171
|
-
sessionUser && name ===
|
|
176
|
+
sessionUser && name === sessionCookie ? { name, value: 'stub' } : undefined,
|
|
172
177
|
},
|
|
173
178
|
headers: { get: (name: string) => (name === 'cookie' ? cookieHeader : '') },
|
|
174
179
|
})
|
|
@@ -185,7 +185,9 @@ const runRoute = async (schema: FixtureSchema, refuse: Refuse = () => null): Pro
|
|
|
185
185
|
return res
|
|
186
186
|
},
|
|
187
187
|
}
|
|
188
|
-
|
|
188
|
+
// No host: the request is local http, so the plain session cookie is the one
|
|
189
|
+
// the reader accepts. getToken is stubbed and ignores its value.
|
|
190
|
+
await handler({ method: 'POST', headers: { cookie: 'next-auth.session-token=signed' } }, res)
|
|
189
191
|
return run
|
|
190
192
|
}
|
|
191
193
|
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// The native-listener form of an element trigger (`generateTriggerCode`), as the
|
|
2
|
+
// editor exports it for a navigation element the Instant search plugin adopted:
|
|
3
|
+
// a click on a linked control, and the submit of a search form, both with
|
|
4
|
+
// `preventDefault` + `stopPropagation`.
|
|
5
|
+
//
|
|
6
|
+
// `generateTriggerCode` has NO production caller: what a published site runs are
|
|
7
|
+
// the React props `workflow-component-plugin.ts` puts on the element, proven in
|
|
8
|
+
// `adopted-navigation-element-end2end.test.ts` (and, for a form whose submissions
|
|
9
|
+
// the platform stores, `adopted-search-form-submission-end2end.test.ts`) in the
|
|
10
|
+
// Next project generator. This file only pins the same contract on the exported
|
|
11
|
+
// function, for whoever wires it again: the listener is attached to the element
|
|
12
|
+
// found by its published html id (never the editor's internal node id), cancels
|
|
13
|
+
// the default action and the bubbling BEFORE the workflow runs, and does so only
|
|
14
|
+
// when the trigger asked.
|
|
15
|
+
|
|
16
|
+
import type { UIDLWorkflow } from '@teleporthq/teleport-types'
|
|
17
|
+
import { generateTriggerCode } from '../src/trigger-generator'
|
|
18
|
+
|
|
19
|
+
const HTML_ID = 'nav-search-link'
|
|
20
|
+
const INTERNAL_NODE_ID = 'TQ_internal_node_id'
|
|
21
|
+
|
|
22
|
+
const workflowWith = (
|
|
23
|
+
type: 'event-element-clicked' | 'event-element-event',
|
|
24
|
+
config: Record<string, unknown>
|
|
25
|
+
): UIDLWorkflow =>
|
|
26
|
+
({
|
|
27
|
+
id: 'open-search',
|
|
28
|
+
name: 'Open the search',
|
|
29
|
+
trigger: {
|
|
30
|
+
nodeId: 'open-search-trigger',
|
|
31
|
+
type,
|
|
32
|
+
scope: 'element',
|
|
33
|
+
config: { nodeId: INTERNAL_NODE_ID, elementHtmlId: HTML_ID, ...config },
|
|
34
|
+
},
|
|
35
|
+
nodes: [],
|
|
36
|
+
edges: [],
|
|
37
|
+
} as unknown as UIDLWorkflow)
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Runs the generated statements against a fake document. Returns what the
|
|
41
|
+
* browser would have seen: which ids were looked up, which events got a
|
|
42
|
+
* listener, and the order of everything a dispatched event then did.
|
|
43
|
+
*/
|
|
44
|
+
const run = (workflow: UIDLWorkflow) => {
|
|
45
|
+
const listeners: Record<string, (event: unknown) => void> = {}
|
|
46
|
+
const lookups: string[] = []
|
|
47
|
+
const calls: string[] = []
|
|
48
|
+
|
|
49
|
+
const element = {
|
|
50
|
+
addEventListener: (type: string, handler: (event: unknown) => void) => {
|
|
51
|
+
listeners[type] = handler
|
|
52
|
+
},
|
|
53
|
+
removeEventListener: (): void => undefined,
|
|
54
|
+
}
|
|
55
|
+
const fakeDocument = {
|
|
56
|
+
getElementById: (id: string) => {
|
|
57
|
+
lookups.push(id)
|
|
58
|
+
return id === HTML_ID ? element : null
|
|
59
|
+
},
|
|
60
|
+
}
|
|
61
|
+
const runWorkflow = () => {
|
|
62
|
+
calls.push('workflow')
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const code = generateTriggerCode(workflow, 'runWorkflow')
|
|
66
|
+
// The statements end in a `return` of the cleanup, as they do inside the
|
|
67
|
+
// effect they are placed in.
|
|
68
|
+
// eslint-disable-next-line @typescript-eslint/no-implied-eval
|
|
69
|
+
const attach = new Function('document', 'window', 'runWorkflow', code)
|
|
70
|
+
const cleanup = attach(fakeDocument, {}, runWorkflow)
|
|
71
|
+
|
|
72
|
+
const dispatch = (type: string) => {
|
|
73
|
+
const event = {
|
|
74
|
+
preventDefault: () => calls.push('preventDefault'),
|
|
75
|
+
stopPropagation: () => calls.push('stopPropagation'),
|
|
76
|
+
target: {},
|
|
77
|
+
}
|
|
78
|
+
listeners[type](event)
|
|
79
|
+
}
|
|
80
|
+
return { code, listeners, lookups, calls, dispatch, cleanup }
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
describe('generateTriggerCode for an adopted navigation element', () => {
|
|
84
|
+
it('looks the control up by its published html id, never the editor node id', () => {
|
|
85
|
+
const { lookups, code } = run(
|
|
86
|
+
workflowWith('event-element-clicked', { preventDefault: true, stopPropagation: true })
|
|
87
|
+
)
|
|
88
|
+
expect(lookups).toEqual([HTML_ID])
|
|
89
|
+
expect(code).toContain(`document.getElementById('${HTML_ID}')`)
|
|
90
|
+
expect(code).not.toContain(INTERNAL_NODE_ID)
|
|
91
|
+
})
|
|
92
|
+
|
|
93
|
+
it('cancels the link, stops the bubbling, then runs the workflow on a click', () => {
|
|
94
|
+
const { listeners, calls, dispatch, cleanup } = run(
|
|
95
|
+
workflowWith('event-element-clicked', { preventDefault: true, stopPropagation: true })
|
|
96
|
+
)
|
|
97
|
+
expect(Object.keys(listeners)).toEqual(['click'])
|
|
98
|
+
|
|
99
|
+
dispatch('click')
|
|
100
|
+
expect(calls).toEqual(['preventDefault', 'stopPropagation', 'workflow'])
|
|
101
|
+
// And it unregisters with the effect.
|
|
102
|
+
expect(typeof cleanup).toBe('function')
|
|
103
|
+
})
|
|
104
|
+
|
|
105
|
+
it('cancels the form submit, stops the bubbling, then runs the workflow on a submit', () => {
|
|
106
|
+
const { listeners, calls, dispatch } = run(
|
|
107
|
+
workflowWith('event-element-event', {
|
|
108
|
+
eventType: 'submit',
|
|
109
|
+
preventDefault: true,
|
|
110
|
+
stopPropagation: true,
|
|
111
|
+
})
|
|
112
|
+
)
|
|
113
|
+
expect(Object.keys(listeners)).toEqual(['submit'])
|
|
114
|
+
|
|
115
|
+
dispatch('submit')
|
|
116
|
+
expect(calls).toEqual(['preventDefault', 'stopPropagation', 'workflow'])
|
|
117
|
+
})
|
|
118
|
+
|
|
119
|
+
it('leaves the default action and the bubbling alone when the trigger did not ask', () => {
|
|
120
|
+
const click = run(workflowWith('event-element-clicked', {}))
|
|
121
|
+
click.dispatch('click')
|
|
122
|
+
expect(click.calls).toEqual(['workflow'])
|
|
123
|
+
|
|
124
|
+
const submit = run(workflowWith('event-element-event', { eventType: 'submit' }))
|
|
125
|
+
submit.dispatch('submit')
|
|
126
|
+
expect(submit.calls).toEqual(['workflow'])
|
|
127
|
+
})
|
|
128
|
+
})
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { nodeRegistry } from '../src/nodes'
|
|
2
|
+
import { resolveHandlerEntryName } from '../src/nodes/types'
|
|
3
|
+
import { assertHandlerHasNoModuleRefs } from '../src/nodes/analytics/commerce-tracking'
|
|
4
|
+
import { TRACK_LEAD_SOURCE, TRACKER_IDS_EXPRESSION } from '../src/trigger-generator'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* `analytics-track-outcome` reports what a visit produced. One node, two
|
|
8
|
+
* bodies: the browser hands the outcome to the tracker, the server posts money
|
|
9
|
+
* outcomes with the server key. Both must stay free of module references (a
|
|
10
|
+
* handler is serialized) and must never throw into a checkout.
|
|
11
|
+
*/
|
|
12
|
+
const NODE_TYPE = 'analytics-track-outcome'
|
|
13
|
+
|
|
14
|
+
type Handler = (
|
|
15
|
+
config: Record<string, unknown>,
|
|
16
|
+
context: Record<string, unknown>
|
|
17
|
+
) => Promise<unknown>
|
|
18
|
+
|
|
19
|
+
function evalHandler(source: string, globals: Record<string, unknown>): Handler {
|
|
20
|
+
const entry = resolveHandlerEntryName(source, NODE_TYPE)
|
|
21
|
+
const names = Object.keys(globals)
|
|
22
|
+
// tslint:disable-next-line:function-constructor
|
|
23
|
+
const factory = new Function(...names, `${source}\nreturn ${entry};`)
|
|
24
|
+
return factory(...names.map((name) => globals[name]))
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
describe('analytics-track-outcome node', () => {
|
|
28
|
+
const generator = nodeRegistry[NODE_TYPE]
|
|
29
|
+
|
|
30
|
+
it('is registered as universal with a client and a server body free of module refs', () => {
|
|
31
|
+
expect(generator).toBeDefined()
|
|
32
|
+
expect(generator.executionEnv).toBe('universal')
|
|
33
|
+
expect(() => assertHandlerHasNoModuleRefs(generator.generateHandler(), NODE_TYPE)).not.toThrow()
|
|
34
|
+
expect(() =>
|
|
35
|
+
assertHandlerHasNoModuleRefs(generator.generateServerHandler?.() ?? '', NODE_TYPE)
|
|
36
|
+
).not.toThrow()
|
|
37
|
+
expect(resolveHandlerEntryName(generator.generateHandler(), NODE_TYPE)).toBe(
|
|
38
|
+
'analytics_track_outcome'
|
|
39
|
+
)
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
it('client: hands a browser outcome to the tracker and refuses money names', async () => {
|
|
43
|
+
const tracked: unknown[] = []
|
|
44
|
+
const handler = evalHandler(generator.generateHandler(), {
|
|
45
|
+
window: {
|
|
46
|
+
tpAnalytics: { track: (name: string, detail: unknown) => tracked.push([name, detail]) },
|
|
47
|
+
},
|
|
48
|
+
})
|
|
49
|
+
expect(await handler({ name: 'lead', recordId: 'form-1' }, {})).toEqual({ sent: true })
|
|
50
|
+
expect(tracked).toEqual([['lead', expect.objectContaining({ recordId: 'form-1' })]])
|
|
51
|
+
expect(await handler({ name: 'purchase', value: 10 }, {})).toEqual({
|
|
52
|
+
sent: false,
|
|
53
|
+
reason: 'server-only',
|
|
54
|
+
})
|
|
55
|
+
expect(tracked).toHaveLength(1)
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
it('client: is a silent no-op without the tracker', async () => {
|
|
59
|
+
const handler = evalHandler(generator.generateHandler(), { window: {} })
|
|
60
|
+
expect(await handler({ name: 'newsletter' }, {})).toEqual({
|
|
61
|
+
sent: false,
|
|
62
|
+
reason: 'tracker-unavailable',
|
|
63
|
+
})
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
it('server: posts the outcome with the server key and the ids the trigger stamped', async () => {
|
|
67
|
+
const calls: Array<{ url: string; init: { headers: Record<string, string>; body: string } }> =
|
|
68
|
+
[]
|
|
69
|
+
const handler = evalHandler(generator.generateServerHandler?.() ?? '', {
|
|
70
|
+
globalThis: {
|
|
71
|
+
process: {
|
|
72
|
+
env: {
|
|
73
|
+
NEXT_PUBLIC_TELEPORT_ANALYTICS_URL: 'https://analytics.example/',
|
|
74
|
+
NEXT_PUBLIC_TELEPORT_ANALYTICS_KEY: 'tpa_key',
|
|
75
|
+
TELEPORT_ANALYTICS_SERVER_KEY: 'tpas_secret',
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
fetch: (url: string, init: { headers: Record<string, string>; body: string }) => {
|
|
80
|
+
calls.push({ url, init })
|
|
81
|
+
return Promise.resolve({ status: 202 })
|
|
82
|
+
},
|
|
83
|
+
AbortController: undefined,
|
|
84
|
+
})
|
|
85
|
+
const result = await handler(
|
|
86
|
+
{
|
|
87
|
+
name: 'purchase',
|
|
88
|
+
value: '49.90',
|
|
89
|
+
currency: 'EUR',
|
|
90
|
+
outcomeId: 'ord-1',
|
|
91
|
+
attribution: { utm_source: 'facebook', visitor_id: 'aid-1' },
|
|
92
|
+
},
|
|
93
|
+
{ __tpa: { sessionId: 'sid-1', visitorId: null, path: '/checkout' } }
|
|
94
|
+
)
|
|
95
|
+
expect(result).toEqual({ sent: true, status: 202 })
|
|
96
|
+
expect(calls[0].url).toBe('https://analytics.example/events/tpa_key/server')
|
|
97
|
+
expect(calls[0].init.headers['x-tp-server-key']).toBe('tpas_secret')
|
|
98
|
+
const body = JSON.parse(calls[0].init.body)
|
|
99
|
+
expect(body.outcomes[0]).toMatchObject({
|
|
100
|
+
name: 'purchase',
|
|
101
|
+
value: 49.9,
|
|
102
|
+
currency: 'EUR',
|
|
103
|
+
outcomeId: 'ord-1',
|
|
104
|
+
sessionId: 'sid-1',
|
|
105
|
+
visitorId: 'aid-1',
|
|
106
|
+
path: '/checkout',
|
|
107
|
+
attribution: { utmSource: 'facebook' },
|
|
108
|
+
})
|
|
109
|
+
})
|
|
110
|
+
|
|
111
|
+
it('server: answers not-configured without the key and never throws on a network failure', async () => {
|
|
112
|
+
const unconfigured = evalHandler(generator.generateServerHandler?.() ?? '', {
|
|
113
|
+
globalThis: { process: { env: {} } },
|
|
114
|
+
fetch: () => Promise.reject(new Error('unreachable')),
|
|
115
|
+
AbortController: undefined,
|
|
116
|
+
})
|
|
117
|
+
expect(await unconfigured({ name: 'purchase', outcomeId: 'o' }, {})).toEqual({
|
|
118
|
+
sent: false,
|
|
119
|
+
reason: 'not-configured',
|
|
120
|
+
})
|
|
121
|
+
const offline = evalHandler(generator.generateServerHandler?.() ?? '', {
|
|
122
|
+
globalThis: {
|
|
123
|
+
process: {
|
|
124
|
+
env: {
|
|
125
|
+
NEXT_PUBLIC_TELEPORT_ANALYTICS_URL: 'https://analytics.example',
|
|
126
|
+
NEXT_PUBLIC_TELEPORT_ANALYTICS_KEY: 'k',
|
|
127
|
+
TELEPORT_ANALYTICS_SERVER_KEY: 's',
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
fetch: () => Promise.reject(new Error('unreachable')),
|
|
132
|
+
AbortController: undefined,
|
|
133
|
+
})
|
|
134
|
+
expect(await offline({ name: 'booking_made', outcomeId: 'b' }, {})).toEqual({
|
|
135
|
+
sent: false,
|
|
136
|
+
reason: 'network',
|
|
137
|
+
})
|
|
138
|
+
})
|
|
139
|
+
|
|
140
|
+
it('stamps the tracker ids on every trigger context and reports a sent form as a lead', () => {
|
|
141
|
+
expect(TRACKER_IDS_EXPRESSION).toContain('window.tpAnalytics.ids()')
|
|
142
|
+
expect(TRACK_LEAD_SOURCE('form-9')).toContain("track('lead', { recordId: 'form-9' })")
|
|
143
|
+
expect(TRACK_LEAD_SOURCE('form-9')).toContain("typeof window !== 'undefined'")
|
|
144
|
+
})
|
|
145
|
+
})
|
|
@@ -68,7 +68,14 @@ const bootAuthOptions = () => {
|
|
|
68
68
|
return crypto
|
|
69
69
|
}
|
|
70
70
|
if (name === './hash-password') {
|
|
71
|
-
return {
|
|
71
|
+
return {
|
|
72
|
+
verifyPassword: (password: string, hash: string) => hash === hashOf(password),
|
|
73
|
+
checkPassword: (password: string, hash: string) => ({
|
|
74
|
+
ok: typeof hash === 'string' && hash !== '' && hash === hashOf(password),
|
|
75
|
+
needsRehash: false,
|
|
76
|
+
}),
|
|
77
|
+
hashPassword: (password: string) => hashOf(password),
|
|
78
|
+
}
|
|
72
79
|
}
|
|
73
80
|
if (name === './db-health') {
|
|
74
81
|
return { classifyAuthInfrastructureError: () => 'unknown' }
|