@br-validators/core 0.12.0-alpha.3 → 1.1.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.
- package/README.md +84 -12
- package/dist/bancos.d.ts +41 -0
- package/dist/bancos.js +3328 -0
- package/dist/bancos.js.map +1 -0
- package/dist/batch.d.ts +28 -0
- package/dist/batch.js +30 -0
- package/dist/batch.js.map +1 -0
- package/dist/boleto.d.ts +58 -5
- package/dist/boleto.js +6 -3
- package/dist/brcode.d.ts +15 -3
- package/dist/brcode.js +8 -8
- package/dist/cartao-credito.d.ts +2 -2
- package/dist/cartao-credito.js +3 -3
- package/dist/cep.d.ts +2 -2
- package/dist/cep.js +4 -4
- package/dist/{chunk-WPL47PWJ.js → chunk-3LMDBXU6.js} +3 -3
- package/dist/{chunk-WPL47PWJ.js.map → chunk-3LMDBXU6.js.map} +1 -1
- package/dist/chunk-4J5IMD7B.js +3 -0
- package/dist/chunk-4J5IMD7B.js.map +1 -0
- package/dist/{chunk-BFZPCEYB.js → chunk-54UWHK5L.js} +3 -3
- package/dist/{chunk-BFZPCEYB.js.map → chunk-54UWHK5L.js.map} +1 -1
- package/dist/chunk-5V6N4JWQ.js +135 -0
- package/dist/chunk-5V6N4JWQ.js.map +1 -0
- package/dist/{chunk-F6PTZY4O.js → chunk-63G7QO73.js} +3 -3
- package/dist/{chunk-F6PTZY4O.js.map → chunk-63G7QO73.js.map} +1 -1
- package/dist/{chunk-3QP6R46N.js → chunk-665E36SC.js} +4 -4
- package/dist/{chunk-3QP6R46N.js.map → chunk-665E36SC.js.map} +1 -1
- package/dist/{chunk-AK5GVYQ5.js → chunk-ANWQBKGN.js} +3 -3
- package/dist/{chunk-AK5GVYQ5.js.map → chunk-ANWQBKGN.js.map} +1 -1
- package/dist/{chunk-D36RM7OD.js → chunk-AO6UTQ4A.js} +3 -3
- package/dist/{chunk-D36RM7OD.js.map → chunk-AO6UTQ4A.js.map} +1 -1
- package/dist/chunk-ASQ2XIN2.js +99 -0
- package/dist/chunk-ASQ2XIN2.js.map +1 -0
- package/dist/chunk-AU6TW3GH.js +136 -0
- package/dist/chunk-AU6TW3GH.js.map +1 -0
- package/dist/{chunk-XW5G2RAL.js → chunk-B6A7VF4R.js} +3 -3
- package/dist/{chunk-XW5G2RAL.js.map → chunk-B6A7VF4R.js.map} +1 -1
- package/dist/{chunk-Q7B5VOPW.js → chunk-BA3FAVK4.js} +243 -37
- package/dist/chunk-BA3FAVK4.js.map +1 -0
- package/dist/{chunk-Y6IW2LMW.js → chunk-CDNOUZEI.js} +3 -3
- package/dist/{chunk-Y6IW2LMW.js.map → chunk-CDNOUZEI.js.map} +1 -1
- package/dist/{chunk-XUO7FV6Z.js → chunk-CSRBRKXY.js} +3 -3
- package/dist/{chunk-XUO7FV6Z.js.map → chunk-CSRBRKXY.js.map} +1 -1
- package/dist/{chunk-DJUANFIK.js → chunk-CSVGWTCG.js} +3 -3
- package/dist/{chunk-DJUANFIK.js.map → chunk-CSVGWTCG.js.map} +1 -1
- package/dist/chunk-E2EFGMWA.js +200 -0
- package/dist/chunk-E2EFGMWA.js.map +1 -0
- package/dist/chunk-EFEE6CMO.js +24091 -0
- package/dist/chunk-EFEE6CMO.js.map +1 -0
- package/dist/{chunk-KSLDM5AD.js → chunk-EVULAGR5.js} +3 -3
- package/dist/{chunk-KSLDM5AD.js.map → chunk-EVULAGR5.js.map} +1 -1
- package/dist/{chunk-YXELVV37.js → chunk-FBARVLLP.js} +4 -4
- package/dist/{chunk-YXELVV37.js.map → chunk-FBARVLLP.js.map} +1 -1
- package/dist/chunk-FOP5LO7W.js +131 -0
- package/dist/chunk-FOP5LO7W.js.map +1 -0
- package/dist/{chunk-MK7OJUF5.js → chunk-H3MLGGFI.js} +8 -8
- package/dist/{chunk-MK7OJUF5.js.map → chunk-H3MLGGFI.js.map} +1 -1
- package/dist/{chunk-WLE2ENQA.js → chunk-I66ZRSEN.js} +3 -3
- package/dist/{chunk-WLE2ENQA.js.map → chunk-I66ZRSEN.js.map} +1 -1
- package/dist/{chunk-GRDUTHNX.js → chunk-IYOPXJLY.js} +3 -3
- package/dist/{chunk-GRDUTHNX.js.map → chunk-IYOPXJLY.js.map} +1 -1
- package/dist/chunk-JCWQDTZB.js +41 -0
- package/dist/chunk-JCWQDTZB.js.map +1 -0
- package/dist/{chunk-4Y2FBO57.js → chunk-JKDU7QYP.js} +3 -3
- package/dist/{chunk-4Y2FBO57.js.map → chunk-JKDU7QYP.js.map} +1 -1
- package/dist/{chunk-KH7DWOUA.js → chunk-JLCQ7MGC.js} +3 -3
- package/dist/{chunk-KH7DWOUA.js.map → chunk-JLCQ7MGC.js.map} +1 -1
- package/dist/chunk-KBNWI6GE.js +3 -0
- package/dist/chunk-KBNWI6GE.js.map +1 -0
- package/dist/chunk-KLPONHBL.js +3 -0
- package/dist/chunk-KLPONHBL.js.map +1 -0
- package/dist/chunk-KTEQPYYN.js +31 -0
- package/dist/chunk-KTEQPYYN.js.map +1 -0
- package/dist/{chunk-CDGRHI7W.js → chunk-LAEUXOF6.js} +3 -3
- package/dist/{chunk-CDGRHI7W.js.map → chunk-LAEUXOF6.js.map} +1 -1
- package/dist/chunk-LRUZVPLR.js +93 -0
- package/dist/chunk-LRUZVPLR.js.map +1 -0
- package/dist/{chunk-ZAUZRIOU.js → chunk-MESOO5GZ.js} +3 -3
- package/dist/{chunk-ZAUZRIOU.js.map → chunk-MESOO5GZ.js.map} +1 -1
- package/dist/chunk-MKYCKCZ6.js +100 -0
- package/dist/chunk-MKYCKCZ6.js.map +1 -0
- package/dist/chunk-N5CER3QZ.js +128 -0
- package/dist/chunk-N5CER3QZ.js.map +1 -0
- package/dist/chunk-N6RQICAP.js +220 -0
- package/dist/chunk-N6RQICAP.js.map +1 -0
- package/dist/{chunk-MSLJF2FM.js → chunk-NUQSMT4Y.js} +2 -2
- package/dist/chunk-NUQSMT4Y.js.map +1 -0
- package/dist/{chunk-KQDLIGSG.js → chunk-P2KNN6ZR.js} +3 -3
- package/dist/{chunk-KQDLIGSG.js.map → chunk-P2KNN6ZR.js.map} +1 -1
- package/dist/{chunk-JZNTCZMV.js → chunk-PCP77SLS.js} +34 -18
- package/dist/chunk-PCP77SLS.js.map +1 -0
- package/dist/{chunk-G2Y63PIF.js → chunk-PNPESCSP.js} +3 -3
- package/dist/{chunk-G2Y63PIF.js.map → chunk-PNPESCSP.js.map} +1 -1
- package/dist/{chunk-LYBFUKHR.js → chunk-RMTHCPIV.js} +4 -4
- package/dist/{chunk-LYBFUKHR.js.map → chunk-RMTHCPIV.js.map} +1 -1
- package/dist/{chunk-2JJS46FM.js → chunk-TE6NSONR.js} +3 -3
- package/dist/{chunk-2JJS46FM.js.map → chunk-TE6NSONR.js.map} +1 -1
- package/dist/{chunk-NHLLC6WH.js → chunk-TJCE4TVX.js} +4 -4
- package/dist/{chunk-NHLLC6WH.js.map → chunk-TJCE4TVX.js.map} +1 -1
- package/dist/chunk-UCNPXHIJ.js +32 -0
- package/dist/chunk-UCNPXHIJ.js.map +1 -0
- package/dist/{chunk-WCQUQ2WX.js → chunk-V7UJ55KW.js} +47 -5
- package/dist/chunk-V7UJ55KW.js.map +1 -0
- package/dist/{chunk-IQGRFAQV.js → chunk-VSW3NBJQ.js} +3 -3
- package/dist/{chunk-IQGRFAQV.js.map → chunk-VSW3NBJQ.js.map} +1 -1
- package/dist/{chunk-6QJFMOIX.js → chunk-VWVQWN2G.js} +3 -3
- package/dist/{chunk-6QJFMOIX.js.map → chunk-VWVQWN2G.js.map} +1 -1
- package/dist/chunk-XADVBV73.js +30 -0
- package/dist/chunk-XADVBV73.js.map +1 -0
- package/dist/{chunk-FXLVNCG3.js → chunk-XWHGXSQV.js} +3 -3
- package/dist/{chunk-FXLVNCG3.js.map → chunk-XWHGXSQV.js.map} +1 -1
- package/dist/{chunk-G32U6YQ5.js → chunk-YD5MPZWY.js} +3 -3
- package/dist/{chunk-G32U6YQ5.js.map → chunk-YD5MPZWY.js.map} +1 -1
- package/dist/{chunk-US4OLTJ2.js → chunk-YNVMVDFN.js} +3 -3
- package/dist/{chunk-US4OLTJ2.js.map → chunk-YNVMVDFN.js.map} +1 -1
- package/dist/cnh.d.ts +2 -2
- package/dist/cnh.js +4 -4
- package/dist/cnpj.d.ts +2 -2
- package/dist/cnpj.js +5 -5
- package/dist/compare.d.ts +16 -0
- package/dist/compare.js +33 -0
- package/dist/compare.js.map +1 -0
- package/dist/cpf.d.ts +2 -2
- package/dist/cpf.js +4 -4
- package/dist/data-catalog.d.ts +14 -0
- package/dist/data-catalog.js +25 -0
- package/dist/data-catalog.js.map +1 -0
- package/dist/detect.d.ts +1 -1
- package/dist/detect.js +23 -20
- package/dist/diff.d.ts +16 -0
- package/dist/diff.js +33 -0
- package/dist/diff.js.map +1 -0
- package/dist/generate.d.ts +24 -3
- package/dist/generate.js +37 -27
- package/dist/ibge.d.ts +65 -0
- package/dist/ibge.js +28174 -0
- package/dist/ibge.js.map +1 -0
- package/dist/{index-CZLo9YOT.d.ts → index-BEJFgDXj.d.ts} +1 -1
- package/dist/index.d.ts +15 -9
- package/dist/index.js +61 -49
- package/dist/index.js.map +1 -1
- package/dist/{inscricao-estadual-produtor-rural-CfWUaggb.d.ts → inscricao-estadual-produtor-rural-BXFVQscj.d.ts} +1 -1
- package/dist/inscricao-estadual-produtor-rural.d.ts +2 -2
- package/dist/inscricao-estadual-produtor-rural.js +3 -3
- package/dist/inscricao-estadual.d.ts +3 -3
- package/dist/inscricao-estadual.js +4 -4
- package/dist/mask.d.ts +13 -0
- package/dist/mask.js +41 -0
- package/dist/mask.js.map +1 -0
- package/dist/nfe-chave.d.ts +2 -2
- package/dist/nfe-chave.js +4 -3
- package/dist/pis-pasep.d.ts +2 -2
- package/dist/pis-pasep.js +3 -3
- package/dist/{pix-ddldLlb7.d.ts → pix-B4habHLG.d.ts} +1 -1
- package/dist/pix.d.ts +2 -2
- package/dist/pix.js +9 -8
- package/dist/placa.d.ts +2 -2
- package/dist/placa.js +4 -4
- package/dist/renavam.d.ts +2 -2
- package/dist/renavam.js +4 -4
- package/dist/sanitize.d.ts +2 -2
- package/dist/sanitize.js +21 -17
- package/dist/telefone.d.ts +34 -3
- package/dist/telefone.js +4 -3
- package/dist/titulo-eleitor.d.ts +2 -2
- package/dist/titulo-eleitor.js +4 -4
- package/dist/types-CBIZxgfG.d.ts +28 -0
- package/dist/types-MXifBcV5.d.ts +10 -0
- package/dist/{validation-result-BhQE-1_O.d.ts → validation-result-BaI2Xder.d.ts} +24 -5
- package/package.json +36 -1
- package/dist/chunk-4W4OKLSZ.js +0 -366
- package/dist/chunk-4W4OKLSZ.js.map +0 -1
- package/dist/chunk-5UL3M7IU.js +0 -192
- package/dist/chunk-5UL3M7IU.js.map +0 -1
- package/dist/chunk-CSZCIOGA.js +0 -187
- package/dist/chunk-CSZCIOGA.js.map +0 -1
- package/dist/chunk-JZNTCZMV.js.map +0 -1
- package/dist/chunk-MSLJF2FM.js.map +0 -1
- package/dist/chunk-Q7B5VOPW.js.map +0 -1
- package/dist/chunk-WCQUQ2WX.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-KBNWI6GE.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-KLPONHBL.js"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// src/core/telefone/data/ddd-metadata.json
|
|
2
|
+
var ddd_metadata_default = {
|
|
3
|
+
id: "telefone-ddd",
|
|
4
|
+
nome: "Anatel DDD Geographic Lookup",
|
|
5
|
+
fonte: "Anatel Plano de Numera\xE7\xE3o + IBGE municipios",
|
|
6
|
+
endpoints: [
|
|
7
|
+
"https://informacoes.anatel.gov.br/paineis/areas-tarifarias/codigos-nacionais",
|
|
8
|
+
"packages/br-validators/src/ibge/data/municipios.json"
|
|
9
|
+
],
|
|
10
|
+
capturadoEm: "2026-06-23",
|
|
11
|
+
atualizadoEm: "2026-06-23T14:34:40.909Z",
|
|
12
|
+
contagens: {
|
|
13
|
+
ddds: 67
|
|
14
|
+
},
|
|
15
|
+
alteracoes: {
|
|
16
|
+
adicionados: 67,
|
|
17
|
+
removidos: 0,
|
|
18
|
+
alterados: 0,
|
|
19
|
+
comparadoCom: null
|
|
20
|
+
},
|
|
21
|
+
verificacao: {
|
|
22
|
+
agendamento: "semanal",
|
|
23
|
+
workflow: "data-refresh-bot.yml",
|
|
24
|
+
ultimaExecucao: "2026-06-23T14:34:40.909Z"
|
|
25
|
+
},
|
|
26
|
+
documentacao: "docs/OFFICIAL-SOURCES.md#anatel-ddd-lookup"
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export { ddd_metadata_default };
|
|
30
|
+
//# sourceMappingURL=chunk-KTEQPYYN.js.map
|
|
31
|
+
//# sourceMappingURL=chunk-KTEQPYYN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/telefone/data/ddd-metadata.json"],"names":[],"mappings":";AAAA,IAAA,oBAAA,GAAA;AAAA,EACE,EAAA,EAAM,cAAA;AAAA,EACN,IAAA,EAAQ,8BAAA;AAAA,EACR,KAAA,EAAS,mDAAA;AAAA,EACT,SAAA,EAAa;AAAA,IACX,8EAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,WAAA,EAAe,YAAA;AAAA,EACf,YAAA,EAAgB,0BAAA;AAAA,EAChB,SAAA,EAAa;AAAA,IACX,IAAA,EAAQ;AAAA,GACV;AAAA,EACA,UAAA,EAAc;AAAA,IACZ,WAAA,EAAe,EAAA;AAAA,IACf,SAAA,EAAa,CAAA;AAAA,IACb,SAAA,EAAa,CAAA;AAAA,IACb,YAAA,EAAgB;AAAA,GAClB;AAAA,EACA,WAAA,EAAe;AAAA,IACb,WAAA,EAAe,SAAA;AAAA,IACf,QAAA,EAAY,sBAAA;AAAA,IACZ,cAAA,EAAkB;AAAA,GACpB;AAAA,EACA,YAAA,EAAgB;AAClB","file":"chunk-KTEQPYYN.js","sourcesContent":["{\n \"id\": \"telefone-ddd\",\n \"nome\": \"Anatel DDD Geographic Lookup\",\n \"fonte\": \"Anatel Plano de Numeração + IBGE municipios\",\n \"endpoints\": [\n \"https://informacoes.anatel.gov.br/paineis/areas-tarifarias/codigos-nacionais\",\n \"packages/br-validators/src/ibge/data/municipios.json\"\n ],\n \"capturadoEm\": \"2026-06-23\",\n \"atualizadoEm\": \"2026-06-23T14:34:40.909Z\",\n \"contagens\": {\n \"ddds\": 67\n },\n \"alteracoes\": {\n \"adicionados\": 67,\n \"removidos\": 0,\n \"alterados\": 0,\n \"comparadoCom\": null\n },\n \"verificacao\": {\n \"agendamento\": \"semanal\",\n \"workflow\": \"data-refresh-bot.yml\",\n \"ultimaExecucao\": \"2026-06-23T14:34:40.909Z\"\n },\n \"documentacao\": \"docs/OFFICIAL-SOURCES.md#anatel-ddd-lookup\"\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { validateRenavam, RENAVAM_NUMERIC_PATTERN, RENAVAM_LENGTH } from './chunk-
|
|
1
|
+
import { validateRenavam, RENAVAM_NUMERIC_PATTERN, RENAVAM_LENGTH } from './chunk-I66ZRSEN.js';
|
|
2
2
|
|
|
3
3
|
// src/core/renavam/mask.ts
|
|
4
4
|
function applyRenavamCanonicalFormat(canonical) {
|
|
@@ -18,5 +18,5 @@ function formatRenavam(input) {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
export { formatRenavam };
|
|
21
|
-
//# sourceMappingURL=chunk-
|
|
22
|
-
//# sourceMappingURL=chunk-
|
|
21
|
+
//# sourceMappingURL=chunk-LAEUXOF6.js.map
|
|
22
|
+
//# sourceMappingURL=chunk-LAEUXOF6.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/renavam/mask.ts","../src/format/renavam.ts"],"names":[],"mappings":";;;AAMO,SAAS,4BAA4B,SAAA,EAA2B;AACrE,EAAA,IAAI,CAAC,uBAAA,CAAwB,IAAA,CAAK,SAAS,CAAA,EAAG;AAC5C,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,0BAAA,EAA6B,cAAc,CAAA,iBAAA,CAAmB,CAAA;AAAA,EAChF;AACA,EAAA,OAAO,SAAA;AACT;;;ACPO,SAAS,cAAc,KAAA,EAA6B;AACzD,EAAA,MAAM,MAAA,GAAS,gBAAgB,KAAK,CAAA;AACpC,EAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,IAAA,EAAM,OAAO,IAAA,EAAM,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,EACjE;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,WAAW,2BAAA,CAA4B,MAAA,CAAO,KAAK,CAAA,EAAE;AAC1E","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/core/renavam/mask.ts","../src/format/renavam.ts"],"names":[],"mappings":";;;AAMO,SAAS,4BAA4B,SAAA,EAA2B;AACrE,EAAA,IAAI,CAAC,uBAAA,CAAwB,IAAA,CAAK,SAAS,CAAA,EAAG;AAC5C,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,0BAAA,EAA6B,cAAc,CAAA,iBAAA,CAAmB,CAAA;AAAA,EAChF;AACA,EAAA,OAAO,SAAA;AACT;;;ACPO,SAAS,cAAc,KAAA,EAA6B;AACzD,EAAA,MAAM,MAAA,GAAS,gBAAgB,KAAK,CAAA;AACpC,EAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,IAAA,EAAM,OAAO,IAAA,EAAM,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,EACjE;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,WAAW,2BAAA,CAA4B,MAAA,CAAO,KAAK,CAAA,EAAE;AAC1E","file":"chunk-LAEUXOF6.js","sourcesContent":["import { RENAVAM_LENGTH, RENAVAM_NUMERIC_PATTERN } from './constants.js';\n\n/**\n * Official system format — 11 contiguous digits (BR-RENAVAM-005).\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/arquivos-senatran/portarias/2013/portaria0272013.pdf\n */\nexport function applyRenavamCanonicalFormat(canonical: string): string {\n if (!RENAVAM_NUMERIC_PATTERN.test(canonical)) {\n throw new Error(`RENAVAM must have exactly ${RENAVAM_LENGTH} digits to format`);\n }\n return canonical;\n}\n","import { applyRenavamCanonicalFormat } from '../core/renavam/mask.js';\nimport { validateRenavam } from '../core/renavam/index.js';\nimport type { FormatResult } from '../types/validation-result.js';\n\nexport function formatRenavam(input: string): FormatResult {\n const result = validateRenavam(input);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n return { ok: true, formatted: applyRenavamCanonicalFormat(result.value) };\n}\n"]}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { normalizeForPlatform } from './chunk-FOP5LO7W.js';
|
|
2
|
+
|
|
3
|
+
// src/diff/index.ts
|
|
4
|
+
function diff(a, b, type, options = {}) {
|
|
5
|
+
const left = normalizeForPlatform(a, type, options);
|
|
6
|
+
const right = normalizeForPlatform(b, type, options);
|
|
7
|
+
if (left === right) {
|
|
8
|
+
return { changed: false, fields: [] };
|
|
9
|
+
}
|
|
10
|
+
const leftFields = splitFields(left, type);
|
|
11
|
+
const rightFields = splitFields(right, type);
|
|
12
|
+
const keys = /* @__PURE__ */ new Set([...Object.keys(leftFields), ...Object.keys(rightFields)]);
|
|
13
|
+
const fields = [];
|
|
14
|
+
for (const field of keys) {
|
|
15
|
+
const leftValue = leftFields[field];
|
|
16
|
+
const rightValue = rightFields[field];
|
|
17
|
+
if (leftValue !== rightValue) {
|
|
18
|
+
fields.push({ field, a: leftValue, b: rightValue });
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return { changed: fields.length > 0, fields };
|
|
22
|
+
}
|
|
23
|
+
function splitFields(value, type) {
|
|
24
|
+
switch (type) {
|
|
25
|
+
case "cpf":
|
|
26
|
+
return {
|
|
27
|
+
base: value.slice(0, 9),
|
|
28
|
+
dv: value.slice(9, 11)
|
|
29
|
+
};
|
|
30
|
+
case "cnpj":
|
|
31
|
+
return {
|
|
32
|
+
base: value.slice(0, 12),
|
|
33
|
+
dv: value.slice(12, 14)
|
|
34
|
+
};
|
|
35
|
+
case "cep":
|
|
36
|
+
return {
|
|
37
|
+
prefix: value.slice(0, 5),
|
|
38
|
+
suffix: value.slice(5, 8)
|
|
39
|
+
};
|
|
40
|
+
case "telefone":
|
|
41
|
+
return { ddd: value.slice(0, 2), subscriber: value.slice(2) };
|
|
42
|
+
case "pis-pasep":
|
|
43
|
+
return {
|
|
44
|
+
base: value.slice(0, 10),
|
|
45
|
+
dv: value.slice(10, 11)
|
|
46
|
+
};
|
|
47
|
+
case "cnh":
|
|
48
|
+
return {
|
|
49
|
+
base: value.slice(0, 9),
|
|
50
|
+
dv1: value.slice(9, 10),
|
|
51
|
+
dv2: value.slice(10, 11)
|
|
52
|
+
};
|
|
53
|
+
case "renavam":
|
|
54
|
+
return {
|
|
55
|
+
base: value.slice(0, 10),
|
|
56
|
+
dv: value.slice(10, 11)
|
|
57
|
+
};
|
|
58
|
+
case "titulo-eleitor":
|
|
59
|
+
return {
|
|
60
|
+
sequential: value.slice(0, 8),
|
|
61
|
+
uf: value.slice(8, 10),
|
|
62
|
+
dv: value.slice(10, 12)
|
|
63
|
+
};
|
|
64
|
+
case "nfe-chave":
|
|
65
|
+
return {
|
|
66
|
+
cUF: value.slice(0, 2),
|
|
67
|
+
aamm: value.slice(2, 6),
|
|
68
|
+
cnpj: value.slice(6, 20),
|
|
69
|
+
mod: value.slice(20, 22),
|
|
70
|
+
serie: value.slice(22, 25),
|
|
71
|
+
nNF: value.slice(25, 34),
|
|
72
|
+
tpEmis: value.slice(34, 35),
|
|
73
|
+
cNF: value.slice(35, 43),
|
|
74
|
+
cDV: value.slice(43, 44)
|
|
75
|
+
};
|
|
76
|
+
case "placa":
|
|
77
|
+
return { value };
|
|
78
|
+
case "boleto":
|
|
79
|
+
case "cartao-credito":
|
|
80
|
+
case "inscricao-estadual":
|
|
81
|
+
case "inscricao-estadual-produtor-rural":
|
|
82
|
+
case "pix":
|
|
83
|
+
case "brcode":
|
|
84
|
+
return { value };
|
|
85
|
+
default: {
|
|
86
|
+
return { value };
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export { diff };
|
|
92
|
+
//# sourceMappingURL=chunk-LRUZVPLR.js.map
|
|
93
|
+
//# sourceMappingURL=chunk-LRUZVPLR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/diff/index.ts"],"names":[],"mappings":"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","file":"chunk-LRUZVPLR.js","sourcesContent":["/**\n * Field-level document diff — per-type structural decomposition (BR-DIFF-001).\n * @see docs/OFFICIAL-SOURCES.md\n */\nimport { normalizeForPlatform } from '../platform/normalize.js';\nimport type { PlatformDocumentType, PlatformOptions } from '../platform/types.js';\n\nexport type DiffField = {\n field: string;\n a: string;\n b: string;\n};\n\nexport type DiffResult = {\n changed: boolean;\n fields: DiffField[];\n};\n\nexport function diff(\n a: string,\n b: string,\n type: PlatformDocumentType,\n options: PlatformOptions = {},\n): DiffResult {\n const left = normalizeForPlatform(a, type, options);\n const right = normalizeForPlatform(b, type, options);\n\n if (left === right) {\n return { changed: false, fields: [] };\n }\n\n const leftFields = splitFields(left, type);\n const rightFields = splitFields(right, type);\n const keys = new Set([...Object.keys(leftFields), ...Object.keys(rightFields)]);\n const fields: DiffField[] = [];\n\n for (const field of keys) {\n const leftValue = leftFields[field];\n const rightValue = rightFields[field];\n if (leftValue !== rightValue) {\n fields.push({ field, a: leftValue, b: rightValue });\n }\n }\n\n return { changed: fields.length > 0, fields };\n}\n\nfunction splitFields(value: string, type: PlatformDocumentType): Record<string, string> {\n switch (type) {\n case 'cpf':\n return {\n base: value.slice(0, 9),\n dv: value.slice(9, 11),\n };\n case 'cnpj':\n return {\n base: value.slice(0, 12),\n dv: value.slice(12, 14),\n };\n case 'cep':\n return {\n prefix: value.slice(0, 5),\n suffix: value.slice(5, 8),\n };\n case 'telefone':\n return { ddd: value.slice(0, 2), subscriber: value.slice(2) };\n case 'pis-pasep':\n return {\n base: value.slice(0, 10),\n dv: value.slice(10, 11),\n };\n case 'cnh':\n return {\n base: value.slice(0, 9),\n dv1: value.slice(9, 10),\n dv2: value.slice(10, 11),\n };\n case 'renavam':\n return {\n base: value.slice(0, 10),\n dv: value.slice(10, 11),\n };\n case 'titulo-eleitor':\n return {\n sequential: value.slice(0, 8),\n uf: value.slice(8, 10),\n dv: value.slice(10, 12),\n };\n case 'nfe-chave':\n return {\n cUF: value.slice(0, 2),\n aamm: value.slice(2, 6),\n cnpj: value.slice(6, 20),\n mod: value.slice(20, 22),\n serie: value.slice(22, 25),\n nNF: value.slice(25, 34),\n tpEmis: value.slice(34, 35),\n cNF: value.slice(35, 43),\n cDV: value.slice(43, 44),\n };\n case 'placa':\n return { value };\n case 'boleto':\n case 'cartao-credito':\n case 'inscricao-estadual':\n case 'inscricao-estadual-produtor-rural':\n case 'pix':\n case 'brcode':\n return { value };\n default: {\n const _exhaustive: never = type;\n void _exhaustive;\n return { value };\n }\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { validateCep, CEP_MASK_PATTERN } from './chunk-
|
|
1
|
+
import { validateCep, CEP_MASK_PATTERN } from './chunk-TE6NSONR.js';
|
|
2
2
|
|
|
3
3
|
// src/core/cep/mask.ts
|
|
4
4
|
function applyCepMask(canonical) {
|
|
@@ -19,5 +19,5 @@ function formatCep(input) {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
export { formatCep };
|
|
22
|
-
//# sourceMappingURL=chunk-
|
|
23
|
-
//# sourceMappingURL=chunk-
|
|
22
|
+
//# sourceMappingURL=chunk-MESOO5GZ.js.map
|
|
23
|
+
//# sourceMappingURL=chunk-MESOO5GZ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/cep/mask.ts","../src/format/cep.ts"],"names":[],"mappings":";;;AAGO,SAAS,aAAa,SAAA,EAA2B;AACtD,EAAA,MAAM,KAAA,GAAQ,gBAAA,CAAiB,IAAA,CAAK,SAAS,CAAA;AAC7C,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAAA,EAChE;AACA,EAAA,OAAO,GAAG,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAChC;;;ACLO,SAAS,UAAU,KAAA,EAA6B;AACrD,EAAA,MAAM,MAAA,GAAS,YAAY,KAAK,CAAA;AAChC,EAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,IAAA,EAAM,OAAO,IAAA,EAAM,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,EACjE;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,WAAW,YAAA,CAAa,MAAA,CAAO,KAAK,CAAA,EAAE;AAC3D","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/core/cep/mask.ts","../src/format/cep.ts"],"names":[],"mappings":";;;AAGO,SAAS,aAAa,SAAA,EAA2B;AACtD,EAAA,MAAM,KAAA,GAAQ,gBAAA,CAAiB,IAAA,CAAK,SAAS,CAAA;AAC7C,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAAA,EAChE;AACA,EAAA,OAAO,GAAG,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAChC;;;ACLO,SAAS,UAAU,KAAA,EAA6B;AACrD,EAAA,MAAM,MAAA,GAAS,YAAY,KAAK,CAAA;AAChC,EAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,IAAA,EAAM,OAAO,IAAA,EAAM,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,EACjE;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,WAAW,YAAA,CAAa,MAAA,CAAO,KAAK,CAAA,EAAE;AAC3D","file":"chunk-MESOO5GZ.js","sourcesContent":["import { CEP_MASK_PATTERN } from './constants.js';\n\n/** Mask XXXXX-XXX (BR-CEP-004). */\nexport function applyCepMask(canonical: string): string {\n const match = CEP_MASK_PATTERN.exec(canonical);\n if (!match) {\n throw new Error('CEP must have exactly 8 digits to apply mask');\n }\n return `${match[1]}-${match[2]}`;\n}\n","import { applyCepMask } from '../core/cep/mask.js';\nimport { validateCep } from '../core/cep/index.js';\nimport type { FormatResult } from '../types/validation-result.js';\n\nexport function formatCep(input: string): FormatResult {\n const result = validateCep(input);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n return { ok: true, formatted: applyCepMask(result.value) };\n}\n"]}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { applyFixes } from './chunk-5V6N4JWQ.js';
|
|
2
|
+
import { validateRenavam } from './chunk-I66ZRSEN.js';
|
|
3
|
+
import { validateTelefone } from './chunk-EFEE6CMO.js';
|
|
4
|
+
import { validateTituloEleitor } from './chunk-CSVGWTCG.js';
|
|
5
|
+
import { validateInscricaoEstadual } from './chunk-665E36SC.js';
|
|
6
|
+
import { validateIeSpRural } from './chunk-CDNOUZEI.js';
|
|
7
|
+
import { validateNfeChave } from './chunk-AO6UTQ4A.js';
|
|
8
|
+
import { validatePisPasep } from './chunk-JLCQ7MGC.js';
|
|
9
|
+
import { validatePlaca } from './chunk-3LMDBXU6.js';
|
|
10
|
+
import { validateBoleto } from './chunk-AU6TW3GH.js';
|
|
11
|
+
import { validateCpf } from './chunk-63G7QO73.js';
|
|
12
|
+
import { validateCartaoCredito } from './chunk-ANWQBKGN.js';
|
|
13
|
+
import { validateCep } from './chunk-TE6NSONR.js';
|
|
14
|
+
import { validateCnh } from './chunk-YNVMVDFN.js';
|
|
15
|
+
import { validateCnpj } from './chunk-FBARVLLP.js';
|
|
16
|
+
|
|
17
|
+
// src/sanitize/index.ts
|
|
18
|
+
function sanitize(raw, type, options = {}) {
|
|
19
|
+
const { value: fixed, fixes } = applyFixes(raw, type);
|
|
20
|
+
if (type === "inscricao-estadual" && !options.uf) {
|
|
21
|
+
return {
|
|
22
|
+
ok: false,
|
|
23
|
+
code: "UNSUPPORTED_FORMAT",
|
|
24
|
+
message: "UF is required for inscricao-estadual sanitization"
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
const validation = validateFixed(fixed, type, options.uf);
|
|
28
|
+
if (!validation.ok) {
|
|
29
|
+
return { ok: false, code: validation.code, message: validation.message };
|
|
30
|
+
}
|
|
31
|
+
return { ok: true, value: validation.value, fixes };
|
|
32
|
+
}
|
|
33
|
+
function validateFixed(value, type, uf) {
|
|
34
|
+
switch (type) {
|
|
35
|
+
case "cpf": {
|
|
36
|
+
const result = validateCpf(value);
|
|
37
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
38
|
+
}
|
|
39
|
+
case "cnpj": {
|
|
40
|
+
const result = validateCnpj(value);
|
|
41
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
42
|
+
}
|
|
43
|
+
case "cep": {
|
|
44
|
+
const result = validateCep(value);
|
|
45
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
46
|
+
}
|
|
47
|
+
case "placa": {
|
|
48
|
+
const result = validatePlaca(value);
|
|
49
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
50
|
+
}
|
|
51
|
+
case "pis-pasep": {
|
|
52
|
+
const result = validatePisPasep(value);
|
|
53
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
54
|
+
}
|
|
55
|
+
case "telefone": {
|
|
56
|
+
const result = validateTelefone(value);
|
|
57
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
58
|
+
}
|
|
59
|
+
case "cnh": {
|
|
60
|
+
const result = validateCnh(value);
|
|
61
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
62
|
+
}
|
|
63
|
+
case "renavam": {
|
|
64
|
+
const result = validateRenavam(value);
|
|
65
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
66
|
+
}
|
|
67
|
+
case "titulo-eleitor": {
|
|
68
|
+
const result = validateTituloEleitor(value);
|
|
69
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
70
|
+
}
|
|
71
|
+
case "nfe-chave": {
|
|
72
|
+
const result = validateNfeChave(value);
|
|
73
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
74
|
+
}
|
|
75
|
+
case "boleto": {
|
|
76
|
+
const result = validateBoleto(value);
|
|
77
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
78
|
+
}
|
|
79
|
+
case "cartao-credito": {
|
|
80
|
+
const result = validateCartaoCredito(value);
|
|
81
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
82
|
+
}
|
|
83
|
+
case "inscricao-estadual": {
|
|
84
|
+
const result = validateInscricaoEstadual(value, { uf });
|
|
85
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
86
|
+
}
|
|
87
|
+
case "inscricao-estadual-produtor-rural": {
|
|
88
|
+
const result = validateIeSpRural(value);
|
|
89
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
90
|
+
}
|
|
91
|
+
default: {
|
|
92
|
+
const _exhaustive = type;
|
|
93
|
+
return { ok: false, code: "UNSUPPORTED_FORMAT", message: `Unsupported type: ${String(_exhaustive)}` };
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export { sanitize };
|
|
99
|
+
//# sourceMappingURL=chunk-MKYCKCZ6.js.map
|
|
100
|
+
//# sourceMappingURL=chunk-MKYCKCZ6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/sanitize/index.ts"],"names":[],"mappings":"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","file":"chunk-MKYCKCZ6.js","sourcesContent":["/**\n * ETL-style document sanitization — applies fixes then validates (BR-SANITIZE-001).\n * @see docs/VALIDATION-RULES.md\n */\nimport { validateBoleto } from '../core/boleto/index.js';\nimport { validateCartaoCredito } from '../core/cartao-credito/index.js';\nimport { validateCep } from '../core/cep/index.js';\nimport { validateCnh } from '../core/cnh/index.js';\nimport { validateCnpj } from '../core/cnpj/index.js';\nimport { validateCpf } from '../core/cpf/index.js';\nimport { validateInscricaoEstadual } from '../core/inscricao-estadual/index.js';\nimport { validateIeSpRural } from '../core/inscricao-estadual/sp-rural.js';\nimport { validateNfeChave } from '../core/nfe-chave/index.js';\nimport { validatePisPasep } from '../core/pis-pasep/index.js';\nimport { validatePlaca } from '../core/placa/index.js';\nimport { validateRenavam } from '../core/renavam/index.js';\nimport { validateTelefone } from '../core/telefone/index.js';\nimport { validateTituloEleitor } from '../core/titulo-eleitor/index.js';\nimport type { UfCode, ValidationErrorCode } from '../types/validation-result.js';\nimport { applyFixes } from './fixes.js';\n\nexport type SanitizableDocumentType =\n | 'cpf'\n | 'cnpj'\n | 'cep'\n | 'placa'\n | 'pis-pasep'\n | 'telefone'\n | 'cnh'\n | 'renavam'\n | 'titulo-eleitor'\n | 'nfe-chave'\n | 'boleto'\n | 'cartao-credito'\n | 'inscricao-estadual'\n | 'inscricao-estadual-produtor-rural';\n\nexport type SanitizeOptions = {\n uf?: UfCode;\n};\n\nexport type SanitizeSuccess = {\n ok: true;\n value: string;\n fixes: string[];\n};\n\nexport type SanitizeFailure = {\n ok: false;\n code: ValidationErrorCode;\n message: string;\n};\n\nexport type SanitizeResult = SanitizeSuccess | SanitizeFailure;\n\nexport type { FixResult } from './fixes.js';\n\ntype ValidateFixedResult =\n | { ok: true; value: string }\n | { ok: false; code: ValidationErrorCode; message: string };\n\nexport function sanitize(\n raw: string,\n type: SanitizableDocumentType,\n options: SanitizeOptions = {},\n): SanitizeResult {\n const { value: fixed, fixes } = applyFixes(raw, type);\n\n if (type === 'inscricao-estadual' && !options.uf) {\n return {\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: 'UF is required for inscricao-estadual sanitization',\n };\n }\n\n const validation = validateFixed(fixed, type, options.uf);\n if (!validation.ok) {\n return { ok: false, code: validation.code, message: validation.message };\n }\n\n return { ok: true, value: validation.value, fixes };\n}\n\nfunction validateFixed(value: string, type: SanitizableDocumentType, uf?: UfCode): ValidateFixedResult {\n switch (type) {\n case 'cpf': {\n const result = validateCpf(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cnpj': {\n const result = validateCnpj(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cep': {\n const result = validateCep(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'placa': {\n const result = validatePlaca(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'pis-pasep': {\n const result = validatePisPasep(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'telefone': {\n const result = validateTelefone(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cnh': {\n const result = validateCnh(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'renavam': {\n const result = validateRenavam(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'titulo-eleitor': {\n const result = validateTituloEleitor(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'nfe-chave': {\n const result = validateNfeChave(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'boleto': {\n const result = validateBoleto(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cartao-credito': {\n const result = validateCartaoCredito(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'inscricao-estadual': {\n const result = validateInscricaoEstadual(value, { uf: uf as UfCode });\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'inscricao-estadual-produtor-rural': {\n const result = validateIeSpRural(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n default: {\n const _exhaustive: never = type;\n return { ok: false, code: 'UNSUPPORTED_FORMAT', message: `Unsupported type: ${String(_exhaustive)}` };\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { validateRenavam } from './chunk-I66ZRSEN.js';
|
|
2
|
+
import { validateTelefone } from './chunk-EFEE6CMO.js';
|
|
3
|
+
import { validateTituloEleitor } from './chunk-CSVGWTCG.js';
|
|
4
|
+
import { validateInscricaoEstadual } from './chunk-665E36SC.js';
|
|
5
|
+
import { validateIeSpRural } from './chunk-CDNOUZEI.js';
|
|
6
|
+
import { validateNfeChave } from './chunk-AO6UTQ4A.js';
|
|
7
|
+
import { validatePisPasep } from './chunk-JLCQ7MGC.js';
|
|
8
|
+
import { validatePlaca } from './chunk-3LMDBXU6.js';
|
|
9
|
+
import { validateBoleto } from './chunk-AU6TW3GH.js';
|
|
10
|
+
import { validateBrCode } from './chunk-V7UJ55KW.js';
|
|
11
|
+
import { validatePixKey } from './chunk-H3MLGGFI.js';
|
|
12
|
+
import { validateCpf } from './chunk-63G7QO73.js';
|
|
13
|
+
import { validateCartaoCredito } from './chunk-ANWQBKGN.js';
|
|
14
|
+
import { validateCep } from './chunk-TE6NSONR.js';
|
|
15
|
+
import { validateCnh } from './chunk-YNVMVDFN.js';
|
|
16
|
+
import { validateCnpj } from './chunk-FBARVLLP.js';
|
|
17
|
+
|
|
18
|
+
// src/platform/validate-dispatch.ts
|
|
19
|
+
function validateForPlatform(input, type, options = {}) {
|
|
20
|
+
if (type === "inscricao-estadual" && !options.uf) {
|
|
21
|
+
return {
|
|
22
|
+
ok: false,
|
|
23
|
+
code: "UNSUPPORTED_FORMAT",
|
|
24
|
+
message: "UF is required for inscricao-estadual validation"
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
switch (type) {
|
|
28
|
+
case "cpf": {
|
|
29
|
+
const result = validateCpf(input);
|
|
30
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
31
|
+
}
|
|
32
|
+
case "cnpj": {
|
|
33
|
+
const result = validateCnpj(input);
|
|
34
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
35
|
+
}
|
|
36
|
+
case "cep": {
|
|
37
|
+
const result = validateCep(input);
|
|
38
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
39
|
+
}
|
|
40
|
+
case "placa": {
|
|
41
|
+
const result = validatePlaca(input);
|
|
42
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
43
|
+
}
|
|
44
|
+
case "pis-pasep": {
|
|
45
|
+
const result = validatePisPasep(input);
|
|
46
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
47
|
+
}
|
|
48
|
+
case "telefone": {
|
|
49
|
+
const result = validateTelefone(input);
|
|
50
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
51
|
+
}
|
|
52
|
+
case "cnh": {
|
|
53
|
+
const result = validateCnh(input);
|
|
54
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
55
|
+
}
|
|
56
|
+
case "renavam": {
|
|
57
|
+
const result = validateRenavam(input);
|
|
58
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
59
|
+
}
|
|
60
|
+
case "titulo-eleitor": {
|
|
61
|
+
const result = validateTituloEleitor(input);
|
|
62
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
63
|
+
}
|
|
64
|
+
case "nfe-chave": {
|
|
65
|
+
const result = validateNfeChave(input);
|
|
66
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
67
|
+
}
|
|
68
|
+
case "boleto": {
|
|
69
|
+
const result = validateBoleto(input);
|
|
70
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
71
|
+
}
|
|
72
|
+
case "cartao-credito": {
|
|
73
|
+
const result = validateCartaoCredito(input);
|
|
74
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
75
|
+
}
|
|
76
|
+
case "inscricao-estadual": {
|
|
77
|
+
const result = validateInscricaoEstadual(input, { uf: options.uf });
|
|
78
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
79
|
+
}
|
|
80
|
+
case "inscricao-estadual-produtor-rural": {
|
|
81
|
+
const result = validateIeSpRural(input);
|
|
82
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
83
|
+
}
|
|
84
|
+
case "pix": {
|
|
85
|
+
const result = validatePixKey(input);
|
|
86
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
87
|
+
}
|
|
88
|
+
case "brcode": {
|
|
89
|
+
const result = validateBrCode(input);
|
|
90
|
+
return result.ok ? { ok: true, value: result.value } : result;
|
|
91
|
+
}
|
|
92
|
+
default: {
|
|
93
|
+
const _exhaustive = type;
|
|
94
|
+
return {
|
|
95
|
+
ok: false,
|
|
96
|
+
code: "UNSUPPORTED_FORMAT",
|
|
97
|
+
message: `Unsupported type: ${String(_exhaustive)}`
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// src/batch/index.ts
|
|
104
|
+
function batch(inputs, type, options = {}) {
|
|
105
|
+
const valid = [];
|
|
106
|
+
const invalid = [];
|
|
107
|
+
inputs.forEach((input, index) => {
|
|
108
|
+
const result = validateForPlatform(input, type, options);
|
|
109
|
+
if (result.ok) {
|
|
110
|
+
valid.push({ index, input, value: result.value });
|
|
111
|
+
} else {
|
|
112
|
+
invalid.push({ index, input, code: result.code, message: result.message });
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
return {
|
|
116
|
+
valid,
|
|
117
|
+
invalid,
|
|
118
|
+
summary: {
|
|
119
|
+
total: inputs.length,
|
|
120
|
+
valid: valid.length,
|
|
121
|
+
invalid: invalid.length
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export { batch };
|
|
127
|
+
//# sourceMappingURL=chunk-N5CER3QZ.js.map
|
|
128
|
+
//# sourceMappingURL=chunk-N5CER3QZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/platform/validate-dispatch.ts","../src/batch/index.ts"],"names":[],"mappings":"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","file":"chunk-N5CER3QZ.js","sourcesContent":["import { validateBrCode } from '../core/brcode/index.js';\nimport { validateBoleto } from '../core/boleto/index.js';\nimport { validateCartaoCredito } from '../core/cartao-credito/index.js';\nimport { validateCep } from '../core/cep/index.js';\nimport { validateCnh } from '../core/cnh/index.js';\nimport { validateCnpj } from '../core/cnpj/index.js';\nimport { validateCpf } from '../core/cpf/index.js';\nimport { validateInscricaoEstadual } from '../core/inscricao-estadual/index.js';\nimport { validateIeSpRural } from '../core/inscricao-estadual/sp-rural.js';\nimport { validateNfeChave } from '../core/nfe-chave/index.js';\nimport { validatePisPasep } from '../core/pis-pasep/index.js';\nimport { validatePlaca } from '../core/placa/index.js';\nimport { validatePixKey } from '../core/pix/index.js';\nimport { validateRenavam } from '../core/renavam/index.js';\nimport { validateTelefone } from '../core/telefone/index.js';\nimport { validateTituloEleitor } from '../core/titulo-eleitor/index.js';\nimport type { UfCode, ValidationErrorCode } from '../types/validation-result.js';\nimport type { PlatformDocumentType, PlatformOptions } from './types.js';\n\nexport type ValidateDispatchSuccess = { ok: true; value: string };\nexport type ValidateDispatchFailure = {\n ok: false;\n code: ValidationErrorCode;\n message: string;\n};\nexport type ValidateDispatchResult = ValidateDispatchSuccess | ValidateDispatchFailure;\n\nexport function validateForPlatform(\n input: string,\n type: PlatformDocumentType,\n options: PlatformOptions = {},\n): ValidateDispatchResult {\n if (type === 'inscricao-estadual' && !options.uf) {\n return {\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: 'UF is required for inscricao-estadual validation',\n };\n }\n\n switch (type) {\n case 'cpf': {\n const result = validateCpf(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cnpj': {\n const result = validateCnpj(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cep': {\n const result = validateCep(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'placa': {\n const result = validatePlaca(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'pis-pasep': {\n const result = validatePisPasep(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'telefone': {\n const result = validateTelefone(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cnh': {\n const result = validateCnh(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'renavam': {\n const result = validateRenavam(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'titulo-eleitor': {\n const result = validateTituloEleitor(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'nfe-chave': {\n const result = validateNfeChave(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'boleto': {\n const result = validateBoleto(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cartao-credito': {\n const result = validateCartaoCredito(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'inscricao-estadual': {\n const result = validateInscricaoEstadual(input, { uf: options.uf as UfCode });\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'inscricao-estadual-produtor-rural': {\n const result = validateIeSpRural(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'pix': {\n const result = validatePixKey(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'brcode': {\n const result = validateBrCode(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n default: {\n const _exhaustive: never = type;\n return {\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: `Unsupported type: ${String(_exhaustive)}`,\n };\n }\n }\n}\n","/**\n * Batch validation — maps `validate*` per row, never throws (BR-BATCH-001).\n * @see docs/OFFICIAL-SOURCES.md\n */\nimport { validateForPlatform } from '../platform/validate-dispatch.js';\nimport type { PlatformDocumentType, PlatformOptions } from '../platform/types.js';\nimport type { ValidationErrorCode } from '../types/validation-result.js';\n\nexport type BatchValidEntry = {\n index: number;\n input: string;\n value: string;\n};\n\nexport type BatchInvalidEntry = {\n index: number;\n input: string;\n code: ValidationErrorCode;\n message: string;\n};\n\nexport type BatchSummary = {\n total: number;\n valid: number;\n invalid: number;\n};\n\nexport type BatchResult = {\n valid: BatchValidEntry[];\n invalid: BatchInvalidEntry[];\n summary: BatchSummary;\n};\n\nexport function batch(\n inputs: readonly string[],\n type: PlatformDocumentType,\n options: PlatformOptions = {},\n): BatchResult {\n const valid: BatchValidEntry[] = [];\n const invalid: BatchInvalidEntry[] = [];\n\n inputs.forEach((input, index) => {\n const result = validateForPlatform(input, type, options);\n if (result.ok) {\n valid.push({ index, input, value: result.value });\n } else {\n invalid.push({ index, input, code: result.code, message: result.message });\n }\n });\n\n return {\n valid,\n invalid,\n summary: {\n total: inputs.length,\n valid: valid.length,\n invalid: invalid.length,\n },\n };\n}\n"]}
|