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.
- package/.eslintignore +2 -0
- package/.eslintrc.js +76 -11
- package/.github/workflows/test.yml +39 -0
- package/.prettierignore +1 -0
- package/.prettierrc.js +7 -0
- package/dist/cnh.js +123 -0
- package/dist/cnh.js.map +1 -0
- package/dist/cnh.test.js +117 -0
- package/dist/cnh.test.js.map +1 -0
- package/dist/cnpj.js +112 -0
- package/dist/cnpj.js.map +1 -0
- package/dist/cnpj.test.js +141 -0
- package/dist/cnpj.test.js.map +1 -0
- package/dist/cpf.js +134 -0
- package/dist/cpf.js.map +1 -0
- package/dist/cpf.test.js +130 -0
- package/dist/cpf.test.js.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/index.test.js +33 -0
- package/dist/index.test.js.map +1 -0
- package/dist/judicialProcess.js +153 -0
- package/dist/judicialProcess.js.map +1 -0
- package/dist/judicialProcess.test.js +123 -0
- package/dist/judicialProcess.test.js.map +1 -0
- package/dist/pisPasep.js +113 -0
- package/dist/pisPasep.js.map +1 -0
- package/dist/pisPasep.test.js +129 -0
- package/dist/pisPasep.test.js.map +1 -0
- package/dist/postalCode.js +150 -0
- package/dist/postalCode.js.map +1 -0
- package/dist/postalCode.test.js +135 -0
- package/dist/postalCode.test.js.map +1 -0
- package/dist/renavam.js +108 -0
- package/dist/renavam.js.map +1 -0
- package/dist/renavam.test.js +113 -0
- package/dist/renavam.test.js.map +1 -0
- package/dist/tituloEleitor.js +130 -0
- package/dist/tituloEleitor.js.map +1 -0
- package/dist/tituloEleitor.test.js +132 -0
- package/dist/tituloEleitor.test.js.map +1 -0
- package/dist/utils-applyMask.test.js +17 -0
- package/dist/utils-applyMask.test.js.map +1 -0
- package/dist/utils-clearValue.test.js +50 -0
- package/dist/utils-clearValue.test.js.map +1 -0
- package/dist/utils-fakeNumber.test.js +17 -0
- package/dist/utils-fakeNumber.test.js.map +1 -0
- package/dist/utils-insertAtPosition.test.js +16 -0
- package/dist/utils-insertAtPosition.test.js.map +1 -0
- package/dist/utils-invalidListGenerator.test.js +23 -0
- package/dist/utils-invalidListGenerator.test.js.map +1 -0
- package/dist/utils-removeFromPosition.test.js +16 -0
- package/dist/utils-removeFromPosition.test.js.map +1 -0
- package/dist/utils-sumElementsByMultipliers.test.js +32 -0
- package/dist/utils-sumElementsByMultipliers.test.js.map +1 -0
- package/dist/utils-sumToDV.test.js +16 -0
- package/dist/utils-sumToDV.test.js.map +1 -0
- package/dist/utils.js +167 -0
- package/dist/utils.js.map +1 -0
- package/jest.config.js +14 -0
- package/package.json +40 -48
- package/readme.md +243 -88
- package/src/cnh.test.ts +114 -0
- package/src/cnh.ts +140 -0
- package/src/cnpj.test.ts +136 -0
- package/{dist/documents/cnpj.js → src/cnpj.ts} +74 -21
- package/src/cpf.test.ts +125 -0
- package/src/cpf.ts +150 -0
- package/src/index.test.ts +35 -0
- package/src/index.ts +19 -0
- package/src/judicialProcess.test.ts +118 -0
- package/src/judicialProcess.ts +167 -0
- package/src/pisPasep.test.ts +124 -0
- package/src/pisPasep.ts +128 -0
- package/src/postalCode.test.ts +132 -0
- package/src/postalCode.ts +164 -0
- package/src/renavam.test.ts +110 -0
- package/src/renavam.ts +122 -0
- package/src/tituloEleitor.test.ts +129 -0
- package/src/tituloEleitor.ts +146 -0
- package/src/utils-applyMask.test.ts +17 -0
- package/src/utils-clearValue.test.ts +55 -0
- package/src/utils-fakeNumber.test.ts +19 -0
- package/src/utils-insertAtPosition.test.ts +15 -0
- package/src/utils-invalidListGenerator.test.ts +27 -0
- package/src/utils-removeFromPosition.test.ts +15 -0
- package/src/utils-sumElementsByMultipliers.test.ts +34 -0
- package/src/utils-sumToDV.test.ts +16 -0
- package/src/utils.ts +172 -0
- package/tsconfig.json +23 -0
- package/.babelrc +0 -15
- package/.prettierrc +0 -9
- package/dist/documents/cnh.js +0 -77
- package/dist/documents/cnh.js.map +0 -1
- package/dist/documents/cnpj.js.map +0 -1
- package/dist/documents/cpf.js +0 -83
- package/dist/documents/cpf.js.map +0 -1
- package/dist/documents/index.js +0 -23
- package/dist/documents/index.js.map +0 -1
- package/dist/documents/pis-pasep.js +0 -71
- package/dist/documents/pis-pasep.js.map +0 -1
- package/dist/documents/postal-code.js +0 -72
- package/dist/documents/postal-code.js.map +0 -1
- package/dist/documents/titulo-eleitor.js +0 -74
- package/dist/documents/titulo-eleitor.js.map +0 -1
- package/dist/lib/utils.js +0 -60
- package/dist/lib/utils.js.map +0 -1
- package/docs.md +0 -0
- package/index.js +0 -3
package/.eslintignore
ADDED
package/.eslintrc.js
CHANGED
|
@@ -1,17 +1,82 @@
|
|
|
1
1
|
module.exports = {
|
|
2
|
+
root: true,
|
|
3
|
+
extends: ['airbnb-base', 'prettier'],
|
|
4
|
+
parser: '@typescript-eslint/parser',
|
|
5
|
+
parserOptions: {
|
|
6
|
+
ecmaVersion: 2018,
|
|
7
|
+
sourceType: 'module',
|
|
8
|
+
},
|
|
2
9
|
env: {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
es2021: true,
|
|
10
|
+
node: true,
|
|
11
|
+
jest: true,
|
|
6
12
|
},
|
|
7
|
-
|
|
8
|
-
'
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
settings: {
|
|
14
|
+
'import/resolver': {
|
|
15
|
+
node: {
|
|
16
|
+
extensions: ['.js', '.ts'],
|
|
17
|
+
},
|
|
18
|
+
},
|
|
12
19
|
},
|
|
13
20
|
rules: {
|
|
14
|
-
'no-
|
|
21
|
+
'@typescript-eslint/no-unused-vars': ['error', { varsIgnorePattern: '^_', args: 'none' }],
|
|
22
|
+
'array-callback-return': 'off',
|
|
23
|
+
'arrow-body-style': 'off',
|
|
24
|
+
curly: ['error', 'multi-line', 'consistent'],
|
|
25
|
+
'class-methods-use-this': 'off',
|
|
26
|
+
'consistent-return': 'warn',
|
|
27
|
+
'default-case': 'off',
|
|
28
|
+
'import/extensions': ['error', 'never'],
|
|
29
|
+
'import/first': 'warn',
|
|
30
|
+
'import/no-named-as-default': 'warn',
|
|
31
|
+
'import/no-named-as-default-member': 'warn',
|
|
32
|
+
'import/no-unresolved': 'warn',
|
|
33
|
+
'import/prefer-default-export': 'off',
|
|
34
|
+
'lines-between-class-members': ['error', 'always', { exceptAfterSingleLine: true }],
|
|
35
|
+
'max-classes-per-file': 'off',
|
|
36
|
+
'max-len': ['error', 120, 2, { ignoreUrls: true, ignoreTemplateLiterals: true }],
|
|
37
|
+
'newline-per-chained-call': 'warn',
|
|
38
|
+
'no-await-in-loop': 'off',
|
|
39
|
+
'no-confusing-arrow': 'off',
|
|
40
|
+
'no-console': 'off',
|
|
41
|
+
'no-continue': 'off',
|
|
42
|
+
'no-else-return': ['error', { allowElseIf: true }],
|
|
43
|
+
'no-loop-func': 'off',
|
|
44
|
+
'no-mixed-operators': 'off',
|
|
45
|
+
'no-nested-ternary': 'off',
|
|
46
|
+
'no-only-tests/no-only-tests': 'error',
|
|
47
|
+
'no-param-reassign': 'off',
|
|
48
|
+
'no-plusplus': 'off',
|
|
49
|
+
'no-prototype-builtins': 'off',
|
|
50
|
+
'no-restricted-syntax': 'off',
|
|
51
|
+
'no-return-assign': 'warn',
|
|
52
|
+
'no-sequences': 'warn',
|
|
53
|
+
'no-shadow': 'off',
|
|
54
|
+
'no-underscore-dangle': 'off',
|
|
55
|
+
'no-unexpected-multiline': 'off',
|
|
56
|
+
'no-unused-vars': 'off',
|
|
57
|
+
'no-use-before-define': ['warn', { functions: false, classes: false }],
|
|
58
|
+
'prefer-destructuring': 'off',
|
|
59
|
+
semi: ['error', 'never'],
|
|
60
|
+
'sort-imports': 'off',
|
|
61
|
+
'no-unused-expressions': 'off',
|
|
62
|
+
quotes: ['error', 'single', { avoidEscape: true }],
|
|
63
|
+
'@typescript-eslint/ban-types': 'error',
|
|
15
64
|
},
|
|
16
|
-
|
|
17
|
-
|
|
65
|
+
overrides: [
|
|
66
|
+
{
|
|
67
|
+
files: ['*.ts'],
|
|
68
|
+
rules: {
|
|
69
|
+
'no-dupe-class-members': 'off',
|
|
70
|
+
'no-undef': 'off',
|
|
71
|
+
'@typescript-eslint/explicit-function-return-type': 'error',
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
files: ['*.d.ts'],
|
|
76
|
+
rules: {
|
|
77
|
+
'no-useless-constructor': 'off', // crashes on constructor declaration in .d.ts files
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
plugins: ['no-only-tests', '@typescript-eslint'],
|
|
82
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: Tests
|
|
2
|
+
|
|
3
|
+
# on: [push]
|
|
4
|
+
on:
|
|
5
|
+
push:
|
|
6
|
+
branches: [main]
|
|
7
|
+
pull_request:
|
|
8
|
+
branches: [main]
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
build:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
|
|
14
|
+
strategy:
|
|
15
|
+
matrix:
|
|
16
|
+
node-version: [12.x, 14.x, 16.x]
|
|
17
|
+
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
|
18
|
+
|
|
19
|
+
steps:
|
|
20
|
+
# Checks-out the repository under $GITHUB_WORKSPACE
|
|
21
|
+
- uses: actions/checkout@v2
|
|
22
|
+
|
|
23
|
+
# Install Node Js
|
|
24
|
+
- name: Use Node.js ${{ matrix.node-version }}
|
|
25
|
+
uses: actions/setup-node@v2
|
|
26
|
+
with:
|
|
27
|
+
node-version: ${{ matrix.node-version }}
|
|
28
|
+
|
|
29
|
+
# Install Node Modules
|
|
30
|
+
- name: Install Node Modules
|
|
31
|
+
run: yarn install --frozen-lockfile
|
|
32
|
+
|
|
33
|
+
# Runs a set of commands using the runners shell
|
|
34
|
+
- name: Runs Unit Tests
|
|
35
|
+
run: yarn test
|
|
36
|
+
|
|
37
|
+
# Runs a set of commands using the runners shell
|
|
38
|
+
- name: Build typescript code
|
|
39
|
+
run: yarn build
|
package/.prettierignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
dist/
|
package/.prettierrc.js
ADDED
package/dist/cnh.js
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* isCNH()
|
|
4
|
+
* Calcula se uma CNH é válida
|
|
5
|
+
*
|
|
6
|
+
* @doc
|
|
7
|
+
* CNH deve possuir 11 caracteres
|
|
8
|
+
*
|
|
9
|
+
* - Os caracteres 1 a 9 são números sequenciais.
|
|
10
|
+
*
|
|
11
|
+
*
|
|
12
|
+
* - Os caracteres 10 e 11 são dígitos verificadores.
|
|
13
|
+
*
|
|
14
|
+
* 1) Partes do número
|
|
15
|
+
* ____________________________ ______
|
|
16
|
+
* | Número | D V |
|
|
17
|
+
* | 5 8 3 1 6 7 9 4 5 3 4 |
|
|
18
|
+
* |____________________________|_____|
|
|
19
|
+
*
|
|
20
|
+
* 2) Cálculo do primeiro DV.
|
|
21
|
+
*
|
|
22
|
+
* - Soma-se o produto das algarismos 1 a 9 pelos números 2, 3, 4, 5, 6, 7, 8, 9, 10.
|
|
23
|
+
*
|
|
24
|
+
* 5 8 3 1 6 7 9 4 5
|
|
25
|
+
* x x x x x x x x x
|
|
26
|
+
* 2 3 4 5 6 7 8 9 10
|
|
27
|
+
* = 10 +24 +12 +5 +36 +49 +72 +36 +50 = 294
|
|
28
|
+
*
|
|
29
|
+
* - O somatório encontrado é dividido por 11. O DV1 é 11 subtraído do resto da divisão. Se o
|
|
30
|
+
* resto for 10, o DV1 é 0.
|
|
31
|
+
*
|
|
32
|
+
* 2.1) 294 / 11 tem resto igual a 8. 11-7 = 3
|
|
33
|
+
* DV1 = 3
|
|
34
|
+
*
|
|
35
|
+
* 3) Cálculo do segundo DV
|
|
36
|
+
*
|
|
37
|
+
* - Soma-se o produto das algarismos 1 a 9 juntamente com o 10 caractere
|
|
38
|
+
* que é o DV1, pelos números 3, 4, 5, 6, 7, 8, 9, 10, 11, 2. O DV1 será
|
|
39
|
+
* multiplicado por 2 e ficará no final.
|
|
40
|
+
*
|
|
41
|
+
* 5 8 3 1 6 7 9 4 5 3
|
|
42
|
+
* x x x x x x x x x x
|
|
43
|
+
* 3 4 5 6 7 8 9 10 11 2
|
|
44
|
+
* = 10 +24 +12 +5 +36 +49 +72 +36 +50 +6 = 348
|
|
45
|
+
*
|
|
46
|
+
* 3.1) 348 / 11 tem resto igual a 7. 11 - 7 = 4.
|
|
47
|
+
* DV2 = 4
|
|
48
|
+
*
|
|
49
|
+
* - O somatório encontrado é dividido por 11. O DV2 é 11 subtraído do resto da divisão. Se o
|
|
50
|
+
* resto for 10, o DV2 é 0.
|
|
51
|
+
*
|
|
52
|
+
* Fonte: https://www.devmedia.com.br/forum/validacao-de-cnh/372972
|
|
53
|
+
*
|
|
54
|
+
* @param {String} value Título eleitoral
|
|
55
|
+
* @returns {Boolean}
|
|
56
|
+
*/
|
|
57
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
58
|
+
exports.fake = exports.mask = exports.validate = exports.validateOrFail = exports.dv = void 0;
|
|
59
|
+
const utils_1 = require("./utils");
|
|
60
|
+
/**
|
|
61
|
+
* Calcula o Dígito Verificador de um RENAVAM informado
|
|
62
|
+
*
|
|
63
|
+
* @returns String Número fake de um cnh válido
|
|
64
|
+
*/
|
|
65
|
+
exports.dv = (value) => {
|
|
66
|
+
if (!value)
|
|
67
|
+
throw new Error('CNH não informado');
|
|
68
|
+
const cnh = utils_1.clearValue(value, 9);
|
|
69
|
+
const invalidList = utils_1.invalidListGenerator(9);
|
|
70
|
+
if (invalidList.includes(cnh)) {
|
|
71
|
+
throw new Error('CNH não pode ser uma sequência de números iguais');
|
|
72
|
+
}
|
|
73
|
+
const sum1 = utils_1.sumElementsByMultipliers(cnh.substring(0, 9), [2, 3, 4, 5, 6, 7, 8, 9, 10]);
|
|
74
|
+
const dv1 = utils_1.sumToDV(sum1);
|
|
75
|
+
const sum2 = utils_1.sumElementsByMultipliers(cnh.substring(0, 9) + dv1, [3, 4, 5, 6, 7, 8, 9, 10, 11, 2]);
|
|
76
|
+
const dv2 = utils_1.sumToDV(sum2);
|
|
77
|
+
return `${dv1}${dv2}`;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Valida um número de cnh e retorna uma exceção caso seja inválido
|
|
81
|
+
*
|
|
82
|
+
* @returns String Número fake de um cnh válido
|
|
83
|
+
*/
|
|
84
|
+
exports.validateOrFail = (value) => {
|
|
85
|
+
const cnh = utils_1.clearValue(value, 11);
|
|
86
|
+
if (exports.dv(cnh) !== cnh.substring(9, 11)) {
|
|
87
|
+
throw new Error('Dígito verificador inválido');
|
|
88
|
+
}
|
|
89
|
+
return true;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Valida um número de cnh
|
|
93
|
+
*
|
|
94
|
+
* @returns String Valor a ser validado
|
|
95
|
+
*/
|
|
96
|
+
exports.validate = (value) => {
|
|
97
|
+
try {
|
|
98
|
+
return exports.validateOrFail(value);
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* Aplica uma máscara a uma string
|
|
106
|
+
*
|
|
107
|
+
* @returns String string com a máscara aplicada
|
|
108
|
+
*/
|
|
109
|
+
exports.mask = (value) => utils_1.applyMask(value, '000000000-00');
|
|
110
|
+
/**
|
|
111
|
+
* Cria um número fake
|
|
112
|
+
*
|
|
113
|
+
* @returns String Número fake porém válido
|
|
114
|
+
*/
|
|
115
|
+
exports.fake = (withMask = false) => {
|
|
116
|
+
const value = utils_1.fakeNumber(9, true);
|
|
117
|
+
const cnh = `${value}${exports.dv(value)}`;
|
|
118
|
+
if (withMask)
|
|
119
|
+
return exports.mask(cnh);
|
|
120
|
+
return cnh;
|
|
121
|
+
};
|
|
122
|
+
exports.default = exports.validate;
|
|
123
|
+
//# sourceMappingURL=cnh.js.map
|
package/dist/cnh.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cnh.js","sourceRoot":"","sources":["../src/cnh.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;;;AAEH,mCAOgB;AAEhB;;;;GAIG;AACU,QAAA,EAAE,GAAG,CAAC,KAAsB,EAAU,EAAE;IACnD,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;IAEhD,MAAM,GAAG,GAAG,kBAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IAEhC,MAAM,WAAW,GAAG,4BAAoB,CAAC,CAAC,CAAC,CAAA;IAC3C,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;KACpE;IAED,MAAM,IAAI,GAAG,gCAAwB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IACxF,MAAM,GAAG,GAAG,eAAO,CAAC,IAAI,CAAC,CAAA;IAEzB,MAAM,IAAI,GAAG,gCAAwB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IAClG,MAAM,GAAG,GAAG,eAAO,CAAC,IAAI,CAAC,CAAA;IAEzB,OAAO,GAAG,GAAG,GAAG,GAAG,EAAE,CAAA;AACvB,CAAC,CAAA;AAED;;;;GAIG;AACU,QAAA,cAAc,GAAG,CAAC,KAAsB,EAAW,EAAE;IAChE,MAAM,GAAG,GAAG,kBAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAEjC,IAAI,UAAE,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;QACpC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;KAC/C;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED;;;;GAIG;AACU,QAAA,QAAQ,GAAG,CAAC,KAAsB,EAAW,EAAE;IAC1D,IAAI;QACF,OAAO,sBAAc,CAAC,KAAK,CAAC,CAAA;KAC7B;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,KAAK,CAAA;KACb;AACH,CAAC,CAAA;AAED;;;;GAIG;AACU,QAAA,IAAI,GAAG,CAAC,KAAsB,EAAU,EAAE,CAAC,iBAAS,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;AAExF;;;;GAIG;AACU,QAAA,IAAI,GAAG,CAAC,WAAoB,KAAK,EAAU,EAAE;IACxD,MAAM,KAAK,GAAG,kBAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAEjC,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,UAAE,CAAC,KAAK,CAAC,EAAE,CAAA;IAElC,IAAI,QAAQ;QAAE,OAAO,YAAI,CAAC,GAAG,CAAC,CAAA;IAE9B,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED,kBAAe,gBAAQ,CAAA"}
|
package/dist/cnh.test.js
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
// import { isCNH } from './cnh'
|
|
23
|
+
const cnh_1 = __importStar(require("./cnh"));
|
|
24
|
+
describe('CNH', () => {
|
|
25
|
+
test('isCNH() - Números válidos', () => {
|
|
26
|
+
const list = [
|
|
27
|
+
// como inteiro
|
|
28
|
+
50195131143,
|
|
29
|
+
58316794534,
|
|
30
|
+
50195471165,
|
|
31
|
+
// como string
|
|
32
|
+
'69044271146',
|
|
33
|
+
'46190906839',
|
|
34
|
+
// com máscara
|
|
35
|
+
'624729276-37',
|
|
36
|
+
];
|
|
37
|
+
list.forEach((cnh) => {
|
|
38
|
+
// t.true(isCNH(cnh), `CNH ${cnh} deve ser válida`)
|
|
39
|
+
expect(cnh_1.default(cnh)).toBeTruthy();
|
|
40
|
+
});
|
|
41
|
+
// t.end()
|
|
42
|
+
});
|
|
43
|
+
test('validate() - Números válidos', () => {
|
|
44
|
+
const list = [
|
|
45
|
+
// como inteiro
|
|
46
|
+
50195131143,
|
|
47
|
+
58316794534,
|
|
48
|
+
// como string
|
|
49
|
+
'69044271146',
|
|
50
|
+
'46190906839',
|
|
51
|
+
// com máscara
|
|
52
|
+
'624729276-37',
|
|
53
|
+
];
|
|
54
|
+
list.forEach((cnh) => {
|
|
55
|
+
// t.true(isCNH(cnh), `CNH ${cnh} deve ser válida`)
|
|
56
|
+
expect(cnh_1.validate(cnh)).toBeTruthy();
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
test('validate() - Números inválidos', () => {
|
|
60
|
+
const list = ['50195471143', '58316474534', '69044471146', '33333333333', '88888888888'];
|
|
61
|
+
list.forEach((cnh) => {
|
|
62
|
+
expect(cnh_1.validate(cnh)).toBeFalsy();
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
test('validateOrFail() - Números inválidos', () => {
|
|
66
|
+
const list = ['50195471143', '58316474534', '69044471146', '33333333333', '88888888888'];
|
|
67
|
+
list.forEach((cnh) => {
|
|
68
|
+
expect(() => cnh_1.validateOrFail(cnh)).toThrow();
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
test('Parâmetro não informado', () => {
|
|
72
|
+
expect(cnh_1.default('')).toBeFalsy();
|
|
73
|
+
expect(cnh_1.validate('')).toBeFalsy();
|
|
74
|
+
expect(() => cnh_1.validateOrFail('')).toThrow();
|
|
75
|
+
expect(() => cnh_1.dv('')).toThrow();
|
|
76
|
+
});
|
|
77
|
+
test('fake() - Gera fakes sem máscara', () => {
|
|
78
|
+
for (let i = 0; i < 5; i += 1) {
|
|
79
|
+
const cnh = cnh_1.fake();
|
|
80
|
+
expect(cnh_1.validate(cnh)).toBeTruthy();
|
|
81
|
+
expect(cnh).toHaveLength(11);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
test('fake() - Gera fakes com máscara', () => {
|
|
85
|
+
for (let i = 0; i < 5; i += 1) {
|
|
86
|
+
const cnh = cnh_1.fake(true);
|
|
87
|
+
expect(cnh_1.validate(cnh)).toBeTruthy();
|
|
88
|
+
expect(cnh).toHaveLength(12);
|
|
89
|
+
}
|
|
90
|
+
// t.end()
|
|
91
|
+
});
|
|
92
|
+
test('dv() - Verificando se o DV gerado está correto', () => {
|
|
93
|
+
const list = [
|
|
94
|
+
{ num: '501954711', expected: '65' },
|
|
95
|
+
{ num: 583164745, expected: '75' },
|
|
96
|
+
{ num: 690444711, expected: '17' },
|
|
97
|
+
];
|
|
98
|
+
list.forEach((item) => {
|
|
99
|
+
const calcDv = cnh_1.dv(item.num);
|
|
100
|
+
expect(calcDv).toBe(item.expected);
|
|
101
|
+
expect(typeof calcDv).toBe('string');
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
test('mask() - Testando se a máscara foi gerada corretamente', () => {
|
|
105
|
+
const list = [
|
|
106
|
+
{ value: 50195471143, expected: '501954711-43' },
|
|
107
|
+
{ value: 58316474534, expected: '583164745-34' },
|
|
108
|
+
{ value: 69044471146, expected: '690444711-46' },
|
|
109
|
+
];
|
|
110
|
+
list.forEach((item) => {
|
|
111
|
+
const masked = cnh_1.mask(item.value);
|
|
112
|
+
expect(masked).toBe(item.expected);
|
|
113
|
+
expect(masked).toHaveLength(12);
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
//# sourceMappingURL=cnh.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cnh.test.js","sourceRoot":"","sources":["../src/cnh.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cnpj.js
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* isCNPJ()
|
|
4
|
+
* Calcula se um CNPJ é válido
|
|
5
|
+
*
|
|
6
|
+
* @doc
|
|
7
|
+
* - CNPJ deve possuir 14 dígitos no formato 00.000.000/0000-00
|
|
8
|
+
*
|
|
9
|
+
* - Os caracteres 1 a 8 são números sequenciais definidos pela Receita Federal
|
|
10
|
+
*
|
|
11
|
+
* - Os caracteres 9 a 12 são a identificação das filiais da empresa.
|
|
12
|
+
*
|
|
13
|
+
* - Os caracteres 13 e 14 são os dígitos verificadores
|
|
14
|
+
*
|
|
15
|
+
* 1) Partes do número
|
|
16
|
+
* _______________________________ _______________ _______
|
|
17
|
+
* | Número | Filiais | DV |
|
|
18
|
+
* | 1 1 . 2 2 2 . 3 3 3 / 0 0 0 1 - X Y |
|
|
19
|
+
* |_______________________________|_______________|_______|
|
|
20
|
+
*
|
|
21
|
+
* 2) Cálculo do primeiro DV.
|
|
22
|
+
*
|
|
23
|
+
* - Soma-se o produto das algarismos 1 a 12 pelos números 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
|
|
24
|
+
*
|
|
25
|
+
* 1 1 2 2 2 3 3 3 0 0 0 1
|
|
26
|
+
* x x x x x x x x x x x x
|
|
27
|
+
* 5 4 3 2 9 8 7 6 5 4 3 2
|
|
28
|
+
* = 5 +4 +6 +4 +18 +24 +21 +18 +0 +0 +0 +2 = 102
|
|
29
|
+
*
|
|
30
|
+
* - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
|
|
31
|
+
* 102 / 11 tem resto 8. 11 - 3 = 8. DV1 é 8.
|
|
32
|
+
* Obs.: Caso o cálculo de DV1 retorne 10, o resultado será 0.
|
|
33
|
+
*
|
|
34
|
+
* 3) Cálculo do segundo DV.
|
|
35
|
+
*
|
|
36
|
+
* - Soma-se o produto das algarismos 1 a 13 (incluindo o DV1 calculado) pelos
|
|
37
|
+
* números 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2.
|
|
38
|
+
*
|
|
39
|
+
* 1 1 2 2 2 3 3 3 0 0 0 1 8
|
|
40
|
+
* x x x x x x x x x x x x x
|
|
41
|
+
* 6 5 4 3 2 9 8 7 6 5 4 3 2
|
|
42
|
+
* = 6 +5 +8 +6 +4 +27 +24 +21 +0 +0 +0 +3 +16 = 120
|
|
43
|
+
*
|
|
44
|
+
* - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
|
|
45
|
+
* 120 / 11 tem resto 10. 11 - 10 = 1. DV2 é 1.
|
|
46
|
+
* Obs.: Caso o cálculo de DV2 retorne 10, o resultado será 0.
|
|
47
|
+
*
|
|
48
|
+
* Fonte: http://www.macoratti.net/alg_cnpj.htm
|
|
49
|
+
*
|
|
50
|
+
* @param {String} value Título eleitoral
|
|
51
|
+
* @returns {Boolean}
|
|
52
|
+
*/
|
|
53
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
|
+
exports.validate = exports.validateOrFail = exports.fake = exports.mask = exports.dv = void 0;
|
|
55
|
+
const utils_1 = require("./utils");
|
|
56
|
+
exports.dv = (value) => {
|
|
57
|
+
const cnpj = utils_1.clearValue(value, 12);
|
|
58
|
+
const blackList = utils_1.invalidListGenerator(12);
|
|
59
|
+
if (blackList.includes(cnpj)) {
|
|
60
|
+
throw new Error('CNPJ é obrigatório');
|
|
61
|
+
}
|
|
62
|
+
const sum1 = utils_1.sumElementsByMultipliers(cnpj.substring(0, 12), '543298765432');
|
|
63
|
+
const dv1 = utils_1.sumToDV(sum1);
|
|
64
|
+
const sum2 = utils_1.sumElementsByMultipliers(cnpj.substring(0, 12) + dv1, '6543298765432');
|
|
65
|
+
const dv2 = utils_1.sumToDV(sum2);
|
|
66
|
+
return `${dv1}${dv2}`;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Aplica uma máscara ao número informado
|
|
70
|
+
*
|
|
71
|
+
* @param {String} value Número de Processo
|
|
72
|
+
* @returns {String} Valor com a máscara
|
|
73
|
+
*/
|
|
74
|
+
exports.mask = (value) => utils_1.applyMask(value, '00.000.000/0000-00');
|
|
75
|
+
/**
|
|
76
|
+
*
|
|
77
|
+
*
|
|
78
|
+
*/
|
|
79
|
+
exports.fake = (withMask = false) => {
|
|
80
|
+
const num = utils_1.fakeNumber(12, true);
|
|
81
|
+
const cnpj = `${num}${exports.dv(num)}`;
|
|
82
|
+
if (withMask)
|
|
83
|
+
return exports.mask(cnpj);
|
|
84
|
+
return cnpj;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* validate()
|
|
88
|
+
* Valida se um número de processo está correto
|
|
89
|
+
*
|
|
90
|
+
*/
|
|
91
|
+
exports.validateOrFail = (value) => {
|
|
92
|
+
const cnpj = utils_1.clearValue(value, 14);
|
|
93
|
+
if (exports.dv(cnpj) !== cnpj.substring(12, 14)) {
|
|
94
|
+
throw new Error('Dígito verificador inválido');
|
|
95
|
+
}
|
|
96
|
+
return true;
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* validate()
|
|
100
|
+
* Valida se um número de processo está correto
|
|
101
|
+
*
|
|
102
|
+
*/
|
|
103
|
+
exports.validate = (value) => {
|
|
104
|
+
try {
|
|
105
|
+
return exports.validateOrFail(value);
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
exports.default = exports.validate;
|
|
112
|
+
//# sourceMappingURL=cnpj.js.map
|
package/dist/cnpj.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cnpj.js","sourceRoot":"","sources":["../src/cnpj.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;;;AAEH,mCAOgB;AAEH,QAAA,EAAE,GAAG,CAAC,KAAsB,EAAU,EAAE;IACnD,MAAM,IAAI,GAAG,kBAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAElC,MAAM,SAAS,GAAG,4BAAoB,CAAC,EAAE,CAAC,CAAA;IAC1C,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;KACtC;IAED,MAAM,IAAI,GAAG,gCAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,cAAc,CAAC,CAAA;IAC5E,MAAM,GAAG,GAAG,eAAO,CAAC,IAAI,CAAC,CAAA;IAEzB,MAAM,IAAI,GAAG,gCAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,eAAe,CAAC,CAAA;IACnF,MAAM,GAAG,GAAG,eAAO,CAAC,IAAI,CAAC,CAAA;IAEzB,OAAO,GAAG,GAAG,GAAG,GAAG,EAAE,CAAA;AACvB,CAAC,CAAA;AAED;;;;;GAKG;AACU,QAAA,IAAI,GAAG,CAAC,KAAsB,EAAU,EAAE,CAAC,iBAAS,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAA;AAE9F;;;GAGG;AACU,QAAA,IAAI,GAAG,CAAC,WAAoB,KAAK,EAAU,EAAE;IACxD,MAAM,GAAG,GAAG,kBAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAEhC,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,UAAE,CAAC,GAAG,CAAC,EAAE,CAAA;IAE/B,IAAI,QAAQ;QAAE,OAAO,YAAI,CAAC,IAAI,CAAC,CAAA;IAC/B,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED;;;;GAIG;AACU,QAAA,cAAc,GAAG,CAAC,KAAsB,EAAW,EAAE;IAChE,MAAM,IAAI,GAAG,kBAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAElC,IAAI,UAAE,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;QACvC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;KAC/C;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED;;;;GAIG;AACU,QAAA,QAAQ,GAAG,CAAC,KAAsB,EAAW,EAAE;IAC1D,IAAI;QACF,OAAO,sBAAc,CAAC,KAAK,CAAC,CAAA;KAC7B;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,KAAK,CAAA;KACb;AACH,CAAC,CAAA;AAED,kBAAe,gBAAQ,CAAA"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
// import { isCNPJ } from './cnpj'
|
|
23
|
+
const cnpj_1 = __importStar(require("./cnpj"));
|
|
24
|
+
describe('CNPJ', () => {
|
|
25
|
+
test('isCNPJ() - Números válidos', () => {
|
|
26
|
+
const list = [
|
|
27
|
+
// Com máscara
|
|
28
|
+
'11.222.333/0001-81',
|
|
29
|
+
'73.797.980/0001-79',
|
|
30
|
+
'06.946.762/0001-61',
|
|
31
|
+
'96.051.576/0001-57',
|
|
32
|
+
'55.585.709/0001-98',
|
|
33
|
+
// inteiro
|
|
34
|
+
99360938000180,
|
|
35
|
+
23693443000100,
|
|
36
|
+
// string
|
|
37
|
+
'32432147000147',
|
|
38
|
+
'91951438000100',
|
|
39
|
+
];
|
|
40
|
+
list.forEach((cnpj) => {
|
|
41
|
+
expect(cnpj_1.default(cnpj)).toBeTruthy();
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
test('validate() - Números válidos', () => {
|
|
45
|
+
const list = [
|
|
46
|
+
// Com máscara
|
|
47
|
+
'11.222.333/0001-81',
|
|
48
|
+
'73.797.980/0001-79',
|
|
49
|
+
'06.946.762/0001-61',
|
|
50
|
+
'96.051.576/0001-57',
|
|
51
|
+
'55.585.709/0001-98',
|
|
52
|
+
// inteiro
|
|
53
|
+
99360938000180,
|
|
54
|
+
23693443000100,
|
|
55
|
+
// string
|
|
56
|
+
'32432147000147',
|
|
57
|
+
'91951438000100',
|
|
58
|
+
];
|
|
59
|
+
list.forEach((cnpj) => {
|
|
60
|
+
expect(cnpj_1.validate(cnpj)).toBeTruthy();
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
test('validate() - Números inválidos', () => {
|
|
64
|
+
const list = [
|
|
65
|
+
'53.797.980/0001-79',
|
|
66
|
+
'36.946.762/0001-61',
|
|
67
|
+
'26.051.576/0001-57',
|
|
68
|
+
'85.585.709/0001-98',
|
|
69
|
+
'39360938000180',
|
|
70
|
+
'93693443000100',
|
|
71
|
+
'12432147000147',
|
|
72
|
+
'61951438000100',
|
|
73
|
+
'11111111111111',
|
|
74
|
+
];
|
|
75
|
+
list.forEach((cnpj) => {
|
|
76
|
+
expect(cnpj_1.validate(cnpj)).toBeFalsy();
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
test('validateOrFail() - Números inválidos', () => {
|
|
80
|
+
const list = [
|
|
81
|
+
'53.797.980/0001-79',
|
|
82
|
+
'36.946.762/0001-61',
|
|
83
|
+
'26.051.576/0001-57',
|
|
84
|
+
'85.585.709/0001-98',
|
|
85
|
+
'39360938000180',
|
|
86
|
+
'93693443000100',
|
|
87
|
+
'12432147000147',
|
|
88
|
+
'61951438000100',
|
|
89
|
+
'11111111111111',
|
|
90
|
+
];
|
|
91
|
+
list.forEach((cnpj) => {
|
|
92
|
+
expect(() => cnpj_1.validateOrFail(cnpj)).toThrow();
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
test('Parâmetro não informado', () => {
|
|
96
|
+
expect(cnpj_1.default('')).toBeFalsy();
|
|
97
|
+
expect(cnpj_1.validate('')).toBeFalsy();
|
|
98
|
+
expect(() => cnpj_1.validateOrFail('')).toThrow();
|
|
99
|
+
expect(() => cnpj_1.dv('')).toThrow();
|
|
100
|
+
});
|
|
101
|
+
test('fake() - Gera fakes sem máscara', () => {
|
|
102
|
+
for (let i = 0; i < 5; i += 1) {
|
|
103
|
+
const cnpj = cnpj_1.fake();
|
|
104
|
+
expect(cnpj_1.validate(cnpj)).toBeTruthy();
|
|
105
|
+
expect(cnpj).toHaveLength(14);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
test('fake() - Gera fakes com máscara', () => {
|
|
109
|
+
for (let i = 0; i < 5; i += 1) {
|
|
110
|
+
const cnpj = cnpj_1.fake(true);
|
|
111
|
+
expect(cnpj_1.validate(cnpj)).toBeTruthy();
|
|
112
|
+
expect(cnpj).toHaveLength(18);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
test('dv() - Verificando se o DV gerado está correto', () => {
|
|
116
|
+
const list = [
|
|
117
|
+
{ num: '112223330001', expected: '81' },
|
|
118
|
+
{ num: 993609380001, expected: '80' },
|
|
119
|
+
{ num: '324321470001', expected: '47' },
|
|
120
|
+
];
|
|
121
|
+
list.forEach((item) => {
|
|
122
|
+
const calcDv = cnpj_1.dv(item.num);
|
|
123
|
+
expect(calcDv).toBe(item.expected);
|
|
124
|
+
expect(typeof calcDv).toBe('string');
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
test('mask() - Testando se a máscara foi gerada corretamente', () => {
|
|
128
|
+
const list = [
|
|
129
|
+
{ value: '11222333000181', expected: '11.222.333/0001-81' },
|
|
130
|
+
{ value: 99360938000180, expected: '99.360.938/0001-80' },
|
|
131
|
+
{ value: '32432147000147', expected: '32.432.147/0001-47' },
|
|
132
|
+
{ value: 432147000147, expected: '00.432.147/0001-47' },
|
|
133
|
+
];
|
|
134
|
+
list.forEach((item) => {
|
|
135
|
+
const masked = cnpj_1.mask(item.value);
|
|
136
|
+
expect(masked).toBe(item.expected);
|
|
137
|
+
expect(masked).toHaveLength(18);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
//# sourceMappingURL=cnpj.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cnpj.test.js","sourceRoot":"","sources":["../src/cnpj.test.ts"],"names":[],"mappings":"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"}
|