@baruk/core 0.3.1 → 0.4.2
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/.baruk-provenance.json +10 -0
- package/CHANGELOG.md +85 -0
- package/dist/auth/password-reset.d.ts +30 -1
- package/dist/auth/password-reset.d.ts.map +1 -1
- package/dist/auth/password-reset.js +139 -11
- package/dist/auth/password-reset.js.map +1 -1
- package/dist/auth/service.d.ts +39 -2
- package/dist/auth/service.d.ts.map +1 -1
- package/dist/auth/service.js +75 -10
- package/dist/auth/service.js.map +1 -1
- package/dist/billing/ar-repository.d.ts +334 -0
- package/dist/billing/ar-repository.d.ts.map +1 -0
- package/dist/billing/ar-repository.js +707 -0
- package/dist/billing/ar-repository.js.map +1 -0
- package/dist/billing/auto-generation.d.ts +87 -0
- package/dist/billing/auto-generation.d.ts.map +1 -0
- package/dist/billing/auto-generation.js +181 -0
- package/dist/billing/auto-generation.js.map +1 -0
- package/dist/billing/live-guard.d.ts +64 -0
- package/dist/billing/live-guard.d.ts.map +1 -0
- package/dist/billing/live-guard.js +68 -0
- package/dist/billing/live-guard.js.map +1 -0
- package/dist/billing/payment-means-catalog.d.ts +17 -0
- package/dist/billing/payment-means-catalog.d.ts.map +1 -0
- package/dist/billing/payment-means-catalog.js +21 -0
- package/dist/billing/payment-means-catalog.js.map +1 -0
- package/dist/billing/payment-means.d.ts +38 -0
- package/dist/billing/payment-means.d.ts.map +1 -0
- package/dist/billing/payment-means.js +29 -0
- package/dist/billing/payment-means.js.map +1 -0
- package/dist/billing/payment-rail.d.ts +118 -0
- package/dist/billing/payment-rail.d.ts.map +1 -0
- package/dist/billing/payment-rail.js +295 -0
- package/dist/billing/payment-rail.js.map +1 -0
- package/dist/billing/provider/asaas.d.ts +46 -1
- package/dist/billing/provider/asaas.d.ts.map +1 -1
- package/dist/billing/provider/asaas.js +194 -14
- package/dist/billing/provider/asaas.js.map +1 -1
- package/dist/billing/provider/manual.js +1 -1
- package/dist/billing/provider/manual.js.map +1 -1
- package/dist/billing/provider/types.d.ts +115 -8
- package/dist/billing/provider/types.d.ts.map +1 -1
- package/dist/billing/provider-account.d.ts +89 -0
- package/dist/billing/provider-account.d.ts.map +1 -0
- package/dist/billing/provider-account.js +161 -0
- package/dist/billing/provider-account.js.map +1 -0
- package/dist/billing/provider-onboarding.d.ts +67 -0
- package/dist/billing/provider-onboarding.d.ts.map +1 -0
- package/dist/billing/provider-onboarding.js +234 -0
- package/dist/billing/provider-onboarding.js.map +1 -0
- package/dist/billing/receivable.d.ts +5 -1
- package/dist/billing/receivable.d.ts.map +1 -1
- package/dist/billing/reconcile.d.ts +58 -0
- package/dist/billing/reconcile.d.ts.map +1 -0
- package/dist/billing/reconcile.js +138 -0
- package/dist/billing/reconcile.js.map +1 -0
- package/dist/billing/repository.d.ts +90 -1
- package/dist/billing/repository.d.ts.map +1 -1
- package/dist/billing/repository.js +148 -19
- package/dist/billing/repository.js.map +1 -1
- package/dist/cjs/auth/password-reset.js +141 -11
- package/dist/cjs/auth/password-reset.js.map +1 -1
- package/dist/cjs/auth/service.js +75 -9
- package/dist/cjs/auth/service.js.map +1 -1
- package/dist/cjs/billing/ar-repository.js +728 -0
- package/dist/cjs/billing/ar-repository.js.map +1 -0
- package/dist/cjs/billing/auto-generation.js +186 -0
- package/dist/cjs/billing/auto-generation.js.map +1 -0
- package/dist/cjs/billing/live-guard.js +72 -0
- package/dist/cjs/billing/live-guard.js.map +1 -0
- package/dist/cjs/billing/payment-means-catalog.js +25 -0
- package/dist/cjs/billing/payment-means-catalog.js.map +1 -0
- package/dist/cjs/billing/payment-means.js +33 -0
- package/dist/cjs/billing/payment-means.js.map +1 -0
- package/dist/cjs/billing/payment-rail.js +301 -0
- package/dist/cjs/billing/payment-rail.js.map +1 -0
- package/dist/cjs/billing/provider/asaas.js +194 -14
- package/dist/cjs/billing/provider/asaas.js.map +1 -1
- package/dist/cjs/billing/provider/manual.js +1 -1
- package/dist/cjs/billing/provider/manual.js.map +1 -1
- package/dist/cjs/billing/provider-account.js +170 -0
- package/dist/cjs/billing/provider-account.js.map +1 -0
- package/dist/cjs/billing/provider-onboarding.js +239 -0
- package/dist/cjs/billing/provider-onboarding.js.map +1 -0
- package/dist/cjs/billing/reconcile.js +143 -0
- package/dist/cjs/billing/reconcile.js.map +1 -0
- package/dist/cjs/billing/repository.js +150 -18
- package/dist/cjs/billing/repository.js.map +1 -1
- package/dist/cjs/clients/repository.js +96 -20
- package/dist/cjs/clients/repository.js.map +1 -1
- package/dist/cjs/collection/branding.js +140 -0
- package/dist/cjs/collection/branding.js.map +1 -0
- package/dist/cjs/collection/channel-accounts.js +137 -0
- package/dist/cjs/collection/channel-accounts.js.map +1 -0
- package/dist/cjs/collection/channel.js +17 -0
- package/dist/cjs/collection/channel.js.map +1 -0
- package/dist/cjs/collection/communication-bridge.js +140 -0
- package/dist/cjs/collection/communication-bridge.js.map +1 -0
- package/dist/cjs/collection/communication-runtime.js +193 -0
- package/dist/cjs/collection/communication-runtime.js.map +1 -0
- package/dist/cjs/collection/consent-repository.js +84 -0
- package/dist/cjs/collection/consent-repository.js.map +1 -0
- package/dist/cjs/collection/copy.js +125 -0
- package/dist/cjs/collection/copy.js.map +1 -0
- package/dist/cjs/collection/delivery-callback.js +151 -0
- package/dist/cjs/collection/delivery-callback.js.map +1 -0
- package/dist/cjs/collection/email-layout.js +252 -0
- package/dist/cjs/collection/email-layout.js.map +1 -0
- package/dist/cjs/collection/engine.js +414 -0
- package/dist/cjs/collection/engine.js.map +1 -0
- package/dist/cjs/collection/format.js +76 -0
- package/dist/cjs/collection/format.js.map +1 -0
- package/dist/cjs/collection/payment-block.js +3 -0
- package/dist/cjs/collection/payment-block.js.map +1 -0
- package/dist/cjs/collection/policy.js +147 -0
- package/dist/cjs/collection/policy.js.map +1 -0
- package/dist/cjs/collection/repository.js +260 -0
- package/dist/cjs/collection/repository.js.map +1 -0
- package/dist/cjs/collection/subject.js +104 -0
- package/dist/cjs/collection/subject.js.map +1 -0
- package/dist/cjs/collection/template-catalog.js +165 -0
- package/dist/cjs/collection/template-catalog.js.map +1 -0
- package/dist/cjs/collection/template.js +78 -0
- package/dist/cjs/collection/template.js.map +1 -0
- package/dist/cjs/communication/adapters/email.js +132 -0
- package/dist/cjs/communication/adapters/email.js.map +1 -0
- package/dist/cjs/communication/adapters/sms.js +127 -0
- package/dist/cjs/communication/adapters/sms.js.map +1 -0
- package/dist/cjs/communication/adapters/whatsapp-language.js +39 -0
- package/dist/cjs/communication/adapters/whatsapp-language.js.map +1 -0
- package/dist/cjs/communication/adapters/whatsapp-templates.js +100 -0
- package/dist/cjs/communication/adapters/whatsapp-templates.js.map +1 -0
- package/dist/cjs/communication/adapters/whatsapp.js +213 -0
- package/dist/cjs/communication/adapters/whatsapp.js.map +1 -0
- package/dist/cjs/communication/audit.js +61 -0
- package/dist/cjs/communication/audit.js.map +1 -0
- package/dist/cjs/communication/capabilities.js +76 -0
- package/dist/cjs/communication/capabilities.js.map +1 -0
- package/dist/cjs/communication/channel.js +53 -0
- package/dist/cjs/communication/channel.js.map +1 -0
- package/dist/cjs/communication/claim.js +228 -0
- package/dist/cjs/communication/claim.js.map +1 -0
- package/dist/cjs/communication/consent.js +43 -0
- package/dist/cjs/communication/consent.js.map +1 -0
- package/dist/cjs/communication/context.js +45 -0
- package/dist/cjs/communication/context.js.map +1 -0
- package/dist/cjs/communication/credentials.js +121 -0
- package/dist/cjs/communication/credentials.js.map +1 -0
- package/dist/cjs/communication/dry-run-scenario.js +161 -0
- package/dist/cjs/communication/dry-run-scenario.js.map +1 -0
- package/dist/cjs/communication/dry-run.js +97 -0
- package/dist/cjs/communication/dry-run.js.map +1 -0
- package/dist/cjs/communication/engine.js +483 -0
- package/dist/cjs/communication/engine.js.map +1 -0
- package/dist/cjs/communication/graph.js +50 -0
- package/dist/cjs/communication/graph.js.map +1 -0
- package/dist/cjs/communication/idempotency.js +26 -0
- package/dist/cjs/communication/idempotency.js.map +1 -0
- package/dist/cjs/communication/identity.js +110 -0
- package/dist/cjs/communication/identity.js.map +1 -0
- package/dist/cjs/communication/index.js +135 -0
- package/dist/cjs/communication/index.js.map +1 -0
- package/dist/cjs/communication/onboarding.js +297 -0
- package/dist/cjs/communication/onboarding.js.map +1 -0
- package/dist/cjs/communication/policy.js +16 -0
- package/dist/cjs/communication/policy.js.map +1 -0
- package/dist/cjs/communication/routing.js +77 -0
- package/dist/cjs/communication/routing.js.map +1 -0
- package/dist/cjs/communication/sender-profile.js +128 -0
- package/dist/cjs/communication/sender-profile.js.map +1 -0
- package/dist/cjs/communication/status.js +86 -0
- package/dist/cjs/communication/status.js.map +1 -0
- package/dist/cjs/communication/stores/onboarding.js +135 -0
- package/dist/cjs/communication/stores/onboarding.js.map +1 -0
- package/dist/cjs/communication/stores/postgres.js +458 -0
- package/dist/cjs/communication/stores/postgres.js.map +1 -0
- package/dist/cjs/communication/stores/routing.js +334 -0
- package/dist/cjs/communication/stores/routing.js.map +1 -0
- package/dist/cjs/communication/stores/secrets.js +126 -0
- package/dist/cjs/communication/stores/secrets.js.map +1 -0
- package/dist/cjs/communication/template-provider.js +22 -0
- package/dist/cjs/communication/template-provider.js.map +1 -0
- package/dist/cjs/communication/template.js +63 -0
- package/dist/cjs/communication/template.js.map +1 -0
- package/dist/cjs/communication/webhook-subscription.js +258 -0
- package/dist/cjs/communication/webhook-subscription.js.map +1 -0
- package/dist/cjs/communication/webhook.js +292 -0
- package/dist/cjs/communication/webhook.js.map +1 -0
- package/dist/cjs/competence/repository.js +309 -0
- package/dist/cjs/competence/repository.js.map +1 -0
- package/dist/cjs/contacts/phone.js +192 -0
- package/dist/cjs/contacts/phone.js.map +1 -0
- package/dist/cjs/db/seed-catalog.js +48 -0
- package/dist/cjs/db/seed-catalog.js.map +1 -0
- package/dist/cjs/db/seed.js +15 -7
- package/dist/cjs/db/seed.js.map +1 -1
- package/dist/cjs/documents/repository.js +244 -0
- package/dist/cjs/documents/repository.js.map +1 -0
- package/dist/cjs/documents/requests.js +136 -0
- package/dist/cjs/documents/requests.js.map +1 -0
- package/dist/cjs/index.js +406 -39
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/legal/documents.js +125 -3
- package/dist/cjs/legal/documents.js.map +1 -1
- package/dist/cjs/legal/types.js +1 -0
- package/dist/cjs/legal/types.js.map +1 -1
- package/dist/cjs/mail/auth-templates.js +29 -0
- package/dist/cjs/mail/auth-templates.js.map +1 -0
- package/dist/cjs/mail/dedup-store.js +12 -51
- package/dist/cjs/mail/dedup-store.js.map +1 -1
- package/dist/cjs/mail/index.js +16 -4
- package/dist/cjs/mail/index.js.map +1 -1
- package/dist/cjs/mail/provider.js +12 -247
- package/dist/cjs/mail/provider.js.map +1 -1
- package/dist/cjs/mail/resend.js +14 -18
- package/dist/cjs/mail/resend.js.map +1 -1
- package/dist/cjs/mail/sender-resolver.js +12 -11
- package/dist/cjs/mail/sender-resolver.js.map +1 -1
- package/dist/cjs/mail/template-renderer.js +11 -16
- package/dist/cjs/mail/template-renderer.js.map +1 -1
- package/dist/cjs/mail/transactional-outbound.js +117 -0
- package/dist/cjs/mail/transactional-outbound.js.map +1 -0
- package/dist/cjs/mail/types.js +8 -35
- package/dist/cjs/mail/types.js.map +1 -1
- package/dist/cjs/portal/provisioning.js +144 -0
- package/dist/cjs/portal/provisioning.js.map +1 -0
- package/dist/cjs/pricing-engine/canonical.js +42 -0
- package/dist/cjs/pricing-engine/canonical.js.map +1 -0
- package/dist/cjs/pricing-engine/errors.js +6 -1
- package/dist/cjs/pricing-engine/errors.js.map +1 -1
- package/dist/cjs/pricing-engine/index.js +12 -1
- package/dist/cjs/pricing-engine/index.js.map +1 -1
- package/dist/cjs/pricing-engine/pipeline.js +200 -26
- package/dist/cjs/pricing-engine/pipeline.js.map +1 -1
- package/dist/cjs/pricing-engine/shadow-adapter.js +79 -0
- package/dist/cjs/pricing-engine/shadow-adapter.js.map +1 -0
- package/dist/cjs/pricing-engine/shadow-diff.js +55 -0
- package/dist/cjs/pricing-engine/shadow-diff.js.map +1 -0
- package/dist/cjs/pricing-engine/shadow-facade.js +85 -0
- package/dist/cjs/pricing-engine/shadow-facade.js.map +1 -0
- package/dist/cjs/pricing-engine/shadow-legacy-types.js +19 -0
- package/dist/cjs/pricing-engine/shadow-legacy-types.js.map +1 -0
- package/dist/cjs/pricing-engine/shadow-metrics.js +34 -0
- package/dist/cjs/pricing-engine/shadow-metrics.js.map +1 -0
- package/dist/cjs/pricing-engine/shadow-normalizer.js +42 -0
- package/dist/cjs/pricing-engine/shadow-normalizer.js.map +1 -0
- package/dist/cjs/rbac/authorize.js +28 -0
- package/dist/cjs/rbac/authorize.js.map +1 -1
- package/dist/cjs/rbac/catalog.js +67 -1
- package/dist/cjs/rbac/catalog.js.map +1 -1
- package/dist/cjs/rbac/workload-provisioning.js +160 -0
- package/dist/cjs/rbac/workload-provisioning.js.map +1 -0
- package/dist/cjs/rbac/workload.js +191 -0
- package/dist/cjs/rbac/workload.js.map +1 -0
- package/dist/cjs/storage/checksum.js +15 -0
- package/dist/cjs/storage/checksum.js.map +1 -0
- package/dist/cjs/storage/key.js +72 -0
- package/dist/cjs/storage/key.js.map +1 -0
- package/dist/cjs/storage/local.js +100 -0
- package/dist/cjs/storage/local.js.map +1 -0
- package/dist/cjs/storage/r2.js +181 -0
- package/dist/cjs/storage/r2.js.map +1 -0
- package/dist/cjs/storage/registry.js +41 -0
- package/dist/cjs/storage/registry.js.map +1 -0
- package/dist/cjs/storage/types.js +50 -0
- package/dist/cjs/storage/types.js.map +1 -0
- package/dist/cjs/subscription-billing/provider/asaas.js +32 -7
- package/dist/cjs/subscription-billing/provider/asaas.js.map +1 -1
- package/dist/cjs/subscription-billing/provider/disabled.js +8 -0
- package/dist/cjs/subscription-billing/provider/disabled.js.map +1 -1
- package/dist/cjs/subscription-billing/provider/registry.js +17 -0
- package/dist/cjs/subscription-billing/provider/registry.js.map +1 -1
- package/dist/cjs/subscription-billing/service.js +57 -8
- package/dist/cjs/subscription-billing/service.js.map +1 -1
- package/dist/cjs/subscription-billing/types.js.map +1 -1
- package/dist/cjs/tenancy/provisioning.js +32 -8
- package/dist/cjs/tenancy/provisioning.js.map +1 -1
- package/dist/cjs/users/repository.js +119 -2
- package/dist/cjs/users/repository.js.map +1 -1
- package/dist/cjs/vault/repository.js +81 -0
- package/dist/cjs/vault/repository.js.map +1 -1
- package/dist/clients/repository.d.ts +42 -0
- package/dist/clients/repository.d.ts.map +1 -1
- package/dist/clients/repository.js +94 -21
- package/dist/clients/repository.js.map +1 -1
- package/dist/collection/branding.d.ts +72 -0
- package/dist/collection/branding.d.ts.map +1 -0
- package/dist/collection/branding.js +136 -0
- package/dist/collection/branding.js.map +1 -0
- package/dist/collection/channel-accounts.d.ts +57 -0
- package/dist/collection/channel-accounts.d.ts.map +1 -0
- package/dist/collection/channel-accounts.js +133 -0
- package/dist/collection/channel-accounts.js.map +1 -0
- package/dist/collection/channel.d.ts +24 -0
- package/dist/collection/channel.d.ts.map +1 -0
- package/dist/collection/channel.js +16 -0
- package/dist/collection/channel.js.map +1 -0
- package/dist/collection/communication-bridge.d.ts +66 -0
- package/dist/collection/communication-bridge.d.ts.map +1 -0
- package/dist/collection/communication-bridge.js +134 -0
- package/dist/collection/communication-bridge.js.map +1 -0
- package/dist/collection/communication-runtime.d.ts +95 -0
- package/dist/collection/communication-runtime.d.ts.map +1 -0
- package/dist/collection/communication-runtime.js +187 -0
- package/dist/collection/communication-runtime.js.map +1 -0
- package/dist/collection/consent-repository.d.ts +32 -0
- package/dist/collection/consent-repository.d.ts.map +1 -0
- package/dist/collection/consent-repository.js +79 -0
- package/dist/collection/consent-repository.js.map +1 -0
- package/dist/collection/copy.d.ts +50 -0
- package/dist/collection/copy.d.ts.map +1 -0
- package/dist/collection/copy.js +122 -0
- package/dist/collection/copy.js.map +1 -0
- package/dist/collection/delivery-callback.d.ts +49 -0
- package/dist/collection/delivery-callback.d.ts.map +1 -0
- package/dist/collection/delivery-callback.js +147 -0
- package/dist/collection/delivery-callback.js.map +1 -0
- package/dist/collection/email-layout.d.ts +45 -0
- package/dist/collection/email-layout.d.ts.map +1 -0
- package/dist/collection/email-layout.js +247 -0
- package/dist/collection/email-layout.js.map +1 -0
- package/dist/collection/engine.d.ts +177 -0
- package/dist/collection/engine.d.ts.map +1 -0
- package/dist/collection/engine.js +407 -0
- package/dist/collection/engine.js.map +1 -0
- package/dist/collection/format.d.ts +32 -0
- package/dist/collection/format.d.ts.map +1 -0
- package/dist/collection/format.js +70 -0
- package/dist/collection/format.js.map +1 -0
- package/dist/collection/payment-block.d.ts +24 -0
- package/dist/collection/payment-block.d.ts.map +1 -0
- package/dist/collection/payment-block.js +2 -0
- package/dist/collection/payment-block.js.map +1 -0
- package/dist/collection/policy.d.ts +53 -0
- package/dist/collection/policy.d.ts.map +1 -0
- package/dist/collection/policy.js +141 -0
- package/dist/collection/policy.js.map +1 -0
- package/dist/collection/repository.d.ts +129 -0
- package/dist/collection/repository.d.ts.map +1 -0
- package/dist/collection/repository.js +246 -0
- package/dist/collection/repository.js.map +1 -0
- package/dist/collection/subject.d.ts +66 -0
- package/dist/collection/subject.d.ts.map +1 -0
- package/dist/collection/subject.js +99 -0
- package/dist/collection/subject.js.map +1 -0
- package/dist/collection/template-catalog.d.ts +16 -0
- package/dist/collection/template-catalog.d.ts.map +1 -0
- package/dist/collection/template-catalog.js +162 -0
- package/dist/collection/template-catalog.js.map +1 -0
- package/dist/collection/template.d.ts +37 -0
- package/dist/collection/template.d.ts.map +1 -0
- package/dist/collection/template.js +73 -0
- package/dist/collection/template.js.map +1 -0
- package/dist/communication/adapters/email.d.ts +28 -0
- package/dist/communication/adapters/email.d.ts.map +1 -0
- package/dist/communication/adapters/email.js +129 -0
- package/dist/communication/adapters/email.js.map +1 -0
- package/dist/communication/adapters/sms.d.ts +95 -0
- package/dist/communication/adapters/sms.d.ts.map +1 -0
- package/dist/communication/adapters/sms.js +121 -0
- package/dist/communication/adapters/sms.js.map +1 -0
- package/dist/communication/adapters/whatsapp-language.d.ts +34 -0
- package/dist/communication/adapters/whatsapp-language.d.ts.map +1 -0
- package/dist/communication/adapters/whatsapp-language.js +36 -0
- package/dist/communication/adapters/whatsapp-language.js.map +1 -0
- package/dist/communication/adapters/whatsapp-templates.d.ts +18 -0
- package/dist/communication/adapters/whatsapp-templates.d.ts.map +1 -0
- package/dist/communication/adapters/whatsapp-templates.js +97 -0
- package/dist/communication/adapters/whatsapp-templates.js.map +1 -0
- package/dist/communication/adapters/whatsapp.d.ts +29 -0
- package/dist/communication/adapters/whatsapp.d.ts.map +1 -0
- package/dist/communication/adapters/whatsapp.js +210 -0
- package/dist/communication/adapters/whatsapp.js.map +1 -0
- package/dist/communication/audit.d.ts +105 -0
- package/dist/communication/audit.d.ts.map +1 -0
- package/dist/communication/audit.js +56 -0
- package/dist/communication/audit.js.map +1 -0
- package/dist/communication/capabilities.d.ts +88 -0
- package/dist/communication/capabilities.d.ts.map +1 -0
- package/dist/communication/capabilities.js +72 -0
- package/dist/communication/capabilities.js.map +1 -0
- package/dist/communication/channel.d.ts +125 -0
- package/dist/communication/channel.d.ts.map +1 -0
- package/dist/communication/channel.js +47 -0
- package/dist/communication/channel.js.map +1 -0
- package/dist/communication/claim.d.ts +368 -0
- package/dist/communication/claim.d.ts.map +1 -0
- package/dist/communication/claim.js +224 -0
- package/dist/communication/claim.js.map +1 -0
- package/dist/communication/consent.d.ts +65 -0
- package/dist/communication/consent.d.ts.map +1 -0
- package/dist/communication/consent.js +40 -0
- package/dist/communication/consent.js.map +1 -0
- package/dist/communication/context.d.ts +48 -0
- package/dist/communication/context.d.ts.map +1 -0
- package/dist/communication/context.js +41 -0
- package/dist/communication/context.js.map +1 -0
- package/dist/communication/credentials.d.ts +74 -0
- package/dist/communication/credentials.d.ts.map +1 -0
- package/dist/communication/credentials.js +115 -0
- package/dist/communication/credentials.js.map +1 -0
- package/dist/communication/dry-run-scenario.d.ts +37 -0
- package/dist/communication/dry-run-scenario.d.ts.map +1 -0
- package/dist/communication/dry-run-scenario.js +158 -0
- package/dist/communication/dry-run-scenario.js.map +1 -0
- package/dist/communication/dry-run.d.ts +40 -0
- package/dist/communication/dry-run.d.ts.map +1 -0
- package/dist/communication/dry-run.js +92 -0
- package/dist/communication/dry-run.js.map +1 -0
- package/dist/communication/engine.d.ts +153 -0
- package/dist/communication/engine.d.ts.map +1 -0
- package/dist/communication/engine.js +480 -0
- package/dist/communication/engine.js.map +1 -0
- package/dist/communication/graph.d.ts +38 -0
- package/dist/communication/graph.d.ts.map +1 -0
- package/dist/communication/graph.js +45 -0
- package/dist/communication/graph.js.map +1 -0
- package/dist/communication/idempotency.d.ts +33 -0
- package/dist/communication/idempotency.d.ts.map +1 -0
- package/dist/communication/idempotency.js +23 -0
- package/dist/communication/idempotency.js.map +1 -0
- package/dist/communication/identity.d.ts +127 -0
- package/dist/communication/identity.d.ts.map +1 -0
- package/dist/communication/identity.js +105 -0
- package/dist/communication/identity.js.map +1 -0
- package/dist/communication/index.d.ts +66 -0
- package/dist/communication/index.d.ts.map +1 -0
- package/dist/communication/index.js +42 -0
- package/dist/communication/index.js.map +1 -0
- package/dist/communication/onboarding.d.ts +223 -0
- package/dist/communication/onboarding.d.ts.map +1 -0
- package/dist/communication/onboarding.js +287 -0
- package/dist/communication/onboarding.js.map +1 -0
- package/dist/communication/policy.d.ts +99 -0
- package/dist/communication/policy.d.ts.map +1 -0
- package/dist/communication/policy.js +13 -0
- package/dist/communication/policy.js.map +1 -0
- package/dist/communication/routing.d.ts +99 -0
- package/dist/communication/routing.d.ts.map +1 -0
- package/dist/communication/routing.js +73 -0
- package/dist/communication/routing.js.map +1 -0
- package/dist/communication/sender-profile.d.ts +100 -0
- package/dist/communication/sender-profile.d.ts.map +1 -0
- package/dist/communication/sender-profile.js +123 -0
- package/dist/communication/sender-profile.js.map +1 -0
- package/dist/communication/status.d.ts +48 -0
- package/dist/communication/status.d.ts.map +1 -0
- package/dist/communication/status.js +79 -0
- package/dist/communication/status.js.map +1 -0
- package/dist/communication/stores/onboarding.d.ts +88 -0
- package/dist/communication/stores/onboarding.d.ts.map +1 -0
- package/dist/communication/stores/onboarding.js +127 -0
- package/dist/communication/stores/onboarding.js.map +1 -0
- package/dist/communication/stores/postgres.d.ts +81 -0
- package/dist/communication/stores/postgres.d.ts.map +1 -0
- package/dist/communication/stores/postgres.js +453 -0
- package/dist/communication/stores/postgres.js.map +1 -0
- package/dist/communication/stores/routing.d.ts +169 -0
- package/dist/communication/stores/routing.d.ts.map +1 -0
- package/dist/communication/stores/routing.js +324 -0
- package/dist/communication/stores/routing.js.map +1 -0
- package/dist/communication/stores/secrets.d.ts +89 -0
- package/dist/communication/stores/secrets.d.ts.map +1 -0
- package/dist/communication/stores/secrets.js +122 -0
- package/dist/communication/stores/secrets.js.map +1 -0
- package/dist/communication/template-provider.d.ts +85 -0
- package/dist/communication/template-provider.d.ts.map +1 -0
- package/dist/communication/template-provider.js +21 -0
- package/dist/communication/template-provider.js.map +1 -0
- package/dist/communication/template.d.ts +87 -0
- package/dist/communication/template.d.ts.map +1 -0
- package/dist/communication/template.js +59 -0
- package/dist/communication/template.js.map +1 -0
- package/dist/communication/webhook-subscription.d.ts +156 -0
- package/dist/communication/webhook-subscription.d.ts.map +1 -0
- package/dist/communication/webhook-subscription.js +252 -0
- package/dist/communication/webhook-subscription.js.map +1 -0
- package/dist/communication/webhook.d.ts +121 -0
- package/dist/communication/webhook.d.ts.map +1 -0
- package/dist/communication/webhook.js +283 -0
- package/dist/communication/webhook.js.map +1 -0
- package/dist/competence/repository.d.ts +147 -0
- package/dist/competence/repository.d.ts.map +1 -0
- package/dist/competence/repository.js +294 -0
- package/dist/competence/repository.js.map +1 -0
- package/dist/contacts/phone.d.ts +70 -0
- package/dist/contacts/phone.d.ts.map +1 -0
- package/dist/contacts/phone.js +186 -0
- package/dist/contacts/phone.js.map +1 -0
- package/dist/db/migrate.js +17 -11
- package/dist/db/migrate.js.map +1 -1
- package/dist/db/seed-catalog.d.ts +18 -0
- package/dist/db/seed-catalog.d.ts.map +1 -0
- package/dist/db/seed-catalog.js +45 -0
- package/dist/db/seed-catalog.js.map +1 -0
- package/dist/db/seed.js +16 -8
- package/dist/db/seed.js.map +1 -1
- package/dist/documents/repository.d.ts +97 -0
- package/dist/documents/repository.d.ts.map +1 -0
- package/dist/documents/repository.js +236 -0
- package/dist/documents/repository.js.map +1 -0
- package/dist/documents/requests.d.ts +73 -0
- package/dist/documents/requests.d.ts.map +1 -0
- package/dist/documents/requests.js +127 -0
- package/dist/documents/requests.js.map +1 -0
- package/dist/index.d.ts +109 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +100 -8
- package/dist/index.js.map +1 -1
- package/dist/legal/documents.d.ts.map +1 -1
- package/dist/legal/documents.js +125 -3
- package/dist/legal/documents.js.map +1 -1
- package/dist/legal/index.d.ts +1 -1
- package/dist/legal/index.d.ts.map +1 -1
- package/dist/legal/types.d.ts +32 -1
- package/dist/legal/types.d.ts.map +1 -1
- package/dist/legal/types.js +1 -0
- package/dist/legal/types.js.map +1 -1
- package/dist/mail/auth-templates.d.ts +15 -0
- package/dist/mail/auth-templates.d.ts.map +1 -0
- package/dist/mail/auth-templates.js +26 -0
- package/dist/mail/auth-templates.js.map +1 -0
- package/dist/mail/dedup-store.d.ts +1 -24
- package/dist/mail/dedup-store.d.ts.map +1 -1
- package/dist/mail/dedup-store.js +9 -48
- package/dist/mail/dedup-store.js.map +1 -1
- package/dist/mail/index.d.ts +2 -1
- package/dist/mail/index.d.ts.map +1 -1
- package/dist/mail/index.js +13 -2
- package/dist/mail/index.js.map +1 -1
- package/dist/mail/provider.d.ts +2 -30
- package/dist/mail/provider.d.ts.map +1 -1
- package/dist/mail/provider.js +10 -246
- package/dist/mail/provider.js.map +1 -1
- package/dist/mail/resend.d.ts +2 -12
- package/dist/mail/resend.d.ts.map +1 -1
- package/dist/mail/resend.js +11 -17
- package/dist/mail/resend.js.map +1 -1
- package/dist/mail/sender-resolver.d.ts +1 -7
- package/dist/mail/sender-resolver.d.ts.map +1 -1
- package/dist/mail/sender-resolver.js +11 -10
- package/dist/mail/sender-resolver.js.map +1 -1
- package/dist/mail/template-renderer.d.ts +1 -9
- package/dist/mail/template-renderer.d.ts.map +1 -1
- package/dist/mail/template-renderer.js +10 -15
- package/dist/mail/template-renderer.js.map +1 -1
- package/dist/mail/transactional-outbound.d.ts +115 -0
- package/dist/mail/transactional-outbound.d.ts.map +1 -0
- package/dist/mail/transactional-outbound.js +113 -0
- package/dist/mail/transactional-outbound.js.map +1 -0
- package/dist/mail/types.d.ts +2 -142
- package/dist/mail/types.d.ts.map +1 -1
- package/dist/mail/types.js +1 -33
- package/dist/mail/types.js.map +1 -1
- package/dist/portal/provisioning.d.ts +58 -0
- package/dist/portal/provisioning.d.ts.map +1 -0
- package/dist/portal/provisioning.js +139 -0
- package/dist/portal/provisioning.js.map +1 -0
- package/dist/pricing-engine/canonical.d.ts +14 -0
- package/dist/pricing-engine/canonical.d.ts.map +1 -0
- package/dist/pricing-engine/canonical.js +39 -0
- package/dist/pricing-engine/canonical.js.map +1 -0
- package/dist/pricing-engine/errors.d.ts.map +1 -1
- package/dist/pricing-engine/errors.js +6 -1
- package/dist/pricing-engine/errors.js.map +1 -1
- package/dist/pricing-engine/index.d.ts +12 -2
- package/dist/pricing-engine/index.d.ts.map +1 -1
- package/dist/pricing-engine/index.js +6 -1
- package/dist/pricing-engine/index.js.map +1 -1
- package/dist/pricing-engine/pipeline.d.ts.map +1 -1
- package/dist/pricing-engine/pipeline.js +202 -28
- package/dist/pricing-engine/pipeline.js.map +1 -1
- package/dist/pricing-engine/shadow-adapter.d.ts +37 -0
- package/dist/pricing-engine/shadow-adapter.d.ts.map +1 -0
- package/dist/pricing-engine/shadow-adapter.js +75 -0
- package/dist/pricing-engine/shadow-adapter.js.map +1 -0
- package/dist/pricing-engine/shadow-diff.d.ts +26 -0
- package/dist/pricing-engine/shadow-diff.d.ts.map +1 -0
- package/dist/pricing-engine/shadow-diff.js +52 -0
- package/dist/pricing-engine/shadow-diff.js.map +1 -0
- package/dist/pricing-engine/shadow-facade.d.ts +42 -0
- package/dist/pricing-engine/shadow-facade.d.ts.map +1 -0
- package/dist/pricing-engine/shadow-facade.js +82 -0
- package/dist/pricing-engine/shadow-facade.js.map +1 -0
- package/dist/pricing-engine/shadow-legacy-types.d.ts +64 -0
- package/dist/pricing-engine/shadow-legacy-types.d.ts.map +1 -0
- package/dist/pricing-engine/shadow-legacy-types.js +18 -0
- package/dist/pricing-engine/shadow-legacy-types.js.map +1 -0
- package/dist/pricing-engine/shadow-metrics.d.ts +33 -0
- package/dist/pricing-engine/shadow-metrics.d.ts.map +1 -0
- package/dist/pricing-engine/shadow-metrics.js +31 -0
- package/dist/pricing-engine/shadow-metrics.js.map +1 -0
- package/dist/pricing-engine/shadow-normalizer.d.ts +17 -0
- package/dist/pricing-engine/shadow-normalizer.d.ts.map +1 -0
- package/dist/pricing-engine/shadow-normalizer.js +39 -0
- package/dist/pricing-engine/shadow-normalizer.js.map +1 -0
- package/dist/pricing-engine/types.d.ts +2 -0
- package/dist/pricing-engine/types.d.ts.map +1 -1
- package/dist/rbac/authorize.d.ts +12 -0
- package/dist/rbac/authorize.d.ts.map +1 -1
- package/dist/rbac/authorize.js +27 -0
- package/dist/rbac/authorize.js.map +1 -1
- package/dist/rbac/catalog.d.ts.map +1 -1
- package/dist/rbac/catalog.js +67 -1
- package/dist/rbac/catalog.js.map +1 -1
- package/dist/rbac/workload-provisioning.d.ts +66 -0
- package/dist/rbac/workload-provisioning.d.ts.map +1 -0
- package/dist/rbac/workload-provisioning.js +153 -0
- package/dist/rbac/workload-provisioning.js.map +1 -0
- package/dist/rbac/workload.d.ts +124 -0
- package/dist/rbac/workload.d.ts.map +1 -0
- package/dist/rbac/workload.js +184 -0
- package/dist/rbac/workload.js.map +1 -0
- package/dist/storage/checksum.d.ts +9 -0
- package/dist/storage/checksum.d.ts.map +1 -0
- package/dist/storage/checksum.js +12 -0
- package/dist/storage/checksum.js.map +1 -0
- package/dist/storage/key.d.ts +37 -0
- package/dist/storage/key.d.ts.map +1 -0
- package/dist/storage/key.js +67 -0
- package/dist/storage/key.js.map +1 -0
- package/dist/storage/local.d.ts +40 -0
- package/dist/storage/local.d.ts.map +1 -0
- package/dist/storage/local.js +96 -0
- package/dist/storage/local.js.map +1 -0
- package/dist/storage/r2.d.ts +43 -0
- package/dist/storage/r2.d.ts.map +1 -0
- package/dist/storage/r2.js +177 -0
- package/dist/storage/r2.js.map +1 -0
- package/dist/storage/registry.d.ts +23 -0
- package/dist/storage/registry.d.ts.map +1 -0
- package/dist/storage/registry.js +37 -0
- package/dist/storage/registry.js.map +1 -0
- package/dist/storage/types.d.ts +67 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +45 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/subscription-billing/provider/asaas.d.ts +14 -0
- package/dist/subscription-billing/provider/asaas.d.ts.map +1 -1
- package/dist/subscription-billing/provider/asaas.js +32 -7
- package/dist/subscription-billing/provider/asaas.js.map +1 -1
- package/dist/subscription-billing/provider/disabled.d.ts +9 -0
- package/dist/subscription-billing/provider/disabled.d.ts.map +1 -1
- package/dist/subscription-billing/provider/disabled.js +8 -0
- package/dist/subscription-billing/provider/disabled.js.map +1 -1
- package/dist/subscription-billing/provider/registry.d.ts +10 -0
- package/dist/subscription-billing/provider/registry.d.ts.map +1 -1
- package/dist/subscription-billing/provider/registry.js +17 -0
- package/dist/subscription-billing/provider/registry.js.map +1 -1
- package/dist/subscription-billing/service.d.ts +17 -1
- package/dist/subscription-billing/service.d.ts.map +1 -1
- package/dist/subscription-billing/service.js +57 -8
- package/dist/subscription-billing/service.js.map +1 -1
- package/dist/subscription-billing/types.d.ts +13 -0
- package/dist/subscription-billing/types.d.ts.map +1 -1
- package/dist/subscription-billing/types.js.map +1 -1
- package/dist/tenancy/provisioning.d.ts.map +1 -1
- package/dist/tenancy/provisioning.js +32 -8
- package/dist/tenancy/provisioning.js.map +1 -1
- package/dist/users/repository.d.ts +38 -0
- package/dist/users/repository.d.ts.map +1 -1
- package/dist/users/repository.js +118 -3
- package/dist/users/repository.js.map +1 -1
- package/dist/vault/repository.d.ts +67 -0
- package/dist/vault/repository.d.ts.map +1 -1
- package/dist/vault/repository.js +78 -0
- package/dist/vault/repository.js.map +1 -1
- package/package.json +13 -4
- package/src/db/migrations/0023_user_invite_activation.sql +15 -0
- package/src/db/migrations/0024_set_user_password_function.sql +32 -0
- package/src/db/migrations/0025_revoke_user_session_function.sql +28 -0
- package/src/db/migrations/0026_documents_and_competence.sql +353 -0
- package/src/db/migrations/0027_receivable_client_isolation.sql +58 -0
- package/src/db/migrations/0028_collection_engine.sql +94 -0
- package/src/db/migrations/0029_payment_rail.sql +107 -0
- package/src/db/migrations/0030_provider_account_uniqueness.sql +22 -0
- package/src/db/migrations/0031_provider_account_environment_scope.sql +21 -0
- package/src/db/migrations/0032_settlement_reversal.sql +76 -0
- package/src/db/migrations/0033_receivable_idempotency.sql +28 -0
- package/src/db/migrations/0034_payment_customer_reconcile.sql +30 -0
- package/src/db/migrations/0035_payment_account_environments.sql +61 -0
- package/src/db/migrations/0036_primary_backfill_under_force_rls.sql +41 -0
- package/src/db/migrations/0037_receivable_generation_source.sql +29 -0
- package/src/db/migrations/0038_notification_channels.sql +175 -0
- package/src/db/migrations/0039_communication_dispatch_claim.sql +193 -0
- package/src/db/migrations/0040_communication_unknown_outcome.sql +99 -0
- package/src/db/migrations/0041_channel_binding_routing.sql +146 -0
- package/src/db/migrations/0042_channel_route_read_isolation.sql +165 -0
- package/src/db/migrations/0043_workload_identity.sql +105 -0
- package/src/db/migrations/0044_channel_onboarding_session.sql +96 -0
- package/dist/cjs/mail/resend-client.js +0 -103
- package/dist/cjs/mail/resend-client.js.map +0 -1
- package/dist/mail/resend-client.d.ts +0 -16
- package/dist/mail/resend-client.d.ts.map +0 -1
- package/dist/mail/resend-client.js +0 -100
- package/dist/mail/resend-client.js.map +0 -1
|
@@ -0,0 +1,483 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Motor de comunicação compartilhado.
|
|
4
|
+
*
|
|
5
|
+
* INTENT → CONTEXT → POLICY → IDENTITY → CONSENT → RECIPIENT → TEMPLATE
|
|
6
|
+
* → CONTENT → CLAIM → [RECOVERY?] → FENCE → ADAPTER → SETTLE
|
|
7
|
+
*
|
|
8
|
+
* O consumidor declara a INTENÇÃO de negócio ("avisar este cliente sobre o
|
|
9
|
+
* recebível X, etapa D+3, preferindo WhatsApp"). O motor decide nada sobre o
|
|
10
|
+
* negócio e tudo sobre a entrega.
|
|
11
|
+
*
|
|
12
|
+
* Cada porta abaixo pode recusar, e **toda recusa tem motivo próprio**. Um motor
|
|
13
|
+
* que devolve "não enviado" sem dizer qual porta fechou obriga o escritório a
|
|
14
|
+
* adivinhar entre "o cliente pediu para não receber" e "ninguém cadastrou o
|
|
15
|
+
* telefone" — que exigem ações opostas de quem opera.
|
|
16
|
+
*
|
|
17
|
+
* **CLAIM é a penúltima porta, e é a mais importante.** Ela fica imediatamente
|
|
18
|
+
* antes do adapter porque é o único lugar onde uma reserva serve para alguma
|
|
19
|
+
* coisa: a proteção contra envio duplo tem de acontecer antes do efeito externo,
|
|
20
|
+
* nunca depois. Ver `claim.ts`.
|
|
21
|
+
*
|
|
22
|
+
* Entre CLAIM e ADAPTER existem duas etapas que a H2 acrescentou, e nenhuma das
|
|
23
|
+
* duas é opcional:
|
|
24
|
+
*
|
|
25
|
+
* RECOVERY quando a reserva foi retomada de um titular que já tinha falado com
|
|
26
|
+
* o provider, o desfecho anterior é DESCONHECIDO. O motor só reenvia
|
|
27
|
+
* se o adapter declarar idempotência de provider que ainda cubra a
|
|
28
|
+
* chave; sem isso, recusa e deixa a chave visível para quem opera.
|
|
29
|
+
* FENCE a marca durável de "vou chamar o provider agora", gravada antes da
|
|
30
|
+
* chamada — e, na MESMA operação, a prova de que quem vai chamar
|
|
31
|
+
* ainda é o titular da geração corrente. É ela que dá à próxima
|
|
32
|
+
* retomada como saber a diferença entre "morreu antes de enviar" e
|
|
33
|
+
* "morreu depois", e é ela que impede o titular vencido de alcançar
|
|
34
|
+
* o provider. Perdeu a autoridade, não chama: sem exceção.
|
|
35
|
+
*
|
|
36
|
+
* A trilha do CICLO DE VIDA do disparo (`dispatch_claimed`, `dispatch_sent`,
|
|
37
|
+
* `dispatch_failed`) é gravada pelo STORE, junto com a reserva, e não pelo
|
|
38
|
+
* `audit` daqui. A razão está em `claim.ts`: o `audit` do motor vive na transação
|
|
39
|
+
* de negócio de quem chamou, e um rollback dela apagava a narrativa de um envio
|
|
40
|
+
* que tinha acontecido de verdade.
|
|
41
|
+
*/
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.dispatch = dispatch;
|
|
44
|
+
const channel_js_1 = require("./channel.js");
|
|
45
|
+
const audit_js_1 = require("./audit.js");
|
|
46
|
+
const capabilities_js_1 = require("./capabilities.js");
|
|
47
|
+
const context_js_1 = require("./context.js");
|
|
48
|
+
const consent_js_1 = require("./consent.js");
|
|
49
|
+
const idempotency_js_1 = require("./idempotency.js");
|
|
50
|
+
const identity_js_1 = require("./identity.js");
|
|
51
|
+
const policy_js_1 = require("./policy.js");
|
|
52
|
+
const template_js_1 = require("./template.js");
|
|
53
|
+
const phone_js_1 = require("../contacts/phone.js");
|
|
54
|
+
/** Pulo derivado de uma reserva negada. Cada um é um estado distinto do sistema. */
|
|
55
|
+
const SKIP_FOR_REFUSAL = {
|
|
56
|
+
already_sent: 'already_sent',
|
|
57
|
+
in_flight: 'claim_in_flight',
|
|
58
|
+
permanently_failed: 'permanently_failed',
|
|
59
|
+
unknown_outcome: 'unknown_outcome',
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Como um veredicto de fencing perdido aparece na trilha.
|
|
63
|
+
*
|
|
64
|
+
* O rótulo não é decoração: é o que a tela da régua mostra a quem investiga, e
|
|
65
|
+
* cada um pede uma ação diferente. `claim_lost` é concorrência sendo absorvida
|
|
66
|
+
* (outro worker está com o disparo agora — nada a fazer). `already_sent` é o
|
|
67
|
+
* sistema tendo funcionado. `permanently_failed` e `unknown_outcome` são as duas
|
|
68
|
+
* que pedem humano, e por motivos opostos.
|
|
69
|
+
*
|
|
70
|
+
* Colapsar tudo em `claim_lost` mandaria o escritório procurar um worker
|
|
71
|
+
* concorrente que não existe quando o caso é uma chave já assentada.
|
|
72
|
+
*/
|
|
73
|
+
function skipForLostAuthority(fence) {
|
|
74
|
+
if (fence.authority === 'lost')
|
|
75
|
+
return 'claim_lost';
|
|
76
|
+
if (fence.state === 'sent')
|
|
77
|
+
return 'already_sent';
|
|
78
|
+
if (fence.state === 'failed_permanent')
|
|
79
|
+
return 'permanently_failed';
|
|
80
|
+
if (fence.state === 'unknown_outcome')
|
|
81
|
+
return 'unknown_outcome';
|
|
82
|
+
// `none` / `failed_retryable` com a geração ainda casando não é estado
|
|
83
|
+
// alcançável pelo motor; se acontecer, é perda de autoridade e não um desfecho.
|
|
84
|
+
return 'claim_lost';
|
|
85
|
+
}
|
|
86
|
+
async function dispatch(intent, deps, options = {}) {
|
|
87
|
+
const attempts = [];
|
|
88
|
+
let providerSendCalls = 0;
|
|
89
|
+
const contextError = (0, context_js_1.validateContext)(intent.ctx);
|
|
90
|
+
if (contextError) {
|
|
91
|
+
// Nenhum envio sem contexto válido. Não há default, não há "assume o tenant
|
|
92
|
+
// da sessão": é a fronteira de isolamento, e ela falha fechada.
|
|
93
|
+
//
|
|
94
|
+
// A trilha também não é escrita: `appendAudit` deriva o tenant da sessão, e
|
|
95
|
+
// gravar um evento sob um contexto que o motor acabou de recusar seria
|
|
96
|
+
// registrar a linha no tenant errado.
|
|
97
|
+
return {
|
|
98
|
+
delivered: null,
|
|
99
|
+
attempts,
|
|
100
|
+
idempotencyKey: '',
|
|
101
|
+
invalidContext: contextError,
|
|
102
|
+
providerSendCalls,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
const policy = intent.policy ?? policy_js_1.DEFAULT_POLICY;
|
|
106
|
+
const locale = intent.locale ?? 'pt-BR';
|
|
107
|
+
let lastKey = '';
|
|
108
|
+
const record = (event) => deps.audit.record({
|
|
109
|
+
ctx: intent.ctx,
|
|
110
|
+
channel: null,
|
|
111
|
+
eventType: intent.eventType,
|
|
112
|
+
subjectRef: intent.subjectRef,
|
|
113
|
+
recipientRef: intent.recipientRef,
|
|
114
|
+
idempotencyKey: null,
|
|
115
|
+
...event,
|
|
116
|
+
});
|
|
117
|
+
await record({ kind: 'intent_created' });
|
|
118
|
+
for (const channel of policy.order) {
|
|
119
|
+
const skip = async (reason, detail, key) => {
|
|
120
|
+
attempts.push({ channel, skipped: reason, detail });
|
|
121
|
+
await record({
|
|
122
|
+
kind: (0, audit_js_1.eventKindForSkip)(reason),
|
|
123
|
+
channel,
|
|
124
|
+
skipReason: reason,
|
|
125
|
+
detail: detail ?? null,
|
|
126
|
+
idempotencyKey: key ?? null,
|
|
127
|
+
});
|
|
128
|
+
};
|
|
129
|
+
const adapter = (0, channel_js_1.resolveChannel)(deps.channels, channel);
|
|
130
|
+
if (!deps.channels[channel]) {
|
|
131
|
+
await skip('channel_not_registered', `canal ${channel} não registrado`);
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
const identity = await (0, identity_js_1.resolveIdentity)(deps.accounts, intent.ctx, channel);
|
|
135
|
+
if (!identity.ok) {
|
|
136
|
+
await skip('no_identity', identity.detail);
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
if (!(await adapter.isConfigured(intent.ctx))) {
|
|
140
|
+
await skip('no_identity', `adapter de ${channel} sem configuração utilizável`);
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
// Consentimento ANTES de resolver o destinatário. A ordem é deliberada: quem
|
|
144
|
+
// pediu para não receber não deve ter o telefone lido, e um opt-out não pode
|
|
145
|
+
// depender de o cadastro estar completo.
|
|
146
|
+
const consentRecord = await deps.consent.find(intent.recipientRef, channel);
|
|
147
|
+
const decision = (0, consent_js_1.evaluateConsent)(channel, consentRecord, deps.consentPolicy);
|
|
148
|
+
if (!decision.allowed) {
|
|
149
|
+
await skip(decision.reason, decision.detail);
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
const to = await deps.resolveRecipient(intent.recipientRef, channel);
|
|
153
|
+
if (!to) {
|
|
154
|
+
await skip('no_recipient', `sem contato de ${channel} cadastrado`);
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
// Validação de FORMA para canais de telefone, feita pelo motor.
|
|
158
|
+
//
|
|
159
|
+
// Fica aqui, e não em cada adapter, porque WhatsApp e SMS discordariam no
|
|
160
|
+
// primeiro caso de borda — e discordar significa uma mensagem chegar e a
|
|
161
|
+
// outra não, para o mesmo cliente, sem que nada explique por quê.
|
|
162
|
+
//
|
|
163
|
+
// "Sem telefone" e "telefone que não serve" são pulos DIFERENTES: o primeiro
|
|
164
|
+
// é campo em branco, o segundo é campo preenchido com um fixo (que o
|
|
165
|
+
// provider aceita, cobra e nunca entrega). Um só rótulo mandaria o
|
|
166
|
+
// escritório procurar o dado que já está lá.
|
|
167
|
+
if (channel === 'whatsapp' || channel === 'sms') {
|
|
168
|
+
const parsed = (0, phone_js_1.parseBrazilPhone)(to);
|
|
169
|
+
if (!(0, phone_js_1.isMessagingCapable)(parsed)) {
|
|
170
|
+
await skip('invalid_recipient', parsed.ok ? 'telefone não é celular' : `telefone inválido (${parsed.reason})`);
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
const tpl = await (0, template_js_1.resolveTemplate)(deps.templates, intent.ctx, channel, intent.eventType, locale);
|
|
175
|
+
if (!tpl.ok) {
|
|
176
|
+
await skip('no_template', tpl.detail);
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
const ordered = (0, template_js_1.orderVariables)(tpl.template, intent.variables);
|
|
180
|
+
if (!ordered.ok) {
|
|
181
|
+
await skip('no_template', `variáveis ausentes: ${ordered.missing.join(', ')}`);
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
const idempotencyKey = (0, idempotency_js_1.buildIdempotencyKey)({
|
|
185
|
+
ctx: intent.ctx,
|
|
186
|
+
channel,
|
|
187
|
+
eventType: intent.eventType,
|
|
188
|
+
subjectRef: intent.subjectRef,
|
|
189
|
+
templateVersion: tpl.template.version,
|
|
190
|
+
});
|
|
191
|
+
lastKey = idempotencyKey;
|
|
192
|
+
const content = deps.buildContent(channel, {
|
|
193
|
+
providerTemplateName: tpl.template.providerTemplateName,
|
|
194
|
+
body: tpl.template.body,
|
|
195
|
+
subject: tpl.template.subject,
|
|
196
|
+
locale,
|
|
197
|
+
}, ordered.ordered, intent.variables);
|
|
198
|
+
// Conteúdo montado ANTES da reserva, de propósito. Conteúdo que o canal não
|
|
199
|
+
// aceita é defeito de integração, e recusá-lo aqui evita reservar uma chave
|
|
200
|
+
// para um envio que nunca poderia acontecer — reserva tomada e devolvida é
|
|
201
|
+
// ruído na trilha de quem investiga.
|
|
202
|
+
if (!content || !(0, channel_js_1.channelAccepts)(channel, content)) {
|
|
203
|
+
await skip('no_template', `conteúdo incompatível com o canal ${channel}`, idempotencyKey);
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
if (options.dryRun) {
|
|
207
|
+
// Ensaio LÊ o estado da chave; nunca o toma. `peek` é a única consulta do
|
|
208
|
+
// motor que não reserva nada.
|
|
209
|
+
const state = await deps.claims.peek(idempotencyKey);
|
|
210
|
+
if (state === 'sent') {
|
|
211
|
+
await skip('already_sent', 'dry-run: já enviado', idempotencyKey);
|
|
212
|
+
return { delivered: null, attempts, idempotencyKey, providerSendCalls };
|
|
213
|
+
}
|
|
214
|
+
if (state === 'in_flight') {
|
|
215
|
+
await skip('claim_in_flight', 'dry-run: envio em andamento', idempotencyKey);
|
|
216
|
+
return { delivered: null, attempts, idempotencyKey, providerSendCalls };
|
|
217
|
+
}
|
|
218
|
+
if (state === 'unknown_outcome') {
|
|
219
|
+
// O ensaio relata o que a execução real faria, e a execução real recusa:
|
|
220
|
+
// ninguém sabe se a tentativa anterior saiu. Anunciar "enviaria" aqui
|
|
221
|
+
// faria o ensaio prometer o que a execução nega.
|
|
222
|
+
await skip('unknown_outcome', 'dry-run: desfecho anterior desconhecido', idempotencyKey);
|
|
223
|
+
return { delivered: null, attempts, idempotencyKey, providerSendCalls };
|
|
224
|
+
}
|
|
225
|
+
attempts.push({ channel, outcome: 'sent', detail: 'dry-run: não enviado' });
|
|
226
|
+
return { delivered: channel, attempts, idempotencyKey, providerSendCalls };
|
|
227
|
+
}
|
|
228
|
+
/* ── A porta que importa ──────────────────────────────────────────────
|
|
229
|
+
*
|
|
230
|
+
* Daqui até `settle` existe um e apenas um titular do direito de enviar.
|
|
231
|
+
* Nenhuma linha entre `claim` e `send` pode conter um `await` a algo que
|
|
232
|
+
* possa demorar indefinidamente — o prazo da reserva corre a partir daqui.
|
|
233
|
+
*/
|
|
234
|
+
const claimResult = await deps.claims.claim({
|
|
235
|
+
ctx: intent.ctx,
|
|
236
|
+
channel,
|
|
237
|
+
eventType: intent.eventType,
|
|
238
|
+
subjectRef: intent.subjectRef,
|
|
239
|
+
idempotencyKey,
|
|
240
|
+
recipientRef: intent.recipientRef,
|
|
241
|
+
});
|
|
242
|
+
if (!claimResult.granted) {
|
|
243
|
+
const reason = SKIP_FOR_REFUSAL[claimResult.reason];
|
|
244
|
+
await skip(reason, claimResult.detail, idempotencyKey);
|
|
245
|
+
// Reserva negada é DESFECHO, não canal indisponível: seguir para o
|
|
246
|
+
// próximo canal entregaria por outra via o que já saiu (ou o que outro
|
|
247
|
+
// worker está entregando agora).
|
|
248
|
+
return { delivered: null, attempts, idempotencyKey, providerSendCalls };
|
|
249
|
+
}
|
|
250
|
+
const claim = claimResult.claim;
|
|
251
|
+
// `dispatch_claimed` é gravado pelo STORE, na mesma fronteira transacional
|
|
252
|
+
// da reserva. Gravá-lo aqui, pelo `audit` do motor, era o que permitia a um
|
|
253
|
+
// rollback da transação de negócio apagar a narrativa de um disparo que
|
|
254
|
+
// aconteceu de verdade. Ver a nota de durabilidade em `claim.ts`.
|
|
255
|
+
/* ── Desfecho DESCONHECIDO ────────────────────────────────────────────
|
|
256
|
+
*
|
|
257
|
+
* A reserva foi retomada de um titular que já tinha falado com o provider e
|
|
258
|
+
* morreu antes de assentar. A mensagem pode ter saído. Reenviar sem mais
|
|
259
|
+
* nada é a duplicata que a certificação apontou; declarar "não enviado" é
|
|
260
|
+
* inventar um fato.
|
|
261
|
+
*
|
|
262
|
+
* A única coisa que torna o reenvio seguro é uma garantia EXTERNA: a mesma
|
|
263
|
+
* chave, dentro da janela em que o provider ainda a reconhece, produz uma
|
|
264
|
+
* chamada que ele deduplica. Quem tem essa garantia é o adapter, e ele a
|
|
265
|
+
* declara — o motor lê a declaração e nunca pergunta qual é o provider.
|
|
266
|
+
*/
|
|
267
|
+
if (claim.previousAttemptReachedProvider) {
|
|
268
|
+
const covered = (0, capabilities_js_1.providerIdempotencyCovers)(adapter.capabilities, claim.providerFirstAttemptAgeMs);
|
|
269
|
+
if (!covered) {
|
|
270
|
+
await deps.claims.settle(claim, {
|
|
271
|
+
kind: 'unknown',
|
|
272
|
+
code: 'unknown_outcome',
|
|
273
|
+
detail: 'tentativa anterior alcançou o provider e não assentou',
|
|
274
|
+
}, {
|
|
275
|
+
kind: 'dispatch_failed',
|
|
276
|
+
code: 'unknown_outcome',
|
|
277
|
+
detail: 'sem garantia de idempotência do provider para reenviar',
|
|
278
|
+
});
|
|
279
|
+
attempts.push({
|
|
280
|
+
channel,
|
|
281
|
+
skipped: 'unknown_outcome',
|
|
282
|
+
detail: 'desfecho anterior desconhecido e sem cobertura do provider',
|
|
283
|
+
});
|
|
284
|
+
// NÃO segue para o próximo canal. A mensagem pode ter saído por este; um
|
|
285
|
+
// fallback aqui entregaria duas vezes pelo caminho que o motor não
|
|
286
|
+
// consegue verificar.
|
|
287
|
+
return { delivered: null, attempts, idempotencyKey, providerSendCalls };
|
|
288
|
+
}
|
|
289
|
+
// Coberto: reenvia REUTILIZANDO a mesma `idempotencyKey`. A chave é
|
|
290
|
+
// derivada da intenção (`idempotency.ts`), não da tentativa — gerar uma
|
|
291
|
+
// nova aqui destruiria exatamente a proteção que se está invocando.
|
|
292
|
+
}
|
|
293
|
+
/* ── FENCING PRÉ-PROVIDER — a última fronteira antes do efeito externo ──
|
|
294
|
+
*
|
|
295
|
+
* Uma operação, duas responsabilidades inseparáveis:
|
|
296
|
+
*
|
|
297
|
+
* 1. marca DURAVELMENTE que a chamada externa vai acontecer agora — o que
|
|
298
|
+
* permite à próxima retomada saber que o desfecho é desconhecido em vez
|
|
299
|
+
* de assumir que nada saiu;
|
|
300
|
+
* 2. PROVA que quem está prestes a chamar o provider ainda é o titular da
|
|
301
|
+
* geração corrente da reserva.
|
|
302
|
+
*
|
|
303
|
+
* A segunda é o que a terceira certificação exigiu. Até aqui o motor gravava
|
|
304
|
+
* a marca e seguia para `adapter.send()` sem olhar o resultado. A trava por
|
|
305
|
+
* geração existia no `WHERE` do store e funcionava — nenhuma linha do zumbi
|
|
306
|
+
* era atualizada —, mas o motor não sabia disso, e um `UPDATE` cujo efeito o
|
|
307
|
+
* chamador ignora não protege nada:
|
|
308
|
+
*
|
|
309
|
+
* A perde a reserva por prazo → B a retoma e envia
|
|
310
|
+
* A acorda, "marca" (zero linhas) → A envia também
|
|
311
|
+
*
|
|
312
|
+
* Duas cobranças pela mesma intenção. **CLAIM_LOST ⇒ PROVIDER_CALL=false**,
|
|
313
|
+
* sem exceção — não há caso em que "tentar mesmo assim" seja preferível.
|
|
314
|
+
*
|
|
315
|
+
* Verificar aqui, e não com um `peek` antes, é o que fecha o TOCTOU: entre
|
|
316
|
+
* ler o estado e chamar o provider a reserva pode trocar de mãos. Marcar e
|
|
317
|
+
* verificar na MESMA instrução não deixa esse intervalo existir.
|
|
318
|
+
*
|
|
319
|
+
* FORA do `try` do adapter, de propósito. Se a GRAVAÇÃO falhar (banco fora,
|
|
320
|
+
* timeout), a exceção sobe: nada foi enviado, porque a marca vem antes da
|
|
321
|
+
* chamada. Cair no tratamento de exceção do adapter classificaria como "pode
|
|
322
|
+
* ter saído" um envio que nem começou, travando a chave por uma falha de
|
|
323
|
+
* banco. Deixando subir, a reserva expira e a retomada seguinte é segura —
|
|
324
|
+
* porque não há marca nenhuma.
|
|
325
|
+
*/
|
|
326
|
+
const fence = await deps.claims.markProviderAttempt(claim);
|
|
327
|
+
if (fence.authority !== 'held') {
|
|
328
|
+
/*
|
|
329
|
+
* Perdeu a autoridade. Sai SEM chamar o adapter e SEM assentar.
|
|
330
|
+
*
|
|
331
|
+
* Não assentar é deliberado: `settle` recusaria de qualquer forma (a trava
|
|
332
|
+
* por geração é a mesma), mas pedir o assentamento afirmaria um desfecho
|
|
333
|
+
* sobre um disparo que pertence a outra execução. Quem tem a reserva agora
|
|
334
|
+
* é quem a assenta. A trilha desta execução registra o pulo, e só.
|
|
335
|
+
*
|
|
336
|
+
* Também NÃO segue para o próximo canal: o titular atual pode estar
|
|
337
|
+
* entregando por este exato canal neste instante, e um fallback aqui
|
|
338
|
+
* mandaria a segunda mensagem pela via que o motor não consegue verificar.
|
|
339
|
+
*/
|
|
340
|
+
await skip(skipForLostAuthority(fence), fence.detail, idempotencyKey);
|
|
341
|
+
return { delivered: null, attempts, idempotencyKey, providerSendCalls };
|
|
342
|
+
}
|
|
343
|
+
let outcome;
|
|
344
|
+
try {
|
|
345
|
+
providerSendCalls += 1;
|
|
346
|
+
outcome = await adapter.send({
|
|
347
|
+
ctx: intent.ctx,
|
|
348
|
+
channel,
|
|
349
|
+
to,
|
|
350
|
+
content,
|
|
351
|
+
idempotencyKey,
|
|
352
|
+
eventType: intent.eventType,
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
catch (err) {
|
|
356
|
+
/*
|
|
357
|
+
* Adapter que LANÇA é o mesmo problema do titular que morre, sem precisar de
|
|
358
|
+
* crash nenhum: a chamada externa começou e o desfecho é DESCONHECIDO.
|
|
359
|
+
*
|
|
360
|
+
* O desenho anterior assentava falha retentável nos dois casos e explicava,
|
|
361
|
+
* num comentário, que "o motor escolhe não decidir sozinho". Mas devolver a
|
|
362
|
+
* chave É uma decisão — é decidir que nada saiu —, e num canal sem garantia
|
|
363
|
+
* externa a próxima rodada duplica.
|
|
364
|
+
*
|
|
365
|
+
* Agora a decisão é a mesma da retomada, e pelo mesmo critério: com
|
|
366
|
+
* cobertura de idempotência do provider, retentar é seguro (a chave é a
|
|
367
|
+
* mesma e ele deduplica); sem cobertura, a chave para em desconhecido.
|
|
368
|
+
*
|
|
369
|
+
* A marca já foi gravada antes da chamada, então `providerFirstAttemptAgeMs`
|
|
370
|
+
* responde pela tentativa ATUAL quando esta é a primeira — que é o que se
|
|
371
|
+
* quer: a janela do provider conta a partir do momento em que ele foi
|
|
372
|
+
* chamado.
|
|
373
|
+
*/
|
|
374
|
+
const coveredOnThrow = (0, capabilities_js_1.providerIdempotencyCovers)(adapter.capabilities, claim.providerFirstAttemptAgeMs ?? 0);
|
|
375
|
+
if (coveredOnThrow) {
|
|
376
|
+
await deps.claims.settle(claim, {
|
|
377
|
+
kind: 'failed',
|
|
378
|
+
permanent: false,
|
|
379
|
+
code: 'adapter_threw',
|
|
380
|
+
detail: 'adapter lançou exceção',
|
|
381
|
+
}, {
|
|
382
|
+
kind: 'dispatch_failed',
|
|
383
|
+
code: 'adapter_threw',
|
|
384
|
+
detail: err instanceof Error ? err.name : null,
|
|
385
|
+
});
|
|
386
|
+
attempts.push({ channel, outcome: 'temporary', detail: 'adapter lançou exceção' });
|
|
387
|
+
}
|
|
388
|
+
else {
|
|
389
|
+
await deps.claims.settle(claim, {
|
|
390
|
+
kind: 'unknown',
|
|
391
|
+
code: 'adapter_threw',
|
|
392
|
+
detail: 'adapter lançou exceção depois de iniciar a chamada externa',
|
|
393
|
+
}, {
|
|
394
|
+
kind: 'dispatch_failed',
|
|
395
|
+
code: 'unknown_outcome',
|
|
396
|
+
detail: err instanceof Error ? err.name : null,
|
|
397
|
+
});
|
|
398
|
+
attempts.push({
|
|
399
|
+
channel,
|
|
400
|
+
skipped: 'unknown_outcome',
|
|
401
|
+
detail: 'adapter lançou exceção e o canal não tem garantia de idempotência',
|
|
402
|
+
});
|
|
403
|
+
}
|
|
404
|
+
return { delivered: null, attempts, idempotencyKey, providerSendCalls };
|
|
405
|
+
}
|
|
406
|
+
attempts.push({
|
|
407
|
+
channel,
|
|
408
|
+
outcome: outcome.kind,
|
|
409
|
+
providerRef: outcome.providerRef,
|
|
410
|
+
detail: outcome.detail,
|
|
411
|
+
});
|
|
412
|
+
if (outcome.kind === 'sent') {
|
|
413
|
+
await deps.claims.settle(claim, { kind: 'sent', providerRef: outcome.providerRef }, {
|
|
414
|
+
kind: 'dispatch_sent',
|
|
415
|
+
providerRef: outcome.providerRef ?? null,
|
|
416
|
+
status: 'sent',
|
|
417
|
+
code: outcome.code ?? null,
|
|
418
|
+
});
|
|
419
|
+
return {
|
|
420
|
+
delivered: channel,
|
|
421
|
+
providerRef: outcome.providerRef,
|
|
422
|
+
attempts,
|
|
423
|
+
idempotencyKey,
|
|
424
|
+
providerSendCalls,
|
|
425
|
+
recoveredFromExpiredClaim: claim.recoveredFromExpiredClaim,
|
|
426
|
+
providerIdempotentReplay: claim.previousAttemptReachedProvider,
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
if (outcome.kind === 'opted_out') {
|
|
430
|
+
// Opt-out descoberto no provider é terminal para esta chave E encerra
|
|
431
|
+
// tudo. Tentar outro canal depois de o destinatário ter recusado é
|
|
432
|
+
// contornar a recusa por outra porta.
|
|
433
|
+
await deps.claims.settle(claim, {
|
|
434
|
+
kind: 'failed',
|
|
435
|
+
permanent: true,
|
|
436
|
+
code: outcome.code,
|
|
437
|
+
detail: outcome.detail,
|
|
438
|
+
}, {
|
|
439
|
+
kind: 'opt_out',
|
|
440
|
+
code: outcome.code ?? null,
|
|
441
|
+
detail: outcome.detail ?? null,
|
|
442
|
+
status: 'opted_out',
|
|
443
|
+
});
|
|
444
|
+
return { delivered: null, attempts, idempotencyKey, providerSendCalls };
|
|
445
|
+
}
|
|
446
|
+
if (outcome.kind === 'unavailable') {
|
|
447
|
+
// Canal indisponível não é tentativa: a chave é DEVOLVIDA, e o próximo
|
|
448
|
+
// ciclo pode usá-la. Assentar falha aqui gastaria uma tentativa por um
|
|
449
|
+
// problema de ambiente que nada tem a ver com o destinatário.
|
|
450
|
+
await deps.claims.settle(claim, {
|
|
451
|
+
kind: 'released',
|
|
452
|
+
reason: outcome.code ?? 'channel_unavailable',
|
|
453
|
+
}, {
|
|
454
|
+
kind: 'dispatch_skipped',
|
|
455
|
+
skipReason: 'no_identity',
|
|
456
|
+
code: outcome.code ?? null,
|
|
457
|
+
detail: outcome.detail ?? null,
|
|
458
|
+
});
|
|
459
|
+
continue;
|
|
460
|
+
}
|
|
461
|
+
const permanent = outcome.kind === 'permanent';
|
|
462
|
+
await deps.claims.settle(claim, {
|
|
463
|
+
kind: 'failed',
|
|
464
|
+
permanent,
|
|
465
|
+
code: outcome.code,
|
|
466
|
+
detail: outcome.detail,
|
|
467
|
+
}, {
|
|
468
|
+
kind: 'dispatch_failed',
|
|
469
|
+
code: outcome.code ?? null,
|
|
470
|
+
detail: outcome.detail ?? null,
|
|
471
|
+
status: permanent ? 'failed' : null,
|
|
472
|
+
});
|
|
473
|
+
if (outcome.kind === 'temporary' && !policy.fallbackOnTemporary) {
|
|
474
|
+
return { delivered: null, attempts, idempotencyKey, providerSendCalls };
|
|
475
|
+
}
|
|
476
|
+
// Falha PERMANENTE segue para o próximo canal, e isso é deliberado: "este
|
|
477
|
+
// número não tem WhatsApp" é definitivo para o WhatsApp e não diz nada sobre
|
|
478
|
+
// o e-mail. A chave de reserva inclui o canal, então a etapa não corre risco
|
|
479
|
+
// de sair duas vezes pela mesma via — só de sair pela via que funciona.
|
|
480
|
+
}
|
|
481
|
+
return { delivered: null, attempts, idempotencyKey: lastKey, providerSendCalls };
|
|
482
|
+
}
|
|
483
|
+
//# sourceMappingURL=engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/communication/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Versão da Graph API usada por todo o código que fala com a Meta.
|
|
4
|
+
*
|
|
5
|
+
* **Uma constante, um lugar.** Antes disto o adapter de envio carregava a sua
|
|
6
|
+
* (`v21.0`, escrita em 2026-08) e qualquer caminho novo escreveria a dele. Duas
|
|
7
|
+
* versões no mesmo runtime não falham no dia em que divergem — falham no dia em
|
|
8
|
+
* que a mais velha é desativada, e aí o sintoma é meio sistema parado enquanto
|
|
9
|
+
* a outra metade funciona, que é o pior formato possível para diagnosticar.
|
|
10
|
+
*
|
|
11
|
+
* ── Por que a versão importa mais aqui do que em outras integrações ─────────
|
|
12
|
+
*
|
|
13
|
+
* A Meta desativa versões da Graph API por calendário, não por uso: cada uma
|
|
14
|
+
* vive cerca de dois anos e depois passa a responder erro. `v21.0` é de
|
|
15
|
+
* 2024-10 e está no fim dessa janela — mantê-la seria agendar uma parada de
|
|
16
|
+
* canal para uma data que ninguém anotou.
|
|
17
|
+
*
|
|
18
|
+
* O valor abaixo foi verificado contra a Graph API em 2026-08-30: `v26.0`
|
|
19
|
+
* responde, `v27.0` ainda não existe.
|
|
20
|
+
*
|
|
21
|
+
* ── Override por ambiente ───────────────────────────────────────────────────
|
|
22
|
+
*
|
|
23
|
+
* Existe para rollback sem release: se uma versão nova mudar um contrato que
|
|
24
|
+
* este código lê, voltar uma casa é uma variável de ambiente e um deploy, não
|
|
25
|
+
* uma correção de emergência no código.
|
|
26
|
+
*
|
|
27
|
+
* O formato é validado. Um valor livre entraria direto na URL — e uma env var
|
|
28
|
+
* mal digitada viraria um caminho arbitrário no host da Meta.
|
|
29
|
+
*/
|
|
30
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
+
exports.DEFAULT_GRAPH_API_VERSION = void 0;
|
|
32
|
+
exports.graphApiVersion = graphApiVersion;
|
|
33
|
+
exports.graphUrl = graphUrl;
|
|
34
|
+
exports.DEFAULT_GRAPH_API_VERSION = 'v26.0';
|
|
35
|
+
const VERSION_PATTERN = /^v\d{1,3}\.\d{1,2}$/;
|
|
36
|
+
/**
|
|
37
|
+
* Versão efetiva. Um valor inválido cai no default em vez de derrubar o
|
|
38
|
+
* processo: a alternativa é um erro de digitação numa env var parar o boot da
|
|
39
|
+
* API inteira, e a degradação correta aqui é ignorar a configuração ruim.
|
|
40
|
+
*/
|
|
41
|
+
function graphApiVersion(env = process.env) {
|
|
42
|
+
const raw = env.WHATSAPP_GRAPH_API_VERSION?.trim();
|
|
43
|
+
return raw && VERSION_PATTERN.test(raw) ? raw : exports.DEFAULT_GRAPH_API_VERSION;
|
|
44
|
+
}
|
|
45
|
+
/** Base de URL da Graph API. Isolada para que nenhum chamador a monte na mão. */
|
|
46
|
+
function graphUrl(path, env) {
|
|
47
|
+
const clean = path.startsWith('/') ? path.slice(1) : path;
|
|
48
|
+
return `https://graph.facebook.com/${graphApiVersion(env)}/${clean}`;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../src/communication/graph.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;AAWH,0CAGC;AAGD,4BAGC;AAlBY,QAAA,yBAAyB,GAAG,OAAO,CAAC;AAEjD,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAE9C;;;;GAIG;AACH,SAAgB,eAAe,CAAC,MAAyB,OAAO,CAAC,GAAG;IAClE,MAAM,GAAG,GAAG,GAAG,CAAC,0BAA0B,EAAE,IAAI,EAAE,CAAC;IACnD,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,iCAAyB,CAAC;AAC5E,CAAC;AAED,iFAAiF;AACjF,SAAgB,QAAQ,CAAC,IAAY,EAAE,GAAuB;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1D,OAAO,8BAA8B,eAAe,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildIdempotencyKey = buildIdempotencyKey;
|
|
4
|
+
const node_crypto_1 = require("node:crypto");
|
|
5
|
+
/**
|
|
6
|
+
* Separador de campos: `US` (unit separator, `0x1F`).
|
|
7
|
+
*
|
|
8
|
+
* Escolhido por não ser digitável — com `:` ou `|`, um `subjectRef` que contenha
|
|
9
|
+
* o separador consegue forjar a chave de outro evento, e isso é colisão por
|
|
10
|
+
* construção, não por azar. Um id vindo de outro sistema pode conter qualquer
|
|
11
|
+
* pontuação; nenhum contém um caractere de controle.
|
|
12
|
+
*/
|
|
13
|
+
const SEP = '\u001f';
|
|
14
|
+
function buildIdempotencyKey(input) {
|
|
15
|
+
const parts = [
|
|
16
|
+
input.ctx.tenantId,
|
|
17
|
+
input.ctx.product,
|
|
18
|
+
input.ctx.brand,
|
|
19
|
+
input.channel,
|
|
20
|
+
input.eventType,
|
|
21
|
+
input.subjectRef,
|
|
22
|
+
input.templateVersion ?? 'v0',
|
|
23
|
+
];
|
|
24
|
+
return (0, node_crypto_1.createHash)('sha256').update(parts.join(SEP)).digest('hex');
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=idempotency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idempotency.js","sourceRoot":"","sources":["../../../src/communication/idempotency.ts"],"names":[],"mappings":";;AA4CA,kDAWC;AAvDD,6CAAyC;AAkCzC;;;;;;;GAOG;AACH,MAAM,GAAG,GAAG,QAAQ,CAAC;AAErB,SAAgB,mBAAmB,CAAC,KAAuB;IACzD,MAAM,KAAK,GAAG;QACZ,KAAK,CAAC,GAAG,CAAC,QAAQ;QAClB,KAAK,CAAC,GAAG,CAAC,OAAO;QACjB,KAAK,CAAC,GAAG,CAAC,KAAK;QACf,KAAK,CAAC,OAAO;QACb,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,UAAU;QAChB,KAAK,CAAC,eAAe,IAAI,IAAI;KAC9B,CAAC;IACF,OAAO,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpE,CAAC"}
|