validation-br 1.6.0 → 1.6.1

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 (122) hide show
  1. package/dist/_exceptions/ValidationBRError.d.ts +7 -0
  2. package/dist/_exceptions/ValidationBRError.js +11 -0
  3. package/dist/_exceptions/ValidationBRError.js.map +1 -0
  4. package/dist/cnh.d.ts +98 -0
  5. package/dist/cnh.js +149 -0
  6. package/dist/cnh.js.map +1 -0
  7. package/dist/cnpj.d.ts +121 -0
  8. package/dist/cnpj.js +191 -0
  9. package/dist/cnpj.js.map +1 -0
  10. package/dist/cpf.d.ts +106 -0
  11. package/dist/cpf.js +157 -0
  12. package/dist/cpf.js.map +1 -0
  13. package/dist/index.d.ts +21 -0
  14. package/dist/index.js +42 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/judicialProcess.d.ts +133 -0
  17. package/dist/judicialProcess.js +200 -0
  18. package/dist/judicialProcess.js.map +1 -0
  19. package/dist/nup17.d.ts +103 -0
  20. package/dist/nup17.js +159 -0
  21. package/dist/nup17.js.map +1 -0
  22. package/dist/package-lock.json +4372 -0
  23. package/dist/package.json +117 -0
  24. package/dist/pisPasep.d.ts +88 -0
  25. package/dist/pisPasep.js +136 -0
  26. package/dist/pisPasep.js.map +1 -0
  27. package/dist/postalCode.d.ts +92 -0
  28. package/dist/postalCode.js +144 -0
  29. package/dist/postalCode.js.map +1 -0
  30. package/dist/readme.md +492 -0
  31. package/dist/renavam.d.ts +82 -0
  32. package/dist/renavam.js +132 -0
  33. package/dist/renavam.js.map +1 -0
  34. package/dist/tituloEleitor.d.ts +100 -0
  35. package/dist/tituloEleitor.js +157 -0
  36. package/dist/tituloEleitor.js.map +1 -0
  37. package/dist/utils.d.ts +131 -0
  38. package/dist/utils.js +190 -0
  39. package/dist/utils.js.map +1 -0
  40. package/package.json +14 -3
  41. package/readme.md +1 -1
  42. package/.prettierignore +0 -1
  43. package/.prettierrc.js +0 -7
  44. package/dist/test/cnh.test.d.ts +0 -1
  45. package/dist/test/cnh.test.js +0 -116
  46. package/dist/test/cnh.test.js.map +0 -1
  47. package/dist/test/cnpj.test.d.ts +0 -1
  48. package/dist/test/cnpj.test.js +0 -181
  49. package/dist/test/cnpj.test.js.map +0 -1
  50. package/dist/test/cpf.test.d.ts +0 -1
  51. package/dist/test/cpf.test.js +0 -136
  52. package/dist/test/cpf.test.js.map +0 -1
  53. package/dist/test/index.test.d.ts +0 -1
  54. package/dist/test/index.test.js +0 -83
  55. package/dist/test/index.test.js.map +0 -1
  56. package/dist/test/judicialProcess.test.d.ts +0 -1
  57. package/dist/test/judicialProcess.test.js +0 -124
  58. package/dist/test/judicialProcess.test.js.map +0 -1
  59. package/dist/test/nup17.test.d.ts +0 -1
  60. package/dist/test/nup17.test.js +0 -133
  61. package/dist/test/nup17.test.js.map +0 -1
  62. package/dist/test/pisPasep.test.d.ts +0 -1
  63. package/dist/test/pisPasep.test.js +0 -135
  64. package/dist/test/pisPasep.test.js.map +0 -1
  65. package/dist/test/postalCode.test.d.ts +0 -1
  66. package/dist/test/postalCode.test.js +0 -123
  67. package/dist/test/postalCode.test.js.map +0 -1
  68. package/dist/test/renavam.test.d.ts +0 -1
  69. package/dist/test/renavam.test.js +0 -91
  70. package/dist/test/renavam.test.js.map +0 -1
  71. package/dist/test/tituloEleitor.test.d.ts +0 -1
  72. package/dist/test/tituloEleitor.test.js +0 -118
  73. package/dist/test/tituloEleitor.test.js.map +0 -1
  74. package/dist/test/utils-applyMask.test.d.ts +0 -1
  75. package/dist/test/utils-applyMask.test.js +0 -15
  76. package/dist/test/utils-applyMask.test.js.map +0 -1
  77. package/dist/test/utils-checkRepeatedSequence.test.d.ts +0 -1
  78. package/dist/test/utils-checkRepeatedSequence.test.js +0 -18
  79. package/dist/test/utils-checkRepeatedSequence.test.js.map +0 -1
  80. package/dist/test/utils-clearValue.test.d.ts +0 -1
  81. package/dist/test/utils-clearValue.test.js +0 -59
  82. package/dist/test/utils-clearValue.test.js.map +0 -1
  83. package/dist/test/utils-fakeNumber.test.d.ts +0 -1
  84. package/dist/test/utils-fakeNumber.test.js +0 -24
  85. package/dist/test/utils-fakeNumber.test.js.map +0 -1
  86. package/dist/test/utils-insertAtPosition.test.d.ts +0 -1
  87. package/dist/test/utils-insertAtPosition.test.js +0 -16
  88. package/dist/test/utils-insertAtPosition.test.js.map +0 -1
  89. package/dist/test/utils-randomLetter.test.d.ts +0 -1
  90. package/dist/test/utils-randomLetter.test.js +0 -11
  91. package/dist/test/utils-randomLetter.test.js.map +0 -1
  92. package/dist/test/utils-removeFromPosition.test.d.ts +0 -1
  93. package/dist/test/utils-removeFromPosition.test.js +0 -12
  94. package/dist/test/utils-removeFromPosition.test.js.map +0 -1
  95. package/dist/test/utils-sumElementsByMultipliers.test.d.ts +0 -1
  96. package/dist/test/utils-sumElementsByMultipliers.test.js +0 -23
  97. package/dist/test/utils-sumElementsByMultipliers.test.js.map +0 -1
  98. package/dist/test/utils-sumToDV.test.d.ts +0 -1
  99. package/dist/test/utils-sumToDV.test.js +0 -14
  100. package/dist/test/utils-sumToDV.test.js.map +0 -1
  101. package/eslint.config.js +0 -82
  102. package/jest.config.js +0 -11
  103. package/test/cnh.test.ts +0 -113
  104. package/test/cnpj.test.ts +0 -179
  105. package/test/cpf.test.ts +0 -124
  106. package/test/index.test.ts +0 -85
  107. package/test/judicialProcess.test.ts +0 -120
  108. package/test/nup17.test.ts +0 -127
  109. package/test/pisPasep.test.ts +0 -126
  110. package/test/postalCode.test.ts +0 -114
  111. package/test/renavam.test.ts +0 -77
  112. package/test/tituloEleitor.test.ts +0 -110
  113. package/test/utils-applyMask.test.ts +0 -13
  114. package/test/utils-checkRepeatedSequence.test.ts +0 -17
  115. package/test/utils-clearValue.test.ts +0 -69
  116. package/test/utils-fakeNumber.test.ts +0 -28
  117. package/test/utils-insertAtPosition.test.ts +0 -15
  118. package/test/utils-randomLetter.test.ts +0 -9
  119. package/test/utils-removeFromPosition.test.ts +0 -10
  120. package/test/utils-sumElementsByMultipliers.test.ts +0 -24
  121. package/test/utils-sumToDV.test.ts +0 -12
  122. package/tsconfig.json +0 -25
@@ -0,0 +1,117 @@
1
+ {
2
+ "name": "validation-br",
3
+ "description": "Brazilian personal documents validation - cpf, cnpj, titulo, pis/pasep, cnh, renavam, processos judiciais, protocolo federal, código de rastreamento dos correios",
4
+ "version": "1.6.0-d",
5
+ "main": "dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "package.json",
10
+ "package-lock.json",
11
+ "readme.md"
12
+ ],
13
+
14
+ "author": "Cláudio Medeiros <klawdyo@gmail.com>",
15
+ "license": "MIT",
16
+ "scripts": {
17
+ "build": "./publish.sh",
18
+ "builds": "rm dist -r && tsc && rm -r dist/test && mv dist/src/* dist && rm dist/src -r && cp package*.json readme.md dist",
19
+ "publish": "npm publish",
20
+ "test": "jest",
21
+ "test:watch": "jest --watch",
22
+ "test:coverage": "jest --collectCoverageFrom=src/**/*.ts --coverage",
23
+ "format": "prettier --write \"./**/*.{js,ts,json}\"",
24
+ "prepublish": "npm run build"
25
+
26
+ },
27
+ "lint-staged": {
28
+ "*.{js,ts}": [
29
+ "prettier --write",
30
+ "eslint --cache --fix"
31
+ ]
32
+ },
33
+ "devDependencies": {
34
+ "@types/jest": "^27.4.0",
35
+ "@types/node": "^14.14.2",
36
+ "jest": "^29.7.0",
37
+ "ts-jest": "^29.2.5",
38
+ "ts-node": "^9.0.0",
39
+ "typescript": "^5.6.2"
40
+ },
41
+ "repository": {
42
+ "url": "git+https://github.com/klawdyo/validation-br.git"
43
+ },
44
+ "bugs": {
45
+ "url": "https://github.com/klawdyo/validation-br/issues"
46
+ },
47
+ "homepage": "https://github.com/klawdyo/validation-br#readme",
48
+ "keywords": [
49
+ "validation-br",
50
+ "validation",
51
+ "personal documents",
52
+ "document",
53
+ "brazil",
54
+ "brasil",
55
+ "brazilian",
56
+ "brasileiro",
57
+ "cpf",
58
+ "cnpj",
59
+ "pis",
60
+ "pasep",
61
+ "cnh",
62
+ "titulo eleitor",
63
+ "eleitoral",
64
+ "titulo",
65
+ "renavam",
66
+ "processos",
67
+ "judiciais",
68
+ "judicial",
69
+ "justiça",
70
+ "protocolo",
71
+ "federal",
72
+ "fake",
73
+ "falso",
74
+ "mock",
75
+ "faker",
76
+ "mockup",
77
+ "mask",
78
+ "mascara",
79
+ "fake cpf",
80
+ "fake cnpj",
81
+ "fake cnh",
82
+ "fake pis",
83
+ "fake pasep",
84
+ "fake cadunico",
85
+ "fake renavam",
86
+ "fake titulo",
87
+ "fake titulo eleitor",
88
+ "fake titulo eleitoral",
89
+ "fake número processo",
90
+ "processo justiça",
91
+ "processo judicial",
92
+ "valida",
93
+ "validar",
94
+ "validação",
95
+ "valide",
96
+ "validate",
97
+ "format",
98
+ "formatar",
99
+ "formatador",
100
+ "formatter",
101
+ "nest",
102
+ "nestjs",
103
+ "yup",
104
+ "next",
105
+ "nextjs",
106
+ "typeorm",
107
+ "class-validator",
108
+ "vuelidate",
109
+ "vue",
110
+ "vue3",
111
+ "indicative",
112
+ "adonis",
113
+ "adonisjs",
114
+ "adonis4",
115
+ "adonisjs4"
116
+ ]
117
+ }
@@ -0,0 +1,88 @@
1
+ /**
2
+ * isPIS()
3
+ * Calcula se um código de PIS/PASEP/NIS/NIT no formato 268.27649.96-0 é válido. Não
4
+ * valida o formato, portanto, 26827649960 é equivalente a 268.27649.96-0 para efeitos
5
+ * desta validação.
6
+ *
7
+ * @doc
8
+ * - O número de PIS deve possuir 11 caracteres
9
+ *
10
+ * - Os caracteres de 1 a 10 são a numeração documento
11
+ *
12
+ * - O caractere 11 é o dígito verificador.
13
+ *
14
+ * 1) Partes do número
15
+ * _______________________________________________
16
+ * | Número | D V |
17
+ * | 2 6 8 . 2 7 6 4 9 . 9 6 - 0 |
18
+ * |_________________________________________|_____|
19
+ *
20
+ * 2) Cálculo do DV.
21
+ *
22
+ * - Soma-se o produto das algarismos 3 a 10 pelos números 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
23
+ *
24
+ * 2 6 8 2 7 6 4 9 9 6
25
+ * x x x x x x x x x x
26
+ * 3 2 9 8 7 6 5 4 3 2
27
+ * = 6 +12 +72 +16 +49 +12 +20 +36 +27 +12 = 234
28
+ *
29
+ * - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
30
+ * 234 / 11 tem resto 3. 11 - 3 = 8. DV1 é 8.
31
+ * Obs.: Caso o cálculo de DV1 retorne 0, o resultado será 5.
32
+ * Caso retorne 1, o resto será 0
33
+ *
34
+ *
35
+ *
36
+ *
37
+ * Fonte: http://www.macoratti.net/alg_pis.htm
38
+ *
39
+ * @param {String} value Objeto postal no formato 268.27649.96-0
40
+ * @returns {Boolean}
41
+ */
42
+ /**
43
+ * dv()
44
+ * Calcula o dígito verificador
45
+ *
46
+ * @param {Number|String} value
47
+ * @returns {String}
48
+ */
49
+ export declare const dv: (value: string | number) => string;
50
+ /**
51
+ * Aplica uma máscara ao número informado
52
+ *
53
+ * @param {String} value Número de Processo
54
+ * @returns {String} Valor com a máscara
55
+ */
56
+ export declare const mask: (value: string | number) => string;
57
+ /**
58
+ * fake()
59
+ * Gera um número válido
60
+ *
61
+ * @returns {String}
62
+ */
63
+ export declare const fake: (withMask?: boolean) => string;
64
+ /**
65
+ * validateOrFail()
66
+ * Valida se um número é válido e
67
+ * retorna uma exceção se não estiver
68
+ *
69
+ * @param {String|Number} value Número a ser validado
70
+ * @returns {Boolean}
71
+ */
72
+ export declare const validateOrFail: (value: string | number) => boolean;
73
+ /**
74
+ * validate()
75
+ * Valida se um número é válido
76
+ *
77
+ * @param {String|Number} value Número a ser validado
78
+ * @returns {Boolean}
79
+ */
80
+ export declare const validate: (value: string | number) => boolean;
81
+ /**
82
+ * Retorna String sem máscara
83
+ *
84
+ * @param {String|Number} value Valor a remover máscara
85
+ * @returns {String}
86
+ */
87
+ export declare const normalize: (value: string | number) => string;
88
+ export default validate;
@@ -0,0 +1,136 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
44
+ return (mod && mod.__esModule) ? mod : { "default": mod };
45
+ };
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.normalize = exports.validate = exports.validateOrFail = exports.fake = exports.mask = exports.dv = void 0;
48
+ const ValidationBRError_1 = __importDefault(require("./_exceptions/ValidationBRError"));
49
+ const utils_1 = require("./utils");
50
+ /**
51
+ * dv()
52
+ * Calcula o dígito verificador
53
+ *
54
+ * @param {Number|String} value
55
+ * @returns {String}
56
+ */
57
+ const dv = (value) => {
58
+ const pis = (0, utils_1.clearValue)(value, 10, {
59
+ trimAtRight: true,
60
+ rejectEmpty: true,
61
+ });
62
+ const sum = (0, utils_1.sumElementsByMultipliers)(pis, [3, 2, 9, 8, 7, 6, 5, 4, 3, 2]);
63
+ return String((0, utils_1.sumToDV)(sum));
64
+ };
65
+ exports.dv = dv;
66
+ /**
67
+ * Aplica uma máscara ao número informado
68
+ *
69
+ * @param {String} value Número de Processo
70
+ * @returns {String} Valor com a máscara
71
+ */
72
+ const mask = (value) => (0, utils_1.applyMask)(value, '000.00000.00-0');
73
+ exports.mask = mask;
74
+ /**
75
+ * fake()
76
+ * Gera um número válido
77
+ *
78
+ * @returns {String}
79
+ */
80
+ const fake = (withMask = false) => {
81
+ const num = (0, utils_1.fakeNumber)(10, true);
82
+ const pis = `${num}${(0, exports.dv)(num)}`;
83
+ if (withMask)
84
+ return (0, exports.mask)(pis);
85
+ return pis;
86
+ };
87
+ exports.fake = fake;
88
+ /**
89
+ * validateOrFail()
90
+ * Valida se um número é válido e
91
+ * retorna uma exceção se não estiver
92
+ *
93
+ * @param {String|Number} value Número a ser validado
94
+ * @returns {Boolean}
95
+ */
96
+ const validateOrFail = (value) => {
97
+ const pis = (0, exports.normalize)(value);
98
+ if ((0, exports.dv)(pis) !== pis.substring(10, 11)) {
99
+ throw ValidationBRError_1.default.INVALID_DV;
100
+ }
101
+ return true;
102
+ };
103
+ exports.validateOrFail = validateOrFail;
104
+ /**
105
+ * validate()
106
+ * Valida se um número é válido
107
+ *
108
+ * @param {String|Number} value Número a ser validado
109
+ * @returns {Boolean}
110
+ */
111
+ const validate = (value) => {
112
+ try {
113
+ return (0, exports.validateOrFail)(value);
114
+ }
115
+ catch (error) {
116
+ return false;
117
+ }
118
+ };
119
+ exports.validate = validate;
120
+ /**
121
+ * Retorna String sem máscara
122
+ *
123
+ * @param {String|Number} value Valor a remover máscara
124
+ * @returns {String}
125
+ */
126
+ const normalize = (value) => {
127
+ return (0, utils_1.clearValue)(value, 11, {
128
+ fillZerosAtLeft: true,
129
+ rejectEmpty: true,
130
+ rejectHigherLength: true,
131
+ rejectEqualSequence: true,
132
+ });
133
+ };
134
+ exports.normalize = normalize;
135
+ exports.default = exports.validate;
136
+ //# sourceMappingURL=pisPasep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pisPasep.js","sourceRoot":"","sources":["../../src/pisPasep.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;;;;;;AAEH,wFAAgE;AAChE,mCAA+F;AAE/F;;;;;;GAMG;AACI,MAAM,EAAE,GAAG,CAAC,KAAsB,EAAU,EAAE;IACnD,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAC,KAAK,EAAE,EAAE,EAAE;QAChC,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,IAAA,gCAAwB,EAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE1E,OAAO,MAAM,CAAC,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC,CAAC;AAC9B,CAAC,CAAC;AATW,QAAA,EAAE,MASb;AAEF;;;;;GAKG;AACI,MAAM,IAAI,GAAG,CAAC,KAAsB,EAAU,EAAE,CAAC,IAAA,iBAAS,EAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAA9E,QAAA,IAAI,QAA0E;AAE3F;;;;;GAKG;AACI,MAAM,IAAI,GAAG,CAAC,WAAoB,KAAK,EAAU,EAAE;IACxD,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAEjC,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,IAAA,UAAE,EAAC,GAAG,CAAC,EAAE,CAAC;IAE/B,IAAI,QAAQ;QAAE,OAAO,IAAA,YAAI,EAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAPW,QAAA,IAAI,QAOf;AAEF;;;;;;;GAOG;AACI,MAAM,cAAc,GAAG,CAAC,KAAsB,EAAW,EAAE;IAChE,MAAM,GAAG,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,CAAC;IAE7B,IAAI,IAAA,UAAE,EAAC,GAAG,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QACtC,MAAM,2BAAiB,CAAC,UAAU,CAAC;IACrC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AARW,QAAA,cAAc,kBAQzB;AAEF;;;;;;GAMG;AACI,MAAM,QAAQ,GAAG,CAAC,KAAsB,EAAW,EAAE;IAC1D,IAAI,CAAC;QACH,OAAO,IAAA,sBAAc,EAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AANW,QAAA,QAAQ,YAMnB;AAEF;;;;;GAKG;AACI,MAAM,SAAS,GAAG,CAAC,KAAsB,EAAU,EAAE;IAC1D,OAAO,IAAA,kBAAU,EAAC,KAAK,EAAE,EAAE,EAAE;QAC3B,eAAe,EAAE,IAAI;QACrB,WAAW,EAAE,IAAI;QACjB,kBAAkB,EAAE,IAAI;QACxB,mBAAmB,EAAE,IAAI;KAC1B,CAAC,CAAC;AACL,CAAC,CAAC;AAPW,QAAA,SAAS,aAOpB;AAEF,kBAAe,gBAAQ,CAAC"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * isPostalCode()
3
+ * Calcula se um código de rastreamento postal no formato JT194690698BR é válido.
4
+ *
5
+ * @doc
6
+ * - O número de registro postal deve possuir 13 caracters no formato JT194690698BR.
7
+ *
8
+ * - Os caracteres 1 e 2 informam o tipo do objeto. Ex.: SX é Sedex, RC é carta registrada etc.
9
+ *
10
+ * - Os caracteres de 3 a 10 são a numeração sequencial do tipo do objeto.
11
+ *
12
+ * - O caractere 11 é o dígito verificador.
13
+ *
14
+ * - Os caracteres 12 e 13 representa o código do País de onde a postagem partiu.
15
+ *
16
+ * 1) Partes do número
17
+ * ______ ___________________________ ______ _______
18
+ * | Tipo | Número | DV | País |
19
+ * | J T 1 9 4 6 9 0 6 9 8 B R |
20
+ * |______|___________________________|______|_______|
21
+ *
22
+ * 2) Cálculo do DV.
23
+ *
24
+ * - Soma-se o produto das algarismos 3 a 10 pelos números 8, 6, 4, 2, 3, 5, 9, 7
25
+ *
26
+ * 1 9 4 6 9 0 6 9
27
+ * x x x x x x x x
28
+ * 8 6 4 2 3 5 9 7
29
+ * = 8 +54 +16 +12 +18 +0 +54 +63 = 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
+ *
34
+ * Especificidades:
35
+ * - Caso o cálculo de DV1 retorne 0, o resultado será 5.
36
+ * - Caso retorne 1, o resto será 0
37
+ *
38
+ *
39
+ *
40
+ *
41
+ * Fonte:
42
+ *
43
+ * @param {String} value Objeto postal no formato JT194690698BR
44
+ * @returns {Boolean}
45
+ */
46
+ /**
47
+ * dv()
48
+ * Calcula o dígito verificador
49
+ *
50
+ * @param {Number|String} value
51
+ * @returns {String}
52
+ */
53
+ export declare const dv: (value: string | number) => string;
54
+ /**
55
+ * fake()
56
+ * Gera um número válido
57
+ *
58
+ * @returns {String}
59
+ */
60
+ export declare const fake: () => string;
61
+ /**
62
+ * validateOrFail()
63
+ * Valida se um número é válido e
64
+ * retorna uma exceção se não estiver
65
+ *
66
+ * @param {String} value Número a ser validado
67
+ * @returns {Boolean}
68
+ */
69
+ export declare const validateOrFail: (value: string) => boolean;
70
+ /**
71
+ * validate()
72
+ * Valida se um número é válido
73
+ *
74
+ * @param {String} value Número a ser validado
75
+ * @returns {Boolean}
76
+ */
77
+ export declare const validate: (value: string) => boolean;
78
+ /**
79
+ * Aplica uma máscara ao número informado
80
+ *
81
+ * @param {String} value Número de Processo
82
+ * @returns {String} Valor com a máscara
83
+ */
84
+ export declare const normalize: (value: string | number) => string;
85
+ /**
86
+ * Alias para normalize(). PostalCode não possui máscara.
87
+ *
88
+ * @param {String} value Número de Processo
89
+ * @returns {String} Valor com a máscara
90
+ */
91
+ export declare const mask: (value: string | number) => string;
92
+ export default validate;
@@ -0,0 +1,144 @@
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
+ *
35
+ * Especificidades:
36
+ * - Caso o cálculo de DV1 retorne 0, o resultado será 5.
37
+ * - Caso retorne 1, o resto será 0
38
+ *
39
+ *
40
+ *
41
+ *
42
+ * Fonte:
43
+ *
44
+ * @param {String} value Objeto postal no formato JT194690698BR
45
+ * @returns {Boolean}
46
+ */
47
+ var __importDefault = (this && this.__importDefault) || function (mod) {
48
+ return (mod && mod.__esModule) ? mod : { "default": mod };
49
+ };
50
+ Object.defineProperty(exports, "__esModule", { value: true });
51
+ exports.mask = exports.normalize = exports.validate = exports.validateOrFail = exports.fake = exports.dv = void 0;
52
+ const ValidationBRError_1 = __importDefault(require("./_exceptions/ValidationBRError"));
53
+ const utils_1 = require("./utils");
54
+ /**
55
+ * dv()
56
+ * Calcula o dígito verificador
57
+ *
58
+ * @param {Number|String} value
59
+ * @returns {String}
60
+ */
61
+ const dv = (value) => {
62
+ if (!value)
63
+ throw ValidationBRError_1.default.EMPTY_VALUE;
64
+ const postalCode = String(value)
65
+ .replace(/[^0-9]+/gi, '')
66
+ .padStart(8, '0')
67
+ .substring(0, 8);
68
+ const sum = (0, utils_1.sumElementsByMultipliers)(postalCode, [8, 6, 4, 2, 3, 5, 9, 7]);
69
+ const rest = sum % 11;
70
+ // const specificities = { 0: { dv: 5 }, 1: { dv: 0 } }
71
+ const specificities = [
72
+ { rest: 0, dv: 5 },
73
+ { rest: 1, dv: 0 },
74
+ ];
75
+ const specifity = specificities.find((item) => item.rest === rest);
76
+ const DV = specifity ? specifity.dv : 11 - rest;
77
+ return String(DV);
78
+ };
79
+ exports.dv = dv;
80
+ /**
81
+ * fake()
82
+ * Gera um número válido
83
+ *
84
+ * @returns {String}
85
+ */
86
+ const fake = () => {
87
+ const num = (0, utils_1.fakeNumber)(8, true);
88
+ const postalCode = `${(0, utils_1.randomLetter)()}${(0, utils_1.randomLetter)()}${num}${(0, exports.dv)(num)}BR`;
89
+ return postalCode;
90
+ };
91
+ exports.fake = fake;
92
+ /**
93
+ * validateOrFail()
94
+ * Valida se um número é válido e
95
+ * retorna uma exceção se não estiver
96
+ *
97
+ * @param {String} value Número a ser validado
98
+ * @returns {Boolean}
99
+ */
100
+ const validateOrFail = (value) => {
101
+ if (!/^[a-z]{2}([\d]{9})[a-z]{2}$/gi.test(String(value))) {
102
+ throw new Error('O número não está no formato "XX000000000XX"');
103
+ }
104
+ const postalCode = (0, utils_1.clearValue)(value.substring(2, 11), 9);
105
+ if ((0, exports.dv)(value.substring(2, 11)) !== postalCode.substring(8, 9)) {
106
+ throw ValidationBRError_1.default.INVALID_DV;
107
+ }
108
+ return true;
109
+ };
110
+ exports.validateOrFail = validateOrFail;
111
+ /**
112
+ * validate()
113
+ * Valida se um número é válido
114
+ *
115
+ * @param {String} value Número a ser validado
116
+ * @returns {Boolean}
117
+ */
118
+ const validate = (value) => {
119
+ try {
120
+ return (0, exports.validateOrFail)(value);
121
+ }
122
+ catch (error) {
123
+ return false;
124
+ }
125
+ };
126
+ exports.validate = validate;
127
+ /**
128
+ * Aplica uma máscara ao número informado
129
+ *
130
+ * @param {String} value Número de Processo
131
+ * @returns {String} Valor com a máscara
132
+ */
133
+ const normalize = (value) => String(value).toLocaleUpperCase();
134
+ exports.normalize = normalize;
135
+ /**
136
+ * Alias para normalize(). PostalCode não possui máscara.
137
+ *
138
+ * @param {String} value Número de Processo
139
+ * @returns {String} Valor com a máscara
140
+ */
141
+ const mask = (value) => (0, exports.normalize)(value);
142
+ exports.mask = mask;
143
+ exports.default = exports.validate;
144
+ //# sourceMappingURL=postalCode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postalCode.js","sourceRoot":"","sources":["../../src/postalCode.ts"],"names":[],"mappings":"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"}