@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,99 @@
1
+ import { FiscalProviderError, } from './provider.js';
2
+ import { FiscalTransportError } from '../transport/types.js';
3
+ export class SyntheticFiscalProvider {
4
+ options;
5
+ /** Chamadas atendidas. O teste de replay e o de retentativa a inspecionam. */
6
+ calls = 0;
7
+ /** NSUs entregues em cada chamada, para conferir que não houve lacuna. */
8
+ delivered = [];
9
+ lastBatch = [];
10
+ lastResult = null;
11
+ constructor(options) {
12
+ this.options = options;
13
+ }
14
+ get docs() {
15
+ // Ordem crescente de NSU, como o manual explicita. O construtor não exige
16
+ // a lista ordenada porque um teste que a embaralha está exercitando o
17
+ // provedor, não o motor.
18
+ return [...this.options.documents].sort((a, b) => Number(a.nsu) - Number(b.nsu));
19
+ }
20
+ async fetchDfe(input) {
21
+ const chamada = this.calls;
22
+ this.calls += 1;
23
+ const permitidos = this.options.environments ?? ['synthetic'];
24
+ if (!permitidos.includes(input.environment)) {
25
+ throw new FiscalProviderError('auth', `provedor sintético não opera "${input.environment}"`, 'SYNTHETIC_ENVIRONMENT_REFUSED');
26
+ }
27
+ const fault = this.options.script?.[chamada] ?? { kind: 'ok' };
28
+ const now = this.options.now?.() ?? new Date();
29
+ switch (fault.kind) {
30
+ case 'rate_limit':
31
+ throw new FiscalProviderError('throttled', 'consumo excedido', 'HTTP_429', new Date(now.getTime() + (fault.retryAfterSeconds ?? 120) * 1000));
32
+ case 'unauthorized':
33
+ throw new FiscalProviderError('auth', 'credencial recusada', 'HTTP_401');
34
+ case 'forbidden':
35
+ throw new FiscalProviderError('not_allowed', 'sem direito ao documento', 'HTTP_403');
36
+ case 'server_error':
37
+ throw new FiscalProviderError('transient', 'provedor indisponível', `HTTP_${fault.status ?? 503}`);
38
+ case 'timeout':
39
+ // Erro de TRANSPORTE, e não de provedor: é assim que ele chega na
40
+ // realidade, e é o caminho de classificação que precisa ser exercitado.
41
+ throw new FiscalTransportError('timeout', 'DEADLINE_EXCEEDED');
42
+ case 'replay': {
43
+ // O mesmo lote de novo, com o MESMO cursor devolvido. É o caso que a
44
+ // deduplicação existe para absorver, e o cursor não pode retroceder.
45
+ if (this.lastResult) {
46
+ this.delivered.push(this.lastBatch.map((d) => d.nsu));
47
+ return this.lastResult;
48
+ }
49
+ break;
50
+ }
51
+ case 'malformed': {
52
+ const lote = [
53
+ {
54
+ nsu: String(Number(input.fromNsu ?? '0') + 1),
55
+ raw: new TextEncoder().encode('<<< isto nao e XML >>>'),
56
+ mimeType: 'application/xml',
57
+ },
58
+ ];
59
+ this.delivered.push(lote.map((d) => d.nsu));
60
+ const resultado = {
61
+ documents: lote,
62
+ lastNsu: lote[0].nsu,
63
+ maxNsu: this.docs.at(-1)?.nsu ?? lote[0].nsu,
64
+ exhausted: false,
65
+ providerStatus: 'SYNTHETIC_MALFORMED',
66
+ };
67
+ this.lastBatch = lote;
68
+ this.lastResult = resultado;
69
+ return resultado;
70
+ }
71
+ case 'ok':
72
+ break;
73
+ }
74
+ const from = input.fromNsu ? Number(input.fromNsu) : 0;
75
+ const limite = Math.min(input.batchLimit, this.options.batchLimit ?? 50);
76
+ const restantes = this.docs.filter((d) => Number(d.nsu) > from);
77
+ const lote = restantes.slice(0, limite).map((d) => ({
78
+ nsu: d.nsu,
79
+ raw: new TextEncoder().encode(d.xml),
80
+ mimeType: 'application/xml',
81
+ }));
82
+ const maxNsu = this.docs.at(-1)?.nsu ?? null;
83
+ const lastNsu = lote.at(-1)?.nsu ?? input.fromNsu ?? null;
84
+ const resultado = {
85
+ documents: lote,
86
+ lastNsu,
87
+ maxNsu,
88
+ // Esgotado é o servidor DIZENDO que a posição alcançou o máximo — a
89
+ // condição que arma a espera obrigatória. Nunca "o lote veio vazio".
90
+ exhausted: maxNsu !== null && lastNsu === maxNsu,
91
+ providerStatus: null,
92
+ };
93
+ this.delivered.push(lote.map((d) => d.nsu));
94
+ this.lastBatch = lote;
95
+ this.lastResult = resultado;
96
+ return resultado;
97
+ }
98
+ }
99
+ //# sourceMappingURL=synthetic-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthetic-provider.js","sourceRoot":"","sources":["../../../src/fiscal/ingestion/synthetic-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Reexportações para o transporte sintético.
3
+ *
4
+ * Existe só para que `synthetic-transport.ts` não importe do adapter concreto —
5
+ * o transporte é do CONTRATO, não da NFS-e, e um dia servirá ao DF-e da NF-e
6
+ * sem mudar de casa.
7
+ */
8
+ export { FiscalProviderError, type FiscalEnvironmentTag, type FiscalFetchResult, type RawFiscalDocument, } from './provider.js';
9
+ import type { FiscalEnvironmentTag, FiscalFetchResult } from './provider.js';
10
+ /** A forma mínima que o adapter espera de um transporte. */
11
+ export interface AdnTransportLike {
12
+ fetchDfe(input: {
13
+ actorDocument: string;
14
+ fromNsu: string | null;
15
+ batchLimit: number;
16
+ environment: FiscalEnvironmentTag;
17
+ }): Promise<FiscalFetchResult>;
18
+ }
19
+ //# sourceMappingURL=synthetic-transport-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthetic-transport-types.d.ts","sourceRoot":"","sources":["../../../src/fiscal/ingestion/synthetic-transport-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACvB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE7E,4DAA4D;AAC5D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE;QACd,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,oBAAoB,CAAC;KACnC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAChC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Reexportações para o transporte sintético.
3
+ *
4
+ * Existe só para que `synthetic-transport.ts` não importe do adapter concreto —
5
+ * o transporte é do CONTRATO, não da NFS-e, e um dia servirá ao DF-e da NF-e
6
+ * sem mudar de casa.
7
+ */
8
+ export { FiscalProviderError, } from './provider.js';
9
+ //# sourceMappingURL=synthetic-transport-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthetic-transport-types.js","sourceRoot":"","sources":["../../../src/fiscal/ingestion/synthetic-transport-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,mBAAmB,GAIpB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { FiscalProviderError, type AdnTransportLike, type FiscalEnvironmentTag, type FiscalFetchResult } from './synthetic-transport-types.js';
2
+ /**
3
+ * Transporte SINTÉTICO que reproduz a mecânica de cursor do ADN e do DF-e.
4
+ *
5
+ * ## Por que existe, e por que não é um mock
6
+ *
7
+ * O ADN exige TLS mútuo com certificado ICP-Brasil — inclusive para servir a
8
+ * própria documentação. Não há caminho de teste sem credencial real, e esta
9
+ * fase não usa nenhuma. Um mock que devolvesse "dois documentos" provaria
10
+ * apenas que o código chama uma função.
11
+ *
12
+ * Este transporte reproduz o que a norma DESCREVE, e é essa fidelidade que o
13
+ * torna útil:
14
+ *
15
+ * - lote com no máximo `batchLimit` itens, em ordem crescente de NSU;
16
+ * - `ultNSU` e `maxNSU` devolvidos pelo servidor, não calculados pelo cliente;
17
+ * - `exhausted` quando `ultNSU == maxNSU` — a condição que a NT 2014.002
18
+ * §3.5 usa para exigir a espera de uma hora;
19
+ * - NSU sem lacunas, gerado por ordem de RECEPÇÃO e não de emissão, como o
20
+ * manual explicita;
21
+ * - capacidade de repetir um lote já entregue (replay), que é o caso que a
22
+ * deduplicação precisa absorver.
23
+ *
24
+ * Ele não fabrica resposta de servidor oficial: ele fabrica um servidor com as
25
+ * REGRAS do oficial, e isso é dito em voz alta. O documento que trafega é
26
+ * fixture sintética conforme o XSD publicado — nunca documento de empresa real.
27
+ */
28
+ export interface SyntheticDocument {
29
+ nsu: string;
30
+ xml: string;
31
+ schema?: string;
32
+ }
33
+ export interface SyntheticTransportOptions {
34
+ documents: readonly SyntheticDocument[];
35
+ /** Erro a levantar na PRÓXIMA chamada. Consumido uma vez. */
36
+ failNextWith?: FiscalProviderError | null;
37
+ /** Ambientes aceitos. Fora deles, o transporte recusa. */
38
+ environments?: readonly FiscalEnvironmentTag[];
39
+ }
40
+ export declare class SyntheticAdnTransport implements AdnTransportLike {
41
+ private readonly options;
42
+ private failNext;
43
+ /** Contagem de chamadas — o teste de replay e de retry a inspeciona. */
44
+ calls: number;
45
+ constructor(options: SyntheticTransportOptions);
46
+ /** Arma uma falha para a próxima chamada. Simula o provedor, não o cliente. */
47
+ failOnce(err: FiscalProviderError): void;
48
+ fetchDfe(input: {
49
+ actorDocument: string;
50
+ fromNsu: string | null;
51
+ batchLimit: number;
52
+ environment: FiscalEnvironmentTag;
53
+ }): Promise<FiscalFetchResult>;
54
+ }
55
+ //# sourceMappingURL=synthetic-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthetic-transport.d.ts","sourceRoot":"","sources":["../../../src/fiscal/ingestion/synthetic-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EAEvB,MAAM,gCAAgC,CAAC;AAExC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACxC,6DAA6D;IAC7D,YAAY,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,0DAA0D;IAC1D,YAAY,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAChD;AAED,qBAAa,qBAAsB,YAAW,gBAAgB;IAKhD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,OAAO,CAAC,QAAQ,CAA6B;IAC7C,wEAAwE;IACxE,KAAK,SAAK;gBAEmB,OAAO,EAAE,yBAAyB;IAI/D,+EAA+E;IAC/E,QAAQ,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI;IAIlC,QAAQ,CAAC,KAAK,EAAE;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,oBAAoB,CAAC;KACnC,GAAG,OAAO,CAAC,iBAAiB,CAAC;CA2C/B"}
@@ -0,0 +1,57 @@
1
+ import { FiscalProviderError, } from './synthetic-transport-types.js';
2
+ export class SyntheticAdnTransport {
3
+ options;
4
+ failNext;
5
+ /** Contagem de chamadas — o teste de replay e de retry a inspeciona. */
6
+ calls = 0;
7
+ constructor(options) {
8
+ this.options = options;
9
+ this.failNext = options.failNextWith ?? null;
10
+ }
11
+ /** Arma uma falha para a próxima chamada. Simula o provedor, não o cliente. */
12
+ failOnce(err) {
13
+ this.failNext = err;
14
+ }
15
+ async fetchDfe(input) {
16
+ this.calls += 1;
17
+ if (this.failNext) {
18
+ const err = this.failNext;
19
+ this.failNext = null;
20
+ throw err;
21
+ }
22
+ const permitidos = this.options.environments ?? ['synthetic'];
23
+ if (!permitidos.includes(input.environment)) {
24
+ throw new FiscalProviderError('auth', `transporte sintético não opera "${input.environment}"`, 'SYNTHETIC_ENVIRONMENT_REFUSED');
25
+ }
26
+ const ordenados = [...this.options.documents].sort((a, b) => cmpNsu(a.nsu, b.nsu));
27
+ const maxNsu = ordenados.length > 0 ? ordenados[ordenados.length - 1].nsu : null;
28
+ const from = input.fromNsu;
29
+ const pendentes = ordenados.filter((d) => from === null || cmpNsu(d.nsu, from) > 0);
30
+ const lote = pendentes.slice(0, input.batchLimit);
31
+ const documents = lote.map((d) => ({
32
+ nsu: d.nsu,
33
+ schema: d.schema ?? 'NFSe_v1.01.xsd',
34
+ raw: new TextEncoder().encode(d.xml),
35
+ mimeType: 'application/xml',
36
+ }));
37
+ // `ultNSU` é do SERVIDOR: quando o lote vem vazio, ele repete a posição do
38
+ // cliente. Devolver `null` faria o cliente recuar para o começo — o laço
39
+ // que o cStat 656 pune.
40
+ const lastNsu = lote.length > 0 ? lote[lote.length - 1].nsu : from;
41
+ const exhausted = pendentes.length <= lote.length;
42
+ return {
43
+ documents,
44
+ lastNsu,
45
+ maxNsu,
46
+ exhausted,
47
+ providerStatus: documents.length > 0 ? '138' : '137',
48
+ };
49
+ }
50
+ }
51
+ /** NSU é numérico com até 15 dígitos, mas chega como texto. Compara por valor. */
52
+ function cmpNsu(a, b) {
53
+ const na = BigInt(a);
54
+ const nb = BigInt(b);
55
+ return na < nb ? -1 : na > nb ? 1 : 0;
56
+ }
57
+ //# sourceMappingURL=synthetic-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthetic-transport.js","sourceRoot":"","sources":["../../../src/fiscal/ingestion/synthetic-transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Leitor mínimo de XML fiscal — deliberadamente incapaz.
3
+ *
4
+ * ## Por que não um parser de XML de verdade
5
+ *
6
+ * A escolha óbvia seria uma dependência (`fast-xml-parser`, `xml2js`). Duas
7
+ * razões contra, e a segunda é a que decide:
8
+ *
9
+ * 1. Este repositório não tem nenhuma, e acrescentar uma ao caminho que
10
+ * processa documento de terceiro amplia a superfície de suprimento.
11
+ * 2. **XXE.** Parsers completos resolvem entidades externas por padrão ou por
12
+ * configuração fácil de errar, e o `DOCTYPE` de um XML vindo de fora é o
13
+ * vetor clássico para ler arquivo do servidor. A defesa usual é "configure o
14
+ * parser direito" — disciplina, não ferramenta. Este leitor **não sabe** o
15
+ * que é uma entidade: não há configuração para esquecer.
16
+ *
17
+ * ## O que ele sabe e o que não sabe
18
+ *
19
+ * Sabe: extrair o texto do primeiro elemento de um nome, dentro de um escopo,
20
+ * e ler atributo. É o suficiente para os campos que viram COLUNA.
21
+ *
22
+ * Não sabe: namespaces reais, mixed content, CDATA aninhado, validação. Nada
23
+ * disso é necessário aqui, porque o documento é validado por XSD do lado de
24
+ * quem o emitiu e o original é preservado intacto — este leitor alimenta a
25
+ * projeção, jamais substitui o documento.
26
+ *
27
+ * Qualquer coisa que ele não entenda vira `null`, e o chamador decide. Um
28
+ * leitor que adivinha é pior que um que admite não saber.
29
+ */
30
+ /** Rejeita de entrada o que este leitor não pode processar com segurança. */
31
+ export declare class UnsafeXmlError extends Error {
32
+ constructor(reason: string);
33
+ }
34
+ /**
35
+ * Converte bytes em texto e recusa o que for perigoso.
36
+ *
37
+ * A recusa é fail-closed e ANTES de qualquer leitura: um documento com
38
+ * `DOCTYPE` não é processado nem parcialmente. Um documento fiscal legítimo
39
+ * não tem `DOCTYPE` — nem NF-e, nem NFS-e, nem CT-e o usam.
40
+ */
41
+ export declare function decodeFiscalXml(raw: Uint8Array): string;
42
+ /**
43
+ * Texto do primeiro elemento `name` encontrado em `scope`.
44
+ *
45
+ * Devolve `null` quando o elemento não existe, está vazio ou é auto-fechado —
46
+ * três coisas diferentes que, para quem chama, significam a mesma: não há valor.
47
+ */
48
+ export declare function readText(scope: string, name: string): string | null;
49
+ /** Conteúdo bruto (com marcação) do primeiro elemento `name`, para descer nível. */
50
+ export declare function readElement(scope: string, name: string): string | null;
51
+ /** Valor de atributo do primeiro elemento `name`. */
52
+ export declare function readAttribute(scope: string, name: string, attr: string): string | null;
53
+ /** Nome do elemento raiz, sem prefixo. `null` se não houver um. */
54
+ export declare function rootElementName(text: string): string | null;
55
+ //# sourceMappingURL=xml-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml-reader.d.ts","sourceRoot":"","sources":["../../../src/fiscal/ingestion/xml-reader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,6EAA6E;AAC7E,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,MAAM,EAAE,MAAM;CAI3B;AAOD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAUvD;AAiBD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQnE;AAED,oFAAoF;AACpF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKtE;AAED,qDAAqD;AACrD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKtF;AAED,mEAAmE;AACnE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK3D"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Leitor mínimo de XML fiscal — deliberadamente incapaz.
3
+ *
4
+ * ## Por que não um parser de XML de verdade
5
+ *
6
+ * A escolha óbvia seria uma dependência (`fast-xml-parser`, `xml2js`). Duas
7
+ * razões contra, e a segunda é a que decide:
8
+ *
9
+ * 1. Este repositório não tem nenhuma, e acrescentar uma ao caminho que
10
+ * processa documento de terceiro amplia a superfície de suprimento.
11
+ * 2. **XXE.** Parsers completos resolvem entidades externas por padrão ou por
12
+ * configuração fácil de errar, e o `DOCTYPE` de um XML vindo de fora é o
13
+ * vetor clássico para ler arquivo do servidor. A defesa usual é "configure o
14
+ * parser direito" — disciplina, não ferramenta. Este leitor **não sabe** o
15
+ * que é uma entidade: não há configuração para esquecer.
16
+ *
17
+ * ## O que ele sabe e o que não sabe
18
+ *
19
+ * Sabe: extrair o texto do primeiro elemento de um nome, dentro de um escopo,
20
+ * e ler atributo. É o suficiente para os campos que viram COLUNA.
21
+ *
22
+ * Não sabe: namespaces reais, mixed content, CDATA aninhado, validação. Nada
23
+ * disso é necessário aqui, porque o documento é validado por XSD do lado de
24
+ * quem o emitiu e o original é preservado intacto — este leitor alimenta a
25
+ * projeção, jamais substitui o documento.
26
+ *
27
+ * Qualquer coisa que ele não entenda vira `null`, e o chamador decide. Um
28
+ * leitor que adivinha é pior que um que admite não saber.
29
+ */
30
+ /** Rejeita de entrada o que este leitor não pode processar com segurança. */
31
+ export class UnsafeXmlError extends Error {
32
+ constructor(reason) {
33
+ super(`XML recusado: ${reason}`);
34
+ this.name = 'UnsafeXmlError';
35
+ }
36
+ }
37
+ const DOCTYPE = /<!DOCTYPE/i;
38
+ const ENTITY = /<!ENTITY/i;
39
+ /** Qualquer referência a entidade que não seja uma das cinco predefinidas. */
40
+ const CUSTOM_ENTITY = /&(?!(?:amp|lt|gt|quot|apos|#\d+|#x[0-9a-fA-F]+);)[A-Za-z_][\w.-]*;/;
41
+ /**
42
+ * Converte bytes em texto e recusa o que for perigoso.
43
+ *
44
+ * A recusa é fail-closed e ANTES de qualquer leitura: um documento com
45
+ * `DOCTYPE` não é processado nem parcialmente. Um documento fiscal legítimo
46
+ * não tem `DOCTYPE` — nem NF-e, nem NFS-e, nem CT-e o usam.
47
+ */
48
+ export function decodeFiscalXml(raw) {
49
+ if (raw.byteLength > 8 * 1024 * 1024) {
50
+ throw new UnsafeXmlError('documento acima de 8 MiB');
51
+ }
52
+ const text = new TextDecoder('utf-8', { fatal: false }).decode(raw);
53
+ if (DOCTYPE.test(text))
54
+ throw new UnsafeXmlError('DOCTYPE presente');
55
+ if (ENTITY.test(text))
56
+ throw new UnsafeXmlError('declaração de entidade presente');
57
+ if (CUSTOM_ENTITY.test(text))
58
+ throw new UnsafeXmlError('referência a entidade não predefinida');
59
+ if (!text.includes('<'))
60
+ throw new UnsafeXmlError('conteúdo não é XML');
61
+ return text;
62
+ }
63
+ /** Só as cinco entidades predefinidas do XML. Nenhuma outra é resolvida. */
64
+ function unescapeXml(v) {
65
+ return v
66
+ .replace(/&lt;/g, '<')
67
+ .replace(/&gt;/g, '>')
68
+ .replace(/&quot;/g, '"')
69
+ .replace(/&apos;/g, "'")
70
+ .replace(/&amp;/g, '&');
71
+ }
72
+ /** Nome de elemento com ou sem prefixo de namespace. */
73
+ function tagPattern(name) {
74
+ return `(?:[A-Za-z_][\\w.-]*:)?${name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}`;
75
+ }
76
+ /**
77
+ * Texto do primeiro elemento `name` encontrado em `scope`.
78
+ *
79
+ * Devolve `null` quando o elemento não existe, está vazio ou é auto-fechado —
80
+ * três coisas diferentes que, para quem chama, significam a mesma: não há valor.
81
+ */
82
+ export function readText(scope, name) {
83
+ const t = tagPattern(name);
84
+ const re = new RegExp(`<${t}(?:\\s[^>]*)?>([\\s\\S]*?)</${t}>`);
85
+ const m = re.exec(scope);
86
+ if (!m || m[1] === undefined)
87
+ return null;
88
+ const inner = m[1].trim();
89
+ if (inner === '' || inner.includes('<'))
90
+ return inner === '' ? null : null;
91
+ return unescapeXml(inner);
92
+ }
93
+ /** Conteúdo bruto (com marcação) do primeiro elemento `name`, para descer nível. */
94
+ export function readElement(scope, name) {
95
+ const t = tagPattern(name);
96
+ const re = new RegExp(`<${t}(?:\\s[^>]*)?>([\\s\\S]*?)</${t}>`);
97
+ const m = re.exec(scope);
98
+ return m?.[1] ?? null;
99
+ }
100
+ /** Valor de atributo do primeiro elemento `name`. */
101
+ export function readAttribute(scope, name, attr) {
102
+ const t = tagPattern(name);
103
+ const re = new RegExp(`<${t}\\s[^>]*?${attr}\\s*=\\s*"([^"]*)"`);
104
+ const m = re.exec(scope);
105
+ return m?.[1] ? unescapeXml(m[1]) : null;
106
+ }
107
+ /** Nome do elemento raiz, sem prefixo. `null` se não houver um. */
108
+ export function rootElementName(text) {
109
+ const m = /<(?:[A-Za-z_][\w.-]*:)?([A-Za-z_][\w.-]*)(?:\s|>|\/)/.exec(text.replace(/<\?[\s\S]*?\?>/g, '').replace(/<!--[\s\S]*?-->/g, ''));
110
+ return m?.[1] ?? null;
111
+ }
112
+ //# sourceMappingURL=xml-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml-reader.js","sourceRoot":"","sources":["../../../src/fiscal/ingestion/xml-reader.ts"],"names":[],"mappings":"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"}