exodus-framework 2.1.1026 → 2.1.1027
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/lib/utils/api.d.ts +3 -3
- package/lib/utils/api.d.ts.map +1 -1
- package/lib/utils/api.js +166 -0
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.d.ts.map +1 -1
- package/lib/utils/index.js +9 -1
- package/lib/utils/phone.d.ts +23 -0
- package/lib/utils/phone.d.ts.map +1 -0
- package/lib/utils/phone.js +289 -0
- package/lib/utils/session.d.ts +1 -1
- package/package.json +2 -1
package/lib/utils/api.d.ts
CHANGED
@@ -7,9 +7,9 @@ declare abstract class Api {
|
|
7
7
|
constructor();
|
8
8
|
init(): Promise<void>;
|
9
9
|
abstract validateStatus(status: number): boolean;
|
10
|
-
request<T>(endpoint: string, method: Method, data?: any, params?: any, headers?: AxiosHeaders): Promise<IApiResponse<T> | import("axios").AxiosResponse<T, any>>;
|
11
|
-
requestDirect<T>(endpoint: string, method: Method, data?: any, params?: any, headers?: AxiosHeaders): Promise<import("axios").AxiosResponse<IApiResponse<T>, any> | import("axios").AxiosResponse<T, any>>;
|
12
|
-
requestExternal<T>(endpoint: string, method: Method, data?: any, params?: any, headers?: AxiosHeaders): Promise<import("axios").AxiosResponse<T, any>>;
|
10
|
+
request<T>(endpoint: string, method: Method, data?: any, params?: any, headers?: AxiosHeaders): Promise<IApiResponse<T> | import("axios").AxiosResponse<T, any, {}>>;
|
11
|
+
requestDirect<T>(endpoint: string, method: Method, data?: any, params?: any, headers?: AxiosHeaders): Promise<import("axios").AxiosResponse<IApiResponse<T>, any, {}> | import("axios").AxiosResponse<T, any, {}>>;
|
12
|
+
requestExternal<T>(endpoint: string, method: Method, data?: any, params?: any, headers?: AxiosHeaders): Promise<import("axios").AxiosResponse<T, any, {}>>;
|
13
13
|
protected getLogicalSecurityId(): string;
|
14
14
|
}
|
15
15
|
export default Api;
|
package/lib/utils/api.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAc,MAAM,OAAO,CAAC;AAG/E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAc,MAAM,OAAO,CAAC;AAG/E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AA6BjD,uBAAe,GAAG;IAEhB,KAAK,EAAE,aAAa,CAAC;IAGrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAGtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;;IAuBhC,IAAI;IA0BV,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IA4B1C,OAAO,CAAC,CAAC,EACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,GAAG,EACV,MAAM,CAAC,EAAE,GAAG,EACZ,OAAO,CAAC,EAAE,YAAY;IAwClB,aAAa,CAAC,CAAC,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,GAAG,EACV,MAAM,CAAC,EAAE,GAAG,EACZ,OAAO,CAAC,EAAE,YAAY;IAkDlB,eAAe,CAAC,CAAC,EACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,GAAG,EACV,MAAM,CAAC,EAAE,GAAG,EACZ,OAAO,CAAC,EAAE,YAAY;IAiCxB,SAAS,CAAC,oBAAoB;CAI/B;AAED,eAAe,GAAG,CAAC"}
|
package/lib/utils/api.js
CHANGED
@@ -8,11 +8,62 @@ var _axios = _interopRequireDefault(require("axios"));
|
|
8
8
|
var _dateFns = require("date-fns");
|
9
9
|
var _app = require("../app");
|
10
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
11
|
+
/**
|
12
|
+
* Classe abstrata base para criação de clientes HTTP usando Axios.
|
13
|
+
*
|
14
|
+
* Esta classe fornece uma estrutura comum para realizar requisições HTTP
|
15
|
+
* com tratamento de erros padronizado, validação de status customizável
|
16
|
+
* e diferentes tipos de requisições (interna, externa, direta).
|
17
|
+
*
|
18
|
+
* @example
|
19
|
+
* ```typescript
|
20
|
+
* class MyApiClient extends Api {
|
21
|
+
* host = 'https://api.example.com';
|
22
|
+
* headers = { 'Authorization': 'Bearer token' };
|
23
|
+
*
|
24
|
+
* validateStatus(status: number): boolean {
|
25
|
+
* return status >= 200 && status < 300;
|
26
|
+
* }
|
27
|
+
* }
|
28
|
+
*
|
29
|
+
* const client = new MyApiClient();
|
30
|
+
* const response = await client.request('/users', 'GET');
|
31
|
+
* ```
|
32
|
+
*
|
33
|
+
* @abstract
|
34
|
+
* @class Api
|
35
|
+
* @version 1.0.0
|
36
|
+
* @author Exodus Framework
|
37
|
+
*/
|
11
38
|
class Api {
|
39
|
+
/** Instância do Axios configurada */
|
12
40
|
axios;
|
41
|
+
|
42
|
+
/** URL base para as requisições (deve ser implementado nas classes filhas) */
|
43
|
+
|
44
|
+
/** Headers padrão para as requisições (deve ser implementado nas classes filhas) */
|
45
|
+
|
46
|
+
/**
|
47
|
+
* Construtor da classe Api.
|
48
|
+
* Inicializa automaticamente a instância do Axios.
|
49
|
+
*/
|
13
50
|
constructor() {
|
14
51
|
this.init();
|
15
52
|
}
|
53
|
+
|
54
|
+
/**
|
55
|
+
* Inicializa a instância do Axios com configurações padrão.
|
56
|
+
*
|
57
|
+
* @protected
|
58
|
+
* @async
|
59
|
+
* @returns Promise<void>
|
60
|
+
*
|
61
|
+
* @example
|
62
|
+
* ```typescript
|
63
|
+
* // Chamado automaticamente no constructor
|
64
|
+
* await this.init();
|
65
|
+
* ```
|
66
|
+
*/
|
16
67
|
async init() {
|
17
68
|
this.axios = _axios.default.create({
|
18
69
|
baseURL: this.host,
|
@@ -23,6 +74,49 @@ class Api {
|
|
23
74
|
validateStatus: this.validateStatus
|
24
75
|
});
|
25
76
|
}
|
77
|
+
|
78
|
+
/**
|
79
|
+
* Método abstrato para validação de status HTTP.
|
80
|
+
* Deve ser implementado nas classes filhas para definir quais status são considerados válidos.
|
81
|
+
*
|
82
|
+
* @abstract
|
83
|
+
* @param status - Código de status HTTP da resposta
|
84
|
+
* @returns true se o status é válido, false caso contrário
|
85
|
+
*
|
86
|
+
* @example
|
87
|
+
* ```typescript
|
88
|
+
* validateStatus(status: number): boolean {
|
89
|
+
* return status >= 200 && status < 400; // Aceita 2xx e 3xx
|
90
|
+
* }
|
91
|
+
* ```
|
92
|
+
*/
|
93
|
+
|
94
|
+
/**
|
95
|
+
* Realiza uma requisição HTTP e retorna apenas os dados da resposta.
|
96
|
+
*
|
97
|
+
* @template T - Tipo dos dados esperados na resposta
|
98
|
+
* @param endpoint - Endpoint da API (será concatenado com host)
|
99
|
+
* @param method - Método HTTP (GET, POST, PUT, DELETE, etc.)
|
100
|
+
* @param data - Dados para envio no corpo da requisição (opcional)
|
101
|
+
* @param params - Parâmetros de query string (opcional)
|
102
|
+
* @param headers - Headers adicionais para a requisição (opcional)
|
103
|
+
* @returns Promise com os dados da resposta ou undefined em caso de erro
|
104
|
+
*
|
105
|
+
* @example
|
106
|
+
* ```typescript
|
107
|
+
* // GET request
|
108
|
+
* const users = await this.request<User[]>('/users', 'GET');
|
109
|
+
*
|
110
|
+
* // POST request com dados
|
111
|
+
* const newUser = await this.request<User>('/users', 'POST', {
|
112
|
+
* name: 'João',
|
113
|
+
* email: 'joao@example.com'
|
114
|
+
* });
|
115
|
+
*
|
116
|
+
* // GET com parâmetros
|
117
|
+
* const user = await this.request<User>('/users', 'GET', null, { id: 123 });
|
118
|
+
* ```
|
119
|
+
*/
|
26
120
|
async request(endpoint, method, data, params, headers) {
|
27
121
|
try {
|
28
122
|
const res = await this.axios({
|
@@ -42,6 +136,29 @@ class Api {
|
|
42
136
|
return e.response;
|
43
137
|
}
|
44
138
|
}
|
139
|
+
|
140
|
+
/**
|
141
|
+
* Realiza uma requisição HTTP e retorna a resposta completa do Axios.
|
142
|
+
*
|
143
|
+
* Este método é útil quando você precisa acessar headers, status code,
|
144
|
+
* ou outras propriedades da resposta além dos dados.
|
145
|
+
*
|
146
|
+
* @template T - Tipo dos dados esperados na resposta
|
147
|
+
* @param endpoint - Endpoint da API (será concatenado com host)
|
148
|
+
* @param method - Método HTTP (GET, POST, PUT, DELETE, etc.)
|
149
|
+
* @param data - Dados para envio no corpo da requisição (opcional)
|
150
|
+
* @param params - Parâmetros de query string (opcional)
|
151
|
+
* @param headers - Headers adicionais para a requisição (opcional)
|
152
|
+
* @returns Promise com a resposta completa do Axios ou undefined em caso de erro
|
153
|
+
*
|
154
|
+
* @example
|
155
|
+
* ```typescript
|
156
|
+
* const response = await this.requestDirect<User>('/users/1', 'GET');
|
157
|
+
* console.log(response.status); // 200
|
158
|
+
* console.log(response.headers); // Headers da resposta
|
159
|
+
* console.log(response.data); // Dados do usuário
|
160
|
+
* ```
|
161
|
+
*/
|
45
162
|
async requestDirect(endpoint, method, data, params, headers) {
|
46
163
|
try {
|
47
164
|
const res = await this.axios({
|
@@ -61,6 +178,39 @@ class Api {
|
|
61
178
|
return e.response;
|
62
179
|
}
|
63
180
|
}
|
181
|
+
|
182
|
+
/**
|
183
|
+
* Realiza uma requisição HTTP para APIs externas.
|
184
|
+
*
|
185
|
+
* Este método é otimizado para chamadas a APIs de terceiros,
|
186
|
+
* não utilizando a interface IApiResponse padrão do framework.
|
187
|
+
*
|
188
|
+
* @template T - Tipo dos dados esperados na resposta
|
189
|
+
* @param endpoint - Endpoint da API (será concatenado com host)
|
190
|
+
* @param method - Método HTTP (GET, POST, PUT, DELETE, etc.)
|
191
|
+
* @param data - Dados para envio no corpo da requisição (opcional)
|
192
|
+
* @param params - Parâmetros de query string (opcional)
|
193
|
+
* @param headers - Headers adicionais para a requisição (opcional)
|
194
|
+
* @returns Promise com a resposta da API externa ou undefined em caso de erro
|
195
|
+
*
|
196
|
+
* @example
|
197
|
+
* ```typescript
|
198
|
+
* // Chamada para API externa (ex: GitHub)
|
199
|
+
* const githubUser = await this.requestExternal<GitHubUser>(
|
200
|
+
* '/users/octocat',
|
201
|
+
* 'GET'
|
202
|
+
* );
|
203
|
+
*
|
204
|
+
* // API externa com autenticação
|
205
|
+
* const data = await this.requestExternal<ExternalData>(
|
206
|
+
* '/api/data',
|
207
|
+
* 'GET',
|
208
|
+
* null,
|
209
|
+
* null,
|
210
|
+
* { 'X-API-Key': 'external-api-key' }
|
211
|
+
* );
|
212
|
+
* ```
|
213
|
+
*/
|
64
214
|
async requestExternal(endpoint, method, data, params, headers) {
|
65
215
|
try {
|
66
216
|
const res = await this.axios({
|
@@ -80,6 +230,22 @@ class Api {
|
|
80
230
|
return e.response;
|
81
231
|
}
|
82
232
|
}
|
233
|
+
|
234
|
+
/**
|
235
|
+
* Gera um ID de segurança lógica baseado na data atual.
|
236
|
+
*
|
237
|
+
* Este método cria um identificador único baseado na data atual,
|
238
|
+
* útil para implementações de segurança ou cache temporal.
|
239
|
+
*
|
240
|
+
* @protected
|
241
|
+
* @returns String contendo o ID de segurança lógica
|
242
|
+
*
|
243
|
+
* @example
|
244
|
+
* ```typescript
|
245
|
+
* const securityId = this.getLogicalSecurityId();
|
246
|
+
* console.log(securityId); // "1695513600000" (exemplo)
|
247
|
+
* ```
|
248
|
+
*/
|
83
249
|
getLogicalSecurityId() {
|
84
250
|
const date = (0, _dateFns.format)(new Date(), 'yyyy-MM-dd');
|
85
251
|
return String(Date.parse(date) - 5000);
|
package/lib/utils/index.d.ts
CHANGED
package/lib/utils/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,OAAO,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,cAAc,WAAW,CAAC"}
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,OAAO,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC"}
|
package/lib/utils/index.js
CHANGED
@@ -5,7 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
});
|
6
6
|
var _exportNames = {
|
7
7
|
Api: true,
|
8
|
-
logger: true
|
8
|
+
logger: true,
|
9
|
+
Phone: true
|
9
10
|
};
|
10
11
|
Object.defineProperty(exports, "Api", {
|
11
12
|
enumerable: true,
|
@@ -13,6 +14,12 @@ Object.defineProperty(exports, "Api", {
|
|
13
14
|
return _api.default;
|
14
15
|
}
|
15
16
|
});
|
17
|
+
Object.defineProperty(exports, "Phone", {
|
18
|
+
enumerable: true,
|
19
|
+
get: function () {
|
20
|
+
return _phone.default;
|
21
|
+
}
|
22
|
+
});
|
16
23
|
Object.defineProperty(exports, "logger", {
|
17
24
|
enumerable: true,
|
18
25
|
get: function () {
|
@@ -57,4 +64,5 @@ Object.keys(_session).forEach(function (key) {
|
|
57
64
|
}
|
58
65
|
});
|
59
66
|
});
|
67
|
+
var _phone = _interopRequireDefault(require("./phone"));
|
60
68
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
@@ -0,0 +1,23 @@
|
|
1
|
+
declare class Phone {
|
2
|
+
private phone;
|
3
|
+
private ddi;
|
4
|
+
private ddd;
|
5
|
+
private nine;
|
6
|
+
private phonePart1;
|
7
|
+
private phonePart2;
|
8
|
+
private isValid;
|
9
|
+
private number;
|
10
|
+
constructor(phone: string);
|
11
|
+
getDDI(): string;
|
12
|
+
getDDD(): string;
|
13
|
+
hasNine(): boolean;
|
14
|
+
getNumber(): string;
|
15
|
+
getMaskedPhone(ddi?: boolean, ddd?: boolean, nine?: boolean): string;
|
16
|
+
getPhone(ddi?: boolean, ddd?: boolean, nine?: boolean): string;
|
17
|
+
getPhonePart1(): string;
|
18
|
+
getPhonePart2(): string;
|
19
|
+
getOriginalPhone(): string;
|
20
|
+
isValidPhone(): boolean;
|
21
|
+
}
|
22
|
+
export default Phone;
|
23
|
+
//# sourceMappingURL=phone.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"phone.d.ts","sourceRoot":"","sources":["../../src/utils/phone.ts"],"names":[],"mappings":"AA8BA,cAAM,KAAK;IAkCG,OAAO,CAAC,KAAK;IAhCzB,OAAO,CAAC,GAAG,CAAS;IAGpB,OAAO,CAAC,GAAG,CAAS;IAGpB,OAAO,CAAC,IAAI,CAAS;IAGrB,OAAO,CAAC,UAAU,CAAS;IAG3B,OAAO,CAAC,UAAU,CAAS;IAG3B,OAAO,CAAC,OAAO,CAAU;IAGzB,OAAO,CAAC,MAAM,CAAS;gBAcH,KAAK,EAAE,MAAM;IAuD1B,MAAM;IAeN,MAAM;IAiBN,OAAO;IAeP,SAAS;IAoBT,cAAc,CAAC,GAAG,UAAO,EAAE,GAAG,UAAO,EAAE,IAAI,UAAO;IA2BlD,QAAQ,CAAC,GAAG,UAAO,EAAE,GAAG,UAAO,EAAE,IAAI,UAAO;IAqB5C,aAAa;IAeb,aAAa;IAeb,gBAAgB;IAiBhB,YAAY,IAAI,OAAO;CAG/B;AAED,eAAe,KAAK,CAAC"}
|
@@ -0,0 +1,289 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = void 0;
|
7
|
+
var _libphonenumberJs = require("libphonenumber-js");
|
8
|
+
/**
|
9
|
+
* Classe utilitária para manipulação e validação de números de telefone brasileiros.
|
10
|
+
*
|
11
|
+
* Esta classe utiliza a biblioteca `libphonenumber-js` para parsing e validação,
|
12
|
+
* oferecendo métodos para extrair componentes do telefone (DDI, DDD, nono dígito)
|
13
|
+
* e formatação em diferentes padrões.
|
14
|
+
*
|
15
|
+
* @example
|
16
|
+
* ```typescript
|
17
|
+
* // Criando uma instância com número brasileiro
|
18
|
+
* const phone = new Phone('(11) 99999-8888');
|
19
|
+
*
|
20
|
+
* // Verificando se é válido
|
21
|
+
* console.log(phone.isValidPhone()); // true
|
22
|
+
*
|
23
|
+
* // Obtendo componentes
|
24
|
+
* console.log(phone.getDDD()); // '11'
|
25
|
+
* console.log(phone.hasNine()); // true
|
26
|
+
*
|
27
|
+
* // Formatação
|
28
|
+
* console.log(phone.getMaskedPhone()); // '+55 (11) 9 9999-8888'
|
29
|
+
* console.log(phone.getPhone(false, true, true)); // '1199999888'
|
30
|
+
* ```
|
31
|
+
*
|
32
|
+
* @class Phone
|
33
|
+
* @version 1.0.0
|
34
|
+
* @author Exodus Framework
|
35
|
+
*/
|
36
|
+
class Phone {
|
37
|
+
/** Código do país (DDI) */
|
38
|
+
ddi;
|
39
|
+
|
40
|
+
/** Código de área (DDD) */
|
41
|
+
ddd;
|
42
|
+
|
43
|
+
/** Nono dígito para celulares */
|
44
|
+
nine;
|
45
|
+
|
46
|
+
/** Primeira parte do número (4 primeiros dígitos) */
|
47
|
+
phonePart1;
|
48
|
+
|
49
|
+
/** Segunda parte do número (4 últimos dígitos) */
|
50
|
+
phonePart2;
|
51
|
+
|
52
|
+
/** Indica se o número é válido */
|
53
|
+
isValid;
|
54
|
+
|
55
|
+
/** Número limpo (apenas dígitos) */
|
56
|
+
number;
|
57
|
+
|
58
|
+
/**
|
59
|
+
* Cria uma nova instância da classe Phone.
|
60
|
+
*
|
61
|
+
* @param phone - Número de telefone em qualquer formato (com ou sem máscara)
|
62
|
+
*
|
63
|
+
* @example
|
64
|
+
* ```typescript
|
65
|
+
* const phone1 = new Phone('11999998888');
|
66
|
+
* const phone2 = new Phone('(11) 99999-8888');
|
67
|
+
* const phone3 = new Phone('+55 11 99999-8888');
|
68
|
+
* ```
|
69
|
+
*/
|
70
|
+
constructor(phone) {
|
71
|
+
this.phone = phone;
|
72
|
+
// Remove todos os caracteres não numéricos
|
73
|
+
this.number = phone.replace(/\D/g, '');
|
74
|
+
|
75
|
+
// Utiliza libphonenumber-js para parsing do número brasileiro
|
76
|
+
const parsed = (0, _libphonenumberJs.parsePhoneNumberFromString)(this.number, 'BR');
|
77
|
+
this.isValid = !!parsed;
|
78
|
+
|
79
|
+
// Se não foi possível fazer o parse, marca como inválido
|
80
|
+
if (!parsed) {
|
81
|
+
this.isValid = false;
|
82
|
+
return;
|
83
|
+
}
|
84
|
+
|
85
|
+
// Extrai o DDI (código do país)
|
86
|
+
this.ddi = parsed.countryCallingCode;
|
87
|
+
|
88
|
+
// Processa baseado no tamanho do número nacional
|
89
|
+
if (parsed.nationalNumber.length > 10) {
|
90
|
+
// Celular com DDD e nono dígito (11 dígitos)
|
91
|
+
this.ddd = parsed.nationalNumber.slice(0, 2);
|
92
|
+
this.nine = parsed.nationalNumber[2];
|
93
|
+
this.phonePart1 = parsed.nationalNumber.slice(3, 7);
|
94
|
+
this.phonePart2 = parsed.nationalNumber.slice(7, parsed.nationalNumber.length);
|
95
|
+
} else if (parsed.nationalNumber.length == 10) {
|
96
|
+
// Telefone fixo com DDD (10 dígitos)
|
97
|
+
this.ddd = parsed.nationalNumber.slice(0, 2);
|
98
|
+
this.phonePart1 = parsed.nationalNumber.slice(2, 6);
|
99
|
+
this.phonePart2 = parsed.nationalNumber.slice(6, parsed.nationalNumber.length);
|
100
|
+
} else if (parsed.nationalNumber.length >= 9) {
|
101
|
+
// Celular sem DDD mas com nono dígito (9 dígitos)
|
102
|
+
this.nine = parsed.nationalNumber[0];
|
103
|
+
this.phonePart1 = parsed.nationalNumber.slice(1, 5);
|
104
|
+
this.phonePart2 = parsed.nationalNumber.slice(5, parsed.nationalNumber.length);
|
105
|
+
} else if (parsed.nationalNumber.length == 8) {
|
106
|
+
// Telefone fixo sem DDD (8 dígitos)
|
107
|
+
this.phonePart1 = parsed.nationalNumber.slice(0, 4);
|
108
|
+
this.phonePart2 = parsed.nationalNumber.slice(4, parsed.nationalNumber.length);
|
109
|
+
} else {
|
110
|
+
// Número inválido
|
111
|
+
this.isValid = false;
|
112
|
+
}
|
113
|
+
}
|
114
|
+
|
115
|
+
/**
|
116
|
+
* Retorna o código do país (DDI).
|
117
|
+
*
|
118
|
+
* @returns O DDI do número (ex: '55' para Brasil)
|
119
|
+
*
|
120
|
+
* @example
|
121
|
+
* ```typescript
|
122
|
+
* const phone = new Phone('+55 11 99999-8888');
|
123
|
+
* console.log(phone.getDDI()); // '55'
|
124
|
+
* ```
|
125
|
+
*/
|
126
|
+
getDDI() {
|
127
|
+
return this.ddi;
|
128
|
+
}
|
129
|
+
|
130
|
+
/**
|
131
|
+
* Retorna o código de área (DDD).
|
132
|
+
*
|
133
|
+
* @returns O DDD do número (ex: '11' para São Paulo)
|
134
|
+
*
|
135
|
+
* @example
|
136
|
+
* ```typescript
|
137
|
+
* const phone = new Phone('(11) 99999-8888');
|
138
|
+
* console.log(phone.getDDD()); // '11'
|
139
|
+
* ```
|
140
|
+
*/
|
141
|
+
getDDD() {
|
142
|
+
return this.ddd;
|
143
|
+
}
|
144
|
+
|
145
|
+
/**
|
146
|
+
* Verifica se o número possui o nono dígito (celular).
|
147
|
+
*
|
148
|
+
* @returns true se possui o nono dígito, false caso contrário
|
149
|
+
*
|
150
|
+
* @example
|
151
|
+
* ```typescript
|
152
|
+
* const celular = new Phone('11999998888');
|
153
|
+
* const fixo = new Phone('1133334444');
|
154
|
+
* console.log(celular.hasNine()); // true
|
155
|
+
* console.log(fixo.hasNine()); // false
|
156
|
+
* ```
|
157
|
+
*/
|
158
|
+
hasNine() {
|
159
|
+
return !!this.nine;
|
160
|
+
}
|
161
|
+
|
162
|
+
/**
|
163
|
+
* Retorna o número limpo (apenas dígitos).
|
164
|
+
*
|
165
|
+
* @returns Número sem formatação, apenas dígitos
|
166
|
+
*
|
167
|
+
* @example
|
168
|
+
* ```typescript
|
169
|
+
* const phone = new Phone('(11) 99999-8888');
|
170
|
+
* console.log(phone.getNumber()); // '11999998888'
|
171
|
+
* ```
|
172
|
+
*/
|
173
|
+
getNumber() {
|
174
|
+
return this.number;
|
175
|
+
}
|
176
|
+
|
177
|
+
/**
|
178
|
+
* Retorna o número formatado com máscara.
|
179
|
+
*
|
180
|
+
* @param ddi - Incluir DDI na formatação (padrão: true)
|
181
|
+
* @param ddd - Incluir DDD na formatação (padrão: true)
|
182
|
+
* @param nine - Incluir nono dígito na formatação (padrão: true)
|
183
|
+
* @returns Número formatado com máscara
|
184
|
+
*
|
185
|
+
* @example
|
186
|
+
* ```typescript
|
187
|
+
* const phone = new Phone('5511999998888');
|
188
|
+
* console.log(phone.getMaskedPhone()); // '+55 (11) 9 9999-8888'
|
189
|
+
* console.log(phone.getMaskedPhone(false)); // '(11) 9 9999-8888'
|
190
|
+
* console.log(phone.getMaskedPhone(true, false)); // '+55 9 9999-8888'
|
191
|
+
* ```
|
192
|
+
*/
|
193
|
+
getMaskedPhone(ddi = true, ddd = true, nine = true) {
|
194
|
+
let fullNumber = '';
|
195
|
+
if (ddi && this.ddi) fullNumber += `+${this.ddi} `;
|
196
|
+
if (ddd && this.ddd) fullNumber += `(${this.ddd}) `;
|
197
|
+
if (nine && this.nine) fullNumber += `9 `;
|
198
|
+
fullNumber += `${this.getPhonePart1()}-${this.getPhonePart2()}`;
|
199
|
+
return fullNumber;
|
200
|
+
}
|
201
|
+
|
202
|
+
/**
|
203
|
+
* Retorna o número sem formatação, incluindo apenas os componentes selecionados.
|
204
|
+
*
|
205
|
+
* @param ddi - Incluir DDI no resultado (padrão: true)
|
206
|
+
* @param ddd - Incluir DDD no resultado (padrão: true)
|
207
|
+
* @param nine - Incluir nono dígito no resultado (padrão: true)
|
208
|
+
* @returns Número sem formatação
|
209
|
+
*
|
210
|
+
* @example
|
211
|
+
* ```typescript
|
212
|
+
* const phone = new Phone('5511999998888');
|
213
|
+
* console.log(phone.getPhone()); // '5511999998888'
|
214
|
+
* console.log(phone.getPhone(false)); // '11999998888'
|
215
|
+
* console.log(phone.getPhone(false, true, false)); // '1199998888'
|
216
|
+
* ```
|
217
|
+
*/
|
218
|
+
getPhone(ddi = true, ddd = true, nine = true) {
|
219
|
+
let fullNumber = '';
|
220
|
+
if (ddi && this.ddi) fullNumber += this.ddi;
|
221
|
+
if (ddd && this.ddd) fullNumber += this.ddd;
|
222
|
+
if (nine && this.nine) fullNumber += this.nine;
|
223
|
+
fullNumber += this.getPhonePart1() + this.getPhonePart2();
|
224
|
+
return fullNumber;
|
225
|
+
}
|
226
|
+
|
227
|
+
/**
|
228
|
+
* Retorna a primeira parte do número (primeiros 4 dígitos após DDD/nono dígito).
|
229
|
+
*
|
230
|
+
* @returns Primeira parte do número
|
231
|
+
*
|
232
|
+
* @example
|
233
|
+
* ```typescript
|
234
|
+
* const phone = new Phone('11999998888');
|
235
|
+
* console.log(phone.getPhonePart1()); // '9999'
|
236
|
+
* ```
|
237
|
+
*/
|
238
|
+
getPhonePart1() {
|
239
|
+
return this.phonePart1;
|
240
|
+
}
|
241
|
+
|
242
|
+
/**
|
243
|
+
* Retorna a segunda parte do número (últimos 4 dígitos).
|
244
|
+
*
|
245
|
+
* @returns Segunda parte do número
|
246
|
+
*
|
247
|
+
* @example
|
248
|
+
* ```typescript
|
249
|
+
* const phone = new Phone('11999998888');
|
250
|
+
* console.log(phone.getPhonePart2()); // '8888'
|
251
|
+
* ```
|
252
|
+
*/
|
253
|
+
getPhonePart2() {
|
254
|
+
return this.phonePart2;
|
255
|
+
}
|
256
|
+
|
257
|
+
/**
|
258
|
+
* Retorna o número original fornecido no construtor.
|
259
|
+
*
|
260
|
+
* @returns Número original sem alterações
|
261
|
+
*
|
262
|
+
* @example
|
263
|
+
* ```typescript
|
264
|
+
* const phone = new Phone('(11) 99999-8888');
|
265
|
+
* console.log(phone.getOriginalPhone()); // '(11) 99999-8888'
|
266
|
+
* ```
|
267
|
+
*/
|
268
|
+
getOriginalPhone() {
|
269
|
+
return this.phone;
|
270
|
+
}
|
271
|
+
|
272
|
+
/**
|
273
|
+
* Verifica se o número de telefone é válido.
|
274
|
+
*
|
275
|
+
* @returns true se o número é válido, false caso contrário
|
276
|
+
*
|
277
|
+
* @example
|
278
|
+
* ```typescript
|
279
|
+
* const validPhone = new Phone('11999998888');
|
280
|
+
* const invalidPhone = new Phone('123');
|
281
|
+
* console.log(validPhone.isValidPhone()); // true
|
282
|
+
* console.log(invalidPhone.isValidPhone()); // false
|
283
|
+
* ```
|
284
|
+
*/
|
285
|
+
isValidPhone() {
|
286
|
+
return this.isValid;
|
287
|
+
}
|
288
|
+
}
|
289
|
+
var _default = exports.default = Phone;
|
package/lib/utils/session.d.ts
CHANGED
@@ -6,6 +6,6 @@ export declare class SessionAPI extends Api {
|
|
6
6
|
'X-Exodus-Core-Version': string;
|
7
7
|
};
|
8
8
|
validateStatus(status: number): boolean;
|
9
|
-
getCertificate(): Promise<import("..").IApiResponse<string> | import("axios").AxiosResponse<string, any>>;
|
9
|
+
getCertificate(): Promise<import("..").IApiResponse<string> | import("axios").AxiosResponse<string, any, {}>>;
|
10
10
|
}
|
11
11
|
//# sourceMappingURL=session.d.ts.map
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "exodus-framework",
|
3
|
-
"version": "2.1.
|
3
|
+
"version": "2.1.1027",
|
4
4
|
"description": "Exodus Framework",
|
5
5
|
"author": "jhownpaixao",
|
6
6
|
"license": "ISC",
|
@@ -40,6 +40,7 @@
|
|
40
40
|
"fs": "^0.0.1-security",
|
41
41
|
"fs-extra": "^11.3.0",
|
42
42
|
"install": "^0.13.0",
|
43
|
+
"libphonenumber-js": "^1.12.18",
|
43
44
|
"lodash": "^4.17.21",
|
44
45
|
"mariadb": "^3.3.1",
|
45
46
|
"multer": "^1.4.5-lts.1",
|