validation-br 1.0.0-b → 1.0.0-c

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 (63) hide show
  1. package/.eslintcache +1 -0
  2. package/package.json +64 -2
  3. package/dist/cnh.test.js +0 -117
  4. package/dist/cnh.test.js.map +0 -1
  5. package/dist/cnpj.test.js +0 -141
  6. package/dist/cnpj.test.js.map +0 -1
  7. package/dist/cpf.test.js +0 -130
  8. package/dist/cpf.test.js.map +0 -1
  9. package/dist/index.test.js +0 -33
  10. package/dist/index.test.js.map +0 -1
  11. package/dist/judicialProcess.test.js +0 -123
  12. package/dist/judicialProcess.test.js.map +0 -1
  13. package/dist/pisPasep.test.js +0 -129
  14. package/dist/pisPasep.test.js.map +0 -1
  15. package/dist/postalCode.test.js +0 -135
  16. package/dist/postalCode.test.js.map +0 -1
  17. package/dist/renavam.test.js +0 -113
  18. package/dist/renavam.test.js.map +0 -1
  19. package/dist/tituloEleitor.test.js +0 -132
  20. package/dist/tituloEleitor.test.js.map +0 -1
  21. package/dist/utils-applyMask.test.js +0 -17
  22. package/dist/utils-applyMask.test.js.map +0 -1
  23. package/dist/utils-clearValue.test.js +0 -50
  24. package/dist/utils-clearValue.test.js.map +0 -1
  25. package/dist/utils-fakeNumber.test.js +0 -17
  26. package/dist/utils-fakeNumber.test.js.map +0 -1
  27. package/dist/utils-insertAtPosition.test.js +0 -16
  28. package/dist/utils-insertAtPosition.test.js.map +0 -1
  29. package/dist/utils-invalidListGenerator.test.js +0 -23
  30. package/dist/utils-invalidListGenerator.test.js.map +0 -1
  31. package/dist/utils-removeFromPosition.test.js +0 -16
  32. package/dist/utils-removeFromPosition.test.js.map +0 -1
  33. package/dist/utils-sumElementsByMultipliers.test.js +0 -32
  34. package/dist/utils-sumElementsByMultipliers.test.js.map +0 -1
  35. package/dist/utils-sumToDV.test.js +0 -16
  36. package/dist/utils-sumToDV.test.js.map +0 -1
  37. package/src/cnh.test.ts +0 -114
  38. package/src/cnh.ts +0 -140
  39. package/src/cnpj.test.ts +0 -136
  40. package/src/cnpj.ts +0 -128
  41. package/src/cpf.test.ts +0 -125
  42. package/src/cpf.ts +0 -150
  43. package/src/index.test.ts +0 -35
  44. package/src/index.ts +0 -19
  45. package/src/judicialProcess.test.ts +0 -118
  46. package/src/judicialProcess.ts +0 -167
  47. package/src/pisPasep.test.ts +0 -124
  48. package/src/pisPasep.ts +0 -128
  49. package/src/postalCode.test.ts +0 -132
  50. package/src/postalCode.ts +0 -164
  51. package/src/renavam.test.ts +0 -110
  52. package/src/renavam.ts +0 -122
  53. package/src/tituloEleitor.test.ts +0 -129
  54. package/src/tituloEleitor.ts +0 -146
  55. package/src/utils-applyMask.test.ts +0 -17
  56. package/src/utils-clearValue.test.ts +0 -55
  57. package/src/utils-fakeNumber.test.ts +0 -19
  58. package/src/utils-insertAtPosition.test.ts +0 -15
  59. package/src/utils-invalidListGenerator.test.ts +0 -27
  60. package/src/utils-removeFromPosition.test.ts +0 -15
  61. package/src/utils-sumElementsByMultipliers.test.ts +0 -34
  62. package/src/utils-sumToDV.test.ts +0 -16
  63. package/src/utils.ts +0 -172
package/src/cpf.test.ts DELETED
@@ -1,125 +0,0 @@
1
- import isCPF, { dv, fake, mask, validate, validateOrFail } from './cpf'
2
-
3
- describe('CPF', () => {
4
- test('isCPF() - Números válidos', () => {
5
- const list = [
6
- // masked
7
- '133.782.710-00',
8
- '400.448.260-79',
9
- // integer
10
- 8796742020, // começa com zero
11
- 74172316085,
12
- // string
13
- '15886489070',
14
- '90889477086',
15
- ]
16
-
17
- list.forEach((cpf) => {
18
- expect(isCPF(cpf)).toBeTruthy()
19
- })
20
- })
21
-
22
- test('validate() - Números válidos', () => {
23
- const list = [
24
- // masked
25
- '133.782.710-00',
26
- '400.448.260-79',
27
- // integer
28
- 8796742020, // começa com zero
29
- 74172316085,
30
- // string
31
- '15886489070',
32
- '90889477086',
33
- ]
34
-
35
- list.forEach((cpf) => {
36
- expect(validate(cpf)).toBeTruthy()
37
- })
38
- })
39
-
40
- test('validate() - Números inválidos', () => {
41
- const list = [
42
- '287.967.420-20',
43
- '333.782.710-00',
44
- '200.448.260-79',
45
- '24172316085',
46
- '25886489070',
47
- '20889477086',
48
- '11111111111',
49
- ]
50
-
51
- list.forEach((cpf) => {
52
- expect(validate(cpf)).toBeFalsy()
53
- })
54
- })
55
-
56
- test('validateOrFail() - Números inválidos', () => {
57
- const list = [
58
- '287.967.420-20',
59
- '333.782.710-00',
60
- '200.448.260-79',
61
- '24172316085',
62
- '25886489070',
63
- '20889477086',
64
- '11111111111',
65
- ]
66
-
67
- list.forEach((cpf) => {
68
- expect(() => validateOrFail(cpf)).toThrow()
69
- })
70
- })
71
-
72
- test('Parâmetro não informado', () => {
73
- expect(isCPF('')).toBeFalsy()
74
- expect(validate('')).toBeFalsy()
75
- expect(() => validateOrFail('')).toThrow()
76
- expect(() => dv('')).toThrow()
77
- })
78
-
79
- test('fake() - Gera fakes sem máscara', () => {
80
- for (let i = 0; i < 5; i += 1) {
81
- const cpf = fake()
82
- expect(validate(cpf)).toBeTruthy()
83
- expect(cpf).toHaveLength(11)
84
- }
85
- })
86
-
87
- test('fake() - Gera fakes com máscara', () => {
88
- for (let i = 0; i < 5; i += 1) {
89
- const cpf = fake(true)
90
- expect(validate(cpf)).toBeTruthy()
91
- expect(cpf).toHaveLength(14)
92
- }
93
- })
94
-
95
- test('dv() - Verificando se o DV gerado está correto', () => {
96
- const list = [
97
- { num: '741723160', expected: '85' },
98
- { num: 158864890, expected: '70' },
99
- { num: '908894770', expected: '86' },
100
- ]
101
-
102
- list.forEach((item) => {
103
- const calcDv = dv(item.num)
104
-
105
- expect(calcDv).toBe(item.expected)
106
- expect(typeof calcDv).toBe('string')
107
- })
108
- })
109
-
110
- test('mask() - Testando se a máscara foi gerada corretamente', () => {
111
- const list = [
112
- { num: '74172316085', expected: '741.723.160-85' },
113
- { num: 15886489070, expected: '158.864.890-70' },
114
- { num: '90889477086', expected: '908.894.770-86' },
115
- { num: 889477086, expected: '008.894.770-86' },
116
- ]
117
-
118
- list.forEach((item) => {
119
- const masked = mask(item.num)
120
-
121
- expect(masked).toBe(item.expected)
122
- expect(masked).toHaveLength(14)
123
- })
124
- })
125
- })
package/src/cpf.ts DELETED
@@ -1,150 +0,0 @@
1
- /**
2
- * isCPF()
3
- * Calcula se um CPF é válido
4
- *
5
- * @doc
6
- * CPF deve possuir 11 dígitos.
7
- *
8
- * - Os caracteres 1 a 8 são números sequenciais definidos pela Receita Federal
9
- *
10
- * - O caractere 9 refere-se à região fiscal emissora do documento
11
- * 1 – DF, GO, MS, MT e TO
12
- * 2 – AC, AM, AP, PA, RO e RR
13
- * 3 – CE, MA e PI
14
- * 4 – AL, PB, PE, RN
15
- * 5 – BA e SE
16
- * 6 – MG
17
- * 7 – ES e RJ
18
- * 8 – SP
19
- * 9 – PR e SC
20
- * 0 – RS
21
- *
22
- * - Os caracteres 10 e 11 são dígitos verificadores.
23
- *
24
- * 1) Partes do número
25
- * ------------------------------------------------
26
- * | Número | R | DV |
27
- * 2 8 0 . 0 1 2 . 3 8 9 - 3 8
28
- *
29
- * 2) Cálculo do primeiro DV.
30
- *
31
- * - Soma-se o produto das algarismos 1 a 9 pelos números 10, 9, 8, 7, 6, 5, 4, 3, 2
32
- *
33
- * 2 8 0 0 1 2 3 8 9
34
- * x x x x x x x x x
35
- * 10 9 8 7 6 5 4 3 2
36
- * = 20 +72 +0 +0 +6 +10 +12 +24 +18 = 162
37
- *
38
- * - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
39
- * 162 / 11 tem resto 8. 11 - 8 = 3. DV1 é 3.
40
- * Obs.: Caso o cálculo de DV1 retorne 10, o resultado será 0.
41
- *
42
- * 3) Cálculo do segundo DV.
43
- *
44
- * - Soma-se o produto das algarismos 1 a 10 pelos números 11, 10, 9, 8, 7, 6, 5, 4, 3, 2
45
- *
46
- * 2 8 0 0 1 2 3 8 9 3
47
- * x x x x x x x x x x
48
- * 11 10 9 8 7 6 5 4 3 2
49
- * = 22 +80 +0 +0 +7 +12 +15 +32 +27 = 201
50
- *
51
- * - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
52
- * 201 / 11 tem resto 3. 11 - 3 = 8. DV2 é 8.
53
- * Obs.: Caso o cálculo de DV2 retorne 10, o resultado será 0.
54
- *
55
- * Fonte: http://clubes.obmep.org.br/blog/a-matematica-nos-documentos-cpf/
56
- *
57
- * @param {String} value Título eleitoral
58
- * @returns {Boolean}
59
- */
60
-
61
- import {
62
- invalidListGenerator,
63
- sumElementsByMultipliers,
64
- sumToDV,
65
- clearValue,
66
- fakeNumber,
67
- applyMask,
68
- } from './utils'
69
-
70
- /**
71
- * dv()
72
- * Calcula o dígito verificador de um CPF
73
- *
74
- * @param {Number|String} value
75
- * @returns {String}
76
- */
77
- export const dv = (value: string | number): string => {
78
- if (!value) throw new Error('CPF não informado')
79
-
80
- const cpf = clearValue(value, 9)
81
-
82
- const invalidList = invalidListGenerator(9)
83
- if (invalidList.includes(cpf)) {
84
- throw new Error('CPF não pode ser uma sequência de números iguais')
85
- }
86
-
87
- const sum1 = sumElementsByMultipliers(cpf, [10, 9, 8, 7, 6, 5, 4, 3, 2])
88
- const dv1 = sumToDV(sum1)
89
-
90
- const sum2 = sumElementsByMultipliers(cpf + dv1, [11, 10, 9, 8, 7, 6, 5, 4, 3, 2])
91
- const dv2 = sumToDV(sum2)
92
-
93
- return `${dv1}${dv2}`
94
- }
95
-
96
- /**
97
- * Aplica uma máscara ao número informado
98
- *
99
- * @param {String} value Número de Processo
100
- * @returns {String} Valor com a máscara
101
- */
102
- export const mask = (value: string | number): string => applyMask(value, '000.000.000-00')
103
-
104
- /**
105
- * fake()
106
- * Gera um número válido
107
- *
108
- * @returns {String}
109
- */
110
- export const fake = (withMask: boolean = false): string => {
111
- const num = fakeNumber(9, true)
112
-
113
- const cpf = `${num}${dv(num)}`
114
-
115
- if (withMask) return mask(cpf)
116
- return cpf
117
- }
118
-
119
- /**
120
- * validateOrFail()
121
- * Valida se um número de processo está correto e
122
- * retorna uma exceção se não estiver
123
- *
124
- * @returns {Boolean}
125
- */
126
- export const validateOrFail = (value: string | number): boolean => {
127
- const cpf = clearValue(value, 11)
128
-
129
- if (dv(cpf) !== cpf.substring(9, 11)) {
130
- throw new Error('Dígito verificador inválido')
131
- }
132
-
133
- return true
134
- }
135
-
136
- /**
137
- * validate()
138
- * Valida se um número de processo está correto
139
- *
140
- * @returns {Boolean}
141
- */
142
- export const validate = (value: string | number): boolean => {
143
- try {
144
- return validateOrFail(value)
145
- } catch (error) {
146
- return false
147
- }
148
- }
149
-
150
- export default validate
package/src/index.test.ts DELETED
@@ -1,35 +0,0 @@
1
- import ValidateBR from './index'
2
-
3
- describe('ValidateBR', () => {
4
- test('Deve importar isCNH', () => {
5
- expect(ValidateBR.isCNH).toBeDefined()
6
- })
7
-
8
- test('Deve importar isCNPJ', () => {
9
- expect(ValidateBR.isCNPJ).toBeDefined()
10
- })
11
-
12
- test('Deve importar isCPF', () => {
13
- expect(ValidateBR.isCPF).toBeDefined()
14
- })
15
-
16
- test('Deve importar isJudicialProcess', () => {
17
- expect(ValidateBR.isJudicialProcess).toBeDefined()
18
- })
19
-
20
- test('Deve importar isPIS', () => {
21
- expect(ValidateBR.isPIS).toBeDefined()
22
- })
23
-
24
- test('Deve importar isPostalCode', () => {
25
- expect(ValidateBR.isPostalCode).toBeDefined()
26
- })
27
-
28
- test('Deve importar isRenavam', () => {
29
- expect(ValidateBR.isRenavam).toBeDefined()
30
- })
31
-
32
- test('Deve importar isTituloEleitor', () => {
33
- expect(ValidateBR.isTituloEleitor).toBeDefined()
34
- })
35
- })
package/src/index.ts DELETED
@@ -1,19 +0,0 @@
1
- import isCNH from './cnh'
2
- import isCNPJ from './cnpj'
3
- import isCPF from './cpf'
4
- import isJudicialProcess from './judicialProcess'
5
- import isPIS from './pisPasep'
6
- import isPostalCode from './postalCode'
7
- import isRenavam from './renavam'
8
- import isTituloEleitor from './tituloEleitor'
9
-
10
- export default {
11
- isCNH,
12
- isCNPJ,
13
- isCPF,
14
- isJudicialProcess,
15
- isPIS,
16
- isPostalCode,
17
- isRenavam,
18
- isTituloEleitor,
19
- }
@@ -1,118 +0,0 @@
1
- import isJudicialProcess, { dv, fake, mask, validate, validateOrFail } from './judicialProcess'
2
-
3
- describe('JudicialProcess', () => {
4
- test('isJudicialProcess() - Números válidos', () => {
5
- const list = [
6
- '20802520125150049',
7
- '61052838320098130024',
8
- '00110060720168200100',
9
- '08002785520134058400',
10
- '08002732820164058400',
11
- ]
12
-
13
- list.forEach((judicialProcess) => {
14
- expect(isJudicialProcess(judicialProcess)).toBeTruthy()
15
- })
16
- })
17
-
18
- test('validate() - Números válidos', () => {
19
- const list = [
20
- '20802520125150049',
21
- '61052838320098130024',
22
- '00110060720168200100',
23
- '08002785520134058400',
24
- '08002732820164058400',
25
- ]
26
-
27
- list.forEach((judicialProcess) => {
28
- expect(validate(judicialProcess)).toBeTruthy()
29
- })
30
- })
31
-
32
- test('validate() - Números inválidos', () => {
33
- const list = [
34
- '20802520125150044',
35
- '61052838320098130023',
36
- '00110060720168200102',
37
- '08002785520134058401',
38
- '08002732820164058406',
39
- '08002732820160058400', // Órgão judiciário igual a 0
40
- ]
41
-
42
- list.forEach((judicialProcess) => {
43
- expect(validate(judicialProcess)).toBeFalsy()
44
- })
45
- })
46
-
47
- test('validateOrFail() - Números inválidos', () => {
48
- const list = [
49
- '20802520125150044',
50
- '61052838320098130023',
51
- '00110060720168200102',
52
- '08002785520134058401',
53
- '08002732820164058406',
54
- '08002732820160058400', // Órgão judiciário igual a 0
55
- ]
56
-
57
- list.forEach((judicialProcess) => {
58
- expect(() => validateOrFail(judicialProcess)).toThrow()
59
- })
60
- })
61
-
62
- test('Parâmetro não informado', () => {
63
- expect(isJudicialProcess('')).toBeFalsy()
64
- expect(validate('')).toBeFalsy()
65
- expect(() => validateOrFail('')).toThrow()
66
- expect(() => dv('')).toThrow()
67
- })
68
-
69
- test('fake() - Gera fakes sem máscara', () => {
70
- for (let i = 0; i < 5; i += 1) {
71
- const judicialProcess = fake()
72
- expect(validate(judicialProcess)).toBeTruthy()
73
- expect(judicialProcess).toHaveLength(20)
74
- }
75
- })
76
-
77
- test('fake() - Gera fakes com máscara', () => {
78
- for (let i = 0; i < 5; i += 1) {
79
- const judicialProcess = fake(true)
80
- expect(validate(judicialProcess)).toBeTruthy()
81
- expect(judicialProcess).toHaveLength(25)
82
- }
83
- })
84
-
85
- test('dv() - Verificando se o DV gerado está correto', () => {
86
- const list = [
87
- { num: '000208020125150049', expected: '25' },
88
- { num: '610528320098130024', expected: '83' },
89
- { num: '001100620168200100', expected: '07' },
90
- { num: '080027820134058400', expected: '55' },
91
- { num: '080027320164058400', expected: '28' },
92
- ]
93
-
94
- list.forEach((item) => {
95
- const calcDv = dv(item.num)
96
-
97
- expect(calcDv).toBe(item.expected)
98
- expect(typeof calcDv).toBe('string')
99
- })
100
- })
101
-
102
- test('mask() - Testando se a máscara foi gerada corretamente', () => {
103
- const list = [
104
- { num: '20802520125150049', expected: '0002080-25.2012.5.15.0049' },
105
- { num: '61052838320098130024', expected: '6105283-83.2009.8.13.0024' },
106
- { num: '00110060720168200100', expected: '0011006-07.2016.8.20.0100' },
107
- { num: '08002785520134058400', expected: '0800278-55.2013.4.05.8400' },
108
- { num: '08002732820164058400', expected: '0800273-28.2016.4.05.8400' },
109
- ]
110
-
111
- list.forEach((item) => {
112
- const masked = mask(item.num)
113
-
114
- expect(masked).toBe(item.expected)
115
- expect(masked).toHaveLength(25)
116
- })
117
- })
118
- })
@@ -1,167 +0,0 @@
1
- /**
2
- * judicialProcess
3
- * Valida, mascara e cria números de processos judiciais
4
- *
5
- * @link
6
- * https://juslaboris.tst.jus.br/bitstream/handle/20.500.12178/30318/2008_res0065_cnj_rep01.pdf?sequence=2
7
- * http://ghiorzi.org/DVnew.htm#f
8
- *
9
- * @doc
10
- * Os números de processos judiciais são usados a partir de 2010 para unificar a
11
- * numeração de processos no Brasil e são usados em todos os tribunais.
12
- *
13
- * O número do processo, sem os caracteres especiais, devem possuir até 20 números
14
- * e deve seguir o padrão abaixo:
15
- *
16
- * 1) Partes do número
17
- * 0002080-25.2012.5.15.0049
18
- * NNNNNNN-DD.AAAA.J.TR.OOOO
19
- * |______|__|____|_|__|____|
20
- * | | | | | |----> Unidade de origem do processo com 4 caracteres
21
- * | | | | |--------> TR=Tribunal do segmento do poder judiciário com 2 caracteres
22
- * | | | |----------> J=Órgão do poder Judiciário com 1 caractere
23
- * | | |-------------> Ano do ajuizamento do processo com 4 caracteres
24
- * | |-----------------> Dígito verificador com 2 caracteres
25
- * |----------------------> Número sequencial do Processo, por unidade de
26
- * origem, reiniciado anualmente com 7 caracteres
27
- *
28
- * Órgãos do Poder Judiciário
29
- * 1 - Supremo Tribunal Federal
30
- * 2 - Conselho Nacional de Justiça
31
- * 3 - Superior Tribunal de Justiça
32
- * 4 - Justiça Federal
33
- * 5 - Justiça do Trabalho
34
- * 6 - Justiça Eleitoral
35
- * 7 - Justiça Militar da União
36
- * 8 - Justiça dos Estados e do Distrito Federal e Territórios
37
- * 9 - Justiça Militar Estadual
38
- *
39
- *
40
- * 2) Dígito Verificador
41
- *
42
- * O algoritmo usado para o cálculo do DV chama-se Módulo 97 de Base 10 (ISO 7064).
43
- *
44
- * Nota: O número do processo possui 20 caracteres e ultrapassa o tamanho máximo
45
- * do inteiro em javascript, impedindo que façamos o cálculo diretamente, desta
46
- * forma, será nacessária uma fatoração para que o resultado seja o correto.
47
- *
48
- * 2.1) Cálculo do DV
49
- * - Caso o DV seja conhecido, ele precisa ser removido do número e colocado
50
- * como "00" ao final. Caso não esteja incluso no número, adicione '00' ao final.
51
- *
52
- * Ex.: O processo "00020802520125150049", cujo dv é "25", será calculado como
53
- * "000208020125150049" e receberá "00" ao final. O número usado para o cálculo
54
- * do DV será "00020802012515004900"
55
- *
56
- * 2.2) Etapas de Cálculo
57
- *
58
- * 00020802012515004900
59
- * ↓↓
60
- * DV ao final como "00"
61
- *
62
- * - Aplicamos o MOD 97 aos caracteres de 0 a 7 para calcular a primeira parte
63
- * part1 = 0002080 % 97 = 43
64
- *
65
- * - Concatenamos part1 ao ano, órgão do poder judiciário e tribunal e aplicamos o MOD 97
66
- * para obtermos o valor da part2
67
- * part2 = ( part1 +''+ 2012 +''+ 5 +''+ 15 ) % 97 = 26
68
- *
69
- * - Concatemos part2 ao código do órgão de origem e ao "00" do final e aplicamos
70
- * o MOD 97 ao resultado
71
- * part3 = ( part2 + '0049' + '00') % 97 = 73
72
- *
73
- * - Subtraímos o resultado de 98
74
- * dv = 98 - 73 = 25
75
- *
76
- * O Dígito verificador é 25 e deve ser aplicado após o 7º caractere do número do processo
77
- *
78
- * Fonte: https://juslaboris.tst.jus.br/bitstream/handle/20.500.12178/30318/2008_res0065_cnj_rep01.pdf?sequence=2
79
- */
80
-
81
- import { clearValue, fakeNumber, applyMask, insertAtPosition, removeFromPosition } from './utils'
82
-
83
- /**
84
- *
85
- *
86
- */
87
- export const dv = (value: string): string => {
88
- if (!value) throw new Error('Número do processo é obrigatório')
89
- // if (typeof value !== 'string') throw new Error('Número do processo precisa ser string')
90
-
91
- const judicialProcess = clearValue(value, 18)
92
-
93
- const num = judicialProcess.substring(0, 7)
94
- const yearAndCourt = judicialProcess.substring(7, 14)
95
- const origin = judicialProcess.substring(14, 18)
96
-
97
- return String(
98
- 98 - (Number(`${Number(`${Number(num) % 97}${yearAndCourt}`) % 97}${origin}00`) % 97),
99
- ).padStart(2, '0')
100
- }
101
-
102
- /**
103
- * Aplica uma máscara ao número informado
104
- *
105
- * @param {String} value Número de Processo
106
- * @returns {String} Valor com a máscara
107
- */
108
- export const mask = (value: string | number): string =>
109
- applyMask(value, '0000000-00.0000.0.00.0000')
110
-
111
- /**
112
- *
113
- *
114
- */
115
- export const fake = (withMask: boolean = false): string => {
116
- const num = fakeNumber(7, true)
117
- const year = new Date().getFullYear() - +fakeNumber(1)
118
-
119
- const courte1 = fakeNumber(1, true) // Não pode ser '0'
120
- const courte2 = fakeNumber(2, true)
121
- const courte = `${courte1 === '0' || courte1 === '10' ? '1' : courte1}${courte2}`
122
-
123
- const origin = fakeNumber(4, true)
124
-
125
- const judicialProcess = `${num}${year}${courte}${origin}`
126
- const digits = dv(judicialProcess)
127
-
128
- const finalNumber = insertAtPosition(judicialProcess, digits, 7)
129
-
130
- if (withMask) return mask(finalNumber)
131
- return finalNumber
132
- }
133
-
134
- /**
135
- * validate()
136
- * Valida se um número de processo está correto
137
- *
138
- */
139
- export const validateOrFail = (value: string | number): boolean => {
140
- const judicialProcess = clearValue(value, 20)
141
- const processWithoutDV = removeFromPosition(judicialProcess, 7, 9)
142
-
143
- if (processWithoutDV.substring(11, 12) === '0') {
144
- throw new Error('Código do Órgão Judiciário não pode ser "0"')
145
- }
146
-
147
- if (dv(processWithoutDV) !== judicialProcess.substring(7, 9)) {
148
- throw new Error('Dígito verificador inválido')
149
- }
150
-
151
- return true
152
- }
153
-
154
- /**
155
- * validate()
156
- * Valida se um número de processo está correto
157
- *
158
- */
159
- export const validate = (value: string | number): boolean => {
160
- try {
161
- return validateOrFail(value)
162
- } catch (error) {
163
- return false
164
- }
165
- }
166
-
167
- export default validate