validation-br 0.21.2 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/.eslintcache +1 -0
  2. package/.eslintignore +2 -0
  3. package/.eslintrc.js +76 -11
  4. package/.github/workflows/test.yml +39 -0
  5. package/.prettierignore +1 -0
  6. package/.prettierrc.js +7 -0
  7. package/dist/{documents/cnh.js → cnh.js} +122 -153
  8. package/dist/cnh.js.map +1 -0
  9. package/dist/{documents/cnpj.js → cnpj.js} +111 -138
  10. package/dist/cnpj.js.map +1 -0
  11. package/dist/{documents/cpf.js → cpf.js} +133 -160
  12. package/dist/cpf.js.map +1 -0
  13. package/dist/index.js +24 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/judicialProcess.js +153 -0
  16. package/dist/judicialProcess.js.map +1 -0
  17. package/dist/{documents/pis-pasep.js → pisPasep.js} +113 -140
  18. package/dist/pisPasep.js.map +1 -0
  19. package/dist/postalCode.js +150 -0
  20. package/dist/postalCode.js.map +1 -0
  21. package/dist/renavam.js +108 -0
  22. package/dist/renavam.js.map +1 -0
  23. package/dist/{documents/titulo-eleitor.js → tituloEleitor.js} +130 -155
  24. package/dist/tituloEleitor.js.map +1 -0
  25. package/dist/{lib/utils.js → utils.js} +166 -175
  26. package/dist/utils.js.map +1 -0
  27. package/jest.config.js +14 -0
  28. package/package.json +60 -31
  29. package/readme.md +170 -111
  30. package/tsconfig.json +23 -0
  31. package/.babelrc +0 -15
  32. package/.prettierrc +0 -9
  33. package/LICENSE +0 -21
  34. package/dist/documents/cnh.js.map +0 -1
  35. package/dist/documents/cnpj.js.map +0 -1
  36. package/dist/documents/cpf.js.map +0 -1
  37. package/dist/documents/index.js +0 -29
  38. package/dist/documents/index.js.map +0 -1
  39. package/dist/documents/judicial-process.js +0 -177
  40. package/dist/documents/judicial-process.js.map +0 -1
  41. package/dist/documents/pis-pasep.js.map +0 -1
  42. package/dist/documents/postal-code.js +0 -151
  43. package/dist/documents/postal-code.js.map +0 -1
  44. package/dist/documents/renavam.js +0 -97
  45. package/dist/documents/renavam.js.map +0 -1
  46. package/dist/documents/titulo-eleitor.js.map +0 -1
  47. package/dist/lib/utils.js.map +0 -1
  48. package/docs.md +0 -0
  49. package/index.js +0 -3
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ /**
3
+ * judicialProcess
4
+ * Valida, mascara e cria números de processos judiciais
5
+ *
6
+ * @link
7
+ * https://juslaboris.tst.jus.br/bitstream/handle/20.500.12178/30318/2008_res0065_cnj_rep01.pdf?sequence=2
8
+ * http://ghiorzi.org/DVnew.htm#f
9
+ *
10
+ * @doc
11
+ * Os números de processos judiciais são usados a partir de 2010 para unificar a
12
+ * numeração de processos no Brasil e são usados em todos os tribunais.
13
+ *
14
+ * O número do processo, sem os caracteres especiais, devem possuir até 20 números
15
+ * e deve seguir o padrão abaixo:
16
+ *
17
+ * 1) Partes do número
18
+ * 0002080-25.2012.5.15.0049
19
+ * NNNNNNN-DD.AAAA.J.TR.OOOO
20
+ * |______|__|____|_|__|____|
21
+ * | | | | | |----> Unidade de origem do processo com 4 caracteres
22
+ * | | | | |--------> TR=Tribunal do segmento do poder judiciário com 2 caracteres
23
+ * | | | |----------> J=Órgão do poder Judiciário com 1 caractere
24
+ * | | |-------------> Ano do ajuizamento do processo com 4 caracteres
25
+ * | |-----------------> Dígito verificador com 2 caracteres
26
+ * |----------------------> Número sequencial do Processo, por unidade de
27
+ * origem, reiniciado anualmente com 7 caracteres
28
+ *
29
+ * Órgãos do Poder Judiciário
30
+ * 1 - Supremo Tribunal Federal
31
+ * 2 - Conselho Nacional de Justiça
32
+ * 3 - Superior Tribunal de Justiça
33
+ * 4 - Justiça Federal
34
+ * 5 - Justiça do Trabalho
35
+ * 6 - Justiça Eleitoral
36
+ * 7 - Justiça Militar da União
37
+ * 8 - Justiça dos Estados e do Distrito Federal e Territórios
38
+ * 9 - Justiça Militar Estadual
39
+ *
40
+ *
41
+ * 2) Dígito Verificador
42
+ *
43
+ * O algoritmo usado para o cálculo do DV chama-se Módulo 97 de Base 10 (ISO 7064).
44
+ *
45
+ * Nota: O número do processo possui 20 caracteres e ultrapassa o tamanho máximo
46
+ * do inteiro em javascript, impedindo que façamos o cálculo diretamente, desta
47
+ * forma, será nacessária uma fatoração para que o resultado seja o correto.
48
+ *
49
+ * 2.1) Cálculo do DV
50
+ * - Caso o DV seja conhecido, ele precisa ser removido do número e colocado
51
+ * como "00" ao final. Caso não esteja incluso no número, adicione '00' ao final.
52
+ *
53
+ * Ex.: O processo "00020802520125150049", cujo dv é "25", será calculado como
54
+ * "000208020125150049" e receberá "00" ao final. O número usado para o cálculo
55
+ * do DV será "00020802012515004900"
56
+ *
57
+ * 2.2) Etapas de Cálculo
58
+ *
59
+ * 00020802012515004900
60
+ * ↓↓
61
+ * DV ao final como "00"
62
+ *
63
+ * - Aplicamos o MOD 97 aos caracteres de 0 a 7 para calcular a primeira parte
64
+ * part1 = 0002080 % 97 = 43
65
+ *
66
+ * - Concatenamos part1 ao ano, órgão do poder judiciário e tribunal e aplicamos o MOD 97
67
+ * para obtermos o valor da part2
68
+ * part2 = ( part1 +''+ 2012 +''+ 5 +''+ 15 ) % 97 = 26
69
+ *
70
+ * - Concatemos part2 ao código do órgão de origem e ao "00" do final e aplicamos
71
+ * o MOD 97 ao resultado
72
+ * part3 = ( part2 + '0049' + '00') % 97 = 73
73
+ *
74
+ * - Subtraímos o resultado de 98
75
+ * dv = 98 - 73 = 25
76
+ *
77
+ * O Dígito verificador é 25 e deve ser aplicado após o 7º caractere do número do processo
78
+ *
79
+ * Fonte: https://juslaboris.tst.jus.br/bitstream/handle/20.500.12178/30318/2008_res0065_cnj_rep01.pdf?sequence=2
80
+ */
81
+ Object.defineProperty(exports, "__esModule", { value: true });
82
+ exports.validate = exports.validateOrFail = exports.fake = exports.mask = exports.dv = void 0;
83
+ const utils_1 = require("./utils");
84
+ /**
85
+ *
86
+ *
87
+ */
88
+ exports.dv = (value) => {
89
+ if (!value)
90
+ throw new Error('Número do processo é obrigatório');
91
+ // if (typeof value !== 'string') throw new Error('Número do processo precisa ser string')
92
+ const judicialProcess = utils_1.clearValue(value, 18);
93
+ const num = judicialProcess.substring(0, 7);
94
+ const yearAndCourt = judicialProcess.substring(7, 14);
95
+ const origin = judicialProcess.substring(14, 18);
96
+ return String(98 - (Number(`${Number(`${Number(num) % 97}${yearAndCourt}`) % 97}${origin}00`) % 97)).padStart(2, '0');
97
+ };
98
+ /**
99
+ * Aplica uma máscara ao número informado
100
+ *
101
+ * @param {String} value Número de Processo
102
+ * @returns {String} Valor com a máscara
103
+ */
104
+ exports.mask = (value) => utils_1.applyMask(value, '0000000-00.0000.0.00.0000');
105
+ /**
106
+ *
107
+ *
108
+ */
109
+ exports.fake = (withMask = false) => {
110
+ const num = utils_1.fakeNumber(7, true);
111
+ const year = new Date().getFullYear() - +utils_1.fakeNumber(1);
112
+ const courte1 = utils_1.fakeNumber(1, true); // Não pode ser '0'
113
+ const courte2 = utils_1.fakeNumber(2, true);
114
+ const courte = `${courte1 === '0' || courte1 === '10' ? '1' : courte1}${courte2}`;
115
+ const origin = utils_1.fakeNumber(4, true);
116
+ const judicialProcess = `${num}${year}${courte}${origin}`;
117
+ const digits = exports.dv(judicialProcess);
118
+ const finalNumber = utils_1.insertAtPosition(judicialProcess, digits, 7);
119
+ if (withMask)
120
+ return exports.mask(finalNumber);
121
+ return finalNumber;
122
+ };
123
+ /**
124
+ * validate()
125
+ * Valida se um número de processo está correto
126
+ *
127
+ */
128
+ exports.validateOrFail = (value) => {
129
+ const judicialProcess = utils_1.clearValue(value, 20);
130
+ const processWithoutDV = utils_1.removeFromPosition(judicialProcess, 7, 9);
131
+ if (processWithoutDV.substring(11, 12) === '0') {
132
+ throw new Error('Código do Órgão Judiciário não pode ser "0"');
133
+ }
134
+ if (exports.dv(processWithoutDV) !== judicialProcess.substring(7, 9)) {
135
+ throw new Error('Dígito verificador inválido');
136
+ }
137
+ return true;
138
+ };
139
+ /**
140
+ * validate()
141
+ * Valida se um número de processo está correto
142
+ *
143
+ */
144
+ exports.validate = (value) => {
145
+ try {
146
+ return exports.validateOrFail(value);
147
+ }
148
+ catch (error) {
149
+ return false;
150
+ }
151
+ };
152
+ exports.default = exports.validate;
153
+ //# sourceMappingURL=judicialProcess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"judicialProcess.js","sourceRoot":"","sources":["../src/judicialProcess.ts"],"names":[],"mappings":"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"}
@@ -1,140 +1,113 @@
1
- "use strict";
2
-
3
- /**
4
- * isPIS()
5
- * Calcula se um código de PIS/PASEP/NIS/NIT no formato 268.27649.96-0 é válido. Não
6
- * valida o formato, portanto, 26827649960 é equivalente a 268.27649.96-0 para efeitos
7
- * desta validação.
8
- *
9
- * @doc
10
- * - O número de PIS deve possuir 11 caracteres
11
- *
12
- * - Os caracteres de 1 a 10 são a numeração documento
13
- *
14
- * - O caractere 11 é o dígito verificador.
15
- *
16
- * 1) Partes do número
17
- * _______________________________________________
18
- * | Número | D V |
19
- * | 2 6 8 . 2 7 6 4 9 . 9 6 - 0 |
20
- * |_________________________________________|_____|
21
- *
22
- * 2) Cálculo do DV.
23
- *
24
- * - Soma-se o produto das algarismos 3 a 10 pelos números 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
25
- *
26
- * 2 6 8 2 7 6 4 9 9 6
27
- * x x x x x x x x x x
28
- * 3 2 9 8 7 6 5 4 3 2
29
- * = 6 +12 +72 +16 +49 +12 +20 +36 +27 +12 = 234
30
- *
31
- * - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
32
- * 234 / 11 tem resto 3. 11 - 3 = 8. DV1 é 8.
33
- * Obs.: Caso o cálculo de DV1 retorne 0, o resultado será 5.
34
- * Caso retorne 1, o resto será 0
35
- *
36
- *
37
- *
38
- *
39
- * Fonte: http://www.macoratti.net/alg_pis.htm
40
- *
41
- * @param {String} value Objeto postal no formato 268.27649.96-0
42
- * @returns {Boolean}
43
- */
44
- var _require = require('../lib/utils'),
45
- invalidListGenerator = _require.invalidListGenerator,
46
- sumElementsByMultipliers = _require.sumElementsByMultipliers,
47
- sumToDV = _require.sumToDV,
48
- clearValue = _require.clearValue,
49
- fakeNumber = _require.fakeNumber,
50
- applyMask = _require.applyMask;
51
- /**
52
- * dv()
53
- * Calcula o dígito verificador de um PIS
54
- *
55
- * @param {Number|String} value
56
- * @returns {String}
57
- */
58
-
59
-
60
- var dv = function dv() {
61
- var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
62
- if (!value) throw new Error('PIS não informado');
63
- var pis = clearValue(value, 10);
64
- var invalidList = invalidListGenerator(10);
65
-
66
- if (invalidList.includes(pis)) {
67
- throw new Error('PIS não pode ser uma sequência de números iguais');
68
- }
69
-
70
- var sum = sumElementsByMultipliers(pis, [3, 2, 9, 8, 7, 6, 5, 4, 3, 2]);
71
- return String(sumToDV(sum));
72
- };
73
- /**
74
- * Aplica uma máscara ao número informado
75
- *
76
- * @param {String} value Número de Processo
77
- * @returns {String} Valor com a máscara
78
- */
79
-
80
-
81
- var mask = function mask(value) {
82
- return applyMask(value, '000.00000.00-0');
83
- };
84
- /**
85
- * fake()
86
- * Gera um número válido
87
- *
88
- * @returns {String}
89
- */
90
-
91
-
92
- var fake = function fake() {
93
- var withMask = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
94
- var num = fakeNumber(10, true);
95
- var pis = "".concat(num).concat(dv(num));
96
- if (withMask) return mask(pis);
97
- return pis;
98
- };
99
- /**
100
- * validateOrFail()
101
- * Valida se um número de processo está correto e
102
- * retorna uma exceção se não estiver
103
- *
104
- * @returns {Boolean}
105
- */
106
-
107
-
108
- var validateOrFail = function validateOrFail(value) {
109
- var pis = clearValue(value, 11);
110
-
111
- if (dv(pis) !== pis.substring(10, 11)) {
112
- throw new Error('Dígito verificador inválido');
113
- }
114
-
115
- return true;
116
- };
117
- /**
118
- * validate()
119
- * Valida se um número de processo está correto
120
- *
121
- * @returns {Boolean}
122
- */
123
-
124
-
125
- var validate = function validate(value) {
126
- try {
127
- return validateOrFail(value);
128
- } catch (error) {
129
- return false;
130
- }
131
- };
132
-
133
- module.exports = {
134
- dv: dv,
135
- fake: fake,
136
- mask: mask,
137
- validate: validate,
138
- validateOrFail: validateOrFail
139
- };
140
- //# sourceMappingURL=pis-pasep.js.map
1
+ "use strict";
2
+ /**
3
+ * isPIS()
4
+ * Calcula se um código de PIS/PASEP/NIS/NIT no formato 268.27649.96-0 é válido. Não
5
+ * valida o formato, portanto, 26827649960 é equivalente a 268.27649.96-0 para efeitos
6
+ * desta validação.
7
+ *
8
+ * @doc
9
+ * - O número de PIS deve possuir 11 caracteres
10
+ *
11
+ * - Os caracteres de 1 a 10 são a numeração documento
12
+ *
13
+ * - O caractere 11 é o dígito verificador.
14
+ *
15
+ * 1) Partes do número
16
+ * _______________________________________________
17
+ * | Número | D V |
18
+ * | 2 6 8 . 2 7 6 4 9 . 9 6 - 0 |
19
+ * |_________________________________________|_____|
20
+ *
21
+ * 2) Cálculo do DV.
22
+ *
23
+ * - Soma-se o produto das algarismos 3 a 10 pelos números 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
24
+ *
25
+ * 2 6 8 2 7 6 4 9 9 6
26
+ * x x x x x x x x x x
27
+ * 3 2 9 8 7 6 5 4 3 2
28
+ * = 6 +12 +72 +16 +49 +12 +20 +36 +27 +12 = 234
29
+ *
30
+ * - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
31
+ * 234 / 11 tem resto 3. 11 - 3 = 8. DV1 é 8.
32
+ * Obs.: Caso o cálculo de DV1 retorne 0, o resultado será 5.
33
+ * Caso retorne 1, o resto será 0
34
+ *
35
+ *
36
+ *
37
+ *
38
+ * Fonte: http://www.macoratti.net/alg_pis.htm
39
+ *
40
+ * @param {String} value Objeto postal no formato 268.27649.96-0
41
+ * @returns {Boolean}
42
+ */
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ exports.validate = exports.validateOrFail = exports.fake = exports.mask = exports.dv = void 0;
45
+ const utils_1 = require("./utils");
46
+ /**
47
+ * dv()
48
+ * Calcula o dígito verificador
49
+ *
50
+ * @param {Number|String} value
51
+ * @returns {String}
52
+ */
53
+ exports.dv = (value) => {
54
+ if (!value)
55
+ throw new Error('PIS não informado');
56
+ const pis = utils_1.clearValue(value, 10);
57
+ const invalidList = utils_1.invalidListGenerator(10);
58
+ if (invalidList.includes(pis)) {
59
+ throw new Error('PIS não pode ser uma sequência de números iguais');
60
+ }
61
+ const sum = utils_1.sumElementsByMultipliers(pis, [3, 2, 9, 8, 7, 6, 5, 4, 3, 2]);
62
+ return String(utils_1.sumToDV(sum));
63
+ };
64
+ /**
65
+ * Aplica uma máscara ao número informado
66
+ *
67
+ * @param {String} value Número de Processo
68
+ * @returns {String} Valor com a máscara
69
+ */
70
+ exports.mask = (value) => utils_1.applyMask(value, '000.00000.00-0');
71
+ /**
72
+ * fake()
73
+ * Gera um número válido
74
+ *
75
+ * @returns {String}
76
+ */
77
+ exports.fake = (withMask = false) => {
78
+ const num = utils_1.fakeNumber(10, true);
79
+ const pis = `${num}${exports.dv(num)}`;
80
+ if (withMask)
81
+ return exports.mask(pis);
82
+ return pis;
83
+ };
84
+ /**
85
+ * validateOrFail()
86
+ * Valida se um número de processo está correto e
87
+ * retorna uma exceção se não estiver
88
+ *
89
+ * @returns {Boolean}
90
+ */
91
+ exports.validateOrFail = (value) => {
92
+ const pis = utils_1.clearValue(value, 11);
93
+ if (exports.dv(pis) !== pis.substring(10, 11)) {
94
+ throw new Error('Dígito verificador inválido');
95
+ }
96
+ return true;
97
+ };
98
+ /**
99
+ * validate()
100
+ * Valida se um número de processo está correto
101
+ *
102
+ * @returns {Boolean}
103
+ */
104
+ exports.validate = (value) => {
105
+ try {
106
+ return exports.validateOrFail(value);
107
+ }
108
+ catch (error) {
109
+ return false;
110
+ }
111
+ };
112
+ exports.default = exports.validate;
113
+ //# sourceMappingURL=pisPasep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pisPasep.js","sourceRoot":"","sources":["../src/pisPasep.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;;;AAEH,mCAOgB;AAEhB;;;;;;GAMG;AACU,QAAA,EAAE,GAAG,CAAC,KAAsB,EAAU,EAAE;IACnD,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;IAEhD,MAAM,GAAG,GAAG,kBAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAEjC,MAAM,WAAW,GAAG,4BAAoB,CAAC,EAAE,CAAC,CAAA;IAC5C,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;KACpE;IAED,MAAM,GAAG,GAAG,gCAAwB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAEzE,OAAO,MAAM,CAAC,eAAO,CAAC,GAAG,CAAC,CAAC,CAAA;AAC7B,CAAC,CAAA;AAED;;;;;GAKG;AACU,QAAA,IAAI,GAAG,CAAC,KAAsB,EAAU,EAAE,CAAC,iBAAS,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA;AAE1F;;;;;GAKG;AACU,QAAA,IAAI,GAAG,CAAC,WAAoB,KAAK,EAAU,EAAE;IACxD,MAAM,GAAG,GAAG,kBAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAEhC,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,UAAE,CAAC,GAAG,CAAC,EAAE,CAAA;IAE9B,IAAI,QAAQ;QAAE,OAAO,YAAI,CAAC,GAAG,CAAC,CAAA;IAC9B,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,CAAC,KAAsB,EAAW,EAAE;IAChE,MAAM,GAAG,GAAG,kBAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAEjC,IAAI,UAAE,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;QACrC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;KAC/C;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED;;;;;GAKG;AACU,QAAA,QAAQ,GAAG,CAAC,KAAsB,EAAW,EAAE;IAC1D,IAAI;QACF,OAAO,sBAAc,CAAC,KAAK,CAAC,CAAA;KAC7B;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,KAAK,CAAA;KACb;AACH,CAAC,CAAA;AAED,kBAAe,gBAAQ,CAAA"}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ /**
3
+ * isPostalCode()
4
+ * Calcula se um código de rastreamento postal no formato JT194690698BR é válido.
5
+ *
6
+ * @doc
7
+ * - O número de registro postal deve possuir 13 caracters no formato JT194690698BR.
8
+ *
9
+ * - Os caracteres 1 e 2 informam o tipo do objeto. Ex.: SX é Sedex, RC é carta registrada etc.
10
+ *
11
+ * - Os caracteres de 3 a 10 são a numeração sequencial do tipo do objeto.
12
+ *
13
+ * - O caractere 11 é o dígito verificador.
14
+ *
15
+ * - Os caracteres 12 e 13 representa o código do País de onde a postagem partiu.
16
+ *
17
+ * 1) Partes do número
18
+ * ______ ___________________________ ______ _______
19
+ * | Tipo | Número | DV | País |
20
+ * | J T 1 9 4 6 9 0 6 9 8 B R |
21
+ * |______|___________________________|______|_______|
22
+ *
23
+ * 2) Cálculo do DV.
24
+ *
25
+ * - Soma-se o produto das algarismos 3 a 10 pelos números 8, 6, 4, 2, 3, 5, 9, 7
26
+ *
27
+ * 1 9 4 6 9 0 6 9
28
+ * x x x x x x x x
29
+ * 8 6 4 2 3 5 9 7
30
+ * = 8 +54 +16 +12 +18 +0 +54 +63 = 234
31
+ *
32
+ * - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
33
+ * 234 / 11 tem resto 3. 11 - 3 = 8. DV1 é 8.
34
+ * Obs.: Caso o cálculo de DV1 retorne 0, o resultado será 5.
35
+ * Caso retorne 1, o resto será 0
36
+ *
37
+ *
38
+ *
39
+ *
40
+ * Fonte:
41
+ *
42
+ * @param {String} value Objeto postal no formato JT194690698BR
43
+ * @returns {Boolean}
44
+ */
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.validate = exports.validateOrFail = exports.fake = exports.mask = exports.dv = void 0;
47
+ const utils_1 = require("./utils");
48
+ /**
49
+ * dv()
50
+ * Calcula o dígito verificador
51
+ *
52
+ * @param {Number|String} value
53
+ * @returns {String}
54
+ */
55
+ exports.dv = (value) => {
56
+ if (!value)
57
+ throw new Error('PIS não informado');
58
+ const postalCode = utils_1.clearValue(value, 8);
59
+ const sum = utils_1.sumElementsByMultipliers(postalCode, [8, 6, 4, 2, 3, 5, 9, 7]);
60
+ const rest = sum % 11;
61
+ // const specificities = { 0: { dv: 5 }, 1: { dv: 0 } }
62
+ const specificities = [
63
+ { rest: 0, dv: 5 },
64
+ { rest: 1, dv: 0 },
65
+ ];
66
+ const specifity = specificities.find((item) => item.rest === rest);
67
+ const DV = specifity ? specifity.dv : 11 - rest;
68
+ return String(DV);
69
+ };
70
+ /**
71
+ * Aplica uma máscara ao número informado
72
+ *
73
+ * @param {String} value Número de Processo
74
+ * @returns {String} Valor com a máscara
75
+ */
76
+ exports.mask = (value) => String(value).toLocaleUpperCase();
77
+ /**
78
+ * fake()
79
+ * Gera um número válido
80
+ *
81
+ * @returns {String}
82
+ */
83
+ exports.fake = (withMask = false) => {
84
+ const num = utils_1.fakeNumber(8, true);
85
+ const randLetter = () => [
86
+ 'A',
87
+ 'B',
88
+ 'C',
89
+ 'D',
90
+ 'E',
91
+ 'F',
92
+ 'G',
93
+ 'H',
94
+ 'I',
95
+ 'J',
96
+ 'K',
97
+ 'L',
98
+ 'M',
99
+ 'N',
100
+ 'O',
101
+ 'P',
102
+ 'Q',
103
+ 'R',
104
+ 'S',
105
+ 'T',
106
+ 'U',
107
+ 'V',
108
+ 'W',
109
+ 'X',
110
+ 'Y',
111
+ 'Z',
112
+ ][+(Math.random() * 25).toFixed(0)];
113
+ const postalCode = `${randLetter()}${randLetter()}${num}${exports.dv(num)}BR`;
114
+ if (withMask)
115
+ return exports.mask(postalCode);
116
+ return postalCode;
117
+ };
118
+ /**
119
+ * validateOrFail()
120
+ * Valida se um número de processo está correto e
121
+ * retorna uma exceção se não estiver
122
+ *
123
+ * @returns {Boolean}
124
+ */
125
+ exports.validateOrFail = (value) => {
126
+ const postalCode = utils_1.clearValue(value, 9);
127
+ if (!/^[a-z]{2}([\d]{9})[a-z]{2}$/gi.test(String(value))) {
128
+ throw new Error('O número não está no formato "XX000000000XX"');
129
+ }
130
+ if (exports.dv(value) !== postalCode.substring(8, 9)) {
131
+ throw new Error('Dígito verificador inválido');
132
+ }
133
+ return true;
134
+ };
135
+ /**
136
+ * validate()
137
+ * Valida se um número de processo está correto
138
+ *
139
+ * @returns {Boolean}
140
+ */
141
+ exports.validate = (value) => {
142
+ try {
143
+ return exports.validateOrFail(value);
144
+ }
145
+ catch (error) {
146
+ return false;
147
+ }
148
+ };
149
+ exports.default = exports.validate;
150
+ //# sourceMappingURL=postalCode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postalCode.js","sourceRoot":"","sources":["../src/postalCode.ts"],"names":[],"mappings":"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"}