@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.
Files changed (465) hide show
  1. package/.baruk-provenance.json +4 -4
  2. package/CHANGELOG.md +42 -0
  3. package/dist/audit/repository.d.ts +33 -1
  4. package/dist/audit/repository.d.ts.map +1 -1
  5. package/dist/audit/repository.js +41 -7
  6. package/dist/audit/repository.js.map +1 -1
  7. package/dist/auth/service.d.ts +21 -0
  8. package/dist/auth/service.d.ts.map +1 -1
  9. package/dist/auth/service.js +46 -1
  10. package/dist/auth/service.js.map +1 -1
  11. package/dist/billing/ar-repository.d.ts +41 -1
  12. package/dist/billing/ar-repository.d.ts.map +1 -1
  13. package/dist/billing/ar-repository.js +82 -6
  14. package/dist/billing/ar-repository.js.map +1 -1
  15. package/dist/billing/provider-account.d.ts +38 -0
  16. package/dist/billing/provider-account.d.ts.map +1 -1
  17. package/dist/billing/provider-account.js +58 -2
  18. package/dist/billing/provider-account.js.map +1 -1
  19. package/dist/billing/repository.d.ts +44 -0
  20. package/dist/billing/repository.d.ts.map +1 -1
  21. package/dist/billing/repository.js +49 -5
  22. package/dist/billing/repository.js.map +1 -1
  23. package/dist/cjs/audit/repository.js +41 -7
  24. package/dist/cjs/audit/repository.js.map +1 -1
  25. package/dist/cjs/auth/service.js +46 -1
  26. package/dist/cjs/auth/service.js.map +1 -1
  27. package/dist/cjs/billing/ar-repository.js +82 -6
  28. package/dist/cjs/billing/ar-repository.js.map +1 -1
  29. package/dist/cjs/billing/provider-account.js +60 -1
  30. package/dist/cjs/billing/provider-account.js.map +1 -1
  31. package/dist/cjs/billing/repository.js +51 -5
  32. package/dist/cjs/billing/repository.js.map +1 -1
  33. package/dist/cjs/clients/ibge.js +103 -0
  34. package/dist/cjs/clients/ibge.js.map +1 -0
  35. package/dist/cjs/clients/repository.js +186 -9
  36. package/dist/cjs/clients/repository.js.map +1 -1
  37. package/dist/cjs/collection/branding.js +190 -0
  38. package/dist/cjs/collection/branding.js.map +1 -1
  39. package/dist/cjs/collection/clearance-store.js +74 -0
  40. package/dist/cjs/collection/clearance-store.js.map +1 -0
  41. package/dist/cjs/collection/communication-runtime.js +65 -2
  42. package/dist/cjs/collection/communication-runtime.js.map +1 -1
  43. package/dist/cjs/collection/engine.js +20 -0
  44. package/dist/cjs/collection/engine.js.map +1 -1
  45. package/dist/cjs/collection/policy.js +29 -1
  46. package/dist/cjs/collection/policy.js.map +1 -1
  47. package/dist/cjs/communication/clearance.js +18 -0
  48. package/dist/cjs/communication/clearance.js.map +1 -0
  49. package/dist/cjs/communication/dry-run-scenario.js +5 -0
  50. package/dist/cjs/communication/dry-run-scenario.js.map +1 -1
  51. package/dist/cjs/communication/engine.js +12 -0
  52. package/dist/cjs/communication/engine.js.map +1 -1
  53. package/dist/cjs/communication/policy.js.map +1 -1
  54. package/dist/cjs/competence/business-days.js +155 -0
  55. package/dist/cjs/competence/business-days.js.map +1 -0
  56. package/dist/cjs/competence/catalog-validation.js +174 -0
  57. package/dist/cjs/competence/catalog-validation.js.map +1 -0
  58. package/dist/cjs/competence/obligation-preview.js +190 -0
  59. package/dist/cjs/competence/obligation-preview.js.map +1 -0
  60. package/dist/cjs/competence/repository.js +330 -17
  61. package/dist/cjs/competence/repository.js.map +1 -1
  62. package/dist/cjs/dashboard/pilot-panel.js +90 -0
  63. package/dist/cjs/dashboard/pilot-panel.js.map +1 -0
  64. package/dist/cjs/dashboard/repository.js +11 -1
  65. package/dist/cjs/dashboard/repository.js.map +1 -1
  66. package/dist/cjs/db/client.js +17 -11
  67. package/dist/cjs/db/client.js.map +1 -1
  68. package/dist/cjs/db/provision-e2e-identity.js +111 -0
  69. package/dist/cjs/db/provision-e2e-identity.js.map +1 -0
  70. package/dist/cjs/fiscal/applicability.js +164 -0
  71. package/dist/cjs/fiscal/applicability.js.map +1 -0
  72. package/dist/cjs/fiscal/conditions.js +198 -0
  73. package/dist/cjs/fiscal/conditions.js.map +1 -0
  74. package/dist/cjs/fiscal/contracts/nfse-adn-contract.js +390 -0
  75. package/dist/cjs/fiscal/contracts/nfse-adn-contract.js.map +1 -0
  76. package/dist/cjs/fiscal/contracts/nfse-adn-endpoint.js +108 -0
  77. package/dist/cjs/fiscal/contracts/nfse-adn-endpoint.js.map +1 -0
  78. package/dist/cjs/fiscal/contracts/nfse-adn-envelope.js +220 -0
  79. package/dist/cjs/fiscal/contracts/nfse-adn-envelope.js.map +1 -0
  80. package/dist/cjs/fiscal/coverage/model.js +127 -0
  81. package/dist/cjs/fiscal/coverage/model.js.map +1 -0
  82. package/dist/cjs/fiscal/coverage/requests.js +99 -0
  83. package/dist/cjs/fiscal/coverage/requests.js.map +1 -0
  84. package/dist/cjs/fiscal/credentials/material.js +168 -0
  85. package/dist/cjs/fiscal/credentials/material.js.map +1 -0
  86. package/dist/cjs/fiscal/credentials/readiness.js +163 -0
  87. package/dist/cjs/fiscal/credentials/readiness.js.map +1 -0
  88. package/dist/cjs/fiscal/eligibility.js +199 -0
  89. package/dist/cjs/fiscal/eligibility.js.map +1 -0
  90. package/dist/cjs/fiscal/ingestion/__fixtures__/nfse.js +128 -0
  91. package/dist/cjs/fiscal/ingestion/__fixtures__/nfse.js.map +1 -0
  92. package/dist/cjs/fiscal/ingestion/adn-transport.js +229 -0
  93. package/dist/cjs/fiscal/ingestion/adn-transport.js.map +1 -0
  94. package/dist/cjs/fiscal/ingestion/direction.js +36 -0
  95. package/dist/cjs/fiscal/ingestion/direction.js.map +1 -0
  96. package/dist/cjs/fiscal/ingestion/nfse-adn.js +228 -0
  97. package/dist/cjs/fiscal/ingestion/nfse-adn.js.map +1 -0
  98. package/dist/cjs/fiscal/ingestion/pipeline.js +704 -0
  99. package/dist/cjs/fiscal/ingestion/pipeline.js.map +1 -0
  100. package/dist/cjs/fiscal/ingestion/provider.js +51 -0
  101. package/dist/cjs/fiscal/ingestion/provider.js.map +1 -0
  102. package/dist/cjs/fiscal/ingestion/repository.js +132 -0
  103. package/dist/cjs/fiscal/ingestion/repository.js.map +1 -0
  104. package/dist/cjs/fiscal/ingestion/synthetic-provider.js +103 -0
  105. package/dist/cjs/fiscal/ingestion/synthetic-provider.js.map +1 -0
  106. package/dist/cjs/fiscal/ingestion/synthetic-transport-types.js +13 -0
  107. package/dist/cjs/fiscal/ingestion/synthetic-transport-types.js.map +1 -0
  108. package/dist/cjs/fiscal/ingestion/synthetic-transport.js +61 -0
  109. package/dist/cjs/fiscal/ingestion/synthetic-transport.js.map +1 -0
  110. package/dist/cjs/fiscal/ingestion/xml-reader.js +121 -0
  111. package/dist/cjs/fiscal/ingestion/xml-reader.js.map +1 -0
  112. package/dist/cjs/fiscal/repository.js +470 -0
  113. package/dist/cjs/fiscal/repository.js.map +1 -0
  114. package/dist/cjs/fiscal/sync/circuit.js +124 -0
  115. package/dist/cjs/fiscal/sync/circuit.js.map +1 -0
  116. package/dist/cjs/fiscal/sync/intervention.js +140 -0
  117. package/dist/cjs/fiscal/sync/intervention.js.map +1 -0
  118. package/dist/cjs/fiscal/sync/lease.js +146 -0
  119. package/dist/cjs/fiscal/sync/lease.js.map +1 -0
  120. package/dist/cjs/fiscal/sync/observability.js +244 -0
  121. package/dist/cjs/fiscal/sync/observability.js.map +1 -0
  122. package/dist/cjs/fiscal/sync/orchestrator.js +490 -0
  123. package/dist/cjs/fiscal/sync/orchestrator.js.map +1 -0
  124. package/dist/cjs/fiscal/sync/policy.js +143 -0
  125. package/dist/cjs/fiscal/sync/policy.js.map +1 -0
  126. package/dist/cjs/fiscal/sync/reprocess.js +241 -0
  127. package/dist/cjs/fiscal/sync/reprocess.js.map +1 -0
  128. package/dist/cjs/fiscal/sync/retry.js +183 -0
  129. package/dist/cjs/fiscal/sync/retry.js.map +1 -0
  130. package/dist/cjs/fiscal/sync/secret-boundary.js +123 -0
  131. package/dist/cjs/fiscal/sync/secret-boundary.js.map +1 -0
  132. package/dist/cjs/fiscal/transport/https.js +309 -0
  133. package/dist/cjs/fiscal/transport/https.js.map +1 -0
  134. package/dist/cjs/fiscal/transport/synthetic-tls.js +328 -0
  135. package/dist/cjs/fiscal/transport/synthetic-tls.js.map +1 -0
  136. package/dist/cjs/fiscal/transport/types.js +93 -0
  137. package/dist/cjs/fiscal/transport/types.js.map +1 -0
  138. package/dist/cjs/import/br-documents.js +85 -0
  139. package/dist/cjs/import/br-documents.js.map +1 -0
  140. package/dist/cjs/import/clients-import.js +347 -40
  141. package/dist/cjs/import/clients-import.js.map +1 -1
  142. package/dist/cjs/index.js +316 -11
  143. package/dist/cjs/index.js.map +1 -1
  144. package/dist/cjs/legal/documents.js +100 -15
  145. package/dist/cjs/legal/documents.js.map +1 -1
  146. package/dist/cjs/legal/index.js +3 -1
  147. package/dist/cjs/legal/index.js.map +1 -1
  148. package/dist/cjs/legal/types.js.map +1 -1
  149. package/dist/cjs/onboarding/persistence.js +4 -4
  150. package/dist/cjs/onboarding/persistence.js.map +1 -1
  151. package/dist/cjs/pilot/go-live-checklist.js +212 -0
  152. package/dist/cjs/pilot/go-live-checklist.js.map +1 -0
  153. package/dist/cjs/pilot/milestone.js +79 -0
  154. package/dist/cjs/pilot/milestone.js.map +1 -0
  155. package/dist/cjs/platform/capabilities.js +144 -0
  156. package/dist/cjs/platform/capabilities.js.map +1 -0
  157. package/dist/cjs/platform/job-contract.js +411 -0
  158. package/dist/cjs/platform/job-contract.js.map +1 -0
  159. package/dist/cjs/rbac/catalog.js +34 -0
  160. package/dist/cjs/rbac/catalog.js.map +1 -1
  161. package/dist/cjs/subscription-billing/index.js +2 -1
  162. package/dist/cjs/subscription-billing/index.js.map +1 -1
  163. package/dist/cjs/subscription-billing/service.js +153 -77
  164. package/dist/cjs/subscription-billing/service.js.map +1 -1
  165. package/dist/cjs/tenancy/features.js +131 -0
  166. package/dist/cjs/tenancy/features.js.map +1 -0
  167. package/dist/cjs/tenancy/settings.js +224 -0
  168. package/dist/cjs/tenancy/settings.js.map +1 -0
  169. package/dist/cjs/users/repository.js +24 -1
  170. package/dist/cjs/users/repository.js.map +1 -1
  171. package/dist/clients/ibge.d.ts +17 -0
  172. package/dist/clients/ibge.d.ts.map +1 -0
  173. package/dist/clients/ibge.js +98 -0
  174. package/dist/clients/ibge.js.map +1 -0
  175. package/dist/clients/repository.d.ts +154 -0
  176. package/dist/clients/repository.d.ts.map +1 -1
  177. package/dist/clients/repository.js +182 -9
  178. package/dist/clients/repository.js.map +1 -1
  179. package/dist/collection/branding.d.ts +65 -0
  180. package/dist/collection/branding.d.ts.map +1 -1
  181. package/dist/collection/branding.js +186 -0
  182. package/dist/collection/branding.js.map +1 -1
  183. package/dist/collection/clearance-store.d.ts +39 -0
  184. package/dist/collection/clearance-store.d.ts.map +1 -0
  185. package/dist/collection/clearance-store.js +69 -0
  186. package/dist/collection/clearance-store.js.map +1 -0
  187. package/dist/collection/communication-runtime.d.ts +37 -0
  188. package/dist/collection/communication-runtime.d.ts.map +1 -1
  189. package/dist/collection/communication-runtime.js +63 -1
  190. package/dist/collection/communication-runtime.js.map +1 -1
  191. package/dist/collection/engine.d.ts +23 -0
  192. package/dist/collection/engine.d.ts.map +1 -1
  193. package/dist/collection/engine.js +20 -0
  194. package/dist/collection/engine.js.map +1 -1
  195. package/dist/collection/policy.d.ts +25 -0
  196. package/dist/collection/policy.d.ts.map +1 -1
  197. package/dist/collection/policy.js +27 -0
  198. package/dist/collection/policy.js.map +1 -1
  199. package/dist/communication/clearance.d.ts +53 -0
  200. package/dist/communication/clearance.d.ts.map +1 -0
  201. package/dist/communication/clearance.js +15 -0
  202. package/dist/communication/clearance.js.map +1 -0
  203. package/dist/communication/dry-run-scenario.d.ts.map +1 -1
  204. package/dist/communication/dry-run-scenario.js +5 -0
  205. package/dist/communication/dry-run-scenario.js.map +1 -1
  206. package/dist/communication/engine.d.ts +10 -0
  207. package/dist/communication/engine.d.ts.map +1 -1
  208. package/dist/communication/engine.js +12 -0
  209. package/dist/communication/engine.js.map +1 -1
  210. package/dist/communication/policy.d.ts +16 -0
  211. package/dist/communication/policy.d.ts.map +1 -1
  212. package/dist/communication/policy.js.map +1 -1
  213. package/dist/competence/business-days.d.ts +51 -0
  214. package/dist/competence/business-days.d.ts.map +1 -0
  215. package/dist/competence/business-days.js +145 -0
  216. package/dist/competence/business-days.js.map +1 -0
  217. package/dist/competence/catalog-validation.d.ts +86 -0
  218. package/dist/competence/catalog-validation.d.ts.map +1 -0
  219. package/dist/competence/catalog-validation.js +168 -0
  220. package/dist/competence/catalog-validation.js.map +1 -0
  221. package/dist/competence/obligation-preview.d.ts +103 -0
  222. package/dist/competence/obligation-preview.d.ts.map +1 -0
  223. package/dist/competence/obligation-preview.js +184 -0
  224. package/dist/competence/obligation-preview.js.map +1 -0
  225. package/dist/competence/repository.d.ts +139 -1
  226. package/dist/competence/repository.d.ts.map +1 -1
  227. package/dist/competence/repository.js +325 -17
  228. package/dist/competence/repository.js.map +1 -1
  229. package/dist/dashboard/pilot-panel.d.ts +100 -0
  230. package/dist/dashboard/pilot-panel.d.ts.map +1 -0
  231. package/dist/dashboard/pilot-panel.js +87 -0
  232. package/dist/dashboard/pilot-panel.js.map +1 -0
  233. package/dist/dashboard/repository.d.ts.map +1 -1
  234. package/dist/dashboard/repository.js +11 -1
  235. package/dist/dashboard/repository.js.map +1 -1
  236. package/dist/db/client.d.ts +45 -0
  237. package/dist/db/client.d.ts.map +1 -1
  238. package/dist/db/client.js +16 -11
  239. package/dist/db/client.js.map +1 -1
  240. package/dist/db/migrate.d.ts +36 -1
  241. package/dist/db/migrate.d.ts.map +1 -1
  242. package/dist/db/migrate.js +199 -32
  243. package/dist/db/migrate.js.map +1 -1
  244. package/dist/db/provision-e2e-identity.d.ts +2 -0
  245. package/dist/db/provision-e2e-identity.d.ts.map +1 -0
  246. package/dist/db/provision-e2e-identity.js +109 -0
  247. package/dist/db/provision-e2e-identity.js.map +1 -0
  248. package/dist/fiscal/applicability.d.ts +73 -0
  249. package/dist/fiscal/applicability.d.ts.map +1 -0
  250. package/dist/fiscal/applicability.js +160 -0
  251. package/dist/fiscal/applicability.js.map +1 -0
  252. package/dist/fiscal/conditions.d.ts +99 -0
  253. package/dist/fiscal/conditions.d.ts.map +1 -0
  254. package/dist/fiscal/conditions.js +190 -0
  255. package/dist/fiscal/conditions.js.map +1 -0
  256. package/dist/fiscal/contracts/nfse-adn-contract.d.ts +315 -0
  257. package/dist/fiscal/contracts/nfse-adn-contract.d.ts.map +1 -0
  258. package/dist/fiscal/contracts/nfse-adn-contract.js +386 -0
  259. package/dist/fiscal/contracts/nfse-adn-contract.js.map +1 -0
  260. package/dist/fiscal/contracts/nfse-adn-endpoint.d.ts +13 -0
  261. package/dist/fiscal/contracts/nfse-adn-endpoint.d.ts.map +1 -0
  262. package/dist/fiscal/contracts/nfse-adn-endpoint.js +103 -0
  263. package/dist/fiscal/contracts/nfse-adn-endpoint.js.map +1 -0
  264. package/dist/fiscal/contracts/nfse-adn-envelope.d.ts +77 -0
  265. package/dist/fiscal/contracts/nfse-adn-envelope.d.ts.map +1 -0
  266. package/dist/fiscal/contracts/nfse-adn-envelope.js +215 -0
  267. package/dist/fiscal/contracts/nfse-adn-envelope.js.map +1 -0
  268. package/dist/fiscal/coverage/model.d.ts +86 -0
  269. package/dist/fiscal/coverage/model.d.ts.map +1 -0
  270. package/dist/fiscal/coverage/model.js +120 -0
  271. package/dist/fiscal/coverage/model.js.map +1 -0
  272. package/dist/fiscal/coverage/requests.d.ts +70 -0
  273. package/dist/fiscal/coverage/requests.d.ts.map +1 -0
  274. package/dist/fiscal/coverage/requests.js +95 -0
  275. package/dist/fiscal/coverage/requests.js.map +1 -0
  276. package/dist/fiscal/credentials/material.d.ts +81 -0
  277. package/dist/fiscal/credentials/material.d.ts.map +1 -0
  278. package/dist/fiscal/credentials/material.js +164 -0
  279. package/dist/fiscal/credentials/material.js.map +1 -0
  280. package/dist/fiscal/credentials/readiness.d.ts +92 -0
  281. package/dist/fiscal/credentials/readiness.d.ts.map +1 -0
  282. package/dist/fiscal/credentials/readiness.js +159 -0
  283. package/dist/fiscal/credentials/readiness.js.map +1 -0
  284. package/dist/fiscal/eligibility.d.ts +106 -0
  285. package/dist/fiscal/eligibility.d.ts.map +1 -0
  286. package/dist/fiscal/eligibility.js +194 -0
  287. package/dist/fiscal/eligibility.js.map +1 -0
  288. package/dist/fiscal/ingestion/__fixtures__/nfse.d.ts +57 -0
  289. package/dist/fiscal/ingestion/__fixtures__/nfse.d.ts.map +1 -0
  290. package/dist/fiscal/ingestion/__fixtures__/nfse.js +121 -0
  291. package/dist/fiscal/ingestion/__fixtures__/nfse.js.map +1 -0
  292. package/dist/fiscal/ingestion/adn-transport.d.ts +123 -0
  293. package/dist/fiscal/ingestion/adn-transport.d.ts.map +1 -0
  294. package/dist/fiscal/ingestion/adn-transport.js +220 -0
  295. package/dist/fiscal/ingestion/adn-transport.js.map +1 -0
  296. package/dist/fiscal/ingestion/direction.d.ts +60 -0
  297. package/dist/fiscal/ingestion/direction.d.ts.map +1 -0
  298. package/dist/fiscal/ingestion/direction.js +32 -0
  299. package/dist/fiscal/ingestion/direction.js.map +1 -0
  300. package/dist/fiscal/ingestion/nfse-adn.d.ts +91 -0
  301. package/dist/fiscal/ingestion/nfse-adn.d.ts.map +1 -0
  302. package/dist/fiscal/ingestion/nfse-adn.js +222 -0
  303. package/dist/fiscal/ingestion/nfse-adn.js.map +1 -0
  304. package/dist/fiscal/ingestion/pipeline.d.ts +168 -0
  305. package/dist/fiscal/ingestion/pipeline.d.ts.map +1 -0
  306. package/dist/fiscal/ingestion/pipeline.js +699 -0
  307. package/dist/fiscal/ingestion/pipeline.js.map +1 -0
  308. package/dist/fiscal/ingestion/provider.d.ts +206 -0
  309. package/dist/fiscal/ingestion/provider.d.ts.map +1 -0
  310. package/dist/fiscal/ingestion/provider.js +47 -0
  311. package/dist/fiscal/ingestion/provider.js.map +1 -0
  312. package/dist/fiscal/ingestion/repository.d.ts +82 -0
  313. package/dist/fiscal/ingestion/repository.d.ts.map +1 -0
  314. package/dist/fiscal/ingestion/repository.js +127 -0
  315. package/dist/fiscal/ingestion/repository.js.map +1 -0
  316. package/dist/fiscal/ingestion/synthetic-provider.d.ts +92 -0
  317. package/dist/fiscal/ingestion/synthetic-provider.d.ts.map +1 -0
  318. package/dist/fiscal/ingestion/synthetic-provider.js +99 -0
  319. package/dist/fiscal/ingestion/synthetic-provider.js.map +1 -0
  320. package/dist/fiscal/ingestion/synthetic-transport-types.d.ts +19 -0
  321. package/dist/fiscal/ingestion/synthetic-transport-types.d.ts.map +1 -0
  322. package/dist/fiscal/ingestion/synthetic-transport-types.js +9 -0
  323. package/dist/fiscal/ingestion/synthetic-transport-types.js.map +1 -0
  324. package/dist/fiscal/ingestion/synthetic-transport.d.ts +55 -0
  325. package/dist/fiscal/ingestion/synthetic-transport.d.ts.map +1 -0
  326. package/dist/fiscal/ingestion/synthetic-transport.js +57 -0
  327. package/dist/fiscal/ingestion/synthetic-transport.js.map +1 -0
  328. package/dist/fiscal/ingestion/xml-reader.d.ts +55 -0
  329. package/dist/fiscal/ingestion/xml-reader.d.ts.map +1 -0
  330. package/dist/fiscal/ingestion/xml-reader.js +112 -0
  331. package/dist/fiscal/ingestion/xml-reader.js.map +1 -0
  332. package/dist/fiscal/repository.d.ts +220 -0
  333. package/dist/fiscal/repository.d.ts.map +1 -0
  334. package/dist/fiscal/repository.js +449 -0
  335. package/dist/fiscal/repository.js.map +1 -0
  336. package/dist/fiscal/sync/circuit.d.ts +86 -0
  337. package/dist/fiscal/sync/circuit.d.ts.map +1 -0
  338. package/dist/fiscal/sync/circuit.js +118 -0
  339. package/dist/fiscal/sync/circuit.js.map +1 -0
  340. package/dist/fiscal/sync/intervention.d.ts +81 -0
  341. package/dist/fiscal/sync/intervention.d.ts.map +1 -0
  342. package/dist/fiscal/sync/intervention.js +135 -0
  343. package/dist/fiscal/sync/intervention.js.map +1 -0
  344. package/dist/fiscal/sync/lease.d.ts +118 -0
  345. package/dist/fiscal/sync/lease.d.ts.map +1 -0
  346. package/dist/fiscal/sync/lease.js +139 -0
  347. package/dist/fiscal/sync/lease.js.map +1 -0
  348. package/dist/fiscal/sync/observability.d.ts +148 -0
  349. package/dist/fiscal/sync/observability.d.ts.map +1 -0
  350. package/dist/fiscal/sync/observability.js +239 -0
  351. package/dist/fiscal/sync/observability.js.map +1 -0
  352. package/dist/fiscal/sync/orchestrator.d.ts +132 -0
  353. package/dist/fiscal/sync/orchestrator.d.ts.map +1 -0
  354. package/dist/fiscal/sync/orchestrator.js +487 -0
  355. package/dist/fiscal/sync/orchestrator.js.map +1 -0
  356. package/dist/fiscal/sync/policy.d.ts +87 -0
  357. package/dist/fiscal/sync/policy.d.ts.map +1 -0
  358. package/dist/fiscal/sync/policy.js +136 -0
  359. package/dist/fiscal/sync/policy.js.map +1 -0
  360. package/dist/fiscal/sync/reprocess.d.ts +76 -0
  361. package/dist/fiscal/sync/reprocess.d.ts.map +1 -0
  362. package/dist/fiscal/sync/reprocess.js +237 -0
  363. package/dist/fiscal/sync/reprocess.js.map +1 -0
  364. package/dist/fiscal/sync/retry.d.ts +82 -0
  365. package/dist/fiscal/sync/retry.d.ts.map +1 -0
  366. package/dist/fiscal/sync/retry.js +176 -0
  367. package/dist/fiscal/sync/retry.js.map +1 -0
  368. package/dist/fiscal/sync/secret-boundary.d.ts +169 -0
  369. package/dist/fiscal/sync/secret-boundary.d.ts.map +1 -0
  370. package/dist/fiscal/sync/secret-boundary.js +116 -0
  371. package/dist/fiscal/sync/secret-boundary.js.map +1 -0
  372. package/dist/fiscal/transport/https.d.ts +86 -0
  373. package/dist/fiscal/transport/https.d.ts.map +1 -0
  374. package/dist/fiscal/transport/https.js +303 -0
  375. package/dist/fiscal/transport/https.js.map +1 -0
  376. package/dist/fiscal/transport/synthetic-tls.d.ts +80 -0
  377. package/dist/fiscal/transport/synthetic-tls.d.ts.map +1 -0
  378. package/dist/fiscal/transport/synthetic-tls.js +323 -0
  379. package/dist/fiscal/transport/synthetic-tls.js.map +1 -0
  380. package/dist/fiscal/transport/types.d.ts +134 -0
  381. package/dist/fiscal/transport/types.d.ts.map +1 -0
  382. package/dist/fiscal/transport/types.js +88 -0
  383. package/dist/fiscal/transport/types.js.map +1 -0
  384. package/dist/import/br-documents.d.ts +26 -0
  385. package/dist/import/br-documents.d.ts.map +1 -0
  386. package/dist/import/br-documents.js +78 -0
  387. package/dist/import/br-documents.js.map +1 -0
  388. package/dist/import/clients-import.d.ts +122 -4
  389. package/dist/import/clients-import.d.ts.map +1 -1
  390. package/dist/import/clients-import.js +341 -41
  391. package/dist/import/clients-import.js.map +1 -1
  392. package/dist/index.d.ts +115 -11
  393. package/dist/index.d.ts.map +1 -1
  394. package/dist/index.js +100 -7
  395. package/dist/index.js.map +1 -1
  396. package/dist/legal/documents.d.ts +12 -1
  397. package/dist/legal/documents.d.ts.map +1 -1
  398. package/dist/legal/documents.js +98 -14
  399. package/dist/legal/documents.js.map +1 -1
  400. package/dist/legal/index.d.ts +1 -1
  401. package/dist/legal/index.d.ts.map +1 -1
  402. package/dist/legal/index.js +1 -1
  403. package/dist/legal/index.js.map +1 -1
  404. package/dist/legal/types.d.ts +37 -2
  405. package/dist/legal/types.d.ts.map +1 -1
  406. package/dist/legal/types.js.map +1 -1
  407. package/dist/onboarding/persistence.d.ts +10 -1
  408. package/dist/onboarding/persistence.d.ts.map +1 -1
  409. package/dist/onboarding/persistence.js +4 -4
  410. package/dist/onboarding/persistence.js.map +1 -1
  411. package/dist/pilot/go-live-checklist.d.ts +41 -0
  412. package/dist/pilot/go-live-checklist.d.ts.map +1 -0
  413. package/dist/pilot/go-live-checklist.js +209 -0
  414. package/dist/pilot/go-live-checklist.js.map +1 -0
  415. package/dist/pilot/milestone.d.ts +56 -0
  416. package/dist/pilot/milestone.d.ts.map +1 -0
  417. package/dist/pilot/milestone.js +74 -0
  418. package/dist/pilot/milestone.js.map +1 -0
  419. package/dist/platform/capabilities.d.ts +88 -0
  420. package/dist/platform/capabilities.d.ts.map +1 -0
  421. package/dist/platform/capabilities.js +140 -0
  422. package/dist/platform/capabilities.js.map +1 -0
  423. package/dist/platform/job-contract.d.ts +232 -0
  424. package/dist/platform/job-contract.d.ts.map +1 -0
  425. package/dist/platform/job-contract.js +403 -0
  426. package/dist/platform/job-contract.js.map +1 -0
  427. package/dist/rbac/catalog.d.ts.map +1 -1
  428. package/dist/rbac/catalog.js +34 -0
  429. package/dist/rbac/catalog.js.map +1 -1
  430. package/dist/subscription-billing/index.d.ts +6 -5
  431. package/dist/subscription-billing/index.d.ts.map +1 -1
  432. package/dist/subscription-billing/index.js +3 -3
  433. package/dist/subscription-billing/index.js.map +1 -1
  434. package/dist/subscription-billing/service.d.ts +21 -0
  435. package/dist/subscription-billing/service.d.ts.map +1 -1
  436. package/dist/subscription-billing/service.js +90 -15
  437. package/dist/subscription-billing/service.js.map +1 -1
  438. package/dist/tenancy/features.d.ts +69 -0
  439. package/dist/tenancy/features.d.ts.map +1 -0
  440. package/dist/tenancy/features.js +123 -0
  441. package/dist/tenancy/features.js.map +1 -0
  442. package/dist/tenancy/settings.d.ts +63 -0
  443. package/dist/tenancy/settings.d.ts.map +1 -0
  444. package/dist/tenancy/settings.js +218 -0
  445. package/dist/tenancy/settings.js.map +1 -0
  446. package/dist/users/repository.d.ts +16 -1
  447. package/dist/users/repository.d.ts.map +1 -1
  448. package/dist/users/repository.js +24 -1
  449. package/dist/users/repository.js.map +1 -1
  450. package/package.json +9 -2
  451. package/src/db/migrations/0045_role_write_scope.sql +122 -0
  452. package/src/db/migrations/0046_pilot_activation_model.sql +184 -0
  453. package/src/db/migrations/0047_recipient_clearance.sql +89 -0
  454. package/src/db/migrations/0048_item_type_note.sql +16 -0
  455. package/src/db/migrations/0049_national_fiscal_engine.sql +279 -0
  456. package/src/db/migrations/0050_fiscal_vocabulary_readonly.sql +29 -0
  457. package/src/db/migrations/0051_seed_rules_from_catalog.sql +72 -0
  458. package/src/db/migrations/0052_fiscal_rule_delete_scope.sql +57 -0
  459. package/src/db/migrations/0053_rule_validity_lower_bound.sql +44 -0
  460. package/src/db/migrations/0054_tenant_profile_and_rule_source.sql +89 -0
  461. package/src/db/migrations/0055_job_capability_contract.sql +300 -0
  462. package/src/db/migrations/0056_fiscal_document_ingestion.sql +337 -0
  463. package/src/db/migrations/0057_fiscal_pending_event_inbox.sql +228 -0
  464. package/src/db/migrations/0058_fiscal_operational_engine.sql +516 -0
  465. package/src/db/migrations/0059_fiscal_contract_version.sql +59 -0
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * Provisiona a identidade de automação E2E de um escritório.
5
+ *
6
+ * ## Por que é um script, e não uma rota
7
+ *
8
+ * Criar a identidade que valida o produto é ato de PROVISIONAMENTO, não de
9
+ * operação. Expor isso como rota daria a alguém dentro do produto o poder de
10
+ * fabricar uma conta de automação — e o valor de uma identidade de privilégio
11
+ * mínimo desaparece se qualquer administrador puder criar outra.
12
+ *
13
+ * ## O que ele garante
14
+ *
15
+ * - `user_type = 'service'` — reconhecível como não-humana em toda consulta;
16
+ * - papel `e2e_automation` e nada além: quatro permissões, tenant único;
17
+ * - idempotente: rodar de novo não duplica nem escala privilégio;
18
+ * - a senha vem do ambiente e **nunca** é impressa, ecoada ou gravada em log.
19
+ *
20
+ * ## Uso
21
+ *
22
+ * OFFICE_MIGRATION_DATABASE_URL=… \
23
+ * E2E_IDENTITY_EMAIL=… E2E_IDENTITY_PASSWORD=… \
24
+ * pnpm --filter @baruk/core provision:e2e --tenant sc
25
+ *
26
+ * Revogar é o caminho inverso e existe na interface: Administração → Usuários →
27
+ * situação "revogado". Rotacionar é rodar de novo com `--rotate` e uma senha
28
+ * nova.
29
+ */
30
+ const client_js_1 = require("./client.js");
31
+ const context_js_1 = require("./context.js");
32
+ const provisioning_js_1 = require("../tenancy/provisioning.js");
33
+ const service_js_1 = require("../auth/service.js");
34
+ const ROLE = 'e2e_automation';
35
+ function arg(nome, padrao) {
36
+ const i = process.argv.indexOf(`--${nome}`);
37
+ return i >= 0 ? (process.argv[i + 1] ?? padrao) : padrao;
38
+ }
39
+ async function main() {
40
+ const url = process.env.OFFICE_MIGRATION_DATABASE_URL ?? process.env.DATABASE_URL;
41
+ const email = process.env.E2E_IDENTITY_EMAIL;
42
+ const senha = process.env.E2E_IDENTITY_PASSWORD;
43
+ const tenantCode = arg('tenant', 'sc');
44
+ const rotate = process.argv.includes('--rotate');
45
+ if (!url)
46
+ throw new Error('OFFICE_MIGRATION_DATABASE_URL ausente.');
47
+ if (!email)
48
+ throw new Error('E2E_IDENTITY_EMAIL ausente.');
49
+ if (!senha || senha.length < 24) {
50
+ throw new Error('E2E_IDENTITY_PASSWORD ausente ou curta demais (mínimo 24 caracteres).');
51
+ }
52
+ const db = (0, client_js_1.createDb)(url, { role: 'owner', max: 2 });
53
+ try {
54
+ const [tenant] = await db `
55
+ SELECT id FROM tenant WHERE code = ${tenantCode} AND deleted_at IS NULL
56
+ `;
57
+ if (!tenant)
58
+ throw new Error(`Organização "${tenantCode}" não encontrada.`);
59
+ // `user_type: 'service'` é o que separa esta conta de uma pessoa. O tipo já
60
+ // existe no domínio e na constraint do banco desde a identidade do Core —
61
+ // não é campo inventado para este caso.
62
+ const user = await (0, service_js_1.upsertUserWithPassword)(db, {
63
+ email,
64
+ fullName: 'Automação de teste (E2E)',
65
+ password: senha,
66
+ userType: 'service',
67
+ overwritePassword: rotate,
68
+ });
69
+ await (0, provisioning_js_1.ensureMembership)(db, tenant.id, user.id);
70
+ await (0, provisioning_js_1.assignSystemRole)(db, tenant.id, user.id, ROLE);
71
+ // Conferência de saída: o que foi concedido é exatamente o esperado.
72
+ const permissoes = await (0, context_js_1.withContext)(db, { tenantId: tenant.id, userId: user.id }, async (tx) => {
73
+ const rows = await tx `
74
+ SELECT p.key
75
+ FROM user_role ur
76
+ JOIN role r ON r.id = ur.role_id
77
+ JOIN role_permission rp ON rp.role_id = r.id
78
+ JOIN permission p ON p.id = rp.permission_id
79
+ WHERE ur.user_id = ${user.id} AND ur.deleted_at IS NULL
80
+ ORDER BY p.key
81
+ `;
82
+ return rows.map((r) => r.key);
83
+ });
84
+ // Nada de e-mail, id ou senha na saída: só o que se precisa conferir.
85
+ console.log(`✓ identidade E2E provisionada em "${tenantCode}"`);
86
+ console.log(` tipo: service`);
87
+ console.log(` papel: ${ROLE}`);
88
+ console.log(` permissões (${permissoes.length}): ${permissoes.join(', ')}`);
89
+ console.log(` senha definida nesta execução: ${user.passwordWasSet ? 'sim' : 'não (já existia)'}`);
90
+ if (permissoes.length !== 4) {
91
+ throw new Error(`Esperava 4 permissões e encontrei ${permissoes.length}. Abortando: uma identidade de automação com privilégio a mais não deve ficar de pé.`);
92
+ }
93
+ }
94
+ finally {
95
+ await db.end({ timeout: 5 });
96
+ }
97
+ }
98
+ /**
99
+ * Erro de driver de banco costuma trazer a connection string inteira dentro da
100
+ * mensagem. Quem redige tem de ser a ferramenta: confiar em quem chama é
101
+ * confiar que ninguém vai esquecer o filtro uma vez.
102
+ */
103
+ function semSegredo(err) {
104
+ const bruto = err instanceof Error ? err.message : String(err);
105
+ return bruto.replace(/postgres(?:ql)?:\/\/\S+/gi, '[connection string redigida]');
106
+ }
107
+ main().catch((err) => {
108
+ console.error('✗ provisionamento falhou:', semSegredo(err));
109
+ process.exit(1);
110
+ });
111
+ //# sourceMappingURL=provision-e2e-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provision-e2e-identity.js","sourceRoot":"","sources":["../../../src/db/provision-e2e-identity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decideApplicability = decideApplicability;
4
+ exports.generates = generates;
5
+ const conditions_js_1 = require("./conditions.js");
6
+ const semRegra = (reason) => ({
7
+ outcome: 'RULE_NOT_CONFIGURED',
8
+ reason,
9
+ evidence: {
10
+ ruleId: null,
11
+ ruleVersion: null,
12
+ jurisdiction: null,
13
+ missingAttributes: [],
14
+ consideredAttributes: [],
15
+ },
16
+ });
17
+ /**
18
+ * A regra alcança este cliente geograficamente?
19
+ *
20
+ * Federal alcança todos. Estadual exige UF igual. Municipal exige UF **e**
21
+ * código IBGE iguais — nome de município não entra na comparação, porque
22
+ * "Goiania" e "Goiânia" são o mesmo lugar e strings diferentes.
23
+ *
24
+ * Cliente sem a informação não é "fora": é desconhecido, e vira
25
+ * `INSUFFICIENT_DATA` em vez de sumir da lista.
26
+ */
27
+ function jurisdictionMatch(rule, client) {
28
+ if (rule.scope === 'federal')
29
+ return 'match';
30
+ if (client.uf === null)
31
+ return 'unknown';
32
+ if (client.uf !== rule.uf)
33
+ return 'no_match';
34
+ if (rule.scope === 'state')
35
+ return 'match';
36
+ if (client.cityIbge === null)
37
+ return 'unknown';
38
+ return client.cityIbge === rule.cityIbge ? 'match' : 'no_match';
39
+ }
40
+ /** A competência cai dentro da vigência? Compara datas ISO, sem fuso. */
41
+ function withinValidity(rule, referenceDate) {
42
+ if (referenceDate < rule.validFrom)
43
+ return false;
44
+ return rule.validUntil === null || referenceDate <= rule.validUntil;
45
+ }
46
+ function decideApplicability(input) {
47
+ const { rule, profile, clientJurisdiction, referenceDate } = input;
48
+ if (!rule) {
49
+ return semRegra('Não há regra cadastrada para esta obrigação nesta jurisdição.');
50
+ }
51
+ const jurisdiction = rule.jurisdiction;
52
+ const base = { ruleId: rule.id, ruleVersion: rule.version, jurisdiction };
53
+ // ── 1 · Estado da regra, antes de qualquer coisa do cliente ─────────────
54
+ if (rule.status === 'disabled') {
55
+ return {
56
+ outcome: 'RULE_DISABLED',
57
+ reason: 'A regra está desligada.',
58
+ evidence: { ...base, missingAttributes: [], consideredAttributes: [] },
59
+ };
60
+ }
61
+ if (rule.status === 'not_configured') {
62
+ return {
63
+ outcome: 'RULE_NOT_CONFIGURED',
64
+ reason: 'A regra existe como marcador, mas ninguém configurou jurisdição ou vencimento — não há data a aplicar.',
65
+ evidence: { ...base, missingAttributes: [], consideredAttributes: [] },
66
+ };
67
+ }
68
+ // ── 2 · Vigência ────────────────────────────────────────────────────────
69
+ if (!withinValidity(rule, referenceDate)) {
70
+ const futura = referenceDate < rule.validFrom;
71
+ return {
72
+ outcome: futura ? 'RULE_NOT_CONFIGURED' : 'RULE_EXPIRED',
73
+ reason: futura
74
+ ? `A regra só passa a valer em ${rule.validFrom}; para esta competência não há regra vigente.`
75
+ : `A regra deixou de valer em ${rule.validUntil}.`,
76
+ evidence: { ...base, missingAttributes: [], consideredAttributes: [] },
77
+ };
78
+ }
79
+ if (rule.status === 'expired') {
80
+ return {
81
+ outcome: 'RULE_EXPIRED',
82
+ reason: 'A regra está marcada como vencida.',
83
+ evidence: { ...base, missingAttributes: [], consideredAttributes: [] },
84
+ };
85
+ }
86
+ // ── 3 · Jurisdição ──────────────────────────────────────────────────────
87
+ const geo = jurisdictionMatch(jurisdiction, clientJurisdiction);
88
+ if (geo === 'no_match') {
89
+ return {
90
+ outcome: 'NOT_APPLICABLE',
91
+ reason: jurisdiction.scope === 'state'
92
+ ? `Regra de ${jurisdiction.uf}; o cliente está em ${clientJurisdiction.uf}.`
93
+ : 'A regra é de outro município.',
94
+ evidence: { ...base, missingAttributes: [], consideredAttributes: [] },
95
+ };
96
+ }
97
+ if (geo === 'unknown') {
98
+ const falta = jurisdiction.scope === 'state' ? 'UF' : 'código IBGE do município';
99
+ return {
100
+ outcome: 'INSUFFICIENT_DATA',
101
+ reason: `Falta ${falta} no cadastro do cliente para saber se esta regra o alcança.`,
102
+ evidence: {
103
+ ...base,
104
+ missingAttributes: [jurisdiction.scope === 'state' ? 'state_uf' : 'municipality_ibge_code'],
105
+ consideredAttributes: [],
106
+ },
107
+ };
108
+ }
109
+ // ── 4 · Condições declarativas ──────────────────────────────────────────
110
+ let condition;
111
+ try {
112
+ condition = (0, conditions_js_1.parseCondition)(rule.conditions);
113
+ }
114
+ catch (err) {
115
+ // Regra malformada é defeito do catálogo, não decisão sobre o cliente.
116
+ // Nunca vira "não se aplica": isso esconderia a obrigação.
117
+ return {
118
+ outcome: 'RULE_NOT_CONFIGURED',
119
+ reason: `A condição desta regra está malformada: ${err instanceof Error ? err.message : 'inválida'}.`,
120
+ evidence: { ...base, missingAttributes: [], consideredAttributes: [] },
121
+ };
122
+ }
123
+ const considerados = [...(0, conditions_js_1.referencedAttributes)(condition)].sort();
124
+ const faltando = (0, conditions_js_1.missingAttributes)(condition, profile);
125
+ const veredito = (0, conditions_js_1.evaluate)(condition, profile);
126
+ if (veredito === 'unknown') {
127
+ return {
128
+ outcome: 'INSUFFICIENT_DATA',
129
+ reason: faltando.length === 1
130
+ ? `Falta informar "${faltando[0]}" no perfil do cliente.`
131
+ : `Faltam informações no perfil do cliente: ${faltando.join(', ')}.`,
132
+ evidence: { ...base, missingAttributes: faltando, consideredAttributes: considerados },
133
+ };
134
+ }
135
+ if (veredito === false) {
136
+ return {
137
+ outcome: 'NOT_APPLICABLE',
138
+ reason: 'O perfil do cliente não atende às condições desta regra.',
139
+ evidence: { ...base, missingAttributes: [], consideredAttributes: considerados },
140
+ };
141
+ }
142
+ // ── 5 · Conferência humana, por último ──────────────────────────────────
143
+ //
144
+ // Fica depois da aplicabilidade de propósito: dizer "pendente de conferência"
145
+ // sobre uma regra que nem se aplica a este cliente mandaria o escritório
146
+ // conferir o que não usaria.
147
+ if (rule.status === 'pending_validation') {
148
+ return {
149
+ outcome: 'RULE_PENDING_VALIDATION',
150
+ reason: 'A regra se aplica, mas ainda não foi conferida por uma pessoa.',
151
+ evidence: { ...base, missingAttributes: [], consideredAttributes: considerados },
152
+ };
153
+ }
154
+ return {
155
+ outcome: 'APPLICABLE',
156
+ reason: 'A regra está vigente, conferida, e o perfil do cliente a atende.',
157
+ evidence: { ...base, missingAttributes: [], consideredAttributes: considerados },
158
+ };
159
+ }
160
+ /** Só `APPLICABLE` gera. Todo o resto é espera, ausência ou decisão contrária. */
161
+ function generates(decision) {
162
+ return decision.outcome === 'APPLICABLE';
163
+ }
164
+ //# sourceMappingURL=applicability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applicability.js","sourceRoot":"","sources":["../../../src/fiscal/applicability.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ /**
3
+ * Condições de aplicabilidade — uma AST declarativa, tipada e interpretada.
4
+ *
5
+ * ## Por que não uma linguagem
6
+ *
7
+ * A tentação é guardar uma expressão e avaliá-la. Nada aqui é avaliado: não há
8
+ * `eval`, nem `Function`, nem SQL montado, nem código do usuário. A condição é
9
+ * um objeto JSON com formato fechado, validado na escrita e percorrido por um
10
+ * `switch` na leitura. O pior que uma condição malformada consegue fazer é ser
11
+ * recusada.
12
+ *
13
+ * ## Por que não uma floresta de `if`
14
+ *
15
+ * A alternativa seria `requires_employees`, `requires_icms`, `requires_iss`…
16
+ * uma coluna e um `if` por pergunta fiscal. Não escala: cada UF e cada segmento
17
+ * acrescenta perguntas, e o motor vira uma cascata que ninguém consegue ler nem
18
+ * testar. Aqui o motor sabe avaliar **operadores**; o catálogo declara **fatos**.
19
+ *
20
+ * ## O terceiro valor
21
+ *
22
+ * A avaliação não devolve booleano. Devolve `true`, `false` ou **`unknown`** —
23
+ * e `unknown` é o ponto inteiro desta fase. Um cliente sobre o qual ninguém
24
+ * disse se tem empregados não é "sem empregados": é desconhecido, e a decisão
25
+ * segura é não gerar nem declarar isento. Colapsar `unknown` em `false` é
26
+ * exatamente o defeito que a auditoria nacional encontrou.
27
+ */
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.InvalidCondition = void 0;
30
+ exports.parseCondition = parseCondition;
31
+ exports.referencedAttributes = referencedAttributes;
32
+ exports.evaluate = evaluate;
33
+ exports.missingAttributes = missingAttributes;
34
+ const OPS = new Set(['always', 'eq', 'neq', 'in', 'not_in', 'exists', 'not_exists', 'and', 'or']);
35
+ class InvalidCondition extends Error {
36
+ constructor(message) {
37
+ super(message);
38
+ this.name = 'InvalidCondition';
39
+ }
40
+ }
41
+ exports.InvalidCondition = InvalidCondition;
42
+ /**
43
+ * Valida a forma ANTES de gravar.
44
+ *
45
+ * Uma condição malformada gravada é uma regra que ninguém consegue avaliar, e
46
+ * o motor descobriria isso na madrugada do vencimento. Recusar na escrita é
47
+ * mais barato que descobrir na geração.
48
+ *
49
+ * `maxDepth` existe porque uma AST profunda o bastante estoura a pilha na
50
+ * avaliação, e a escrita é onde isso pode ser recusado com uma mensagem.
51
+ */
52
+ function parseCondition(raw, depth = 0) {
53
+ if (depth > 12)
54
+ throw new InvalidCondition('condição aninhada demais (limite 12)');
55
+ if (typeof raw !== 'object' || raw === null || Array.isArray(raw)) {
56
+ throw new InvalidCondition('condição precisa ser um objeto');
57
+ }
58
+ const o = raw;
59
+ const op = o['op'];
60
+ if (typeof op !== 'string' || !OPS.has(op)) {
61
+ throw new InvalidCondition(`operador desconhecido: ${String(op)}`);
62
+ }
63
+ const attr = () => {
64
+ const a = o['attribute'];
65
+ if (typeof a !== 'string' || a.length === 0) {
66
+ throw new InvalidCondition(`${op} exige "attribute"`);
67
+ }
68
+ return a;
69
+ };
70
+ const scalar = () => {
71
+ const v = o['value'];
72
+ if (typeof v !== 'string' && typeof v !== 'boolean') {
73
+ throw new InvalidCondition(`${op} exige "value" texto ou booleano`);
74
+ }
75
+ return v;
76
+ };
77
+ const list = () => {
78
+ const v = o['values'];
79
+ if (!Array.isArray(v) || v.length === 0) {
80
+ throw new InvalidCondition(`${op} exige "values" não vazio`);
81
+ }
82
+ return v.map((x) => {
83
+ if (typeof x !== 'string' && typeof x !== 'boolean') {
84
+ throw new InvalidCondition(`${op} aceita apenas texto ou booleano em "values"`);
85
+ }
86
+ return x;
87
+ });
88
+ };
89
+ const children = () => {
90
+ const v = o['of'];
91
+ if (!Array.isArray(v) || v.length === 0) {
92
+ throw new InvalidCondition(`${op} exige "of" não vazio`);
93
+ }
94
+ return v.map((c) => parseCondition(c, depth + 1));
95
+ };
96
+ switch (op) {
97
+ case 'always':
98
+ return { op: 'always' };
99
+ case 'eq':
100
+ return { op: 'eq', attribute: attr(), value: scalar() };
101
+ case 'neq':
102
+ return { op: 'neq', attribute: attr(), value: scalar() };
103
+ case 'in':
104
+ return { op: 'in', attribute: attr(), values: list() };
105
+ case 'not_in':
106
+ return { op: 'not_in', attribute: attr(), values: list() };
107
+ case 'exists':
108
+ return { op: 'exists', attribute: attr() };
109
+ case 'not_exists':
110
+ return { op: 'not_exists', attribute: attr() };
111
+ case 'and':
112
+ return { op: 'and', of: children() };
113
+ default:
114
+ return { op: 'or', of: children() };
115
+ }
116
+ }
117
+ /** Atributos citados pela condição — o motor usa para explicar o que faltou. */
118
+ function referencedAttributes(c, into = new Set()) {
119
+ switch (c.op) {
120
+ case 'always':
121
+ break;
122
+ case 'and':
123
+ case 'or':
124
+ for (const child of c.of)
125
+ referencedAttributes(child, into);
126
+ break;
127
+ default:
128
+ into.add(c.attribute);
129
+ }
130
+ return into;
131
+ }
132
+ /**
133
+ * Avalia em lógica ternária.
134
+ *
135
+ * As regras de `and` e `or` são as de Kleene, e a escolha importa:
136
+ *
137
+ * - `and` com um `false` é `false` mesmo havendo desconhecidos — não adianta
138
+ * saber o resto, a regra já não se aplica;
139
+ * - `or` com um `true` é `true` pelo mesmo motivo;
140
+ * - fora esses casos, qualquer desconhecido torna o todo desconhecido.
141
+ *
142
+ * Sem isso, uma regra "Simples E tem empregados" avaliada para um cliente do
143
+ * Lucro Real sem informação de folha devolveria `unknown` e viraria pendência
144
+ * na mesa de alguém — quando a resposta já era `false` pelo regime.
145
+ */
146
+ function evaluate(condition, profile) {
147
+ switch (condition.op) {
148
+ case 'always':
149
+ return true;
150
+ case 'exists':
151
+ return profile[condition.attribute] !== undefined;
152
+ case 'not_exists':
153
+ return profile[condition.attribute] === undefined;
154
+ case 'eq':
155
+ case 'neq': {
156
+ const v = profile[condition.attribute];
157
+ if (v === undefined)
158
+ return 'unknown';
159
+ const igual = v === condition.value;
160
+ return condition.op === 'eq' ? igual : !igual;
161
+ }
162
+ case 'in':
163
+ case 'not_in': {
164
+ const v = profile[condition.attribute];
165
+ if (v === undefined)
166
+ return 'unknown';
167
+ const dentro = condition.values.includes(v);
168
+ return condition.op === 'in' ? dentro : !dentro;
169
+ }
170
+ case 'and': {
171
+ let desconhecido = false;
172
+ for (const c of condition.of) {
173
+ const r = evaluate(c, profile);
174
+ if (r === false)
175
+ return false;
176
+ if (r === 'unknown')
177
+ desconhecido = true;
178
+ }
179
+ return desconhecido ? 'unknown' : true;
180
+ }
181
+ default: {
182
+ let desconhecido = false;
183
+ for (const c of condition.of) {
184
+ const r = evaluate(c, profile);
185
+ if (r === true)
186
+ return true;
187
+ if (r === 'unknown')
188
+ desconhecido = true;
189
+ }
190
+ return desconhecido ? 'unknown' : false;
191
+ }
192
+ }
193
+ }
194
+ /** Atributos citados que o perfil não conhece — a explicação do `unknown`. */
195
+ function missingAttributes(condition, profile) {
196
+ return [...referencedAttributes(condition)].filter((a) => profile[a] === undefined).sort();
197
+ }
198
+ //# sourceMappingURL=conditions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../../src/fiscal/conditions.ts"],"names":[],"mappings":"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"}