@teleporthq/teleport-plugin-next-workflows 0.44.11 → 0.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__tests__/_helpers/fake-fetch.ts +75 -0
- package/__tests__/_helpers/gui-place-order-statements.ts +17 -0
- package/__tests__/_helpers/inserted-lines.ts +22 -0
- package/__tests__/_helpers/invoice-store.ts +10 -1
- package/__tests__/_helpers/load-security-runtime.ts +45 -0
- package/__tests__/_helpers/load-server-runtime.ts +26 -3
- package/__tests__/_helpers/run-account-delete-route.ts +3 -1
- package/__tests__/_helpers/run-generated-middleware.ts +7 -2
- package/__tests__/account-delete-owned-rows.test.ts +3 -1
- package/__tests__/adopted-element-trigger-code.test.ts +128 -0
- package/__tests__/analytics-track-outcome.test.ts +145 -0
- package/__tests__/auth-password-change-ends-sessions.test.ts +8 -1
- package/__tests__/auth-password-security.test.ts +2275 -0
- package/__tests__/auth-session-cost.test.ts +31 -0
- package/__tests__/auth-signup-route.test.ts +960 -0
- package/__tests__/authored-code-every-path.test.ts +247 -0
- package/__tests__/automations-bus.test.ts +3820 -0
- package/__tests__/automations-catalog-drift.test.ts +97 -0
- package/__tests__/booking-calendar-feed-route.test.ts +20 -3
- package/__tests__/cart-price-order.test.ts +336 -1
- package/__tests__/code-lookup-rate-limit-route.test.ts +189 -0
- package/__tests__/cost-bearing-node-types.test.ts +119 -0
- package/__tests__/credential-columns-reply.test.ts +9 -0
- package/__tests__/credential-result-reply.test.ts +19 -5
- package/__tests__/cron-route-loop-templateparams.test.ts +6 -3
- package/__tests__/custom-js-authored-code.test.ts +304 -0
- package/__tests__/custom-node-custom-code-gate.test.ts +136 -0
- package/__tests__/custom-node-step-handlers.test.ts +251 -0
- package/__tests__/custom-node-step-reach.test.ts +63 -0
- package/__tests__/data-api-anon-user-id-fallback.test.ts +7 -2
- package/__tests__/data-api-browser-reads.test.ts +7 -0
- package/__tests__/data-api-business-events.test.ts +403 -0
- package/__tests__/data-api-invalid-body.test.ts +7 -0
- package/__tests__/data-api-low-stock-autofire.test.ts +30 -4
- package/__tests__/data-api-optional-feature-columns.test.ts +44 -0
- package/__tests__/data-api-owner-scope-credentials.test.ts +1324 -0
- package/__tests__/data-api-protected-tables.test.ts +48 -15
- package/__tests__/data-api-retired-table-and-account-fields.test.ts +208 -0
- package/__tests__/email-locale-senders.test.ts +5 -3
- package/__tests__/expression-injection.test.ts +343 -0
- package/__tests__/fixtures/admin-file-workflows.json +242 -0
- package/__tests__/form-confirmation-email-template.test.ts +44 -0
- package/__tests__/internal-request-headers.test.ts +25 -0
- package/__tests__/invoice-pdf-service-project-header.test.ts +120 -0
- package/__tests__/invoice-self-call-origin.test.ts +57 -1
- package/__tests__/legacy-webhook-self-calls.test.ts +86 -1
- package/__tests__/middleware-home-route-protection.test.ts +3 -1
- package/__tests__/middleware-subscriber-access.test.ts +1 -1
- package/__tests__/newsletter-admin-route.test.ts +649 -0
- package/__tests__/newsletter-plugin.test.ts +1248 -0
- package/__tests__/outbound-nodes-security.test.ts +1929 -0
- package/__tests__/page-access-guard.test.ts +217 -0
- package/__tests__/page-access-route-table.test.ts +231 -0
- package/__tests__/payment-drivers-module.test.ts +23 -0
- package/__tests__/payment-legacy-webhook-routes.test.ts +100 -5
- package/__tests__/payment-webhook-route.test.ts +4 -1
- package/__tests__/paypal-webhook-signature-verification.test.ts +44 -0
- package/__tests__/place-order-guards.test.ts +506 -0
- package/__tests__/public-step-guards.test.ts +310 -0
- package/__tests__/publish-refusals.test.ts +505 -0
- package/__tests__/realtime-identity-routes.test.ts +492 -0
- package/__tests__/record-event-writer-server-only.test.ts +975 -0
- package/__tests__/resolve-config-template-params.test.ts +3 -3
- package/__tests__/runtime-storage-upload-access.test.ts +280 -17
- package/__tests__/security-integration-env-names.test.ts +74 -0
- package/__tests__/security-lists-parity.test.ts +245 -0
- package/__tests__/security-runtime-shadow.test.ts +224 -1
- package/__tests__/security-runtime.test.ts +893 -0
- package/__tests__/segment-rate-limit-error-branch.test.ts +284 -0
- package/__tests__/segment-route-abuse-gate.test.ts +309 -0
- package/__tests__/server-job-hops-real-data-api.test.ts +669 -0
- package/__tests__/server-session-identity.test.ts +522 -0
- package/__tests__/server-step-chain.test.ts +222 -0
- package/__tests__/server-step-signing.test.ts +107 -2
- package/__tests__/session-cookie-resolver.test.ts +62 -106
- package/__tests__/signup-event.test.ts +649 -0
- package/__tests__/signup-reply-identical.test.ts +144 -0
- package/__tests__/slack-message-escaping.test.ts +123 -0
- package/__tests__/visitor-step-limits.test.ts +318 -0
- package/__tests__/webhook-delivery-lease.test.ts +4 -1
- package/__tests__/webpack-safe-handlers.test.ts +57 -8
- package/__tests__/workflow-auth-guard.test.ts +9 -1
- package/dist/cjs/account-delete-route-generator.d.ts +1 -0
- package/dist/cjs/account-delete-route-generator.d.ts.map +1 -1
- package/dist/cjs/account-delete-route-generator.js +18 -3
- package/dist/cjs/account-delete-route-generator.js.map +1 -1
- package/dist/cjs/api-route-generator.d.ts +52 -3
- package/dist/cjs/api-route-generator.d.ts.map +1 -1
- package/dist/cjs/api-route-generator.js +600 -145
- package/dist/cjs/api-route-generator.js.map +1 -1
- package/dist/cjs/auth-generator.d.ts +126 -3
- package/dist/cjs/auth-generator.d.ts.map +1 -1
- package/dist/cjs/auth-generator.js +1353 -139
- package/dist/cjs/auth-generator.js.map +1 -1
- package/dist/cjs/automations/activity-kicks.d.ts +12 -0
- package/dist/cjs/automations/activity-kicks.d.ts.map +1 -0
- package/dist/cjs/automations/activity-kicks.js +123 -0
- package/dist/cjs/automations/activity-kicks.js.map +1 -0
- package/dist/cjs/automations/app-events-source.d.ts +33 -0
- package/dist/cjs/automations/app-events-source.d.ts.map +1 -0
- package/dist/cjs/automations/app-events-source.js +109 -0
- package/dist/cjs/automations/app-events-source.js.map +1 -0
- package/dist/cjs/automations/automations-project-plugin.d.ts +21 -0
- package/dist/cjs/automations/automations-project-plugin.d.ts.map +1 -0
- package/dist/cjs/automations/automations-project-plugin.js +102 -0
- package/dist/cjs/automations/automations-project-plugin.js.map +1 -0
- package/dist/cjs/automations/automations-scope.d.ts +104 -0
- package/dist/cjs/automations/automations-scope.d.ts.map +1 -0
- package/dist/cjs/automations/automations-scope.js +176 -0
- package/dist/cjs/automations/automations-scope.js.map +1 -0
- package/dist/cjs/automations/dispatcher-source.d.ts +72 -0
- package/dist/cjs/automations/dispatcher-source.d.ts.map +1 -0
- package/dist/cjs/automations/dispatcher-source.js +1008 -0
- package/dist/cjs/automations/dispatcher-source.js.map +1 -0
- package/dist/cjs/automations/event-bus-source.d.ts +44 -0
- package/dist/cjs/automations/event-bus-source.d.ts.map +1 -0
- package/dist/cjs/automations/event-bus-source.js +427 -0
- package/dist/cjs/automations/event-bus-source.js.map +1 -0
- package/dist/cjs/automations/handler-module-generator.d.ts +25 -0
- package/dist/cjs/automations/handler-module-generator.d.ts.map +1 -0
- package/dist/cjs/automations/handler-module-generator.js +78 -0
- package/dist/cjs/automations/handler-module-generator.js.map +1 -0
- package/dist/cjs/automations/hydrators-source.d.ts +33 -0
- package/dist/cjs/automations/hydrators-source.d.ts.map +1 -0
- package/dist/cjs/automations/hydrators-source.js +571 -0
- package/dist/cjs/automations/hydrators-source.js.map +1 -0
- package/dist/cjs/booking-calendar-feed-route-generator.d.ts.map +1 -1
- package/dist/cjs/booking-calendar-feed-route-generator.js +8 -0
- package/dist/cjs/booking-calendar-feed-route-generator.js.map +1 -1
- package/dist/cjs/configured-nextauth-url.d.ts +17 -0
- package/dist/cjs/configured-nextauth-url.d.ts.map +1 -0
- package/dist/cjs/configured-nextauth-url.js +20 -0
- package/dist/cjs/configured-nextauth-url.js.map +1 -0
- package/dist/cjs/cron-request-verification.d.ts +22 -1
- package/dist/cjs/cron-request-verification.d.ts.map +1 -1
- package/dist/cjs/cron-request-verification.js +50 -6
- package/dist/cjs/cron-request-verification.js.map +1 -1
- package/dist/cjs/data-api-route-generator.d.ts +19 -0
- package/dist/cjs/data-api-route-generator.d.ts.map +1 -1
- package/dist/cjs/data-api-route-generator.js +711 -43
- package/dist/cjs/data-api-route-generator.js.map +1 -1
- package/dist/cjs/ecommerce/parameterized-stock-chain.d.ts +3 -1
- package/dist/cjs/ecommerce/parameterized-stock-chain.d.ts.map +1 -1
- package/dist/cjs/ecommerce/parameterized-stock-chain.js +45 -5
- package/dist/cjs/ecommerce/parameterized-stock-chain.js.map +1 -1
- package/dist/cjs/ecommerce/place-order-guards.d.ts +126 -0
- package/dist/cjs/ecommerce/place-order-guards.d.ts.map +1 -0
- package/dist/cjs/ecommerce/place-order-guards.js +670 -0
- package/dist/cjs/ecommerce/place-order-guards.js.map +1 -0
- package/dist/cjs/ecommerce-customhandler-rewriter.d.ts +2 -0
- package/dist/cjs/ecommerce-customhandler-rewriter.d.ts.map +1 -1
- package/dist/cjs/ecommerce-customhandler-rewriter.js +38 -2
- package/dist/cjs/ecommerce-customhandler-rewriter.js.map +1 -1
- package/dist/cjs/executor-generator.d.ts.map +1 -1
- package/dist/cjs/executor-generator.js +368 -60
- package/dist/cjs/executor-generator.js.map +1 -1
- package/dist/cjs/graph-utils.d.ts +9 -0
- package/dist/cjs/graph-utils.d.ts.map +1 -1
- package/dist/cjs/graph-utils.js +32 -1
- package/dist/cjs/graph-utils.js.map +1 -1
- package/dist/cjs/index.d.ts +20 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +72 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/invoice/api-routes-code.d.ts +9 -3
- package/dist/cjs/invoice/api-routes-code.d.ts.map +1 -1
- package/dist/cjs/invoice/api-routes-code.js +9 -7
- package/dist/cjs/invoice/api-routes-code.js.map +1 -1
- package/dist/cjs/invoice/index.d.ts.map +1 -1
- package/dist/cjs/invoice/index.js +12 -7
- package/dist/cjs/invoice/index.js.map +1 -1
- package/dist/cjs/invoice/invoice-assembly-code.d.ts.map +1 -1
- package/dist/cjs/invoice/invoice-assembly-code.js +8 -3
- package/dist/cjs/invoice/invoice-assembly-code.js.map +1 -1
- package/dist/cjs/invoice/pdf-generator-code.d.ts.map +1 -1
- package/dist/cjs/invoice/pdf-generator-code.js +2 -1
- package/dist/cjs/invoice/pdf-generator-code.js.map +1 -1
- package/dist/cjs/invoice/pdf-service-client-code.d.ts.map +1 -1
- package/dist/cjs/invoice/pdf-service-client-code.js +15 -7
- package/dist/cjs/invoice/pdf-service-client-code.js.map +1 -1
- package/dist/cjs/newsletter/admin-route-code.d.ts +60 -0
- package/dist/cjs/newsletter/admin-route-code.d.ts.map +1 -0
- package/dist/cjs/newsletter/admin-route-code.js +300 -0
- package/dist/cjs/newsletter/admin-route-code.js.map +1 -0
- package/dist/cjs/newsletter/helper-code.d.ts +109 -0
- package/dist/cjs/newsletter/helper-code.d.ts.map +1 -0
- package/dist/cjs/newsletter/helper-code.js +662 -0
- package/dist/cjs/newsletter/helper-code.js.map +1 -0
- package/dist/cjs/newsletter/newsletter-scope.d.ts +65 -0
- package/dist/cjs/newsletter/newsletter-scope.d.ts.map +1 -0
- package/dist/cjs/newsletter/newsletter-scope.js +103 -0
- package/dist/cjs/newsletter/newsletter-scope.js.map +1 -0
- package/dist/cjs/newsletter/project-plugin.d.ts +18 -0
- package/dist/cjs/newsletter/project-plugin.d.ts.map +1 -0
- package/dist/cjs/newsletter/project-plugin.js +97 -0
- package/dist/cjs/newsletter/project-plugin.js.map +1 -0
- package/dist/cjs/newsletter/routes-code.d.ts +6 -0
- package/dist/cjs/newsletter/routes-code.d.ts.map +1 -0
- package/dist/cjs/newsletter/routes-code.js +181 -0
- package/dist/cjs/newsletter/routes-code.js.map +1 -0
- package/dist/cjs/nodes/account/account-compare-passwords.d.ts.map +1 -1
- package/dist/cjs/nodes/account/account-compare-passwords.js +16 -6
- package/dist/cjs/nodes/account/account-compare-passwords.js.map +1 -1
- package/dist/cjs/nodes/account/account-delete-current.js +1 -1
- package/dist/cjs/nodes/account/account-get-current.js +1 -1
- package/dist/cjs/nodes/account/account-hash-password.d.ts.map +1 -1
- package/dist/cjs/nodes/account/account-hash-password.js +15 -3
- package/dist/cjs/nodes/account/account-hash-password.js.map +1 -1
- package/dist/cjs/nodes/account/account-login.d.ts.map +1 -1
- package/dist/cjs/nodes/account/account-login.js +23 -6
- package/dist/cjs/nodes/account/account-login.js.map +1 -1
- package/dist/cjs/nodes/account/account-logout.js +1 -1
- package/dist/cjs/nodes/account/account-refresh-session.js +1 -1
- package/dist/cjs/nodes/account/account-request-password-reset.d.ts +3 -0
- package/dist/cjs/nodes/account/account-request-password-reset.d.ts.map +1 -0
- package/dist/cjs/nodes/account/account-request-password-reset.js +46 -0
- package/dist/cjs/nodes/account/account-request-password-reset.js.map +1 -0
- package/dist/cjs/nodes/account/account-reset-password.d.ts +3 -0
- package/dist/cjs/nodes/account/account-reset-password.d.ts.map +1 -0
- package/dist/cjs/nodes/account/account-reset-password.js +44 -0
- package/dist/cjs/nodes/account/account-reset-password.js.map +1 -0
- package/dist/cjs/nodes/account/account-signup.d.ts.map +1 -1
- package/dist/cjs/nodes/account/account-signup.js +82 -19
- package/dist/cjs/nodes/account/account-signup.js.map +1 -1
- package/dist/cjs/nodes/account/account-social-login.js +1 -1
- package/dist/cjs/nodes/ai/ai-custom-prompt.d.ts.map +1 -1
- package/dist/cjs/nodes/ai/ai-custom-prompt.js +20 -5
- package/dist/cjs/nodes/ai/ai-custom-prompt.js.map +1 -1
- package/dist/cjs/nodes/ai/ai-detect-language.d.ts.map +1 -1
- package/dist/cjs/nodes/ai/ai-detect-language.js +20 -5
- package/dist/cjs/nodes/ai/ai-detect-language.js.map +1 -1
- package/dist/cjs/nodes/ai/ai-generate-text-embedding.d.ts.map +1 -1
- package/dist/cjs/nodes/ai/ai-generate-text-embedding.js +10 -2
- package/dist/cjs/nodes/ai/ai-generate-text-embedding.js.map +1 -1
- package/dist/cjs/nodes/ai/ai-provider-utils-sources.generated.js +2 -2
- package/dist/cjs/nodes/ai/ai-provider-utils-sources.generated.js.map +1 -1
- package/dist/cjs/nodes/ai/ai-provider-utils.d.ts +31 -2
- package/dist/cjs/nodes/ai/ai-provider-utils.d.ts.map +1 -1
- package/dist/cjs/nodes/ai/ai-provider-utils.js +125 -11
- package/dist/cjs/nodes/ai/ai-provider-utils.js.map +1 -1
- package/dist/cjs/nodes/ai/ai-select-database-data.d.ts.map +1 -1
- package/dist/cjs/nodes/ai/ai-select-database-data.js +6 -2
- package/dist/cjs/nodes/ai/ai-select-database-data.js.map +1 -1
- package/dist/cjs/nodes/ai/ai-sentiment-analysis.d.ts.map +1 -1
- package/dist/cjs/nodes/ai/ai-sentiment-analysis.js +20 -5
- package/dist/cjs/nodes/ai/ai-sentiment-analysis.js.map +1 -1
- package/dist/cjs/nodes/ai/ai-summarization.d.ts.map +1 -1
- package/dist/cjs/nodes/ai/ai-summarization.js +20 -5
- package/dist/cjs/nodes/ai/ai-summarization.js.map +1 -1
- package/dist/cjs/nodes/ai/ai-text-classifier.d.ts.map +1 -1
- package/dist/cjs/nodes/ai/ai-text-classifier.js +20 -5
- package/dist/cjs/nodes/ai/ai-text-classifier.js.map +1 -1
- package/dist/cjs/nodes/ai/ai-text-transform.d.ts.map +1 -1
- package/dist/cjs/nodes/ai/ai-text-transform.js +20 -5
- package/dist/cjs/nodes/ai/ai-text-transform.js.map +1 -1
- package/dist/cjs/nodes/analytics/analytics-track-outcome.d.ts +3 -0
- package/dist/cjs/nodes/analytics/analytics-track-outcome.d.ts.map +1 -0
- package/dist/cjs/nodes/analytics/analytics-track-outcome.js +110 -0
- package/dist/cjs/nodes/analytics/analytics-track-outcome.js.map +1 -0
- package/dist/cjs/nodes/cart/cart-price-order.d.ts.map +1 -1
- package/dist/cjs/nodes/cart/cart-price-order.js +161 -2
- package/dist/cjs/nodes/cart/cart-price-order.js.map +1 -1
- package/dist/cjs/nodes/cost-bearing-node-types.d.ts +4 -0
- package/dist/cjs/nodes/cost-bearing-node-types.d.ts.map +1 -0
- package/dist/cjs/nodes/cost-bearing-node-types.js +43 -0
- package/dist/cjs/nodes/cost-bearing-node-types.js.map +1 -0
- package/dist/cjs/nodes/data/data-select.d.ts.map +1 -1
- package/dist/cjs/nodes/data/data-select.js +12 -2
- package/dist/cjs/nodes/data/data-select.js.map +1 -1
- package/dist/cjs/nodes/email/email-mailersend.d.ts.map +1 -1
- package/dist/cjs/nodes/email/email-mailersend.js +15 -11
- package/dist/cjs/nodes/email/email-mailersend.js.map +1 -1
- package/dist/cjs/nodes/email/email-mailgun.d.ts.map +1 -1
- package/dist/cjs/nodes/email/email-mailgun.js +15 -15
- package/dist/cjs/nodes/email/email-mailgun.js.map +1 -1
- package/dist/cjs/nodes/email/email-postmark.d.ts.map +1 -1
- package/dist/cjs/nodes/email/email-postmark.js +15 -15
- package/dist/cjs/nodes/email/email-postmark.js.map +1 -1
- package/dist/cjs/nodes/email/email-resend.d.ts.map +1 -1
- package/dist/cjs/nodes/email/email-resend.js +15 -15
- package/dist/cjs/nodes/email/email-resend.js.map +1 -1
- package/dist/cjs/nodes/email/email-sendgrid.d.ts.map +1 -1
- package/dist/cjs/nodes/email/email-sendgrid.js +15 -15
- package/dist/cjs/nodes/email/email-sendgrid.js.map +1 -1
- package/dist/cjs/nodes/email/html-escape-code.d.ts +3 -0
- package/dist/cjs/nodes/email/html-escape-code.d.ts.map +1 -0
- package/dist/cjs/nodes/email/html-escape-code.js +23 -0
- package/dist/cjs/nodes/email/html-escape-code.js.map +1 -0
- package/dist/cjs/nodes/email/message-trust.d.ts +40 -0
- package/dist/cjs/nodes/email/message-trust.d.ts.map +1 -0
- package/dist/cjs/nodes/email/message-trust.js +167 -0
- package/dist/cjs/nodes/email/message-trust.js.map +1 -0
- package/dist/cjs/nodes/email/outbound-message-guard.d.ts +113 -0
- package/dist/cjs/nodes/email/outbound-message-guard.d.ts.map +1 -0
- package/dist/cjs/nodes/email/outbound-message-guard.js +460 -0
- package/dist/cjs/nodes/email/outbound-message-guard.js.map +1 -0
- package/dist/cjs/nodes/email/trusted-html-code.d.ts +22 -0
- package/dist/cjs/nodes/email/trusted-html-code.d.ts.map +1 -0
- package/dist/cjs/nodes/email/trusted-html-code.js +52 -0
- package/dist/cjs/nodes/email/trusted-html-code.js.map +1 -0
- package/dist/cjs/nodes/general/general-custom-js.d.ts.map +1 -1
- package/dist/cjs/nodes/general/general-custom-js.js +44 -7
- package/dist/cjs/nodes/general/general-custom-js.js.map +1 -1
- package/dist/cjs/nodes/general/general-http-request.d.ts.map +1 -1
- package/dist/cjs/nodes/general/general-http-request.js +431 -45
- package/dist/cjs/nodes/general/general-http-request.js.map +1 -1
- package/dist/cjs/nodes/general/general-rate-limiter.d.ts.map +1 -1
- package/dist/cjs/nodes/general/general-rate-limiter.js +46 -78
- package/dist/cjs/nodes/general/general-rate-limiter.js.map +1 -1
- package/dist/cjs/nodes/general/general-wait.d.ts +3 -0
- package/dist/cjs/nodes/general/general-wait.d.ts.map +1 -0
- package/dist/cjs/nodes/general/general-wait.js +81 -0
- package/dist/cjs/nodes/general/general-wait.js.map +1 -0
- package/dist/cjs/nodes/general/visitor-request.d.ts +44 -0
- package/dist/cjs/nodes/general/visitor-request.d.ts.map +1 -0
- package/dist/cjs/nodes/general/visitor-request.js +72 -0
- package/dist/cjs/nodes/general/visitor-request.js.map +1 -0
- package/dist/cjs/nodes/index.d.ts.map +1 -1
- package/dist/cjs/nodes/index.js +7 -1
- package/dist/cjs/nodes/index.js.map +1 -1
- package/dist/cjs/nodes/integrations/integration-slack.d.ts.map +1 -1
- package/dist/cjs/nodes/integrations/integration-slack.js +17 -6
- package/dist/cjs/nodes/integrations/integration-slack.js.map +1 -1
- package/dist/cjs/nodes/newsletter/newsletter-confirm.d.ts +3 -0
- package/dist/cjs/nodes/newsletter/newsletter-confirm.d.ts.map +1 -0
- package/dist/cjs/nodes/newsletter/newsletter-confirm.js +41 -0
- package/dist/cjs/nodes/newsletter/newsletter-confirm.js.map +1 -0
- package/dist/cjs/nodes/newsletter/newsletter-subscribe.d.ts +7 -0
- package/dist/cjs/nodes/newsletter/newsletter-subscribe.d.ts.map +1 -0
- package/dist/cjs/nodes/newsletter/newsletter-subscribe.js +69 -0
- package/dist/cjs/nodes/newsletter/newsletter-subscribe.js.map +1 -0
- package/dist/cjs/nodes/newsletter/newsletter-unsubscribe.d.ts +3 -0
- package/dist/cjs/nodes/newsletter/newsletter-unsubscribe.d.ts.map +1 -0
- package/dist/cjs/nodes/newsletter/newsletter-unsubscribe.js +42 -0
- package/dist/cjs/nodes/newsletter/newsletter-unsubscribe.js.map +1 -0
- package/dist/cjs/nodes/realtime/realtime-join-channel.d.ts.map +1 -1
- package/dist/cjs/nodes/realtime/realtime-join-channel.js +5 -4
- package/dist/cjs/nodes/realtime/realtime-join-channel.js.map +1 -1
- package/dist/cjs/nodes/realtime/realtime-send-channel-event.d.ts.map +1 -1
- package/dist/cjs/nodes/realtime/realtime-send-channel-event.js +11 -2
- package/dist/cjs/nodes/realtime/realtime-send-channel-event.js.map +1 -1
- package/dist/cjs/nodes/realtime/realtime-send-channel-message.d.ts.map +1 -1
- package/dist/cjs/nodes/realtime/realtime-send-channel-message.js +11 -2
- package/dist/cjs/nodes/realtime/realtime-send-channel-message.js.map +1 -1
- package/dist/cjs/nodes/sms/sms-infobip.d.ts.map +1 -1
- package/dist/cjs/nodes/sms/sms-infobip.js +11 -8
- package/dist/cjs/nodes/sms/sms-infobip.js.map +1 -1
- package/dist/cjs/nodes/sms/sms-smsapi.d.ts.map +1 -1
- package/dist/cjs/nodes/sms/sms-smsapi.js +11 -8
- package/dist/cjs/nodes/sms/sms-smsapi.js.map +1 -1
- package/dist/cjs/nodes/sms/sms-textmagic.d.ts.map +1 -1
- package/dist/cjs/nodes/sms/sms-textmagic.js +11 -8
- package/dist/cjs/nodes/sms/sms-textmagic.js.map +1 -1
- package/dist/cjs/nodes/sms/sms-twilio.d.ts.map +1 -1
- package/dist/cjs/nodes/sms/sms-twilio.js +12 -10
- package/dist/cjs/nodes/sms/sms-twilio.js.map +1 -1
- package/dist/cjs/nodes/types.d.ts +8 -1
- package/dist/cjs/nodes/types.d.ts.map +1 -1
- package/dist/cjs/nodes/utility/utility-similarity-scoring.d.ts.map +1 -1
- package/dist/cjs/nodes/utility/utility-similarity-scoring.js +29 -10
- package/dist/cjs/nodes/utility/utility-similarity-scoring.js.map +1 -1
- package/dist/cjs/page-access-guard-generator.d.ts +23 -0
- package/dist/cjs/page-access-guard-generator.d.ts.map +1 -0
- package/dist/cjs/page-access-guard-generator.js +135 -0
- package/dist/cjs/page-access-guard-generator.js.map +1 -0
- package/dist/cjs/password-reset-route-generator.d.ts +119 -0
- package/dist/cjs/password-reset-route-generator.d.ts.map +1 -0
- package/dist/cjs/password-reset-route-generator.js +460 -0
- package/dist/cjs/password-reset-route-generator.js.map +1 -0
- package/dist/cjs/payments/payment-core-code.d.ts.map +1 -1
- package/dist/cjs/payments/payment-core-code.js +12 -7
- package/dist/cjs/payments/payment-core-code.js.map +1 -1
- package/dist/cjs/project-code-scanner.d.ts +11 -0
- package/dist/cjs/project-code-scanner.d.ts.map +1 -0
- package/dist/cjs/project-code-scanner.js +80 -0
- package/dist/cjs/project-code-scanner.js.map +1 -0
- package/dist/cjs/public-step-guards.d.ts +122 -0
- package/dist/cjs/public-step-guards.d.ts.map +1 -0
- package/dist/cjs/public-step-guards.js +288 -0
- package/dist/cjs/public-step-guards.js.map +1 -0
- package/dist/cjs/publish-refusals.d.ts +66 -0
- package/dist/cjs/publish-refusals.d.ts.map +1 -0
- package/dist/cjs/publish-refusals.js +278 -0
- package/dist/cjs/publish-refusals.js.map +1 -0
- package/dist/cjs/realtime-generator.d.ts +63 -1
- package/dist/cjs/realtime-generator.d.ts.map +1 -1
- package/dist/cjs/realtime-generator.js +404 -230
- package/dist/cjs/realtime-generator.js.map +1 -1
- package/dist/cjs/runtime-storage-generator.d.ts +32 -1
- package/dist/cjs/runtime-storage-generator.d.ts.map +1 -1
- package/dist/cjs/runtime-storage-generator.js +265 -12
- package/dist/cjs/runtime-storage-generator.js.map +1 -1
- package/dist/cjs/security-runtime/index.d.ts +14 -0
- package/dist/cjs/security-runtime/index.d.ts.map +1 -0
- package/dist/cjs/security-runtime/index.js +48 -0
- package/dist/cjs/security-runtime/index.js.map +1 -0
- package/dist/cjs/security-runtime/security-runtime-code.d.ts +53 -0
- package/dist/cjs/security-runtime/security-runtime-code.d.ts.map +1 -0
- package/dist/cjs/security-runtime/security-runtime-code.js +580 -0
- package/dist/cjs/security-runtime/security-runtime-code.js.map +1 -0
- package/dist/cjs/security-scanner.d.ts +72 -3
- package/dist/cjs/security-scanner.d.ts.map +1 -1
- package/dist/cjs/security-scanner.js +220 -8
- package/dist/cjs/security-scanner.js.map +1 -1
- package/dist/cjs/segment-splitter.d.ts.map +1 -1
- package/dist/cjs/segment-splitter.js +10 -2
- package/dist/cjs/segment-splitter.js.map +1 -1
- package/dist/cjs/segment-trust.d.ts +36 -0
- package/dist/cjs/segment-trust.d.ts.map +1 -1
- package/dist/cjs/segment-trust.js +147 -3
- package/dist/cjs/segment-trust.js.map +1 -1
- package/dist/cjs/self-call-headers.d.ts +31 -0
- package/dist/cjs/self-call-headers.d.ts.map +1 -0
- package/dist/cjs/self-call-headers.js +48 -0
- package/dist/cjs/self-call-headers.js.map +1 -0
- package/dist/cjs/sent-email-log/index.d.ts +7 -0
- package/dist/cjs/sent-email-log/index.d.ts.map +1 -1
- package/dist/cjs/sent-email-log/index.js +17 -1
- package/dist/cjs/sent-email-log/index.js.map +1 -1
- package/dist/cjs/sent-email-log/sent-email-log-code.d.ts +7 -0
- package/dist/cjs/sent-email-log/sent-email-log-code.d.ts.map +1 -1
- package/dist/cjs/sent-email-log/sent-email-log-code.js +17 -3
- package/dist/cjs/sent-email-log/sent-email-log-code.js.map +1 -1
- package/dist/cjs/server-custom-node-call.d.ts +79 -0
- package/dist/cjs/server-custom-node-call.d.ts.map +1 -0
- package/dist/cjs/server-custom-node-call.js +285 -0
- package/dist/cjs/server-custom-node-call.js.map +1 -0
- package/dist/cjs/server-runtime-code.d.ts +39 -12
- package/dist/cjs/server-runtime-code.d.ts.map +1 -1
- package/dist/cjs/server-runtime-code.js +484 -41
- package/dist/cjs/server-runtime-code.js.map +1 -1
- package/dist/cjs/session-cookie-resolver.d.ts +3 -1
- package/dist/cjs/session-cookie-resolver.d.ts.map +1 -1
- package/dist/cjs/session-revocation-generator.d.ts +39 -0
- package/dist/cjs/session-revocation-generator.d.ts.map +1 -0
- package/dist/cjs/session-revocation-generator.js +177 -0
- package/dist/cjs/session-revocation-generator.js.map +1 -0
- package/dist/cjs/slack-message-values.d.ts +6 -0
- package/dist/cjs/slack-message-values.d.ts.map +1 -0
- package/dist/cjs/slack-message-values.js +73 -0
- package/dist/cjs/slack-message-values.js.map +1 -0
- package/dist/cjs/transactional-email-code.d.ts +11 -0
- package/dist/cjs/transactional-email-code.d.ts.map +1 -1
- package/dist/cjs/transactional-email-code.js +29 -5
- package/dist/cjs/transactional-email-code.js.map +1 -1
- package/dist/cjs/trigger-generator.d.ts +2 -0
- package/dist/cjs/trigger-generator.d.ts.map +1 -1
- package/dist/cjs/trigger-generator.js +17 -4
- package/dist/cjs/trigger-generator.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/visitor-step-limits.d.ts +66 -0
- package/dist/cjs/visitor-step-limits.d.ts.map +1 -0
- package/dist/cjs/visitor-step-limits.js +187 -0
- package/dist/cjs/visitor-step-limits.js.map +1 -0
- package/dist/cjs/webhook-generator.d.ts.map +1 -1
- package/dist/cjs/webhook-generator.js +93 -15
- package/dist/cjs/webhook-generator.js.map +1 -1
- package/dist/cjs/webhook-signature-verification.d.ts.map +1 -1
- package/dist/cjs/webhook-signature-verification.js +13 -3
- package/dist/cjs/webhook-signature-verification.js.map +1 -1
- package/dist/cjs/workflow-auth-generator.d.ts +4 -1
- package/dist/cjs/workflow-auth-generator.d.ts.map +1 -1
- package/dist/cjs/workflow-auth-generator.js +8 -3
- package/dist/cjs/workflow-auth-generator.js.map +1 -1
- package/dist/cjs/workflow-component-plugin.js +11 -3
- package/dist/cjs/workflow-component-plugin.js.map +1 -1
- package/dist/cjs/workflow-project-plugin.d.ts.map +1 -1
- package/dist/cjs/workflow-project-plugin.js +302 -56
- package/dist/cjs/workflow-project-plugin.js.map +1 -1
- package/dist/cjs/workflow-scope.d.ts.map +1 -1
- package/dist/cjs/workflow-scope.js +5 -0
- package/dist/cjs/workflow-scope.js.map +1 -1
- package/dist/esm/account-delete-route-generator.d.ts +1 -0
- package/dist/esm/account-delete-route-generator.d.ts.map +1 -1
- package/dist/esm/account-delete-route-generator.js +18 -3
- package/dist/esm/account-delete-route-generator.js.map +1 -1
- package/dist/esm/api-route-generator.d.ts +52 -3
- package/dist/esm/api-route-generator.d.ts.map +1 -1
- package/dist/esm/api-route-generator.js +595 -142
- package/dist/esm/api-route-generator.js.map +1 -1
- package/dist/esm/auth-generator.d.ts +126 -3
- package/dist/esm/auth-generator.d.ts.map +1 -1
- package/dist/esm/auth-generator.js +1350 -140
- package/dist/esm/auth-generator.js.map +1 -1
- package/dist/esm/automations/activity-kicks.d.ts +12 -0
- package/dist/esm/automations/activity-kicks.d.ts.map +1 -0
- package/dist/esm/automations/activity-kicks.js +118 -0
- package/dist/esm/automations/activity-kicks.js.map +1 -0
- package/dist/esm/automations/app-events-source.d.ts +33 -0
- package/dist/esm/automations/app-events-source.d.ts.map +1 -0
- package/dist/esm/automations/app-events-source.js +104 -0
- package/dist/esm/automations/app-events-source.js.map +1 -0
- package/dist/esm/automations/automations-project-plugin.d.ts +21 -0
- package/dist/esm/automations/automations-project-plugin.d.ts.map +1 -0
- package/dist/esm/automations/automations-project-plugin.js +98 -0
- package/dist/esm/automations/automations-project-plugin.js.map +1 -0
- package/dist/esm/automations/automations-scope.d.ts +104 -0
- package/dist/esm/automations/automations-scope.d.ts.map +1 -0
- package/dist/esm/automations/automations-scope.js +165 -0
- package/dist/esm/automations/automations-scope.js.map +1 -0
- package/dist/esm/automations/dispatcher-source.d.ts +72 -0
- package/dist/esm/automations/dispatcher-source.d.ts.map +1 -0
- package/dist/esm/automations/dispatcher-source.js +999 -0
- package/dist/esm/automations/dispatcher-source.js.map +1 -0
- package/dist/esm/automations/event-bus-source.d.ts +44 -0
- package/dist/esm/automations/event-bus-source.d.ts.map +1 -0
- package/dist/esm/automations/event-bus-source.js +421 -0
- package/dist/esm/automations/event-bus-source.js.map +1 -0
- package/dist/esm/automations/handler-module-generator.d.ts +25 -0
- package/dist/esm/automations/handler-module-generator.d.ts.map +1 -0
- package/dist/esm/automations/handler-module-generator.js +71 -0
- package/dist/esm/automations/handler-module-generator.js.map +1 -0
- package/dist/esm/automations/hydrators-source.d.ts +33 -0
- package/dist/esm/automations/hydrators-source.d.ts.map +1 -0
- package/dist/esm/automations/hydrators-source.js +567 -0
- package/dist/esm/automations/hydrators-source.js.map +1 -0
- package/dist/esm/booking-calendar-feed-route-generator.d.ts.map +1 -1
- package/dist/esm/booking-calendar-feed-route-generator.js +8 -0
- package/dist/esm/booking-calendar-feed-route-generator.js.map +1 -1
- package/dist/esm/configured-nextauth-url.d.ts +17 -0
- package/dist/esm/configured-nextauth-url.d.ts.map +1 -0
- package/dist/esm/configured-nextauth-url.js +17 -0
- package/dist/esm/configured-nextauth-url.js.map +1 -0
- package/dist/esm/cron-request-verification.d.ts +22 -1
- package/dist/esm/cron-request-verification.d.ts.map +1 -1
- package/dist/esm/cron-request-verification.js +48 -5
- package/dist/esm/cron-request-verification.js.map +1 -1
- package/dist/esm/data-api-route-generator.d.ts +19 -0
- package/dist/esm/data-api-route-generator.d.ts.map +1 -1
- package/dist/esm/data-api-route-generator.js +710 -43
- package/dist/esm/data-api-route-generator.js.map +1 -1
- package/dist/esm/ecommerce/parameterized-stock-chain.d.ts +3 -1
- package/dist/esm/ecommerce/parameterized-stock-chain.d.ts.map +1 -1
- package/dist/esm/ecommerce/parameterized-stock-chain.js +43 -4
- package/dist/esm/ecommerce/parameterized-stock-chain.js.map +1 -1
- package/dist/esm/ecommerce/place-order-guards.d.ts +126 -0
- package/dist/esm/ecommerce/place-order-guards.d.ts.map +1 -0
- package/dist/esm/ecommerce/place-order-guards.js +655 -0
- package/dist/esm/ecommerce/place-order-guards.js.map +1 -0
- package/dist/esm/ecommerce-customhandler-rewriter.d.ts +2 -0
- package/dist/esm/ecommerce-customhandler-rewriter.d.ts.map +1 -1
- package/dist/esm/ecommerce-customhandler-rewriter.js +38 -2
- package/dist/esm/ecommerce-customhandler-rewriter.js.map +1 -1
- package/dist/esm/executor-generator.d.ts.map +1 -1
- package/dist/esm/executor-generator.js +368 -60
- package/dist/esm/executor-generator.js.map +1 -1
- package/dist/esm/graph-utils.d.ts +9 -0
- package/dist/esm/graph-utils.d.ts.map +1 -1
- package/dist/esm/graph-utils.js +30 -0
- package/dist/esm/graph-utils.js.map +1 -1
- package/dist/esm/index.d.ts +20 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +27 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/invoice/api-routes-code.d.ts +9 -3
- package/dist/esm/invoice/api-routes-code.d.ts.map +1 -1
- package/dist/esm/invoice/api-routes-code.js +9 -7
- package/dist/esm/invoice/api-routes-code.js.map +1 -1
- package/dist/esm/invoice/index.d.ts.map +1 -1
- package/dist/esm/invoice/index.js +12 -7
- package/dist/esm/invoice/index.js.map +1 -1
- package/dist/esm/invoice/invoice-assembly-code.d.ts.map +1 -1
- package/dist/esm/invoice/invoice-assembly-code.js +8 -3
- package/dist/esm/invoice/invoice-assembly-code.js.map +1 -1
- package/dist/esm/invoice/pdf-generator-code.d.ts.map +1 -1
- package/dist/esm/invoice/pdf-generator-code.js +2 -1
- package/dist/esm/invoice/pdf-generator-code.js.map +1 -1
- package/dist/esm/invoice/pdf-service-client-code.d.ts.map +1 -1
- package/dist/esm/invoice/pdf-service-client-code.js +15 -7
- package/dist/esm/invoice/pdf-service-client-code.js.map +1 -1
- package/dist/esm/newsletter/admin-route-code.d.ts +60 -0
- package/dist/esm/newsletter/admin-route-code.d.ts.map +1 -0
- package/dist/esm/newsletter/admin-route-code.js +295 -0
- package/dist/esm/newsletter/admin-route-code.js.map +1 -0
- package/dist/esm/newsletter/helper-code.d.ts +109 -0
- package/dist/esm/newsletter/helper-code.d.ts.map +1 -0
- package/dist/esm/newsletter/helper-code.js +656 -0
- package/dist/esm/newsletter/helper-code.js.map +1 -0
- package/dist/esm/newsletter/newsletter-scope.d.ts +65 -0
- package/dist/esm/newsletter/newsletter-scope.d.ts.map +1 -0
- package/dist/esm/newsletter/newsletter-scope.js +97 -0
- package/dist/esm/newsletter/newsletter-scope.js.map +1 -0
- package/dist/esm/newsletter/project-plugin.d.ts +18 -0
- package/dist/esm/newsletter/project-plugin.d.ts.map +1 -0
- package/dist/esm/newsletter/project-plugin.js +93 -0
- package/dist/esm/newsletter/project-plugin.js.map +1 -0
- package/dist/esm/newsletter/routes-code.d.ts +6 -0
- package/dist/esm/newsletter/routes-code.d.ts.map +1 -0
- package/dist/esm/newsletter/routes-code.js +175 -0
- package/dist/esm/newsletter/routes-code.js.map +1 -0
- package/dist/esm/nodes/account/account-compare-passwords.d.ts.map +1 -1
- package/dist/esm/nodes/account/account-compare-passwords.js +16 -6
- package/dist/esm/nodes/account/account-compare-passwords.js.map +1 -1
- package/dist/esm/nodes/account/account-delete-current.js +1 -1
- package/dist/esm/nodes/account/account-get-current.js +1 -1
- package/dist/esm/nodes/account/account-hash-password.d.ts.map +1 -1
- package/dist/esm/nodes/account/account-hash-password.js +15 -3
- package/dist/esm/nodes/account/account-hash-password.js.map +1 -1
- package/dist/esm/nodes/account/account-login.d.ts.map +1 -1
- package/dist/esm/nodes/account/account-login.js +23 -6
- package/dist/esm/nodes/account/account-login.js.map +1 -1
- package/dist/esm/nodes/account/account-logout.js +1 -1
- package/dist/esm/nodes/account/account-refresh-session.js +1 -1
- package/dist/esm/nodes/account/account-request-password-reset.d.ts +3 -0
- package/dist/esm/nodes/account/account-request-password-reset.d.ts.map +1 -0
- package/dist/esm/nodes/account/account-request-password-reset.js +43 -0
- package/dist/esm/nodes/account/account-request-password-reset.js.map +1 -0
- package/dist/esm/nodes/account/account-reset-password.d.ts +3 -0
- package/dist/esm/nodes/account/account-reset-password.d.ts.map +1 -0
- package/dist/esm/nodes/account/account-reset-password.js +41 -0
- package/dist/esm/nodes/account/account-reset-password.js.map +1 -0
- package/dist/esm/nodes/account/account-signup.d.ts.map +1 -1
- package/dist/esm/nodes/account/account-signup.js +82 -19
- package/dist/esm/nodes/account/account-signup.js.map +1 -1
- package/dist/esm/nodes/account/account-social-login.js +1 -1
- package/dist/esm/nodes/ai/ai-custom-prompt.d.ts.map +1 -1
- package/dist/esm/nodes/ai/ai-custom-prompt.js +20 -5
- package/dist/esm/nodes/ai/ai-custom-prompt.js.map +1 -1
- package/dist/esm/nodes/ai/ai-detect-language.d.ts.map +1 -1
- package/dist/esm/nodes/ai/ai-detect-language.js +20 -5
- package/dist/esm/nodes/ai/ai-detect-language.js.map +1 -1
- package/dist/esm/nodes/ai/ai-generate-text-embedding.d.ts.map +1 -1
- package/dist/esm/nodes/ai/ai-generate-text-embedding.js +10 -2
- package/dist/esm/nodes/ai/ai-generate-text-embedding.js.map +1 -1
- package/dist/esm/nodes/ai/ai-provider-utils-sources.generated.js +2 -2
- package/dist/esm/nodes/ai/ai-provider-utils-sources.generated.js.map +1 -1
- package/dist/esm/nodes/ai/ai-provider-utils.d.ts +31 -2
- package/dist/esm/nodes/ai/ai-provider-utils.d.ts.map +1 -1
- package/dist/esm/nodes/ai/ai-provider-utils.js +124 -10
- package/dist/esm/nodes/ai/ai-provider-utils.js.map +1 -1
- package/dist/esm/nodes/ai/ai-select-database-data.d.ts.map +1 -1
- package/dist/esm/nodes/ai/ai-select-database-data.js +6 -2
- package/dist/esm/nodes/ai/ai-select-database-data.js.map +1 -1
- package/dist/esm/nodes/ai/ai-sentiment-analysis.d.ts.map +1 -1
- package/dist/esm/nodes/ai/ai-sentiment-analysis.js +20 -5
- package/dist/esm/nodes/ai/ai-sentiment-analysis.js.map +1 -1
- package/dist/esm/nodes/ai/ai-summarization.d.ts.map +1 -1
- package/dist/esm/nodes/ai/ai-summarization.js +20 -5
- package/dist/esm/nodes/ai/ai-summarization.js.map +1 -1
- package/dist/esm/nodes/ai/ai-text-classifier.d.ts.map +1 -1
- package/dist/esm/nodes/ai/ai-text-classifier.js +20 -5
- package/dist/esm/nodes/ai/ai-text-classifier.js.map +1 -1
- package/dist/esm/nodes/ai/ai-text-transform.d.ts.map +1 -1
- package/dist/esm/nodes/ai/ai-text-transform.js +20 -5
- package/dist/esm/nodes/ai/ai-text-transform.js.map +1 -1
- package/dist/esm/nodes/analytics/analytics-track-outcome.d.ts +3 -0
- package/dist/esm/nodes/analytics/analytics-track-outcome.d.ts.map +1 -0
- package/dist/esm/nodes/analytics/analytics-track-outcome.js +107 -0
- package/dist/esm/nodes/analytics/analytics-track-outcome.js.map +1 -0
- package/dist/esm/nodes/cart/cart-price-order.d.ts.map +1 -1
- package/dist/esm/nodes/cart/cart-price-order.js +161 -2
- package/dist/esm/nodes/cart/cart-price-order.js.map +1 -1
- package/dist/esm/nodes/cost-bearing-node-types.d.ts +4 -0
- package/dist/esm/nodes/cost-bearing-node-types.d.ts.map +1 -0
- package/dist/esm/nodes/cost-bearing-node-types.js +39 -0
- package/dist/esm/nodes/cost-bearing-node-types.js.map +1 -0
- package/dist/esm/nodes/data/data-select.d.ts.map +1 -1
- package/dist/esm/nodes/data/data-select.js +12 -2
- package/dist/esm/nodes/data/data-select.js.map +1 -1
- package/dist/esm/nodes/email/email-mailersend.d.ts.map +1 -1
- package/dist/esm/nodes/email/email-mailersend.js +15 -11
- package/dist/esm/nodes/email/email-mailersend.js.map +1 -1
- package/dist/esm/nodes/email/email-mailgun.d.ts.map +1 -1
- package/dist/esm/nodes/email/email-mailgun.js +15 -15
- package/dist/esm/nodes/email/email-mailgun.js.map +1 -1
- package/dist/esm/nodes/email/email-postmark.d.ts.map +1 -1
- package/dist/esm/nodes/email/email-postmark.js +15 -15
- package/dist/esm/nodes/email/email-postmark.js.map +1 -1
- package/dist/esm/nodes/email/email-resend.d.ts.map +1 -1
- package/dist/esm/nodes/email/email-resend.js +15 -15
- package/dist/esm/nodes/email/email-resend.js.map +1 -1
- package/dist/esm/nodes/email/email-sendgrid.d.ts.map +1 -1
- package/dist/esm/nodes/email/email-sendgrid.js +15 -15
- package/dist/esm/nodes/email/email-sendgrid.js.map +1 -1
- package/dist/esm/nodes/email/html-escape-code.d.ts +3 -0
- package/dist/esm/nodes/email/html-escape-code.d.ts.map +1 -0
- package/dist/esm/nodes/email/html-escape-code.js +18 -0
- package/dist/esm/nodes/email/html-escape-code.js.map +1 -0
- package/dist/esm/nodes/email/message-trust.d.ts +40 -0
- package/dist/esm/nodes/email/message-trust.d.ts.map +1 -0
- package/dist/esm/nodes/email/message-trust.js +161 -0
- package/dist/esm/nodes/email/message-trust.js.map +1 -0
- package/dist/esm/nodes/email/outbound-message-guard.d.ts +113 -0
- package/dist/esm/nodes/email/outbound-message-guard.d.ts.map +1 -0
- package/dist/esm/nodes/email/outbound-message-guard.js +452 -0
- package/dist/esm/nodes/email/outbound-message-guard.js.map +1 -0
- package/dist/esm/nodes/email/trusted-html-code.d.ts +22 -0
- package/dist/esm/nodes/email/trusted-html-code.d.ts.map +1 -0
- package/dist/esm/nodes/email/trusted-html-code.js +49 -0
- package/dist/esm/nodes/email/trusted-html-code.js.map +1 -0
- package/dist/esm/nodes/general/general-custom-js.d.ts.map +1 -1
- package/dist/esm/nodes/general/general-custom-js.js +44 -7
- package/dist/esm/nodes/general/general-custom-js.js.map +1 -1
- package/dist/esm/nodes/general/general-http-request.d.ts.map +1 -1
- package/dist/esm/nodes/general/general-http-request.js +431 -45
- package/dist/esm/nodes/general/general-http-request.js.map +1 -1
- package/dist/esm/nodes/general/general-rate-limiter.d.ts.map +1 -1
- package/dist/esm/nodes/general/general-rate-limiter.js +46 -78
- package/dist/esm/nodes/general/general-rate-limiter.js.map +1 -1
- package/dist/esm/nodes/general/general-wait.d.ts +3 -0
- package/dist/esm/nodes/general/general-wait.d.ts.map +1 -0
- package/dist/esm/nodes/general/general-wait.js +78 -0
- package/dist/esm/nodes/general/general-wait.js.map +1 -0
- package/dist/esm/nodes/general/visitor-request.d.ts +44 -0
- package/dist/esm/nodes/general/visitor-request.d.ts.map +1 -0
- package/dist/esm/nodes/general/visitor-request.js +65 -0
- package/dist/esm/nodes/general/visitor-request.js.map +1 -0
- package/dist/esm/nodes/index.d.ts.map +1 -1
- package/dist/esm/nodes/index.js +7 -1
- package/dist/esm/nodes/index.js.map +1 -1
- package/dist/esm/nodes/integrations/integration-slack.d.ts.map +1 -1
- package/dist/esm/nodes/integrations/integration-slack.js +17 -6
- package/dist/esm/nodes/integrations/integration-slack.js.map +1 -1
- package/dist/esm/nodes/newsletter/newsletter-confirm.d.ts +3 -0
- package/dist/esm/nodes/newsletter/newsletter-confirm.d.ts.map +1 -0
- package/dist/esm/nodes/newsletter/newsletter-confirm.js +38 -0
- package/dist/esm/nodes/newsletter/newsletter-confirm.js.map +1 -0
- package/dist/esm/nodes/newsletter/newsletter-subscribe.d.ts +7 -0
- package/dist/esm/nodes/newsletter/newsletter-subscribe.d.ts.map +1 -0
- package/dist/esm/nodes/newsletter/newsletter-subscribe.js +66 -0
- package/dist/esm/nodes/newsletter/newsletter-subscribe.js.map +1 -0
- package/dist/esm/nodes/newsletter/newsletter-unsubscribe.d.ts +3 -0
- package/dist/esm/nodes/newsletter/newsletter-unsubscribe.d.ts.map +1 -0
- package/dist/esm/nodes/newsletter/newsletter-unsubscribe.js +39 -0
- package/dist/esm/nodes/newsletter/newsletter-unsubscribe.js.map +1 -0
- package/dist/esm/nodes/realtime/realtime-join-channel.d.ts.map +1 -1
- package/dist/esm/nodes/realtime/realtime-join-channel.js +5 -4
- package/dist/esm/nodes/realtime/realtime-join-channel.js.map +1 -1
- package/dist/esm/nodes/realtime/realtime-send-channel-event.d.ts.map +1 -1
- package/dist/esm/nodes/realtime/realtime-send-channel-event.js +11 -2
- package/dist/esm/nodes/realtime/realtime-send-channel-event.js.map +1 -1
- package/dist/esm/nodes/realtime/realtime-send-channel-message.d.ts.map +1 -1
- package/dist/esm/nodes/realtime/realtime-send-channel-message.js +11 -2
- package/dist/esm/nodes/realtime/realtime-send-channel-message.js.map +1 -1
- package/dist/esm/nodes/sms/sms-infobip.d.ts.map +1 -1
- package/dist/esm/nodes/sms/sms-infobip.js +11 -8
- package/dist/esm/nodes/sms/sms-infobip.js.map +1 -1
- package/dist/esm/nodes/sms/sms-smsapi.d.ts.map +1 -1
- package/dist/esm/nodes/sms/sms-smsapi.js +11 -8
- package/dist/esm/nodes/sms/sms-smsapi.js.map +1 -1
- package/dist/esm/nodes/sms/sms-textmagic.d.ts.map +1 -1
- package/dist/esm/nodes/sms/sms-textmagic.js +11 -8
- package/dist/esm/nodes/sms/sms-textmagic.js.map +1 -1
- package/dist/esm/nodes/sms/sms-twilio.d.ts.map +1 -1
- package/dist/esm/nodes/sms/sms-twilio.js +12 -10
- package/dist/esm/nodes/sms/sms-twilio.js.map +1 -1
- package/dist/esm/nodes/types.d.ts +8 -1
- package/dist/esm/nodes/types.d.ts.map +1 -1
- package/dist/esm/nodes/utility/utility-similarity-scoring.d.ts.map +1 -1
- package/dist/esm/nodes/utility/utility-similarity-scoring.js +29 -10
- package/dist/esm/nodes/utility/utility-similarity-scoring.js.map +1 -1
- package/dist/esm/page-access-guard-generator.d.ts +23 -0
- package/dist/esm/page-access-guard-generator.d.ts.map +1 -0
- package/dist/esm/page-access-guard-generator.js +131 -0
- package/dist/esm/page-access-guard-generator.js.map +1 -0
- package/dist/esm/password-reset-route-generator.d.ts +119 -0
- package/dist/esm/password-reset-route-generator.d.ts.map +1 -0
- package/dist/esm/password-reset-route-generator.js +448 -0
- package/dist/esm/password-reset-route-generator.js.map +1 -0
- package/dist/esm/payments/payment-core-code.d.ts.map +1 -1
- package/dist/esm/payments/payment-core-code.js +12 -7
- package/dist/esm/payments/payment-core-code.js.map +1 -1
- package/dist/esm/project-code-scanner.d.ts +11 -0
- package/dist/esm/project-code-scanner.d.ts.map +1 -0
- package/dist/esm/project-code-scanner.js +75 -0
- package/dist/esm/project-code-scanner.js.map +1 -0
- package/dist/esm/public-step-guards.d.ts +122 -0
- package/dist/esm/public-step-guards.d.ts.map +1 -0
- package/dist/esm/public-step-guards.js +280 -0
- package/dist/esm/public-step-guards.js.map +1 -0
- package/dist/esm/publish-refusals.d.ts +66 -0
- package/dist/esm/publish-refusals.d.ts.map +1 -0
- package/dist/esm/publish-refusals.js +271 -0
- package/dist/esm/publish-refusals.js.map +1 -0
- package/dist/esm/realtime-generator.d.ts +63 -1
- package/dist/esm/realtime-generator.d.ts.map +1 -1
- package/dist/esm/realtime-generator.js +401 -229
- package/dist/esm/realtime-generator.js.map +1 -1
- package/dist/esm/runtime-storage-generator.d.ts +32 -1
- package/dist/esm/runtime-storage-generator.d.ts.map +1 -1
- package/dist/esm/runtime-storage-generator.js +264 -11
- package/dist/esm/runtime-storage-generator.js.map +1 -1
- package/dist/esm/security-runtime/index.d.ts +14 -0
- package/dist/esm/security-runtime/index.d.ts.map +1 -0
- package/dist/esm/security-runtime/index.js +37 -0
- package/dist/esm/security-runtime/index.js.map +1 -0
- package/dist/esm/security-runtime/security-runtime-code.d.ts +53 -0
- package/dist/esm/security-runtime/security-runtime-code.d.ts.map +1 -0
- package/dist/esm/security-runtime/security-runtime-code.js +575 -0
- package/dist/esm/security-runtime/security-runtime-code.js.map +1 -0
- package/dist/esm/security-scanner.d.ts +72 -3
- package/dist/esm/security-scanner.d.ts.map +1 -1
- package/dist/esm/security-scanner.js +217 -8
- package/dist/esm/security-scanner.js.map +1 -1
- package/dist/esm/segment-splitter.d.ts.map +1 -1
- package/dist/esm/segment-splitter.js +10 -2
- package/dist/esm/segment-splitter.js.map +1 -1
- package/dist/esm/segment-trust.d.ts +36 -0
- package/dist/esm/segment-trust.d.ts.map +1 -1
- package/dist/esm/segment-trust.js +146 -2
- package/dist/esm/segment-trust.js.map +1 -1
- package/dist/esm/self-call-headers.d.ts +31 -0
- package/dist/esm/self-call-headers.d.ts.map +1 -0
- package/dist/esm/self-call-headers.js +43 -0
- package/dist/esm/self-call-headers.js.map +1 -0
- package/dist/esm/sent-email-log/index.d.ts +7 -0
- package/dist/esm/sent-email-log/index.d.ts.map +1 -1
- package/dist/esm/sent-email-log/index.js +15 -0
- package/dist/esm/sent-email-log/index.js.map +1 -1
- package/dist/esm/sent-email-log/sent-email-log-code.d.ts +7 -0
- package/dist/esm/sent-email-log/sent-email-log-code.d.ts.map +1 -1
- package/dist/esm/sent-email-log/sent-email-log-code.js +17 -3
- package/dist/esm/sent-email-log/sent-email-log-code.js.map +1 -1
- package/dist/esm/server-custom-node-call.d.ts +79 -0
- package/dist/esm/server-custom-node-call.d.ts.map +1 -0
- package/dist/esm/server-custom-node-call.js +278 -0
- package/dist/esm/server-custom-node-call.js.map +1 -0
- package/dist/esm/server-runtime-code.d.ts +39 -12
- package/dist/esm/server-runtime-code.d.ts.map +1 -1
- package/dist/esm/server-runtime-code.js +483 -40
- package/dist/esm/server-runtime-code.js.map +1 -1
- package/dist/esm/session-cookie-resolver.d.ts +3 -1
- package/dist/esm/session-cookie-resolver.d.ts.map +1 -1
- package/dist/esm/session-revocation-generator.d.ts +39 -0
- package/dist/esm/session-revocation-generator.d.ts.map +1 -0
- package/dist/esm/session-revocation-generator.js +172 -0
- package/dist/esm/session-revocation-generator.js.map +1 -0
- package/dist/esm/slack-message-values.d.ts +6 -0
- package/dist/esm/slack-message-values.d.ts.map +1 -0
- package/dist/esm/slack-message-values.js +68 -0
- package/dist/esm/slack-message-values.js.map +1 -0
- package/dist/esm/transactional-email-code.d.ts +11 -0
- package/dist/esm/transactional-email-code.d.ts.map +1 -1
- package/dist/esm/transactional-email-code.js +28 -4
- package/dist/esm/transactional-email-code.js.map +1 -1
- package/dist/esm/trigger-generator.d.ts +2 -0
- package/dist/esm/trigger-generator.d.ts.map +1 -1
- package/dist/esm/trigger-generator.js +15 -3
- package/dist/esm/trigger-generator.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/visitor-step-limits.d.ts +66 -0
- package/dist/esm/visitor-step-limits.d.ts.map +1 -0
- package/dist/esm/visitor-step-limits.js +181 -0
- package/dist/esm/visitor-step-limits.js.map +1 -0
- package/dist/esm/webhook-generator.d.ts.map +1 -1
- package/dist/esm/webhook-generator.js +93 -15
- package/dist/esm/webhook-generator.js.map +1 -1
- package/dist/esm/webhook-signature-verification.d.ts.map +1 -1
- package/dist/esm/webhook-signature-verification.js +13 -3
- package/dist/esm/webhook-signature-verification.js.map +1 -1
- package/dist/esm/workflow-auth-generator.d.ts +4 -1
- package/dist/esm/workflow-auth-generator.d.ts.map +1 -1
- package/dist/esm/workflow-auth-generator.js +8 -3
- package/dist/esm/workflow-auth-generator.js.map +1 -1
- package/dist/esm/workflow-component-plugin.js +12 -4
- package/dist/esm/workflow-component-plugin.js.map +1 -1
- package/dist/esm/workflow-project-plugin.d.ts.map +1 -1
- package/dist/esm/workflow-project-plugin.js +306 -60
- package/dist/esm/workflow-project-plugin.js.map +1 -1
- package/dist/esm/workflow-scope.d.ts.map +1 -1
- package/dist/esm/workflow-scope.js +5 -0
- package/dist/esm/workflow-scope.js.map +1 -1
- package/package.json +4 -4
- package/src/account-delete-route-generator.ts +28 -4
- package/src/api-route-generator.ts +712 -134
- package/src/auth-generator.ts +1471 -142
- package/src/automations/activity-kicks.ts +139 -0
- package/src/automations/app-events-source.ts +117 -0
- package/src/automations/automations-project-plugin.ts +202 -0
- package/src/automations/automations-scope.ts +196 -0
- package/src/automations/dispatcher-source.ts +1072 -0
- package/src/automations/event-bus-source.ts +428 -0
- package/src/automations/handler-module-generator.ts +107 -0
- package/src/automations/hydrators-source.ts +647 -0
- package/src/booking-calendar-feed-route-generator.ts +8 -0
- package/src/configured-nextauth-url.ts +17 -0
- package/src/cron-request-verification.ts +55 -5
- package/src/data-api-route-generator.ts +780 -43
- package/src/ecommerce/parameterized-stock-chain.ts +52 -5
- package/src/ecommerce/place-order-guards.ts +785 -0
- package/src/ecommerce-customhandler-rewriter.ts +55 -2
- package/src/executor-generator.ts +372 -60
- package/src/graph-utils.ts +33 -0
- package/src/index.ts +70 -0
- package/src/invoice/api-routes-code.ts +20 -7
- package/src/invoice/index.ts +11 -6
- package/src/invoice/invoice-assembly-code.ts +8 -3
- package/src/invoice/pdf-generator-code.ts +2 -1
- package/src/invoice/pdf-service-client-code.ts +15 -7
- package/src/newsletter/admin-route-code.ts +319 -0
- package/src/newsletter/helper-code.ts +748 -0
- package/src/newsletter/newsletter-scope.ts +116 -0
- package/src/newsletter/project-plugin.ts +119 -0
- package/src/newsletter/routes-code.ts +186 -0
- package/src/nodes/account/account-compare-passwords.ts +17 -6
- package/src/nodes/account/account-delete-current.ts +1 -1
- package/src/nodes/account/account-get-current.ts +1 -1
- package/src/nodes/account/account-hash-password.ts +19 -3
- package/src/nodes/account/account-login.ts +24 -7
- package/src/nodes/account/account-logout.ts +1 -1
- package/src/nodes/account/account-refresh-session.ts +1 -1
- package/src/nodes/account/account-request-password-reset.ts +47 -0
- package/src/nodes/account/account-reset-password.ts +45 -0
- package/src/nodes/account/account-signup.ts +86 -20
- package/src/nodes/account/account-social-login.ts +1 -1
- package/src/nodes/ai/ai-custom-prompt.ts +25 -6
- package/src/nodes/ai/ai-detect-language.ts +25 -6
- package/src/nodes/ai/ai-generate-text-embedding.ts +16 -3
- package/src/nodes/ai/ai-provider-utils-sources.generated.ts +2 -2
- package/src/nodes/ai/ai-provider-utils.ts +135 -10
- package/src/nodes/ai/ai-select-database-data.ts +8 -3
- package/src/nodes/ai/ai-sentiment-analysis.ts +25 -6
- package/src/nodes/ai/ai-summarization.ts +25 -6
- package/src/nodes/ai/ai-text-classifier.ts +25 -6
- package/src/nodes/ai/ai-text-transform.ts +25 -6
- package/src/nodes/analytics/analytics-track-outcome.ts +111 -0
- package/src/nodes/cart/cart-price-order.ts +200 -2
- package/src/nodes/cost-bearing-node-types.ts +45 -0
- package/src/nodes/data/data-select.ts +11 -2
- package/src/nodes/email/email-mailersend.ts +16 -8
- package/src/nodes/email/email-mailgun.ts +17 -12
- package/src/nodes/email/email-postmark.ts +17 -12
- package/src/nodes/email/email-resend.ts +17 -12
- package/src/nodes/email/email-sendgrid.ts +17 -12
- package/src/nodes/email/html-escape-code.ts +21 -0
- package/src/nodes/email/message-trust.ts +198 -0
- package/src/nodes/email/outbound-message-guard.ts +572 -0
- package/src/nodes/email/trusted-html-code.ts +49 -0
- package/src/nodes/general/general-custom-js.ts +46 -7
- package/src/nodes/general/general-http-request.ts +449 -46
- package/src/nodes/general/general-rate-limiter.ts +54 -81
- package/src/nodes/general/general-wait.ts +80 -0
- package/src/nodes/general/visitor-request.ts +79 -0
- package/src/nodes/index.ts +12 -0
- package/src/nodes/integrations/integration-slack.ts +21 -6
- package/src/nodes/newsletter/newsletter-confirm.ts +44 -0
- package/src/nodes/newsletter/newsletter-subscribe.ts +78 -0
- package/src/nodes/newsletter/newsletter-unsubscribe.ts +43 -0
- package/src/nodes/realtime/realtime-join-channel.ts +5 -4
- package/src/nodes/realtime/realtime-send-channel-event.ts +13 -2
- package/src/nodes/realtime/realtime-send-channel-message.ts +13 -2
- package/src/nodes/sms/sms-infobip.ts +14 -4
- package/src/nodes/sms/sms-smsapi.ts +14 -4
- package/src/nodes/sms/sms-textmagic.ts +14 -4
- package/src/nodes/sms/sms-twilio.ts +14 -4
- package/src/nodes/types.ts +9 -1
- package/src/nodes/utility/utility-similarity-scoring.ts +33 -12
- package/src/page-access-guard-generator.ts +154 -0
- package/src/password-reset-route-generator.ts +531 -0
- package/src/payments/payment-core-code.ts +12 -7
- package/src/project-code-scanner.ts +98 -0
- package/src/public-step-guards.ts +448 -0
- package/src/publish-refusals.ts +459 -0
- package/src/realtime-generator.ts +457 -234
- package/src/runtime-storage-generator.ts +270 -11
- package/src/security-runtime/index.ts +53 -0
- package/src/security-runtime/security-runtime-code.ts +579 -0
- package/src/security-scanner.ts +253 -10
- package/src/segment-splitter.ts +10 -2
- package/src/segment-trust.ts +205 -2
- package/src/self-call-headers.ts +46 -0
- package/src/sent-email-log/index.ts +16 -0
- package/src/sent-email-log/sent-email-log-code.ts +30 -4
- package/src/server-custom-node-call.ts +331 -0
- package/src/server-runtime-code.ts +488 -40
- package/src/session-revocation-generator.ts +177 -0
- package/src/slack-message-values.ts +84 -0
- package/src/transactional-email-code.ts +30 -4
- package/src/trigger-generator.ts +19 -3
- package/src/visitor-step-limits.ts +228 -0
- package/src/webhook-generator.ts +94 -14
- package/src/webhook-signature-verification.ts +13 -3
- package/src/workflow-auth-generator.ts +9 -4
- package/src/workflow-component-plugin.ts +14 -4
- package/src/workflow-project-plugin.ts +374 -61
- package/src/workflow-scope.ts +6 -0
|
@@ -1,9 +1,19 @@
|
|
|
1
|
+
import { CONFIGURED_NEXTAUTH_URL_EXPRESSION } from './configured-nextauth-url';
|
|
2
|
+
import { generateCommonJsSessionTokenResolverCode } from './session-cookie-resolver';
|
|
3
|
+
import { ROLE_OF_TOKEN_CODE } from './workflow-auth-generator';
|
|
4
|
+
import { SESSION_STAMP_KEY } from './session-revocation-generator';
|
|
1
5
|
import { generateVercelFunctionsLoaderCode } from './vercel-functions';
|
|
6
|
+
/** How long a signed step result stays good: older ones are refused. */
|
|
7
|
+
export const SIGNED_RESULT_MAX_AGE_MS = 10 * 60 * 1000;
|
|
8
|
+
/** How far ahead of a route's clock another instance's signature may be dated. */
|
|
9
|
+
export const SIGNED_RESULT_CLOCK_SKEW_MS = 60 * 1000;
|
|
10
|
+
/** What a visitor is told when the run a step continues has expired (409). */
|
|
11
|
+
export const STEP_EXPIRED_MESSAGE = 'This took too long. Please start again.';
|
|
2
12
|
/**
|
|
3
13
|
* `utils/workflows/server-runtime.js`: what every server route loads. It is the
|
|
4
14
|
* shared runtime utilities plus the parts only a server may run — the signed
|
|
5
|
-
* hand-off between server segments
|
|
6
|
-
* of it reaches the browser bundle.
|
|
15
|
+
* hand-off between server segments, the visitor's session identity and the
|
|
16
|
+
* internal-call credential — so none of it reaches the browser bundle.
|
|
7
17
|
*
|
|
8
18
|
* WHY THE HAND-OFF IS SIGNED. A workflow runs as a chain of segments, and the
|
|
9
19
|
* result of every server segment reaches the next one THROUGH the caller: the
|
|
@@ -12,17 +22,36 @@ import { generateVercelFunctionsLoaderCode } from './vercel-functions';
|
|
|
12
22
|
* earlier one — an order marked valid, a password-reset token marked checked
|
|
13
23
|
* — and the later segment acted on it. So:
|
|
14
24
|
*
|
|
25
|
+
* - Every result belongs to a RUN (`__sigRun`): one execution of the workflow.
|
|
26
|
+
* The first server segment of the graph opens it with a random id signed for
|
|
27
|
+
* this workflow; every later segment continues the run its request carries.
|
|
15
28
|
* - `segmentReply` signs every result its segment produced (`__sig`, an HMAC
|
|
16
|
-
* keyed from NEXTAUTH_SECRET over the
|
|
17
|
-
*
|
|
18
|
-
*
|
|
29
|
+
* keyed from NEXTAUTH_SECRET over the workflow, the producing segment, the
|
|
30
|
+
* run, the time of signing, the node id and the JSON value), and one link of
|
|
31
|
+
* the run's chain (`__sigOrder`): the order of the context's keys as the
|
|
32
|
+
* caller will hold them (`params` in custom JavaScript are read by
|
|
33
|
+
* position), the call's number in the run, and the signature of every result
|
|
34
|
+
* the caller may hand on, bound to the same workflow, run and time.
|
|
19
35
|
* - `claimSegmentContext` puts the keys back in that signed order (a key the
|
|
20
|
-
* request left out keeps its slot, empty), empties every server result
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
36
|
+
* request left out keeps its slot, empty), empties every server result whose
|
|
37
|
+
* signature does not hold — another workflow's, another run's, one older
|
|
38
|
+
* than ten minutes, one the link does not list with that very signature (a
|
|
39
|
+
* result of another call of the same segment: a run is one chain) — drops
|
|
40
|
+
* custom-node and loop bookkeeping a request cannot legitimately carry,
|
|
41
|
+
* skips every node a server if / switch upstream did not choose (or whose
|
|
42
|
+
* decision is missing), and takes `__previousNodeResult` from the signed
|
|
43
|
+
* result of the server node that ran just before.
|
|
44
|
+
*
|
|
45
|
+
* WHO THE VISITOR IS comes from the session cookie, never from the request
|
|
46
|
+
* body. `claimSegmentContext` drops whatever the request says about it and
|
|
47
|
+
* leaves the reserved keys `__sessionUserId`, `__sessionRole` and
|
|
48
|
+
* `__sessionUser` empty (and the page state's `currentUser` with them); a route
|
|
49
|
+
* whose segment reads the visitor (SEGMENT_CONFIG.session) fills them from the
|
|
50
|
+
* session with `bindSessionIdentity`, rebuilds the result of the graph's
|
|
51
|
+
* current-user readers from them, binds the route's `userScoped` identity
|
|
52
|
+
* columns, and — through `bindSessionHandlers` — binds those columns again
|
|
53
|
+
* after the node that produces them runs inside the segment, and answers an
|
|
54
|
+
* identity-filtered read with no rows when there is no identity to filter by.
|
|
26
55
|
*
|
|
27
56
|
* What the BROWSER itself computes stays untrusted by design; a server segment
|
|
28
57
|
* that needs a trustworthy figure (a price, an owner) reads it from the
|
|
@@ -39,7 +68,7 @@ import { generateVercelFunctionsLoaderCode } from './vercel-functions';
|
|
|
39
68
|
* The facts about the graph each route needs are baked into its
|
|
40
69
|
* SEGMENT_CONFIG at generation time (see segment-trust.ts).
|
|
41
70
|
*/
|
|
42
|
-
export const generateServerRuntimeCode = () => `'use strict';
|
|
71
|
+
export const generateServerRuntimeCode = (options = {}) => `'use strict';
|
|
43
72
|
var crypto = require('crypto');
|
|
44
73
|
var utils = require('./runtime-utils');
|
|
45
74
|
|
|
@@ -137,26 +166,109 @@ function isControlKey(key) {
|
|
|
137
166
|
return key.indexOf('__') === 0;
|
|
138
167
|
}
|
|
139
168
|
|
|
140
|
-
|
|
169
|
+
// ---------------------------------------------------------------------------
|
|
170
|
+
// The signed hand-off
|
|
171
|
+
// ---------------------------------------------------------------------------
|
|
172
|
+
|
|
173
|
+
// A signed result is good for this long, and may be dated this far ahead of
|
|
174
|
+
// this instance's clock (another instance signed it).
|
|
175
|
+
var SIGNED_MAX_AGE_MS = ${SIGNED_RESULT_MAX_AGE_MS};
|
|
176
|
+
var SIGNED_CLOCK_SKEW_MS = ${SIGNED_RESULT_CLOCK_SKEW_MS};
|
|
177
|
+
|
|
178
|
+
function workflowIdOf(segmentConfig) {
|
|
179
|
+
return segmentConfig && typeof segmentConfig.workflowId === 'string' ? segmentConfig.workflowId : '';
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
function segmentIdOf(segmentConfig) {
|
|
183
|
+
return segmentConfig && typeof segmentConfig.segmentId === 'string' ? segmentConfig.segmentId : '';
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// The segment of this graph that produces a node's result.
|
|
187
|
+
function producerOf(segmentConfig, nodeId) {
|
|
188
|
+
var by = segmentConfig && segmentConfig.signedBy;
|
|
189
|
+
return by && typeof by === 'object' && typeof by[nodeId] === 'string' ? by[nodeId] : '';
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
function runMac(workflowId, runId) {
|
|
193
|
+
return mac(JSON.stringify(['run', 2, workflowId, runId]));
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
function openRun(workflowId) {
|
|
197
|
+
var id = crypto.randomBytes(16).toString('hex');
|
|
198
|
+
return { id: id, mac: runMac(workflowId, id) };
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// The run the request continues, or null when it names none this workflow opened.
|
|
202
|
+
function readRun(workflowId, context) {
|
|
203
|
+
var run = context.__sigRun;
|
|
204
|
+
if (!run || typeof run !== 'object' || typeof run.id !== 'string' || !/^[0-9a-f]{32}$/.test(run.id)) {
|
|
205
|
+
return null;
|
|
206
|
+
}
|
|
207
|
+
return sameMac(run.mac, runMac(workflowId, run.id)) ? { id: run.id, mac: run.mac } : null;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
function isFresh(at, now) {
|
|
211
|
+
return typeof at === 'number' && isFinite(at) && at <= now + SIGNED_CLOCK_SKEW_MS && now - at <= SIGNED_MAX_AGE_MS;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
function resultMac(workflowId, segmentId, runId, at, nodeId, value) {
|
|
141
215
|
var serialized;
|
|
142
216
|
try { serialized = JSON.stringify(value); } catch (e) { return null; }
|
|
143
217
|
if (serialized === undefined) return null;
|
|
144
|
-
return mac('result
|
|
218
|
+
return mac(JSON.stringify(['result', 2, workflowId, segmentId, runId, at, nodeId, serialized]));
|
|
145
219
|
}
|
|
146
220
|
|
|
147
|
-
|
|
148
|
-
|
|
221
|
+
// A result's signature: '<when it was signed, ms>.<mac>'.
|
|
222
|
+
function signResult(workflowId, segmentId, run, at, nodeId, value) {
|
|
223
|
+
var signature = resultMac(workflowId, segmentId, run.id, at, nodeId, value);
|
|
224
|
+
return signature ? at + '.' + signature : null;
|
|
149
225
|
}
|
|
150
226
|
|
|
151
|
-
//
|
|
152
|
-
//
|
|
153
|
-
function
|
|
227
|
+
// 'valid', 'expired' (signed in this run, but too long ago or dated too far
|
|
228
|
+
// ahead) or 'invalid'.
|
|
229
|
+
function signatureVerdict(segmentConfig, run, nodeId, value, signature, now) {
|
|
230
|
+
if (typeof signature !== 'string') return 'invalid';
|
|
231
|
+
var dot = signature.indexOf('.');
|
|
232
|
+
var stamp = dot > 0 ? signature.slice(0, dot) : '';
|
|
233
|
+
if (!/^[0-9]{1,16}$/.test(stamp)) return 'invalid';
|
|
234
|
+
var at = Number(stamp);
|
|
235
|
+
var expected = resultMac(workflowIdOf(segmentConfig), producerOf(segmentConfig, nodeId), run.id, at, nodeId, value);
|
|
236
|
+
if (!expected || !sameMac(signature.slice(dot + 1), expected)) return 'invalid';
|
|
237
|
+
return isFresh(at, now) ? 'valid' : 'expired';
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
// The link of the run's chain one segment call signs: the order of the keys
|
|
241
|
+
// the caller will hold, the call's number in the run (\`n\`), and the
|
|
242
|
+
// signature of every result the caller may hand on — the ones this call was
|
|
243
|
+
// given and accepted, and its own. A later call accepts a relayed result only
|
|
244
|
+
// when its signature is the one the link it is given lists, so a run is one
|
|
245
|
+
// chain: a segment called twice in a run forks it, and no request can combine
|
|
246
|
+
// results of the two forks.
|
|
247
|
+
function orderMac(workflowId, runId, at, n, keys, sigs) {
|
|
248
|
+
return mac(JSON.stringify(['order', 3, workflowId, runId, at, n, keys, sigs]));
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
var NO_ORDER = { keys: null, n: 0, sigs: {} };
|
|
252
|
+
|
|
253
|
+
// The link the request continues, as the last server segment of this run
|
|
254
|
+
// signed it; \`keys: null\` when the request carries no valid one (\`expired\`
|
|
255
|
+
// when it is this run's, signed too long ago).
|
|
256
|
+
function readSignedOrder(segmentConfig, run, context, now) {
|
|
154
257
|
var order = context.__sigOrder;
|
|
155
|
-
if (!order || typeof order !== 'object' || !Array.isArray(order.keys)) return
|
|
258
|
+
if (!order || typeof order !== 'object' || !Array.isArray(order.keys) || typeof order.at !== 'number') return NO_ORDER;
|
|
259
|
+
if (typeof order.n !== 'number' || !(order.n >= 1) || Math.floor(order.n) !== order.n || !Array.isArray(order.sigs)) return NO_ORDER;
|
|
156
260
|
for (var i = 0; i < order.keys.length; i++) {
|
|
157
|
-
if (typeof order.keys[i] !== 'string' || isControlKey(order.keys[i])) return
|
|
261
|
+
if (typeof order.keys[i] !== 'string' || isControlKey(order.keys[i])) return NO_ORDER;
|
|
262
|
+
}
|
|
263
|
+
var sigs = {};
|
|
264
|
+
for (var s = 0; s < order.sigs.length; s++) {
|
|
265
|
+
var pair = order.sigs[s];
|
|
266
|
+
if (!Array.isArray(pair) || pair.length !== 2 || typeof pair[0] !== 'string' || typeof pair[1] !== 'string' || has(sigs, pair[0])) return NO_ORDER;
|
|
267
|
+
sigs[pair[0]] = pair[1];
|
|
158
268
|
}
|
|
159
|
-
|
|
269
|
+
if (!sameMac(order.mac, orderMac(workflowIdOf(segmentConfig), run.id, order.at, order.n, order.keys, order.sigs))) return NO_ORDER;
|
|
270
|
+
if (!isFresh(order.at, now)) return { keys: null, n: 0, sigs: {}, expired: true };
|
|
271
|
+
return { keys: order.keys, n: order.n, sigs: sigs };
|
|
160
272
|
}
|
|
161
273
|
|
|
162
274
|
function restoreOrder(context, keys) {
|
|
@@ -183,20 +295,40 @@ function restoreOrder(context, keys) {
|
|
|
183
295
|
}
|
|
184
296
|
}
|
|
185
297
|
|
|
186
|
-
|
|
298
|
+
// Empties every relayed result whose signature does not hold — checked against
|
|
299
|
+
// the signature the link the request continues lists for it, never one the
|
|
300
|
+
// request supplies alongside — and returns { accepted, expired }: the
|
|
301
|
+
// signatures of the results it kept, and whether one of them was signed in this
|
|
302
|
+
// run but has expired.
|
|
303
|
+
function dropUnsignedResults(segmentConfig, run, context, order, now) {
|
|
187
304
|
var ids = segmentConfig.signedNodeIds || [];
|
|
188
|
-
|
|
305
|
+
var accepted = {};
|
|
306
|
+
var expired = false;
|
|
189
307
|
var listed = {};
|
|
190
|
-
for (var o = 0; o < (
|
|
191
|
-
var sigs = context.__sig && typeof context.__sig === 'object' && !Array.isArray(context.__sig) ? context.__sig : {};
|
|
308
|
+
for (var o = 0; o < (order.keys || []).length; o++) listed[order.keys[o]] = true;
|
|
192
309
|
for (var i = 0; i < ids.length; i++) {
|
|
193
310
|
var id = ids[i];
|
|
194
311
|
if (!has(context, id) || context[id] === undefined) continue;
|
|
195
|
-
var
|
|
196
|
-
|
|
312
|
+
var signature = has(order.sigs, id) ? order.sigs[id] : null;
|
|
313
|
+
var verdict = signature ? signatureVerdict(segmentConfig, run, id, context[id], signature, now) : 'invalid';
|
|
314
|
+
if (verdict === 'expired') expired = true;
|
|
315
|
+
if (!listed[id] || verdict !== 'valid') {
|
|
197
316
|
context[id] = undefined;
|
|
317
|
+
} else {
|
|
318
|
+
accepted[id] = signature;
|
|
198
319
|
}
|
|
199
320
|
}
|
|
321
|
+
return { accepted: accepted, expired: expired };
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
// What the visitor is told when the run they are continuing has expired (a
|
|
325
|
+
// step waited longer than a signed result is good for): start again.
|
|
326
|
+
var STEP_EXPIRED_MESSAGE = ${JSON.stringify(STEP_EXPIRED_MESSAGE)};
|
|
327
|
+
|
|
328
|
+
function expiredRunError() {
|
|
329
|
+
var error = new Error('the signed results this request continues are older than ' + SIGNED_MAX_AGE_MS + ' ms');
|
|
330
|
+
error.__tqPublic = { status: 409, message: STEP_EXPIRED_MESSAGE };
|
|
331
|
+
return error;
|
|
200
332
|
}
|
|
201
333
|
|
|
202
334
|
function stripForeignControlKeys(segmentConfig, context) {
|
|
@@ -265,10 +397,255 @@ function resetPreviousResult(segmentConfig, context) {
|
|
|
265
397
|
context.__previousNodeResult = value !== undefined ? value : {};
|
|
266
398
|
}
|
|
267
399
|
|
|
400
|
+
// ---------------------------------------------------------------------------
|
|
401
|
+
// The visitor's identity, from the session cookie
|
|
402
|
+
// ---------------------------------------------------------------------------
|
|
403
|
+
|
|
404
|
+
${generateCommonJsSessionTokenResolverCode('../..', {
|
|
405
|
+
withRevocation: options.withSessionRevocation !== false,
|
|
406
|
+
})}
|
|
407
|
+
${ROLE_OF_TOKEN_CODE}
|
|
408
|
+
|
|
409
|
+
// Reserved context keys: set here from the session, never read from a request.
|
|
410
|
+
var SESSION_KEYS = ['__sessionUserId', '__sessionRole', '__sessionUser'];
|
|
411
|
+
|
|
412
|
+
// What a decoded session token carries besides the user (see the session
|
|
413
|
+
// callback of the auth route, which leaves the same keys off session.user).
|
|
414
|
+
var SESSION_TOKEN_BOOKKEEPING = { iat: true, exp: true, jti: true, sub: true, __userRefreshedAt: true, ${SESSION_STAMP_KEY}: true };
|
|
415
|
+
|
|
416
|
+
// A session whose account changed its password (or session_version) since it
|
|
417
|
+
// was issued is no session: the shared reader runs that check for every server
|
|
418
|
+
// file (utils/auth/session-revocation.js).
|
|
419
|
+
function liveSessionToken(req) {
|
|
420
|
+
return __tqSessionToken(req);
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
// The signed-in user as /api/auth/session describes it, or null for a guest.
|
|
424
|
+
function sessionUserOf(token) {
|
|
425
|
+
if (!token || typeof token !== 'object') return null;
|
|
426
|
+
var id = token.id != null ? token.id : (token.sub != null ? token.sub : null);
|
|
427
|
+
if (id == null || String(id) === '') return null;
|
|
428
|
+
var user = {
|
|
429
|
+
name: token.name != null ? token.name : null,
|
|
430
|
+
email: token.email != null ? token.email : null,
|
|
431
|
+
image: token.picture != null ? token.picture : null
|
|
432
|
+
};
|
|
433
|
+
Object.keys(token).forEach(function(key) {
|
|
434
|
+
if (!SESSION_TOKEN_BOOKKEEPING[key]) user[key] = token[key];
|
|
435
|
+
});
|
|
436
|
+
user.id = id;
|
|
437
|
+
return user;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
// The page state's \`currentUser\`, shaped as the app's global context keeps it.
|
|
441
|
+
function currentUserState(user) {
|
|
442
|
+
var state = { id: null, name: null, email: null, emailVerified: null, image: null, role: null };
|
|
443
|
+
Object.keys(user).forEach(function(key) { state[key] = user[key] != null ? user[key] : null; });
|
|
444
|
+
return state;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
// Every copy of the page state the request carries: the context's own and the
|
|
448
|
+
// trigger's (see pruneContext in the client runtime).
|
|
449
|
+
function eachStateBag(context, visit) {
|
|
450
|
+
Object.keys(context).forEach(function(key) {
|
|
451
|
+
var value = context[key];
|
|
452
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) return;
|
|
453
|
+
if (key === '__stateValues') {
|
|
454
|
+
visit(value);
|
|
455
|
+
} else if (value.__stateValues && typeof value.__stateValues === 'object' && !Array.isArray(value.__stateValues)) {
|
|
456
|
+
visit(value.__stateValues);
|
|
457
|
+
}
|
|
458
|
+
});
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
// The \`currentUser\` the request's own copies of the page state held, put back
|
|
462
|
+
// before replying: the run reads the session's user, the reply never carries
|
|
463
|
+
// a rewritten copy of the trigger's page state back to the browser.
|
|
464
|
+
var __rewrittenStateBags = new WeakMap();
|
|
465
|
+
|
|
466
|
+
function setSessionIdentity(context, user, role) {
|
|
467
|
+
context.__sessionUserId = user ? user.id : null;
|
|
468
|
+
context.__sessionRole = user && typeof role === 'string' && role ? role : null;
|
|
469
|
+
context.__sessionUser = user || null;
|
|
470
|
+
var rewritten = __rewrittenStateBags.get(context) || [];
|
|
471
|
+
eachStateBag(context, function(bag) {
|
|
472
|
+
if (!has(bag, 'currentUser')) return;
|
|
473
|
+
if (!rewritten.some(function(entry) { return entry.bag === bag; })) {
|
|
474
|
+
rewritten.push({ bag: bag, original: bag.currentUser });
|
|
475
|
+
}
|
|
476
|
+
bag.currentUser = user ? currentUserState(user) : null;
|
|
477
|
+
});
|
|
478
|
+
__rewrittenStateBags.set(context, rewritten);
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
function restoreStateBags(context) {
|
|
482
|
+
var rewritten = __rewrittenStateBags.get(context) || [];
|
|
483
|
+
for (var i = 0; i < rewritten.length; i++) rewritten[i].bag.currentUser = rewritten[i].original;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
function clearSessionIdentity(context) {
|
|
487
|
+
for (var i = 0; i < SESSION_KEYS.length; i++) delete context[SESSION_KEYS[i]];
|
|
488
|
+
setSessionIdentity(context, null, null);
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
// What a current-user reader answers for this session: the user's fields flat
|
|
492
|
+
// plus \`user\` (see account-get-current, account-refresh-session, account-login).
|
|
493
|
+
function identityResult(type, user, previous) {
|
|
494
|
+
var out = {};
|
|
495
|
+
if (user) Object.keys(user).forEach(function(key) { out[key] = user[key]; });
|
|
496
|
+
out.user = user || null;
|
|
497
|
+
if (type === 'account-refresh-session') {
|
|
498
|
+
out.refreshed = !!(user && previous && previous.refreshed === true);
|
|
499
|
+
}
|
|
500
|
+
if (type === 'account-login') {
|
|
501
|
+
out.success = !!user;
|
|
502
|
+
}
|
|
503
|
+
return out;
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
function bindPath(root, path, value) {
|
|
507
|
+
if (!root || !path || path.length === 0) return;
|
|
508
|
+
var obj = root;
|
|
509
|
+
for (var i = 0; i < path.length - 1; i++) {
|
|
510
|
+
var key = path[i];
|
|
511
|
+
if (obj[key] == null || typeof obj[key] !== 'object') obj[key] = {};
|
|
512
|
+
obj = obj[key];
|
|
513
|
+
}
|
|
514
|
+
obj[path[path.length - 1]] = value;
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
// The value a \`userScoped\` binding takes: the session's role for a role
|
|
518
|
+
// claim, the session user for every other one — and, for a signed-out visitor,
|
|
519
|
+
// '' whatever the claim. An identity value never comes from the request: a
|
|
520
|
+
// guest's own rows are still written under the anonymous id the data API takes
|
|
521
|
+
// from the run (\`__anonymousUserId\`, see data-create-item).
|
|
522
|
+
function sessionClaim(binding, context) {
|
|
523
|
+
if (binding.claim === 'role') return { value: context.__sessionRole || '' };
|
|
524
|
+
return { value: context.__sessionUserId != null ? context.__sessionUserId : '' };
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
function bindingsOf(segmentConfig) {
|
|
528
|
+
var needs = segmentConfig && segmentConfig.session;
|
|
529
|
+
return needs && Array.isArray(needs.bindings) ? needs.bindings : [];
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
function bindResult(bindings, nodeId, context, result) {
|
|
533
|
+
var bound = result;
|
|
534
|
+
for (var i = 0; i < bindings.length; i++) {
|
|
535
|
+
var binding = bindings[i];
|
|
536
|
+
if (!binding || binding.nodeId !== nodeId) continue;
|
|
537
|
+
var claim = sessionClaim(binding, context);
|
|
538
|
+
if (!claim) continue;
|
|
539
|
+
if (bound == null || typeof bound !== 'object') bound = {};
|
|
540
|
+
bindPath(bound, binding.path || [], claim.value);
|
|
541
|
+
}
|
|
542
|
+
return bound;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
/**
|
|
546
|
+
* Fills the reserved session keys from the request's session cookie, then
|
|
547
|
+
* rebuilds what the segment reads about the visitor from them: the result of
|
|
548
|
+
* every current-user reader the request carries, and every \`userScoped\`
|
|
549
|
+
* identity column of a node outside this segment (a node of the segment is
|
|
550
|
+
* bound when it has run — see bindSessionHandlers). Without a session the
|
|
551
|
+
* identity is absent: nothing the request says stands in for it.
|
|
552
|
+
*/
|
|
553
|
+
async function bindSessionIdentity(req, segmentConfig, context) {
|
|
554
|
+
var needs = segmentConfig && segmentConfig.session;
|
|
555
|
+
if (!needs) return;
|
|
556
|
+
var token = null;
|
|
557
|
+
try { token = await liveSessionToken(req); } catch (e) { token = null; }
|
|
558
|
+
var user = sessionUserOf(token);
|
|
559
|
+
setSessionIdentity(context, user, user ? roleOf(token) : null);
|
|
560
|
+
var readers = needs.identityNodes || {};
|
|
561
|
+
Object.keys(readers).forEach(function(id) {
|
|
562
|
+
if (has(context, id) && context[id] !== undefined && context[id] !== null) {
|
|
563
|
+
context[id] = identityResult(readers[id], user, context[id]);
|
|
564
|
+
}
|
|
565
|
+
});
|
|
566
|
+
var own = {};
|
|
567
|
+
(segmentConfig.nodes || []).forEach(function(node) { own[node.id] = true; });
|
|
568
|
+
var bindings = bindingsOf(segmentConfig);
|
|
569
|
+
for (var i = 0; i < bindings.length; i++) {
|
|
570
|
+
var nodeId = bindings[i] && bindings[i].nodeId;
|
|
571
|
+
if (!nodeId || own[nodeId]) continue;
|
|
572
|
+
context[nodeId] = bindResult([bindings[i]], nodeId, context, context[nodeId]);
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
// What a filter value must be to scope a read to the visitor: present, and
|
|
577
|
+
// nothing the data node would read as "no filter" (empty, an all-sentinel, an
|
|
578
|
+
// unresolved template).
|
|
579
|
+
var NOT_AN_IDENTITY = { all: true, any: true, everything: true, __all__: true };
|
|
580
|
+
|
|
581
|
+
function isIdentityFilterValue(filter, value) {
|
|
582
|
+
if (value === undefined || value === null) return false;
|
|
583
|
+
if (Array.isArray(value)) return value.length > 0;
|
|
584
|
+
if (typeof value !== 'string') return true;
|
|
585
|
+
var text = value.trim().toLowerCase();
|
|
586
|
+
if (!text || NOT_AN_IDENTITY[text] || text.indexOf('{{') !== -1) return false;
|
|
587
|
+
if (typeof filter.treatAsAll === 'string' && filter.treatAsAll.trim().toLowerCase() === text) return false;
|
|
588
|
+
if (Array.isArray(filter.skipIfValue) && filter.skipIfValue.indexOf(value) !== -1) return false;
|
|
589
|
+
return true;
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
function scopedToIdentity(columns, config) {
|
|
593
|
+
var filters = config && Array.isArray(config.filters) ? config.filters : [];
|
|
594
|
+
for (var c = 0; c < columns.length; c++) {
|
|
595
|
+
var scoped = false;
|
|
596
|
+
for (var f = 0; f < filters.length && !scoped; f++) {
|
|
597
|
+
var filter = filters[f] && typeof filters[f] === 'object' ? filters[f] : {};
|
|
598
|
+
// Read as data-select reads it: \`destination\` before \`value\`.
|
|
599
|
+
var column = filter.column || filter.source || filter.field;
|
|
600
|
+
var value = filter.destination !== undefined ? filter.destination : filter.value;
|
|
601
|
+
scoped = column === columns[c] && isIdentityFilterValue(filter, value);
|
|
602
|
+
}
|
|
603
|
+
if (!scoped) return false;
|
|
604
|
+
}
|
|
605
|
+
return true;
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
/**
|
|
609
|
+
* Wraps the route's node handlers so that a read the segment filters by the
|
|
610
|
+
* visitor's identity answers no rows when there is no identity to filter by
|
|
611
|
+
* (it never widens to the whole table), and the \`userScoped\` identity columns
|
|
612
|
+
* of a node this segment runs take the session's value once it has run — a
|
|
613
|
+
* step that recomputes them from what the request carries (a custom node's
|
|
614
|
+
* parameters) cannot undo the binding.
|
|
615
|
+
*/
|
|
616
|
+
function bindSessionHandlers(segmentConfig, nodeHandlers) {
|
|
617
|
+
var needs = segmentConfig && segmentConfig.session;
|
|
618
|
+
if (!needs || !nodeHandlers) return nodeHandlers;
|
|
619
|
+
var reads = needs.identityReads || {};
|
|
620
|
+
var bindings = bindingsOf(segmentConfig);
|
|
621
|
+
Object.keys(nodeHandlers).forEach(function(type) {
|
|
622
|
+
var handler = nodeHandlers[type];
|
|
623
|
+
var isRead = type === 'data-select' || type === 'data-count';
|
|
624
|
+
if (typeof handler !== 'function' || (!isRead && bindings.length === 0)) return;
|
|
625
|
+
nodeHandlers[type] = async function(config, context) {
|
|
626
|
+
var nodeId = config && config.__nodeId;
|
|
627
|
+
if (isRead && nodeId && has(reads, nodeId) && !scopedToIdentity(reads[nodeId], config)) {
|
|
628
|
+
return type === 'data-count' ? { count: 0 } : { rows: [], count: 0 };
|
|
629
|
+
}
|
|
630
|
+
var result = await handler.apply(this, arguments);
|
|
631
|
+
return nodeId && bindings.length > 0 ? bindResult(bindings, nodeId, context, result) : result;
|
|
632
|
+
};
|
|
633
|
+
});
|
|
634
|
+
return nodeHandlers;
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
// ---------------------------------------------------------------------------
|
|
638
|
+
// Claiming a request, replying to it
|
|
639
|
+
// ---------------------------------------------------------------------------
|
|
640
|
+
|
|
268
641
|
// The keys the caller holds, in order, before this segment's own results were
|
|
269
642
|
// dropped — segmentReply appends what the run adds, exactly as the caller's
|
|
270
|
-
// merge will.
|
|
643
|
+
// merge will. And the run each claimed context belongs to.
|
|
271
644
|
var __incomingOrders = new WeakMap();
|
|
645
|
+
var __claimedRuns = new WeakMap();
|
|
646
|
+
// The link each claimed context continues: its call number and the relayed
|
|
647
|
+
// signatures it accepted.
|
|
648
|
+
var __claimedLinks = new WeakMap();
|
|
272
649
|
|
|
273
650
|
// The sealed results this segment opened, so its reply hands the caller back
|
|
274
651
|
// the sealed form it relayed (see resealRelayedResults).
|
|
@@ -308,19 +685,72 @@ function resealRelayedResults(context, reply) {
|
|
|
308
685
|
}
|
|
309
686
|
|
|
310
687
|
function claimSegmentContext(segmentConfig, context) {
|
|
311
|
-
var
|
|
312
|
-
|
|
313
|
-
|
|
688
|
+
var now = Date.now();
|
|
689
|
+
var workflowId = workflowIdOf(segmentConfig);
|
|
690
|
+
var run = (!segmentConfig.opensRun && readRun(workflowId, context)) || openRun(workflowId);
|
|
691
|
+
__claimedRuns.set(context, run);
|
|
692
|
+
var order = readSignedOrder(segmentConfig, run, context, now);
|
|
693
|
+
if (order.keys) restoreOrder(context, order.keys);
|
|
694
|
+
var verdict = dropUnsignedResults(segmentConfig, run, context, order, now);
|
|
695
|
+
if (verdict.expired || order.expired) throw expiredRunError();
|
|
696
|
+
__claimedLinks.set(context, { n: order.keys ? order.n : 0, accepted: verdict.accepted });
|
|
697
|
+
context.__sigRun = { id: run.id, mac: run.mac };
|
|
698
|
+
// The route's own (see VISITOR_REQUEST_INJECTION); a request never sets it.
|
|
699
|
+
delete context.__request;
|
|
700
|
+
// Sealed credentials open only after their signature held.
|
|
314
701
|
openSealedResults(context);
|
|
315
702
|
stripForeignControlKeys(segmentConfig, context);
|
|
703
|
+
clearSessionIdentity(context);
|
|
316
704
|
__incomingOrders.set(context, Object.keys(context).filter(function(k) { return !isControlKey(k); }));
|
|
317
705
|
utils.claimSegmentContext(segmentConfig, context);
|
|
318
706
|
enforceBranchGates(segmentConfig, context);
|
|
319
707
|
resetPreviousResult(segmentConfig, context);
|
|
320
708
|
}
|
|
321
709
|
|
|
710
|
+
// A reply never names an env var the segment's configs reference
|
|
711
|
+
// (SEGMENT_CONFIG.secretNames) — a node's error result may quote one. Returns
|
|
712
|
+
// \`value\` itself when nothing in it changes.
|
|
713
|
+
// Only a name shaped like an env var, as a whole word: a secret named \`KEY\`
|
|
714
|
+
// never rewrites "MONKEY".
|
|
715
|
+
var ENV_NAME_SHAPE = /^[A-Za-z_][A-Za-z0-9_]{3,}$/;
|
|
716
|
+
|
|
717
|
+
function scrubSecretNames(segmentConfig, value) {
|
|
718
|
+
var names = segmentConfig && Array.isArray(segmentConfig.secretNames) ? segmentConfig.secretNames : [];
|
|
719
|
+
var patterns = [];
|
|
720
|
+
for (var i = 0; i < names.length; i++) {
|
|
721
|
+
if (typeof names[i] === 'string' && ENV_NAME_SHAPE.test(names[i])) {
|
|
722
|
+
patterns.push(new RegExp('(^|[^A-Za-z0-9_])' + names[i] + '(?![A-Za-z0-9_])', 'g'));
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
return patterns.length === 0 ? value : scrubValue(value, patterns, 0);
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
function scrubValue(value, patterns, depth) {
|
|
729
|
+
if (typeof value === 'string') {
|
|
730
|
+
var text = value;
|
|
731
|
+
for (var i = 0; i < patterns.length; i++) {
|
|
732
|
+
patterns[i].lastIndex = 0;
|
|
733
|
+
text = text.replace(patterns[i], '$1[secret]');
|
|
734
|
+
}
|
|
735
|
+
return text;
|
|
736
|
+
}
|
|
737
|
+
if (!value || typeof value !== 'object' || depth > 32) return value;
|
|
738
|
+
var copy = null;
|
|
739
|
+
var keys = Object.keys(value);
|
|
740
|
+
for (var k = 0; k < keys.length; k++) {
|
|
741
|
+
var before = value[keys[k]];
|
|
742
|
+
var after = scrubValue(before, patterns, depth + 1);
|
|
743
|
+
if (after !== before) {
|
|
744
|
+
if (!copy) copy = Array.isArray(value) ? value.slice() : Object.assign({}, value);
|
|
745
|
+
copy[keys[k]] = after;
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
return copy || value;
|
|
749
|
+
}
|
|
750
|
+
|
|
322
751
|
function segmentReply(segmentConfig, context, snapshot) {
|
|
323
|
-
|
|
752
|
+
restoreStateBags(context);
|
|
753
|
+
var reply = scrubSecretNames(segmentConfig, utils.segmentReply(segmentConfig, context, snapshot));
|
|
324
754
|
resealRelayedResults(context, reply);
|
|
325
755
|
var credentialIds = utils.credentialResultNodeIds(segmentConfig);
|
|
326
756
|
Object.keys(credentialIds).forEach(function(id) {
|
|
@@ -328,19 +758,25 @@ function segmentReply(segmentConfig, context, snapshot) {
|
|
|
328
758
|
var sealed = sealResult(context[id]);
|
|
329
759
|
if (sealed) reply[id] = sealed;
|
|
330
760
|
});
|
|
761
|
+
var workflowId = workflowIdOf(segmentConfig);
|
|
762
|
+
var segmentId = segmentIdOf(segmentConfig);
|
|
763
|
+
var run = __claimedRuns.get(context) || openRun(workflowId);
|
|
764
|
+
var link = __claimedLinks.get(context) || { n: 0, accepted: {} };
|
|
765
|
+
var at = Date.now();
|
|
766
|
+
// What the next call may accept: the results this one accepted, and its own.
|
|
331
767
|
var sigs = {};
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
if (typeof incoming[id] === 'string') sigs[id] = incoming[id];
|
|
768
|
+
Object.keys(link.accepted).forEach(function(id) {
|
|
769
|
+
if (has(reply, id) || has(context, id)) sigs[id] = link.accepted[id];
|
|
335
770
|
});
|
|
336
771
|
var nodes = segmentConfig.nodes || [];
|
|
337
772
|
for (var i = 0; i < nodes.length; i++) {
|
|
338
773
|
var id = nodes[i].id;
|
|
339
774
|
if (!has(reply, id) || reply[id] === undefined) continue;
|
|
340
|
-
var signature =
|
|
775
|
+
var signature = signResult(workflowId, segmentId, run, at, id, reply[id]);
|
|
341
776
|
if (signature) sigs[id] = signature; else delete sigs[id];
|
|
342
777
|
}
|
|
343
778
|
reply.__sig = sigs;
|
|
779
|
+
reply.__sigRun = { id: run.id, mac: run.mac };
|
|
344
780
|
var keys = (__incomingOrders.get(context) || []).slice();
|
|
345
781
|
var listed = {};
|
|
346
782
|
keys.forEach(function(k) { listed[k] = true; });
|
|
@@ -350,7 +786,9 @@ function segmentReply(segmentConfig, context, snapshot) {
|
|
|
350
786
|
listed[k] = true;
|
|
351
787
|
}
|
|
352
788
|
});
|
|
353
|
-
|
|
789
|
+
var n = link.n + 1;
|
|
790
|
+
var pairs = Object.keys(sigs).sort().map(function(id) { return [id, sigs[id]]; });
|
|
791
|
+
reply.__sigOrder = { keys: keys, at: at, n: n, sigs: pairs, mac: orderMac(workflowId, run.id, at, n, keys, pairs) };
|
|
354
792
|
return reply;
|
|
355
793
|
}
|
|
356
794
|
|
|
@@ -382,14 +820,16 @@ function isLoopbackHost(host) {
|
|
|
382
820
|
// else the Host header is whatever the caller sent, so the canonical
|
|
383
821
|
// NEXTAUTH_URL wins when it is set — internal calls carry credentials, and
|
|
384
822
|
// they must never go to a host a request named. (A local development server
|
|
385
|
-
// on another port than NEXTAUTH_URL's keeps its own loopback address.)
|
|
823
|
+
// on another port than NEXTAUTH_URL's keeps its own loopback address.) The
|
|
824
|
+
// value read is the configured one, kept before the auth route rewrites
|
|
825
|
+
// process.env.NEXTAUTH_URL from a request's headers (globalThis.__tqConfiguredNextAuthUrl).
|
|
386
826
|
function trustedBaseUrl(req) {
|
|
387
827
|
var headers = (req && req.headers) || {};
|
|
388
828
|
var host = headers.host || '';
|
|
389
829
|
var proto = headers['x-forwarded-proto'] || (isLoopbackHost(host) ? 'http' : 'https');
|
|
390
830
|
var requestOrigin = String(proto).split(',')[0].trim() + '://' + host;
|
|
391
831
|
if (process.env.VERCEL) return requestOrigin;
|
|
392
|
-
var configured = String(
|
|
832
|
+
var configured = String(${CONFIGURED_NEXTAUTH_URL_EXPRESSION} || '').trim();
|
|
393
833
|
if (!configured) return requestOrigin;
|
|
394
834
|
var origin;
|
|
395
835
|
try { origin = new URL(configured).origin; } catch (e) { return requestOrigin; }
|
|
@@ -418,6 +858,9 @@ module.exports = Object.assign({}, utils, {
|
|
|
418
858
|
handOffPendingNodePromises: handOffPendingNodePromises,
|
|
419
859
|
claimSegmentContext: claimSegmentContext,
|
|
420
860
|
segmentReply: segmentReply,
|
|
861
|
+
bindSessionIdentity: bindSessionIdentity,
|
|
862
|
+
bindSessionHandlers: bindSessionHandlers,
|
|
863
|
+
scrubSecretNames: scrubSecretNames,
|
|
421
864
|
internalRequestHeaders: internalRequestHeaders,
|
|
422
865
|
isInternalCall: isInternalCall,
|
|
423
866
|
trustedBaseUrl: trustedBaseUrl
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-runtime-code.js","sourceRoot":"","sources":["../../src/server-runtime-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,oBAAoB,CAAA;AAEtE
|
|
1
|
+
{"version":3,"file":"server-runtime-code.js","sourceRoot":"","sources":["../../src/server-runtime-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,EAAE,MAAM,2BAA2B,CAAA;AAC9E,OAAO,EAAE,wCAAwC,EAAE,MAAM,2BAA2B,CAAA;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,iCAAiC,EAAE,MAAM,oBAAoB,CAAA;AAEtE,wEAAwE;AACxE,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAEtD,kFAAkF;AAClF,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,GAAG,IAAI,CAAA;AAEpD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAAG,yCAAyC,CAAA;AAE7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,UAA+C,EAAE,EACzC,EAAE,CAAC;;;;EAIX,iCAAiC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAoGX,wBAAwB;6BACrB,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAsJ3B,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8E/D,wCAAwC,CAAC,OAAO,EAAE;IAClD,cAAc,EAAE,OAAO,CAAC,qBAAqB,KAAK,KAAK;CACxD,CAAC;EACA,kBAAkB;;;;;;;yGAOqF,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAka9F,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoC7D,CAAA"}
|
|
@@ -5,5 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export declare const SESSION_TOKEN_RESOLVER_FN = "__tqResolveSessionToken";
|
|
7
7
|
export declare const generateSessionTokenResolverCode: () => string;
|
|
8
|
-
export declare const generateCommonJsSessionTokenResolverCode: (
|
|
8
|
+
export declare const generateCommonJsSessionTokenResolverCode: (projectRoot?: string, options?: {
|
|
9
|
+
withRevocation?: boolean;
|
|
10
|
+
}) => string;
|
|
9
11
|
//# sourceMappingURL=session-cookie-resolver.d.ts.map
|