@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,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Identidade de envio — de quem é o número, a conta e o remetente.
|
|
4
|
+
*
|
|
5
|
+
* **O motor é compartilhado. A identidade de envio não é.**
|
|
6
|
+
*
|
|
7
|
+
* Este é o módulo que carrega a regra mais dura do adendo, e ele existe separado
|
|
8
|
+
* do adapter de propósito: se cada adapter resolvesse a própria credencial,
|
|
9
|
+
* "usar a chave central quando o tenant não tem a dele" seria uma linha
|
|
10
|
+
* conveniente dentro de um `??`, escrita por alguém com pressa, num arquivo que
|
|
11
|
+
* ninguém revisa duas vezes. Foi exatamente assim que aconteceu no Manga Verde
|
|
12
|
+
* (`email-channel.provider.ts`, "SaaS hotfix"): o tenant sem chave própria envia
|
|
13
|
+
* com a chave da plataforma.
|
|
14
|
+
*
|
|
15
|
+
* Em e-mail o custo disso é reputação de domínio compartilhada. Em WhatsApp o
|
|
16
|
+
* custo é a WABA de uma marca respondendo pelo comportamento de outra — com
|
|
17
|
+
* bloqueio que se propaga para todos os tenants do número.
|
|
18
|
+
*
|
|
19
|
+
* Aqui não há fallback. Conta ausente resolve para ausente.
|
|
20
|
+
*/
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.routeAccountsByChannel = routeAccountsByChannel;
|
|
23
|
+
exports.assertOwnership = assertOwnership;
|
|
24
|
+
exports.resolveIdentity = resolveIdentity;
|
|
25
|
+
/**
|
|
26
|
+
* Roteia a busca de conta por CANAL, entre stores distintos.
|
|
27
|
+
*
|
|
28
|
+
* ## Por que isto existe
|
|
29
|
+
*
|
|
30
|
+
* Os canais não guardam a conta no mesmo lugar, e não é acidente: o telefone
|
|
31
|
+
* tem registro canônico próprio (`channel_binding`, migração 0041), criado pelo
|
|
32
|
+
* onboarding e com chave global de roteamento; o e-mail vive na configuração do
|
|
33
|
+
* tenant e admite remetente de plataforma.
|
|
34
|
+
*
|
|
35
|
+
* Antes disto, o consumidor passava UM store para todos os canais — e o canal
|
|
36
|
+
* criado pelo onboarding ficava invisível para quem despacha: a tela dizia
|
|
37
|
+
* "ativo" e o motor teria respondido `no_account`. Um `??` entre os dois stores
|
|
38
|
+
* resolveria o sintoma e esconderia a política; a precedência por canal é
|
|
39
|
+
* decisão de arquitetura e precisa ficar legível em quem compõe.
|
|
40
|
+
*
|
|
41
|
+
* ## Mecanismo, não política
|
|
42
|
+
*
|
|
43
|
+
* Este módulo não sabe QUAL store serve QUAL canal — quem sabe é o produto, e a
|
|
44
|
+
* decisão aparece no mapa que ele monta.
|
|
45
|
+
*
|
|
46
|
+
* **Canal sem rota resolve para ausente, e nunca cai em outro store.** Herdar a
|
|
47
|
+
* rota de um canal vizinho faria um canal novo nascer usando a conta de e-mail
|
|
48
|
+
* do escritório — configurado por acidente, com a identidade errada. Um canal
|
|
49
|
+
* que ninguém roteou entra fechado.
|
|
50
|
+
*/
|
|
51
|
+
function routeAccountsByChannel(routes) {
|
|
52
|
+
return {
|
|
53
|
+
async find(ctx, channel) {
|
|
54
|
+
const store = routes[channel];
|
|
55
|
+
if (!store)
|
|
56
|
+
return null;
|
|
57
|
+
return store.find(ctx, channel);
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* A conta pertence mesmo a este contexto?
|
|
63
|
+
*
|
|
64
|
+
* Checagem redundante por desenho. O `store` do produto já deveria filtrar por
|
|
65
|
+
* tenant — mas "deveria" é a palavra que precede todo vazamento cross-tenant, e
|
|
66
|
+
* um store com um `WHERE` esquecido devolveria a conta do vizinho sem que nada
|
|
67
|
+
* reclamasse. Esta função é a segunda tranca, e é a que os testes de isolamento
|
|
68
|
+
* exercitam diretamente.
|
|
69
|
+
*/
|
|
70
|
+
function assertOwnership(ctx, account) {
|
|
71
|
+
return (account.tenantId === ctx.tenantId &&
|
|
72
|
+
account.product === ctx.product &&
|
|
73
|
+
account.brand === ctx.brand);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Resolve a identidade de envio para um contexto e canal.
|
|
77
|
+
*
|
|
78
|
+
* Não há caminho neste código que devolva uma conta de outro contexto, nem uma
|
|
79
|
+
* conta "da plataforma". Ausência resolve para ausência, e quem chama trata
|
|
80
|
+
* ausência como canal indisponível — nunca como permissão para improvisar.
|
|
81
|
+
*/
|
|
82
|
+
async function resolveIdentity(store, ctx, channel) {
|
|
83
|
+
const account = await store.find(ctx, channel);
|
|
84
|
+
if (!account) {
|
|
85
|
+
return {
|
|
86
|
+
ok: false,
|
|
87
|
+
reason: 'no_account',
|
|
88
|
+
detail: `sem conta de ${channel} para este tenant/produto`,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
if (!assertOwnership(ctx, account)) {
|
|
92
|
+
// Não é só recusar: é recusar ALTO. Um store devolvendo conta alheia é
|
|
93
|
+
// defeito de isolamento, não configuração faltando, e os dois não podem
|
|
94
|
+
// aparecer com o mesmo rótulo na trilha.
|
|
95
|
+
return {
|
|
96
|
+
ok: false,
|
|
97
|
+
reason: 'foreign_account',
|
|
98
|
+
detail: `conta de ${channel} não pertence a este contexto`,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
if (account.status !== 'active') {
|
|
102
|
+
return {
|
|
103
|
+
ok: false,
|
|
104
|
+
reason: 'not_active',
|
|
105
|
+
detail: `conta de ${channel} em estado ${account.status}`,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
return { ok: true, account };
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../src/communication/identity.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;AAyFH,wDAUC;AAWD,0CAMC;AASD,0CAmCC;AAjGD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAgB,sBAAsB,CACpC,MAAwD;IAExD,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,GAAyB,EAAE,OAAmB;YACvD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAC;YACxB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,eAAe,CAAC,GAAyB,EAAE,OAAuB;IAChF,OAAO,CACL,OAAO,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ;QACjC,OAAO,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO;QAC/B,OAAO,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,CAC5B,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,eAAe,CACnC,KAA0B,EAC1B,GAAyB,EACzB,OAAmB;IAEnB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAE/C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE,gBAAgB,OAAO,2BAA2B;SAC3D,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;QACnC,uEAAuE;QACvE,wEAAwE;QACxE,yCAAyC;QACzC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,iBAAiB;YACzB,MAAM,EAAE,YAAY,OAAO,+BAA+B;SAC3D,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE,YAAY,OAAO,cAAc,OAAO,CAAC,MAAM,EAAE;SAC1D,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Motor de comunicação compartilhado do ecossistema.
|
|
4
|
+
*
|
|
5
|
+
* Consumidores: SC Organização Contábil (primeiro, piloto), e por desenho
|
|
6
|
+
* Dental Plataforma, Manga Verde, Baruk Connect e o que vier. O motor é um; a
|
|
7
|
+
* identidade de envio de cada um nunca é compartilhada — ver `identity.ts`.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.createSmsChannel = exports.createRecordingSmsTransport = exports.countSegments = exports.createWhatsAppChannel = exports.createEmailChannel = exports.verifyMetaSignature = exports.verifyMetaChallenge = exports.parseMetaWebhookOrigins = exports.parseMetaInboundOptOut = exports.parseMetaDeliveryWebhook = exports.deliveryEventId = exports.applyDeliveryEvent = exports.summarizeDryRun = exports.formatDryRunReport = exports.emptyDryRunReport = exports.dispatch = exports.statusForOutcome = exports.isRetryable = exports.channelReports = exports.advanceStatus = exports.CHANNEL_REPORTS = exports.DEFAULT_CHANNEL_POLICY = exports.resolveTemplate = exports.orderVariables = exports.evaluateConsent = exports.withSenderFallback = exports.resolveSenderProfile = exports.credentialResolverFor = exports.routeAccountsByChannel = exports.resolveIdentity = exports.assertOwnership = exports.eventKindForSkip = exports.createRecordingAuditSink = exports.createNullAuditSink = exports.listCommunicationTrail = exports.createPostgresDispatchClaimStore = exports.createPostgresAuditSink = exports.DEFAULT_CLAIM_TTL_MS = exports.createInMemoryDispatchClaimStore = exports.buildIdempotencyKey = exports.RESEND_IDEMPOTENCY_WINDOW_MS = exports.providerIdempotencyCovers = exports.NO_PROVIDER_GUARANTEES = exports.validateContext = exports.contextRef = exports.unavailableChannel = exports.resolveChannel = exports.channelAccepts = exports.CHANNEL_KEYS = exports.CHANNEL_ACCEPTS = void 0;
|
|
11
|
+
exports.claimChannelAccount = exports.recordOnboardingAssets = exports.openOnboardingSession = exports.ONBOARDING_SESSION_TTL_MS = exports.latestOnboardingSession = exports.failOnboardingSession = exports.consumeOnboardingSession = exports.subscribeAppToWaba = exports.sameStateHash = exports.registerPhoneNumber = exports.readPhoneNumber = exports.listWabaTemplates = exports.hashSignupState = exports.exchangeSignupCode = exports.createSignupState = exports.graphUrl = exports.graphApiVersion = exports.DEFAULT_GRAPH_API_VERSION = exports.sendWebhookTestEvent = exports.readWabaSubscribedApps = exports.readAppSubscriptions = exports.readAppSettings = exports.metaLanguageCode = exports.createWhatsAppTemplateProvider = exports.registerChannelBinding = exports.createPostgresChannelRouteStore = exports.createPostgresChannelBindingStore = exports.completeRoute = exports.CredentialRefNotAcceptableError = exports.ChannelRouteConflictError = exports.VAULT_DECRYPT_PERMISSION = exports.createPostgresTenantSecretStore = exports.noCredentialResolver = exports.isVaultRef = exports.isAcceptableForNewBinding = exports.createChannelCredentialResolver = exports.sameOrigin = exports.resolveRoute = exports.isGsm7 = void 0;
|
|
12
|
+
var channel_js_1 = require("./channel.js");
|
|
13
|
+
Object.defineProperty(exports, "CHANNEL_ACCEPTS", { enumerable: true, get: function () { return channel_js_1.CHANNEL_ACCEPTS; } });
|
|
14
|
+
Object.defineProperty(exports, "CHANNEL_KEYS", { enumerable: true, get: function () { return channel_js_1.CHANNEL_KEYS; } });
|
|
15
|
+
Object.defineProperty(exports, "channelAccepts", { enumerable: true, get: function () { return channel_js_1.channelAccepts; } });
|
|
16
|
+
Object.defineProperty(exports, "resolveChannel", { enumerable: true, get: function () { return channel_js_1.resolveChannel; } });
|
|
17
|
+
Object.defineProperty(exports, "unavailableChannel", { enumerable: true, get: function () { return channel_js_1.unavailableChannel; } });
|
|
18
|
+
var context_js_1 = require("./context.js");
|
|
19
|
+
Object.defineProperty(exports, "contextRef", { enumerable: true, get: function () { return context_js_1.contextRef; } });
|
|
20
|
+
Object.defineProperty(exports, "validateContext", { enumerable: true, get: function () { return context_js_1.validateContext; } });
|
|
21
|
+
var capabilities_js_1 = require("./capabilities.js");
|
|
22
|
+
Object.defineProperty(exports, "NO_PROVIDER_GUARANTEES", { enumerable: true, get: function () { return capabilities_js_1.NO_PROVIDER_GUARANTEES; } });
|
|
23
|
+
Object.defineProperty(exports, "providerIdempotencyCovers", { enumerable: true, get: function () { return capabilities_js_1.providerIdempotencyCovers; } });
|
|
24
|
+
Object.defineProperty(exports, "RESEND_IDEMPOTENCY_WINDOW_MS", { enumerable: true, get: function () { return capabilities_js_1.RESEND_IDEMPOTENCY_WINDOW_MS; } });
|
|
25
|
+
var idempotency_js_1 = require("./idempotency.js");
|
|
26
|
+
Object.defineProperty(exports, "buildIdempotencyKey", { enumerable: true, get: function () { return idempotency_js_1.buildIdempotencyKey; } });
|
|
27
|
+
var claim_js_1 = require("./claim.js");
|
|
28
|
+
Object.defineProperty(exports, "createInMemoryDispatchClaimStore", { enumerable: true, get: function () { return claim_js_1.createInMemoryDispatchClaimStore; } });
|
|
29
|
+
Object.defineProperty(exports, "DEFAULT_CLAIM_TTL_MS", { enumerable: true, get: function () { return claim_js_1.DEFAULT_CLAIM_TTL_MS; } });
|
|
30
|
+
var postgres_js_1 = require("./stores/postgres.js");
|
|
31
|
+
Object.defineProperty(exports, "createPostgresAuditSink", { enumerable: true, get: function () { return postgres_js_1.createPostgresAuditSink; } });
|
|
32
|
+
Object.defineProperty(exports, "createPostgresDispatchClaimStore", { enumerable: true, get: function () { return postgres_js_1.createPostgresDispatchClaimStore; } });
|
|
33
|
+
Object.defineProperty(exports, "listCommunicationTrail", { enumerable: true, get: function () { return postgres_js_1.listCommunicationTrail; } });
|
|
34
|
+
var audit_js_1 = require("./audit.js");
|
|
35
|
+
Object.defineProperty(exports, "createNullAuditSink", { enumerable: true, get: function () { return audit_js_1.createNullAuditSink; } });
|
|
36
|
+
Object.defineProperty(exports, "createRecordingAuditSink", { enumerable: true, get: function () { return audit_js_1.createRecordingAuditSink; } });
|
|
37
|
+
Object.defineProperty(exports, "eventKindForSkip", { enumerable: true, get: function () { return audit_js_1.eventKindForSkip; } });
|
|
38
|
+
var identity_js_1 = require("./identity.js");
|
|
39
|
+
Object.defineProperty(exports, "assertOwnership", { enumerable: true, get: function () { return identity_js_1.assertOwnership; } });
|
|
40
|
+
Object.defineProperty(exports, "resolveIdentity", { enumerable: true, get: function () { return identity_js_1.resolveIdentity; } });
|
|
41
|
+
Object.defineProperty(exports, "routeAccountsByChannel", { enumerable: true, get: function () { return identity_js_1.routeAccountsByChannel; } });
|
|
42
|
+
var sender_profile_js_1 = require("./sender-profile.js");
|
|
43
|
+
Object.defineProperty(exports, "credentialResolverFor", { enumerable: true, get: function () { return sender_profile_js_1.credentialResolverFor; } });
|
|
44
|
+
Object.defineProperty(exports, "resolveSenderProfile", { enumerable: true, get: function () { return sender_profile_js_1.resolveSenderProfile; } });
|
|
45
|
+
Object.defineProperty(exports, "withSenderFallback", { enumerable: true, get: function () { return sender_profile_js_1.withSenderFallback; } });
|
|
46
|
+
var consent_js_1 = require("./consent.js");
|
|
47
|
+
Object.defineProperty(exports, "evaluateConsent", { enumerable: true, get: function () { return consent_js_1.evaluateConsent; } });
|
|
48
|
+
var template_js_1 = require("./template.js");
|
|
49
|
+
Object.defineProperty(exports, "orderVariables", { enumerable: true, get: function () { return template_js_1.orderVariables; } });
|
|
50
|
+
Object.defineProperty(exports, "resolveTemplate", { enumerable: true, get: function () { return template_js_1.resolveTemplate; } });
|
|
51
|
+
var policy_js_1 = require("./policy.js");
|
|
52
|
+
Object.defineProperty(exports, "DEFAULT_CHANNEL_POLICY", { enumerable: true, get: function () { return policy_js_1.DEFAULT_POLICY; } });
|
|
53
|
+
var status_js_1 = require("./status.js");
|
|
54
|
+
Object.defineProperty(exports, "CHANNEL_REPORTS", { enumerable: true, get: function () { return status_js_1.CHANNEL_REPORTS; } });
|
|
55
|
+
Object.defineProperty(exports, "advanceStatus", { enumerable: true, get: function () { return status_js_1.advanceStatus; } });
|
|
56
|
+
Object.defineProperty(exports, "channelReports", { enumerable: true, get: function () { return status_js_1.channelReports; } });
|
|
57
|
+
Object.defineProperty(exports, "isRetryable", { enumerable: true, get: function () { return status_js_1.isRetryable; } });
|
|
58
|
+
Object.defineProperty(exports, "statusForOutcome", { enumerable: true, get: function () { return status_js_1.statusForOutcome; } });
|
|
59
|
+
var engine_js_1 = require("./engine.js");
|
|
60
|
+
Object.defineProperty(exports, "dispatch", { enumerable: true, get: function () { return engine_js_1.dispatch; } });
|
|
61
|
+
var dry_run_js_1 = require("./dry-run.js");
|
|
62
|
+
Object.defineProperty(exports, "emptyDryRunReport", { enumerable: true, get: function () { return dry_run_js_1.emptyDryRunReport; } });
|
|
63
|
+
Object.defineProperty(exports, "formatDryRunReport", { enumerable: true, get: function () { return dry_run_js_1.formatDryRunReport; } });
|
|
64
|
+
Object.defineProperty(exports, "summarizeDryRun", { enumerable: true, get: function () { return dry_run_js_1.summarizeDryRun; } });
|
|
65
|
+
var webhook_js_1 = require("./webhook.js");
|
|
66
|
+
Object.defineProperty(exports, "applyDeliveryEvent", { enumerable: true, get: function () { return webhook_js_1.applyDeliveryEvent; } });
|
|
67
|
+
Object.defineProperty(exports, "deliveryEventId", { enumerable: true, get: function () { return webhook_js_1.deliveryEventId; } });
|
|
68
|
+
Object.defineProperty(exports, "parseMetaDeliveryWebhook", { enumerable: true, get: function () { return webhook_js_1.parseMetaDeliveryWebhook; } });
|
|
69
|
+
Object.defineProperty(exports, "parseMetaInboundOptOut", { enumerable: true, get: function () { return webhook_js_1.parseMetaInboundOptOut; } });
|
|
70
|
+
Object.defineProperty(exports, "parseMetaWebhookOrigins", { enumerable: true, get: function () { return webhook_js_1.parseMetaWebhookOrigins; } });
|
|
71
|
+
Object.defineProperty(exports, "verifyMetaChallenge", { enumerable: true, get: function () { return webhook_js_1.verifyMetaChallenge; } });
|
|
72
|
+
Object.defineProperty(exports, "verifyMetaSignature", { enumerable: true, get: function () { return webhook_js_1.verifyMetaSignature; } });
|
|
73
|
+
var email_js_1 = require("./adapters/email.js");
|
|
74
|
+
Object.defineProperty(exports, "createEmailChannel", { enumerable: true, get: function () { return email_js_1.createEmailChannel; } });
|
|
75
|
+
var whatsapp_js_1 = require("./adapters/whatsapp.js");
|
|
76
|
+
Object.defineProperty(exports, "createWhatsAppChannel", { enumerable: true, get: function () { return whatsapp_js_1.createWhatsAppChannel; } });
|
|
77
|
+
var sms_js_1 = require("./adapters/sms.js");
|
|
78
|
+
Object.defineProperty(exports, "countSegments", { enumerable: true, get: function () { return sms_js_1.countSegments; } });
|
|
79
|
+
Object.defineProperty(exports, "createRecordingSmsTransport", { enumerable: true, get: function () { return sms_js_1.createRecordingSmsTransport; } });
|
|
80
|
+
Object.defineProperty(exports, "createSmsChannel", { enumerable: true, get: function () { return sms_js_1.createSmsChannel; } });
|
|
81
|
+
Object.defineProperty(exports, "isGsm7", { enumerable: true, get: function () { return sms_js_1.isGsm7; } });
|
|
82
|
+
var routing_js_1 = require("./routing.js");
|
|
83
|
+
Object.defineProperty(exports, "resolveRoute", { enumerable: true, get: function () { return routing_js_1.resolveRoute; } });
|
|
84
|
+
Object.defineProperty(exports, "sameOrigin", { enumerable: true, get: function () { return routing_js_1.sameOrigin; } });
|
|
85
|
+
var credentials_js_1 = require("./credentials.js");
|
|
86
|
+
Object.defineProperty(exports, "createChannelCredentialResolver", { enumerable: true, get: function () { return credentials_js_1.createChannelCredentialResolver; } });
|
|
87
|
+
Object.defineProperty(exports, "isAcceptableForNewBinding", { enumerable: true, get: function () { return credentials_js_1.isAcceptableForNewBinding; } });
|
|
88
|
+
Object.defineProperty(exports, "isVaultRef", { enumerable: true, get: function () { return credentials_js_1.isVaultRef; } });
|
|
89
|
+
Object.defineProperty(exports, "noCredentialResolver", { enumerable: true, get: function () { return credentials_js_1.noCredentialResolver; } });
|
|
90
|
+
var secrets_js_1 = require("./stores/secrets.js");
|
|
91
|
+
Object.defineProperty(exports, "createPostgresTenantSecretStore", { enumerable: true, get: function () { return secrets_js_1.createPostgresTenantSecretStore; } });
|
|
92
|
+
Object.defineProperty(exports, "VAULT_DECRYPT_PERMISSION", { enumerable: true, get: function () { return secrets_js_1.VAULT_DECRYPT_PERMISSION; } });
|
|
93
|
+
var routing_js_2 = require("./stores/routing.js");
|
|
94
|
+
Object.defineProperty(exports, "ChannelRouteConflictError", { enumerable: true, get: function () { return routing_js_2.ChannelRouteConflictError; } });
|
|
95
|
+
Object.defineProperty(exports, "CredentialRefNotAcceptableError", { enumerable: true, get: function () { return routing_js_2.CredentialRefNotAcceptableError; } });
|
|
96
|
+
Object.defineProperty(exports, "completeRoute", { enumerable: true, get: function () { return routing_js_2.completeRoute; } });
|
|
97
|
+
Object.defineProperty(exports, "createPostgresChannelBindingStore", { enumerable: true, get: function () { return routing_js_2.createPostgresChannelBindingStore; } });
|
|
98
|
+
Object.defineProperty(exports, "createPostgresChannelRouteStore", { enumerable: true, get: function () { return routing_js_2.createPostgresChannelRouteStore; } });
|
|
99
|
+
Object.defineProperty(exports, "registerChannelBinding", { enumerable: true, get: function () { return routing_js_2.registerChannelBinding; } });
|
|
100
|
+
var whatsapp_templates_js_1 = require("./adapters/whatsapp-templates.js");
|
|
101
|
+
Object.defineProperty(exports, "createWhatsAppTemplateProvider", { enumerable: true, get: function () { return whatsapp_templates_js_1.createWhatsAppTemplateProvider; } });
|
|
102
|
+
// Tradução do código de idioma para a grafia da Meta. Ponto ÚNICO: submissão e
|
|
103
|
+
// despacho divergiram uma vez, e o primeiro envio real morreu nisso.
|
|
104
|
+
var whatsapp_language_js_1 = require("./adapters/whatsapp-language.js");
|
|
105
|
+
Object.defineProperty(exports, "metaLanguageCode", { enumerable: true, get: function () { return whatsapp_language_js_1.metaLanguageCode; } });
|
|
106
|
+
// Diagnóstico da assinatura de webhooks. LEITURA PURA — a correção da
|
|
107
|
+
// assinatura do app é mutação externa e não mora numa rota de diagnóstico.
|
|
108
|
+
var webhook_subscription_js_1 = require("./webhook-subscription.js");
|
|
109
|
+
Object.defineProperty(exports, "readAppSettings", { enumerable: true, get: function () { return webhook_subscription_js_1.readAppSettings; } });
|
|
110
|
+
Object.defineProperty(exports, "readAppSubscriptions", { enumerable: true, get: function () { return webhook_subscription_js_1.readAppSubscriptions; } });
|
|
111
|
+
Object.defineProperty(exports, "readWabaSubscribedApps", { enumerable: true, get: function () { return webhook_subscription_js_1.readWabaSubscribedApps; } });
|
|
112
|
+
Object.defineProperty(exports, "sendWebhookTestEvent", { enumerable: true, get: function () { return webhook_subscription_js_1.sendWebhookTestEvent; } });
|
|
113
|
+
var graph_js_1 = require("./graph.js");
|
|
114
|
+
Object.defineProperty(exports, "DEFAULT_GRAPH_API_VERSION", { enumerable: true, get: function () { return graph_js_1.DEFAULT_GRAPH_API_VERSION; } });
|
|
115
|
+
Object.defineProperty(exports, "graphApiVersion", { enumerable: true, get: function () { return graph_js_1.graphApiVersion; } });
|
|
116
|
+
Object.defineProperty(exports, "graphUrl", { enumerable: true, get: function () { return graph_js_1.graphUrl; } });
|
|
117
|
+
var onboarding_js_1 = require("./onboarding.js");
|
|
118
|
+
Object.defineProperty(exports, "createSignupState", { enumerable: true, get: function () { return onboarding_js_1.createSignupState; } });
|
|
119
|
+
Object.defineProperty(exports, "exchangeSignupCode", { enumerable: true, get: function () { return onboarding_js_1.exchangeSignupCode; } });
|
|
120
|
+
Object.defineProperty(exports, "hashSignupState", { enumerable: true, get: function () { return onboarding_js_1.hashSignupState; } });
|
|
121
|
+
Object.defineProperty(exports, "listWabaTemplates", { enumerable: true, get: function () { return onboarding_js_1.listWabaTemplates; } });
|
|
122
|
+
Object.defineProperty(exports, "readPhoneNumber", { enumerable: true, get: function () { return onboarding_js_1.readPhoneNumber; } });
|
|
123
|
+
Object.defineProperty(exports, "registerPhoneNumber", { enumerable: true, get: function () { return onboarding_js_1.registerPhoneNumber; } });
|
|
124
|
+
Object.defineProperty(exports, "sameStateHash", { enumerable: true, get: function () { return onboarding_js_1.sameStateHash; } });
|
|
125
|
+
Object.defineProperty(exports, "subscribeAppToWaba", { enumerable: true, get: function () { return onboarding_js_1.subscribeAppToWaba; } });
|
|
126
|
+
var onboarding_js_2 = require("./stores/onboarding.js");
|
|
127
|
+
Object.defineProperty(exports, "consumeOnboardingSession", { enumerable: true, get: function () { return onboarding_js_2.consumeOnboardingSession; } });
|
|
128
|
+
Object.defineProperty(exports, "failOnboardingSession", { enumerable: true, get: function () { return onboarding_js_2.failOnboardingSession; } });
|
|
129
|
+
Object.defineProperty(exports, "latestOnboardingSession", { enumerable: true, get: function () { return onboarding_js_2.latestOnboardingSession; } });
|
|
130
|
+
Object.defineProperty(exports, "ONBOARDING_SESSION_TTL_MS", { enumerable: true, get: function () { return onboarding_js_2.ONBOARDING_SESSION_TTL_MS; } });
|
|
131
|
+
Object.defineProperty(exports, "openOnboardingSession", { enumerable: true, get: function () { return onboarding_js_2.openOnboardingSession; } });
|
|
132
|
+
Object.defineProperty(exports, "recordOnboardingAssets", { enumerable: true, get: function () { return onboarding_js_2.recordOnboardingAssets; } });
|
|
133
|
+
var routing_js_3 = require("./stores/routing.js");
|
|
134
|
+
Object.defineProperty(exports, "claimChannelAccount", { enumerable: true, get: function () { return routing_js_3.claimChannelAccount; } });
|
|
135
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/communication/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Onboarding de conta de canal — Embedded Signup da Meta.
|
|
4
|
+
*
|
|
5
|
+
* Este módulo é a fronteira entre "o operador clicou em Conectar" e "existe um
|
|
6
|
+
* vínculo de canal com credencial no cofre". Ele não escreve no banco e não lê
|
|
7
|
+
* configuração: recebe o que precisa e devolve o que descobriu, para que o
|
|
8
|
+
* produto decida o que persistir.
|
|
9
|
+
*
|
|
10
|
+
* ── A regra que este arquivo existe para cumprir ────────────────────────────
|
|
11
|
+
*
|
|
12
|
+
* **Nenhum token é digitado por humano.** O caminho anterior — e o que ainda
|
|
13
|
+
* está no cofre desta casa, sob `PROPOSAL_COMM_WA_ACCESS_TOKEN` — é um token de
|
|
14
|
+
* USUÁRIO gerado no painel da Meta e colado numa variável de ambiente. Ele
|
|
15
|
+
* expirou em 2026-07-21 e derrubou o canal sem que nada avisasse, porque um
|
|
16
|
+
* token colado não tem dono, não tem renovação e não tem trilha: ninguém sabe
|
|
17
|
+
* quem o gerou nem quando ele morre.
|
|
18
|
+
*
|
|
19
|
+
* **Aquela credencial é de OUTRO app** — "Baruk Communication Sandbox", do motor
|
|
20
|
+
* de propostas — e **não deve ser reutilizada aqui em hipótese nenhuma**. O app
|
|
21
|
+
* canônico deste caminho é o "Baruk Comunicação". A distinção está escrita
|
|
22
|
+
* porque os dois têm nome parecido e a mesma cara no cofre, e reaproveitar o
|
|
23
|
+
* errado é a regressão mais barata de cometer nesta frente.
|
|
24
|
+
*
|
|
25
|
+
* O Embedded Signup devolve, para o servidor, um `code` trocável por um
|
|
26
|
+
* **business integration system user access token** — escopado ao cliente que
|
|
27
|
+
* autorizou, de vida longa, revogável por ele, e que nunca passa pelo teclado
|
|
28
|
+
* de ninguém.
|
|
29
|
+
*
|
|
30
|
+
* ── O que NÃO está aqui ─────────────────────────────────────────────────────
|
|
31
|
+
*
|
|
32
|
+
* O `client_secret` do App. Ele entra por parâmetro, vindo do ambiente do
|
|
33
|
+
* processo, e nunca é logado, devolvido nem embutido em mensagem de erro. Pelo
|
|
34
|
+
* mesmo motivo, nenhuma função deste arquivo devolve a mensagem de erro da
|
|
35
|
+
* Meta: ela carrega, com frequência, o nome e o identificador do negócio do
|
|
36
|
+
* cliente — que é PII de terceiro dentro de um log nosso.
|
|
37
|
+
*/
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.createSignupState = createSignupState;
|
|
40
|
+
exports.hashSignupState = hashSignupState;
|
|
41
|
+
exports.sameStateHash = sameStateHash;
|
|
42
|
+
exports.exchangeSignupCode = exchangeSignupCode;
|
|
43
|
+
exports.subscribeAppToWaba = subscribeAppToWaba;
|
|
44
|
+
exports.readPhoneNumber = readPhoneNumber;
|
|
45
|
+
exports.listWabaTemplates = listWabaTemplates;
|
|
46
|
+
exports.registerPhoneNumber = registerPhoneNumber;
|
|
47
|
+
const node_crypto_1 = require("node:crypto");
|
|
48
|
+
const graph_js_1 = require("./graph.js");
|
|
49
|
+
/**
|
|
50
|
+
* 32 bytes de aleatoriedade criptográfica.
|
|
51
|
+
*
|
|
52
|
+
* Não é um uuid de propósito: um uuidv7 carrega o instante de criação e é
|
|
53
|
+
* parcialmente previsível, e a única função deste valor é ser impossível de
|
|
54
|
+
* adivinhar.
|
|
55
|
+
*/
|
|
56
|
+
function createSignupState() {
|
|
57
|
+
const state = (0, node_crypto_1.randomBytes)(32).toString('base64url');
|
|
58
|
+
return { state, stateHash: hashSignupState(state) };
|
|
59
|
+
}
|
|
60
|
+
function hashSignupState(state) {
|
|
61
|
+
return (0, node_crypto_1.createHash)('sha256').update(state, 'utf8').digest('hex');
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Comparação de hashes em tempo constante.
|
|
65
|
+
*
|
|
66
|
+
* A busca no banco é por igualdade de índice e já vaza tempo por natureza; esta
|
|
67
|
+
* função existe para o segundo confronto, feito em memória depois da leitura,
|
|
68
|
+
* onde a comparação ingênua compara byte a byte e para no primeiro que difere.
|
|
69
|
+
*/
|
|
70
|
+
function sameStateHash(a, b) {
|
|
71
|
+
if (typeof a !== 'string' || typeof b !== 'string')
|
|
72
|
+
return false;
|
|
73
|
+
const ba = Buffer.from(a, 'utf8');
|
|
74
|
+
const bb = Buffer.from(b, 'utf8');
|
|
75
|
+
if (ba.length !== bb.length)
|
|
76
|
+
return false;
|
|
77
|
+
return (0, node_crypto_1.timingSafeEqual)(ba, bb);
|
|
78
|
+
}
|
|
79
|
+
const DEFAULT_TIMEOUT_MS = 15_000;
|
|
80
|
+
/**
|
|
81
|
+
* Traduz o erro da Meta para uma classe nossa.
|
|
82
|
+
*
|
|
83
|
+
* `100`/`191` sobre um `code` significam código gasto ou redirect divergente —
|
|
84
|
+
* os dois são "refaça o fluxo", não "conserte a configuração". `190` e `200`
|
|
85
|
+
* são credencial/permissão do App: refazer o fluxo não resolve nada, e mostrar
|
|
86
|
+
* "tente de novo" ao operador o faria repetir para sempre um passo que nunca
|
|
87
|
+
* vai funcionar.
|
|
88
|
+
*/
|
|
89
|
+
function classifySignupError(status, err) {
|
|
90
|
+
const code = err?.code;
|
|
91
|
+
if (code === 190 || code === 200 || code === 10 || code === 3)
|
|
92
|
+
return 'unauthorized_app';
|
|
93
|
+
if (code === 100 || code === 191)
|
|
94
|
+
return 'invalid_code';
|
|
95
|
+
if (code === 4 || code === 17 || code === 80007 || code === 613)
|
|
96
|
+
return 'rate_limited';
|
|
97
|
+
if (status === 429)
|
|
98
|
+
return 'rate_limited';
|
|
99
|
+
if (status >= 500)
|
|
100
|
+
return 'network';
|
|
101
|
+
return 'provider_error';
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Uma chamada à Graph API, com a resposta já reduzida a `ok`/classe de erro.
|
|
105
|
+
*
|
|
106
|
+
* Centraliza três cuidados que, escritos em cada chamada, um dia divergiriam:
|
|
107
|
+
* o timeout (uma chamada sem teto pendura o request do operador), o descarte
|
|
108
|
+
* total da exceção de rede (ela pode carregar a URL, e a URL de troca carrega
|
|
109
|
+
* o `client_secret` na query), e a leitura do corpo de erro sem propagá-lo.
|
|
110
|
+
*/
|
|
111
|
+
async function graphCall(call, opts) {
|
|
112
|
+
const doFetch = opts.fetchImpl ?? fetch;
|
|
113
|
+
let res;
|
|
114
|
+
try {
|
|
115
|
+
res = await doFetch(call.url, {
|
|
116
|
+
method: call.method,
|
|
117
|
+
headers: {
|
|
118
|
+
...(call.bearer ? { authorization: `Bearer ${call.bearer}` } : {}),
|
|
119
|
+
...(call.body ? { 'content-type': 'application/json' } : {}),
|
|
120
|
+
},
|
|
121
|
+
...(call.body ? { body: JSON.stringify(call.body) } : {}),
|
|
122
|
+
signal: AbortSignal.timeout(opts.timeoutMs ?? DEFAULT_TIMEOUT_MS),
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
// Nada da exceção é propagado. Em algumas implementações de `fetch` a
|
|
127
|
+
// mensagem inclui a URL — e a URL da troca de código carrega o segredo do
|
|
128
|
+
// App na query string.
|
|
129
|
+
return { ok: false, reason: 'network' };
|
|
130
|
+
}
|
|
131
|
+
const payload = (await res.json().catch(() => null));
|
|
132
|
+
if (!res.ok) {
|
|
133
|
+
const err = (payload?.error ?? null);
|
|
134
|
+
return { ok: false, reason: classifySignupError(res.status, err) };
|
|
135
|
+
}
|
|
136
|
+
return { ok: true, value: (payload ?? {}) };
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Troca o `code` do Embedded Signup pelo token de negócio do cliente.
|
|
140
|
+
*
|
|
141
|
+
* **Server-to-server, sempre.** O `client_secret` do App não pode existir no
|
|
142
|
+
* navegador: quem o tiver consegue trocar códigos de qualquer cliente e falar
|
|
143
|
+
* pela conta dele. É por isso que o front devolve `code` e não token, e é por
|
|
144
|
+
* isso que esta função vive no servidor.
|
|
145
|
+
*/
|
|
146
|
+
async function exchangeSignupCode(input, opts = {}) {
|
|
147
|
+
const code = input.code?.trim() ?? '';
|
|
148
|
+
const appId = input.appId?.trim() ?? '';
|
|
149
|
+
const appSecret = typeof input.appSecret === 'string' ? input.appSecret : '';
|
|
150
|
+
if (!code || !appId || !appSecret)
|
|
151
|
+
return { ok: false, reason: 'unauthorized_app' };
|
|
152
|
+
const url = new URL((0, graph_js_1.graphUrl)('oauth/access_token', opts.env));
|
|
153
|
+
url.searchParams.set('client_id', appId);
|
|
154
|
+
url.searchParams.set('client_secret', appSecret);
|
|
155
|
+
url.searchParams.set('code', code);
|
|
156
|
+
const res = await graphCall({ url: url.toString(), method: 'GET' }, opts);
|
|
157
|
+
if (!res.ok)
|
|
158
|
+
return res;
|
|
159
|
+
const token = res.value.access_token;
|
|
160
|
+
// Resposta 200 sem token é resposta inválida, não sucesso vazio. Deixá-la
|
|
161
|
+
// passar gravaria uma credencial em branco no cofre e o canal falharia
|
|
162
|
+
// depois, longe daqui.
|
|
163
|
+
if (typeof token !== 'string' || token.length < 20) {
|
|
164
|
+
return { ok: false, reason: 'provider_error' };
|
|
165
|
+
}
|
|
166
|
+
return {
|
|
167
|
+
ok: true,
|
|
168
|
+
value: {
|
|
169
|
+
accessToken: token,
|
|
170
|
+
...(typeof res.value.expires_in === 'number' && res.value.expires_in > 0
|
|
171
|
+
? { expiresInSeconds: res.value.expires_in }
|
|
172
|
+
: {}),
|
|
173
|
+
},
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
/* ── 2. Assinatura do App na WABA do cliente ────────────────────────────── */
|
|
177
|
+
/**
|
|
178
|
+
* Assina o App do motor nos webhooks da WABA do cliente.
|
|
179
|
+
*
|
|
180
|
+
* Sem isto o vínculo existe, o envio funciona e **nenhum status volta**: a
|
|
181
|
+
* mensagem fica presa em `sent` para sempre e a tela do escritório não sabe
|
|
182
|
+
* dizer se o cliente recebeu. É a diferença entre um canal que funciona e um
|
|
183
|
+
* canal que parece funcionar.
|
|
184
|
+
*
|
|
185
|
+
* Idempotente do lado da Meta — assinar duas vezes não é erro.
|
|
186
|
+
*/
|
|
187
|
+
async function subscribeAppToWaba(input, opts = {}) {
|
|
188
|
+
const wabaId = input.wabaId?.trim() ?? '';
|
|
189
|
+
if (!wabaId)
|
|
190
|
+
return { ok: false, reason: 'provider_error' };
|
|
191
|
+
const res = await graphCall({
|
|
192
|
+
url: (0, graph_js_1.graphUrl)(`${encodeURIComponent(wabaId)}/subscribed_apps`, opts.env),
|
|
193
|
+
method: 'POST',
|
|
194
|
+
bearer: input.accessToken,
|
|
195
|
+
}, opts);
|
|
196
|
+
if (!res.ok)
|
|
197
|
+
return res;
|
|
198
|
+
return { ok: true, value: { subscribed: res.value.success !== false } };
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Estado do número, do ponto de vista da Meta.
|
|
202
|
+
*
|
|
203
|
+
* Leitura pura. É o que permite à tela dizer `attention_required` com um motivo
|
|
204
|
+
* — "número não verificado", "conta restrita" — em vez do genérico "erro", que
|
|
205
|
+
* obriga o escritório a abrir o painel da Meta para descobrir o quê.
|
|
206
|
+
*/
|
|
207
|
+
async function readPhoneNumber(input, opts = {}) {
|
|
208
|
+
const id = input.phoneNumberId?.trim() ?? '';
|
|
209
|
+
if (!id)
|
|
210
|
+
return { ok: false, reason: 'provider_error' };
|
|
211
|
+
const url = new URL((0, graph_js_1.graphUrl)(encodeURIComponent(id), opts.env));
|
|
212
|
+
url.searchParams.set('fields', 'display_phone_number,verified_name,code_verification_status,status,quality_rating,platform_type');
|
|
213
|
+
const res = await graphCall({ url: url.toString(), method: 'GET', bearer: input.accessToken }, opts);
|
|
214
|
+
if (!res.ok)
|
|
215
|
+
return res;
|
|
216
|
+
const v = res.value;
|
|
217
|
+
return {
|
|
218
|
+
ok: true,
|
|
219
|
+
value: {
|
|
220
|
+
...(str(v.display_phone_number) ? { displayPhoneNumber: str(v.display_phone_number) } : {}),
|
|
221
|
+
...(str(v.verified_name) ? { verifiedName: str(v.verified_name) } : {}),
|
|
222
|
+
...(str(v.code_verification_status)
|
|
223
|
+
? { codeVerificationStatus: str(v.code_verification_status) }
|
|
224
|
+
: {}),
|
|
225
|
+
...(str(v.status) ? { status: str(v.status) } : {}),
|
|
226
|
+
...(str(v.quality_rating) ? { qualityRating: str(v.quality_rating) } : {}),
|
|
227
|
+
...(str(v.platform_type) ? { platformType: str(v.platform_type) } : {}),
|
|
228
|
+
},
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Lista os templates da WABA do cliente. **Somente leitura.**
|
|
233
|
+
*
|
|
234
|
+
* Existe porque `approvedEvents` é uma lista mantida à mão em
|
|
235
|
+
* `tenant.settings`, e uma lista declarada por humano diverge da realidade da
|
|
236
|
+
* Meta no dia em que alguém aprova, pausa ou reprova um template lá. Um template
|
|
237
|
+
* marcado "aprovado" aqui e reprovado lá gasta a tentativa de envio e volta erro
|
|
238
|
+
* permanente — que a régua interpreta como problema do destinatário.
|
|
239
|
+
*
|
|
240
|
+
* Devolver a lista permite que a decisão de configurar `approvedEvents` seja
|
|
241
|
+
* tomada contra o que a Meta diz, e não contra o que alguém lembrou.
|
|
242
|
+
*/
|
|
243
|
+
async function listWabaTemplates(input, opts = {}) {
|
|
244
|
+
const wabaId = input.wabaId?.trim() ?? '';
|
|
245
|
+
if (!wabaId)
|
|
246
|
+
return { ok: false, reason: 'provider_error' };
|
|
247
|
+
const url = new URL((0, graph_js_1.graphUrl)(`${encodeURIComponent(wabaId)}/message_templates`, opts.env));
|
|
248
|
+
url.searchParams.set('fields', 'name,language,status,category');
|
|
249
|
+
url.searchParams.set('limit', '100');
|
|
250
|
+
const res = await graphCall({ url: url.toString(), method: 'GET', bearer: input.accessToken }, opts);
|
|
251
|
+
if (!res.ok)
|
|
252
|
+
return res;
|
|
253
|
+
const items = Array.isArray(res.value.data) ? res.value.data : [];
|
|
254
|
+
return {
|
|
255
|
+
ok: true,
|
|
256
|
+
// Só os quatro campos que interessam. O payload da Meta traz `components`
|
|
257
|
+
// com o TEXTO do template, e o texto de um template de cobrança carrega a
|
|
258
|
+
// forma como o escritório fala com o cliente — não precisa atravessar o
|
|
259
|
+
// domínio para responder "está aprovado?".
|
|
260
|
+
value: items.flatMap((t) => {
|
|
261
|
+
const name = str(t.name);
|
|
262
|
+
const language = str(t.language);
|
|
263
|
+
const status = str(t.status);
|
|
264
|
+
if (!name || !language || !status)
|
|
265
|
+
return [];
|
|
266
|
+
const category = str(t.category);
|
|
267
|
+
return [{ name, language, status, ...(category ? { category } : {}) }];
|
|
268
|
+
}),
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Registra o número do cliente na Cloud API.
|
|
273
|
+
*
|
|
274
|
+
* Implementado e **não chamado** por nenhum caminho automático desta fase. O
|
|
275
|
+
* gate de autorização humana está no parâmetro, e não numa convenção de
|
|
276
|
+
* chamada: uma trava que depende de ninguém chamar a função errada não é trava.
|
|
277
|
+
*/
|
|
278
|
+
async function registerPhoneNumber(input, opts = {}) {
|
|
279
|
+
if (input.authorized !== true)
|
|
280
|
+
return { ok: false, reason: 'not_authorized' };
|
|
281
|
+
const pin = input.pin?.trim() ?? '';
|
|
282
|
+
if (!/^\d{6}$/.test(pin))
|
|
283
|
+
return { ok: false, reason: 'invalid_pin' };
|
|
284
|
+
const res = await graphCall({
|
|
285
|
+
url: (0, graph_js_1.graphUrl)(`${encodeURIComponent(input.phoneNumberId)}/register`, opts.env),
|
|
286
|
+
method: 'POST',
|
|
287
|
+
bearer: input.accessToken,
|
|
288
|
+
body: { messaging_product: 'whatsapp', pin },
|
|
289
|
+
}, opts);
|
|
290
|
+
if (!res.ok)
|
|
291
|
+
return { ok: false, reason: res.reason };
|
|
292
|
+
return { ok: true };
|
|
293
|
+
}
|
|
294
|
+
function str(v) {
|
|
295
|
+
return typeof v === 'string' && v.trim().length > 0 ? v.trim().slice(0, 120) : undefined;
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=onboarding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../../src/communication/onboarding.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;;AA0BH,8CAGC;AAED,0CAEC;AASD,sCAMC;AA8ID,gDAqCC;AAcD,gDAiBC;AAwBD,0CAiCC;AAwBD,8CAiCC;AA8BD,kDAmBC;AAnaD,6CAAuE;AACvE,yCAAsC;AAgBtC;;;;;;GAMG;AACH,SAAgB,iBAAiB;IAC/B,MAAM,KAAK,GAAG,IAAA,yBAAW,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACpD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,SAAgB,eAAe,CAAC,KAAa;IAC3C,OAAO,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,aAAa,CAAC,CAAS,EAAE,CAAS;IAChD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACjE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAClC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAClC,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,IAAA,6BAAe,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC;AAiCD,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAQlC;;;;;;;;GAQG;AACH,SAAS,mBAAmB,CAAC,MAAc,EAAE,GAA0B;IACrE,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC;IACvB,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,kBAAkB,CAAC;IACzF,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,cAAc,CAAC;IACxD,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,cAAc,CAAC;IACvF,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,cAAc,CAAC;IAC1C,IAAI,MAAM,IAAI,GAAG;QAAE,OAAO,SAAS,CAAC;IACpC,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AASD;;;;;;;GAOG;AACH,KAAK,UAAU,SAAS,CAAI,IAAe,EAAE,IAAwB;IACnE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IACxC,IAAI,GAAa,CAAC;IAClB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;YAC5B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE;gBACP,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7D;YACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC;SAClE,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;QACtE,0EAA0E;QAC1E,uBAAuB;QACvB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAmC,CAAC;IAEvF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,CAA0B,CAAC;QAC9D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IACrE,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,OAAO,IAAI,EAAE,CAAM,EAAE,CAAC;AACnD,CAAC;AA+BD;;;;;;;GAOG;AACI,KAAK,UAAU,kBAAkB,CACtC,KAA8B,EAC9B,OAA2B,EAAE;IAE7B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxC,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAEpF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAA,mBAAQ,EAAC,oBAAoB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACzC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IACjD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEnC,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EACtC,IAAI,CACL,CAAC;IACF,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,GAAG,CAAC;IAExB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC;IACrC,0EAA0E;IAC1E,uEAAuE;IACvE,uBAAuB;IACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACnD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACjD,CAAC;IAED,OAAO;QACL,EAAE,EAAE,IAAI;QACR,KAAK,EAAE;YACL,WAAW,EAAE,KAAK;YAClB,GAAG,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC;gBACtE,CAAC,CAAC,EAAE,gBAAgB,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE;gBAC5C,CAAC,CAAC,EAAE,CAAC;SACR;KACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAE/E;;;;;;;;;GASG;AACI,KAAK,UAAU,kBAAkB,CACtC,KAA8C,EAC9C,OAA2B,EAAE;IAE7B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC1C,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAE5D,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB;QACE,GAAG,EAAE,IAAA,mBAAQ,EAAC,GAAG,kBAAkB,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,GAAG,CAAC;QACxE,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,KAAK,CAAC,WAAW;KAC1B,EACD,IAAI,CACL,CAAC;IACF,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,GAAG,CAAC;IACxB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE,EAAE,CAAC;AAC1E,CAAC;AAiBD;;;;;;GAMG;AACI,KAAK,UAAU,eAAe,CACnC,KAAqD,EACrD,OAA2B,EAAE;IAE7B,MAAM,EAAE,GAAG,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC7C,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAExD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAA,mBAAQ,EAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,GAAG,CAAC,YAAY,CAAC,GAAG,CAClB,QAAQ,EACR,iGAAiG,CAClG,CAAC;IAEF,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,EACjE,IAAI,CACL,CAAC;IACF,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,GAAG,CAAC;IAExB,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;IACpB,OAAO;QACL,EAAE,EAAE,IAAI;QACR,KAAK,EAAE;YACL,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5F,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,aAAa,CAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB,CAAC;gBACjC,CAAC,CAAC,EAAE,sBAAsB,EAAE,GAAG,CAAC,CAAC,CAAC,wBAAwB,CAAE,EAAE;gBAC9D,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,cAAc,CAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,aAAa,CAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzE;KACF,CAAC;AACJ,CAAC;AAYD;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,iBAAiB,CACrC,KAA8C,EAC9C,OAA2B,EAAE;IAE7B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC1C,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAE5D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAA,mBAAQ,EAAC,GAAG,kBAAkB,CAAC,MAAM,CAAC,oBAAoB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3F,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,+BAA+B,CAAC,CAAC;IAChE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAErC,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,EACjE,IAAI,CACL,CAAC;IACF,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,GAAG,CAAC;IAExB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,OAAO;QACL,EAAE,EAAE,IAAI;QACR,0EAA0E;QAC1E,0EAA0E;QAC1E,wEAAwE;QACxE,2CAA2C;QAC3C,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACzB,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzB,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACjC,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACjC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC,CAAC;KACH,CAAC;AACJ,CAAC;AAuBD;;;;;;GAMG;AACI,KAAK,UAAU,mBAAmB,CACvC,KAA+B,EAC/B,OAA2B,EAAE;IAE7B,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC9E,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAEtE,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB;QACE,GAAG,EAAE,IAAA,mBAAQ,EAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC;QAC9E,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,KAAK,CAAC,WAAW;QACzB,IAAI,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,EAAE;KAC7C,EACD,IAAI,CACL,CAAC;IACF,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;IACtD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,GAAG,CAAC,CAAU;IACrB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3F,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Política de canais — qual canal tentar, em que ordem, e quando desistir.
|
|
4
|
+
*
|
|
5
|
+
* A política é DADO do consumidor, nunca constante do motor. O adendo §12 é
|
|
6
|
+
* explícito: `D-3`, `D0`, `D+3` e a escolha de canal pertencem à régua da SC. O
|
|
7
|
+
* motor recebe uma intenção que já diz "tente WhatsApp, depois e-mail" e a
|
|
8
|
+
* executa; ele nunca decide que cobrança de contabilidade começa por WhatsApp.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.DEFAULT_POLICY = void 0;
|
|
12
|
+
exports.DEFAULT_POLICY = {
|
|
13
|
+
order: ['email'],
|
|
14
|
+
fallbackOnTemporary: false,
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../src/communication/policy.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AA+FU,QAAA,cAAc,GAAkB;IAC3C,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,mBAAmB,EAAE,KAAK;CAC3B,CAAC"}
|