@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
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.generateInvoiceAssemblyCode = void 0;
|
|
4
4
|
const teleport_shared_1 = require("@teleporthq/teleport-shared");
|
|
5
5
|
const regional_invoice_tax_code_1 = require("./regional-invoice-tax-code");
|
|
6
|
+
const configured_nextauth_url_1 = require("../configured-nextauth-url");
|
|
7
|
+
const self_call_headers_1 = require("../self-call-headers");
|
|
6
8
|
/**
|
|
7
9
|
* `utils/invoices/invoice-assembly.js` — turns an order, and whatever a caller
|
|
8
10
|
* states over it, into the invoice the PDF is rendered from.
|
|
@@ -118,14 +120,15 @@ function isLoopbackHost(host) {
|
|
|
118
120
|
// not depend on it: on Vercel the request's host (the domain Vercel routed to
|
|
119
121
|
// this deployment); elsewhere NEXTAUTH_URL's origin when it is set — except
|
|
120
122
|
// that a local server on another port than a local NEXTAUTH_URL keeps its own
|
|
121
|
-
// loopback address.
|
|
123
|
+
// loopback address. NEXTAUTH_URL is read as configured, never as the auth
|
|
124
|
+
// route rewrote it from a request (configured-nextauth-url.ts).
|
|
122
125
|
function requestBaseUrl(req) {
|
|
123
126
|
var headers = (req && req.headers) || {};
|
|
124
127
|
var host = headers.host || '';
|
|
125
128
|
var proto = headers['x-forwarded-proto'] || (isLoopbackHost(host) ? 'http' : 'https');
|
|
126
129
|
var requestOrigin = String(proto).split(',')[0].trim() + '://' + host;
|
|
127
130
|
if (process.env.VERCEL) return requestOrigin;
|
|
128
|
-
var configured = String(
|
|
131
|
+
var configured = String(${configured_nextauth_url_1.CONFIGURED_NEXTAUTH_URL_EXPRESSION} || '').trim();
|
|
129
132
|
if (!configured) return requestOrigin;
|
|
130
133
|
var origin;
|
|
131
134
|
try { origin = new URL(configured).origin; } catch (e) { return requestOrigin; }
|
|
@@ -154,6 +157,8 @@ function requestBaseUrl(req) {
|
|
|
154
157
|
// \`baseUrl\` is the live request origin (see \`requestBaseUrl\`). The
|
|
155
158
|
// self-fetch pattern is necessary because the routes run server-side, where
|
|
156
159
|
// Node's undici fetch rejects relative URLs.
|
|
160
|
+
${(0, self_call_headers_1.generateSelfCallHeadersCode)()}
|
|
161
|
+
|
|
157
162
|
async function uploadInvoicePdfToRuntimeStorage(pdfBuffer, fileName, baseUrl) {
|
|
158
163
|
if (!baseUrl) {
|
|
159
164
|
console.error('[invoice] Runtime storage: cannot compute proxy URL (baseUrl missing). Skipping upload.');
|
|
@@ -174,7 +179,7 @@ async function uploadInvoicePdfToRuntimeStorage(pdfBuffer, fileName, baseUrl) {
|
|
|
174
179
|
// it puts on a visitor's upload; only server code can present the secret.
|
|
175
180
|
var res = await fetch(proxyUrl, {
|
|
176
181
|
method: 'POST',
|
|
177
|
-
headers: {
|
|
182
|
+
headers: __selfCallHeaders({}),
|
|
178
183
|
body: form,
|
|
179
184
|
});
|
|
180
185
|
var data = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoice-assembly-code.js","sourceRoot":"","sources":["../../../src/invoice/invoice-assembly-code.ts"],"names":[],"mappings":";;;AACA,iEAA4D;AAC5D,2EAAuE;
|
|
1
|
+
{"version":3,"file":"invoice-assembly-code.js","sourceRoot":"","sources":["../../../src/invoice/invoice-assembly-code.ts"],"names":[],"mappings":";;;AACA,iEAA4D;AAC5D,2EAAuE;AACvE,wEAA+E;AAC/E,4DAAkE;AAElE;;;;;;;;GAQG;AACI,MAAM,2BAA2B,GAAG,CAAC,QAA6B,EAAU,EAAE;;IACnF,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,IAAI,CAAC,CAAA;IACnD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,KAAK,IAAI,CAAA;IAC/D,MAAM,oBAAoB,GAAG,CAAA,MAAA,QAAQ,CAAC,QAAQ,0CAAE,QAAQ;QACtD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC5C,CAAC,CAAC,MAAM,CAAA;IAEV,OAAO;;;;;;;;yBAQgB,cAAc;;8BAET,kBAAkB;0BACtB,oBAAoB;EAC5C,qDAAyB;EACzB,gCAAc,CAAC,gCAAgC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BA8FvB,4DAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6B5D,IAAA,+CAA2B,GAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoa9B,CAAA;AACD,CAAC,CAAA;AApjBY,QAAA,2BAA2B,+BAojBvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-generator-code.d.ts","sourceRoot":"","sources":["../../../src/invoice/pdf-generator-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AA4BhE,eAAO,MAAM,wBAAwB,aACzB,mBAAmB,uBACR,OAAO,iBACb,OAAO,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,KACxD,
|
|
1
|
+
{"version":3,"file":"pdf-generator-code.d.ts","sourceRoot":"","sources":["../../../src/invoice/pdf-generator-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AA4BhE,eAAO,MAAM,wBAAwB,aACzB,mBAAmB,uBACR,OAAO,iBACb,OAAO,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,KACxD,MA4CF,CAAA"}
|
|
@@ -33,7 +33,8 @@ const generatePdfGeneratorCode = (settings, invoiceTemplateUidl, allComponents)
|
|
|
33
33
|
* Invoice PDF Generator
|
|
34
34
|
* Walks the user-authored \`invoice-template\` UIDL component → HTML,
|
|
35
35
|
* then delegates rendering to a shared external PDF microservice over
|
|
36
|
-
* HTTP (configured via \`PDF_SERVICE_URL
|
|
36
|
+
* HTTP (configured via \`PDF_SERVICE_URL\`, \`PDF_SERVICE_API_KEY\` and
|
|
37
|
+
* \`PDF_SERVICE_PROJECT_ID\`).
|
|
37
38
|
* Used to launch Puppeteer locally; that renderer was moved out of
|
|
38
39
|
* every deployed project to trim the serverless bundle by ~48 MB.
|
|
39
40
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-generator-code.js","sourceRoot":"","sources":["../../../src/invoice/pdf-generator-code.ts"],"names":[],"mappings":";;;AACA,2DAA6D;AAC7D,uEAAwE;AAExE,mEAAmE;AACnE,wEAAwE;AACxE,kEAAkE;AAClE,iBAAiB;AACjB,EAAE;AACF,sEAAsE;AACtE,wEAAwE;AACxE,0EAA0E;AAC1E,8EAA8E;AAC9E,EAAE;AACF,mEAAmE;AACnE,qEAAqE;AACrE,uEAAuE;AACvE,wEAAwE;AACxE,kBAAkB;AAClB,EAAE;AACF,4EAA4E;AAC5E,uEAAuE;AACvE,iEAAiE;AACjE,EAAE;AACF,uEAAuE;AACvE,wEAAwE;AACxE,kBAAkB;AAEX,MAAM,wBAAwB,GAAG,CACtC,QAA6B,EAC7B,mBAA4B,EAC5B,aAAyD,EACjD,EAAE;IACV,MAAM,WAAW,GAAG,IAAA,2CAAuB,EAAC,QAAQ,EAAE,mBAAmB,EAAE,aAAa,CAAC,CAAA;IACzF,MAAM,aAAa,GAAG,IAAA,sDAA4B,GAAE,CAAA;IAEpD,OAAO
|
|
1
|
+
{"version":3,"file":"pdf-generator-code.js","sourceRoot":"","sources":["../../../src/invoice/pdf-generator-code.ts"],"names":[],"mappings":";;;AACA,2DAA6D;AAC7D,uEAAwE;AAExE,mEAAmE;AACnE,wEAAwE;AACxE,kEAAkE;AAClE,iBAAiB;AACjB,EAAE;AACF,sEAAsE;AACtE,wEAAwE;AACxE,0EAA0E;AAC1E,8EAA8E;AAC9E,EAAE;AACF,mEAAmE;AACnE,qEAAqE;AACrE,uEAAuE;AACvE,wEAAwE;AACxE,kBAAkB;AAClB,EAAE;AACF,4EAA4E;AAC5E,uEAAuE;AACvE,iEAAiE;AACjE,EAAE;AACF,uEAAuE;AACvE,wEAAwE;AACxE,kBAAkB;AAEX,MAAM,wBAAwB,GAAG,CACtC,QAA6B,EAC7B,mBAA4B,EAC5B,aAAyD,EACjD,EAAE;IACV,MAAM,WAAW,GAAG,IAAA,2CAAuB,EAAC,QAAQ,EAAE,mBAAmB,EAAE,aAAa,CAAC,CAAA;IACzF,MAAM,aAAa,GAAG,IAAA,sDAA4B,GAAE,CAAA;IAEpD,OAAO;;;;;;;;;;EAUP,WAAW;EACX,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4Bd,CAAA;AACD,CAAC,CAAA;AAhDY,QAAA,wBAAwB,4BAgDpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-service-client-code.d.ts","sourceRoot":"","sources":["../../../src/invoice/pdf-service-client-code.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,4BAA4B,QAAO,
|
|
1
|
+
{"version":3,"file":"pdf-service-client-code.d.ts","sourceRoot":"","sources":["../../../src/invoice/pdf-service-client-code.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,4BAA4B,QAAO,MAgI/C,CAAA"}
|
|
@@ -27,11 +27,15 @@ const generatePdfServiceClientCode = () => {
|
|
|
27
27
|
// reservation for the next request for the order to finish.
|
|
28
28
|
//
|
|
29
29
|
// Contract:
|
|
30
|
-
// - Config via \`process.env.PDF_SERVICE_URL
|
|
31
|
-
// \`process.env.PDF_SERVICE_API_KEY\`
|
|
30
|
+
// - Config via \`process.env.PDF_SERVICE_URL\`,
|
|
31
|
+
// \`process.env.PDF_SERVICE_API_KEY\` and
|
|
32
|
+
// \`process.env.PDF_SERVICE_PROJECT_ID\` (read at call time, not module
|
|
32
33
|
// load, so dev misconfiguration fails loud at render rather than
|
|
33
34
|
// at \`require()\`).
|
|
34
|
-
// - Auth
|
|
35
|
+
// - Auth headers: \`X-Pdf-Service-Key: <key>\` (this project's own key,
|
|
36
|
+
// derived by the platform at deploy time) and
|
|
37
|
+
// \`X-Pdf-Service-Project: <project id>\`, which the service checks the
|
|
38
|
+
// key against. A deploy without a project id sends the key alone.
|
|
35
39
|
// - 60 s client-side abort. The service's default per-attempt timeout
|
|
36
40
|
// is 45 s; operators who tune the service down to ~15 s/attempt can
|
|
37
41
|
// fit 3 full retries inside this window.
|
|
@@ -52,6 +56,7 @@ function sanitizePdfFilename(raw) {
|
|
|
52
56
|
async function callPdfService(html, invoiceData) {
|
|
53
57
|
var pdfServiceUrl = process.env.PDF_SERVICE_URL;
|
|
54
58
|
var pdfServiceKey = process.env.PDF_SERVICE_API_KEY;
|
|
59
|
+
var pdfServiceProjectId = process.env.PDF_SERVICE_PROJECT_ID;
|
|
55
60
|
|
|
56
61
|
if (!pdfServiceUrl) {
|
|
57
62
|
throw new Error('PDF_SERVICE_URL is not configured. Set it in the project env vars (the Vercel controller injects it at deploy time from the services-worker env).');
|
|
@@ -81,15 +86,18 @@ async function callPdfService(html, invoiceData) {
|
|
|
81
86
|
var abortCtrl = new AbortController();
|
|
82
87
|
var timer = setTimeout(function () { abortCtrl.abort(); }, timeoutMs);
|
|
83
88
|
|
|
89
|
+
var requestHeaders = {
|
|
90
|
+
'Content-Type': 'application/json',
|
|
91
|
+
'X-Pdf-Service-Key': pdfServiceKey,
|
|
92
|
+
};
|
|
93
|
+
if (pdfServiceProjectId) requestHeaders['X-Pdf-Service-Project'] = pdfServiceProjectId;
|
|
94
|
+
|
|
84
95
|
var response;
|
|
85
96
|
try {
|
|
86
97
|
console.info('[invoice-pdf] POST ' + endpoint + ' htmlBytes=' + (html ? html.length : 0) + ' filename=' + filename + ' timeoutMs=' + timeoutMs);
|
|
87
98
|
response = await fetch(endpoint, {
|
|
88
99
|
method: 'POST',
|
|
89
|
-
headers:
|
|
90
|
-
'Content-Type': 'application/json',
|
|
91
|
-
'X-Pdf-Service-Key': pdfServiceKey,
|
|
92
|
-
},
|
|
100
|
+
headers: requestHeaders,
|
|
93
101
|
body: JSON.stringify(requestBody),
|
|
94
102
|
signal: abortCtrl.signal,
|
|
95
103
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-service-client-code.js","sourceRoot":"","sources":["../../../src/invoice/pdf-service-client-code.ts"],"names":[],"mappings":";AAAA,wDAAwD;AACxD,wEAAwE;AACxE,qEAAqE;AACrE,0EAA0E;AAC1E,qEAAqE;AACrE,yEAAyE;AACzE,qEAAqE;AACrE,kCAAkC;AAClC,EAAE;AACF,0EAA0E;AAC1E,0EAA0E;AAC1E,kEAAkE;AAClE,wBAAwB;;;AAEjB,MAAM,4BAA4B,GAAG,GAAW,EAAE;IACvD,OAAO
|
|
1
|
+
{"version":3,"file":"pdf-service-client-code.js","sourceRoot":"","sources":["../../../src/invoice/pdf-service-client-code.ts"],"names":[],"mappings":";AAAA,wDAAwD;AACxD,wEAAwE;AACxE,qEAAqE;AACrE,0EAA0E;AAC1E,qEAAqE;AACrE,yEAAyE;AACzE,qEAAqE;AACrE,kCAAkC;AAClC,EAAE;AACF,0EAA0E;AAC1E,0EAA0E;AAC1E,kEAAkE;AAClE,wBAAwB;;;AAEjB,MAAM,4BAA4B,GAAG,GAAW,EAAE;IACvD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8HR,CAAA;AACD,CAAC,CAAA;AAhIY,QAAA,4BAA4B,gCAgIxC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Not emitted. `NextNewsletterProjectPlugin` no longer writes this route or a
|
|
3
|
+
* site token. The published admin panel schedules by editing the issue row.
|
|
4
|
+
* Send now and send-a-test stay in the editor.
|
|
5
|
+
*
|
|
6
|
+
* Kept so the old route's checks stay readable. Do not wire it back into the
|
|
7
|
+
* plugin: that would put a service token on the published site again.
|
|
8
|
+
*/
|
|
9
|
+
import type { ProjectUIDL } from '@teleporthq/teleport-types';
|
|
10
|
+
export declare const NEWSLETTER_ADMIN_ROUTE_FILE_KEY = "newsletter-admin-route";
|
|
11
|
+
export declare const NEWSLETTER_ADMIN_ROUTE_PATH: string[];
|
|
12
|
+
export declare const NEWSLETTER_ADMIN_ROUTE_FILE_NAME = "[action]";
|
|
13
|
+
/** What the admin panel may ask for (R-N1: schedule and cancel are row edits). */
|
|
14
|
+
export declare const NEWSLETTER_ADMIN_ACTIONS: readonly ["send", "test"];
|
|
15
|
+
/**
|
|
16
|
+
* The `.env` lines the production deploy fills (the worker's
|
|
17
|
+
* `injectNewsletterServiceEnv`): the worker's public URL, the site's token and
|
|
18
|
+
* its project id.
|
|
19
|
+
*/
|
|
20
|
+
export declare const NEWSLETTER_SERVICE_ENV_NAMES: readonly ["NEWSLETTER_SERVICE_URL", "NEWSLETTER_SERVICE_TOKEN", "NEWSLETTER_SERVICE_PROJECT_ID"];
|
|
21
|
+
/** How long the route waits for the worker. */
|
|
22
|
+
export declare const NEWSLETTER_SERVICE_TIMEOUT_MS = 15000;
|
|
23
|
+
/** The one statement the route runs: does this site hold the issue. */
|
|
24
|
+
export declare const NEWSLETTER_ADMIN_ISSUE_SQL: string;
|
|
25
|
+
/** Every answer the route writes itself (the worker's are relayed). */
|
|
26
|
+
export declare const NEWSLETTER_ADMIN_MESSAGES: {
|
|
27
|
+
method: string;
|
|
28
|
+
crossOrigin: string;
|
|
29
|
+
jsonOnly: string;
|
|
30
|
+
signIn: string;
|
|
31
|
+
staffOnly: string;
|
|
32
|
+
unknownAction: string;
|
|
33
|
+
notProduction: string;
|
|
34
|
+
missingIssue: string;
|
|
35
|
+
noTestAddress: string;
|
|
36
|
+
testAddressUnsupported: string;
|
|
37
|
+
notFound: string;
|
|
38
|
+
readFailed: string;
|
|
39
|
+
keyRefused: string;
|
|
40
|
+
unreachable: string;
|
|
41
|
+
timeout: string;
|
|
42
|
+
badAnswer: string;
|
|
43
|
+
refused: string;
|
|
44
|
+
serviceFailed: string;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* The route's source. Staff = the admin panel's roles and `admin`
|
|
48
|
+
* (`TableAccess.resolveStaffRoles`), baked at build time; `withRevocation`
|
|
49
|
+
* checks a stamped session against its account (a project with authentication).
|
|
50
|
+
*/
|
|
51
|
+
export declare const generateNewsletterAdminRouteCode: (uidl: Pick<ProjectUIDL, 'authentication'>, options: {
|
|
52
|
+
withRevocation: boolean;
|
|
53
|
+
}) => string;
|
|
54
|
+
/**
|
|
55
|
+
* Declares the newsletter service's `.env` lines, empty: the worker fills them
|
|
56
|
+
* on a production deploy only (`injectNewsletterServiceEnv` acts on a declared
|
|
57
|
+
* `NEWSLETTER_SERVICE_URL=` line).
|
|
58
|
+
*/
|
|
59
|
+
export declare const declareNewsletterServiceEnv: (uidl: ProjectUIDL) => void;
|
|
60
|
+
//# sourceMappingURL=admin-route-code.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-route-code.d.ts","sourceRoot":"","sources":["../../../src/newsletter/admin-route-code.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAM7D,eAAO,MAAM,+BAA+B,2BAA2B,CAAA;AACvE,eAAO,MAAM,2BAA2B,UAA0C,CAAA;AAClF,eAAO,MAAM,gCAAgC,aAAa,CAAA;AAE1D,kFAAkF;AAClF,eAAO,MAAM,wBAAwB,2BAA4B,CAAA;AAEjE;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,kGAI/B,CAAA;AAEV,+CAA+C;AAC/C,eAAO,MAAM,6BAA6B,QAAQ,CAAA;AAKlD,uEAAuE;AACvE,eAAO,MAAM,0BAA0B,QAAoE,CAAA;AAE3G,uEAAuE;AACvE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;CAuBrC,CAAA;AAKD;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,SACrC,KAAK,WAAW,EAAE,gBAAgB,CAAC,WAChC;IAAE,cAAc,EAAE,OAAO,CAAA;CAAE,KACnC,MA6NF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,SAAU,WAAW,KAAG,IAY/D,CAAA"}
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.declareNewsletterServiceEnv = exports.generateNewsletterAdminRouteCode = exports.NEWSLETTER_ADMIN_MESSAGES = exports.NEWSLETTER_ADMIN_ISSUE_SQL = exports.NEWSLETTER_SERVICE_TIMEOUT_MS = exports.NEWSLETTER_SERVICE_ENV_NAMES = exports.NEWSLETTER_ADMIN_ACTIONS = exports.NEWSLETTER_ADMIN_ROUTE_FILE_NAME = exports.NEWSLETTER_ADMIN_ROUTE_PATH = exports.NEWSLETTER_ADMIN_ROUTE_FILE_KEY = void 0;
|
|
4
|
+
const teleport_shared_1 = require("@teleporthq/teleport-shared");
|
|
5
|
+
const session_cookie_resolver_1 = require("../session-cookie-resolver");
|
|
6
|
+
const workflow_auth_generator_1 = require("../workflow-auth-generator");
|
|
7
|
+
const newsletter_scope_1 = require("./newsletter-scope");
|
|
8
|
+
exports.NEWSLETTER_ADMIN_ROUTE_FILE_KEY = 'newsletter-admin-route';
|
|
9
|
+
exports.NEWSLETTER_ADMIN_ROUTE_PATH = ['pages', 'api', 'newsletter', 'admin'];
|
|
10
|
+
exports.NEWSLETTER_ADMIN_ROUTE_FILE_NAME = '[action]';
|
|
11
|
+
/** What the admin panel may ask for (R-N1: schedule and cancel are row edits). */
|
|
12
|
+
exports.NEWSLETTER_ADMIN_ACTIONS = ['send', 'test'];
|
|
13
|
+
/**
|
|
14
|
+
* The `.env` lines the production deploy fills (the worker's
|
|
15
|
+
* `injectNewsletterServiceEnv`): the worker's public URL, the site's token and
|
|
16
|
+
* its project id.
|
|
17
|
+
*/
|
|
18
|
+
exports.NEWSLETTER_SERVICE_ENV_NAMES = [
|
|
19
|
+
'NEWSLETTER_SERVICE_URL',
|
|
20
|
+
'NEWSLETTER_SERVICE_TOKEN',
|
|
21
|
+
'NEWSLETTER_SERVICE_PROJECT_ID',
|
|
22
|
+
];
|
|
23
|
+
/** How long the route waits for the worker. */
|
|
24
|
+
exports.NEWSLETTER_SERVICE_TIMEOUT_MS = 15000;
|
|
25
|
+
/** The issues table (teleport-gui `NEWSLETTER_ISSUES_TABLE`, Task 1). */
|
|
26
|
+
const NEWSLETTER_ISSUES_TABLE = 'teleport_newsletter_issues';
|
|
27
|
+
/** The one statement the route runs: does this site hold the issue. */
|
|
28
|
+
exports.NEWSLETTER_ADMIN_ISSUE_SQL = `SELECT id FROM ${NEWSLETTER_ISSUES_TABLE} WHERE id = $1 LIMIT 1`;
|
|
29
|
+
/** Every answer the route writes itself (the worker's are relayed). */
|
|
30
|
+
exports.NEWSLETTER_ADMIN_MESSAGES = {
|
|
31
|
+
method: 'Method not allowed',
|
|
32
|
+
crossOrigin: 'This request must come from your site.',
|
|
33
|
+
jsonOnly: 'This request must be sent as JSON.',
|
|
34
|
+
signIn: 'Sign in again.',
|
|
35
|
+
staffOnly: 'Staff only.',
|
|
36
|
+
unknownAction: 'Unknown newsletter action.',
|
|
37
|
+
notProduction: 'Newsletter sending from the admin panel works on the published production site.',
|
|
38
|
+
missingIssue: 'Newsletter id is required.',
|
|
39
|
+
noTestAddress: 'Your account has no email address to send the test to.',
|
|
40
|
+
testAddressUnsupported: "Your account's email address cannot receive the test from the admin panel; send the test from the editor.",
|
|
41
|
+
notFound: 'This newsletter no longer exists.',
|
|
42
|
+
readFailed: 'The newsletter could not be read right now. Try again in a moment.',
|
|
43
|
+
keyRefused: "The newsletter service did not accept this site's key. Publish the site again, then try again.",
|
|
44
|
+
unreachable: 'The newsletter service could not be reached. Try again in a moment.',
|
|
45
|
+
timeout: "The newsletter service did not answer in time. Check the newsletter's status before you try again.",
|
|
46
|
+
badAnswer: "The newsletter service gave an answer that could not be read. Check the newsletter's status before you try again.",
|
|
47
|
+
refused: 'The newsletter service could not do this.',
|
|
48
|
+
serviceFailed: 'The newsletter could not be sent right now. Try again in a moment.',
|
|
49
|
+
};
|
|
50
|
+
/** From `pages/api/newsletter/admin/` to the project root. */
|
|
51
|
+
const RELATIVE_PREFIX = '../../../..';
|
|
52
|
+
/**
|
|
53
|
+
* The route's source. Staff = the admin panel's roles and `admin`
|
|
54
|
+
* (`TableAccess.resolveStaffRoles`), baked at build time; `withRevocation`
|
|
55
|
+
* checks a stamped session against its account (a project with authentication).
|
|
56
|
+
*/
|
|
57
|
+
const generateNewsletterAdminRouteCode = (uidl, options) => `/**
|
|
58
|
+
* POST /api/newsletter/admin/[action] JSON body { issueId }
|
|
59
|
+
* The admin panel's "Send now" (send) and "Send a test" (test). Staff only,
|
|
60
|
+
* from a page of this site only.
|
|
61
|
+
* Asks the newsletter service to act on one issue of this site and relays its
|
|
62
|
+
* answer: { success: true, status, message } or { success: false, error }.
|
|
63
|
+
* A test goes to the signed-in staff member's own address.
|
|
64
|
+
*/
|
|
65
|
+
|
|
66
|
+
var __newsletter = require('${(0, newsletter_scope_1.newsletterHelperSpecifier)(RELATIVE_PREFIX)}');
|
|
67
|
+
|
|
68
|
+
${(0, session_cookie_resolver_1.generateCommonJsSessionTokenResolverCode)(RELATIVE_PREFIX, {
|
|
69
|
+
withRevocation: options.withRevocation,
|
|
70
|
+
})}
|
|
71
|
+
${workflow_auth_generator_1.ROLE_OF_TOKEN_CODE}
|
|
72
|
+
|
|
73
|
+
var STAFF_ROLES = ${JSON.stringify(teleport_shared_1.TableAccess.resolveStaffRoles(uidl.authentication))};
|
|
74
|
+
var NEWSLETTER_ADMIN_ACTIONS = ${JSON.stringify(exports.NEWSLETTER_ADMIN_ACTIONS)};
|
|
75
|
+
var SERVICE_TIMEOUT_MS = ${exports.NEWSLETTER_SERVICE_TIMEOUT_MS};
|
|
76
|
+
var ISSUE_SQL = ${JSON.stringify(exports.NEWSLETTER_ADMIN_ISSUE_SQL)};
|
|
77
|
+
var MESSAGES = ${JSON.stringify(exports.NEWSLETTER_ADMIN_MESSAGES, null, 2)};
|
|
78
|
+
|
|
79
|
+
function readBody(req) {
|
|
80
|
+
var body = req.body;
|
|
81
|
+
if (typeof body === 'string') {
|
|
82
|
+
try { body = JSON.parse(body); } catch (e) { body = null; }
|
|
83
|
+
}
|
|
84
|
+
return body && typeof body === 'object' ? body : {};
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function fail(res, status, error) {
|
|
88
|
+
return res.status(status).json({ success: false, error: error });
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// A page of this site sent the request (R-N25). Sibling sites on the shared
|
|
92
|
+
// hosting domain count as same-site, so the session cookie alone proves
|
|
93
|
+
// nothing: the browser's Sec-Fetch-Site, when sent, must say same-origin, and
|
|
94
|
+
// the Origin (or, without one, the Referer) must name this host. Browsers send
|
|
95
|
+
// Origin on every POST; a request that names no page is refused.
|
|
96
|
+
function isSameOrigin(req) {
|
|
97
|
+
var headers = req.headers || {};
|
|
98
|
+
var site = headers['sec-fetch-site'];
|
|
99
|
+
if (site && site !== 'same-origin') {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
var source = headers.origin || headers.referer;
|
|
103
|
+
if (typeof source !== 'string' || !source || !headers.host) {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
try {
|
|
107
|
+
return new URL(source).host === String(headers.host).toLowerCase();
|
|
108
|
+
} catch (error) {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// The admin panel posts JSON; a cross-origin form cannot.
|
|
114
|
+
function isJsonRequest(req) {
|
|
115
|
+
var type = String((req.headers && req.headers['content-type']) || '');
|
|
116
|
+
return type.split(';')[0].trim().toLowerCase() === 'application/json';
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// This deployment's newsletter service, or null: only the production deploy
|
|
120
|
+
// of the site is given one.
|
|
121
|
+
function newsletterService() {
|
|
122
|
+
var url = String(process.env.NEWSLETTER_SERVICE_URL || '').trim().replace(/\\/+$/, '');
|
|
123
|
+
var token = String(process.env.NEWSLETTER_SERVICE_TOKEN || '').trim();
|
|
124
|
+
var project = String(process.env.NEWSLETTER_SERVICE_PROJECT_ID || '').trim();
|
|
125
|
+
return url && token && project ? { url: url, token: token, project: project } : null;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// The signed-in staff member's address (a test's recipient), or ''.
|
|
129
|
+
function staffAddress(token) {
|
|
130
|
+
return __newsletter.normalizeEmail(token.email);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// The address as a request header can carry it (printable ASCII), or ''.
|
|
134
|
+
function headerSafe(email) {
|
|
135
|
+
return /^[ -~]+$/.test(email) ? email : '';
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Who the newsletter service records as acting: the address, else the account id.
|
|
139
|
+
function staffName(token, email) {
|
|
140
|
+
if (email) return email;
|
|
141
|
+
var id = token.id != null ? token.id : token.sub;
|
|
142
|
+
return id == null ? '' : String(id).replace(/[^ -~]/g, '').slice(0, 255);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Whether this site's database holds the issue. Another project's issue is
|
|
146
|
+
// never in it.
|
|
147
|
+
async function issueExists(issueId) {
|
|
148
|
+
return __newsletter.withNewsletterDb(async function (db) {
|
|
149
|
+
var found = await db.query(ISSUE_SQL, [issueId]);
|
|
150
|
+
return !!(found && found.rows && found.rows[0]);
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// The service's answer as the admin panel reads it: the contract's fields only.
|
|
155
|
+
// A server failure's own text stays on the server.
|
|
156
|
+
function relayedAnswer(response, answer) {
|
|
157
|
+
if (response.ok && answer.success === true) {
|
|
158
|
+
return {
|
|
159
|
+
success: true,
|
|
160
|
+
status: typeof answer.status === 'string' ? answer.status : '',
|
|
161
|
+
message: typeof answer.message === 'string' ? answer.message : '',
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
if (response.status >= 500) {
|
|
165
|
+
return { success: false, error: MESSAGES.serviceFailed };
|
|
166
|
+
}
|
|
167
|
+
return {
|
|
168
|
+
success: false,
|
|
169
|
+
error: typeof answer.error === 'string' && answer.error ? answer.error : MESSAGES.refused,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
module.exports = async function handler(req, res) {
|
|
174
|
+
if (req.method !== 'POST') {
|
|
175
|
+
res.setHeader('Allow', 'POST');
|
|
176
|
+
return res.status(405).json({ success: false, error: MESSAGES.method });
|
|
177
|
+
}
|
|
178
|
+
if (!isSameOrigin(req)) {
|
|
179
|
+
return fail(res, 403, MESSAGES.crossOrigin);
|
|
180
|
+
}
|
|
181
|
+
if (!isJsonRequest(req)) {
|
|
182
|
+
return fail(res, 415, MESSAGES.jsonOnly);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
var token = null;
|
|
186
|
+
try {
|
|
187
|
+
token = await __tqSessionToken(req);
|
|
188
|
+
} catch (err) {
|
|
189
|
+
console.warn('[newsletter] admin: could not read the session — ' + (err && err.message));
|
|
190
|
+
token = null;
|
|
191
|
+
}
|
|
192
|
+
if (!token) {
|
|
193
|
+
return fail(res, 401, MESSAGES.signIn);
|
|
194
|
+
}
|
|
195
|
+
var role = roleOf(token);
|
|
196
|
+
if (!role || STAFF_ROLES.indexOf(role) < 0) {
|
|
197
|
+
return fail(res, 403, MESSAGES.staffOnly);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
var action = req.query && typeof req.query.action === 'string' ? req.query.action : '';
|
|
201
|
+
if (NEWSLETTER_ADMIN_ACTIONS.indexOf(action) < 0) {
|
|
202
|
+
return fail(res, 404, MESSAGES.unknownAction);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
var service = newsletterService();
|
|
206
|
+
if (!service) {
|
|
207
|
+
return fail(res, 503, MESSAGES.notProduction);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
var body = readBody(req);
|
|
211
|
+
var issueId = typeof body.issueId === 'string' ? body.issueId.trim() : '';
|
|
212
|
+
if (!issueId || issueId.length > 255) {
|
|
213
|
+
return fail(res, 400, MESSAGES.missingIssue);
|
|
214
|
+
}
|
|
215
|
+
var address = staffAddress(token);
|
|
216
|
+
var email = headerSafe(address);
|
|
217
|
+
if (action === 'test' && !address) {
|
|
218
|
+
return fail(res, 422, MESSAGES.noTestAddress);
|
|
219
|
+
}
|
|
220
|
+
if (action === 'test' && !email) {
|
|
221
|
+
return fail(res, 422, MESSAGES.testAddressUnsupported);
|
|
222
|
+
}
|
|
223
|
+
var staff = staffName(token, email);
|
|
224
|
+
|
|
225
|
+
try {
|
|
226
|
+
if (!(await issueExists(issueId))) {
|
|
227
|
+
return fail(res, 404, MESSAGES.notFound);
|
|
228
|
+
}
|
|
229
|
+
} catch (err) {
|
|
230
|
+
console.error('[newsletter] admin ' + action + ': could not read the newsletter — ' + ((err && (err.code || err.message)) || 'error'));
|
|
231
|
+
return fail(res, 503, MESSAGES.readFailed);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
var controller = new AbortController();
|
|
235
|
+
var timer = setTimeout(function () { controller.abort(); }, SERVICE_TIMEOUT_MS);
|
|
236
|
+
var response = null;
|
|
237
|
+
var answer = null;
|
|
238
|
+
try {
|
|
239
|
+
response = await fetch(service.url + '/newsletter/site/' + action, {
|
|
240
|
+
method: 'POST',
|
|
241
|
+
headers: {
|
|
242
|
+
'Content-Type': 'application/json',
|
|
243
|
+
'X-Teleport-Service-Token': service.token,
|
|
244
|
+
'X-Teleport-Service-Project': service.project,
|
|
245
|
+
'X-Teleport-Staff': staff,
|
|
246
|
+
},
|
|
247
|
+
body: JSON.stringify({ issueId: issueId }),
|
|
248
|
+
signal: controller.signal,
|
|
249
|
+
// A redirect would carry the token to another host: refused (502).
|
|
250
|
+
redirect: 'error',
|
|
251
|
+
});
|
|
252
|
+
try {
|
|
253
|
+
answer = await response.json();
|
|
254
|
+
} catch (readErr) {
|
|
255
|
+
if (controller.signal.aborted) throw readErr;
|
|
256
|
+
answer = null;
|
|
257
|
+
}
|
|
258
|
+
} catch (err) {
|
|
259
|
+
var timedOut = controller.signal.aborted || (err && err.name === 'AbortError');
|
|
260
|
+
// The failure's code only: a message can quote the request.
|
|
261
|
+
console.error('[newsletter] admin ' + action + ': the newsletter service ' + (timedOut ? 'did not answer within ' + SERVICE_TIMEOUT_MS + ' ms' : 'could not be reached (' + ((err && err.cause && err.cause.code) || (err && err.name) || 'error') + ')'));
|
|
262
|
+
return fail(res, timedOut ? 504 : 502, timedOut ? MESSAGES.timeout : MESSAGES.unreachable);
|
|
263
|
+
} finally {
|
|
264
|
+
clearTimeout(timer);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
if (response.status === 401) {
|
|
268
|
+
// The site's key is not the current one (reset since this deploy).
|
|
269
|
+
console.error('[newsletter] admin ' + action + ': the newsletter service refused the site key; publish the site again');
|
|
270
|
+
return fail(res, 503, MESSAGES.keyRefused);
|
|
271
|
+
}
|
|
272
|
+
if (!answer || typeof answer !== 'object' || Array.isArray(answer)) {
|
|
273
|
+
console.error('[newsletter] admin ' + action + ': the newsletter service answered ' + response.status + ' without its JSON answer');
|
|
274
|
+
return fail(res, 502, MESSAGES.badAnswer);
|
|
275
|
+
}
|
|
276
|
+
return res.status(response.status).json(relayedAnswer(response, answer));
|
|
277
|
+
};
|
|
278
|
+
`;
|
|
279
|
+
exports.generateNewsletterAdminRouteCode = generateNewsletterAdminRouteCode;
|
|
280
|
+
/**
|
|
281
|
+
* Declares the newsletter service's `.env` lines, empty: the worker fills them
|
|
282
|
+
* on a production deploy only (`injectNewsletterServiceEnv` acts on a declared
|
|
283
|
+
* `NEWSLETTER_SERVICE_URL=` line).
|
|
284
|
+
*/
|
|
285
|
+
const declareNewsletterServiceEnv = (uidl) => {
|
|
286
|
+
if (!uidl.globals) {
|
|
287
|
+
;
|
|
288
|
+
uidl.globals = { settings: { language: 'en' }, assets: [], env: {} };
|
|
289
|
+
}
|
|
290
|
+
if (!uidl.globals.env) {
|
|
291
|
+
uidl.globals.env = {};
|
|
292
|
+
}
|
|
293
|
+
for (const name of exports.NEWSLETTER_SERVICE_ENV_NAMES) {
|
|
294
|
+
if (!uidl.globals.env[name]) {
|
|
295
|
+
uidl.globals.env[name] = '';
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
};
|
|
299
|
+
exports.declareNewsletterServiceEnv = declareNewsletterServiceEnv;
|
|
300
|
+
//# sourceMappingURL=admin-route-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-route-code.js","sourceRoot":"","sources":["../../../src/newsletter/admin-route-code.ts"],"names":[],"mappings":";;;AASA,iEAAyD;AACzD,wEAAqF;AACrF,wEAA+D;AAC/D,yDAA8D;AAEjD,QAAA,+BAA+B,GAAG,wBAAwB,CAAA;AAC1D,QAAA,2BAA2B,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;AACrE,QAAA,gCAAgC,GAAG,UAAU,CAAA;AAE1D,kFAAkF;AACrE,QAAA,wBAAwB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAU,CAAA;AAEjE;;;;GAIG;AACU,QAAA,4BAA4B,GAAG;IAC1C,wBAAwB;IACxB,0BAA0B;IAC1B,+BAA+B;CACvB,CAAA;AAEV,+CAA+C;AAClC,QAAA,6BAA6B,GAAG,KAAK,CAAA;AAElD,yEAAyE;AACzE,MAAM,uBAAuB,GAAG,4BAA4B,CAAA;AAE5D,uEAAuE;AAC1D,QAAA,0BAA0B,GAAG,kBAAkB,uBAAuB,wBAAwB,CAAA;AAE3G,uEAAuE;AAC1D,QAAA,yBAAyB,GAAG;IACvC,MAAM,EAAE,oBAAoB;IAC5B,WAAW,EAAE,wCAAwC;IACrD,QAAQ,EAAE,oCAAoC;IAC9C,MAAM,EAAE,gBAAgB;IACxB,SAAS,EAAE,aAAa;IACxB,aAAa,EAAE,4BAA4B;IAC3C,aAAa,EAAE,iFAAiF;IAChG,YAAY,EAAE,4BAA4B;IAC1C,aAAa,EAAE,wDAAwD;IACvE,sBAAsB,EACpB,2GAA2G;IAC7G,QAAQ,EAAE,mCAAmC;IAC7C,UAAU,EAAE,oEAAoE;IAChF,UAAU,EACR,gGAAgG;IAClG,WAAW,EAAE,qEAAqE;IAClF,OAAO,EACL,oGAAoG;IACtG,SAAS,EACP,mHAAmH;IACrH,OAAO,EAAE,2CAA2C;IACpD,aAAa,EAAE,oEAAoE;CACpF,CAAA;AAED,8DAA8D;AAC9D,MAAM,eAAe,GAAG,aAAa,CAAA;AAErC;;;;GAIG;AACI,MAAM,gCAAgC,GAAG,CAC9C,IAAyC,EACzC,OAAoC,EAC5B,EAAE,CAAC;;;;;;;;;8BASiB,IAAA,4CAAyB,EAAC,eAAe,CAAC;;EAEtE,IAAA,kEAAwC,EAAC,eAAe,EAAE;IAC1D,cAAc,EAAE,OAAO,CAAC,cAAc;CACvC,CAAC;EACA,4CAAkB;;oBAEA,IAAI,CAAC,SAAS,CAAC,6BAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;iCACrD,IAAI,CAAC,SAAS,CAAC,gCAAwB,CAAC;2BAC9C,qCAA6B;kBACtC,IAAI,CAAC,SAAS,CAAC,kCAA0B,CAAC;iBAC3C,IAAI,CAAC,SAAS,CAAC,iCAAyB,EAAE,IAAI,EAAE,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyMlE,CAAA;AAhOY,QAAA,gCAAgC,oCAgO5C;AAED;;;;GAIG;AACI,MAAM,2BAA2B,GAAG,CAAC,IAAiB,EAAQ,EAAE;IACrE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;QACjB,CAAC;QAAC,IAA6B,CAAC,OAAO,GAAG,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAA;KAChG;IACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;QACrB,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,EAAE,CAAA;KACtB;IACD,KAAK,MAAM,IAAI,IAAI,oCAA4B,EAAE;QAC/C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;SAC5B;KACF;AACH,CAAC,CAAA;AAZY,QAAA,2BAA2B,+BAYvC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `utils/newsletter/newsletter.js`: the one place the generated app changes a
|
|
3
|
+
* person's newsletter state. The public sign-up route, the `newsletter-subscribe`
|
|
4
|
+
* node, the sign-up route's consent box and the confirm / unsubscribe routes all
|
|
5
|
+
* go through it, so the policy is written once:
|
|
6
|
+
*
|
|
7
|
+
* - nobody is subscribed without their own action: a submit (single opt-in),
|
|
8
|
+
* or the emailed confirmation link (double opt-in);
|
|
9
|
+
* - a form never undoes an opt-out: anyone can type anyone's address, so an
|
|
10
|
+
* unsubscribed address is only ever sent a confirmation link;
|
|
11
|
+
* - every sign-up answers the same (`{ ok: true, pending }`, `pending` decided
|
|
12
|
+
* by the settings alone), so the answer never tells whether an address is
|
|
13
|
+
* known;
|
|
14
|
+
* - the links are stateless HMAC tokens keyed by the app secret
|
|
15
|
+
* (`newsletterTokenSpec`), which the services worker reproduces for the
|
|
16
|
+
* unsubscribe links of the newsletters it sends.
|
|
17
|
+
*
|
|
18
|
+
* CommonJS, server-only. The TeleportHQ database (`TELEPORT_DB_*`), through the
|
|
19
|
+
* same Postgres client the account routes open.
|
|
20
|
+
*/
|
|
21
|
+
import type { UIDLNewsletterSettings } from '@teleporthq/teleport-types';
|
|
22
|
+
/**
|
|
23
|
+
* The confirmation and unsubscribe links' token, exactly, so the services
|
|
24
|
+
* worker (the unsubscribe links in the newsletters it sends, R-N7) mints the
|
|
25
|
+
* same bytes as the site:
|
|
26
|
+
*
|
|
27
|
+
* key = HMAC-SHA256(key: NEXTAUTH_SECRET (UTF-8), message: 'teleport-newsletter:v1') → 32 bytes
|
|
28
|
+
* payload = UTF-8 of `${email}|${purpose}|${issuedAt}`
|
|
29
|
+
* email: trimmed, lower-cased; purpose: 'confirm' | 'unsubscribe';
|
|
30
|
+
* issuedAt: whole seconds since the Unix epoch, in decimal
|
|
31
|
+
* token = base64url(payload) + '.' + base64url(HMAC-SHA256(key, payload))
|
|
32
|
+
* base64url = RFC 4648 §5, no '=' padding
|
|
33
|
+
*
|
|
34
|
+
* Verification: exactly one '.'; both parts base64url; a 32-byte MAC compared
|
|
35
|
+
* in constant time; the payload split at its LAST two '|'; the purpose the
|
|
36
|
+
* caller expects; issuedAt at most `futureSkewSeconds` ahead of now; a
|
|
37
|
+
* `confirm` token at most `confirmMaxAgeSeconds` old; an `unsubscribe` token
|
|
38
|
+
* never expires. No app secret: nothing is signed and nothing verifies. The
|
|
39
|
+
* links carry the token in the `t` query parameter of the site's confirm and
|
|
40
|
+
* unsubscribe pages.
|
|
41
|
+
*/
|
|
42
|
+
export declare const newsletterTokenSpec: {
|
|
43
|
+
keyLabel: string;
|
|
44
|
+
keySecretEnv: string;
|
|
45
|
+
separator: string;
|
|
46
|
+
purposes: readonly ["confirm", "unsubscribe"];
|
|
47
|
+
confirmMaxAgeSeconds: number;
|
|
48
|
+
futureSkewSeconds: number;
|
|
49
|
+
unsubscribeExpires: boolean;
|
|
50
|
+
maxTokenLength: number;
|
|
51
|
+
queryParameter: string;
|
|
52
|
+
/** One token, for a byte-for-byte check of any other implementation. */
|
|
53
|
+
testVector: {
|
|
54
|
+
secret: string;
|
|
55
|
+
email: string;
|
|
56
|
+
purpose: "unsubscribe";
|
|
57
|
+
issuedAt: number;
|
|
58
|
+
token: string;
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Every statement the helper runs. Each change of state is guarded in its own
|
|
63
|
+
* WHERE, so two requests at once can never take a row anywhere the policy
|
|
64
|
+
* does not allow (an unsubscribed person subscribed by a form, an event
|
|
65
|
+
* recorded twice). Consent is always written explicitly: a `users` table made
|
|
66
|
+
* before 2026-10-26 still defaults `marketing_consent` to TRUE.
|
|
67
|
+
*/
|
|
68
|
+
export declare const NEWSLETTER_SQL: {
|
|
69
|
+
/** `$1`: the address, lower-cased. The exact spelling first, else any case. */
|
|
70
|
+
findPerson: string;
|
|
71
|
+
/** `$1` address, `$2` `users.source`, `$3` `newsletter_source`. */
|
|
72
|
+
insertPending: string;
|
|
73
|
+
insertSubscribed: string;
|
|
74
|
+
/**
|
|
75
|
+
* `$1` id, `$2` `newsletter_source`: only a person never on the list, or
|
|
76
|
+
* still pending, and not opted out of email (an opt-out is undone only by
|
|
77
|
+
* the person's own confirmation click).
|
|
78
|
+
*/
|
|
79
|
+
markPending: string;
|
|
80
|
+
markSubscribed: string;
|
|
81
|
+
/** `$1` id: the confirmation link, the person's own click. */
|
|
82
|
+
confirm: string;
|
|
83
|
+
unsubscribe: string;
|
|
84
|
+
};
|
|
85
|
+
/** What the confirmation email says when the project's template has no body. */
|
|
86
|
+
export declare const DEFAULT_NEWSLETTER_CONFIRMATION_EMAIL: {
|
|
87
|
+
subject: string;
|
|
88
|
+
body: string;
|
|
89
|
+
};
|
|
90
|
+
export interface NewsletterHelperOptions {
|
|
91
|
+
settings: UIDLNewsletterSettings;
|
|
92
|
+
/** The `{{site_name}}` of the emails; the request's host when empty. */
|
|
93
|
+
siteName?: string;
|
|
94
|
+
/** The project has the in-app event bus (`hasAutomationsBus`). */
|
|
95
|
+
withAutomations?: boolean;
|
|
96
|
+
/**
|
|
97
|
+
* The sign-up route sends the account's own welcome email: a person who
|
|
98
|
+
* joins through the sign-up form's box is not sent the newsletter's too.
|
|
99
|
+
*/
|
|
100
|
+
signupSendsAccountWelcome?: boolean;
|
|
101
|
+
}
|
|
102
|
+
/** A same-site path without a query or fragment, else `fallback`. */
|
|
103
|
+
export declare const resolveNewsletterPagePath: (value: unknown, fallback: string) => string;
|
|
104
|
+
/** What a welcome email whose body has no `{{unsubscribe_url}}` gets, before `</body>`. */
|
|
105
|
+
export declare const NEWSLETTER_UNSUBSCRIBE_FOOTER = "<p style=\"font-size:12px;color:#6b7280;margin-top:24px\">You receive this email because you subscribed to the {{site_name}} newsletter. <a href=\"{{unsubscribe_url}}\">Unsubscribe</a></p>";
|
|
106
|
+
/** A newsletter email body that always carries its unsubscribe link. */
|
|
107
|
+
export declare const withUnsubscribeLink: (body: string) => string;
|
|
108
|
+
export declare const generateNewsletterHelperCode: (options: NewsletterHelperOptions) => string;
|
|
109
|
+
//# sourceMappingURL=helper-code.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helper-code.d.ts","sourceRoot":"","sources":["../../../src/newsletter/helper-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AA2BxE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;IAU9B,wEAAwE;;;;;;;;CASzE,CAAA;AAOD;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;IACzB,+EAA+E;;IAE/E,mEAAmE;;;IAGnE;;;;OAIG;;;IAGH,8DAA8D;;;CAG/D,CAAA;AAED,gFAAgF;AAChF,eAAO,MAAM,qCAAqC;;;CAMjD,CAAA;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,sBAAsB,CAAA;IAChC,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kEAAkE;IAClE,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAA;CACpC;AAED,qEAAqE;AACrE,eAAO,MAAM,yBAAyB,UAAW,OAAO,YAAY,MAAM,KAAG,MAW5E,CAAA;AAkCD,2FAA2F;AAC3F,eAAO,MAAM,6BAA6B,iMACkJ,CAAA;AAE5L,wEAAwE;AACxE,eAAO,MAAM,mBAAmB,SAAU,MAAM,KAAG,MAQlD,CAAA;AAuFD,eAAO,MAAM,4BAA4B,YAAa,uBAAuB,KAAG,MA6c/E,CAAA"}
|