@br-validators/core 1.5.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.
- package/README.md +14 -10
- package/dist/batch.d.ts +3 -3
- package/dist/batch.js +24 -22
- package/dist/boleto.d.ts +2 -2
- package/dist/boleto.js +5 -5
- package/dist/brcode.d.ts +2 -2
- package/dist/brcode.js +7 -7
- 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 +3 -3
- package/dist/{chunk-NT3TNF3R.js → chunk-24JBIV3A.js} +3 -3
- package/dist/{chunk-NT3TNF3R.js.map → chunk-24JBIV3A.js.map} +1 -1
- package/dist/{chunk-XHDRWM46.js → chunk-26MSDS43.js} +3 -3
- package/dist/{chunk-XHDRWM46.js.map → chunk-26MSDS43.js.map} +1 -1
- package/dist/{chunk-3LMDBXU6.js → chunk-2JSOXG2M.js} +3 -3
- package/dist/{chunk-3LMDBXU6.js.map → chunk-2JSOXG2M.js.map} +1 -1
- package/dist/{chunk-AU6TW3GH.js → chunk-3DLNIUBY.js} +5 -5
- package/dist/{chunk-AU6TW3GH.js.map → chunk-3DLNIUBY.js.map} +1 -1
- package/dist/{chunk-OOUEURR7.js → chunk-3JAYOBSG.js} +3 -3
- package/dist/{chunk-OOUEURR7.js.map → chunk-3JAYOBSG.js.map} +1 -1
- package/dist/chunk-3WXLMV7Q.js +3 -0
- package/dist/chunk-3WXLMV7Q.js.map +1 -0
- package/dist/{chunk-NUQSMT4Y.js → chunk-4NFEM2SU.js} +9 -3
- package/dist/chunk-4NFEM2SU.js.map +1 -0
- package/dist/{chunk-ZYWBWXTJ.js → chunk-6VNCWSHA.js} +34 -17
- package/dist/chunk-6VNCWSHA.js.map +1 -0
- package/dist/{chunk-MZDCVTN6.js → chunk-72EZ2VUO.js} +4 -4
- package/dist/{chunk-MZDCVTN6.js.map → chunk-72EZ2VUO.js.map} +1 -1
- package/dist/{chunk-VKG7UEN5.js → chunk-A5UHVGRB.js} +3 -3
- package/dist/{chunk-VKG7UEN5.js.map → chunk-A5UHVGRB.js.map} +1 -1
- package/dist/{chunk-EN7PVDYB.js → chunk-C7WXL7UR.js} +4 -4
- package/dist/{chunk-EN7PVDYB.js.map → chunk-C7WXL7UR.js.map} +1 -1
- package/dist/{chunk-X7XQRG4X.js → chunk-CGN5ST5W.js} +5 -3
- package/dist/{chunk-X7XQRG4X.js.map → chunk-CGN5ST5W.js.map} +1 -1
- package/dist/{chunk-P6TOL5VY.js → chunk-CJKVA7VS.js} +3 -3
- package/dist/{chunk-P6TOL5VY.js.map → chunk-CJKVA7VS.js.map} +1 -1
- package/dist/{chunk-KGCLQ7QX.js → chunk-CNJ4DIYS.js} +3 -3
- package/dist/{chunk-KGCLQ7QX.js.map → chunk-CNJ4DIYS.js.map} +1 -1
- package/dist/{chunk-N6RQICAP.js → chunk-CYBWPBXJ.js} +4 -4
- package/dist/{chunk-N6RQICAP.js.map → chunk-CYBWPBXJ.js.map} +1 -1
- package/dist/{chunk-SDEJD2J7.js → chunk-DLXE3RNI.js} +3 -3
- package/dist/{chunk-SDEJD2J7.js.map → chunk-DLXE3RNI.js.map} +1 -1
- package/dist/chunk-DVA6QQUF.js +22 -0
- package/dist/chunk-DVA6QQUF.js.map +1 -0
- package/dist/{chunk-54UWHK5L.js → chunk-EGDZGSHA.js} +3 -3
- package/dist/{chunk-54UWHK5L.js.map → chunk-EGDZGSHA.js.map} +1 -1
- package/dist/{chunk-O3T7PUBI.js → chunk-F5OHOWZU.js} +3 -3
- package/dist/{chunk-O3T7PUBI.js.map → chunk-F5OHOWZU.js.map} +1 -1
- package/dist/{chunk-RMTHCPIV.js → chunk-FLZGOGER.js} +4 -4
- package/dist/{chunk-RMTHCPIV.js.map → chunk-FLZGOGER.js.map} +1 -1
- package/dist/chunk-G557DGIX.js +398 -0
- package/dist/chunk-G557DGIX.js.map +1 -0
- package/dist/{chunk-QU4HTXM5.js → chunk-HZWERBZB.js} +37 -17
- package/dist/chunk-HZWERBZB.js.map +1 -0
- package/dist/{chunk-AO6UTQ4A.js → chunk-IJ2DAVSD.js} +3 -3
- package/dist/{chunk-AO6UTQ4A.js.map → chunk-IJ2DAVSD.js.map} +1 -1
- package/dist/{chunk-MAM4U3UR.js → chunk-IRERFIL5.js} +3 -3
- package/dist/{chunk-MAM4U3UR.js.map → chunk-IRERFIL5.js.map} +1 -1
- package/dist/{chunk-CSRBRKXY.js → chunk-ISMIJ5DH.js} +3 -3
- package/dist/{chunk-CSRBRKXY.js.map → chunk-ISMIJ5DH.js.map} +1 -1
- package/dist/{chunk-L7PF4KD6.js → chunk-LBAWZ4EV.js} +3 -3
- package/dist/{chunk-L7PF4KD6.js.map → chunk-LBAWZ4EV.js.map} +1 -1
- package/dist/{chunk-NXS343IJ.js → chunk-LCY6USO2.js} +35 -18
- package/dist/chunk-LCY6USO2.js.map +1 -0
- package/dist/{chunk-XWHGXSQV.js → chunk-LPGSPM53.js} +3 -3
- package/dist/{chunk-XWHGXSQV.js.map → chunk-LPGSPM53.js.map} +1 -1
- package/dist/{chunk-5EJAENH5.js → chunk-MDFK6L72.js} +3 -3
- package/dist/{chunk-5EJAENH5.js.map → chunk-MDFK6L72.js.map} +1 -1
- package/dist/chunk-NQIDHQ6U.js +3 -0
- package/dist/chunk-NQIDHQ6U.js.map +1 -0
- package/dist/{chunk-VWS4AWCI.js → chunk-OH4CXHFH.js} +13 -3
- package/dist/chunk-OH4CXHFH.js.map +1 -0
- package/dist/{chunk-B6A7VF4R.js → chunk-OWD47AWI.js} +3 -3
- package/dist/{chunk-B6A7VF4R.js.map → chunk-OWD47AWI.js.map} +1 -1
- package/dist/{chunk-6UEXR2MQ.js → chunk-OY53JDPO.js} +40 -19
- package/dist/chunk-OY53JDPO.js.map +1 -0
- package/dist/{chunk-665E36SC.js → chunk-P3EJRH4P.js} +4 -4
- package/dist/{chunk-665E36SC.js.map → chunk-P3EJRH4P.js.map} +1 -1
- package/dist/{chunk-GWAYWBHN.js → chunk-PTZR6C7Y.js} +14 -6
- package/dist/chunk-PTZR6C7Y.js.map +1 -0
- package/dist/{chunk-E2EFGMWA.js → chunk-QSSKPIG5.js} +3 -3
- package/dist/{chunk-E2EFGMWA.js.map → chunk-QSSKPIG5.js.map} +1 -1
- package/dist/{chunk-FBARVLLP.js → chunk-RSJK46ZE.js} +3 -3
- package/dist/{chunk-FBARVLLP.js.map → chunk-RSJK46ZE.js.map} +1 -1
- package/dist/{chunk-JSNXKBZA.js → chunk-SH6K4PUU.js} +3 -3
- package/dist/{chunk-JSNXKBZA.js.map → chunk-SH6K4PUU.js.map} +1 -1
- package/dist/{chunk-EQV33L7H.js → chunk-T5NFIPTU.js} +3 -3
- package/dist/{chunk-EQV33L7H.js.map → chunk-T5NFIPTU.js.map} +1 -1
- package/dist/{chunk-CDNOUZEI.js → chunk-TAOFFAG3.js} +3 -3
- package/dist/{chunk-CDNOUZEI.js.map → chunk-TAOFFAG3.js.map} +1 -1
- package/dist/{chunk-YD5MPZWY.js → chunk-TTDHGQEC.js} +3 -3
- package/dist/{chunk-YD5MPZWY.js.map → chunk-TTDHGQEC.js.map} +1 -1
- package/dist/{chunk-JLCQ7MGC.js → chunk-ULNZHOMA.js} +3 -3
- package/dist/{chunk-JLCQ7MGC.js.map → chunk-ULNZHOMA.js.map} +1 -1
- package/dist/{chunk-KLONQL76.js → chunk-UTSZKJAL.js} +7 -7
- package/dist/{chunk-KLONQL76.js.map → chunk-UTSZKJAL.js.map} +1 -1
- package/dist/{chunk-ANWQBKGN.js → chunk-VDCITFZG.js} +3 -3
- package/dist/{chunk-ANWQBKGN.js.map → chunk-VDCITFZG.js.map} +1 -1
- package/dist/chunk-VE2XZSKP.js +150 -0
- package/dist/chunk-VE2XZSKP.js.map +1 -0
- package/dist/{chunk-YNUYQKUW.js → chunk-VJT3UGN2.js} +34 -19
- package/dist/chunk-VJT3UGN2.js.map +1 -0
- package/dist/{chunk-Q5QBTTNC.js → chunk-W2K4RQ3M.js} +33 -33
- package/dist/{chunk-Q5QBTTNC.js.map → chunk-W2K4RQ3M.js.map} +1 -1
- package/dist/{chunk-VSW3NBJQ.js → chunk-WAYYRZ2L.js} +3 -3
- package/dist/{chunk-VSW3NBJQ.js.map → chunk-WAYYRZ2L.js.map} +1 -1
- package/dist/{chunk-JKDU7QYP.js → chunk-Z7KH65RZ.js} +3 -3
- package/dist/{chunk-JKDU7QYP.js.map → chunk-Z7KH65RZ.js.map} +1 -1
- package/dist/cnh.d.ts +2 -2
- package/dist/cnh.js +3 -3
- package/dist/cnpj.d.ts +2 -2
- package/dist/cnpj.js +4 -4
- package/dist/compare.d.ts +3 -3
- package/dist/compare.js +26 -24
- package/dist/cpf.d.ts +2 -2
- package/dist/cpf.js +4 -4
- package/dist/detect.d.ts +2 -2
- package/dist/detect.js +22 -21
- package/dist/diff.d.ts +3 -3
- package/dist/diff.js +26 -24
- package/dist/generate.d.ts +1 -1
- package/dist/generate.js +35 -35
- package/dist/{index-BEJFgDXj.d.ts → index-CJ5ACErT.d.ts} +2 -2
- package/dist/index.d.ts +8 -6
- package/dist/index.js +58 -53
- package/dist/index.js.map +1 -1
- package/dist/{inscricao-estadual-produtor-rural-BXFVQscj.d.ts → inscricao-estadual-produtor-rural-BNAyLQPY.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 +3 -3
- package/dist/mask.js +36 -33
- package/dist/nfe-chave.d.ts +2 -2
- package/dist/nfe-chave.js +3 -3
- package/dist/pis-pasep.d.ts +2 -2
- package/dist/pis-pasep.js +3 -3
- package/dist/{pix-B4habHLG.d.ts → pix-QsM0lMas.d.ts} +1 -1
- package/dist/pix.d.ts +2 -2
- package/dist/pix.js +7 -7
- package/dist/placa.d.ts +2 -2
- package/dist/placa.js +3 -3
- package/dist/processo-judicial.d.ts +71 -0
- package/dist/processo-judicial.js +6 -0
- package/dist/processo-judicial.js.map +1 -0
- package/dist/renavam.d.ts +2 -2
- package/dist/renavam.js +3 -3
- package/dist/rg.d.ts +69 -0
- package/dist/rg.js +5 -0
- package/dist/rg.js.map +1 -0
- package/dist/sanitize.d.ts +2 -2
- package/dist/sanitize.js +21 -19
- package/dist/telefone.d.ts +2 -2
- package/dist/telefone.js +3 -3
- package/dist/titulo-eleitor.d.ts +2 -2
- package/dist/titulo-eleitor.js +3 -3
- package/dist/{types-MXifBcV5.d.ts → types-CQvCmvGu.d.ts} +2 -2
- package/dist/{validation-result-BaI2Xder.d.ts → validation-result-hfVg2-Mc.d.ts} +23 -3
- package/package.json +11 -1
- package/dist/chunk-6UEXR2MQ.js.map +0 -1
- package/dist/chunk-GWAYWBHN.js.map +0 -1
- package/dist/chunk-NUQSMT4Y.js.map +0 -1
- package/dist/chunk-NXS343IJ.js.map +0 -1
- package/dist/chunk-QU4HTXM5.js.map +0 -1
- package/dist/chunk-VWS4AWCI.js.map +0 -1
- package/dist/chunk-YNUYQKUW.js.map +0 -1
- package/dist/chunk-ZYWBWXTJ.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/inscricao-estadual/df.ts","../src/core/inscricao-estadual/mt.ts","../src/core/inscricao-estadual/sp.ts","../src/core/inscricao-estadual/ie-common.ts","../src/core/inscricao-estadual/ac.ts","../src/core/inscricao-estadual/al.ts","../src/core/inscricao-estadual/am.ts","../src/core/inscricao-estadual/ap.ts","../src/core/inscricao-estadual/ba.ts","../src/core/inscricao-estadual/ce.ts","../src/core/inscricao-estadual/es.ts","../src/core/inscricao-estadual/go.ts","../src/core/inscricao-estadual/ma.ts","../src/core/inscricao-estadual/mg.ts","../src/core/inscricao-estadual/ms.ts","../src/core/inscricao-estadual/pa.ts","../src/core/inscricao-estadual/pb.ts","../src/core/inscricao-estadual/pe.ts","../src/core/inscricao-estadual/pi.ts","../src/core/inscricao-estadual/pr.ts","../src/core/inscricao-estadual/rj.ts","../src/core/inscricao-estadual/rn.ts","../src/core/inscricao-estadual/ro.ts","../src/core/inscricao-estadual/rr.ts","../src/core/inscricao-estadual/rs.ts","../src/core/inscricao-estadual/sc.ts","../src/core/inscricao-estadual/se.ts","../src/core/inscricao-estadual/to.ts","../src/core/inscricao-estadual/index.ts"],"names":["failure","UF","LENGTH"],"mappings":"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","file":"chunk-665E36SC.js","sourcesContent":["/**\n * Distrito Federal IE validation — CF/DF 13 digits, dual modulo-11 DVs.\n * @see BR-IE-DF-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { brandInscricaoEstadual } from '../../types/validation-result.js';\nimport { IE_DF_DV1_WEIGHTS, IE_DF_DV2_WEIGHTS, IE_DF_LENGTH, IE_DF_PREFIX } from './constants.js';\nimport { computeIeDfCheckDigit } from './modulo-ie.js';\n\ntype FailedResult = Extract<InscricaoEstadualValidationResult, { ok: false }>;\n\nconst DF_MASK_PATTERN = /^[0-9.-]+$/;\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message, uf: 'DF' };\n}\n\nexport function stripIeDf(input: string): string {\n return input.replace(/\\D/g, '');\n}\n\nexport function validateIeDf(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n if (trimmed.length === 0) {\n return { ok: false, code: 'EMPTY_INPUT', message: 'Inscrição Estadual input is empty', uf: 'DF' };\n }\n\n if (!DF_MASK_PATTERN.test(trimmed)) {\n return failure('INVALID_CHARACTER', 'DF Inscrição Estadual contains invalid characters');\n }\n\n const stripped = stripIeDf(trimmed);\n if (stripped.length === 12) {\n return failure('INVALID_LENGTH', 'DF Inscrição Estadual legacy 12-digit format is not supported; use 13 digits');\n }\n\n if (stripped.length !== IE_DF_LENGTH) {\n return failure('INVALID_LENGTH', `DF Inscrição Estadual must have ${IE_DF_LENGTH} digits after normalization`);\n }\n\n if (!stripped.startsWith(IE_DF_PREFIX)) {\n return failure('UNSUPPORTED_FORMAT', 'DF Inscrição Estadual must start with prefix 07');\n }\n\n const dv1 = computeIeDfCheckDigit(stripped.slice(0, 11), IE_DF_DV1_WEIGHTS);\n const dv2 = computeIeDfCheckDigit(stripped.slice(0, 11), IE_DF_DV2_WEIGHTS, true, dv1);\n\n if (Number(stripped.charAt(11)) !== dv1 || Number(stripped.charAt(12)) !== dv2) {\n return failure('INVALID_CHECK_DIGIT', 'DF Inscrição Estadual check digits are invalid');\n }\n\n return {\n ok: true,\n value: brandInscricaoEstadual(stripped),\n uf: 'DF',\n format: 'inscricao-estadual',\n };\n}\n","/**\n * Mato Grosso IE validation — CCE/MT 9-digit + legacy 11-digit SINTEGRA pad.\n * @see BR-IE-MT-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { brandInscricaoEstadual } from '../../types/validation-result.js';\nimport {\n IE_MT_CANONICAL_LENGTH,\n IE_MT_LEGACY_LENGTH,\n IE_MT_PREFIX,\n} from './constants.js';\nimport { computeIeMtCheckDigit } from './modulo-ie.js';\n\ntype FailedResult = Extract<InscricaoEstadualValidationResult, { ok: false }>;\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message, uf: 'MT' };\n}\n\nexport function stripIeMt(input: string): string {\n return input.replace(/\\D/g, '');\n}\n\nexport function normalizeMtToCanonical(padded11: string): string {\n const trimmed = padded11.replace(/^0+/, '');\n return trimmed.length === IE_MT_CANONICAL_LENGTH ? trimmed : padded11.slice(-IE_MT_CANONICAL_LENGTH);\n}\n\nexport function padMtLegacy(stripped: string): string | null {\n if (stripped.length < IE_MT_CANONICAL_LENGTH || stripped.length > IE_MT_LEGACY_LENGTH) {\n return null;\n }\n return stripped.padStart(IE_MT_LEGACY_LENGTH, '0');\n}\n\nexport function validateIeMt(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n if (trimmed.length === 0) {\n return { ok: false, code: 'EMPTY_INPUT', message: 'Inscrição Estadual input is empty', uf: 'MT' };\n }\n\n if (/[^0-9.\\-\\s]/.test(trimmed)) {\n return failure('INVALID_CHARACTER', 'MT Inscrição Estadual contains invalid characters');\n }\n\n const stripped = stripIeMt(trimmed);\n if (stripped.length < IE_MT_CANONICAL_LENGTH || stripped.length > IE_MT_LEGACY_LENGTH) {\n return failure(\n 'INVALID_LENGTH',\n `MT Inscrição Estadual must have ${IE_MT_CANONICAL_LENGTH} or ${IE_MT_LEGACY_LENGTH} digits after normalization`,\n );\n }\n\n const padded =\n stripped.length === IE_MT_LEGACY_LENGTH ? stripped : stripped.padStart(IE_MT_LEGACY_LENGTH, '0');\n const canonical = normalizeMtToCanonical(padded);\n if (!canonical.startsWith(IE_MT_PREFIX)) {\n return failure('UNSUPPORTED_FORMAT', 'MT Inscrição Estadual must start with prefix 13');\n }\n\n const expectedDv = computeIeMtCheckDigit(padded.slice(0, 10));\n if (Number(padded.charAt(10)) !== expectedDv) {\n return failure('INVALID_CHECK_DIGIT', 'MT Inscrição Estadual check digit is invalid');\n }\n\n return {\n ok: true,\n value: brandInscricaoEstadual(canonical),\n uf: 'MT',\n format: 'inscricao-estadual',\n };\n}\n","/**\n * São Paulo IE validation — dual modulo-11 DVs (SEFAZ 2012).\n * @see BR-IE-SP-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { brandInscricaoEstadual } from '../../types/validation-result.js';\nimport { IE_SP_DV1_WEIGHTS, IE_SP_DV2_WEIGHTS, IE_SP_LENGTH } from './constants.js';\nimport { computeIeSpCheckDigit } from './modulo-ie.js';\n\ntype FailedResult = Extract<InscricaoEstadualValidationResult, { ok: false }>;\n\nconst SP_MASK_PATTERN = /^[0-9.]+$/;\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message, uf: 'SP' };\n}\n\nexport function stripIeSp(input: string): string {\n return input.replace(/\\D/g, '');\n}\n\nexport function validateIeSp(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n if (trimmed.length === 0) {\n return { ok: false, code: 'EMPTY_INPUT', message: 'Inscrição Estadual input is empty', uf: 'SP' };\n }\n\n if (/[Pp]/.test(trimmed)) {\n return failure('UNSUPPORTED_FORMAT', 'SP rural IE format (P…) requires validateIeProdutorRural');\n }\n\n if (!SP_MASK_PATTERN.test(trimmed)) {\n return failure('INVALID_CHARACTER', 'SP Inscrição Estadual contains invalid characters');\n }\n\n const stripped = stripIeSp(trimmed);\n if (stripped.length !== IE_SP_LENGTH) {\n return failure('INVALID_LENGTH', `SP Inscrição Estadual must have ${IE_SP_LENGTH} digits after normalization`);\n }\n\n const dv1 = computeIeSpCheckDigit(stripped, IE_SP_DV1_WEIGHTS);\n const dv2 = computeIeSpCheckDigit(stripped, IE_SP_DV2_WEIGHTS);\n\n if (Number(stripped.charAt(8)) !== dv1 || Number(stripped.charAt(11)) !== dv2) {\n return failure('INVALID_CHECK_DIGIT', 'SP Inscrição Estadual check digits are invalid');\n }\n\n return {\n ok: true,\n value: brandInscricaoEstadual(stripped),\n uf: 'SP',\n format: 'inscricao-estadual',\n };\n}\n","/**\n * Shared helpers for per-UF IE validators.\n */\nimport type { InscricaoEstadualValidationResult, UfCode } from '../../types/validation-result.js';\nimport { brandInscricaoEstadual } from '../../types/validation-result.js';\n\nexport type IeFailedResult = Extract<InscricaoEstadualValidationResult, { ok: false }>;\n\nexport function stripIeDigits(input: string): string {\n return input.replace(/\\D/g, '');\n}\n\nexport function ieFailure(uf: UfCode, code: IeFailedResult['code'], message: string): IeFailedResult {\n return { ok: false, code, message, uf };\n}\n\nexport function ieEmptyInput(uf: UfCode): IeFailedResult {\n return { ok: false, code: 'EMPTY_INPUT', message: 'Inscrição Estadual input is empty', uf };\n}\n\nexport function ieSuccess(stripped: string, uf: UfCode): Extract<InscricaoEstadualValidationResult, { ok: true }> {\n return {\n ok: true,\n value: brandInscricaoEstadual(stripped),\n uf,\n format: 'inscricao-estadual',\n };\n}\n\nexport function checkTrimmedEmpty(trimmed: string, uf: UfCode): IeFailedResult | null {\n if (trimmed.length === 0) {\n return ieEmptyInput(uf);\n }\n return null;\n}\n\nexport function checkDigitChars(trimmed: string, uf: UfCode, pattern = /^[0-9.\\-\\s/]+$/): IeFailedResult | null {\n if (!pattern.test(trimmed)) {\n return ieFailure(uf, 'INVALID_CHARACTER', `${uf} Inscrição Estadual contains invalid characters`);\n }\n return null;\n}\n","/**\n * Acre IE validation — 13 digits, prefix 01, dual mod11 DVs.\n * @see BR-IE-AC-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { IE_AC_PREFIX } from './constants.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeAcCheckDigit } from './modulo-ie.js';\n\nconst UF = 'AC' as const;\nconst LENGTH = 13;\n\nexport function stripIeAc(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeAc(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeAc(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `AC Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n if (!stripped.startsWith(IE_AC_PREFIX)) {\n return ieFailure(UF, 'UNSUPPORTED_FORMAT', 'AC Inscrição Estadual must start with prefix 01');\n }\n\n const body = stripped.slice(0, 11);\n const firstDig = computeIeAcCheckDigit(body);\n const secondDig = computeIeAcCheckDigit(body + String(firstDig));\n const checkDigits = `${firstDig}${secondDig}`;\n\n if (stripped.slice(-2) !== checkDigits) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'AC Inscrição Estadual check digits are invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Alagoas IE validation — 9 digits, prefix 24, mod11 (SEFAZ-AL).\n * @see BR-IE-AL-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { IE_AL_PREFIX } from './constants.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeAlCheckDigit } from './modulo-ie.js';\n\nconst UF = 'AL' as const;\nconst LENGTH = 9;\n\nexport function stripIeAl(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeAl(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeAl(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `AL Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n if (!stripped.startsWith(IE_AL_PREFIX)) {\n return ieFailure(UF, 'UNSUPPORTED_FORMAT', 'AL Inscrição Estadual must start with prefix 24');\n }\n\n const body = stripped.slice(0, 8);\n const expected = computeIeAlCheckDigit(body);\n if (Number(stripped.charAt(8)) !== expected) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'AL Inscrição Estadual check digit is invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Amazonas IE validation — 9 digits, prefix 04.\n * @see BR-IE-AM-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeAmCheckDigit } from './modulo-ie.js';\n\nconst UF = 'AM' as const;\nconst LENGTH = 9;\n\nexport function stripIeAm(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeAm(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeAm(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `AM Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n const body = stripped.slice(0, 8);\n const expected = computeIeAmCheckDigit(body);\n if (Number(stripped.charAt(8)) !== expected) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'AM Inscrição Estadual check digit is invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Amapá IE validation — 9 digits, prefix 03, range-based constants.\n * @see BR-IE-AP-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { IE_AP_PREFIX } from './constants.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeApCheckDigit } from './modulo-ie.js';\n\nconst UF = 'AP' as const;\nconst LENGTH = 9;\n\nexport function stripIeAp(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeAp(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeAp(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `AP Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n if (!stripped.startsWith(IE_AP_PREFIX)) {\n return ieFailure(UF, 'UNSUPPORTED_FORMAT', 'AP Inscrição Estadual must start with prefix 03');\n }\n\n const body = stripped.slice(0, 8);\n const expected = computeIeApCheckDigit(body);\n if (Number(stripped.charAt(8)) !== expected) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'AP Inscrição Estadual check digit is invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Bahia IE validation — 8 or 9 digits, dual DV, mod10/mod11 by reference digit.\n * @see BR-IE-BA-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeBaCheckDigit, computeIeBaModule } from './modulo-ie.js';\n\nconst UF = 'BA' as const;\n\nexport function stripIeBa(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeBa(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeBa(trimmed);\n if (stripped.length !== 8 && stripped.length !== 9) {\n return ieFailure(UF, 'INVALID_LENGTH', 'BA Inscrição Estadual must have 8 or 9 digits after normalization');\n }\n\n const body = stripped.slice(0, stripped.length - 2);\n const mod = computeIeBaModule(stripped);\n const secondDig = computeIeBaCheckDigit(body, mod);\n const firstDig = computeIeBaCheckDigit(body + String(secondDig), mod);\n const checkDigits = `${firstDig}${secondDig}`;\n\n if (stripped.slice(-2) !== checkDigits) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'BA Inscrição Estadual check digits are invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Ceará IE validation — 9 digits, mod11 (weights 9..2).\n * @see BR-IE-CE-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { computeIeCeCheckDigit } from './modulo-ie.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\n\nconst UF = 'CE' as const;\nconst LENGTH = 9;\n\nexport function stripIeCe(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeCe(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeCe(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `CE Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n const body = stripped.slice(0, 8);\n const expected = computeIeCeCheckDigit(body);\n if (Number(stripped.charAt(8)) !== expected) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'CE Inscrição Estadual check digit is invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Espírito Santo IE validation — 9 digits, CE mod11 roteiro.\n * @see BR-IE-ES-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { validateIeCe } from './ce.js';\nimport { checkDigitChars, checkTrimmedEmpty, stripIeDigits } from './ie-common.js';\n\nconst UF = 'ES' as const;\n\nexport function stripIeEs(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeEs(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const ceResult = validateIeCe(stripIeEs(trimmed));\n if (!ceResult.ok) {\n return { ...ceResult, uf: UF };\n }\n return { ...ceResult, uf: UF };\n}\n","/**\n * Goiás IE validation — 9 digits, prefixes 10/11/15/20.\n * @see BR-IE-GO-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { IE_GO_PREFIXES } from './constants.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeGoCheckDigit } from './modulo-ie.js';\n\nconst UF = 'GO' as const;\nconst LENGTH = 9;\n\nexport function stripIeGo(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeGo(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeGo(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `GO Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n const prefix = stripped.slice(0, 2);\n if (!(IE_GO_PREFIXES as readonly string[]).includes(prefix)) {\n return ieFailure(UF, 'UNSUPPORTED_FORMAT', 'GO Inscrição Estadual prefix is not supported');\n }\n\n const body = stripped.slice(0, 8);\n const expected = computeIeGoCheckDigit(body);\n if (Number(stripped.charAt(8)) !== expected) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'GO Inscrição Estadual check digit is invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Maranhão IE validation — prefix 12 + CE mod11.\n * @see BR-IE-MA-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { IE_MA_PREFIX } from './constants.js';\nimport { validateIeCe } from './ce.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n stripIeDigits,\n} from './ie-common.js';\n\nconst UF = 'MA' as const;\n\nexport function stripIeMa(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeMa(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeMa(trimmed);\n if (!stripped.startsWith(IE_MA_PREFIX)) {\n return ieFailure(UF, 'UNSUPPORTED_FORMAT', 'MA Inscrição Estadual must start with prefix 12');\n }\n\n const ceResult = validateIeCe(stripped);\n if (!ceResult.ok) {\n return { ...ceResult, uf: UF };\n }\n return { ...ceResult, uf: UF };\n}\n","/**\n * Minas Gerais IE validation — 13 digits, alternate mod11.\n * @see BR-IE-MG-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeMgFirstCheckDigit, computeIeMgSecondCheckDigit } from './modulo-ie.js';\n\nconst UF = 'MG' as const;\nconst LENGTH = 13;\n\nexport function stripIeMg(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeMg(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeMg(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `MG Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n const body = stripped.slice(0, 11);\n const firstDig = computeIeMgFirstCheckDigit(body);\n const secondDig = computeIeMgSecondCheckDigit(body + String(firstDig));\n const checkDigits = `${firstDig}${secondDig}`;\n\n if (stripped.slice(-2) !== checkDigits) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'MG Inscrição Estadual check digits are invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Mato Grosso do Sul IE validation — prefix 28 + CE mod11.\n * @see BR-IE-MS-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { IE_MS_PREFIX } from './constants.js';\nimport { validateIeCe } from './ce.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n stripIeDigits,\n} from './ie-common.js';\n\nconst UF = 'MS' as const;\n\nexport function stripIeMs(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeMs(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeMs(trimmed);\n if (!stripped.startsWith(IE_MS_PREFIX)) {\n return ieFailure(UF, 'UNSUPPORTED_FORMAT', 'MS Inscrição Estadual must start with prefix 28');\n }\n\n const ceResult = validateIeCe(stripped);\n if (!ceResult.ok) {\n return { ...ceResult, uf: UF };\n }\n return { ...ceResult, uf: UF };\n}\n","/**\n * Pará IE validation — prefix 15 + CE mod11.\n * @see BR-IE-PA-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { IE_PA_PREFIX } from './constants.js';\nimport { validateIeCe } from './ce.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n stripIeDigits,\n} from './ie-common.js';\n\nconst UF = 'PA' as const;\n\nexport function stripIePa(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIePa(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIePa(trimmed);\n if (!stripped.startsWith(IE_PA_PREFIX)) {\n return ieFailure(UF, 'UNSUPPORTED_FORMAT', 'PA Inscrição Estadual must start with prefix 15');\n }\n\n const ceResult = validateIeCe(stripped);\n if (!ceResult.ok) {\n return { ...ceResult, uf: UF };\n }\n return { ...ceResult, uf: UF };\n}\n","/** Paraíba — CE mod11 roteiro. */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { validateIeCe } from './ce.js';\nimport { checkDigitChars, checkTrimmedEmpty, stripIeDigits } from './ie-common.js';\n\nconst UF = 'PB' as const;\n\nexport function stripIePb(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIePb(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n const ceResult = validateIeCe(stripIePb(trimmed));\n if (!ceResult.ok) return { ...ceResult, uf: UF };\n return { ...ceResult, uf: UF };\n}\n","/**\n * Pernambuco IE validation — 9 digits, dual mod11 DVs.\n * @see BR-IE-PE-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIePeCheckDigit } from './modulo-ie.js';\n\nconst UF = 'PE' as const;\nconst LENGTH = 9;\n\nexport function stripIePe(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIePe(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIePe(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `PE Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n const body = stripped.slice(0, 7);\n const firstDig = computeIePeCheckDigit(body);\n const secondDig = computeIePeCheckDigit(body + String(firstDig));\n const checkDigits = `${firstDig}${secondDig}`;\n\n if (stripped.slice(-2) !== checkDigits) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'PE Inscrição Estadual check digits are invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/** Piauí — CE mod11 roteiro. */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { validateIeCe } from './ce.js';\nimport { checkDigitChars, checkTrimmedEmpty, stripIeDigits } from './ie-common.js';\n\nconst UF = 'PI' as const;\n\nexport function stripIePi(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIePi(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n const ceResult = validateIeCe(stripIePi(trimmed));\n if (!ceResult.ok) return { ...ceResult, uf: UF };\n return { ...ceResult, uf: UF };\n}\n","/**\n * Paraná IE validation — 10 digits, dual mod11 DVs.\n * @see BR-IE-PR-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIePrStyleCheckDigit } from './modulo-ie.js';\n\nconst UF = 'PR' as const;\nconst LENGTH = 10;\n\nexport function stripIePr(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIePr(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIePr(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `PR Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n const body = stripped.slice(0, 8);\n const firstDig = computeIePrStyleCheckDigit(body);\n const secondDig = computeIePrStyleCheckDigit(body + String(firstDig));\n const checkDigits = `${firstDig}${secondDig}`;\n\n if (stripped.slice(-2) !== checkDigits) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'PR Inscrição Estadual check digits are invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Rio de Janeiro IE validation — 8 digits, cyclic weights 2,7,6,5,4,3,2.\n * @see BR-IE-RJ-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeCyclicMod11CheckDigit } from './modulo-ie.js';\n\nconst UF = 'RJ' as const;\nconst LENGTH = 8;\n\nexport function stripIeRj(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeRj(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeRj(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `RJ Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n const body = stripped.slice(0, 7);\n const expected = computeIeCyclicMod11CheckDigit(body, 2, 7);\n if (Number(stripped.charAt(7)) !== expected) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'RJ Inscrição Estadual check digit is invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Rio Grande do Norte IE validation — 9 digits, prefix 20, fixed weights 9..2.\n * @see BR-IE-RN-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { IE_RN_PREFIX } from './constants.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\n\nconst UF = 'RN' as const;\nconst LENGTH = 9;\nconst RN_WEIGHTS = [9, 8, 7, 6, 5, 4, 3, 2] as const;\n\nexport function stripIeRn(input: string): string {\n return stripIeDigits(input);\n}\n\nfunction computeRnCheckDigit(body8: string): number {\n let sum = 0;\n for (let i = 0; i < 8; i++) {\n sum += Number(body8[i]) * RN_WEIGHTS[i];\n }\n const mod = sum % 11;\n return mod < 2 ? 0 : 11 - mod;\n}\n\nexport function validateIeRn(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeRn(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `RN Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n if (!stripped.startsWith(IE_RN_PREFIX)) {\n return ieFailure(UF, 'UNSUPPORTED_FORMAT', 'RN Inscrição Estadual must start with prefix 20');\n }\n\n const body = stripped.slice(0, 8);\n const expected = computeRnCheckDigit(body);\n if (Number(stripped.charAt(8)) !== expected) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'RN Inscrição Estadual check digit is invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Rondônia IE validation — 14 digits.\n * @see BR-IE-RO-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeRoCheckDigit } from './modulo-ie.js';\n\nconst UF = 'RO' as const;\nconst LENGTH = 14;\n\nexport function stripIeRo(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeRo(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeRo(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `RO Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n const body = stripped.slice(0, 13);\n const expected = computeIeRoCheckDigit(body);\n if (Number(stripped.charAt(13)) !== expected) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'RO Inscrição Estadual check digit is invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Roraima IE validation — 9 digits, prefix 24, mod9.\n * @see BR-IE-RR-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { IE_RR_PREFIX } from './constants.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeRrCheckDigit } from './modulo-ie.js';\n\nconst UF = 'RR' as const;\nconst LENGTH = 9;\n\nexport function stripIeRr(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeRr(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeRr(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `RR Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n if (!stripped.startsWith(IE_RR_PREFIX)) {\n return ieFailure(UF, 'UNSUPPORTED_FORMAT', 'RR Inscrição Estadual must start with prefix 24');\n }\n\n const body = stripped.slice(0, 8);\n const expected = computeIeRrCheckDigit(body);\n if (Number(stripped.charAt(8)) !== expected) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'RR Inscrição Estadual check digit is invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Rio Grande do Sul IE validation — 10 digits, cyclic weights 2,9,8,7,6,5,4,3,2.\n * @see BR-IE-RS-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeCyclicMod11CheckDigit } from './modulo-ie.js';\n\nconst UF = 'RS' as const;\nconst LENGTH = 10;\n\nexport function stripIeRs(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeRs(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF, /^[0-9.\\-\\s/]+$/);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeRs(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `RS Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n const body = stripped.slice(0, 9);\n const expected = computeIeCyclicMod11CheckDigit(body, 2, 9);\n if (Number(stripped.charAt(9)) !== expected) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'RS Inscrição Estadual check digit is invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/** Santa Catarina — CE mod11 roteiro. */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { validateIeCe } from './ce.js';\nimport { checkDigitChars, checkTrimmedEmpty, stripIeDigits } from './ie-common.js';\n\nconst UF = 'SC' as const;\n\nexport function stripIeSc(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeSc(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n const ceResult = validateIeCe(stripIeSc(trimmed));\n if (!ceResult.ok) return { ...ceResult, uf: UF };\n return { ...ceResult, uf: UF };\n}\n","/** Sergipe — CE mod11 roteiro. */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { validateIeCe } from './ce.js';\nimport { checkDigitChars, checkTrimmedEmpty, stripIeDigits } from './ie-common.js';\n\nconst UF = 'SE' as const;\n\nexport function stripIeSe(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeSe(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n const ceResult = validateIeCe(stripIeSe(trimmed));\n if (!ceResult.ok) return { ...ceResult, uf: UF };\n return { ...ceResult, uf: UF };\n}\n","/**\n * Tocantins IE validation — 9 or 11 digits (legacy pre-2003).\n * @see BR-IE-TO-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { IE_TO_LEGACY_PREFIXES } from './constants.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeToCheckDigit } from './modulo-ie.js';\n\nconst UF = 'TO' as const;\n\nexport function stripIeTo(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeTo(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeTo(trimmed);\n if (stripped.length !== 9 && stripped.length !== 11) {\n return ieFailure(UF, 'INVALID_LENGTH', 'TO Inscrição Estadual must have 9 or 11 digits after normalization');\n }\n\n let body: string;\n if (stripped.length === 11) {\n const midPrefix = stripped.slice(2, 4);\n if (!(IE_TO_LEGACY_PREFIXES as readonly string[]).includes(midPrefix)) {\n return ieFailure(UF, 'UNSUPPORTED_FORMAT', 'TO legacy 11-digit IE middle prefix is not supported');\n }\n body = stripped.slice(0, 2) + stripped.slice(4, 10);\n } else {\n body = stripped.slice(0, 8);\n }\n\n const expected = computeIeToCheckDigit(body);\n if (Number(stripped.slice(-1)) !== expected) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'TO Inscrição Estadual check digit is invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Inscrição Estadual validation — per-UF algorithms (27 UFs).\n * @see docs/use-cases/UC-009-validate-inscricao-estadual.md\n */\nimport type { FormatResult, InscricaoEstadualValidationResult, UfCode } from '../../types/validation-result.js';\nimport { validateIeAc } from './ac.js';\nimport { validateIeAl } from './al.js';\nimport { validateIeAm } from './am.js';\nimport { validateIeAp } from './ap.js';\nimport { validateIeBa } from './ba.js';\nimport { validateIeCe } from './ce.js';\nimport { IE_OFFICIAL_SOURCE_URLS, IE_SUPPORTED_UFS } from './constants.js';\nimport { validateIeDf } from './df.js';\nimport { validateIeEs } from './es.js';\nimport { validateIeGo } from './go.js';\nimport { validateIeMa } from './ma.js';\nimport { validateIeMg } from './mg.js';\nimport { validateIeMs } from './ms.js';\nimport { validateIeMt } from './mt.js';\nimport { applyIeDfMask, applyIeSpMask } from './mask.js';\nimport { validateIePa } from './pa.js';\nimport { validateIePb } from './pb.js';\nimport { validateIePe } from './pe.js';\nimport { validateIePi } from './pi.js';\nimport { validateIePr } from './pr.js';\nimport { validateIeRj } from './rj.js';\nimport { validateIeRn } from './rn.js';\nimport { validateIeRo } from './ro.js';\nimport { validateIeRr } from './rr.js';\nimport { validateIeRs } from './rs.js';\nimport { validateIeSc } from './sc.js';\nimport { validateIeSe } from './se.js';\nimport { validateIeSp } from './sp.js';\nimport { validateIeTo } from './to.js';\n\nexport {\n IE_AC_PREFIX,\n IE_AL_PREFIX,\n IE_AM_PREFIX,\n IE_AP_PREFIX,\n IE_DF_GOLDEN,\n IE_DF_GOLDEN_MASKED,\n IE_DF_LENGTH,\n IE_DF_OFFICIAL_SOURCE_URL,\n IE_DF_PREFIX,\n IE_GO_PREFIXES,\n IE_MA_PREFIX,\n IE_MS_PREFIX,\n IE_MT_CANONICAL_LENGTH,\n IE_MT_GOLDEN_CANONICAL,\n IE_MT_GOLDEN_LEGACY,\n IE_MT_LEGACY_LENGTH,\n IE_MT_OFFICIAL_SOURCE_URL,\n IE_MT_PREFIX,\n IE_OFFICIAL_SOURCE_URL,\n IE_OFFICIAL_SOURCE_URLS,\n IE_PA_PREFIX,\n IE_RN_PREFIX,\n IE_RR_PREFIX,\n IE_SP_GOLDEN,\n IE_SP_GOLDEN_MASKED,\n IE_SP_LENGTH,\n IE_SP_OFFICIAL_SOURCE_URL,\n IE_SP_RURAL_GOLDEN,\n IE_SP_RURAL_GOLDEN_MASKED,\n IE_SP_RURAL_LENGTH,\n IE_SP_RURAL_OFFICIAL_SOURCE_URL,\n IE_SUPPORTED_UFS,\n IE_TO_LEGACY_PREFIXES,\n} from './constants.js';\nexport type { UfCode } from './constants.js';\nexport { stripIeAc, validateIeAc } from './ac.js';\nexport { stripIeAl, validateIeAl } from './al.js';\nexport { stripIeAm, validateIeAm } from './am.js';\nexport { stripIeAp, validateIeAp } from './ap.js';\nexport { stripIeBa, validateIeBa } from './ba.js';\nexport { stripIeCe, validateIeCe } from './ce.js';\nexport { stripIeDf, validateIeDf } from './df.js';\nexport { stripIeEs, validateIeEs } from './es.js';\nexport { stripIeGo, validateIeGo } from './go.js';\nexport { stripIeMa, validateIeMa } from './ma.js';\nexport { stripIeMg, validateIeMg } from './mg.js';\nexport { stripIeMs, validateIeMs } from './ms.js';\nexport { normalizeMtToCanonical, padMtLegacy, stripIeMt, validateIeMt } from './mt.js';\nexport { stripIePa, validateIePa } from './pa.js';\nexport { stripIePb, validateIePb } from './pb.js';\nexport { stripIePe, validateIePe } from './pe.js';\nexport { stripIePi, validateIePi } from './pi.js';\nexport { stripIePr, validateIePr } from './pr.js';\nexport { stripIeRj, validateIeRj } from './rj.js';\nexport { stripIeRn, validateIeRn } from './rn.js';\nexport { stripIeRo, validateIeRo } from './ro.js';\nexport { stripIeRr, validateIeRr } from './rr.js';\nexport { stripIeRs, validateIeRs } from './rs.js';\nexport { stripIeSc, validateIeSc } from './sc.js';\nexport { stripIeSe, validateIeSe } from './se.js';\nexport { stripIeSp, validateIeSp } from './sp.js';\nexport { isSpRuralIeInput, stripIeSpRural, validateIeSpRural } from './sp-rural.js';\nexport {\n getIeProdutorRuralOfficialSourceUrl,\n isValidIeProdutorRural,\n validateIeProdutorRural,\n} from './validate-produtor-rural.js';\nexport { stripIeTo, validateIeTo } from './to.js';\nexport { applyIeDfMask, applyIeSpMask, applyIeSpRuralMask } from './mask.js';\n\nexport type ValidateInscricaoEstadualOptions = {\n uf: UfCode;\n};\n\ntype FailedResult = Extract<InscricaoEstadualValidationResult, { ok: false }>;\ntype ValidatorFn = (input: string) => InscricaoEstadualValidationResult;\n\nconst VALIDATORS: Record<UfCode, ValidatorFn> = {\n AC: validateIeAc,\n AL: validateIeAl,\n AM: validateIeAm,\n AP: validateIeAp,\n BA: validateIeBa,\n CE: validateIeCe,\n DF: validateIeDf,\n ES: validateIeEs,\n GO: validateIeGo,\n MA: validateIeMa,\n MG: validateIeMg,\n MS: validateIeMs,\n MT: validateIeMt,\n PA: validateIePa,\n PB: validateIePb,\n PE: validateIePe,\n PI: validateIePi,\n PR: validateIePr,\n RJ: validateIeRj,\n RN: validateIeRn,\n RO: validateIeRo,\n RR: validateIeRr,\n RS: validateIeRs,\n SC: validateIeSc,\n SE: validateIeSe,\n SP: validateIeSp,\n TO: validateIeTo,\n};\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message };\n}\n\nexport function getIeOfficialSourceUrl(uf: UfCode): string {\n return IE_OFFICIAL_SOURCE_URLS[uf];\n}\n\nfunction isSupportedUf(uf: string | undefined): uf is UfCode {\n return uf !== undefined && (IE_SUPPORTED_UFS as readonly string[]).includes(uf);\n}\n\nexport function stripInscricaoEstadual(input: string): string {\n return input.replace(/\\D/g, '');\n}\n\nexport function isValidInscricaoEstadual(\n input: string,\n options: ValidateInscricaoEstadualOptions,\n): boolean {\n return validateInscricaoEstadual(input, options).ok;\n}\n\nexport function validateInscricaoEstadual(\n input: string,\n options: ValidateInscricaoEstadualOptions,\n): InscricaoEstadualValidationResult {\n if (!isSupportedUf(options.uf)) {\n return failure('UNSUPPORTED_FORMAT', `UF ${String(options.uf)} is not supported`);\n }\n return VALIDATORS[options.uf](input);\n}\n\nexport function formatInscricaoEstadual(\n input: string,\n options: ValidateInscricaoEstadualOptions,\n): FormatResult {\n const result = validateInscricaoEstadual(input, options);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n\n try {\n if (result.uf === 'SP') {\n return { ok: true, formatted: applyIeSpMask(result.value) };\n }\n if (result.uf === 'DF') {\n return { ok: true, formatted: applyIeDfMask(result.value) };\n }\n return { ok: true, formatted: result.value };\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to format Inscrição Estadual';\n return { ok: false, code: 'UNSUPPORTED_FORMAT', message };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/core/inscricao-estadual/df.ts","../src/core/inscricao-estadual/mt.ts","../src/core/inscricao-estadual/sp.ts","../src/core/inscricao-estadual/ie-common.ts","../src/core/inscricao-estadual/ac.ts","../src/core/inscricao-estadual/al.ts","../src/core/inscricao-estadual/am.ts","../src/core/inscricao-estadual/ap.ts","../src/core/inscricao-estadual/ba.ts","../src/core/inscricao-estadual/ce.ts","../src/core/inscricao-estadual/es.ts","../src/core/inscricao-estadual/go.ts","../src/core/inscricao-estadual/ma.ts","../src/core/inscricao-estadual/mg.ts","../src/core/inscricao-estadual/ms.ts","../src/core/inscricao-estadual/pa.ts","../src/core/inscricao-estadual/pb.ts","../src/core/inscricao-estadual/pe.ts","../src/core/inscricao-estadual/pi.ts","../src/core/inscricao-estadual/pr.ts","../src/core/inscricao-estadual/rj.ts","../src/core/inscricao-estadual/rn.ts","../src/core/inscricao-estadual/ro.ts","../src/core/inscricao-estadual/rr.ts","../src/core/inscricao-estadual/rs.ts","../src/core/inscricao-estadual/sc.ts","../src/core/inscricao-estadual/se.ts","../src/core/inscricao-estadual/to.ts","../src/core/inscricao-estadual/index.ts"],"names":["failure","UF","LENGTH"],"mappings":"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","file":"chunk-P3EJRH4P.js","sourcesContent":["/**\n * Distrito Federal IE validation — CF/DF 13 digits, dual modulo-11 DVs.\n * @see BR-IE-DF-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { brandInscricaoEstadual } from '../../types/validation-result.js';\nimport { IE_DF_DV1_WEIGHTS, IE_DF_DV2_WEIGHTS, IE_DF_LENGTH, IE_DF_PREFIX } from './constants.js';\nimport { computeIeDfCheckDigit } from './modulo-ie.js';\n\ntype FailedResult = Extract<InscricaoEstadualValidationResult, { ok: false }>;\n\nconst DF_MASK_PATTERN = /^[0-9.-]+$/;\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message, uf: 'DF' };\n}\n\nexport function stripIeDf(input: string): string {\n return input.replace(/\\D/g, '');\n}\n\nexport function validateIeDf(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n if (trimmed.length === 0) {\n return { ok: false, code: 'EMPTY_INPUT', message: 'Inscrição Estadual input is empty', uf: 'DF' };\n }\n\n if (!DF_MASK_PATTERN.test(trimmed)) {\n return failure('INVALID_CHARACTER', 'DF Inscrição Estadual contains invalid characters');\n }\n\n const stripped = stripIeDf(trimmed);\n if (stripped.length === 12) {\n return failure('INVALID_LENGTH', 'DF Inscrição Estadual legacy 12-digit format is not supported; use 13 digits');\n }\n\n if (stripped.length !== IE_DF_LENGTH) {\n return failure('INVALID_LENGTH', `DF Inscrição Estadual must have ${IE_DF_LENGTH} digits after normalization`);\n }\n\n if (!stripped.startsWith(IE_DF_PREFIX)) {\n return failure('UNSUPPORTED_FORMAT', 'DF Inscrição Estadual must start with prefix 07');\n }\n\n const dv1 = computeIeDfCheckDigit(stripped.slice(0, 11), IE_DF_DV1_WEIGHTS);\n const dv2 = computeIeDfCheckDigit(stripped.slice(0, 11), IE_DF_DV2_WEIGHTS, true, dv1);\n\n if (Number(stripped.charAt(11)) !== dv1 || Number(stripped.charAt(12)) !== dv2) {\n return failure('INVALID_CHECK_DIGIT', 'DF Inscrição Estadual check digits are invalid');\n }\n\n return {\n ok: true,\n value: brandInscricaoEstadual(stripped),\n uf: 'DF',\n format: 'inscricao-estadual',\n };\n}\n","/**\n * Mato Grosso IE validation — CCE/MT 9-digit + legacy 11-digit SINTEGRA pad.\n * @see BR-IE-MT-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { brandInscricaoEstadual } from '../../types/validation-result.js';\nimport {\n IE_MT_CANONICAL_LENGTH,\n IE_MT_LEGACY_LENGTH,\n IE_MT_PREFIX,\n} from './constants.js';\nimport { computeIeMtCheckDigit } from './modulo-ie.js';\n\ntype FailedResult = Extract<InscricaoEstadualValidationResult, { ok: false }>;\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message, uf: 'MT' };\n}\n\nexport function stripIeMt(input: string): string {\n return input.replace(/\\D/g, '');\n}\n\nexport function normalizeMtToCanonical(padded11: string): string {\n const trimmed = padded11.replace(/^0+/, '');\n return trimmed.length === IE_MT_CANONICAL_LENGTH ? trimmed : padded11.slice(-IE_MT_CANONICAL_LENGTH);\n}\n\nexport function padMtLegacy(stripped: string): string | null {\n if (stripped.length < IE_MT_CANONICAL_LENGTH || stripped.length > IE_MT_LEGACY_LENGTH) {\n return null;\n }\n return stripped.padStart(IE_MT_LEGACY_LENGTH, '0');\n}\n\nexport function validateIeMt(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n if (trimmed.length === 0) {\n return { ok: false, code: 'EMPTY_INPUT', message: 'Inscrição Estadual input is empty', uf: 'MT' };\n }\n\n if (/[^0-9.\\-\\s]/.test(trimmed)) {\n return failure('INVALID_CHARACTER', 'MT Inscrição Estadual contains invalid characters');\n }\n\n const stripped = stripIeMt(trimmed);\n if (stripped.length < IE_MT_CANONICAL_LENGTH || stripped.length > IE_MT_LEGACY_LENGTH) {\n return failure(\n 'INVALID_LENGTH',\n `MT Inscrição Estadual must have ${IE_MT_CANONICAL_LENGTH} or ${IE_MT_LEGACY_LENGTH} digits after normalization`,\n );\n }\n\n const padded =\n stripped.length === IE_MT_LEGACY_LENGTH ? stripped : stripped.padStart(IE_MT_LEGACY_LENGTH, '0');\n const canonical = normalizeMtToCanonical(padded);\n if (!canonical.startsWith(IE_MT_PREFIX)) {\n return failure('UNSUPPORTED_FORMAT', 'MT Inscrição Estadual must start with prefix 13');\n }\n\n const expectedDv = computeIeMtCheckDigit(padded.slice(0, 10));\n if (Number(padded.charAt(10)) !== expectedDv) {\n return failure('INVALID_CHECK_DIGIT', 'MT Inscrição Estadual check digit is invalid');\n }\n\n return {\n ok: true,\n value: brandInscricaoEstadual(canonical),\n uf: 'MT',\n format: 'inscricao-estadual',\n };\n}\n","/**\n * São Paulo IE validation — dual modulo-11 DVs (SEFAZ 2012).\n * @see BR-IE-SP-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { brandInscricaoEstadual } from '../../types/validation-result.js';\nimport { IE_SP_DV1_WEIGHTS, IE_SP_DV2_WEIGHTS, IE_SP_LENGTH } from './constants.js';\nimport { computeIeSpCheckDigit } from './modulo-ie.js';\n\ntype FailedResult = Extract<InscricaoEstadualValidationResult, { ok: false }>;\n\nconst SP_MASK_PATTERN = /^[0-9.]+$/;\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message, uf: 'SP' };\n}\n\nexport function stripIeSp(input: string): string {\n return input.replace(/\\D/g, '');\n}\n\nexport function validateIeSp(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n if (trimmed.length === 0) {\n return { ok: false, code: 'EMPTY_INPUT', message: 'Inscrição Estadual input is empty', uf: 'SP' };\n }\n\n if (/[Pp]/.test(trimmed)) {\n return failure('UNSUPPORTED_FORMAT', 'SP rural IE format (P…) requires validateIeProdutorRural');\n }\n\n if (!SP_MASK_PATTERN.test(trimmed)) {\n return failure('INVALID_CHARACTER', 'SP Inscrição Estadual contains invalid characters');\n }\n\n const stripped = stripIeSp(trimmed);\n if (stripped.length !== IE_SP_LENGTH) {\n return failure('INVALID_LENGTH', `SP Inscrição Estadual must have ${IE_SP_LENGTH} digits after normalization`);\n }\n\n const dv1 = computeIeSpCheckDigit(stripped, IE_SP_DV1_WEIGHTS);\n const dv2 = computeIeSpCheckDigit(stripped, IE_SP_DV2_WEIGHTS);\n\n if (Number(stripped.charAt(8)) !== dv1 || Number(stripped.charAt(11)) !== dv2) {\n return failure('INVALID_CHECK_DIGIT', 'SP Inscrição Estadual check digits are invalid');\n }\n\n return {\n ok: true,\n value: brandInscricaoEstadual(stripped),\n uf: 'SP',\n format: 'inscricao-estadual',\n };\n}\n","/**\n * Shared helpers for per-UF IE validators.\n */\nimport type { InscricaoEstadualValidationResult, UfCode } from '../../types/validation-result.js';\nimport { brandInscricaoEstadual } from '../../types/validation-result.js';\n\nexport type IeFailedResult = Extract<InscricaoEstadualValidationResult, { ok: false }>;\n\nexport function stripIeDigits(input: string): string {\n return input.replace(/\\D/g, '');\n}\n\nexport function ieFailure(uf: UfCode, code: IeFailedResult['code'], message: string): IeFailedResult {\n return { ok: false, code, message, uf };\n}\n\nexport function ieEmptyInput(uf: UfCode): IeFailedResult {\n return { ok: false, code: 'EMPTY_INPUT', message: 'Inscrição Estadual input is empty', uf };\n}\n\nexport function ieSuccess(stripped: string, uf: UfCode): Extract<InscricaoEstadualValidationResult, { ok: true }> {\n return {\n ok: true,\n value: brandInscricaoEstadual(stripped),\n uf,\n format: 'inscricao-estadual',\n };\n}\n\nexport function checkTrimmedEmpty(trimmed: string, uf: UfCode): IeFailedResult | null {\n if (trimmed.length === 0) {\n return ieEmptyInput(uf);\n }\n return null;\n}\n\nexport function checkDigitChars(trimmed: string, uf: UfCode, pattern = /^[0-9.\\-\\s/]+$/): IeFailedResult | null {\n if (!pattern.test(trimmed)) {\n return ieFailure(uf, 'INVALID_CHARACTER', `${uf} Inscrição Estadual contains invalid characters`);\n }\n return null;\n}\n","/**\n * Acre IE validation — 13 digits, prefix 01, dual mod11 DVs.\n * @see BR-IE-AC-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { IE_AC_PREFIX } from './constants.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeAcCheckDigit } from './modulo-ie.js';\n\nconst UF = 'AC' as const;\nconst LENGTH = 13;\n\nexport function stripIeAc(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeAc(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeAc(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `AC Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n if (!stripped.startsWith(IE_AC_PREFIX)) {\n return ieFailure(UF, 'UNSUPPORTED_FORMAT', 'AC Inscrição Estadual must start with prefix 01');\n }\n\n const body = stripped.slice(0, 11);\n const firstDig = computeIeAcCheckDigit(body);\n const secondDig = computeIeAcCheckDigit(body + String(firstDig));\n const checkDigits = `${firstDig}${secondDig}`;\n\n if (stripped.slice(-2) !== checkDigits) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'AC Inscrição Estadual check digits are invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Alagoas IE validation — 9 digits, prefix 24, mod11 (SEFAZ-AL).\n * @see BR-IE-AL-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { IE_AL_PREFIX } from './constants.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeAlCheckDigit } from './modulo-ie.js';\n\nconst UF = 'AL' as const;\nconst LENGTH = 9;\n\nexport function stripIeAl(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeAl(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeAl(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `AL Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n if (!stripped.startsWith(IE_AL_PREFIX)) {\n return ieFailure(UF, 'UNSUPPORTED_FORMAT', 'AL Inscrição Estadual must start with prefix 24');\n }\n\n const body = stripped.slice(0, 8);\n const expected = computeIeAlCheckDigit(body);\n if (Number(stripped.charAt(8)) !== expected) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'AL Inscrição Estadual check digit is invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Amazonas IE validation — 9 digits, prefix 04.\n * @see BR-IE-AM-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeAmCheckDigit } from './modulo-ie.js';\n\nconst UF = 'AM' as const;\nconst LENGTH = 9;\n\nexport function stripIeAm(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeAm(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeAm(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `AM Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n const body = stripped.slice(0, 8);\n const expected = computeIeAmCheckDigit(body);\n if (Number(stripped.charAt(8)) !== expected) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'AM Inscrição Estadual check digit is invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Amapá IE validation — 9 digits, prefix 03, range-based constants.\n * @see BR-IE-AP-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { IE_AP_PREFIX } from './constants.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeApCheckDigit } from './modulo-ie.js';\n\nconst UF = 'AP' as const;\nconst LENGTH = 9;\n\nexport function stripIeAp(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeAp(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeAp(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `AP Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n if (!stripped.startsWith(IE_AP_PREFIX)) {\n return ieFailure(UF, 'UNSUPPORTED_FORMAT', 'AP Inscrição Estadual must start with prefix 03');\n }\n\n const body = stripped.slice(0, 8);\n const expected = computeIeApCheckDigit(body);\n if (Number(stripped.charAt(8)) !== expected) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'AP Inscrição Estadual check digit is invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Bahia IE validation — 8 or 9 digits, dual DV, mod10/mod11 by reference digit.\n * @see BR-IE-BA-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeBaCheckDigit, computeIeBaModule } from './modulo-ie.js';\n\nconst UF = 'BA' as const;\n\nexport function stripIeBa(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeBa(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeBa(trimmed);\n if (stripped.length !== 8 && stripped.length !== 9) {\n return ieFailure(UF, 'INVALID_LENGTH', 'BA Inscrição Estadual must have 8 or 9 digits after normalization');\n }\n\n const body = stripped.slice(0, stripped.length - 2);\n const mod = computeIeBaModule(stripped);\n const secondDig = computeIeBaCheckDigit(body, mod);\n const firstDig = computeIeBaCheckDigit(body + String(secondDig), mod);\n const checkDigits = `${firstDig}${secondDig}`;\n\n if (stripped.slice(-2) !== checkDigits) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'BA Inscrição Estadual check digits are invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Ceará IE validation — 9 digits, mod11 (weights 9..2).\n * @see BR-IE-CE-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { computeIeCeCheckDigit } from './modulo-ie.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\n\nconst UF = 'CE' as const;\nconst LENGTH = 9;\n\nexport function stripIeCe(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeCe(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeCe(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `CE Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n const body = stripped.slice(0, 8);\n const expected = computeIeCeCheckDigit(body);\n if (Number(stripped.charAt(8)) !== expected) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'CE Inscrição Estadual check digit is invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Espírito Santo IE validation — 9 digits, CE mod11 roteiro.\n * @see BR-IE-ES-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { validateIeCe } from './ce.js';\nimport { checkDigitChars, checkTrimmedEmpty, stripIeDigits } from './ie-common.js';\n\nconst UF = 'ES' as const;\n\nexport function stripIeEs(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeEs(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const ceResult = validateIeCe(stripIeEs(trimmed));\n if (!ceResult.ok) {\n return { ...ceResult, uf: UF };\n }\n return { ...ceResult, uf: UF };\n}\n","/**\n * Goiás IE validation — 9 digits, prefixes 10/11/15/20.\n * @see BR-IE-GO-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { IE_GO_PREFIXES } from './constants.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeGoCheckDigit } from './modulo-ie.js';\n\nconst UF = 'GO' as const;\nconst LENGTH = 9;\n\nexport function stripIeGo(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeGo(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeGo(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `GO Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n const prefix = stripped.slice(0, 2);\n if (!(IE_GO_PREFIXES as readonly string[]).includes(prefix)) {\n return ieFailure(UF, 'UNSUPPORTED_FORMAT', 'GO Inscrição Estadual prefix is not supported');\n }\n\n const body = stripped.slice(0, 8);\n const expected = computeIeGoCheckDigit(body);\n if (Number(stripped.charAt(8)) !== expected) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'GO Inscrição Estadual check digit is invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Maranhão IE validation — prefix 12 + CE mod11.\n * @see BR-IE-MA-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { IE_MA_PREFIX } from './constants.js';\nimport { validateIeCe } from './ce.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n stripIeDigits,\n} from './ie-common.js';\n\nconst UF = 'MA' as const;\n\nexport function stripIeMa(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeMa(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeMa(trimmed);\n if (!stripped.startsWith(IE_MA_PREFIX)) {\n return ieFailure(UF, 'UNSUPPORTED_FORMAT', 'MA Inscrição Estadual must start with prefix 12');\n }\n\n const ceResult = validateIeCe(stripped);\n if (!ceResult.ok) {\n return { ...ceResult, uf: UF };\n }\n return { ...ceResult, uf: UF };\n}\n","/**\n * Minas Gerais IE validation — 13 digits, alternate mod11.\n * @see BR-IE-MG-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeMgFirstCheckDigit, computeIeMgSecondCheckDigit } from './modulo-ie.js';\n\nconst UF = 'MG' as const;\nconst LENGTH = 13;\n\nexport function stripIeMg(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeMg(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeMg(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `MG Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n const body = stripped.slice(0, 11);\n const firstDig = computeIeMgFirstCheckDigit(body);\n const secondDig = computeIeMgSecondCheckDigit(body + String(firstDig));\n const checkDigits = `${firstDig}${secondDig}`;\n\n if (stripped.slice(-2) !== checkDigits) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'MG Inscrição Estadual check digits are invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Mato Grosso do Sul IE validation — prefix 28 + CE mod11.\n * @see BR-IE-MS-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { IE_MS_PREFIX } from './constants.js';\nimport { validateIeCe } from './ce.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n stripIeDigits,\n} from './ie-common.js';\n\nconst UF = 'MS' as const;\n\nexport function stripIeMs(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeMs(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeMs(trimmed);\n if (!stripped.startsWith(IE_MS_PREFIX)) {\n return ieFailure(UF, 'UNSUPPORTED_FORMAT', 'MS Inscrição Estadual must start with prefix 28');\n }\n\n const ceResult = validateIeCe(stripped);\n if (!ceResult.ok) {\n return { ...ceResult, uf: UF };\n }\n return { ...ceResult, uf: UF };\n}\n","/**\n * Pará IE validation — prefix 15 + CE mod11.\n * @see BR-IE-PA-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { IE_PA_PREFIX } from './constants.js';\nimport { validateIeCe } from './ce.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n stripIeDigits,\n} from './ie-common.js';\n\nconst UF = 'PA' as const;\n\nexport function stripIePa(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIePa(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIePa(trimmed);\n if (!stripped.startsWith(IE_PA_PREFIX)) {\n return ieFailure(UF, 'UNSUPPORTED_FORMAT', 'PA Inscrição Estadual must start with prefix 15');\n }\n\n const ceResult = validateIeCe(stripped);\n if (!ceResult.ok) {\n return { ...ceResult, uf: UF };\n }\n return { ...ceResult, uf: UF };\n}\n","/** Paraíba — CE mod11 roteiro. */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { validateIeCe } from './ce.js';\nimport { checkDigitChars, checkTrimmedEmpty, stripIeDigits } from './ie-common.js';\n\nconst UF = 'PB' as const;\n\nexport function stripIePb(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIePb(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n const ceResult = validateIeCe(stripIePb(trimmed));\n if (!ceResult.ok) return { ...ceResult, uf: UF };\n return { ...ceResult, uf: UF };\n}\n","/**\n * Pernambuco IE validation — 9 digits, dual mod11 DVs.\n * @see BR-IE-PE-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIePeCheckDigit } from './modulo-ie.js';\n\nconst UF = 'PE' as const;\nconst LENGTH = 9;\n\nexport function stripIePe(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIePe(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIePe(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `PE Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n const body = stripped.slice(0, 7);\n const firstDig = computeIePeCheckDigit(body);\n const secondDig = computeIePeCheckDigit(body + String(firstDig));\n const checkDigits = `${firstDig}${secondDig}`;\n\n if (stripped.slice(-2) !== checkDigits) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'PE Inscrição Estadual check digits are invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/** Piauí — CE mod11 roteiro. */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { validateIeCe } from './ce.js';\nimport { checkDigitChars, checkTrimmedEmpty, stripIeDigits } from './ie-common.js';\n\nconst UF = 'PI' as const;\n\nexport function stripIePi(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIePi(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n const ceResult = validateIeCe(stripIePi(trimmed));\n if (!ceResult.ok) return { ...ceResult, uf: UF };\n return { ...ceResult, uf: UF };\n}\n","/**\n * Paraná IE validation — 10 digits, dual mod11 DVs.\n * @see BR-IE-PR-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIePrStyleCheckDigit } from './modulo-ie.js';\n\nconst UF = 'PR' as const;\nconst LENGTH = 10;\n\nexport function stripIePr(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIePr(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIePr(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `PR Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n const body = stripped.slice(0, 8);\n const firstDig = computeIePrStyleCheckDigit(body);\n const secondDig = computeIePrStyleCheckDigit(body + String(firstDig));\n const checkDigits = `${firstDig}${secondDig}`;\n\n if (stripped.slice(-2) !== checkDigits) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'PR Inscrição Estadual check digits are invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Rio de Janeiro IE validation — 8 digits, cyclic weights 2,7,6,5,4,3,2.\n * @see BR-IE-RJ-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeCyclicMod11CheckDigit } from './modulo-ie.js';\n\nconst UF = 'RJ' as const;\nconst LENGTH = 8;\n\nexport function stripIeRj(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeRj(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeRj(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `RJ Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n const body = stripped.slice(0, 7);\n const expected = computeIeCyclicMod11CheckDigit(body, 2, 7);\n if (Number(stripped.charAt(7)) !== expected) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'RJ Inscrição Estadual check digit is invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Rio Grande do Norte IE validation — 9 digits, prefix 20, fixed weights 9..2.\n * @see BR-IE-RN-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { IE_RN_PREFIX } from './constants.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\n\nconst UF = 'RN' as const;\nconst LENGTH = 9;\nconst RN_WEIGHTS = [9, 8, 7, 6, 5, 4, 3, 2] as const;\n\nexport function stripIeRn(input: string): string {\n return stripIeDigits(input);\n}\n\nfunction computeRnCheckDigit(body8: string): number {\n let sum = 0;\n for (let i = 0; i < 8; i++) {\n sum += Number(body8[i]) * RN_WEIGHTS[i];\n }\n const mod = sum % 11;\n return mod < 2 ? 0 : 11 - mod;\n}\n\nexport function validateIeRn(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeRn(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `RN Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n if (!stripped.startsWith(IE_RN_PREFIX)) {\n return ieFailure(UF, 'UNSUPPORTED_FORMAT', 'RN Inscrição Estadual must start with prefix 20');\n }\n\n const body = stripped.slice(0, 8);\n const expected = computeRnCheckDigit(body);\n if (Number(stripped.charAt(8)) !== expected) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'RN Inscrição Estadual check digit is invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Rondônia IE validation — 14 digits.\n * @see BR-IE-RO-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeRoCheckDigit } from './modulo-ie.js';\n\nconst UF = 'RO' as const;\nconst LENGTH = 14;\n\nexport function stripIeRo(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeRo(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeRo(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `RO Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n const body = stripped.slice(0, 13);\n const expected = computeIeRoCheckDigit(body);\n if (Number(stripped.charAt(13)) !== expected) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'RO Inscrição Estadual check digit is invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Roraima IE validation — 9 digits, prefix 24, mod9.\n * @see BR-IE-RR-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { IE_RR_PREFIX } from './constants.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeRrCheckDigit } from './modulo-ie.js';\n\nconst UF = 'RR' as const;\nconst LENGTH = 9;\n\nexport function stripIeRr(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeRr(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeRr(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `RR Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n if (!stripped.startsWith(IE_RR_PREFIX)) {\n return ieFailure(UF, 'UNSUPPORTED_FORMAT', 'RR Inscrição Estadual must start with prefix 24');\n }\n\n const body = stripped.slice(0, 8);\n const expected = computeIeRrCheckDigit(body);\n if (Number(stripped.charAt(8)) !== expected) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'RR Inscrição Estadual check digit is invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Rio Grande do Sul IE validation — 10 digits, cyclic weights 2,9,8,7,6,5,4,3,2.\n * @see BR-IE-RS-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeCyclicMod11CheckDigit } from './modulo-ie.js';\n\nconst UF = 'RS' as const;\nconst LENGTH = 10;\n\nexport function stripIeRs(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeRs(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF, /^[0-9.\\-\\s/]+$/);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeRs(trimmed);\n if (stripped.length !== LENGTH) {\n return ieFailure(UF, 'INVALID_LENGTH', `RS Inscrição Estadual must have ${LENGTH} digits after normalization`);\n }\n\n const body = stripped.slice(0, 9);\n const expected = computeIeCyclicMod11CheckDigit(body, 2, 9);\n if (Number(stripped.charAt(9)) !== expected) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'RS Inscrição Estadual check digit is invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/** Santa Catarina — CE mod11 roteiro. */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { validateIeCe } from './ce.js';\nimport { checkDigitChars, checkTrimmedEmpty, stripIeDigits } from './ie-common.js';\n\nconst UF = 'SC' as const;\n\nexport function stripIeSc(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeSc(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n const ceResult = validateIeCe(stripIeSc(trimmed));\n if (!ceResult.ok) return { ...ceResult, uf: UF };\n return { ...ceResult, uf: UF };\n}\n","/** Sergipe — CE mod11 roteiro. */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { validateIeCe } from './ce.js';\nimport { checkDigitChars, checkTrimmedEmpty, stripIeDigits } from './ie-common.js';\n\nconst UF = 'SE' as const;\n\nexport function stripIeSe(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeSe(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n const ceResult = validateIeCe(stripIeSe(trimmed));\n if (!ceResult.ok) return { ...ceResult, uf: UF };\n return { ...ceResult, uf: UF };\n}\n","/**\n * Tocantins IE validation — 9 or 11 digits (legacy pre-2003).\n * @see BR-IE-TO-001\n */\nimport type { InscricaoEstadualValidationResult } from '../../types/validation-result.js';\nimport { IE_TO_LEGACY_PREFIXES } from './constants.js';\nimport {\n checkDigitChars,\n checkTrimmedEmpty,\n ieFailure,\n ieSuccess,\n stripIeDigits,\n} from './ie-common.js';\nimport { computeIeToCheckDigit } from './modulo-ie.js';\n\nconst UF = 'TO' as const;\n\nexport function stripIeTo(input: string): string {\n return stripIeDigits(input);\n}\n\nexport function validateIeTo(input: string): InscricaoEstadualValidationResult {\n const trimmed = input.trim();\n const empty = checkTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n const invalidChar = checkDigitChars(trimmed, UF);\n if (invalidChar) return invalidChar;\n\n const stripped = stripIeTo(trimmed);\n if (stripped.length !== 9 && stripped.length !== 11) {\n return ieFailure(UF, 'INVALID_LENGTH', 'TO Inscrição Estadual must have 9 or 11 digits after normalization');\n }\n\n let body: string;\n if (stripped.length === 11) {\n const midPrefix = stripped.slice(2, 4);\n if (!(IE_TO_LEGACY_PREFIXES as readonly string[]).includes(midPrefix)) {\n return ieFailure(UF, 'UNSUPPORTED_FORMAT', 'TO legacy 11-digit IE middle prefix is not supported');\n }\n body = stripped.slice(0, 2) + stripped.slice(4, 10);\n } else {\n body = stripped.slice(0, 8);\n }\n\n const expected = computeIeToCheckDigit(body);\n if (Number(stripped.slice(-1)) !== expected) {\n return ieFailure(UF, 'INVALID_CHECK_DIGIT', 'TO Inscrição Estadual check digit is invalid');\n }\n\n return ieSuccess(stripped, UF);\n}\n","/**\n * Inscrição Estadual validation — per-UF algorithms (27 UFs).\n * @see docs/use-cases/UC-009-validate-inscricao-estadual.md\n */\nimport type { FormatResult, InscricaoEstadualValidationResult, UfCode } from '../../types/validation-result.js';\nimport { validateIeAc } from './ac.js';\nimport { validateIeAl } from './al.js';\nimport { validateIeAm } from './am.js';\nimport { validateIeAp } from './ap.js';\nimport { validateIeBa } from './ba.js';\nimport { validateIeCe } from './ce.js';\nimport { IE_OFFICIAL_SOURCE_URLS, IE_SUPPORTED_UFS } from './constants.js';\nimport { validateIeDf } from './df.js';\nimport { validateIeEs } from './es.js';\nimport { validateIeGo } from './go.js';\nimport { validateIeMa } from './ma.js';\nimport { validateIeMg } from './mg.js';\nimport { validateIeMs } from './ms.js';\nimport { validateIeMt } from './mt.js';\nimport { applyIeDfMask, applyIeSpMask } from './mask.js';\nimport { validateIePa } from './pa.js';\nimport { validateIePb } from './pb.js';\nimport { validateIePe } from './pe.js';\nimport { validateIePi } from './pi.js';\nimport { validateIePr } from './pr.js';\nimport { validateIeRj } from './rj.js';\nimport { validateIeRn } from './rn.js';\nimport { validateIeRo } from './ro.js';\nimport { validateIeRr } from './rr.js';\nimport { validateIeRs } from './rs.js';\nimport { validateIeSc } from './sc.js';\nimport { validateIeSe } from './se.js';\nimport { validateIeSp } from './sp.js';\nimport { validateIeTo } from './to.js';\n\nexport {\n IE_AC_PREFIX,\n IE_AL_PREFIX,\n IE_AM_PREFIX,\n IE_AP_PREFIX,\n IE_DF_GOLDEN,\n IE_DF_GOLDEN_MASKED,\n IE_DF_LENGTH,\n IE_DF_OFFICIAL_SOURCE_URL,\n IE_DF_PREFIX,\n IE_GO_PREFIXES,\n IE_MA_PREFIX,\n IE_MS_PREFIX,\n IE_MT_CANONICAL_LENGTH,\n IE_MT_GOLDEN_CANONICAL,\n IE_MT_GOLDEN_LEGACY,\n IE_MT_LEGACY_LENGTH,\n IE_MT_OFFICIAL_SOURCE_URL,\n IE_MT_PREFIX,\n IE_OFFICIAL_SOURCE_URL,\n IE_OFFICIAL_SOURCE_URLS,\n IE_PA_PREFIX,\n IE_RN_PREFIX,\n IE_RR_PREFIX,\n IE_SP_GOLDEN,\n IE_SP_GOLDEN_MASKED,\n IE_SP_LENGTH,\n IE_SP_OFFICIAL_SOURCE_URL,\n IE_SP_RURAL_GOLDEN,\n IE_SP_RURAL_GOLDEN_MASKED,\n IE_SP_RURAL_LENGTH,\n IE_SP_RURAL_OFFICIAL_SOURCE_URL,\n IE_SUPPORTED_UFS,\n IE_TO_LEGACY_PREFIXES,\n} from './constants.js';\nexport type { UfCode } from './constants.js';\nexport { stripIeAc, validateIeAc } from './ac.js';\nexport { stripIeAl, validateIeAl } from './al.js';\nexport { stripIeAm, validateIeAm } from './am.js';\nexport { stripIeAp, validateIeAp } from './ap.js';\nexport { stripIeBa, validateIeBa } from './ba.js';\nexport { stripIeCe, validateIeCe } from './ce.js';\nexport { stripIeDf, validateIeDf } from './df.js';\nexport { stripIeEs, validateIeEs } from './es.js';\nexport { stripIeGo, validateIeGo } from './go.js';\nexport { stripIeMa, validateIeMa } from './ma.js';\nexport { stripIeMg, validateIeMg } from './mg.js';\nexport { stripIeMs, validateIeMs } from './ms.js';\nexport { normalizeMtToCanonical, padMtLegacy, stripIeMt, validateIeMt } from './mt.js';\nexport { stripIePa, validateIePa } from './pa.js';\nexport { stripIePb, validateIePb } from './pb.js';\nexport { stripIePe, validateIePe } from './pe.js';\nexport { stripIePi, validateIePi } from './pi.js';\nexport { stripIePr, validateIePr } from './pr.js';\nexport { stripIeRj, validateIeRj } from './rj.js';\nexport { stripIeRn, validateIeRn } from './rn.js';\nexport { stripIeRo, validateIeRo } from './ro.js';\nexport { stripIeRr, validateIeRr } from './rr.js';\nexport { stripIeRs, validateIeRs } from './rs.js';\nexport { stripIeSc, validateIeSc } from './sc.js';\nexport { stripIeSe, validateIeSe } from './se.js';\nexport { stripIeSp, validateIeSp } from './sp.js';\nexport { isSpRuralIeInput, stripIeSpRural, validateIeSpRural } from './sp-rural.js';\nexport {\n getIeProdutorRuralOfficialSourceUrl,\n isValidIeProdutorRural,\n validateIeProdutorRural,\n} from './validate-produtor-rural.js';\nexport { stripIeTo, validateIeTo } from './to.js';\nexport { applyIeDfMask, applyIeSpMask, applyIeSpRuralMask } from './mask.js';\n\nexport type ValidateInscricaoEstadualOptions = {\n uf: UfCode;\n};\n\ntype FailedResult = Extract<InscricaoEstadualValidationResult, { ok: false }>;\ntype ValidatorFn = (input: string) => InscricaoEstadualValidationResult;\n\nconst VALIDATORS: Record<UfCode, ValidatorFn> = {\n AC: validateIeAc,\n AL: validateIeAl,\n AM: validateIeAm,\n AP: validateIeAp,\n BA: validateIeBa,\n CE: validateIeCe,\n DF: validateIeDf,\n ES: validateIeEs,\n GO: validateIeGo,\n MA: validateIeMa,\n MG: validateIeMg,\n MS: validateIeMs,\n MT: validateIeMt,\n PA: validateIePa,\n PB: validateIePb,\n PE: validateIePe,\n PI: validateIePi,\n PR: validateIePr,\n RJ: validateIeRj,\n RN: validateIeRn,\n RO: validateIeRo,\n RR: validateIeRr,\n RS: validateIeRs,\n SC: validateIeSc,\n SE: validateIeSe,\n SP: validateIeSp,\n TO: validateIeTo,\n};\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message };\n}\n\nexport function getIeOfficialSourceUrl(uf: UfCode): string {\n return IE_OFFICIAL_SOURCE_URLS[uf];\n}\n\nfunction isSupportedUf(uf: string | undefined): uf is UfCode {\n return uf !== undefined && (IE_SUPPORTED_UFS as readonly string[]).includes(uf);\n}\n\nexport function stripInscricaoEstadual(input: string): string {\n return input.replace(/\\D/g, '');\n}\n\nexport function isValidInscricaoEstadual(\n input: string,\n options: ValidateInscricaoEstadualOptions,\n): boolean {\n return validateInscricaoEstadual(input, options).ok;\n}\n\nexport function validateInscricaoEstadual(\n input: string,\n options: ValidateInscricaoEstadualOptions,\n): InscricaoEstadualValidationResult {\n if (!isSupportedUf(options.uf)) {\n return failure('UNSUPPORTED_FORMAT', `UF ${String(options.uf)} is not supported`);\n }\n return VALIDATORS[options.uf](input);\n}\n\nexport function formatInscricaoEstadual(\n input: string,\n options: ValidateInscricaoEstadualOptions,\n): FormatResult {\n const result = validateInscricaoEstadual(input, options);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n\n try {\n if (result.uf === 'SP') {\n return { ok: true, formatted: applyIeSpMask(result.value) };\n }\n if (result.uf === 'DF') {\n return { ok: true, formatted: applyIeDfMask(result.value) };\n }\n return { ok: true, formatted: result.value };\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to format Inscrição Estadual';\n return { ok: false, code: 'UNSUPPORTED_FORMAT', message };\n }\n}\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { normalizeTelefoneDigits, extractTelefoneDigits } from './chunk-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { stripProcessoJudicial } from './chunk-VE2XZSKP.js';
|
|
2
|
+
import { normalizeTelefoneDigits, extractTelefoneDigits } from './chunk-3JAYOBSG.js';
|
|
3
|
+
import { stripPisPasep } from './chunk-ULNZHOMA.js';
|
|
4
|
+
import { stripInscricaoEstadual } from './chunk-P3EJRH4P.js';
|
|
5
|
+
import { stripIeSpRural } from './chunk-TAOFFAG3.js';
|
|
5
6
|
import { stripTituloEleitor, stripRenavam, stripCnh, stripPlaca, stripCep } from './chunk-YYHS5WQN.js';
|
|
6
7
|
import { stripNfeChave } from './chunk-4SNBZFS5.js';
|
|
7
8
|
import { stripCnpj } from './chunk-EB3G4IG6.js';
|
|
@@ -77,8 +78,11 @@ function applyFixes(raw, type) {
|
|
|
77
78
|
case "cartao-credito":
|
|
78
79
|
case "boleto":
|
|
79
80
|
case "titulo-eleitor":
|
|
81
|
+
case "processo-judicial":
|
|
80
82
|
case "inscricao-estadual":
|
|
81
83
|
return digitsFix(trimmed, fixes);
|
|
84
|
+
case "rg":
|
|
85
|
+
return upperAndStripSeparators(trimmed, fixes);
|
|
82
86
|
case "cnpj":
|
|
83
87
|
return upperAndStripSeparators(trimmed, fixes);
|
|
84
88
|
case "placa":
|
|
@@ -113,6 +117,10 @@ function stripForType(value, type) {
|
|
|
113
117
|
return stripRenavam(value);
|
|
114
118
|
case "titulo-eleitor":
|
|
115
119
|
return stripTituloEleitor(value);
|
|
120
|
+
case "processo-judicial":
|
|
121
|
+
return stripProcessoJudicial(value);
|
|
122
|
+
case "rg":
|
|
123
|
+
return value.toUpperCase().replace(/[^A-Z0-9]/g, "");
|
|
116
124
|
case "nfe-chave":
|
|
117
125
|
return stripNfeChave(value);
|
|
118
126
|
case "boleto":
|
|
@@ -131,5 +139,5 @@ function stripForType(value, type) {
|
|
|
131
139
|
}
|
|
132
140
|
|
|
133
141
|
export { applyFixes, stripForType };
|
|
134
|
-
//# sourceMappingURL=chunk-
|
|
135
|
-
//# sourceMappingURL=chunk-
|
|
142
|
+
//# sourceMappingURL=chunk-PTZR6C7Y.js.map
|
|
143
|
+
//# sourceMappingURL=chunk-PTZR6C7Y.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/sanitize/fixes.ts"],"names":[],"mappings":"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","file":"chunk-PTZR6C7Y.js","sourcesContent":["import { stripCep } from '../strip/cep.js';\nimport { stripCnh } from '../strip/cnh.js';\nimport { stripCnpj } from '../strip/cnpj.js';\nimport { stripCpf } from '../strip/cpf.js';\nimport { stripIeSpRural } from '../strip/inscricao-estadual-produtor-rural.js';\nimport { stripInscricaoEstadual } from '../core/inscricao-estadual/index.js';\nimport { stripNfeChave } from '../strip/nfe-chave.js';\nimport { stripPisPasep } from '../strip/pis-pasep.js';\nimport { stripPlaca } from '../strip/placa.js';\nimport { stripProcessoJudicial } from '../strip/processo-judicial.js';\nimport { stripRenavam } from '../strip/renavam.js';\nimport { stripTituloEleitor } from '../strip/titulo-eleitor.js';\nimport { extractTelefoneDigits, normalizeTelefoneDigits } from '../strip/telefone.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 | 'processo-judicial'\n | 'rg'\n | 'nfe-chave'\n | 'boleto'\n | 'cartao-credito'\n | 'inscricao-estadual'\n | 'inscricao-estadual-produtor-rural';\n\nexport type FixResult = {\n value: string;\n fixes: string[];\n};\n\nfunction trimFix(raw: string): FixResult {\n const trimmed = raw.trim();\n const fixes: string[] = [];\n if (trimmed !== raw) {\n fixes.push('trimmed');\n }\n return { value: trimmed, fixes };\n}\n\nfunction digitsFix(value: string, fixes: string[]): FixResult {\n const digits = value.replace(/\\D/g, '');\n if (digits !== value) {\n fixes.push('removed_non_digits');\n }\n return { value: digits, fixes };\n}\n\nfunction upperAndStripSeparators(value: string, fixes: string[]): FixResult {\n const upper = value.toUpperCase();\n if (upper !== value) {\n fixes.push('uppercased');\n }\n const stripped = upper.replace(/[^A-Z0-9]/g, '');\n if (stripped !== upper) {\n fixes.push('removed_separators');\n }\n return { value: stripped, fixes };\n}\n\nfunction placaFix(value: string, fixes: string[]): FixResult {\n const upper = value.toUpperCase();\n if (upper !== value) {\n fixes.push('uppercased');\n }\n if (/[-.\\s/]/.test(value)) {\n fixes.push('removed_separators');\n }\n return { value: stripPlaca(upper), fixes };\n}\n\nfunction telefoneFix(value: string, fixes: string[]): FixResult {\n if (/[\\s()-]/.test(value)) {\n fixes.push('removed_mask_chars');\n }\n const digitsOnly = extractTelefoneDigits(value);\n const normalized = normalizeTelefoneDigits(value);\n if (normalized !== digitsOnly && normalized.length > 0) {\n fixes.push('normalized_national');\n }\n return { value: normalized, fixes };\n}\n\nfunction ieProdutorRuralFix(value: string, fixes: string[]): FixResult {\n const upper = value.toUpperCase();\n if (upper !== value) {\n fixes.push('uppercased');\n }\n if (/^[Pp]/.test(upper)) {\n fixes.push('preserved_p_prefix');\n }\n return { value: stripIeSpRural(upper), fixes };\n}\n\nexport function applyFixes(raw: string, type: SanitizableDocumentType): FixResult {\n const { value: trimmed, fixes } = trimFix(raw);\n\n switch (type) {\n case 'cpf':\n case 'cep':\n case 'pis-pasep':\n case 'cnh':\n case 'renavam':\n case 'nfe-chave':\n case 'cartao-credito':\n case 'boleto':\n case 'titulo-eleitor':\n case 'processo-judicial':\n case 'inscricao-estadual':\n return digitsFix(trimmed, fixes);\n case 'rg':\n return upperAndStripSeparators(trimmed, fixes);\n case 'cnpj':\n return upperAndStripSeparators(trimmed, fixes);\n case 'placa':\n return placaFix(trimmed, fixes);\n case 'telefone':\n return telefoneFix(trimmed, fixes);\n case 'inscricao-estadual-produtor-rural':\n return ieProdutorRuralFix(trimmed, fixes);\n default: {\n const _exhaustive: never = type;\n return { value: _exhaustive, fixes };\n }\n }\n}\n\n/** Validates canonical strip output matches fix pipeline (used in tests). */\nexport function stripForType(value: string, type: SanitizableDocumentType): string {\n switch (type) {\n case 'cpf':\n return stripCpf(value);\n case 'cnpj':\n return stripCnpj(value);\n case 'cep':\n return stripCep(value);\n case 'placa':\n return stripPlaca(value);\n case 'pis-pasep':\n return stripPisPasep(value);\n case 'telefone':\n return normalizeTelefoneDigits(value);\n case 'cnh':\n return stripCnh(value);\n case 'renavam':\n return stripRenavam(value);\n case 'titulo-eleitor':\n return stripTituloEleitor(value);\n case 'processo-judicial':\n return stripProcessoJudicial(value);\n case 'rg':\n return value.toUpperCase().replace(/[^A-Z0-9]/g, '');\n case 'nfe-chave':\n return stripNfeChave(value);\n case 'boleto':\n return value.replace(/\\D/g, '');\n case 'cartao-credito':\n return value.replace(/\\D/g, '');\n case 'inscricao-estadual':\n return stripInscricaoEstadual(value);\n case 'inscricao-estadual-produtor-rural':\n return stripIeSpRural(value);\n default: {\n const _exhaustive: never = type;\n return _exhaustive;\n }\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { brandLinhaDigitavel } from './chunk-
|
|
1
|
+
import { brandLinhaDigitavel } from './chunk-4NFEM2SU.js';
|
|
2
2
|
|
|
3
3
|
// src/core/boleto/constants.ts
|
|
4
4
|
var BOLETO_LINHA_LENGTH = 47;
|
|
@@ -196,5 +196,5 @@ function validateLinhaDigitavel(input) {
|
|
|
196
196
|
}
|
|
197
197
|
|
|
198
198
|
export { BOLETO_ARRECADACAO_CODIGO_BARRAS_LENGTH, BOLETO_ARRECADACAO_LINHA_LENGTH, BOLETO_ARRECADACAO_OFFICIAL_SOURCE_URL, BOLETO_ARRECADACAO_PRODUCT_ID, BOLETO_CODE_ISPB_HOLDER, BOLETO_CODIGO_BARRAS_LENGTH, BOLETO_CURRENCY_ISPB, BOLETO_CURRENCY_REAL, BOLETO_GOLDEN_CODIGO_BARRAS, BOLETO_GOLDEN_CODIGO_BARRAS_BB, BOLETO_GOLDEN_CODIGO_BARRAS_SITUACAO2, BOLETO_GOLDEN_LINHA_BB_STRIPPED, BOLETO_GOLDEN_LINHA_MASKED, BOLETO_GOLDEN_LINHA_SITUACAO2_STRIPPED, BOLETO_GOLDEN_LINHA_STRIPPED, BOLETO_LAYOUTS_PORTAL_URL, BOLETO_LINHA_LENGTH, BOLETO_OFFICIAL_SOURCE_URL, applyLinhaDigitavelMask, computeModulo10FieldDv, computeModulo11BarcodeDv, convertCodigoBarrasToLinhaDigits, convertLinhaToCodigoBarrasDigits, detectBoletoInputKind, detectBoletoSituacao, formatLinhaDigitavel, stripLinhaDigitavel, toBoletoSituacaoCode, validateLinhaDigitavel };
|
|
199
|
-
//# sourceMappingURL=chunk-
|
|
200
|
-
//# sourceMappingURL=chunk-
|
|
199
|
+
//# sourceMappingURL=chunk-QSSKPIG5.js.map
|
|
200
|
+
//# sourceMappingURL=chunk-QSSKPIG5.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/boleto/constants.ts","../src/core/boleto/detect-situacao.ts","../src/core/boleto/modulo11.ts","../src/core/boleto/modulo10.ts","../src/core/boleto/convert.ts","../src/core/boleto/detect.ts","../src/core/boleto/mask.ts","../src/core/boleto/linha-digitavel.ts"],"names":["LINHA_MASK_PATTERN"],"mappings":"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","file":"chunk-E2EFGMWA.js","sourcesContent":["/**\n * FEBRABAN bank boleto (cobrança) — linha digitável + código de barras.\n * @see Convenção da Cobrança FB-0061/2021 — Anexos V, VI, IX, X\n * @see https://cmsarquivos.febraban.org.br/Arquivos/documentos/PDF/Conven%C3%A7%C3%A3o%20da%20Cobran%C3%A7a%20-%2005_02_2021_f.pdf\n */\n\nexport const BOLETO_LINHA_LENGTH = 47;\nexport const BOLETO_CODIGO_BARRAS_LENGTH = 44;\nexport const BOLETO_CURRENCY_REAL = '9';\nexport const BOLETO_CODE_ISPB_HOLDER = '988';\nexport const BOLETO_CURRENCY_ISPB = '0';\n\nexport const BOLETO_GOLDEN_LINHA_MASKED =\n '03399.02579 08991.834006 71742.301014 6 14500000099668';\nexport const BOLETO_GOLDEN_LINHA_STRIPPED =\n '03399025790899183400671742301014614500000099668';\nexport const BOLETO_GOLDEN_CODIGO_BARRAS =\n '03396145000000996689025708991834007174230101';\n\nexport const BOLETO_GOLDEN_LINHA_BB_STRIPPED =\n '00191234546789012345767890123457112340000001500';\nexport const BOLETO_GOLDEN_CODIGO_BARRAS_BB =\n '00191123400000015001234567890123456789012345';\n\nexport const BOLETO_GOLDEN_LINHA_SITUACAO2_STRIPPED =\n '98801234516789012345767890123457760746948000112';\nexport const BOLETO_GOLDEN_CODIGO_BARRAS_SITUACAO2 =\n '98807607469480001121234567890123456789012345';\n\nexport const BOLETO_OFFICIAL_SOURCE_URL =\n 'https://cmsarquivos.febraban.org.br/Arquivos/documentos/PDF/Conven%C3%A7%C3%A3o%20da%20Cobran%C3%A7a%20-%2005_02_2021_f.pdf';\n\nexport const BOLETO_LAYOUTS_PORTAL_URL =\n 'https://portal.febraban.org.br/pagina/3425/33/pt-br/layout-febraban';\n\nexport const BOLETO_ARRECADACAO_LINHA_LENGTH = 48;\nexport const BOLETO_ARRECADACAO_CODIGO_BARRAS_LENGTH = 44;\nexport const BOLETO_ARRECADACAO_PRODUCT_ID = '8';\n\nexport const BOLETO_ARRECADACAO_OFFICIAL_SOURCE_URL =\n 'https://cmsarquivos.febraban.org.br/Arquivos/documentos/PDF/Layout%20-%20C%C3%B3digo%20de%20Barras%20-%20Vers%C3%A3o%207%20-%2001_03_2023_mn.pdf';\n","/**\n * Situação 1 vs Situação 2 detection (Anexo V §2.3.2).\n * @see BR-BOLETO-011\n */\nimport {\n BOLETO_CODIGO_BARRAS_LENGTH,\n BOLETO_CODE_ISPB_HOLDER,\n BOLETO_CURRENCY_ISPB,\n BOLETO_CURRENCY_REAL,\n BOLETO_LINHA_LENGTH,\n} from './constants.js';\n\nexport type BoletoSituacaoKind = 'situacao-1' | 'situacao-2' | 'unknown';\n\nexport type BoletoSituacaoCode = '1' | '2';\n\nexport function toBoletoSituacaoCode(kind: BoletoSituacaoKind): BoletoSituacaoCode | undefined {\n if (kind === 'situacao-1') {\n return '1';\n }\n if (kind === 'situacao-2') {\n return '2';\n }\n return undefined;\n}\n\nexport function detectBoletoSituacao(stripped: string): BoletoSituacaoKind {\n if (\n stripped.length !== BOLETO_LINHA_LENGTH &&\n stripped.length !== BOLETO_CODIGO_BARRAS_LENGTH\n ) {\n return 'unknown';\n }\n\n if (stripped.slice(0, 3) === BOLETO_CODE_ISPB_HOLDER) {\n if (stripped.charAt(3) === BOLETO_CURRENCY_ISPB) {\n return 'situacao-2';\n }\n return 'unknown';\n }\n\n if (stripped.charAt(3) === BOLETO_CURRENCY_REAL) {\n return 'situacao-1';\n }\n\n return 'unknown';\n}\n","/**\n * Modulo 11 — código de barras general DV (Anexo X).\n */\nexport function computeModulo11BarcodeDv(barcodeWithoutDv: string): number {\n let multiplier = 2;\n let sum = 0;\n\n for (let i = barcodeWithoutDv.length - 1; i >= 0; i--) {\n sum += Number(barcodeWithoutDv[i]) * multiplier;\n multiplier = multiplier >= 9 ? 2 : multiplier + 1;\n }\n\n const remainder = sum % 11;\n let dv = 11 - remainder;\n if (dv === 0 || dv === 10 || dv === 11) {\n dv = 1;\n }\n return dv;\n}\n","/**\n * Modulo 10 — linha digitável field DVs (Anexo IX).\n */\nexport function computeModulo10FieldDv(digits: string): number {\n let multiplier = 2;\n let sum = 0;\n\n for (let i = digits.length - 1; i >= 0; i--) {\n let product = Number(digits[i]) * multiplier;\n if (product > 9) {\n product = Math.floor(product / 10) + (product % 10);\n }\n sum += product;\n multiplier = multiplier === 2 ? 1 : 2;\n }\n\n const remainder = sum % 10;\n return remainder === 0 ? 0 : 10 - remainder;\n}\n","/**\n * Linha digitável ↔ código de barras conversion (Anexo V §2.3.4).\n * Situação 1 and Situação 2 share the same field permutation; campo 5 semantics differ\n * (fator+valor vs ISPB 14 digits).\n * @see BR-BOLETO-006\n */\nimport { computeModulo10FieldDv } from './modulo10.js';\nimport {\n BOLETO_CODIGO_BARRAS_LENGTH,\n BOLETO_LINHA_LENGTH,\n} from './constants.js';\n\nexport function convertLinhaToCodigoBarrasDigits(strippedLinha: string): string {\n return (\n strippedLinha.slice(0, 4) +\n strippedLinha[32] +\n strippedLinha.slice(33, BOLETO_LINHA_LENGTH) +\n strippedLinha.slice(4, 9) +\n strippedLinha.slice(10, 20) +\n strippedLinha.slice(21, 31)\n );\n}\n\nexport function convertCodigoBarrasToLinhaDigits(barcode: string): string {\n const field1 = barcode.slice(0, 4) + barcode.slice(19, 24);\n const field2 = barcode.slice(24, 34);\n const field3 = barcode.slice(34, BOLETO_CODIGO_BARRAS_LENGTH);\n const field5 = barcode.slice(5, 9) + barcode.slice(9, 19);\n const dv1 = String(computeModulo10FieldDv(field1));\n const dv2 = String(computeModulo10FieldDv(field2));\n const dv3 = String(computeModulo10FieldDv(field3));\n return field1 + dv1 + field2 + dv2 + field3 + dv3 + barcode[4] + field5;\n}\n","/**\n * Boleto input kind detection — linha digitável (47) vs código de barras (44).\n * @see BR-BOLETO-001\n */\nimport {\n BOLETO_CODIGO_BARRAS_LENGTH,\n BOLETO_LINHA_LENGTH,\n} from './constants.js';\n\nexport type DetectedBoletoInputKind = 'linha-digitavel' | 'codigo-barras' | 'arrecadacao' | 'unknown';\n\nconst LINHA_MASK_PATTERN = /^[0-9.\\s]+$/;\n\nfunction stripDigits(input: string): string {\n return input.replace(/\\D/g, '');\n}\n\nexport function detectBoletoInputKind(input: string): DetectedBoletoInputKind {\n const trimmed = input.trim();\n if (trimmed.length === 0) {\n return 'unknown';\n }\n\n const digits = stripDigits(trimmed);\n\n if (digits.length === 48 && digits.startsWith('8')) {\n return 'arrecadacao';\n }\n\n if (digits.length === BOLETO_CODIGO_BARRAS_LENGTH && /^\\d+$/.test(digits)) {\n return 'codigo-barras';\n }\n\n if (digits.length === BOLETO_LINHA_LENGTH) {\n if (/^\\d+$/.test(trimmed)) {\n return 'linha-digitavel';\n }\n if (LINHA_MASK_PATTERN.test(trimmed)) {\n return 'linha-digitavel';\n }\n return 'unknown';\n }\n\n return 'unknown';\n}\n","/**\n * Linha digitável display mask — FEBRABAN Anexo IX (BR-BOLETO-008).\n * @see docs/use-cases/UC-003-format-document.md\n */\nimport { BOLETO_LINHA_LENGTH } from './constants.js';\n\n/** FEBRABAN typable linha digitável mask (47 digits). */\nexport function applyLinhaDigitavelMask(stripped47: string): string {\n if (stripped47.length !== BOLETO_LINHA_LENGTH) {\n throw new Error(`Linha digitável must have exactly ${BOLETO_LINHA_LENGTH} digits to apply mask`);\n }\n return (\n `${stripped47.slice(0, 5)}.${stripped47.slice(5, 10)} ` +\n `${stripped47.slice(10, 15)}.${stripped47.slice(15, 21)} ` +\n `${stripped47.slice(21, 26)}.${stripped47.slice(26, 32)} ` +\n `${stripped47[32]} ${stripped47.slice(33)}`\n );\n}\n\n/** Backward-compatible alias for applyLinhaDigitavelMask. */\nexport function formatLinhaDigitavel(stripped: string): string {\n return applyLinhaDigitavelMask(stripped);\n}\n","/**\n * Linha digitável validation — modulo 10 field DVs (Anexo IX).\n * @see BR-BOLETO-002, BR-BOLETO-008\n */\nimport type { BoletoSituacao, CobrancaBoletoValidationResult } from '../../types/validation-result.js';\nimport { brandLinhaDigitavel } from '../../types/validation-result.js';\nimport {\n BOLETO_CODE_ISPB_HOLDER,\n BOLETO_LINHA_LENGTH,\n} from './constants.js';\nimport { convertLinhaToCodigoBarrasDigits } from './convert.js';\nimport { detectBoletoSituacao, toBoletoSituacaoCode } from './detect-situacao.js';\nimport { computeModulo10FieldDv } from './modulo10.js';\nimport { computeModulo11BarcodeDv } from './modulo11.js';\n\nexport { applyLinhaDigitavelMask, formatLinhaDigitavel } from './mask.js';\n\ntype FailedResult = Extract<CobrancaBoletoValidationResult, { ok: false }>;\n\nconst LINHA_MASK_PATTERN = /^[0-9.\\s]+$/;\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message, inputKind: 'linha-digitavel' };\n}\n\nexport function stripLinhaDigitavel(input: string): string {\n return input.replace(/\\D/g, '');\n}\n\nfunction validateFieldDv(\n fieldDigits: string,\n actualDv: string,\n fieldNumber: 1 | 2 | 3,\n): FailedResult | null {\n const expected = String(computeModulo10FieldDv(fieldDigits));\n if (actualDv !== expected) {\n return failure('INVALID_CHECK_DIGIT', `Linha digitável field ${fieldNumber} check digit is invalid`);\n }\n return null;\n}\n\nexport function validateLinhaDigitavel(input: string): CobrancaBoletoValidationResult {\n const trimmed = input.trim();\n if (trimmed.length === 0) {\n return { ok: false, code: 'EMPTY_INPUT', message: 'Linha digitável input is empty' };\n }\n\n if (!LINHA_MASK_PATTERN.test(trimmed)) {\n return failure('INVALID_CHARACTER', 'Linha digitável contains invalid characters');\n }\n\n const stripped = stripLinhaDigitavel(trimmed);\n if (stripped.length !== BOLETO_LINHA_LENGTH) {\n return failure('INVALID_LENGTH', `Linha digitável must have ${BOLETO_LINHA_LENGTH} digits after normalization`);\n }\n\n const situacaoKind = detectBoletoSituacao(stripped);\n if (situacaoKind === 'unknown') {\n const isIspbHolder = stripped.slice(0, 3) === BOLETO_CODE_ISPB_HOLDER;\n const message = isIspbHolder\n ? 'ISPB holder boleto (code 988) requires currency indicator 0 (Situação 2)'\n : 'Bank boleto currency code must be 9 (Real) for Situação 1';\n return failure('UNSUPPORTED_FORMAT', message);\n }\n\n const field1Error = validateFieldDv(stripped.slice(0, 9), stripped.charAt(9), 1);\n if (field1Error) {\n return field1Error;\n }\n\n const field2Error = validateFieldDv(stripped.slice(10, 20), stripped.charAt(20), 2);\n if (field2Error) {\n return field2Error;\n }\n\n const field3Error = validateFieldDv(stripped.slice(21, 31), stripped.charAt(31), 3);\n if (field3Error) {\n return field3Error;\n }\n\n const barcode = convertLinhaToCodigoBarrasDigits(stripped);\n const barcodeDvFromMod11 = String(\n computeModulo11BarcodeDv(barcode.slice(0, 4) + barcode.slice(5)),\n );\n\n if (stripped.charAt(32) !== barcodeDvFromMod11) {\n return failure('INVALID_CHECK_DIGIT', 'Linha digitável field 4 (barcode DV) is invalid');\n }\n\n const situacao = toBoletoSituacaoCode(situacaoKind) as BoletoSituacao;\n return {\n ok: true,\n value: brandLinhaDigitavel(stripped),\n inputKind: 'linha-digitavel',\n format: 'linha-digitavel',\n situacao,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/core/boleto/constants.ts","../src/core/boleto/detect-situacao.ts","../src/core/boleto/modulo11.ts","../src/core/boleto/modulo10.ts","../src/core/boleto/convert.ts","../src/core/boleto/detect.ts","../src/core/boleto/mask.ts","../src/core/boleto/linha-digitavel.ts"],"names":["LINHA_MASK_PATTERN"],"mappings":"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","file":"chunk-QSSKPIG5.js","sourcesContent":["/**\n * FEBRABAN bank boleto (cobrança) — linha digitável + código de barras.\n * @see Convenção da Cobrança FB-0061/2021 — Anexos V, VI, IX, X\n * @see https://cmsarquivos.febraban.org.br/Arquivos/documentos/PDF/Conven%C3%A7%C3%A3o%20da%20Cobran%C3%A7a%20-%2005_02_2021_f.pdf\n */\n\nexport const BOLETO_LINHA_LENGTH = 47;\nexport const BOLETO_CODIGO_BARRAS_LENGTH = 44;\nexport const BOLETO_CURRENCY_REAL = '9';\nexport const BOLETO_CODE_ISPB_HOLDER = '988';\nexport const BOLETO_CURRENCY_ISPB = '0';\n\nexport const BOLETO_GOLDEN_LINHA_MASKED =\n '03399.02579 08991.834006 71742.301014 6 14500000099668';\nexport const BOLETO_GOLDEN_LINHA_STRIPPED =\n '03399025790899183400671742301014614500000099668';\nexport const BOLETO_GOLDEN_CODIGO_BARRAS =\n '03396145000000996689025708991834007174230101';\n\nexport const BOLETO_GOLDEN_LINHA_BB_STRIPPED =\n '00191234546789012345767890123457112340000001500';\nexport const BOLETO_GOLDEN_CODIGO_BARRAS_BB =\n '00191123400000015001234567890123456789012345';\n\nexport const BOLETO_GOLDEN_LINHA_SITUACAO2_STRIPPED =\n '98801234516789012345767890123457760746948000112';\nexport const BOLETO_GOLDEN_CODIGO_BARRAS_SITUACAO2 =\n '98807607469480001121234567890123456789012345';\n\nexport const BOLETO_OFFICIAL_SOURCE_URL =\n 'https://cmsarquivos.febraban.org.br/Arquivos/documentos/PDF/Conven%C3%A7%C3%A3o%20da%20Cobran%C3%A7a%20-%2005_02_2021_f.pdf';\n\nexport const BOLETO_LAYOUTS_PORTAL_URL =\n 'https://portal.febraban.org.br/pagina/3425/33/pt-br/layout-febraban';\n\nexport const BOLETO_ARRECADACAO_LINHA_LENGTH = 48;\nexport const BOLETO_ARRECADACAO_CODIGO_BARRAS_LENGTH = 44;\nexport const BOLETO_ARRECADACAO_PRODUCT_ID = '8';\n\nexport const BOLETO_ARRECADACAO_OFFICIAL_SOURCE_URL =\n 'https://cmsarquivos.febraban.org.br/Arquivos/documentos/PDF/Layout%20-%20C%C3%B3digo%20de%20Barras%20-%20Vers%C3%A3o%207%20-%2001_03_2023_mn.pdf';\n","/**\n * Situação 1 vs Situação 2 detection (Anexo V §2.3.2).\n * @see BR-BOLETO-011\n */\nimport {\n BOLETO_CODIGO_BARRAS_LENGTH,\n BOLETO_CODE_ISPB_HOLDER,\n BOLETO_CURRENCY_ISPB,\n BOLETO_CURRENCY_REAL,\n BOLETO_LINHA_LENGTH,\n} from './constants.js';\n\nexport type BoletoSituacaoKind = 'situacao-1' | 'situacao-2' | 'unknown';\n\nexport type BoletoSituacaoCode = '1' | '2';\n\nexport function toBoletoSituacaoCode(kind: BoletoSituacaoKind): BoletoSituacaoCode | undefined {\n if (kind === 'situacao-1') {\n return '1';\n }\n if (kind === 'situacao-2') {\n return '2';\n }\n return undefined;\n}\n\nexport function detectBoletoSituacao(stripped: string): BoletoSituacaoKind {\n if (\n stripped.length !== BOLETO_LINHA_LENGTH &&\n stripped.length !== BOLETO_CODIGO_BARRAS_LENGTH\n ) {\n return 'unknown';\n }\n\n if (stripped.slice(0, 3) === BOLETO_CODE_ISPB_HOLDER) {\n if (stripped.charAt(3) === BOLETO_CURRENCY_ISPB) {\n return 'situacao-2';\n }\n return 'unknown';\n }\n\n if (stripped.charAt(3) === BOLETO_CURRENCY_REAL) {\n return 'situacao-1';\n }\n\n return 'unknown';\n}\n","/**\n * Modulo 11 — código de barras general DV (Anexo X).\n */\nexport function computeModulo11BarcodeDv(barcodeWithoutDv: string): number {\n let multiplier = 2;\n let sum = 0;\n\n for (let i = barcodeWithoutDv.length - 1; i >= 0; i--) {\n sum += Number(barcodeWithoutDv[i]) * multiplier;\n multiplier = multiplier >= 9 ? 2 : multiplier + 1;\n }\n\n const remainder = sum % 11;\n let dv = 11 - remainder;\n if (dv === 0 || dv === 10 || dv === 11) {\n dv = 1;\n }\n return dv;\n}\n","/**\n * Modulo 10 — linha digitável field DVs (Anexo IX).\n */\nexport function computeModulo10FieldDv(digits: string): number {\n let multiplier = 2;\n let sum = 0;\n\n for (let i = digits.length - 1; i >= 0; i--) {\n let product = Number(digits[i]) * multiplier;\n if (product > 9) {\n product = Math.floor(product / 10) + (product % 10);\n }\n sum += product;\n multiplier = multiplier === 2 ? 1 : 2;\n }\n\n const remainder = sum % 10;\n return remainder === 0 ? 0 : 10 - remainder;\n}\n","/**\n * Linha digitável ↔ código de barras conversion (Anexo V §2.3.4).\n * Situação 1 and Situação 2 share the same field permutation; campo 5 semantics differ\n * (fator+valor vs ISPB 14 digits).\n * @see BR-BOLETO-006\n */\nimport { computeModulo10FieldDv } from './modulo10.js';\nimport {\n BOLETO_CODIGO_BARRAS_LENGTH,\n BOLETO_LINHA_LENGTH,\n} from './constants.js';\n\nexport function convertLinhaToCodigoBarrasDigits(strippedLinha: string): string {\n return (\n strippedLinha.slice(0, 4) +\n strippedLinha[32] +\n strippedLinha.slice(33, BOLETO_LINHA_LENGTH) +\n strippedLinha.slice(4, 9) +\n strippedLinha.slice(10, 20) +\n strippedLinha.slice(21, 31)\n );\n}\n\nexport function convertCodigoBarrasToLinhaDigits(barcode: string): string {\n const field1 = barcode.slice(0, 4) + barcode.slice(19, 24);\n const field2 = barcode.slice(24, 34);\n const field3 = barcode.slice(34, BOLETO_CODIGO_BARRAS_LENGTH);\n const field5 = barcode.slice(5, 9) + barcode.slice(9, 19);\n const dv1 = String(computeModulo10FieldDv(field1));\n const dv2 = String(computeModulo10FieldDv(field2));\n const dv3 = String(computeModulo10FieldDv(field3));\n return field1 + dv1 + field2 + dv2 + field3 + dv3 + barcode[4] + field5;\n}\n","/**\n * Boleto input kind detection — linha digitável (47) vs código de barras (44).\n * @see BR-BOLETO-001\n */\nimport {\n BOLETO_CODIGO_BARRAS_LENGTH,\n BOLETO_LINHA_LENGTH,\n} from './constants.js';\n\nexport type DetectedBoletoInputKind = 'linha-digitavel' | 'codigo-barras' | 'arrecadacao' | 'unknown';\n\nconst LINHA_MASK_PATTERN = /^[0-9.\\s]+$/;\n\nfunction stripDigits(input: string): string {\n return input.replace(/\\D/g, '');\n}\n\nexport function detectBoletoInputKind(input: string): DetectedBoletoInputKind {\n const trimmed = input.trim();\n if (trimmed.length === 0) {\n return 'unknown';\n }\n\n const digits = stripDigits(trimmed);\n\n if (digits.length === 48 && digits.startsWith('8')) {\n return 'arrecadacao';\n }\n\n if (digits.length === BOLETO_CODIGO_BARRAS_LENGTH && /^\\d+$/.test(digits)) {\n return 'codigo-barras';\n }\n\n if (digits.length === BOLETO_LINHA_LENGTH) {\n if (/^\\d+$/.test(trimmed)) {\n return 'linha-digitavel';\n }\n if (LINHA_MASK_PATTERN.test(trimmed)) {\n return 'linha-digitavel';\n }\n return 'unknown';\n }\n\n return 'unknown';\n}\n","/**\n * Linha digitável display mask — FEBRABAN Anexo IX (BR-BOLETO-008).\n * @see docs/use-cases/UC-003-format-document.md\n */\nimport { BOLETO_LINHA_LENGTH } from './constants.js';\n\n/** FEBRABAN typable linha digitável mask (47 digits). */\nexport function applyLinhaDigitavelMask(stripped47: string): string {\n if (stripped47.length !== BOLETO_LINHA_LENGTH) {\n throw new Error(`Linha digitável must have exactly ${BOLETO_LINHA_LENGTH} digits to apply mask`);\n }\n return (\n `${stripped47.slice(0, 5)}.${stripped47.slice(5, 10)} ` +\n `${stripped47.slice(10, 15)}.${stripped47.slice(15, 21)} ` +\n `${stripped47.slice(21, 26)}.${stripped47.slice(26, 32)} ` +\n `${stripped47[32]} ${stripped47.slice(33)}`\n );\n}\n\n/** Backward-compatible alias for applyLinhaDigitavelMask. */\nexport function formatLinhaDigitavel(stripped: string): string {\n return applyLinhaDigitavelMask(stripped);\n}\n","/**\n * Linha digitável validation — modulo 10 field DVs (Anexo IX).\n * @see BR-BOLETO-002, BR-BOLETO-008\n */\nimport type { BoletoSituacao, CobrancaBoletoValidationResult } from '../../types/validation-result.js';\nimport { brandLinhaDigitavel } from '../../types/validation-result.js';\nimport {\n BOLETO_CODE_ISPB_HOLDER,\n BOLETO_LINHA_LENGTH,\n} from './constants.js';\nimport { convertLinhaToCodigoBarrasDigits } from './convert.js';\nimport { detectBoletoSituacao, toBoletoSituacaoCode } from './detect-situacao.js';\nimport { computeModulo10FieldDv } from './modulo10.js';\nimport { computeModulo11BarcodeDv } from './modulo11.js';\n\nexport { applyLinhaDigitavelMask, formatLinhaDigitavel } from './mask.js';\n\ntype FailedResult = Extract<CobrancaBoletoValidationResult, { ok: false }>;\n\nconst LINHA_MASK_PATTERN = /^[0-9.\\s]+$/;\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message, inputKind: 'linha-digitavel' };\n}\n\nexport function stripLinhaDigitavel(input: string): string {\n return input.replace(/\\D/g, '');\n}\n\nfunction validateFieldDv(\n fieldDigits: string,\n actualDv: string,\n fieldNumber: 1 | 2 | 3,\n): FailedResult | null {\n const expected = String(computeModulo10FieldDv(fieldDigits));\n if (actualDv !== expected) {\n return failure('INVALID_CHECK_DIGIT', `Linha digitável field ${fieldNumber} check digit is invalid`);\n }\n return null;\n}\n\nexport function validateLinhaDigitavel(input: string): CobrancaBoletoValidationResult {\n const trimmed = input.trim();\n if (trimmed.length === 0) {\n return { ok: false, code: 'EMPTY_INPUT', message: 'Linha digitável input is empty' };\n }\n\n if (!LINHA_MASK_PATTERN.test(trimmed)) {\n return failure('INVALID_CHARACTER', 'Linha digitável contains invalid characters');\n }\n\n const stripped = stripLinhaDigitavel(trimmed);\n if (stripped.length !== BOLETO_LINHA_LENGTH) {\n return failure('INVALID_LENGTH', `Linha digitável must have ${BOLETO_LINHA_LENGTH} digits after normalization`);\n }\n\n const situacaoKind = detectBoletoSituacao(stripped);\n if (situacaoKind === 'unknown') {\n const isIspbHolder = stripped.slice(0, 3) === BOLETO_CODE_ISPB_HOLDER;\n const message = isIspbHolder\n ? 'ISPB holder boleto (code 988) requires currency indicator 0 (Situação 2)'\n : 'Bank boleto currency code must be 9 (Real) for Situação 1';\n return failure('UNSUPPORTED_FORMAT', message);\n }\n\n const field1Error = validateFieldDv(stripped.slice(0, 9), stripped.charAt(9), 1);\n if (field1Error) {\n return field1Error;\n }\n\n const field2Error = validateFieldDv(stripped.slice(10, 20), stripped.charAt(20), 2);\n if (field2Error) {\n return field2Error;\n }\n\n const field3Error = validateFieldDv(stripped.slice(21, 31), stripped.charAt(31), 3);\n if (field3Error) {\n return field3Error;\n }\n\n const barcode = convertLinhaToCodigoBarrasDigits(stripped);\n const barcodeDvFromMod11 = String(\n computeModulo11BarcodeDv(barcode.slice(0, 4) + barcode.slice(5)),\n );\n\n if (stripped.charAt(32) !== barcodeDvFromMod11) {\n return failure('INVALID_CHECK_DIGIT', 'Linha digitável field 4 (barcode DV) is invalid');\n }\n\n const situacao = toBoletoSituacaoCode(situacaoKind) as BoletoSituacao;\n return {\n ok: true,\n value: brandLinhaDigitavel(stripped),\n inputKind: 'linha-digitavel',\n format: 'linha-digitavel',\n situacao,\n };\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { computeCheckDigit } from './chunk-OTZHMJYE.js';
|
|
2
2
|
import { stripCnpj } from './chunk-EB3G4IG6.js';
|
|
3
|
-
import { brandCnpj } from './chunk-
|
|
3
|
+
import { brandCnpj } from './chunk-4NFEM2SU.js';
|
|
4
4
|
|
|
5
5
|
// src/core/cnpj/constants.ts
|
|
6
6
|
var CNPJ_LENGTH = 14;
|
|
@@ -143,5 +143,5 @@ function validateCnpj(input) {
|
|
|
143
143
|
}
|
|
144
144
|
|
|
145
145
|
export { CNPJ_BASE_LENGTH, CNPJ_DV1_WEIGHTS, CNPJ_DV2_WEIGHTS, CNPJ_GOLDEN_ALPHANUMERIC, CNPJ_GOLDEN_ALPHANUMERIC_MASKED, CNPJ_GOLDEN_NUMERIC, CNPJ_GOLDEN_NUMERIC_MASKED, CNPJ_LENGTH, CNPJ_MASK_PATTERN, CNPJ_OFFICIAL_SOURCE_URL, cnpjCharValue, detectCnpjFormat, isValidCnpj, isValidCnpjAlphanumeric, isValidCnpjNumeric, validateCnpj };
|
|
146
|
-
//# sourceMappingURL=chunk-
|
|
147
|
-
//# sourceMappingURL=chunk-
|
|
146
|
+
//# sourceMappingURL=chunk-RSJK46ZE.js.map
|
|
147
|
+
//# sourceMappingURL=chunk-RSJK46ZE.js.map
|