validation-br 0.8.3 → 1.0.0-b

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 (109) hide show
  1. package/.eslintignore +2 -0
  2. package/.eslintrc.js +76 -11
  3. package/.github/workflows/test.yml +39 -0
  4. package/.prettierignore +1 -0
  5. package/.prettierrc.js +7 -0
  6. package/dist/cnh.js +123 -0
  7. package/dist/cnh.js.map +1 -0
  8. package/dist/cnh.test.js +117 -0
  9. package/dist/cnh.test.js.map +1 -0
  10. package/dist/cnpj.js +112 -0
  11. package/dist/cnpj.js.map +1 -0
  12. package/dist/cnpj.test.js +141 -0
  13. package/dist/cnpj.test.js.map +1 -0
  14. package/dist/cpf.js +134 -0
  15. package/dist/cpf.js.map +1 -0
  16. package/dist/cpf.test.js +130 -0
  17. package/dist/cpf.test.js.map +1 -0
  18. package/dist/index.js +24 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/index.test.js +33 -0
  21. package/dist/index.test.js.map +1 -0
  22. package/dist/judicialProcess.js +153 -0
  23. package/dist/judicialProcess.js.map +1 -0
  24. package/dist/judicialProcess.test.js +123 -0
  25. package/dist/judicialProcess.test.js.map +1 -0
  26. package/dist/pisPasep.js +113 -0
  27. package/dist/pisPasep.js.map +1 -0
  28. package/dist/pisPasep.test.js +129 -0
  29. package/dist/pisPasep.test.js.map +1 -0
  30. package/dist/postalCode.js +150 -0
  31. package/dist/postalCode.js.map +1 -0
  32. package/dist/postalCode.test.js +135 -0
  33. package/dist/postalCode.test.js.map +1 -0
  34. package/dist/renavam.js +108 -0
  35. package/dist/renavam.js.map +1 -0
  36. package/dist/renavam.test.js +113 -0
  37. package/dist/renavam.test.js.map +1 -0
  38. package/dist/tituloEleitor.js +130 -0
  39. package/dist/tituloEleitor.js.map +1 -0
  40. package/dist/tituloEleitor.test.js +132 -0
  41. package/dist/tituloEleitor.test.js.map +1 -0
  42. package/dist/utils-applyMask.test.js +17 -0
  43. package/dist/utils-applyMask.test.js.map +1 -0
  44. package/dist/utils-clearValue.test.js +50 -0
  45. package/dist/utils-clearValue.test.js.map +1 -0
  46. package/dist/utils-fakeNumber.test.js +17 -0
  47. package/dist/utils-fakeNumber.test.js.map +1 -0
  48. package/dist/utils-insertAtPosition.test.js +16 -0
  49. package/dist/utils-insertAtPosition.test.js.map +1 -0
  50. package/dist/utils-invalidListGenerator.test.js +23 -0
  51. package/dist/utils-invalidListGenerator.test.js.map +1 -0
  52. package/dist/utils-removeFromPosition.test.js +16 -0
  53. package/dist/utils-removeFromPosition.test.js.map +1 -0
  54. package/dist/utils-sumElementsByMultipliers.test.js +32 -0
  55. package/dist/utils-sumElementsByMultipliers.test.js.map +1 -0
  56. package/dist/utils-sumToDV.test.js +16 -0
  57. package/dist/utils-sumToDV.test.js.map +1 -0
  58. package/dist/utils.js +167 -0
  59. package/dist/utils.js.map +1 -0
  60. package/jest.config.js +14 -0
  61. package/package.json +40 -48
  62. package/readme.md +243 -88
  63. package/src/cnh.test.ts +114 -0
  64. package/src/cnh.ts +140 -0
  65. package/src/cnpj.test.ts +136 -0
  66. package/{dist/documents/cnpj.js → src/cnpj.ts} +74 -21
  67. package/src/cpf.test.ts +125 -0
  68. package/src/cpf.ts +150 -0
  69. package/src/index.test.ts +35 -0
  70. package/src/index.ts +19 -0
  71. package/src/judicialProcess.test.ts +118 -0
  72. package/src/judicialProcess.ts +167 -0
  73. package/src/pisPasep.test.ts +124 -0
  74. package/src/pisPasep.ts +128 -0
  75. package/src/postalCode.test.ts +132 -0
  76. package/src/postalCode.ts +164 -0
  77. package/src/renavam.test.ts +110 -0
  78. package/src/renavam.ts +122 -0
  79. package/src/tituloEleitor.test.ts +129 -0
  80. package/src/tituloEleitor.ts +146 -0
  81. package/src/utils-applyMask.test.ts +17 -0
  82. package/src/utils-clearValue.test.ts +55 -0
  83. package/src/utils-fakeNumber.test.ts +19 -0
  84. package/src/utils-insertAtPosition.test.ts +15 -0
  85. package/src/utils-invalidListGenerator.test.ts +27 -0
  86. package/src/utils-removeFromPosition.test.ts +15 -0
  87. package/src/utils-sumElementsByMultipliers.test.ts +34 -0
  88. package/src/utils-sumToDV.test.ts +16 -0
  89. package/src/utils.ts +172 -0
  90. package/tsconfig.json +23 -0
  91. package/.babelrc +0 -15
  92. package/.prettierrc +0 -9
  93. package/dist/documents/cnh.js +0 -77
  94. package/dist/documents/cnh.js.map +0 -1
  95. package/dist/documents/cnpj.js.map +0 -1
  96. package/dist/documents/cpf.js +0 -83
  97. package/dist/documents/cpf.js.map +0 -1
  98. package/dist/documents/index.js +0 -23
  99. package/dist/documents/index.js.map +0 -1
  100. package/dist/documents/pis-pasep.js +0 -71
  101. package/dist/documents/pis-pasep.js.map +0 -1
  102. package/dist/documents/postal-code.js +0 -72
  103. package/dist/documents/postal-code.js.map +0 -1
  104. package/dist/documents/titulo-eleitor.js +0 -74
  105. package/dist/documents/titulo-eleitor.js.map +0 -1
  106. package/dist/lib/utils.js +0 -60
  107. package/dist/lib/utils.js.map +0 -1
  108. package/docs.md +0 -0
  109. package/index.js +0 -3
package/dist/utils.js ADDED
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyMask = exports.removeFromPosition = exports.insertAtPosition = exports.clearValue = exports.fakeNumber = exports.sumElementsByMultipliers = exports.invalidListGenerator = exports.sumToDV = void 0;
4
+ /**
5
+ * Calcula o DV verificador a partir das regras do MOD11:
6
+ * O valor da soma é dividido por 11. O resultado é o resto da divisão. Caso o resto seja
7
+ * menor que 2, ou seja, o valor da divisão seja 10 ou 11, o resultado é 0.
8
+ *
9
+ * @param {Integer} sum Soma
10
+ * @returns {Integer}
11
+ */
12
+ function sumToDV(sum) {
13
+ return sum % 11 < 2 ? 0 : 11 - (sum % 11);
14
+ }
15
+ exports.sumToDV = sumToDV;
16
+ /**
17
+ * Cria uma lista de valores repetidos no tamanho do documento para eliminar
18
+ * valores que já conhecemos como inválidos
19
+ *
20
+ * @example
21
+ * invalidListGenerator(10, 11)
22
+ * //-> [00000000000, 11111111111, ....., 99999999999]
23
+ *
24
+ * @param {Integer} length Número de itens do array
25
+ * @param {Integer} size Tamanho da string gerada
26
+ * @returns {Array} Lista de valores
27
+ */
28
+ function invalidListGenerator(size) {
29
+ return [...Array(10).keys()].map((f) => String(f).repeat(size));
30
+ }
31
+ exports.invalidListGenerator = invalidListGenerator;
32
+ /**
33
+ * Multiplica os elementos de uma string com os elementos de outra, ou de um array
34
+ * e soma o resultado ao final
35
+ *
36
+ * @example
37
+ * sumElementsByMultipliers('123', '987') //-> 46
38
+ * sumElementsByMultipliers('123', [9, 8, 7]) //-> 46
39
+ *
40
+ * @param {String} value
41
+ * @param {String|Array} multiplier
42
+ * @returns {Integer} Somatório
43
+ */
44
+ function sumElementsByMultipliers(value, multiplier) {
45
+ if (typeof multiplier === 'string')
46
+ multiplier = multiplier.split('').map((n) => Number(n));
47
+ return multiplier.reduce((accu, curr, i) => accu + curr * Number(value.charAt(i)), 0);
48
+ }
49
+ exports.sumElementsByMultipliers = sumElementsByMultipliers;
50
+ /**
51
+ * fakeNumber()
52
+ * Cria um número aleatório com o número de caracteres
53
+ *
54
+ * @example
55
+ * fakeNumber(8, true) // -> 00083159
56
+ * fakeNumber(4) // -> 831
57
+ *
58
+ * @param {Integer} length
59
+ * @param {Boolean} forceLength Adiciona zeros à esquerda para ter os números de caractes exatos
60
+ * @returns {String}
61
+ */
62
+ function fakeNumber(length, forceLength = false) {
63
+ const value = (Math.random() * Math.pow(10, length)).toFixed(0);
64
+ if (forceLength)
65
+ return value.padStart(length, '0');
66
+ return +value;
67
+ }
68
+ exports.fakeNumber = fakeNumber;
69
+ /**
70
+ * Limpa um número informado, retirando caracteres diferentes de números,
71
+ * preenchendo com zeros à esquerda se for menor que o tamanho exato e
72
+ * removendo uma parte do número se for maior que tamanho definido.
73
+ *
74
+ * 1) Retira caracteres não-numéricos
75
+ * 2) Preenche com zeros à esquerda se 'value' for menor que 'length'
76
+ * 3) Remove caracteres à direita se 'value' for maior que 'length'
77
+ *
78
+ * @example
79
+ * clearValue(12345-6, 6) // -> 123456
80
+ * clearValue(12345678, 3) // -> 123
81
+ * clearValue(12345, 10) // -> 0000001234
82
+ *
83
+ * @param {Number|String} value
84
+ * @param {Number} length Tamanho exato. Se for null, só retira os caracteres não-numéricos
85
+ * @returns {String} Número com o tamanho exato
86
+ */
87
+ function clearValue(value, length = null) {
88
+ const clearedValue = String(value).replace(/([^\d]+)/gi, '');
89
+ if (!length || clearedValue.length === length)
90
+ return clearedValue;
91
+ if (clearedValue.length > length)
92
+ return clearedValue.substring(0, length);
93
+ return clearedValue.padStart(length, '0');
94
+ }
95
+ exports.clearValue = clearValue;
96
+ /**
97
+ * insertAtPosition()
98
+ * Insere um conjunto de caracteres em um local específico de uma string
99
+ *
100
+ * @example
101
+ * insertAtPosition('AAABBB', 'C', 3) // -> AAACBBB
102
+ * insertAtPosition('000011122223445555', 99, 7) // -> 00001119922223445555
103
+ *
104
+ * @param {String|Number} value Valor original
105
+ * @param {String|Number} insertValue Valor que será inserido
106
+ * @param {String|Number} position Posição que receberá o novo valor
107
+ * @returns {String}
108
+ *
109
+ */
110
+ function insertAtPosition(value, insertValue, position) {
111
+ return `${value.substring(0, position)}${insertValue}${value.substring(position)}`;
112
+ }
113
+ exports.insertAtPosition = insertAtPosition;
114
+ /**
115
+ * removeFromPosition()
116
+ * Retira um conjunto de caracteres de um local específico de uma string
117
+ *
118
+ * @example
119
+ * removeFromPosition('00001119922223445555', 7,9) // -> 000011122223445555
120
+ * removeFromPosition('AAACBBB', 3,4) // -> AAABBB
121
+ *
122
+ * @param {String|Number} value Valor original
123
+ * @param {String|Number} startPosition
124
+ * @param {String|Number} endPosition
125
+ * @returns {String}
126
+ *
127
+ */
128
+ function removeFromPosition(value, startPosition, endPosition) {
129
+ return [value.slice(0, startPosition), value.slice(endPosition)].join('');
130
+ }
131
+ exports.removeFromPosition = removeFromPosition;
132
+ /**
133
+ * applyMask()
134
+ * Aplica uma máscara a uma string
135
+ *
136
+ * @example
137
+ * applyMask('59650000', '00.000-000') // -> 59.650-000
138
+ * applyMask('99877665544', '(00) 0 0000-0000') // -> (99) 8 7766-5544
139
+ *
140
+ * @param {String|Number} value Valor original
141
+ * @param {String} mask
142
+ * @returns {String}
143
+ *
144
+ */
145
+ function applyMask(value, mask) {
146
+ const maskLen = clearValue(mask).length;
147
+ let masked = clearValue(value, maskLen);
148
+ const specialChars = ['/', '-', '.', '(', ')', ' '];
149
+ for (let position = 0; position < mask.length; position += 1) {
150
+ const current = mask[position];
151
+ if (specialChars.includes(current))
152
+ masked = insertAtPosition(masked, current, position);
153
+ }
154
+ return masked;
155
+ }
156
+ exports.applyMask = applyMask;
157
+ // module.exports = {
158
+ // sumToDV,
159
+ // invalidListGenerator,
160
+ // sumElementsByMultipliers,
161
+ // fakeNumber,
162
+ // applyMask,
163
+ // clearValue,
164
+ // insertAtPosition,
165
+ // removeFromPosition,
166
+ // }
167
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/jest.config.js ADDED
@@ -0,0 +1,14 @@
1
+ module.exports = {
2
+ globals: {
3
+ 'ts-jest': {
4
+ tsconfig: 'tsconfig.json',
5
+ },
6
+ },
7
+ moduleFileExtensions: ['ts', 'js'],
8
+ transform: {
9
+ '^.+\\.(ts|tsx)$': 'ts-jest',
10
+ },
11
+ testRegex: '(/src/.*\\.(test|spec))\\.(jsx?|tsx?)$',
12
+ testEnvironment: 'node',
13
+ coverageDirectory: './coverage/',
14
+ }
package/package.json CHANGED
@@ -1,56 +1,48 @@
1
1
  {
2
2
  "name": "validation-br",
3
- "description": "Brazilian personal documents validation - cpf, cnpj, titulo, pis/pasep, cnh",
4
- "version": "0.8.3",
3
+ "version": "1.0.0-b",
4
+ "main": "dist/index.js",
5
+ "types": "./dist/types.d.ts",
6
+ "author": "Cláudio Medeiros <klawdyo@gmail.com>",
7
+ "license": "MIT",
5
8
  "scripts": {
6
- "test": "yarn build && cls && node tests | tap-spec",
7
- "build": "babel src --source-maps -d dist",
8
- "lint": "eslint src/** --ignore-path .gitignore .",
9
- "lint:fix": "eslint src/** --ignore-path .gitignore . --fix",
10
- "prepublish": "yarn build"
9
+ "build": "tsc",
10
+ "test": "jest",
11
+ "test:watch": "jest --watch",
12
+ "test:coverage": "jest --collectCoverageFrom=src/**/*.ts --coverage",
13
+ "lint:list": "eslint */**/*.js --fix",
14
+ "format": "prettier --write \"./**/*.{js,ts,json}\""
11
15
  },
12
- "eslintConfig": {
13
- "extends": "airbnb"
16
+ "husky": {
17
+ "hooks": {
18
+ "pre-commit": "tsc --noEmit && lint-staged"
19
+ }
14
20
  },
15
- "dependencies": {
16
- "@babel/runtime": "^7.15.3",
17
- "qrcode": "^1.4.4"
21
+ "lint-staged": {
22
+ "*.{js,ts}": [
23
+ "prettier --write",
24
+ "eslint --cache --fix"
25
+ ]
18
26
  },
19
27
  "devDependencies": {
20
- "@babel/cli": "^7.14.8",
21
- "@babel/core": "^7.15.0",
22
- "@babel/plugin-transform-runtime": "^7.15.0",
23
- "@babel/preset-env": "^7.15.0",
24
- "babel-preset-minify": "^0.5.1",
25
- "core-js": "^3.16.2",
26
- "eslint": "^7.32.0",
27
- "eslint-config-airbnb-base": "^14.2.1",
28
- "eslint-plugin-import": "^2.24.1",
29
- "regenerator-runtime": "^0.13.9",
30
- "tap-spec": "^2.2.2",
31
- "tape": "^4.13.0"
32
- },
33
- "main": "index.js",
34
- "author": "Cláudio Medeiros",
35
- "repository": {
36
- "url": "https://github.com/klawdyo/validation-br"
37
- },
38
- "bugs": {
39
- "url": "https://github.com/klawdyo/validation-br/issues"
40
- },
41
- "homepage": "https://github.com/klawdyo/validation-br#readme",
42
- "keywords": [
43
- "validation-br",
44
- "brazilian",
45
- "validation",
46
- "personal documents",
47
- "cpf",
48
- "cnpj",
49
- "pis",
50
- "pasep",
51
- "cnh",
52
- "titulo eleitor"
53
- ],
54
- "license": "MIT",
55
- "private": false
28
+ "@types/jest": "^27.4.0",
29
+ "@types/node": "^14.14.2",
30
+ "@typescript-eslint/eslint-plugin": "^4.0.0",
31
+ "@typescript-eslint/parser": "^3.10.1",
32
+ "eslint": "^7.11.0",
33
+ "eslint-config-airbnb-base": "^14.2.0",
34
+ "eslint-config-prettier": "^6.14.0",
35
+ "eslint-import-resolver-node": "^0.3.4",
36
+ "eslint-import-resolver-typescript": "^2.3.0",
37
+ "eslint-plugin-import": "^2.22.1",
38
+ "eslint-plugin-no-only-tests": "^2.4.0",
39
+ "eslint-plugin-prettier": "^3.1.4",
40
+ "husky": "^4.3.0",
41
+ "jest": "^27.4.7",
42
+ "lint-staged": "^10.4.2",
43
+ "prettier": "^2.1.2",
44
+ "ts-jest": "^27.1.2",
45
+ "ts-node": "^9.0.0",
46
+ "typescript": "^4.0.3"
47
+ }
56
48
  }