@br-validators/core 1.3.0 → 1.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 (225) hide show
  1. package/README.md +44 -15
  2. package/dist/aeroportos.d.ts +46 -0
  3. package/dist/aeroportos.js +4316 -0
  4. package/dist/aeroportos.js.map +1 -0
  5. package/dist/batch.d.ts +3 -3
  6. package/dist/batch.js +24 -22
  7. package/dist/boleto.d.ts +2 -2
  8. package/dist/boleto.js +5 -5
  9. package/dist/brcode.d.ts +2 -2
  10. package/dist/brcode.js +7 -7
  11. package/dist/cartao-credito.d.ts +2 -2
  12. package/dist/cartao-credito.js +3 -3
  13. package/dist/cep.d.ts +2 -2
  14. package/dist/cep.js +3 -3
  15. package/dist/cest.d.ts +44 -0
  16. package/dist/cest.js +8253 -0
  17. package/dist/cest.js.map +1 -0
  18. package/dist/{chunk-NT3TNF3R.js → chunk-24JBIV3A.js} +3 -3
  19. package/dist/{chunk-NT3TNF3R.js.map → chunk-24JBIV3A.js.map} +1 -1
  20. package/dist/{chunk-XHDRWM46.js → chunk-26MSDS43.js} +3 -3
  21. package/dist/{chunk-XHDRWM46.js.map → chunk-26MSDS43.js.map} +1 -1
  22. package/dist/{chunk-3LMDBXU6.js → chunk-2JSOXG2M.js} +3 -3
  23. package/dist/{chunk-3LMDBXU6.js.map → chunk-2JSOXG2M.js.map} +1 -1
  24. package/dist/{chunk-AU6TW3GH.js → chunk-3DLNIUBY.js} +5 -5
  25. package/dist/{chunk-AU6TW3GH.js.map → chunk-3DLNIUBY.js.map} +1 -1
  26. package/dist/{chunk-OOUEURR7.js → chunk-3JAYOBSG.js} +3 -3
  27. package/dist/{chunk-OOUEURR7.js.map → chunk-3JAYOBSG.js.map} +1 -1
  28. package/dist/chunk-3WXLMV7Q.js +3 -0
  29. package/dist/chunk-3WXLMV7Q.js.map +1 -0
  30. package/dist/chunk-475HS4CJ.js +30 -0
  31. package/dist/chunk-475HS4CJ.js.map +1 -0
  32. package/dist/{chunk-NUQSMT4Y.js → chunk-4NFEM2SU.js} +9 -3
  33. package/dist/chunk-4NFEM2SU.js.map +1 -0
  34. package/dist/chunk-6EF7GQRS.js +30 -0
  35. package/dist/chunk-6EF7GQRS.js.map +1 -0
  36. package/dist/{chunk-ZTDLGGYE.js → chunk-6VNCWSHA.js} +34 -17
  37. package/dist/chunk-6VNCWSHA.js.map +1 -0
  38. package/dist/{chunk-MZDCVTN6.js → chunk-72EZ2VUO.js} +4 -4
  39. package/dist/{chunk-MZDCVTN6.js.map → chunk-72EZ2VUO.js.map} +1 -1
  40. package/dist/chunk-7JCJGLA3.js +30 -0
  41. package/dist/chunk-7JCJGLA3.js.map +1 -0
  42. package/dist/{chunk-VKG7UEN5.js → chunk-A5UHVGRB.js} +3 -3
  43. package/dist/{chunk-VKG7UEN5.js.map → chunk-A5UHVGRB.js.map} +1 -1
  44. package/dist/{chunk-EN7PVDYB.js → chunk-C7WXL7UR.js} +4 -4
  45. package/dist/{chunk-EN7PVDYB.js.map → chunk-C7WXL7UR.js.map} +1 -1
  46. package/dist/{chunk-DYX5XSJ6.js → chunk-CGN5ST5W.js} +5 -3
  47. package/dist/{chunk-DYX5XSJ6.js.map → chunk-CGN5ST5W.js.map} +1 -1
  48. package/dist/{chunk-P6TOL5VY.js → chunk-CJKVA7VS.js} +3 -3
  49. package/dist/{chunk-P6TOL5VY.js.map → chunk-CJKVA7VS.js.map} +1 -1
  50. package/dist/{chunk-KGCLQ7QX.js → chunk-CNJ4DIYS.js} +3 -3
  51. package/dist/{chunk-KGCLQ7QX.js.map → chunk-CNJ4DIYS.js.map} +1 -1
  52. package/dist/{chunk-N6RQICAP.js → chunk-CYBWPBXJ.js} +4 -4
  53. package/dist/{chunk-N6RQICAP.js.map → chunk-CYBWPBXJ.js.map} +1 -1
  54. package/dist/{chunk-SDEJD2J7.js → chunk-DLXE3RNI.js} +3 -3
  55. package/dist/{chunk-SDEJD2J7.js.map → chunk-DLXE3RNI.js.map} +1 -1
  56. package/dist/chunk-DVA6QQUF.js +22 -0
  57. package/dist/chunk-DVA6QQUF.js.map +1 -0
  58. package/dist/{chunk-54UWHK5L.js → chunk-EGDZGSHA.js} +3 -3
  59. package/dist/{chunk-54UWHK5L.js.map → chunk-EGDZGSHA.js.map} +1 -1
  60. package/dist/chunk-EKOSTVIA.js +30 -0
  61. package/dist/chunk-EKOSTVIA.js.map +1 -0
  62. package/dist/{chunk-O3T7PUBI.js → chunk-F5OHOWZU.js} +3 -3
  63. package/dist/{chunk-O3T7PUBI.js.map → chunk-F5OHOWZU.js.map} +1 -1
  64. package/dist/chunk-F7IEPT22.js +30 -0
  65. package/dist/chunk-F7IEPT22.js.map +1 -0
  66. package/dist/{chunk-RMTHCPIV.js → chunk-FLZGOGER.js} +4 -4
  67. package/dist/{chunk-RMTHCPIV.js.map → chunk-FLZGOGER.js.map} +1 -1
  68. package/dist/chunk-FUYDR7JI.js +44 -0
  69. package/dist/chunk-FUYDR7JI.js.map +1 -0
  70. package/dist/chunk-G557DGIX.js +398 -0
  71. package/dist/chunk-G557DGIX.js.map +1 -0
  72. package/dist/{chunk-ITHT54NC.js → chunk-HZWERBZB.js} +37 -17
  73. package/dist/chunk-HZWERBZB.js.map +1 -0
  74. package/dist/{chunk-AO6UTQ4A.js → chunk-IJ2DAVSD.js} +3 -3
  75. package/dist/{chunk-AO6UTQ4A.js.map → chunk-IJ2DAVSD.js.map} +1 -1
  76. package/dist/chunk-ILKF7HP7.js +31 -0
  77. package/dist/chunk-ILKF7HP7.js.map +1 -0
  78. package/dist/{chunk-MAM4U3UR.js → chunk-IRERFIL5.js} +3 -3
  79. package/dist/{chunk-MAM4U3UR.js.map → chunk-IRERFIL5.js.map} +1 -1
  80. package/dist/{chunk-CSRBRKXY.js → chunk-ISMIJ5DH.js} +3 -3
  81. package/dist/{chunk-CSRBRKXY.js.map → chunk-ISMIJ5DH.js.map} +1 -1
  82. package/dist/{chunk-L7PF4KD6.js → chunk-LBAWZ4EV.js} +3 -3
  83. package/dist/{chunk-L7PF4KD6.js.map → chunk-LBAWZ4EV.js.map} +1 -1
  84. package/dist/{chunk-QK27VDVB.js → chunk-LCY6USO2.js} +35 -18
  85. package/dist/chunk-LCY6USO2.js.map +1 -0
  86. package/dist/{chunk-XWHGXSQV.js → chunk-LPGSPM53.js} +3 -3
  87. package/dist/{chunk-XWHGXSQV.js.map → chunk-LPGSPM53.js.map} +1 -1
  88. package/dist/{chunk-5EJAENH5.js → chunk-MDFK6L72.js} +3 -3
  89. package/dist/{chunk-5EJAENH5.js.map → chunk-MDFK6L72.js.map} +1 -1
  90. package/dist/chunk-NQIDHQ6U.js +3 -0
  91. package/dist/chunk-NQIDHQ6U.js.map +1 -0
  92. package/dist/chunk-NTVB7R3A.js +30 -0
  93. package/dist/chunk-NTVB7R3A.js.map +1 -0
  94. package/dist/chunk-O4AO4YWC.js +30 -0
  95. package/dist/chunk-O4AO4YWC.js.map +1 -0
  96. package/dist/{chunk-S4WWYHQM.js → chunk-OH4CXHFH.js} +13 -3
  97. package/dist/chunk-OH4CXHFH.js.map +1 -0
  98. package/dist/{chunk-B6A7VF4R.js → chunk-OWD47AWI.js} +3 -3
  99. package/dist/{chunk-B6A7VF4R.js.map → chunk-OWD47AWI.js.map} +1 -1
  100. package/dist/{chunk-QB7SZS2C.js → chunk-OY53JDPO.js} +40 -19
  101. package/dist/chunk-OY53JDPO.js.map +1 -0
  102. package/dist/{chunk-665E36SC.js → chunk-P3EJRH4P.js} +4 -4
  103. package/dist/{chunk-665E36SC.js.map → chunk-P3EJRH4P.js.map} +1 -1
  104. package/dist/{chunk-GWAYWBHN.js → chunk-PTZR6C7Y.js} +14 -6
  105. package/dist/chunk-PTZR6C7Y.js.map +1 -0
  106. package/dist/{chunk-E2EFGMWA.js → chunk-QSSKPIG5.js} +3 -3
  107. package/dist/{chunk-E2EFGMWA.js.map → chunk-QSSKPIG5.js.map} +1 -1
  108. package/dist/{chunk-FBARVLLP.js → chunk-RSJK46ZE.js} +3 -3
  109. package/dist/{chunk-FBARVLLP.js.map → chunk-RSJK46ZE.js.map} +1 -1
  110. package/dist/chunk-RWO34ORS.js +33 -0
  111. package/dist/chunk-RWO34ORS.js.map +1 -0
  112. package/dist/{chunk-JSNXKBZA.js → chunk-SH6K4PUU.js} +3 -3
  113. package/dist/{chunk-JSNXKBZA.js.map → chunk-SH6K4PUU.js.map} +1 -1
  114. package/dist/{chunk-EQV33L7H.js → chunk-T5NFIPTU.js} +3 -3
  115. package/dist/{chunk-EQV33L7H.js.map → chunk-T5NFIPTU.js.map} +1 -1
  116. package/dist/{chunk-CDNOUZEI.js → chunk-TAOFFAG3.js} +3 -3
  117. package/dist/{chunk-CDNOUZEI.js.map → chunk-TAOFFAG3.js.map} +1 -1
  118. package/dist/{chunk-YD5MPZWY.js → chunk-TTDHGQEC.js} +3 -3
  119. package/dist/{chunk-YD5MPZWY.js.map → chunk-TTDHGQEC.js.map} +1 -1
  120. package/dist/{chunk-JLCQ7MGC.js → chunk-ULNZHOMA.js} +3 -3
  121. package/dist/{chunk-JLCQ7MGC.js.map → chunk-ULNZHOMA.js.map} +1 -1
  122. package/dist/{chunk-KLONQL76.js → chunk-UTSZKJAL.js} +7 -7
  123. package/dist/{chunk-KLONQL76.js.map → chunk-UTSZKJAL.js.map} +1 -1
  124. package/dist/{chunk-ANWQBKGN.js → chunk-VDCITFZG.js} +3 -3
  125. package/dist/{chunk-ANWQBKGN.js.map → chunk-VDCITFZG.js.map} +1 -1
  126. package/dist/chunk-VE2XZSKP.js +150 -0
  127. package/dist/chunk-VE2XZSKP.js.map +1 -0
  128. package/dist/{chunk-NHFSEWO2.js → chunk-VJT3UGN2.js} +34 -19
  129. package/dist/chunk-VJT3UGN2.js.map +1 -0
  130. package/dist/{chunk-SKDMG3FK.js → chunk-W2K4RQ3M.js} +33 -33
  131. package/dist/{chunk-SKDMG3FK.js.map → chunk-W2K4RQ3M.js.map} +1 -1
  132. package/dist/{chunk-VSW3NBJQ.js → chunk-WAYYRZ2L.js} +3 -3
  133. package/dist/{chunk-VSW3NBJQ.js.map → chunk-WAYYRZ2L.js.map} +1 -1
  134. package/dist/{chunk-JKDU7QYP.js → chunk-Z7KH65RZ.js} +3 -3
  135. package/dist/{chunk-JKDU7QYP.js.map → chunk-Z7KH65RZ.js.map} +1 -1
  136. package/dist/chunk-ZWAYSR5K.js +30 -0
  137. package/dist/chunk-ZWAYSR5K.js.map +1 -0
  138. package/dist/cnh.d.ts +2 -2
  139. package/dist/cnh.js +3 -3
  140. package/dist/cnpj.d.ts +2 -2
  141. package/dist/cnpj.js +4 -4
  142. package/dist/compare.d.ts +3 -3
  143. package/dist/compare.js +26 -24
  144. package/dist/cpf.d.ts +2 -2
  145. package/dist/cpf.js +4 -4
  146. package/dist/data-catalog.js +33 -11
  147. package/dist/data-catalog.js.map +1 -1
  148. package/dist/detect.d.ts +2 -2
  149. package/dist/detect.js +22 -21
  150. package/dist/diff.d.ts +3 -3
  151. package/dist/diff.js +26 -24
  152. package/dist/generate.d.ts +1 -1
  153. package/dist/generate.js +35 -35
  154. package/dist/incoterms.d.ts +36 -0
  155. package/dist/incoterms.js +87 -0
  156. package/dist/incoterms.js.map +1 -0
  157. package/dist/{index-BEJFgDXj.d.ts → index-CJ5ACErT.d.ts} +2 -2
  158. package/dist/index.d.ts +8 -6
  159. package/dist/index.js +62 -57
  160. package/dist/index.js.map +1 -1
  161. package/dist/{inscricao-estadual-produtor-rural-BXFVQscj.d.ts → inscricao-estadual-produtor-rural-BNAyLQPY.d.ts} +1 -1
  162. package/dist/inscricao-estadual-produtor-rural.d.ts +2 -2
  163. package/dist/inscricao-estadual-produtor-rural.js +3 -3
  164. package/dist/inscricao-estadual.d.ts +3 -3
  165. package/dist/inscricao-estadual.js +4 -4
  166. package/dist/mask.d.ts +3 -3
  167. package/dist/mask.js +36 -33
  168. package/dist/moedas.d.ts +42 -0
  169. package/dist/moedas.js +977 -0
  170. package/dist/moedas.js.map +1 -0
  171. package/dist/natureza-juridica.d.ts +37 -0
  172. package/dist/natureza-juridica.js +398 -0
  173. package/dist/natureza-juridica.js.map +1 -0
  174. package/dist/nbs.d.ts +40 -0
  175. package/dist/nbs.js +3728 -0
  176. package/dist/nbs.js.map +1 -0
  177. package/dist/nfe-chave.d.ts +2 -2
  178. package/dist/nfe-chave.js +3 -3
  179. package/dist/paises-bacen.d.ts +35 -0
  180. package/dist/paises-bacen.js +1044 -0
  181. package/dist/paises-bacen.js.map +1 -0
  182. package/dist/pis-pasep.d.ts +2 -2
  183. package/dist/pis-pasep.js +3 -3
  184. package/dist/{pix-B4habHLG.d.ts → pix-QsM0lMas.d.ts} +1 -1
  185. package/dist/pix.d.ts +2 -2
  186. package/dist/pix.js +7 -7
  187. package/dist/placa.d.ts +2 -2
  188. package/dist/placa.js +3 -3
  189. package/dist/pncp-reference.d.ts +56 -0
  190. package/dist/pncp-reference.js +1560 -0
  191. package/dist/pncp-reference.js.map +1 -0
  192. package/dist/portos.d.ts +48 -0
  193. package/dist/portos.js +12094 -0
  194. package/dist/portos.js.map +1 -0
  195. package/dist/processo-judicial.d.ts +71 -0
  196. package/dist/processo-judicial.js +6 -0
  197. package/dist/processo-judicial.js.map +1 -0
  198. package/dist/renavam.d.ts +2 -2
  199. package/dist/renavam.js +3 -3
  200. package/dist/rg.d.ts +69 -0
  201. package/dist/rg.js +5 -0
  202. package/dist/rg.js.map +1 -0
  203. package/dist/sanitize.d.ts +2 -2
  204. package/dist/sanitize.js +21 -19
  205. package/dist/telefone.d.ts +2 -2
  206. package/dist/telefone.js +3 -3
  207. package/dist/titulo-eleitor.d.ts +2 -2
  208. package/dist/titulo-eleitor.js +3 -3
  209. package/dist/transparencia-snapshots.d.ts +61 -0
  210. package/dist/transparencia-snapshots.js +119 -0
  211. package/dist/transparencia-snapshots.js.map +1 -0
  212. package/dist/tse-municipios.d.ts +39 -0
  213. package/dist/tse-municipios.js +33469 -0
  214. package/dist/tse-municipios.js.map +1 -0
  215. package/dist/{types-MXifBcV5.d.ts → types-CQvCmvGu.d.ts} +2 -2
  216. package/dist/{validation-result-BaI2Xder.d.ts → validation-result-hfVg2-Mc.d.ts} +23 -3
  217. package/package.json +66 -1
  218. package/dist/chunk-GWAYWBHN.js.map +0 -1
  219. package/dist/chunk-ITHT54NC.js.map +0 -1
  220. package/dist/chunk-NHFSEWO2.js.map +0 -1
  221. package/dist/chunk-NUQSMT4Y.js.map +0 -1
  222. package/dist/chunk-QB7SZS2C.js.map +0 -1
  223. package/dist/chunk-QK27VDVB.js.map +0 -1
  224. package/dist/chunk-S4WWYHQM.js.map +0 -1
  225. package/dist/chunk-ZTDLGGYE.js.map +0 -1
package/README.md CHANGED
@@ -25,11 +25,11 @@ Every Brazilian SaaS eventually reinvents CPF validation — usually wrong.
25
25
  (Receita Federal, Bacen, CONTRAN, TSE, SEFAZ, FEBRABAN, Anatel) so you don't have to.
26
26
 
27
27
  - ✅ **CNPJ alfanumérico** — new RFB format (effective July 2026), ready now
28
- - ✅ **18+ document types** — CPF, CNPJ, CEP, NF-e chave, BR Code PIX, boleto (cobrança + arrecadação), CNH, RENAVAM, placa, PIS/PASEP, PIX key, cartão de crédito, IE (27 UFs), IE produtor rural, título de eleitor, telefone, + platform APIs above
28
+ - ✅ **19+ document types** — CPF, CNPJ, CEP, NF-e chave, processo judicial CNJ, BR Code PIX, boleto (cobrança + arrecadação), CNH, RENAVAM, placa, PIS/PASEP, PIX key, cartão de crédito, IE (27 UFs), IE produtor rural, título de eleitor, telefone, + platform APIs above
29
29
  - ✅ **Zero runtime dependencies** — pure TypeScript logic, no HTTP calls
30
30
  - ✅ **Never throws** — every function returns `{ ok: true, value } | { ok: false, message, code }`
31
31
  - ✅ **Tree-shakeable** — subpath imports per document type
32
- - ✅ **Reference data** — IBGE, Bacen banks, DDD lookup, national holidays, CNAE, CFOP, NCM, CBO — embedded offline with weekly freshness ([DATA-FRESHNESS.md](../../docs/DATA-FRESHNESS.md))
32
+ - ✅ **Reference data** — IBGE, Bacen banks, DDD lookup, national holidays, CNAE, CFOP, NCM, CBO, natureza jurídica, NBS, CEST, moedas, países Bacen, Incoterms, portos, aeroportos — embedded offline with weekly freshness ([DATA-FRESHNESS.md](../../docs/DATA-FRESHNESS.md))
33
33
  - ✅ **ESM only**, Node ≥ 18, works in browser, Bun, Deno
34
34
 
35
35
  ---
@@ -189,6 +189,8 @@ diff('12345678909', '12345678901', 'cpf');
189
189
 
190
190
  Per-type rules and official sources: [docs/OFFICIAL-SOURCES.md](https://github.com/AlexandreZanata/br-validators/blob/main/docs/OFFICIAL-SOURCES.md) · API contract: [docs/LIBRARY-API.md](https://github.com/AlexandreZanata/br-validators/blob/main/docs/LIBRARY-API.md)
191
191
 
192
+ > **Backend / form integration:** `format*` and `mask()` validate first — they **never** left-pad partial input (`"0"` will not become `000.000.000-00`). Do not combine `padStart` with display formatting in `onChange`; pad to full width only at submit if your API requires it. Details: [LIBRARY-API.md — display vs backend normalization](https://github.com/AlexandreZanata/br-validators/blob/main/docs/LIBRARY-API.md#consumer-warning--display-formatting-vs-backend-normalization).
193
+
192
194
  ### Form handler (React / Next.js)
193
195
 
194
196
  ```typescript
@@ -239,6 +241,8 @@ br-validators generate inscricao-estadual-produtor-rural --masked --seed 42
239
241
  | CNH | `@br-validators/core/cnh` | `br-validators cnh …` | `/cnh` |
240
242
  | RENAVAM | `@br-validators/core/renavam` | `br-validators renavam …` | `/renavam` |
241
243
  | Título de Eleitor | `@br-validators/core/titulo-eleitor` | `br-validators titulo-eleitor …` | `/titulo-eleitor` |
244
+ | Processo judicial CNJ | `@br-validators/core/processo-judicial` | `br-validators processo-judicial …` | `/processo-judicial` |
245
+ | RG (per-UF identity card) | `@br-validators/core/rg` | `br-validators rg … --uf SP` | `/rg` |
242
246
  | Placa (Mercosul + legada) | `@br-validators/core/placa` | `br-validators placa …` | `/placa` |
243
247
  | PIS / PASEP / NIS | `@br-validators/core/pis-pasep` | `br-validators pis-pasep …` | `/pis` |
244
248
  | PIX key | `@br-validators/core/pix` | `br-validators pix …` | `/pix` |
@@ -262,18 +266,27 @@ br-validators generate inscricao-estadual-produtor-rural --masked --seed 42
262
266
 
263
267
  Embedded JSON from official `.gov.br` sources — **no runtime HTTP**. Each module exports `*_DATA_VERSION` with capture date, row counts, and source URLs. Aggregated via `@br-validators/core/data-catalog`.
264
268
 
265
- | Dataset | Subpath | Key APIs | Official source |
266
- |---------|---------|----------|-----------------|
267
- | IBGE states + municipalities | `@br-validators/core/ibge` | `getEstados`, `getMunicipios`, `getMunicipioPorCodigo` | [IBGE localidades API](https://servicodados.ibge.gov.br/api/docs/localidades) |
268
- | Bacen STR banks (COMPE / ISPB) | `@br-validators/core/bancos` | `getBancos`, `getBancoPorCodigo`, `getBancoPorIspb` | [Bacen Participantes STR](https://www.bcb.gov.br/content/estabilidadefinanceira/str1/ParticipantesSTR.csv) |
269
- | DDD geographic lookup | `@br-validators/core/telefone` | `getDddInfo` (extends telefone validator) | [Anatel DDD panel](https://informacoes.anatel.gov.br/paineis/areas-tarifarias/codigos-nacionais) |
270
- | National holidays | `@br-validators/core/feriados` | `isFeriadoNacional`, `getFeriadosNacionais`, `getProximoDiaUtil` | [Lei 662/1949](https://www.planalto.gov.br/ccivil_03/leis/l0662.htm) + annual Portaria MGI |
271
- | CNAE 2.3 subclasses | `@br-validators/core/cnaes` | `getCnaePorCodigo`, `searchCnaes` | [IBGE CNAE API v2](https://servicodados.ibge.gov.br/api/docs/cnae) |
272
- | CFOP fiscal operations | `@br-validators/core/cfop` | `getCfopPorCodigo`, `searchCfop` | [CONFAZ CFOP SINIEF](https://www.confaz.fazenda.gov.br/legislacao/ajustes/sinief/cfop_cvsn_70_vigente) |
273
- | NCM Mercosur nomenclature | `@br-validators/core/ncm` | `getNcmPorCodigo`, `searchNcm` | [Siscomex NCM JSON](https://portalunico.siscomex.gov.br/classif/api/publico/nomenclatura/download/json) |
274
- | CBO 2002 occupations | `@br-validators/core/cbo` | `getCboPorCodigo`, `searchCbo` | [MTE CBO downloads](https://www.gov.br/trabalho-e-emprego/pt-br/assuntos/cbo/servicos/downloads) |
275
- | CEP prefix lookup | `@br-validators/core/cep` | `getCepFaixaInfo`, `getCepFaixas` | [IBGE CNEFE 2022](https://www.ibge.gov.br/estatisticas/sociais/populacao/38734-cadastro-nacional-de-enderecos-para-fins-estatisticos.html) |
276
- | Data transparency catalog | `@br-validators/core/data-catalog` | `getDataCatalog`, `getDatasetMetadata` | Aggregates all `metadata.json` entries |
269
+ | Dataset | Subpath | CLI | Playground | Key APIs | Official source |
270
+ |---------|---------|-----|------------|----------|-----------------|
271
+ | IBGE states + municipalities | `@br-validators/core/ibge` | `ibge lookup` · `list` | `/data/ibge` | `getEstados`, `getMunicipios`, `getMunicipioPorCodigo` | [IBGE localidades API](https://servicodados.ibge.gov.br/api/docs/localidades) |
272
+ | Bacen STR banks (COMPE / ISPB) | `@br-validators/core/bancos` | `bancos lookup` · `list` | `/data/bancos` | `getBancos`, `getBancoPorCodigo`, `getBancoPorIspb` | [Bacen Participantes STR](https://www.bcb.gov.br/content/estabilidadefinanceira/str1/ParticipantesSTR.csv) |
273
+ | ANAC public aerodromos | `@br-validators/core/aeroportos` | `aeroportos lookup` | `/data/logistics` | `getAeroportos`, `getAeroportoPorIata`, `getAeroportoPorIcao`, `getAeroportosPorMunicipio` | [ANAC aeródromos públicos CSV](https://www.anac.gov.br/acesso-a-informacao/dados-abertos/areas-de-atuacao/aerodromos/lista-de-aerodromos-publicos/aerodromospublicosv1.csv/@@download/file/aerodromospublicosv1.csv) |
274
+ | ANTAQ port installations | `@br-validators/core/portos` | `portos lookup` | `/data/logistics` | `getPortoPorCodigo`, `searchPortos`, `getPortosPorMunicipio` | [ANTAQ instalações portuárias zip](https://www.gov.br/antaq/pt-br/central-de-conteudos/Instalaesporturias06052025.zip) |
275
+ | TSE IBGE municipality codes | `@br-validators/core/tse-municipios` | `tse-municipios lookup` | `/data/ibge` (cross-ref) | `getMapeamentoTseIbge`, `getMunicipioIbgePorCodigoTse`, `getCodigosTsePorMunicipio` | [TSE municipio_tse_ibge.zip](https://cdn.tse.jus.br/estatistica/sead/odsele/municipio_tse_ibge/municipio_tse_ibge.zip) |
276
+ | DDD geographic lookup | `@br-validators/core/telefone` | `ddd lookup` | — | `getDddInfo` (extends telefone validator) | [Anatel DDD panel](https://informacoes.anatel.gov.br/paineis/areas-tarifarias/codigos-nacionais) |
277
+ | National holidays | `@br-validators/core/feriados` | `feriados list --year` | `/data/calendar` | `isFeriadoNacional`, `getFeriadosNacionais`, `getProximoDiaUtil` | [Lei 662/1949](https://www.planalto.gov.br/ccivil_03/leis/l0662.htm) + annual Portaria MGI |
278
+ | CNAE 2.3 subclasses | `@br-validators/core/cnaes` | `cnae lookup` · `search` | `/data/fiscal` | `getCnaePorCodigo`, `searchCnaes` | [IBGE CNAE API v2](https://servicodados.ibge.gov.br/api/docs/cnae) |
279
+ | CFOP fiscal operations | `@br-validators/core/cfop` | `cfop lookup` · `search` | `/data/fiscal` | `getCfopPorCodigo`, `searchCfop` | [CONFAZ CFOP SINIEF](https://www.confaz.fazenda.gov.br/legislacao/ajustes/sinief/cfop_cvsn_70_vigente) |
280
+ | NCM Mercosur nomenclature | `@br-validators/core/ncm` | `ncm lookup` · `search` | `/data/fiscal` | `getNcmPorCodigo`, `searchNcm` | [Siscomex NCM JSON](https://portalunico.siscomex.gov.br/classif/api/publico/nomenclatura/download/json) |
281
+ | Natureza jurídica (CNPJ) | `@br-validators/core/natureza-juridica` | `natureza-juridica lookup` | `/data/fiscal` | `getNaturezaJuridicaPorCodigo` | [RFB Naturezas.zip](https://dadosabertos.rfb.gov.br/CNPJ/dados_abertos_cnpj/) |
282
+ | NBS (NFSe Nacional) | `@br-validators/core/nbs` | `nbs lookup` | `/data/fiscal` | `getNbsPorCodigo`, `searchNbs` | [NFSe Anexo B NBS2 xlsx](https://www.gov.br/nfse/pt-br/biblioteca/documentacao-tecnica/documentacao-atual/anexo_b-nbs2-lista_servico_nacional-snnfse.xlsx) |
283
+ | CEST (substituição tributária) | `@br-validators/core/cest` | `cest lookup` | `/data/fiscal` | `getCestPorCodigo`, `getCestPorNcm`, `searchCest` | [CONFAZ ICMS 142/2018](https://www.confaz.fazenda.gov.br/legislacao/convenios/2018/CV142_18) |
284
+ | ISO 4217 + Bacen PTAX moedas | `@br-validators/core/moedas` | `moedas lookup` | `/data/trade` | `getMoedaPorCodigo`, `searchMoedas` | [Bacen PTAX Moedas API](https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/Moedas) |
285
+ | NF-e Bacen country codes | `@br-validators/core/paises-bacen` | `paises-bacen lookup` | `/data/trade` | `getPaisPorCodigoBacen`, `getPaisesBacen` | [NF-e country table](http://www.nfe.fazenda.gov.br/portal/exibirArquivo.aspx?conteudo=FOXZNFX/p50=) |
286
+ | ICC Incoterms 2020 | `@br-validators/core/incoterms` | `incoterms lookup` | `/data/trade` | `getIncotermPorCodigo`, `getIncoterms` | [ICC Incoterms rules](https://iccwbo.org/resources-for-business/incoterms-rules/) |
287
+ | CBO 2002 occupations | `@br-validators/core/cbo` | `cbo lookup` · `search` | `/data/fiscal` | `getCboPorCodigo`, `searchCbo` | [MTE CBO downloads](https://www.gov.br/trabalho-e-emprego/pt-br/assuntos/cbo/servicos/downloads) |
288
+ | CEP prefix lookup | `@br-validators/core/cep` | `cep faixa` | — | `getCepFaixaInfo`, `getCepFaixas` | [IBGE CNEFE 2022](https://www.ibge.gov.br/estatisticas/sociais/populacao/38734-cadastro-nacional-de-enderecos-para-fins-estatisticos.html) |
289
+ | Data transparency catalog | `@br-validators/core/data-catalog` | — | `/data/catalog` | `getDataCatalog`, `getDatasetMetadata` | Aggregates all `metadata.json` entries |
277
290
 
278
291
  ```typescript
279
292
  import { getMunicipioPorCodigo } from '@br-validators/core/ibge';
@@ -284,6 +297,14 @@ import { getCnaePorCodigo } from '@br-validators/core/cnaes';
284
297
  import { getCfopPorCodigo } from '@br-validators/core/cfop';
285
298
  import { getNcmPorCodigo } from '@br-validators/core/ncm';
286
299
  import { getCboPorCodigo } from '@br-validators/core/cbo';
300
+ import { getNaturezaJuridicaPorCodigo } from '@br-validators/core/natureza-juridica';
301
+ import { getNbsPorCodigo } from '@br-validators/core/nbs';
302
+ import { getCestPorCodigo } from '@br-validators/core/cest';
303
+ import { getMoedaPorCodigo } from '@br-validators/core/moedas';
304
+ import { getPaisPorCodigoBacen } from '@br-validators/core/paises-bacen';
305
+ import { getIncotermPorCodigo } from '@br-validators/core/incoterms';
306
+ import { getAeroportoPorIata } from '@br-validators/core/aeroportos';
307
+ import { getPortoPorCodigo } from '@br-validators/core/portos';
287
308
  import { getDataCatalog } from '@br-validators/core/data-catalog';
288
309
 
289
310
  getMunicipioPorCodigo(3550308)?.nome; // São Paulo
@@ -294,7 +315,15 @@ getCnaePorCodigo('6201501'); // custom software development
294
315
  getCfopPorCodigo('1.102'); // accepts CONFAZ dotted format
295
316
  getNcmPorCodigo('01012100'); // purebred horses (8-digit leaf)
296
317
  getCboPorCodigo('212405'); // systems development analyst
297
- getDataCatalog().length; // 8 registered datasets
318
+ getNaturezaJuridicaPorCodigo('2062'); // Sociedade Empresária Limitada
319
+ getNbsPorCodigo('1.1502.50.00'); // TI systems integration (NFSe)
320
+ getCestPorCodigo('0302100'); // returnable beer bottle (ST)
321
+ getMoedaPorCodigo('BRL')?.nome; // Real Brasileiro
322
+ getPaisPorCodigoBacen('1058')?.nome; // Brasil (NF-e cPais)
323
+ getIncotermPorCodigo('FOB')?.nome; // Free On Board
324
+ getAeroportoPorIata('GRU')?.nome; // Guarulhos — SP
325
+ getPortoPorCodigo('BRSSZ')?.nome; // Santos organized port
326
+ getDataCatalog().length; // registered datasets
298
327
  ```
299
328
 
300
329
  Freshness table (auto-updated weekly): [docs/DATA-FRESHNESS.md](https://github.com/AlexandreZanata/br-validators/blob/main/docs/DATA-FRESHNESS.md) · Per-type official URLs: [docs/OFFICIAL-SOURCES.md](https://github.com/AlexandreZanata/br-validators/blob/main/docs/OFFICIAL-SOURCES.md)
@@ -0,0 +1,46 @@
1
+ import { b as DatasetChanges, c as DatasetVerification } from './types-CBIZxgfG.js';
2
+
3
+ interface Aeroporto {
4
+ iata: string | null;
5
+ icao: string;
6
+ nome: string;
7
+ uf: string;
8
+ municipioIbge: number | null;
9
+ municipioNome: string | null;
10
+ }
11
+ interface AeroportosDataVersion {
12
+ id: 'aeroportos';
13
+ nome: string;
14
+ fonte: string;
15
+ endpoints: string[];
16
+ capturadoEm: string;
17
+ atualizadoEm: string;
18
+ contagens: {
19
+ aeroportos: number;
20
+ comIata: number;
21
+ };
22
+ alteracoes: DatasetChanges;
23
+ verificacao: DatasetVerification;
24
+ documentacao: string;
25
+ }
26
+
27
+ /**
28
+ * Brazilian airports — offline embedded data from official ANAC source.
29
+ * @see docs/OFFICIAL-SOURCES.md#aeroportos
30
+ */
31
+
32
+ declare function getAeroportos(): readonly Aeroporto[];
33
+ declare function getAeroportoPorIata(code: string): Aeroporto | undefined;
34
+ declare function getAeroportoPorIcao(code: string): Aeroporto | undefined;
35
+ declare function getAeroportosPorMunicipio(ibgeCodigo: number): readonly Aeroporto[];
36
+
37
+ declare const ANAC_AERODROMOS_PUBLICOS_CSV_URL = "https://www.anac.gov.br/acesso-a-informacao/dados-abertos/areas-de-atuacao/aerodromos/lista-de-aerodromos-publicos/aerodromospublicosv1.csv/@@download/file/aerodromospublicosv1.csv";
38
+ declare const AEROPORTOS_GOLDEN_IATA_GRU = "GRU";
39
+ declare const AEROPORTOS_GOLDEN_IATA_GIG = "GIG";
40
+ declare const AEROPORTOS_GOLDEN_IATA_BSB = "BSB";
41
+ declare const AEROPORTOS_GOLDEN_IATA_SSA = "SSA";
42
+ declare const AEROPORTOS_GOLDEN_IATA_CGB = "CGB";
43
+
44
+ declare const AEROPORTOS_DATA_VERSION: AeroportosDataVersion;
45
+
46
+ export { AEROPORTOS_DATA_VERSION, AEROPORTOS_GOLDEN_IATA_BSB, AEROPORTOS_GOLDEN_IATA_CGB, AEROPORTOS_GOLDEN_IATA_GIG, AEROPORTOS_GOLDEN_IATA_GRU, AEROPORTOS_GOLDEN_IATA_SSA, ANAC_AERODROMOS_PUBLICOS_CSV_URL, type Aeroporto, type AeroportosDataVersion, getAeroportoPorIata, getAeroportoPorIcao, getAeroportos, getAeroportosPorMunicipio };