@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
package/dist/auth/service.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ForbiddenError, UnauthorizedError, uuidv7 } from '@baruk/shared';
|
|
1
|
+
import { ForbiddenError, UnauthorizedError, ValidationError, uuidv7, } from '@baruk/shared';
|
|
2
2
|
import { withContext } from '../db/context.js';
|
|
3
3
|
import { appendAudit } from '../audit/audit.js';
|
|
4
4
|
import { loadUserPermissions } from '../rbac/authorize.js';
|
|
@@ -8,7 +8,23 @@ import { hashPassword, verifyPassword } from './password.js';
|
|
|
8
8
|
import { generateSessionToken, hashToken } from './session-token.js';
|
|
9
9
|
const SESSION_TTL_MS = 12 * 60 * 60 * 1000; // 12h
|
|
10
10
|
const REAL_CLOCK = { now: () => Date.now() };
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Cria (ou atualiza) um usuário staff com senha local. Usado pelos seeds.
|
|
13
|
+
*
|
|
14
|
+
* **A senha de um usuário que já existe é preservada por padrão.** Um seed de
|
|
15
|
+
* inicialização é, por natureza, algo que pode rodar de novo — em um deploy, em
|
|
16
|
+
* uma reconstrução de ambiente, na mão de alguém investigando. Se ele redefinir
|
|
17
|
+
* a senha em silêncio, quem administra o ambiente perde o acesso sem receber
|
|
18
|
+
* erro nenhum, e a causa é invisível: o seed "funcionou".
|
|
19
|
+
*
|
|
20
|
+
* Foi exatamente essa a armadilha encontrada em 2026-08-12, quando o
|
|
21
|
+
* `SEED_ADMIN_PASSWORD` do serviço divergiu do valor guardado no cofre. Rodar
|
|
22
|
+
* `db:seed` com o ambiente errado teria trocado a senha do administrador sem
|
|
23
|
+
* um aviso sequer.
|
|
24
|
+
*
|
|
25
|
+
* Para redefinir deliberadamente, passe `overwritePassword: true` — o nome
|
|
26
|
+
* torna a intenção explícita em quem chama, que é onde ela deve estar.
|
|
27
|
+
*/
|
|
12
28
|
export async function upsertUserWithPassword(db, input) {
|
|
13
29
|
const rows = await db `
|
|
14
30
|
INSERT INTO "user" (id, email, full_name, user_type, auth_provider)
|
|
@@ -18,16 +34,28 @@ export async function upsertUserWithPassword(db, input) {
|
|
|
18
34
|
RETURNING id
|
|
19
35
|
`;
|
|
20
36
|
const userId = rows[0].id;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
37
|
+
// `RETURNING` só devolve linha quando o INSERT ou o UPDATE de fato aconteceu:
|
|
38
|
+
// com `DO NOTHING` e credencial preexistente, o resultado é vazio. É assim que
|
|
39
|
+
// sabemos, sem uma consulta extra, se a senha foi gravada ou preservada.
|
|
40
|
+
const written = input.overwritePassword
|
|
41
|
+
? await db `
|
|
42
|
+
INSERT INTO user_credential (user_id, password_hash)
|
|
43
|
+
VALUES (${userId}, ${hashPassword(input.password)})
|
|
44
|
+
ON CONFLICT (user_id) DO UPDATE SET password_hash = EXCLUDED.password_hash, updated_at = now()
|
|
45
|
+
RETURNING user_id
|
|
46
|
+
`
|
|
47
|
+
: await db `
|
|
48
|
+
INSERT INTO user_credential (user_id, password_hash)
|
|
49
|
+
VALUES (${userId}, ${hashPassword(input.password)})
|
|
50
|
+
ON CONFLICT (user_id) DO NOTHING
|
|
51
|
+
RETURNING user_id
|
|
52
|
+
`;
|
|
26
53
|
return {
|
|
27
54
|
id: userId,
|
|
28
55
|
email: input.email,
|
|
29
56
|
fullName: input.fullName,
|
|
30
57
|
userType: input.userType ?? 'staff',
|
|
58
|
+
passwordWasSet: written.length > 0,
|
|
31
59
|
};
|
|
32
60
|
}
|
|
33
61
|
/** Login com e-mail/senha. Emite sessão; auto-seleciona tenant se houver só um. */
|
|
@@ -41,11 +69,12 @@ export async function login(db, input, clock = REAL_CLOCK) {
|
|
|
41
69
|
throw new UnauthorizedError('Credenciais inválidas');
|
|
42
70
|
}
|
|
43
71
|
const creds = await db `
|
|
44
|
-
SELECT password_hash FROM user_credential WHERE user_id = ${user.id}
|
|
72
|
+
SELECT password_hash, must_change_password FROM user_credential WHERE user_id = ${user.id}
|
|
45
73
|
`;
|
|
46
74
|
if (!creds[0] || !verifyPassword(input.password, creds[0].password_hash)) {
|
|
47
75
|
throw new UnauthorizedError('Credenciais inválidas');
|
|
48
76
|
}
|
|
77
|
+
const mustChangePassword = creds[0].must_change_password;
|
|
49
78
|
const { token, tokenHash } = generateSessionToken();
|
|
50
79
|
const now = clock.now();
|
|
51
80
|
const sessionId = uuidv7();
|
|
@@ -73,6 +102,7 @@ export async function login(db, input, clock = REAL_CLOCK) {
|
|
|
73
102
|
user: { id: user.id, email: user.email, fullName: user.full_name, userType: user.user_type },
|
|
74
103
|
memberships,
|
|
75
104
|
activeTenantId,
|
|
105
|
+
mustChangePassword,
|
|
76
106
|
};
|
|
77
107
|
}
|
|
78
108
|
/** Lista os tenants a que o usuário pertence (usa RLS self-clause de membership). */
|
|
@@ -119,12 +149,34 @@ export async function selectTenant(db, input) {
|
|
|
119
149
|
userType: session.user_type,
|
|
120
150
|
tenantId: input.tenantId,
|
|
121
151
|
permissions,
|
|
152
|
+
mustChangePassword: session.must_change_password,
|
|
122
153
|
};
|
|
123
154
|
});
|
|
124
155
|
}
|
|
125
156
|
/**
|
|
126
157
|
* Resolve uma sessão ativa em contexto autenticado (o que o middleware da API
|
|
127
158
|
* chama por request). Exige tenant ativo já selecionado.
|
|
159
|
+
*
|
|
160
|
+
* ## Por que a membership é reconferida a cada requisição
|
|
161
|
+
*
|
|
162
|
+
* `selectTenant` conferia a membership; `authenticate` não. Quem já estava
|
|
163
|
+
* dentro continuava dentro: revogar o acesso de alguém fechava a porta e não
|
|
164
|
+
* tirava ninguém da sala.
|
|
165
|
+
*
|
|
166
|
+
* Medido em 2026-09-06, contra o stack local, com o token de uma sessão já
|
|
167
|
+
* amarrada ao tenant:
|
|
168
|
+
*
|
|
169
|
+
* POST /v1/auth/select-tenant -> 403 (a revogação valia)
|
|
170
|
+
* GET /v1/clients -> 200 (e não valia)
|
|
171
|
+
*
|
|
172
|
+
* Em produção havia três sessões nessa condição, de uma conta revogada às 13:00
|
|
173
|
+
* do mesmo dia, com validade até as 21:56. Para o escritório o efeito é direto:
|
|
174
|
+
* revogar o acesso de quem sai da equipe só surtiria efeito quando a sessão
|
|
175
|
+
* dele expirasse — até doze horas depois.
|
|
176
|
+
*
|
|
177
|
+
* A conferência custa um JOIN na consulta que já existe: nenhuma ida a mais ao
|
|
178
|
+
* banco. E é fail-closed — sem membership ativa, 403, independentemente do que
|
|
179
|
+
* o `user_role` ainda diga.
|
|
128
180
|
*/
|
|
129
181
|
export async function authenticate(db, token, clock = REAL_CLOCK) {
|
|
130
182
|
const session = await resolveSessionRow(db, token, clock);
|
|
@@ -132,6 +184,17 @@ export async function authenticate(db, token, clock = REAL_CLOCK) {
|
|
|
132
184
|
throw new UnauthorizedError('Nenhum tenant selecionado para esta sessão');
|
|
133
185
|
}
|
|
134
186
|
const tenantId = session.active_tenant_id;
|
|
187
|
+
// `listMemberships` e não uma consulta própria: duas fontes de verdade para
|
|
188
|
+
// "pertence a este tenant" acabariam divergindo, e a primeira versão desta
|
|
189
|
+
// correção já provou como. Ela consultava `membership` direto, sem contexto —
|
|
190
|
+
// e `membership` tem RLS com cláusula por usuário. Sem GUC a consulta não
|
|
191
|
+
// devolve zero linhas por não haver acesso: devolve zero porque a RLS
|
|
192
|
+
// escondeu tudo. O efeito foi 403 para todo mundo, inclusive para quem tinha
|
|
193
|
+
// acesso legítimo. Zero sob RLS não é ausência.
|
|
194
|
+
const memberships = await listMemberships(db, session.user_id);
|
|
195
|
+
if (!memberships.some((m) => m.tenantId === tenantId)) {
|
|
196
|
+
throw new ForbiddenError('Usuário não pertence a este tenant');
|
|
197
|
+
}
|
|
135
198
|
return withContext(db, { tenantId, userId: session.user_id }, async (tx) => {
|
|
136
199
|
const permissions = await loadUserPermissions(tx, session.user_id);
|
|
137
200
|
const ctx = {
|
|
@@ -139,6 +202,7 @@ export async function authenticate(db, token, clock = REAL_CLOCK) {
|
|
|
139
202
|
userType: session.user_type,
|
|
140
203
|
tenantId,
|
|
141
204
|
permissions,
|
|
205
|
+
mustChangePassword: session.must_change_password,
|
|
142
206
|
};
|
|
143
207
|
if (session.user_type === 'client_portal') {
|
|
144
208
|
ctx.clientId = await getPortalClientId(tx, session.user_id);
|
|
@@ -148,9 +212,11 @@ export async function authenticate(db, token, clock = REAL_CLOCK) {
|
|
|
148
212
|
}
|
|
149
213
|
async function resolveSessionRow(db, token, clock = REAL_CLOCK) {
|
|
150
214
|
const rows = await db `
|
|
151
|
-
SELECT s.id, s.user_id, u.user_type, s.active_tenant_id
|
|
215
|
+
SELECT s.id, s.user_id, u.user_type, s.active_tenant_id,
|
|
216
|
+
coalesce(c.must_change_password, false) AS must_change_password
|
|
152
217
|
FROM user_session s
|
|
153
218
|
JOIN "user" u ON u.id = s.user_id
|
|
219
|
+
LEFT JOIN user_credential c ON c.user_id = u.id
|
|
154
220
|
WHERE s.token_hash = ${hashToken(token)}
|
|
155
221
|
AND s.revoked_at IS NULL
|
|
156
222
|
AND s.expires_at > ${new Date(clock.now())}
|
|
@@ -173,9 +239,53 @@ export async function sessionProducts(db, token) {
|
|
|
173
239
|
}
|
|
174
240
|
/** Revoga a sessão (logout). */
|
|
175
241
|
export async function logout(db, token) {
|
|
176
|
-
await db `
|
|
242
|
+
await db `SELECT revoke_user_session(${hashToken(token)})`;
|
|
177
243
|
}
|
|
244
|
+
/**
|
|
245
|
+
* Troca de senha em sessão autenticada (exige a senha atual — distinto do
|
|
246
|
+
* fluxo de token de `resetPassword`). Cobre tanto a troca voluntária quanto a
|
|
247
|
+
* troca obrigatória de `must_change_password`; a sessão corrente permanece
|
|
248
|
+
* válida (não é o cenário de "conta pode estar comprometida" do reset).
|
|
249
|
+
*/
|
|
250
|
+
export async function changePassword(db, auth, input) {
|
|
251
|
+
if (input.newPassword.length < 8) {
|
|
252
|
+
throw new ValidationError('A nova senha deve ter ao menos 8 caracteres');
|
|
253
|
+
}
|
|
254
|
+
const creds = await db `
|
|
255
|
+
SELECT password_hash, must_change_password FROM user_credential WHERE user_id = ${auth.userId}
|
|
256
|
+
`;
|
|
257
|
+
if (!creds[0] || !verifyPassword(input.currentPassword, creds[0].password_hash)) {
|
|
258
|
+
throw new UnauthorizedError('Senha atual incorreta');
|
|
259
|
+
}
|
|
260
|
+
const wasForced = creds[0].must_change_password;
|
|
261
|
+
await withContext(db, { tenantId: auth.tenantId, userId: auth.userId }, async (tx) => {
|
|
262
|
+
// Upsert via função SECURITY DEFINER (0024) — ver mesmo comentário em
|
|
263
|
+
// `resetPassword`: o papel de app não tem UPDATE em user_credential.
|
|
264
|
+
await tx `SELECT set_user_password(${auth.userId}, ${hashPassword(input.newPassword)}, false)`;
|
|
265
|
+
await appendAudit(tx, {
|
|
266
|
+
actorId: auth.userId,
|
|
267
|
+
action: wasForced ? 'mandatory_password_change_completed' : 'password_changed',
|
|
268
|
+
resourceType: 'user',
|
|
269
|
+
resourceId: auth.userId,
|
|
270
|
+
ip: input.ip,
|
|
271
|
+
userAgent: input.userAgent,
|
|
272
|
+
});
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Registra na trilha do tenant, com o ator PREENCHIDO.
|
|
277
|
+
*
|
|
278
|
+
* O `actorId` era usado só para abrir o contexto de RLS e não entrava na linha:
|
|
279
|
+
* 310 eventos de `login` em produção ficaram com `actor_id` nulo, e a tela de
|
|
280
|
+
* Auditoria — que agora diz quem praticou o ato — os atribuía a "Sistema".
|
|
281
|
+
* Entrar no sistema é o ato mais frequente da trilha e o mais óbvio de ter
|
|
282
|
+
* dono; era o único que não tinha.
|
|
283
|
+
*
|
|
284
|
+
* A correção vale daqui para a frente. As linhas históricas continuam como
|
|
285
|
+
* foram gravadas: reescrever trilha append-only para melhorar um relatório é
|
|
286
|
+
* exatamente o que uma trilha existe para impedir.
|
|
287
|
+
*/
|
|
178
288
|
async function auditWithinTenant(db, tenantId, actorId, entry) {
|
|
179
|
-
await withContext(db, { tenantId, userId: actorId }, (tx) => appendAudit(tx, entry));
|
|
289
|
+
await withContext(db, { tenantId, userId: actorId }, (tx) => appendAudit(tx, { actorId, ...entry }));
|
|
180
290
|
}
|
|
181
291
|
//# sourceMappingURL=service.js.map
|
package/dist/auth/service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/auth/service.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/auth/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
import type { Tx } from '../db/client.js';
|
|
2
|
+
import { type PaymentMean } from './payment-means-catalog.js';
|
|
3
|
+
import type { PaymentRecord, ReceivableItemRecord, ReceivableRecord, ReceivableStatus } from './receivable.js';
|
|
4
|
+
/** Status que ainda representam dinheiro a receber. */
|
|
5
|
+
declare const OPEN_STATUSES: readonly ReceivableStatus[];
|
|
6
|
+
/**
|
|
7
|
+
* De onde a dívida nasceu.
|
|
8
|
+
*
|
|
9
|
+
* `recurring` = veio de um acordo de honorário; `one_off` = lançamento avulso.
|
|
10
|
+
* Derivada de `fee_agreement_id`, nunca gravada em duplicidade — o mesmo
|
|
11
|
+
* critério que `ChargeRecord.origin` usa, para que recebível e cobrança não
|
|
12
|
+
* possam discordar sobre a própria origem.
|
|
13
|
+
*/
|
|
14
|
+
export type ReceivableOrigin = 'recurring' | 'one_off';
|
|
15
|
+
/**
|
|
16
|
+
* Quem puxou o gatilho: uma pessoa ou o scheduler.
|
|
17
|
+
*
|
|
18
|
+
* Ortogonal a `ReceivableOrigin`. Um honorário recorrente pode ter a competência
|
|
19
|
+
* de março gerada pelo cron e a de abril gerada à mão pelo operador — as duas
|
|
20
|
+
* são `recurring`, e o que muda entre elas é só isto. Procedência, nunca
|
|
21
|
+
* natureza financeira: nada no domínio pode cobrar diferente por causa deste
|
|
22
|
+
* campo (ver a migração 0037).
|
|
23
|
+
*/
|
|
24
|
+
export type ReceivableGenerationSource = 'manual' | 'automatic';
|
|
25
|
+
/**
|
|
26
|
+
* A cobrança VIVA de um recebível, resumida para uma linha de lista.
|
|
27
|
+
*
|
|
28
|
+
* Existe para que a carteira responda "esse cliente já recebeu como pagar?" sem
|
|
29
|
+
* abrir cada item. Antes, essa pergunta só tinha resposta numa SEGUNDA tabela —
|
|
30
|
+
* a de Cobranças — e o operador precisava cruzar as duas na cabeça.
|
|
31
|
+
*
|
|
32
|
+
* "Viva" usa a mesma definição de `findActiveCharge`: exclui cancelada e
|
|
33
|
+
* estornada. Divergir dessa definição faria a lista anunciar um PIX que a
|
|
34
|
+
* emissão seguinte considera inexistente.
|
|
35
|
+
*/
|
|
36
|
+
export interface ActiveChargeSummary {
|
|
37
|
+
id: string;
|
|
38
|
+
status: string;
|
|
39
|
+
/** Meios que o gateway realmente devolveu — não o método pedido na emissão. */
|
|
40
|
+
means: PaymentMean[];
|
|
41
|
+
}
|
|
42
|
+
export interface ReceivableWithBalance extends ReceivableRecord {
|
|
43
|
+
/** Soma dos pagamentos confirmados. */
|
|
44
|
+
amountPaid: number;
|
|
45
|
+
/** `amount - amountPaid`, nunca negativo. */
|
|
46
|
+
outstandingAmount: number;
|
|
47
|
+
/** Status já derivado (ver nota acima). */
|
|
48
|
+
effectiveStatus: ReceivableStatus;
|
|
49
|
+
/** Dias corridos de atraso; 0 quando não vencido. */
|
|
50
|
+
daysOverdue: number;
|
|
51
|
+
clientName: string | null;
|
|
52
|
+
/** Ver `ReceivableOrigin`. */
|
|
53
|
+
origin: ReceivableOrigin;
|
|
54
|
+
/** Ver `ReceivableGenerationSource`. */
|
|
55
|
+
generatedBy: ReceivableGenerationSource;
|
|
56
|
+
/**
|
|
57
|
+
* O que está sendo cobrado, em uma linha.
|
|
58
|
+
*
|
|
59
|
+
* Vem dos itens do recebível — a mesma fonte que o e-mail e o Portal leem.
|
|
60
|
+
* Sem isto, a única coisa que identificava a dívida numa lista era a
|
|
61
|
+
* competência, e quem recebe "2026-08" não sabe se aquilo é o honorário do
|
|
62
|
+
* mês ou a declaração de imposto de renda que pediu.
|
|
63
|
+
*/
|
|
64
|
+
description: string | null;
|
|
65
|
+
/** Anotação livre do operador (avulso). Nunca vai para o cliente. */
|
|
66
|
+
notes: string | null;
|
|
67
|
+
/** Tipo de serviço escolhido no lançamento avulso. */
|
|
68
|
+
serviceCategory: string | null;
|
|
69
|
+
/** Cobrança viva, quando já houver alguma emitida. Ver `ActiveChargeSummary`. */
|
|
70
|
+
activeCharge: ActiveChargeSummary | null;
|
|
71
|
+
}
|
|
72
|
+
export declare function assertCompetence(competence: string): void;
|
|
73
|
+
/**
|
|
74
|
+
* Data de vencimento de uma competência, respeitando o `due_day` do honorário.
|
|
75
|
+
*
|
|
76
|
+
* `due_day` é limitado a 28 no schema justamente para não existir "dia 31 de
|
|
77
|
+
* fevereiro"; ainda assim clampamos ao último dia do mês, porque a regra de
|
|
78
|
+
* negócio não pode depender de uma constraint continuar existindo.
|
|
79
|
+
*/
|
|
80
|
+
export declare function dueDateFor(competence: string, dueDay: number | null): string;
|
|
81
|
+
export interface CompetenceDueDateCheck {
|
|
82
|
+
coherent: boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Distância em MESES entre o mês do vencimento e o mês da competência.
|
|
85
|
+
* Negativo = vence antes da competência. Zero = mesmo mês (o que o fluxo
|
|
86
|
+
* derivado sempre produz).
|
|
87
|
+
*/
|
|
88
|
+
monthsFromCompetence: number;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* A competência e o vencimento informados fazem sentido juntos?
|
|
92
|
+
*
|
|
93
|
+
* Aritmética de mês em inteiros, não em `Date`: o que importa é a distância entre
|
|
94
|
+
* dois meses do calendário, e converter para instante só introduziria fuso onde
|
|
95
|
+
* não há hora nenhuma envolvida.
|
|
96
|
+
*/
|
|
97
|
+
export declare function checkCompetenceDueDate(competence: string, dueDate: string): CompetenceDueDateCheck;
|
|
98
|
+
/**
|
|
99
|
+
* Por que este honorário gera — ou não gera — nesta competência.
|
|
100
|
+
*
|
|
101
|
+
* `feeAppliesTo` respondia sim/não, e isso bastava para o motor: ele só precisa
|
|
102
|
+
* saber se insere. Não basta para o dry-run que autoriza a ativação do
|
|
103
|
+
* scheduler (§25 da fase): "42 acordos não vão gerar" é um número que não
|
|
104
|
+
* autoriza nada. "12 suspensos, 8 encerrados, 22 fora de vigência" é.
|
|
105
|
+
*
|
|
106
|
+
* A regra é a mesma dos dois lados — este enum é uma decomposição do booleano
|
|
107
|
+
* anterior, não uma segunda regra. `feeAppliesTo` passou a derivar daqui
|
|
108
|
+
* justamente para que nunca possam divergir.
|
|
109
|
+
*/
|
|
110
|
+
export type FeeCompetenceVerdict =
|
|
111
|
+
/** Gera. */
|
|
112
|
+
'eligible'
|
|
113
|
+
/** Suspenso: a cobrança está pausada por decisão do escritório. */
|
|
114
|
+
| 'suspended'
|
|
115
|
+
/** Encerrado/cancelado: o acordo acabou. */
|
|
116
|
+
| 'canceled'
|
|
117
|
+
/** A vigência começa depois desta competência. */
|
|
118
|
+
| 'before_term'
|
|
119
|
+
/** A vigência terminou antes desta competência. */
|
|
120
|
+
| 'after_term'
|
|
121
|
+
/** Vigente e ativo, mas a periodicidade não cai neste mês (trimestral/anual). */
|
|
122
|
+
| 'off_cycle'
|
|
123
|
+
/** Avulso — nunca nasce em lote. */
|
|
124
|
+
| 'one_time'
|
|
125
|
+
/** Trimestral/anual sem `startsOn`: não há âncora de ciclo. Fail-safe. */
|
|
126
|
+
| 'no_anchor';
|
|
127
|
+
export interface FeeCompetenceInput {
|
|
128
|
+
periodicity: string;
|
|
129
|
+
startsOn: string | null;
|
|
130
|
+
endsOn: string | null;
|
|
131
|
+
status: string;
|
|
132
|
+
}
|
|
133
|
+
/** Ver `FeeCompetenceVerdict`. Pura: nenhum I/O, nenhum relógio. */
|
|
134
|
+
export declare function classifyFeeForCompetence(fee: FeeCompetenceInput, competence: string): FeeCompetenceVerdict;
|
|
135
|
+
/** Um honorário vale para a competência? Considera vigência e periodicidade. */
|
|
136
|
+
export declare function feeAppliesTo(fee: FeeCompetenceInput, competence: string): boolean;
|
|
137
|
+
export interface GenerationResult {
|
|
138
|
+
competence: string;
|
|
139
|
+
created: ReceivableWithBalance[];
|
|
140
|
+
/** Honorários que já tinham recebível nesta competência. */
|
|
141
|
+
skipped: number;
|
|
142
|
+
/** Honorários fora de vigência/periodicidade para a competência. */
|
|
143
|
+
notApplicable: number;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Gera os recebíveis de uma competência a partir dos honorários ativos.
|
|
147
|
+
*
|
|
148
|
+
* Idempotente por construção: o índice único `(tenant_id, fee_agreement_id,
|
|
149
|
+
* competence)` do M0 é a garantia real, e o `ON CONFLICT DO NOTHING` a
|
|
150
|
+
* transforma em "pular" em vez de "explodir". Rodar duas vezes no mesmo mês não
|
|
151
|
+
* duplica cobrança — o que aqui não é detalhe técnico: cobrar o cliente duas
|
|
152
|
+
* vezes é o erro que destrói a confiança no sistema.
|
|
153
|
+
*/
|
|
154
|
+
export declare function generateReceivablesForCompetence(tx: Tx, input: {
|
|
155
|
+
competence: string;
|
|
156
|
+
createdBy?: string | null;
|
|
157
|
+
feeAgreementIds?: readonly string[];
|
|
158
|
+
/**
|
|
159
|
+
* Procedência das linhas criadas. Omitir é `manual` — o padrão protege o
|
|
160
|
+
* chamador antigo: um caminho novo que esqueça de declarar é gravado como
|
|
161
|
+
* feito por gente, e nunca como automação que ninguém consegue rastrear.
|
|
162
|
+
*/
|
|
163
|
+
source?: ReceivableGenerationSource;
|
|
164
|
+
}): Promise<GenerationResult>;
|
|
165
|
+
/**
|
|
166
|
+
* Lançamento avulso — serviço extra que não vem de honorário recorrente.
|
|
167
|
+
*
|
|
168
|
+
* A guarda de coerência mora AQUI, e não na rota, porque quem chama o domínio
|
|
169
|
+
* direto (script de importação, backfill, outro serviço) precisa da mesma
|
|
170
|
+
* proteção que o operador tem pela tela. Uma validação só na borda HTTP protege
|
|
171
|
+
* a borda HTTP.
|
|
172
|
+
*/
|
|
173
|
+
export declare function createOneOffReceivable(tx: Tx, input: {
|
|
174
|
+
clientId: string;
|
|
175
|
+
description: string;
|
|
176
|
+
amount: number;
|
|
177
|
+
dueDate: string;
|
|
178
|
+
competence?: string | null;
|
|
179
|
+
/**
|
|
180
|
+
* Confirmação explícita de que a combinação competência × vencimento, mesmo
|
|
181
|
+
* fora da janela esperada, é intencional. Nunca é o padrão: o operador tem de
|
|
182
|
+
* ver a distância e dizer que é isso mesmo.
|
|
183
|
+
*/
|
|
184
|
+
competenceMismatchAck?: boolean;
|
|
185
|
+
/**
|
|
186
|
+
* Identificador da TENTATIVA, não do lançamento.
|
|
187
|
+
*
|
|
188
|
+
* Reenviar a mesma chave devolve o recebível já criado, em vez de criar um
|
|
189
|
+
* segundo. Sem isto, duplo clique, retry de HTTP ou refresh depois do POST
|
|
190
|
+
* produziam dois recebíveis para o mesmo serviço — e, como a emissão de
|
|
191
|
+
* cobrança é idempotente POR RECEBÍVEL, dois PIX legítimos para o cliente
|
|
192
|
+
* pagar duas vezes o mesmo trabalho.
|
|
193
|
+
*/
|
|
194
|
+
idempotencyKey?: string | null;
|
|
195
|
+
/**
|
|
196
|
+
* Anotação interna do operador ("cliente pediu prazo", "combinado por
|
|
197
|
+
* telefone"). Fica no `metadata` do recebível: é dado do lançamento, não
|
|
198
|
+
* item da dívida — colocá-lo na descrição faria a observação vazar para o
|
|
199
|
+
* e-mail e para o Portal do cliente.
|
|
200
|
+
*/
|
|
201
|
+
notes?: string | null;
|
|
202
|
+
/** Tipo do serviço avulso, como escolhido no lançamento. */
|
|
203
|
+
serviceCategory?: string | null;
|
|
204
|
+
createdBy?: string | null;
|
|
205
|
+
}): Promise<ReceivableWithBalance>;
|
|
206
|
+
export interface ReceivableFilter {
|
|
207
|
+
clientId?: string;
|
|
208
|
+
status?: ReceivableStatus;
|
|
209
|
+
competence?: string;
|
|
210
|
+
/** Só o que ainda representa dinheiro a receber. */
|
|
211
|
+
openOnly?: boolean;
|
|
212
|
+
/** Só o que está vencido (status derivado). */
|
|
213
|
+
overdueOnly?: boolean;
|
|
214
|
+
/** Recorrente (nasceu de honorário) ou avulso. */
|
|
215
|
+
origin?: ReceivableOrigin;
|
|
216
|
+
/** Vencimento de/até, inclusivo. */
|
|
217
|
+
dueFrom?: string;
|
|
218
|
+
dueTo?: string;
|
|
219
|
+
/** Busca no nome do cliente ou na descrição dos itens. */
|
|
220
|
+
search?: string;
|
|
221
|
+
limit?: number;
|
|
222
|
+
offset?: number;
|
|
223
|
+
}
|
|
224
|
+
export declare function listReceivables(tx: Tx, filter?: ReceivableFilter): Promise<{
|
|
225
|
+
items: ReceivableWithBalance[];
|
|
226
|
+
total: number;
|
|
227
|
+
}>;
|
|
228
|
+
export declare function getReceivable(tx: Tx, id: string): Promise<ReceivableWithBalance>;
|
|
229
|
+
export declare function listReceivableItems(tx: Tx, receivableId: string): Promise<ReceivableItemRecord[]>;
|
|
230
|
+
export declare function listPayments(tx: Tx, receivableId: string): Promise<PaymentRecord[]>;
|
|
231
|
+
export interface RegisterPaymentInput {
|
|
232
|
+
receivableId: string;
|
|
233
|
+
amount: number;
|
|
234
|
+
method?: PaymentRecord['method'];
|
|
235
|
+
paidAt?: string;
|
|
236
|
+
chargeId?: string | null;
|
|
237
|
+
note?: string | null;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Registra dinheiro recebido e reavalia o status do recebível.
|
|
241
|
+
*
|
|
242
|
+
* A soma dos pagamentos confirmados é a fonte da verdade do que foi pago — o
|
|
243
|
+
* status é consequência dela, nunca o contrário. Por isso o recálculo lê a soma
|
|
244
|
+
* do banco em vez de somar em memória: dois lançamentos concorrentes não podem
|
|
245
|
+
* produzir um `paid` com saldo em aberto.
|
|
246
|
+
*/
|
|
247
|
+
export declare function registerPayment(tx: Tx, input: RegisterPaymentInput): Promise<ReceivableWithBalance>;
|
|
248
|
+
export interface SettlementReversal {
|
|
249
|
+
/** Quantas linhas de pagamento deixaram de contar. Zero = nada a reverter. */
|
|
250
|
+
reversedPayments: number;
|
|
251
|
+
/** Soma anulada. Serve à trilha: "quanto deixou de ser considerado recebido". */
|
|
252
|
+
reversedAmount: number;
|
|
253
|
+
receivableId: string | null;
|
|
254
|
+
/** Estado do recebível DEPOIS da reversão, quando havia um. */
|
|
255
|
+
receivable: ReceivableWithBalance | null;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Anula a liquidação registrada para uma cobrança — o dinheiro nunca entrou.
|
|
259
|
+
*
|
|
260
|
+
* Não confundir com estorno. No estorno o dinheiro **entrou e saiu**: são dois
|
|
261
|
+
* fatos de caixa, a dívida foi quitada, e reabri-la seria cobrar de novo algo
|
|
262
|
+
* que foi pago. Aqui não há fato novo — há um fato anterior que deixou de valer,
|
|
263
|
+
* e manter o recebível quitado seria o sistema afirmando um recebimento que a
|
|
264
|
+
* própria origem já negou.
|
|
265
|
+
*
|
|
266
|
+
* **Nada é apagado.** A linha de `payment` permanece com valor, método e data em
|
|
267
|
+
* que se acreditou ter recebido; ela sai do saldo e passa a dizer quando e por
|
|
268
|
+
* que foi anulada. `charge.paid_at` também permanece — é o registro de quando a
|
|
269
|
+
* cobrança esteve liquidada.
|
|
270
|
+
*
|
|
271
|
+
* **Idempotente por construção:** o `UPDATE` só alcança pagamentos ainda
|
|
272
|
+
* `confirmed`. Uma segunda reversão do mesmo evento encontra zero linhas, não
|
|
273
|
+
* mexe em nada e devolve `reversedPayments: 0`. Não há contador a decrementar
|
|
274
|
+
* duas vezes.
|
|
275
|
+
*
|
|
276
|
+
* Só toca pagamentos **desta cobrança**. Uma baixa manual que o escritório deu
|
|
277
|
+
* por fora (`charge_id IS NULL`) é outro fato, de outra origem, e o gateway não
|
|
278
|
+
* tem autoridade sobre ela.
|
|
279
|
+
*/
|
|
280
|
+
export declare function reverseSettlementForCharge(tx: Tx, chargeId: string, reason: string): Promise<SettlementReversal>;
|
|
281
|
+
export interface CancelReceivableInput {
|
|
282
|
+
/**
|
|
283
|
+
* Por que a obrigação deixou de existir.
|
|
284
|
+
*
|
|
285
|
+
* Obrigatório. Cancelar recebível é apagar dinheiro que o escritório tinha a
|
|
286
|
+
* receber, e daqui a seis meses ninguém lembra por quê — a diferença entre
|
|
287
|
+
* "lançamento em duplicidade" e "serviço não prestado" muda o que se responde
|
|
288
|
+
* numa conferência contábil.
|
|
289
|
+
*/
|
|
290
|
+
reason: string;
|
|
291
|
+
actorId?: string | null;
|
|
292
|
+
}
|
|
293
|
+
export interface CanceledReceivable extends ReceivableWithBalance {
|
|
294
|
+
/** Quanto deixou de ser exigível. Zero quando nada havia em aberto. */
|
|
295
|
+
canceledOutstanding: number;
|
|
296
|
+
/** Quanto já havia entrado e CONTINUA entrado. */
|
|
297
|
+
preservedPayments: number;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Cancela a obrigação, preservando o que já foi pago.
|
|
301
|
+
*
|
|
302
|
+
* ## Cancelar não é pagar, e não é estornar
|
|
303
|
+
*
|
|
304
|
+
* O que morre aqui é o **saldo em aberto**. O dinheiro que já entrou continua
|
|
305
|
+
* tendo entrado: os pagamentos não são tocados, e seguem somando em "Recebido".
|
|
306
|
+
* Transformar o saldo cancelado em recebimento inventaria receita; apagar o
|
|
307
|
+
* pagamento anterior apagaria dinheiro que existe na conta do escritório.
|
|
308
|
+
*
|
|
309
|
+
* ## Por que aceita pagamento parcial agora
|
|
310
|
+
*
|
|
311
|
+
* A versão anterior recusava qualquer recebível com pagamento — o que deixava
|
|
312
|
+
* sem saída exatamente o caso mais comum de cancelamento legítimo: cliente pagou
|
|
313
|
+
* parte, o serviço foi cancelado, e o resto não é mais devido. Sem esta operação,
|
|
314
|
+
* a única forma de tirar o saldo do painel seria fingir um pagamento ou apagar a
|
|
315
|
+
* linha no banco. As duas são piores.
|
|
316
|
+
*
|
|
317
|
+
* Recebível **totalmente pago** continua recusado: ali não há obrigação a
|
|
318
|
+
* cancelar, e desfazer dinheiro recebido é estorno — outra operação, com outras
|
|
319
|
+
* consequências contábeis.
|
|
320
|
+
*/
|
|
321
|
+
export declare function cancelReceivable(tx: Tx, id: string, input: CancelReceivableInput): Promise<CanceledReceivable>;
|
|
322
|
+
/**
|
|
323
|
+
* Materializa a transição para `overdue`.
|
|
324
|
+
*
|
|
325
|
+
* A leitura já deriva o vencido (ver nota no topo) — esta função existe para dar
|
|
326
|
+
* um INSTANTE à transição, que é o que a régua de cobrança precisa para disparar
|
|
327
|
+
* `RECEIVABLE_OVERDUE` uma única vez. Retorna os ids afetados justamente para
|
|
328
|
+
* quem for emitir os eventos na próxima onda.
|
|
329
|
+
*/
|
|
330
|
+
export declare function markOverdueReceivables(tx: Tx): Promise<string[]>;
|
|
331
|
+
export interface FinancialSummary {
|
|
332
|
+
totalReceivable: number;
|
|
333
|
+
totalOpen: number;
|
|
334
|
+
totalOverdue: number;
|
|
335
|
+
totalPaid: number;
|
|
336
|
+
/** Vence nos próximos 7 dias e ainda não foi pago. */
|
|
337
|
+
totalDueSoon: number;
|
|
338
|
+
overdueClientCount: number;
|
|
339
|
+
openCount: number;
|
|
340
|
+
overdueCount: number;
|
|
341
|
+
}
|
|
342
|
+
export declare function financialSummary(tx: Tx): Promise<FinancialSummary>;
|
|
343
|
+
/**
|
|
344
|
+
* Faixas de aging. Padrão do produto, **não** política imutável: as faixas são
|
|
345
|
+
* parâmetro justamente para que um escritório possa usar as suas sem alteração
|
|
346
|
+
* de código.
|
|
347
|
+
*/
|
|
348
|
+
export declare const DEFAULT_AGING_BUCKETS: readonly {
|
|
349
|
+
label: string;
|
|
350
|
+
from: number;
|
|
351
|
+
to: number | null;
|
|
352
|
+
}[];
|
|
353
|
+
export interface AgingBucket {
|
|
354
|
+
label: string;
|
|
355
|
+
from: number;
|
|
356
|
+
to: number | null;
|
|
357
|
+
amount: number;
|
|
358
|
+
count: number;
|
|
359
|
+
clientCount: number;
|
|
360
|
+
}
|
|
361
|
+
export declare function agingBuckets(tx: Tx, buckets?: readonly {
|
|
362
|
+
label: string;
|
|
363
|
+
from: number;
|
|
364
|
+
to: number | null;
|
|
365
|
+
}[]): Promise<AgingBucket[]>;
|
|
366
|
+
/** Situação financeira de um cliente — usada no console e no portal. */
|
|
367
|
+
export declare function clientFinancialSummary(tx: Tx, clientId: string): Promise<{
|
|
368
|
+
open: number;
|
|
369
|
+
overdue: number;
|
|
370
|
+
paid: number;
|
|
371
|
+
nextDueDate: string | null;
|
|
372
|
+
}>;
|
|
373
|
+
export { OPEN_STATUSES };
|
|
374
|
+
//# sourceMappingURL=ar-repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ar-repository.d.ts","sourceRoot":"","sources":["../../src/billing/ar-repository.ts"],"names":[],"mappings":"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"}
|