@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
|
@@ -8,6 +8,10 @@ import { AppError } from '@baruk/shared';
|
|
|
8
8
|
* IMPORTANTE: nenhum outro arquivo do Core importa este adapter diretamente — o
|
|
9
9
|
* acesso é sempre via `resolveBillingProvider('asaas', config)`. Assim, trocar
|
|
10
10
|
* Asaas por Stripe é trocar a string registrada, sem tocar em regra de negócio.
|
|
11
|
+
*
|
|
12
|
+
* A credencial define a CONTA que recebe o dinheiro. Quem escolhe a credencial
|
|
13
|
+
* é `provider-account.ts`, a partir do tenant — este adapter não sabe, e não
|
|
14
|
+
* deve saber, de quem é a conta que está usando.
|
|
11
15
|
*/
|
|
12
16
|
const BILLING_TYPE = {
|
|
13
17
|
pix: 'PIX',
|
|
@@ -24,12 +28,14 @@ export class AsaasProvider {
|
|
|
24
28
|
key = 'asaas';
|
|
25
29
|
apiKey;
|
|
26
30
|
baseUrl;
|
|
31
|
+
webhookSecret;
|
|
27
32
|
fetchImpl;
|
|
28
33
|
constructor(config) {
|
|
29
34
|
if (!config.apiKey)
|
|
30
35
|
throw new AsaasError('apiKey ausente (configure no Vault).', 500);
|
|
31
36
|
this.apiKey = config.apiKey;
|
|
32
37
|
this.baseUrl = (config.baseUrl ?? 'https://api.asaas.com/v3').replace(/\/$/, '');
|
|
38
|
+
this.webhookSecret = config.webhookSecret;
|
|
33
39
|
this.fetchImpl = config.fetchImpl ?? fetch;
|
|
34
40
|
}
|
|
35
41
|
async call(path, method, body) {
|
|
@@ -44,29 +50,123 @@ export class AsaasProvider {
|
|
|
44
50
|
}
|
|
45
51
|
return (await res.json());
|
|
46
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Provisiona (ou reencontra) o pagador na conta do escritório.
|
|
55
|
+
*
|
|
56
|
+
* `externalReference` é o id interno do cliente, e a busca por ele vem ANTES
|
|
57
|
+
* do POST: sem isso, cada emissão criaria um cadastro novo na conta do
|
|
58
|
+
* escritório, e o histórico do cliente lá dentro viraria uma lista de
|
|
59
|
+
* homônimos. O mapa local (`payment_customer`) evita a maioria das chamadas;
|
|
60
|
+
* esta busca é a rede de segurança para quando o mapa e o gateway divergirem.
|
|
61
|
+
*/
|
|
62
|
+
async ensureCustomer(req) {
|
|
63
|
+
const found = await this.call(`/customers?externalReference=${encodeURIComponent(req.referenceId)}&limit=1`, 'GET');
|
|
64
|
+
const existing = found.data?.[0]?.id;
|
|
65
|
+
if (existing) {
|
|
66
|
+
// ENCONTRAR NÃO BASTA. Este era o coração da dívida R: o pagador existia
|
|
67
|
+
// com dados velhos — tipicamente sem CPF/CNPJ — e devolvê-lo calado fazia a
|
|
68
|
+
// emissão ser recusada para sempre, mesmo depois de o escritório corrigir
|
|
69
|
+
// a ficha no Office.
|
|
70
|
+
//
|
|
71
|
+
// Importa que a correção esteja AQUI, e não só no cache: a transação da
|
|
72
|
+
// emissão faz rollback quando o gateway recusa, então o mapa local não
|
|
73
|
+
// persiste e a próxima tentativa cai justamente neste caminho. Se ele
|
|
74
|
+
// devolvesse sem reconciliar, o sistema gravaria uma impressão digital
|
|
75
|
+
// afirmando uma sincronização que nunca houve.
|
|
76
|
+
await this.updateCustomer(existing, req);
|
|
77
|
+
return { externalId: existing, action: 'reconciled' };
|
|
78
|
+
}
|
|
79
|
+
const created = await this.call('/customers', 'POST', customerPayload(req));
|
|
80
|
+
return { externalId: created.id, action: 'created' };
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Atualiza o pagador existente. Mesmo payload da criação, mesmo endpoint com
|
|
84
|
+
* id — no Asaas, `POST /customers/{id}` é a atualização.
|
|
85
|
+
*
|
|
86
|
+
* Sem `externalReference` no corpo: ele é a âncora que liga o pagador ao
|
|
87
|
+
* cliente do Office, e reescrevê-lo a cada sincronização abriria a chance de
|
|
88
|
+
* apontar para outro cliente por um erro de chamada.
|
|
89
|
+
*/
|
|
90
|
+
async updateCustomer(externalId, req) {
|
|
91
|
+
const { externalReference: _ignored, ...payload } = customerPayload(req);
|
|
92
|
+
await this.call(`/customers/${encodeURIComponent(externalId)}`, 'POST', payload);
|
|
93
|
+
}
|
|
94
|
+
async describeAccount() {
|
|
95
|
+
const me = await this.call('/myAccount', 'GET');
|
|
96
|
+
const documentNumber = onlyDigits(me.cpfCnpj) || null;
|
|
97
|
+
return {
|
|
98
|
+
// Sem `walletId`/`id`, cai no documento — é o que identifica o TITULAR do
|
|
99
|
+
// dinheiro, que é o que o guard cross-tenant precisa comparar. Sem este
|
|
100
|
+
// fallback a referência fica nula, o índice parcial não pega nada, e duas
|
|
101
|
+
// organizações conseguiriam conectar a mesma conta.
|
|
102
|
+
reference: me.walletId ?? me.id ?? (documentNumber ? `doc:${documentNumber}` : null),
|
|
103
|
+
name: me.companyName ?? me.name ?? null,
|
|
104
|
+
documentNumber,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
47
107
|
async createCharge(req) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
108
|
+
if (!req.customerExternalId) {
|
|
109
|
+
throw new AsaasError('customer não provisionado — chame ensureCustomer antes.', 500);
|
|
110
|
+
}
|
|
111
|
+
const method = req.method;
|
|
112
|
+
const res = await this.call('/payments', 'POST', {
|
|
113
|
+
customer: req.customerExternalId,
|
|
114
|
+
billingType: BILLING_TYPE[method] ?? 'UNDEFINED',
|
|
52
115
|
value: req.amount,
|
|
53
116
|
dueDate: req.dueDate,
|
|
54
117
|
description: req.description ?? undefined,
|
|
55
118
|
externalReference: req.referenceId,
|
|
56
|
-
};
|
|
57
|
-
const res = await this.call('/payments', 'POST', payload);
|
|
119
|
+
});
|
|
58
120
|
return {
|
|
59
121
|
externalId: res.id,
|
|
60
122
|
status: mapAsaasStatus(res.status),
|
|
61
|
-
payment:
|
|
123
|
+
payment: await this.instructionsFor(res, method),
|
|
62
124
|
raw: res,
|
|
63
125
|
};
|
|
64
126
|
}
|
|
127
|
+
async fetchPaymentInstructions(externalId, method) {
|
|
128
|
+
const res = await this.call(`/payments/${externalId}`, 'GET');
|
|
129
|
+
return this.instructionsFor(res, method);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* O QR Code e a linha digitável vivem em endpoints próprios.
|
|
133
|
+
*
|
|
134
|
+
* Eles são buscados no provider, nunca gerados aqui: um BR Code montado por
|
|
135
|
+
* nós apontaria para uma chave PIX que o gateway não conhece, e o pagamento
|
|
136
|
+
* cairia fora da cobrança — dinheiro que entra sem baixar nada.
|
|
137
|
+
*
|
|
138
|
+
* A falha é tolerada de propósito. Se o QR não vier, o cliente ainda tem a
|
|
139
|
+
* página de pagamento; derrubar a emissão inteira por causa de um extra seria
|
|
140
|
+
* trocar uma cobrança incompleta por nenhuma cobrança.
|
|
141
|
+
*/
|
|
142
|
+
async instructionsFor(res, method) {
|
|
143
|
+
const out = {
|
|
144
|
+
invoiceUrl: res.invoiceUrl,
|
|
145
|
+
boletoUrl: res.bankSlipUrl,
|
|
146
|
+
};
|
|
147
|
+
if (method === 'pix') {
|
|
148
|
+
const qr = await this.call(`/payments/${res.id}/pixQrCode`, 'GET').catch(() => null);
|
|
149
|
+
if (qr?.payload)
|
|
150
|
+
out.pixPayload = qr.payload;
|
|
151
|
+
if (qr?.encodedImage)
|
|
152
|
+
out.pixQrCodeImage = `data:image/png;base64,${qr.encodedImage}`;
|
|
153
|
+
}
|
|
154
|
+
if (method === 'boleto') {
|
|
155
|
+
const slip = await this.call(`/payments/${res.id}/identificationField`, 'GET').catch(() => null);
|
|
156
|
+
if (slip?.identificationField)
|
|
157
|
+
out.identificationField = slip.identificationField;
|
|
158
|
+
}
|
|
159
|
+
return out;
|
|
160
|
+
}
|
|
65
161
|
async cancelCharge(externalId) {
|
|
66
162
|
await this.call(`/payments/${externalId}`, 'DELETE');
|
|
67
163
|
}
|
|
68
164
|
async createSubscription(req) {
|
|
69
|
-
const cycle = {
|
|
165
|
+
const cycle = {
|
|
166
|
+
monthly: 'MONTHLY',
|
|
167
|
+
quarterly: 'QUARTERLY',
|
|
168
|
+
yearly: 'YEARLY',
|
|
169
|
+
};
|
|
70
170
|
const res = await this.call('/subscriptions', 'POST', {
|
|
71
171
|
billingType: BILLING_TYPE[req.method] ?? 'UNDEFINED',
|
|
72
172
|
value: req.amount,
|
|
@@ -85,24 +185,104 @@ export class AsaasProvider {
|
|
|
85
185
|
async cancelSubscription(externalId) {
|
|
86
186
|
await this.call(`/subscriptions/${externalId}`, 'DELETE');
|
|
87
187
|
}
|
|
188
|
+
/**
|
|
189
|
+
* Autenticação do webhook.
|
|
190
|
+
*
|
|
191
|
+
* O Asaas envia o token configurado na fila em `asaas-access-token`. A
|
|
192
|
+
* comparação é de tempo constante — um `===` sobre segredo vaza, byte a byte,
|
|
193
|
+
* quanto do prefixo está correto para quem consegue medir o tempo da resposta.
|
|
194
|
+
*
|
|
195
|
+
* Sem segredo configurado, reprova. Fail-closed é o único default aceitável
|
|
196
|
+
* numa rota pública que dá baixa em dinheiro.
|
|
197
|
+
*/
|
|
198
|
+
verifyWebhook(_payload, headers = {}) {
|
|
199
|
+
if (!this.webhookSecret)
|
|
200
|
+
return false;
|
|
201
|
+
const sent = headers['asaas-access-token'] ?? headers['Asaas-Access-Token'] ?? '';
|
|
202
|
+
return timingSafeEqual(sent, this.webhookSecret);
|
|
203
|
+
}
|
|
88
204
|
parseWebhook(payload) {
|
|
89
205
|
const p = payload;
|
|
90
|
-
const
|
|
206
|
+
const base = {
|
|
207
|
+
eventId: p.id ?? null,
|
|
208
|
+
externalId: p.payment?.id ?? null,
|
|
209
|
+
raw: payload,
|
|
210
|
+
};
|
|
91
211
|
switch (p.event) {
|
|
212
|
+
// RECEIVED = dinheiro creditado. CONFIRMED = autorizado, ainda não
|
|
213
|
+
// liquidado (cartão). Os dois viram baixa: para o escritório, a dívida
|
|
214
|
+
// deixou de ser dele nos dois casos, e esperar a liquidação faria a régua
|
|
215
|
+
// seguir cobrando alguém que já pagou.
|
|
216
|
+
// RECEIVED_IN_CASH é a baixa que o escritório dá à mão no painel quando o
|
|
217
|
+
// cliente pagou fora do gateway. Sem este caso o evento caía em `unknown`
|
|
218
|
+
// e a régua seguia cobrando quem já tinha pagado — dinheiro que entrou e
|
|
219
|
+
// que o sistema não enxergava.
|
|
92
220
|
case 'PAYMENT_RECEIVED':
|
|
93
221
|
case 'PAYMENT_CONFIRMED':
|
|
94
|
-
|
|
222
|
+
case 'PAYMENT_RECEIVED_IN_CASH':
|
|
223
|
+
return {
|
|
224
|
+
...base,
|
|
225
|
+
type: 'charge.paid',
|
|
226
|
+
paidAt: p.payment?.paymentDate ?? null,
|
|
227
|
+
paidAmount: p.payment?.value ?? null,
|
|
228
|
+
};
|
|
229
|
+
// O par do anterior. Reconhecer a baixa manual sem reconhecer o desfazer
|
|
230
|
+
// trocaria um defeito por outro: a cobrança ficaria paga para sempre por
|
|
231
|
+
// causa de um clique que o próprio escritório revogou.
|
|
232
|
+
case 'PAYMENT_RECEIVED_IN_CASH_UNDONE':
|
|
233
|
+
return { ...base, type: 'charge.settlement_undone' };
|
|
234
|
+
case 'PAYMENT_CREATED':
|
|
235
|
+
return { ...base, type: 'charge.created' };
|
|
95
236
|
case 'PAYMENT_OVERDUE':
|
|
96
|
-
return { type: 'charge.overdue'
|
|
237
|
+
return { ...base, type: 'charge.overdue' };
|
|
97
238
|
case 'PAYMENT_DELETED':
|
|
98
|
-
return { type: 'charge.canceled'
|
|
239
|
+
return { ...base, type: 'charge.canceled' };
|
|
99
240
|
case 'PAYMENT_REFUNDED':
|
|
100
|
-
|
|
241
|
+
case 'PAYMENT_REVERSED':
|
|
242
|
+
return { ...base, type: 'charge.refunded' };
|
|
243
|
+
case 'PAYMENT_CHARGEBACK_REQUESTED':
|
|
244
|
+
case 'PAYMENT_CHARGEBACK_DISPUTE':
|
|
245
|
+
return { ...base, type: 'charge.chargeback' };
|
|
101
246
|
default:
|
|
102
|
-
return { type: 'unknown'
|
|
247
|
+
return { ...base, type: 'unknown' };
|
|
103
248
|
}
|
|
104
249
|
}
|
|
105
250
|
}
|
|
251
|
+
/**
|
|
252
|
+
* Campos cadastrais que o Asaas precisa do pagador.
|
|
253
|
+
*
|
|
254
|
+
* Uma função só, usada na criação E na atualização: se as duas montassem o
|
|
255
|
+
* payload por conta própria, um campo adicionado numa delas passaria a existir
|
|
256
|
+
* só nos clientes novos — e a diferença apareceria meses depois, como "esse
|
|
257
|
+
* cliente antigo não recebe e-mail do boleto".
|
|
258
|
+
*
|
|
259
|
+
* `notificationDisabled` é reafirmado em toda sincronização de propósito: quem
|
|
260
|
+
* fala com o cliente é o Office. Se alguém ligar a notificação pelo painel do
|
|
261
|
+
* gateway, o cliente passaria a receber DUAS cobranças pelo mesmo valor.
|
|
262
|
+
*/
|
|
263
|
+
function customerPayload(req) {
|
|
264
|
+
return {
|
|
265
|
+
name: req.name,
|
|
266
|
+
cpfCnpj: onlyDigits(req.documentNumber),
|
|
267
|
+
email: req.email ?? undefined,
|
|
268
|
+
mobilePhone: onlyDigits(req.phone) || undefined,
|
|
269
|
+
externalReference: req.referenceId,
|
|
270
|
+
notificationDisabled: true,
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
function onlyDigits(v) {
|
|
274
|
+
return (v ?? '').replace(/\D/g, '');
|
|
275
|
+
}
|
|
276
|
+
/** Comparação de tempo constante, sem depender de `node:crypto` no Core. */
|
|
277
|
+
function timingSafeEqual(a, b) {
|
|
278
|
+
// O XOR roda sobre o comprimento do segredo para que a duração não revele o
|
|
279
|
+
// tamanho do que foi enviado; a diferença de comprimento entra no acumulador.
|
|
280
|
+
let diff = a.length ^ b.length;
|
|
281
|
+
for (let i = 0; i < b.length; i++) {
|
|
282
|
+
diff |= (a.charCodeAt(i) || 0) ^ b.charCodeAt(i);
|
|
283
|
+
}
|
|
284
|
+
return diff === 0;
|
|
285
|
+
}
|
|
106
286
|
function mapAsaasStatus(status) {
|
|
107
287
|
switch (status) {
|
|
108
288
|
case 'RECEIVED':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asaas.js","sourceRoot":"","sources":["../../../src/billing/provider/asaas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"asaas.js","sourceRoot":"","sources":["../../../src/billing/provider/asaas.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ export class ManualProvider {
|
|
|
18
18
|
// No-op — cancelamento é apenas mudança de status interno.
|
|
19
19
|
}
|
|
20
20
|
parseWebhook() {
|
|
21
|
-
return { type: 'unknown', externalId: null };
|
|
21
|
+
return { type: 'unknown', eventId: null, externalId: null };
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
//# sourceMappingURL=manual.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manual.js","sourceRoot":"","sources":["../../../src/billing/provider/manual.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,OAAO,cAAc;IAChB,GAAG,GAAG,QAAQ,CAAC;IAExB,KAAK,CAAC,YAAY,CAAC,GAAkB;QACnC,6EAA6E;QAC7E,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS;SACtE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,2DAA2D;IAC7D,CAAC;IAED,YAAY;QACV,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"manual.js","sourceRoot":"","sources":["../../../src/billing/provider/manual.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,OAAO,cAAc;IAChB,GAAG,GAAG,QAAQ,CAAC;IAExB,KAAK,CAAC,YAAY,CAAC,GAAkB;QACnC,6EAA6E;QAC7E,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS;SACtE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,2DAA2D;IAC7D,CAAC;IAED,YAAY;QACV,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC9D,CAAC;CACF"}
|
|
@@ -19,20 +19,56 @@ export interface ChargeRequest {
|
|
|
19
19
|
email?: string | null;
|
|
20
20
|
phone?: string | null;
|
|
21
21
|
};
|
|
22
|
+
/** Id do customer JÁ provisionado no gateway (ver `ensureCustomer`). */
|
|
23
|
+
customerExternalId?: string | null;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* O que o cliente precisa para pagar.
|
|
27
|
+
*
|
|
28
|
+
* Nada aqui é segredo — é justamente o material que vai no e-mail. Mas nada
|
|
29
|
+
* aqui é opcional por acaso: cada gateway entrega um subconjunto diferente, e o
|
|
30
|
+
* template tem de saber renderizar o que veio, não o que gostaríamos que viesse.
|
|
31
|
+
*/
|
|
32
|
+
export interface PaymentInstructions {
|
|
33
|
+
/** Página de pagamento hospedada pelo gateway — o destino do CTA. */
|
|
34
|
+
invoiceUrl?: string;
|
|
35
|
+
/** PIX copia-e-cola (BR Code). */
|
|
36
|
+
pixPayload?: string;
|
|
37
|
+
/** QR Code do PIX em base64, já como data URI ou payload cru do gateway. */
|
|
38
|
+
pixQrCodeImage?: string;
|
|
39
|
+
boletoUrl?: string;
|
|
40
|
+
/** Linha digitável do boleto. */
|
|
41
|
+
identificationField?: string;
|
|
22
42
|
}
|
|
23
43
|
export interface ChargeResult {
|
|
24
44
|
/** Id da cobrança no gateway (nulo para provider 'manual'). */
|
|
25
45
|
externalId: string | null;
|
|
26
|
-
status: 'pending' | 'sent' | 'paid' | 'overdue' | 'canceled' | 'refunded';
|
|
46
|
+
status: 'pending' | 'sent' | 'paid' | 'overdue' | 'canceled' | 'refunded' | 'reversed';
|
|
27
47
|
/** Dados não sensíveis para o cliente pagar (PIX copia-e-cola, url do boleto…). */
|
|
28
|
-
payment?:
|
|
29
|
-
pixPayload?: string;
|
|
30
|
-
pixQrCodeImage?: string;
|
|
31
|
-
boletoUrl?: string;
|
|
32
|
-
invoiceUrl?: string;
|
|
33
|
-
};
|
|
48
|
+
payment?: PaymentInstructions;
|
|
34
49
|
raw?: unknown;
|
|
35
50
|
}
|
|
51
|
+
/** Dados do pagador, para provisionar/reaproveitar o customer do gateway. */
|
|
52
|
+
/**
|
|
53
|
+
* O que aconteceu com o pagador no gateway.
|
|
54
|
+
*
|
|
55
|
+
* A forma rica é opcional — devolver só a string continua válido — porque um
|
|
56
|
+
* adapter que não saiba distinguir não deve ser obrigado a inventar. Quem sabe,
|
|
57
|
+
* informa, e a trilha deixa de registrar "criado" para um pagador que já existia
|
|
58
|
+
* e acabou de ser corrigido.
|
|
59
|
+
*/
|
|
60
|
+
export interface EnsureCustomerResult {
|
|
61
|
+
externalId: string;
|
|
62
|
+
action: 'created' | 'reconciled';
|
|
63
|
+
}
|
|
64
|
+
export interface CustomerRequest {
|
|
65
|
+
name: string;
|
|
66
|
+
documentNumber?: string | null;
|
|
67
|
+
email?: string | null;
|
|
68
|
+
phone?: string | null;
|
|
69
|
+
/** Id interno do cliente — vira `externalReference` do lado do gateway. */
|
|
70
|
+
referenceId: string;
|
|
71
|
+
}
|
|
36
72
|
export interface SubscriptionRequest {
|
|
37
73
|
referenceId: string;
|
|
38
74
|
amount: number;
|
|
@@ -50,20 +86,91 @@ export interface SubscriptionResult {
|
|
|
50
86
|
}
|
|
51
87
|
/** Evento normalizado a partir de um webhook do gateway. */
|
|
52
88
|
export interface WebhookEvent {
|
|
53
|
-
type: 'charge.paid' | 'charge.overdue' | 'charge.canceled' | 'charge.refunded' | '
|
|
89
|
+
type: 'charge.created' | 'charge.paid' | 'charge.overdue' | 'charge.canceled' | 'charge.refunded' | 'charge.chargeback'
|
|
90
|
+
/**
|
|
91
|
+
* A baixa registrada foi DESFEITA na origem — o caso do recebimento em
|
|
92
|
+
* dinheiro informado à mão e depois cancelado no painel.
|
|
93
|
+
*
|
|
94
|
+
* Não é estorno: nesse caso o dinheiro nunca chegou. Manter os dois tipos
|
|
95
|
+
* separados importa porque a mensagem que o escritório lê é diferente, e
|
|
96
|
+
* chamar de "estornado" o que nunca foi pago seria mentir na tela.
|
|
97
|
+
*/
|
|
98
|
+
| 'charge.settlement_undone' | 'unknown';
|
|
99
|
+
/**
|
|
100
|
+
* Id do EVENTO no gateway — a chave de deduplicação.
|
|
101
|
+
*
|
|
102
|
+
* Não confundir com `externalId`, que é o id da cobrança: o gateway reenvia o
|
|
103
|
+
* mesmo evento até receber 200, e reenvia eventos DIFERENTES sobre a mesma
|
|
104
|
+
* cobrança. Deduplicar pela cobrança perderia o segundo evento legítimo.
|
|
105
|
+
*/
|
|
106
|
+
eventId: string | null;
|
|
54
107
|
externalId: string | null;
|
|
55
108
|
paidAt?: string | null;
|
|
109
|
+
/** Valor efetivamente creditado, quando o gateway informa. */
|
|
110
|
+
paidAmount?: number | null;
|
|
56
111
|
raw?: unknown;
|
|
57
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* Identidade da conta no gateway, para provar de quem é o dinheiro.
|
|
115
|
+
*
|
|
116
|
+
* Só campos que o titular da conta já conhece — nome, documento, id. Nenhum
|
|
117
|
+
* deles é segredo; o segredo é a chave que os revelou, e ela não sai daqui.
|
|
118
|
+
*/
|
|
119
|
+
export interface ProviderAccountIdentity {
|
|
120
|
+
/** Id da conta no gateway, quando exposto. Vira `account_reference`. */
|
|
121
|
+
reference: string | null;
|
|
122
|
+
name: string | null;
|
|
123
|
+
/** CPF/CNPJ apenas em dígitos. Usado para comparar titularidade. */
|
|
124
|
+
documentNumber: string | null;
|
|
125
|
+
}
|
|
58
126
|
export interface BillingProvider {
|
|
59
127
|
/** Identificador estável do adapter — casa com `charge.provider`. */
|
|
60
128
|
readonly key: string;
|
|
129
|
+
/**
|
|
130
|
+
* Diz de quem é a conta que esta credencial abre.
|
|
131
|
+
*
|
|
132
|
+
* Existe para uma pergunta só: a chave que estão conectando pertence mesmo ao
|
|
133
|
+
* escritório certo? Confiar no nome da variável é como cinco chaves chamadas
|
|
134
|
+
* `ASAAS_<produto>_API_KEY` acabaram todas na mesma conta.
|
|
135
|
+
*/
|
|
136
|
+
describeAccount?(): Promise<ProviderAccountIdentity>;
|
|
137
|
+
/**
|
|
138
|
+
* Garante um customer no gateway e devolve o id dele.
|
|
139
|
+
*
|
|
140
|
+
* Gateway nenhum aceita cobrança sem pagador. Sem este passo, `createCharge`
|
|
141
|
+
* falha na primeira chamada real — foi exatamente o que aconteceu com a
|
|
142
|
+
* primeira versão deste adapter, que montava o payload sem `customer`.
|
|
143
|
+
*/
|
|
144
|
+
ensureCustomer?(req: CustomerRequest): Promise<string | EnsureCustomerResult>;
|
|
145
|
+
/**
|
|
146
|
+
* Atualiza um pagador JÁ existente no gateway com os dados atuais do Office.
|
|
147
|
+
*
|
|
148
|
+
* Separado de `ensureCustomer` porque as duas respondem perguntas diferentes:
|
|
149
|
+
* aquela garante que o pagador EXISTE, esta garante que ele está CORRETO. Sem
|
|
150
|
+
* a segunda, corrigir o CPF/CNPJ no Office não chega ao provedor, e o cliente
|
|
151
|
+
* corrigido no lugar certo continua impossível de cobrar.
|
|
152
|
+
*
|
|
153
|
+
* Opcional como o resto do contrato: um provider que não permita atualização
|
|
154
|
+
* simplesmente não a implementa, e a reconciliação é reportada como
|
|
155
|
+
* indisponível em vez de fingida.
|
|
156
|
+
*/
|
|
157
|
+
updateCustomer?(externalId: string, req: CustomerRequest): Promise<void>;
|
|
61
158
|
createCharge(req: ChargeRequest): Promise<ChargeResult>;
|
|
159
|
+
/** Busca as instruções de pagamento de uma cobrança já criada. */
|
|
160
|
+
fetchPaymentInstructions?(externalId: string, method: BillingMethod): Promise<PaymentInstructions>;
|
|
62
161
|
cancelCharge(externalId: string): Promise<void>;
|
|
63
162
|
createSubscription?(req: SubscriptionRequest): Promise<SubscriptionResult>;
|
|
64
163
|
cancelSubscription?(externalId: string): Promise<void>;
|
|
65
164
|
/** Traduz o corpo bruto de um webhook para o evento normalizado. */
|
|
66
165
|
parseWebhook(payload: unknown, headers?: Record<string, string>): WebhookEvent;
|
|
166
|
+
/**
|
|
167
|
+
* Autentica o webhook. `false` reprova a requisição.
|
|
168
|
+
*
|
|
169
|
+
* Separado de `parseWebhook` de propósito: parsear é barato e não decide
|
|
170
|
+
* nada; autenticar é a fronteira de segurança, e uma rota pública que só
|
|
171
|
+
* parseia é uma rota que aceita evento forjado.
|
|
172
|
+
*/
|
|
173
|
+
verifyWebhook?(payload: unknown, headers?: Record<string, string>): boolean;
|
|
67
174
|
}
|
|
68
175
|
/** Config passada ao construir um adapter (segredos vêm do Vault, nunca hardcoded). */
|
|
69
176
|
export interface ProviderConfig {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/billing/provider/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/billing/provider/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { ConflictError } from '@baruk/shared';
|
|
2
|
+
import type { Tx } from '../db/client.js';
|
|
3
|
+
import type { Keyring } from '../vault/crypto.js';
|
|
4
|
+
import type { BillingProvider } from './provider/types.js';
|
|
5
|
+
/**
|
|
6
|
+
* A conta que recebe o dinheiro.
|
|
7
|
+
*
|
|
8
|
+
* Esta é a peça que o comentário do M1 em `routes/billing.ts` apontava como
|
|
9
|
+
* faltante, e é a fronteira financeira do produto: **o dinheiro de uma cobrança
|
|
10
|
+
* pertence ao escritório que cobrou**, não à Baruk. A conta sai de
|
|
11
|
+
* `payment_provider_account`, que é por tenant; a credencial sai do Vault, por
|
|
12
|
+
* referência. Em nenhum ponto o Core carrega uma credencial de plataforma para
|
|
13
|
+
* emitir cobrança de tenant — se a conta não existe, não há emissão.
|
|
14
|
+
*
|
|
15
|
+
* Isso é diferente do Billing SaaS (`subscription-billing/`), onde a credencial
|
|
16
|
+
* é da plataforma porque quem cobra é a Baruk. Os dois caminhos coexistem e não
|
|
17
|
+
* se cruzam: um resolve credencial daqui, o outro da config do serviço.
|
|
18
|
+
*/
|
|
19
|
+
export interface ProviderAccount {
|
|
20
|
+
id: string;
|
|
21
|
+
provider: string;
|
|
22
|
+
accountReference: string | null;
|
|
23
|
+
environment: 'sandbox' | 'live';
|
|
24
|
+
/** A conta que o escritório OPERA. Exatamente uma por (tenant, provider). */
|
|
25
|
+
isPrimary: boolean;
|
|
26
|
+
capabilities: string[];
|
|
27
|
+
credentialRef: string | null;
|
|
28
|
+
webhookCredentialRef: string | null;
|
|
29
|
+
status: string;
|
|
30
|
+
}
|
|
31
|
+
/** Conta ativa do tenant. `null` quando o escritório ainda não conectou nenhuma. */
|
|
32
|
+
/**
|
|
33
|
+
* A conta pela qual o escritório OPERA.
|
|
34
|
+
*
|
|
35
|
+
* Antes era "a primeira conta ativa por data de criação". Isso funcionava
|
|
36
|
+
* enquanto só podia existir uma; com sandbox e produção coexistindo, viraria a
|
|
37
|
+
* pior forma de escolher para onde vai o dinheiro — implícita e dependente de
|
|
38
|
+
* ordem de inserção.
|
|
39
|
+
*
|
|
40
|
+
* Agora a escolha é uma MARCA explícita, e o banco garante que só há uma:
|
|
41
|
+
* `payment_provider_account_primary_uq`. Sem `LIMIT`, de propósito — se algum
|
|
42
|
+
* dia houvesse duas, o certo é o erro aparecer, não o sistema escolher sozinho.
|
|
43
|
+
*/
|
|
44
|
+
export declare function getActiveProviderAccount(tx: Tx): Promise<ProviderAccount | null>;
|
|
45
|
+
/** Todas as contas vivas do escritório — o laboratório e a operação. */
|
|
46
|
+
export declare function listProviderAccounts(tx: Tx): Promise<ProviderAccount[]>;
|
|
47
|
+
/**
|
|
48
|
+
* Conta ativa de um AMBIENTE específico.
|
|
49
|
+
*
|
|
50
|
+
* Existe para quem sabe o que quer — um ensaio pede `sandbox` mesmo que a
|
|
51
|
+
* operação já esteja em produção. Nunca cai em outro ambiente por falta do
|
|
52
|
+
* pedido: sem conta naquele ambiente, devolve nulo.
|
|
53
|
+
*/
|
|
54
|
+
export declare function getProviderAccountByEnvironment(tx: Tx, environment: 'sandbox' | 'live'): Promise<ProviderAccount | null>;
|
|
55
|
+
/**
|
|
56
|
+
* Promove uma conta a operacional — o ato de "entrar em produção".
|
|
57
|
+
*
|
|
58
|
+
* Explícito e reversível, em vez de efeito colateral de revogar o laboratório.
|
|
59
|
+
* A despromoção da anterior acontece na MESMA transação: entre um UPDATE e o
|
|
60
|
+
* outro existiria um instante com duas contas operacionais, e é justamente
|
|
61
|
+
* nesse instante que uma emissão escolheria errado.
|
|
62
|
+
*/
|
|
63
|
+
export declare function setPrimaryProviderAccount(tx: Tx, id: string): Promise<ProviderAccount>;
|
|
64
|
+
/**
|
|
65
|
+
* Conta por id, obrigatória e utilizável.
|
|
66
|
+
*
|
|
67
|
+
* Fail-closed de propósito: quem pede por id sabe qual conta quer, e cair na
|
|
68
|
+
* primária porque aquela sumiu seria trocar a conta sem avisar — justamente o
|
|
69
|
+
* que esta fase existe para impedir.
|
|
70
|
+
*/
|
|
71
|
+
export declare function requireProviderAccountById(tx: Tx, id: string): Promise<ProviderAccount>;
|
|
72
|
+
/** Conta por id — usada pelo webhook, que descobre o tenant pela URL. */
|
|
73
|
+
export declare function getProviderAccountById(tx: Tx, id: string): Promise<ProviderAccount | null>;
|
|
74
|
+
/**
|
|
75
|
+
* Base do gateway para um par (provider, ambiente).
|
|
76
|
+
*
|
|
77
|
+
* Exportada porque a CONEXÃO da conta também precisa dela, e uma segunda cópia
|
|
78
|
+
* divergiria: foi assim que uma chave de sandbox chegou a ser validada contra
|
|
79
|
+
* produção — o adapter caía no default `live` e devolvia 401 com a credencial
|
|
80
|
+
* correta na mão.
|
|
81
|
+
*/
|
|
82
|
+
export declare function providerBaseUrl(provider: string, environment: string): string | undefined;
|
|
83
|
+
/**
|
|
84
|
+
* Mais de uma conta elegível para o mesmo critério.
|
|
85
|
+
*
|
|
86
|
+
* Conflito e não erro de validação: o pedido está correto, quem está errado é o
|
|
87
|
+
* estado — há duas contas onde só pode haver uma. A saída é humana (revogar ou
|
|
88
|
+
* despromover uma), e por isso a mensagem diz o que fazer.
|
|
89
|
+
*/
|
|
90
|
+
export declare class AmbiguousProviderAccount extends ConflictError {
|
|
91
|
+
constructor(criterio: string, quantas: number);
|
|
92
|
+
}
|
|
93
|
+
export interface ResolvedProvider {
|
|
94
|
+
account: ProviderAccount;
|
|
95
|
+
provider: BillingProvider;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Monta o adapter já apontado para a conta do tenant.
|
|
99
|
+
*
|
|
100
|
+
* `revealSecret` é a única forma de a credencial sair do Vault, e ela sai
|
|
101
|
+
* direto para dentro do adapter — não é devolvida, logada nem guardada em
|
|
102
|
+
* variável de módulo.
|
|
103
|
+
*/
|
|
104
|
+
export declare function resolveProviderForTenant(tx: Tx, keyring: Keyring, tenantId: string, opts?: {
|
|
105
|
+
account?: ProviderAccount;
|
|
106
|
+
/**
|
|
107
|
+
* Conta que DEVE ser usada, por id.
|
|
108
|
+
*
|
|
109
|
+
* É o caminho de quem opera sobre uma cobrança que já existe: cancelar,
|
|
110
|
+
* consultar ou estornar têm de falar com a conta que emitiu, não com a que
|
|
111
|
+
* está marcada como operacional hoje. Conta ausente ou revogada falha —
|
|
112
|
+
* não cai na primária.
|
|
113
|
+
*/
|
|
114
|
+
accountId?: string | null;
|
|
115
|
+
/**
|
|
116
|
+
* Ambiente exigido pela operação.
|
|
117
|
+
*
|
|
118
|
+
* Quando informado, a conta vem daquele ambiente ou não vem. **Nunca há
|
|
119
|
+
* queda para o outro**: pedir `live` e receber `sandbox` faria a emissão
|
|
120
|
+
* parecer bem-sucedida sem dinheiro nenhum se mover, e pedir `sandbox` e
|
|
121
|
+
* receber `live` cobraria de gente de verdade num ensaio. Os dois erros são
|
|
122
|
+
* silenciosos, e é por isso que nenhum dos dois pode existir.
|
|
123
|
+
*/
|
|
124
|
+
environment?: 'sandbox' | 'live';
|
|
125
|
+
fetchImpl?: typeof fetch;
|
|
126
|
+
}): Promise<ResolvedProvider | null>;
|
|
127
|
+
//# sourceMappingURL=provider-account.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-account.d.ts","sourceRoot":"","sources":["../../src/billing/provider-account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAkC,MAAM,eAAe,CAAC;AAE9E,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,EAAE,SAAS,GAAG,MAAM,CAAC;IAChC,6EAA6E;IAC7E,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;CAChB;AA4BD,oFAAoF;AACpF;;;;;;;;;;;GAWG;AACH,wBAAsB,wBAAwB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAgBtF;AAED,wEAAwE;AACxE,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAS7E;AAED;;;;;;GAMG;AACH,wBAAsB,+BAA+B,CACnD,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,SAAS,GAAG,MAAM,GAC9B,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAYjC;AAED;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAkB5F;AAED;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAY7F;AAED,yEAAyE;AACzE,wBAAsB,sBAAsB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAOhG;AAgBD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEzF;AAED;;;;;;GAMG;AACH,qBAAa,wBAAyB,SAAQ,aAAa;gBAC7C,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAO9C;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;IACJ,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CACrB,GACL,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CA+ClC"}
|