validation-br 0.5.0 → 0.8.3
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/.babelrc +15 -0
- package/.eslintrc.js +17 -0
- package/.prettierrc +9 -0
- package/dist/documents/cnh.js +77 -0
- package/dist/documents/cnh.js.map +1 -0
- package/dist/documents/cnpj.js +75 -0
- package/dist/documents/cnpj.js.map +1 -0
- package/dist/documents/cpf.js +83 -0
- package/dist/documents/cpf.js.map +1 -0
- package/dist/documents/index.js +10 -1
- package/dist/documents/index.js.map +1 -0
- package/dist/documents/pis-pasep.js +71 -0
- package/dist/documents/pis-pasep.js.map +1 -0
- package/dist/documents/postal-code.js +72 -0
- package/dist/documents/postal-code.js.map +1 -0
- package/dist/documents/titulo-eleitor.js +74 -0
- package/dist/documents/titulo-eleitor.js.map +1 -0
- package/dist/lib/utils.js +60 -0
- package/dist/lib/utils.js.map +1 -0
- package/docs.md +0 -0
- package/package.json +5 -5
- package/readme.md +128 -10
package/.babelrc
ADDED
package/.eslintrc.js
ADDED
package/.prettierrc
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _require = require('../lib/utils'),
|
|
4
|
+
sumElementsByMultipliers = _require.sumElementsByMultipliers,
|
|
5
|
+
sumToDV = _require.sumToDV,
|
|
6
|
+
invalidListGenerator = _require.invalidListGenerator;
|
|
7
|
+
/**
|
|
8
|
+
* isCNH()
|
|
9
|
+
* Calcula se uma CNH é válida
|
|
10
|
+
*
|
|
11
|
+
* @doc
|
|
12
|
+
* CNH deve possuir 11 caracteres
|
|
13
|
+
*
|
|
14
|
+
* - Os caracteres 1 a 9 são números sequenciais.
|
|
15
|
+
*
|
|
16
|
+
*
|
|
17
|
+
* - Os caracteres 10 e 11 são dígitos verificadores.
|
|
18
|
+
*
|
|
19
|
+
* 1) Partes do número
|
|
20
|
+
* ____________________________ ______
|
|
21
|
+
* | Número | D V |
|
|
22
|
+
* | 5 8 3 1 6 7 9 4 5 3 4 |
|
|
23
|
+
* |____________________________|_____|
|
|
24
|
+
*
|
|
25
|
+
* 2) Cálculo do primeiro DV.
|
|
26
|
+
*
|
|
27
|
+
* - Soma-se o produto das algarismos 1 a 9 pelos números 2, 3, 4, 5, 6, 7, 8, 9, 10.
|
|
28
|
+
*
|
|
29
|
+
* 5 8 3 1 6 7 9 4 5
|
|
30
|
+
* x x x x x x x x x
|
|
31
|
+
* 2 3 4 5 6 7 8 9 10
|
|
32
|
+
* = 10 +24 +12 +5 +36 +49 +72 +36 +50 = 294
|
|
33
|
+
*
|
|
34
|
+
* - O somatório encontrado é dividido por 11. O DV1 é 11 subtraído do resto da divisão. Se o
|
|
35
|
+
* resto for 10, o DV1 é 0.
|
|
36
|
+
*
|
|
37
|
+
* 2.1) 294 / 11 tem resto igual a 8. 11-7 = 3
|
|
38
|
+
* DV1 = 3
|
|
39
|
+
*
|
|
40
|
+
* 3) Cálculo do segundo DV
|
|
41
|
+
*
|
|
42
|
+
* - Soma-se o produto das algarismos 1 a 9 juntamente com o 10 caractere
|
|
43
|
+
* que é o DV1, pelos números 3, 4, 5, 6, 7, 8, 9, 10, 11, 2. O DV1 será
|
|
44
|
+
* multiplicado por 2 e ficará no final.
|
|
45
|
+
*
|
|
46
|
+
* 5 8 3 1 6 7 9 4 5 3
|
|
47
|
+
* x x x x x x x x x x
|
|
48
|
+
* 3 4 5 6 7 8 9 10 11 2
|
|
49
|
+
* = 10 +24 +12 +5 +36 +49 +72 +36 +50 +6 = 348
|
|
50
|
+
*
|
|
51
|
+
* 3.1) 348 / 11 tem resto igual a 7. 11 - 7 = 4.
|
|
52
|
+
* DV2 = 4
|
|
53
|
+
*
|
|
54
|
+
* - O somatório encontrado é dividido por 11. O DV2 é 11 subtraído do resto da divisão. Se o
|
|
55
|
+
* resto for 10, o DV2 é 0.
|
|
56
|
+
*
|
|
57
|
+
* Fonte: https://www.devmedia.com.br/forum/validacao-de-cnh/372972
|
|
58
|
+
*
|
|
59
|
+
* @param {String} value Título eleitoral
|
|
60
|
+
* @returns {Boolean}
|
|
61
|
+
*/
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
var isCNH = function isCNH() {
|
|
65
|
+
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
66
|
+
var cnh = value.replace(/[^\d]+/g, '');
|
|
67
|
+
var invalidList = invalidListGenerator(11);
|
|
68
|
+
if (!cnh || invalidList.includes(cnh) || cnh.length !== 11) return false;
|
|
69
|
+
var sum1 = sumElementsByMultipliers(cnh.substr(0, 9), [2, 3, 4, 5, 6, 7, 8, 9, 10]);
|
|
70
|
+
var sum2 = sumElementsByMultipliers(cnh.substr(0, 10), [3, 4, 5, 6, 7, 8, 9, 10, 11, 2]);
|
|
71
|
+
var dv1 = sumToDV(sum1);
|
|
72
|
+
var dv2 = sumToDV(sum2);
|
|
73
|
+
return "".concat(dv1).concat(dv2) === cnh.substr(9, 2);
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
module.exports = isCNH;
|
|
77
|
+
//# sourceMappingURL=cnh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/documents/cnh.js"],"names":["require","sumElementsByMultipliers","sumToDV","invalidListGenerator","isCNH","value","cnh","replace","invalidList","includes","length","sum1","substr","sum2","dv1","dv2","module","exports"],"mappings":";;AAAA,eAAoEA,OAAO,CAAC,cAAD,CAA3E;AAAA,IAAQC,wBAAR,YAAQA,wBAAR;AAAA,IAAkCC,OAAlC,YAAkCA,OAAlC;AAAA,IAA2CC,oBAA3C,YAA2CA,oBAA3C;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMC,KAAK,GAAG,SAARA,KAAQ,GAAgB;AAAA,MAAfC,KAAe,uEAAP,EAAO;AAC5B,MAAMC,GAAG,GAAGD,KAAK,CAACE,OAAN,CAAc,SAAd,EAAyB,EAAzB,CAAZ;AAEA,MAAMC,WAAW,GAAGL,oBAAoB,CAAC,EAAD,CAAxC;AACA,MAAI,CAACG,GAAD,IAAQE,WAAW,CAACC,QAAZ,CAAqBH,GAArB,CAAR,IAAqCA,GAAG,CAACI,MAAJ,KAAe,EAAxD,EAA4D,OAAO,KAAP;AAE5D,MAAMC,IAAI,GAAGV,wBAAwB,CAACK,GAAG,CAACM,MAAJ,CAAW,CAAX,EAAc,CAAd,CAAD,EAAmB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,EAAzB,CAAnB,CAArC;AACA,MAAMC,IAAI,GAAGZ,wBAAwB,CAACK,GAAG,CAACM,MAAJ,CAAW,CAAX,EAAc,EAAd,CAAD,EAAoB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,EAAtB,EAA0B,EAA1B,EAA8B,CAA9B,CAApB,CAArC;AAEA,MAAME,GAAG,GAAGZ,OAAO,CAACS,IAAD,CAAnB;AACA,MAAMI,GAAG,GAAGb,OAAO,CAACW,IAAD,CAAnB;AAEA,SAAO,UAAGC,GAAH,SAASC,GAAT,MAAmBT,GAAG,CAACM,MAAJ,CAAW,CAAX,EAAc,CAAd,CAA1B;AACD,CAbD;;AAeAI,MAAM,CAACC,OAAP,GAAiBb,KAAjB","sourcesContent":["const { sumElementsByMultipliers, sumToDV, invalidListGenerator } = require('../lib/utils');\n\n/**\n * isCNH()\n * Calcula se uma CNH é válida\n *\n * @doc\n * CNH deve possuir 11 caracteres\n *\n * - Os caracteres 1 a 9 são números sequenciais.\n *\n *\n * - Os caracteres 10 e 11 são dígitos verificadores.\n *\n * 1) Partes do número\n * ____________________________ ______\n * | Número | D V |\n * | 5 8 3 1 6 7 9 4 5 3 4 |\n * |____________________________|_____|\n *\n * 2) Cálculo do primeiro DV.\n *\n * - Soma-se o produto das algarismos 1 a 9 pelos números 2, 3, 4, 5, 6, 7, 8, 9, 10.\n *\n * 5 8 3 1 6 7 9 4 5\n * x x x x x x x x x\n * 2 3 4 5 6 7 8 9 10\n * = 10 +24 +12 +5 +36 +49 +72 +36 +50 = 294\n *\n * - O somatório encontrado é dividido por 11. O DV1 é 11 subtraído do resto da divisão. Se o\n * resto for 10, o DV1 é 0.\n *\n * 2.1) 294 / 11 tem resto igual a 8. 11-7 = 3\n * DV1 = 3\n *\n * 3) Cálculo do segundo DV\n *\n * - Soma-se o produto das algarismos 1 a 9 juntamente com o 10 caractere\n * que é o DV1, pelos números 3, 4, 5, 6, 7, 8, 9, 10, 11, 2. O DV1 será\n * multiplicado por 2 e ficará no final.\n *\n * 5 8 3 1 6 7 9 4 5 3\n * x x x x x x x x x x\n * 3 4 5 6 7 8 9 10 11 2\n * = 10 +24 +12 +5 +36 +49 +72 +36 +50 +6 = 348\n *\n * 3.1) 348 / 11 tem resto igual a 7. 11 - 7 = 4.\n * DV2 = 4\n *\n * - O somatório encontrado é dividido por 11. O DV2 é 11 subtraído do resto da divisão. Se o\n * resto for 10, o DV2 é 0.\n *\n * Fonte: https://www.devmedia.com.br/forum/validacao-de-cnh/372972\n *\n * @param {String} value Título eleitoral\n * @returns {Boolean}\n */\nconst isCNH = (value = '') => {\n const cnh = value.replace(/[^\\d]+/g, '');\n\n const invalidList = invalidListGenerator(11);\n if (!cnh || invalidList.includes(cnh) || cnh.length !== 11) return false;\n\n const sum1 = sumElementsByMultipliers(cnh.substr(0, 9), [2, 3, 4, 5, 6, 7, 8, 9, 10]);\n const sum2 = sumElementsByMultipliers(cnh.substr(0, 10), [3, 4, 5, 6, 7, 8, 9, 10, 11, 2]);\n\n const dv1 = sumToDV(sum1);\n const dv2 = sumToDV(sum2);\n\n return `${dv1}${dv2}` === cnh.substr(9, 2);\n};\n\nmodule.exports = isCNH;\n"],"file":"cnh.js"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _require = require('../lib/utils'),
|
|
4
|
+
invalidListGenerator = _require.invalidListGenerator,
|
|
5
|
+
sumElementsByMultipliers = _require.sumElementsByMultipliers,
|
|
6
|
+
sumToDV = _require.sumToDV;
|
|
7
|
+
/**
|
|
8
|
+
* isCNPJ()
|
|
9
|
+
* Calcula se um CNPJ é válido
|
|
10
|
+
*
|
|
11
|
+
* @doc
|
|
12
|
+
* - CNPJ deve possuir 14 dígitos no formato 00.000.000/0000-00
|
|
13
|
+
*
|
|
14
|
+
* - Os caracteres 1 a 8 são números sequenciais definidos pela Receita Federal
|
|
15
|
+
*
|
|
16
|
+
* - Os caracteres 9 a 12 são a identificação das filiais da empresa.
|
|
17
|
+
*
|
|
18
|
+
* - Os caracteres 13 e 14 são os dígitos verificadores
|
|
19
|
+
*
|
|
20
|
+
* 1) Partes do número
|
|
21
|
+
* _______________________________ _______________ _______
|
|
22
|
+
* | Número | Filiais | DV |
|
|
23
|
+
* | 1 1 . 2 2 2 . 3 3 3 / 0 0 0 1 - X Y |
|
|
24
|
+
* |_______________________________|_______________|_______|
|
|
25
|
+
*
|
|
26
|
+
* 2) Cálculo do primeiro DV.
|
|
27
|
+
*
|
|
28
|
+
* - Soma-se o produto das algarismos 1 a 12 pelos números 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
|
|
29
|
+
*
|
|
30
|
+
* 1 1 2 2 2 3 3 3 0 0 0 1
|
|
31
|
+
* x x x x x x x x x x x x
|
|
32
|
+
* 5 4 3 2 9 8 7 6 5 4 3 2
|
|
33
|
+
* = 5 +4 +6 +4 +18 +24 +21 +18 +0 +0 +0 +2 = 102
|
|
34
|
+
*
|
|
35
|
+
* - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
|
|
36
|
+
* 102 / 11 tem resto 8. 11 - 3 = 8. DV1 é 8.
|
|
37
|
+
* Obs.: Caso o cálculo de DV1 retorne 10, o resultado será 0.
|
|
38
|
+
*
|
|
39
|
+
* 3) Cálculo do segundo DV.
|
|
40
|
+
*
|
|
41
|
+
* - Soma-se o produto das algarismos 1 a 13 (incluindo o DV1 calculado) pelos
|
|
42
|
+
* números 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2.
|
|
43
|
+
*
|
|
44
|
+
* 1 1 2 2 2 3 3 3 0 0 0 1 8
|
|
45
|
+
* x x x x x x x x x x x x x
|
|
46
|
+
* 6 5 4 3 2 9 8 7 6 5 4 3 2
|
|
47
|
+
* = 6 +5 +8 +6 +4 +27 +24 +21 +0 +0 +0 +3 +16 = 120
|
|
48
|
+
*
|
|
49
|
+
* - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
|
|
50
|
+
* 120 / 11 tem resto 10. 11 - 10 = 1. DV2 é 1.
|
|
51
|
+
* Obs.: Caso o cálculo de DV2 retorne 10, o resultado será 0.
|
|
52
|
+
*
|
|
53
|
+
* Fonte: http://www.macoratti.net/alg_cnpj.htm
|
|
54
|
+
*
|
|
55
|
+
* @param {String} value Título eleitoral
|
|
56
|
+
* @returns {Boolean}
|
|
57
|
+
*/
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
var isCNPJ = function isCNPJ() {
|
|
61
|
+
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
62
|
+
var cnpj = value.replace(/[^\d]+/g, '');
|
|
63
|
+
var blackList = invalidListGenerator(14);
|
|
64
|
+
if (!cnpj || cnpj.length !== 14 || blackList.includes(cnpj)) return false;
|
|
65
|
+
var sum1 = sumElementsByMultipliers(cnpj.substr(0, 12), '543298765432');
|
|
66
|
+
var sum2 = sumElementsByMultipliers(cnpj.substr(0, 13), '6543298765432');
|
|
67
|
+
var dv1 = sumToDV(sum1);
|
|
68
|
+
var dv2 = sumToDV(sum2);
|
|
69
|
+
if (dv1 !== Number(cnpj.charAt(12))) return false;
|
|
70
|
+
if (dv2 !== Number(cnpj.charAt(13))) return false;
|
|
71
|
+
return true;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
module.exports = isCNPJ;
|
|
75
|
+
//# sourceMappingURL=cnpj.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/documents/cnpj.js"],"names":["require","invalidListGenerator","sumElementsByMultipliers","sumToDV","isCNPJ","value","cnpj","replace","blackList","length","includes","sum1","substr","sum2","dv1","dv2","Number","charAt","module","exports"],"mappings":";;AAAA,eAAoEA,OAAO,CAAC,cAAD,CAA3E;AAAA,IAAQC,oBAAR,YAAQA,oBAAR;AAAA,IAA8BC,wBAA9B,YAA8BA,wBAA9B;AAAA,IAAwDC,OAAxD,YAAwDA,OAAxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMC,MAAM,GAAG,SAATA,MAAS,GAAgB;AAAA,MAAfC,KAAe,uEAAP,EAAO;AAC7B,MAAMC,IAAI,GAAGD,KAAK,CAACE,OAAN,CAAc,SAAd,EAAyB,EAAzB,CAAb;AAEA,MAAMC,SAAS,GAAGP,oBAAoB,CAAC,EAAD,CAAtC;AACA,MAAI,CAACK,IAAD,IAASA,IAAI,CAACG,MAAL,KAAgB,EAAzB,IAA+BD,SAAS,CAACE,QAAV,CAAmBJ,IAAnB,CAAnC,EAA6D,OAAO,KAAP;AAE7D,MAAMK,IAAI,GAAGT,wBAAwB,CAACI,IAAI,CAACM,MAAL,CAAY,CAAZ,EAAe,EAAf,CAAD,EAAqB,cAArB,CAArC;AACA,MAAMC,IAAI,GAAGX,wBAAwB,CAACI,IAAI,CAACM,MAAL,CAAY,CAAZ,EAAe,EAAf,CAAD,EAAqB,eAArB,CAArC;AAEA,MAAME,GAAG,GAAGX,OAAO,CAACQ,IAAD,CAAnB;AACA,MAAMI,GAAG,GAAGZ,OAAO,CAACU,IAAD,CAAnB;AAEA,MAAIC,GAAG,KAAKE,MAAM,CAACV,IAAI,CAACW,MAAL,CAAY,EAAZ,CAAD,CAAlB,EAAqC,OAAO,KAAP;AACrC,MAAIF,GAAG,KAAKC,MAAM,CAACV,IAAI,CAACW,MAAL,CAAY,EAAZ,CAAD,CAAlB,EAAqC,OAAO,KAAP;AAErC,SAAO,IAAP;AACD,CAhBD;;AAkBAC,MAAM,CAACC,OAAP,GAAiBf,MAAjB","sourcesContent":["const { invalidListGenerator, sumElementsByMultipliers, sumToDV } = require('../lib/utils');\n/**\n * isCNPJ()\n * Calcula se um CNPJ é válido\n *\n * @doc\n * - CNPJ deve possuir 14 dígitos no formato 00.000.000/0000-00\n *\n * - Os caracteres 1 a 8 são números sequenciais definidos pela Receita Federal\n *\n * - Os caracteres 9 a 12 são a identificação das filiais da empresa.\n *\n * - Os caracteres 13 e 14 são os dígitos verificadores\n *\n * 1) Partes do número\n * _______________________________ _______________ _______\n * | Número | Filiais | DV |\n * | 1 1 . 2 2 2 . 3 3 3 / 0 0 0 1 - X Y |\n * |_______________________________|_______________|_______|\n *\n * 2) Cálculo do primeiro DV.\n *\n * - Soma-se o produto das algarismos 1 a 12 pelos números 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2\n *\n * 1 1 2 2 2 3 3 3 0 0 0 1\n * x x x x x x x x x x x x\n * 5 4 3 2 9 8 7 6 5 4 3 2\n * = 5 +4 +6 +4 +18 +24 +21 +18 +0 +0 +0 +2 = 102\n *\n * - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11\n * 102 / 11 tem resto 8. 11 - 3 = 8. DV1 é 8.\n * Obs.: Caso o cálculo de DV1 retorne 10, o resultado será 0.\n *\n * 3) Cálculo do segundo DV.\n *\n * - Soma-se o produto das algarismos 1 a 13 (incluindo o DV1 calculado) pelos\n * números 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2.\n *\n * 1 1 2 2 2 3 3 3 0 0 0 1 8\n * x x x x x x x x x x x x x\n * 6 5 4 3 2 9 8 7 6 5 4 3 2\n * = 6 +5 +8 +6 +4 +27 +24 +21 +0 +0 +0 +3 +16 = 120\n *\n * - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11\n * 120 / 11 tem resto 10. 11 - 10 = 1. DV2 é 1.\n * Obs.: Caso o cálculo de DV2 retorne 10, o resultado será 0.\n *\n * Fonte: http://www.macoratti.net/alg_cnpj.htm\n *\n * @param {String} value Título eleitoral\n * @returns {Boolean}\n */\nconst isCNPJ = (value = '') => {\n const cnpj = value.replace(/[^\\d]+/g, '');\n\n const blackList = invalidListGenerator(14);\n if (!cnpj || cnpj.length !== 14 || blackList.includes(cnpj)) return false;\n\n const sum1 = sumElementsByMultipliers(cnpj.substr(0, 12), '543298765432');\n const sum2 = sumElementsByMultipliers(cnpj.substr(0, 13), '6543298765432');\n\n const dv1 = sumToDV(sum1);\n const dv2 = sumToDV(sum2);\n\n if (dv1 !== Number(cnpj.charAt(12))) return false;\n if (dv2 !== Number(cnpj.charAt(13))) return false;\n\n return true;\n};\n\nmodule.exports = isCNPJ;\n"],"file":"cnpj.js"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _require = require('../lib/utils'),
|
|
4
|
+
invalidListGenerator = _require.invalidListGenerator,
|
|
5
|
+
sumElementsByMultipliers = _require.sumElementsByMultipliers,
|
|
6
|
+
sumToDV = _require.sumToDV;
|
|
7
|
+
/**
|
|
8
|
+
* isCPF()
|
|
9
|
+
* Calcula se um CPF é válido
|
|
10
|
+
*
|
|
11
|
+
* @doc
|
|
12
|
+
* CPF deve possuir 11 dígitos.
|
|
13
|
+
*
|
|
14
|
+
* - Os caracteres 1 a 8 são números sequenciais definidos pela Receita Federal
|
|
15
|
+
*
|
|
16
|
+
* - O caractere 9 refere-se à região fiscal emissora do documento
|
|
17
|
+
* 1 – DF, GO, MS, MT e TO
|
|
18
|
+
* 2 – AC, AM, AP, PA, RO e RR
|
|
19
|
+
* 3 – CE, MA e PI
|
|
20
|
+
* 4 – AL, PB, PE, RN
|
|
21
|
+
* 5 – BA e SE
|
|
22
|
+
* 6 – MG
|
|
23
|
+
* 7 – ES e RJ
|
|
24
|
+
* 8 – SP
|
|
25
|
+
* 9 – PR e SC
|
|
26
|
+
* 0 – RS
|
|
27
|
+
*
|
|
28
|
+
* - Os caracteres 10 e 11 são dígitos verificadores.
|
|
29
|
+
*
|
|
30
|
+
* 1) Partes do número
|
|
31
|
+
* ------------------------------------------------
|
|
32
|
+
* | Número | R | DV |
|
|
33
|
+
* 2 8 0 . 0 1 2 . 3 8 9 - 3 8
|
|
34
|
+
*
|
|
35
|
+
* 2) Cálculo do primeiro DV.
|
|
36
|
+
*
|
|
37
|
+
* - Soma-se o produto das algarismos 1 a 9 pelos números 10, 9, 8, 7, 6, 5, 4, 3, 2
|
|
38
|
+
*
|
|
39
|
+
* 2 8 0 0 1 2 3 8 9
|
|
40
|
+
* x x x x x x x x x
|
|
41
|
+
* 10 9 8 7 6 5 4 3 2
|
|
42
|
+
* = 20 +72 +0 +0 +6 +10 +12 +24 +18 = 162
|
|
43
|
+
*
|
|
44
|
+
* - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
|
|
45
|
+
* 162 / 11 tem resto 8. 11 - 8 = 3. DV1 é 3.
|
|
46
|
+
* Obs.: Caso o cálculo de DV1 retorne 10, o resultado será 0.
|
|
47
|
+
*
|
|
48
|
+
* 3) Cálculo do segundo DV.
|
|
49
|
+
*
|
|
50
|
+
* - Soma-se o produto das algarismos 1 a 10 pelos números 11, 10, 9, 8, 7, 6, 5, 4, 3, 2
|
|
51
|
+
*
|
|
52
|
+
* 2 8 0 0 1 2 3 8 9 3
|
|
53
|
+
* x x x x x x x x x x
|
|
54
|
+
* 11 10 9 8 7 6 5 4 3 2
|
|
55
|
+
* = 22 +80 +0 +0 +7 +12 +15 +32 +27 = 201
|
|
56
|
+
*
|
|
57
|
+
* - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
|
|
58
|
+
* 201 / 11 tem resto 3. 11 - 3 = 8. DV2 é 8.
|
|
59
|
+
* Obs.: Caso o cálculo de DV2 retorne 10, o resultado será 0.
|
|
60
|
+
*
|
|
61
|
+
* Fonte: http://clubes.obmep.org.br/blog/a-matematica-nos-documentos-cpf/
|
|
62
|
+
*
|
|
63
|
+
* @param {String} value Título eleitoral
|
|
64
|
+
* @returns {Boolean}
|
|
65
|
+
*/
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
var isCPF = function isCPF() {
|
|
69
|
+
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
70
|
+
var cpf = value.replace(/[^\d]+/g, '');
|
|
71
|
+
var blackList = invalidListGenerator(11);
|
|
72
|
+
if (!cpf || cpf.length !== 11 || blackList.includes(cpf)) return false;
|
|
73
|
+
var sum1 = sumElementsByMultipliers(cpf.substr(0, 9), [10, 9, 8, 7, 6, 5, 4, 3, 2]);
|
|
74
|
+
var sum2 = sumElementsByMultipliers(cpf.substr(0, 10), [11, 10, 9, 8, 7, 6, 5, 4, 3, 2]);
|
|
75
|
+
var dv1 = sumToDV(sum1);
|
|
76
|
+
var dv2 = sumToDV(sum2);
|
|
77
|
+
if (dv1 !== Number(cpf.charAt(9))) return false;
|
|
78
|
+
if (dv2 !== Number(cpf.charAt(10))) return false;
|
|
79
|
+
return true;
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
module.exports = isCPF;
|
|
83
|
+
//# sourceMappingURL=cpf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/documents/cpf.js"],"names":["require","invalidListGenerator","sumElementsByMultipliers","sumToDV","isCPF","value","cpf","replace","blackList","length","includes","sum1","substr","sum2","dv1","dv2","Number","charAt","module","exports"],"mappings":";;AAAA,eAAoEA,OAAO,CAAC,cAAD,CAA3E;AAAA,IAAQC,oBAAR,YAAQA,oBAAR;AAAA,IAA8BC,wBAA9B,YAA8BA,wBAA9B;AAAA,IAAwDC,OAAxD,YAAwDA,OAAxD;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMC,KAAK,GAAG,SAARA,KAAQ,GAAgB;AAAA,MAAfC,KAAe,uEAAP,EAAO;AAC5B,MAAMC,GAAG,GAAGD,KAAK,CAACE,OAAN,CAAc,SAAd,EAAyB,EAAzB,CAAZ;AAEA,MAAMC,SAAS,GAAGP,oBAAoB,CAAC,EAAD,CAAtC;AACA,MAAI,CAACK,GAAD,IAAQA,GAAG,CAACG,MAAJ,KAAe,EAAvB,IAA6BD,SAAS,CAACE,QAAV,CAAmBJ,GAAnB,CAAjC,EAA0D,OAAO,KAAP;AAE1D,MAAMK,IAAI,GAAGT,wBAAwB,CAACI,GAAG,CAACM,MAAJ,CAAW,CAAX,EAAc,CAAd,CAAD,EAAmB,CAAC,EAAD,EAAK,CAAL,EAAQ,CAAR,EAAW,CAAX,EAAc,CAAd,EAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B,CAAnB,CAArC;AACA,MAAMC,IAAI,GAAGX,wBAAwB,CAACI,GAAG,CAACM,MAAJ,CAAW,CAAX,EAAc,EAAd,CAAD,EAAoB,CAAC,EAAD,EAAK,EAAL,EAAS,CAAT,EAAY,CAAZ,EAAe,CAAf,EAAkB,CAAlB,EAAqB,CAArB,EAAwB,CAAxB,EAA2B,CAA3B,EAA8B,CAA9B,CAApB,CAArC;AAEA,MAAME,GAAG,GAAGX,OAAO,CAACQ,IAAD,CAAnB;AACA,MAAMI,GAAG,GAAGZ,OAAO,CAACU,IAAD,CAAnB;AAEA,MAAIC,GAAG,KAAKE,MAAM,CAACV,GAAG,CAACW,MAAJ,CAAW,CAAX,CAAD,CAAlB,EAAmC,OAAO,KAAP;AACnC,MAAIF,GAAG,KAAKC,MAAM,CAACV,GAAG,CAACW,MAAJ,CAAW,EAAX,CAAD,CAAlB,EAAoC,OAAO,KAAP;AAEpC,SAAO,IAAP;AACD,CAhBD;;AAkBAC,MAAM,CAACC,OAAP,GAAiBf,KAAjB","sourcesContent":["const { invalidListGenerator, sumElementsByMultipliers, sumToDV } = require('../lib/utils');\n\n/**\n * isCPF()\n * Calcula se um CPF é válido\n *\n * @doc\n * CPF deve possuir 11 dígitos.\n *\n * - Os caracteres 1 a 8 são números sequenciais definidos pela Receita Federal\n *\n * - O caractere 9 refere-se à região fiscal emissora do documento\n * 1 – DF, GO, MS, MT e TO\n * 2 – AC, AM, AP, PA, RO e RR\n * 3 – CE, MA e PI\n * 4 – AL, PB, PE, RN\n * 5 – BA e SE\n * 6 – MG\n * 7 – ES e RJ\n * 8 – SP\n * 9 – PR e SC\n * 0 – RS\n *\n * - Os caracteres 10 e 11 são dígitos verificadores.\n *\n * 1) Partes do número\n * ------------------------------------------------\n * | Número | R | DV |\n * 2 8 0 . 0 1 2 . 3 8 9 - 3 8\n *\n * 2) Cálculo do primeiro DV.\n *\n * - Soma-se o produto das algarismos 1 a 9 pelos números 10, 9, 8, 7, 6, 5, 4, 3, 2\n *\n * 2 8 0 0 1 2 3 8 9\n * x x x x x x x x x\n * 10 9 8 7 6 5 4 3 2\n * = 20 +72 +0 +0 +6 +10 +12 +24 +18 = 162\n *\n * - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11\n * 162 / 11 tem resto 8. 11 - 8 = 3. DV1 é 3.\n * Obs.: Caso o cálculo de DV1 retorne 10, o resultado será 0.\n *\n * 3) Cálculo do segundo DV.\n *\n * - Soma-se o produto das algarismos 1 a 10 pelos números 11, 10, 9, 8, 7, 6, 5, 4, 3, 2\n *\n * 2 8 0 0 1 2 3 8 9 3\n * x x x x x x x x x x\n * 11 10 9 8 7 6 5 4 3 2\n * = 22 +80 +0 +0 +7 +12 +15 +32 +27 = 201\n *\n * - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11\n * 201 / 11 tem resto 3. 11 - 3 = 8. DV2 é 8.\n * Obs.: Caso o cálculo de DV2 retorne 10, o resultado será 0.\n *\n * Fonte: http://clubes.obmep.org.br/blog/a-matematica-nos-documentos-cpf/\n *\n * @param {String} value Título eleitoral\n * @returns {Boolean}\n */\nconst isCPF = (value = '') => {\n const cpf = value.replace(/[^\\d]+/g, '');\n\n const blackList = invalidListGenerator(11);\n if (!cpf || cpf.length !== 11 || blackList.includes(cpf)) return false;\n\n const sum1 = sumElementsByMultipliers(cpf.substr(0, 9), [10, 9, 8, 7, 6, 5, 4, 3, 2]);\n const sum2 = sumElementsByMultipliers(cpf.substr(0, 10), [11, 10, 9, 8, 7, 6, 5, 4, 3, 2]);\n\n const dv1 = sumToDV(sum1);\n const dv2 = sumToDV(sum2);\n\n if (dv1 !== Number(cpf.charAt(9))) return false;\n if (dv2 !== Number(cpf.charAt(10))) return false;\n\n return true;\n};\n\nmodule.exports = isCPF;\n"],"file":"cpf.js"}
|
package/dist/documents/index.js
CHANGED
|
@@ -6,9 +6,18 @@ var isCNPJ = require('./cnpj');
|
|
|
6
6
|
|
|
7
7
|
var isTitulo = require('./titulo-eleitor');
|
|
8
8
|
|
|
9
|
+
var isPostalCode = require('./postal-code');
|
|
10
|
+
|
|
11
|
+
var isCNH = require('./cnh');
|
|
12
|
+
|
|
13
|
+
var isPIS = require('./pis-pasep');
|
|
14
|
+
|
|
9
15
|
module.exports = {
|
|
10
16
|
isCPF: isCPF,
|
|
11
17
|
isCNPJ: isCNPJ,
|
|
12
|
-
isTitulo: isTitulo
|
|
18
|
+
isTitulo: isTitulo,
|
|
19
|
+
isPostalCode: isPostalCode,
|
|
20
|
+
isCNH: isCNH,
|
|
21
|
+
isPIS: isPIS
|
|
13
22
|
};
|
|
14
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/documents/index.js"],"names":["isCPF","require","isCNPJ","isTitulo","isPostalCode","isCNH","isPIS","module","exports"],"mappings":";;AAAA,IAAMA,KAAK,GAAGC,OAAO,CAAC,OAAD,CAArB;;AACA,IAAMC,MAAM,GAAGD,OAAO,CAAC,QAAD,CAAtB;;AACA,IAAME,QAAQ,GAAGF,OAAO,CAAC,kBAAD,CAAxB;;AACA,IAAMG,YAAY,GAAGH,OAAO,CAAC,eAAD,CAA5B;;AACA,IAAMI,KAAK,GAAGJ,OAAO,CAAC,OAAD,CAArB;;AACA,IAAMK,KAAK,GAAGL,OAAO,CAAC,aAAD,CAArB;;AAEAM,MAAM,CAACC,OAAP,GAAiB;AACfR,EAAAA,KAAK,EAALA,KADe;AAEfE,EAAAA,MAAM,EAANA,MAFe;AAGfC,EAAAA,QAAQ,EAARA,QAHe;AAIfC,EAAAA,YAAY,EAAZA,YAJe;AAKfC,EAAAA,KAAK,EAALA,KALe;AAMfC,EAAAA,KAAK,EAALA;AANe,CAAjB","sourcesContent":["const isCPF = require('./cpf');\nconst isCNPJ = require('./cnpj');\nconst isTitulo = require('./titulo-eleitor');\nconst isPostalCode = require('./postal-code');\nconst isCNH = require('./cnh');\nconst isPIS = require('./pis-pasep');\n\nmodule.exports = {\n isCPF,\n isCNPJ,\n isTitulo,\n isPostalCode,\n isCNH,\n isPIS,\n};\n"],"file":"index.js"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _require = require('../../dist/lib/utils'),
|
|
4
|
+
sumElementsByMultipliers = _require.sumElementsByMultipliers,
|
|
5
|
+
sumToDV = _require.sumToDV; // const { sumElementsByMultipliers, sumToDV } = require('../lib/utils');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* isPIS()
|
|
9
|
+
* Calcula se um código de PIS/PASEP/NIS/NIT no formato 268.27649.96-0 é válido. Não
|
|
10
|
+
* valida o formato, portanto, 26827649960 é equivalente a 268.27649.96-0 para efeitos
|
|
11
|
+
* desta validação.
|
|
12
|
+
*
|
|
13
|
+
* @doc
|
|
14
|
+
* - O número de PIS deve possuir 11 caracteres
|
|
15
|
+
*
|
|
16
|
+
* - Os caracteres de 1 a 10 são a numeração documento
|
|
17
|
+
*
|
|
18
|
+
* - O caractere 11 é o dígito verificador.
|
|
19
|
+
*
|
|
20
|
+
* 1) Partes do número
|
|
21
|
+
* _______________________________________________
|
|
22
|
+
* | Número | D V |
|
|
23
|
+
* | 2 6 8 . 2 7 6 4 9 . 9 6 - 0 |
|
|
24
|
+
* |_________________________________________|_____|
|
|
25
|
+
*
|
|
26
|
+
* 2) Cálculo do DV.
|
|
27
|
+
*
|
|
28
|
+
* - Soma-se o produto das algarismos 3 a 10 pelos números 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
|
|
29
|
+
*
|
|
30
|
+
* 2 6 8 2 7 6 4 9 9 6
|
|
31
|
+
* x x x x x x x x x x
|
|
32
|
+
* 3 2 9 8 7 6 5 4 3 2
|
|
33
|
+
* = 6 +12 +72 +16 +49 +12 +20 +36 +27 +12 = 234
|
|
34
|
+
*
|
|
35
|
+
* - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
|
|
36
|
+
* 234 / 11 tem resto 3. 11 - 3 = 8. DV1 é 8.
|
|
37
|
+
* Obs.: Caso o cálculo de DV1 retorne 0, o resultado será 5.
|
|
38
|
+
* Caso retorne 1, o resto será 0
|
|
39
|
+
*
|
|
40
|
+
*
|
|
41
|
+
*
|
|
42
|
+
*
|
|
43
|
+
* Fonte: http://www.macoratti.net/alg_pis.htm
|
|
44
|
+
*
|
|
45
|
+
* @param {String} value Objeto postal no formato 268.27649.96-0
|
|
46
|
+
* @returns {Boolean}
|
|
47
|
+
*/
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
var isPIS = function isPIS() {
|
|
51
|
+
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
52
|
+
var pis = value.replace(/[^\d]+/g, '');
|
|
53
|
+
if (!pis || pis.length !== 11) return false;
|
|
54
|
+
var sum = sumElementsByMultipliers(pis.substr(0, 10), [3, 2, 9, 8, 7, 6, 5, 4, 3, 2]);
|
|
55
|
+
var dv = sumToDV(sum); // console.log({
|
|
56
|
+
// pis,
|
|
57
|
+
// sum,
|
|
58
|
+
// dvOriginal: pis.charAt(10),
|
|
59
|
+
// dvCalculado: dv,
|
|
60
|
+
// });
|
|
61
|
+
|
|
62
|
+
return dv === Number(pis.charAt(10));
|
|
63
|
+
}; // console.log(isPIS());
|
|
64
|
+
// console.log(isPIS('11111111111'));
|
|
65
|
+
// console.log(isPIS('26827649960'));
|
|
66
|
+
// console.log(isPIS('712.82677.38-0'));
|
|
67
|
+
// console.log(isPIS('237.95126.95-5'));
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
module.exports = isPIS;
|
|
71
|
+
//# sourceMappingURL=pis-pasep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/documents/pis-pasep.js"],"names":["require","sumElementsByMultipliers","sumToDV","isPIS","value","pis","replace","length","sum","substr","dv","Number","charAt","module","exports"],"mappings":";;AAAA,eAA8CA,OAAO,CAAC,sBAAD,CAArD;AAAA,IAAQC,wBAAR,YAAQA,wBAAR;AAAA,IAAkCC,OAAlC,YAAkCA,OAAlC,C,CACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMC,KAAK,GAAG,SAARA,KAAQ,GAAgB;AAAA,MAAfC,KAAe,uEAAP,EAAO;AAC5B,MAAMC,GAAG,GAAGD,KAAK,CAACE,OAAN,CAAc,SAAd,EAAyB,EAAzB,CAAZ;AAEA,MAAI,CAACD,GAAD,IAAQA,GAAG,CAACE,MAAJ,KAAe,EAA3B,EAA+B,OAAO,KAAP;AAE/B,MAAMC,GAAG,GAAGP,wBAAwB,CAACI,GAAG,CAACI,MAAJ,CAAW,CAAX,EAAc,EAAd,CAAD,EAAoB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B,CAApB,CAApC;AACA,MAAMC,EAAE,GAAGR,OAAO,CAACM,GAAD,CAAlB,CAN4B,CAQ5B;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAOE,EAAE,KAAKC,MAAM,CAACN,GAAG,CAACO,MAAJ,CAAW,EAAX,CAAD,CAApB;AACD,CAhBD,C,CAkBA;AACA;AACA;AACA;AACA;;;AAEAC,MAAM,CAACC,OAAP,GAAiBX,KAAjB","sourcesContent":["const { sumElementsByMultipliers, sumToDV } = require('../../dist/lib/utils');\n// const { sumElementsByMultipliers, sumToDV } = require('../lib/utils');\n\n/**\n * isPIS()\n * Calcula se um código de PIS/PASEP/NIS/NIT no formato 268.27649.96-0 é válido. Não\n * valida o formato, portanto, 26827649960 é equivalente a 268.27649.96-0 para efeitos\n * desta validação.\n *\n * @doc\n * - O número de PIS deve possuir 11 caracteres\n *\n * - Os caracteres de 1 a 10 são a numeração documento\n *\n * - O caractere 11 é o dígito verificador.\n *\n * 1) Partes do número\n * _______________________________________________\n * | Número | D V |\n * | 2 6 8 . 2 7 6 4 9 . 9 6 - 0 |\n * |_________________________________________|_____|\n *\n * 2) Cálculo do DV.\n *\n * - Soma-se o produto das algarismos 3 a 10 pelos números 3, 2, 9, 8, 7, 6, 5, 4, 3, 2\n *\n * 2 6 8 2 7 6 4 9 9 6\n * x x x x x x x x x x\n * 3 2 9 8 7 6 5 4 3 2\n * = 6 +12 +72 +16 +49 +12 +20 +36 +27 +12 = 234\n *\n * - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11\n * 234 / 11 tem resto 3. 11 - 3 = 8. DV1 é 8.\n * Obs.: Caso o cálculo de DV1 retorne 0, o resultado será 5.\n * Caso retorne 1, o resto será 0\n *\n *\n *\n *\n * Fonte: http://www.macoratti.net/alg_pis.htm\n *\n * @param {String} value Objeto postal no formato 268.27649.96-0\n * @returns {Boolean}\n */\nconst isPIS = (value = '') => {\n const pis = value.replace(/[^\\d]+/g, '');\n\n if (!pis || pis.length !== 11) return false;\n\n const sum = sumElementsByMultipliers(pis.substr(0, 10), [3, 2, 9, 8, 7, 6, 5, 4, 3, 2]);\n const dv = sumToDV(sum);\n\n // console.log({\n // pis,\n // sum,\n // dvOriginal: pis.charAt(10),\n // dvCalculado: dv,\n // });\n\n return dv === Number(pis.charAt(10));\n};\n\n// console.log(isPIS());\n// console.log(isPIS('11111111111'));\n// console.log(isPIS('26827649960'));\n// console.log(isPIS('712.82677.38-0'));\n// console.log(isPIS('237.95126.95-5'));\n\nmodule.exports = isPIS;\n"],"file":"pis-pasep.js"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// const { sumElementsByMultipliers } = require('../../dist/lib/utils');
|
|
4
|
+
var _require = require('../lib/utils'),
|
|
5
|
+
sumElementsByMultipliers = _require.sumElementsByMultipliers;
|
|
6
|
+
/**
|
|
7
|
+
* isPostalCode()
|
|
8
|
+
* Calcula se um código de rastreamento postal no formato JT194690698BR é válido.
|
|
9
|
+
*
|
|
10
|
+
* @doc
|
|
11
|
+
* - O número de registro postal deve possuir 13 caracters no formato JT194690698BR.
|
|
12
|
+
*
|
|
13
|
+
* - Os caracteres 1 e 2 informam o tipo do objeto. Ex.: SX é Sedex, RC é carta registrada etc.
|
|
14
|
+
*
|
|
15
|
+
* - Os caracteres de 3 a 10 são a numeração sequencial do tipo do objeto.
|
|
16
|
+
*
|
|
17
|
+
* - O caractere 11 é o dígito verificador.
|
|
18
|
+
*
|
|
19
|
+
* - Os caracteres 12 e 13 representa o código do País de onde a postagem partiu.
|
|
20
|
+
*
|
|
21
|
+
* 1) Partes do número
|
|
22
|
+
* ______ ___________________________ ______ _______
|
|
23
|
+
* | Tipo | Número | DV | País |
|
|
24
|
+
* | J T 1 9 4 6 9 0 6 9 8 B R |
|
|
25
|
+
* |______|___________________________|______|_______|
|
|
26
|
+
*
|
|
27
|
+
* 2) Cálculo do DV.
|
|
28
|
+
*
|
|
29
|
+
* - Soma-se o produto das algarismos 3 a 10 pelos números 8, 6, 4, 2, 3, 5, 9, 7
|
|
30
|
+
*
|
|
31
|
+
* 1 9 4 6 9 0 6 9
|
|
32
|
+
* x x x x x x x x
|
|
33
|
+
* 8 6 4 2 3 5 9 7
|
|
34
|
+
* = 8 +54 +16 +12 +18 +0 +54 +63 = 234
|
|
35
|
+
*
|
|
36
|
+
* - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
|
|
37
|
+
* 234 / 11 tem resto 3. 11 - 3 = 8. DV1 é 8.
|
|
38
|
+
* Obs.: Caso o cálculo de DV1 retorne 0, o resultado será 5.
|
|
39
|
+
* Caso retorne 1, o resto será 0
|
|
40
|
+
*
|
|
41
|
+
*
|
|
42
|
+
*
|
|
43
|
+
*
|
|
44
|
+
* Fonte:
|
|
45
|
+
*
|
|
46
|
+
* @param {String} value Objeto postal no formato JT194690698BR
|
|
47
|
+
* @returns {Boolean}
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
var isPostalCode = function isPostalCode() {
|
|
52
|
+
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
53
|
+
var match = value.match(/^[a-z]{2}([\d]{9})[a-z]{2}$/ig, '');
|
|
54
|
+
if (!match) return false;
|
|
55
|
+
var postalCode = match[0].replace(/[^\d]+/g, '');
|
|
56
|
+
var sum = sumElementsByMultipliers(postalCode.substr(0, 8), [8, 6, 4, 2, 3, 5, 9, 7]);
|
|
57
|
+
var rest = sum % 11;
|
|
58
|
+
var specificities = {
|
|
59
|
+
0: {
|
|
60
|
+
dv: 5
|
|
61
|
+
},
|
|
62
|
+
1: {
|
|
63
|
+
dv: 0
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
var dv = specificities[rest] ? specificities[rest].dv : 11 - rest;
|
|
67
|
+
if (dv !== Number(postalCode.charAt(8))) return false;
|
|
68
|
+
return true;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
module.exports = isPostalCode;
|
|
72
|
+
//# sourceMappingURL=postal-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/documents/postal-code.js"],"names":["require","sumElementsByMultipliers","isPostalCode","value","match","postalCode","replace","sum","substr","rest","specificities","dv","Number","charAt","module","exports"],"mappings":";;AAAA;AACA,eAAqCA,OAAO,CAAC,cAAD,CAA5C;AAAA,IAAQC,wBAAR,YAAQA,wBAAR;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMC,YAAY,GAAG,SAAfA,YAAe,GAAgB;AAAA,MAAfC,KAAe,uEAAP,EAAO;AACnC,MAAMC,KAAK,GAAGD,KAAK,CAACC,KAAN,CAAY,+BAAZ,EAA6C,EAA7C,CAAd;AACA,MAAI,CAACA,KAAL,EAAY,OAAO,KAAP;AAEZ,MAAMC,UAAU,GAAGD,KAAK,CAAC,CAAD,CAAL,CAASE,OAAT,CAAiB,SAAjB,EAA4B,EAA5B,CAAnB;AAEA,MAAMC,GAAG,GAAGN,wBAAwB,CAACI,UAAU,CAACG,MAAX,CAAkB,CAAlB,EAAqB,CAArB,CAAD,EAA0B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA1B,CAApC;AAEA,MAAMC,IAAI,GAAGF,GAAG,GAAG,EAAnB;AACA,MAAMG,aAAa,GAAG;AAAE,OAAG;AAAEC,MAAAA,EAAE,EAAE;AAAN,KAAL;AAAgB,OAAG;AAAEA,MAAAA,EAAE,EAAE;AAAN;AAAnB,GAAtB;AACA,MAAMA,EAAE,GAAGD,aAAa,CAACD,IAAD,CAAb,GAAsBC,aAAa,CAACD,IAAD,CAAb,CAAoBE,EAA1C,GAA+C,KAAKF,IAA/D;AAEA,MAAIE,EAAE,KAAKC,MAAM,CAACP,UAAU,CAACQ,MAAX,CAAkB,CAAlB,CAAD,CAAjB,EAAyC,OAAO,KAAP;AAEzC,SAAO,IAAP;AACD,CAfD;;AAiBAC,MAAM,CAACC,OAAP,GAAiBb,YAAjB","sourcesContent":["// const { sumElementsByMultipliers } = require('../../dist/lib/utils');\nconst { sumElementsByMultipliers } = require('../lib/utils');\n\n/**\n * isPostalCode()\n * Calcula se um código de rastreamento postal no formato JT194690698BR é válido.\n *\n * @doc\n * - O número de registro postal deve possuir 13 caracters no formato JT194690698BR.\n *\n * - Os caracteres 1 e 2 informam o tipo do objeto. Ex.: SX é Sedex, RC é carta registrada etc.\n *\n * - Os caracteres de 3 a 10 são a numeração sequencial do tipo do objeto.\n *\n * - O caractere 11 é o dígito verificador.\n *\n * - Os caracteres 12 e 13 representa o código do País de onde a postagem partiu.\n *\n * 1) Partes do número\n * ______ ___________________________ ______ _______\n * | Tipo | Número | DV | País |\n * | J T 1 9 4 6 9 0 6 9 8 B R |\n * |______|___________________________|______|_______|\n *\n * 2) Cálculo do DV.\n *\n * - Soma-se o produto das algarismos 3 a 10 pelos números 8, 6, 4, 2, 3, 5, 9, 7\n *\n * 1 9 4 6 9 0 6 9\n * x x x x x x x x\n * 8 6 4 2 3 5 9 7\n * = 8 +54 +16 +12 +18 +0 +54 +63 = 234\n *\n * - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11\n * 234 / 11 tem resto 3. 11 - 3 = 8. DV1 é 8.\n * Obs.: Caso o cálculo de DV1 retorne 0, o resultado será 5.\n * Caso retorne 1, o resto será 0\n *\n *\n *\n *\n * Fonte:\n *\n * @param {String} value Objeto postal no formato JT194690698BR\n * @returns {Boolean}\n */\nconst isPostalCode = (value = '') => {\n const match = value.match(/^[a-z]{2}([\\d]{9})[a-z]{2}$/ig, '');\n if (!match) return false;\n\n const postalCode = match[0].replace(/[^\\d]+/g, '');\n\n const sum = sumElementsByMultipliers(postalCode.substr(0, 8), [8, 6, 4, 2, 3, 5, 9, 7]);\n\n const rest = sum % 11;\n const specificities = { 0: { dv: 5 }, 1: { dv: 0 } };\n const dv = specificities[rest] ? specificities[rest].dv : 11 - rest;\n\n if (dv !== Number(postalCode.charAt(8))) return false;\n\n return true;\n};\n\nmodule.exports = isPostalCode;\n"],"file":"postal-code.js"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _require = require('../lib/utils'),
|
|
4
|
+
sumElementsByMultipliers = _require.sumElementsByMultipliers;
|
|
5
|
+
/**
|
|
6
|
+
* isTitulo()
|
|
7
|
+
* Calcula se um título eleitoral é válido
|
|
8
|
+
*
|
|
9
|
+
* @doc
|
|
10
|
+
* Título de eleitor deve possuir 12 dígitos.
|
|
11
|
+
*
|
|
12
|
+
* - Os caracteres 1 a 8 são números sequenciais.
|
|
13
|
+
*
|
|
14
|
+
* - Os caracteres 9 e 10 representam os estados da federação onde o título
|
|
15
|
+
* foi emitido (01 = SP, 02 = MG, 03 = RJ, 04 = RS, 05 = BA, 06 = PR, 07 = CE, 08 = PE,
|
|
16
|
+
* 09 = SC, 10 = GO, 11 = MA12 = PB, 13 = PA, 14 = ES, 15 = PI, 16 = RN, 17 = AL,
|
|
17
|
+
* 18 = MT, 19 = MS, 20 = DF, 21 = SE, 22 = AM, 23 = RO, 24 = AC, 25 = AP, 26 = RR,
|
|
18
|
+
* 27 = TO, 28 = Exterior(ZZ).
|
|
19
|
+
*
|
|
20
|
+
* - Os caracteres 11 e 12 são dígitos verificadores.
|
|
21
|
+
*
|
|
22
|
+
* 1) Partes do número
|
|
23
|
+
* ------------------------------------------------
|
|
24
|
+
* | Número Sequencial | UF | DV |
|
|
25
|
+
* 1 0 2 3 8 5 0 1 0 6 7 1
|
|
26
|
+
*
|
|
27
|
+
* 2) Cálculo do primeiro DV.
|
|
28
|
+
*
|
|
29
|
+
* - Soma-se o produto das algarismos 1 a 8 pelos números 2, 3, 4, 5, 6, 7, 8 e 9.
|
|
30
|
+
*
|
|
31
|
+
* 1 0 2 3 8 5 0 1
|
|
32
|
+
* x x x x x x x x
|
|
33
|
+
* 2 3 4 5 6 7 8 9
|
|
34
|
+
* = 2 + 0 + 8 +15 +48 +35 + 0 + 9 = 117
|
|
35
|
+
*
|
|
36
|
+
* - O somatório encontrado é dividido por 11. O DV1 é o resto da divisão. Se o
|
|
37
|
+
* resto for 10, o DV1 é 0.
|
|
38
|
+
*
|
|
39
|
+
* 2.1) 117 / 11 tem resto igual a 7.
|
|
40
|
+
*
|
|
41
|
+
* 3) Cálculo do segundo DV
|
|
42
|
+
*
|
|
43
|
+
* - Soma-se o produto dos algarismos 9 a 11 (relativos aos 2 dígitos da UF e o novo
|
|
44
|
+
* DV1 que acabou de ser calculado) e os multiplicam pelos números 7, 8 e 9. Se o
|
|
45
|
+
* resto for 10, DV2 será 0.
|
|
46
|
+
* 0 6 7
|
|
47
|
+
* x x x
|
|
48
|
+
* 7 8 9
|
|
49
|
+
* = 0 +48 +63 = 111
|
|
50
|
+
*
|
|
51
|
+
* 3.1) 111 / 11 tem resto igual a 1.
|
|
52
|
+
*
|
|
53
|
+
* Fonte: http://clubes.obmep.org.br/blog/a-matematica-nos-documentos-titulo-de-eleitor/
|
|
54
|
+
*
|
|
55
|
+
* @param {String} value Título eleitoral
|
|
56
|
+
* @returns {Boolean}
|
|
57
|
+
*/
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
var isTitulo = function isTitulo() {
|
|
61
|
+
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
62
|
+
var titulo = value.replace(/[^\d]+/g, '');
|
|
63
|
+
if (!titulo || titulo.length !== 12) return false;
|
|
64
|
+
var sum1 = sumElementsByMultipliers(titulo.substr(0, 8), [2, 3, 4, 5, 6, 7, 8, 9]);
|
|
65
|
+
var sum2 = sumElementsByMultipliers(titulo.substr(8, 3), [7, 8, 9]);
|
|
66
|
+
var dv1 = sum1 % 11 >= 10 ? 0 : sum1 % 11;
|
|
67
|
+
var dv2 = sum2 % 11 >= 10 ? 0 : sum2 % 11;
|
|
68
|
+
if (dv1 !== Number(titulo.charAt(10))) return false;
|
|
69
|
+
if (dv2 !== Number(titulo.charAt(11))) return false;
|
|
70
|
+
return true;
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
module.exports = isTitulo;
|
|
74
|
+
//# sourceMappingURL=titulo-eleitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/documents/titulo-eleitor.js"],"names":["require","sumElementsByMultipliers","isTitulo","value","titulo","replace","length","sum1","substr","sum2","dv1","dv2","Number","charAt","module","exports"],"mappings":";;AAAA,eAAqCA,OAAO,CAAC,cAAD,CAA5C;AAAA,IAAQC,wBAAR,YAAQA,wBAAR;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,GAAgB;AAAA,MAAfC,KAAe,uEAAP,EAAO;AAC/B,MAAMC,MAAM,GAAGD,KAAK,CAACE,OAAN,CAAc,SAAd,EAAyB,EAAzB,CAAf;AAEA,MAAI,CAACD,MAAD,IAAWA,MAAM,CAACE,MAAP,KAAkB,EAAjC,EAAqC,OAAO,KAAP;AAErC,MAAMC,IAAI,GAAGN,wBAAwB,CAACG,MAAM,CAACI,MAAP,CAAc,CAAd,EAAiB,CAAjB,CAAD,EAAsB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtB,CAArC;AACA,MAAMC,IAAI,GAAGR,wBAAwB,CAACG,MAAM,CAACI,MAAP,CAAc,CAAd,EAAiB,CAAjB,CAAD,EAAsB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAtB,CAArC;AAEA,MAAME,GAAG,GAAIH,IAAI,GAAG,EAAR,IAAe,EAAf,GAAoB,CAApB,GAAwBA,IAAI,GAAG,EAA3C;AACA,MAAMI,GAAG,GAAIF,IAAI,GAAG,EAAR,IAAe,EAAf,GAAoB,CAApB,GAAwBA,IAAI,GAAG,EAA3C;AAEA,MAAIC,GAAG,KAAKE,MAAM,CAACR,MAAM,CAACS,MAAP,CAAc,EAAd,CAAD,CAAlB,EAAuC,OAAO,KAAP;AACvC,MAAIF,GAAG,KAAKC,MAAM,CAACR,MAAM,CAACS,MAAP,CAAc,EAAd,CAAD,CAAlB,EAAuC,OAAO,KAAP;AAEvC,SAAO,IAAP;AACD,CAfD;;AAiBAC,MAAM,CAACC,OAAP,GAAiBb,QAAjB","sourcesContent":["const { sumElementsByMultipliers } = require('../lib/utils');\n\n/**\n * isTitulo()\n * Calcula se um título eleitoral é válido\n *\n * @doc\n * Título de eleitor deve possuir 12 dígitos.\n *\n * - Os caracteres 1 a 8 são números sequenciais.\n *\n * - Os caracteres 9 e 10 representam os estados da federação onde o título\n * foi emitido (01 = SP, 02 = MG, 03 = RJ, 04 = RS, 05 = BA, 06 = PR, 07 = CE, 08 = PE,\n * 09 = SC, 10 = GO, 11 = MA12 = PB, 13 = PA, 14 = ES, 15 = PI, 16 = RN, 17 = AL,\n * 18 = MT, 19 = MS, 20 = DF, 21 = SE, 22 = AM, 23 = RO, 24 = AC, 25 = AP, 26 = RR,\n * 27 = TO, 28 = Exterior(ZZ).\n *\n * - Os caracteres 11 e 12 são dígitos verificadores.\n *\n * 1) Partes do número\n * ------------------------------------------------\n * | Número Sequencial | UF | DV |\n * 1 0 2 3 8 5 0 1 0 6 7 1\n *\n * 2) Cálculo do primeiro DV.\n *\n * - Soma-se o produto das algarismos 1 a 8 pelos números 2, 3, 4, 5, 6, 7, 8 e 9.\n *\n * 1 0 2 3 8 5 0 1\n * x x x x x x x x\n * 2 3 4 5 6 7 8 9\n * = 2 + 0 + 8 +15 +48 +35 + 0 + 9 = 117\n *\n * - O somatório encontrado é dividido por 11. O DV1 é o resto da divisão. Se o\n * resto for 10, o DV1 é 0.\n *\n * 2.1) 117 / 11 tem resto igual a 7.\n *\n * 3) Cálculo do segundo DV\n *\n * - Soma-se o produto dos algarismos 9 a 11 (relativos aos 2 dígitos da UF e o novo\n * DV1 que acabou de ser calculado) e os multiplicam pelos números 7, 8 e 9. Se o\n * resto for 10, DV2 será 0.\n * 0 6 7\n * x x x\n * 7 8 9\n * = 0 +48 +63 = 111\n *\n * 3.1) 111 / 11 tem resto igual a 1.\n *\n * Fonte: http://clubes.obmep.org.br/blog/a-matematica-nos-documentos-titulo-de-eleitor/\n *\n * @param {String} value Título eleitoral\n * @returns {Boolean}\n */\nconst isTitulo = (value = '') => {\n const titulo = value.replace(/[^\\d]+/g, '');\n\n if (!titulo || titulo.length !== 12) return false;\n\n const sum1 = sumElementsByMultipliers(titulo.substr(0, 8), [2, 3, 4, 5, 6, 7, 8, 9]);\n const sum2 = sumElementsByMultipliers(titulo.substr(8, 3), [7, 8, 9]);\n\n const dv1 = (sum1 % 11) >= 10 ? 0 : sum1 % 11;\n const dv2 = (sum2 % 11) >= 10 ? 0 : sum2 % 11;\n\n if (dv1 !== Number(titulo.charAt(10))) return false;\n if (dv2 !== Number(titulo.charAt(11))) return false;\n\n return true;\n};\n\nmodule.exports = isTitulo;\n"],"file":"titulo-eleitor.js"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.sumToDV = sumToDV;
|
|
9
|
+
exports.invalidListGenerator = invalidListGenerator;
|
|
10
|
+
exports.sumElementsByMultipliers = sumElementsByMultipliers;
|
|
11
|
+
|
|
12
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Calcula o DV verificador a partir das regras do MOD11:
|
|
16
|
+
* O valor da soma é dividido por 11. O resultado é o resto da divisão. Caso o resto seja
|
|
17
|
+
* menor que 2, ou seja, o valor da divisão seja 10 ou 11, o resultado é 0.
|
|
18
|
+
*
|
|
19
|
+
* @param {Integer} sum Soma
|
|
20
|
+
*/
|
|
21
|
+
function sumToDV(sum) {
|
|
22
|
+
return sum % 11 < 2 ? 0 : 11 - sum % 11;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Cria uma lista de valores repetidos no tamanho do documento para eliminar
|
|
26
|
+
* valores que já conhecemos como inválidos
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* invalidListGenerator(10, 11)
|
|
30
|
+
* //-> [00000000000, 11111111111, ....., 99999999999]
|
|
31
|
+
*
|
|
32
|
+
* @param {Integer} length Número de itens do array
|
|
33
|
+
* @param {Integer} size Tamanho da string gerada
|
|
34
|
+
* @returns {Array} Lista de valores
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
function invalidListGenerator(size) {
|
|
39
|
+
return (0, _toConsumableArray2.default)(Array(10).keys()).map(function (f) {
|
|
40
|
+
return String(f).repeat(size);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Soma os elementos de uma string com os elementos de outra, ou de um array
|
|
45
|
+
* @example
|
|
46
|
+
* sumElementsByMultipliers('123', '987') //-> 46
|
|
47
|
+
* sumElementsByMultipliers('123', [9, 8, 7]) //-> 46
|
|
48
|
+
*
|
|
49
|
+
* @param {String} value
|
|
50
|
+
* @param {String|Array} multiplier
|
|
51
|
+
* @returns {Integer} Somatório
|
|
52
|
+
*/
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
function sumElementsByMultipliers(value, multiplier) {
|
|
56
|
+
return (Array.isArray(multiplier) ? multiplier : multiplier.split('')).reduce(function (accu, curr, i) {
|
|
57
|
+
return accu + curr * Number(value.charAt(i));
|
|
58
|
+
}, 0);
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/utils.js"],"names":["sumToDV","sum","invalidListGenerator","size","Array","keys","map","f","String","repeat","sumElementsByMultipliers","value","multiplier","isArray","split","reduce","accu","curr","i","Number","charAt"],"mappings":";;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,OAAT,CAAiBC,GAAjB,EAAsB;AAC3B,SAAOA,GAAG,GAAG,EAAN,GAAW,CAAX,GAAe,CAAf,GAAmB,KAAMA,GAAG,GAAG,EAAtC;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASC,oBAAT,CAA8BC,IAA9B,EAAoC;AACzC,SAAO,iCAAIC,KAAK,CAAC,EAAD,CAAL,CAAUC,IAAV,EAAJ,EAAsBC,GAAtB,CAA0B,UAACC,CAAD;AAAA,WAAOC,MAAM,CAACD,CAAD,CAAN,CAAUE,MAAV,CAAiBN,IAAjB,CAAP;AAAA,GAA1B,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASO,wBAAT,CAAkCC,KAAlC,EAAyCC,UAAzC,EAAqD;AAC1D,SAAO,CAACR,KAAK,CAACS,OAAN,CAAcD,UAAd,IAA4BA,UAA5B,GAAyCA,UAAU,CAACE,KAAX,CAAiB,EAAjB,CAA1C,EACJC,MADI,CACG,UAACC,IAAD,EAAOC,IAAP,EAAaC,CAAb;AAAA,WAAmBF,IAAI,GAAIC,IAAI,GAAGE,MAAM,CAACR,KAAK,CAACS,MAAN,CAAaF,CAAb,CAAD,CAAxC;AAAA,GADH,EAC+D,CAD/D,CAAP;AAED","sourcesContent":["/**\n * Calcula o DV verificador a partir das regras do MOD11:\n * O valor da soma é dividido por 11. O resultado é o resto da divisão. Caso o resto seja\n * menor que 2, ou seja, o valor da divisão seja 10 ou 11, o resultado é 0.\n *\n * @param {Integer} sum Soma\n */\nexport function sumToDV(sum) {\n return sum % 11 < 2 ? 0 : 11 - (sum % 11);\n}\n\n/**\n * Cria uma lista de valores repetidos no tamanho do documento para eliminar\n * valores que já conhecemos como inválidos\n *\n * @example\n * invalidListGenerator(10, 11)\n * //-> [00000000000, 11111111111, ....., 99999999999]\n *\n * @param {Integer} length Número de itens do array\n * @param {Integer} size Tamanho da string gerada\n * @returns {Array} Lista de valores\n */\nexport function invalidListGenerator(size) {\n return [...Array(10).keys()].map((f) => String(f).repeat(size));\n}\n\n/**\n * Soma os elementos de uma string com os elementos de outra, ou de um array\n * @example\n * sumElementsByMultipliers('123', '987') //-> 46\n * sumElementsByMultipliers('123', [9, 8, 7]) //-> 46\n *\n * @param {String} value\n * @param {String|Array} multiplier\n * @returns {Integer} Somatório\n */\nexport function sumElementsByMultipliers(value, multiplier) {\n return (Array.isArray(multiplier) ? multiplier : multiplier.split(''))\n .reduce((accu, curr, i) => accu + (curr * Number(value.charAt(i))), 0);\n}\n"],"file":"utils.js"}
|
package/docs.md
ADDED
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "validation-br",
|
|
3
3
|
"description": "Brazilian personal documents validation - cpf, cnpj, titulo, pis/pasep, cnh",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.8.3",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "yarn build && cls && node tests | tap-spec",
|
|
7
7
|
"build": "babel src --source-maps -d dist",
|
|
@@ -33,14 +33,14 @@
|
|
|
33
33
|
"main": "index.js",
|
|
34
34
|
"author": "Cláudio Medeiros",
|
|
35
35
|
"repository": {
|
|
36
|
-
"url": "https://github.com/klawdyo/
|
|
36
|
+
"url": "https://github.com/klawdyo/validation-br"
|
|
37
37
|
},
|
|
38
38
|
"bugs": {
|
|
39
|
-
"url": "https://github.com/klawdyo/
|
|
39
|
+
"url": "https://github.com/klawdyo/validation-br/issues"
|
|
40
40
|
},
|
|
41
|
-
"homepage": "https://github.com/klawdyo/
|
|
41
|
+
"homepage": "https://github.com/klawdyo/validation-br#readme",
|
|
42
42
|
"keywords": [
|
|
43
|
-
"
|
|
43
|
+
"validation-br",
|
|
44
44
|
"brazilian",
|
|
45
45
|
"validation",
|
|
46
46
|
"personal documents",
|
package/readme.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# validation-br
|
|
2
2
|
|
|
3
|
-
Biblioteca de validação de documentos pessoais do Brasil com suporte a CPF, CNPJ, Título Eleitoral, PIS/PASEP, CNH,
|
|
3
|
+
Biblioteca de validação de documentos pessoais do Brasil com suporte a CPF, CNPJ, Título Eleitoral, PIS/PASEP, CNH, e Objetos registrados de rastreamento dos Correios.
|
|
4
4
|
|
|
5
5
|
## Instalação
|
|
6
6
|
|
|
@@ -27,18 +27,18 @@ import { isCPF, isCNPJ } from ('validation-br');
|
|
|
27
27
|
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
##
|
|
30
|
+
## Tabela de Conteúdo
|
|
31
31
|
|
|
32
|
-
- [isCPF](#
|
|
33
|
-
- [isCNPJ](#
|
|
34
|
-
- [isTitulo](#
|
|
35
|
-
- [isCNH](#
|
|
36
|
-
- [
|
|
37
|
-
- [
|
|
32
|
+
- [isCPF](#isCPF) - Validação do CPF
|
|
33
|
+
- [isCNPJ](#isCNPJ) - Validação do CNPJ
|
|
34
|
+
- [isTitulo](#isTitulo) - Validação do Título de Eleitor
|
|
35
|
+
- [isCNH](#isCNH) - Validação do CNH
|
|
36
|
+
- [isPostalCode](#isPostalCode) - Validação de Objetos Registrados dos Correios
|
|
37
|
+
- [isPIS](#isPIS) - Validação de PIS, PASEP, NIS e NIT
|
|
38
38
|
|
|
39
|
-
###
|
|
39
|
+
### isCPF
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
Valida um CPF
|
|
42
42
|
|
|
43
43
|
```js
|
|
44
44
|
// Importação
|
|
@@ -57,13 +57,131 @@ isCPF('01234567891')
|
|
|
57
57
|
//-> false
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
+
### isCNPJ
|
|
61
|
+
|
|
62
|
+
Valida um CNPJ
|
|
63
|
+
|
|
64
|
+
```js
|
|
65
|
+
// Importação
|
|
66
|
+
import { isCNPJ } from ('validation-br');
|
|
67
|
+
|
|
68
|
+
// Valida
|
|
69
|
+
isCNPJ('73.797.980/0001-79')
|
|
70
|
+
//-> true
|
|
71
|
+
|
|
72
|
+
// Valida
|
|
73
|
+
isCNPJ('55585709000198')
|
|
74
|
+
//-> true
|
|
75
|
+
|
|
76
|
+
// Valida
|
|
77
|
+
isCNPJ('99362238000180')
|
|
78
|
+
//-> false
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### isTitulo
|
|
82
|
+
|
|
83
|
+
Valida um título eleitoral
|
|
84
|
+
|
|
85
|
+
```js
|
|
86
|
+
// Importação
|
|
87
|
+
import { isTitulo } from ('validation-br');
|
|
88
|
+
|
|
89
|
+
// Valida
|
|
90
|
+
isTitulo('743650641660')
|
|
91
|
+
//-> true
|
|
92
|
+
|
|
93
|
+
// Valida
|
|
94
|
+
isTitulo('525028881694')
|
|
95
|
+
//-> true
|
|
96
|
+
|
|
97
|
+
// Valida
|
|
98
|
+
isTitulo('153016161686')
|
|
99
|
+
//-> false
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### isCNH
|
|
103
|
+
|
|
104
|
+
Valida o documento da carteira nacional de habilitação.
|
|
105
|
+
|
|
106
|
+
```js
|
|
107
|
+
// Importação
|
|
108
|
+
import { isCNH } from ('validation-br');
|
|
109
|
+
|
|
110
|
+
// Valida
|
|
111
|
+
isCNH('69044271146')
|
|
112
|
+
//-> true
|
|
113
|
+
|
|
114
|
+
// Valida
|
|
115
|
+
isCNH('62472927637')
|
|
116
|
+
//-> true
|
|
117
|
+
|
|
118
|
+
// Valida
|
|
119
|
+
isCNH('46190476839')
|
|
120
|
+
//-> false
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### isPostalCode
|
|
124
|
+
|
|
125
|
+
Valida um código de rastreamento de objetos postais no formato XX000000000YY, onde:
|
|
126
|
+
|
|
127
|
+
- XX: O código do objeto postal com 2 dígitos;
|
|
128
|
+
- 000000000: Número sequencial do objeto com 9 dígitos;
|
|
129
|
+
- YY: País de origem do objeto com 2 dígitos.
|
|
130
|
+
|
|
131
|
+
```js
|
|
132
|
+
// Importação
|
|
133
|
+
import { isPostalCode } from ('validation-br');
|
|
134
|
+
|
|
135
|
+
// Valida
|
|
136
|
+
isPostalCode('PN718252423BR')
|
|
137
|
+
//-> true
|
|
138
|
+
|
|
139
|
+
// Valida
|
|
140
|
+
isPostalCode('RY728187035CN')
|
|
141
|
+
//-> true
|
|
142
|
+
|
|
143
|
+
// Valida
|
|
144
|
+
isPostalCode('JT194624698BR')
|
|
145
|
+
//-> false
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### isPIS
|
|
149
|
+
|
|
150
|
+
Valida códigos PIS, PASEP, NIS e NIT, que usam o mesmo algoritmo. Aceita números com e sem pontos e traços.
|
|
151
|
+
|
|
152
|
+
```js
|
|
153
|
+
// Importação
|
|
154
|
+
import { isPIS } from ('validation-br');
|
|
155
|
+
|
|
156
|
+
// Valida
|
|
157
|
+
isPIS('71282677380')
|
|
158
|
+
//-> true
|
|
159
|
+
|
|
160
|
+
// Valida
|
|
161
|
+
isPIS('237.95126.95-5')
|
|
162
|
+
//-> true
|
|
163
|
+
|
|
164
|
+
// Valida
|
|
165
|
+
isPIS('500.12973.80-1')
|
|
166
|
+
//-> false
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Tests
|
|
170
|
+

|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
60
174
|
## Changelog
|
|
61
175
|
|
|
62
176
|
- **16/09/2021**:
|
|
63
177
|
- 0.5.0 - Adicionadas as funções isCPF, isCNPJ e isTitulo
|
|
178
|
+
- 0.7.0 - Adicionadas as funções isPostalCode e isCNH
|
|
179
|
+
- 0.8.0 - Adicionada a função isPIS
|
|
64
180
|
|
|
65
181
|
## Referências
|
|
66
182
|
|
|
67
183
|
- [Cálculo do DV do CPF](http://clubes.obmep.org.br/blog/a-matematica-nos-documentos-cpf/)
|
|
68
184
|
- [Cálculo do DV do CNPJ](http://www.macoratti.net/alg_cnpj.htm)
|
|
69
185
|
- [Cálculo do DV do Título Eleitoral](http://clubes.obmep.org.br/blog/a-matematica-nos-documentos-titulo-de-eleitor/)
|
|
186
|
+
- [Cálculo do PIS](http://www.macoratti.net/alg_pis.htm)
|
|
187
|
+
- [Diferença entre PIS, PASEP, NIS e NIT](https://www.jornalcontabil.com.br/entenda-de-uma-vez-a-diferenca-entre-pis-pasep-nit-e-nis/#:~:text=NIS%20%E2%80%93%20N%C3%BAmero%20de%20Identifica%C3%A7%C3%A3o%20Social,do%20Patrim%C3%B4nio%20do%20Servidor%20P%C3%BAblico)
|