@baruk/core 0.3.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.baruk-provenance.json +10 -0
- package/CHANGELOG.md +127 -0
- package/dist/audit/repository.d.ts +33 -1
- package/dist/audit/repository.d.ts.map +1 -1
- package/dist/audit/repository.js +41 -7
- package/dist/audit/repository.js.map +1 -1
- 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 +60 -2
- package/dist/auth/service.d.ts.map +1 -1
- package/dist/auth/service.js +121 -11
- package/dist/auth/service.js.map +1 -1
- package/dist/billing/ar-repository.d.ts +374 -0
- package/dist/billing/ar-repository.d.ts.map +1 -0
- package/dist/billing/ar-repository.js +783 -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 +127 -0
- package/dist/billing/provider-account.d.ts.map +1 -0
- package/dist/billing/provider-account.js +217 -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 +134 -1
- package/dist/billing/repository.d.ts.map +1 -1
- package/dist/billing/repository.js +193 -20
- package/dist/billing/repository.js.map +1 -1
- package/dist/cjs/audit/repository.js +41 -7
- package/dist/cjs/audit/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 +121 -10
- package/dist/cjs/auth/service.js.map +1 -1
- package/dist/cjs/billing/ar-repository.js +804 -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 +229 -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 +197 -19
- package/dist/cjs/billing/repository.js.map +1 -1
- package/dist/cjs/clients/ibge.js +103 -0
- package/dist/cjs/clients/ibge.js.map +1 -0
- package/dist/cjs/clients/repository.js +276 -23
- package/dist/cjs/clients/repository.js.map +1 -1
- package/dist/cjs/collection/branding.js +330 -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/clearance-store.js +74 -0
- package/dist/cjs/collection/clearance-store.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 +256 -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 +434 -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 +175 -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/clearance.js +18 -0
- package/dist/cjs/communication/clearance.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 +166 -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 +495 -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/business-days.js +155 -0
- package/dist/cjs/competence/business-days.js.map +1 -0
- package/dist/cjs/competence/catalog-validation.js +174 -0
- package/dist/cjs/competence/catalog-validation.js.map +1 -0
- package/dist/cjs/competence/obligation-preview.js +190 -0
- package/dist/cjs/competence/obligation-preview.js.map +1 -0
- package/dist/cjs/competence/repository.js +622 -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/dashboard/pilot-panel.js +90 -0
- package/dist/cjs/dashboard/pilot-panel.js.map +1 -0
- package/dist/cjs/dashboard/repository.js +11 -1
- package/dist/cjs/dashboard/repository.js.map +1 -1
- package/dist/cjs/db/client.js +17 -11
- package/dist/cjs/db/client.js.map +1 -1
- package/dist/cjs/db/provision-e2e-identity.js +111 -0
- package/dist/cjs/db/provision-e2e-identity.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/fiscal/applicability.js +164 -0
- package/dist/cjs/fiscal/applicability.js.map +1 -0
- package/dist/cjs/fiscal/conditions.js +198 -0
- package/dist/cjs/fiscal/conditions.js.map +1 -0
- package/dist/cjs/fiscal/contracts/nfse-adn-contract.js +390 -0
- package/dist/cjs/fiscal/contracts/nfse-adn-contract.js.map +1 -0
- package/dist/cjs/fiscal/contracts/nfse-adn-endpoint.js +108 -0
- package/dist/cjs/fiscal/contracts/nfse-adn-endpoint.js.map +1 -0
- package/dist/cjs/fiscal/contracts/nfse-adn-envelope.js +220 -0
- package/dist/cjs/fiscal/contracts/nfse-adn-envelope.js.map +1 -0
- package/dist/cjs/fiscal/coverage/model.js +127 -0
- package/dist/cjs/fiscal/coverage/model.js.map +1 -0
- package/dist/cjs/fiscal/coverage/requests.js +99 -0
- package/dist/cjs/fiscal/coverage/requests.js.map +1 -0
- package/dist/cjs/fiscal/credentials/material.js +168 -0
- package/dist/cjs/fiscal/credentials/material.js.map +1 -0
- package/dist/cjs/fiscal/credentials/readiness.js +163 -0
- package/dist/cjs/fiscal/credentials/readiness.js.map +1 -0
- package/dist/cjs/fiscal/eligibility.js +199 -0
- package/dist/cjs/fiscal/eligibility.js.map +1 -0
- package/dist/cjs/fiscal/ingestion/__fixtures__/nfse.js +128 -0
- package/dist/cjs/fiscal/ingestion/__fixtures__/nfse.js.map +1 -0
- package/dist/cjs/fiscal/ingestion/adn-transport.js +229 -0
- package/dist/cjs/fiscal/ingestion/adn-transport.js.map +1 -0
- package/dist/cjs/fiscal/ingestion/direction.js +36 -0
- package/dist/cjs/fiscal/ingestion/direction.js.map +1 -0
- package/dist/cjs/fiscal/ingestion/nfse-adn.js +228 -0
- package/dist/cjs/fiscal/ingestion/nfse-adn.js.map +1 -0
- package/dist/cjs/fiscal/ingestion/pipeline.js +704 -0
- package/dist/cjs/fiscal/ingestion/pipeline.js.map +1 -0
- package/dist/cjs/fiscal/ingestion/provider.js +51 -0
- package/dist/cjs/fiscal/ingestion/provider.js.map +1 -0
- package/dist/cjs/fiscal/ingestion/repository.js +132 -0
- package/dist/cjs/fiscal/ingestion/repository.js.map +1 -0
- package/dist/cjs/fiscal/ingestion/synthetic-provider.js +103 -0
- package/dist/cjs/fiscal/ingestion/synthetic-provider.js.map +1 -0
- package/dist/cjs/fiscal/ingestion/synthetic-transport-types.js +13 -0
- package/dist/cjs/fiscal/ingestion/synthetic-transport-types.js.map +1 -0
- package/dist/cjs/fiscal/ingestion/synthetic-transport.js +61 -0
- package/dist/cjs/fiscal/ingestion/synthetic-transport.js.map +1 -0
- package/dist/cjs/fiscal/ingestion/xml-reader.js +121 -0
- package/dist/cjs/fiscal/ingestion/xml-reader.js.map +1 -0
- package/dist/cjs/fiscal/repository.js +470 -0
- package/dist/cjs/fiscal/repository.js.map +1 -0
- package/dist/cjs/fiscal/sync/circuit.js +124 -0
- package/dist/cjs/fiscal/sync/circuit.js.map +1 -0
- package/dist/cjs/fiscal/sync/intervention.js +140 -0
- package/dist/cjs/fiscal/sync/intervention.js.map +1 -0
- package/dist/cjs/fiscal/sync/lease.js +146 -0
- package/dist/cjs/fiscal/sync/lease.js.map +1 -0
- package/dist/cjs/fiscal/sync/observability.js +244 -0
- package/dist/cjs/fiscal/sync/observability.js.map +1 -0
- package/dist/cjs/fiscal/sync/orchestrator.js +490 -0
- package/dist/cjs/fiscal/sync/orchestrator.js.map +1 -0
- package/dist/cjs/fiscal/sync/policy.js +143 -0
- package/dist/cjs/fiscal/sync/policy.js.map +1 -0
- package/dist/cjs/fiscal/sync/reprocess.js +241 -0
- package/dist/cjs/fiscal/sync/reprocess.js.map +1 -0
- package/dist/cjs/fiscal/sync/retry.js +183 -0
- package/dist/cjs/fiscal/sync/retry.js.map +1 -0
- package/dist/cjs/fiscal/sync/secret-boundary.js +123 -0
- package/dist/cjs/fiscal/sync/secret-boundary.js.map +1 -0
- package/dist/cjs/fiscal/transport/https.js +309 -0
- package/dist/cjs/fiscal/transport/https.js.map +1 -0
- package/dist/cjs/fiscal/transport/synthetic-tls.js +328 -0
- package/dist/cjs/fiscal/transport/synthetic-tls.js.map +1 -0
- package/dist/cjs/fiscal/transport/types.js +93 -0
- package/dist/cjs/fiscal/transport/types.js.map +1 -0
- package/dist/cjs/import/br-documents.js +85 -0
- package/dist/cjs/import/br-documents.js.map +1 -0
- package/dist/cjs/import/clients-import.js +347 -40
- package/dist/cjs/import/clients-import.js.map +1 -1
- package/dist/cjs/index.js +711 -39
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/legal/documents.js +224 -17
- package/dist/cjs/legal/documents.js.map +1 -1
- package/dist/cjs/legal/index.js +3 -1
- package/dist/cjs/legal/index.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/onboarding/persistence.js +4 -4
- package/dist/cjs/onboarding/persistence.js.map +1 -1
- package/dist/cjs/pilot/go-live-checklist.js +212 -0
- package/dist/cjs/pilot/go-live-checklist.js.map +1 -0
- package/dist/cjs/pilot/milestone.js +79 -0
- package/dist/cjs/pilot/milestone.js.map +1 -0
- package/dist/cjs/platform/capabilities.js +144 -0
- package/dist/cjs/platform/capabilities.js.map +1 -0
- package/dist/cjs/platform/job-contract.js +411 -0
- package/dist/cjs/platform/job-contract.js.map +1 -0
- 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 +101 -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/index.js +2 -1
- package/dist/cjs/subscription-billing/index.js.map +1 -1
- 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 +208 -83
- package/dist/cjs/subscription-billing/service.js.map +1 -1
- package/dist/cjs/subscription-billing/types.js.map +1 -1
- package/dist/cjs/tenancy/features.js +131 -0
- package/dist/cjs/tenancy/features.js.map +1 -0
- package/dist/cjs/tenancy/provisioning.js +32 -8
- package/dist/cjs/tenancy/provisioning.js.map +1 -1
- package/dist/cjs/tenancy/settings.js +224 -0
- package/dist/cjs/tenancy/settings.js.map +1 -0
- package/dist/cjs/users/repository.js +143 -3
- 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/ibge.d.ts +17 -0
- package/dist/clients/ibge.d.ts.map +1 -0
- package/dist/clients/ibge.js +98 -0
- package/dist/clients/ibge.js.map +1 -0
- package/dist/clients/repository.d.ts +196 -0
- package/dist/clients/repository.d.ts.map +1 -1
- package/dist/clients/repository.js +270 -24
- package/dist/clients/repository.js.map +1 -1
- package/dist/collection/branding.d.ts +137 -0
- package/dist/collection/branding.d.ts.map +1 -0
- package/dist/collection/branding.js +322 -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/clearance-store.d.ts +39 -0
- package/dist/collection/clearance-store.d.ts.map +1 -0
- package/dist/collection/clearance-store.js +69 -0
- package/dist/collection/clearance-store.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 +132 -0
- package/dist/collection/communication-runtime.d.ts.map +1 -0
- package/dist/collection/communication-runtime.js +249 -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 +200 -0
- package/dist/collection/engine.d.ts.map +1 -0
- package/dist/collection/engine.js +427 -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 +78 -0
- package/dist/collection/policy.d.ts.map +1 -0
- package/dist/collection/policy.js +168 -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/clearance.d.ts +53 -0
- package/dist/communication/clearance.d.ts.map +1 -0
- package/dist/communication/clearance.js +15 -0
- package/dist/communication/clearance.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 +163 -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 +163 -0
- package/dist/communication/engine.d.ts.map +1 -0
- package/dist/communication/engine.js +492 -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 +115 -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/business-days.d.ts +51 -0
- package/dist/competence/business-days.d.ts.map +1 -0
- package/dist/competence/business-days.js +145 -0
- package/dist/competence/business-days.js.map +1 -0
- package/dist/competence/catalog-validation.d.ts +86 -0
- package/dist/competence/catalog-validation.d.ts.map +1 -0
- package/dist/competence/catalog-validation.js +168 -0
- package/dist/competence/catalog-validation.js.map +1 -0
- package/dist/competence/obligation-preview.d.ts +103 -0
- package/dist/competence/obligation-preview.d.ts.map +1 -0
- package/dist/competence/obligation-preview.js +184 -0
- package/dist/competence/obligation-preview.js.map +1 -0
- package/dist/competence/repository.d.ts +285 -0
- package/dist/competence/repository.d.ts.map +1 -0
- package/dist/competence/repository.js +602 -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/dashboard/pilot-panel.d.ts +100 -0
- package/dist/dashboard/pilot-panel.d.ts.map +1 -0
- package/dist/dashboard/pilot-panel.js +87 -0
- package/dist/dashboard/pilot-panel.js.map +1 -0
- package/dist/dashboard/repository.d.ts.map +1 -1
- package/dist/dashboard/repository.js +11 -1
- package/dist/dashboard/repository.js.map +1 -1
- package/dist/db/client.d.ts +45 -0
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +16 -11
- package/dist/db/client.js.map +1 -1
- package/dist/db/migrate.d.ts +36 -1
- package/dist/db/migrate.d.ts.map +1 -1
- package/dist/db/migrate.js +208 -35
- package/dist/db/migrate.js.map +1 -1
- package/dist/db/provision-e2e-identity.d.ts +2 -0
- package/dist/db/provision-e2e-identity.d.ts.map +1 -0
- package/dist/db/provision-e2e-identity.js +109 -0
- package/dist/db/provision-e2e-identity.js.map +1 -0
- 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/fiscal/applicability.d.ts +73 -0
- package/dist/fiscal/applicability.d.ts.map +1 -0
- package/dist/fiscal/applicability.js +160 -0
- package/dist/fiscal/applicability.js.map +1 -0
- package/dist/fiscal/conditions.d.ts +99 -0
- package/dist/fiscal/conditions.d.ts.map +1 -0
- package/dist/fiscal/conditions.js +190 -0
- package/dist/fiscal/conditions.js.map +1 -0
- package/dist/fiscal/contracts/nfse-adn-contract.d.ts +315 -0
- package/dist/fiscal/contracts/nfse-adn-contract.d.ts.map +1 -0
- package/dist/fiscal/contracts/nfse-adn-contract.js +386 -0
- package/dist/fiscal/contracts/nfse-adn-contract.js.map +1 -0
- package/dist/fiscal/contracts/nfse-adn-endpoint.d.ts +13 -0
- package/dist/fiscal/contracts/nfse-adn-endpoint.d.ts.map +1 -0
- package/dist/fiscal/contracts/nfse-adn-endpoint.js +103 -0
- package/dist/fiscal/contracts/nfse-adn-endpoint.js.map +1 -0
- package/dist/fiscal/contracts/nfse-adn-envelope.d.ts +77 -0
- package/dist/fiscal/contracts/nfse-adn-envelope.d.ts.map +1 -0
- package/dist/fiscal/contracts/nfse-adn-envelope.js +215 -0
- package/dist/fiscal/contracts/nfse-adn-envelope.js.map +1 -0
- package/dist/fiscal/coverage/model.d.ts +86 -0
- package/dist/fiscal/coverage/model.d.ts.map +1 -0
- package/dist/fiscal/coverage/model.js +120 -0
- package/dist/fiscal/coverage/model.js.map +1 -0
- package/dist/fiscal/coverage/requests.d.ts +70 -0
- package/dist/fiscal/coverage/requests.d.ts.map +1 -0
- package/dist/fiscal/coverage/requests.js +95 -0
- package/dist/fiscal/coverage/requests.js.map +1 -0
- package/dist/fiscal/credentials/material.d.ts +81 -0
- package/dist/fiscal/credentials/material.d.ts.map +1 -0
- package/dist/fiscal/credentials/material.js +164 -0
- package/dist/fiscal/credentials/material.js.map +1 -0
- package/dist/fiscal/credentials/readiness.d.ts +92 -0
- package/dist/fiscal/credentials/readiness.d.ts.map +1 -0
- package/dist/fiscal/credentials/readiness.js +159 -0
- package/dist/fiscal/credentials/readiness.js.map +1 -0
- package/dist/fiscal/eligibility.d.ts +106 -0
- package/dist/fiscal/eligibility.d.ts.map +1 -0
- package/dist/fiscal/eligibility.js +194 -0
- package/dist/fiscal/eligibility.js.map +1 -0
- package/dist/fiscal/ingestion/__fixtures__/nfse.d.ts +57 -0
- package/dist/fiscal/ingestion/__fixtures__/nfse.d.ts.map +1 -0
- package/dist/fiscal/ingestion/__fixtures__/nfse.js +121 -0
- package/dist/fiscal/ingestion/__fixtures__/nfse.js.map +1 -0
- package/dist/fiscal/ingestion/adn-transport.d.ts +123 -0
- package/dist/fiscal/ingestion/adn-transport.d.ts.map +1 -0
- package/dist/fiscal/ingestion/adn-transport.js +220 -0
- package/dist/fiscal/ingestion/adn-transport.js.map +1 -0
- package/dist/fiscal/ingestion/direction.d.ts +60 -0
- package/dist/fiscal/ingestion/direction.d.ts.map +1 -0
- package/dist/fiscal/ingestion/direction.js +32 -0
- package/dist/fiscal/ingestion/direction.js.map +1 -0
- package/dist/fiscal/ingestion/nfse-adn.d.ts +91 -0
- package/dist/fiscal/ingestion/nfse-adn.d.ts.map +1 -0
- package/dist/fiscal/ingestion/nfse-adn.js +222 -0
- package/dist/fiscal/ingestion/nfse-adn.js.map +1 -0
- package/dist/fiscal/ingestion/pipeline.d.ts +168 -0
- package/dist/fiscal/ingestion/pipeline.d.ts.map +1 -0
- package/dist/fiscal/ingestion/pipeline.js +699 -0
- package/dist/fiscal/ingestion/pipeline.js.map +1 -0
- package/dist/fiscal/ingestion/provider.d.ts +206 -0
- package/dist/fiscal/ingestion/provider.d.ts.map +1 -0
- package/dist/fiscal/ingestion/provider.js +47 -0
- package/dist/fiscal/ingestion/provider.js.map +1 -0
- package/dist/fiscal/ingestion/repository.d.ts +82 -0
- package/dist/fiscal/ingestion/repository.d.ts.map +1 -0
- package/dist/fiscal/ingestion/repository.js +127 -0
- package/dist/fiscal/ingestion/repository.js.map +1 -0
- package/dist/fiscal/ingestion/synthetic-provider.d.ts +92 -0
- package/dist/fiscal/ingestion/synthetic-provider.d.ts.map +1 -0
- package/dist/fiscal/ingestion/synthetic-provider.js +99 -0
- package/dist/fiscal/ingestion/synthetic-provider.js.map +1 -0
- package/dist/fiscal/ingestion/synthetic-transport-types.d.ts +19 -0
- package/dist/fiscal/ingestion/synthetic-transport-types.d.ts.map +1 -0
- package/dist/fiscal/ingestion/synthetic-transport-types.js +9 -0
- package/dist/fiscal/ingestion/synthetic-transport-types.js.map +1 -0
- package/dist/fiscal/ingestion/synthetic-transport.d.ts +55 -0
- package/dist/fiscal/ingestion/synthetic-transport.d.ts.map +1 -0
- package/dist/fiscal/ingestion/synthetic-transport.js +57 -0
- package/dist/fiscal/ingestion/synthetic-transport.js.map +1 -0
- package/dist/fiscal/ingestion/xml-reader.d.ts +55 -0
- package/dist/fiscal/ingestion/xml-reader.d.ts.map +1 -0
- package/dist/fiscal/ingestion/xml-reader.js +112 -0
- package/dist/fiscal/ingestion/xml-reader.js.map +1 -0
- package/dist/fiscal/repository.d.ts +220 -0
- package/dist/fiscal/repository.d.ts.map +1 -0
- package/dist/fiscal/repository.js +449 -0
- package/dist/fiscal/repository.js.map +1 -0
- package/dist/fiscal/sync/circuit.d.ts +86 -0
- package/dist/fiscal/sync/circuit.d.ts.map +1 -0
- package/dist/fiscal/sync/circuit.js +118 -0
- package/dist/fiscal/sync/circuit.js.map +1 -0
- package/dist/fiscal/sync/intervention.d.ts +81 -0
- package/dist/fiscal/sync/intervention.d.ts.map +1 -0
- package/dist/fiscal/sync/intervention.js +135 -0
- package/dist/fiscal/sync/intervention.js.map +1 -0
- package/dist/fiscal/sync/lease.d.ts +118 -0
- package/dist/fiscal/sync/lease.d.ts.map +1 -0
- package/dist/fiscal/sync/lease.js +139 -0
- package/dist/fiscal/sync/lease.js.map +1 -0
- package/dist/fiscal/sync/observability.d.ts +148 -0
- package/dist/fiscal/sync/observability.d.ts.map +1 -0
- package/dist/fiscal/sync/observability.js +239 -0
- package/dist/fiscal/sync/observability.js.map +1 -0
- package/dist/fiscal/sync/orchestrator.d.ts +132 -0
- package/dist/fiscal/sync/orchestrator.d.ts.map +1 -0
- package/dist/fiscal/sync/orchestrator.js +487 -0
- package/dist/fiscal/sync/orchestrator.js.map +1 -0
- package/dist/fiscal/sync/policy.d.ts +87 -0
- package/dist/fiscal/sync/policy.d.ts.map +1 -0
- package/dist/fiscal/sync/policy.js +136 -0
- package/dist/fiscal/sync/policy.js.map +1 -0
- package/dist/fiscal/sync/reprocess.d.ts +76 -0
- package/dist/fiscal/sync/reprocess.d.ts.map +1 -0
- package/dist/fiscal/sync/reprocess.js +237 -0
- package/dist/fiscal/sync/reprocess.js.map +1 -0
- package/dist/fiscal/sync/retry.d.ts +82 -0
- package/dist/fiscal/sync/retry.d.ts.map +1 -0
- package/dist/fiscal/sync/retry.js +176 -0
- package/dist/fiscal/sync/retry.js.map +1 -0
- package/dist/fiscal/sync/secret-boundary.d.ts +169 -0
- package/dist/fiscal/sync/secret-boundary.d.ts.map +1 -0
- package/dist/fiscal/sync/secret-boundary.js +116 -0
- package/dist/fiscal/sync/secret-boundary.js.map +1 -0
- package/dist/fiscal/transport/https.d.ts +86 -0
- package/dist/fiscal/transport/https.d.ts.map +1 -0
- package/dist/fiscal/transport/https.js +303 -0
- package/dist/fiscal/transport/https.js.map +1 -0
- package/dist/fiscal/transport/synthetic-tls.d.ts +80 -0
- package/dist/fiscal/transport/synthetic-tls.d.ts.map +1 -0
- package/dist/fiscal/transport/synthetic-tls.js +323 -0
- package/dist/fiscal/transport/synthetic-tls.js.map +1 -0
- package/dist/fiscal/transport/types.d.ts +134 -0
- package/dist/fiscal/transport/types.d.ts.map +1 -0
- package/dist/fiscal/transport/types.js +88 -0
- package/dist/fiscal/transport/types.js.map +1 -0
- package/dist/import/br-documents.d.ts +26 -0
- package/dist/import/br-documents.d.ts.map +1 -0
- package/dist/import/br-documents.js +78 -0
- package/dist/import/br-documents.js.map +1 -0
- package/dist/import/clients-import.d.ts +122 -4
- package/dist/import/clients-import.d.ts.map +1 -1
- package/dist/import/clients-import.js +341 -41
- package/dist/import/clients-import.js.map +1 -1
- package/dist/index.d.ts +217 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +196 -11
- package/dist/index.js.map +1 -1
- package/dist/legal/documents.d.ts +12 -1
- package/dist/legal/documents.d.ts.map +1 -1
- package/dist/legal/documents.js +222 -16
- package/dist/legal/documents.js.map +1 -1
- package/dist/legal/index.d.ts +2 -2
- package/dist/legal/index.d.ts.map +1 -1
- package/dist/legal/index.js +1 -1
- package/dist/legal/index.js.map +1 -1
- package/dist/legal/types.d.ts +69 -3
- 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/onboarding/persistence.d.ts +10 -1
- package/dist/onboarding/persistence.d.ts.map +1 -1
- package/dist/onboarding/persistence.js +4 -4
- package/dist/onboarding/persistence.js.map +1 -1
- package/dist/pilot/go-live-checklist.d.ts +41 -0
- package/dist/pilot/go-live-checklist.d.ts.map +1 -0
- package/dist/pilot/go-live-checklist.js +209 -0
- package/dist/pilot/go-live-checklist.js.map +1 -0
- package/dist/pilot/milestone.d.ts +56 -0
- package/dist/pilot/milestone.d.ts.map +1 -0
- package/dist/pilot/milestone.js +74 -0
- package/dist/pilot/milestone.js.map +1 -0
- package/dist/platform/capabilities.d.ts +88 -0
- package/dist/platform/capabilities.d.ts.map +1 -0
- package/dist/platform/capabilities.js +140 -0
- package/dist/platform/capabilities.js.map +1 -0
- package/dist/platform/job-contract.d.ts +232 -0
- package/dist/platform/job-contract.d.ts.map +1 -0
- package/dist/platform/job-contract.js +403 -0
- package/dist/platform/job-contract.js.map +1 -0
- 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 +101 -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/index.d.ts +6 -5
- package/dist/subscription-billing/index.d.ts.map +1 -1
- package/dist/subscription-billing/index.js +3 -3
- package/dist/subscription-billing/index.js.map +1 -1
- 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 +38 -1
- package/dist/subscription-billing/service.d.ts.map +1 -1
- package/dist/subscription-billing/service.js +147 -23
- 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/features.d.ts +69 -0
- package/dist/tenancy/features.d.ts.map +1 -0
- package/dist/tenancy/features.js +123 -0
- package/dist/tenancy/features.js.map +1 -0
- 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/tenancy/settings.d.ts +63 -0
- package/dist/tenancy/settings.d.ts.map +1 -0
- package/dist/tenancy/settings.js +218 -0
- package/dist/tenancy/settings.js.map +1 -0
- package/dist/users/repository.d.ts +54 -1
- package/dist/users/repository.d.ts.map +1 -1
- package/dist/users/repository.js +142 -4
- 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 +20 -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/src/db/migrations/0045_role_write_scope.sql +122 -0
- package/src/db/migrations/0046_pilot_activation_model.sql +184 -0
- package/src/db/migrations/0047_recipient_clearance.sql +89 -0
- package/src/db/migrations/0048_item_type_note.sql +16 -0
- package/src/db/migrations/0049_national_fiscal_engine.sql +279 -0
- package/src/db/migrations/0050_fiscal_vocabulary_readonly.sql +29 -0
- package/src/db/migrations/0051_seed_rules_from_catalog.sql +72 -0
- package/src/db/migrations/0052_fiscal_rule_delete_scope.sql +57 -0
- package/src/db/migrations/0053_rule_validity_lower_bound.sql +44 -0
- package/src/db/migrations/0054_tenant_profile_and_rule_source.sql +89 -0
- package/src/db/migrations/0055_job_capability_contract.sql +300 -0
- package/src/db/migrations/0056_fiscal_document_ingestion.sql +337 -0
- package/src/db/migrations/0057_fiscal_pending_event_inbox.sql +228 -0
- package/src/db/migrations/0058_fiscal_operational_engine.sql +516 -0
- package/src/db/migrations/0059_fiscal_contract_version.sql +59 -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,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Gestão de template no WhatsApp — adapter da Meta Cloud API.
|
|
4
|
+
*
|
|
5
|
+
* Implementa `TemplateManagementProvider`. Todo o vocabulário da Meta mora
|
|
6
|
+
* aqui: `components`, `BODY`, `example.body_text`, categorias em maiúsculas,
|
|
7
|
+
* `POST /{waba-id}/message_templates`. O domínio não conhece nenhum deles.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.createWhatsAppTemplateProvider = createWhatsAppTemplateProvider;
|
|
11
|
+
const graph_js_1 = require("../graph.js");
|
|
12
|
+
const whatsapp_language_js_1 = require("./whatsapp-language.js");
|
|
13
|
+
const TIMEOUT_MS = 20_000;
|
|
14
|
+
/** O domínio fala minúsculo; a Meta espera maiúsculo. A tradução mora aqui. */
|
|
15
|
+
const CATEGORY = {
|
|
16
|
+
utility: 'UTILITY',
|
|
17
|
+
marketing: 'MARKETING',
|
|
18
|
+
authentication: 'AUTHENTICATION',
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Classificação do erro da Meta.
|
|
22
|
+
*
|
|
23
|
+
* `duplicate_name` merece classe própria porque é o desfecho ESPERADO de uma
|
|
24
|
+
* resubmissão — quem chama trata como "já existe", relê e segue, em vez de
|
|
25
|
+
* tratar como falha e tentar de novo.
|
|
26
|
+
*/
|
|
27
|
+
function classify(status, code, subcode) {
|
|
28
|
+
if (code === 190 || code === 200 || code === 10 || code === 3)
|
|
29
|
+
return 'unauthorized';
|
|
30
|
+
// 2388023 / subcode 2388024: nome de template já em uso na conta.
|
|
31
|
+
if (code === 2388023 || subcode === 2388024)
|
|
32
|
+
return 'duplicate_name';
|
|
33
|
+
if (code === 4 || code === 80007 || status === 429)
|
|
34
|
+
return 'rate_limited';
|
|
35
|
+
if (status >= 500)
|
|
36
|
+
return 'network';
|
|
37
|
+
if (code === 100 || code === 132000)
|
|
38
|
+
return 'invalid_content';
|
|
39
|
+
return 'provider_error';
|
|
40
|
+
}
|
|
41
|
+
function createWhatsAppTemplateProvider(config) {
|
|
42
|
+
const doFetch = config.fetchImpl ?? fetch;
|
|
43
|
+
return {
|
|
44
|
+
channel: 'whatsapp',
|
|
45
|
+
async submit(submission) {
|
|
46
|
+
const body = {
|
|
47
|
+
name: submission.name,
|
|
48
|
+
language: (0, whatsapp_language_js_1.metaLanguageCode)(submission.language),
|
|
49
|
+
category: CATEGORY[submission.category],
|
|
50
|
+
components: [
|
|
51
|
+
{
|
|
52
|
+
type: 'BODY',
|
|
53
|
+
text: submission.bodyText,
|
|
54
|
+
// `body_text` é uma lista de listas: uma linha de exemplos por
|
|
55
|
+
// conjunto de variáveis do corpo. Omitido quando não há variável —
|
|
56
|
+
// um `example` vazio é recusado.
|
|
57
|
+
...(submission.bodyExample && submission.bodyExample.length > 0
|
|
58
|
+
? { example: { body_text: [submission.bodyExample] } }
|
|
59
|
+
: {}),
|
|
60
|
+
},
|
|
61
|
+
],
|
|
62
|
+
};
|
|
63
|
+
let res;
|
|
64
|
+
try {
|
|
65
|
+
res = await doFetch((0, graph_js_1.graphUrl)(`${encodeURIComponent(config.wabaId)}/message_templates`, config.env), {
|
|
66
|
+
method: 'POST',
|
|
67
|
+
headers: {
|
|
68
|
+
authorization: `Bearer ${config.accessToken}`,
|
|
69
|
+
'content-type': 'application/json',
|
|
70
|
+
},
|
|
71
|
+
body: JSON.stringify(body),
|
|
72
|
+
signal: AbortSignal.timeout(TIMEOUT_MS),
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
// Nada da exceção é propagado: em algumas implementações de `fetch` a
|
|
77
|
+
// mensagem inclui a URL, e a URL leva o token no header — mas o corpo
|
|
78
|
+
// do erro também pode ecoar cabeçalhos em proxies.
|
|
79
|
+
return { ok: false, reason: 'network' };
|
|
80
|
+
}
|
|
81
|
+
const payload = (await res.json().catch(() => null));
|
|
82
|
+
if (!res.ok) {
|
|
83
|
+
const err = (payload?.error ?? {});
|
|
84
|
+
return { ok: false, reason: classify(res.status, err.code, err.error_subcode) };
|
|
85
|
+
}
|
|
86
|
+
const id = payload?.id;
|
|
87
|
+
const status = payload?.status;
|
|
88
|
+
const category = payload?.category;
|
|
89
|
+
return {
|
|
90
|
+
ok: true,
|
|
91
|
+
...(typeof id === 'string' ? { providerRef: id } : {}),
|
|
92
|
+
// Sem `status` no corpo, o desfecho honesto é "submetido, revisão
|
|
93
|
+
// pendente" — e não inventar `APPROVED`.
|
|
94
|
+
status: typeof status === 'string' ? status : 'PENDING',
|
|
95
|
+
...(typeof category === 'string' ? { category } : {}),
|
|
96
|
+
};
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=whatsapp-templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whatsapp-templates.js","sourceRoot":"","sources":["../../../../src/communication/adapters/whatsapp-templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Adapter de WhatsApp — Meta Cloud API.
|
|
4
|
+
*
|
|
5
|
+
* O provider é escolha desta implementação, não do domínio: o consumidor pede
|
|
6
|
+
* `channel: 'whatsapp'` e nunca vê `wamid`, `phoneNumberId` nem código de erro
|
|
7
|
+
* da Meta. Trocar por Twilio ou Zenvia é escrever outro arquivo deste tamanho e
|
|
8
|
+
* registrar outro adapter — nenhuma linha de régua muda.
|
|
9
|
+
*
|
|
10
|
+
* **Trava de envio real.** Enquanto `liveSend` não for explicitamente ligado, o
|
|
11
|
+
* adapter recusa com `unavailable` ANTES de qualquer rede. A trava é do código,
|
|
12
|
+
* não do processo: uma frente que promete "não enviar mensagem real" e depende
|
|
13
|
+
* de ninguém chamar a função errada não prometeu nada.
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.createWhatsAppChannel = createWhatsAppChannel;
|
|
17
|
+
const graph_js_1 = require("../graph.js");
|
|
18
|
+
const whatsapp_language_js_1 = require("./whatsapp-language.js");
|
|
19
|
+
/**
|
|
20
|
+
* O que a Meta Cloud API garante, e o que este adapter exerce.
|
|
21
|
+
*
|
|
22
|
+
* **Sem idempotência de provider.** A referência da Cloud API não documenta
|
|
23
|
+
* cabeçalho de idempotência nem parâmetro equivalente; o `wamid` é identificador
|
|
24
|
+
* de mensagem devolvido DEPOIS do aceite, que é outra coisa — ele não impede a
|
|
25
|
+
* segunda chamada de virar a segunda mensagem.
|
|
26
|
+
*
|
|
27
|
+
* A consequência prática está no motor, não aqui: uma reserva de WhatsApp retomada
|
|
28
|
+
* de um titular que já tinha chamado a Meta **não é reenviada**. Ela para em
|
|
29
|
+
* `unknown_outcome`, visível para quem opera. Inventar uma chave que a Meta não lê
|
|
30
|
+
* daria a aparência da proteção sem nada por trás — que é pior que não ter.
|
|
31
|
+
*
|
|
32
|
+
* `supportsDeliveryWebhook` é `true` porque a rota de callback da Meta existe e é
|
|
33
|
+
* exercida (`routes/communication-webhooks.ts`); `supportsReadReceipt` também,
|
|
34
|
+
* porque `read` é um dos status que ela trata.
|
|
35
|
+
*/
|
|
36
|
+
const META_CLOUD_CAPABILITIES = {
|
|
37
|
+
supportsProviderIdempotency: false,
|
|
38
|
+
supportsMessageLookup: false,
|
|
39
|
+
supportsDeliveryWebhook: true,
|
|
40
|
+
supportsReadReceipt: true,
|
|
41
|
+
};
|
|
42
|
+
/*
|
|
43
|
+
* A versão da Graph API mora em `../graph.ts`, e não aqui.
|
|
44
|
+
*
|
|
45
|
+
* Este arquivo declarava `v21.0` — de 2024-10, no fim da janela de dois anos em
|
|
46
|
+
* que a Meta mantém uma versão viva. Duas versões no mesmo runtime não falham
|
|
47
|
+
* quando divergem: falham quando a mais velha é desativada, e o sintoma é meio
|
|
48
|
+
* canal parado enquanto o resto funciona.
|
|
49
|
+
*/
|
|
50
|
+
const TIMEOUT_MS = 10_000;
|
|
51
|
+
/**
|
|
52
|
+
* Classificação dos códigos de erro da Meta.
|
|
53
|
+
*
|
|
54
|
+
* A distinção que mais importa não é temporário × permanente — é **problema do
|
|
55
|
+
* destinatário × problema nosso**. Um token expirado (190) devolvido como
|
|
56
|
+
* `permanent` marcaria o CLIENTE como contato inválido e o tiraria da régua para
|
|
57
|
+
* sempre, quando o defeito é uma credencial nossa que alguém precisa renovar.
|
|
58
|
+
* Por isso erro de configuração vira `unavailable`: não gasta tentativa, não
|
|
59
|
+
* acusa o cliente, e aparece na tela como pendência do escritório.
|
|
60
|
+
*/
|
|
61
|
+
function classify(code, subcode) {
|
|
62
|
+
// Credencial/permissão/configuração — nosso problema, não do destinatário.
|
|
63
|
+
if (code === 190 || code === 200 || code === 10 || code === 3)
|
|
64
|
+
return 'unavailable';
|
|
65
|
+
if (code === 100 && subcode === 33)
|
|
66
|
+
return 'unavailable';
|
|
67
|
+
// Limites de taxa — sempre vale tentar de novo.
|
|
68
|
+
if (code === 4 || code === 80007 || code === 130429 || code === 131048 || code === 131056) {
|
|
69
|
+
return 'temporary';
|
|
70
|
+
}
|
|
71
|
+
// Falhas internas da plataforma.
|
|
72
|
+
if (code === 1 || code === 2 || code === 131000)
|
|
73
|
+
return 'temporary';
|
|
74
|
+
// Destinatário: não tem WhatsApp, número inexistente, recusa de entrega.
|
|
75
|
+
if (code === 131026 || code === 131052 || code === 133010)
|
|
76
|
+
return 'permanent';
|
|
77
|
+
// Fora da janela de sessão sem template válido, e problemas de template.
|
|
78
|
+
if (code === 131047 || (code >= 132000 && code <= 132015))
|
|
79
|
+
return 'permanent';
|
|
80
|
+
// Parâmetro inválido é defeito de integração; retry repetiria o mesmo erro.
|
|
81
|
+
if (code === 100)
|
|
82
|
+
return 'permanent';
|
|
83
|
+
// Código desconhecido: `temporary`. Um erro novo da Meta tratado como
|
|
84
|
+
// permanente removeria o cliente da régua em definitivo por algo que ninguém
|
|
85
|
+
// ainda entendeu — o dano de tentar de novo é muito menor.
|
|
86
|
+
return 'temporary';
|
|
87
|
+
}
|
|
88
|
+
function createWhatsAppChannel(config) {
|
|
89
|
+
const doFetch = config.fetchImpl ?? fetch;
|
|
90
|
+
return {
|
|
91
|
+
key: 'whatsapp',
|
|
92
|
+
providerName: 'meta_cloud',
|
|
93
|
+
capabilities: META_CLOUD_CAPABILITIES,
|
|
94
|
+
isConfigured(_ctx) {
|
|
95
|
+
return (config.account.status === 'active' &&
|
|
96
|
+
Boolean(config.account.meta?.phoneNumberId) &&
|
|
97
|
+
Boolean(config.account.senderId));
|
|
98
|
+
},
|
|
99
|
+
async send(message) {
|
|
100
|
+
if (!config.liveSend) {
|
|
101
|
+
return {
|
|
102
|
+
kind: 'unavailable',
|
|
103
|
+
code: 'live_send_disabled',
|
|
104
|
+
detail: 'envio real de WhatsApp não autorizado neste ambiente',
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
const phoneNumberId = config.account.meta?.phoneNumberId;
|
|
108
|
+
if (!phoneNumberId) {
|
|
109
|
+
return {
|
|
110
|
+
kind: 'unavailable',
|
|
111
|
+
code: 'no_phone_number_id',
|
|
112
|
+
detail: 'conta sem phoneNumberId',
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
const token = await config.resolveCredential(config.account.credentialRef);
|
|
116
|
+
if (!token) {
|
|
117
|
+
return { kind: 'unavailable', code: 'no_credential', detail: 'credencial ausente' };
|
|
118
|
+
}
|
|
119
|
+
const body = buildBody(message);
|
|
120
|
+
if (!body) {
|
|
121
|
+
return {
|
|
122
|
+
kind: 'permanent',
|
|
123
|
+
code: 'content_mismatch',
|
|
124
|
+
detail: 'conteúdo inválido para WhatsApp',
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
let res;
|
|
128
|
+
try {
|
|
129
|
+
res = await doFetch((0, graph_js_1.graphUrl)(`${encodeURIComponent(phoneNumberId)}/messages`), {
|
|
130
|
+
method: 'POST',
|
|
131
|
+
headers: {
|
|
132
|
+
authorization: `Bearer ${token}`,
|
|
133
|
+
'content-type': 'application/json',
|
|
134
|
+
},
|
|
135
|
+
body: JSON.stringify(body),
|
|
136
|
+
signal: AbortSignal.timeout(TIMEOUT_MS),
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
// Timeout e falha de rede nunca carregam a causa real do lado do
|
|
141
|
+
// provider — e a mensagem da exceção pode conter a URL com credencial
|
|
142
|
+
// embutida em algumas implementações. Não propaga nada dela.
|
|
143
|
+
return { kind: 'temporary', code: 'network', detail: 'falha de rede ao chamar o provider' };
|
|
144
|
+
}
|
|
145
|
+
if (res.ok) {
|
|
146
|
+
const payload = (await res.json().catch(() => null));
|
|
147
|
+
const providerRef = payload?.messages?.[0]?.id;
|
|
148
|
+
// `sent` = a Meta aceitou. NÃO é entrega: quem afirma entrega é o
|
|
149
|
+
// webhook, depois. Ver `status.ts`.
|
|
150
|
+
return { kind: 'sent', providerRef };
|
|
151
|
+
}
|
|
152
|
+
const err = (await res
|
|
153
|
+
.json()
|
|
154
|
+
.then((b) => typeof b === 'object' && b !== null && 'error' in b
|
|
155
|
+
? (b.error ?? {})
|
|
156
|
+
: {})
|
|
157
|
+
.catch(() => ({})));
|
|
158
|
+
const code = err.code ?? res.status;
|
|
159
|
+
const kind = res.status >= 500 ? 'temporary' : classify(code, err.error_subcode);
|
|
160
|
+
return {
|
|
161
|
+
kind,
|
|
162
|
+
code: `meta_${code}`,
|
|
163
|
+
// Só a mensagem do provider, truncada. Nunca o corpo enviado (carrega as
|
|
164
|
+
// variáveis do template, que são PII) e nunca os headers.
|
|
165
|
+
detail: (err.message ?? `HTTP ${res.status}`).slice(0, 200),
|
|
166
|
+
};
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
function buildBody(message) {
|
|
171
|
+
const to = message.to.replace(/^\+/, '');
|
|
172
|
+
if (message.content.kind === 'whatsapp_template') {
|
|
173
|
+
const { templateName, language, variables } = message.content;
|
|
174
|
+
return {
|
|
175
|
+
messaging_product: 'whatsapp',
|
|
176
|
+
recipient_type: 'individual',
|
|
177
|
+
to,
|
|
178
|
+
type: 'template',
|
|
179
|
+
template: {
|
|
180
|
+
name: templateName,
|
|
181
|
+
// A Meta escreve `pt_BR`; o domínio, `pt-BR`. A tradução é do adapter.
|
|
182
|
+
language: { code: (0, whatsapp_language_js_1.metaLanguageCode)(language) },
|
|
183
|
+
// `components` só entra quando há variável: um template sem parâmetro
|
|
184
|
+
// recebendo `parameters: []` é recusado pela Meta.
|
|
185
|
+
...(variables.length > 0
|
|
186
|
+
? {
|
|
187
|
+
components: [
|
|
188
|
+
{
|
|
189
|
+
type: 'body',
|
|
190
|
+
parameters: variables.map((text) => ({ type: 'text', text })),
|
|
191
|
+
},
|
|
192
|
+
],
|
|
193
|
+
}
|
|
194
|
+
: {}),
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
if (message.content.kind === 'text') {
|
|
199
|
+
// Texto livre só é aceito DENTRO da janela de 24h aberta pelo cliente. O
|
|
200
|
+
// motor não tem como saber se a janela está aberta — e por isso este caminho
|
|
201
|
+
// existe para resposta a conversa iniciada pelo cliente, nunca para
|
|
202
|
+
// cobrança ativa, que é sempre template.
|
|
203
|
+
return {
|
|
204
|
+
messaging_product: 'whatsapp',
|
|
205
|
+
recipient_type: 'individual',
|
|
206
|
+
to,
|
|
207
|
+
type: 'text',
|
|
208
|
+
text: { preview_url: false, body: message.content.body },
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=whatsapp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whatsapp.js","sourceRoot":"","sources":["../../../../src/communication/adapters/whatsapp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Trilha de comunicação — o que o motor decidiu, e por quê.
|
|
4
|
+
*
|
|
5
|
+
* **Não é log.** Log é texto que alguém talvez leia; isto é registro estruturado
|
|
6
|
+
* e consultável, com um vocabulário fechado de eventos. A diferença aparece na
|
|
7
|
+
* pergunta que o escritório faz de verdade: "por que este cliente não recebeu?".
|
|
8
|
+
* Um `console.warn` responde isso para quem estiver com o terminal aberto no
|
|
9
|
+
* instante certo; uma trilha responde seis meses depois.
|
|
10
|
+
*
|
|
11
|
+
* A trilha financeira (`dunning_event`) continua sendo o estado da ETAPA da
|
|
12
|
+
* régua. Esta é o histórico da INTENÇÃO de comunicar — que é outra coisa: uma
|
|
13
|
+
* etapa pode ter uma intenção recusada por consentimento, outra por telefone
|
|
14
|
+
* inválido e uma terceira entregue, e `dunning_event` só guarda o desfecho final
|
|
15
|
+
* de uma delas.
|
|
16
|
+
*
|
|
17
|
+
* O que NUNCA entra aqui: valor de credencial, corpo de mensagem, telefone,
|
|
18
|
+
* e-mail. O destinatário aparece como referência lógica (`recipientRef`), que já
|
|
19
|
+
* é o vocabulário do consumidor.
|
|
20
|
+
*/
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.createNullAuditSink = createNullAuditSink;
|
|
23
|
+
exports.createRecordingAuditSink = createRecordingAuditSink;
|
|
24
|
+
exports.eventKindForSkip = eventKindForSkip;
|
|
25
|
+
/**
|
|
26
|
+
* Sink que não grava nada.
|
|
27
|
+
*
|
|
28
|
+
* Existe para consumidores que ainda não têm armazenamento, e é EXPLÍCITO de
|
|
29
|
+
* propósito: um sink opcional viraria `deps.audit?.record(...)` espalhado pelo
|
|
30
|
+
* motor, e a diferença entre "não configurou trilha" e "esqueceu de chamar"
|
|
31
|
+
* deixaria de ser visível.
|
|
32
|
+
*/
|
|
33
|
+
function createNullAuditSink() {
|
|
34
|
+
return { async record() { } };
|
|
35
|
+
}
|
|
36
|
+
/** Coleta em memória — para teste e para o relatório de dry-run. */
|
|
37
|
+
function createRecordingAuditSink() {
|
|
38
|
+
const events = [];
|
|
39
|
+
return {
|
|
40
|
+
events,
|
|
41
|
+
async record(event) {
|
|
42
|
+
events.push(event);
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* De qual evento de trilha um pulo é.
|
|
48
|
+
*
|
|
49
|
+
* Três motivos ganham nome próprio porque exigem ações operacionais opostas:
|
|
50
|
+
* opt-out é decisão do cliente (e ninguém no escritório deve "resolver"), falta
|
|
51
|
+
* de contato é cadastro, e o resto é ambiente. Colapsá-los em `dispatch_skipped`
|
|
52
|
+
* mandaria o escritório procurar no lugar errado nos dois primeiros casos.
|
|
53
|
+
*/
|
|
54
|
+
function eventKindForSkip(reason) {
|
|
55
|
+
if (reason === 'opted_out')
|
|
56
|
+
return 'consent_blocked';
|
|
57
|
+
if (reason === 'no_recipient' || reason === 'invalid_recipient')
|
|
58
|
+
return 'invalid_contact';
|
|
59
|
+
return 'dispatch_skipped';
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/communication/audit.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;AA6EH,kDAEC;AAGD,4DAUC;AAUD,4CAIC;AArCD;;;;;;;GAOG;AACH,SAAgB,mBAAmB;IACjC,OAAO,EAAE,KAAK,CAAC,MAAM,KAAmB,CAAC,EAAE,CAAC;AAC9C,CAAC;AAED,oEAAoE;AACpE,SAAgB,wBAAwB;IAGtC,MAAM,MAAM,GAAyB,EAAE,CAAC;IACxC,OAAO;QACL,MAAM;QACN,KAAK,CAAC,MAAM,CAAC,KAAyB;YACpC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,gBAAgB,CAAC,MAAkB;IACjD,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO,iBAAiB,CAAC;IACrD,IAAI,MAAM,KAAK,cAAc,IAAI,MAAM,KAAK,mBAAmB;QAAE,OAAO,iBAAiB,CAAC;IAC1F,OAAO,kBAAkB,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* O que o PROVIDER por trás de um canal garante — declarado pelo adapter.
|
|
4
|
+
*
|
|
5
|
+
* Existe para que o motor possa tomar uma decisão que depende do provider sem
|
|
6
|
+
* nunca saber qual provider é. A alternativa é a que o certificador proibiu
|
|
7
|
+
* explicitamente:
|
|
8
|
+
*
|
|
9
|
+
* if (provider === 'resend') { ...reenvia... } else { ...não reenvia... }
|
|
10
|
+
*
|
|
11
|
+
* Espalhado pelo núcleo, esse `if` transforma "trocar de provider" em mudança de
|
|
12
|
+
* regra de negócio, e faz o motor compartilhado carregar o catálogo de fornecedor
|
|
13
|
+
* de cada produto. Aqui o adapter DECLARA a garantia e o motor lê a declaração.
|
|
14
|
+
*
|
|
15
|
+
* **Toda capability nasce `false`.** O default não é conservadorismo estético: um
|
|
16
|
+
* campo opcional que o adapter esquece de declarar viraria uma garantia
|
|
17
|
+
* imaginária, e a consequência de imaginar idempotência que não existe é o
|
|
18
|
+
* cliente recebendo a mesma cobrança duas vezes. Quem tem a garantia declara; o
|
|
19
|
+
* silêncio significa ausência.
|
|
20
|
+
*
|
|
21
|
+
* **A declaração descreve o que ESTE ADAPTER exerce, não o que o provider anuncia
|
|
22
|
+
* no site.** O Resend publica webhooks de entrega; o adapter de e-mail daqui não
|
|
23
|
+
* consome nenhum, então `supportsDeliveryWebhook` é `false` para ele. Declarar a
|
|
24
|
+
* capacidade do fornecedor em vez da capacidade do código seria documentar uma
|
|
25
|
+
* integração que não existe — que é o defeito `DOCUMENTATION_MATCHES_RUNTIME`.
|
|
26
|
+
*/
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
exports.RESEND_IDEMPOTENCY_WINDOW_MS = exports.NO_PROVIDER_GUARANTEES = void 0;
|
|
29
|
+
exports.providerIdempotencyCovers = providerIdempotencyCovers;
|
|
30
|
+
/**
|
|
31
|
+
* Nenhuma garantia externa. É o que vale para todo canal que não declare o
|
|
32
|
+
* contrário — e é o que faz um adapter novo nascer seguro em vez de nascer
|
|
33
|
+
* otimista.
|
|
34
|
+
*/
|
|
35
|
+
exports.NO_PROVIDER_GUARANTEES = {
|
|
36
|
+
supportsProviderIdempotency: false,
|
|
37
|
+
supportsMessageLookup: false,
|
|
38
|
+
supportsDeliveryWebhook: false,
|
|
39
|
+
supportsReadReceipt: false,
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Reenviar com a MESMA chave é seguro agora?
|
|
43
|
+
*
|
|
44
|
+
* Chamado quando o desfecho da tentativa anterior é desconhecido — o titular da
|
|
45
|
+
* reserva chamou o provider e morreu antes de assentar. A pergunta não é "o
|
|
46
|
+
* provider tem idempotência", é "a chave que eu usei ainda está viva lá".
|
|
47
|
+
*
|
|
48
|
+
* Fora da janela, a chave já não significa nada para o provider: a segunda
|
|
49
|
+
* chamada seria uma mensagem nova, e o cliente receberia duas. Por isso a
|
|
50
|
+
* expiração devolve `false` — e o motor, sem cobertura, não reenvia.
|
|
51
|
+
*
|
|
52
|
+
* **Recebe IDADE, não instante.** A diferença não é estética: o instante da
|
|
53
|
+
* primeira chamada é medido pelo relógio de quem guardou o dado (o `now()` do
|
|
54
|
+
* banco), e compará-lo com o `Date.now()` do processo mistura dois relógios que
|
|
55
|
+
* não têm obrigação de concordar. Numa deriva de poucos segundos isso passa
|
|
56
|
+
* despercebido; num processo com relógio adiantado, "dentro da janela" vira
|
|
57
|
+
* "fora" e o motor deixa de reenviar o que podia — ou o contrário. Quem guarda o
|
|
58
|
+
* dado calcula a idade, e a comparação acontece numa escala só.
|
|
59
|
+
*
|
|
60
|
+
* `ageMs` ausente significa que nenhuma chamada externa foi registrada, e aí não
|
|
61
|
+
* há o que cobrir: quem pergunta nesse estado está perguntando a coisa errada,
|
|
62
|
+
* então a resposta é `false`.
|
|
63
|
+
*/
|
|
64
|
+
function providerIdempotencyCovers(capabilities, ageMs) {
|
|
65
|
+
if (!capabilities.supportsProviderIdempotency)
|
|
66
|
+
return false;
|
|
67
|
+
const window = capabilities.providerIdempotencyWindowMs;
|
|
68
|
+
if (!window || window <= 0)
|
|
69
|
+
return false;
|
|
70
|
+
if (ageMs === null || ageMs < 0)
|
|
71
|
+
return false;
|
|
72
|
+
return ageMs < window;
|
|
73
|
+
}
|
|
74
|
+
/** Janela de idempotência do Resend: 24 horas. Ver `adapters/email.ts`. */
|
|
75
|
+
exports.RESEND_IDEMPOTENCY_WINDOW_MS = 24 * 60 * 60 * 1000;
|
|
76
|
+
//# sourceMappingURL=capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/communication/capabilities.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;;;AAoEH,8DASC;AA5CD;;;;GAIG;AACU,QAAA,sBAAsB,GAAwB;IACzD,2BAA2B,EAAE,KAAK;IAClC,qBAAqB,EAAE,KAAK;IAC5B,uBAAuB,EAAE,KAAK;IAC9B,mBAAmB,EAAE,KAAK;CAC3B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAgB,yBAAyB,CACvC,YAAiC,EACjC,KAAoB;IAEpB,IAAI,CAAC,YAAY,CAAC,2BAA2B;QAAE,OAAO,KAAK,CAAC;IAC5D,MAAM,MAAM,GAAG,YAAY,CAAC,2BAA2B,CAAC;IACxD,IAAI,CAAC,MAAM,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,OAAO,KAAK,GAAG,MAAM,CAAC;AACxB,CAAC;AAED,2EAA2E;AAC9D,QAAA,4BAA4B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Contrato canônico de canal do ecossistema — e-mail, WhatsApp, SMS e
|
|
4
|
+
* notificação interna sob a mesma interface.
|
|
5
|
+
*
|
|
6
|
+
* O ponto de desenho está no CONTEÚDO, não na interface. A abstração de canal
|
|
7
|
+
* que já existia na cobrança da SC (`collection/channel.ts`) carregava
|
|
8
|
+
* `subject` + `html` obrigatórios: um payload de e-mail com nome genérico. Um
|
|
9
|
+
* adapter de WhatsApp receberia HTML renderizado e teria de desmontá-lo de
|
|
10
|
+
* volta em texto, e um de SMS idem — o canal vazando para dentro do domínio
|
|
11
|
+
* pela porta do payload.
|
|
12
|
+
*
|
|
13
|
+
* Aqui o conteúdo é uma união discriminada, resolvida DEPOIS que o canal foi
|
|
14
|
+
* escolhido. Cada canal recebe o que sabe entregar, e o compilador recusa o
|
|
15
|
+
* resto.
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.CHANNEL_ACCEPTS = exports.CHANNEL_KEYS = void 0;
|
|
19
|
+
exports.channelAccepts = channelAccepts;
|
|
20
|
+
exports.unavailableChannel = unavailableChannel;
|
|
21
|
+
exports.resolveChannel = resolveChannel;
|
|
22
|
+
const capabilities_js_1 = require("./capabilities.js");
|
|
23
|
+
exports.CHANNEL_KEYS = ['email', 'whatsapp', 'sms', 'notification'];
|
|
24
|
+
/** Quais conteúdos cada canal aceita. Consultado antes do envio, não dentro do adapter. */
|
|
25
|
+
exports.CHANNEL_ACCEPTS = {
|
|
26
|
+
email: ['email'],
|
|
27
|
+
whatsapp: ['whatsapp_template', 'text'],
|
|
28
|
+
sms: ['text'],
|
|
29
|
+
notification: ['text'],
|
|
30
|
+
};
|
|
31
|
+
function channelAccepts(channel, content) {
|
|
32
|
+
return exports.CHANNEL_ACCEPTS[channel].includes(content.kind);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Canal indisponível.
|
|
36
|
+
*
|
|
37
|
+
* Deliberadamente NÃO simula entrega. Um adapter que responde `sent` sem enviar
|
|
38
|
+
* transforma a trilha em ficção: o escritório vê "cobrado" e o cliente nunca
|
|
39
|
+
* recebeu nada. Herdado da abstração da SC, que já acertou isso.
|
|
40
|
+
*/
|
|
41
|
+
function unavailableChannel(key, reason) {
|
|
42
|
+
return {
|
|
43
|
+
key,
|
|
44
|
+
providerName: 'none',
|
|
45
|
+
capabilities: capabilities_js_1.NO_PROVIDER_GUARANTEES,
|
|
46
|
+
isConfigured: () => false,
|
|
47
|
+
send: async () => ({ kind: 'unavailable', code: 'channel_not_configured', detail: reason }),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function resolveChannel(registry, key) {
|
|
51
|
+
return registry[key] ?? unavailableChannel(key, `canal ${key} não registrado`);
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=channel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../../../src/communication/channel.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAsCH,wCAEC;AA0ED,gDAQC;AAID,wCAEC;AA7HD,uDAA2D;AAK9C,QAAA,YAAY,GAA0B,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;AAsBhG,2FAA2F;AAC9E,QAAA,eAAe,GAA0D;IACpF,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,QAAQ,EAAE,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACvC,GAAG,EAAE,CAAC,MAAM,CAAC;IACb,YAAY,EAAE,CAAC,MAAM,CAAC;CACvB,CAAC;AAEF,SAAgB,cAAc,CAAC,OAAmB,EAAE,OAAuB;IACzE,OAAO,uBAAe,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzD,CAAC;AAmED;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAAC,GAAe,EAAE,MAAc;IAChE,OAAO;QACL,GAAG;QACH,YAAY,EAAE,MAAM;QACpB,YAAY,EAAE,wCAAsB;QACpC,YAAY,EAAE,GAAG,EAAE,CAAC,KAAK;QACzB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;KAC5F,CAAC;AACJ,CAAC;AAID,SAAgB,cAAc,CAAC,QAAyB,EAAE,GAAe;IACvE,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,GAAG,EAAE,SAAS,GAAG,iBAAiB,CAAC,CAAC;AACjF,CAAC"}
|