@baruk/core 0.3.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.baruk-provenance.json +10 -0
- package/CHANGELOG.md +127 -0
- package/dist/audit/repository.d.ts +33 -1
- package/dist/audit/repository.d.ts.map +1 -1
- package/dist/audit/repository.js +41 -7
- package/dist/audit/repository.js.map +1 -1
- package/dist/auth/password-reset.d.ts +30 -1
- package/dist/auth/password-reset.d.ts.map +1 -1
- package/dist/auth/password-reset.js +139 -11
- package/dist/auth/password-reset.js.map +1 -1
- package/dist/auth/service.d.ts +60 -2
- package/dist/auth/service.d.ts.map +1 -1
- package/dist/auth/service.js +121 -11
- package/dist/auth/service.js.map +1 -1
- package/dist/billing/ar-repository.d.ts +374 -0
- package/dist/billing/ar-repository.d.ts.map +1 -0
- package/dist/billing/ar-repository.js +783 -0
- package/dist/billing/ar-repository.js.map +1 -0
- package/dist/billing/auto-generation.d.ts +87 -0
- package/dist/billing/auto-generation.d.ts.map +1 -0
- package/dist/billing/auto-generation.js +181 -0
- package/dist/billing/auto-generation.js.map +1 -0
- package/dist/billing/live-guard.d.ts +64 -0
- package/dist/billing/live-guard.d.ts.map +1 -0
- package/dist/billing/live-guard.js +68 -0
- package/dist/billing/live-guard.js.map +1 -0
- package/dist/billing/payment-means-catalog.d.ts +17 -0
- package/dist/billing/payment-means-catalog.d.ts.map +1 -0
- package/dist/billing/payment-means-catalog.js +21 -0
- package/dist/billing/payment-means-catalog.js.map +1 -0
- package/dist/billing/payment-means.d.ts +38 -0
- package/dist/billing/payment-means.d.ts.map +1 -0
- package/dist/billing/payment-means.js +29 -0
- package/dist/billing/payment-means.js.map +1 -0
- package/dist/billing/payment-rail.d.ts +118 -0
- package/dist/billing/payment-rail.d.ts.map +1 -0
- package/dist/billing/payment-rail.js +295 -0
- package/dist/billing/payment-rail.js.map +1 -0
- package/dist/billing/provider/asaas.d.ts +46 -1
- package/dist/billing/provider/asaas.d.ts.map +1 -1
- package/dist/billing/provider/asaas.js +194 -14
- package/dist/billing/provider/asaas.js.map +1 -1
- package/dist/billing/provider/manual.js +1 -1
- package/dist/billing/provider/manual.js.map +1 -1
- package/dist/billing/provider/types.d.ts +115 -8
- package/dist/billing/provider/types.d.ts.map +1 -1
- package/dist/billing/provider-account.d.ts +127 -0
- package/dist/billing/provider-account.d.ts.map +1 -0
- package/dist/billing/provider-account.js +217 -0
- package/dist/billing/provider-account.js.map +1 -0
- package/dist/billing/provider-onboarding.d.ts +67 -0
- package/dist/billing/provider-onboarding.d.ts.map +1 -0
- package/dist/billing/provider-onboarding.js +234 -0
- package/dist/billing/provider-onboarding.js.map +1 -0
- package/dist/billing/receivable.d.ts +5 -1
- package/dist/billing/receivable.d.ts.map +1 -1
- package/dist/billing/reconcile.d.ts +58 -0
- package/dist/billing/reconcile.d.ts.map +1 -0
- package/dist/billing/reconcile.js +138 -0
- package/dist/billing/reconcile.js.map +1 -0
- package/dist/billing/repository.d.ts +134 -1
- package/dist/billing/repository.d.ts.map +1 -1
- package/dist/billing/repository.js +193 -20
- package/dist/billing/repository.js.map +1 -1
- package/dist/cjs/audit/repository.js +41 -7
- package/dist/cjs/audit/repository.js.map +1 -1
- package/dist/cjs/auth/password-reset.js +141 -11
- package/dist/cjs/auth/password-reset.js.map +1 -1
- package/dist/cjs/auth/service.js +121 -10
- package/dist/cjs/auth/service.js.map +1 -1
- package/dist/cjs/billing/ar-repository.js +804 -0
- package/dist/cjs/billing/ar-repository.js.map +1 -0
- package/dist/cjs/billing/auto-generation.js +186 -0
- package/dist/cjs/billing/auto-generation.js.map +1 -0
- package/dist/cjs/billing/live-guard.js +72 -0
- package/dist/cjs/billing/live-guard.js.map +1 -0
- package/dist/cjs/billing/payment-means-catalog.js +25 -0
- package/dist/cjs/billing/payment-means-catalog.js.map +1 -0
- package/dist/cjs/billing/payment-means.js +33 -0
- package/dist/cjs/billing/payment-means.js.map +1 -0
- package/dist/cjs/billing/payment-rail.js +301 -0
- package/dist/cjs/billing/payment-rail.js.map +1 -0
- package/dist/cjs/billing/provider/asaas.js +194 -14
- package/dist/cjs/billing/provider/asaas.js.map +1 -1
- package/dist/cjs/billing/provider/manual.js +1 -1
- package/dist/cjs/billing/provider/manual.js.map +1 -1
- package/dist/cjs/billing/provider-account.js +229 -0
- package/dist/cjs/billing/provider-account.js.map +1 -0
- package/dist/cjs/billing/provider-onboarding.js +239 -0
- package/dist/cjs/billing/provider-onboarding.js.map +1 -0
- package/dist/cjs/billing/reconcile.js +143 -0
- package/dist/cjs/billing/reconcile.js.map +1 -0
- package/dist/cjs/billing/repository.js +197 -19
- package/dist/cjs/billing/repository.js.map +1 -1
- package/dist/cjs/clients/ibge.js +103 -0
- package/dist/cjs/clients/ibge.js.map +1 -0
- package/dist/cjs/clients/repository.js +276 -23
- package/dist/cjs/clients/repository.js.map +1 -1
- package/dist/cjs/collection/branding.js +330 -0
- package/dist/cjs/collection/branding.js.map +1 -0
- package/dist/cjs/collection/channel-accounts.js +137 -0
- package/dist/cjs/collection/channel-accounts.js.map +1 -0
- package/dist/cjs/collection/channel.js +17 -0
- package/dist/cjs/collection/channel.js.map +1 -0
- package/dist/cjs/collection/clearance-store.js +74 -0
- package/dist/cjs/collection/clearance-store.js.map +1 -0
- package/dist/cjs/collection/communication-bridge.js +140 -0
- package/dist/cjs/collection/communication-bridge.js.map +1 -0
- package/dist/cjs/collection/communication-runtime.js +256 -0
- package/dist/cjs/collection/communication-runtime.js.map +1 -0
- package/dist/cjs/collection/consent-repository.js +84 -0
- package/dist/cjs/collection/consent-repository.js.map +1 -0
- package/dist/cjs/collection/copy.js +125 -0
- package/dist/cjs/collection/copy.js.map +1 -0
- package/dist/cjs/collection/delivery-callback.js +151 -0
- package/dist/cjs/collection/delivery-callback.js.map +1 -0
- package/dist/cjs/collection/email-layout.js +252 -0
- package/dist/cjs/collection/email-layout.js.map +1 -0
- package/dist/cjs/collection/engine.js +434 -0
- package/dist/cjs/collection/engine.js.map +1 -0
- package/dist/cjs/collection/format.js +76 -0
- package/dist/cjs/collection/format.js.map +1 -0
- package/dist/cjs/collection/payment-block.js +3 -0
- package/dist/cjs/collection/payment-block.js.map +1 -0
- package/dist/cjs/collection/policy.js +175 -0
- package/dist/cjs/collection/policy.js.map +1 -0
- package/dist/cjs/collection/repository.js +260 -0
- package/dist/cjs/collection/repository.js.map +1 -0
- package/dist/cjs/collection/subject.js +104 -0
- package/dist/cjs/collection/subject.js.map +1 -0
- package/dist/cjs/collection/template-catalog.js +165 -0
- package/dist/cjs/collection/template-catalog.js.map +1 -0
- package/dist/cjs/collection/template.js +78 -0
- package/dist/cjs/collection/template.js.map +1 -0
- package/dist/cjs/communication/adapters/email.js +132 -0
- package/dist/cjs/communication/adapters/email.js.map +1 -0
- package/dist/cjs/communication/adapters/sms.js +127 -0
- package/dist/cjs/communication/adapters/sms.js.map +1 -0
- package/dist/cjs/communication/adapters/whatsapp-language.js +39 -0
- package/dist/cjs/communication/adapters/whatsapp-language.js.map +1 -0
- package/dist/cjs/communication/adapters/whatsapp-templates.js +100 -0
- package/dist/cjs/communication/adapters/whatsapp-templates.js.map +1 -0
- package/dist/cjs/communication/adapters/whatsapp.js +213 -0
- package/dist/cjs/communication/adapters/whatsapp.js.map +1 -0
- package/dist/cjs/communication/audit.js +61 -0
- package/dist/cjs/communication/audit.js.map +1 -0
- package/dist/cjs/communication/capabilities.js +76 -0
- package/dist/cjs/communication/capabilities.js.map +1 -0
- package/dist/cjs/communication/channel.js +53 -0
- package/dist/cjs/communication/channel.js.map +1 -0
- package/dist/cjs/communication/claim.js +228 -0
- package/dist/cjs/communication/claim.js.map +1 -0
- package/dist/cjs/communication/clearance.js +18 -0
- package/dist/cjs/communication/clearance.js.map +1 -0
- package/dist/cjs/communication/consent.js +43 -0
- package/dist/cjs/communication/consent.js.map +1 -0
- package/dist/cjs/communication/context.js +45 -0
- package/dist/cjs/communication/context.js.map +1 -0
- package/dist/cjs/communication/credentials.js +121 -0
- package/dist/cjs/communication/credentials.js.map +1 -0
- package/dist/cjs/communication/dry-run-scenario.js +166 -0
- package/dist/cjs/communication/dry-run-scenario.js.map +1 -0
- package/dist/cjs/communication/dry-run.js +97 -0
- package/dist/cjs/communication/dry-run.js.map +1 -0
- package/dist/cjs/communication/engine.js +495 -0
- package/dist/cjs/communication/engine.js.map +1 -0
- package/dist/cjs/communication/graph.js +50 -0
- package/dist/cjs/communication/graph.js.map +1 -0
- package/dist/cjs/communication/idempotency.js +26 -0
- package/dist/cjs/communication/idempotency.js.map +1 -0
- package/dist/cjs/communication/identity.js +110 -0
- package/dist/cjs/communication/identity.js.map +1 -0
- package/dist/cjs/communication/index.js +135 -0
- package/dist/cjs/communication/index.js.map +1 -0
- package/dist/cjs/communication/onboarding.js +297 -0
- package/dist/cjs/communication/onboarding.js.map +1 -0
- package/dist/cjs/communication/policy.js +16 -0
- package/dist/cjs/communication/policy.js.map +1 -0
- package/dist/cjs/communication/routing.js +77 -0
- package/dist/cjs/communication/routing.js.map +1 -0
- package/dist/cjs/communication/sender-profile.js +128 -0
- package/dist/cjs/communication/sender-profile.js.map +1 -0
- package/dist/cjs/communication/status.js +86 -0
- package/dist/cjs/communication/status.js.map +1 -0
- package/dist/cjs/communication/stores/onboarding.js +135 -0
- package/dist/cjs/communication/stores/onboarding.js.map +1 -0
- package/dist/cjs/communication/stores/postgres.js +458 -0
- package/dist/cjs/communication/stores/postgres.js.map +1 -0
- package/dist/cjs/communication/stores/routing.js +334 -0
- package/dist/cjs/communication/stores/routing.js.map +1 -0
- package/dist/cjs/communication/stores/secrets.js +126 -0
- package/dist/cjs/communication/stores/secrets.js.map +1 -0
- package/dist/cjs/communication/template-provider.js +22 -0
- package/dist/cjs/communication/template-provider.js.map +1 -0
- package/dist/cjs/communication/template.js +63 -0
- package/dist/cjs/communication/template.js.map +1 -0
- package/dist/cjs/communication/webhook-subscription.js +258 -0
- package/dist/cjs/communication/webhook-subscription.js.map +1 -0
- package/dist/cjs/communication/webhook.js +292 -0
- package/dist/cjs/communication/webhook.js.map +1 -0
- package/dist/cjs/competence/business-days.js +155 -0
- package/dist/cjs/competence/business-days.js.map +1 -0
- package/dist/cjs/competence/catalog-validation.js +174 -0
- package/dist/cjs/competence/catalog-validation.js.map +1 -0
- package/dist/cjs/competence/obligation-preview.js +190 -0
- package/dist/cjs/competence/obligation-preview.js.map +1 -0
- package/dist/cjs/competence/repository.js +622 -0
- package/dist/cjs/competence/repository.js.map +1 -0
- package/dist/cjs/contacts/phone.js +192 -0
- package/dist/cjs/contacts/phone.js.map +1 -0
- package/dist/cjs/dashboard/pilot-panel.js +90 -0
- package/dist/cjs/dashboard/pilot-panel.js.map +1 -0
- package/dist/cjs/dashboard/repository.js +11 -1
- package/dist/cjs/dashboard/repository.js.map +1 -1
- package/dist/cjs/db/client.js +17 -11
- package/dist/cjs/db/client.js.map +1 -1
- package/dist/cjs/db/provision-e2e-identity.js +111 -0
- package/dist/cjs/db/provision-e2e-identity.js.map +1 -0
- package/dist/cjs/db/seed-catalog.js +48 -0
- package/dist/cjs/db/seed-catalog.js.map +1 -0
- package/dist/cjs/db/seed.js +15 -7
- package/dist/cjs/db/seed.js.map +1 -1
- package/dist/cjs/documents/repository.js +244 -0
- package/dist/cjs/documents/repository.js.map +1 -0
- package/dist/cjs/documents/requests.js +136 -0
- package/dist/cjs/documents/requests.js.map +1 -0
- package/dist/cjs/fiscal/applicability.js +164 -0
- package/dist/cjs/fiscal/applicability.js.map +1 -0
- package/dist/cjs/fiscal/conditions.js +198 -0
- package/dist/cjs/fiscal/conditions.js.map +1 -0
- package/dist/cjs/fiscal/contracts/nfse-adn-contract.js +390 -0
- package/dist/cjs/fiscal/contracts/nfse-adn-contract.js.map +1 -0
- package/dist/cjs/fiscal/contracts/nfse-adn-endpoint.js +108 -0
- package/dist/cjs/fiscal/contracts/nfse-adn-endpoint.js.map +1 -0
- package/dist/cjs/fiscal/contracts/nfse-adn-envelope.js +220 -0
- package/dist/cjs/fiscal/contracts/nfse-adn-envelope.js.map +1 -0
- package/dist/cjs/fiscal/coverage/model.js +127 -0
- package/dist/cjs/fiscal/coverage/model.js.map +1 -0
- package/dist/cjs/fiscal/coverage/requests.js +99 -0
- package/dist/cjs/fiscal/coverage/requests.js.map +1 -0
- package/dist/cjs/fiscal/credentials/material.js +168 -0
- package/dist/cjs/fiscal/credentials/material.js.map +1 -0
- package/dist/cjs/fiscal/credentials/readiness.js +163 -0
- package/dist/cjs/fiscal/credentials/readiness.js.map +1 -0
- package/dist/cjs/fiscal/eligibility.js +199 -0
- package/dist/cjs/fiscal/eligibility.js.map +1 -0
- package/dist/cjs/fiscal/ingestion/__fixtures__/nfse.js +128 -0
- package/dist/cjs/fiscal/ingestion/__fixtures__/nfse.js.map +1 -0
- package/dist/cjs/fiscal/ingestion/adn-transport.js +229 -0
- package/dist/cjs/fiscal/ingestion/adn-transport.js.map +1 -0
- package/dist/cjs/fiscal/ingestion/direction.js +36 -0
- package/dist/cjs/fiscal/ingestion/direction.js.map +1 -0
- package/dist/cjs/fiscal/ingestion/nfse-adn.js +228 -0
- package/dist/cjs/fiscal/ingestion/nfse-adn.js.map +1 -0
- package/dist/cjs/fiscal/ingestion/pipeline.js +704 -0
- package/dist/cjs/fiscal/ingestion/pipeline.js.map +1 -0
- package/dist/cjs/fiscal/ingestion/provider.js +51 -0
- package/dist/cjs/fiscal/ingestion/provider.js.map +1 -0
- package/dist/cjs/fiscal/ingestion/repository.js +132 -0
- package/dist/cjs/fiscal/ingestion/repository.js.map +1 -0
- package/dist/cjs/fiscal/ingestion/synthetic-provider.js +103 -0
- package/dist/cjs/fiscal/ingestion/synthetic-provider.js.map +1 -0
- package/dist/cjs/fiscal/ingestion/synthetic-transport-types.js +13 -0
- package/dist/cjs/fiscal/ingestion/synthetic-transport-types.js.map +1 -0
- package/dist/cjs/fiscal/ingestion/synthetic-transport.js +61 -0
- package/dist/cjs/fiscal/ingestion/synthetic-transport.js.map +1 -0
- package/dist/cjs/fiscal/ingestion/xml-reader.js +121 -0
- package/dist/cjs/fiscal/ingestion/xml-reader.js.map +1 -0
- package/dist/cjs/fiscal/repository.js +470 -0
- package/dist/cjs/fiscal/repository.js.map +1 -0
- package/dist/cjs/fiscal/sync/circuit.js +124 -0
- package/dist/cjs/fiscal/sync/circuit.js.map +1 -0
- package/dist/cjs/fiscal/sync/intervention.js +140 -0
- package/dist/cjs/fiscal/sync/intervention.js.map +1 -0
- package/dist/cjs/fiscal/sync/lease.js +146 -0
- package/dist/cjs/fiscal/sync/lease.js.map +1 -0
- package/dist/cjs/fiscal/sync/observability.js +244 -0
- package/dist/cjs/fiscal/sync/observability.js.map +1 -0
- package/dist/cjs/fiscal/sync/orchestrator.js +490 -0
- package/dist/cjs/fiscal/sync/orchestrator.js.map +1 -0
- package/dist/cjs/fiscal/sync/policy.js +143 -0
- package/dist/cjs/fiscal/sync/policy.js.map +1 -0
- package/dist/cjs/fiscal/sync/reprocess.js +241 -0
- package/dist/cjs/fiscal/sync/reprocess.js.map +1 -0
- package/dist/cjs/fiscal/sync/retry.js +183 -0
- package/dist/cjs/fiscal/sync/retry.js.map +1 -0
- package/dist/cjs/fiscal/sync/secret-boundary.js +123 -0
- package/dist/cjs/fiscal/sync/secret-boundary.js.map +1 -0
- package/dist/cjs/fiscal/transport/https.js +309 -0
- package/dist/cjs/fiscal/transport/https.js.map +1 -0
- package/dist/cjs/fiscal/transport/synthetic-tls.js +328 -0
- package/dist/cjs/fiscal/transport/synthetic-tls.js.map +1 -0
- package/dist/cjs/fiscal/transport/types.js +93 -0
- package/dist/cjs/fiscal/transport/types.js.map +1 -0
- package/dist/cjs/import/br-documents.js +85 -0
- package/dist/cjs/import/br-documents.js.map +1 -0
- package/dist/cjs/import/clients-import.js +347 -40
- package/dist/cjs/import/clients-import.js.map +1 -1
- package/dist/cjs/index.js +711 -39
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/legal/documents.js +224 -17
- package/dist/cjs/legal/documents.js.map +1 -1
- package/dist/cjs/legal/index.js +3 -1
- package/dist/cjs/legal/index.js.map +1 -1
- package/dist/cjs/legal/types.js +1 -0
- package/dist/cjs/legal/types.js.map +1 -1
- package/dist/cjs/mail/auth-templates.js +29 -0
- package/dist/cjs/mail/auth-templates.js.map +1 -0
- package/dist/cjs/mail/dedup-store.js +12 -51
- package/dist/cjs/mail/dedup-store.js.map +1 -1
- package/dist/cjs/mail/index.js +16 -4
- package/dist/cjs/mail/index.js.map +1 -1
- package/dist/cjs/mail/provider.js +12 -247
- package/dist/cjs/mail/provider.js.map +1 -1
- package/dist/cjs/mail/resend.js +14 -18
- package/dist/cjs/mail/resend.js.map +1 -1
- package/dist/cjs/mail/sender-resolver.js +12 -11
- package/dist/cjs/mail/sender-resolver.js.map +1 -1
- package/dist/cjs/mail/template-renderer.js +11 -16
- package/dist/cjs/mail/template-renderer.js.map +1 -1
- package/dist/cjs/mail/transactional-outbound.js +117 -0
- package/dist/cjs/mail/transactional-outbound.js.map +1 -0
- package/dist/cjs/mail/types.js +8 -35
- package/dist/cjs/mail/types.js.map +1 -1
- package/dist/cjs/onboarding/persistence.js +4 -4
- package/dist/cjs/onboarding/persistence.js.map +1 -1
- package/dist/cjs/pilot/go-live-checklist.js +212 -0
- package/dist/cjs/pilot/go-live-checklist.js.map +1 -0
- package/dist/cjs/pilot/milestone.js +79 -0
- package/dist/cjs/pilot/milestone.js.map +1 -0
- package/dist/cjs/platform/capabilities.js +144 -0
- package/dist/cjs/platform/capabilities.js.map +1 -0
- package/dist/cjs/platform/job-contract.js +411 -0
- package/dist/cjs/platform/job-contract.js.map +1 -0
- package/dist/cjs/portal/provisioning.js +144 -0
- package/dist/cjs/portal/provisioning.js.map +1 -0
- package/dist/cjs/pricing-engine/canonical.js +42 -0
- package/dist/cjs/pricing-engine/canonical.js.map +1 -0
- package/dist/cjs/pricing-engine/errors.js +6 -1
- package/dist/cjs/pricing-engine/errors.js.map +1 -1
- package/dist/cjs/pricing-engine/index.js +12 -1
- package/dist/cjs/pricing-engine/index.js.map +1 -1
- package/dist/cjs/pricing-engine/pipeline.js +200 -26
- package/dist/cjs/pricing-engine/pipeline.js.map +1 -1
- package/dist/cjs/pricing-engine/shadow-adapter.js +79 -0
- package/dist/cjs/pricing-engine/shadow-adapter.js.map +1 -0
- package/dist/cjs/pricing-engine/shadow-diff.js +55 -0
- package/dist/cjs/pricing-engine/shadow-diff.js.map +1 -0
- package/dist/cjs/pricing-engine/shadow-facade.js +85 -0
- package/dist/cjs/pricing-engine/shadow-facade.js.map +1 -0
- package/dist/cjs/pricing-engine/shadow-legacy-types.js +19 -0
- package/dist/cjs/pricing-engine/shadow-legacy-types.js.map +1 -0
- package/dist/cjs/pricing-engine/shadow-metrics.js +34 -0
- package/dist/cjs/pricing-engine/shadow-metrics.js.map +1 -0
- package/dist/cjs/pricing-engine/shadow-normalizer.js +42 -0
- package/dist/cjs/pricing-engine/shadow-normalizer.js.map +1 -0
- package/dist/cjs/rbac/authorize.js +28 -0
- package/dist/cjs/rbac/authorize.js.map +1 -1
- package/dist/cjs/rbac/catalog.js +101 -1
- package/dist/cjs/rbac/catalog.js.map +1 -1
- package/dist/cjs/rbac/workload-provisioning.js +160 -0
- package/dist/cjs/rbac/workload-provisioning.js.map +1 -0
- package/dist/cjs/rbac/workload.js +191 -0
- package/dist/cjs/rbac/workload.js.map +1 -0
- package/dist/cjs/storage/checksum.js +15 -0
- package/dist/cjs/storage/checksum.js.map +1 -0
- package/dist/cjs/storage/key.js +72 -0
- package/dist/cjs/storage/key.js.map +1 -0
- package/dist/cjs/storage/local.js +100 -0
- package/dist/cjs/storage/local.js.map +1 -0
- package/dist/cjs/storage/r2.js +181 -0
- package/dist/cjs/storage/r2.js.map +1 -0
- package/dist/cjs/storage/registry.js +41 -0
- package/dist/cjs/storage/registry.js.map +1 -0
- package/dist/cjs/storage/types.js +50 -0
- package/dist/cjs/storage/types.js.map +1 -0
- package/dist/cjs/subscription-billing/index.js +2 -1
- package/dist/cjs/subscription-billing/index.js.map +1 -1
- package/dist/cjs/subscription-billing/provider/asaas.js +32 -7
- package/dist/cjs/subscription-billing/provider/asaas.js.map +1 -1
- package/dist/cjs/subscription-billing/provider/disabled.js +8 -0
- package/dist/cjs/subscription-billing/provider/disabled.js.map +1 -1
- package/dist/cjs/subscription-billing/provider/registry.js +17 -0
- package/dist/cjs/subscription-billing/provider/registry.js.map +1 -1
- package/dist/cjs/subscription-billing/service.js +208 -83
- package/dist/cjs/subscription-billing/service.js.map +1 -1
- package/dist/cjs/subscription-billing/types.js.map +1 -1
- package/dist/cjs/tenancy/features.js +131 -0
- package/dist/cjs/tenancy/features.js.map +1 -0
- package/dist/cjs/tenancy/provisioning.js +32 -8
- package/dist/cjs/tenancy/provisioning.js.map +1 -1
- package/dist/cjs/tenancy/settings.js +224 -0
- package/dist/cjs/tenancy/settings.js.map +1 -0
- package/dist/cjs/users/repository.js +143 -3
- package/dist/cjs/users/repository.js.map +1 -1
- package/dist/cjs/vault/repository.js +81 -0
- package/dist/cjs/vault/repository.js.map +1 -1
- package/dist/clients/ibge.d.ts +17 -0
- package/dist/clients/ibge.d.ts.map +1 -0
- package/dist/clients/ibge.js +98 -0
- package/dist/clients/ibge.js.map +1 -0
- package/dist/clients/repository.d.ts +196 -0
- package/dist/clients/repository.d.ts.map +1 -1
- package/dist/clients/repository.js +270 -24
- package/dist/clients/repository.js.map +1 -1
- package/dist/collection/branding.d.ts +137 -0
- package/dist/collection/branding.d.ts.map +1 -0
- package/dist/collection/branding.js +322 -0
- package/dist/collection/branding.js.map +1 -0
- package/dist/collection/channel-accounts.d.ts +57 -0
- package/dist/collection/channel-accounts.d.ts.map +1 -0
- package/dist/collection/channel-accounts.js +133 -0
- package/dist/collection/channel-accounts.js.map +1 -0
- package/dist/collection/channel.d.ts +24 -0
- package/dist/collection/channel.d.ts.map +1 -0
- package/dist/collection/channel.js +16 -0
- package/dist/collection/channel.js.map +1 -0
- package/dist/collection/clearance-store.d.ts +39 -0
- package/dist/collection/clearance-store.d.ts.map +1 -0
- package/dist/collection/clearance-store.js +69 -0
- package/dist/collection/clearance-store.js.map +1 -0
- package/dist/collection/communication-bridge.d.ts +66 -0
- package/dist/collection/communication-bridge.d.ts.map +1 -0
- package/dist/collection/communication-bridge.js +134 -0
- package/dist/collection/communication-bridge.js.map +1 -0
- package/dist/collection/communication-runtime.d.ts +132 -0
- package/dist/collection/communication-runtime.d.ts.map +1 -0
- package/dist/collection/communication-runtime.js +249 -0
- package/dist/collection/communication-runtime.js.map +1 -0
- package/dist/collection/consent-repository.d.ts +32 -0
- package/dist/collection/consent-repository.d.ts.map +1 -0
- package/dist/collection/consent-repository.js +79 -0
- package/dist/collection/consent-repository.js.map +1 -0
- package/dist/collection/copy.d.ts +50 -0
- package/dist/collection/copy.d.ts.map +1 -0
- package/dist/collection/copy.js +122 -0
- package/dist/collection/copy.js.map +1 -0
- package/dist/collection/delivery-callback.d.ts +49 -0
- package/dist/collection/delivery-callback.d.ts.map +1 -0
- package/dist/collection/delivery-callback.js +147 -0
- package/dist/collection/delivery-callback.js.map +1 -0
- package/dist/collection/email-layout.d.ts +45 -0
- package/dist/collection/email-layout.d.ts.map +1 -0
- package/dist/collection/email-layout.js +247 -0
- package/dist/collection/email-layout.js.map +1 -0
- package/dist/collection/engine.d.ts +200 -0
- package/dist/collection/engine.d.ts.map +1 -0
- package/dist/collection/engine.js +427 -0
- package/dist/collection/engine.js.map +1 -0
- package/dist/collection/format.d.ts +32 -0
- package/dist/collection/format.d.ts.map +1 -0
- package/dist/collection/format.js +70 -0
- package/dist/collection/format.js.map +1 -0
- package/dist/collection/payment-block.d.ts +24 -0
- package/dist/collection/payment-block.d.ts.map +1 -0
- package/dist/collection/payment-block.js +2 -0
- package/dist/collection/payment-block.js.map +1 -0
- package/dist/collection/policy.d.ts +78 -0
- package/dist/collection/policy.d.ts.map +1 -0
- package/dist/collection/policy.js +168 -0
- package/dist/collection/policy.js.map +1 -0
- package/dist/collection/repository.d.ts +129 -0
- package/dist/collection/repository.d.ts.map +1 -0
- package/dist/collection/repository.js +246 -0
- package/dist/collection/repository.js.map +1 -0
- package/dist/collection/subject.d.ts +66 -0
- package/dist/collection/subject.d.ts.map +1 -0
- package/dist/collection/subject.js +99 -0
- package/dist/collection/subject.js.map +1 -0
- package/dist/collection/template-catalog.d.ts +16 -0
- package/dist/collection/template-catalog.d.ts.map +1 -0
- package/dist/collection/template-catalog.js +162 -0
- package/dist/collection/template-catalog.js.map +1 -0
- package/dist/collection/template.d.ts +37 -0
- package/dist/collection/template.d.ts.map +1 -0
- package/dist/collection/template.js +73 -0
- package/dist/collection/template.js.map +1 -0
- package/dist/communication/adapters/email.d.ts +28 -0
- package/dist/communication/adapters/email.d.ts.map +1 -0
- package/dist/communication/adapters/email.js +129 -0
- package/dist/communication/adapters/email.js.map +1 -0
- package/dist/communication/adapters/sms.d.ts +95 -0
- package/dist/communication/adapters/sms.d.ts.map +1 -0
- package/dist/communication/adapters/sms.js +121 -0
- package/dist/communication/adapters/sms.js.map +1 -0
- package/dist/communication/adapters/whatsapp-language.d.ts +34 -0
- package/dist/communication/adapters/whatsapp-language.d.ts.map +1 -0
- package/dist/communication/adapters/whatsapp-language.js +36 -0
- package/dist/communication/adapters/whatsapp-language.js.map +1 -0
- package/dist/communication/adapters/whatsapp-templates.d.ts +18 -0
- package/dist/communication/adapters/whatsapp-templates.d.ts.map +1 -0
- package/dist/communication/adapters/whatsapp-templates.js +97 -0
- package/dist/communication/adapters/whatsapp-templates.js.map +1 -0
- package/dist/communication/adapters/whatsapp.d.ts +29 -0
- package/dist/communication/adapters/whatsapp.d.ts.map +1 -0
- package/dist/communication/adapters/whatsapp.js +210 -0
- package/dist/communication/adapters/whatsapp.js.map +1 -0
- package/dist/communication/audit.d.ts +105 -0
- package/dist/communication/audit.d.ts.map +1 -0
- package/dist/communication/audit.js +56 -0
- package/dist/communication/audit.js.map +1 -0
- package/dist/communication/capabilities.d.ts +88 -0
- package/dist/communication/capabilities.d.ts.map +1 -0
- package/dist/communication/capabilities.js +72 -0
- package/dist/communication/capabilities.js.map +1 -0
- package/dist/communication/channel.d.ts +125 -0
- package/dist/communication/channel.d.ts.map +1 -0
- package/dist/communication/channel.js +47 -0
- package/dist/communication/channel.js.map +1 -0
- package/dist/communication/claim.d.ts +368 -0
- package/dist/communication/claim.d.ts.map +1 -0
- package/dist/communication/claim.js +224 -0
- package/dist/communication/claim.js.map +1 -0
- package/dist/communication/clearance.d.ts +53 -0
- package/dist/communication/clearance.d.ts.map +1 -0
- package/dist/communication/clearance.js +15 -0
- package/dist/communication/clearance.js.map +1 -0
- package/dist/communication/consent.d.ts +65 -0
- package/dist/communication/consent.d.ts.map +1 -0
- package/dist/communication/consent.js +40 -0
- package/dist/communication/consent.js.map +1 -0
- package/dist/communication/context.d.ts +48 -0
- package/dist/communication/context.d.ts.map +1 -0
- package/dist/communication/context.js +41 -0
- package/dist/communication/context.js.map +1 -0
- package/dist/communication/credentials.d.ts +74 -0
- package/dist/communication/credentials.d.ts.map +1 -0
- package/dist/communication/credentials.js +115 -0
- package/dist/communication/credentials.js.map +1 -0
- package/dist/communication/dry-run-scenario.d.ts +37 -0
- package/dist/communication/dry-run-scenario.d.ts.map +1 -0
- package/dist/communication/dry-run-scenario.js +163 -0
- package/dist/communication/dry-run-scenario.js.map +1 -0
- package/dist/communication/dry-run.d.ts +40 -0
- package/dist/communication/dry-run.d.ts.map +1 -0
- package/dist/communication/dry-run.js +92 -0
- package/dist/communication/dry-run.js.map +1 -0
- package/dist/communication/engine.d.ts +163 -0
- package/dist/communication/engine.d.ts.map +1 -0
- package/dist/communication/engine.js +492 -0
- package/dist/communication/engine.js.map +1 -0
- package/dist/communication/graph.d.ts +38 -0
- package/dist/communication/graph.d.ts.map +1 -0
- package/dist/communication/graph.js +45 -0
- package/dist/communication/graph.js.map +1 -0
- package/dist/communication/idempotency.d.ts +33 -0
- package/dist/communication/idempotency.d.ts.map +1 -0
- package/dist/communication/idempotency.js +23 -0
- package/dist/communication/idempotency.js.map +1 -0
- package/dist/communication/identity.d.ts +127 -0
- package/dist/communication/identity.d.ts.map +1 -0
- package/dist/communication/identity.js +105 -0
- package/dist/communication/identity.js.map +1 -0
- package/dist/communication/index.d.ts +66 -0
- package/dist/communication/index.d.ts.map +1 -0
- package/dist/communication/index.js +42 -0
- package/dist/communication/index.js.map +1 -0
- package/dist/communication/onboarding.d.ts +223 -0
- package/dist/communication/onboarding.d.ts.map +1 -0
- package/dist/communication/onboarding.js +287 -0
- package/dist/communication/onboarding.js.map +1 -0
- package/dist/communication/policy.d.ts +115 -0
- package/dist/communication/policy.d.ts.map +1 -0
- package/dist/communication/policy.js +13 -0
- package/dist/communication/policy.js.map +1 -0
- package/dist/communication/routing.d.ts +99 -0
- package/dist/communication/routing.d.ts.map +1 -0
- package/dist/communication/routing.js +73 -0
- package/dist/communication/routing.js.map +1 -0
- package/dist/communication/sender-profile.d.ts +100 -0
- package/dist/communication/sender-profile.d.ts.map +1 -0
- package/dist/communication/sender-profile.js +123 -0
- package/dist/communication/sender-profile.js.map +1 -0
- package/dist/communication/status.d.ts +48 -0
- package/dist/communication/status.d.ts.map +1 -0
- package/dist/communication/status.js +79 -0
- package/dist/communication/status.js.map +1 -0
- package/dist/communication/stores/onboarding.d.ts +88 -0
- package/dist/communication/stores/onboarding.d.ts.map +1 -0
- package/dist/communication/stores/onboarding.js +127 -0
- package/dist/communication/stores/onboarding.js.map +1 -0
- package/dist/communication/stores/postgres.d.ts +81 -0
- package/dist/communication/stores/postgres.d.ts.map +1 -0
- package/dist/communication/stores/postgres.js +453 -0
- package/dist/communication/stores/postgres.js.map +1 -0
- package/dist/communication/stores/routing.d.ts +169 -0
- package/dist/communication/stores/routing.d.ts.map +1 -0
- package/dist/communication/stores/routing.js +324 -0
- package/dist/communication/stores/routing.js.map +1 -0
- package/dist/communication/stores/secrets.d.ts +89 -0
- package/dist/communication/stores/secrets.d.ts.map +1 -0
- package/dist/communication/stores/secrets.js +122 -0
- package/dist/communication/stores/secrets.js.map +1 -0
- package/dist/communication/template-provider.d.ts +85 -0
- package/dist/communication/template-provider.d.ts.map +1 -0
- package/dist/communication/template-provider.js +21 -0
- package/dist/communication/template-provider.js.map +1 -0
- package/dist/communication/template.d.ts +87 -0
- package/dist/communication/template.d.ts.map +1 -0
- package/dist/communication/template.js +59 -0
- package/dist/communication/template.js.map +1 -0
- package/dist/communication/webhook-subscription.d.ts +156 -0
- package/dist/communication/webhook-subscription.d.ts.map +1 -0
- package/dist/communication/webhook-subscription.js +252 -0
- package/dist/communication/webhook-subscription.js.map +1 -0
- package/dist/communication/webhook.d.ts +121 -0
- package/dist/communication/webhook.d.ts.map +1 -0
- package/dist/communication/webhook.js +283 -0
- package/dist/communication/webhook.js.map +1 -0
- package/dist/competence/business-days.d.ts +51 -0
- package/dist/competence/business-days.d.ts.map +1 -0
- package/dist/competence/business-days.js +145 -0
- package/dist/competence/business-days.js.map +1 -0
- package/dist/competence/catalog-validation.d.ts +86 -0
- package/dist/competence/catalog-validation.d.ts.map +1 -0
- package/dist/competence/catalog-validation.js +168 -0
- package/dist/competence/catalog-validation.js.map +1 -0
- package/dist/competence/obligation-preview.d.ts +103 -0
- package/dist/competence/obligation-preview.d.ts.map +1 -0
- package/dist/competence/obligation-preview.js +184 -0
- package/dist/competence/obligation-preview.js.map +1 -0
- package/dist/competence/repository.d.ts +285 -0
- package/dist/competence/repository.d.ts.map +1 -0
- package/dist/competence/repository.js +602 -0
- package/dist/competence/repository.js.map +1 -0
- package/dist/contacts/phone.d.ts +70 -0
- package/dist/contacts/phone.d.ts.map +1 -0
- package/dist/contacts/phone.js +186 -0
- package/dist/contacts/phone.js.map +1 -0
- package/dist/dashboard/pilot-panel.d.ts +100 -0
- package/dist/dashboard/pilot-panel.d.ts.map +1 -0
- package/dist/dashboard/pilot-panel.js +87 -0
- package/dist/dashboard/pilot-panel.js.map +1 -0
- package/dist/dashboard/repository.d.ts.map +1 -1
- package/dist/dashboard/repository.js +11 -1
- package/dist/dashboard/repository.js.map +1 -1
- package/dist/db/client.d.ts +45 -0
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +16 -11
- package/dist/db/client.js.map +1 -1
- package/dist/db/migrate.d.ts +36 -1
- package/dist/db/migrate.d.ts.map +1 -1
- package/dist/db/migrate.js +208 -35
- package/dist/db/migrate.js.map +1 -1
- package/dist/db/provision-e2e-identity.d.ts +2 -0
- package/dist/db/provision-e2e-identity.d.ts.map +1 -0
- package/dist/db/provision-e2e-identity.js +109 -0
- package/dist/db/provision-e2e-identity.js.map +1 -0
- package/dist/db/seed-catalog.d.ts +18 -0
- package/dist/db/seed-catalog.d.ts.map +1 -0
- package/dist/db/seed-catalog.js +45 -0
- package/dist/db/seed-catalog.js.map +1 -0
- package/dist/db/seed.js +16 -8
- package/dist/db/seed.js.map +1 -1
- package/dist/documents/repository.d.ts +97 -0
- package/dist/documents/repository.d.ts.map +1 -0
- package/dist/documents/repository.js +236 -0
- package/dist/documents/repository.js.map +1 -0
- package/dist/documents/requests.d.ts +73 -0
- package/dist/documents/requests.d.ts.map +1 -0
- package/dist/documents/requests.js +127 -0
- package/dist/documents/requests.js.map +1 -0
- package/dist/fiscal/applicability.d.ts +73 -0
- package/dist/fiscal/applicability.d.ts.map +1 -0
- package/dist/fiscal/applicability.js +160 -0
- package/dist/fiscal/applicability.js.map +1 -0
- package/dist/fiscal/conditions.d.ts +99 -0
- package/dist/fiscal/conditions.d.ts.map +1 -0
- package/dist/fiscal/conditions.js +190 -0
- package/dist/fiscal/conditions.js.map +1 -0
- package/dist/fiscal/contracts/nfse-adn-contract.d.ts +315 -0
- package/dist/fiscal/contracts/nfse-adn-contract.d.ts.map +1 -0
- package/dist/fiscal/contracts/nfse-adn-contract.js +386 -0
- package/dist/fiscal/contracts/nfse-adn-contract.js.map +1 -0
- package/dist/fiscal/contracts/nfse-adn-endpoint.d.ts +13 -0
- package/dist/fiscal/contracts/nfse-adn-endpoint.d.ts.map +1 -0
- package/dist/fiscal/contracts/nfse-adn-endpoint.js +103 -0
- package/dist/fiscal/contracts/nfse-adn-endpoint.js.map +1 -0
- package/dist/fiscal/contracts/nfse-adn-envelope.d.ts +77 -0
- package/dist/fiscal/contracts/nfse-adn-envelope.d.ts.map +1 -0
- package/dist/fiscal/contracts/nfse-adn-envelope.js +215 -0
- package/dist/fiscal/contracts/nfse-adn-envelope.js.map +1 -0
- package/dist/fiscal/coverage/model.d.ts +86 -0
- package/dist/fiscal/coverage/model.d.ts.map +1 -0
- package/dist/fiscal/coverage/model.js +120 -0
- package/dist/fiscal/coverage/model.js.map +1 -0
- package/dist/fiscal/coverage/requests.d.ts +70 -0
- package/dist/fiscal/coverage/requests.d.ts.map +1 -0
- package/dist/fiscal/coverage/requests.js +95 -0
- package/dist/fiscal/coverage/requests.js.map +1 -0
- package/dist/fiscal/credentials/material.d.ts +81 -0
- package/dist/fiscal/credentials/material.d.ts.map +1 -0
- package/dist/fiscal/credentials/material.js +164 -0
- package/dist/fiscal/credentials/material.js.map +1 -0
- package/dist/fiscal/credentials/readiness.d.ts +92 -0
- package/dist/fiscal/credentials/readiness.d.ts.map +1 -0
- package/dist/fiscal/credentials/readiness.js +159 -0
- package/dist/fiscal/credentials/readiness.js.map +1 -0
- package/dist/fiscal/eligibility.d.ts +106 -0
- package/dist/fiscal/eligibility.d.ts.map +1 -0
- package/dist/fiscal/eligibility.js +194 -0
- package/dist/fiscal/eligibility.js.map +1 -0
- package/dist/fiscal/ingestion/__fixtures__/nfse.d.ts +57 -0
- package/dist/fiscal/ingestion/__fixtures__/nfse.d.ts.map +1 -0
- package/dist/fiscal/ingestion/__fixtures__/nfse.js +121 -0
- package/dist/fiscal/ingestion/__fixtures__/nfse.js.map +1 -0
- package/dist/fiscal/ingestion/adn-transport.d.ts +123 -0
- package/dist/fiscal/ingestion/adn-transport.d.ts.map +1 -0
- package/dist/fiscal/ingestion/adn-transport.js +220 -0
- package/dist/fiscal/ingestion/adn-transport.js.map +1 -0
- package/dist/fiscal/ingestion/direction.d.ts +60 -0
- package/dist/fiscal/ingestion/direction.d.ts.map +1 -0
- package/dist/fiscal/ingestion/direction.js +32 -0
- package/dist/fiscal/ingestion/direction.js.map +1 -0
- package/dist/fiscal/ingestion/nfse-adn.d.ts +91 -0
- package/dist/fiscal/ingestion/nfse-adn.d.ts.map +1 -0
- package/dist/fiscal/ingestion/nfse-adn.js +222 -0
- package/dist/fiscal/ingestion/nfse-adn.js.map +1 -0
- package/dist/fiscal/ingestion/pipeline.d.ts +168 -0
- package/dist/fiscal/ingestion/pipeline.d.ts.map +1 -0
- package/dist/fiscal/ingestion/pipeline.js +699 -0
- package/dist/fiscal/ingestion/pipeline.js.map +1 -0
- package/dist/fiscal/ingestion/provider.d.ts +206 -0
- package/dist/fiscal/ingestion/provider.d.ts.map +1 -0
- package/dist/fiscal/ingestion/provider.js +47 -0
- package/dist/fiscal/ingestion/provider.js.map +1 -0
- package/dist/fiscal/ingestion/repository.d.ts +82 -0
- package/dist/fiscal/ingestion/repository.d.ts.map +1 -0
- package/dist/fiscal/ingestion/repository.js +127 -0
- package/dist/fiscal/ingestion/repository.js.map +1 -0
- package/dist/fiscal/ingestion/synthetic-provider.d.ts +92 -0
- package/dist/fiscal/ingestion/synthetic-provider.d.ts.map +1 -0
- package/dist/fiscal/ingestion/synthetic-provider.js +99 -0
- package/dist/fiscal/ingestion/synthetic-provider.js.map +1 -0
- package/dist/fiscal/ingestion/synthetic-transport-types.d.ts +19 -0
- package/dist/fiscal/ingestion/synthetic-transport-types.d.ts.map +1 -0
- package/dist/fiscal/ingestion/synthetic-transport-types.js +9 -0
- package/dist/fiscal/ingestion/synthetic-transport-types.js.map +1 -0
- package/dist/fiscal/ingestion/synthetic-transport.d.ts +55 -0
- package/dist/fiscal/ingestion/synthetic-transport.d.ts.map +1 -0
- package/dist/fiscal/ingestion/synthetic-transport.js +57 -0
- package/dist/fiscal/ingestion/synthetic-transport.js.map +1 -0
- package/dist/fiscal/ingestion/xml-reader.d.ts +55 -0
- package/dist/fiscal/ingestion/xml-reader.d.ts.map +1 -0
- package/dist/fiscal/ingestion/xml-reader.js +112 -0
- package/dist/fiscal/ingestion/xml-reader.js.map +1 -0
- package/dist/fiscal/repository.d.ts +220 -0
- package/dist/fiscal/repository.d.ts.map +1 -0
- package/dist/fiscal/repository.js +449 -0
- package/dist/fiscal/repository.js.map +1 -0
- package/dist/fiscal/sync/circuit.d.ts +86 -0
- package/dist/fiscal/sync/circuit.d.ts.map +1 -0
- package/dist/fiscal/sync/circuit.js +118 -0
- package/dist/fiscal/sync/circuit.js.map +1 -0
- package/dist/fiscal/sync/intervention.d.ts +81 -0
- package/dist/fiscal/sync/intervention.d.ts.map +1 -0
- package/dist/fiscal/sync/intervention.js +135 -0
- package/dist/fiscal/sync/intervention.js.map +1 -0
- package/dist/fiscal/sync/lease.d.ts +118 -0
- package/dist/fiscal/sync/lease.d.ts.map +1 -0
- package/dist/fiscal/sync/lease.js +139 -0
- package/dist/fiscal/sync/lease.js.map +1 -0
- package/dist/fiscal/sync/observability.d.ts +148 -0
- package/dist/fiscal/sync/observability.d.ts.map +1 -0
- package/dist/fiscal/sync/observability.js +239 -0
- package/dist/fiscal/sync/observability.js.map +1 -0
- package/dist/fiscal/sync/orchestrator.d.ts +132 -0
- package/dist/fiscal/sync/orchestrator.d.ts.map +1 -0
- package/dist/fiscal/sync/orchestrator.js +487 -0
- package/dist/fiscal/sync/orchestrator.js.map +1 -0
- package/dist/fiscal/sync/policy.d.ts +87 -0
- package/dist/fiscal/sync/policy.d.ts.map +1 -0
- package/dist/fiscal/sync/policy.js +136 -0
- package/dist/fiscal/sync/policy.js.map +1 -0
- package/dist/fiscal/sync/reprocess.d.ts +76 -0
- package/dist/fiscal/sync/reprocess.d.ts.map +1 -0
- package/dist/fiscal/sync/reprocess.js +237 -0
- package/dist/fiscal/sync/reprocess.js.map +1 -0
- package/dist/fiscal/sync/retry.d.ts +82 -0
- package/dist/fiscal/sync/retry.d.ts.map +1 -0
- package/dist/fiscal/sync/retry.js +176 -0
- package/dist/fiscal/sync/retry.js.map +1 -0
- package/dist/fiscal/sync/secret-boundary.d.ts +169 -0
- package/dist/fiscal/sync/secret-boundary.d.ts.map +1 -0
- package/dist/fiscal/sync/secret-boundary.js +116 -0
- package/dist/fiscal/sync/secret-boundary.js.map +1 -0
- package/dist/fiscal/transport/https.d.ts +86 -0
- package/dist/fiscal/transport/https.d.ts.map +1 -0
- package/dist/fiscal/transport/https.js +303 -0
- package/dist/fiscal/transport/https.js.map +1 -0
- package/dist/fiscal/transport/synthetic-tls.d.ts +80 -0
- package/dist/fiscal/transport/synthetic-tls.d.ts.map +1 -0
- package/dist/fiscal/transport/synthetic-tls.js +323 -0
- package/dist/fiscal/transport/synthetic-tls.js.map +1 -0
- package/dist/fiscal/transport/types.d.ts +134 -0
- package/dist/fiscal/transport/types.d.ts.map +1 -0
- package/dist/fiscal/transport/types.js +88 -0
- package/dist/fiscal/transport/types.js.map +1 -0
- package/dist/import/br-documents.d.ts +26 -0
- package/dist/import/br-documents.d.ts.map +1 -0
- package/dist/import/br-documents.js +78 -0
- package/dist/import/br-documents.js.map +1 -0
- package/dist/import/clients-import.d.ts +122 -4
- package/dist/import/clients-import.d.ts.map +1 -1
- package/dist/import/clients-import.js +341 -41
- package/dist/import/clients-import.js.map +1 -1
- package/dist/index.d.ts +217 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +196 -11
- package/dist/index.js.map +1 -1
- package/dist/legal/documents.d.ts +12 -1
- package/dist/legal/documents.d.ts.map +1 -1
- package/dist/legal/documents.js +222 -16
- package/dist/legal/documents.js.map +1 -1
- package/dist/legal/index.d.ts +2 -2
- package/dist/legal/index.d.ts.map +1 -1
- package/dist/legal/index.js +1 -1
- package/dist/legal/index.js.map +1 -1
- package/dist/legal/types.d.ts +69 -3
- package/dist/legal/types.d.ts.map +1 -1
- package/dist/legal/types.js +1 -0
- package/dist/legal/types.js.map +1 -1
- package/dist/mail/auth-templates.d.ts +15 -0
- package/dist/mail/auth-templates.d.ts.map +1 -0
- package/dist/mail/auth-templates.js +26 -0
- package/dist/mail/auth-templates.js.map +1 -0
- package/dist/mail/dedup-store.d.ts +1 -24
- package/dist/mail/dedup-store.d.ts.map +1 -1
- package/dist/mail/dedup-store.js +9 -48
- package/dist/mail/dedup-store.js.map +1 -1
- package/dist/mail/index.d.ts +2 -1
- package/dist/mail/index.d.ts.map +1 -1
- package/dist/mail/index.js +13 -2
- package/dist/mail/index.js.map +1 -1
- package/dist/mail/provider.d.ts +2 -30
- package/dist/mail/provider.d.ts.map +1 -1
- package/dist/mail/provider.js +10 -246
- package/dist/mail/provider.js.map +1 -1
- package/dist/mail/resend.d.ts +2 -12
- package/dist/mail/resend.d.ts.map +1 -1
- package/dist/mail/resend.js +11 -17
- package/dist/mail/resend.js.map +1 -1
- package/dist/mail/sender-resolver.d.ts +1 -7
- package/dist/mail/sender-resolver.d.ts.map +1 -1
- package/dist/mail/sender-resolver.js +11 -10
- package/dist/mail/sender-resolver.js.map +1 -1
- package/dist/mail/template-renderer.d.ts +1 -9
- package/dist/mail/template-renderer.d.ts.map +1 -1
- package/dist/mail/template-renderer.js +10 -15
- package/dist/mail/template-renderer.js.map +1 -1
- package/dist/mail/transactional-outbound.d.ts +115 -0
- package/dist/mail/transactional-outbound.d.ts.map +1 -0
- package/dist/mail/transactional-outbound.js +113 -0
- package/dist/mail/transactional-outbound.js.map +1 -0
- package/dist/mail/types.d.ts +2 -142
- package/dist/mail/types.d.ts.map +1 -1
- package/dist/mail/types.js +1 -33
- package/dist/mail/types.js.map +1 -1
- package/dist/onboarding/persistence.d.ts +10 -1
- package/dist/onboarding/persistence.d.ts.map +1 -1
- package/dist/onboarding/persistence.js +4 -4
- package/dist/onboarding/persistence.js.map +1 -1
- package/dist/pilot/go-live-checklist.d.ts +41 -0
- package/dist/pilot/go-live-checklist.d.ts.map +1 -0
- package/dist/pilot/go-live-checklist.js +209 -0
- package/dist/pilot/go-live-checklist.js.map +1 -0
- package/dist/pilot/milestone.d.ts +56 -0
- package/dist/pilot/milestone.d.ts.map +1 -0
- package/dist/pilot/milestone.js +74 -0
- package/dist/pilot/milestone.js.map +1 -0
- package/dist/platform/capabilities.d.ts +88 -0
- package/dist/platform/capabilities.d.ts.map +1 -0
- package/dist/platform/capabilities.js +140 -0
- package/dist/platform/capabilities.js.map +1 -0
- package/dist/platform/job-contract.d.ts +232 -0
- package/dist/platform/job-contract.d.ts.map +1 -0
- package/dist/platform/job-contract.js +403 -0
- package/dist/platform/job-contract.js.map +1 -0
- package/dist/portal/provisioning.d.ts +58 -0
- package/dist/portal/provisioning.d.ts.map +1 -0
- package/dist/portal/provisioning.js +139 -0
- package/dist/portal/provisioning.js.map +1 -0
- package/dist/pricing-engine/canonical.d.ts +14 -0
- package/dist/pricing-engine/canonical.d.ts.map +1 -0
- package/dist/pricing-engine/canonical.js +39 -0
- package/dist/pricing-engine/canonical.js.map +1 -0
- package/dist/pricing-engine/errors.d.ts.map +1 -1
- package/dist/pricing-engine/errors.js +6 -1
- package/dist/pricing-engine/errors.js.map +1 -1
- package/dist/pricing-engine/index.d.ts +12 -2
- package/dist/pricing-engine/index.d.ts.map +1 -1
- package/dist/pricing-engine/index.js +6 -1
- package/dist/pricing-engine/index.js.map +1 -1
- package/dist/pricing-engine/pipeline.d.ts.map +1 -1
- package/dist/pricing-engine/pipeline.js +202 -28
- package/dist/pricing-engine/pipeline.js.map +1 -1
- package/dist/pricing-engine/shadow-adapter.d.ts +37 -0
- package/dist/pricing-engine/shadow-adapter.d.ts.map +1 -0
- package/dist/pricing-engine/shadow-adapter.js +75 -0
- package/dist/pricing-engine/shadow-adapter.js.map +1 -0
- package/dist/pricing-engine/shadow-diff.d.ts +26 -0
- package/dist/pricing-engine/shadow-diff.d.ts.map +1 -0
- package/dist/pricing-engine/shadow-diff.js +52 -0
- package/dist/pricing-engine/shadow-diff.js.map +1 -0
- package/dist/pricing-engine/shadow-facade.d.ts +42 -0
- package/dist/pricing-engine/shadow-facade.d.ts.map +1 -0
- package/dist/pricing-engine/shadow-facade.js +82 -0
- package/dist/pricing-engine/shadow-facade.js.map +1 -0
- package/dist/pricing-engine/shadow-legacy-types.d.ts +64 -0
- package/dist/pricing-engine/shadow-legacy-types.d.ts.map +1 -0
- package/dist/pricing-engine/shadow-legacy-types.js +18 -0
- package/dist/pricing-engine/shadow-legacy-types.js.map +1 -0
- package/dist/pricing-engine/shadow-metrics.d.ts +33 -0
- package/dist/pricing-engine/shadow-metrics.d.ts.map +1 -0
- package/dist/pricing-engine/shadow-metrics.js +31 -0
- package/dist/pricing-engine/shadow-metrics.js.map +1 -0
- package/dist/pricing-engine/shadow-normalizer.d.ts +17 -0
- package/dist/pricing-engine/shadow-normalizer.d.ts.map +1 -0
- package/dist/pricing-engine/shadow-normalizer.js +39 -0
- package/dist/pricing-engine/shadow-normalizer.js.map +1 -0
- package/dist/pricing-engine/types.d.ts +2 -0
- package/dist/pricing-engine/types.d.ts.map +1 -1
- package/dist/rbac/authorize.d.ts +12 -0
- package/dist/rbac/authorize.d.ts.map +1 -1
- package/dist/rbac/authorize.js +27 -0
- package/dist/rbac/authorize.js.map +1 -1
- package/dist/rbac/catalog.d.ts.map +1 -1
- package/dist/rbac/catalog.js +101 -1
- package/dist/rbac/catalog.js.map +1 -1
- package/dist/rbac/workload-provisioning.d.ts +66 -0
- package/dist/rbac/workload-provisioning.d.ts.map +1 -0
- package/dist/rbac/workload-provisioning.js +153 -0
- package/dist/rbac/workload-provisioning.js.map +1 -0
- package/dist/rbac/workload.d.ts +124 -0
- package/dist/rbac/workload.d.ts.map +1 -0
- package/dist/rbac/workload.js +184 -0
- package/dist/rbac/workload.js.map +1 -0
- package/dist/storage/checksum.d.ts +9 -0
- package/dist/storage/checksum.d.ts.map +1 -0
- package/dist/storage/checksum.js +12 -0
- package/dist/storage/checksum.js.map +1 -0
- package/dist/storage/key.d.ts +37 -0
- package/dist/storage/key.d.ts.map +1 -0
- package/dist/storage/key.js +67 -0
- package/dist/storage/key.js.map +1 -0
- package/dist/storage/local.d.ts +40 -0
- package/dist/storage/local.d.ts.map +1 -0
- package/dist/storage/local.js +96 -0
- package/dist/storage/local.js.map +1 -0
- package/dist/storage/r2.d.ts +43 -0
- package/dist/storage/r2.d.ts.map +1 -0
- package/dist/storage/r2.js +177 -0
- package/dist/storage/r2.js.map +1 -0
- package/dist/storage/registry.d.ts +23 -0
- package/dist/storage/registry.d.ts.map +1 -0
- package/dist/storage/registry.js +37 -0
- package/dist/storage/registry.js.map +1 -0
- package/dist/storage/types.d.ts +67 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +45 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/subscription-billing/index.d.ts +6 -5
- package/dist/subscription-billing/index.d.ts.map +1 -1
- package/dist/subscription-billing/index.js +3 -3
- package/dist/subscription-billing/index.js.map +1 -1
- package/dist/subscription-billing/provider/asaas.d.ts +14 -0
- package/dist/subscription-billing/provider/asaas.d.ts.map +1 -1
- package/dist/subscription-billing/provider/asaas.js +32 -7
- package/dist/subscription-billing/provider/asaas.js.map +1 -1
- package/dist/subscription-billing/provider/disabled.d.ts +9 -0
- package/dist/subscription-billing/provider/disabled.d.ts.map +1 -1
- package/dist/subscription-billing/provider/disabled.js +8 -0
- package/dist/subscription-billing/provider/disabled.js.map +1 -1
- package/dist/subscription-billing/provider/registry.d.ts +10 -0
- package/dist/subscription-billing/provider/registry.d.ts.map +1 -1
- package/dist/subscription-billing/provider/registry.js +17 -0
- package/dist/subscription-billing/provider/registry.js.map +1 -1
- package/dist/subscription-billing/service.d.ts +38 -1
- package/dist/subscription-billing/service.d.ts.map +1 -1
- package/dist/subscription-billing/service.js +147 -23
- package/dist/subscription-billing/service.js.map +1 -1
- package/dist/subscription-billing/types.d.ts +13 -0
- package/dist/subscription-billing/types.d.ts.map +1 -1
- package/dist/subscription-billing/types.js.map +1 -1
- package/dist/tenancy/features.d.ts +69 -0
- package/dist/tenancy/features.d.ts.map +1 -0
- package/dist/tenancy/features.js +123 -0
- package/dist/tenancy/features.js.map +1 -0
- package/dist/tenancy/provisioning.d.ts.map +1 -1
- package/dist/tenancy/provisioning.js +32 -8
- package/dist/tenancy/provisioning.js.map +1 -1
- package/dist/tenancy/settings.d.ts +63 -0
- package/dist/tenancy/settings.d.ts.map +1 -0
- package/dist/tenancy/settings.js +218 -0
- package/dist/tenancy/settings.js.map +1 -0
- package/dist/users/repository.d.ts +54 -1
- package/dist/users/repository.d.ts.map +1 -1
- package/dist/users/repository.js +142 -4
- package/dist/users/repository.js.map +1 -1
- package/dist/vault/repository.d.ts +67 -0
- package/dist/vault/repository.d.ts.map +1 -1
- package/dist/vault/repository.js +78 -0
- package/dist/vault/repository.js.map +1 -1
- package/package.json +20 -4
- package/src/db/migrations/0023_user_invite_activation.sql +15 -0
- package/src/db/migrations/0024_set_user_password_function.sql +32 -0
- package/src/db/migrations/0025_revoke_user_session_function.sql +28 -0
- package/src/db/migrations/0026_documents_and_competence.sql +353 -0
- package/src/db/migrations/0027_receivable_client_isolation.sql +58 -0
- package/src/db/migrations/0028_collection_engine.sql +94 -0
- package/src/db/migrations/0029_payment_rail.sql +107 -0
- package/src/db/migrations/0030_provider_account_uniqueness.sql +22 -0
- package/src/db/migrations/0031_provider_account_environment_scope.sql +21 -0
- package/src/db/migrations/0032_settlement_reversal.sql +76 -0
- package/src/db/migrations/0033_receivable_idempotency.sql +28 -0
- package/src/db/migrations/0034_payment_customer_reconcile.sql +30 -0
- package/src/db/migrations/0035_payment_account_environments.sql +61 -0
- package/src/db/migrations/0036_primary_backfill_under_force_rls.sql +41 -0
- package/src/db/migrations/0037_receivable_generation_source.sql +29 -0
- package/src/db/migrations/0038_notification_channels.sql +175 -0
- package/src/db/migrations/0039_communication_dispatch_claim.sql +193 -0
- package/src/db/migrations/0040_communication_unknown_outcome.sql +99 -0
- package/src/db/migrations/0041_channel_binding_routing.sql +146 -0
- package/src/db/migrations/0042_channel_route_read_isolation.sql +165 -0
- package/src/db/migrations/0043_workload_identity.sql +105 -0
- package/src/db/migrations/0044_channel_onboarding_session.sql +96 -0
- package/src/db/migrations/0045_role_write_scope.sql +122 -0
- package/src/db/migrations/0046_pilot_activation_model.sql +184 -0
- package/src/db/migrations/0047_recipient_clearance.sql +89 -0
- package/src/db/migrations/0048_item_type_note.sql +16 -0
- package/src/db/migrations/0049_national_fiscal_engine.sql +279 -0
- package/src/db/migrations/0050_fiscal_vocabulary_readonly.sql +29 -0
- package/src/db/migrations/0051_seed_rules_from_catalog.sql +72 -0
- package/src/db/migrations/0052_fiscal_rule_delete_scope.sql +57 -0
- package/src/db/migrations/0053_rule_validity_lower_bound.sql +44 -0
- package/src/db/migrations/0054_tenant_profile_and_rule_source.sql +89 -0
- package/src/db/migrations/0055_job_capability_contract.sql +300 -0
- package/src/db/migrations/0056_fiscal_document_ingestion.sql +337 -0
- package/src/db/migrations/0057_fiscal_pending_event_inbox.sql +228 -0
- package/src/db/migrations/0058_fiscal_operational_engine.sql +516 -0
- package/src/db/migrations/0059_fiscal_contract_version.sql +59 -0
- package/dist/cjs/mail/resend-client.js +0 -103
- package/dist/cjs/mail/resend-client.js.map +0 -1
- package/dist/mail/resend-client.d.ts +0 -16
- package/dist/mail/resend-client.d.ts.map +0 -1
- package/dist/mail/resend-client.js +0 -100
- package/dist/mail/resend-client.js.map +0 -1
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { getRealPilotStart } from '../pilot/milestone.js';
|
|
2
|
+
/** Lê o modo do escritório. Ausência de linha é `disabled` — nunca "herda". */
|
|
3
|
+
export async function getTenantFiscalAutomation(tx) {
|
|
4
|
+
const rows = await tx `
|
|
5
|
+
SELECT mode, enabled_at, enabled_by FROM tenant_fiscal_automation
|
|
6
|
+
`;
|
|
7
|
+
const r = rows[0];
|
|
8
|
+
if (!r)
|
|
9
|
+
return { mode: 'disabled', enabledAt: null, enabledBy: null };
|
|
10
|
+
return {
|
|
11
|
+
mode: r.mode,
|
|
12
|
+
enabledAt: r.enabled_at?.toISOString() ?? null,
|
|
13
|
+
enabledBy: r.enabled_by,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Este cliente pode entrar em automação fiscal, neste ambiente, para este tipo?
|
|
18
|
+
*
|
|
19
|
+
* Devolve TODOS os motivos de recusa, e não só o primeiro: quem for habilitar
|
|
20
|
+
* um cliente precisa saber tudo o que falta de uma vez, e não descobrir a
|
|
21
|
+
* próxima pendência a cada tentativa.
|
|
22
|
+
*
|
|
23
|
+
* Precisa rodar dentro de `withContext` com o tenant: as três tabelas têm RLS
|
|
24
|
+
* FORCE, e é a GUC que decide de quem são as linhas lidas.
|
|
25
|
+
*/
|
|
26
|
+
export async function evaluateFiscalEligibility(tx, input) {
|
|
27
|
+
const reasons = [];
|
|
28
|
+
// NFS-e nacional (ADN) e NF-e/CT-e (DF-e) exigem o MESMO insumo: certificado
|
|
29
|
+
// ICP-Brasil apresentado por TLS mútuo. Foi MEDIDO nesta onda, não deduzido —
|
|
30
|
+
// o host do ADN pede certificado de cliente no handshake, com CAs ICP-Brasil
|
|
31
|
+
// aceitas, e nem a documentação abre sem ele. Por isso o padrão é A1 para
|
|
32
|
+
// todos os tipos, e não `municipal_portal` para NFS-e como a 0055 supunha.
|
|
33
|
+
const kind = input.credentialKind ?? 'certificate_a1';
|
|
34
|
+
const automation = await getTenantFiscalAutomation(tx);
|
|
35
|
+
if (automation.mode === 'disabled') {
|
|
36
|
+
reasons.push('tenant_automation_disabled');
|
|
37
|
+
}
|
|
38
|
+
else if (automation.mode !== input.environment) {
|
|
39
|
+
// Sem fallback nas duas direções. Ver o cabeçalho.
|
|
40
|
+
reasons.push('environment_mismatch');
|
|
41
|
+
}
|
|
42
|
+
// Operação real exige o marco declarado. Ambiente sintético não — é ele que
|
|
43
|
+
// mantém desenvolvimento e homologação possíveis antes do piloto começar.
|
|
44
|
+
if (input.environment === 'production') {
|
|
45
|
+
const milestone = await getRealPilotStart(tx);
|
|
46
|
+
if (!milestone)
|
|
47
|
+
reasons.push('real_operation_not_declared');
|
|
48
|
+
}
|
|
49
|
+
const clients = await tx `
|
|
50
|
+
SELECT status FROM client WHERE id = ${input.clientId} AND deleted_at IS NULL
|
|
51
|
+
`;
|
|
52
|
+
const client = clients[0];
|
|
53
|
+
if (!client) {
|
|
54
|
+
reasons.push('client_not_found');
|
|
55
|
+
}
|
|
56
|
+
else if (client.status !== 'active') {
|
|
57
|
+
// `deleted_at IS NULL` NÃO basta, e é este o achado do gate: os dois
|
|
58
|
+
// cadastros vivos da SC estão exatamente aqui — não apagados e não ativos.
|
|
59
|
+
reasons.push('client_inactive');
|
|
60
|
+
}
|
|
61
|
+
const enrollments = await tx `
|
|
62
|
+
SELECT id FROM client_fiscal_enrollment
|
|
63
|
+
WHERE client_id = ${input.clientId}
|
|
64
|
+
AND document_type = ${input.documentType}
|
|
65
|
+
AND revoked_at IS NULL
|
|
66
|
+
`;
|
|
67
|
+
if (enrollments.length === 0)
|
|
68
|
+
reasons.push('client_not_enrolled');
|
|
69
|
+
const credential = await readCredentialReadiness(tx, input.clientId, kind);
|
|
70
|
+
if (credential !== 'verified')
|
|
71
|
+
reasons.push('credential_not_ready');
|
|
72
|
+
return {
|
|
73
|
+
eligible: reasons.length === 0,
|
|
74
|
+
reasons,
|
|
75
|
+
environment: automation.mode === 'disabled' ? null : automation.mode,
|
|
76
|
+
credential,
|
|
77
|
+
detail: reasons.length === 0
|
|
78
|
+
? `elegível (${input.documentType}, ${input.environment})`
|
|
79
|
+
: `negado: ${reasons.join(', ')}`,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Prontidão do certificado do cliente.
|
|
84
|
+
*
|
|
85
|
+
* ## Por que lê `digital_certificate`, e não uma tabela própria
|
|
86
|
+
*
|
|
87
|
+
* A 0055 criou `client_fiscal_credential` para esta pergunta. Foi invenção: o
|
|
88
|
+
* domínio já existia na vertical contábil (`digital_certificate`, migration
|
|
89
|
+
* 1002), com consumidores vivos. Duas tabelas para o mesmo fato dariam duas
|
|
90
|
+
* respostas para "este cliente tem certificado?", e elas divergiriam na
|
|
91
|
+
* primeira vez que alguém atualizasse só uma. A 0056 removeu a duplicata.
|
|
92
|
+
*
|
|
93
|
+
* ## Por que a consulta é defensiva
|
|
94
|
+
*
|
|
95
|
+
* `digital_certificate` pertence à VERTICAL. Um tenant sem a vertical instalada
|
|
96
|
+
* não tem a tabela — e a leitura correta disso é `no_credential`, não uma
|
|
97
|
+
* exceção. Ausência de tabela e ausência de linha significam a mesma coisa
|
|
98
|
+
* aqui: ninguém provou nada, então nada é autorizado.
|
|
99
|
+
*
|
|
100
|
+
* ## Por que `status = 'active'` não basta
|
|
101
|
+
*
|
|
102
|
+
* `active` diz que ninguém revogou o cadastro. Não diz que a credencial
|
|
103
|
+
* funciona. Um A1 cadastrado com a senha errada fica `active` para sempre e só
|
|
104
|
+
* falha no dia em que o job tentar usá-lo — em nome do cliente, contra a
|
|
105
|
+
* Receita, gerando bloqueio no CNPJ DELE. `verified_at` é o campo que separa
|
|
106
|
+
* cadastro de prova (migration 1004).
|
|
107
|
+
*/
|
|
108
|
+
async function readCredentialReadiness(tx, clientId, kind) {
|
|
109
|
+
if (kind === 'municipal_portal') {
|
|
110
|
+
// Portal municipal não é certificado ICP-Brasil e ainda não tem onde morar.
|
|
111
|
+
// Devolver `no_credential` é a leitura honesta: negado até existir.
|
|
112
|
+
return 'no_credential';
|
|
113
|
+
}
|
|
114
|
+
const certType = kind === 'certificate_a3' ? 'A3' : 'A1';
|
|
115
|
+
let rows;
|
|
116
|
+
try {
|
|
117
|
+
rows = await tx `
|
|
118
|
+
SELECT status, expires_at, verified_at
|
|
119
|
+
FROM digital_certificate
|
|
120
|
+
WHERE client_id = ${clientId}
|
|
121
|
+
AND cert_type = ${certType}
|
|
122
|
+
AND deleted_at IS NULL
|
|
123
|
+
ORDER BY expires_at DESC
|
|
124
|
+
LIMIT 1
|
|
125
|
+
`;
|
|
126
|
+
}
|
|
127
|
+
catch (err) {
|
|
128
|
+
const code = err?.code;
|
|
129
|
+
// 42P01 tabela ausente, 42703 coluna ausente: a vertical não está aplicada
|
|
130
|
+
// neste banco. Ausência é negado, nunca exceção.
|
|
131
|
+
if (code === '42P01' || code === '42703')
|
|
132
|
+
return 'no_credential';
|
|
133
|
+
throw err;
|
|
134
|
+
}
|
|
135
|
+
const r = rows[0];
|
|
136
|
+
if (!r)
|
|
137
|
+
return 'no_credential';
|
|
138
|
+
if (r.status === 'revoked')
|
|
139
|
+
return 'revoked';
|
|
140
|
+
// Vencimento é fato do calendário, não do registro: um certificado marcado
|
|
141
|
+
// `active` cuja data passou está EXPIRADO mesmo que ninguém tenha corrido
|
|
142
|
+
// para atualizar a linha. Ler o contrário seria confiar na diligência de um
|
|
143
|
+
// processo que ainda não existe.
|
|
144
|
+
if (r.expires_at && r.expires_at < todayUtc())
|
|
145
|
+
return 'expired';
|
|
146
|
+
if (r.status === 'expired')
|
|
147
|
+
return 'expired';
|
|
148
|
+
if (!r.verified_at)
|
|
149
|
+
return 'configured_not_verified';
|
|
150
|
+
return 'verified';
|
|
151
|
+
}
|
|
152
|
+
function todayUtc() {
|
|
153
|
+
const now = new Date();
|
|
154
|
+
return new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()));
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Os clientes elegíveis do tenant corrente.
|
|
158
|
+
*
|
|
159
|
+
* É esta função — e não uma consulta escrita à mão dentro do worker — que um
|
|
160
|
+
* job fiscal futuro deve usar para montar o lote. A regra vale porque o caminho
|
|
161
|
+
* óbvio (`SELECT id FROM client WHERE deleted_at IS NULL`) é justamente o
|
|
162
|
+
* defeito: ele existe, é fácil de escrever, e não pergunta nada do que importa.
|
|
163
|
+
*/
|
|
164
|
+
export async function listFiscalEligibleClients(tx, input) {
|
|
165
|
+
const automation = await getTenantFiscalAutomation(tx);
|
|
166
|
+
if (automation.mode === 'disabled' || automation.mode !== input.environment)
|
|
167
|
+
return [];
|
|
168
|
+
if (input.environment === 'production' && !(await getRealPilotStart(tx)))
|
|
169
|
+
return [];
|
|
170
|
+
const candidates = await tx `
|
|
171
|
+
SELECT e.client_id
|
|
172
|
+
FROM client_fiscal_enrollment e
|
|
173
|
+
JOIN client c ON c.id = e.client_id AND c.deleted_at IS NULL
|
|
174
|
+
WHERE e.document_type = ${input.documentType}
|
|
175
|
+
AND e.revoked_at IS NULL
|
|
176
|
+
AND c.status = 'active'
|
|
177
|
+
ORDER BY e.client_id
|
|
178
|
+
`;
|
|
179
|
+
// A credencial é conferida uma a uma, pela MESMA função da decisão
|
|
180
|
+
// individual. Repetir a regra em SQL aqui criaria duas rédeas para a mesma
|
|
181
|
+
// pergunta, e elas divergiriam na primeira mudança.
|
|
182
|
+
const eligible = [];
|
|
183
|
+
for (const row of candidates) {
|
|
184
|
+
const decision = await evaluateFiscalEligibility(tx, {
|
|
185
|
+
clientId: row.client_id,
|
|
186
|
+
documentType: input.documentType,
|
|
187
|
+
environment: input.environment,
|
|
188
|
+
});
|
|
189
|
+
if (decision.eligible)
|
|
190
|
+
eligible.push(row.client_id);
|
|
191
|
+
}
|
|
192
|
+
return eligible;
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=eligibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eligibility.js","sourceRoot":"","sources":["../../src/fiscal/eligibility.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fixtures SINTÉTICAS de NFS-e, conformes ao leiaute oficial.
|
|
3
|
+
*
|
|
4
|
+
* Nenhum documento de pessoa ou empresa real. Os CNPJ usados são os de teste
|
|
5
|
+
* consagrados (`11.222.333/0001-81` e derivados com DV válido) e os nomes são
|
|
6
|
+
* inventados. O município é Goiânia (5208707) porque é o do escritório piloto,
|
|
7
|
+
* e o dado é público.
|
|
8
|
+
*
|
|
9
|
+
* A estrutura segue `NFSe_v1.01.xsd` / `tiposComplexos_v1.01.xsd`
|
|
10
|
+
* (`nfse-esquemas_xsd-v1-01-20260209.zip`, 09/02/2026): raiz `NFSe`, atributo
|
|
11
|
+
* `versao`, `infNFSe` com `@Id` de 53 posições, `emit`, `DPS/infDPS/toma`,
|
|
12
|
+
* `valores`, e o bloco `IBSCBS` que a v1.01 já traz.
|
|
13
|
+
*
|
|
14
|
+
* A chave obedece a regra do XSD: `"NFS" + IBGE(7) + AmbGer(1) + TpInsc(1) +
|
|
15
|
+
* Insc(14) + nNFSe(13) + AAMM(4) + cNum(9) + DV(1)`.
|
|
16
|
+
*/
|
|
17
|
+
interface NfseFixtureInput {
|
|
18
|
+
nNFSe: string;
|
|
19
|
+
cNum: string;
|
|
20
|
+
emitCnpj?: string;
|
|
21
|
+
emitNome?: string;
|
|
22
|
+
tomaCnpj?: string;
|
|
23
|
+
tomaNome?: string;
|
|
24
|
+
/** Intermediário (`interm` do DPS). Ausente = o bloco não é emitido. */
|
|
25
|
+
intermCnpj?: string;
|
|
26
|
+
intermNome?: string;
|
|
27
|
+
/** `false` remove o bloco `toma` — o caso em que a direção não decide. */
|
|
28
|
+
withToma?: boolean;
|
|
29
|
+
dhProc?: string;
|
|
30
|
+
valor?: string;
|
|
31
|
+
anoMes?: string;
|
|
32
|
+
withIbsCbs?: boolean;
|
|
33
|
+
}
|
|
34
|
+
/** Monta a chave de 53 posições exatamente como o XSD a descreve. */
|
|
35
|
+
export declare function nfseAccessKey(input: {
|
|
36
|
+
nNFSe: string;
|
|
37
|
+
cNum: string;
|
|
38
|
+
anoMes: string;
|
|
39
|
+
emitCnpj: string;
|
|
40
|
+
dv?: string;
|
|
41
|
+
}): string;
|
|
42
|
+
export declare function nfseFixture(input: NfseFixtureInput): string;
|
|
43
|
+
/** Evento de cancelamento sobre uma chave existente. */
|
|
44
|
+
export declare function nfseCancellationFixture(chNFSe: string, seq?: string): string;
|
|
45
|
+
/** XML malformado — tag não fechada. */
|
|
46
|
+
export declare const MALFORMED_XML = "<NFSe versao=\"1.01\"><infNFSe Id=\"NFS1\">";
|
|
47
|
+
/** XML bem formado, mas de raiz que este adapter não reconhece. */
|
|
48
|
+
export declare const UNKNOWN_ROOT_XML = "<?xml version=\"1.0\"?><DPS xmlns=\"http://www.sped.fazenda.gov.br/nfse\" versao=\"1.01\"><infDPS/></DPS>";
|
|
49
|
+
/**
|
|
50
|
+
* Ataque XXE clássico. O leitor tem de RECUSAR na entrada — e a recusa não
|
|
51
|
+
* depende de configuração, porque ele não sabe expandir entidade.
|
|
52
|
+
*/
|
|
53
|
+
export declare const XXE_ATTACK_XML = "<?xml version=\"1.0\"?>\n<!DOCTYPE NFSe [<!ENTITY xxe SYSTEM \"file:///etc/passwd\">]>\n<NFSe xmlns=\"http://www.sped.fazenda.gov.br/nfse\" versao=\"1.01\">\n <infNFSe Id=\"NFS52087071211222333000181000000000000126090000000010\">\n <emit><CNPJ>&xxe;</CNPJ><xNome>x</xNome></emit>\n </infNFSe>\n</NFSe>";
|
|
54
|
+
/** Chave fora do formato de 53 posições. */
|
|
55
|
+
export declare function nfseInvalidKeyFixture(): string;
|
|
56
|
+
export {};
|
|
57
|
+
//# sourceMappingURL=nfse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nfse.d.ts","sourceRoot":"","sources":["../../../../src/fiscal/ingestion/__fixtures__/nfse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAMD,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,GAAG,MAAM,CAYT;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CA+D3D;AAED,wDAAwD;AACxD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,MAAM,CAUzE;AAED,wCAAwC;AACxC,eAAO,MAAM,aAAa,gDAA4C,CAAC;AAEvE,mEAAmE;AACnE,eAAO,MAAM,gBAAgB,8GAC0E,CAAC;AAExG;;;GAGG;AACH,eAAO,MAAM,cAAc,uTAMnB,CAAC;AAET,4CAA4C;AAC5C,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fixtures SINTÉTICAS de NFS-e, conformes ao leiaute oficial.
|
|
3
|
+
*
|
|
4
|
+
* Nenhum documento de pessoa ou empresa real. Os CNPJ usados são os de teste
|
|
5
|
+
* consagrados (`11.222.333/0001-81` e derivados com DV válido) e os nomes são
|
|
6
|
+
* inventados. O município é Goiânia (5208707) porque é o do escritório piloto,
|
|
7
|
+
* e o dado é público.
|
|
8
|
+
*
|
|
9
|
+
* A estrutura segue `NFSe_v1.01.xsd` / `tiposComplexos_v1.01.xsd`
|
|
10
|
+
* (`nfse-esquemas_xsd-v1-01-20260209.zip`, 09/02/2026): raiz `NFSe`, atributo
|
|
11
|
+
* `versao`, `infNFSe` com `@Id` de 53 posições, `emit`, `DPS/infDPS/toma`,
|
|
12
|
+
* `valores`, e o bloco `IBSCBS` que a v1.01 já traz.
|
|
13
|
+
*
|
|
14
|
+
* A chave obedece a regra do XSD: `"NFS" + IBGE(7) + AmbGer(1) + TpInsc(1) +
|
|
15
|
+
* Insc(14) + nNFSe(13) + AAMM(4) + cNum(9) + DV(1)`.
|
|
16
|
+
*/
|
|
17
|
+
const IBGE_GOIANIA = '5208707';
|
|
18
|
+
const AMB_GERADOR = '1';
|
|
19
|
+
const TIPO_INSCRICAO_CNPJ = '2';
|
|
20
|
+
/** Monta a chave de 53 posições exatamente como o XSD a descreve. */
|
|
21
|
+
export function nfseAccessKey(input) {
|
|
22
|
+
const key = 'NFS' +
|
|
23
|
+
IBGE_GOIANIA +
|
|
24
|
+
AMB_GERADOR +
|
|
25
|
+
TIPO_INSCRICAO_CNPJ +
|
|
26
|
+
input.emitCnpj.padStart(14, '0') +
|
|
27
|
+
input.nNFSe.padStart(13, '0') +
|
|
28
|
+
input.anoMes +
|
|
29
|
+
input.cNum.padStart(9, '0') +
|
|
30
|
+
(input.dv ?? '0');
|
|
31
|
+
return key;
|
|
32
|
+
}
|
|
33
|
+
export function nfseFixture(input) {
|
|
34
|
+
const emitCnpj = input.emitCnpj ?? '11222333000181';
|
|
35
|
+
const tomaCnpj = input.tomaCnpj ?? '04252011000110';
|
|
36
|
+
const dhProc = input.dhProc ?? '2026-09-03T14:20:00-03:00';
|
|
37
|
+
const anoMes = input.anoMes ?? '2609';
|
|
38
|
+
const valor = input.valor ?? '1500.00';
|
|
39
|
+
const chave = nfseAccessKey({ nNFSe: input.nNFSe, cNum: input.cNum, anoMes, emitCnpj });
|
|
40
|
+
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
41
|
+
<NFSe xmlns="http://www.sped.fazenda.gov.br/nfse" versao="1.01">
|
|
42
|
+
<infNFSe Id="${chave}">
|
|
43
|
+
<xLocEmi>Goiania</xLocEmi>
|
|
44
|
+
<xLocPrestacao>Goiania</xLocPrestacao>
|
|
45
|
+
<nNFSe>${input.nNFSe}</nNFSe>
|
|
46
|
+
<cLocIncid>${IBGE_GOIANIA}</cLocIncid>
|
|
47
|
+
<xLocIncid>Goiania</xLocIncid>
|
|
48
|
+
<verAplic>SINTETICO-1.0</verAplic>
|
|
49
|
+
<ambGer>${AMB_GERADOR}</ambGer>
|
|
50
|
+
<tpEmis>1</tpEmis>
|
|
51
|
+
<procEmi>1</procEmi>
|
|
52
|
+
<cStat>100</cStat>
|
|
53
|
+
<dhProc>${dhProc}</dhProc>
|
|
54
|
+
<nDFSe>${input.nNFSe}</nDFSe>
|
|
55
|
+
<emit>
|
|
56
|
+
<CNPJ>${emitCnpj}</CNPJ>
|
|
57
|
+
<IM>123456</IM>
|
|
58
|
+
<xNome>${input.emitNome ?? 'Prestadora Sintetica Ltda'}</xNome>
|
|
59
|
+
</emit>
|
|
60
|
+
<DPS>
|
|
61
|
+
<infDPS>${input.withToma === false
|
|
62
|
+
? ''
|
|
63
|
+
: `
|
|
64
|
+
<toma>
|
|
65
|
+
<CNPJ>${tomaCnpj}</CNPJ>
|
|
66
|
+
<xNome>${input.tomaNome ?? 'Tomadora Sintetica Ltda'}</xNome>
|
|
67
|
+
</toma>`}${input.intermCnpj
|
|
68
|
+
? `
|
|
69
|
+
<interm>
|
|
70
|
+
<CNPJ>${input.intermCnpj}</CNPJ>
|
|
71
|
+
<xNome>${input.intermNome ?? 'Intermediaria Sintetica Ltda'}</xNome>
|
|
72
|
+
</interm>`
|
|
73
|
+
: ''}
|
|
74
|
+
</infDPS>
|
|
75
|
+
</DPS>
|
|
76
|
+
<valores>
|
|
77
|
+
<vServPrest>${valor}</vServPrest>
|
|
78
|
+
<vLiq>${valor}</vLiq>
|
|
79
|
+
</valores>${input.withIbsCbs === false
|
|
80
|
+
? ''
|
|
81
|
+
: `
|
|
82
|
+
<IBSCBS>
|
|
83
|
+
<gIBSCBS>
|
|
84
|
+
<vBC>${valor}</vBC>
|
|
85
|
+
</gIBSCBS>
|
|
86
|
+
</IBSCBS>`}
|
|
87
|
+
</infNFSe>
|
|
88
|
+
</NFSe>`;
|
|
89
|
+
}
|
|
90
|
+
/** Evento de cancelamento sobre uma chave existente. */
|
|
91
|
+
export function nfseCancellationFixture(chNFSe, seq = '1') {
|
|
92
|
+
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
93
|
+
<evento xmlns="http://www.sped.fazenda.gov.br/nfse" versao="1.01">
|
|
94
|
+
<infEvento Id="EVT${chNFSe.slice(3, 20)}">
|
|
95
|
+
<chNFSe>${chNFSe}</chNFSe>
|
|
96
|
+
<tpEvento>101101</tpEvento>
|
|
97
|
+
<nSeqEvento>${seq}</nSeqEvento>
|
|
98
|
+
<dhEvento>2026-09-05T09:00:00-03:00</dhEvento>
|
|
99
|
+
</infEvento>
|
|
100
|
+
</evento>`;
|
|
101
|
+
}
|
|
102
|
+
/** XML malformado — tag não fechada. */
|
|
103
|
+
export const MALFORMED_XML = '<NFSe versao="1.01"><infNFSe Id="NFS1">';
|
|
104
|
+
/** XML bem formado, mas de raiz que este adapter não reconhece. */
|
|
105
|
+
export const UNKNOWN_ROOT_XML = '<?xml version="1.0"?><DPS xmlns="http://www.sped.fazenda.gov.br/nfse" versao="1.01"><infDPS/></DPS>';
|
|
106
|
+
/**
|
|
107
|
+
* Ataque XXE clássico. O leitor tem de RECUSAR na entrada — e a recusa não
|
|
108
|
+
* depende de configuração, porque ele não sabe expandir entidade.
|
|
109
|
+
*/
|
|
110
|
+
export const XXE_ATTACK_XML = `<?xml version="1.0"?>
|
|
111
|
+
<!DOCTYPE NFSe [<!ENTITY xxe SYSTEM "file:///etc/passwd">]>
|
|
112
|
+
<NFSe xmlns="http://www.sped.fazenda.gov.br/nfse" versao="1.01">
|
|
113
|
+
<infNFSe Id="NFS52087071211222333000181000000000000126090000000010">
|
|
114
|
+
<emit><CNPJ>&xxe;</CNPJ><xNome>x</xNome></emit>
|
|
115
|
+
</infNFSe>
|
|
116
|
+
</NFSe>`;
|
|
117
|
+
/** Chave fora do formato de 53 posições. */
|
|
118
|
+
export function nfseInvalidKeyFixture() {
|
|
119
|
+
return nfseFixture({ nNFSe: '1', cNum: '1' }).replace(/Id="NFS\d+"/, 'Id="NFS123"');
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=nfse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nfse.js","sourceRoot":"","sources":["../../../../src/fiscal/ingestion/__fixtures__/nfse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAoBH,MAAM,YAAY,GAAG,SAAS,CAAC;AAC/B,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC,qEAAqE;AACrE,MAAM,UAAU,aAAa,CAAC,KAM7B;IACC,MAAM,GAAG,GACP,KAAK;QACL,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC;QAChC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC;QAC7B,KAAK,CAAC,MAAM;QACZ,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QAC3B,CAAC,KAAK,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC;IACpB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,gBAAgB,CAAC;IACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,gBAAgB,CAAC;IACpD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,2BAA2B,CAAC;IAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC;IACtC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC;IACvC,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAExF,OAAO;;iBAEQ,KAAK;;;aAGT,KAAK,CAAC,KAAK;iBACP,YAAY;;;cAGf,WAAW;;;;cAIX,MAAM;aACP,KAAK,CAAC,KAAK;;cAEV,QAAQ;;eAEP,KAAK,CAAC,QAAQ,IAAI,2BAA2B;;;gBAIpD,KAAK,CAAC,QAAQ,KAAK,KAAK;QACtB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;;kBAEM,QAAQ;mBACP,KAAK,CAAC,QAAQ,IAAI,yBAAyB;gBAExD,GACE,KAAK,CAAC,UAAU;QACd,CAAC,CAAC;;kBAEM,KAAK,CAAC,UAAU;mBACf,KAAK,CAAC,UAAU,IAAI,8BAA8B;kBACnD;QACR,CAAC,CAAC,EACN;;;;oBAIc,KAAK;cACX,KAAK;gBAEb,KAAK,CAAC,UAAU,KAAK,KAAK;QACxB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;;;eAGK,KAAK;;cAGhB;;QAEI,CAAC;AACT,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,uBAAuB,CAAC,MAAc,EAAE,GAAG,GAAG,GAAG;IAC/D,OAAO;;sBAEa,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;cAC3B,MAAM;;kBAEF,GAAG;;;UAGX,CAAC;AACX,CAAC;AAED,wCAAwC;AACxC,MAAM,CAAC,MAAM,aAAa,GAAG,yCAAyC,CAAC;AAEvE,mEAAmE;AACnE,MAAM,CAAC,MAAM,gBAAgB,GAC3B,qGAAqG,CAAC;AAExG;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;QAMtB,CAAC;AAET,4CAA4C;AAC5C,MAAM,UAAU,qBAAqB;IACnC,OAAO,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AACtF,CAAC"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { type ClientTlsMaterial, type FiscalTransport } from '../transport/types.js';
|
|
2
|
+
import { type AdnEnvelopeProfile } from '../contracts/nfse-adn-contract.js';
|
|
3
|
+
import { FiscalProviderError, type FiscalEnvironmentTag, type FiscalFetchResult } from './provider.js';
|
|
4
|
+
/**
|
|
5
|
+
* O transporte do ADN — pronto até onde a documentação oficial chega, e parado
|
|
6
|
+
* exatamente onde ela para.
|
|
7
|
+
*
|
|
8
|
+
* ## O que está PROVADO aqui, e o que está apenas PREPARADO
|
|
9
|
+
*
|
|
10
|
+
* **Provado**: a resolução e a AUTORIZAÇÃO do destino (allowlist), a forma da
|
|
11
|
+
* requisição, o encadeamento de NSU, a montagem do TLS mútuo, os tetos de
|
|
12
|
+
* tamanho e de descompressão, e o mapeamento de erro. Tudo isso é exercitado
|
|
13
|
+
* contra o servidor TLS sintético em toda execução da suíte.
|
|
14
|
+
*
|
|
15
|
+
* **Preparado, não provado**: os nomes dos campos do envelope e o status HTTP de
|
|
16
|
+
* cada desfecho. Não por falta de procura: as dezesseis URLs de Swagger que o
|
|
17
|
+
* gov.br publica para o ADN — oito módulos × dois ambientes — não devolvem UM
|
|
18
|
+
* byte de HTTP sem certificado ICP-Brasil de cliente (medido em 2026-09-08). O
|
|
19
|
+
* host que documenta a API é o mesmo que exige a credencial para documentá-la.
|
|
20
|
+
*
|
|
21
|
+
* Por isso o perfil oficial tem `verified: false`, e por isso este transporte
|
|
22
|
+
* recusa `homologation` E `production` — não apenas produção, como na fase
|
|
23
|
+
* anterior. Produção restrita é servidor do governo tanto quanto produção; um
|
|
24
|
+
* parser suposto contra ela devolveria zero documentos com sucesso aparente do
|
|
25
|
+
* mesmo jeito, e o cursor avançaria sobre lotes vazios até a fiscalização.
|
|
26
|
+
*
|
|
27
|
+
* ## Dois portões independentes, e é de propósito
|
|
28
|
+
*
|
|
29
|
+
* 1. `ADN_ENVELOPE_UNVERIFIED` — não sabemos ler a resposta.
|
|
30
|
+
* 2. `ADN_REAL_TRANSPORT_DISABLED` — ninguém autorizou falar.
|
|
31
|
+
*
|
|
32
|
+
* Nenhum implica o outro. No dia em que alguém conferir o envelope, o portão 1
|
|
33
|
+
* abre e o 2 continua fechado — porque ver a resposta uma vez não é o mesmo que
|
|
34
|
+
* autorizar o produto a sincronizar carteira de cliente sozinho.
|
|
35
|
+
*/
|
|
36
|
+
/** @deprecated Use `NFSE_ADN_HOSTS`. Mantido para não quebrar quem já importa. */
|
|
37
|
+
export declare const ADN_HOSTS: Readonly<Record<"production" | "homologation", string>>;
|
|
38
|
+
/**
|
|
39
|
+
* @deprecated Use `NFSE_ADN_ENVELOPE_SHAPE_VERIFIED` (envelope) ou
|
|
40
|
+
* `NFSE_ADN_PAYLOAD_SHAPE_VERIFIED` (conteúdo).
|
|
41
|
+
*
|
|
42
|
+
* A constante única confundia duas perguntas: sabemos ler o XML da NFS-e (sim,
|
|
43
|
+
* contra o XSD oficial v1.01) e sabemos ler o envelope que o embrulha (não).
|
|
44
|
+
* Um leitor concluía do `false` que também não sabíamos ler o documento.
|
|
45
|
+
*/
|
|
46
|
+
export declare const ADN_RESPONSE_SHAPE_VERIFIED = false;
|
|
47
|
+
export interface AdnDfeTransportOptions {
|
|
48
|
+
environment: FiscalEnvironmentTag;
|
|
49
|
+
/** Material do contribuinte. Sem ele o handshake do ADN nem começa. */
|
|
50
|
+
tls: ClientTlsMaterial;
|
|
51
|
+
/** Base do serviço. Passa pela allowlist; nunca é destino livre. */
|
|
52
|
+
baseUrl?: string;
|
|
53
|
+
/** Transporte injetável. Ausente = HTTPS real com o material acima. */
|
|
54
|
+
transport?: FiscalTransport;
|
|
55
|
+
/**
|
|
56
|
+
* O perfil de envelope. Ausente = o do ambiente.
|
|
57
|
+
*
|
|
58
|
+
* Injetável porque é assim que o portão 2 fica testável em isolamento: com um
|
|
59
|
+
* perfil já conferido, o portão 1 passa e o 2 é quem recusa. Um teste que só
|
|
60
|
+
* conseguisse ver o primeiro "não" nunca provaria que existe um segundo.
|
|
61
|
+
*/
|
|
62
|
+
profile?: AdnEnvelopeProfile;
|
|
63
|
+
timeoutMs?: number;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Resolve a URL de um lote.
|
|
67
|
+
*
|
|
68
|
+
* `GET /DFe/{NSU}` — o NSU é a posição de onde continuar. `0` é o começo
|
|
69
|
+
* disponível, e é o que se envia quando não há cursor: não existe "sem
|
|
70
|
+
* parâmetro" nesta API.
|
|
71
|
+
*
|
|
72
|
+
* Cursor ilegível LANÇA, e não volta para `0` em silêncio como fazia antes.
|
|
73
|
+
* Voltar para `0` contra o ambiente nacional refaz a varredura inteira do
|
|
74
|
+
* cliente — que é consumo, e consumo excessivo é o `cStat 656`, cujo bloqueio
|
|
75
|
+
* recai sobre o CNPJ do CLIENTE. Um cursor corrompido é defeito para
|
|
76
|
+
* investigar, não condição para recomeçar.
|
|
77
|
+
*/
|
|
78
|
+
export declare function adnDfeUrl(baseUrl: string, fromNsu: string | null): string;
|
|
79
|
+
/** `GET /NFSe/{ChaveAcesso}/Eventos` — os eventos de um documento específico. */
|
|
80
|
+
export declare function adnEventsUrl(baseUrl: string, accessKey: string): string;
|
|
81
|
+
/**
|
|
82
|
+
* Status HTTP → erro do provedor, com a espera que o servidor pediu.
|
|
83
|
+
*
|
|
84
|
+
* A tradução mora aqui porque ela é do PROTOCOLO: `429` com `Retry-After` é o
|
|
85
|
+
* servidor dizendo quando voltar, e o motor de retentativa consome essa data em
|
|
86
|
+
* vez de estimar uma.
|
|
87
|
+
*
|
|
88
|
+
* ## O `404` deixou de significar "lote vazio"
|
|
89
|
+
*
|
|
90
|
+
* Ele era mapeado para "não há documento neste NSU" por analogia com o
|
|
91
|
+
* `cStat 137` da NF-e. A analogia não se sustenta: o ADN publica um MECANISMO
|
|
92
|
+
* PRÓPRIO para dizer isso — os códigos `E2215` e `E2230` do ANEXO_IV — e não
|
|
93
|
+
* publica status HTTP nenhum. Traduzir um status suposto em lote vazio é
|
|
94
|
+
* exatamente a fabricação de sucesso que esta fase existe para eliminar.
|
|
95
|
+
*
|
|
96
|
+
* Agora o `404` devolve `null` para que o CORPO seja lido: se ele trouxer o
|
|
97
|
+
* código oficial, o leitor de envelope o reconhece como "sem documentos"; se não
|
|
98
|
+
* trouxer, o leitor recusa. A decisão passa a sair do que o ADN diz, e não do
|
|
99
|
+
* que supomos que o status dele significa.
|
|
100
|
+
*/
|
|
101
|
+
export declare function mapAdnStatus(status: number, headers: Readonly<Record<string, string>>, now?: Date): FiscalProviderError | null;
|
|
102
|
+
/** O perfil que um ambiente usa quando o chamador não escolhe. */
|
|
103
|
+
export declare function defaultAdnProfile(environment: FiscalEnvironmentTag): AdnEnvelopeProfile;
|
|
104
|
+
/**
|
|
105
|
+
* Os portões do transporte real, em ordem, e o motivo de cada um.
|
|
106
|
+
*
|
|
107
|
+
* Exportada porque a tela precisa dizer POR QUE não sincroniza — e porque um
|
|
108
|
+
* portão que só existe dentro de uma função não é conferível por teste sem
|
|
109
|
+
* construir o transporte inteiro.
|
|
110
|
+
*/
|
|
111
|
+
export declare function assertAdnTransportAllowed(environment: FiscalEnvironmentTag, profile: AdnEnvelopeProfile): void;
|
|
112
|
+
/** O transporte do ADN, pronto para receber uma credencial real — e travado. */
|
|
113
|
+
export declare function createAdnDfeTransport(options: AdnDfeTransportOptions): {
|
|
114
|
+
readonly contractVersion: string;
|
|
115
|
+
readonly profileId: string;
|
|
116
|
+
fetchDfe(input: {
|
|
117
|
+
actorDocument: string;
|
|
118
|
+
fromNsu: string | null;
|
|
119
|
+
batchLimit: number;
|
|
120
|
+
environment: FiscalEnvironmentTag;
|
|
121
|
+
}): Promise<FiscalFetchResult>;
|
|
122
|
+
};
|
|
123
|
+
//# sourceMappingURL=adn-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adn-transport.d.ts","sourceRoot":"","sources":["../../../src/fiscal/ingestion/adn-transport.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAOL,KAAK,kBAAkB,EACxB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EACL,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACvB,MAAM,eAAe,CAAC;AAEvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,kFAAkF;AAClF,eAAO,MAAM,SAAS,yDAAiB,CAAC;AAExC;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,QAAmC,CAAC;AAE5E,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,oBAAoB,CAAC;IAClC,uEAAuE;IACvE,GAAG,EAAE,iBAAiB,CAAC;IACvB,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAKzE;AAED,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAOvE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACzC,GAAG,GAAE,IAAiB,GACrB,mBAAmB,GAAG,IAAI,CAsB5B;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,oBAAoB,GAAG,kBAAkB,CAIvF;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,oBAAoB,EACjC,OAAO,EAAE,kBAAkB,GAC1B,IAAI,CA+BN;AAED,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG;IACtE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE;QACd,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,oBAAoB,CAAC;KACnC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAChC,CAiFA"}
|