@baruk/core 0.4.2 → 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 +4 -4
- package/CHANGELOG.md +42 -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/service.d.ts +21 -0
- package/dist/auth/service.d.ts.map +1 -1
- package/dist/auth/service.js +46 -1
- package/dist/auth/service.js.map +1 -1
- package/dist/billing/ar-repository.d.ts +41 -1
- package/dist/billing/ar-repository.d.ts.map +1 -1
- package/dist/billing/ar-repository.js +82 -6
- package/dist/billing/ar-repository.js.map +1 -1
- package/dist/billing/provider-account.d.ts +38 -0
- package/dist/billing/provider-account.d.ts.map +1 -1
- package/dist/billing/provider-account.js +58 -2
- package/dist/billing/provider-account.js.map +1 -1
- package/dist/billing/repository.d.ts +44 -0
- package/dist/billing/repository.d.ts.map +1 -1
- package/dist/billing/repository.js +49 -5
- 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/service.js +46 -1
- package/dist/cjs/auth/service.js.map +1 -1
- package/dist/cjs/billing/ar-repository.js +82 -6
- package/dist/cjs/billing/ar-repository.js.map +1 -1
- package/dist/cjs/billing/provider-account.js +60 -1
- package/dist/cjs/billing/provider-account.js.map +1 -1
- package/dist/cjs/billing/repository.js +51 -5
- 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 +186 -9
- package/dist/cjs/clients/repository.js.map +1 -1
- package/dist/cjs/collection/branding.js +190 -0
- package/dist/cjs/collection/branding.js.map +1 -1
- package/dist/cjs/collection/clearance-store.js +74 -0
- package/dist/cjs/collection/clearance-store.js.map +1 -0
- package/dist/cjs/collection/communication-runtime.js +65 -2
- package/dist/cjs/collection/communication-runtime.js.map +1 -1
- package/dist/cjs/collection/engine.js +20 -0
- package/dist/cjs/collection/engine.js.map +1 -1
- package/dist/cjs/collection/policy.js +29 -1
- package/dist/cjs/collection/policy.js.map +1 -1
- package/dist/cjs/communication/clearance.js +18 -0
- package/dist/cjs/communication/clearance.js.map +1 -0
- package/dist/cjs/communication/dry-run-scenario.js +5 -0
- package/dist/cjs/communication/dry-run-scenario.js.map +1 -1
- package/dist/cjs/communication/engine.js +12 -0
- package/dist/cjs/communication/engine.js.map +1 -1
- package/dist/cjs/communication/policy.js.map +1 -1
- 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 +330 -17
- package/dist/cjs/competence/repository.js.map +1 -1
- 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/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 +316 -11
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/legal/documents.js +100 -15
- 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.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/rbac/catalog.js +34 -0
- package/dist/cjs/rbac/catalog.js.map +1 -1
- package/dist/cjs/subscription-billing/index.js +2 -1
- package/dist/cjs/subscription-billing/index.js.map +1 -1
- package/dist/cjs/subscription-billing/service.js +153 -77
- package/dist/cjs/subscription-billing/service.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/settings.js +224 -0
- package/dist/cjs/tenancy/settings.js.map +1 -0
- package/dist/cjs/users/repository.js +24 -1
- package/dist/cjs/users/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 +154 -0
- package/dist/clients/repository.d.ts.map +1 -1
- package/dist/clients/repository.js +182 -9
- package/dist/clients/repository.js.map +1 -1
- package/dist/collection/branding.d.ts +65 -0
- package/dist/collection/branding.d.ts.map +1 -1
- package/dist/collection/branding.js +186 -0
- package/dist/collection/branding.js.map +1 -1
- 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-runtime.d.ts +37 -0
- package/dist/collection/communication-runtime.d.ts.map +1 -1
- package/dist/collection/communication-runtime.js +63 -1
- package/dist/collection/communication-runtime.js.map +1 -1
- package/dist/collection/engine.d.ts +23 -0
- package/dist/collection/engine.d.ts.map +1 -1
- package/dist/collection/engine.js +20 -0
- package/dist/collection/engine.js.map +1 -1
- package/dist/collection/policy.d.ts +25 -0
- package/dist/collection/policy.d.ts.map +1 -1
- package/dist/collection/policy.js +27 -0
- package/dist/collection/policy.js.map +1 -1
- 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/dry-run-scenario.d.ts.map +1 -1
- package/dist/communication/dry-run-scenario.js +5 -0
- package/dist/communication/dry-run-scenario.js.map +1 -1
- package/dist/communication/engine.d.ts +10 -0
- package/dist/communication/engine.d.ts.map +1 -1
- package/dist/communication/engine.js +12 -0
- package/dist/communication/engine.js.map +1 -1
- package/dist/communication/policy.d.ts +16 -0
- package/dist/communication/policy.d.ts.map +1 -1
- package/dist/communication/policy.js.map +1 -1
- 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 +139 -1
- package/dist/competence/repository.d.ts.map +1 -1
- package/dist/competence/repository.js +325 -17
- package/dist/competence/repository.js.map +1 -1
- 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 +199 -32
- 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/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 +115 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +100 -7
- 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 +98 -14
- package/dist/legal/documents.js.map +1 -1
- package/dist/legal/index.d.ts +1 -1
- 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 +37 -2
- package/dist/legal/types.d.ts.map +1 -1
- package/dist/legal/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/rbac/catalog.d.ts.map +1 -1
- package/dist/rbac/catalog.js +34 -0
- package/dist/rbac/catalog.js.map +1 -1
- 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/service.d.ts +21 -0
- package/dist/subscription-billing/service.d.ts.map +1 -1
- package/dist/subscription-billing/service.js +90 -15
- package/dist/subscription-billing/service.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/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 +16 -1
- package/dist/users/repository.d.ts.map +1 -1
- package/dist/users/repository.js +24 -1
- package/dist/users/repository.js.map +1 -1
- package/package.json +9 -2
- 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
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
import { Agent, request as httpsRequest } from 'node:https';
|
|
2
|
+
import { createSecureContext } from 'node:tls';
|
|
3
|
+
import { URL } from 'node:url';
|
|
4
|
+
import { FiscalTransportError, parseRetryAfter, } from './types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Códigos de erro do Node que significam "o material do CLIENTE não serve".
|
|
7
|
+
*
|
|
8
|
+
* A separação de `tls` (problema do servidor) importa porque os tratamentos são
|
|
9
|
+
* opostos: cadeia do servidor inválida pode ser infraestrutura nossa; material
|
|
10
|
+
* do cliente inválido é sempre uma pessoa que precisa trocar um certificado, e
|
|
11
|
+
* retentar não muda nada.
|
|
12
|
+
*/
|
|
13
|
+
const CLIENT_MATERIAL_CODES = new Set([
|
|
14
|
+
'ERR_OSSL_PKCS12_MAC_VERIFY_FAILURE',
|
|
15
|
+
'ERR_OSSL_EVP_UNSUPPORTED',
|
|
16
|
+
'ERR_OSSL_UNSUPPORTED',
|
|
17
|
+
'ERR_OSSL_ASN1_HEADER_TOO_LONG',
|
|
18
|
+
'ERR_OSSL_PEM_NO_START_LINE',
|
|
19
|
+
'ERR_OSSL_PEM_BAD_END_LINE',
|
|
20
|
+
'ERR_TLS_INVALID_CONTEXT',
|
|
21
|
+
]);
|
|
22
|
+
/** Códigos que dizem: o SERVIDOR recusou o que apresentamos (ou a falta disso). */
|
|
23
|
+
const SERVER_REJECTED_CLIENT = [
|
|
24
|
+
'ALERT_CERTIFICATE_REQUIRED',
|
|
25
|
+
'ALERT_BAD_CERTIFICATE',
|
|
26
|
+
'ALERT_CERTIFICATE_EXPIRED',
|
|
27
|
+
'ALERT_CERTIFICATE_REVOKED',
|
|
28
|
+
'ALERT_CERTIFICATE_UNKNOWN',
|
|
29
|
+
'ALERT_UNKNOWN_CA',
|
|
30
|
+
'ALERT_HANDSHAKE_FAILURE',
|
|
31
|
+
'ALERT_DECRYPT_ERROR',
|
|
32
|
+
];
|
|
33
|
+
/** Códigos que dizem: a cadeia do SERVIDOR não fecha, ou o nome não bate. */
|
|
34
|
+
const SERVER_CHAIN_CODES = new Set([
|
|
35
|
+
'UNABLE_TO_VERIFY_LEAF_SIGNATURE',
|
|
36
|
+
'UNABLE_TO_GET_ISSUER_CERT',
|
|
37
|
+
'UNABLE_TO_GET_ISSUER_CERT_LOCALLY',
|
|
38
|
+
'SELF_SIGNED_CERT_IN_CHAIN',
|
|
39
|
+
'DEPTH_ZERO_SELF_SIGNED_CERT',
|
|
40
|
+
'CERT_HAS_EXPIRED',
|
|
41
|
+
'CERT_NOT_YET_VALID',
|
|
42
|
+
'CERT_UNTRUSTED',
|
|
43
|
+
'ERR_TLS_CERT_ALTNAME_INVALID',
|
|
44
|
+
'ERR_TLS_HANDSHAKE_TIMEOUT',
|
|
45
|
+
]);
|
|
46
|
+
const NETWORK_CODES = new Set([
|
|
47
|
+
'ECONNREFUSED',
|
|
48
|
+
'ECONNRESET',
|
|
49
|
+
'EPIPE',
|
|
50
|
+
'EHOSTUNREACH',
|
|
51
|
+
'ENETUNREACH',
|
|
52
|
+
'ENOTFOUND',
|
|
53
|
+
'EAI_AGAIN',
|
|
54
|
+
'EADDRNOTAVAIL',
|
|
55
|
+
]);
|
|
56
|
+
/**
|
|
57
|
+
* As opções que serão entregues ao socket, conferidas.
|
|
58
|
+
*
|
|
59
|
+
* Exportada porque o teste de regressão precisa exercitar a rejeição — um portão
|
|
60
|
+
* que só é conferido pela leitura do código não é um portão.
|
|
61
|
+
*/
|
|
62
|
+
export function assertNoTlsBypass(options) {
|
|
63
|
+
// Comparação por VALOR e não por presença: `rejectUnauthorized: true` é o que
|
|
64
|
+
// queremos e passa; qualquer coisa falsa fecha, inclusive `0`, `''` e `null`.
|
|
65
|
+
if ('rejectUnauthorized' in options && !options.rejectUnauthorized) {
|
|
66
|
+
throw new FiscalTransportError('protocol', 'TLS_VERIFICATION_DISABLED');
|
|
67
|
+
}
|
|
68
|
+
// Substituir a validação de identidade por uma função que não valida nada é o
|
|
69
|
+
// mesmo bypass com outro nome, e é a forma que passa despercebida em revisão.
|
|
70
|
+
if ('checkServerIdentity' in options && options.checkServerIdentity !== undefined) {
|
|
71
|
+
throw new FiscalTransportError('protocol', 'TLS_IDENTITY_CHECK_OVERRIDDEN');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export class HttpsFiscalTransport {
|
|
75
|
+
kind = 'https';
|
|
76
|
+
agent;
|
|
77
|
+
servername;
|
|
78
|
+
/** Apresentamos certificado de cliente? Decide a leitura do reset abaixo. */
|
|
79
|
+
presentsClientCert;
|
|
80
|
+
maxResponseBytes;
|
|
81
|
+
constructor(options = {}) {
|
|
82
|
+
const material = options.tls ?? null;
|
|
83
|
+
this.servername = options.servername;
|
|
84
|
+
this.presentsClientCert = Boolean(material?.pfx ?? material?.cert);
|
|
85
|
+
this.maxResponseBytes = options.maxResponseBytes ?? Number.POSITIVE_INFINITY;
|
|
86
|
+
// O contexto é montado AGORA, e não no primeiro socket, para que uma senha
|
|
87
|
+
// errada de PKCS#12 falhe como "material do cliente inválido" — e não como
|
|
88
|
+
// um `ECONNRESET` seis camadas adiante, que é o mesmo sintoma de rede fora.
|
|
89
|
+
let secureContext;
|
|
90
|
+
if (material) {
|
|
91
|
+
try {
|
|
92
|
+
secureContext = createSecureContext({
|
|
93
|
+
...(material.pfx ? { pfx: material.pfx } : {}),
|
|
94
|
+
...(material.passphrase ? { passphrase: material.passphrase } : {}),
|
|
95
|
+
...(material.cert ? { cert: material.cert } : {}),
|
|
96
|
+
...(material.key ? { key: material.key } : {}),
|
|
97
|
+
...(material.ca ? { ca: [...material.ca] } : {}),
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
throw new FiscalTransportError('certificate', codeOf(err, CLIENT_MATERIAL_CODES));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
const agentOptions = {
|
|
105
|
+
keepAlive: false,
|
|
106
|
+
maxSockets: options.maxSockets ?? 1,
|
|
107
|
+
// Declarado, e não omitido. O default do Node já é `true`; escrevê-lo faz
|
|
108
|
+
// o teste de regressão ter o que conferir e torna a intenção legível.
|
|
109
|
+
rejectUnauthorized: true,
|
|
110
|
+
...(secureContext ? { secureContext } : {}),
|
|
111
|
+
// Sem material de cliente, a CA extra ainda pode ser necessária para
|
|
112
|
+
// validar o SERVIDOR — e acrescentar CA é o oposto de desligar a checagem.
|
|
113
|
+
...(!secureContext && material?.ca ? { ca: [...material.ca] } : {}),
|
|
114
|
+
};
|
|
115
|
+
assertNoTlsBypass(agentOptions);
|
|
116
|
+
this.agent = new Agent(agentOptions);
|
|
117
|
+
}
|
|
118
|
+
async send(req) {
|
|
119
|
+
let url;
|
|
120
|
+
try {
|
|
121
|
+
url = new URL(req.url);
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
throw new FiscalTransportError('protocol', 'URL_INVALID');
|
|
125
|
+
}
|
|
126
|
+
// `http:` contra o ambiente nacional não é degradação: é o certificado do
|
|
127
|
+
// cliente viajando em claro. Fecha antes de abrir socket.
|
|
128
|
+
if (url.protocol !== 'https:') {
|
|
129
|
+
throw new FiscalTransportError('protocol', 'URL_NOT_HTTPS');
|
|
130
|
+
}
|
|
131
|
+
if (!Number.isFinite(req.timeoutMs) || req.timeoutMs <= 0) {
|
|
132
|
+
throw new FiscalTransportError('protocol', 'TIMEOUT_REQUIRED');
|
|
133
|
+
}
|
|
134
|
+
const requestOptions = {
|
|
135
|
+
method: req.method,
|
|
136
|
+
agent: this.agent,
|
|
137
|
+
headers: req.headers ?? {},
|
|
138
|
+
rejectUnauthorized: true,
|
|
139
|
+
...(this.servername ? { servername: this.servername } : {}),
|
|
140
|
+
};
|
|
141
|
+
assertNoTlsBypass(requestOptions);
|
|
142
|
+
return new Promise((resolve, reject) => {
|
|
143
|
+
let settled = false;
|
|
144
|
+
const finish = (fn) => {
|
|
145
|
+
if (settled)
|
|
146
|
+
return;
|
|
147
|
+
settled = true;
|
|
148
|
+
fn();
|
|
149
|
+
};
|
|
150
|
+
/*
|
|
151
|
+
* O reset que na verdade é uma recusa de credencial.
|
|
152
|
+
*
|
|
153
|
+
* No TLS 1.3 o servidor só valida o certificado do cliente DEPOIS de
|
|
154
|
+
* enviar o próprio `Finished`. O cliente, que já considera o handshake
|
|
155
|
+
* concluído, recebe o alerta como um socket derrubado: `ECONNRESET`, sem
|
|
156
|
+
* código de alerta nenhum. Ou seja: "meu certificado foi recusado" e "a
|
|
157
|
+
* rede caiu" chegam com o MESMO código.
|
|
158
|
+
*
|
|
159
|
+
* A distinção importa porque os tratamentos são opostos — rede volta
|
|
160
|
+
* sozinha e merece retentativa; certificado recusado só é resolvido por
|
|
161
|
+
* uma pessoa, e retentar consome a cota do cliente sem chance de sucesso.
|
|
162
|
+
*
|
|
163
|
+
* A leitura usa três fatos observáveis, e é heurística assumida: se
|
|
164
|
+
* APRESENTAMOS certificado, o handshake COMPLETOU, e o servidor derrubou
|
|
165
|
+
* antes de qualquer byte de resposta, a causa quase certa é a validação
|
|
166
|
+
* do nosso certificado. Uma rede que cai exatamente nessa janela seria
|
|
167
|
+
* classificada como credencial — e essa é a troca certa: o falso positivo
|
|
168
|
+
* gera uma tarefa humana a mais; o falso negativo gera retentativa
|
|
169
|
+
* infinita contra um handshake que nunca vai fechar.
|
|
170
|
+
*/
|
|
171
|
+
let handshakeConcluido = false;
|
|
172
|
+
let bytesRecebidos = 0;
|
|
173
|
+
const tetoCorpo = this.maxResponseBytes;
|
|
174
|
+
const r = httpsRequest(url, requestOptions, (res) => {
|
|
175
|
+
const chunks = [];
|
|
176
|
+
res.on('data', (c) => {
|
|
177
|
+
bytesRecebidos += c.length;
|
|
178
|
+
// O teto é conferido ENQUANTO os pedaços chegam, e não no fim: conferir
|
|
179
|
+
// no fim significa já ter alocado exatamente o que se queria recusar.
|
|
180
|
+
// `Content-Length` não serve de portão — um servidor hostil o omite,
|
|
181
|
+
// mente, ou usa `chunked`.
|
|
182
|
+
if (bytesRecebidos > tetoCorpo) {
|
|
183
|
+
finish(() => {
|
|
184
|
+
res.destroy();
|
|
185
|
+
r.destroy();
|
|
186
|
+
reject(new FiscalTransportError('protocol', 'RESPONSE_TOO_LARGE'));
|
|
187
|
+
});
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
chunks.push(c);
|
|
191
|
+
});
|
|
192
|
+
res.on('error', (err) => finish(() => reject(classify(err))));
|
|
193
|
+
res.on('end', () => finish(() => resolve({
|
|
194
|
+
status: res.statusCode ?? 0,
|
|
195
|
+
headers: lowerCaseHeaders(res.headers),
|
|
196
|
+
body: Buffer.concat(chunks),
|
|
197
|
+
})));
|
|
198
|
+
});
|
|
199
|
+
// Dois relógios, de propósito. `setTimeout` do Node só conta OCIOSIDADE do
|
|
200
|
+
// socket: um servidor que envia um byte por segundo o mantém aberto para
|
|
201
|
+
// sempre. O temporizador absoluto é o teto que a espera realmente tem.
|
|
202
|
+
const hardStop = setTimeout(() => {
|
|
203
|
+
finish(() => {
|
|
204
|
+
r.destroy();
|
|
205
|
+
reject(new FiscalTransportError('timeout', 'DEADLINE_EXCEEDED'));
|
|
206
|
+
});
|
|
207
|
+
}, req.timeoutMs);
|
|
208
|
+
// `unref` para que um teste que esqueça de fechar não segure o processo.
|
|
209
|
+
hardStop.unref?.();
|
|
210
|
+
r.setTimeout(req.timeoutMs, () => {
|
|
211
|
+
finish(() => {
|
|
212
|
+
r.destroy();
|
|
213
|
+
reject(new FiscalTransportError('timeout', 'SOCKET_IDLE'));
|
|
214
|
+
});
|
|
215
|
+
});
|
|
216
|
+
r.on('socket', (socket) => {
|
|
217
|
+
socket.on('secureConnect', () => {
|
|
218
|
+
handshakeConcluido = true;
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
r.on('error', (err) => finish(() => reject(classify(err, {
|
|
222
|
+
presentsClientCert: this.presentsClientCert,
|
|
223
|
+
handshakeCompleted: handshakeConcluido,
|
|
224
|
+
bytesReceived: bytesRecebidos,
|
|
225
|
+
}))));
|
|
226
|
+
r.on('close', () => clearTimeout(hardStop));
|
|
227
|
+
if (req.body != null)
|
|
228
|
+
r.write(req.body);
|
|
229
|
+
r.end();
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
function lowerCaseHeaders(raw) {
|
|
234
|
+
const out = {};
|
|
235
|
+
for (const [k, v] of Object.entries(raw)) {
|
|
236
|
+
if (v === undefined)
|
|
237
|
+
continue;
|
|
238
|
+
out[k.toLowerCase()] = Array.isArray(v) ? v.join(', ') : String(v);
|
|
239
|
+
}
|
|
240
|
+
return out;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* O código do erro, sem nunca ler a mensagem.
|
|
244
|
+
*
|
|
245
|
+
* Quando o Node não fornece `code`, devolve um rótulo genérico. Um rótulo
|
|
246
|
+
* genérico é pior para depurar e melhor para a segurança — e essa é a troca
|
|
247
|
+
* certa numa camada por onde passa certificado de terceiro.
|
|
248
|
+
*/
|
|
249
|
+
function codeOf(err, fallbackSet) {
|
|
250
|
+
const code = err?.code;
|
|
251
|
+
if (typeof code === 'string' && code.length > 0 && code.length <= 64) {
|
|
252
|
+
return fallbackSet && !fallbackSet.has(code) ? code : code;
|
|
253
|
+
}
|
|
254
|
+
return 'UNCLASSIFIED';
|
|
255
|
+
}
|
|
256
|
+
/** Traduz o erro do socket para a taxonomia do transporte. Só pelo `code`. */
|
|
257
|
+
function classify(err, context) {
|
|
258
|
+
if (err instanceof FiscalTransportError)
|
|
259
|
+
return err;
|
|
260
|
+
const code = codeOf(err);
|
|
261
|
+
if (CLIENT_MATERIAL_CODES.has(code))
|
|
262
|
+
return new FiscalTransportError('certificate', code);
|
|
263
|
+
// Alerta de TLS: o servidor recusou o que apresentamos — ou a ausência disso.
|
|
264
|
+
// É problema de CREDENCIAL, e não de rede, mesmo chegando pelo socket.
|
|
265
|
+
if (SERVER_REJECTED_CLIENT.some((a) => code.includes(a))) {
|
|
266
|
+
return new FiscalTransportError('certificate', code);
|
|
267
|
+
}
|
|
268
|
+
if (SERVER_CHAIN_CODES.has(code))
|
|
269
|
+
return new FiscalTransportError('tls', code);
|
|
270
|
+
if (code === 'ETIMEDOUT' || code === 'ESOCKETTIMEDOUT') {
|
|
271
|
+
return new FiscalTransportError('timeout', code);
|
|
272
|
+
}
|
|
273
|
+
if (NETWORK_CODES.has(code)) {
|
|
274
|
+
if ((code === 'ECONNRESET' || code === 'EPIPE') &&
|
|
275
|
+
context?.presentsClientCert &&
|
|
276
|
+
context.handshakeCompleted &&
|
|
277
|
+
context.bytesReceived === 0) {
|
|
278
|
+
// Ver `send`: o alerta pós-handshake do TLS 1.3. O código anexado diz que
|
|
279
|
+
// a leitura foi inferida, para que ninguém a confunda com um alerta
|
|
280
|
+
// nomeado que o OpenSSL tivesse entregue.
|
|
281
|
+
return new FiscalTransportError('certificate', 'CLIENT_CERT_REJECTED_INFERRED');
|
|
282
|
+
}
|
|
283
|
+
return new FiscalTransportError('network', code);
|
|
284
|
+
}
|
|
285
|
+
// Erro de TLS não catalogado ainda é TLS: `ERR_SSL_*` cobre alertas que este
|
|
286
|
+
// arquivo não previu, e tratá-los como rede faria o motor retentar contra um
|
|
287
|
+
// handshake que nunca vai fechar.
|
|
288
|
+
if (code.startsWith('ERR_SSL') || code.startsWith('ERR_TLS')) {
|
|
289
|
+
return new FiscalTransportError('tls', code);
|
|
290
|
+
}
|
|
291
|
+
return new FiscalTransportError('network', code);
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Espera pedida por uma RESPOSTA (e não por um erro).
|
|
295
|
+
*
|
|
296
|
+
* Um `429` ou `503` com `Retry-After` é o servidor dizendo exatamente quando
|
|
297
|
+
* voltar. Ignorá-lo e aplicar o nosso backoff seria substituir a informação de
|
|
298
|
+
* quem sabe pela estimativa de quem não sabe.
|
|
299
|
+
*/
|
|
300
|
+
export function retryAfterOf(res, now = new Date()) {
|
|
301
|
+
return parseRetryAfter(res.headers['retry-after'], now);
|
|
302
|
+
}
|
|
303
|
+
//# sourceMappingURL=https.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"https.js","sourceRoot":"","sources":["../../../src/fiscal/transport/https.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Uma ICP inteira, sintética, para provar o TLS mútuo sem certificado real.
|
|
3
|
+
*
|
|
4
|
+
* ## Por que isto existe em vez de um mock
|
|
5
|
+
*
|
|
6
|
+
* O ADN exige TLS mútuo com certificado ICP-Brasil — medido na Onda B · Fase 1:
|
|
7
|
+
* o host envia `CertificateRequest` e nem a documentação abre sem certificado.
|
|
8
|
+
* Não há caminho de teste contra o ambiente oficial sem credencial real, e esta
|
|
9
|
+
* fase não usa nenhuma.
|
|
10
|
+
*
|
|
11
|
+
* Um mock do cliente HTTP provaria que chamamos uma função. O que precisa ser
|
|
12
|
+
* provado é outra coisa: que o handshake REJEITA o que deve rejeitar. Cadeia
|
|
13
|
+
* errada, certificado vencido, ausência de certificado quando o servidor exige,
|
|
14
|
+
* nome que não confere — nenhuma dessas é uma decisão do nosso código, e sim do
|
|
15
|
+
* OpenSSL sob as opções que montamos. Só um servidor TLS de verdade as exercita.
|
|
16
|
+
*
|
|
17
|
+
* Aqui há uma CA sintética, um servidor real na porta local, e certificados de
|
|
18
|
+
* cliente válidos, vencidos e de outra CA. O que trafega é fixture.
|
|
19
|
+
*
|
|
20
|
+
* ## A trava
|
|
21
|
+
*
|
|
22
|
+
* Recusa rodar em produção. Não é zelo decorativo: este módulo GERA chave
|
|
23
|
+
* privada e a mantém em memória, e um caminho que faça isso num processo de
|
|
24
|
+
* produção é um caminho que alguém acabará usando para "testar rapidinho".
|
|
25
|
+
*/
|
|
26
|
+
export interface SyntheticPki {
|
|
27
|
+
/** CA que assina o servidor e o cliente legítimos. */
|
|
28
|
+
caCertPem: Buffer;
|
|
29
|
+
serverKeyPem: Buffer;
|
|
30
|
+
serverCertPem: Buffer;
|
|
31
|
+
/** Cliente válido, em PKCS#12 — o formato de um A1 brasileiro. */
|
|
32
|
+
clientPfx: Buffer;
|
|
33
|
+
clientPassphrase: string;
|
|
34
|
+
/** Cliente cujo certificado JÁ VENCEU. Assinado pela mesma CA. */
|
|
35
|
+
expiredClientPfx: Buffer;
|
|
36
|
+
/** CA estrangeira, que o servidor não confia. */
|
|
37
|
+
foreignCaCertPem: Buffer;
|
|
38
|
+
/** Cliente assinado pela CA estrangeira. */
|
|
39
|
+
foreignClientPfx: Buffer;
|
|
40
|
+
/** Material corrompido: bytes que não são um PKCS#12. */
|
|
41
|
+
corruptPfx: Buffer;
|
|
42
|
+
dispose(): void;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Gera a ICP sintética inteira.
|
|
46
|
+
*
|
|
47
|
+
* Lenta (segundos): gera seis pares de chaves. Quem usa deve guardar o
|
|
48
|
+
* resultado — `syntheticPki()` abaixo faz isso por processo.
|
|
49
|
+
*/
|
|
50
|
+
export declare function createSyntheticPki(): SyntheticPki;
|
|
51
|
+
/** A mesma ICP para o processo inteiro. Gerar seis chaves RSA custa segundos. */
|
|
52
|
+
export declare function syntheticPki(): SyntheticPki;
|
|
53
|
+
export interface SyntheticTlsServer {
|
|
54
|
+
/** `https://127.0.0.1:<porta>` */
|
|
55
|
+
url: string;
|
|
56
|
+
/** Handshakes concluídos. O teste de "servidor exige certificado" o inspeciona. */
|
|
57
|
+
handshakes: number;
|
|
58
|
+
/** Requisições atendidas, com o CN apresentado (ou `null`). */
|
|
59
|
+
seen: {
|
|
60
|
+
path: string;
|
|
61
|
+
clientCn: string | null;
|
|
62
|
+
}[];
|
|
63
|
+
close(): Promise<void>;
|
|
64
|
+
}
|
|
65
|
+
export interface SyntheticTlsServerOptions {
|
|
66
|
+
pki: SyntheticPki;
|
|
67
|
+
/** `true` faz o servidor EXIGIR certificado de cliente (o caso do ADN). */
|
|
68
|
+
requireClientCert?: boolean;
|
|
69
|
+
/** Resposta. Recebe o caminho; devolve status, cabeçalhos e corpo. */
|
|
70
|
+
respond?: (path: string) => {
|
|
71
|
+
status: number;
|
|
72
|
+
headers?: Record<string, string>;
|
|
73
|
+
body?: string;
|
|
74
|
+
};
|
|
75
|
+
/** Atraso antes de responder, para exercitar o teto de espera. */
|
|
76
|
+
delayMs?: number;
|
|
77
|
+
}
|
|
78
|
+
/** Sobe um servidor TLS real na porta local. */
|
|
79
|
+
export declare function startSyntheticTlsServer(options: SyntheticTlsServerOptions): Promise<SyntheticTlsServer>;
|
|
80
|
+
//# sourceMappingURL=synthetic-tls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synthetic-tls.d.ts","sourceRoot":"","sources":["../../../src/fiscal/transport/synthetic-tls.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,WAAW,YAAY;IAC3B,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kEAAkE;IAClE,gBAAgB,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,gBAAgB,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,gBAAgB,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,IAAI,IAAI,CAAC;CACjB;AA8BD;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAkRjD;AAGD,iFAAiF;AACjF,wBAAgB,YAAY,IAAI,YAAY,CAG3C;AAED,MAAM,WAAW,kBAAkB;IACjC,kCAAkC;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,mFAAmF;IACnF,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,CAAC;IAClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,YAAY,CAAC;IAClB,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sEAAsE;IACtE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChG,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,gDAAgD;AAChD,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAkD7B"}
|