@baruk/core 0.4.2 → 0.6.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 (576) 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 +117 -0
  34. package/dist/cjs/clients/ibge.js.map +1 -0
  35. package/dist/cjs/clients/registry/http.js +157 -0
  36. package/dist/cjs/clients/registry/http.js.map +1 -0
  37. package/dist/cjs/clients/registry/ibge-municipios.js +28 -0
  38. package/dist/cjs/clients/registry/ibge-municipios.js.map +1 -0
  39. package/dist/cjs/clients/registry/ibge.js +63 -0
  40. package/dist/cjs/clients/registry/ibge.js.map +1 -0
  41. package/dist/cjs/clients/registry/lookup.js +191 -0
  42. package/dist/cjs/clients/registry/lookup.js.map +1 -0
  43. package/dist/cjs/clients/registry/provider.js +34 -0
  44. package/dist/cjs/clients/registry/provider.js.map +1 -0
  45. package/dist/cjs/clients/registry/resolve.js +47 -0
  46. package/dist/cjs/clients/registry/resolve.js.map +1 -0
  47. package/dist/cjs/clients/registry/serpro.js +149 -0
  48. package/dist/cjs/clients/registry/serpro.js.map +1 -0
  49. package/dist/cjs/clients/registry/service.js +230 -0
  50. package/dist/cjs/clients/registry/service.js.map +1 -0
  51. package/dist/cjs/clients/registry/synthetic.js +165 -0
  52. package/dist/cjs/clients/registry/synthetic.js.map +1 -0
  53. package/dist/cjs/clients/repository.js +190 -9
  54. package/dist/cjs/clients/repository.js.map +1 -1
  55. package/dist/cjs/collection/branding.js +190 -0
  56. package/dist/cjs/collection/branding.js.map +1 -1
  57. package/dist/cjs/collection/clearance-store.js +74 -0
  58. package/dist/cjs/collection/clearance-store.js.map +1 -0
  59. package/dist/cjs/collection/communication-runtime.js +65 -2
  60. package/dist/cjs/collection/communication-runtime.js.map +1 -1
  61. package/dist/cjs/collection/engine.js +20 -0
  62. package/dist/cjs/collection/engine.js.map +1 -1
  63. package/dist/cjs/collection/policy.js +29 -1
  64. package/dist/cjs/collection/policy.js.map +1 -1
  65. package/dist/cjs/communication/clearance.js +18 -0
  66. package/dist/cjs/communication/clearance.js.map +1 -0
  67. package/dist/cjs/communication/dry-run-scenario.js +5 -0
  68. package/dist/cjs/communication/dry-run-scenario.js.map +1 -1
  69. package/dist/cjs/communication/engine.js +12 -0
  70. package/dist/cjs/communication/engine.js.map +1 -1
  71. package/dist/cjs/communication/policy.js.map +1 -1
  72. package/dist/cjs/competence/business-days.js +155 -0
  73. package/dist/cjs/competence/business-days.js.map +1 -0
  74. package/dist/cjs/competence/catalog-validation.js +174 -0
  75. package/dist/cjs/competence/catalog-validation.js.map +1 -0
  76. package/dist/cjs/competence/obligation-preview.js +190 -0
  77. package/dist/cjs/competence/obligation-preview.js.map +1 -0
  78. package/dist/cjs/competence/repository.js +330 -17
  79. package/dist/cjs/competence/repository.js.map +1 -1
  80. package/dist/cjs/dashboard/pilot-panel.js +90 -0
  81. package/dist/cjs/dashboard/pilot-panel.js.map +1 -0
  82. package/dist/cjs/dashboard/repository.js +11 -1
  83. package/dist/cjs/dashboard/repository.js.map +1 -1
  84. package/dist/cjs/db/client.js +17 -11
  85. package/dist/cjs/db/client.js.map +1 -1
  86. package/dist/cjs/db/provision-e2e-identity.js +116 -0
  87. package/dist/cjs/db/provision-e2e-identity.js.map +1 -0
  88. package/dist/cjs/fiscal/applicability.js +164 -0
  89. package/dist/cjs/fiscal/applicability.js.map +1 -0
  90. package/dist/cjs/fiscal/collection/authorization.js +186 -0
  91. package/dist/cjs/fiscal/collection/authorization.js.map +1 -0
  92. package/dist/cjs/fiscal/collection/competence.js +97 -0
  93. package/dist/cjs/fiscal/collection/competence.js.map +1 -0
  94. package/dist/cjs/fiscal/collection/first-contact.js +204 -0
  95. package/dist/cjs/fiscal/collection/first-contact.js.map +1 -0
  96. package/dist/cjs/fiscal/collection/plan.js +122 -0
  97. package/dist/cjs/fiscal/collection/plan.js.map +1 -0
  98. package/dist/cjs/fiscal/conditions.js +198 -0
  99. package/dist/cjs/fiscal/conditions.js.map +1 -0
  100. package/dist/cjs/fiscal/contracts/nfse-adn-contract.js +390 -0
  101. package/dist/cjs/fiscal/contracts/nfse-adn-contract.js.map +1 -0
  102. package/dist/cjs/fiscal/contracts/nfse-adn-endpoint.js +108 -0
  103. package/dist/cjs/fiscal/contracts/nfse-adn-endpoint.js.map +1 -0
  104. package/dist/cjs/fiscal/contracts/nfse-adn-envelope.js +220 -0
  105. package/dist/cjs/fiscal/contracts/nfse-adn-envelope.js.map +1 -0
  106. package/dist/cjs/fiscal/coverage/model.js +137 -0
  107. package/dist/cjs/fiscal/coverage/model.js.map +1 -0
  108. package/dist/cjs/fiscal/coverage/requests.js +99 -0
  109. package/dist/cjs/fiscal/coverage/requests.js.map +1 -0
  110. package/dist/cjs/fiscal/credentials/inspect.js +182 -0
  111. package/dist/cjs/fiscal/credentials/inspect.js.map +1 -0
  112. package/dist/cjs/fiscal/credentials/material.js +168 -0
  113. package/dist/cjs/fiscal/credentials/material.js.map +1 -0
  114. package/dist/cjs/fiscal/credentials/onboarding.js +266 -0
  115. package/dist/cjs/fiscal/credentials/onboarding.js.map +1 -0
  116. package/dist/cjs/fiscal/credentials/readiness.js +190 -0
  117. package/dist/cjs/fiscal/credentials/readiness.js.map +1 -0
  118. package/dist/cjs/fiscal/eligibility.js +199 -0
  119. package/dist/cjs/fiscal/eligibility.js.map +1 -0
  120. package/dist/cjs/fiscal/enrollment.js +134 -0
  121. package/dist/cjs/fiscal/enrollment.js.map +1 -0
  122. package/dist/cjs/fiscal/ingestion/__fixtures__/nfse.js +128 -0
  123. package/dist/cjs/fiscal/ingestion/__fixtures__/nfse.js.map +1 -0
  124. package/dist/cjs/fiscal/ingestion/adn-transport.js +229 -0
  125. package/dist/cjs/fiscal/ingestion/adn-transport.js.map +1 -0
  126. package/dist/cjs/fiscal/ingestion/direction.js +36 -0
  127. package/dist/cjs/fiscal/ingestion/direction.js.map +1 -0
  128. package/dist/cjs/fiscal/ingestion/nfse-adn.js +228 -0
  129. package/dist/cjs/fiscal/ingestion/nfse-adn.js.map +1 -0
  130. package/dist/cjs/fiscal/ingestion/pipeline.js +704 -0
  131. package/dist/cjs/fiscal/ingestion/pipeline.js.map +1 -0
  132. package/dist/cjs/fiscal/ingestion/provider.js +51 -0
  133. package/dist/cjs/fiscal/ingestion/provider.js.map +1 -0
  134. package/dist/cjs/fiscal/ingestion/repository.js +132 -0
  135. package/dist/cjs/fiscal/ingestion/repository.js.map +1 -0
  136. package/dist/cjs/fiscal/ingestion/synthetic-provider.js +103 -0
  137. package/dist/cjs/fiscal/ingestion/synthetic-provider.js.map +1 -0
  138. package/dist/cjs/fiscal/ingestion/synthetic-transport-types.js +13 -0
  139. package/dist/cjs/fiscal/ingestion/synthetic-transport-types.js.map +1 -0
  140. package/dist/cjs/fiscal/ingestion/synthetic-transport.js +61 -0
  141. package/dist/cjs/fiscal/ingestion/synthetic-transport.js.map +1 -0
  142. package/dist/cjs/fiscal/ingestion/xml-reader.js +121 -0
  143. package/dist/cjs/fiscal/ingestion/xml-reader.js.map +1 -0
  144. package/dist/cjs/fiscal/repository.js +470 -0
  145. package/dist/cjs/fiscal/repository.js.map +1 -0
  146. package/dist/cjs/fiscal/sync/circuit.js +124 -0
  147. package/dist/cjs/fiscal/sync/circuit.js.map +1 -0
  148. package/dist/cjs/fiscal/sync/intervention.js +140 -0
  149. package/dist/cjs/fiscal/sync/intervention.js.map +1 -0
  150. package/dist/cjs/fiscal/sync/lease.js +146 -0
  151. package/dist/cjs/fiscal/sync/lease.js.map +1 -0
  152. package/dist/cjs/fiscal/sync/observability.js +244 -0
  153. package/dist/cjs/fiscal/sync/observability.js.map +1 -0
  154. package/dist/cjs/fiscal/sync/orchestrator.js +490 -0
  155. package/dist/cjs/fiscal/sync/orchestrator.js.map +1 -0
  156. package/dist/cjs/fiscal/sync/policy.js +143 -0
  157. package/dist/cjs/fiscal/sync/policy.js.map +1 -0
  158. package/dist/cjs/fiscal/sync/reprocess.js +241 -0
  159. package/dist/cjs/fiscal/sync/reprocess.js.map +1 -0
  160. package/dist/cjs/fiscal/sync/retry.js +183 -0
  161. package/dist/cjs/fiscal/sync/retry.js.map +1 -0
  162. package/dist/cjs/fiscal/sync/secret-boundary.js +123 -0
  163. package/dist/cjs/fiscal/sync/secret-boundary.js.map +1 -0
  164. package/dist/cjs/fiscal/transport/https.js +309 -0
  165. package/dist/cjs/fiscal/transport/https.js.map +1 -0
  166. package/dist/cjs/fiscal/transport/synthetic-tls.js +380 -0
  167. package/dist/cjs/fiscal/transport/synthetic-tls.js.map +1 -0
  168. package/dist/cjs/fiscal/transport/types.js +93 -0
  169. package/dist/cjs/fiscal/transport/types.js.map +1 -0
  170. package/dist/cjs/import/br-documents.js +85 -0
  171. package/dist/cjs/import/br-documents.js.map +1 -0
  172. package/dist/cjs/import/clients-import.js +347 -40
  173. package/dist/cjs/import/clients-import.js.map +1 -1
  174. package/dist/cjs/index.js +461 -73
  175. package/dist/cjs/index.js.map +1 -1
  176. package/dist/cjs/legal/documents.js +164 -19
  177. package/dist/cjs/legal/documents.js.map +1 -1
  178. package/dist/cjs/legal/index.js +3 -1
  179. package/dist/cjs/legal/index.js.map +1 -1
  180. package/dist/cjs/legal/types.js.map +1 -1
  181. package/dist/cjs/onboarding/persistence.js +4 -4
  182. package/dist/cjs/onboarding/persistence.js.map +1 -1
  183. package/dist/cjs/pilot/go-live-checklist.js +212 -0
  184. package/dist/cjs/pilot/go-live-checklist.js.map +1 -0
  185. package/dist/cjs/pilot/milestone.js +79 -0
  186. package/dist/cjs/pilot/milestone.js.map +1 -0
  187. package/dist/cjs/platform/capabilities.js +173 -0
  188. package/dist/cjs/platform/capabilities.js.map +1 -0
  189. package/dist/cjs/platform/job-contract.js +411 -0
  190. package/dist/cjs/platform/job-contract.js.map +1 -0
  191. package/dist/cjs/rbac/catalog.js +110 -0
  192. package/dist/cjs/rbac/catalog.js.map +1 -1
  193. package/dist/cjs/subscription-billing/index.js +9 -1
  194. package/dist/cjs/subscription-billing/index.js.map +1 -1
  195. package/dist/cjs/subscription-billing/platform-exemption.js +121 -0
  196. package/dist/cjs/subscription-billing/platform-exemption.js.map +1 -0
  197. package/dist/cjs/subscription-billing/service.js +246 -78
  198. package/dist/cjs/subscription-billing/service.js.map +1 -1
  199. package/dist/cjs/tenancy/features.js +131 -0
  200. package/dist/cjs/tenancy/features.js.map +1 -0
  201. package/dist/cjs/tenancy/settings.js +224 -0
  202. package/dist/cjs/tenancy/settings.js.map +1 -0
  203. package/dist/cjs/users/repository.js +24 -1
  204. package/dist/cjs/users/repository.js.map +1 -1
  205. package/dist/cjs/vault/repository.js +92 -5
  206. package/dist/cjs/vault/repository.js.map +1 -1
  207. package/dist/clients/ibge.d.ts +17 -0
  208. package/dist/clients/ibge.d.ts.map +1 -0
  209. package/dist/clients/ibge.js +112 -0
  210. package/dist/clients/ibge.js.map +1 -0
  211. package/dist/clients/registry/http.d.ts +61 -0
  212. package/dist/clients/registry/http.d.ts.map +1 -0
  213. package/dist/clients/registry/http.js +151 -0
  214. package/dist/clients/registry/http.js.map +1 -0
  215. package/dist/clients/registry/ibge-municipios.d.ts +25 -0
  216. package/dist/clients/registry/ibge-municipios.d.ts.map +1 -0
  217. package/dist/clients/registry/ibge-municipios.js +25 -0
  218. package/dist/clients/registry/ibge-municipios.js.map +1 -0
  219. package/dist/clients/registry/ibge.d.ts +62 -0
  220. package/dist/clients/registry/ibge.d.ts.map +1 -0
  221. package/dist/clients/registry/ibge.js +57 -0
  222. package/dist/clients/registry/ibge.js.map +1 -0
  223. package/dist/clients/registry/lookup.d.ts +94 -0
  224. package/dist/clients/registry/lookup.d.ts.map +1 -0
  225. package/dist/clients/registry/lookup.js +184 -0
  226. package/dist/clients/registry/lookup.js.map +1 -0
  227. package/dist/clients/registry/provider.d.ts +124 -0
  228. package/dist/clients/registry/provider.d.ts.map +1 -0
  229. package/dist/clients/registry/provider.js +39 -0
  230. package/dist/clients/registry/provider.js.map +1 -0
  231. package/dist/clients/registry/resolve.d.ts +36 -0
  232. package/dist/clients/registry/resolve.d.ts.map +1 -0
  233. package/dist/clients/registry/resolve.js +44 -0
  234. package/dist/clients/registry/resolve.js.map +1 -0
  235. package/dist/clients/registry/serpro.d.ts +57 -0
  236. package/dist/clients/registry/serpro.d.ts.map +1 -0
  237. package/dist/clients/registry/serpro.js +143 -0
  238. package/dist/clients/registry/serpro.js.map +1 -0
  239. package/dist/clients/registry/service.d.ts +59 -0
  240. package/dist/clients/registry/service.d.ts.map +1 -0
  241. package/dist/clients/registry/service.js +225 -0
  242. package/dist/clients/registry/service.js.map +1 -0
  243. package/dist/clients/registry/synthetic.d.ts +30 -0
  244. package/dist/clients/registry/synthetic.d.ts.map +1 -0
  245. package/dist/clients/registry/synthetic.js +161 -0
  246. package/dist/clients/registry/synthetic.js.map +1 -0
  247. package/dist/clients/repository.d.ts +158 -0
  248. package/dist/clients/repository.d.ts.map +1 -1
  249. package/dist/clients/repository.js +186 -9
  250. package/dist/clients/repository.js.map +1 -1
  251. package/dist/collection/branding.d.ts +65 -0
  252. package/dist/collection/branding.d.ts.map +1 -1
  253. package/dist/collection/branding.js +186 -0
  254. package/dist/collection/branding.js.map +1 -1
  255. package/dist/collection/clearance-store.d.ts +39 -0
  256. package/dist/collection/clearance-store.d.ts.map +1 -0
  257. package/dist/collection/clearance-store.js +69 -0
  258. package/dist/collection/clearance-store.js.map +1 -0
  259. package/dist/collection/communication-runtime.d.ts +37 -0
  260. package/dist/collection/communication-runtime.d.ts.map +1 -1
  261. package/dist/collection/communication-runtime.js +63 -1
  262. package/dist/collection/communication-runtime.js.map +1 -1
  263. package/dist/collection/engine.d.ts +23 -0
  264. package/dist/collection/engine.d.ts.map +1 -1
  265. package/dist/collection/engine.js +20 -0
  266. package/dist/collection/engine.js.map +1 -1
  267. package/dist/collection/policy.d.ts +25 -0
  268. package/dist/collection/policy.d.ts.map +1 -1
  269. package/dist/collection/policy.js +27 -0
  270. package/dist/collection/policy.js.map +1 -1
  271. package/dist/communication/clearance.d.ts +53 -0
  272. package/dist/communication/clearance.d.ts.map +1 -0
  273. package/dist/communication/clearance.js +15 -0
  274. package/dist/communication/clearance.js.map +1 -0
  275. package/dist/communication/dry-run-scenario.d.ts.map +1 -1
  276. package/dist/communication/dry-run-scenario.js +5 -0
  277. package/dist/communication/dry-run-scenario.js.map +1 -1
  278. package/dist/communication/engine.d.ts +10 -0
  279. package/dist/communication/engine.d.ts.map +1 -1
  280. package/dist/communication/engine.js +12 -0
  281. package/dist/communication/engine.js.map +1 -1
  282. package/dist/communication/policy.d.ts +16 -0
  283. package/dist/communication/policy.d.ts.map +1 -1
  284. package/dist/communication/policy.js.map +1 -1
  285. package/dist/competence/business-days.d.ts +51 -0
  286. package/dist/competence/business-days.d.ts.map +1 -0
  287. package/dist/competence/business-days.js +145 -0
  288. package/dist/competence/business-days.js.map +1 -0
  289. package/dist/competence/catalog-validation.d.ts +86 -0
  290. package/dist/competence/catalog-validation.d.ts.map +1 -0
  291. package/dist/competence/catalog-validation.js +168 -0
  292. package/dist/competence/catalog-validation.js.map +1 -0
  293. package/dist/competence/obligation-preview.d.ts +103 -0
  294. package/dist/competence/obligation-preview.d.ts.map +1 -0
  295. package/dist/competence/obligation-preview.js +184 -0
  296. package/dist/competence/obligation-preview.js.map +1 -0
  297. package/dist/competence/repository.d.ts +139 -1
  298. package/dist/competence/repository.d.ts.map +1 -1
  299. package/dist/competence/repository.js +325 -17
  300. package/dist/competence/repository.js.map +1 -1
  301. package/dist/dashboard/pilot-panel.d.ts +100 -0
  302. package/dist/dashboard/pilot-panel.d.ts.map +1 -0
  303. package/dist/dashboard/pilot-panel.js +87 -0
  304. package/dist/dashboard/pilot-panel.js.map +1 -0
  305. package/dist/dashboard/repository.d.ts.map +1 -1
  306. package/dist/dashboard/repository.js +11 -1
  307. package/dist/dashboard/repository.js.map +1 -1
  308. package/dist/db/client.d.ts +45 -0
  309. package/dist/db/client.d.ts.map +1 -1
  310. package/dist/db/client.js +16 -11
  311. package/dist/db/client.js.map +1 -1
  312. package/dist/db/migrate.d.ts +36 -1
  313. package/dist/db/migrate.d.ts.map +1 -1
  314. package/dist/db/migrate.js +199 -32
  315. package/dist/db/migrate.js.map +1 -1
  316. package/dist/db/provision-e2e-identity.d.ts +2 -0
  317. package/dist/db/provision-e2e-identity.d.ts.map +1 -0
  318. package/dist/db/provision-e2e-identity.js +114 -0
  319. package/dist/db/provision-e2e-identity.js.map +1 -0
  320. package/dist/fiscal/applicability.d.ts +73 -0
  321. package/dist/fiscal/applicability.d.ts.map +1 -0
  322. package/dist/fiscal/applicability.js +160 -0
  323. package/dist/fiscal/applicability.js.map +1 -0
  324. package/dist/fiscal/collection/authorization.d.ts +152 -0
  325. package/dist/fiscal/collection/authorization.d.ts.map +1 -0
  326. package/dist/fiscal/collection/authorization.js +178 -0
  327. package/dist/fiscal/collection/authorization.js.map +1 -0
  328. package/dist/fiscal/collection/competence.d.ts +66 -0
  329. package/dist/fiscal/collection/competence.d.ts.map +1 -0
  330. package/dist/fiscal/collection/competence.js +90 -0
  331. package/dist/fiscal/collection/competence.js.map +1 -0
  332. package/dist/fiscal/collection/first-contact.d.ts +103 -0
  333. package/dist/fiscal/collection/first-contact.d.ts.map +1 -0
  334. package/dist/fiscal/collection/first-contact.js +201 -0
  335. package/dist/fiscal/collection/first-contact.js.map +1 -0
  336. package/dist/fiscal/collection/plan.d.ts +74 -0
  337. package/dist/fiscal/collection/plan.d.ts.map +1 -0
  338. package/dist/fiscal/collection/plan.js +119 -0
  339. package/dist/fiscal/collection/plan.js.map +1 -0
  340. package/dist/fiscal/conditions.d.ts +99 -0
  341. package/dist/fiscal/conditions.d.ts.map +1 -0
  342. package/dist/fiscal/conditions.js +190 -0
  343. package/dist/fiscal/conditions.js.map +1 -0
  344. package/dist/fiscal/contracts/nfse-adn-contract.d.ts +315 -0
  345. package/dist/fiscal/contracts/nfse-adn-contract.d.ts.map +1 -0
  346. package/dist/fiscal/contracts/nfse-adn-contract.js +386 -0
  347. package/dist/fiscal/contracts/nfse-adn-contract.js.map +1 -0
  348. package/dist/fiscal/contracts/nfse-adn-endpoint.d.ts +13 -0
  349. package/dist/fiscal/contracts/nfse-adn-endpoint.d.ts.map +1 -0
  350. package/dist/fiscal/contracts/nfse-adn-endpoint.js +103 -0
  351. package/dist/fiscal/contracts/nfse-adn-endpoint.js.map +1 -0
  352. package/dist/fiscal/contracts/nfse-adn-envelope.d.ts +77 -0
  353. package/dist/fiscal/contracts/nfse-adn-envelope.d.ts.map +1 -0
  354. package/dist/fiscal/contracts/nfse-adn-envelope.js +215 -0
  355. package/dist/fiscal/contracts/nfse-adn-envelope.js.map +1 -0
  356. package/dist/fiscal/coverage/model.d.ts +114 -0
  357. package/dist/fiscal/coverage/model.d.ts.map +1 -0
  358. package/dist/fiscal/coverage/model.js +130 -0
  359. package/dist/fiscal/coverage/model.js.map +1 -0
  360. package/dist/fiscal/coverage/requests.d.ts +70 -0
  361. package/dist/fiscal/coverage/requests.d.ts.map +1 -0
  362. package/dist/fiscal/coverage/requests.js +95 -0
  363. package/dist/fiscal/coverage/requests.js.map +1 -0
  364. package/dist/fiscal/credentials/inspect.d.ts +114 -0
  365. package/dist/fiscal/credentials/inspect.d.ts.map +1 -0
  366. package/dist/fiscal/credentials/inspect.js +178 -0
  367. package/dist/fiscal/credentials/inspect.js.map +1 -0
  368. package/dist/fiscal/credentials/material.d.ts +81 -0
  369. package/dist/fiscal/credentials/material.d.ts.map +1 -0
  370. package/dist/fiscal/credentials/material.js +164 -0
  371. package/dist/fiscal/credentials/material.js.map +1 -0
  372. package/dist/fiscal/credentials/onboarding.d.ts +119 -0
  373. package/dist/fiscal/credentials/onboarding.d.ts.map +1 -0
  374. package/dist/fiscal/credentials/onboarding.js +259 -0
  375. package/dist/fiscal/credentials/onboarding.js.map +1 -0
  376. package/dist/fiscal/credentials/readiness.d.ts +119 -0
  377. package/dist/fiscal/credentials/readiness.d.ts.map +1 -0
  378. package/dist/fiscal/credentials/readiness.js +186 -0
  379. package/dist/fiscal/credentials/readiness.js.map +1 -0
  380. package/dist/fiscal/eligibility.d.ts +106 -0
  381. package/dist/fiscal/eligibility.d.ts.map +1 -0
  382. package/dist/fiscal/eligibility.js +194 -0
  383. package/dist/fiscal/eligibility.js.map +1 -0
  384. package/dist/fiscal/enrollment.d.ts +91 -0
  385. package/dist/fiscal/enrollment.d.ts.map +1 -0
  386. package/dist/fiscal/enrollment.js +126 -0
  387. package/dist/fiscal/enrollment.js.map +1 -0
  388. package/dist/fiscal/ingestion/__fixtures__/nfse.d.ts +57 -0
  389. package/dist/fiscal/ingestion/__fixtures__/nfse.d.ts.map +1 -0
  390. package/dist/fiscal/ingestion/__fixtures__/nfse.js +121 -0
  391. package/dist/fiscal/ingestion/__fixtures__/nfse.js.map +1 -0
  392. package/dist/fiscal/ingestion/adn-transport.d.ts +123 -0
  393. package/dist/fiscal/ingestion/adn-transport.d.ts.map +1 -0
  394. package/dist/fiscal/ingestion/adn-transport.js +220 -0
  395. package/dist/fiscal/ingestion/adn-transport.js.map +1 -0
  396. package/dist/fiscal/ingestion/direction.d.ts +60 -0
  397. package/dist/fiscal/ingestion/direction.d.ts.map +1 -0
  398. package/dist/fiscal/ingestion/direction.js +32 -0
  399. package/dist/fiscal/ingestion/direction.js.map +1 -0
  400. package/dist/fiscal/ingestion/nfse-adn.d.ts +91 -0
  401. package/dist/fiscal/ingestion/nfse-adn.d.ts.map +1 -0
  402. package/dist/fiscal/ingestion/nfse-adn.js +222 -0
  403. package/dist/fiscal/ingestion/nfse-adn.js.map +1 -0
  404. package/dist/fiscal/ingestion/pipeline.d.ts +168 -0
  405. package/dist/fiscal/ingestion/pipeline.d.ts.map +1 -0
  406. package/dist/fiscal/ingestion/pipeline.js +699 -0
  407. package/dist/fiscal/ingestion/pipeline.js.map +1 -0
  408. package/dist/fiscal/ingestion/provider.d.ts +206 -0
  409. package/dist/fiscal/ingestion/provider.d.ts.map +1 -0
  410. package/dist/fiscal/ingestion/provider.js +47 -0
  411. package/dist/fiscal/ingestion/provider.js.map +1 -0
  412. package/dist/fiscal/ingestion/repository.d.ts +82 -0
  413. package/dist/fiscal/ingestion/repository.d.ts.map +1 -0
  414. package/dist/fiscal/ingestion/repository.js +127 -0
  415. package/dist/fiscal/ingestion/repository.js.map +1 -0
  416. package/dist/fiscal/ingestion/synthetic-provider.d.ts +92 -0
  417. package/dist/fiscal/ingestion/synthetic-provider.d.ts.map +1 -0
  418. package/dist/fiscal/ingestion/synthetic-provider.js +99 -0
  419. package/dist/fiscal/ingestion/synthetic-provider.js.map +1 -0
  420. package/dist/fiscal/ingestion/synthetic-transport-types.d.ts +19 -0
  421. package/dist/fiscal/ingestion/synthetic-transport-types.d.ts.map +1 -0
  422. package/dist/fiscal/ingestion/synthetic-transport-types.js +9 -0
  423. package/dist/fiscal/ingestion/synthetic-transport-types.js.map +1 -0
  424. package/dist/fiscal/ingestion/synthetic-transport.d.ts +55 -0
  425. package/dist/fiscal/ingestion/synthetic-transport.d.ts.map +1 -0
  426. package/dist/fiscal/ingestion/synthetic-transport.js +57 -0
  427. package/dist/fiscal/ingestion/synthetic-transport.js.map +1 -0
  428. package/dist/fiscal/ingestion/xml-reader.d.ts +55 -0
  429. package/dist/fiscal/ingestion/xml-reader.d.ts.map +1 -0
  430. package/dist/fiscal/ingestion/xml-reader.js +112 -0
  431. package/dist/fiscal/ingestion/xml-reader.js.map +1 -0
  432. package/dist/fiscal/repository.d.ts +220 -0
  433. package/dist/fiscal/repository.d.ts.map +1 -0
  434. package/dist/fiscal/repository.js +449 -0
  435. package/dist/fiscal/repository.js.map +1 -0
  436. package/dist/fiscal/sync/circuit.d.ts +86 -0
  437. package/dist/fiscal/sync/circuit.d.ts.map +1 -0
  438. package/dist/fiscal/sync/circuit.js +118 -0
  439. package/dist/fiscal/sync/circuit.js.map +1 -0
  440. package/dist/fiscal/sync/intervention.d.ts +81 -0
  441. package/dist/fiscal/sync/intervention.d.ts.map +1 -0
  442. package/dist/fiscal/sync/intervention.js +135 -0
  443. package/dist/fiscal/sync/intervention.js.map +1 -0
  444. package/dist/fiscal/sync/lease.d.ts +118 -0
  445. package/dist/fiscal/sync/lease.d.ts.map +1 -0
  446. package/dist/fiscal/sync/lease.js +139 -0
  447. package/dist/fiscal/sync/lease.js.map +1 -0
  448. package/dist/fiscal/sync/observability.d.ts +148 -0
  449. package/dist/fiscal/sync/observability.d.ts.map +1 -0
  450. package/dist/fiscal/sync/observability.js +239 -0
  451. package/dist/fiscal/sync/observability.js.map +1 -0
  452. package/dist/fiscal/sync/orchestrator.d.ts +132 -0
  453. package/dist/fiscal/sync/orchestrator.d.ts.map +1 -0
  454. package/dist/fiscal/sync/orchestrator.js +487 -0
  455. package/dist/fiscal/sync/orchestrator.js.map +1 -0
  456. package/dist/fiscal/sync/policy.d.ts +87 -0
  457. package/dist/fiscal/sync/policy.d.ts.map +1 -0
  458. package/dist/fiscal/sync/policy.js +136 -0
  459. package/dist/fiscal/sync/policy.js.map +1 -0
  460. package/dist/fiscal/sync/reprocess.d.ts +76 -0
  461. package/dist/fiscal/sync/reprocess.d.ts.map +1 -0
  462. package/dist/fiscal/sync/reprocess.js +237 -0
  463. package/dist/fiscal/sync/reprocess.js.map +1 -0
  464. package/dist/fiscal/sync/retry.d.ts +82 -0
  465. package/dist/fiscal/sync/retry.d.ts.map +1 -0
  466. package/dist/fiscal/sync/retry.js +176 -0
  467. package/dist/fiscal/sync/retry.js.map +1 -0
  468. package/dist/fiscal/sync/secret-boundary.d.ts +169 -0
  469. package/dist/fiscal/sync/secret-boundary.d.ts.map +1 -0
  470. package/dist/fiscal/sync/secret-boundary.js +116 -0
  471. package/dist/fiscal/sync/secret-boundary.js.map +1 -0
  472. package/dist/fiscal/transport/https.d.ts +86 -0
  473. package/dist/fiscal/transport/https.d.ts.map +1 -0
  474. package/dist/fiscal/transport/https.js +303 -0
  475. package/dist/fiscal/transport/https.js.map +1 -0
  476. package/dist/fiscal/transport/synthetic-tls.d.ts +99 -0
  477. package/dist/fiscal/transport/synthetic-tls.d.ts.map +1 -0
  478. package/dist/fiscal/transport/synthetic-tls.js +374 -0
  479. package/dist/fiscal/transport/synthetic-tls.js.map +1 -0
  480. package/dist/fiscal/transport/types.d.ts +134 -0
  481. package/dist/fiscal/transport/types.d.ts.map +1 -0
  482. package/dist/fiscal/transport/types.js +88 -0
  483. package/dist/fiscal/transport/types.js.map +1 -0
  484. package/dist/import/br-documents.d.ts +26 -0
  485. package/dist/import/br-documents.d.ts.map +1 -0
  486. package/dist/import/br-documents.js +78 -0
  487. package/dist/import/br-documents.js.map +1 -0
  488. package/dist/import/clients-import.d.ts +122 -4
  489. package/dist/import/clients-import.d.ts.map +1 -1
  490. package/dist/import/clients-import.js +341 -41
  491. package/dist/import/clients-import.js.map +1 -1
  492. package/dist/index.d.ts +145 -13
  493. package/dist/index.d.ts.map +1 -1
  494. package/dist/index.js +120 -7
  495. package/dist/index.js.map +1 -1
  496. package/dist/legal/documents.d.ts +12 -1
  497. package/dist/legal/documents.d.ts.map +1 -1
  498. package/dist/legal/documents.js +162 -18
  499. package/dist/legal/documents.js.map +1 -1
  500. package/dist/legal/index.d.ts +2 -2
  501. package/dist/legal/index.d.ts.map +1 -1
  502. package/dist/legal/index.js +1 -1
  503. package/dist/legal/index.js.map +1 -1
  504. package/dist/legal/types.d.ts +114 -2
  505. package/dist/legal/types.d.ts.map +1 -1
  506. package/dist/legal/types.js.map +1 -1
  507. package/dist/onboarding/persistence.d.ts +10 -1
  508. package/dist/onboarding/persistence.d.ts.map +1 -1
  509. package/dist/onboarding/persistence.js +4 -4
  510. package/dist/onboarding/persistence.js.map +1 -1
  511. package/dist/pilot/go-live-checklist.d.ts +41 -0
  512. package/dist/pilot/go-live-checklist.d.ts.map +1 -0
  513. package/dist/pilot/go-live-checklist.js +209 -0
  514. package/dist/pilot/go-live-checklist.js.map +1 -0
  515. package/dist/pilot/milestone.d.ts +56 -0
  516. package/dist/pilot/milestone.d.ts.map +1 -0
  517. package/dist/pilot/milestone.js +74 -0
  518. package/dist/pilot/milestone.js.map +1 -0
  519. package/dist/platform/capabilities.d.ts +88 -0
  520. package/dist/platform/capabilities.d.ts.map +1 -0
  521. package/dist/platform/capabilities.js +169 -0
  522. package/dist/platform/capabilities.js.map +1 -0
  523. package/dist/platform/job-contract.d.ts +232 -0
  524. package/dist/platform/job-contract.d.ts.map +1 -0
  525. package/dist/platform/job-contract.js +403 -0
  526. package/dist/platform/job-contract.js.map +1 -0
  527. package/dist/rbac/catalog.d.ts.map +1 -1
  528. package/dist/rbac/catalog.js +110 -0
  529. package/dist/rbac/catalog.js.map +1 -1
  530. package/dist/subscription-billing/index.d.ts +8 -5
  531. package/dist/subscription-billing/index.d.ts.map +1 -1
  532. package/dist/subscription-billing/index.js +4 -3
  533. package/dist/subscription-billing/index.js.map +1 -1
  534. package/dist/subscription-billing/platform-exemption.d.ts +89 -0
  535. package/dist/subscription-billing/platform-exemption.d.ts.map +1 -0
  536. package/dist/subscription-billing/platform-exemption.js +113 -0
  537. package/dist/subscription-billing/platform-exemption.js.map +1 -0
  538. package/dist/subscription-billing/service.d.ts +74 -0
  539. package/dist/subscription-billing/service.d.ts.map +1 -1
  540. package/dist/subscription-billing/service.js +182 -16
  541. package/dist/subscription-billing/service.js.map +1 -1
  542. package/dist/tenancy/features.d.ts +69 -0
  543. package/dist/tenancy/features.d.ts.map +1 -0
  544. package/dist/tenancy/features.js +123 -0
  545. package/dist/tenancy/features.js.map +1 -0
  546. package/dist/tenancy/settings.d.ts +63 -0
  547. package/dist/tenancy/settings.d.ts.map +1 -0
  548. package/dist/tenancy/settings.js +218 -0
  549. package/dist/tenancy/settings.js.map +1 -0
  550. package/dist/users/repository.d.ts +16 -1
  551. package/dist/users/repository.d.ts.map +1 -1
  552. package/dist/users/repository.js +24 -1
  553. package/dist/users/repository.js.map +1 -1
  554. package/dist/vault/repository.d.ts +69 -1
  555. package/dist/vault/repository.d.ts.map +1 -1
  556. package/dist/vault/repository.js +88 -5
  557. package/dist/vault/repository.js.map +1 -1
  558. package/package.json +10 -2
  559. package/src/db/migrations/0045_role_write_scope.sql +122 -0
  560. package/src/db/migrations/0046_pilot_activation_model.sql +184 -0
  561. package/src/db/migrations/0047_recipient_clearance.sql +89 -0
  562. package/src/db/migrations/0048_item_type_note.sql +16 -0
  563. package/src/db/migrations/0049_national_fiscal_engine.sql +279 -0
  564. package/src/db/migrations/0050_fiscal_vocabulary_readonly.sql +29 -0
  565. package/src/db/migrations/0051_seed_rules_from_catalog.sql +72 -0
  566. package/src/db/migrations/0052_fiscal_rule_delete_scope.sql +57 -0
  567. package/src/db/migrations/0053_rule_validity_lower_bound.sql +44 -0
  568. package/src/db/migrations/0054_tenant_profile_and_rule_source.sql +89 -0
  569. package/src/db/migrations/0055_job_capability_contract.sql +300 -0
  570. package/src/db/migrations/0056_fiscal_document_ingestion.sql +337 -0
  571. package/src/db/migrations/0057_fiscal_pending_event_inbox.sql +228 -0
  572. package/src/db/migrations/0058_fiscal_operational_engine.sql +516 -0
  573. package/src/db/migrations/0059_fiscal_contract_version.sql +59 -0
  574. package/src/db/migrations/0060_fiscal_credential_vault_and_run_authorization.sql +321 -0
  575. package/src/db/migrations/0061_client_official_registry_provenance.sql +193 -0
  576. package/src/db/migrations/0062_first_contact_and_capability_truth.sql +119 -0
@@ -0,0 +1,380 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SYNTHETIC_CERTIFICATE_CNPJ = void 0;
4
+ exports.createSyntheticPki = createSyntheticPki;
5
+ exports.syntheticPki = syntheticPki;
6
+ exports.startSyntheticTlsServer = startSyntheticTlsServer;
7
+ const node_child_process_1 = require("node:child_process");
8
+ const node_fs_1 = require("node:fs");
9
+ const node_os_1 = require("node:os");
10
+ const node_path_1 = require("node:path");
11
+ const node_crypto_1 = require("node:crypto");
12
+ const node_https_1 = require("node:https");
13
+ /**
14
+ * O CNPJ sintético dos testes de identidade.
15
+ *
16
+ * Inventado, e propositalmente distinto de qualquer contribuinte real: um número
17
+ * de verdade num fixture vira, mais cedo ou mais tarde, um cadastro de verdade.
18
+ */
19
+ exports.SYNTHETIC_CERTIFICATE_CNPJ = '11222333000181';
20
+ function openssl(args, cwd) {
21
+ try {
22
+ (0, node_child_process_1.execFileSync)('openssl', [...args], { cwd, stdio: 'pipe' });
23
+ }
24
+ catch {
25
+ // O erro original é DESCARTADO de propósito: `err.stderr` do OpenSSL cita
26
+ // caminhos de arquivo e sujeitos de certificado. O que importa para
27
+ // depurar é qual subcomando falhou, e isso cabe na mensagem própria.
28
+ throw new Error(`openssl ${args[0] ?? '?'} falhou ao gerar material sintético`);
29
+ }
30
+ }
31
+ const CA_CONFIG = `[ca]
32
+ default_ca = CA_default
33
+ [CA_default]
34
+ database = index.txt
35
+ serial = serial
36
+ new_certs_dir = .
37
+ certificate = ca.crt
38
+ private_key = ca.key
39
+ default_md = sha256
40
+ policy = policy_any
41
+ email_in_dn = no
42
+ rand_serial = yes
43
+ unique_subject = no
44
+ [policy_any]
45
+ commonName = supplied
46
+ `;
47
+ /**
48
+ * Gera a ICP sintética inteira.
49
+ *
50
+ * Lenta (segundos): gera seis pares de chaves. Quem usa deve guardar o
51
+ * resultado — `syntheticPki()` abaixo faz isso por processo.
52
+ */
53
+ function createSyntheticPki() {
54
+ if (process.env.NODE_ENV === 'production' || process.env.BARUK_APP_ENV === 'production') {
55
+ throw new Error('ICP sintética não é gerada em produção.');
56
+ }
57
+ const dir = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), 'baruk-synthetic-pki-'));
58
+ const passphrase = `synthetic_${(0, node_crypto_1.randomBytes)(12).toString('hex')}`;
59
+ try {
60
+ // ── CA legítima ────────────────────────────────────────────────────────
61
+ openssl([
62
+ 'req',
63
+ '-x509',
64
+ '-newkey',
65
+ 'rsa:2048',
66
+ '-nodes',
67
+ '-keyout',
68
+ 'ca.key',
69
+ '-out',
70
+ 'ca.crt',
71
+ '-days',
72
+ '3',
73
+ '-subj',
74
+ '/CN=Baruk Synthetic Root',
75
+ '-addext',
76
+ 'basicConstraints=critical,CA:TRUE,pathlen:0',
77
+ ], dir);
78
+ // ── Servidor, com SAN para localhost e 127.0.0.1 ───────────────────────
79
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(dir, 'srv.ext'), 'subjectAltName=DNS:localhost,IP:127.0.0.1\n');
80
+ openssl([
81
+ 'req',
82
+ '-newkey',
83
+ 'rsa:2048',
84
+ '-nodes',
85
+ '-keyout',
86
+ 'srv.key',
87
+ '-out',
88
+ 'srv.csr',
89
+ '-subj',
90
+ '/CN=localhost',
91
+ ], dir);
92
+ openssl([
93
+ 'x509',
94
+ '-req',
95
+ '-in',
96
+ 'srv.csr',
97
+ '-CA',
98
+ 'ca.crt',
99
+ '-CAkey',
100
+ 'ca.key',
101
+ '-CAcreateserial',
102
+ '-out',
103
+ 'srv.crt',
104
+ '-days',
105
+ '3',
106
+ '-extfile',
107
+ 'srv.ext',
108
+ ], dir);
109
+ // ── Cliente legítimo ───────────────────────────────────────────────────
110
+ openssl([
111
+ 'req',
112
+ '-newkey',
113
+ 'rsa:2048',
114
+ '-nodes',
115
+ '-keyout',
116
+ 'cli.key',
117
+ '-out',
118
+ 'cli.csr',
119
+ '-subj',
120
+ '/CN=Contribuinte Sintetico',
121
+ ], dir);
122
+ openssl([
123
+ 'x509',
124
+ '-req',
125
+ '-in',
126
+ 'cli.csr',
127
+ '-CA',
128
+ 'ca.crt',
129
+ '-CAkey',
130
+ 'ca.key',
131
+ '-CAcreateserial',
132
+ '-out',
133
+ 'cli.crt',
134
+ '-days',
135
+ '3',
136
+ ], dir);
137
+ openssl([
138
+ 'pkcs12',
139
+ '-export',
140
+ '-inkey',
141
+ 'cli.key',
142
+ '-in',
143
+ 'cli.crt',
144
+ '-certfile',
145
+ 'ca.crt',
146
+ '-passout',
147
+ `pass:${passphrase}`,
148
+ '-out',
149
+ 'cli.p12',
150
+ ], dir);
151
+ // ── Cliente VENCIDO ────────────────────────────────────────────────────
152
+ //
153
+ // `openssl x509 -req` não sabe datar no passado em todas as versões; `ca`
154
+ // sabe desde a 1.1.1, com `-startdate`/`-enddate`. É por isso que existe o
155
+ // arquivo de configuração acima — e não por gosto por configuração.
156
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(dir, 'ca.cnf'), CA_CONFIG);
157
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(dir, 'index.txt'), '');
158
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(dir, 'serial'), '01\n');
159
+ openssl([
160
+ 'req',
161
+ '-newkey',
162
+ 'rsa:2048',
163
+ '-nodes',
164
+ '-keyout',
165
+ 'exp.key',
166
+ '-out',
167
+ 'exp.csr',
168
+ '-subj',
169
+ '/CN=Contribuinte Vencido',
170
+ ], dir);
171
+ openssl([
172
+ 'ca',
173
+ '-batch',
174
+ '-config',
175
+ 'ca.cnf',
176
+ '-in',
177
+ 'exp.csr',
178
+ '-out',
179
+ 'exp.crt',
180
+ '-notext',
181
+ '-startdate',
182
+ '200101000000Z',
183
+ '-enddate',
184
+ '200201000000Z',
185
+ ], dir);
186
+ openssl([
187
+ 'pkcs12',
188
+ '-export',
189
+ '-inkey',
190
+ 'exp.key',
191
+ '-in',
192
+ 'exp.crt',
193
+ '-certfile',
194
+ 'ca.crt',
195
+ '-passout',
196
+ `pass:${passphrase}`,
197
+ '-out',
198
+ 'exp.p12',
199
+ ], dir);
200
+ // ── CA estrangeira e seu cliente ───────────────────────────────────────
201
+ openssl([
202
+ 'req',
203
+ '-x509',
204
+ '-newkey',
205
+ 'rsa:2048',
206
+ '-nodes',
207
+ '-keyout',
208
+ 'foreign-ca.key',
209
+ '-out',
210
+ 'foreign-ca.crt',
211
+ '-days',
212
+ '3',
213
+ '-subj',
214
+ '/CN=CA Nao Confiada',
215
+ '-addext',
216
+ 'basicConstraints=critical,CA:TRUE,pathlen:0',
217
+ ], dir);
218
+ openssl([
219
+ 'req',
220
+ '-newkey',
221
+ 'rsa:2048',
222
+ '-nodes',
223
+ '-keyout',
224
+ 'foreign.key',
225
+ '-out',
226
+ 'foreign.csr',
227
+ '-subj',
228
+ '/CN=Contribuinte de Outra Cadeia',
229
+ ], dir);
230
+ openssl([
231
+ 'x509',
232
+ '-req',
233
+ '-in',
234
+ 'foreign.csr',
235
+ '-CA',
236
+ 'foreign-ca.crt',
237
+ '-CAkey',
238
+ 'foreign-ca.key',
239
+ '-CAcreateserial',
240
+ '-out',
241
+ 'foreign.crt',
242
+ '-days',
243
+ '3',
244
+ ], dir);
245
+ openssl([
246
+ 'pkcs12',
247
+ '-export',
248
+ '-inkey',
249
+ 'foreign.key',
250
+ '-in',
251
+ 'foreign.crt',
252
+ '-certfile',
253
+ 'foreign-ca.crt',
254
+ '-passout',
255
+ `pass:${passphrase}`,
256
+ '-out',
257
+ 'foreign.p12',
258
+ ], dir);
259
+ // ── Cliente com CNPJ no CN ─────────────────────────────────────────────
260
+ openssl([
261
+ 'req',
262
+ '-newkey',
263
+ 'rsa:2048',
264
+ '-nodes',
265
+ '-keyout',
266
+ 'doc.key',
267
+ '-out',
268
+ 'doc.csr',
269
+ '-subj',
270
+ `/CN=CONTRIBUINTE SINTETICO LTDA:${exports.SYNTHETIC_CERTIFICATE_CNPJ}`,
271
+ ], dir);
272
+ openssl([
273
+ 'x509',
274
+ '-req',
275
+ '-in',
276
+ 'doc.csr',
277
+ '-CA',
278
+ 'ca.crt',
279
+ '-CAkey',
280
+ 'ca.key',
281
+ '-CAcreateserial',
282
+ '-out',
283
+ 'doc.crt',
284
+ '-days',
285
+ '3',
286
+ ], dir);
287
+ openssl([
288
+ 'pkcs12',
289
+ '-export',
290
+ '-inkey',
291
+ 'doc.key',
292
+ '-in',
293
+ 'doc.crt',
294
+ '-certfile',
295
+ 'ca.crt',
296
+ '-passout',
297
+ `pass:${passphrase}`,
298
+ '-out',
299
+ 'doc.p12',
300
+ ], dir);
301
+ const pki = {
302
+ caCertPem: (0, node_fs_1.readFileSync)((0, node_path_1.join)(dir, 'ca.crt')),
303
+ serverKeyPem: (0, node_fs_1.readFileSync)((0, node_path_1.join)(dir, 'srv.key')),
304
+ serverCertPem: (0, node_fs_1.readFileSync)((0, node_path_1.join)(dir, 'srv.crt')),
305
+ clientPfx: (0, node_fs_1.readFileSync)((0, node_path_1.join)(dir, 'cli.p12')),
306
+ clientPassphrase: passphrase,
307
+ expiredClientPfx: (0, node_fs_1.readFileSync)((0, node_path_1.join)(dir, 'exp.p12')),
308
+ foreignCaCertPem: (0, node_fs_1.readFileSync)((0, node_path_1.join)(dir, 'foreign-ca.crt')),
309
+ foreignClientPfx: (0, node_fs_1.readFileSync)((0, node_path_1.join)(dir, 'foreign.p12')),
310
+ corruptPfx: Buffer.from('isto nao e um pkcs12, e e essa a graca', 'utf8'),
311
+ documentClientPfx: (0, node_fs_1.readFileSync)((0, node_path_1.join)(dir, 'doc.p12')),
312
+ documentClientCnpj: exports.SYNTHETIC_CERTIFICATE_CNPJ,
313
+ dispose() {
314
+ (0, node_fs_1.rmSync)(dir, { recursive: true, force: true });
315
+ },
316
+ };
317
+ // O diretório é removido AGORA: o material já está em memória, e deixar
318
+ // chave privada no disco — ainda que sintética e em `tmp` — é o hábito que
319
+ // um dia se repete com material real.
320
+ (0, node_fs_1.rmSync)(dir, { recursive: true, force: true });
321
+ return { ...pki, dispose: () => undefined };
322
+ }
323
+ catch (err) {
324
+ (0, node_fs_1.rmSync)(dir, { recursive: true, force: true });
325
+ throw err;
326
+ }
327
+ }
328
+ let cached = null;
329
+ /** A mesma ICP para o processo inteiro. Gerar seis chaves RSA custa segundos. */
330
+ function syntheticPki() {
331
+ cached ??= createSyntheticPki();
332
+ return cached;
333
+ }
334
+ /** Sobe um servidor TLS real na porta local. */
335
+ async function startSyntheticTlsServer(options) {
336
+ const { pki } = options;
337
+ const estado = {
338
+ url: '',
339
+ handshakes: 0,
340
+ seen: [],
341
+ close: async () => undefined,
342
+ };
343
+ const server = (0, node_https_1.createServer)({
344
+ key: pki.serverKeyPem,
345
+ cert: pki.serverCertPem,
346
+ ca: [pki.caCertPem],
347
+ requestCert: options.requireClientCert ?? false,
348
+ // `rejectUnauthorized` aqui é do SERVIDOR sobre o CLIENTE — o inverso do
349
+ // que o transporte configura. Verdadeiro quando o certificado é exigido:
350
+ // é exatamente esse comportamento do ADN que precisa ser reproduzido.
351
+ rejectUnauthorized: options.requireClientCert ?? false,
352
+ }, (req, res) => {
353
+ const cert = req.socket.getPeerCertificate?.();
354
+ estado.seen.push({ path: req.url ?? '/', clientCn: cert?.subject?.CN ?? null });
355
+ const r = options.respond?.(req.url ?? '/') ?? { status: 200, body: 'ok' };
356
+ const enviar = () => {
357
+ res.writeHead(r.status, { 'content-type': 'application/xml', ...(r.headers ?? {}) });
358
+ res.end(r.body ?? '');
359
+ };
360
+ if (options.delayMs)
361
+ setTimeout(enviar, options.delayMs).unref?.();
362
+ else
363
+ enviar();
364
+ });
365
+ server.on('secureConnection', () => {
366
+ estado.handshakes += 1;
367
+ });
368
+ // Sem isto, um handshake recusado derruba o processo de teste inteiro com um
369
+ // erro não tratado — e o teste que EXISTE para provar a recusa vira um crash.
370
+ server.on('tlsClientError', () => undefined);
371
+ await new Promise((resolve) => server.listen(0, '127.0.0.1', resolve));
372
+ const { port } = server.address();
373
+ estado.url = `https://127.0.0.1:${port}`;
374
+ estado.close = () => new Promise((resolve) => {
375
+ server.closeAllConnections?.();
376
+ server.close(() => resolve());
377
+ });
378
+ return estado;
379
+ }
380
+ //# sourceMappingURL=synthetic-tls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthetic-tls.js","sourceRoot":"","sources":["../../../../src/fiscal/transport/synthetic-tls.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ /**
3
+ * O transporte, separado do que trafega.
4
+ *
5
+ * ## Por que a fronteira fica exatamente aqui
6
+ *
7
+ * O adapter da NFS-e (`nfse-adn.ts`) recebia um `AdnTransport` cuja assinatura
8
+ * já falava de NSU e de lote — vocabulário FISCAL. Isso funcionou para provar a
9
+ * ingestão, mas amarra duas decisões que mudam por motivos diferentes: como se
10
+ * fala com o servidor (TLS mútuo, timeout, cabeçalho de espera) e o que se pede
11
+ * a ele (NSU, chave de acesso, evento).
12
+ *
13
+ * A prova de que são eixos independentes é o próprio Brasil fiscal: NF-e e CT-e
14
+ * usam SOAP; a NFS-e nacional usa REST; um provedor municipal usaria outra coisa
15
+ * ainda — e os TRÊS apresentam o mesmo certificado ICP-Brasil por TLS mútuo,
16
+ * respeitam a mesma classe de erro de rede e precisam do mesmo teto de espera.
17
+ * Um `if (provedor === 'x')` dentro de um cliente HTTP seria o sintoma da
18
+ * fronteira no lugar errado.
19
+ *
20
+ * Por isso esta camada não conhece NSU, não conhece documento e não conhece
21
+ * cliente. Ela conhece requisição, resposta, prazo e material de TLS.
22
+ *
23
+ * ## O que ela NÃO faz
24
+ *
25
+ * Não retenta. Não classifica erro fiscal. Não decide backoff. Essas decisões
26
+ * dependem do que estava sendo pedido — e um transporte que retentasse sozinho
27
+ * transformaria uma espera obrigatória de uma hora em três requisições, que é o
28
+ * caminho direto para o `cStat 656` e para o CNPJ do cliente bloqueado.
29
+ */
30
+ Object.defineProperty(exports, "__esModule", { value: true });
31
+ exports.FiscalTransportError = void 0;
32
+ exports.parseRetryAfter = parseRetryAfter;
33
+ /**
34
+ * Falha de transporte.
35
+ *
36
+ * A mensagem é montada por NÓS a partir da classe e de um código curto. O erro
37
+ * original NÃO é encadeado, e isso é deliberado: `Error.message` de TLS cita o
38
+ * caminho do arquivo do certificado e o sujeito do titular, e `err.stack` de um
39
+ * cliente HTTP já carregou a URL inteira com credencial embutida neste
40
+ * ecossistema. Redigir o campo não bastaria — a defesa é não copiar o texto.
41
+ */
42
+ class FiscalTransportError extends Error {
43
+ errorClass;
44
+ code;
45
+ retryAfter;
46
+ constructor(errorClass,
47
+ /** Código curto e estável (`ETIMEDOUT`, `CERT_HAS_EXPIRED`). Nunca texto livre do sistema. */
48
+ code,
49
+ /** Espera pedida pelo servidor (`Retry-After`), quando houver. */
50
+ retryAfter = null) {
51
+ super(`transporte ${errorClass} (${code})`);
52
+ this.errorClass = errorClass;
53
+ this.code = code;
54
+ this.retryAfter = retryAfter;
55
+ this.name = 'FiscalTransportError';
56
+ }
57
+ }
58
+ exports.FiscalTransportError = FiscalTransportError;
59
+ /**
60
+ * Lê `Retry-After` como a RFC 9110 §10.2.3 o define: segundos OU data HTTP.
61
+ *
62
+ * Existe aqui, e não dentro do cliente HTTP, porque o cabeçalho é a única parte
63
+ * da resposta que o motor de retentativa consulta — e ela precisa ser lida
64
+ * igual venha de onde vier. Valor ausente, negativo ou ilegível devolve `null`:
65
+ * inventar uma espera a partir de lixo é pior do que não ter espera nenhuma,
66
+ * porque a inventada parece autorizada.
67
+ */
68
+ function parseRetryAfter(raw, now = new Date()) {
69
+ if (!raw)
70
+ return null;
71
+ const trimmed = raw.trim();
72
+ if (trimmed === '')
73
+ return null;
74
+ if (/^\d+$/.test(trimmed)) {
75
+ const seconds = Number(trimmed);
76
+ // Um teto de 24h impede que um cabeçalho absurdo (ou hostil) congele um
77
+ // cliente por semanas. O valor continua sendo do servidor; o teto é nosso.
78
+ if (!Number.isFinite(seconds) || seconds < 0)
79
+ return null;
80
+ const capped = Math.min(seconds, 86_400);
81
+ return new Date(now.getTime() + capped * 1000);
82
+ }
83
+ const asDate = new Date(trimmed);
84
+ if (Number.isNaN(asDate.getTime()))
85
+ return null;
86
+ // Data no passado significa "pode agora". Devolver `null` diz exatamente isso
87
+ // sem obrigar quem chama a comparar de novo.
88
+ if (asDate.getTime() <= now.getTime())
89
+ return null;
90
+ const cap = new Date(now.getTime() + 86_400_000);
91
+ return asDate.getTime() > cap.getTime() ? cap : asDate;
92
+ }
93
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/fiscal/transport/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;AAiHH,0CAwBC;AA9FD;;;;;;;;GAQG;AACH,MAAa,oBAAqB,SAAQ,KAAK;IAElC;IAEA;IAEA;IALX,YACW,UAAqC;IAC9C,8FAA8F;IACrF,IAAY;IACrB,kEAAkE;IACzD,aAA0B,IAAI;QAEvC,KAAK,CAAC,cAAc,UAAU,KAAK,IAAI,GAAG,CAAC,CAAC;QANnC,eAAU,GAAV,UAAU,CAA2B;QAErC,SAAI,GAAJ,IAAI,CAAQ;QAEZ,eAAU,GAAV,UAAU,CAAoB;QAGvC,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAXD,oDAWC;AAyCD;;;;;;;;GAQG;AACH,SAAgB,eAAe,CAC7B,GAA8B,EAC9B,MAAY,IAAI,IAAI,EAAE;IAEtB,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAEhC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAChC,wEAAwE;QACxE,2EAA2E;QAC3E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACzC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,8EAA8E;IAC9E,6CAA6C;IAC7C,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AACzD,CAAC"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ /**
3
+ * CPF e CNPJ — validação por dígito verificador.
4
+ *
5
+ * Contar dígitos não valida documento. `00000000000` tem onze dígitos e não é
6
+ * CPF de ninguém; `11222333000182` tem catorze e não fecha o DV. Num importador
7
+ * de carteira, aceitar por comprimento significa que um erro de digitação vira
8
+ * cliente, e o erro só aparece na primeira cobrança devolvida — quando já há
9
+ * honorário, obrigação e um e-mail enviado ao titular errado.
10
+ *
11
+ * Os dois algoritmos são o módulo 11 oficial da Receita. Ficam no CORE, e não na
12
+ * vertical contábil, pela mesma razão que `client.document_number` está no core:
13
+ * CPF e CNPJ identificam pessoa no Brasil inteiro, não no segmento contábil.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.onlyDigits = void 0;
17
+ exports.isValidCpf = isValidCpf;
18
+ exports.isValidCnpj = isValidCnpj;
19
+ exports.classifyDocument = classifyDocument;
20
+ /** Remove tudo que não é dígito. Aceita máscara, ponto, barra e traço. */
21
+ const onlyDigits = (v) => v.replace(/\D/g, '');
22
+ exports.onlyDigits = onlyDigits;
23
+ function dv(base, pesoInicial) {
24
+ let soma = 0;
25
+ let peso = pesoInicial;
26
+ for (const c of base) {
27
+ soma += Number(c) * peso;
28
+ peso--;
29
+ if (peso < 2)
30
+ peso = 9;
31
+ }
32
+ const resto = soma % 11;
33
+ return resto < 2 ? 0 : 11 - resto;
34
+ }
35
+ function isValidCpf(value) {
36
+ const d = (0, exports.onlyDigits)(value);
37
+ if (d.length !== 11)
38
+ return false;
39
+ // Repetidos passam no módulo 11 por construção — são recusados por regra.
40
+ if (/^(\d)\1{10}$/.test(d))
41
+ return false;
42
+ const base = d.slice(0, 9);
43
+ let soma = 0;
44
+ for (let i = 0; i < 9; i++)
45
+ soma += Number(base[i]) * (10 - i);
46
+ let r = (soma * 10) % 11;
47
+ if (r === 10)
48
+ r = 0;
49
+ if (r !== Number(d[9]))
50
+ return false;
51
+ soma = 0;
52
+ for (let i = 0; i < 10; i++)
53
+ soma += Number(d[i]) * (11 - i);
54
+ r = (soma * 10) % 11;
55
+ if (r === 10)
56
+ r = 0;
57
+ return r === Number(d[10]);
58
+ }
59
+ function isValidCnpj(value) {
60
+ const d = (0, exports.onlyDigits)(value);
61
+ if (d.length !== 14)
62
+ return false;
63
+ if (/^(\d)\1{13}$/.test(d))
64
+ return false;
65
+ const d1 = dv(d.slice(0, 12), 5);
66
+ if (d1 !== Number(d[12]))
67
+ return false;
68
+ const d2 = dv(d.slice(0, 13), 6);
69
+ return d2 === Number(d[13]);
70
+ }
71
+ /**
72
+ * Classifica pelo próprio documento.
73
+ *
74
+ * O comprimento já diz se a linha é pessoa física ou jurídica; uma coluna
75
+ * `tipo` que discorde disso é conflito de dado, não preferência do usuário.
76
+ */
77
+ function classifyDocument(value) {
78
+ const d = (0, exports.onlyDigits)(value);
79
+ if (d.length === 11)
80
+ return isValidCpf(d) ? 'cpf' : 'invalid';
81
+ if (d.length === 14)
82
+ return isValidCnpj(d) ? 'cnpj' : 'invalid';
83
+ return 'invalid';
84
+ }
85
+ //# sourceMappingURL=br-documents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"br-documents.js","sourceRoot":"","sources":["../../../src/import/br-documents.ts"],"names":[],"mappings":"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"}