@br-validators/core 0.11.0-alpha.0 → 0.12.0-alpha.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 +3 -0
- package/dist/boleto.d.ts +2 -2
- package/dist/boleto.js +3 -2
- package/dist/brcode.d.ts +2 -2
- package/dist/brcode.js +9 -6
- package/dist/cartao-credito.d.ts +2 -2
- package/dist/cartao-credito.js +4 -2
- package/dist/cep.d.ts +2 -2
- package/dist/cep.js +6 -3
- package/dist/chunk-2CNYSY3Z.js +3 -0
- package/dist/chunk-2CNYSY3Z.js.map +1 -0
- package/dist/{chunk-GLKGX552.js → chunk-2JJS46FM.js} +5 -23
- package/dist/chunk-2JJS46FM.js.map +1 -0
- package/dist/{chunk-FLZ6IHOD.js → chunk-3QP6R46N.js} +119 -496
- package/dist/chunk-3QP6R46N.js.map +1 -0
- package/dist/chunk-4SNBZFS5.js +8 -0
- package/dist/chunk-4SNBZFS5.js.map +1 -0
- package/dist/{chunk-IW3ESGWH.js → chunk-4W4OKLSZ.js} +4 -25
- package/dist/chunk-4W4OKLSZ.js.map +1 -0
- package/dist/chunk-4Y2FBO57.js +26 -0
- package/dist/chunk-4Y2FBO57.js.map +1 -0
- package/dist/{chunk-465IC76U.js → chunk-5UL3M7IU.js} +4 -23
- package/dist/chunk-5UL3M7IU.js.map +1 -0
- package/dist/chunk-6QJFMOIX.js +22 -0
- package/dist/chunk-6QJFMOIX.js.map +1 -0
- package/dist/chunk-7ZL7PZII.js +187 -0
- package/dist/chunk-7ZL7PZII.js.map +1 -0
- package/dist/chunk-BFZPCEYB.js +14 -0
- package/dist/chunk-BFZPCEYB.js.map +1 -0
- package/dist/chunk-CDGRHI7W.js +22 -0
- package/dist/chunk-CDGRHI7W.js.map +1 -0
- package/dist/chunk-CQPM43VV.js +3 -0
- package/dist/chunk-CQPM43VV.js.map +1 -0
- package/dist/chunk-D36RM7OD.js +207 -0
- package/dist/chunk-D36RM7OD.js.map +1 -0
- package/dist/{chunk-CR45BOLS.js → chunk-EPKHEW5V.js} +4 -13
- package/dist/chunk-EPKHEW5V.js.map +1 -0
- package/dist/{chunk-5BBNLRZP.js → chunk-F6PTZY4O.js} +5 -14
- package/dist/chunk-F6PTZY4O.js.map +1 -0
- package/dist/chunk-FXLVNCG3.js +26 -0
- package/dist/chunk-FXLVNCG3.js.map +1 -0
- package/dist/chunk-G24G7WR5.js +3 -0
- package/dist/chunk-G24G7WR5.js.map +1 -0
- package/dist/chunk-G2Y63PIF.js +24 -0
- package/dist/chunk-G2Y63PIF.js.map +1 -0
- package/dist/chunk-G32U6YQ5.js +14 -0
- package/dist/chunk-G32U6YQ5.js.map +1 -0
- package/dist/{chunk-TVVNTLIH.js → chunk-GRDUTHNX.js} +3 -3
- package/dist/{chunk-TVVNTLIH.js.map → chunk-GRDUTHNX.js.map} +1 -1
- package/dist/chunk-GVK6IMBF.js +3 -0
- package/dist/chunk-GVK6IMBF.js.map +1 -0
- package/dist/chunk-IQGRFAQV.js +23 -0
- package/dist/chunk-IQGRFAQV.js.map +1 -0
- package/dist/chunk-JQABTHUJ.js +3 -0
- package/dist/chunk-JQABTHUJ.js.map +1 -0
- package/dist/{chunk-GN7QIQE6.js → chunk-KH7DWOUA.js} +5 -23
- package/dist/chunk-KH7DWOUA.js.map +1 -0
- package/dist/chunk-KQDLIGSG.js +14 -0
- package/dist/chunk-KQDLIGSG.js.map +1 -0
- package/dist/chunk-LF2B4VPE.js +3 -0
- package/dist/chunk-LF2B4VPE.js.map +1 -0
- package/dist/chunk-LGD2JJBZ.js +288 -0
- package/dist/chunk-LGD2JJBZ.js.map +1 -0
- package/dist/{chunk-MQT25QN7.js → chunk-LYBFUKHR.js} +4 -3
- package/dist/chunk-LYBFUKHR.js.map +1 -0
- package/dist/chunk-MFNJTAUS.js +3 -0
- package/dist/chunk-MFNJTAUS.js.map +1 -0
- package/dist/{chunk-D5JMGN7U.js → chunk-MK7OJUF5.js} +7 -5
- package/dist/chunk-MK7OJUF5.js.map +1 -0
- package/dist/chunk-MLPXW7N2.js +226 -0
- package/dist/chunk-MLPXW7N2.js.map +1 -0
- package/dist/{chunk-BBL6ZPXH.js → chunk-MSLJF2FM.js} +18 -3
- package/dist/chunk-MSLJF2FM.js.map +1 -0
- package/dist/{chunk-V3OWDXRU.js → chunk-NHLLC6WH.js} +4 -3
- package/dist/chunk-NHLLC6WH.js.map +1 -0
- package/dist/chunk-OCYXNLHO.js +307 -0
- package/dist/chunk-OCYXNLHO.js.map +1 -0
- package/dist/{chunk-B2TDI3YS.js → chunk-OTZHMJYE.js} +3 -3
- package/dist/{chunk-B2TDI3YS.js.map → chunk-OTZHMJYE.js.map} +1 -1
- package/dist/chunk-P55H5YRX.js +3 -0
- package/dist/chunk-P55H5YRX.js.map +1 -0
- package/dist/chunk-PB4RIS6G.js +27 -0
- package/dist/chunk-PB4RIS6G.js.map +1 -0
- package/dist/chunk-QGMVUIDD.js +3 -0
- package/dist/chunk-QGMVUIDD.js.map +1 -0
- package/dist/chunk-RYGAK7PB.js +3 -0
- package/dist/chunk-RYGAK7PB.js.map +1 -0
- package/dist/chunk-US4OLTJ2.js +104 -0
- package/dist/chunk-US4OLTJ2.js.map +1 -0
- package/dist/{chunk-GEHAH4OH.js → chunk-WCQUQ2WX.js} +4 -4
- package/dist/{chunk-GEHAH4OH.js.map → chunk-WCQUQ2WX.js.map} +1 -1
- package/dist/chunk-WLE2ENQA.js +86 -0
- package/dist/chunk-WLE2ENQA.js.map +1 -0
- package/dist/{chunk-2KTD23PD.js → chunk-WPL47PWJ.js} +5 -14
- package/dist/chunk-WPL47PWJ.js.map +1 -0
- package/dist/chunk-XKY2CV3G.js +14 -0
- package/dist/chunk-XKY2CV3G.js.map +1 -0
- package/dist/chunk-XUO7FV6Z.js +14 -0
- package/dist/chunk-XUO7FV6Z.js.map +1 -0
- package/dist/chunk-Y2KUN2D3.js +3 -0
- package/dist/chunk-Y2KUN2D3.js.map +1 -0
- package/dist/chunk-Y6IW2LMW.js +460 -0
- package/dist/chunk-Y6IW2LMW.js.map +1 -0
- package/dist/chunk-YGA5W54J.js +3 -0
- package/dist/chunk-YGA5W54J.js.map +1 -0
- package/dist/{chunk-UE4PVN6Y.js → chunk-YXELVV37.js} +5 -14
- package/dist/chunk-YXELVV37.js.map +1 -0
- package/dist/chunk-YYHS5WQN.js +28 -0
- package/dist/chunk-YYHS5WQN.js.map +1 -0
- package/dist/chunk-ZAUZRIOU.js +23 -0
- package/dist/chunk-ZAUZRIOU.js.map +1 -0
- package/dist/chunk-ZH4RJNG7.js +3 -0
- package/dist/chunk-ZH4RJNG7.js.map +1 -0
- package/dist/cnh.d.ts +39 -0
- package/dist/cnh.js +11 -0
- package/dist/cnh.js.map +1 -0
- package/dist/cnpj.d.ts +2 -2
- package/dist/cnpj.js +6 -4
- package/dist/cpf.d.ts +2 -2
- package/dist/cpf.js +6 -4
- package/dist/detect.d.ts +23 -0
- package/dist/detect.js +26 -0
- package/dist/detect.js.map +1 -0
- package/dist/generate.d.ts +10 -0
- package/dist/generate.js +29 -0
- package/dist/generate.js.map +1 -0
- package/dist/index-CZLo9YOT.d.ts +21 -0
- package/dist/index.d.ts +12 -4
- package/dist/index.js +60 -25
- package/dist/index.js.map +1 -1
- package/dist/inscricao-estadual-produtor-rural-CfWUaggb.d.ts +46 -0
- package/dist/inscricao-estadual-produtor-rural.d.ts +2 -0
- package/dist/inscricao-estadual-produtor-rural.js +7 -0
- package/dist/inscricao-estadual-produtor-rural.js.map +1 -0
- package/dist/inscricao-estadual.d.ts +4 -21
- package/dist/inscricao-estadual.js +5 -2
- package/dist/nfe-chave.d.ts +71 -0
- package/dist/nfe-chave.js +6 -0
- package/dist/nfe-chave.js.map +1 -0
- package/dist/pis-pasep.d.ts +2 -2
- package/dist/pis-pasep.js +5 -3
- package/dist/{pix-BtTx04Si.d.ts → pix-ddldLlb7.d.ts} +1 -1
- package/dist/pix.d.ts +2 -2
- package/dist/pix.js +8 -6
- package/dist/placa.d.ts +2 -2
- package/dist/placa.js +6 -3
- package/dist/renavam.d.ts +37 -0
- package/dist/renavam.js +11 -0
- package/dist/renavam.js.map +1 -0
- package/dist/sanitize.d.ts +9 -0
- package/dist/sanitize.js +24 -0
- package/dist/sanitize.js.map +1 -0
- package/dist/telefone.d.ts +2 -2
- package/dist/telefone.js +4 -2
- package/dist/titulo-eleitor.d.ts +56 -0
- package/dist/titulo-eleitor.js +10 -0
- package/dist/titulo-eleitor.js.map +1 -0
- package/dist/{validation-result-C-Ei-lZH.d.ts → validation-result-BhQE-1_O.d.ts} +64 -2
- package/package.json +33 -1
- package/dist/chunk-2KTD23PD.js.map +0 -1
- package/dist/chunk-465IC76U.js.map +0 -1
- package/dist/chunk-5BBNLRZP.js.map +0 -1
- package/dist/chunk-BBL6ZPXH.js.map +0 -1
- package/dist/chunk-CR45BOLS.js.map +0 -1
- package/dist/chunk-D5JMGN7U.js.map +0 -1
- package/dist/chunk-FLZ6IHOD.js.map +0 -1
- package/dist/chunk-GLKGX552.js.map +0 -1
- package/dist/chunk-GN7QIQE6.js.map +0 -1
- package/dist/chunk-IW3ESGWH.js.map +0 -1
- package/dist/chunk-MQT25QN7.js.map +0 -1
- package/dist/chunk-UE4PVN6Y.js.map +0 -1
- package/dist/chunk-V3OWDXRU.js.map +0 -1
- package/dist/chunk-W6UXVWSR.js +0 -13
- package/dist/chunk-W6UXVWSR.js.map +0 -1
|
@@ -0,0 +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-3QP6R46N.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"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/strip/nfe-chave.ts"],"names":[],"mappings":";AAIO,SAAS,cAAc,KAAA,EAAuB;AACnD,EAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAChC","file":"chunk-4SNBZFS5.js","sourcesContent":["/**\n * Strip NF-e chave de acesso — digits only (BR-NFE-CHAVE-002).\n * @see http://moc.sped.fazenda.pr.gov.br/ — §2.2.6 chave de acesso\n */\nexport function stripNfeChave(input: string): string {\n return input.replace(/\\D/g, '');\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { brandCodigoBarras, brandLinhaDigitavel } from './chunk-
|
|
1
|
+
import { brandCodigoBarras, brandLinhaDigitavel } from './chunk-MSLJF2FM.js';
|
|
2
2
|
|
|
3
3
|
// src/core/boleto/constants.ts
|
|
4
4
|
var BOLETO_LINHA_LENGTH = 47;
|
|
@@ -361,27 +361,6 @@ function convertCodigoBarrasToLinhaDigitavel(input) {
|
|
|
361
361
|
};
|
|
362
362
|
}
|
|
363
363
|
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
if (trimmed.length === 0) {
|
|
368
|
-
return { ok: false, code: "EMPTY_INPUT", message: "Boleto input is empty" };
|
|
369
|
-
}
|
|
370
|
-
const kind = detectBoletoInputKind(trimmed);
|
|
371
|
-
if (kind === "codigo-barras") {
|
|
372
|
-
return {
|
|
373
|
-
ok: false,
|
|
374
|
-
code: "UNSUPPORTED_FORMAT",
|
|
375
|
-
message: "Boleto barcode formatting is not supported in v1"
|
|
376
|
-
};
|
|
377
|
-
}
|
|
378
|
-
const result = validateLinhaDigitavel(trimmed);
|
|
379
|
-
if (!result.ok) {
|
|
380
|
-
return { ok: false, code: result.code, message: result.message };
|
|
381
|
-
}
|
|
382
|
-
return { ok: true, formatted: applyLinhaDigitavelMask(result.value) };
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
export { 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, convertCodigoBarrasToLinhaDigitavel, convertCodigoBarrasToLinhaDigits, convertLinhaToCodigoBarras, convertLinhaToCodigoBarrasDigits, detectBoletoInputKind, detectBoletoSituacao, formatBoleto, formatLinhaDigitavel, isValidBoleto, stripCodigoBarras, stripLinhaDigitavel, validateBoleto, validateCodigoBarras, validateFatorVencimento, validateLinhaDigitavel, validateValorDocumento };
|
|
386
|
-
//# sourceMappingURL=chunk-IW3ESGWH.js.map
|
|
387
|
-
//# sourceMappingURL=chunk-IW3ESGWH.js.map
|
|
364
|
+
export { 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, convertCodigoBarrasToLinhaDigitavel, convertCodigoBarrasToLinhaDigits, convertLinhaToCodigoBarras, convertLinhaToCodigoBarrasDigits, detectBoletoInputKind, detectBoletoSituacao, formatLinhaDigitavel, isValidBoleto, stripCodigoBarras, stripLinhaDigitavel, validateBoleto, validateCodigoBarras, validateFatorVencimento, validateLinhaDigitavel, validateValorDocumento };
|
|
365
|
+
//# sourceMappingURL=chunk-4W4OKLSZ.js.map
|
|
366
|
+
//# sourceMappingURL=chunk-4W4OKLSZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/boleto/constants.ts","../src/core/boleto/detect-situacao.ts","../src/core/boleto/modulo11.ts","../src/core/boleto/codigo-barras.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","../src/core/boleto/fator-vencimento.ts","../src/core/boleto/valor-documento.ts","../src/core/boleto/semantic.ts","../src/core/boleto/index.ts"],"names":["LINHA_MASK_PATTERN","failure"],"mappings":"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","file":"chunk-4W4OKLSZ.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","/**\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 * Código de barras validation — modulo 11 general DV (Anexo X).\n * @see BR-BOLETO-003, BR-BOLETO-004, BR-BOLETO-010\n */\nimport type { BoletoSituacao, BoletoValidationResult } from '../../types/validation-result.js';\nimport { brandCodigoBarras } from '../../types/validation-result.js';\nimport {\n BOLETO_CODIGO_BARRAS_LENGTH,\n BOLETO_CODE_ISPB_HOLDER,\n} from './constants.js';\nimport { detectBoletoSituacao, toBoletoSituacaoCode } from './detect-situacao.js';\nimport { computeModulo11BarcodeDv } from './modulo11.js';\n\ntype FailedResult = Extract<BoletoValidationResult, { ok: false }>;\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message, inputKind: 'codigo-barras' };\n}\n\nexport function stripCodigoBarras(input: string): string {\n return input.replace(/\\D/g, '');\n}\n\nexport function validateCodigoBarras(input: string): BoletoValidationResult {\n const trimmed = input.trim();\n if (trimmed.length === 0) {\n return { ok: false, code: 'EMPTY_INPUT', message: 'Código de barras input is empty' };\n }\n\n if (/[^0-9]/.test(trimmed)) {\n return failure('INVALID_CHARACTER', 'Código de barras contains invalid characters');\n }\n\n if (trimmed.length !== BOLETO_CODIGO_BARRAS_LENGTH) {\n return failure('INVALID_LENGTH', `Código de barras must have ${BOLETO_CODIGO_BARRAS_LENGTH} digits`);\n }\n\n const situacaoKind = detectBoletoSituacao(trimmed);\n if (situacaoKind === 'unknown') {\n const isIspbHolder = trimmed.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 if (trimmed.charAt(4) === '0') {\n return failure('INVALID_CHECK_DIGIT', 'Barcode DV cannot be 0');\n }\n\n const expectedDv = String(computeModulo11BarcodeDv(trimmed.slice(0, 4) + trimmed.slice(5)));\n if (trimmed.charAt(4) !== expectedDv) {\n return failure('INVALID_CHECK_DIGIT', 'Código de barras check digit is invalid');\n }\n\n const situacao = toBoletoSituacaoCode(situacaoKind) as BoletoSituacao;\n return {\n ok: true,\n value: brandCodigoBarras(trimmed),\n inputKind: 'codigo-barras',\n format: 'codigo-barras',\n situacao,\n };\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, BoletoValidationResult } 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<BoletoValidationResult, { 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): BoletoValidationResult {\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","/**\n * Due-date factor semantic validation (Situação 1 only).\n * @see BR-BOLETO-012\n */\nimport type { ValidationErrorCode } from '../../types/validation-result.js';\n\nconst FATOR_MIN = 1;\n/** FEBRABAN factor space; values above this fail optional semantic validation. */\nconst FATOR_SEMANTIC_MAX = 9997;\n\nexport type FatorVencimentoValidationResult =\n | { ok: true; factor: string; hasDueDate: boolean }\n | { ok: false; code: ValidationErrorCode; message: string };\n\nexport function validateFatorVencimento(factor: string): FatorVencimentoValidationResult {\n if (!/^\\d{4}$/.test(factor)) {\n return {\n ok: false,\n code: 'INVALID_LENGTH',\n message: 'Due-date factor must have exactly 4 digits',\n };\n }\n\n if (factor === '0000') {\n return { ok: true, factor, hasDueDate: false };\n }\n\n const days = Number(factor);\n if (days < FATOR_MIN || days > FATOR_SEMANTIC_MAX) {\n return {\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: 'Due-date factor is out of the supported range',\n };\n }\n\n return { ok: true, factor, hasDueDate: true };\n}\n","/**\n * Document amount semantic validation (Situação 1 only).\n * @see BR-BOLETO-013\n */\nimport type { ValidationErrorCode } from '../../types/validation-result.js';\n\nexport type ValorDocumentoValidationResult =\n | { ok: true; amountCents: number }\n | { ok: false; code: ValidationErrorCode; message: string };\n\nexport function validateValorDocumento(value: string): ValorDocumentoValidationResult {\n if (!/^\\d{10}$/.test(value)) {\n return {\n ok: false,\n code: 'INVALID_LENGTH',\n message: 'Document amount must have exactly 10 digits (centavos)',\n };\n }\n\n return { ok: true, amountCents: Number(value) };\n}\n","/**\n * Optional semantic checks for Situação 1 cobrança fields.\n * @see BR-BOLETO-012, BR-BOLETO-013\n */\nimport type { BoletoInputKind, BoletoValidationResult } from '../../types/validation-result.js';\nimport { detectBoletoSituacao } from './detect-situacao.js';\nimport { validateFatorVencimento } from './fator-vencimento.js';\nimport { validateValorDocumento } from './valor-documento.js';\n\nexport type SemanticValidationOptions = {\n validateDueFactor?: boolean;\n validateAmount?: boolean;\n};\n\ntype FailedResult = Extract<BoletoValidationResult, { ok: false }>;\n\nfunction failure(code: FailedResult['code'], message: string, inputKind: BoletoInputKind): FailedResult {\n return { ok: false, code, message, inputKind };\n}\n\nexport function validateSemanticFields(\n barcode: string,\n options: SemanticValidationOptions,\n inputKind: BoletoInputKind,\n): FailedResult | null {\n if (detectBoletoSituacao(barcode) !== 'situacao-1') {\n return null;\n }\n\n if (options.validateDueFactor) {\n const factorResult = validateFatorVencimento(barcode.slice(5, 9));\n if (!factorResult.ok) {\n return failure(factorResult.code, factorResult.message, inputKind);\n }\n }\n\n if (options.validateAmount && detectBoletoSituacao(barcode) === 'situacao-1') {\n validateValorDocumento(barcode.slice(9, 19));\n }\n\n return null;\n}\n","/**\n * Boleto validation — linha digitável + código de barras (FEBRABAN cobrança).\n * @see docs/use-cases/UC-007-validate-boleto.md\n */\nimport type { BoletoInputKind, BoletoValidationResult } from '../../types/validation-result.js';\nimport { brandCodigoBarras, brandLinhaDigitavel } from '../../types/validation-result.js';\nimport { validateCodigoBarras } from './codigo-barras.js';\nimport {\n convertCodigoBarrasToLinhaDigits,\n convertLinhaToCodigoBarrasDigits,\n} from './convert.js';\nimport { detectBoletoInputKind } from './detect.js';\nimport { validateLinhaDigitavel } from './linha-digitavel.js';\nimport { validateSemanticFields } from './semantic.js';\n\nexport {\n BOLETO_CODIGO_BARRAS_LENGTH,\n BOLETO_CODE_ISPB_HOLDER,\n BOLETO_CURRENCY_ISPB,\n BOLETO_CURRENCY_REAL,\n BOLETO_GOLDEN_CODIGO_BARRAS,\n BOLETO_GOLDEN_CODIGO_BARRAS_BB,\n BOLETO_GOLDEN_CODIGO_BARRAS_SITUACAO2,\n BOLETO_GOLDEN_LINHA_BB_STRIPPED,\n BOLETO_GOLDEN_LINHA_MASKED,\n BOLETO_GOLDEN_LINHA_SITUACAO2_STRIPPED,\n BOLETO_GOLDEN_LINHA_STRIPPED,\n BOLETO_LAYOUTS_PORTAL_URL,\n BOLETO_LINHA_LENGTH,\n BOLETO_OFFICIAL_SOURCE_URL,\n} from './constants.js';\nexport { computeModulo10FieldDv } from './modulo10.js';\nexport { computeModulo11BarcodeDv } from './modulo11.js';\nexport { detectBoletoInputKind, type DetectedBoletoInputKind } from './detect.js';\nexport {\n detectBoletoSituacao,\n toBoletoSituacaoCode,\n type BoletoSituacaoCode,\n type BoletoSituacaoKind,\n} from './detect-situacao.js';\nexport {\n convertCodigoBarrasToLinhaDigits,\n convertLinhaToCodigoBarrasDigits,\n} from './convert.js';\nexport {\n formatLinhaDigitavel,\n stripLinhaDigitavel,\n validateLinhaDigitavel,\n} from './linha-digitavel.js';\nexport { applyLinhaDigitavelMask } from './mask.js';\nexport { stripCodigoBarras, validateCodigoBarras } from './codigo-barras.js';\nexport { validateFatorVencimento, type FatorVencimentoValidationResult } from './fator-vencimento.js';\nexport { validateValorDocumento, type ValorDocumentoValidationResult } from './valor-documento.js';\nexport { validateSemanticFields } from './semantic.js';\n\nexport type ValidateBoletoOptions = {\n kind?: BoletoInputKind;\n validateDueFactor?: boolean;\n validateAmount?: boolean;\n};\n\ntype FailedResult = Extract<BoletoValidationResult, { ok: false }>;\n\nfunction failure(code: FailedResult['code'], message: string, inputKind?: BoletoInputKind): FailedResult {\n return { ok: false, code, message, ...(inputKind ? { inputKind } : {}) };\n}\n\nfunction validateByKind(input: string, kind: BoletoInputKind, options?: ValidateBoletoOptions): BoletoValidationResult {\n const result = kind === 'linha-digitavel' ? validateLinhaDigitavel(input) : validateCodigoBarras(input);\n if (!result.ok) {\n return result;\n }\n\n const barcode =\n kind === 'linha-digitavel'\n ? convertLinhaToCodigoBarrasDigits(result.value)\n : result.value;\n\n const semanticError = validateSemanticFields(barcode, options ?? {}, kind);\n if (semanticError) {\n return semanticError;\n }\n\n return result;\n}\n\nexport function isValidBoleto(input: string, options?: ValidateBoletoOptions): boolean {\n return validateBoleto(input, options).ok;\n}\n\nexport function validateBoleto(input: string, options?: ValidateBoletoOptions): BoletoValidationResult {\n const trimmed = input.trim();\n if (trimmed.length === 0) {\n return failure('EMPTY_INPUT', 'Boleto input is empty');\n }\n\n const detected = detectBoletoInputKind(trimmed);\n\n if (detected === 'arrecadacao') {\n return failure('UNSUPPORTED_FORMAT', '48-digit arrecadação slips are not supported');\n }\n\n if (options?.kind !== undefined) {\n if (detected !== 'unknown' && detected !== options.kind) {\n return failure(\n 'UNSUPPORTED_FORMAT',\n `Boleto detected as ${detected} but forced kind is ${options.kind}`,\n options.kind,\n );\n }\n return validateByKind(trimmed, options.kind, options);\n }\n\n if (detected === 'unknown') {\n return failure('UNSUPPORTED_FORMAT', 'Boleto input kind could not be determined');\n }\n\n return validateByKind(trimmed, detected, options);\n}\n\nexport function convertLinhaToCodigoBarras(input: string): BoletoValidationResult {\n const result = validateLinhaDigitavel(input);\n if (!result.ok) {\n return result;\n }\n const barcode = convertLinhaToCodigoBarrasDigits(result.value);\n return {\n ok: true,\n value: brandCodigoBarras(barcode),\n inputKind: 'codigo-barras',\n format: 'codigo-barras',\n situacao: result.situacao,\n };\n}\n\nexport function convertCodigoBarrasToLinhaDigitavel(input: string): BoletoValidationResult {\n const result = validateCodigoBarras(input);\n if (!result.ok) {\n return result;\n }\n const linha = convertCodigoBarrasToLinhaDigits(result.value);\n return {\n ok: true,\n value: brandLinhaDigitavel(linha),\n inputKind: 'linha-digitavel',\n format: 'linha-digitavel',\n situacao: result.situacao,\n };\n}\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { validateNfeChave, NFE_CHAVE_NUMERIC_PATTERN } from './chunk-D36RM7OD.js';
|
|
2
|
+
|
|
3
|
+
// src/core/nfe-chave/mask.ts
|
|
4
|
+
function applyNfeChaveMask(canonical) {
|
|
5
|
+
if (!NFE_CHAVE_NUMERIC_PATTERN.test(canonical)) {
|
|
6
|
+
throw new Error("NF-e chave must have exactly 44 digits to apply mask");
|
|
7
|
+
}
|
|
8
|
+
const groups = [];
|
|
9
|
+
for (let i = 0; i < canonical.length; i += 4) {
|
|
10
|
+
groups.push(canonical.slice(i, i + 4));
|
|
11
|
+
}
|
|
12
|
+
return groups.join(" ");
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// src/format/nfe-chave.ts
|
|
16
|
+
function formatNfeChave(input) {
|
|
17
|
+
const result = validateNfeChave(input);
|
|
18
|
+
if (!result.ok) {
|
|
19
|
+
return { ok: false, code: result.code, message: result.message };
|
|
20
|
+
}
|
|
21
|
+
return { ok: true, formatted: applyNfeChaveMask(result.value) };
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { formatNfeChave };
|
|
25
|
+
//# sourceMappingURL=chunk-4Y2FBO57.js.map
|
|
26
|
+
//# sourceMappingURL=chunk-4Y2FBO57.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/nfe-chave/mask.ts","../src/format/nfe-chave.ts"],"names":[],"mappings":";;;AAMO,SAAS,kBAAkB,SAAA,EAA2B;AAC3D,EAAA,IAAI,CAAC,yBAAA,CAA0B,IAAA,CAAK,SAAS,CAAA,EAAG;AAC9C,IAAA,MAAM,IAAI,MAAM,sDAAsD,CAAA;AAAA,EACxE;AAEA,EAAA,MAAM,SAAmB,EAAC;AAC1B,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,MAAA,EAAQ,KAAK,CAAA,EAAG;AAC5C,IAAA,MAAA,CAAO,KAAK,SAAA,CAAU,KAAA,CAAM,CAAA,EAAG,CAAA,GAAI,CAAC,CAAC,CAAA;AAAA,EACvC;AACA,EAAA,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACxB;;;ACZO,SAAS,eAAe,KAAA,EAA6B;AAC1D,EAAA,MAAM,MAAA,GAAS,iBAAiB,KAAK,CAAA;AACrC,EAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,IAAA,EAAM,OAAO,IAAA,EAAM,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,EACjE;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,WAAW,iBAAA,CAAkB,MAAA,CAAO,KAAK,CAAA,EAAE;AAChE","file":"chunk-4Y2FBO57.js","sourcesContent":["import { NFE_CHAVE_NUMERIC_PATTERN } from './constants.js';\n\n/**\n * Display mask — 11 groups of 4 digits (BR-NFE-CHAVE-006).\n * @see http://moc.sped.fazenda.pr.gov.br/ — chave de acesso layout\n */\nexport function applyNfeChaveMask(canonical: string): string {\n if (!NFE_CHAVE_NUMERIC_PATTERN.test(canonical)) {\n throw new Error('NF-e chave must have exactly 44 digits to apply mask');\n }\n\n const groups: string[] = [];\n for (let i = 0; i < canonical.length; i += 4) {\n groups.push(canonical.slice(i, i + 4));\n }\n return groups.join(' ');\n}\n","import { applyNfeChaveMask } from '../core/nfe-chave/mask.js';\nimport { validateNfeChave } from '../core/nfe-chave/index.js';\nimport type { FormatResult } from '../types/validation-result.js';\n\nexport function formatNfeChave(input: string): FormatResult {\n const result = validateNfeChave(input);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n return { ok: true, formatted: applyNfeChaveMask(result.value) };\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { brandTelefone } from './chunk-
|
|
1
|
+
import { brandTelefone } from './chunk-MSLJF2FM.js';
|
|
2
2
|
|
|
3
3
|
// src/core/telefone/constants.ts
|
|
4
4
|
var TELEFONE_COUNTRY_CODE = "55";
|
|
@@ -187,25 +187,6 @@ function validateTelefone(input) {
|
|
|
187
187
|
};
|
|
188
188
|
}
|
|
189
189
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
const match = pattern.exec(canonical);
|
|
194
|
-
if (!match) {
|
|
195
|
-
throw new Error(`Telephone must have valid ${tipo} length to apply mask`);
|
|
196
|
-
}
|
|
197
|
-
return `(${match[1]}) ${match[2]}-${match[3]}`;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
// src/format/telefone.ts
|
|
201
|
-
function formatTelefone(input) {
|
|
202
|
-
const result = validateTelefone(input);
|
|
203
|
-
if (!result.ok) {
|
|
204
|
-
return { ok: false, code: result.code, message: result.message };
|
|
205
|
-
}
|
|
206
|
-
return { ok: true, formatted: applyTelefoneMask(result.value, result.tipo) };
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
export { ANATEL_DDDS, ANATEL_DDD_SET, TELEFONE_ANATEL_DDD_PANEL_URL, TELEFONE_GOLDEN_CELULAR, TELEFONE_GOLDEN_CELULAR_MASKED, TELEFONE_GOLDEN_FIXO, TELEFONE_GOLDEN_FIXO_MASKED, TELEFONE_OFFICIAL_SOURCE_URL, extractTelefoneDigits, formatTelefone, isValidTelefone, normalizeTelefoneDigits, stripTelefone, validateTelefone };
|
|
210
|
-
//# sourceMappingURL=chunk-465IC76U.js.map
|
|
211
|
-
//# sourceMappingURL=chunk-465IC76U.js.map
|
|
190
|
+
export { ANATEL_DDDS, ANATEL_DDD_SET, TELEFONE_ANATEL_DDD_PANEL_URL, TELEFONE_CELULAR_MASK_PATTERN, TELEFONE_FIXO_MASK_PATTERN, TELEFONE_GOLDEN_CELULAR, TELEFONE_GOLDEN_CELULAR_MASKED, TELEFONE_GOLDEN_FIXO, TELEFONE_GOLDEN_FIXO_MASKED, TELEFONE_OFFICIAL_SOURCE_URL, extractTelefoneDigits, isValidTelefone, normalizeTelefoneDigits, stripTelefone, validateTelefone };
|
|
191
|
+
//# sourceMappingURL=chunk-5UL3M7IU.js.map
|
|
192
|
+
//# sourceMappingURL=chunk-5UL3M7IU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/telefone/constants.ts","../src/strip/telefone.ts","../src/core/telefone/index.ts"],"names":[],"mappings":"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","file":"chunk-5UL3M7IU.js","sourcesContent":["/**\n * Brazilian telephone constants — Anatel national area codes (CN/DDD).\n * @see https://www.gov.br/anatel/pt-br/regulado/numeracao/plano-de-numeracao-brasileiro\n * @see https://informacoes.anatel.gov.br/paineis/areas-tarifarias/codigos-nacionais\n * @see https://www.gov.br/anatel/pt-br/regulado/numeracao/nono-digito\n */\nexport const TELEFONE_COUNTRY_CODE = '55';\n\n/** 67 official Anatel national area codes (CN / DDD). */\nexport const ANATEL_DDDS = [\n '11', '12', '13', '14', '15', '16', '17', '18', '19',\n '21', '22', '24',\n '27', '28',\n '31', '32', '33', '34', '35', '37', '38',\n '41', '42', '43', '44', '45', '46',\n '47', '48', '49',\n '51', '53', '54', '55',\n '61',\n '62', '64',\n '63',\n '65', '66',\n '67',\n '68',\n '69',\n '71', '73', '74', '75', '77',\n '79',\n '81', '87',\n '82',\n '83',\n '84',\n '85', '88',\n '86', '89',\n '91', '93', '94',\n '92', '97',\n '95',\n '96',\n '98', '99',\n] as const;\n\nexport const ANATEL_DDD_SET: ReadonlySet<string> = new Set(ANATEL_DDDS);\n\nexport const TELEFONE_CELULAR_LOCAL_LENGTH = 9;\nexport const TELEFONE_FIXO_LOCAL_LENGTH = 8;\nexport const TELEFONE_DDD_LENGTH = 2;\n\nexport const TELEFONE_CELULAR_MASK_PATTERN = /^(\\d{2})(\\d{5})(\\d{4})$/;\nexport const TELEFONE_FIXO_MASK_PATTERN = /^(\\d{2})(\\d{4})(\\d{4})$/;\n\n/** Emergency / public utility short codes — out of subscriber scope (BR-TEL-007). */\nexport const TELEFONE_EMERGENCY_CODES = new Set(['190', '192', '193', '197', '198', '199']);\n\nexport const TELEFONE_GOLDEN_CELULAR = '11999999999';\nexport const TELEFONE_GOLDEN_CELULAR_MASKED = '(11) 99999-9999';\nexport const TELEFONE_GOLDEN_FIXO = '1133333333';\nexport const TELEFONE_GOLDEN_FIXO_MASKED = '(11) 3333-3333';\n\nexport const TELEFONE_OFFICIAL_SOURCE_URL =\n 'https://www.gov.br/anatel/pt-br/regulado/numeracao/plano-de-numeracao-brasileiro';\n\nexport const TELEFONE_ANATEL_DDD_PANEL_URL =\n 'https://informacoes.anatel.gov.br/paineis/areas-tarifarias/codigos-nacionais';\n","/**\n * Strip and normalize Brazilian telephone numbers (BR-TEL-001).\n * @see https://www.gov.br/anatel/pt-br/regulado/numeracao/plano-de-numeracao-brasileiro\n */\nimport { TELEFONE_COUNTRY_CODE } from '../core/telefone/constants.js';\n\n/** Digits only from input (no country/trunk normalization). */\nexport function extractTelefoneDigits(input: string): string {\n return input.replace(/\\D/g, '');\n}\n\n/**\n * National canonical form: DDD + local digits (10 or 11 digits).\n * Strips +55 country code and leading domestic trunk `0` when present.\n */\nexport function normalizeTelefoneDigits(input: string): string {\n let digits = extractTelefoneDigits(input);\n if (digits.length === 0) {\n return '';\n }\n\n if (digits.startsWith(TELEFONE_COUNTRY_CODE) && (digits.length === 12 || digits.length === 13)) {\n digits = digits.slice(TELEFONE_COUNTRY_CODE.length);\n }\n\n if (digits.startsWith('0') && (digits.length === 11 || digits.length === 12)) {\n digits = digits.slice(1);\n }\n\n return digits;\n}\n\n/** @see normalizeTelefoneDigits */\nexport function stripTelefone(input: string): string {\n return normalizeTelefoneDigits(input);\n}\n","/**\n * Brazilian telephone validation — Anatel DDD + fixo/celular structure.\n * @see https://www.gov.br/anatel/pt-br/regulado/numeracao/plano-de-numeracao-brasileiro\n * @see https://www.gov.br/anatel/pt-br/regulado/numeracao/nono-digito\n */\nimport { normalizeTelefoneDigits } from '../../strip/telefone.js';\nimport type { TelefoneTipo, TelefoneValidationResult } from '../../types/validation-result.js';\nimport { brandTelefone } from '../../types/validation-result.js';\nimport {\n ANATEL_DDD_SET,\n TELEFONE_DDD_LENGTH,\n TELEFONE_EMERGENCY_CODES,\n} from './constants.js';\n\nexport {\n ANATEL_DDDS,\n ANATEL_DDD_SET,\n TELEFONE_ANATEL_DDD_PANEL_URL,\n TELEFONE_GOLDEN_CELULAR,\n TELEFONE_GOLDEN_CELULAR_MASKED,\n TELEFONE_GOLDEN_FIXO,\n TELEFONE_GOLDEN_FIXO_MASKED,\n TELEFONE_OFFICIAL_SOURCE_URL,\n} from './constants.js';\n\ntype FailedResult = Extract<TelefoneValidationResult, { ok: false }>;\n\nconst MASK_CHARS_PATTERN = /[\\s().+-]/g;\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message };\n}\n\nfunction hasInvalidCharacters(input: string): boolean {\n const withoutMask = input.replace(MASK_CHARS_PATTERN, '');\n return /[^0-9]/.test(withoutMask);\n}\n\nfunction detectTipo(local: string): TelefoneTipo | null {\n if (local.length === 9 && local[0] === '9') {\n return 'celular';\n }\n if (local.length === 8 && /^[2345]/.test(local)) {\n return 'fixo';\n }\n return null;\n}\n\nfunction rejectLocalPattern(local: string, nationalLength: number): FailedResult {\n if (nationalLength === 11) {\n return failure(\n 'KNOWN_INVALID_PATTERN',\n 'Mobile numbers must have 9 digits starting with 9 after DDD (Anatel nono dígito)',\n );\n }\n\n if (nationalLength === 10 && /^[6789]/.test(local)) {\n return failure(\n 'KNOWN_INVALID_PATTERN',\n 'Mobile numbers require 9 digits starting with 9; numbers starting with 6–9 without the 9th digit are invalid',\n );\n }\n\n return failure(\n 'KNOWN_INVALID_PATTERN',\n 'Landline numbers must have 8 digits starting with 2, 3, 4, or 5 after DDD',\n );\n}\n\nfunction validateStructure(\n input: string,\n normalized: string,\n): FailedResult | { tipo: TelefoneTipo } {\n if (input.trim().length === 0) {\n return failure('EMPTY_INPUT', 'Telephone input is empty');\n }\n\n if (hasInvalidCharacters(input)) {\n return failure('INVALID_CHARACTER', 'Telephone contains invalid characters');\n }\n\n if (normalized.length === 0) {\n return failure('EMPTY_INPUT', 'Telephone input is empty');\n }\n\n if (TELEFONE_EMERGENCY_CODES.has(normalized)) {\n return failure('UNSUPPORTED_FORMAT', 'Emergency short codes are not subscriber telephone numbers');\n }\n\n if (normalized.length !== 10 && normalized.length !== 11) {\n return failure(\n 'INVALID_LENGTH',\n 'Telephone must have 10 digits (fixo) or 11 digits (celular) after normalization',\n );\n }\n\n const ddd = normalized.slice(0, TELEFONE_DDD_LENGTH);\n if (!ANATEL_DDD_SET.has(ddd)) {\n return failure('KNOWN_INVALID_PATTERN', `Area code ${ddd} is not a valid Anatel DDD`);\n }\n\n const local = normalized.slice(TELEFONE_DDD_LENGTH);\n const tipo = detectTipo(local);\n if (!tipo) {\n return rejectLocalPattern(local, normalized.length);\n }\n\n return { tipo };\n}\n\nexport function isValidTelefone(input: string): boolean {\n return validateTelefone(input).ok;\n}\n\nexport function validateTelefone(input: string): TelefoneValidationResult {\n const normalized = normalizeTelefoneDigits(input);\n const structural = validateStructure(input, normalized);\n if ('ok' in structural) {\n return structural;\n }\n\n return {\n ok: true,\n value: brandTelefone(normalized),\n tipo: structural.tipo,\n format: 'telefone',\n };\n}\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { validateCnh, CNH_NUMERIC_PATTERN, CNH_LENGTH } from './chunk-US4OLTJ2.js';
|
|
2
|
+
|
|
3
|
+
// src/core/cnh/mask.ts
|
|
4
|
+
function applyCnhCanonicalFormat(canonical) {
|
|
5
|
+
if (!CNH_NUMERIC_PATTERN.test(canonical)) {
|
|
6
|
+
throw new Error(`CNH must have exactly ${CNH_LENGTH} digits to format`);
|
|
7
|
+
}
|
|
8
|
+
return canonical;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// src/format/cnh.ts
|
|
12
|
+
function formatCnh(input) {
|
|
13
|
+
const result = validateCnh(input);
|
|
14
|
+
if (!result.ok) {
|
|
15
|
+
return { ok: false, code: result.code, message: result.message };
|
|
16
|
+
}
|
|
17
|
+
return { ok: true, formatted: applyCnhCanonicalFormat(result.value) };
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export { formatCnh };
|
|
21
|
+
//# sourceMappingURL=chunk-6QJFMOIX.js.map
|
|
22
|
+
//# sourceMappingURL=chunk-6QJFMOIX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/cnh/mask.ts","../src/format/cnh.ts"],"names":[],"mappings":";;;AAQO,SAAS,wBAAwB,SAAA,EAA2B;AACjE,EAAA,IAAI,CAAC,mBAAA,CAAoB,IAAA,CAAK,SAAS,CAAA,EAAG;AACxC,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,sBAAA,EAAyB,UAAU,CAAA,iBAAA,CAAmB,CAAA;AAAA,EACxE;AACA,EAAA,OAAO,SAAA;AACT;;;ACTO,SAAS,UAAU,KAAA,EAA6B;AACrD,EAAA,MAAM,MAAA,GAAS,YAAY,KAAK,CAAA;AAChC,EAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,IAAA,EAAM,OAAO,IAAA,EAAM,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,EACjE;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,WAAW,uBAAA,CAAwB,MAAA,CAAO,KAAK,CAAA,EAAE;AACtE","file":"chunk-6QJFMOIX.js","sourcesContent":["import { CNH_LENGTH, CNH_NUMERIC_PATTERN } from './constants.js';\n\n/**\n * Official system format — 11 contiguous digits (BR-CNH-005).\n * Unlike CPF, CONTRAN/SENATRAN systems do not use dot/dash decoration.\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao5112014.pdf\n * @see https://www.gov.br/pt-br/servicos/validar-cnh\n */\nexport function applyCnhCanonicalFormat(canonical: string): string {\n if (!CNH_NUMERIC_PATTERN.test(canonical)) {\n throw new Error(`CNH must have exactly ${CNH_LENGTH} digits to format`);\n }\n return canonical;\n}\n","import { applyCnhCanonicalFormat } from '../core/cnh/mask.js';\nimport { validateCnh } from '../core/cnh/index.js';\nimport type { FormatResult } from '../types/validation-result.js';\n\nexport function formatCnh(input: string): FormatResult {\n const result = validateCnh(input);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n return { ok: true, formatted: applyCnhCanonicalFormat(result.value) };\n}\n"]}
|