@br-validators/core 1.1.0 → 1.3.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 (112) hide show
  1. package/README.md +42 -3
  2. package/dist/bancos.js +1 -1
  3. package/dist/batch.js +18 -17
  4. package/dist/brcode.js +5 -5
  5. package/dist/cbo.d.ts +41 -0
  6. package/dist/cbo.js +10832 -0
  7. package/dist/cbo.js.map +1 -0
  8. package/dist/cep.d.ts +38 -1
  9. package/dist/cep.js +4 -3
  10. package/dist/cfop.d.ts +41 -0
  11. package/dist/cfop.js +2812 -0
  12. package/dist/cfop.js.map +1 -0
  13. package/dist/chunk-5CBVZIQC.js +30 -0
  14. package/dist/chunk-5CBVZIQC.js.map +1 -0
  15. package/dist/{chunk-LAEUXOF6.js → chunk-5EJAENH5.js} +3 -3
  16. package/dist/{chunk-LAEUXOF6.js.map → chunk-5EJAENH5.js.map} +1 -1
  17. package/dist/chunk-DQUMIETC.js +30 -0
  18. package/dist/chunk-DQUMIETC.js.map +1 -0
  19. package/dist/{chunk-JCWQDTZB.js → chunk-DYX5XSJ6.js} +3 -3
  20. package/dist/{chunk-JCWQDTZB.js.map → chunk-DYX5XSJ6.js.map} +1 -1
  21. package/dist/{chunk-TJCE4TVX.js → chunk-EN7PVDYB.js} +4 -4
  22. package/dist/{chunk-TJCE4TVX.js.map → chunk-EN7PVDYB.js.map} +1 -1
  23. package/dist/{chunk-VWVQWN2G.js → chunk-EQV33L7H.js} +3 -3
  24. package/dist/{chunk-VWVQWN2G.js.map → chunk-EQV33L7H.js.map} +1 -1
  25. package/dist/{chunk-5V6N4JWQ.js → chunk-GWAYWBHN.js} +5 -5
  26. package/dist/{chunk-5V6N4JWQ.js.map → chunk-GWAYWBHN.js.map} +1 -1
  27. package/dist/{chunk-ASQ2XIN2.js → chunk-ITHT54NC.js} +11 -11
  28. package/dist/{chunk-ASQ2XIN2.js.map → chunk-ITHT54NC.js.map} +1 -1
  29. package/dist/{chunk-IYOPXJLY.js → chunk-JSNXKBZA.js} +3 -3
  30. package/dist/{chunk-IYOPXJLY.js.map → chunk-JSNXKBZA.js.map} +1 -1
  31. package/dist/{chunk-P2KNN6ZR.js → chunk-KGCLQ7QX.js} +3 -3
  32. package/dist/{chunk-P2KNN6ZR.js.map → chunk-KGCLQ7QX.js.map} +1 -1
  33. package/dist/{chunk-H3MLGGFI.js → chunk-KLONQL76.js} +5 -5
  34. package/dist/{chunk-H3MLGGFI.js.map → chunk-KLONQL76.js.map} +1 -1
  35. package/dist/{chunk-63G7QO73.js → chunk-L7PF4KD6.js} +3 -3
  36. package/dist/{chunk-63G7QO73.js.map → chunk-L7PF4KD6.js.map} +1 -1
  37. package/dist/{chunk-PNPESCSP.js → chunk-MAM4U3UR.js} +3 -3
  38. package/dist/{chunk-PNPESCSP.js.map → chunk-MAM4U3UR.js.map} +1 -1
  39. package/dist/{chunk-V7UJ55KW.js → chunk-MZDCVTN6.js} +3 -3
  40. package/dist/{chunk-V7UJ55KW.js.map → chunk-MZDCVTN6.js.map} +1 -1
  41. package/dist/{chunk-FOP5LO7W.js → chunk-NHFSEWO2.js} +14 -14
  42. package/dist/{chunk-FOP5LO7W.js.map → chunk-NHFSEWO2.js.map} +1 -1
  43. package/dist/{chunk-I66ZRSEN.js → chunk-NT3TNF3R.js} +3 -3
  44. package/dist/{chunk-I66ZRSEN.js.map → chunk-NT3TNF3R.js.map} +1 -1
  45. package/dist/{chunk-EVULAGR5.js → chunk-O3T7PUBI.js} +3 -3
  46. package/dist/{chunk-EVULAGR5.js.map → chunk-O3T7PUBI.js.map} +1 -1
  47. package/dist/{chunk-EFEE6CMO.js → chunk-OOUEURR7.js} +3 -3
  48. package/dist/{chunk-EFEE6CMO.js.map → chunk-OOUEURR7.js.map} +1 -1
  49. package/dist/chunk-P6TOL5VY.js +147973 -0
  50. package/dist/chunk-P6TOL5VY.js.map +1 -0
  51. package/dist/{chunk-PCP77SLS.js → chunk-QB7SZS2C.js} +12 -12
  52. package/dist/{chunk-PCP77SLS.js.map → chunk-QB7SZS2C.js.map} +1 -1
  53. package/dist/{chunk-N5CER3QZ.js → chunk-QK27VDVB.js} +13 -13
  54. package/dist/{chunk-N5CER3QZ.js.map → chunk-QK27VDVB.js.map} +1 -1
  55. package/dist/{chunk-KTEQPYYN.js → chunk-RRVGW333.js} +6 -6
  56. package/dist/{chunk-KTEQPYYN.js.map → chunk-RRVGW333.js.map} +1 -1
  57. package/dist/{chunk-LRUZVPLR.js → chunk-S4WWYHQM.js} +3 -3
  58. package/dist/{chunk-LRUZVPLR.js.map → chunk-S4WWYHQM.js.map} +1 -1
  59. package/dist/chunk-SC6YCHT7.js +30 -0
  60. package/dist/chunk-SC6YCHT7.js.map +1 -0
  61. package/dist/{chunk-MESOO5GZ.js → chunk-SDEJD2J7.js} +3 -3
  62. package/dist/{chunk-MESOO5GZ.js.map → chunk-SDEJD2J7.js.map} +1 -1
  63. package/dist/{chunk-BA3FAVK4.js → chunk-SKDMG3FK.js} +23 -23
  64. package/dist/{chunk-BA3FAVK4.js.map → chunk-SKDMG3FK.js.map} +1 -1
  65. package/dist/chunk-UGW266DF.js +30 -0
  66. package/dist/chunk-UGW266DF.js.map +1 -0
  67. package/dist/{chunk-YNVMVDFN.js → chunk-VKG7UEN5.js} +3 -3
  68. package/dist/{chunk-YNVMVDFN.js.map → chunk-VKG7UEN5.js.map} +1 -1
  69. package/dist/{chunk-XADVBV73.js → chunk-WH6W3NUA.js} +6 -6
  70. package/dist/{chunk-XADVBV73.js.map → chunk-WH6W3NUA.js.map} +1 -1
  71. package/dist/{chunk-UCNPXHIJ.js → chunk-WSUAPD5M.js} +6 -6
  72. package/dist/{chunk-UCNPXHIJ.js.map → chunk-WSUAPD5M.js.map} +1 -1
  73. package/dist/{chunk-CSVGWTCG.js → chunk-XHDRWM46.js} +3 -3
  74. package/dist/{chunk-CSVGWTCG.js.map → chunk-XHDRWM46.js.map} +1 -1
  75. package/dist/chunk-XQ6MMGV2.js +30 -0
  76. package/dist/chunk-XQ6MMGV2.js.map +1 -0
  77. package/dist/chunk-YOL43ZNQ.js +35 -0
  78. package/dist/chunk-YOL43ZNQ.js.map +1 -0
  79. package/dist/{chunk-MKYCKCZ6.js → chunk-ZTDLGGYE.js} +12 -12
  80. package/dist/{chunk-MKYCKCZ6.js.map → chunk-ZTDLGGYE.js.map} +1 -1
  81. package/dist/cnaes.d.ts +41 -0
  82. package/dist/cnaes.js +5384 -0
  83. package/dist/cnaes.js.map +1 -0
  84. package/dist/cnh.js +4 -4
  85. package/dist/compare.js +20 -19
  86. package/dist/cpf.js +4 -4
  87. package/dist/data-catalog.js +16 -4
  88. package/dist/data-catalog.js.map +1 -1
  89. package/dist/detect.js +17 -16
  90. package/dist/diff.js +20 -19
  91. package/dist/feriados.d.ts +73 -0
  92. package/dist/feriados.js +243 -0
  93. package/dist/feriados.js.map +1 -0
  94. package/dist/generate.js +27 -26
  95. package/dist/ibge.js +1 -1
  96. package/dist/index.d.ts +1 -1
  97. package/dist/index.js +47 -46
  98. package/dist/index.js.map +1 -1
  99. package/dist/inscricao-estadual-produtor-rural.js +1 -1
  100. package/dist/mask.js +26 -25
  101. package/dist/ncm.d.ts +41 -0
  102. package/dist/ncm.js +42116 -0
  103. package/dist/ncm.js.map +1 -0
  104. package/dist/pix.js +5 -5
  105. package/dist/placa.js +1 -1
  106. package/dist/renavam.js +4 -4
  107. package/dist/sanitize.js +15 -14
  108. package/dist/telefone.js +3 -3
  109. package/dist/titulo-eleitor.js +4 -4
  110. package/package.json +26 -1
  111. package/dist/chunk-TE6NSONR.js +0 -43
  112. package/dist/chunk-TE6NSONR.js.map +0 -1
package/README.md CHANGED
@@ -29,7 +29,7 @@ Every Brazilian SaaS eventually reinvents CPF validation — usually wrong.
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 with weekly freshness ([DATA-FRESHNESS.md](../../docs/DATA-FRESHNESS.md))
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))
33
33
  - ✅ **ESM only**, Node ≥ 18, works in browser, Bun, Deno
34
34
 
35
35
  ---
@@ -234,7 +234,7 @@ br-validators generate inscricao-estadual-produtor-rural --masked --seed 42
234
234
  |---|---|---|---|
235
235
  | CPF | `@br-validators/core/cpf` | `br-validators cpf …` | `/cpf` |
236
236
  | CNPJ (numeric + alphanumeric) | `@br-validators/core/cnpj` | `br-validators cnpj …` | `/cnpj` |
237
- | CEP | `@br-validators/core/cep` | `br-validators cep …` | `/cep` |
237
+ | CEP | `@br-validators/core/cep` | `br-validators cep …` | `/cep` (+ `getCepFaixaInfo` prefix lookup) |
238
238
  | Telefone | `@br-validators/core/telefone` | `br-validators telefone …` | `/telefone` |
239
239
  | CNH | `@br-validators/core/cnh` | `br-validators cnh …` | `/cnh` |
240
240
  | RENAVAM | `@br-validators/core/renavam` | `br-validators renavam …` | `/renavam` |
@@ -258,7 +258,46 @@ br-validators generate inscricao-estadual-produtor-rural --masked --seed 42
258
258
  | **generate()** | `@br-validators/core/generate` | `br-validators generate …` | `/generate` |
259
259
  | **buildStaticPixBrCode()** | `@br-validators/core/brcode` | — | `/pix` (QR panel) |
260
260
 
261
- Full official sources per type: [docs/OFFICIAL-SOURCES.md](https://github.com/AlexandreZanata/br-validators/blob/main/docs/OFFICIAL-SOURCES.md)
261
+ ### Reference data (offline lookup)
262
+
263
+ 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
+
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 |
277
+
278
+ ```typescript
279
+ import { getMunicipioPorCodigo } from '@br-validators/core/ibge';
280
+ import { getBancoPorCodigo } from '@br-validators/core/bancos';
281
+ import { getDddInfo } from '@br-validators/core/telefone';
282
+ import { isFeriadoNacional } from '@br-validators/core/feriados';
283
+ import { getCnaePorCodigo } from '@br-validators/core/cnaes';
284
+ import { getCfopPorCodigo } from '@br-validators/core/cfop';
285
+ import { getNcmPorCodigo } from '@br-validators/core/ncm';
286
+ import { getCboPorCodigo } from '@br-validators/core/cbo';
287
+ import { getDataCatalog } from '@br-validators/core/data-catalog';
288
+
289
+ getMunicipioPorCodigo(3550308)?.nome; // São Paulo
290
+ getBancoPorCodigo('001')?.nome; // Banco do Brasil
291
+ getDddInfo('11')?.uf; // SP
292
+ isFeriadoNacional('2026-01-01'); // true — Confraternização Universal
293
+ getCnaePorCodigo('6201501'); // custom software development
294
+ getCfopPorCodigo('1.102'); // accepts CONFAZ dotted format
295
+ getNcmPorCodigo('01012100'); // purebred horses (8-digit leaf)
296
+ getCboPorCodigo('212405'); // systems development analyst
297
+ getDataCatalog().length; // 8 registered datasets
298
+ ```
299
+
300
+ 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)
262
301
 
263
302
  ---
264
303
 
package/dist/bancos.js CHANGED
@@ -1,4 +1,4 @@
1
- import { metadata_default } from './chunk-XADVBV73.js';
1
+ import { metadata_default } from './chunk-WH6W3NUA.js';
2
2
 
3
3
  // src/bancos/data/bancos.json
4
4
  var bancos_default = [
package/dist/batch.js CHANGED
@@ -1,30 +1,31 @@
1
- export { batch } from './chunk-N5CER3QZ.js';
2
- import './chunk-I66ZRSEN.js';
3
- import './chunk-EFEE6CMO.js';
4
- import './chunk-CSVGWTCG.js';
5
- import './chunk-665E36SC.js';
6
- import './chunk-CDNOUZEI.js';
1
+ export { batch } from './chunk-QK27VDVB.js';
2
+ import './chunk-NT3TNF3R.js';
7
3
  import './chunk-AO6UTQ4A.js';
8
4
  import './chunk-JLCQ7MGC.js';
9
5
  import './chunk-3LMDBXU6.js';
10
- import './chunk-KTEQPYYN.js';
6
+ import './chunk-OOUEURR7.js';
7
+ import './chunk-XHDRWM46.js';
8
+ import './chunk-665E36SC.js';
9
+ import './chunk-CDNOUZEI.js';
10
+ import './chunk-VKG7UEN5.js';
11
+ import './chunk-RRVGW333.js';
11
12
  import './chunk-AU6TW3GH.js';
12
13
  import './chunk-N6RQICAP.js';
13
14
  import './chunk-E2EFGMWA.js';
14
- import './chunk-V7UJ55KW.js';
15
- import './chunk-H3MLGGFI.js';
16
- import './chunk-P2KNN6ZR.js';
17
- import './chunk-63G7QO73.js';
18
- import './chunk-ANWQBKGN.js';
19
- import './chunk-TE6NSONR.js';
20
- import './chunk-YNVMVDFN.js';
21
- import './chunk-YYHS5WQN.js';
22
- import './chunk-4SNBZFS5.js';
23
- import './chunk-UCJPSJN5.js';
15
+ import './chunk-MZDCVTN6.js';
16
+ import './chunk-KLONQL76.js';
24
17
  import './chunk-CSRBRKXY.js';
25
18
  import './chunk-FBARVLLP.js';
19
+ import './chunk-KGCLQ7QX.js';
20
+ import './chunk-L7PF4KD6.js';
26
21
  import './chunk-OTZHMJYE.js';
22
+ import './chunk-ANWQBKGN.js';
23
+ import './chunk-P6TOL5VY.js';
24
+ import './chunk-YYHS5WQN.js';
25
+ import './chunk-4SNBZFS5.js';
26
+ import './chunk-DQUMIETC.js';
27
27
  import './chunk-EB3G4IG6.js';
28
+ import './chunk-UCJPSJN5.js';
28
29
  import './chunk-NUQSMT4Y.js';
29
30
  //# sourceMappingURL=batch.js.map
30
31
  //# sourceMappingURL=batch.js.map
package/dist/brcode.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import './chunk-RYGAK7PB.js';
2
- export { BRCODE_GOLDEN_COMPOSITE, BRCODE_GOLDEN_DYNAMIC_URL, BRCODE_GOLDEN_STATIC_CPF, BRCODE_GOLDEN_STATIC_EMAIL, BRCODE_GOLDEN_STATIC_EVP, BRCODE_OFFICIAL_SOURCE_URL, BRCODE_PIX_INITIATION_MANUAL_URL, buildStaticPixBrCode, computeCrc16Ccitt, findPixMerchantAccount, findTlvField, isValidBrCode, normalizeBrCodePayload, parseBrCode, parseBrCodePayload, parseTlvSequence, validateBrCode, verifyBrCodeCrc } from './chunk-V7UJ55KW.js';
3
- import './chunk-H3MLGGFI.js';
4
- import './chunk-P2KNN6ZR.js';
5
- import './chunk-63G7QO73.js';
6
- import './chunk-UCJPSJN5.js';
2
+ export { BRCODE_GOLDEN_COMPOSITE, BRCODE_GOLDEN_DYNAMIC_URL, BRCODE_GOLDEN_STATIC_CPF, BRCODE_GOLDEN_STATIC_EMAIL, BRCODE_GOLDEN_STATIC_EVP, BRCODE_OFFICIAL_SOURCE_URL, BRCODE_PIX_INITIATION_MANUAL_URL, buildStaticPixBrCode, computeCrc16Ccitt, findPixMerchantAccount, findTlvField, isValidBrCode, normalizeBrCodePayload, parseBrCode, parseBrCodePayload, parseTlvSequence, validateBrCode, verifyBrCodeCrc } from './chunk-MZDCVTN6.js';
3
+ import './chunk-KLONQL76.js';
7
4
  import './chunk-CSRBRKXY.js';
8
5
  import './chunk-FBARVLLP.js';
6
+ import './chunk-KGCLQ7QX.js';
7
+ import './chunk-L7PF4KD6.js';
9
8
  import './chunk-OTZHMJYE.js';
10
9
  import './chunk-EB3G4IG6.js';
10
+ import './chunk-UCJPSJN5.js';
11
11
  import './chunk-NUQSMT4Y.js';
12
12
  //# sourceMappingURL=brcode.js.map
13
13
  //# sourceMappingURL=brcode.js.map
package/dist/cbo.d.ts ADDED
@@ -0,0 +1,41 @@
1
+ import { b as DatasetChanges, c as DatasetVerification } from './types-CBIZxgfG.js';
2
+
3
+ interface Cbo {
4
+ codigo: string;
5
+ descricao: string;
6
+ }
7
+ interface CboDataVersion {
8
+ id: 'cbo';
9
+ nome: string;
10
+ fonte: string;
11
+ endpoints: string[];
12
+ capturadoEm: string;
13
+ atualizadoEm: string;
14
+ contagens: {
15
+ cbo: number;
16
+ };
17
+ alteracoes: DatasetChanges;
18
+ verificacao: DatasetVerification;
19
+ documentacao: string;
20
+ }
21
+
22
+ /**
23
+ * CBO 2002 occupation lookup — offline embedded data from official MTE CSV.
24
+ * @see https://www.gov.br/trabalho-e-emprego/pt-br/assuntos/cbo/servicos/downloads
25
+ */
26
+
27
+ declare function getCbos(): readonly Cbo[];
28
+ declare function getCboPorCodigo(codigo: string): Cbo | undefined;
29
+ declare function searchCbo(query: string, options?: {
30
+ limit?: number;
31
+ }): readonly Cbo[];
32
+
33
+ declare const CBO_OCUPACAO_CSV_URL = "https://www.gov.br/trabalho-e-emprego/pt-br/assuntos/cbo/servicos/downloads/cbo2002-ocupacao.csv";
34
+ declare const CBO_GOLDEN_ANALISTA_SISTEMAS = "212405";
35
+ declare const CBO_GOLDEN_OFICIAL_AERONAUTICA = "010105";
36
+ declare const CBO_MIN_OCUPACOES = 2400;
37
+ declare const CBO_MAX_OCUPACOES = 2800;
38
+
39
+ declare const CBO_DATA_VERSION: CboDataVersion;
40
+
41
+ export { CBO_DATA_VERSION, CBO_GOLDEN_ANALISTA_SISTEMAS, CBO_GOLDEN_OFICIAL_AERONAUTICA, CBO_MAX_OCUPACOES, CBO_MIN_OCUPACOES, CBO_OCUPACAO_CSV_URL, type Cbo, type CboDataVersion, getCboPorCodigo, getCbos, searchCbo };