@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
|
@@ -12,8 +12,14 @@ exports.createRecurringItemType = createRecurringItemType;
|
|
|
12
12
|
exports.generateInstancesForCompetence = generateInstancesForCompetence;
|
|
13
13
|
exports.computeDueDate = computeDueDate;
|
|
14
14
|
exports.listInstances = listInstances;
|
|
15
|
+
exports.bulkOpenCompetence = bulkOpenCompetence;
|
|
16
|
+
exports.listOfficeObligations = listOfficeObligations;
|
|
17
|
+
exports.assignInstance = assignInstance;
|
|
18
|
+
exports.reopenInstance = reopenInstance;
|
|
19
|
+
exports.completeInstanceIfDocumentsSettled = completeInstanceIfDocumentsSettled;
|
|
15
20
|
exports.completeInstance = completeInstance;
|
|
16
21
|
const shared_1 = require("@baruk/shared");
|
|
22
|
+
const business_days_js_1 = require("./business-days.js");
|
|
17
23
|
/**
|
|
18
24
|
* Competência e itens recorrentes (ADR 0008).
|
|
19
25
|
*
|
|
@@ -166,6 +172,8 @@ function mapItemType(row) {
|
|
|
166
172
|
appliesToRegime: Array.isArray(row.applies_to_regime) ? row.applies_to_regime : [],
|
|
167
173
|
requiresDocument: row.requires_document,
|
|
168
174
|
active: row.active,
|
|
175
|
+
note: row.note ?? null,
|
|
176
|
+
category: row.category ?? null,
|
|
169
177
|
};
|
|
170
178
|
}
|
|
171
179
|
/**
|
|
@@ -177,7 +185,7 @@ async function listRecurringItemTypes(tx, filter = {}) {
|
|
|
177
185
|
const rows = await tx `
|
|
178
186
|
SELECT DISTINCT ON (key)
|
|
179
187
|
id, tenant_id, key, label, nature, sphere, periodicity,
|
|
180
|
-
due_rule, applies_to_regime, requires_document, active
|
|
188
|
+
due_rule, applies_to_regime, requires_document, active, note, category
|
|
181
189
|
FROM recurring_item_type
|
|
182
190
|
WHERE deleted_at IS NULL
|
|
183
191
|
AND (${filter.nature ?? null}::text IS NULL OR nature = ${filter.nature ?? null})
|
|
@@ -200,7 +208,52 @@ async function createRecurringItemType(tx, input) {
|
|
|
200
208
|
RETURNING id, tenant_id, key, label, nature, sphere, periodicity,
|
|
201
209
|
due_rule, applies_to_regime, requires_document, active
|
|
202
210
|
`;
|
|
203
|
-
|
|
211
|
+
const tipo = mapItemType(rows[0]);
|
|
212
|
+
// Todo tipo de item nasce com uma REGRA, e a invariante é deliberada.
|
|
213
|
+
//
|
|
214
|
+
// Desde o motor nacional, gerar exige regra vigente: sem ela o motor devolve
|
|
215
|
+
// `RULE_NOT_CONFIGURED` e não gera — que é o comportamento seguro para quem
|
|
216
|
+
// não sabe o prazo daquela jurisdição. Um tipo criado sem regra, porém, não
|
|
217
|
+
// seria "seguro": seria invisível. O escritório cadastraria a obrigação,
|
|
218
|
+
// conferiria o catálogo, e ela nunca apareceria na prévia, sem explicação
|
|
219
|
+
// proporcional ao esforço.
|
|
220
|
+
//
|
|
221
|
+
// A regra companheira é federal, `pending_validation`, e carrega o mesmo
|
|
222
|
+
// vencimento que o operador acabou de declarar. Ela não afirma nada que ele
|
|
223
|
+
// já não tenha afirmado — só o coloca onde o motor enxerga.
|
|
224
|
+
await tx `
|
|
225
|
+
INSERT INTO fiscal_rule (
|
|
226
|
+
id, tenant_id, item_type_id, jurisdiction_scope, version, valid_from,
|
|
227
|
+
status, conditions, due_rule, note
|
|
228
|
+
) VALUES (
|
|
229
|
+
${(0, shared_1.uuidv7)()}, current_setting('app.current_tenant')::uuid, ${tipo.id},
|
|
230
|
+
-- Limite inferior, e não hoje: o escritório processa a competência do mês
|
|
231
|
+
-- passado neste mês, e uma regra que só vale a partir de hoje deixaria
|
|
232
|
+
-- essa competência sem obrigação nenhuma. Ver 0053.
|
|
233
|
+
'federal', 1, DATE '2000-01-01', 'pending_validation', '{"op":"always"}'::jsonb,
|
|
234
|
+
${input.dueRule ? tx.json(input.dueRule) : null},
|
|
235
|
+
'Regra criada junto com o tipo de item. Ajuste jurisdição e condições antes de conferir.'
|
|
236
|
+
)
|
|
237
|
+
`;
|
|
238
|
+
return tipo;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Vencimento como data pura `YYYY-MM-DD`.
|
|
242
|
+
*
|
|
243
|
+
* `due_date` é `date` no Postgres — sem hora e sem fuso. O driver o materializa
|
|
244
|
+
* como `Date` à meia-noite UTC, e devolvê-lo assim faz a API responder
|
|
245
|
+
* `2026-08-20T00:00:00.000Z`. Um cliente em UTC-3 renderiza isso como **19/08**:
|
|
246
|
+
* o vencimento aparece um dia antes do que é, e o alerta dispara no dia errado.
|
|
247
|
+
*
|
|
248
|
+
* `completed_at` (timestamptz) continua indo como instante ISO — ali a hora tem
|
|
249
|
+
* significado. Aqui não tem.
|
|
250
|
+
*/
|
|
251
|
+
function toDateOnly(value) {
|
|
252
|
+
if (value == null)
|
|
253
|
+
return null;
|
|
254
|
+
if (typeof value === 'string')
|
|
255
|
+
return value.slice(0, 10);
|
|
256
|
+
return value.toISOString().slice(0, 10);
|
|
204
257
|
}
|
|
205
258
|
function mapInstance(row) {
|
|
206
259
|
return {
|
|
@@ -210,7 +263,7 @@ function mapInstance(row) {
|
|
|
210
263
|
itemTypeId: row.item_type_id,
|
|
211
264
|
label: row.label,
|
|
212
265
|
nature: row.nature,
|
|
213
|
-
dueDate: row.due_date,
|
|
266
|
+
dueDate: toDateOnly(row.due_date),
|
|
214
267
|
status: row.status,
|
|
215
268
|
responsibleUserId: row.responsible_user_id,
|
|
216
269
|
completedAt: row.completed_at ? row.completed_at.toISOString() : null,
|
|
@@ -255,30 +308,100 @@ async function generateInstancesForCompetence(tx, input) {
|
|
|
255
308
|
/**
|
|
256
309
|
* Aplica a regra de vencimento sobre a competência.
|
|
257
310
|
*
|
|
258
|
-
* Hoje entende `{kind:'day_of_next_month', day:N}` e `{kind:'day_of_month', day:N}`.
|
|
259
311
|
* Regra desconhecida devolve `null` em vez de chutar uma data — um vencimento
|
|
260
312
|
* inventado é pior que vencimento ausente, porque o alerta dispararia no dia
|
|
261
313
|
* errado e o usuário confiaria nele.
|
|
314
|
+
*
|
|
315
|
+
* ## Formas aceitas
|
|
316
|
+
*
|
|
317
|
+
* | `kind` | Campos | Significado |
|
|
318
|
+
* |---------------------------|-------------------|------------------------------------------------------|
|
|
319
|
+
* | `day_of_month` | `day` 1–28 | Dia N da própria competência |
|
|
320
|
+
* | `day_of_next_month` | `day` 1–28 | Dia N do mês seguinte |
|
|
321
|
+
* | `day_after_months` | `day` 1–28, `months` | Dia N, M meses depois (generaliza os dois acima) |
|
|
322
|
+
* | `last_business_day_after` | `months` | Último dia útil do mês M meses depois |
|
|
323
|
+
* | `nth_business_day_after` | `nth`, `months` | N-ésimo dia útil do mês M meses depois |
|
|
324
|
+
* | `fixed_annual` | `month`, `day` | Data fixa do ano SEGUINTE ao da competência |
|
|
325
|
+
* | `last_business_day_annual`| `month` | Último dia útil de um mês do ano seguinte |
|
|
326
|
+
*
|
|
327
|
+
* `adjust` move o resultado para um dia útil: `'previous'` (antecipa — é o padrão
|
|
328
|
+
* do recolhimento fiscal brasileiro), `'next'`, ou `'none'`.
|
|
329
|
+
*
|
|
330
|
+
* **`adjust` ausente significa `'none'`, deliberadamente.** As duas formas
|
|
331
|
+
* originais (`day_of_month`, `day_of_next_month`) foram criadas sem noção de dia
|
|
332
|
+
* útil e há regras gravadas em produção que dependem do resultado exato. Ligar o
|
|
333
|
+
* ajuste por padrão mudaria silenciosamente o vencimento de instâncias que já
|
|
334
|
+
* existem. Quem quer o comportamento fiscal pede por ele — e o catálogo de
|
|
335
|
+
* `@baruk/contabil` pede.
|
|
262
336
|
*/
|
|
263
337
|
function computeDueDate(competenceLabel, rule) {
|
|
264
338
|
const kind = typeof rule['kind'] === 'string' ? rule['kind'] : null;
|
|
265
|
-
|
|
266
|
-
if (!kind || day == null || day < 1 || day > 28)
|
|
339
|
+
if (!kind)
|
|
267
340
|
return null;
|
|
341
|
+
const num = (k) => typeof rule[k] === 'number' ? rule[k] : null;
|
|
342
|
+
const rawAdjust = rule['adjust'];
|
|
343
|
+
const adjust = rawAdjust === 'previous' || rawAdjust === 'next' ? rawAdjust : 'none';
|
|
268
344
|
const [yearStr, monthStr] = competenceLabel.split('-');
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
if (
|
|
272
|
-
month += 1;
|
|
273
|
-
if (month > 12) {
|
|
274
|
-
month = 1;
|
|
275
|
-
year += 1;
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
else if (kind !== 'day_of_month') {
|
|
345
|
+
const year = Number(yearStr);
|
|
346
|
+
const month = Number(monthStr);
|
|
347
|
+
if (!Number.isInteger(year) || !Number.isInteger(month) || month < 1 || month > 12)
|
|
279
348
|
return null;
|
|
349
|
+
const dayOf = (y, m, d) => `${y}-${String(m).padStart(2, '0')}-${String(d).padStart(2, '0')}`;
|
|
350
|
+
let iso = null;
|
|
351
|
+
switch (kind) {
|
|
352
|
+
case 'day_of_month':
|
|
353
|
+
case 'day_of_next_month':
|
|
354
|
+
case 'day_after_months': {
|
|
355
|
+
const day = num('day');
|
|
356
|
+
// O teto de 28 evita a data que não existe (30 de fevereiro) sem precisar
|
|
357
|
+
// de calendário. Quem precisa do fim do mês usa `last_business_day_*`.
|
|
358
|
+
if (day == null || day < 1 || day > 28)
|
|
359
|
+
return null;
|
|
360
|
+
const months = kind === 'day_of_next_month' ? 1 : kind === 'day_of_month' ? 0 : (num('months') ?? 0);
|
|
361
|
+
if (!Number.isInteger(months) || months < 0 || months > 24)
|
|
362
|
+
return null;
|
|
363
|
+
const [y, m] = (0, business_days_js_1.shiftMonth)(year, month, months);
|
|
364
|
+
iso = dayOf(y, m, day);
|
|
365
|
+
break;
|
|
366
|
+
}
|
|
367
|
+
case 'last_business_day_after': {
|
|
368
|
+
const months = num('months');
|
|
369
|
+
if (months == null || !Number.isInteger(months) || months < 0 || months > 24)
|
|
370
|
+
return null;
|
|
371
|
+
const [y, m] = (0, business_days_js_1.shiftMonth)(year, month, months);
|
|
372
|
+
// Já cai em dia útil por construção; `adjust` fica inócuo aqui.
|
|
373
|
+
return (0, business_days_js_1.lastBusinessDayOfMonth)(y, m);
|
|
374
|
+
}
|
|
375
|
+
case 'nth_business_day_after': {
|
|
376
|
+
const nth = num('nth');
|
|
377
|
+
const months = num('months');
|
|
378
|
+
if (nth == null || nth < 1 || nth > 23)
|
|
379
|
+
return null;
|
|
380
|
+
if (months == null || !Number.isInteger(months) || months < 0 || months > 24)
|
|
381
|
+
return null;
|
|
382
|
+
const [y, m] = (0, business_days_js_1.shiftMonth)(year, month, months);
|
|
383
|
+
return (0, business_days_js_1.nthBusinessDayOfMonth)(y, m, nth);
|
|
384
|
+
}
|
|
385
|
+
case 'fixed_annual': {
|
|
386
|
+
const m = num('month');
|
|
387
|
+
const day = num('day');
|
|
388
|
+
if (m == null || m < 1 || m > 12)
|
|
389
|
+
return null;
|
|
390
|
+
if (day == null || day < 1 || day > 28)
|
|
391
|
+
return null;
|
|
392
|
+
iso = dayOf(year + 1, m, day);
|
|
393
|
+
break;
|
|
394
|
+
}
|
|
395
|
+
case 'last_business_day_annual': {
|
|
396
|
+
const m = num('month');
|
|
397
|
+
if (m == null || m < 1 || m > 12)
|
|
398
|
+
return null;
|
|
399
|
+
return (0, business_days_js_1.lastBusinessDayOfMonth)(year + 1, m);
|
|
400
|
+
}
|
|
401
|
+
default:
|
|
402
|
+
return null;
|
|
280
403
|
}
|
|
281
|
-
return
|
|
404
|
+
return (0, business_days_js_1.adjustToBusinessDay)(iso, adjust);
|
|
282
405
|
}
|
|
283
406
|
async function listInstances(tx, filter = {}) {
|
|
284
407
|
const rows = await tx `
|
|
@@ -293,6 +416,196 @@ async function listInstances(tx, filter = {}) {
|
|
|
293
416
|
`;
|
|
294
417
|
return rows.map(mapInstance);
|
|
295
418
|
}
|
|
419
|
+
/**
|
|
420
|
+
* Abre a competência do mês para a carteira inteira e gera os itens.
|
|
421
|
+
*
|
|
422
|
+
* É a ação que abre o mês de um escritório. Sem ela, "abrir competência" é uma
|
|
423
|
+
* operação por cliente — o que funciona na demonstração com três clientes e é
|
|
424
|
+
* impraticável com trezentos: ninguém vai clicar trezentas vezes todo dia 1º.
|
|
425
|
+
*
|
|
426
|
+
* Idempotente nas duas camadas: `openCompetence` faz `ON CONFLICT DO NOTHING`, e
|
|
427
|
+
* a geração é protegida pelo índice único `(tenant, client, competence, tipo)`.
|
|
428
|
+
* Rodar duas vezes no mesmo mês não duplica nada.
|
|
429
|
+
*
|
|
430
|
+
* O regime de cada cliente é resolvido por `resolveRegime` — injetado, porque
|
|
431
|
+
* quem sabe ler regime tributário é a vertical, e o Core não a conhece.
|
|
432
|
+
*
|
|
433
|
+
* Falha de um cliente não aborta o lote. Abortar deixaria o escritório com o mês
|
|
434
|
+
* meio aberto e sem saber onde parou; aqui ele vê o que passou e o que não.
|
|
435
|
+
*/
|
|
436
|
+
async function bulkOpenCompetence(tx, input) {
|
|
437
|
+
assertCompetenceLabel(input.label);
|
|
438
|
+
const targets = input.clientIds && input.clientIds.length > 0
|
|
439
|
+
? input.clientIds
|
|
440
|
+
: (await tx `
|
|
441
|
+
SELECT id FROM client
|
|
442
|
+
WHERE deleted_at IS NULL AND status = 'active'
|
|
443
|
+
ORDER BY display_name
|
|
444
|
+
`).map((r) => r.id);
|
|
445
|
+
const result = {
|
|
446
|
+
clientsProcessed: 0,
|
|
447
|
+
competencesOpened: 0,
|
|
448
|
+
competencesExisting: 0,
|
|
449
|
+
itemsCreated: 0,
|
|
450
|
+
itemsSkipped: 0,
|
|
451
|
+
failures: [],
|
|
452
|
+
};
|
|
453
|
+
for (const clientId of targets) {
|
|
454
|
+
try {
|
|
455
|
+
const opened = await openCompetence(tx, { clientId, label: input.label });
|
|
456
|
+
if (opened.created)
|
|
457
|
+
result.competencesOpened += 1;
|
|
458
|
+
else
|
|
459
|
+
result.competencesExisting += 1;
|
|
460
|
+
const regime = input.resolveRegime ? await input.resolveRegime(clientId) : null;
|
|
461
|
+
const generated = await generateInstancesForCompetence(tx, {
|
|
462
|
+
competenceId: opened.competence.id,
|
|
463
|
+
regime,
|
|
464
|
+
});
|
|
465
|
+
result.itemsCreated += generated.created.length;
|
|
466
|
+
result.itemsSkipped += generated.skipped;
|
|
467
|
+
result.clientsProcessed += 1;
|
|
468
|
+
}
|
|
469
|
+
catch (err) {
|
|
470
|
+
result.failures.push({
|
|
471
|
+
clientId,
|
|
472
|
+
reason: err instanceof Error ? err.message : String(err),
|
|
473
|
+
});
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
return result;
|
|
477
|
+
}
|
|
478
|
+
async function listOfficeObligations(tx, filter = {}) {
|
|
479
|
+
const limit = Math.min(Math.max(filter.limit ?? 100, 1), 500);
|
|
480
|
+
const offset = Math.max(filter.offset ?? 0, 0);
|
|
481
|
+
const where = tx `
|
|
482
|
+
WHERE i.deleted_at IS NULL
|
|
483
|
+
AND c.deleted_at IS NULL
|
|
484
|
+
AND (${filter.dueFrom ?? null}::date IS NULL OR i.due_date >= ${filter.dueFrom ?? null})
|
|
485
|
+
AND (${filter.dueTo ?? null}::date IS NULL OR i.due_date <= ${filter.dueTo ?? null})
|
|
486
|
+
AND (${filter.status ?? null}::text IS NULL OR i.status = ${filter.status ?? null})
|
|
487
|
+
AND (${filter.nature ?? null}::text IS NULL OR i.nature = ${filter.nature ?? null})
|
|
488
|
+
AND (${filter.clientId ?? null}::uuid IS NULL OR i.client_id = ${filter.clientId ?? null})
|
|
489
|
+
AND (${filter.responsibleUserId ?? null}::uuid IS NULL
|
|
490
|
+
OR i.responsible_user_id = ${filter.responsibleUserId ?? null})
|
|
491
|
+
AND (${filter.openOnly ?? false}::boolean = false OR i.status <> 'done')
|
|
492
|
+
`;
|
|
493
|
+
const rows = await tx `
|
|
494
|
+
SELECT i.id, i.client_id, i.competence_id, i.item_type_id, i.label, i.nature,
|
|
495
|
+
i.due_date, i.status, i.responsible_user_id, i.completed_at,
|
|
496
|
+
c.display_name AS client_name,
|
|
497
|
+
comp.label AS competence_label,
|
|
498
|
+
t.sphere, t.category, t.requires_document,
|
|
499
|
+
u.full_name AS responsible_name
|
|
500
|
+
FROM recurring_instance i
|
|
501
|
+
JOIN client c ON c.id = i.client_id
|
|
502
|
+
JOIN competence comp ON comp.id = i.competence_id
|
|
503
|
+
LEFT JOIN recurring_item_type t ON t.id = i.item_type_id
|
|
504
|
+
LEFT JOIN "user" u ON u.id = i.responsible_user_id
|
|
505
|
+
${where}
|
|
506
|
+
ORDER BY i.due_date NULLS LAST, c.display_name, i.label
|
|
507
|
+
LIMIT ${limit} OFFSET ${offset}
|
|
508
|
+
`;
|
|
509
|
+
const [count] = await tx `
|
|
510
|
+
SELECT count(*)::int AS n
|
|
511
|
+
FROM recurring_instance i
|
|
512
|
+
JOIN client c ON c.id = i.client_id
|
|
513
|
+
${where}
|
|
514
|
+
`;
|
|
515
|
+
return {
|
|
516
|
+
items: rows.map((r) => ({
|
|
517
|
+
...mapInstance(r),
|
|
518
|
+
clientName: r.client_name,
|
|
519
|
+
competenceLabel: r.competence_label,
|
|
520
|
+
sphere: r.sphere,
|
|
521
|
+
category: r.category,
|
|
522
|
+
requiresDocument: r.requires_document ?? false,
|
|
523
|
+
responsibleName: r.responsible_name,
|
|
524
|
+
})),
|
|
525
|
+
total: count?.n ?? 0,
|
|
526
|
+
};
|
|
527
|
+
}
|
|
528
|
+
/**
|
|
529
|
+
* Define o responsável por um item.
|
|
530
|
+
*
|
|
531
|
+
* Existe porque não existia: a rota de compliance legada gravava
|
|
532
|
+
* `responsibleUserId = auth.userId` sem aceitar o campo, então a obrigação era
|
|
533
|
+
* sempre de quem a criou. Um escritório distribui trabalho; sem isto, "de quem é
|
|
534
|
+
* esta DAS?" não tem resposta no produto.
|
|
535
|
+
*
|
|
536
|
+
* `null` desatribui — deixar sem dono é um estado legítimo, e sem essa
|
|
537
|
+
* distinção um campo esvaziado na tela seria indistinguível de "não mexi nele".
|
|
538
|
+
*/
|
|
539
|
+
async function assignInstance(tx, input) {
|
|
540
|
+
const rows = await tx `
|
|
541
|
+
UPDATE recurring_instance
|
|
542
|
+
SET responsible_user_id = ${input.responsibleUserId},
|
|
543
|
+
version = version + 1, updated_at = now()
|
|
544
|
+
WHERE id = ${input.id} AND deleted_at IS NULL
|
|
545
|
+
RETURNING id, client_id, competence_id, item_type_id, label, nature,
|
|
546
|
+
due_date, status, responsible_user_id, completed_at
|
|
547
|
+
`;
|
|
548
|
+
if (!rows[0])
|
|
549
|
+
throw new shared_1.NotFoundError('Item não encontrado');
|
|
550
|
+
return mapInstance(rows[0]);
|
|
551
|
+
}
|
|
552
|
+
/**
|
|
553
|
+
* Reabre um item concluído.
|
|
554
|
+
*
|
|
555
|
+
* Marcar como entregue é a ação mais fácil de errar na tela — uma linha ao lado
|
|
556
|
+
* da outra, um clique. Sem reabrir, o erro vira permanente e o operador aprende
|
|
557
|
+
* a não confiar no botão.
|
|
558
|
+
*/
|
|
559
|
+
async function reopenInstance(tx, id) {
|
|
560
|
+
const rows = await tx `
|
|
561
|
+
UPDATE recurring_instance
|
|
562
|
+
SET status = 'pending', completed_at = NULL, completed_by = NULL,
|
|
563
|
+
version = version + 1, updated_at = now()
|
|
564
|
+
WHERE id = ${id} AND deleted_at IS NULL AND status = 'done'
|
|
565
|
+
RETURNING id, client_id, competence_id, item_type_id, label, nature,
|
|
566
|
+
due_date, status, responsible_user_id, completed_at
|
|
567
|
+
`;
|
|
568
|
+
if (!rows[0])
|
|
569
|
+
throw new shared_1.NotFoundError('Item não encontrado ou não está concluído');
|
|
570
|
+
return mapInstance(rows[0]);
|
|
571
|
+
}
|
|
572
|
+
/**
|
|
573
|
+
* Fecha a obrigação quando TODOS os documentos que ela pedia foram validados.
|
|
574
|
+
*
|
|
575
|
+
* Este é o elo que faltava no ciclo. `document_request.recurring_instance_id`
|
|
576
|
+
* existe no schema desde a 0026 e nunca era preenchido, então validar um
|
|
577
|
+
* documento não dizia nada à obrigação que o pediu: o operador entregava a
|
|
578
|
+
* DAS, validava a nota fiscal, e ainda precisava lembrar de marcar a obrigação
|
|
579
|
+
* à mão — numa lista onde esquecer é o resultado provável.
|
|
580
|
+
*
|
|
581
|
+
* **Todos**, não "algum". Uma obrigação pode pedir três documentos; concluir no
|
|
582
|
+
* primeiro validado marcaria como entregue algo que ainda falta. Pedido
|
|
583
|
+
* `canceled` não conta como pendência — foi retirado de propósito.
|
|
584
|
+
*
|
|
585
|
+
* Devolve a instância quando concluiu, `null` quando ainda há pendência. `null`
|
|
586
|
+
* é resposta normal, não erro.
|
|
587
|
+
*/
|
|
588
|
+
async function completeInstanceIfDocumentsSettled(tx, input) {
|
|
589
|
+
const [pend] = await tx `
|
|
590
|
+
SELECT count(*) FILTER (WHERE status NOT IN ('validated', 'canceled'))::int AS pendentes,
|
|
591
|
+
count(*)::int AS total
|
|
592
|
+
FROM document_request
|
|
593
|
+
WHERE recurring_instance_id = ${input.instanceId} AND deleted_at IS NULL
|
|
594
|
+
`;
|
|
595
|
+
// Sem pedido nenhum, não há o que inferir: a obrigação não é "de documento".
|
|
596
|
+
if (!pend || pend.total === 0 || pend.pendentes > 0)
|
|
597
|
+
return null;
|
|
598
|
+
const rows = await tx `
|
|
599
|
+
UPDATE recurring_instance
|
|
600
|
+
SET status = 'done', completed_at = now(), completed_by = ${input.completedBy},
|
|
601
|
+
version = version + 1, updated_at = now()
|
|
602
|
+
WHERE id = ${input.instanceId} AND deleted_at IS NULL AND status <> 'done'
|
|
603
|
+
RETURNING id, client_id, competence_id, item_type_id, label, nature,
|
|
604
|
+
due_date, status, responsible_user_id, completed_at
|
|
605
|
+
`;
|
|
606
|
+
// Já estava concluída: não é erro, e não há nada a anunciar.
|
|
607
|
+
return rows[0] ? mapInstance(rows[0]) : null;
|
|
608
|
+
}
|
|
296
609
|
async function completeInstance(tx, input) {
|
|
297
610
|
const rows = await tx `
|
|
298
611
|
UPDATE recurring_instance
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../src/competence/repository.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../src/competence/repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPilotPanel = getPilotPanel;
|
|
4
|
+
const ar_repository_js_1 = require("../billing/ar-repository.js");
|
|
5
|
+
const milestone_js_1 = require("../pilot/milestone.js");
|
|
6
|
+
/**
|
|
7
|
+
* Uma consulta por bloco, não uma por número.
|
|
8
|
+
*
|
|
9
|
+
* `count(*) FILTER (WHERE …)` faz o Postgres varrer a tabela uma vez e devolver
|
|
10
|
+
* todos os recortes. Doze `SELECT count(*)` separados dariam o mesmo resultado
|
|
11
|
+
* com doze varreduras — e, pior, com doze instantes diferentes: dois números do
|
|
12
|
+
* mesmo painel poderiam discordar entre si.
|
|
13
|
+
*/
|
|
14
|
+
async function getPilotPanel(tx) {
|
|
15
|
+
const [clientes] = await tx `
|
|
16
|
+
SELECT
|
|
17
|
+
count(*) FILTER (WHERE c.status = 'active')::int AS ativos,
|
|
18
|
+
count(*) FILTER (WHERE c.status = 'prospect')::int AS onboarding,
|
|
19
|
+
count(*) FILTER (WHERE c.status = 'active' AND c.email IS NULL)::int AS sem_canal,
|
|
20
|
+
count(*) FILTER (WHERE c.status = 'active'
|
|
21
|
+
AND c.responsible_user_id IS NULL)::int AS sem_resp,
|
|
22
|
+
count(*) FILTER (WHERE c.status = 'active'
|
|
23
|
+
AND c.email IS NOT NULL
|
|
24
|
+
AND c.communication_cleared_at IS NULL)::int AS sem_liberacao
|
|
25
|
+
FROM client c
|
|
26
|
+
WHERE c.deleted_at IS NULL
|
|
27
|
+
`;
|
|
28
|
+
const [obrigacoes] = await tx `
|
|
29
|
+
SELECT
|
|
30
|
+
count(*) FILTER (WHERE due_date = current_date)::int AS hoje,
|
|
31
|
+
count(*) FILTER (WHERE due_date > current_date
|
|
32
|
+
AND due_date <= current_date + 7)::int AS sete,
|
|
33
|
+
count(*) FILTER (WHERE due_date < current_date)::int AS atraso,
|
|
34
|
+
count(*) FILTER (WHERE responsible_user_id IS NULL)::int AS sem_resp,
|
|
35
|
+
count(*) FILTER (WHERE status = 'awaiting_client')::int AS aguardando
|
|
36
|
+
FROM recurring_instance
|
|
37
|
+
WHERE deleted_at IS NULL
|
|
38
|
+
AND status NOT IN ('done', 'not_applicable', 'canceled')
|
|
39
|
+
`;
|
|
40
|
+
const [documentos] = await tx `
|
|
41
|
+
SELECT
|
|
42
|
+
count(*) FILTER (WHERE status = 'requested')::int AS pendentes,
|
|
43
|
+
count(*) FILTER (WHERE status = 'requested'
|
|
44
|
+
AND due_date IS NOT NULL AND due_date < current_date)::int AS vencidos,
|
|
45
|
+
count(*) FILTER (WHERE status = 'received')::int AS validar
|
|
46
|
+
FROM document_request
|
|
47
|
+
WHERE deleted_at IS NULL
|
|
48
|
+
`;
|
|
49
|
+
const [solicitacoes] = await tx `
|
|
50
|
+
SELECT
|
|
51
|
+
count(*) FILTER (WHERE status IN ('sent', 'viewed', 'awaiting_client'))::int AS cliente,
|
|
52
|
+
count(*) FILTER (WHERE status IN ('answered', 'in_review'))::int AS equipe
|
|
53
|
+
FROM service_request
|
|
54
|
+
WHERE deleted_at IS NULL
|
|
55
|
+
`;
|
|
56
|
+
const financeiro = await (0, ar_repository_js_1.financialSummary)(tx);
|
|
57
|
+
const provenance = await (0, milestone_js_1.dataProvenance)(tx);
|
|
58
|
+
return {
|
|
59
|
+
provenance,
|
|
60
|
+
clientes: {
|
|
61
|
+
ativos: clientes?.ativos ?? 0,
|
|
62
|
+
emOnboarding: clientes?.onboarding ?? 0,
|
|
63
|
+
semCanalAutomatico: clientes?.sem_canal ?? 0,
|
|
64
|
+
semResponsavel: clientes?.sem_resp ?? 0,
|
|
65
|
+
aguardandoLiberacao: clientes?.sem_liberacao ?? 0,
|
|
66
|
+
},
|
|
67
|
+
obrigacoes: {
|
|
68
|
+
venceHoje: obrigacoes?.hoje ?? 0,
|
|
69
|
+
venceEm7Dias: obrigacoes?.sete ?? 0,
|
|
70
|
+
atrasadas: obrigacoes?.atraso ?? 0,
|
|
71
|
+
semResponsavel: obrigacoes?.sem_resp ?? 0,
|
|
72
|
+
aguardandoCliente: obrigacoes?.aguardando ?? 0,
|
|
73
|
+
},
|
|
74
|
+
documentos: {
|
|
75
|
+
pendentes: documentos?.pendentes ?? 0,
|
|
76
|
+
vencidos: documentos?.vencidos ?? 0,
|
|
77
|
+
aguardandoValidacao: documentos?.validar ?? 0,
|
|
78
|
+
},
|
|
79
|
+
solicitacoes: {
|
|
80
|
+
aguardandoCliente: solicitacoes?.cliente ?? 0,
|
|
81
|
+
aguardandoEquipe: solicitacoes?.equipe ?? 0,
|
|
82
|
+
},
|
|
83
|
+
financeiro: {
|
|
84
|
+
recebiveisVencidos: financeiro.overdueCount,
|
|
85
|
+
valorVencido: financeiro.totalOverdue,
|
|
86
|
+
aVencerEm7Dias: financeiro.totalDueSoon,
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=pilot-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pilot-panel.js","sourceRoot":"","sources":["../../../src/dashboard/pilot-panel.ts"],"names":[],"mappings":";;AAqGA,sCA0FC;AA9LD,kEAA+D;AAC/D,wDAA4E;AA2F5E;;;;;;;GAOG;AACI,KAAK,UAAU,aAAa,CAAC,EAAM;IACxC,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE,CAQ1B;;;;;;;;;;;;GAYA,CAAC;IAEF,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,EAAE,CAE5B;;;;;;;;;;;GAWA,CAAC;IAEF,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,EAAE,CAA4D;;;;;;;;GAQxF,CAAC;IAEF,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,EAAE,CAAuC;;;;;;GAMrE,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,IAAA,mCAAgB,EAAC,EAAE,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,MAAM,IAAA,6BAAc,EAAC,EAAE,CAAC,CAAC;IAE5C,OAAO;QACL,UAAU;QACV,QAAQ,EAAE;YACR,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;YAC7B,YAAY,EAAE,QAAQ,EAAE,UAAU,IAAI,CAAC;YACvC,kBAAkB,EAAE,QAAQ,EAAE,SAAS,IAAI,CAAC;YAC5C,cAAc,EAAE,QAAQ,EAAE,QAAQ,IAAI,CAAC;YACvC,mBAAmB,EAAE,QAAQ,EAAE,aAAa,IAAI,CAAC;SAClD;QACD,UAAU,EAAE;YACV,SAAS,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC;YAChC,YAAY,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC;YACnC,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;YAClC,cAAc,EAAE,UAAU,EAAE,QAAQ,IAAI,CAAC;YACzC,iBAAiB,EAAE,UAAU,EAAE,UAAU,IAAI,CAAC;SAC/C;QACD,UAAU,EAAE;YACV,SAAS,EAAE,UAAU,EAAE,SAAS,IAAI,CAAC;YACrC,QAAQ,EAAE,UAAU,EAAE,QAAQ,IAAI,CAAC;YACnC,mBAAmB,EAAE,UAAU,EAAE,OAAO,IAAI,CAAC;SAC9C;QACD,YAAY,EAAE;YACZ,iBAAiB,EAAE,YAAY,EAAE,OAAO,IAAI,CAAC;YAC7C,gBAAgB,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;SAC5C;QACD,UAAU,EAAE;YACV,kBAAkB,EAAE,UAAU,CAAC,YAAY;YAC3C,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,cAAc,EAAE,UAAU,CAAC,YAAY;SACxC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -2,8 +2,18 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getCoreStats = getCoreStats;
|
|
4
4
|
async function getCoreStats(tx) {
|
|
5
|
+
// "Clientes ativos" precisa contar clientes ATIVOS.
|
|
6
|
+
//
|
|
7
|
+
// Contava todo registro não removido, inativos inclusive — e o card se chama
|
|
8
|
+
// "Clientes ativos". Com dois clientes inativados, a mesma tela mostrava
|
|
9
|
+
// `Carteira → Clientes ativos = 0` e `Resumo geral → Clientes ativos = 2`,
|
|
10
|
+
// porque o painel de carteira filtra por `status` e este não filtrava.
|
|
11
|
+
//
|
|
12
|
+
// Duas consultas respondendo à mesma pergunta com definições diferentes é
|
|
13
|
+
// como um painel perde a confiança de quem o lê: não há como saber qual dos
|
|
14
|
+
// dois números está certo sem abrir o código.
|
|
5
15
|
const [clients] = await tx `
|
|
6
|
-
SELECT count(*)::int AS n FROM client WHERE deleted_at IS NULL
|
|
16
|
+
SELECT count(*)::int AS n FROM client WHERE deleted_at IS NULL AND status = 'active'
|
|
7
17
|
`;
|
|
8
18
|
const [users] = await tx `
|
|
9
19
|
SELECT count(*)::int AS n FROM membership WHERE status = 'active' AND deleted_at IS NULL
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../src/dashboard/repository.ts"],"names":[],"mappings":";;AAeA,
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../src/dashboard/repository.ts"],"names":[],"mappings":";;AAeA,oCA4CC;AA5CM,KAAK,UAAU,YAAY,CAAC,EAAM;IACvC,oDAAoD;IACpD,EAAE;IACF,6EAA6E;IAC7E,yEAAyE;IACzE,2EAA2E;IAC3E,uEAAuE;IACvE,EAAE;IACF,0EAA0E;IAC1E,4EAA4E;IAC5E,8CAA8C;IAC9C,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE,CAAiB;;GAE1C,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,CAAiB;;GAExC,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE,CAAiB;;;;GAIvC,CAAC;IACF,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE,CAAiB;;;;;;GAM1C,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAgE;;;GAGtF,CAAC;IACF,OAAO;QACL,OAAO,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC;QACxB,WAAW,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC;QAC1B,YAAY,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC;QAC1B,eAAe,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC;QAChC,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,YAAY,EAAE,CAAC,CAAC,aAAa;YAC7B,UAAU,EAAE,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE;SACxC,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC"}
|
package/dist/cjs/db/client.js
CHANGED
|
@@ -3,24 +3,30 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.resolveTls = resolveTls;
|
|
6
7
|
exports.createDb = createDb;
|
|
7
8
|
const postgres_1 = __importDefault(require("postgres"));
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
const LOCAL_HOST = /@(localhost|127\.0\.0\.1|host\.docker\.internal|\[?::1\]?)[:/]/;
|
|
10
|
+
const SSL_DISABLED = /[?&]sslmode=disable(&|$)/;
|
|
11
|
+
function resolveTls(connectionString, env = process.env) {
|
|
12
|
+
if (LOCAL_HOST.test(connectionString))
|
|
13
|
+
return { ssl: undefined, reason: 'local' };
|
|
14
|
+
if (SSL_DISABLED.test(connectionString)) {
|
|
15
|
+
return { ssl: undefined, reason: 'explicitly-disabled' };
|
|
16
|
+
}
|
|
17
|
+
const ca = env['PGSSLROOTCERT_PEM']?.trim();
|
|
18
|
+
return {
|
|
19
|
+
ssl: ca ? { rejectUnauthorized: true, ca } : { rejectUnauthorized: true },
|
|
20
|
+
reason: 'verified',
|
|
21
|
+
};
|
|
22
|
+
}
|
|
14
23
|
function createDb(connectionString, opts = {}) {
|
|
15
|
-
|
|
16
|
-
// Postgres local. Detecta pelo host/flag da URL.
|
|
17
|
-
const isLocal = /@(localhost|127\.0\.0\.1|host\.docker\.internal|\[?::1\]?)[:/]/.test(connectionString);
|
|
18
|
-
const wantsSsl = !isLocal && /sslmode=require|render\.com|neon\.tech|supabase|amazonaws|\.cloud/.test(connectionString);
|
|
24
|
+
const { ssl } = resolveTls(connectionString);
|
|
19
25
|
return (0, postgres_1.default)(connectionString, {
|
|
20
26
|
max: opts.max ?? 10,
|
|
21
27
|
// UUIDs são gerados na aplicação (uuidv7); datas em UTC.
|
|
22
28
|
prepare: true,
|
|
23
|
-
ssl
|
|
29
|
+
ssl,
|
|
24
30
|
onnotice: () => { }, // silencia NOTICEs verbosos de DO-blocks/IF EXISTS
|
|
25
31
|
});
|
|
26
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/db/client.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/db/client.ts"],"names":[],"mappings":";;;;;AAiEA,gCAaC;AAED,4BAUC;AA1FD,wDAAgC;AA8DhC,MAAM,UAAU,GAAG,gEAAgE,CAAC;AACpF,MAAM,YAAY,GAAG,0BAA0B,CAAC;AAEhD,SAAgB,UAAU,CACxB,gBAAwB,EACxB,MAAyB,OAAO,CAAC,GAAG;IAEpC,IAAI,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAClF,IAAI,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;IAC3D,CAAC;IACD,MAAM,EAAE,GAAG,GAAG,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC;IAC5C,OAAO;QACL,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE;QACzE,MAAM,EAAE,UAAU;KACnB,CAAC;AACJ,CAAC;AAED,SAAgB,QAAQ,CAAC,gBAAwB,EAAE,OAAkB,EAAE;IACrE,MAAM,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAE7C,OAAO,IAAA,kBAAQ,EAAC,gBAAgB,EAAE;QAChC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE;QACnB,yDAAyD;QACzD,OAAO,EAAE,IAAI;QACb,GAAG;QACH,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,mDAAmD;KACxE,CAAC,CAAC;AACL,CAAC"}
|