@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,23 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
/**
|
|
3
|
+
* Separador de campos: `US` (unit separator, `0x1F`).
|
|
4
|
+
*
|
|
5
|
+
* Escolhido por não ser digitável — com `:` ou `|`, um `subjectRef` que contenha
|
|
6
|
+
* o separador consegue forjar a chave de outro evento, e isso é colisão por
|
|
7
|
+
* construção, não por azar. Um id vindo de outro sistema pode conter qualquer
|
|
8
|
+
* pontuação; nenhum contém um caractere de controle.
|
|
9
|
+
*/
|
|
10
|
+
const SEP = '\u001f';
|
|
11
|
+
export function buildIdempotencyKey(input) {
|
|
12
|
+
const parts = [
|
|
13
|
+
input.ctx.tenantId,
|
|
14
|
+
input.ctx.product,
|
|
15
|
+
input.ctx.brand,
|
|
16
|
+
input.channel,
|
|
17
|
+
input.eventType,
|
|
18
|
+
input.subjectRef,
|
|
19
|
+
input.templateVersion ?? 'v0',
|
|
20
|
+
];
|
|
21
|
+
return createHash('sha256').update(parts.join(SEP)).digest('hex');
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=idempotency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idempotency.js","sourceRoot":"","sources":["../../src/communication/idempotency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAkCzC;;;;;;;GAOG;AACH,MAAM,GAAG,GAAG,QAAQ,CAAC;AAErB,MAAM,UAAU,mBAAmB,CAAC,KAAuB;IACzD,MAAM,KAAK,GAAG;QACZ,KAAK,CAAC,GAAG,CAAC,QAAQ;QAClB,KAAK,CAAC,GAAG,CAAC,OAAO;QACjB,KAAK,CAAC,GAAG,CAAC,KAAK;QACf,KAAK,CAAC,OAAO;QACb,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,UAAU;QAChB,KAAK,CAAC,eAAe,IAAI,IAAI;KAC9B,CAAC;IACF,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Identidade de envio — de quem é o número, a conta e o remetente.
|
|
3
|
+
*
|
|
4
|
+
* **O motor é compartilhado. A identidade de envio não é.**
|
|
5
|
+
*
|
|
6
|
+
* Este é o módulo que carrega a regra mais dura do adendo, e ele existe separado
|
|
7
|
+
* do adapter de propósito: se cada adapter resolvesse a própria credencial,
|
|
8
|
+
* "usar a chave central quando o tenant não tem a dele" seria uma linha
|
|
9
|
+
* conveniente dentro de um `??`, escrita por alguém com pressa, num arquivo que
|
|
10
|
+
* ninguém revisa duas vezes. Foi exatamente assim que aconteceu no Manga Verde
|
|
11
|
+
* (`email-channel.provider.ts`, "SaaS hotfix"): o tenant sem chave própria envia
|
|
12
|
+
* com a chave da plataforma.
|
|
13
|
+
*
|
|
14
|
+
* Em e-mail o custo disso é reputação de domínio compartilhada. Em WhatsApp o
|
|
15
|
+
* custo é a WABA de uma marca respondendo pelo comportamento de outra — com
|
|
16
|
+
* bloqueio que se propaga para todos os tenants do número.
|
|
17
|
+
*
|
|
18
|
+
* Aqui não há fallback. Conta ausente resolve para ausente.
|
|
19
|
+
*/
|
|
20
|
+
import type { ChannelKey } from './channel.js';
|
|
21
|
+
import type { CommunicationContext } from './context.js';
|
|
22
|
+
/**
|
|
23
|
+
* Uma conta de canal de UM tenant, em UM produto.
|
|
24
|
+
*
|
|
25
|
+
* Modelada sobre o que o Manga Verde já provou em banco
|
|
26
|
+
* (`communication_channel_accounts`: modo de conexão, ciclo de vida, segredo
|
|
27
|
+
* cifrado por conta) — o desenho é reaproveitado, a implementação não.
|
|
28
|
+
*/
|
|
29
|
+
export interface ChannelAccount {
|
|
30
|
+
channel: ChannelKey;
|
|
31
|
+
/** Dono. Comparado em `assertOwnership` — é o que faz o isolamento ser verificável. */
|
|
32
|
+
tenantId: string;
|
|
33
|
+
product: string;
|
|
34
|
+
brand: string;
|
|
35
|
+
/**
|
|
36
|
+
* Identidade visível ao destinatário: endereço de e-mail, número em E.164,
|
|
37
|
+
* nome do remetente. Não é segredo — aparece na tela e na trilha.
|
|
38
|
+
*/
|
|
39
|
+
senderId: string;
|
|
40
|
+
/** Nome de exibição, quando o canal suporta. WhatsApp/SMS não suportam. */
|
|
41
|
+
displayName?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Referência LÓGICA da credencial no cofre — o nome, jamais o valor.
|
|
44
|
+
*
|
|
45
|
+
* O motor nunca vê o segredo: ele passa a referência ao resolvedor de
|
|
46
|
+
* credencial na borda do adapter. Um segredo que não entra no domínio não
|
|
47
|
+
* vaza em log, em erro, em serialização de teste ou em screenshot.
|
|
48
|
+
*/
|
|
49
|
+
credentialRef: string;
|
|
50
|
+
/**
|
|
51
|
+
* Só `active` envia. `pending_validation` existe porque uma conta de WhatsApp
|
|
52
|
+
* cadastrada e não verificada parece pronta na tela e é recusada pelo provider
|
|
53
|
+
* — e o operador merece ver a diferença antes da primeira cobrança, não
|
|
54
|
+
* depois.
|
|
55
|
+
*/
|
|
56
|
+
status: 'not_configured' | 'pending_validation' | 'active' | 'paused' | 'error';
|
|
57
|
+
/** Metadado por canal, sem segredo (ex.: `phoneNumberId`, `wabaId`). */
|
|
58
|
+
meta?: Record<string, string>;
|
|
59
|
+
}
|
|
60
|
+
export type IdentityRejection =
|
|
61
|
+
/** Nenhuma conta cadastrada para este contexto e canal. */
|
|
62
|
+
'no_account'
|
|
63
|
+
/** Existe, mas não está ativa. */
|
|
64
|
+
| 'not_active'
|
|
65
|
+
/** Existe e pertence a OUTRO tenant/produto/marca — nunca deve ser usada. */
|
|
66
|
+
| 'foreign_account';
|
|
67
|
+
export type IdentityResolution = {
|
|
68
|
+
ok: true;
|
|
69
|
+
account: ChannelAccount;
|
|
70
|
+
} | {
|
|
71
|
+
ok: false;
|
|
72
|
+
reason: IdentityRejection;
|
|
73
|
+
detail: string;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Fonte de contas. Implementada pelo produto (banco, config), nunca pelo motor —
|
|
77
|
+
* o motor não sabe onde as contas do consumidor moram.
|
|
78
|
+
*/
|
|
79
|
+
export interface ChannelAccountStore {
|
|
80
|
+
find(ctx: CommunicationContext, channel: ChannelKey): Promise<ChannelAccount | null>;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Roteia a busca de conta por CANAL, entre stores distintos.
|
|
84
|
+
*
|
|
85
|
+
* ## Por que isto existe
|
|
86
|
+
*
|
|
87
|
+
* Os canais não guardam a conta no mesmo lugar, e não é acidente: o telefone
|
|
88
|
+
* tem registro canônico próprio (`channel_binding`, migração 0041), criado pelo
|
|
89
|
+
* onboarding e com chave global de roteamento; o e-mail vive na configuração do
|
|
90
|
+
* tenant e admite remetente de plataforma.
|
|
91
|
+
*
|
|
92
|
+
* Antes disto, o consumidor passava UM store para todos os canais — e o canal
|
|
93
|
+
* criado pelo onboarding ficava invisível para quem despacha: a tela dizia
|
|
94
|
+
* "ativo" e o motor teria respondido `no_account`. Um `??` entre os dois stores
|
|
95
|
+
* resolveria o sintoma e esconderia a política; a precedência por canal é
|
|
96
|
+
* decisão de arquitetura e precisa ficar legível em quem compõe.
|
|
97
|
+
*
|
|
98
|
+
* ## Mecanismo, não política
|
|
99
|
+
*
|
|
100
|
+
* Este módulo não sabe QUAL store serve QUAL canal — quem sabe é o produto, e a
|
|
101
|
+
* decisão aparece no mapa que ele monta.
|
|
102
|
+
*
|
|
103
|
+
* **Canal sem rota resolve para ausente, e nunca cai em outro store.** Herdar a
|
|
104
|
+
* rota de um canal vizinho faria um canal novo nascer usando a conta de e-mail
|
|
105
|
+
* do escritório — configurado por acidente, com a identidade errada. Um canal
|
|
106
|
+
* que ninguém roteou entra fechado.
|
|
107
|
+
*/
|
|
108
|
+
export declare function routeAccountsByChannel(routes: Partial<Record<ChannelKey, ChannelAccountStore>>): ChannelAccountStore;
|
|
109
|
+
/**
|
|
110
|
+
* A conta pertence mesmo a este contexto?
|
|
111
|
+
*
|
|
112
|
+
* Checagem redundante por desenho. O `store` do produto já deveria filtrar por
|
|
113
|
+
* tenant — mas "deveria" é a palavra que precede todo vazamento cross-tenant, e
|
|
114
|
+
* um store com um `WHERE` esquecido devolveria a conta do vizinho sem que nada
|
|
115
|
+
* reclamasse. Esta função é a segunda tranca, e é a que os testes de isolamento
|
|
116
|
+
* exercitam diretamente.
|
|
117
|
+
*/
|
|
118
|
+
export declare function assertOwnership(ctx: CommunicationContext, account: ChannelAccount): boolean;
|
|
119
|
+
/**
|
|
120
|
+
* Resolve a identidade de envio para um contexto e canal.
|
|
121
|
+
*
|
|
122
|
+
* Não há caminho neste código que devolva uma conta de outro contexto, nem uma
|
|
123
|
+
* conta "da plataforma". Ausência resolve para ausência, e quem chama trata
|
|
124
|
+
* ausência como canal indisponível — nunca como permissão para improvisar.
|
|
125
|
+
*/
|
|
126
|
+
export declare function resolveIdentity(store: ChannelAccountStore, ctx: CommunicationContext, channel: ChannelKey): Promise<IdentityResolution>;
|
|
127
|
+
//# sourceMappingURL=identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/communication/identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,UAAU,CAAC;IACpB,uFAAuF;IACvF,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,MAAM,EAAE,gBAAgB,GAAG,oBAAoB,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IAChF,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,MAAM,iBAAiB;AAC3B,2DAA2D;AACzD,YAAY;AACd,kCAAkC;GAChC,YAAY;AACd,6EAA6E;GAC3E,iBAAiB,CAAC;AAEtB,MAAM,MAAM,kBAAkB,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnG;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,GAAG,EAAE,oBAAoB,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CACtF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC,GACvD,mBAAmB,CAQrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,oBAAoB,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAM3F;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,mBAAmB,EAC1B,GAAG,EAAE,oBAAoB,EACzB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,kBAAkB,CAAC,CA+B7B"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Identidade de envio — de quem é o número, a conta e o remetente.
|
|
3
|
+
*
|
|
4
|
+
* **O motor é compartilhado. A identidade de envio não é.**
|
|
5
|
+
*
|
|
6
|
+
* Este é o módulo que carrega a regra mais dura do adendo, e ele existe separado
|
|
7
|
+
* do adapter de propósito: se cada adapter resolvesse a própria credencial,
|
|
8
|
+
* "usar a chave central quando o tenant não tem a dele" seria uma linha
|
|
9
|
+
* conveniente dentro de um `??`, escrita por alguém com pressa, num arquivo que
|
|
10
|
+
* ninguém revisa duas vezes. Foi exatamente assim que aconteceu no Manga Verde
|
|
11
|
+
* (`email-channel.provider.ts`, "SaaS hotfix"): o tenant sem chave própria envia
|
|
12
|
+
* com a chave da plataforma.
|
|
13
|
+
*
|
|
14
|
+
* Em e-mail o custo disso é reputação de domínio compartilhada. Em WhatsApp o
|
|
15
|
+
* custo é a WABA de uma marca respondendo pelo comportamento de outra — com
|
|
16
|
+
* bloqueio que se propaga para todos os tenants do número.
|
|
17
|
+
*
|
|
18
|
+
* Aqui não há fallback. Conta ausente resolve para ausente.
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Roteia a busca de conta por CANAL, entre stores distintos.
|
|
22
|
+
*
|
|
23
|
+
* ## Por que isto existe
|
|
24
|
+
*
|
|
25
|
+
* Os canais não guardam a conta no mesmo lugar, e não é acidente: o telefone
|
|
26
|
+
* tem registro canônico próprio (`channel_binding`, migração 0041), criado pelo
|
|
27
|
+
* onboarding e com chave global de roteamento; o e-mail vive na configuração do
|
|
28
|
+
* tenant e admite remetente de plataforma.
|
|
29
|
+
*
|
|
30
|
+
* Antes disto, o consumidor passava UM store para todos os canais — e o canal
|
|
31
|
+
* criado pelo onboarding ficava invisível para quem despacha: a tela dizia
|
|
32
|
+
* "ativo" e o motor teria respondido `no_account`. Um `??` entre os dois stores
|
|
33
|
+
* resolveria o sintoma e esconderia a política; a precedência por canal é
|
|
34
|
+
* decisão de arquitetura e precisa ficar legível em quem compõe.
|
|
35
|
+
*
|
|
36
|
+
* ## Mecanismo, não política
|
|
37
|
+
*
|
|
38
|
+
* Este módulo não sabe QUAL store serve QUAL canal — quem sabe é o produto, e a
|
|
39
|
+
* decisão aparece no mapa que ele monta.
|
|
40
|
+
*
|
|
41
|
+
* **Canal sem rota resolve para ausente, e nunca cai em outro store.** Herdar a
|
|
42
|
+
* rota de um canal vizinho faria um canal novo nascer usando a conta de e-mail
|
|
43
|
+
* do escritório — configurado por acidente, com a identidade errada. Um canal
|
|
44
|
+
* que ninguém roteou entra fechado.
|
|
45
|
+
*/
|
|
46
|
+
export function routeAccountsByChannel(routes) {
|
|
47
|
+
return {
|
|
48
|
+
async find(ctx, channel) {
|
|
49
|
+
const store = routes[channel];
|
|
50
|
+
if (!store)
|
|
51
|
+
return null;
|
|
52
|
+
return store.find(ctx, channel);
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* A conta pertence mesmo a este contexto?
|
|
58
|
+
*
|
|
59
|
+
* Checagem redundante por desenho. O `store` do produto já deveria filtrar por
|
|
60
|
+
* tenant — mas "deveria" é a palavra que precede todo vazamento cross-tenant, e
|
|
61
|
+
* um store com um `WHERE` esquecido devolveria a conta do vizinho sem que nada
|
|
62
|
+
* reclamasse. Esta função é a segunda tranca, e é a que os testes de isolamento
|
|
63
|
+
* exercitam diretamente.
|
|
64
|
+
*/
|
|
65
|
+
export function assertOwnership(ctx, account) {
|
|
66
|
+
return (account.tenantId === ctx.tenantId &&
|
|
67
|
+
account.product === ctx.product &&
|
|
68
|
+
account.brand === ctx.brand);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Resolve a identidade de envio para um contexto e canal.
|
|
72
|
+
*
|
|
73
|
+
* Não há caminho neste código que devolva uma conta de outro contexto, nem uma
|
|
74
|
+
* conta "da plataforma". Ausência resolve para ausência, e quem chama trata
|
|
75
|
+
* ausência como canal indisponível — nunca como permissão para improvisar.
|
|
76
|
+
*/
|
|
77
|
+
export async function resolveIdentity(store, ctx, channel) {
|
|
78
|
+
const account = await store.find(ctx, channel);
|
|
79
|
+
if (!account) {
|
|
80
|
+
return {
|
|
81
|
+
ok: false,
|
|
82
|
+
reason: 'no_account',
|
|
83
|
+
detail: `sem conta de ${channel} para este tenant/produto`,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
if (!assertOwnership(ctx, account)) {
|
|
87
|
+
// Não é só recusar: é recusar ALTO. Um store devolvendo conta alheia é
|
|
88
|
+
// defeito de isolamento, não configuração faltando, e os dois não podem
|
|
89
|
+
// aparecer com o mesmo rótulo na trilha.
|
|
90
|
+
return {
|
|
91
|
+
ok: false,
|
|
92
|
+
reason: 'foreign_account',
|
|
93
|
+
detail: `conta de ${channel} não pertence a este contexto`,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
if (account.status !== 'active') {
|
|
97
|
+
return {
|
|
98
|
+
ok: false,
|
|
99
|
+
reason: 'not_active',
|
|
100
|
+
detail: `conta de ${channel} em estado ${account.status}`,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
return { ok: true, account };
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/communication/identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AA+DH;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,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,MAAM,UAAU,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;AACH,MAAM,CAAC,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,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Motor de comunicação compartilhado do ecossistema.
|
|
3
|
+
*
|
|
4
|
+
* Consumidores: SC Organização Contábil (primeiro, piloto), e por desenho
|
|
5
|
+
* Dental Plataforma, Manga Verde, Baruk Connect e o que vier. O motor é um; a
|
|
6
|
+
* identidade de envio de cada um nunca é compartilhada — ver `identity.ts`.
|
|
7
|
+
*/
|
|
8
|
+
export { CHANNEL_ACCEPTS, CHANNEL_KEYS, channelAccepts, resolveChannel, unavailableChannel, } from './channel.js';
|
|
9
|
+
export type { ChannelKey, ChannelRegistry, CommunicationChannel, DeliveryOutcome, DeliveryOutcomeKind, MessageContent, OutboundMessage, } from './channel.js';
|
|
10
|
+
export { contextRef, validateContext } from './context.js';
|
|
11
|
+
export type { BrandKey, CommunicationContext, ContextRejection, ProductKey } from './context.js';
|
|
12
|
+
export { NO_PROVIDER_GUARANTEES, providerIdempotencyCovers, RESEND_IDEMPOTENCY_WINDOW_MS, } from './capabilities.js';
|
|
13
|
+
export type { ChannelCapabilities } from './capabilities.js';
|
|
14
|
+
export { buildIdempotencyKey } from './idempotency.js';
|
|
15
|
+
export type { IdempotencyInput } from './idempotency.js';
|
|
16
|
+
export { createInMemoryDispatchClaimStore, DEFAULT_CLAIM_TTL_MS } from './claim.js';
|
|
17
|
+
export type { ClaimRefusal, ClaimResult, ClaimSettlement, DispatchClaimHandle, DispatchClaimRequest, DispatchClaimStore, DispatchKeyState, DispatchLifecycleEvent, InMemoryClaimStoreOptions, ProviderAttemptFence, UnknownResolution, } from './claim.js';
|
|
18
|
+
export { createPostgresAuditSink, createPostgresDispatchClaimStore, listCommunicationTrail, } from './stores/postgres.js';
|
|
19
|
+
export type { CommunicationTrailEntry, CommunicationTrailFilter, PostgresClaimStoreOptions, } from './stores/postgres.js';
|
|
20
|
+
export { createNullAuditSink, createRecordingAuditSink, eventKindForSkip } from './audit.js';
|
|
21
|
+
export type { CommunicationAuditSink, CommunicationEvent, CommunicationEventKind, } from './audit.js';
|
|
22
|
+
export { assertOwnership, resolveIdentity, routeAccountsByChannel } from './identity.js';
|
|
23
|
+
export { credentialResolverFor, resolveSenderProfile, withSenderFallback, } from './sender-profile.js';
|
|
24
|
+
export type { PlatformSenderFallback, ResolvedSenderProfile, SenderFallbackPolicy, SenderOrigin, SenderRejection, SenderResolution, } from './sender-profile.js';
|
|
25
|
+
export type { ChannelAccount, ChannelAccountStore, IdentityRejection, IdentityResolution, } from './identity.js';
|
|
26
|
+
export { evaluateConsent } from './consent.js';
|
|
27
|
+
export type { ConsentDecision, ConsentPolicy, ConsentRecord, ConsentSource, ConsentState, ConsentStore, UnknownPolicy, } from './consent.js';
|
|
28
|
+
export { orderVariables, resolveTemplate } from './template.js';
|
|
29
|
+
export type { TemplateKey, TemplateRecord, TemplateRejection, TemplateResolution, TemplateStatus, TemplateStore, } from './template.js';
|
|
30
|
+
export { DEFAULT_POLICY as DEFAULT_CHANNEL_POLICY } from './policy.js';
|
|
31
|
+
export type { ChannelAttempt, ChannelPolicy, SkipReason } from './policy.js';
|
|
32
|
+
export { CHANNEL_REPORTS, advanceStatus, channelReports, isRetryable, statusForOutcome, } from './status.js';
|
|
33
|
+
export type { DeliveryStatus } from './status.js';
|
|
34
|
+
export { dispatch } from './engine.js';
|
|
35
|
+
export type { CommunicationIntent, DispatchDeps, DispatchOptions, DispatchResult, } from './engine.js';
|
|
36
|
+
export { emptyDryRunReport, formatDryRunReport, summarizeDryRun } from './dry-run.js';
|
|
37
|
+
export type { DryRunReport } from './dry-run.js';
|
|
38
|
+
export { applyDeliveryEvent, deliveryEventId, parseMetaDeliveryWebhook, parseMetaInboundOptOut, parseMetaWebhookOrigins, verifyMetaChallenge, verifyMetaSignature, } from './webhook.js';
|
|
39
|
+
export type { DeliveryEvent, InboundOptOut, WebhookApplication } from './webhook.js';
|
|
40
|
+
export { createEmailChannel } from './adapters/email.js';
|
|
41
|
+
export type { EmailAdapterConfig } from './adapters/email.js';
|
|
42
|
+
export { createWhatsAppChannel } from './adapters/whatsapp.js';
|
|
43
|
+
export type { WhatsAppAdapterConfig } from './adapters/whatsapp.js';
|
|
44
|
+
export { countSegments, createRecordingSmsTransport, createSmsChannel, isGsm7, } from './adapters/sms.js';
|
|
45
|
+
export type { SmsAdapterConfig, SmsSendRequest, SmsTransport, SmsTransportResult, } from './adapters/sms.js';
|
|
46
|
+
export { resolveRoute, sameOrigin } from './routing.js';
|
|
47
|
+
export type { ChannelRoute, ChannelRouteStore, RoutedProvider, RouteRejection, RouteResolution, WebhookOrigin, } from './routing.js';
|
|
48
|
+
export { createChannelCredentialResolver, isAcceptableForNewBinding, isVaultRef, noCredentialResolver, } from './credentials.js';
|
|
49
|
+
export type { TenantSecretStore } from './credentials.js';
|
|
50
|
+
export { createPostgresTenantSecretStore, VAULT_DECRYPT_PERMISSION } from './stores/secrets.js';
|
|
51
|
+
export type { SecretAccessGrant, SecretAccessReason, TenantSecretStoreOptions, } from './stores/secrets.js';
|
|
52
|
+
export { ChannelRouteConflictError, CredentialRefNotAcceptableError, completeRoute, createPostgresChannelBindingStore, createPostgresChannelRouteStore, registerChannelBinding, } from './stores/routing.js';
|
|
53
|
+
export type { RegisterBindingInput } from './stores/routing.js';
|
|
54
|
+
export { createWhatsAppTemplateProvider } from './adapters/whatsapp-templates.js';
|
|
55
|
+
export { metaLanguageCode } from './adapters/whatsapp-language.js';
|
|
56
|
+
export { readAppSettings, readAppSubscriptions, readWabaSubscribedApps, sendWebhookTestEvent, } from './webhook-subscription.js';
|
|
57
|
+
export type { AppSettings, AppSubscription, SubscribedApp, SubscriptionProbe, SubscriptionRejection, } from './webhook-subscription.js';
|
|
58
|
+
export type { TemplateCategory, TemplateManagementProvider, TemplateSubmission, TemplateSubmissionRejection, TemplateSubmissionResult, } from './template-provider.js';
|
|
59
|
+
export { DEFAULT_GRAPH_API_VERSION, graphApiVersion, graphUrl } from './graph.js';
|
|
60
|
+
export { createSignupState, exchangeSignupCode, hashSignupState, listWabaTemplates, readPhoneNumber, registerPhoneNumber, sameStateHash, subscribeAppToWaba, } from './onboarding.js';
|
|
61
|
+
export type { BusinessToken, GraphClientOptions, MetaTemplate, PhoneNumberState, RegisterPhoneNumberInput, RegisterRejection, SignupFailure, SignupResult, SignupState, } from './onboarding.js';
|
|
62
|
+
export { consumeOnboardingSession, failOnboardingSession, latestOnboardingSession, ONBOARDING_SESSION_TTL_MS, openOnboardingSession, recordOnboardingAssets, } from './stores/onboarding.js';
|
|
63
|
+
export type { ConsumeResult, OnboardingSession } from './stores/onboarding.js';
|
|
64
|
+
export { claimChannelAccount } from './stores/routing.js';
|
|
65
|
+
export type { ClaimChannelAccountInput, ClaimedChannelAccount } from './stores/routing.js';
|
|
66
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/communication/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Motor de comunicação compartilhado do ecossistema.
|
|
3
|
+
*
|
|
4
|
+
* Consumidores: SC Organização Contábil (primeiro, piloto), e por desenho
|
|
5
|
+
* Dental Plataforma, Manga Verde, Baruk Connect e o que vier. O motor é um; a
|
|
6
|
+
* identidade de envio de cada um nunca é compartilhada — ver `identity.ts`.
|
|
7
|
+
*/
|
|
8
|
+
export { CHANNEL_ACCEPTS, CHANNEL_KEYS, channelAccepts, resolveChannel, unavailableChannel, } from './channel.js';
|
|
9
|
+
export { contextRef, validateContext } from './context.js';
|
|
10
|
+
export { NO_PROVIDER_GUARANTEES, providerIdempotencyCovers, RESEND_IDEMPOTENCY_WINDOW_MS, } from './capabilities.js';
|
|
11
|
+
export { buildIdempotencyKey } from './idempotency.js';
|
|
12
|
+
export { createInMemoryDispatchClaimStore, DEFAULT_CLAIM_TTL_MS } from './claim.js';
|
|
13
|
+
export { createPostgresAuditSink, createPostgresDispatchClaimStore, listCommunicationTrail, } from './stores/postgres.js';
|
|
14
|
+
export { createNullAuditSink, createRecordingAuditSink, eventKindForSkip } from './audit.js';
|
|
15
|
+
export { assertOwnership, resolveIdentity, routeAccountsByChannel } from './identity.js';
|
|
16
|
+
export { credentialResolverFor, resolveSenderProfile, withSenderFallback, } from './sender-profile.js';
|
|
17
|
+
export { evaluateConsent } from './consent.js';
|
|
18
|
+
export { orderVariables, resolveTemplate } from './template.js';
|
|
19
|
+
export { DEFAULT_POLICY as DEFAULT_CHANNEL_POLICY } from './policy.js';
|
|
20
|
+
export { CHANNEL_REPORTS, advanceStatus, channelReports, isRetryable, statusForOutcome, } from './status.js';
|
|
21
|
+
export { dispatch } from './engine.js';
|
|
22
|
+
export { emptyDryRunReport, formatDryRunReport, summarizeDryRun } from './dry-run.js';
|
|
23
|
+
export { applyDeliveryEvent, deliveryEventId, parseMetaDeliveryWebhook, parseMetaInboundOptOut, parseMetaWebhookOrigins, verifyMetaChallenge, verifyMetaSignature, } from './webhook.js';
|
|
24
|
+
export { createEmailChannel } from './adapters/email.js';
|
|
25
|
+
export { createWhatsAppChannel } from './adapters/whatsapp.js';
|
|
26
|
+
export { countSegments, createRecordingSmsTransport, createSmsChannel, isGsm7, } from './adapters/sms.js';
|
|
27
|
+
export { resolveRoute, sameOrigin } from './routing.js';
|
|
28
|
+
export { createChannelCredentialResolver, isAcceptableForNewBinding, isVaultRef, noCredentialResolver, } from './credentials.js';
|
|
29
|
+
export { createPostgresTenantSecretStore, VAULT_DECRYPT_PERMISSION } from './stores/secrets.js';
|
|
30
|
+
export { ChannelRouteConflictError, CredentialRefNotAcceptableError, completeRoute, createPostgresChannelBindingStore, createPostgresChannelRouteStore, registerChannelBinding, } from './stores/routing.js';
|
|
31
|
+
export { createWhatsAppTemplateProvider } from './adapters/whatsapp-templates.js';
|
|
32
|
+
// Tradução do código de idioma para a grafia da Meta. Ponto ÚNICO: submissão e
|
|
33
|
+
// despacho divergiram uma vez, e o primeiro envio real morreu nisso.
|
|
34
|
+
export { metaLanguageCode } from './adapters/whatsapp-language.js';
|
|
35
|
+
// Diagnóstico da assinatura de webhooks. LEITURA PURA — a correção da
|
|
36
|
+
// assinatura do app é mutação externa e não mora numa rota de diagnóstico.
|
|
37
|
+
export { readAppSettings, readAppSubscriptions, readWabaSubscribedApps, sendWebhookTestEvent, } from './webhook-subscription.js';
|
|
38
|
+
export { DEFAULT_GRAPH_API_VERSION, graphApiVersion, graphUrl } from './graph.js';
|
|
39
|
+
export { createSignupState, exchangeSignupCode, hashSignupState, listWabaTemplates, readPhoneNumber, registerPhoneNumber, sameStateHash, subscribeAppToWaba, } from './onboarding.js';
|
|
40
|
+
export { consumeOnboardingSession, failOnboardingSession, latestOnboardingSession, ONBOARDING_SESSION_TTL_MS, openOnboardingSession, recordOnboardingAssets, } from './stores/onboarding.js';
|
|
41
|
+
export { claimChannelAccount } from './stores/routing.js';
|
|
42
|
+
//# 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,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Onboarding de conta de canal — Embedded Signup da Meta.
|
|
3
|
+
*
|
|
4
|
+
* Este módulo é a fronteira entre "o operador clicou em Conectar" e "existe um
|
|
5
|
+
* vínculo de canal com credencial no cofre". Ele não escreve no banco e não lê
|
|
6
|
+
* configuração: recebe o que precisa e devolve o que descobriu, para que o
|
|
7
|
+
* produto decida o que persistir.
|
|
8
|
+
*
|
|
9
|
+
* ── A regra que este arquivo existe para cumprir ────────────────────────────
|
|
10
|
+
*
|
|
11
|
+
* **Nenhum token é digitado por humano.** O caminho anterior — e o que ainda
|
|
12
|
+
* está no cofre desta casa, sob `PROPOSAL_COMM_WA_ACCESS_TOKEN` — é um token de
|
|
13
|
+
* USUÁRIO gerado no painel da Meta e colado numa variável de ambiente. Ele
|
|
14
|
+
* expirou em 2026-07-21 e derrubou o canal sem que nada avisasse, porque um
|
|
15
|
+
* token colado não tem dono, não tem renovação e não tem trilha: ninguém sabe
|
|
16
|
+
* quem o gerou nem quando ele morre.
|
|
17
|
+
*
|
|
18
|
+
* **Aquela credencial é de OUTRO app** — "Baruk Communication Sandbox", do motor
|
|
19
|
+
* de propostas — e **não deve ser reutilizada aqui em hipótese nenhuma**. O app
|
|
20
|
+
* canônico deste caminho é o "Baruk Comunicação". A distinção está escrita
|
|
21
|
+
* porque os dois têm nome parecido e a mesma cara no cofre, e reaproveitar o
|
|
22
|
+
* errado é a regressão mais barata de cometer nesta frente.
|
|
23
|
+
*
|
|
24
|
+
* O Embedded Signup devolve, para o servidor, um `code` trocável por um
|
|
25
|
+
* **business integration system user access token** — escopado ao cliente que
|
|
26
|
+
* autorizou, de vida longa, revogável por ele, e que nunca passa pelo teclado
|
|
27
|
+
* de ninguém.
|
|
28
|
+
*
|
|
29
|
+
* ── O que NÃO está aqui ─────────────────────────────────────────────────────
|
|
30
|
+
*
|
|
31
|
+
* O `client_secret` do App. Ele entra por parâmetro, vindo do ambiente do
|
|
32
|
+
* processo, e nunca é logado, devolvido nem embutido em mensagem de erro. Pelo
|
|
33
|
+
* mesmo motivo, nenhuma função deste arquivo devolve a mensagem de erro da
|
|
34
|
+
* Meta: ela carrega, com frequência, o nome e o identificador do negócio do
|
|
35
|
+
* cliente — que é PII de terceiro dentro de um log nosso.
|
|
36
|
+
*/
|
|
37
|
+
/**
|
|
38
|
+
* State de uma sessão de onboarding.
|
|
39
|
+
*
|
|
40
|
+
* `state` vai para o navegador; `stateHash` vai para o banco. A separação é o
|
|
41
|
+
* que impede a tabela de virar uma lista de chaves válidas — ver a migração
|
|
42
|
+
* 0044.
|
|
43
|
+
*/
|
|
44
|
+
export interface SignupState {
|
|
45
|
+
state: string;
|
|
46
|
+
stateHash: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* 32 bytes de aleatoriedade criptográfica.
|
|
50
|
+
*
|
|
51
|
+
* Não é um uuid de propósito: um uuidv7 carrega o instante de criação e é
|
|
52
|
+
* parcialmente previsível, e a única função deste valor é ser impossível de
|
|
53
|
+
* adivinhar.
|
|
54
|
+
*/
|
|
55
|
+
export declare function createSignupState(): SignupState;
|
|
56
|
+
export declare function hashSignupState(state: string): string;
|
|
57
|
+
/**
|
|
58
|
+
* Comparação de hashes em tempo constante.
|
|
59
|
+
*
|
|
60
|
+
* A busca no banco é por igualdade de índice e já vaza tempo por natureza; esta
|
|
61
|
+
* função existe para o segundo confronto, feito em memória depois da leitura,
|
|
62
|
+
* onde a comparação ingênua compara byte a byte e para no primeiro que difere.
|
|
63
|
+
*/
|
|
64
|
+
export declare function sameStateHash(a: string, b: string): boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Falhas possíveis. **Classes, nunca a mensagem da Meta.**
|
|
67
|
+
*
|
|
68
|
+
* A distinção que importa para quem opera é a mesma do adapter de envio:
|
|
69
|
+
* problema de configuração NOSSA (`unauthorized_app`), problema do fluxo do
|
|
70
|
+
* cliente (`invalid_code`), ou infraestrutura (`network`, `rate_limited`) — e
|
|
71
|
+
* cada uma leva a uma ação diferente na tela.
|
|
72
|
+
*/
|
|
73
|
+
export type SignupFailure =
|
|
74
|
+
/** O `code` não serve: já foi trocado, expirou, ou não é deste App. */
|
|
75
|
+
'invalid_code'
|
|
76
|
+
/** App id/secret errados ou App sem permissão. Pendência do escritório-mãe. */
|
|
77
|
+
| 'unauthorized_app'
|
|
78
|
+
/** Limite de taxa da Meta. Vale tentar de novo. */
|
|
79
|
+
| 'rate_limited'
|
|
80
|
+
/** Timeout, DNS, TLS. Não diz nada sobre o `code`. */
|
|
81
|
+
| 'network'
|
|
82
|
+
/** Qualquer outra recusa do provider. */
|
|
83
|
+
| 'provider_error';
|
|
84
|
+
export type SignupResult<T> = {
|
|
85
|
+
ok: true;
|
|
86
|
+
value: T;
|
|
87
|
+
} | {
|
|
88
|
+
ok: false;
|
|
89
|
+
reason: SignupFailure;
|
|
90
|
+
};
|
|
91
|
+
export interface GraphClientOptions {
|
|
92
|
+
/** Injetável para teste. **Nenhum teste deve alcançar a rede real.** */
|
|
93
|
+
fetchImpl?: typeof fetch;
|
|
94
|
+
env?: NodeJS.ProcessEnv;
|
|
95
|
+
timeoutMs?: number;
|
|
96
|
+
}
|
|
97
|
+
export interface ExchangeSignupCodeInput {
|
|
98
|
+
code: string;
|
|
99
|
+
appId: string;
|
|
100
|
+
appSecret: string;
|
|
101
|
+
}
|
|
102
|
+
export interface BusinessToken {
|
|
103
|
+
/** O segredo. Vai direto para o cofre — nunca para log, resposta HTTP ou tela. */
|
|
104
|
+
accessToken: string;
|
|
105
|
+
/**
|
|
106
|
+
* Segundos até expirar, quando a Meta informa.
|
|
107
|
+
*
|
|
108
|
+
* **A vida do token é decidida pela CONFIGURAÇÃO de Embedded Signup, não pelo
|
|
109
|
+
* código.** A configuração canônica desta casa — "Configuração do cadastro
|
|
110
|
+
* incorporado do WhatsApp com token de expiração em 60 dias" — emite token de
|
|
111
|
+
* usuário do sistema com **60 dias** de validade. Existe variação sem
|
|
112
|
+
* expiração; não é a que está em uso, e supor a errada aqui significaria não
|
|
113
|
+
* gravar `expires_at` no cofre e descobrir o vencimento por uma cobrança que
|
|
114
|
+
* não saiu.
|
|
115
|
+
*
|
|
116
|
+
* `undefined` significa que a Meta não informou — e aí o cofre guarda a
|
|
117
|
+
* credencial sem vencimento, que é o comportamento correto para "não sei",
|
|
118
|
+
* não para "não expira".
|
|
119
|
+
*/
|
|
120
|
+
expiresInSeconds?: number;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Troca o `code` do Embedded Signup pelo token de negócio do cliente.
|
|
124
|
+
*
|
|
125
|
+
* **Server-to-server, sempre.** O `client_secret` do App não pode existir no
|
|
126
|
+
* navegador: quem o tiver consegue trocar códigos de qualquer cliente e falar
|
|
127
|
+
* pela conta dele. É por isso que o front devolve `code` e não token, e é por
|
|
128
|
+
* isso que esta função vive no servidor.
|
|
129
|
+
*/
|
|
130
|
+
export declare function exchangeSignupCode(input: ExchangeSignupCodeInput, opts?: GraphClientOptions): Promise<SignupResult<BusinessToken>>;
|
|
131
|
+
/**
|
|
132
|
+
* Assina o App do motor nos webhooks da WABA do cliente.
|
|
133
|
+
*
|
|
134
|
+
* Sem isto o vínculo existe, o envio funciona e **nenhum status volta**: a
|
|
135
|
+
* mensagem fica presa em `sent` para sempre e a tela do escritório não sabe
|
|
136
|
+
* dizer se o cliente recebeu. É a diferença entre um canal que funciona e um
|
|
137
|
+
* canal que parece funcionar.
|
|
138
|
+
*
|
|
139
|
+
* Idempotente do lado da Meta — assinar duas vezes não é erro.
|
|
140
|
+
*/
|
|
141
|
+
export declare function subscribeAppToWaba(input: {
|
|
142
|
+
wabaId: string;
|
|
143
|
+
accessToken: string;
|
|
144
|
+
}, opts?: GraphClientOptions): Promise<SignupResult<{
|
|
145
|
+
subscribed: boolean;
|
|
146
|
+
}>>;
|
|
147
|
+
export interface PhoneNumberState {
|
|
148
|
+
/** E.164 como a Meta o mostra. Identidade visível, não segredo. */
|
|
149
|
+
displayPhoneNumber?: string;
|
|
150
|
+
verifiedName?: string;
|
|
151
|
+
/** `VERIFIED` | `NOT_VERIFIED` | `EXPIRED` — verificação do NÚMERO. */
|
|
152
|
+
codeVerificationStatus?: string;
|
|
153
|
+
/** `CONNECTED` | `PENDING` | `FLAGGED` | `RESTRICTED` etc. */
|
|
154
|
+
status?: string;
|
|
155
|
+
qualityRating?: string;
|
|
156
|
+
/** A conta já está registrada na Cloud API? */
|
|
157
|
+
platformType?: string;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Estado do número, do ponto de vista da Meta.
|
|
161
|
+
*
|
|
162
|
+
* Leitura pura. É o que permite à tela dizer `attention_required` com um motivo
|
|
163
|
+
* — "número não verificado", "conta restrita" — em vez do genérico "erro", que
|
|
164
|
+
* obriga o escritório a abrir o painel da Meta para descobrir o quê.
|
|
165
|
+
*/
|
|
166
|
+
export declare function readPhoneNumber(input: {
|
|
167
|
+
phoneNumberId: string;
|
|
168
|
+
accessToken: string;
|
|
169
|
+
}, opts?: GraphClientOptions): Promise<SignupResult<PhoneNumberState>>;
|
|
170
|
+
export interface MetaTemplate {
|
|
171
|
+
name: string;
|
|
172
|
+
language: string;
|
|
173
|
+
/** APPROVED | PENDING | REJECTED | PAUSED | DISABLED, conforme a Meta. */
|
|
174
|
+
status: string;
|
|
175
|
+
category?: string;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Lista os templates da WABA do cliente. **Somente leitura.**
|
|
179
|
+
*
|
|
180
|
+
* Existe porque `approvedEvents` é uma lista mantida à mão em
|
|
181
|
+
* `tenant.settings`, e uma lista declarada por humano diverge da realidade da
|
|
182
|
+
* Meta no dia em que alguém aprova, pausa ou reprova um template lá. Um template
|
|
183
|
+
* marcado "aprovado" aqui e reprovado lá gasta a tentativa de envio e volta erro
|
|
184
|
+
* permanente — que a régua interpreta como problema do destinatário.
|
|
185
|
+
*
|
|
186
|
+
* Devolver a lista permite que a decisão de configurar `approvedEvents` seja
|
|
187
|
+
* tomada contra o que a Meta diz, e não contra o que alguém lembrou.
|
|
188
|
+
*/
|
|
189
|
+
export declare function listWabaTemplates(input: {
|
|
190
|
+
wabaId: string;
|
|
191
|
+
accessToken: string;
|
|
192
|
+
}, opts?: GraphClientOptions): Promise<SignupResult<MetaTemplate[]>>;
|
|
193
|
+
export interface RegisterPhoneNumberInput {
|
|
194
|
+
phoneNumberId: string;
|
|
195
|
+
accessToken: string;
|
|
196
|
+
/** PIN de verificação em duas etapas, 6 dígitos. Segredo do cliente. */
|
|
197
|
+
pin: string;
|
|
198
|
+
/**
|
|
199
|
+
* Sem isto, nada acontece.
|
|
200
|
+
*
|
|
201
|
+
* Registrar um número o move para a Cloud API e o **desconecta do aplicativo
|
|
202
|
+
* WhatsApp Business** que o cliente talvez esteja usando para atender. É uma
|
|
203
|
+
* alteração no negócio de outra pessoa, e ela não pode ser efeito colateral
|
|
204
|
+
* de um passo de configuração. O padrão `false` faz esquecer de autorizar
|
|
205
|
+
* falhar fechado.
|
|
206
|
+
*/
|
|
207
|
+
authorized?: boolean;
|
|
208
|
+
}
|
|
209
|
+
export type RegisterRejection = SignupFailure | 'not_authorized' | 'invalid_pin';
|
|
210
|
+
/**
|
|
211
|
+
* Registra o número do cliente na Cloud API.
|
|
212
|
+
*
|
|
213
|
+
* Implementado e **não chamado** por nenhum caminho automático desta fase. O
|
|
214
|
+
* gate de autorização humana está no parâmetro, e não numa convenção de
|
|
215
|
+
* chamada: uma trava que depende de ninguém chamar a função errada não é trava.
|
|
216
|
+
*/
|
|
217
|
+
export declare function registerPhoneNumber(input: RegisterPhoneNumberInput, opts?: GraphClientOptions): Promise<{
|
|
218
|
+
ok: true;
|
|
219
|
+
} | {
|
|
220
|
+
ok: false;
|
|
221
|
+
reason: RegisterRejection;
|
|
222
|
+
}>;
|
|
223
|
+
//# sourceMappingURL=onboarding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../../src/communication/onboarding.ts"],"names":[],"mappings":"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"}
|