devtoolz-library 1.0.0
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/dist/baseFactory.d.ts +12 -0
- package/dist/baseFactory.js +33 -0
- package/dist/constants/regexPatterns.d.ts +2 -0
- package/dist/constants/regexPatterns.js +9 -0
- package/dist/converters/numeric-systems/interfaces/INumericSystem.converter.d.ts +4 -0
- package/dist/converters/numeric-systems/interfaces/INumericSystem.converter.factory.d.ts +4 -0
- package/dist/converters/numeric-systems/interfaces/INumericSystem.converter.factory.js +2 -0
- package/dist/converters/numeric-systems/interfaces/INumericSystem.converter.js +2 -0
- package/dist/converters/numeric-systems/numericSystem.converter.d.ts +5 -0
- package/dist/converters/numeric-systems/numericSystem.converter.factory.d.ts +8 -0
- package/dist/converters/numeric-systems/numericSystem.converter.factory.js +17 -0
- package/dist/converters/numeric-systems/numericSystem.converter.js +17 -0
- package/dist/converters/numeric-systems/provider.d.ts +2 -0
- package/dist/converters/numeric-systems/provider.js +11 -0
- package/dist/converters/numeric-systems/services/binary/binary.converter.d.ts +5 -0
- package/dist/converters/numeric-systems/services/binary/binary.converter.js +16 -0
- package/dist/converters/numeric-systems/services/binary/binary.converter.test.d.ts +1 -0
- package/dist/converters/numeric-systems/services/binary/binary.converter.test.js +252 -0
- package/dist/converters/numeric-systems/services/decimal/decimal.converter.d.ts +5 -0
- package/dist/converters/numeric-systems/services/decimal/decimal.converter.js +16 -0
- package/dist/converters/numeric-systems/services/decimal/decimal.converter.test.d.ts +1 -0
- package/dist/converters/numeric-systems/services/decimal/decimal.converter.test.js +199 -0
- package/dist/converters/numeric-systems/services/hexadecimal/hexadecimal.converter.d.ts +5 -0
- package/dist/converters/numeric-systems/services/hexadecimal/hexadecimal.converter.js +18 -0
- package/dist/converters/numeric-systems/services/hexadecimal/hexadecimal.converter.test.d.ts +1 -0
- package/dist/converters/numeric-systems/services/hexadecimal/hexadecimal.converter.test.js +130 -0
- package/dist/converters/numeric-systems/services/octadecimal/octadecimal.converter.d.ts +5 -0
- package/dist/converters/numeric-systems/services/octadecimal/octadecimal.converter.js +15 -0
- package/dist/converters/numeric-systems/services/octadecimal/octadecimal.converter.test.d.ts +1 -0
- package/dist/converters/numeric-systems/services/octadecimal/octadecimal.converter.test.js +151 -0
- package/dist/converters/numeric-systems/services/roman/roman.converter.d.ts +7 -0
- package/dist/converters/numeric-systems/services/roman/roman.converter.js +77 -0
- package/dist/converters/numeric-systems/services/roman/roman.converter.test.d.ts +1 -0
- package/dist/converters/numeric-systems/services/roman/roman.converter.test.js +105 -0
- package/dist/converters/serialization/interfaces/ISerialization.converter.d.ts +5 -0
- package/dist/converters/serialization/interfaces/ISerialization.converter.factory.d.ts +4 -0
- package/dist/converters/serialization/interfaces/ISerialization.converter.factory.js +2 -0
- package/dist/converters/serialization/interfaces/ISerialization.converter.js +2 -0
- package/dist/converters/serialization/interfaces/ISerializationOptions.d.ts +4 -0
- package/dist/converters/serialization/interfaces/ISerializationOptions.js +2 -0
- package/dist/converters/serialization/provider.d.ts +2 -0
- package/dist/converters/serialization/provider.js +7 -0
- package/dist/converters/serialization/serialization.converter.d.ts +6 -0
- package/dist/converters/serialization/serialization.converter.factory.d.ts +9 -0
- package/dist/converters/serialization/serialization.converter.factory.js +20 -0
- package/dist/converters/serialization/serialization.converter.js +17 -0
- package/dist/converters/serialization/services/csv/csv.converter.d.ts +6 -0
- package/dist/converters/serialization/services/csv/csv.converter.js +68 -0
- package/dist/converters/serialization/services/csv/csv.converter.test.d.ts +1 -0
- package/dist/converters/serialization/services/csv/csv.converter.test.js +295 -0
- package/dist/converters/serialization/services/json/json.converter.d.ts +5 -0
- package/dist/converters/serialization/services/json/json.converter.js +12 -0
- package/dist/converters/text-format/inteface/ITextFormatConverter.converter.d.ts +4 -0
- package/dist/converters/text-format/inteface/ITextFormatConverter.converter.factory.d.ts +4 -0
- package/dist/converters/text-format/inteface/ITextFormatConverter.converter.factory.js +2 -0
- package/dist/converters/text-format/inteface/ITextFormatConverter.converter.js +2 -0
- package/dist/converters/text-format/provider.d.ts +2 -0
- package/dist/converters/text-format/provider.js +8 -0
- package/dist/converters/text-format/services/binary/binary-format.converter.d.ts +5 -0
- package/dist/converters/text-format/services/binary/binary-format.converter.js +40 -0
- package/dist/converters/text-format/services/binary/binary-format.converter.test.d.ts +1 -0
- package/dist/converters/text-format/services/binary/binary-format.converter.test.js +174 -0
- package/dist/converters/text-format/services/morse/morse-format.converter.d.ts +6 -0
- package/dist/converters/text-format/services/morse/morse-format.converter.js +85 -0
- package/dist/converters/text-format/services/morse/morse-format.converter.test.d.ts +1 -0
- package/dist/converters/text-format/services/morse/morse-format.converter.test.js +518 -0
- package/dist/converters/text-format/services/text/text-format.converter.d.ts +5 -0
- package/dist/converters/text-format/services/text/text-format.converter.js +12 -0
- package/dist/converters/text-format/textFormatConverter.converter.d.ts +5 -0
- package/dist/converters/text-format/textFormatConverter.converter.factory.d.ts +8 -0
- package/dist/converters/text-format/textFormatConverter.converter.factory.js +17 -0
- package/dist/converters/text-format/textFormatConverter.converter.js +17 -0
- package/dist/converters/unit-converter/converter-base.d.ts +19 -0
- package/dist/converters/unit-converter/converter-base.js +56 -0
- package/dist/converters/unit-converter/interfaces/IUnitConverter.d.ts +9 -0
- package/dist/converters/unit-converter/interfaces/IUnitConverter.js +2 -0
- package/dist/converters/unit-converter/interfaces/IUnitConverterFactory.d.ts +4 -0
- package/dist/converters/unit-converter/interfaces/IUnitConverterFactory.js +2 -0
- package/dist/converters/unit-converter/models/unit.d.ts +7 -0
- package/dist/converters/unit-converter/models/unit.js +2 -0
- package/dist/converters/unit-converter/provider.d.ts +2 -0
- package/dist/converters/unit-converter/provider.js +16 -0
- package/dist/converters/unit-converter/services/angle/angle.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/angle/angle.converter.js +15 -0
- package/dist/converters/unit-converter/services/angle/angle.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/angle/angle.converter.test.js +112 -0
- package/dist/converters/unit-converter/services/area/area.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/area/area.converter.js +24 -0
- package/dist/converters/unit-converter/services/area/area.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/area/area.converter.test.js +439 -0
- package/dist/converters/unit-converter/services/data/data.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/data/data.converter.js +30 -0
- package/dist/converters/unit-converter/services/data/data.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/data/data.converter.test.js +209 -0
- package/dist/converters/unit-converter/services/energy/energy.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/energy/energy.converter.js +20 -0
- package/dist/converters/unit-converter/services/energy/energy.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/energy/energy.converter.test.js +154 -0
- package/dist/converters/unit-converter/services/length/length.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/length/length.converter.js +31 -0
- package/dist/converters/unit-converter/services/length/length.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/length/length.converter.test.js +186 -0
- package/dist/converters/unit-converter/services/power/power.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/power/power.converter.js +17 -0
- package/dist/converters/unit-converter/services/power/power.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/power/power.converter.test.js +223 -0
- package/dist/converters/unit-converter/services/pressure/pressure.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/pressure/pressure.converter.js +18 -0
- package/dist/converters/unit-converter/services/pressure/pressure.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/pressure/pressure.converter.test.js +107 -0
- package/dist/converters/unit-converter/services/speed/speed.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/speed/speed.converter.js +22 -0
- package/dist/converters/unit-converter/services/speed/speed.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/speed/speed.converter.test.js +257 -0
- package/dist/converters/unit-converter/services/temperature/temperature.converter.d.ts +7 -0
- package/dist/converters/unit-converter/services/temperature/temperature.converter.js +46 -0
- package/dist/converters/unit-converter/services/temperature/temperature.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/temperature/temperature.converter.test.js +279 -0
- package/dist/converters/unit-converter/services/time/time.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/time/time.converter.js +26 -0
- package/dist/converters/unit-converter/services/volume/volume.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/volume/volume.converter.js +39 -0
- package/dist/converters/unit-converter/services/volume/volume.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/volume/volume.converter.test.js +295 -0
- package/dist/converters/unit-converter/services/weight-mass/weight-mass.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/weight-mass/weight-mass.converter.js +29 -0
- package/dist/converters/unit-converter/services/weight-mass/weight-mass.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/weight-mass/weight-mass.converter.test.js +218 -0
- package/dist/converters/unit-converter/unit.converter.factory.d.ts +9 -0
- package/dist/converters/unit-converter/unit.converter.factory.js +20 -0
- package/dist/crypt.d.ts +0 -0
- package/dist/crypt.js +77 -0
- package/dist/documents/cnpj/cnpj.d.ts +14 -0
- package/dist/documents/cnpj/cnpj.formatter.d.ts +5 -0
- package/dist/documents/cnpj/cnpj.formatter.js +12 -0
- package/dist/documents/cnpj/cnpj.generator.d.ts +9 -0
- package/dist/documents/cnpj/cnpj.generator.js +43 -0
- package/dist/documents/cnpj/cnpj.js +47 -0
- package/dist/documents/cnpj/cnpj.validator.d.ts +11 -0
- package/dist/documents/cnpj/cnpj.validator.js +49 -0
- package/dist/documents/cnpj/tests/cnpj.formatter.test.d.ts +1 -0
- package/dist/documents/cnpj/tests/cnpj.formatter.test.js +62 -0
- package/dist/documents/cnpj/tests/cnpj.generator.test.d.ts +1 -0
- package/dist/documents/cnpj/tests/cnpj.generator.test.js +51 -0
- package/dist/documents/cnpj/tests/cnpj.test.d.ts +1 -0
- package/dist/documents/cnpj/tests/cnpj.test.js +162 -0
- package/dist/documents/cnpj/tests/cnpj.validator.test.d.ts +1 -0
- package/dist/documents/cnpj/tests/cnpj.validator.test.js +104 -0
- package/dist/documents/cpf/cpf.d.ts +14 -0
- package/dist/documents/cpf/cpf.formatter.d.ts +5 -0
- package/dist/documents/cpf/cpf.formatter.js +12 -0
- package/dist/documents/cpf/cpf.generator.d.ts +9 -0
- package/dist/documents/cpf/cpf.generator.js +40 -0
- package/dist/documents/cpf/cpf.js +50 -0
- package/dist/documents/cpf/cpf.validator.d.ts +11 -0
- package/dist/documents/cpf/cpf.validator.js +46 -0
- package/dist/documents/cpf/tests/cpf.formatter.test.d.ts +1 -0
- package/dist/documents/cpf/tests/cpf.formatter.test.js +71 -0
- package/dist/documents/cpf/tests/cpf.generator.test.d.ts +1 -0
- package/dist/documents/cpf/tests/cpf.generator.test.js +71 -0
- package/dist/documents/cpf/tests/cpf.test.d.ts +1 -0
- package/dist/documents/cpf/tests/cpf.test.js +151 -0
- package/dist/documents/cpf/tests/cpf.validator.test.d.ts +1 -0
- package/dist/documents/cpf/tests/cpf.validator.test.js +113 -0
- package/dist/documents/interfaces/formatter.interface.d.ts +4 -0
- package/dist/documents/interfaces/formatter.interface.js +2 -0
- package/dist/documents/interfaces/generator.interface.d.ts +3 -0
- package/dist/documents/interfaces/generator.interface.js +2 -0
- package/dist/documents/interfaces/validator.interface.d.ts +4 -0
- package/dist/documents/interfaces/validator.interface.js +2 -0
- package/dist/documents/models/validation-result.model.d.ts +4 -0
- package/dist/documents/models/validation-result.model.js +2 -0
- package/dist/enums/cryptProvider.d.ts +6 -0
- package/dist/enums/cryptProvider.js +10 -0
- package/dist/extensions/array.extensions.d.ts +6 -0
- package/dist/extensions/array.extensions.js +7 -0
- package/dist/extensions/boolean.extensions.d.ts +6 -0
- package/dist/extensions/boolean.extensions.js +5 -0
- package/dist/extensions/number.extensions.d.ts +11 -0
- package/dist/extensions/number.extensions.js +24 -0
- package/dist/extensions/string.extensions.d.ts +13 -0
- package/dist/extensions/string.extensions.js +28 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.js +39 -0
- package/dist/interfaces/IFactory.d.ts +3 -0
- package/dist/interfaces/IFactory.js +2 -0
- package/dist/interfaces/IServiceCategory.d.ts +3 -0
- package/dist/interfaces/IServiceCategory.js +2 -0
- package/dist/interfaces/validator.d.ts +5 -0
- package/dist/interfaces/validator.js +2 -0
- package/dist/interfaces/value.d.ts +3 -0
- package/dist/interfaces/value.js +2 -0
- package/dist/interfaces/valueGenerator.d.ts +4 -0
- package/dist/interfaces/valueGenerator.js +2 -0
- package/dist/random.d.ts +12 -0
- package/dist/random.js +29 -0
- package/package.json +25 -0
package/dist/crypt.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// import { CipherGCMTypes, createCipheriv, createDecipheriv } from 'crypto';
|
|
3
|
+
// import { CryptProvider } from './enums/cryptProvider';
|
|
4
|
+
// export class Crypt {
|
|
5
|
+
// private _getIV(provider: CryptProvider): Buffer {
|
|
6
|
+
// switch (provider) {
|
|
7
|
+
// case CryptProvider.Rijndael:
|
|
8
|
+
// return Buffer.from([0xf, 0x6f, 0x13, 0x2e, 0x35, 0xc2, 0xcd, 0xf9, 0x5, 0x46, 0x9c, 0xea, 0xa8, 0x4b, 0x73, 0xcc]);
|
|
9
|
+
// default:
|
|
10
|
+
// return Buffer.from([0xf, 0x6f, 0x13, 0x2e, 0x35, 0xc2, 0xcd, 0xf9]);
|
|
11
|
+
// }
|
|
12
|
+
// }
|
|
13
|
+
// private _getAlgorithm(provider: CryptProvider): string {
|
|
14
|
+
// switch (provider) {
|
|
15
|
+
// case CryptProvider.Rijndael:
|
|
16
|
+
// return 'aes-256-cbc';
|
|
17
|
+
// case CryptProvider.RC2:
|
|
18
|
+
// return 'rc2-cbc';
|
|
19
|
+
// case CryptProvider.DES:
|
|
20
|
+
// return 'des-cbc';
|
|
21
|
+
// case CryptProvider.TripleDES:
|
|
22
|
+
// return 'des-ede3-cbc';
|
|
23
|
+
// default:
|
|
24
|
+
// throw new Error('Invalid crypt provider');
|
|
25
|
+
// }
|
|
26
|
+
// }
|
|
27
|
+
// private _getKeyBytes(key: string, algorithm: string): Buffer {
|
|
28
|
+
// let validSize: number;
|
|
29
|
+
// // Define o tamanho da chave com base no algoritmo
|
|
30
|
+
// switch (algorithm) {
|
|
31
|
+
// case 'aes-256-cbc':
|
|
32
|
+
// validSize = 32; // 32 bytes = 256 bits
|
|
33
|
+
// break;
|
|
34
|
+
// case 'rc2-cbc':
|
|
35
|
+
// validSize = 16; // 16 bytes = 128 bits
|
|
36
|
+
// break;
|
|
37
|
+
// case 'des-cbc':
|
|
38
|
+
// validSize = 8; // 8 bytes = 64 bits
|
|
39
|
+
// break;
|
|
40
|
+
// case 'des-ede3-cbc':
|
|
41
|
+
// validSize = 24; // 24 bytes = 192 bits (3DES)
|
|
42
|
+
// break;
|
|
43
|
+
// default:
|
|
44
|
+
// throw new Error('Invalid algorithm');
|
|
45
|
+
// }
|
|
46
|
+
// let keyBuffer = Buffer.from(key);
|
|
47
|
+
// // Ajusta o tamanho da chave para o tamanho válido
|
|
48
|
+
// if (keyBuffer.length > validSize) {
|
|
49
|
+
// keyBuffer = keyBuffer.slice(0, validSize); // Trunca se maior
|
|
50
|
+
// } else if (keyBuffer.length < validSize) {
|
|
51
|
+
// keyBuffer = Buffer.concat([keyBuffer, Buffer.alloc(validSize - keyBuffer.length, '*')]); // Preenche se menor
|
|
52
|
+
// }
|
|
53
|
+
// return keyBuffer;
|
|
54
|
+
// }
|
|
55
|
+
// public encrypt(value: string, key: string, provider: CryptProvider): string {
|
|
56
|
+
// const algorithm = this._getAlgorithm(provider);
|
|
57
|
+
// const keyBuffer = this._getKeyBytes(key, algorithm);
|
|
58
|
+
// const iv = this._getIV(provider);
|
|
59
|
+
// const cipher = createCipheriv(algorithm, keyBuffer, iv);
|
|
60
|
+
// let encrypted = cipher.update(value, 'utf8', 'base64');
|
|
61
|
+
// encrypted += cipher.final('base64');
|
|
62
|
+
// return encrypted;
|
|
63
|
+
// }
|
|
64
|
+
// public decrypt(value: string, key: string, provider: CryptProvider): string | null {
|
|
65
|
+
// const algorithm = this._getAlgorithm(provider);
|
|
66
|
+
// const keyBuffer = this._getKeyBytes(key, algorithm);
|
|
67
|
+
// const iv = this._getIV(provider);
|
|
68
|
+
// const decipher = createDecipheriv(algorithm, keyBuffer, iv);
|
|
69
|
+
// try {
|
|
70
|
+
// let decrypted = decipher.update(value, 'base64', 'utf8');
|
|
71
|
+
// decrypted += decipher.final('utf8');
|
|
72
|
+
// return decrypted;
|
|
73
|
+
// } catch (error) {
|
|
74
|
+
// return null; // Retorna null em caso de erro
|
|
75
|
+
// }
|
|
76
|
+
// }
|
|
77
|
+
// }
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IValidationResult } from "../models/validation-result.model";
|
|
2
|
+
export declare class Cnpj {
|
|
3
|
+
readonly rootDigits: string;
|
|
4
|
+
readonly orderDigits: string;
|
|
5
|
+
readonly firstVerifyDigit: string;
|
|
6
|
+
readonly secondVerifyDigit: string;
|
|
7
|
+
private constructor();
|
|
8
|
+
toString(): string;
|
|
9
|
+
toFormatted(): string;
|
|
10
|
+
static validate(value: string): IValidationResult;
|
|
11
|
+
static generate(formatted?: boolean): Cnpj;
|
|
12
|
+
static parse(value: string): Cnpj;
|
|
13
|
+
static tryParse(value: string): Cnpj | null;
|
|
14
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CnpjFormatter = void 0;
|
|
4
|
+
class CnpjFormatter {
|
|
5
|
+
applyMask(cnpj) {
|
|
6
|
+
return cnpj.replace(/(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})/, "$1.$2.$3/$4-$5");
|
|
7
|
+
}
|
|
8
|
+
removeMask(cnpj) {
|
|
9
|
+
return cnpj.replace(/[^\d]/g, "");
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.CnpjFormatter = CnpjFormatter;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import "../../extensions/string.extensions";
|
|
2
|
+
import { IGenerator } from "../interfaces/generator.interface";
|
|
3
|
+
export declare class CnpjGenerator implements IGenerator {
|
|
4
|
+
private readonly _formatter;
|
|
5
|
+
private _isRepeatedDigits;
|
|
6
|
+
private _calcVerifyingDigit;
|
|
7
|
+
private _generateCalculatingDigits;
|
|
8
|
+
generate(formatted?: boolean): string;
|
|
9
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CnpjGenerator = void 0;
|
|
4
|
+
const random_1 = require("../../random");
|
|
5
|
+
require("../../extensions/string.extensions");
|
|
6
|
+
const cnpj_formatter_1 = require("./cnpj.formatter");
|
|
7
|
+
class CnpjGenerator {
|
|
8
|
+
constructor() {
|
|
9
|
+
this._formatter = new cnpj_formatter_1.CnpjFormatter();
|
|
10
|
+
}
|
|
11
|
+
_isRepeatedDigits(cnpj) {
|
|
12
|
+
return /^(\d)\1{13}$/.test(cnpj);
|
|
13
|
+
}
|
|
14
|
+
_calcVerifyingDigit(startCounter, digits) {
|
|
15
|
+
let result = 0;
|
|
16
|
+
digits.forEach(digit => {
|
|
17
|
+
result += digit.toNumber() * startCounter;
|
|
18
|
+
startCounter--;
|
|
19
|
+
if (startCounter < 2)
|
|
20
|
+
startCounter = 9;
|
|
21
|
+
});
|
|
22
|
+
const rest = result % 11;
|
|
23
|
+
return (rest < 2 ? 0 : 11 - rest).toString();
|
|
24
|
+
}
|
|
25
|
+
_generateCalculatingDigits() {
|
|
26
|
+
const random = new random_1.Random(0, 9, true);
|
|
27
|
+
let digits = "";
|
|
28
|
+
do {
|
|
29
|
+
digits = "";
|
|
30
|
+
for (let i = 0; i < 12; i++)
|
|
31
|
+
digits += random.generate(true).toString();
|
|
32
|
+
} while (this._isRepeatedDigits(digits));
|
|
33
|
+
return digits;
|
|
34
|
+
}
|
|
35
|
+
generate(formatted = false) {
|
|
36
|
+
const calculating = this._generateCalculatingDigits();
|
|
37
|
+
const first = this._calcVerifyingDigit(5, calculating);
|
|
38
|
+
const second = this._calcVerifyingDigit(6, calculating + first);
|
|
39
|
+
const cnpj = calculating + first + second;
|
|
40
|
+
return formatted ? this._formatter.applyMask(cnpj) : cnpj;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.CnpjGenerator = CnpjGenerator;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Cnpj = void 0;
|
|
4
|
+
const cnpj_validator_1 = require("./cnpj.validator");
|
|
5
|
+
const cnpj_generator_1 = require("./cnpj.generator");
|
|
6
|
+
const cnpj_formatter_1 = require("./cnpj.formatter");
|
|
7
|
+
class Cnpj {
|
|
8
|
+
constructor(rootDigits, orderDigits, firstVerifyDigit, secondVerifyDigit) {
|
|
9
|
+
this.rootDigits = rootDigits;
|
|
10
|
+
this.orderDigits = orderDigits;
|
|
11
|
+
this.firstVerifyDigit = firstVerifyDigit;
|
|
12
|
+
this.secondVerifyDigit = secondVerifyDigit;
|
|
13
|
+
Object.freeze(this);
|
|
14
|
+
}
|
|
15
|
+
toString() {
|
|
16
|
+
return this.rootDigits + this.orderDigits + this.firstVerifyDigit + this.secondVerifyDigit;
|
|
17
|
+
}
|
|
18
|
+
toFormatted() {
|
|
19
|
+
const formatter = new cnpj_formatter_1.CnpjFormatter();
|
|
20
|
+
return formatter.applyMask(this.toString());
|
|
21
|
+
}
|
|
22
|
+
static validate(value) {
|
|
23
|
+
const validator = new cnpj_validator_1.CnpjValidator();
|
|
24
|
+
return validator.validate(value ?? "");
|
|
25
|
+
}
|
|
26
|
+
static generate(formatted) {
|
|
27
|
+
const generator = new cnpj_generator_1.CnpjGenerator();
|
|
28
|
+
const generatedValue = generator.generate(formatted);
|
|
29
|
+
return this.parse(generatedValue);
|
|
30
|
+
}
|
|
31
|
+
static parse(value) {
|
|
32
|
+
const result = this.validate(value);
|
|
33
|
+
if (!result.isValid)
|
|
34
|
+
throw new Error(result.message);
|
|
35
|
+
const digits = value.replace(/[^\d]/g, "");
|
|
36
|
+
return new Cnpj(digits.substring(0, 8), digits.substring(8, 12), digits[12], digits[13]);
|
|
37
|
+
}
|
|
38
|
+
static tryParse(value) {
|
|
39
|
+
try {
|
|
40
|
+
return Cnpj.parse(value);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.Cnpj = Cnpj;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import "../../extensions/string.extensions";
|
|
2
|
+
import { IValidator } from "../interfaces/validator.interface";
|
|
3
|
+
import { IValidationResult } from "../models/validation-result.model";
|
|
4
|
+
export declare class CnpjValidator implements IValidator {
|
|
5
|
+
private readonly _formatter;
|
|
6
|
+
private _isRepeatedDigits;
|
|
7
|
+
private _isFormatValid;
|
|
8
|
+
private _calcVerifyingDigit;
|
|
9
|
+
private _fail;
|
|
10
|
+
validate(value: string): IValidationResult;
|
|
11
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CnpjValidator = void 0;
|
|
4
|
+
const regexPatterns_1 = require("../../constants/regexPatterns");
|
|
5
|
+
require("../../extensions/string.extensions");
|
|
6
|
+
const cnpj_formatter_1 = require("./cnpj.formatter");
|
|
7
|
+
class CnpjValidator {
|
|
8
|
+
constructor() {
|
|
9
|
+
this._formatter = new cnpj_formatter_1.CnpjFormatter();
|
|
10
|
+
}
|
|
11
|
+
_isRepeatedDigits(cnpj) {
|
|
12
|
+
return /^(\d)\1{13}$/.test(cnpj);
|
|
13
|
+
}
|
|
14
|
+
_isFormatValid(cnpj) {
|
|
15
|
+
return regexPatterns_1.cnpjPattern.test(cnpj);
|
|
16
|
+
}
|
|
17
|
+
_calcVerifyingDigit(startCounter, digits) {
|
|
18
|
+
let result = 0;
|
|
19
|
+
digits.forEach(digit => {
|
|
20
|
+
result += digit.toNumber() * startCounter;
|
|
21
|
+
startCounter--;
|
|
22
|
+
if (startCounter < 2)
|
|
23
|
+
startCounter = 9;
|
|
24
|
+
});
|
|
25
|
+
const rest = result % 11;
|
|
26
|
+
return (rest < 2 ? 0 : 11 - rest).toString();
|
|
27
|
+
}
|
|
28
|
+
_fail(message) {
|
|
29
|
+
return { isValid: false, message };
|
|
30
|
+
}
|
|
31
|
+
validate(value) {
|
|
32
|
+
if (!value || value.isEmpty())
|
|
33
|
+
return this._fail("CNPJ está vazio.");
|
|
34
|
+
if (!this._isFormatValid(value))
|
|
35
|
+
return this._fail("CNPJ com formato inválido.");
|
|
36
|
+
const cnpj = this._formatter.removeMask(value);
|
|
37
|
+
if (this._isRepeatedDigits(cnpj))
|
|
38
|
+
return this._fail("CNPJ não pode ter todos os dígitos iguais.");
|
|
39
|
+
const calculating = cnpj.substring(0, 12);
|
|
40
|
+
const first = cnpj[12];
|
|
41
|
+
const second = cnpj[13];
|
|
42
|
+
if (this._calcVerifyingDigit(5, calculating) !== first)
|
|
43
|
+
return this._fail("Primeiro dígito verificador é inválido.");
|
|
44
|
+
if (this._calcVerifyingDigit(6, calculating + first) !== second)
|
|
45
|
+
return this._fail("Segundo dígito verificador é inválido.");
|
|
46
|
+
return { isValid: true, message: "Válido" };
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.CnpjValidator = CnpjValidator;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const cnpj_formatter_1 = require("../cnpj.formatter");
|
|
4
|
+
describe("CnpjFormatter", () => {
|
|
5
|
+
let formatter;
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
formatter = new cnpj_formatter_1.CnpjFormatter();
|
|
8
|
+
});
|
|
9
|
+
// -------------------------------------------------------------------------
|
|
10
|
+
// applyMask
|
|
11
|
+
// -------------------------------------------------------------------------
|
|
12
|
+
describe("applyMask", () => {
|
|
13
|
+
it("deve formatar CNPJ sem máscara para o padrão NN.NNN.NNN/NNNN-NN", () => {
|
|
14
|
+
expect(formatter.applyMask("11222333000181")).toBe("11.222.333/0001-81");
|
|
15
|
+
});
|
|
16
|
+
it("deve formatar CNPJ iniciado com zero", () => {
|
|
17
|
+
expect(formatter.applyMask("00000000000191")).toBe("00.000.000/0001-91");
|
|
18
|
+
});
|
|
19
|
+
it("deve retornar string vazia ao receber string vazia", () => {
|
|
20
|
+
expect(formatter.applyMask("")).toBe("");
|
|
21
|
+
});
|
|
22
|
+
it("não deve alterar entrada com menos de 14 dígitos", () => {
|
|
23
|
+
expect(formatter.applyMask("1234567")).toBe("1234567");
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
// -------------------------------------------------------------------------
|
|
27
|
+
// removeMask
|
|
28
|
+
// -------------------------------------------------------------------------
|
|
29
|
+
describe("removeMask", () => {
|
|
30
|
+
it("deve remover pontos, barra e traço do CNPJ formatado", () => {
|
|
31
|
+
expect(formatter.removeMask("11.222.333/0001-81")).toBe("11222333000181");
|
|
32
|
+
});
|
|
33
|
+
it("deve retornar o mesmo valor se não houver máscara", () => {
|
|
34
|
+
expect(formatter.removeMask("11222333000181")).toBe("11222333000181");
|
|
35
|
+
});
|
|
36
|
+
it("deve remover qualquer caractere não numérico", () => {
|
|
37
|
+
expect(formatter.removeMask("11 222 333 0001 81")).toBe("11222333000181");
|
|
38
|
+
});
|
|
39
|
+
it("deve retornar string vazia ao receber string vazia", () => {
|
|
40
|
+
expect(formatter.removeMask("")).toBe("");
|
|
41
|
+
});
|
|
42
|
+
it("deve retornar string vazia ao receber apenas caracteres não numéricos", () => {
|
|
43
|
+
expect(formatter.removeMask("..//--")).toBe("");
|
|
44
|
+
});
|
|
45
|
+
it("deve preservar zeros à esquerda", () => {
|
|
46
|
+
expect(formatter.removeMask("00.000.000/0001-91")).toBe("00000000000191");
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
// -------------------------------------------------------------------------
|
|
50
|
+
// Simetria — applyMask ↔ removeMask
|
|
51
|
+
// -------------------------------------------------------------------------
|
|
52
|
+
describe("simetria entre applyMask e removeMask", () => {
|
|
53
|
+
it("removeMask(applyMask(raw)) deve retornar o valor original", () => {
|
|
54
|
+
const raw = "11222333000181";
|
|
55
|
+
expect(formatter.removeMask(formatter.applyMask(raw))).toBe(raw);
|
|
56
|
+
});
|
|
57
|
+
it("applyMask(removeMask(formatted)) deve retornar o valor original", () => {
|
|
58
|
+
const formatted = "11.222.333/0001-81";
|
|
59
|
+
expect(formatter.applyMask(formatter.removeMask(formatted))).toBe(formatted);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const cnpj_generator_1 = require("../cnpj.generator");
|
|
4
|
+
const cnpj_validator_1 = require("../cnpj.validator");
|
|
5
|
+
describe("CnpjGenerator", () => {
|
|
6
|
+
let generator;
|
|
7
|
+
let validator;
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
generator = new cnpj_generator_1.CnpjGenerator();
|
|
10
|
+
validator = new cnpj_validator_1.CnpjValidator();
|
|
11
|
+
});
|
|
12
|
+
// -------------------------------------------------------------------------
|
|
13
|
+
// generate — sem máscara
|
|
14
|
+
// -------------------------------------------------------------------------
|
|
15
|
+
describe("generate sem formatação", () => {
|
|
16
|
+
it("deve retornar uma string com 14 dígitos", () => {
|
|
17
|
+
const result = generator.generate();
|
|
18
|
+
expect(result).toHaveLength(14);
|
|
19
|
+
expect(result).toMatch(/^\d{14}$/);
|
|
20
|
+
});
|
|
21
|
+
it("deve gerar um CNPJ matematicamente válido", () => {
|
|
22
|
+
const result = generator.generate();
|
|
23
|
+
const validation = validator.validate(result);
|
|
24
|
+
expect(validation.isValid).toBe(true);
|
|
25
|
+
});
|
|
26
|
+
it("não deve gerar CNPJ com todos os dígitos iguais", () => {
|
|
27
|
+
for (let i = 0; i < 20; i++) {
|
|
28
|
+
const result = generator.generate();
|
|
29
|
+
expect(result).not.toMatch(/^(\d)\1{13}$/);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
it("deve gerar CNPJs diferentes entre chamadas", () => {
|
|
33
|
+
const results = new Set(Array.from({ length: 20 }, () => generator.generate()));
|
|
34
|
+
expect(results.size).toBeGreaterThan(1);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
// -------------------------------------------------------------------------
|
|
38
|
+
// generate — com máscara
|
|
39
|
+
// -------------------------------------------------------------------------
|
|
40
|
+
describe("generate com formatação", () => {
|
|
41
|
+
it("deve retornar CNPJ no formato NN.NNN.NNN/NNNN-NN", () => {
|
|
42
|
+
const result = generator.generate(true);
|
|
43
|
+
expect(result).toMatch(/^\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}$/);
|
|
44
|
+
});
|
|
45
|
+
it("deve gerar um CNPJ formatado matematicamente válido", () => {
|
|
46
|
+
const result = generator.generate(true);
|
|
47
|
+
const validation = validator.validate(result);
|
|
48
|
+
expect(validation.isValid).toBe(true);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const cnpj_1 = require("../cnpj");
|
|
4
|
+
describe("Cnpj", () => {
|
|
5
|
+
// -------------------------------------------------------------------------
|
|
6
|
+
// parse
|
|
7
|
+
// -------------------------------------------------------------------------
|
|
8
|
+
describe("parse", () => {
|
|
9
|
+
it("deve retornar uma instância de Cnpj para CNPJ válido sem máscara", () => {
|
|
10
|
+
const cnpj = cnpj_1.Cnpj.parse("11222333000181");
|
|
11
|
+
expect(cnpj).toBeInstanceOf(cnpj_1.Cnpj);
|
|
12
|
+
});
|
|
13
|
+
it("deve retornar uma instância de Cnpj para CNPJ válido com máscara", () => {
|
|
14
|
+
const cnpj = cnpj_1.Cnpj.parse("11.222.333/0001-81");
|
|
15
|
+
expect(cnpj).toBeInstanceOf(cnpj_1.Cnpj);
|
|
16
|
+
});
|
|
17
|
+
it("deve lançar erro para CNPJ inválido", () => {
|
|
18
|
+
expect(() => cnpj_1.Cnpj.parse("00000000000000")).toThrow();
|
|
19
|
+
});
|
|
20
|
+
it("deve lançar erro para string vazia", () => {
|
|
21
|
+
expect(() => cnpj_1.Cnpj.parse("")).toThrow();
|
|
22
|
+
});
|
|
23
|
+
it("deve extrair rootDigits com 8 caracteres", () => {
|
|
24
|
+
const cnpj = cnpj_1.Cnpj.parse("11222333000181");
|
|
25
|
+
expect(cnpj.rootDigits).toBe("11222333");
|
|
26
|
+
});
|
|
27
|
+
it("deve extrair orderDigits com 4 caracteres", () => {
|
|
28
|
+
const cnpj = cnpj_1.Cnpj.parse("11222333000181");
|
|
29
|
+
expect(cnpj.orderDigits).toBe("0001");
|
|
30
|
+
});
|
|
31
|
+
it("deve extrair firstVerifyDigit com 1 caractere", () => {
|
|
32
|
+
const cnpj = cnpj_1.Cnpj.parse("11222333000181");
|
|
33
|
+
expect(cnpj.firstVerifyDigit).toMatch(/^\d$/);
|
|
34
|
+
});
|
|
35
|
+
it("deve extrair secondVerifyDigit com 1 caractere", () => {
|
|
36
|
+
const cnpj = cnpj_1.Cnpj.parse("11222333000181");
|
|
37
|
+
expect(cnpj.secondVerifyDigit).toMatch(/^\d$/);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
// -------------------------------------------------------------------------
|
|
41
|
+
// tryParse
|
|
42
|
+
// -------------------------------------------------------------------------
|
|
43
|
+
describe("tryParse", () => {
|
|
44
|
+
it("deve retornar instância de Cnpj para CNPJ válido", () => {
|
|
45
|
+
const cnpj = cnpj_1.Cnpj.tryParse("11222333000181");
|
|
46
|
+
expect(cnpj).toBeInstanceOf(cnpj_1.Cnpj);
|
|
47
|
+
});
|
|
48
|
+
it("deve retornar null para CNPJ inválido", () => {
|
|
49
|
+
const cnpj = cnpj_1.Cnpj.tryParse("00000000000000");
|
|
50
|
+
expect(cnpj).toBeNull();
|
|
51
|
+
});
|
|
52
|
+
it("deve retornar null para string vazia", () => {
|
|
53
|
+
const cnpj = cnpj_1.Cnpj.tryParse("");
|
|
54
|
+
expect(cnpj).toBeNull();
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
// -------------------------------------------------------------------------
|
|
58
|
+
// validate
|
|
59
|
+
// -------------------------------------------------------------------------
|
|
60
|
+
describe("validate", () => {
|
|
61
|
+
it("deve retornar isValid true para CNPJ válido", () => {
|
|
62
|
+
const result = cnpj_1.Cnpj.validate("11222333000181");
|
|
63
|
+
expect(result.isValid).toBe(true);
|
|
64
|
+
});
|
|
65
|
+
it("deve retornar isValid false para CNPJ inválido", () => {
|
|
66
|
+
const result = cnpj_1.Cnpj.validate("00000000000000");
|
|
67
|
+
expect(result.isValid).toBe(false);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
// -------------------------------------------------------------------------
|
|
71
|
+
// generate
|
|
72
|
+
// -------------------------------------------------------------------------
|
|
73
|
+
describe("generate", () => {
|
|
74
|
+
it("deve retornar uma instância de Cnpj", () => {
|
|
75
|
+
const cnpj = cnpj_1.Cnpj.generate();
|
|
76
|
+
expect(cnpj).toBeInstanceOf(cnpj_1.Cnpj);
|
|
77
|
+
});
|
|
78
|
+
it("deve gerar um CNPJ com rootDigits de 8 caracteres", () => {
|
|
79
|
+
const cnpj = cnpj_1.Cnpj.generate();
|
|
80
|
+
expect(cnpj.rootDigits).toHaveLength(8);
|
|
81
|
+
});
|
|
82
|
+
it("deve gerar um CNPJ com orderDigits de 4 caracteres", () => {
|
|
83
|
+
const cnpj = cnpj_1.Cnpj.generate();
|
|
84
|
+
expect(cnpj.orderDigits).toHaveLength(4);
|
|
85
|
+
});
|
|
86
|
+
it("deve gerar um CNPJ com firstVerifyDigit de 1 caractere numérico", () => {
|
|
87
|
+
const cnpj = cnpj_1.Cnpj.generate();
|
|
88
|
+
expect(cnpj.firstVerifyDigit).toMatch(/^\d$/);
|
|
89
|
+
});
|
|
90
|
+
it("deve gerar um CNPJ com secondVerifyDigit de 1 caractere numérico", () => {
|
|
91
|
+
const cnpj = cnpj_1.Cnpj.generate();
|
|
92
|
+
expect(cnpj.secondVerifyDigit).toMatch(/^\d$/);
|
|
93
|
+
});
|
|
94
|
+
it("deve gerar CNPJ matematicamente válido", () => {
|
|
95
|
+
const cnpj = cnpj_1.Cnpj.generate();
|
|
96
|
+
const result = cnpj_1.Cnpj.validate(cnpj.toString());
|
|
97
|
+
expect(result.isValid).toBe(true);
|
|
98
|
+
});
|
|
99
|
+
it("deve gerar CNPJ formatado matematicamente válido ao passar formatted=true", () => {
|
|
100
|
+
const cnpj = cnpj_1.Cnpj.generate(true);
|
|
101
|
+
const result = cnpj_1.Cnpj.validate(cnpj.toString());
|
|
102
|
+
expect(result.isValid).toBe(true);
|
|
103
|
+
});
|
|
104
|
+
it("deve gerar CNPJs diferentes entre chamadas", () => {
|
|
105
|
+
const results = new Set(Array.from({ length: 20 }, () => cnpj_1.Cnpj.generate().toString()));
|
|
106
|
+
expect(results.size).toBeGreaterThan(1);
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
// -------------------------------------------------------------------------
|
|
110
|
+
// toString / toFormatted
|
|
111
|
+
// -------------------------------------------------------------------------
|
|
112
|
+
describe("toString", () => {
|
|
113
|
+
it("deve retornar 14 dígitos sem máscara", () => {
|
|
114
|
+
const cnpj = cnpj_1.Cnpj.parse("11.222.333/0001-81");
|
|
115
|
+
expect(cnpj.toString()).toBe("11222333000181");
|
|
116
|
+
});
|
|
117
|
+
it("deve retornar apenas dígitos", () => {
|
|
118
|
+
const cnpj = cnpj_1.Cnpj.parse("11.222.333/0001-81");
|
|
119
|
+
expect(cnpj.toString()).toMatch(/^\d{14}$/);
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
describe("toFormatted", () => {
|
|
123
|
+
it("deve retornar o CNPJ no formato NN.NNN.NNN/NNNN-NN", () => {
|
|
124
|
+
const cnpj = cnpj_1.Cnpj.parse("11222333000181");
|
|
125
|
+
expect(cnpj.toFormatted()).toBe("11.222.333/0001-81");
|
|
126
|
+
});
|
|
127
|
+
it("deve retornar o mesmo resultado independente de o input ter máscara", () => {
|
|
128
|
+
const semMascara = cnpj_1.Cnpj.parse("11222333000181").toFormatted();
|
|
129
|
+
const comMascara = cnpj_1.Cnpj.parse("11.222.333/0001-81").toFormatted();
|
|
130
|
+
expect(semMascara).toBe(comMascara);
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
// -------------------------------------------------------------------------
|
|
134
|
+
// Imutabilidade
|
|
135
|
+
// -------------------------------------------------------------------------
|
|
136
|
+
describe("imutabilidade", () => {
|
|
137
|
+
it("rootDigits não deve ser alterável externamente", () => {
|
|
138
|
+
const cnpj = cnpj_1.Cnpj.parse("11.222.333/0001-81");
|
|
139
|
+
expect(() => {
|
|
140
|
+
cnpj.rootDigits = "00000000";
|
|
141
|
+
}).toThrow();
|
|
142
|
+
});
|
|
143
|
+
it("orderDigits não deve ser alterável externamente", () => {
|
|
144
|
+
const cnpj = cnpj_1.Cnpj.parse("11.222.333/0001-81");
|
|
145
|
+
expect(() => {
|
|
146
|
+
cnpj.orderDigits = "0000";
|
|
147
|
+
}).toThrow();
|
|
148
|
+
});
|
|
149
|
+
it("firstVerifyDigit não deve ser alterável externamente", () => {
|
|
150
|
+
const cnpj = cnpj_1.Cnpj.parse("11.222.333/0001-81");
|
|
151
|
+
expect(() => {
|
|
152
|
+
cnpj.firstVerifyDigit = "0";
|
|
153
|
+
}).toThrow();
|
|
154
|
+
});
|
|
155
|
+
it("secondVerifyDigit não deve ser alterável externamente", () => {
|
|
156
|
+
const cnpj = cnpj_1.Cnpj.parse("11.222.333/0001-81");
|
|
157
|
+
expect(() => {
|
|
158
|
+
cnpj.secondVerifyDigit = "0";
|
|
159
|
+
}).toThrow();
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|