@br-validators/core 0.12.0-alpha.3 → 1.0.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 +83 -12
- package/dist/batch.d.ts +28 -0
- package/dist/batch.js +29 -0
- package/dist/batch.js.map +1 -0
- package/dist/boleto.d.ts +58 -5
- package/dist/boleto.js +6 -3
- package/dist/brcode.d.ts +15 -3
- package/dist/brcode.js +8 -8
- package/dist/cartao-credito.d.ts +2 -2
- package/dist/cartao-credito.js +3 -3
- package/dist/cep.d.ts +2 -2
- package/dist/cep.js +4 -4
- package/dist/{chunk-WPL47PWJ.js → chunk-3LMDBXU6.js} +3 -3
- package/dist/{chunk-WPL47PWJ.js.map → chunk-3LMDBXU6.js.map} +1 -1
- package/dist/chunk-4J5IMD7B.js +3 -0
- package/dist/chunk-4J5IMD7B.js.map +1 -0
- package/dist/{chunk-BFZPCEYB.js → chunk-54UWHK5L.js} +3 -3
- package/dist/{chunk-BFZPCEYB.js.map → chunk-54UWHK5L.js.map} +1 -1
- package/dist/{chunk-F6PTZY4O.js → chunk-63G7QO73.js} +3 -3
- package/dist/{chunk-F6PTZY4O.js.map → chunk-63G7QO73.js.map} +1 -1
- package/dist/{chunk-3QP6R46N.js → chunk-665E36SC.js} +4 -4
- package/dist/{chunk-3QP6R46N.js.map → chunk-665E36SC.js.map} +1 -1
- package/dist/{chunk-AK5GVYQ5.js → chunk-ANWQBKGN.js} +3 -3
- package/dist/{chunk-AK5GVYQ5.js.map → chunk-ANWQBKGN.js.map} +1 -1
- package/dist/{chunk-D36RM7OD.js → chunk-AO6UTQ4A.js} +3 -3
- package/dist/{chunk-D36RM7OD.js.map → chunk-AO6UTQ4A.js.map} +1 -1
- package/dist/chunk-AU6TW3GH.js +136 -0
- package/dist/chunk-AU6TW3GH.js.map +1 -0
- package/dist/{chunk-XW5G2RAL.js → chunk-B6A7VF4R.js} +3 -3
- package/dist/{chunk-XW5G2RAL.js.map → chunk-B6A7VF4R.js.map} +1 -1
- package/dist/chunk-BFMRXXFE.js +99 -0
- package/dist/chunk-BFMRXXFE.js.map +1 -0
- package/dist/{chunk-Y6IW2LMW.js → chunk-CDNOUZEI.js} +3 -3
- package/dist/{chunk-Y6IW2LMW.js.map → chunk-CDNOUZEI.js.map} +1 -1
- package/dist/{chunk-XUO7FV6Z.js → chunk-CSRBRKXY.js} +3 -3
- package/dist/{chunk-XUO7FV6Z.js.map → chunk-CSRBRKXY.js.map} +1 -1
- package/dist/{chunk-DJUANFIK.js → chunk-CSVGWTCG.js} +3 -3
- package/dist/{chunk-DJUANFIK.js.map → chunk-CSVGWTCG.js.map} +1 -1
- package/dist/{chunk-5UL3M7IU.js → chunk-DAR6VOMT.js} +3 -3
- package/dist/{chunk-5UL3M7IU.js.map → chunk-DAR6VOMT.js.map} +1 -1
- package/dist/chunk-E2EFGMWA.js +200 -0
- package/dist/chunk-E2EFGMWA.js.map +1 -0
- package/dist/{chunk-KSLDM5AD.js → chunk-EVULAGR5.js} +3 -3
- package/dist/{chunk-KSLDM5AD.js.map → chunk-EVULAGR5.js.map} +1 -1
- package/dist/{chunk-YXELVV37.js → chunk-FBARVLLP.js} +4 -4
- package/dist/{chunk-YXELVV37.js.map → chunk-FBARVLLP.js.map} +1 -1
- package/dist/chunk-FKFRB3RJ.js +135 -0
- package/dist/chunk-FKFRB3RJ.js.map +1 -0
- package/dist/chunk-G6OBZRZM.js +131 -0
- package/dist/chunk-G6OBZRZM.js.map +1 -0
- package/dist/{chunk-MK7OJUF5.js → chunk-H3MLGGFI.js} +8 -8
- package/dist/{chunk-MK7OJUF5.js.map → chunk-H3MLGGFI.js.map} +1 -1
- package/dist/chunk-HUIMOB5E.js +41 -0
- package/dist/chunk-HUIMOB5E.js.map +1 -0
- package/dist/{chunk-WLE2ENQA.js → chunk-I66ZRSEN.js} +3 -3
- package/dist/{chunk-WLE2ENQA.js.map → chunk-I66ZRSEN.js.map} +1 -1
- package/dist/{chunk-Q7B5VOPW.js → chunk-I7DM47IR.js} +243 -37
- package/dist/chunk-I7DM47IR.js.map +1 -0
- package/dist/{chunk-GRDUTHNX.js → chunk-IYOPXJLY.js} +3 -3
- package/dist/{chunk-GRDUTHNX.js.map → chunk-IYOPXJLY.js.map} +1 -1
- package/dist/{chunk-4Y2FBO57.js → chunk-JKDU7QYP.js} +3 -3
- package/dist/{chunk-4Y2FBO57.js.map → chunk-JKDU7QYP.js.map} +1 -1
- package/dist/{chunk-KH7DWOUA.js → chunk-JLCQ7MGC.js} +3 -3
- package/dist/{chunk-KH7DWOUA.js.map → chunk-JLCQ7MGC.js.map} +1 -1
- package/dist/chunk-KBNWI6GE.js +3 -0
- package/dist/chunk-KBNWI6GE.js.map +1 -0
- package/dist/chunk-KLPONHBL.js +3 -0
- package/dist/chunk-KLPONHBL.js.map +1 -0
- package/dist/{chunk-CDGRHI7W.js → chunk-LAEUXOF6.js} +3 -3
- package/dist/{chunk-CDGRHI7W.js.map → chunk-LAEUXOF6.js.map} +1 -1
- package/dist/{chunk-ZAUZRIOU.js → chunk-MESOO5GZ.js} +3 -3
- package/dist/{chunk-ZAUZRIOU.js.map → chunk-MESOO5GZ.js.map} +1 -1
- package/dist/chunk-N2WVO3GF.js +128 -0
- package/dist/chunk-N2WVO3GF.js.map +1 -0
- package/dist/chunk-N6N5ATLY.js +93 -0
- package/dist/chunk-N6N5ATLY.js.map +1 -0
- package/dist/chunk-N6RQICAP.js +220 -0
- package/dist/chunk-N6RQICAP.js.map +1 -0
- package/dist/{chunk-MSLJF2FM.js → chunk-NUQSMT4Y.js} +2 -2
- package/dist/chunk-NUQSMT4Y.js.map +1 -0
- package/dist/{chunk-KQDLIGSG.js → chunk-P2KNN6ZR.js} +3 -3
- package/dist/{chunk-KQDLIGSG.js.map → chunk-P2KNN6ZR.js.map} +1 -1
- package/dist/{chunk-G2Y63PIF.js → chunk-PD7ZTWMM.js} +3 -3
- package/dist/{chunk-G2Y63PIF.js.map → chunk-PD7ZTWMM.js.map} +1 -1
- package/dist/{chunk-LYBFUKHR.js → chunk-RMTHCPIV.js} +4 -4
- package/dist/{chunk-LYBFUKHR.js.map → chunk-RMTHCPIV.js.map} +1 -1
- package/dist/chunk-SAZA3V2U.js +100 -0
- package/dist/chunk-SAZA3V2U.js.map +1 -0
- package/dist/{chunk-2JJS46FM.js → chunk-TE6NSONR.js} +3 -3
- package/dist/{chunk-2JJS46FM.js.map → chunk-TE6NSONR.js.map} +1 -1
- package/dist/{chunk-NHLLC6WH.js → chunk-TJCE4TVX.js} +4 -4
- package/dist/{chunk-NHLLC6WH.js.map → chunk-TJCE4TVX.js.map} +1 -1
- package/dist/{chunk-WCQUQ2WX.js → chunk-V7UJ55KW.js} +47 -5
- package/dist/chunk-V7UJ55KW.js.map +1 -0
- package/dist/{chunk-IQGRFAQV.js → chunk-VSW3NBJQ.js} +3 -3
- package/dist/{chunk-IQGRFAQV.js.map → chunk-VSW3NBJQ.js.map} +1 -1
- package/dist/{chunk-6QJFMOIX.js → chunk-VWVQWN2G.js} +3 -3
- package/dist/{chunk-6QJFMOIX.js.map → chunk-VWVQWN2G.js.map} +1 -1
- package/dist/{chunk-JZNTCZMV.js → chunk-WC6YYFWP.js} +34 -18
- package/dist/chunk-WC6YYFWP.js.map +1 -0
- package/dist/{chunk-FXLVNCG3.js → chunk-XWHGXSQV.js} +3 -3
- package/dist/{chunk-FXLVNCG3.js.map → chunk-XWHGXSQV.js.map} +1 -1
- package/dist/{chunk-G32U6YQ5.js → chunk-YD5MPZWY.js} +3 -3
- package/dist/{chunk-G32U6YQ5.js.map → chunk-YD5MPZWY.js.map} +1 -1
- package/dist/{chunk-US4OLTJ2.js → chunk-YNVMVDFN.js} +3 -3
- package/dist/{chunk-US4OLTJ2.js.map → chunk-YNVMVDFN.js.map} +1 -1
- package/dist/cnh.d.ts +2 -2
- package/dist/cnh.js +4 -4
- package/dist/cnpj.d.ts +2 -2
- package/dist/cnpj.js +5 -5
- package/dist/compare.d.ts +16 -0
- package/dist/compare.js +32 -0
- package/dist/compare.js.map +1 -0
- package/dist/cpf.d.ts +2 -2
- package/dist/cpf.js +4 -4
- package/dist/detect.d.ts +1 -1
- package/dist/detect.js +22 -20
- package/dist/diff.d.ts +16 -0
- package/dist/diff.js +32 -0
- package/dist/diff.js.map +1 -0
- package/dist/generate.d.ts +24 -3
- package/dist/generate.js +36 -27
- package/dist/{index-CZLo9YOT.d.ts → index-BEJFgDXj.d.ts} +1 -1
- package/dist/index.d.ts +13 -8
- package/dist/index.js +60 -49
- package/dist/index.js.map +1 -1
- package/dist/{inscricao-estadual-produtor-rural-CfWUaggb.d.ts → inscricao-estadual-produtor-rural-BXFVQscj.d.ts} +1 -1
- package/dist/inscricao-estadual-produtor-rural.d.ts +2 -2
- package/dist/inscricao-estadual-produtor-rural.js +3 -3
- package/dist/inscricao-estadual.d.ts +3 -3
- package/dist/inscricao-estadual.js +4 -4
- package/dist/mask.d.ts +13 -0
- package/dist/mask.js +40 -0
- package/dist/mask.js.map +1 -0
- package/dist/nfe-chave.d.ts +2 -2
- package/dist/nfe-chave.js +4 -3
- package/dist/pis-pasep.d.ts +2 -2
- package/dist/pis-pasep.js +3 -3
- package/dist/{pix-ddldLlb7.d.ts → pix-B4habHLG.d.ts} +1 -1
- package/dist/pix.d.ts +2 -2
- package/dist/pix.js +9 -8
- package/dist/placa.d.ts +2 -2
- package/dist/placa.js +4 -4
- package/dist/renavam.d.ts +2 -2
- package/dist/renavam.js +4 -4
- package/dist/sanitize.d.ts +2 -2
- package/dist/sanitize.js +20 -17
- package/dist/telefone.d.ts +2 -2
- package/dist/telefone.js +3 -3
- package/dist/titulo-eleitor.d.ts +2 -2
- package/dist/titulo-eleitor.js +4 -4
- package/dist/types-MXifBcV5.d.ts +10 -0
- package/dist/{validation-result-BhQE-1_O.d.ts → validation-result-BaI2Xder.d.ts} +24 -5
- package/package.json +21 -1
- package/dist/chunk-4W4OKLSZ.js +0 -366
- package/dist/chunk-4W4OKLSZ.js.map +0 -1
- package/dist/chunk-CSZCIOGA.js +0 -187
- package/dist/chunk-CSZCIOGA.js.map +0 -1
- package/dist/chunk-JZNTCZMV.js.map +0 -1
- package/dist/chunk-MSLJF2FM.js.map +0 -1
- package/dist/chunk-Q7B5VOPW.js.map +0 -1
- package/dist/chunk-WCQUQ2WX.js.map +0 -1
|
@@ -1,25 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
1
|
+
import { formatNfeChave } from './chunk-JKDU7QYP.js';
|
|
2
|
+
import { formatPisPasep } from './chunk-VSW3NBJQ.js';
|
|
3
|
+
import { formatPixKey } from './chunk-IYOPXJLY.js';
|
|
4
|
+
import { formatPlaca } from './chunk-YD5MPZWY.js';
|
|
5
|
+
import { formatRenavam } from './chunk-LAEUXOF6.js';
|
|
6
|
+
import { formatTelefone } from './chunk-PD7ZTWMM.js';
|
|
7
|
+
import { formatTituloEleitor } from './chunk-EVULAGR5.js';
|
|
8
|
+
import { formatCpf } from './chunk-TJCE4TVX.js';
|
|
9
|
+
import { formatIeProdutorRural } from './chunk-54UWHK5L.js';
|
|
10
|
+
import { formatBoleto } from './chunk-XWHGXSQV.js';
|
|
11
|
+
import { formatCartaoCredito } from './chunk-B6A7VF4R.js';
|
|
12
|
+
import { formatCep } from './chunk-MESOO5GZ.js';
|
|
13
|
+
import { formatCnh } from './chunk-VWVQWN2G.js';
|
|
14
|
+
import { formatCnpj } from './chunk-RMTHCPIV.js';
|
|
15
|
+
import { computeRenavamCheckDigit, RENAVAM_BASE_LENGTH } from './chunk-I66ZRSEN.js';
|
|
16
|
+
import { NFE_IBGE_UF_CODES, validateNfeChave, NFE_MODELO_NFE, computeNfeChaveCheckDigit, NFE_CHAVE_GOLDEN_PRIMARY } from './chunk-AO6UTQ4A.js';
|
|
17
|
+
import { PIS_PASEP_DV_WEIGHTS, PIS_PASEP_BASE_LENGTH } from './chunk-JLCQ7MGC.js';
|
|
18
|
+
import { PLACA_LEGACY_PATTERN, PLACA_MERCOSUL_PATTERN, validatePlaca } from './chunk-3LMDBXU6.js';
|
|
19
|
+
import { ANATEL_DDDS, validateTelefone } from './chunk-DAR6VOMT.js';
|
|
20
|
+
import { TITULO_ELEITOR_UF_BY_CODE, validateTituloEleitor, TITULO_ELEITOR_SEQUENTIAL_LENGTH, computeTituloEleitorCheckDigits, TITULO_ELEITOR_GOLDEN_PRIMARY, TITULO_ELEITOR_GOLDEN_SP_SPECIAL } from './chunk-CSVGWTCG.js';
|
|
21
|
+
import { validateInscricaoEstadual, formatInscricaoEstadual } from './chunk-665E36SC.js';
|
|
22
|
+
import { validateIeSpRural, computeIeSpCheckDigit, IE_SP_DV1_WEIGHTS, IE_SP_RURAL_GOLDEN, IE_SP_GOLDEN, IE_MT_GOLDEN_LEGACY, IE_DF_GOLDEN, computeIeToCheckDigit, computeIeRoCheckDigit, computeIeCyclicMod11CheckDigit, computeIeRrCheckDigit, computeIeAmCheckDigit, computeIeAlCheckDigit, IE_AP_PREFIX, computeIeApCheckDigit, IE_GO_PREFIXES, computeIeGoCheckDigit, computeIePeCheckDigit, computeIeBaModule, computeIeBaCheckDigit, computeIeMgFirstCheckDigit, computeIeMgSecondCheckDigit, IE_MT_PREFIX, computeIeMtCheckDigit, IE_DF_PREFIX, computeIeDfCheckDigit, IE_DF_DV1_WEIGHTS, IE_DF_DV2_WEIGHTS, IE_SP_DV2_WEIGHTS, IE_RR_PREFIX, computeIeCeCheckDigit, IE_AL_PREFIX, computeIePrStyleCheckDigit, IE_RN_PREFIX, IE_MA_PREFIX, IE_PA_PREFIX, IE_MS_PREFIX, computeIeAcCheckDigit, IE_AC_PREFIX } from './chunk-CDNOUZEI.js';
|
|
23
|
+
import { buildArrecadacaoGoldenPair, validateArrecadacao, validateCodigoBarras } from './chunk-N6RQICAP.js';
|
|
24
|
+
import { convertCodigoBarrasToLinhaDigits, BOLETO_GOLDEN_LINHA_STRIPPED, computeModulo11BarcodeDv, BOLETO_CURRENCY_REAL } from './chunk-E2EFGMWA.js';
|
|
25
|
+
import { validateBrCode, buildStaticPixBrCode, BRCODE_GOLDEN_STATIC_EVP } from './chunk-V7UJ55KW.js';
|
|
26
|
+
import { validatePixEvpKey, PIX_GOLDEN_EVP } from './chunk-H3MLGGFI.js';
|
|
27
|
+
import { CPF_DV1_WEIGHTS, CPF_DV2_WEIGHTS, CPF_BASE_LENGTH } from './chunk-63G7QO73.js';
|
|
28
|
+
import { detectCardBrand, validateCartaoCredito, CARTAO_GOLDEN_AMEX, CARTAO_GOLDEN_MASTERCARD, CARTAO_GOLDEN_VISA, HIPERCARD_IIN_PREFIXES, ELO_IIN_PREFIXES } from './chunk-ANWQBKGN.js';
|
|
29
|
+
import { validateCep } from './chunk-TE6NSONR.js';
|
|
30
|
+
import { computeCnhCheckDigits, CNH_BASE_LENGTH } from './chunk-YNVMVDFN.js';
|
|
31
|
+
import { CNPJ_DV1_WEIGHTS, cnpjCharValue, CNPJ_DV2_WEIGHTS, CNPJ_BASE_LENGTH } from './chunk-FBARVLLP.js';
|
|
23
32
|
import { computeCheckDigit } from './chunk-OTZHMJYE.js';
|
|
24
33
|
|
|
25
34
|
// src/generate/apply-mask.ts
|
|
@@ -67,6 +76,26 @@ function applyMask(type, value) {
|
|
|
67
76
|
const result = formatTituloEleitor(value);
|
|
68
77
|
return result.ok ? result.formatted : value;
|
|
69
78
|
}
|
|
79
|
+
case "pix": {
|
|
80
|
+
const result = formatPixKey(value);
|
|
81
|
+
return result.ok ? result.formatted : value;
|
|
82
|
+
}
|
|
83
|
+
case "nfe-chave": {
|
|
84
|
+
const result = formatNfeChave(value);
|
|
85
|
+
return result.ok ? result.formatted : value;
|
|
86
|
+
}
|
|
87
|
+
case "boleto": {
|
|
88
|
+
const result = formatBoleto(value);
|
|
89
|
+
return result.ok ? result.formatted : value;
|
|
90
|
+
}
|
|
91
|
+
case "boleto-arrecadacao":
|
|
92
|
+
return value;
|
|
93
|
+
case "brcode":
|
|
94
|
+
return value;
|
|
95
|
+
case "inscricao-estadual-produtor-rural": {
|
|
96
|
+
const result = formatIeProdutorRural(value);
|
|
97
|
+
return result.ok ? result.formatted : value;
|
|
98
|
+
}
|
|
70
99
|
default: {
|
|
71
100
|
const _exhaustive = type;
|
|
72
101
|
return _exhaustive;
|
|
@@ -74,6 +103,104 @@ function applyMask(type, value) {
|
|
|
74
103
|
}
|
|
75
104
|
}
|
|
76
105
|
|
|
106
|
+
// src/generate/boleto.ts
|
|
107
|
+
var MAX_ATTEMPTS = 80;
|
|
108
|
+
var BANK_CODES = ["001", "033", "104", "237", "341", "756"];
|
|
109
|
+
function buildBarcode(rng, validateBarcode) {
|
|
110
|
+
const bank = rng.pick(BANK_CODES);
|
|
111
|
+
const fator = rng.digits(4);
|
|
112
|
+
const valor = rng.digits(10);
|
|
113
|
+
const freeField = rng.digits(25);
|
|
114
|
+
const withoutDv = bank + BOLETO_CURRENCY_REAL + fator + valor + freeField;
|
|
115
|
+
const dv = computeModulo11BarcodeDv(withoutDv);
|
|
116
|
+
const barcode = `${bank}${BOLETO_CURRENCY_REAL}${String(dv)}${fator}${valor}${freeField}`;
|
|
117
|
+
if (!validateBarcode(barcode).ok) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
return barcode;
|
|
121
|
+
}
|
|
122
|
+
function generateBoletoValue(rng, validateBarcode = validateCodigoBarras) {
|
|
123
|
+
for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {
|
|
124
|
+
const barcode = buildBarcode(rng, validateBarcode);
|
|
125
|
+
if (barcode) {
|
|
126
|
+
return convertCodigoBarrasToLinhaDigits(barcode);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return BOLETO_GOLDEN_LINHA_STRIPPED;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// src/generate/boleto-arrecadacao.ts
|
|
133
|
+
var ARRECADACAO_GOLDEN_LINHA = buildArrecadacaoGoldenPair({
|
|
134
|
+
segment: "4",
|
|
135
|
+
valueType: "6",
|
|
136
|
+
value: "00000008123",
|
|
137
|
+
company: "4567",
|
|
138
|
+
free: "89012345678901234567890123"
|
|
139
|
+
}).linha;
|
|
140
|
+
var MAX_ATTEMPTS2 = 80;
|
|
141
|
+
var VALUE_TYPES = ["6", "7", "8", "9"];
|
|
142
|
+
var SEGMENTS = ["1", "2", "3", "4", "5", "6", "7", "9"];
|
|
143
|
+
function applyArrecadacaoLinhaMask(linha) {
|
|
144
|
+
return `${linha.slice(0, 11)} ${linha.slice(11, 23)} ${linha.slice(23, 35)} ${linha.slice(35, 47)} ${linha.charAt(47)}`;
|
|
145
|
+
}
|
|
146
|
+
function generateBoletoArrecadacaoValue(rng, validate = validateArrecadacao) {
|
|
147
|
+
for (let attempt = 0; attempt < MAX_ATTEMPTS2; attempt++) {
|
|
148
|
+
const pair = buildArrecadacaoGoldenPair({
|
|
149
|
+
segment: rng.pick(SEGMENTS),
|
|
150
|
+
valueType: rng.pick(VALUE_TYPES),
|
|
151
|
+
value: rng.digits(11),
|
|
152
|
+
company: rng.digits(4),
|
|
153
|
+
free: rng.digits(25)
|
|
154
|
+
});
|
|
155
|
+
if (validate(pair.linha).ok) {
|
|
156
|
+
return pair.linha;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return ARRECADACAO_GOLDEN_LINHA;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// src/generate/pix.ts
|
|
163
|
+
var MAX_ATTEMPTS3 = 80;
|
|
164
|
+
function seededUuidV4(rng) {
|
|
165
|
+
const bytes = Array.from({ length: 16 }, () => rng.int(0, 255));
|
|
166
|
+
bytes[6] = bytes[6] & 15 | 64;
|
|
167
|
+
bytes[8] = bytes[8] & 63 | 128;
|
|
168
|
+
const hex = bytes.map((byte) => byte.toString(16).padStart(2, "0")).join("");
|
|
169
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20, 32)}`;
|
|
170
|
+
}
|
|
171
|
+
function generatePixEvpValue(rng, validate = validatePixEvpKey) {
|
|
172
|
+
for (let attempt = 0; attempt < MAX_ATTEMPTS3; attempt++) {
|
|
173
|
+
const candidate = seededUuidV4(rng);
|
|
174
|
+
if (validate(candidate).ok) {
|
|
175
|
+
return candidate;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return PIX_GOLDEN_EVP;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// src/generate/brcode.ts
|
|
182
|
+
var MAX_ATTEMPTS4 = 50;
|
|
183
|
+
var DEFAULT_MERCHANT_NAME = "Merchant Test";
|
|
184
|
+
var DEFAULT_MERCHANT_CITY = "BRASILIA";
|
|
185
|
+
function generateBrcodeValue(rng, input = {}, validate = validateBrCode) {
|
|
186
|
+
const pixKey = input.pixKey ?? generatePixEvpValue(rng);
|
|
187
|
+
const merchantName = input.merchantName ?? DEFAULT_MERCHANT_NAME;
|
|
188
|
+
const merchantCity = input.merchantCity ?? DEFAULT_MERCHANT_CITY;
|
|
189
|
+
for (let attempt = 0; attempt < MAX_ATTEMPTS4; attempt++) {
|
|
190
|
+
const payload = buildStaticPixBrCode({
|
|
191
|
+
pixKey,
|
|
192
|
+
merchantName,
|
|
193
|
+
merchantCity,
|
|
194
|
+
...input.amount ? { amount: input.amount } : {},
|
|
195
|
+
...input.txid ? { txid: input.txid } : {}
|
|
196
|
+
});
|
|
197
|
+
if (validate(payload).ok) {
|
|
198
|
+
return payload;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return BRCODE_GOLDEN_STATIC_EVP;
|
|
202
|
+
}
|
|
203
|
+
|
|
77
204
|
// src/generate/random.ts
|
|
78
205
|
function mulberry32(seed) {
|
|
79
206
|
let state = seed >>> 0;
|
|
@@ -138,7 +265,7 @@ function computeLuhnCheckDigit(partial) {
|
|
|
138
265
|
}
|
|
139
266
|
|
|
140
267
|
// src/generate/cartao-credito.ts
|
|
141
|
-
var
|
|
268
|
+
var MAX_ATTEMPTS5 = 50;
|
|
142
269
|
var GENERATABLE_CARD_BRANDS = [
|
|
143
270
|
"visa",
|
|
144
271
|
"mastercard",
|
|
@@ -180,7 +307,7 @@ function buildRandomPartial(rng) {
|
|
|
180
307
|
return rng.digits(length - 1);
|
|
181
308
|
}
|
|
182
309
|
function generateCartaoCreditoValue(rng, brand, detectBrand = detectCardBrand, validate = validateCartaoCredito) {
|
|
183
|
-
for (let attempt = 0; attempt <
|
|
310
|
+
for (let attempt = 0; attempt < MAX_ATTEMPTS5; attempt++) {
|
|
184
311
|
const partial = brand ? buildBrandPartial(rng, brand) : buildRandomPartial(rng);
|
|
185
312
|
if (hasRepeatedChars(partial)) {
|
|
186
313
|
continue;
|
|
@@ -203,8 +330,36 @@ function isGeneratableCardBrand(brand) {
|
|
|
203
330
|
return GENERATABLE_CARD_BRANDS.includes(brand);
|
|
204
331
|
}
|
|
205
332
|
|
|
333
|
+
// src/generate/cpf-alpha.ts
|
|
334
|
+
var CPF_ALPHA_GENERATE_STUB = {
|
|
335
|
+
ok: false,
|
|
336
|
+
code: "CPF_ALPHA_SPEC_PENDING",
|
|
337
|
+
message: "Alphanumeric CPF generation is pending official RFB specification \u2014 numeric CPF only until published"
|
|
338
|
+
};
|
|
339
|
+
function rejectCpfAlphanumericGenerate() {
|
|
340
|
+
return CPF_ALPHA_GENERATE_STUB;
|
|
341
|
+
}
|
|
342
|
+
function assertCpfAlphanumericGenerateAllowed() {
|
|
343
|
+
throw new Error(`${CPF_ALPHA_GENERATE_STUB.code}: ${CPF_ALPHA_GENERATE_STUB.message}`);
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
// src/generate/inscricao-estadual-produtor-rural.ts
|
|
347
|
+
var MAX_ATTEMPTS6 = 50;
|
|
348
|
+
function generateIeProdutorRuralValue(rng, validate = validateIeSpRural) {
|
|
349
|
+
for (let attempt = 0; attempt < MAX_ATTEMPTS6; attempt++) {
|
|
350
|
+
const dvInput = rng.digits(8);
|
|
351
|
+
const dv = String(computeIeSpCheckDigit(dvInput, IE_SP_DV1_WEIGHTS));
|
|
352
|
+
const suffix = rng.digits(3);
|
|
353
|
+
const candidate = `P${dvInput}${dv}${suffix}`;
|
|
354
|
+
if (validate(candidate).ok) {
|
|
355
|
+
return candidate;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
return IE_SP_RURAL_GOLDEN;
|
|
359
|
+
}
|
|
360
|
+
|
|
206
361
|
// src/generate/inscricao-estadual.ts
|
|
207
|
-
var
|
|
362
|
+
var MAX_ATTEMPTS7 = 50;
|
|
208
363
|
var IE_GENERATE_FALLBACKS = {
|
|
209
364
|
AC: "0113253877910",
|
|
210
365
|
AL: "248682954",
|
|
@@ -348,7 +503,7 @@ var GENERATORS = {
|
|
|
348
503
|
};
|
|
349
504
|
function generateInscricaoEstadualValue(uf, rng, validate = validateInscricaoEstadual) {
|
|
350
505
|
const generator = GENERATORS[uf];
|
|
351
|
-
for (let attempt = 0; attempt <
|
|
506
|
+
for (let attempt = 0; attempt < MAX_ATTEMPTS7; attempt++) {
|
|
352
507
|
const candidate = generator(rng);
|
|
353
508
|
if (validate(candidate, { uf }).ok) {
|
|
354
509
|
return candidate;
|
|
@@ -357,8 +512,29 @@ function generateInscricaoEstadualValue(uf, rng, validate = validateInscricaoEst
|
|
|
357
512
|
return IE_GENERATE_FALLBACKS[uf];
|
|
358
513
|
}
|
|
359
514
|
|
|
515
|
+
// src/generate/nfe-chave.ts
|
|
516
|
+
var MAX_ATTEMPTS8 = 80;
|
|
517
|
+
var NFE_UF_CODES = [...NFE_IBGE_UF_CODES];
|
|
518
|
+
function generateNfeChaveValue(rng, validate = validateNfeChave) {
|
|
519
|
+
for (let attempt = 0; attempt < MAX_ATTEMPTS8; attempt++) {
|
|
520
|
+
const cuf = String(rng.pick(NFE_UF_CODES)).padStart(2, "0");
|
|
521
|
+
const aamm = rng.digits(4);
|
|
522
|
+
const cnpj = rng.digits(14);
|
|
523
|
+
const serie = rng.digits(3);
|
|
524
|
+
const invoiceNumber = rng.digits(9);
|
|
525
|
+
const emissionType = String(rng.int(0, 9));
|
|
526
|
+
const numericCode = rng.digits(8);
|
|
527
|
+
const base43 = `${cuf}${aamm}${cnpj}${NFE_MODELO_NFE}${serie}${invoiceNumber}${emissionType}${numericCode}`;
|
|
528
|
+
const candidate = `${base43}${String(computeNfeChaveCheckDigit(base43))}`;
|
|
529
|
+
if (validate(candidate).ok) {
|
|
530
|
+
return candidate;
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
return NFE_CHAVE_GOLDEN_PRIMARY;
|
|
534
|
+
}
|
|
535
|
+
|
|
360
536
|
// src/generate/titulo-eleitor.ts
|
|
361
|
-
var
|
|
537
|
+
var MAX_ATTEMPTS9 = 50;
|
|
362
538
|
var TITULO_ELEITOR_CODE_BY_UF = Object.fromEntries(
|
|
363
539
|
Object.entries(TITULO_ELEITOR_UF_BY_CODE).map(([code, uf]) => [uf, Number(code)])
|
|
364
540
|
);
|
|
@@ -376,7 +552,7 @@ function deterministicTituloFallback(uf) {
|
|
|
376
552
|
function generateTituloEleitorValue(uf, rng, validate = validateTituloEleitor) {
|
|
377
553
|
const ufCode = TITULO_ELEITOR_CODE_BY_UF[uf];
|
|
378
554
|
const ufDigits = String(ufCode).padStart(2, "0");
|
|
379
|
-
for (let attempt = 0; attempt <
|
|
555
|
+
for (let attempt = 0; attempt < MAX_ATTEMPTS9; attempt++) {
|
|
380
556
|
const sequential = rng.digits(TITULO_ELEITOR_SEQUENTIAL_LENGTH);
|
|
381
557
|
if (hasRepeatedChars(sequential)) {
|
|
382
558
|
continue;
|
|
@@ -392,12 +568,12 @@ function generateTituloEleitorValue(uf, rng, validate = validateTituloEleitor) {
|
|
|
392
568
|
|
|
393
569
|
// src/generate/index.ts
|
|
394
570
|
var CNPJ_ALNUM_CHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
395
|
-
var
|
|
571
|
+
var MAX_ATTEMPTS10 = 50;
|
|
396
572
|
function digitValue(char) {
|
|
397
573
|
return Number(char);
|
|
398
574
|
}
|
|
399
575
|
function randomBaseDigits(rng, length) {
|
|
400
|
-
for (let attempt = 0; attempt <
|
|
576
|
+
for (let attempt = 0; attempt < MAX_ATTEMPTS10; attempt++) {
|
|
401
577
|
const base = rng.digits(length);
|
|
402
578
|
if (!hasRepeatedChars(base)) {
|
|
403
579
|
return base;
|
|
@@ -406,7 +582,7 @@ function randomBaseDigits(rng, length) {
|
|
|
406
582
|
return "123456789".slice(0, length).padEnd(length, "1");
|
|
407
583
|
}
|
|
408
584
|
function randomCnpjAlphanumericBase(rng) {
|
|
409
|
-
for (let attempt = 0; attempt <
|
|
585
|
+
for (let attempt = 0; attempt < MAX_ATTEMPTS10; attempt++) {
|
|
410
586
|
let base = "";
|
|
411
587
|
for (let i = 0; i < CNPJ_BASE_LENGTH; i++) {
|
|
412
588
|
base += CNPJ_ALNUM_CHARS.charAt(rng.int(0, CNPJ_ALNUM_CHARS.length - 1));
|
|
@@ -436,7 +612,7 @@ function generateCnpjValue(rng, format) {
|
|
|
436
612
|
return base + dv1 + dv2;
|
|
437
613
|
}
|
|
438
614
|
function generateCepValue(rng) {
|
|
439
|
-
for (let attempt = 0; attempt <
|
|
615
|
+
for (let attempt = 0; attempt < MAX_ATTEMPTS10; attempt++) {
|
|
440
616
|
const value = rng.digits(8);
|
|
441
617
|
if (value !== "00000000" && validateCep(value).ok) {
|
|
442
618
|
return value;
|
|
@@ -446,7 +622,7 @@ function generateCepValue(rng) {
|
|
|
446
622
|
}
|
|
447
623
|
function generatePlacaValue(rng, format) {
|
|
448
624
|
const mode = format === "legacy" ? "legacy" : "mercosul";
|
|
449
|
-
for (let attempt = 0; attempt <
|
|
625
|
+
for (let attempt = 0; attempt < MAX_ATTEMPTS10; attempt++) {
|
|
450
626
|
const letters = rng.letter() + rng.letter() + rng.letter();
|
|
451
627
|
let candidate;
|
|
452
628
|
if (mode === "legacy") {
|
|
@@ -483,7 +659,7 @@ function generateCnhValue(rng) {
|
|
|
483
659
|
function generateTelefoneValue(rng, format) {
|
|
484
660
|
const ddd = rng.pick(ANATEL_DDDS);
|
|
485
661
|
const useFixo = format === "fixo";
|
|
486
|
-
for (let attempt = 0; attempt <
|
|
662
|
+
for (let attempt = 0; attempt < MAX_ATTEMPTS10; attempt++) {
|
|
487
663
|
const local = useFixo ? String(rng.int(2, 5)) + rng.digits(7) : `9${rng.digits(8)}`;
|
|
488
664
|
const candidate = ddd + local;
|
|
489
665
|
if (validateTelefone(candidate).ok) {
|
|
@@ -504,6 +680,9 @@ function generate(type, options = {}) {
|
|
|
504
680
|
let value;
|
|
505
681
|
switch (type) {
|
|
506
682
|
case "cpf":
|
|
683
|
+
if (options.format === "alphanumeric") {
|
|
684
|
+
assertCpfAlphanumericGenerateAllowed();
|
|
685
|
+
}
|
|
507
686
|
value = generateCpfValue(rng);
|
|
508
687
|
break;
|
|
509
688
|
case "cnpj":
|
|
@@ -544,6 +723,30 @@ function generate(type, options = {}) {
|
|
|
544
723
|
value = generateTituloEleitorValue(options.uf, rng);
|
|
545
724
|
break;
|
|
546
725
|
}
|
|
726
|
+
case "pix":
|
|
727
|
+
value = generatePixEvpValue(rng);
|
|
728
|
+
break;
|
|
729
|
+
case "nfe-chave":
|
|
730
|
+
value = generateNfeChaveValue(rng);
|
|
731
|
+
break;
|
|
732
|
+
case "brcode":
|
|
733
|
+
value = generateBrcodeValue(rng, {
|
|
734
|
+
pixKey: options.pixKey,
|
|
735
|
+
merchantName: options.merchantName,
|
|
736
|
+
merchantCity: options.merchantCity,
|
|
737
|
+
amount: options.amount,
|
|
738
|
+
txid: options.txid
|
|
739
|
+
});
|
|
740
|
+
break;
|
|
741
|
+
case "boleto":
|
|
742
|
+
value = generateBoletoValue(rng);
|
|
743
|
+
break;
|
|
744
|
+
case "boleto-arrecadacao":
|
|
745
|
+
value = generateBoletoArrecadacaoValue(rng);
|
|
746
|
+
break;
|
|
747
|
+
case "inscricao-estadual-produtor-rural":
|
|
748
|
+
value = generateIeProdutorRuralValue(rng);
|
|
749
|
+
break;
|
|
547
750
|
default: {
|
|
548
751
|
const _exhaustive = type;
|
|
549
752
|
throw new Error(`Unsupported generatable type: ${String(_exhaustive)}`);
|
|
@@ -552,9 +755,12 @@ function generate(type, options = {}) {
|
|
|
552
755
|
if (options.masked && type === "inscricao-estadual") {
|
|
553
756
|
return applyInscricaoEstadualGenerateMask(value, options.uf);
|
|
554
757
|
}
|
|
758
|
+
if (options.masked && type === "boleto-arrecadacao") {
|
|
759
|
+
return applyArrecadacaoLinhaMask(value);
|
|
760
|
+
}
|
|
555
761
|
return options.masked ? applyMask(type, value) : value;
|
|
556
762
|
}
|
|
557
763
|
|
|
558
|
-
export { GENERATABLE_CARD_BRANDS, generate, isGeneratableCardBrand };
|
|
559
|
-
//# sourceMappingURL=chunk-
|
|
560
|
-
//# sourceMappingURL=chunk-
|
|
764
|
+
export { CPF_ALPHA_GENERATE_STUB, GENERATABLE_CARD_BRANDS, applyArrecadacaoLinhaMask, assertCpfAlphanumericGenerateAllowed, generate, isGeneratableCardBrand, rejectCpfAlphanumericGenerate };
|
|
765
|
+
//# sourceMappingURL=chunk-I7DM47IR.js.map
|
|
766
|
+
//# sourceMappingURL=chunk-I7DM47IR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/generate/apply-mask.ts","../src/generate/boleto.ts","../src/generate/boleto-arrecadacao.ts","../src/generate/pix.ts","../src/generate/brcode.ts","../src/generate/random.ts","../src/generate/cartao-credito.ts","../src/generate/cpf-alpha.ts","../src/generate/inscricao-estadual-produtor-rural.ts","../src/generate/inscricao-estadual.ts","../src/generate/nfe-chave.ts","../src/generate/titulo-eleitor.ts","../src/generate/index.ts"],"names":["MAX_ATTEMPTS","base","dv1","dv2"],"mappings":"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","file":"chunk-I7DM47IR.js","sourcesContent":["import { formatCartaoCredito } from '../format/cartao-credito.js';\nimport { formatCep } from '../format/cep.js';\nimport { formatCnh } from '../format/cnh.js';\nimport { formatCnpj } from '../format/cnpj.js';\nimport { formatCpf } from '../format/cpf.js';\nimport { formatBoleto } from '../format/boleto.js';\nimport { formatIeProdutorRural } from '../format/inscricao-estadual-produtor-rural.js';\nimport { formatNfeChave } from '../format/nfe-chave.js';\nimport { formatPisPasep } from '../format/pis-pasep.js';\nimport { formatPlaca } from '../format/placa.js';\nimport { formatPixKey } from '../format/pix.js';\nimport { formatRenavam } from '../format/renavam.js';\nimport { formatTelefone } from '../format/telefone.js';\nimport { formatTituloEleitor } from '../format/titulo-eleitor.js';\nimport type { GeneratableDocumentType } from './index.js';\n\nexport function applyMask(type: GeneratableDocumentType, value: string): string {\n switch (type) {\n case 'cpf': {\n const result = formatCpf(value);\n return result.ok ? result.formatted : value;\n }\n case 'cnpj': {\n const result = formatCnpj(value);\n return result.ok ? result.formatted : value;\n }\n case 'cep': {\n const result = formatCep(value);\n return result.ok ? result.formatted : value;\n }\n case 'placa': {\n const result = formatPlaca(value);\n return result.ok ? result.formatted : value;\n }\n case 'pis-pasep': {\n const result = formatPisPasep(value);\n return result.ok ? result.formatted : value;\n }\n case 'renavam': {\n const result = formatRenavam(value);\n return result.ok ? result.formatted : value;\n }\n case 'cnh': {\n const result = formatCnh(value);\n return result.ok ? result.formatted : value;\n }\n case 'telefone': {\n const result = formatTelefone(value);\n return result.ok ? result.formatted : value;\n }\n case 'cartao-credito': {\n const result = formatCartaoCredito(value);\n return result.ok ? result.formatted : value;\n }\n case 'inscricao-estadual':\n return value;\n case 'titulo-eleitor': {\n const result = formatTituloEleitor(value);\n return result.ok ? result.formatted : value;\n }\n case 'pix': {\n const result = formatPixKey(value);\n return result.ok ? result.formatted : value;\n }\n case 'nfe-chave': {\n const result = formatNfeChave(value);\n return result.ok ? result.formatted : value;\n }\n case 'boleto': {\n const result = formatBoleto(value);\n return result.ok ? result.formatted : value;\n }\n case 'boleto-arrecadacao':\n return value;\n case 'brcode':\n return value;\n case 'inscricao-estadual-produtor-rural': {\n const result = formatIeProdutorRural(value);\n return result.ok ? result.formatted : value;\n }\n default: {\n const _exhaustive: never = type;\n return _exhaustive;\n }\n }\n}\n","/**\n * Synthetic boleto cobrança (Situação 1) — FEBRABAN FB-0061/2021 (BR-GENERATE-001).\n * @see BOLETO_OFFICIAL_SOURCE_URL in core/boleto/constants.ts\n */\nimport {\n BOLETO_GOLDEN_LINHA_STRIPPED,\n BOLETO_CURRENCY_REAL,\n} from '../core/boleto/constants.js';\nimport { convertCodigoBarrasToLinhaDigits } from '../core/boleto/convert.js';\nimport { computeModulo11BarcodeDv } from '../core/boleto/modulo11.js';\nimport { validateCodigoBarras } from '../core/boleto/codigo-barras.js';\nimport type { RandomSource } from './random.js';\n\nconst MAX_ATTEMPTS = 80;\nconst BANK_CODES = ['001', '033', '104', '237', '341', '756'] as const;\n\nfunction buildBarcode(\n rng: RandomSource,\n validateBarcode: (input: string) => { ok: boolean },\n): string | null {\n const bank = rng.pick(BANK_CODES);\n const fator = rng.digits(4);\n const valor = rng.digits(10);\n const freeField = rng.digits(25);\n const withoutDv = bank + BOLETO_CURRENCY_REAL + fator + valor + freeField;\n const dv = computeModulo11BarcodeDv(withoutDv);\n const barcode = `${bank}${BOLETO_CURRENCY_REAL}${String(dv)}${fator}${valor}${freeField}`;\n\n if (!validateBarcode(barcode).ok) {\n return null;\n }\n\n return barcode;\n}\n\nexport function generateBoletoValue(\n rng: RandomSource,\n validateBarcode: (input: string) => { ok: boolean } = validateCodigoBarras,\n): string {\n for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {\n const barcode = buildBarcode(rng, validateBarcode);\n if (barcode) {\n return convertCodigoBarrasToLinhaDigits(barcode);\n }\n }\n\n return BOLETO_GOLDEN_LINHA_STRIPPED;\n}\n","/**\n * Synthetic boleto arrecadação — FEBRABAN Layout v7 (BR-GENERATE-001).\n * @see BOLETO_ARRECADACAO_OFFICIAL_SOURCE_URL in core/boleto/constants.ts\n */\nimport { buildArrecadacaoGoldenPair } from '../core/boleto/arrecadacao.js';\nimport type { ArrecadacaoValueType } from '../core/boleto/arrecadacao-modulo.js';\nimport { validateArrecadacao } from '../core/boleto/arrecadacao.js';\nimport type { RandomSource } from './random.js';\n\n/** FEBRABAN Layout v7 golden linha — matches tests/vectors/boleto-arrecadacao.official.json primary. */\nconst ARRECADACAO_GOLDEN_LINHA = buildArrecadacaoGoldenPair({\n segment: '4',\n valueType: '6',\n value: '00000008123',\n company: '4567',\n free: '89012345678901234567890123',\n}).linha;\n\nconst MAX_ATTEMPTS = 80;\nconst VALUE_TYPES: readonly ArrecadacaoValueType[] = ['6', '7', '8', '9'];\nconst SEGMENTS = ['1', '2', '3', '4', '5', '6', '7', '9'] as const;\n\n/** FEBRABAN arrecadação linha display mask (48 digits). */\nexport function applyArrecadacaoLinhaMask(linha: string): string {\n return (\n `${linha.slice(0, 11)} ${linha.slice(11, 23)} ${linha.slice(23, 35)} ` +\n `${linha.slice(35, 47)} ${linha.charAt(47)}`\n );\n}\n\nexport function generateBoletoArrecadacaoValue(\n rng: RandomSource,\n validate: (input: string) => { ok: boolean } = validateArrecadacao,\n): string {\n for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {\n const pair = buildArrecadacaoGoldenPair({\n segment: rng.pick(SEGMENTS),\n valueType: rng.pick(VALUE_TYPES),\n value: rng.digits(11),\n company: rng.digits(4),\n free: rng.digits(25),\n });\n\n if (validate(pair.linha).ok) {\n return pair.linha;\n }\n }\n\n return ARRECADACAO_GOLDEN_LINHA;\n}\n","/**\n * Synthetic PIX EVP key generation — UUID v4 lowercase (BR-GENERATE-001).\n * @see PIX_DICT_API_SOURCE_URL in core/pix/constants.ts\n * @see https://aprendervalor.bcb.gov.br/content/estabilidadefinanceira/pix/API-DICT_v2-9-0.html\n */\nimport { PIX_GOLDEN_EVP } from '../core/pix/constants.js';\nimport { validatePixEvpKey } from '../core/pix/evp.js';\nimport type { RandomSource } from './random.js';\n\nconst MAX_ATTEMPTS = 80;\n\nfunction seededUuidV4(rng: RandomSource): string {\n const bytes = Array.from({ length: 16 }, () => rng.int(0, 255));\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n const hex = bytes.map((byte) => byte.toString(16).padStart(2, '0')).join('');\n return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20, 32)}`;\n}\n\nexport function generatePixEvpValue(\n rng: RandomSource,\n validate: (input: string) => { ok: boolean } = validatePixEvpKey,\n): string {\n for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {\n const candidate = seededUuidV4(rng);\n if (validate(candidate).ok) {\n return candidate;\n }\n }\n return PIX_GOLDEN_EVP;\n}\n","/**\n * Synthetic static PIX BR Code — Bacen Manual BR Code EMV TLV + CRC16 (BR-GENERATE-001).\n * @see BRCODE_OFFICIAL_SOURCE_URL in core/brcode/constants.ts\n */\nimport { BRCODE_GOLDEN_STATIC_EVP } from '../core/brcode/constants.js';\nimport { buildStaticPixBrCode } from '../core/brcode/build-static.js';\nimport { validateBrCode } from '../core/brcode/index.js';\nimport { generatePixEvpValue } from './pix.js';\nimport type { RandomSource } from './random.js';\n\nconst MAX_ATTEMPTS = 50;\n\nconst DEFAULT_MERCHANT_NAME = 'Merchant Test';\nconst DEFAULT_MERCHANT_CITY = 'BRASILIA';\n\nexport type GenerateBrcodeInput = {\n pixKey?: string;\n merchantName?: string;\n merchantCity?: string;\n amount?: string;\n txid?: string;\n};\n\nexport function generateBrcodeValue(\n rng: RandomSource,\n input: GenerateBrcodeInput = {},\n validate: (payload: string) => { ok: boolean } = validateBrCode,\n): string {\n const pixKey = input.pixKey ?? generatePixEvpValue(rng);\n const merchantName = input.merchantName ?? DEFAULT_MERCHANT_NAME;\n const merchantCity = input.merchantCity ?? DEFAULT_MERCHANT_CITY;\n\n for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {\n const payload = buildStaticPixBrCode({\n pixKey,\n merchantName,\n merchantCity,\n ...(input.amount ? { amount: input.amount } : {}),\n ...(input.txid ? { txid: input.txid } : {}),\n });\n\n if (validate(payload).ok) {\n return payload;\n }\n }\n\n return BRCODE_GOLDEN_STATIC_EVP;\n}\n","/**\n * Mulberry32 PRNG — deterministic when seed is provided (BR-GENERATE-001).\n */\nexport type RandomSource = {\n next(): number;\n int(min: number, max: number): number;\n digit(): string;\n digits(count: number): string;\n letter(): string;\n pick<T>(items: readonly T[]): T;\n};\n\nfunction mulberry32(seed: number): () => number {\n let state = seed >>> 0;\n return () => {\n state = (state + 0x6d2b79f5) >>> 0;\n let t = state;\n t = Math.imul(t ^ (t >>> 15), t | 1);\n t ^= t + Math.imul(t ^ (t >>> 7), t | 61);\n return ((t ^ (t >>> 14)) >>> 0) / 4294967296;\n };\n}\n\nexport function createRandomSource(seed?: number): RandomSource {\n const nextFn = seed === undefined ? () => Math.random() : mulberry32(seed);\n\n return {\n next: nextFn,\n int(min: number, max: number): number {\n return Math.floor(nextFn() * (max - min + 1)) + min;\n },\n digit(): string {\n return String(Math.floor(nextFn() * 10));\n },\n digits(count: number): string {\n let out = '';\n for (let i = 0; i < count; i++) {\n out += this.digit();\n }\n return out;\n },\n letter(): string {\n const letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n return letters.charAt(this.int(0, letters.length - 1));\n },\n pick<T>(items: readonly T[]): T {\n return items[this.int(0, items.length - 1)];\n },\n };\n}\n\nexport function hasRepeatedChars(value: string): boolean {\n const first = value[0];\n for (let i = 1; i < value.length; i++) {\n if (value[i] !== first) {\n return false;\n }\n }\n return true;\n}\n\nexport function computeLuhnCheckDigit(partial: string): string {\n let sum = 0;\n let double = true;\n for (let i = partial.length - 1; i >= 0; i--) {\n let digit = Number(partial.charAt(i));\n if (double) {\n digit *= 2;\n if (digit > 9) {\n digit -= 9;\n }\n }\n sum += digit;\n double = !double;\n }\n return String((10 - (sum % 10)) % 10);\n}\n","/**\n * Synthetic credit card PAN generation — Luhn + brand IIN prefixes (BR-GENERATE-001).\n */\nimport type { CardBrand } from '../core/cartao-credito/constants.js';\nimport {\n CARTAO_GOLDEN_AMEX,\n CARTAO_GOLDEN_MASTERCARD,\n CARTAO_GOLDEN_VISA,\n ELO_IIN_PREFIXES,\n HIPERCARD_IIN_PREFIXES,\n} from '../core/cartao-credito/constants.js';\nimport { detectCardBrand } from '../core/cartao-credito/detect-brand.js';\nimport { validateCartaoCredito } from '../core/cartao-credito/index.js';\nimport { computeLuhnCheckDigit, hasRepeatedChars, type RandomSource } from './random.js';\n\nconst MAX_ATTEMPTS = 50;\n\nexport type GeneratableCardBrand = Exclude<CardBrand, 'unknown'>;\n\nexport const GENERATABLE_CARD_BRANDS: readonly GeneratableCardBrand[] = [\n 'visa',\n 'mastercard',\n 'amex',\n 'elo',\n 'hipercard',\n] as const;\n\nconst BRAND_FALLBACKS: Record<GeneratableCardBrand, string> = {\n visa: CARTAO_GOLDEN_VISA,\n mastercard: CARTAO_GOLDEN_MASTERCARD,\n amex: CARTAO_GOLDEN_AMEX,\n elo: '401178000000006',\n hipercard: '606282000000003',\n};\n\nfunction buildBrandPartial(rng: RandomSource, brand: GeneratableCardBrand): string {\n switch (brand) {\n case 'visa':\n return `411111${rng.digits(9)}`;\n case 'mastercard':\n return `${rng.pick(['51', '52', '53', '54', '55'])}${rng.digits(13)}`;\n case 'amex':\n return `${rng.pick(['34', '37'])}${rng.digits(12)}`;\n case 'elo': {\n const prefix = rng.pick(ELO_IIN_PREFIXES);\n return `${prefix}${rng.digits(16 - prefix.length - 1)}`;\n }\n case 'hipercard': {\n const prefix = rng.pick(HIPERCARD_IIN_PREFIXES);\n return `${prefix}${rng.digits(16 - prefix.length - 1)}`;\n }\n default: {\n const _exhaustive: never = brand;\n return _exhaustive;\n }\n }\n}\n\nfunction buildRandomPartial(rng: RandomSource): string {\n const length = rng.int(13, 16);\n return rng.digits(length - 1);\n}\n\nexport function generateCartaoCreditoValue(\n rng: RandomSource,\n brand?: GeneratableCardBrand,\n detectBrand: (pan: string) => CardBrand = detectCardBrand,\n validate: (input: string) => ReturnType<typeof validateCartaoCredito> = validateCartaoCredito,\n): string {\n for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {\n const partial = brand ? buildBrandPartial(rng, brand) : buildRandomPartial(rng);\n if (hasRepeatedChars(partial)) {\n continue;\n }\n const candidate = partial + computeLuhnCheckDigit(partial);\n if (!validate(candidate).ok) {\n continue;\n }\n if (brand && detectBrand(candidate) !== brand) {\n continue;\n }\n return candidate;\n }\n\n if (brand) {\n return BRAND_FALLBACKS[brand];\n }\n return CARTAO_GOLDEN_VISA;\n}\n\nexport function isGeneratableCardBrand(brand: string): brand is GeneratableCardBrand {\n return (GENERATABLE_CARD_BRANDS as readonly string[]).includes(brand);\n}\n\nconst brandHookRng: RandomSource = {\n next: () => 0,\n int: (min: number) => min,\n digit: () => '1',\n digits: (count: number) => '1'.repeat(count),\n letter: () => 'A',\n pick: <T>(items: readonly T[]) => items[0],\n};\n\nconst randomHookRng: RandomSource = {\n ...brandHookRng,\n int: () => 16,\n};\n\n/** @internal Test hooks for cartao generator branches. */\nexport const __generateCartaoTesting = {\n fallback: (brand: GeneratableCardBrand) => BRAND_FALLBACKS[brand],\n buildBrandPartial: (brand: GeneratableCardBrand) => buildBrandPartial(brandHookRng, brand),\n buildRandomPartial: () => buildRandomPartial(randomHookRng),\n generateWithAlwaysWrongBrand: (brand: GeneratableCardBrand, rng: RandomSource) =>\n generateCartaoCreditoValue(rng, brand, () => 'unknown'),\n generateWithAlwaysInvalidValidation: (rng: RandomSource) =>\n generateCartaoCreditoValue(rng, undefined, detectCardBrand, () => ({\n ok: false,\n code: 'INVALID_CHECK_DIGIT',\n message: 'forced invalid for test',\n })),\n invokeBuildBrandPartialDefault: () =>\n buildBrandPartial(brandHookRng, 'invalid' as GeneratableCardBrand),\n touchHookRngMethods: () => {\n for (const rng of [brandHookRng, randomHookRng]) {\n rng.next();\n rng.int(1, 16);\n rng.digit();\n rng.digits(3);\n rng.letter();\n rng.pick(['a']);\n }\n },\n};\n","/**\n * Alphanumeric CPF generation stub — RFB spec not published (BR-GENERATE-001).\n * @see docs/OFFICIAL-SOURCES.md — CPF row (alphanumeric planned 2026)\n */\nexport const CPF_ALPHA_GENERATE_STUB = {\n ok: false as const,\n code: 'CPF_ALPHA_SPEC_PENDING' as const,\n message:\n 'Alphanumeric CPF generation is pending official RFB specification — numeric CPF only until published',\n};\n\nexport function rejectCpfAlphanumericGenerate(): typeof CPF_ALPHA_GENERATE_STUB {\n return CPF_ALPHA_GENERATE_STUB;\n}\n\nexport function assertCpfAlphanumericGenerateAllowed(): void {\n throw new Error(`${CPF_ALPHA_GENERATE_STUB.code}: ${CPF_ALPHA_GENERATE_STUB.message}`);\n}\n","/**\n * Synthetic SP produtor rural IE — SINTEGRA cad_SP.html Bloco II (BR-GENERATE-001).\n * @see IE_SP_RURAL_OFFICIAL_SOURCE_URL in core/inscricao-estadual/constants.ts\n */\nimport { IE_SP_DV1_WEIGHTS, IE_SP_RURAL_GOLDEN } from '../core/inscricao-estadual/constants.js';\nimport { computeIeSpCheckDigit } from '../core/inscricao-estadual/modulo-ie.js';\nimport { validateIeSpRural } from '../core/inscricao-estadual/sp-rural.js';\nimport type { RandomSource } from './random.js';\n\nconst MAX_ATTEMPTS = 50;\n\nexport function generateIeProdutorRuralValue(\n rng: RandomSource,\n validate: (input: string) => { ok: boolean } = validateIeSpRural,\n): string {\n for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {\n const dvInput = rng.digits(8);\n const dv = String(computeIeSpCheckDigit(dvInput, IE_SP_DV1_WEIGHTS));\n const suffix = rng.digits(3);\n const candidate = `P${dvInput}${dv}${suffix}`;\n\n if (validate(candidate).ok) {\n return candidate;\n }\n }\n\n return IE_SP_RURAL_GOLDEN;\n}\n","/**\n * Synthetic Inscrição Estadual generation — reuses modulo-ie helpers (BR-GENERATE-001).\n * @see docs/IE-STATE-ALGORITHMS.md\n */\nimport {\n IE_AC_PREFIX,\n IE_AL_PREFIX,\n IE_AP_PREFIX,\n IE_DF_DV1_WEIGHTS,\n IE_DF_DV2_WEIGHTS,\n IE_DF_GOLDEN,\n IE_DF_PREFIX,\n IE_GO_PREFIXES,\n IE_MA_PREFIX,\n IE_MS_PREFIX,\n IE_MT_GOLDEN_LEGACY,\n IE_MT_PREFIX,\n IE_PA_PREFIX,\n IE_RN_PREFIX,\n IE_RR_PREFIX,\n IE_SP_DV1_WEIGHTS,\n IE_SP_DV2_WEIGHTS,\n IE_SP_GOLDEN,\n IE_SUPPORTED_UFS,\n} from '../core/inscricao-estadual/constants.js';\nimport {\n computeIeAcCheckDigit,\n computeIeAlCheckDigit,\n computeIeAmCheckDigit,\n computeIeApCheckDigit,\n computeIeBaCheckDigit,\n computeIeBaModule,\n computeIeCeCheckDigit,\n computeIeCyclicMod11CheckDigit,\n computeIeDfCheckDigit,\n computeIeGoCheckDigit,\n computeIeMgFirstCheckDigit,\n computeIeMgSecondCheckDigit,\n computeIeMtCheckDigit,\n computeIePeCheckDigit,\n computeIePrStyleCheckDigit,\n computeIeRoCheckDigit,\n computeIeRrCheckDigit,\n computeIeSpCheckDigit,\n computeIeToCheckDigit,\n} from '../core/inscricao-estadual/modulo-ie.js';\nimport { validateInscricaoEstadual } from '../core/inscricao-estadual/index.js';\nimport type { UfCode } from '../types/validation-result.js';\nimport type { RandomSource } from './random.js';\n\nconst MAX_ATTEMPTS = 50;\n\n/** Official golden stripped values — fallback when random synthesis fails. */\nexport const IE_GENERATE_FALLBACKS: Record<UfCode, string> = {\n AC: '0113253877910',\n AL: '248682954',\n AM: '917050150',\n AP: '039045820',\n BA: '63984300',\n CE: '836182316',\n DF: IE_DF_GOLDEN,\n ES: '463921810',\n GO: '112237118',\n MA: '123517680',\n MG: '2490944173923',\n MS: '282570926',\n MT: IE_MT_GOLDEN_LEGACY,\n PA: '153662476',\n PB: '312029063',\n PE: '064970639',\n PI: '465180426',\n PR: '0031595584',\n RJ: '06540481',\n RN: '204502292',\n RO: '39206839474860',\n RR: '247681047',\n RS: '3288345503',\n SC: '632480718',\n SE: '826594042',\n SP: IE_SP_GOLDEN,\n TO: '27035910938',\n};\n\nfunction prefixBody8(rng: RandomSource, prefix: string): string {\n return prefix + rng.digits(8 - prefix.length);\n}\n\nfunction buildCeStyle(rng: RandomSource, prefix?: string): string {\n const body = prefix ? prefixBody8(rng, prefix) : rng.digits(8);\n return body + String(computeIeCeCheckDigit(body));\n}\n\nfunction buildDualTrailing(\n rng: RandomSource,\n prefix: string,\n bodyLength: number,\n computeFirst: (body: string) => number,\n computeSecond: (body: string) => number,\n): string {\n const body = prefix + rng.digits(bodyLength - prefix.length);\n const first = computeFirst(body);\n const second = computeSecond(body + String(first));\n return body + String(first) + String(second);\n}\n\nfunction generateSpValue(rng: RandomSource): string {\n const head = rng.digits(8);\n const middle = rng.digits(2);\n let partial = `${head}0${middle}0`;\n const dv1 = computeIeSpCheckDigit(partial, IE_SP_DV1_WEIGHTS);\n partial = `${head}${String(dv1)}${middle}0`;\n const dv2 = computeIeSpCheckDigit(partial, IE_SP_DV2_WEIGHTS);\n return `${head}${String(dv1)}${middle}${String(dv2)}`;\n}\n\nfunction generateDfValue(rng: RandomSource): string {\n const core11 = IE_DF_PREFIX + rng.digits(9);\n const dv1 = computeIeDfCheckDigit(core11, IE_DF_DV1_WEIGHTS);\n const dv2 = computeIeDfCheckDigit(core11, IE_DF_DV2_WEIGHTS, true, dv1);\n return `${core11}${String(dv1)}${String(dv2)}`;\n}\n\nfunction generateMtValue(rng: RandomSource): string {\n const padded = `${IE_MT_PREFIX.padStart(4, '0')}${rng.digits(6)}`;\n const dv = computeIeMtCheckDigit(padded.slice(0, 10));\n return `${padded.slice(0, 10)}${String(dv)}`;\n}\n\nfunction generateMgValue(rng: RandomSource): string {\n const body = rng.digits(11);\n const first = computeIeMgFirstCheckDigit(body);\n const second = computeIeMgSecondCheckDigit(body + String(first));\n return body + String(first) + String(second);\n}\n\nfunction generateBaValue(rng: RandomSource): string {\n const body = rng.digits(6);\n const mod = computeIeBaModule(`${body}00`);\n const second = computeIeBaCheckDigit(body, mod);\n const first = computeIeBaCheckDigit(body + String(second), mod);\n return body + String(first) + String(second);\n}\n\nfunction generatePeValue(rng: RandomSource): string {\n const body = rng.digits(7);\n const first = computeIePeCheckDigit(body);\n const second = computeIePeCheckDigit(body + String(first));\n return body + String(first) + String(second);\n}\n\nfunction generateGoValue(rng: RandomSource): string {\n const prefix = rng.pick([...IE_GO_PREFIXES]);\n const body = prefix + rng.digits(6);\n return body + String(computeIeGoCheckDigit(body));\n}\n\nfunction generateApValue(rng: RandomSource): string {\n const body = IE_AP_PREFIX + rng.digits(6);\n const dv = computeIeApCheckDigit(body);\n return body + String(dv);\n}\n\nconst GENERATORS: Record<UfCode, (rng: RandomSource) => string> = {\n SP: generateSpValue,\n DF: generateDfValue,\n MT: generateMtValue,\n MG: generateMgValue,\n BA: generateBaValue,\n PE: generatePeValue,\n GO: generateGoValue,\n AP: generateApValue,\n AC: (rng) =>\n buildDualTrailing(rng, IE_AC_PREFIX, 11, computeIeAcCheckDigit, computeIeAcCheckDigit),\n AL: (rng) => {\n const body = prefixBody8(rng, IE_AL_PREFIX);\n return body + String(computeIeAlCheckDigit(body));\n },\n AM: (rng) => {\n const body = rng.digits(8);\n return body + String(computeIeAmCheckDigit(body));\n },\n CE: (rng) => buildCeStyle(rng),\n ES: (rng) => buildCeStyle(rng),\n SC: (rng) => buildCeStyle(rng),\n SE: (rng) => buildCeStyle(rng),\n PB: (rng) => buildCeStyle(rng),\n PI: (rng) => buildCeStyle(rng),\n MS: (rng) => buildCeStyle(rng, IE_MS_PREFIX),\n PA: (rng) => buildCeStyle(rng, IE_PA_PREFIX),\n MA: (rng) => buildCeStyle(rng, IE_MA_PREFIX),\n RN: (rng) => buildCeStyle(rng, IE_RN_PREFIX),\n RR: (rng) => {\n const body = prefixBody8(rng, IE_RR_PREFIX);\n return body + String(computeIeRrCheckDigit(body));\n },\n PR: (rng) =>\n buildDualTrailing(rng, '', 8, computeIePrStyleCheckDigit, computeIePrStyleCheckDigit),\n RJ: (rng) => {\n const body = rng.digits(7);\n return body + String(computeIeCyclicMod11CheckDigit(body, 2, 7));\n },\n RS: (rng) => {\n const body = rng.digits(9);\n return body + String(computeIeCyclicMod11CheckDigit(body, 2, 9));\n },\n RO: (rng) => {\n const body = rng.digits(13);\n return body + String(computeIeRoCheckDigit(body));\n },\n TO: (rng) => {\n const body = rng.digits(8);\n return body + String(computeIeToCheckDigit(body));\n },\n};\n\nexport function generateInscricaoEstadualValue(\n uf: UfCode,\n rng: RandomSource,\n validate: (input: string, options: { uf: UfCode }) => ReturnType<typeof validateInscricaoEstadual> = validateInscricaoEstadual,\n): string {\n const generator = GENERATORS[uf];\n\n for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {\n const candidate = generator(rng);\n if (validate(candidate, { uf }).ok) {\n return candidate;\n }\n }\n\n return IE_GENERATE_FALLBACKS[uf];\n}\n\nexport function isSupportedGenerateUf(uf: string): uf is UfCode {\n return (IE_SUPPORTED_UFS as readonly string[]).includes(uf);\n}\n\n/** @internal Test hooks for IE generator branches. */\nexport const __generateIeTesting = {\n fallback: (uf: UfCode) => IE_GENERATE_FALLBACKS[uf],\n generateWithAlwaysInvalidValidation: (uf: UfCode, rng: RandomSource) =>\n generateInscricaoEstadualValue(uf, rng, () => ({\n ok: false,\n code: 'INVALID_CHECK_DIGIT',\n message: 'forced invalid for test',\n })),\n};\n","/**\n * Synthetic NF-e chave de acesso generation — MOC §2.2.6 (BR-GENERATE-001).\n * @see NFE_CHAVE_MOC_DV_SECTION_URL in core/nfe-chave/constants.ts\n */\nimport {\n NFE_CHAVE_GOLDEN_PRIMARY,\n NFE_IBGE_UF_CODES,\n NFE_MODELO_NFE,\n} from '../core/nfe-chave/constants.js';\nimport { computeNfeChaveCheckDigit } from '../core/nfe-chave/dv.js';\nimport { validateNfeChave } from '../core/nfe-chave/index.js';\nimport type { RandomSource } from './random.js';\n\nconst MAX_ATTEMPTS = 80;\nconst NFE_UF_CODES = [...NFE_IBGE_UF_CODES] as number[];\n\nexport function generateNfeChaveValue(\n rng: RandomSource,\n validate: (input: string) => { ok: boolean } = validateNfeChave,\n): string {\n for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {\n const cuf = String(rng.pick(NFE_UF_CODES)).padStart(2, '0');\n const aamm = rng.digits(4);\n const cnpj = rng.digits(14);\n const serie = rng.digits(3);\n const invoiceNumber = rng.digits(9);\n const emissionType = String(rng.int(0, 9));\n const numericCode = rng.digits(8);\n const base43 = `${cuf}${aamm}${cnpj}${NFE_MODELO_NFE}${serie}${invoiceNumber}${emissionType}${numericCode}`;\n const candidate = `${base43}${String(computeNfeChaveCheckDigit(base43))}`;\n\n if (validate(candidate).ok) {\n return candidate;\n }\n }\n\n return NFE_CHAVE_GOLDEN_PRIMARY;\n}\n","/**\n * Synthetic Título de Eleitor generation — reuses TSE modulo 11 helpers (BR-GENERATE-001).\n */\nimport {\n TITULO_ELEITOR_GOLDEN_PRIMARY,\n TITULO_ELEITOR_GOLDEN_SP_SPECIAL,\n TITULO_ELEITOR_SEQUENTIAL_LENGTH,\n TITULO_ELEITOR_UF_BY_CODE,\n} from '../core/titulo-eleitor/constants.js';\nimport { computeTituloEleitorCheckDigits } from '../core/titulo-eleitor/check-digits.js';\nimport { validateTituloEleitor } from '../core/titulo-eleitor/index.js';\nimport type { UfCode } from '../types/validation-result.js';\nimport { hasRepeatedChars, type RandomSource } from './random.js';\n\nconst MAX_ATTEMPTS = 50;\n\nconst TITULO_ELEITOR_CODE_BY_UF = Object.fromEntries(\n Object.entries(TITULO_ELEITOR_UF_BY_CODE).map(([code, uf]) => [uf, Number(code)]),\n) as Record<UfCode, number>;\n\nconst TITULO_GENERATE_FALLBACKS: Partial<Record<UfCode, string>> = {\n SP: TITULO_ELEITOR_GOLDEN_SP_SPECIAL,\n SC: TITULO_ELEITOR_GOLDEN_PRIMARY,\n};\n\nfunction deterministicTituloFallback(uf: UfCode): string {\n const ufCode = TITULO_ELEITOR_CODE_BY_UF[uf];\n const ufDigits = String(ufCode).padStart(2, '0');\n const sequential = '12345678';\n const checkDigits = computeTituloEleitorCheckDigits(sequential, ufDigits, ufCode);\n return `${sequential}${ufDigits}${checkDigits}`;\n}\n\nexport function resolveTituloEleitorUfCode(uf: UfCode): number {\n return TITULO_ELEITOR_CODE_BY_UF[uf];\n}\n\nexport function generateTituloEleitorValue(\n uf: UfCode,\n rng: RandomSource,\n validate: (input: string) => ReturnType<typeof validateTituloEleitor> = validateTituloEleitor,\n): string {\n const ufCode = TITULO_ELEITOR_CODE_BY_UF[uf];\n const ufDigits = String(ufCode).padStart(2, '0');\n\n for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {\n const sequential = rng.digits(TITULO_ELEITOR_SEQUENTIAL_LENGTH);\n if (hasRepeatedChars(sequential)) {\n continue;\n }\n const checkDigits = computeTituloEleitorCheckDigits(sequential, ufDigits, ufCode);\n const candidate = `${sequential}${ufDigits}${checkDigits}`;\n if (validate(candidate).ok) {\n return candidate;\n }\n }\n\n return TITULO_GENERATE_FALLBACKS[uf] ?? deterministicTituloFallback(uf);\n}\n\nexport function isSupportedTituloGenerateUf(uf: string): uf is UfCode {\n return uf in TITULO_ELEITOR_CODE_BY_UF;\n}\n\n/** @internal Test hooks for titulo generator branches. */\nexport const __generateTituloTesting = {\n fallback: (uf: UfCode) => TITULO_GENERATE_FALLBACKS[uf] ?? deterministicTituloFallback(uf),\n generateWithAlwaysInvalidValidation: (uf: UfCode, rng: RandomSource) =>\n generateTituloEleitorValue(uf, rng, () => ({\n ok: false,\n code: 'INVALID_CHECK_DIGIT',\n message: 'forced invalid for test',\n })),\n};\n","/**\n * Synthetic document generation — test fixtures only (BR-GENERATE-001).\n * Reuses existing modulo 11 / Luhn compute helpers — never duplicates DV logic.\n * @see docs/VALIDATION-RULES.md\n */\nimport { computeCheckDigit } from '../core/cnpj/modulo11.js';\nimport { cnpjCharValue } from '../core/cnpj/ascii-value.js';\nimport { CNPJ_BASE_LENGTH, CNPJ_DV1_WEIGHTS, CNPJ_DV2_WEIGHTS } from '../core/cnpj/constants.js';\nimport { computeCnhCheckDigits } from '../core/cnh/check-digits.js';\nimport { CNH_BASE_LENGTH } from '../core/cnh/constants.js';\nimport { CPF_BASE_LENGTH, CPF_DV1_WEIGHTS, CPF_DV2_WEIGHTS } from '../core/cpf/constants.js';\nimport { PIS_PASEP_BASE_LENGTH, PIS_PASEP_DV_WEIGHTS } from '../core/pis-pasep/constants.js';\nimport { computeRenavamCheckDigit } from '../core/renavam/check-digits.js';\nimport { RENAVAM_BASE_LENGTH } from '../core/renavam/constants.js';\nimport { PLACA_LEGACY_PATTERN, PLACA_MERCOSUL_PATTERN } from '../core/placa/constants.js';\nimport { ANATEL_DDDS } from '../core/telefone/constants.js';\nimport { validateCep } from '../core/cep/index.js';\nimport { validatePlaca } from '../core/placa/index.js';\nimport { validateTelefone } from '../core/telefone/index.js';\nimport { applyMask } from './apply-mask.js';\nimport { generateBoletoValue } from './boleto.js';\nimport { applyArrecadacaoLinhaMask, generateBoletoArrecadacaoValue } from './boleto-arrecadacao.js';\nimport { generateBrcodeValue } from './brcode.js';\nimport { generateCartaoCreditoValue, type GeneratableCardBrand } from './cartao-credito.js';\nimport { assertCpfAlphanumericGenerateAllowed } from './cpf-alpha.js';\nimport { generateIeProdutorRuralValue } from './inscricao-estadual-produtor-rural.js';\nimport { generateInscricaoEstadualValue } from './inscricao-estadual.js';\nimport { generateNfeChaveValue } from './nfe-chave.js';\nimport { generatePixEvpValue } from './pix.js';\nimport { generateTituloEleitorValue } from './titulo-eleitor.js';\nimport { createRandomSource, hasRepeatedChars, type RandomSource } from './random.js';\nimport type { UfCode } from '../types/validation-result.js';\nimport { formatInscricaoEstadual } from '../core/inscricao-estadual/index.js';\n\nexport type GeneratableDocumentType =\n | 'cpf'\n | 'cnpj'\n | 'cep'\n | 'placa'\n | 'pis-pasep'\n | 'renavam'\n | 'cnh'\n | 'telefone'\n | 'cartao-credito'\n | 'inscricao-estadual'\n | 'titulo-eleitor'\n | 'pix'\n | 'nfe-chave'\n | 'brcode'\n | 'boleto'\n | 'boleto-arrecadacao'\n | 'inscricao-estadual-produtor-rural';\n\nexport type GenerateFormat =\n | 'numeric'\n | 'alphanumeric'\n | 'legacy'\n | 'mercosul'\n | 'celular'\n | 'fixo';\n\nexport type GenerateOptions = {\n format?: GenerateFormat;\n masked?: boolean;\n seed?: number;\n uf?: UfCode;\n brand?: GeneratableCardBrand;\n /** Static BR Code — defaults to synthetic EVP key + test merchant fields. */\n pixKey?: string;\n merchantName?: string;\n merchantCity?: string;\n amount?: string;\n txid?: string;\n};\n\nexport type { GeneratableCardBrand } from './cartao-credito.js';\nexport {\n CPF_ALPHA_GENERATE_STUB,\n assertCpfAlphanumericGenerateAllowed,\n rejectCpfAlphanumericGenerate,\n} from './cpf-alpha.js';\nexport { applyArrecadacaoLinhaMask } from './boleto-arrecadacao.js';\n\nconst CNPJ_ALNUM_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';\nconst MAX_ATTEMPTS = 50;\n\nfunction digitValue(char: string): number {\n return Number(char);\n}\n\nfunction randomBaseDigits(rng: RandomSource, length: number): string {\n for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {\n const base = rng.digits(length);\n if (!hasRepeatedChars(base)) {\n return base;\n }\n }\n return '123456789'.slice(0, length).padEnd(length, '1');\n}\n\nfunction randomCnpjAlphanumericBase(rng: RandomSource): string {\n for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {\n let base = '';\n for (let i = 0; i < CNPJ_BASE_LENGTH; i++) {\n base += CNPJ_ALNUM_CHARS.charAt(rng.int(0, CNPJ_ALNUM_CHARS.length - 1));\n }\n if (!hasRepeatedChars(base)) {\n return base;\n }\n }\n return '12ABC34501DE';\n}\n\nfunction generateCpfValue(rng: RandomSource): string {\n const base = randomBaseDigits(rng, CPF_BASE_LENGTH);\n const dv1 = String(computeCheckDigit(base, CPF_DV1_WEIGHTS, digitValue));\n const dv2 = String(computeCheckDigit(base + dv1, CPF_DV2_WEIGHTS, digitValue));\n return base + dv1 + dv2;\n}\n\nfunction generateCnpjValue(rng: RandomSource, format: GenerateOptions['format']): string {\n if (format === 'alphanumeric') {\n const base = randomCnpjAlphanumericBase(rng);\n const dv1 = String(computeCheckDigit(base, CNPJ_DV1_WEIGHTS, cnpjCharValue));\n const dv2 = String(computeCheckDigit(base + dv1, CNPJ_DV2_WEIGHTS, cnpjCharValue));\n return base + dv1 + dv2;\n }\n const base = randomBaseDigits(rng, CNPJ_BASE_LENGTH);\n const dv1 = String(computeCheckDigit(base, CNPJ_DV1_WEIGHTS, digitValue));\n const dv2 = String(computeCheckDigit(base + dv1, CNPJ_DV2_WEIGHTS, digitValue));\n return base + dv1 + dv2;\n}\n\nfunction generateCepValue(rng: RandomSource): string {\n for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {\n const value = rng.digits(8);\n if (value !== '00000000' && validateCep(value).ok) {\n return value;\n }\n }\n return '01310100';\n}\n\nfunction generatePlacaValue(rng: RandomSource, format: GenerateOptions['format']): string {\n const mode = format === 'legacy' ? 'legacy' : 'mercosul';\n for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {\n const letters = rng.letter() + rng.letter() + rng.letter();\n let candidate: string;\n if (mode === 'legacy') {\n candidate = letters + rng.digits(4);\n if (!PLACA_LEGACY_PATTERN.test(candidate)) {\n continue;\n }\n } else {\n candidate =\n letters +\n rng.digit() +\n rng.pick(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']) +\n rng.digits(2);\n if (!PLACA_MERCOSUL_PATTERN.test(candidate)) {\n continue;\n }\n }\n if (validatePlaca(candidate).ok) {\n return candidate;\n }\n }\n return mode === 'legacy' ? 'ABC1234' : 'ABC1D23';\n}\n\nfunction generatePisValue(rng: RandomSource): string {\n const base = randomBaseDigits(rng, PIS_PASEP_BASE_LENGTH);\n const dv = String(computeCheckDigit(base, PIS_PASEP_DV_WEIGHTS, digitValue));\n return base + dv;\n}\n\nfunction generateRenavamValue(rng: RandomSource): string {\n const base = randomBaseDigits(rng, RENAVAM_BASE_LENGTH);\n const dv = String(computeRenavamCheckDigit(base));\n return base + dv;\n}\n\nfunction generateCnhValue(rng: RandomSource): string {\n const base = randomBaseDigits(rng, CNH_BASE_LENGTH);\n return base + computeCnhCheckDigits(base);\n}\n\nfunction generateTelefoneValue(rng: RandomSource, format: GenerateOptions['format']): string {\n const ddd = rng.pick(ANATEL_DDDS);\n const useFixo = format === 'fixo';\n for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {\n const local = useFixo ? String(rng.int(2, 5)) + rng.digits(7) : `9${rng.digits(8)}`;\n const candidate = ddd + local;\n if (validateTelefone(candidate).ok) {\n return candidate;\n }\n }\n return useFixo ? '1133333333' : '11999999999';\n}\n\nfunction generateCartaoValue(rng: RandomSource, brand?: GeneratableCardBrand): string {\n return generateCartaoCreditoValue(rng, brand);\n}\n\nfunction applyInscricaoEstadualGenerateMask(value: string, uf: UfCode): string {\n const formatted = formatInscricaoEstadual(value, { uf });\n return formatted.ok ? formatted.formatted : value;\n}\n\nexport function generate(type: GeneratableDocumentType, options: GenerateOptions = {}): string {\n const rng = createRandomSource(options.seed);\n let value: string;\n\n switch (type) {\n case 'cpf':\n if (options.format === 'alphanumeric') {\n assertCpfAlphanumericGenerateAllowed();\n }\n value = generateCpfValue(rng);\n break;\n case 'cnpj':\n value = generateCnpjValue(rng, options.format);\n break;\n case 'cep':\n value = generateCepValue(rng);\n break;\n case 'placa':\n value = generatePlacaValue(rng, options.format);\n break;\n case 'pis-pasep':\n value = generatePisValue(rng);\n break;\n case 'renavam':\n value = generateRenavamValue(rng);\n break;\n case 'cnh':\n value = generateCnhValue(rng);\n break;\n case 'telefone':\n value = generateTelefoneValue(rng, options.format);\n break;\n case 'cartao-credito':\n value = generateCartaoValue(rng, options.brand);\n break;\n case 'inscricao-estadual': {\n if (!options.uf) {\n throw new Error('UF is required for inscricao-estadual generation');\n }\n value = generateInscricaoEstadualValue(options.uf, rng);\n break;\n }\n case 'titulo-eleitor': {\n if (!options.uf) {\n throw new Error('UF is required for titulo-eleitor generation');\n }\n value = generateTituloEleitorValue(options.uf, rng);\n break;\n }\n case 'pix':\n value = generatePixEvpValue(rng);\n break;\n case 'nfe-chave':\n value = generateNfeChaveValue(rng);\n break;\n case 'brcode':\n value = generateBrcodeValue(rng, {\n pixKey: options.pixKey,\n merchantName: options.merchantName,\n merchantCity: options.merchantCity,\n amount: options.amount,\n txid: options.txid,\n });\n break;\n case 'boleto':\n value = generateBoletoValue(rng);\n break;\n case 'boleto-arrecadacao':\n value = generateBoletoArrecadacaoValue(rng);\n break;\n case 'inscricao-estadual-produtor-rural':\n value = generateIeProdutorRuralValue(rng);\n break;\n default: {\n const _exhaustive: never = type;\n throw new Error(`Unsupported generatable type: ${String(_exhaustive)}`);\n }\n }\n\n if (options.masked && type === 'inscricao-estadual') {\n return applyInscricaoEstadualGenerateMask(value, options.uf!);\n }\n\n if (options.masked && type === 'boleto-arrecadacao') {\n return applyArrecadacaoLinhaMask(value);\n }\n\n return options.masked ? applyMask(type, value) : value;\n}\n\nconst repeatingRng: RandomSource = {\n next: () => 0,\n int: (min: number) => min,\n digit: () => '1',\n digits: (count: number) => '1'.repeat(count),\n letter: () => 'A',\n pick: <T>(items: readonly T[]) => items[0],\n};\n\nconst zeroRng: RandomSource = {\n ...repeatingRng,\n digits: (count: number) => '0'.repeat(count),\n};\n\n/** Always fails placa pattern checks so fallback constants are returned. */\nconst exhaustPlacaLegacyRng: RandomSource = {\n ...repeatingRng,\n digits: (count: number) => '1'.repeat(Math.max(0, count - 1)),\n};\n\nconst exhaustPlacaMercosulRng: RandomSource = {\n ...repeatingRng,\n digits: () => '1',\n};\n\n/** Always fails telefone validation so fallback constants are returned. */\nconst exhaustTelefoneRng: RandomSource = {\n ...repeatingRng,\n int: () => 0,\n digits: () => '0',\n};\n\n/** @internal Test hooks for generator fallback branches. */\nexport const __generateTesting = {\n randomBaseDigits: (length: number) => randomBaseDigits(repeatingRng, length),\n randomCnpjAlphanumericBase: () => randomCnpjAlphanumericBase(repeatingRng),\n generateCpfValue: () => generateCpfValue(repeatingRng),\n generateCnpjValue: (format?: GenerateOptions['format']) => generateCnpjValue(repeatingRng, format),\n generateCepValue: () => generateCepValue(zeroRng),\n generateCartaoValue: () => generateCartaoValue(repeatingRng),\n generateCartaoValueForBrand: (brand: GeneratableCardBrand) => generateCartaoValue(repeatingRng, brand),\n generatePlacaValue: (format?: GenerateOptions['format']) =>\n generatePlacaValue(format === 'legacy' ? exhaustPlacaLegacyRng : exhaustPlacaMercosulRng, format),\n generateTelefoneValue: (format?: GenerateOptions['format']) =>\n generateTelefoneValue(exhaustTelefoneRng, format),\n generatePisValue: () => generatePisValue(repeatingRng),\n generateRenavamValue: () => generateRenavamValue(repeatingRng),\n generateCnhValue: () => generateCnhValue(repeatingRng),\n generateInscricaoEstadualValue: (uf: UfCode) => generateInscricaoEstadualValue(uf, repeatingRng),\n generateTituloEleitorValue: (uf: UfCode) => generateTituloEleitorValue(uf, repeatingRng),\n generatePixEvpValue: () => generatePixEvpValue(repeatingRng),\n generateNfeChaveValue: () => generateNfeChaveValue(repeatingRng),\n generateBrcodeValue: () => generateBrcodeValue(repeatingRng),\n generateBoletoValue: () => generateBoletoValue(repeatingRng),\n generateBoletoArrecadacaoValue: () => generateBoletoArrecadacaoValue(repeatingRng),\n generateIeProdutorRuralValue: () => generateIeProdutorRuralValue(repeatingRng),\n applyArrecadacaoLinhaMask,\n applyInscricaoEstadualGenerateMask: (value: string, uf: UfCode) =>\n applyInscricaoEstadualGenerateMask(value, uf),\n touchAllRngMethods: () => {\n for (const rng of [repeatingRng, zeroRng, exhaustPlacaLegacyRng, exhaustPlacaMercosulRng, exhaustTelefoneRng]) {\n rng.next();\n rng.int(1, 2);\n rng.digit();\n rng.digits(3);\n rng.letter();\n rng.pick(['a']);\n }\n },\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { validatePixKey, applyPixEvpKeyMask, applyPixEmailKeyMask, applyPixPhoneKeyMask, applyPixCnpjKeyMask, applyPixCpfKeyMask } from './chunk-
|
|
1
|
+
import { validatePixKey, applyPixEvpKeyMask, applyPixEmailKeyMask, applyPixPhoneKeyMask, applyPixCnpjKeyMask, applyPixCpfKeyMask } from './chunk-H3MLGGFI.js';
|
|
2
2
|
|
|
3
3
|
// src/format/pix.ts
|
|
4
4
|
function applyPixMask(keyType, value) {
|
|
@@ -24,5 +24,5 @@ function formatPixKey(input, options) {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
export { formatPixKey };
|
|
27
|
-
//# sourceMappingURL=chunk-
|
|
28
|
-
//# sourceMappingURL=chunk-
|
|
27
|
+
//# sourceMappingURL=chunk-IYOPXJLY.js.map
|
|
28
|
+
//# sourceMappingURL=chunk-IYOPXJLY.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/format/pix.ts"],"names":[],"mappings":";;;AAgBA,SAAS,YAAA,CAAa,SAAqB,KAAA,EAAuB;AAChE,EAAA,QAAQ,OAAA;AAAS,IACf,KAAK,KAAA;AACH,MAAA,OAAO,mBAAmB,KAAK,CAAA;AAAA,IACjC,KAAK,MAAA;AACH,MAAA,OAAO,oBAAoB,KAAK,CAAA;AAAA,IAClC,KAAK,OAAA;AACH,MAAA,OAAO,qBAAqB,KAAK,CAAA;AAAA,IACnC,KAAK,OAAA;AACH,MAAA,OAAO,qBAAqB,KAAK,CAAA;AAAA,IACnC,KAAK,KAAA;AACH,MAAA,OAAO,mBAAmB,KAAK,CAAA;AAAA;AAErC;AAEO,SAAS,YAAA,CAAa,OAAe,OAAA,EAA+C;AACzF,EAAA,MAAM,MAAA,GAAS,cAAA,CAAe,KAAA,EAAO,OAAO,CAAA;AAC5C,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;AAEA,EAAA,OAAO,EAAE,IAAI,IAAA,EAAM,SAAA,EAAW,aAAa,MAAA,CAAO,OAAA,EAAS,MAAA,CAAO,KAAK,CAAA,EAAE;AAC3E","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/format/pix.ts"],"names":[],"mappings":";;;AAgBA,SAAS,YAAA,CAAa,SAAqB,KAAA,EAAuB;AAChE,EAAA,QAAQ,OAAA;AAAS,IACf,KAAK,KAAA;AACH,MAAA,OAAO,mBAAmB,KAAK,CAAA;AAAA,IACjC,KAAK,MAAA;AACH,MAAA,OAAO,oBAAoB,KAAK,CAAA;AAAA,IAClC,KAAK,OAAA;AACH,MAAA,OAAO,qBAAqB,KAAK,CAAA;AAAA,IACnC,KAAK,OAAA;AACH,MAAA,OAAO,qBAAqB,KAAK,CAAA;AAAA,IACnC,KAAK,KAAA;AACH,MAAA,OAAO,mBAAmB,KAAK,CAAA;AAAA;AAErC;AAEO,SAAS,YAAA,CAAa,OAAe,OAAA,EAA+C;AACzF,EAAA,MAAM,MAAA,GAAS,cAAA,CAAe,KAAA,EAAO,OAAO,CAAA;AAC5C,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;AAEA,EAAA,OAAO,EAAE,IAAI,IAAA,EAAM,SAAA,EAAW,aAAa,MAAA,CAAO,OAAA,EAAS,MAAA,CAAO,KAAK,CAAA,EAAE;AAC3E","file":"chunk-IYOPXJLY.js","sourcesContent":["/**\n * Format decorator — strip → validate → apply official mask (UC-003).\n * @see docs/use-cases/UC-003-format-document.md\n * @see docs/VALIDATION-RULES.md BR-GLOBAL-002\n */\nimport type { ValidatePixKeyOptions } from '../core/pix/index.js';\nimport { validatePixKey } from '../core/pix/index.js';\nimport {\n applyPixCnpjKeyMask,\n applyPixCpfKeyMask,\n applyPixEmailKeyMask,\n applyPixEvpKeyMask,\n applyPixPhoneKeyMask,\n} from '../core/pix/mask.js';\nimport type { FormatResult, PixKeyType } from '../types/validation-result.js';\n\nfunction applyPixMask(keyType: PixKeyType, value: string): string {\n switch (keyType) {\n case 'cpf':\n return applyPixCpfKeyMask(value);\n case 'cnpj':\n return applyPixCnpjKeyMask(value);\n case 'phone':\n return applyPixPhoneKeyMask(value);\n case 'email':\n return applyPixEmailKeyMask(value);\n case 'evp':\n return applyPixEvpKeyMask(value);\n }\n}\n\nexport function formatPixKey(input: string, options?: ValidatePixKeyOptions): FormatResult {\n const result = validatePixKey(input, options);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n\n return { ok: true, formatted: applyPixMask(result.keyType, result.value) };\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { validateNfeChave, NFE_CHAVE_NUMERIC_PATTERN } from './chunk-
|
|
1
|
+
import { validateNfeChave, NFE_CHAVE_NUMERIC_PATTERN } from './chunk-AO6UTQ4A.js';
|
|
2
2
|
|
|
3
3
|
// src/core/nfe-chave/mask.ts
|
|
4
4
|
function applyNfeChaveMask(canonical) {
|
|
@@ -22,5 +22,5 @@ function formatNfeChave(input) {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
export { formatNfeChave };
|
|
25
|
-
//# sourceMappingURL=chunk-
|
|
26
|
-
//# sourceMappingURL=chunk-
|
|
25
|
+
//# sourceMappingURL=chunk-JKDU7QYP.js.map
|
|
26
|
+
//# sourceMappingURL=chunk-JKDU7QYP.js.map
|
|
@@ -1 +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-
|
|
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-JKDU7QYP.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"]}
|