vality-core 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/LICENSE +21 -0
- package/README.md +26 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/types.d.ts +69 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +36 -0
- package/dist/utils/index.d.ts +12 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +106 -0
- package/dist/valueObjects/Cnpj.d.ts +14 -0
- package/dist/valueObjects/Cnpj.d.ts.map +1 -0
- package/dist/valueObjects/Cnpj.js +88 -0
- package/dist/valueObjects/Cpf.d.ts +14 -0
- package/dist/valueObjects/Cpf.d.ts.map +1 -0
- package/dist/valueObjects/Cpf.js +83 -0
- package/dist/valueObjects/CpfCnpj.d.ts +17 -0
- package/dist/valueObjects/CpfCnpj.d.ts.map +1 -0
- package/dist/valueObjects/CpfCnpj.js +112 -0
- package/dist/valueObjects/DatePicker/DatePicker.d.ts +28 -0
- package/dist/valueObjects/DatePicker/DatePicker.d.ts.map +1 -0
- package/dist/valueObjects/DatePicker/DatePicker.js +80 -0
- package/dist/valueObjects/DatePicker/locales/pt-br.d.ts +8 -0
- package/dist/valueObjects/DatePicker/locales/pt-br.d.ts.map +1 -0
- package/dist/valueObjects/DatePicker/locales/pt-br.js +288 -0
- package/dist/valueObjects/DatePicker/types.d.ts +53 -0
- package/dist/valueObjects/DatePicker/types.d.ts.map +1 -0
- package/dist/valueObjects/DatePicker/types.js +2 -0
- package/dist/valueObjects/Email.d.ts +13 -0
- package/dist/valueObjects/Email.d.ts.map +1 -0
- package/dist/valueObjects/Email.js +45 -0
- package/dist/valueObjects/Moeda.d.ts +16 -0
- package/dist/valueObjects/Moeda.d.ts.map +1 -0
- package/dist/valueObjects/Moeda.js +20 -0
- package/dist/valueObjects/NomeCompleto.d.ts +13 -0
- package/dist/valueObjects/NomeCompleto.d.ts.map +1 -0
- package/dist/valueObjects/NomeCompleto.js +37 -0
- package/dist/valueObjects/Numero.d.ts +33 -0
- package/dist/valueObjects/Numero.d.ts.map +1 -0
- package/dist/valueObjects/Numero.js +139 -0
- package/dist/valueObjects/Placa.d.ts +14 -0
- package/dist/valueObjects/Placa.d.ts.map +1 -0
- package/dist/valueObjects/Placa.js +54 -0
- package/package.json +52 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.FORMATO_PADRAO_BR = void 0;
|
|
7
|
+
const Numero_1 = __importDefault(require("./Numero"));
|
|
8
|
+
exports.FORMATO_PADRAO_BR = {
|
|
9
|
+
decimal: ",",
|
|
10
|
+
separator: ".",
|
|
11
|
+
prefix: "R$ ",
|
|
12
|
+
precision: 2,
|
|
13
|
+
min: 0,
|
|
14
|
+
};
|
|
15
|
+
class Moeda extends Numero_1.default {
|
|
16
|
+
constructor(valor, formatador = exports.FORMATO_PADRAO_BR) {
|
|
17
|
+
super(valor, { ...exports.FORMATO_PADRAO_BR, ...formatador });
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.default = Moeda;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { INome } from "../types";
|
|
2
|
+
export default class Nome implements INome {
|
|
3
|
+
private _valor;
|
|
4
|
+
private _ehValido;
|
|
5
|
+
private _nomeDoCampo;
|
|
6
|
+
constructor(nome: string, nomeDoCampo?: string);
|
|
7
|
+
set valor(v: string);
|
|
8
|
+
get valor(): string;
|
|
9
|
+
get ehValido(): string | true;
|
|
10
|
+
private sanitizar;
|
|
11
|
+
validar(valor: string): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=NomeCompleto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NomeCompleto.d.ts","sourceRoot":"","sources":["../../src/valueObjects/NomeCompleto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,MAAM,CAAC,OAAO,OAAO,IAAK,YAAW,KAAK;IACxC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,YAAY,CAAS;gBACjB,IAAI,EAAE,MAAM,EAAE,WAAW,GAAE,MAAe;IAOtD,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,EAKlB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,QAAQ,kBAEX;IAED,OAAO,CAAC,SAAS;IAIV,OAAO,CAAC,KAAK,EAAE,MAAM;CAe7B"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class Nome {
|
|
4
|
+
constructor(nome, nomeDoCampo = "nome") {
|
|
5
|
+
this._ehValido = true;
|
|
6
|
+
this._nomeDoCampo = nomeDoCampo;
|
|
7
|
+
this.validar(nome);
|
|
8
|
+
this._valor = this.sanitizar(nome);
|
|
9
|
+
}
|
|
10
|
+
set valor(v) {
|
|
11
|
+
v = this.sanitizar(v);
|
|
12
|
+
this.validar(v);
|
|
13
|
+
this._valor = v;
|
|
14
|
+
}
|
|
15
|
+
get valor() {
|
|
16
|
+
return this._valor;
|
|
17
|
+
}
|
|
18
|
+
get ehValido() {
|
|
19
|
+
return this._ehValido;
|
|
20
|
+
}
|
|
21
|
+
sanitizar(nome) {
|
|
22
|
+
return nome.replace(/[^A-Za-zÀ-ÖØ-öø-ÿ\s]/g, "");
|
|
23
|
+
}
|
|
24
|
+
validar(valor) {
|
|
25
|
+
if (!valor) {
|
|
26
|
+
this._ehValido = true;
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const arrayName = valor.trim().split(" ");
|
|
30
|
+
if (arrayName.length < 2) {
|
|
31
|
+
this._ehValido = `O ${this._nomeDoCampo} deve possuir um sobrenome`;
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
this._ehValido = true;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.default = Nome;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { INumero } from "../types";
|
|
2
|
+
export interface Options {
|
|
3
|
+
prefix?: string;
|
|
4
|
+
suffix?: string;
|
|
5
|
+
separator: string;
|
|
6
|
+
decimal: string;
|
|
7
|
+
precision?: number;
|
|
8
|
+
min?: number;
|
|
9
|
+
max?: number;
|
|
10
|
+
}
|
|
11
|
+
/** Limites de dígitos para formatação (ex.: casas decimais) */
|
|
12
|
+
export declare const LIMITE_DIGITO_NUMBER: {
|
|
13
|
+
readonly NOVE: 9;
|
|
14
|
+
};
|
|
15
|
+
export declare const FORMATO_PADRAO: Options;
|
|
16
|
+
export default class Numero implements INumero {
|
|
17
|
+
protected _valor: string;
|
|
18
|
+
protected _formatador: Options;
|
|
19
|
+
protected _ehValido: true | string;
|
|
20
|
+
constructor(valor: string | number | null, formatador?: Partial<Options>);
|
|
21
|
+
get ehValido(): true | string;
|
|
22
|
+
get valor(): string;
|
|
23
|
+
set valor(valor: number | string | null);
|
|
24
|
+
setValor(valor: number | string | null): void;
|
|
25
|
+
validar(value: string): boolean | string;
|
|
26
|
+
private static limitarValor;
|
|
27
|
+
sanitizar(valor: number | string): number | null;
|
|
28
|
+
static aplicarSimbolos(valor: string, options?: Options): string;
|
|
29
|
+
static formatarValor(valor: string, options?: Options): string;
|
|
30
|
+
static formatar(valor: string, options?: Options): string;
|
|
31
|
+
valueOf(): number | null;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=Numero.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Numero.d.ts","sourceRoot":"","sources":["../../src/valueObjects/Numero.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,MAAM,WAAW,OAAO;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB;;CAAuB,CAAC;AAEzD,eAAO,MAAM,cAAc,EAAE,OAI5B,CAAC;AAUF,MAAM,CAAC,OAAO,OAAO,MAAO,YAAW,OAAO;IAC5C,SAAS,CAAC,MAAM,EAAG,MAAM,CAAC;IAC1B,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC;IAC/B,SAAS,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,CAAQ;gBAGxC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAC7B,UAAU,GAAE,OAAO,CAAC,OAAO,CAAkB;IAM/C,IAAI,QAAQ,IAAI,IAAI,GAAG,MAAM,CAE5B;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EA+BtC;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI;IAI7C,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM;IAIxC,OAAO,CAAC,MAAM,CAAC,YAAY;IAuBpB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;WA0BzC,eAAe,CAC3B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,OAAwB,GAChC,MAAM;WA8BK,aAAa,CACzB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,OAAwB;WAerB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,OAAwB;IAMvE,OAAO,IAAI,MAAM,GAAG,IAAI;CAGzB"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FORMATO_PADRAO = exports.LIMITE_DIGITO_NUMBER = void 0;
|
|
4
|
+
/** Limites de dígitos para formatação (ex.: casas decimais) */
|
|
5
|
+
exports.LIMITE_DIGITO_NUMBER = { NOVE: 9 };
|
|
6
|
+
exports.FORMATO_PADRAO = {
|
|
7
|
+
decimal: ",",
|
|
8
|
+
separator: ".",
|
|
9
|
+
precision: 0,
|
|
10
|
+
};
|
|
11
|
+
function between(min, n, max) {
|
|
12
|
+
return Math.max(min, Math.min(n, max));
|
|
13
|
+
}
|
|
14
|
+
function fixed(precision) {
|
|
15
|
+
return between(0, precision, 20);
|
|
16
|
+
}
|
|
17
|
+
class Numero {
|
|
18
|
+
constructor(valor, formatador = exports.FORMATO_PADRAO) {
|
|
19
|
+
this._ehValido = true;
|
|
20
|
+
this._formatador = { ...exports.FORMATO_PADRAO, ...formatador };
|
|
21
|
+
this.valor = valor;
|
|
22
|
+
}
|
|
23
|
+
get ehValido() {
|
|
24
|
+
return this._ehValido;
|
|
25
|
+
}
|
|
26
|
+
get valor() {
|
|
27
|
+
return this._valor;
|
|
28
|
+
}
|
|
29
|
+
set valor(valor) {
|
|
30
|
+
if (valor === null || valor === "") {
|
|
31
|
+
this._valor = "";
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (valor == "-" && this._formatador.min && this._formatador.min < 0) {
|
|
35
|
+
const numeroNegativo = Numero.aplicarSimbolos("0,00", this._formatador);
|
|
36
|
+
this._valor = "-" + numeroNegativo;
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
// Sanatizar
|
|
40
|
+
let valorSanitizado = this.sanitizar(valor);
|
|
41
|
+
// Limitar
|
|
42
|
+
let valorLimitado = Numero.limitarValor(valorSanitizado || 0, this._formatador) || 0;
|
|
43
|
+
// Formatar
|
|
44
|
+
const ehNegativo = valorLimitado < 0;
|
|
45
|
+
let valorFormatado = valorLimitado
|
|
46
|
+
.toFixed(this._formatador.precision || 0)
|
|
47
|
+
.replace(/[.-]/g, "");
|
|
48
|
+
valorFormatado = Numero.formatarValor(valorFormatado, this._formatador);
|
|
49
|
+
// Aplicar simbolos
|
|
50
|
+
valorFormatado = Numero.aplicarSimbolos(valorFormatado, this._formatador);
|
|
51
|
+
this._valor = `${ehNegativo ? "-" : ""}${valorFormatado}`;
|
|
52
|
+
}
|
|
53
|
+
setValor(valor) {
|
|
54
|
+
this.valor = valor;
|
|
55
|
+
}
|
|
56
|
+
validar(value) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
static limitarValor(valor, options) {
|
|
60
|
+
const { min = 0, max } = options;
|
|
61
|
+
if (min !== undefined && valor < min) {
|
|
62
|
+
if (options.precision === 0) {
|
|
63
|
+
valor = parseFloat(min.toString().split(".")[0]);
|
|
64
|
+
}
|
|
65
|
+
else if (options.precision && options.precision > 0) {
|
|
66
|
+
valor = parseFloat(min.toFixed(options.precision));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (max !== undefined && valor > max) {
|
|
70
|
+
if (options.precision === 0) {
|
|
71
|
+
valor = parseFloat(max.toString().split(".")[0]);
|
|
72
|
+
}
|
|
73
|
+
else if (options.precision && options.precision > 0) {
|
|
74
|
+
valor = parseFloat(max.toFixed(options.precision));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return valor;
|
|
78
|
+
}
|
|
79
|
+
// TODO: Caso valor seja string, deve considerar o separador decimal caso exista e aplicar o formatador.precision corretamente
|
|
80
|
+
sanitizar(valor) {
|
|
81
|
+
const { decimal } = this._formatador;
|
|
82
|
+
let valorLimite;
|
|
83
|
+
if (typeof valor === "string") {
|
|
84
|
+
const ehNegativo = valor.trim().startsWith("-");
|
|
85
|
+
let valorSanitizado = valor.replace(/[^0-9]/g, "").replace(/^0+/, "");
|
|
86
|
+
valorSanitizado = Numero.formatarValor(valorSanitizado, this._formatador);
|
|
87
|
+
if (valorSanitizado === "") {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
valorLimite = parseFloat(valorSanitizado.replace(decimal, "."));
|
|
91
|
+
if (ehNegativo) {
|
|
92
|
+
valorLimite = -valorLimite;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
valorLimite = valor;
|
|
97
|
+
}
|
|
98
|
+
return parseFloat(valorLimite.toFixed(this._formatador.precision || 0));
|
|
99
|
+
}
|
|
100
|
+
static aplicarSimbolos(valor, options = exports.FORMATO_PADRAO) {
|
|
101
|
+
let valorFormatado = valor;
|
|
102
|
+
// Aplicar separador
|
|
103
|
+
if (options.separator) {
|
|
104
|
+
const [parteInteira, parteDecimal] = valorFormatado.split(options.decimal);
|
|
105
|
+
valorFormatado = parteInteira;
|
|
106
|
+
valorFormatado = valorFormatado.replace(/\B(?=(\d{3})+(?!\d))/g, options.separator);
|
|
107
|
+
if (parteDecimal) {
|
|
108
|
+
valorFormatado += options.decimal + parteDecimal;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// Aplicar simbolos
|
|
112
|
+
if (options.prefix) {
|
|
113
|
+
valorFormatado = `${options.prefix}${valorFormatado}`;
|
|
114
|
+
}
|
|
115
|
+
if (options.suffix) {
|
|
116
|
+
valorFormatado = `${valorFormatado}${options.suffix}`;
|
|
117
|
+
}
|
|
118
|
+
return valorFormatado;
|
|
119
|
+
}
|
|
120
|
+
static formatarValor(valor, options = exports.FORMATO_PADRAO) {
|
|
121
|
+
let valorFormatado = valor;
|
|
122
|
+
const { precision = 0, decimal } = options;
|
|
123
|
+
if (precision > 0) {
|
|
124
|
+
const paddedValue = valorFormatado.padStart(precision + 1, "0");
|
|
125
|
+
const integerPart = paddedValue.slice(0, -precision);
|
|
126
|
+
const decimalPart = paddedValue.slice(-precision);
|
|
127
|
+
valorFormatado = `${integerPart}${decimal}${decimalPart}`;
|
|
128
|
+
}
|
|
129
|
+
return valorFormatado;
|
|
130
|
+
}
|
|
131
|
+
static formatar(valor, options = exports.FORMATO_PADRAO) {
|
|
132
|
+
const valorFormatado = Numero.formatarValor(valor, options);
|
|
133
|
+
return Numero.aplicarSimbolos(valorFormatado, options);
|
|
134
|
+
}
|
|
135
|
+
valueOf() {
|
|
136
|
+
return this.sanitizar(this.valor);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
exports.default = Numero;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IPlaca } from "../types";
|
|
2
|
+
export default class Placa implements IPlaca {
|
|
3
|
+
private _valor;
|
|
4
|
+
private _ehValido;
|
|
5
|
+
constructor(value?: string);
|
|
6
|
+
set valor(v: string);
|
|
7
|
+
get valor(): string;
|
|
8
|
+
get ehValido(): string | true;
|
|
9
|
+
valueOf(): string;
|
|
10
|
+
private static sanitizar;
|
|
11
|
+
static formatar(valor: string): string;
|
|
12
|
+
validar(valor: string): void;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=Placa.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Placa.d.ts","sourceRoot":"","sources":["../../src/valueObjects/Placa.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,MAAM,CAAC,OAAO,OAAO,KAAM,YAAW,MAAM;IAC1C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAuB;gBAE5B,KAAK,CAAC,EAAE,MAAM;IAO1B,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,EAIlB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,QAAQ,kBAEX;IAED,OAAO;IAIP,OAAO,CAAC,MAAM,CAAC,SAAS;WAQV,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAYtC,OAAO,CAAC,KAAK,EAAE,MAAM;CAe7B"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("../utils");
|
|
4
|
+
class Placa {
|
|
5
|
+
constructor(value) {
|
|
6
|
+
this._ehValido = true;
|
|
7
|
+
value = Placa.formatar(value || "");
|
|
8
|
+
this.validar(value);
|
|
9
|
+
this._valor = value;
|
|
10
|
+
}
|
|
11
|
+
set valor(v) {
|
|
12
|
+
v = Placa.formatar(v);
|
|
13
|
+
this.validar(v);
|
|
14
|
+
this._valor = v;
|
|
15
|
+
}
|
|
16
|
+
get valor() {
|
|
17
|
+
return this._valor;
|
|
18
|
+
}
|
|
19
|
+
get ehValido() {
|
|
20
|
+
return this._ehValido;
|
|
21
|
+
}
|
|
22
|
+
valueOf() {
|
|
23
|
+
return Placa.sanitizar(this._valor);
|
|
24
|
+
}
|
|
25
|
+
static sanitizar(valor) {
|
|
26
|
+
if (valor.length <= 3) {
|
|
27
|
+
return valor.toUpperCase().replace(/[^A-Z]/g, "");
|
|
28
|
+
}
|
|
29
|
+
return valor.toUpperCase().replace(/[^A-Z0-9]/g, "");
|
|
30
|
+
}
|
|
31
|
+
static formatar(valor) {
|
|
32
|
+
const placaSanitizado = this.sanitizar(valor);
|
|
33
|
+
let placaFormatado = placaSanitizado;
|
|
34
|
+
if (placaSanitizado.length > 3) {
|
|
35
|
+
placaFormatado =
|
|
36
|
+
placaFormatado.slice(0, 3) + "-" + placaFormatado.slice(3);
|
|
37
|
+
}
|
|
38
|
+
return placaFormatado.slice(0, 8);
|
|
39
|
+
}
|
|
40
|
+
validar(valor) {
|
|
41
|
+
if ((0, utils_1.isEmpty)(valor)) {
|
|
42
|
+
this._ehValido = true;
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const reg = new RegExp(/[A-Z]{3}[0-9][0-9A-Z][0-9]{2}/);
|
|
46
|
+
const placa = valor.replace(/[^A-Z0-9]/g, ""); // Remove caracteres não permitidos
|
|
47
|
+
if (!reg.test(placa)) {
|
|
48
|
+
this._ehValido = "Placa inválida";
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
this._ehValido = true;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.default = Placa;
|
package/package.json
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "vality-core",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Value objects e validações para formulários (CPF, CNPJ, Email, Moeda, DatePicker, etc.)",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"sideEffects": false,
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"README.md"
|
|
12
|
+
],
|
|
13
|
+
"publishConfig": {
|
|
14
|
+
"access": "public"
|
|
15
|
+
},
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsc -p tsconfig.build.json",
|
|
18
|
+
"test": "jest",
|
|
19
|
+
"prepublishOnly": "npm run test -- --silent --no-verbose && npm run build"
|
|
20
|
+
},
|
|
21
|
+
"keywords": [
|
|
22
|
+
"vality",
|
|
23
|
+
"validation",
|
|
24
|
+
"cpf",
|
|
25
|
+
"cnpj",
|
|
26
|
+
"email",
|
|
27
|
+
"value-objects",
|
|
28
|
+
"form",
|
|
29
|
+
"brazil"
|
|
30
|
+
],
|
|
31
|
+
"author": "Weslan Alves (https://github.com/weslanra)",
|
|
32
|
+
"contributors": [
|
|
33
|
+
{
|
|
34
|
+
"name": "Bárbara Mota Santana",
|
|
35
|
+
"url": "https://www.linkedin.com/in/barbaramotasantana/"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"name": "Lucas Tenório",
|
|
39
|
+
"url": "https://www.linkedin.com/in/tenorio-lucas/"
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
"license": "MIT",
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@types/jest": "^29.5.12",
|
|
45
|
+
"jest": "^29.7.0",
|
|
46
|
+
"ts-jest": "^29.1.2",
|
|
47
|
+
"typescript": "^5.0.0"
|
|
48
|
+
},
|
|
49
|
+
"engines": {
|
|
50
|
+
"node": ">=16"
|
|
51
|
+
}
|
|
52
|
+
}
|