ixc-orm 1.8.0 → 1.10.1
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/CHANGELOG.md +17 -9
- package/README.md +8 -57
- package/dist/IxcResponse.d.ts +9 -0
- package/dist/IxcResponse.js +21 -5
- package/dist/api/Environment.d.ts +3 -2
- package/dist/api/Environment.js +9 -8
- package/dist/api/RequestEmitter.d.ts +14 -8
- package/dist/api/RequestEmitter.js +28 -10
- package/dist/index.js +1 -1
- package/dist/recursos/cliente_contrato_ativar_cliente.d.ts +4 -0
- package/dist/recursos/cliente_contrato_ativar_cliente.js +28 -0
- package/dist/recursos/get_boleto.d.ts +1 -2
- package/dist/recursos/get_boleto.js +30 -26
- package/dist/recursos/index.d.ts +9 -1
- package/dist/recursos/index.js +8 -0
- package/dist/recursos/radusuarios_25452.d.ts +4 -0
- package/dist/recursos/radusuarios_25452.js +25 -0
- package/package.json +10 -5
- package/tsconfig.tsbuildinfo +1 -1
- package/babel.config.cjs +0 -6
- package/jest.config.ts +0 -34
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
# 🔄 CHANGELOG
|
|
2
|
+
- [v1.10.1 - 20 de novembro de 2025](#v1101)
|
|
3
|
+
- [v1.9.0 - 09 de outubro de 2025](#v190)
|
|
2
4
|
- [v1.8.0 - 18 de outubro de 2025](#v180)
|
|
3
5
|
- [v1.7.1 - 18 de outubro de 2025](#v171)
|
|
4
6
|
- [v1.7.0 - 10 de outubro de 2025](#v170)
|
|
@@ -10,6 +12,12 @@
|
|
|
10
12
|
|
|
11
13
|
## 🚀 Novidades
|
|
12
14
|
|
|
15
|
+
### v1.10.1
|
|
16
|
+
* **Melhoria:** O recurso que obtém um arquivi PDF de um boleto `Recurso.getArquivoBoleto()`, passou a utilizar o RequestEmitter da API para executar a requisição. Além disso, a resposta desse recurso será uma string decodificada contendo o conteúdo do PDF do boleto, ao invés de um objeto `IXCResponse`.
|
|
17
|
+
|
|
18
|
+
### v1.9.0
|
|
19
|
+
* **Melhoria:** Novo recurso para remoção de MAC de um PPPoE, através do recurso `radusuarios_25452`, que é disponibilizado pela própria API do IXC Provedor. Para utilizar o recurso, invocar o método assícrono `Recurso.limparMAC({ id_login: number });`. O método irá retornar a instãncia de um <a href="https://github.com/SousaFelipe/ixc-orm/blob/main/src/IxcResponse.ts">IxcResponse</a>.
|
|
20
|
+
|
|
13
21
|
### v1.8.0
|
|
14
22
|
* **Melhoria:** O processo de carregamento do ambiente consegue detectar se as variáveis já foram carregas por um container Docker e interrompe o carregamento através do `.env`, evitando que a aplicação encerre o processo com erro..
|
|
15
23
|
* **Correção:** Corrigida incompatibilidade com o cache do `pnpm`. Ao tentar carregar as variáveis diretamente do arquivo `.env`, o ambiente buscará o arquivo de forma recursiva, para conseguir encontrá-lo mesmo quando a biblioteca interpretar a pasta `node_modules` como root. (ocorre em alguns cenários muito específicos, apenas com o `pnpm`), evitando que o processo seja encerrado com erro.
|
|
@@ -19,21 +27,21 @@
|
|
|
19
27
|
|
|
20
28
|
### v1.7.0
|
|
21
29
|
* **Atualização:** Novas classes adiconadas, para simplificar a manipulação dos filtros de busca e das respostas da API do **IXC Provedor**.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
30
|
+
* A nova classe <a href="https://github.com/SousaFelipe/ixc-orm/blob/builders/src/IxcOrm.ts">IxcOrm</a> pode substituir a classe `IXCCliente` e fornece uma maneira mais dinâmica de construir a query de busca, através dos métodos `where()`, `like()`, `exactly()`, `lessThan()`, `lessThanEquals()`, `greaterThan()` e `greaterThanEquals()`.
|
|
31
|
+
* Toda a lógica de manipulação das requisições HTTP foi movida para a nova classe <a href="https://github.com/SousaFelipe/ixc-orm/blob/builders/src/api/RequestEmitter.ts">RequestEmitter</a>, deixando a classe <a href="https://github.com/SousaFelipe/ixc-orm/blob/builders/src/IxcOrm.ts">IxcOrm</a> apenas com a lógica de manipulação da query de busca.
|
|
32
|
+
* Os dados da resposta recebida da API do IXC Provedor agora estão todos concentrados na classe <a href="https://github.com/SousaFelipe/ixc-orm/blob/builders/src/IxcResponse.ts">IxcResponse</a>, quando instanciada pelos métodos `GET()`, `POST()`, `PUT()` e `DELETE()`, da classe <a href="https://github.com/SousaFelipe/ixc-orm/blob/builders/src/api/RequestEmitter.ts">RequestEmitter</a>.
|
|
33
|
+
* A classe <a href="https://github.com/SousaFelipe/ixc-orm/blob/builders/src/IxcOrm.ts">IxcOrm</a> é uma subclasse de <a href="https://github.com/SousaFelipe/ixcorm/blob/builders/src/api/RequestEmitter.ts">RequestEmitter</a>.
|
|
26
34
|
|
|
27
35
|
### v1.6.0
|
|
28
36
|
* **Melhoria**: Métodos específicos para chamadas de recursos da API do **IXC Provedor**
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
37
|
+
* `desbloqueioDeConfianca()`: Envia uma requisição para o recurso de desbloqueio de confiança de um contrato.
|
|
38
|
+
* `liberacaoTemporaria()`: Envia uma requisição para o recurso de liberação temporária de um contrato.
|
|
39
|
+
* `getArquivoBoleto()`: Recupera o arquivo de uma fatura, no formato PDF, codificado em <a href="https://en.wikipedia.org/wiki/Base64">Base64</a>.
|
|
32
40
|
|
|
33
41
|
### v1.5.0
|
|
34
42
|
* **Melhoria:** A chamada de recursos da API agora pode ser feita de forma mais simplificada, através da função `RecursoIXC`:
|
|
35
|
-
|
|
36
|
-
|
|
43
|
+
* Basta importar assim: `import { RecursoIXC } from 'ixc-orm'`;
|
|
44
|
+
* E chamar assim: `await RecursoIXC('get_boleto', { id_fatura: 25484 })`.
|
|
37
45
|
|
|
38
46
|
### v1.4.4
|
|
39
47
|
* **Melhoria:** Foi adicionado um método `find()` a classe `IXCClient`, para encontrar um registro pelo seu `id` de uma forma mais simplificada.
|
package/README.md
CHANGED
|
@@ -33,7 +33,7 @@ yarn add ixc-orm
|
|
|
33
33
|
Para configurar a comunicação da biblioteca com seu servidor IXC Provedor, é necessário adicionar as seguintes variáveis de ambiente a um arquivo `.env`, que esteja localizado no diretório raiz do seu projeto.
|
|
34
34
|
|
|
35
35
|
> [!NOTE]\
|
|
36
|
-
> Versão 1.
|
|
36
|
+
> Versão 1.10.1 `stable`
|
|
37
37
|
|
|
38
38
|
- **IXC_ACCESS_TOKEN** Um token de API gerado dentro do IXC Provedor.
|
|
39
39
|
- **IXC_SERVER_DOMAIN** O domínio do seu servidor IXC Provedor.
|
|
@@ -57,20 +57,10 @@ services:
|
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
|
|
60
|
-
> Versão 1.6.0 ou anterior:
|
|
61
|
-
|
|
62
|
-
- **IXC_HOST** A url do seu servidor IXC Provedor.
|
|
63
|
-
- **IXC_TOKEN** Um token de API gerado dentro do IXC Provedor.
|
|
64
|
-
|
|
65
|
-
```ini
|
|
66
|
-
IXC_HOST="https://dominiodoservidorixc.com.br/webservice/v1"
|
|
67
|
-
IXC_TOKEN="8:k4n8wk1946j7mimthei869cq1zz2u940f2gqobqg081y2oefl80mzhtq2wud3gqp"
|
|
68
|
-
```
|
|
69
|
-
|
|
70
60
|
As classes que representarão os diferentes tipos de registros no seu **IXC Provedor**, deverão herdar da classe `IxcOrm` (nova versão), como no exemplo a seguir:
|
|
71
61
|
|
|
72
62
|
> [!NOTE]\
|
|
73
|
-
> Versão 1.
|
|
63
|
+
> Versão 1.10.1 `stable`
|
|
74
64
|
|
|
75
65
|
```typescript
|
|
76
66
|
import { IxcOrm } from 'ixc-orm';
|
|
@@ -82,22 +72,11 @@ class Contrato extends IxcOrm {
|
|
|
82
72
|
}
|
|
83
73
|
```
|
|
84
74
|
|
|
85
|
-
> Versão 1.6.0 ou anterior
|
|
86
|
-
|
|
87
|
-
```typescript
|
|
88
|
-
import { IXCClient } 'ixc-orm';
|
|
89
|
-
|
|
90
|
-
class Contrato extends IXCClient {
|
|
91
|
-
constructor() {
|
|
92
|
-
super('cliente_contrato');
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
```
|
|
96
75
|
|
|
97
76
|
Após instanciar um objeto com o tipo que você criou (`Contrato, como no exemplo a cima`), você poderá acessar os métodos de construção da query de busca.
|
|
98
77
|
|
|
99
78
|
> [!NOTE]\
|
|
100
|
-
> Versão 1.
|
|
79
|
+
> Versão 1.10.1 `stable`
|
|
101
80
|
|
|
102
81
|
```typescript
|
|
103
82
|
import { IxcResponse, Sort } from 'ixc-orm';
|
|
@@ -113,49 +92,21 @@ IxcResponse response = await contrato
|
|
|
113
92
|
const contratos = response.registros();
|
|
114
93
|
```
|
|
115
94
|
|
|
116
|
-
> Versão 1.6.0 ou anterior
|
|
117
|
-
|
|
118
|
-
```typescript
|
|
119
|
-
const contrato = new Contrato();
|
|
120
|
-
|
|
121
|
-
const contratos = await contrato
|
|
122
|
-
.where(['id_cliente', 240])
|
|
123
|
-
.where(['data_ativacao', '>=', '2024-09-24 00:45:00'])
|
|
124
|
-
.orderBy('data_ativacao', 'desc')
|
|
125
|
-
.get()
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
Ou quando você já possui o ID do registro que procura, a opção mais simples será utilizar o método `find()`. Este método também está implementado na classe `IXCClient`
|
|
129
|
-
|
|
130
|
-
> [!NOTE]
|
|
131
|
-
> Método disponível apenas para as subclasses de `IXCClient`.
|
|
132
|
-
|
|
133
|
-
```typescript
|
|
134
|
-
const contrato = new Contrato();
|
|
135
|
-
|
|
136
|
-
const id_contrato = 4574;
|
|
137
|
-
|
|
138
|
-
const contratos = await contrato.find(id_contrato)
|
|
139
|
-
```
|
|
140
|
-
|
|
141
95
|
|
|
142
96
|
## Recursos da API do IXC Provedor
|
|
143
97
|
|
|
144
|
-
Existem alguns `endpoints` que a API do IXC disponibiliza, a fim de "encurtar o caminho" para chegar até algumas informações. Como por exemplo, obter o arquivo PDF de uma fatura
|
|
145
|
-
Para isso, você não precisará se preocupar em criar uma classe `Boleto` que herde da classe `IxcOrm`, por exemplo,\
|
|
146
|
-
nem encadear chamadas de filtros. Basta fazer como no exemplo a seguir:
|
|
98
|
+
Existem alguns `endpoints` que a API do IXC Provedor disponibiliza, a fim de "encurtar o caminho" para chegar até algumas informações. Como por exemplo, obter o arquivo PDF de uma fatura. Para isso, você não precisará se preocupar em criar uma classe `Boleto` que herde da classe `IxcOrm`, por exemplo, nem encadear chamadas de filtros. Basta fazer como no exemplo a seguir:
|
|
147
99
|
|
|
148
100
|
```typescript
|
|
149
101
|
import { Recurso } from 'ixc-orm';
|
|
150
102
|
|
|
151
103
|
const id_contrato = 45852;
|
|
152
|
-
|
|
153
|
-
const response = await Recurso.desbloqueioDeConfianca(id_contrato);
|
|
104
|
+
const response = await Recurso.desbloqueioDeConfianca({ id_contrato });
|
|
154
105
|
```
|
|
155
106
|
|
|
156
|
-
> Dos recursos disponibilizados pela API do **IXC Provedor**, essa biblioteca já
|
|
157
|
-
> `
|
|
158
|
-
> Obs: Os nomes dos recursos estão de acordo com a API do **IXC Provedor** a fim de facilitar o estudo através da sua documentação oficial.
|
|
107
|
+
> Dos recursos disponibilizados pela API do **IXC Provedor**, essa biblioteca já possui as implementações de:\
|
|
108
|
+
> `cliente_contrato_ativar_cliente`, `cliente_contrato_btn_lib_temp_24722`, `desbloqueio_confianca`, `get_boleto` e `radusuarios_25452`.\
|
|
109
|
+
> Obs: Os nomes dos recursos estão de acordo com a API do **IXC Provedor** a fim de facilitar o estudo através da sua própria documentação oficial.
|
|
159
110
|
|
|
160
111
|
|
|
161
112
|
# Contribuições
|
package/dist/IxcResponse.d.ts
CHANGED
|
@@ -47,6 +47,15 @@ export default class IxcResponse {
|
|
|
47
47
|
registros(): Array<{
|
|
48
48
|
[key: string]: any;
|
|
49
49
|
}>;
|
|
50
|
+
/**
|
|
51
|
+
* Obtém o conteúdo bruto de uma resposta da API do IXC Provedor.
|
|
52
|
+
* Este método substitui o método `registros()`, quando a requisição é feita para um endpoint
|
|
53
|
+
* específico de recursos do IXC Provedor, mas apenas quando a API devolve uma resposta bruta ao
|
|
54
|
+
* invés de uma lista de registros, ou uma mensagem.
|
|
55
|
+
*
|
|
56
|
+
* @returns Uma string contendo o conteúdo da resposta da API do IXC Provedor.
|
|
57
|
+
*/
|
|
58
|
+
content(): string;
|
|
50
59
|
private responseTextHasHtml;
|
|
51
60
|
private createDataFromText;
|
|
52
61
|
private createDataFromHtml;
|
package/dist/IxcResponse.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const jsdom_1 = require("jsdom");
|
|
4
3
|
class IxcResponse {
|
|
5
4
|
/**
|
|
6
5
|
* Cria um novo objeto no formato de uma resposta padrão do IXC Provedor.
|
|
@@ -79,7 +78,7 @@ class IxcResponse {
|
|
|
79
78
|
if (!((_a = this.data) === null || _a === void 0 ? void 0 : _a.message)) {
|
|
80
79
|
return '';
|
|
81
80
|
}
|
|
82
|
-
return this.data.message;
|
|
81
|
+
return this.data.message.replaceAll('<br />', '. ');
|
|
83
82
|
}
|
|
84
83
|
/**
|
|
85
84
|
* Obtém a lista de registros retornados por uma consulta à API do IXC Provedor.
|
|
@@ -93,6 +92,17 @@ class IxcResponse {
|
|
|
93
92
|
}
|
|
94
93
|
return this.data.registros;
|
|
95
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Obtém o conteúdo bruto de uma resposta da API do IXC Provedor.
|
|
97
|
+
* Este método substitui o método `registros()`, quando a requisição é feita para um endpoint
|
|
98
|
+
* específico de recursos do IXC Provedor, mas apenas quando a API devolve uma resposta bruta ao
|
|
99
|
+
* invés de uma lista de registros, ou uma mensagem.
|
|
100
|
+
*
|
|
101
|
+
* @returns Uma string contendo o conteúdo da resposta da API do IXC Provedor.
|
|
102
|
+
*/
|
|
103
|
+
content() {
|
|
104
|
+
return this.text;
|
|
105
|
+
}
|
|
96
106
|
responseTextHasHtml() {
|
|
97
107
|
var _a;
|
|
98
108
|
return !(!((_a = this.text) === null || _a === void 0 ? void 0 : _a.length)) && this.text.startsWith('<div style=');
|
|
@@ -101,15 +111,21 @@ class IxcResponse {
|
|
|
101
111
|
if (this.responseTextHasHtml()) {
|
|
102
112
|
return this.createDataFromHtml();
|
|
103
113
|
}
|
|
104
|
-
|
|
114
|
+
try {
|
|
115
|
+
return JSON.parse(this.text);
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
return {};
|
|
119
|
+
}
|
|
105
120
|
}
|
|
106
121
|
createDataFromHtml() {
|
|
107
|
-
const
|
|
122
|
+
const parser = new DOMParser();
|
|
123
|
+
const document = parser.parseFromString(this.text, 'text/html');
|
|
108
124
|
return {
|
|
109
125
|
type: 'error',
|
|
110
126
|
page: 0,
|
|
111
127
|
total: 0,
|
|
112
|
-
message:
|
|
128
|
+
message: document.body.textContent
|
|
113
129
|
};
|
|
114
130
|
}
|
|
115
131
|
}
|
|
@@ -2,10 +2,11 @@ export default class Environment {
|
|
|
2
2
|
private static instance;
|
|
3
3
|
private domain;
|
|
4
4
|
private token;
|
|
5
|
-
static
|
|
5
|
+
static loadInstance(): Environment;
|
|
6
6
|
private constructor();
|
|
7
7
|
private shouldToLoadDotEnvFile;
|
|
8
|
-
private
|
|
8
|
+
private envHasBeenLoaded;
|
|
9
|
+
private loadEnvFromEnvFile;
|
|
9
10
|
private setDomain;
|
|
10
11
|
private setToken;
|
|
11
12
|
getDomain(): string;
|
package/dist/api/Environment.js
CHANGED
|
@@ -7,7 +7,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
7
7
|
const dotenv_1 = __importDefault(require("dotenv"));
|
|
8
8
|
const utils_1 = __importDefault(require("../utils"));
|
|
9
9
|
class Environment {
|
|
10
|
-
static
|
|
10
|
+
static loadInstance() {
|
|
11
11
|
if (!Environment.instance) {
|
|
12
12
|
Environment.instance = new Environment();
|
|
13
13
|
}
|
|
@@ -19,9 +19,16 @@ class Environment {
|
|
|
19
19
|
this.setDomain(process.env.IXC_SERVER_DOMAIN);
|
|
20
20
|
}
|
|
21
21
|
shouldToLoadDotEnvFile() {
|
|
22
|
-
if (this.
|
|
22
|
+
if (this.envHasBeenLoaded()) {
|
|
23
23
|
return;
|
|
24
24
|
}
|
|
25
|
+
this.loadEnvFromEnvFile();
|
|
26
|
+
}
|
|
27
|
+
envHasBeenLoaded() {
|
|
28
|
+
const allEnvVars = Object.keys(process.env);
|
|
29
|
+
return allEnvVars.some(envVar => envVar.startsWith('IXC_'));
|
|
30
|
+
}
|
|
31
|
+
loadEnvFromEnvFile() {
|
|
25
32
|
const fileUtil = new utils_1.default.File();
|
|
26
33
|
const envfile = fileUtil.findFile('.env');
|
|
27
34
|
const env = dotenv_1.default.config({
|
|
@@ -33,12 +40,6 @@ class Environment {
|
|
|
33
40
|
process.exit(1);
|
|
34
41
|
}
|
|
35
42
|
}
|
|
36
|
-
loadedEnvVars() {
|
|
37
|
-
const allEnvVars = Object.keys(process.env);
|
|
38
|
-
return allEnvVars.some(envVar => {
|
|
39
|
-
return envVar.startsWith('IXC_');
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
43
|
setDomain(domain) {
|
|
43
44
|
var _a;
|
|
44
45
|
const newDomainIsValid = !(!(domain === null || domain === void 0 ? void 0 : domain.length));
|
|
@@ -9,7 +9,7 @@ export default class RequestEmitter {
|
|
|
9
9
|
*
|
|
10
10
|
* @param table Representa o endpoint do IXC Provedor para o qual será enviada a requisição.
|
|
11
11
|
*/
|
|
12
|
-
|
|
12
|
+
constructor(table: string);
|
|
13
13
|
/**
|
|
14
14
|
* Envia uma requisição HTTP para a API do IXC Provedor, para listar registros, filtrando-os pela query de busca
|
|
15
15
|
* definida por **setQuery(String query)**.
|
|
@@ -42,12 +42,6 @@ export default class RequestEmitter {
|
|
|
42
42
|
* @return Um objeto {@link IxcResponse}.
|
|
43
43
|
*/
|
|
44
44
|
DELETE(record: any): Promise<IxcResponse>;
|
|
45
|
-
/**
|
|
46
|
-
* Obtém o valor da tabela, definida no cosntrutor.
|
|
47
|
-
*
|
|
48
|
-
* @returns string
|
|
49
|
-
*/
|
|
50
|
-
protected getTable(): string;
|
|
51
45
|
/**
|
|
52
46
|
* Define a query que será enviada no corpo de uma requisição de busca.
|
|
53
47
|
*
|
|
@@ -71,9 +65,21 @@ export default class RequestEmitter {
|
|
|
71
65
|
*
|
|
72
66
|
* @param query Um objeto no formato de uma query da API do IXC Provedor.
|
|
73
67
|
*/
|
|
74
|
-
|
|
68
|
+
setupQuery(query: {
|
|
75
69
|
[key: string]: any;
|
|
76
70
|
}): void;
|
|
71
|
+
/**
|
|
72
|
+
* Envia requisições para recursos específicos do IXC Provedor.
|
|
73
|
+
*
|
|
74
|
+
* @returns Uma nova instância de IxcResponse, contendo os dados retornados pelo recurso do IXC Provedor.
|
|
75
|
+
*/
|
|
76
|
+
sendRequestToResource(): Promise<IxcResponse>;
|
|
77
|
+
/**
|
|
78
|
+
* Obtém o valor da tabela, definida no cosntrutor.
|
|
79
|
+
*
|
|
80
|
+
* @returns string
|
|
81
|
+
*/
|
|
82
|
+
protected getTable(): string;
|
|
77
83
|
private loadCommonHeaders;
|
|
78
84
|
private getEncodedTokenFromContext;
|
|
79
85
|
private setupUri;
|
|
@@ -101,14 +101,6 @@ class RequestEmitter {
|
|
|
101
101
|
return new IxcResponse_1.default(responseText);
|
|
102
102
|
});
|
|
103
103
|
}
|
|
104
|
-
/**
|
|
105
|
-
* Obtém o valor da tabela, definida no cosntrutor.
|
|
106
|
-
*
|
|
107
|
-
* @returns string
|
|
108
|
-
*/
|
|
109
|
-
getTable() {
|
|
110
|
-
return this.table;
|
|
111
|
-
}
|
|
112
104
|
/**
|
|
113
105
|
* Define a query que será enviada no corpo de uma requisição de busca.
|
|
114
106
|
*
|
|
@@ -135,6 +127,32 @@ class RequestEmitter {
|
|
|
135
127
|
setupQuery(query) {
|
|
136
128
|
this.query = query;
|
|
137
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* Envia requisições para recursos específicos do IXC Provedor.
|
|
132
|
+
*
|
|
133
|
+
* @returns Uma nova instância de IxcResponse, contendo os dados retornados pelo recurso do IXC Provedor.
|
|
134
|
+
*/
|
|
135
|
+
sendRequestToResource() {
|
|
136
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
137
|
+
try {
|
|
138
|
+
this.setupUri();
|
|
139
|
+
const responseText = yield this.sendRequest('POST', this.query);
|
|
140
|
+
return new IxcResponse_1.default(responseText);
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
const responseTextError = IxcResponse_1.default.createResponseTextWithError(error);
|
|
144
|
+
return new IxcResponse_1.default(responseTextError);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Obtém o valor da tabela, definida no cosntrutor.
|
|
150
|
+
*
|
|
151
|
+
* @returns string
|
|
152
|
+
*/
|
|
153
|
+
getTable() {
|
|
154
|
+
return this.table;
|
|
155
|
+
}
|
|
138
156
|
loadCommonHeaders() {
|
|
139
157
|
const encodedToken = this.getEncodedTokenFromContext();
|
|
140
158
|
this.headers.push({ 'Authorization': `Basic ${encodedToken}` });
|
|
@@ -142,11 +160,11 @@ class RequestEmitter {
|
|
|
142
160
|
this.headers.push({ 'ixcsoft': '' });
|
|
143
161
|
}
|
|
144
162
|
getEncodedTokenFromContext() {
|
|
145
|
-
const token = Environment_1.default.
|
|
163
|
+
const token = Environment_1.default.loadInstance().getToken();
|
|
146
164
|
return Buffer.from(token !== null && token !== void 0 ? token : '').toString('base64');
|
|
147
165
|
}
|
|
148
166
|
setupUri(id) {
|
|
149
|
-
const host = Environment_1.default.
|
|
167
|
+
const host = Environment_1.default.loadInstance().getDomain();
|
|
150
168
|
const pathId = id ? `/${id}` : '';
|
|
151
169
|
this.uri = `https://${host}/webservice/v1/${this.table}${pathId}`;
|
|
152
170
|
}
|
package/dist/index.js
CHANGED
|
@@ -58,4 +58,4 @@ const types_1 = require("./types");
|
|
|
58
58
|
Object.defineProperty(exports, "IXCOperator", { enumerable: true, get: function () { return types_1.IXCOperator; } });
|
|
59
59
|
Object.defineProperty(exports, "IXCRequestMethods", { enumerable: true, get: function () { return types_1.IXCRequestMethods; } });
|
|
60
60
|
Object.defineProperty(exports, "IXCSortOrder", { enumerable: true, get: function () { return types_1.IXCSortOrder; } });
|
|
61
|
-
Environment_1.default.
|
|
61
|
+
Environment_1.default.loadInstance();
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.default = cliente_contrato_ativar_cliente;
|
|
16
|
+
const RequestEmitter_1 = __importDefault(require("../api/RequestEmitter"));
|
|
17
|
+
const src = 'cliente_contrato_ativar_cliente';
|
|
18
|
+
function cliente_contrato_ativar_cliente(args) {
|
|
19
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
const { id_contrato } = args;
|
|
21
|
+
const requestEmitter = new RequestEmitter_1.default(src);
|
|
22
|
+
requestEmitter.setupQuery({
|
|
23
|
+
qtype: 'cliente_contrato_ativar_cliente.id',
|
|
24
|
+
id_contrato
|
|
25
|
+
});
|
|
26
|
+
return yield requestEmitter.sendRequestToResource();
|
|
27
|
+
});
|
|
28
|
+
}
|
|
@@ -8,35 +8,39 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
11
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
15
|
exports.default = get_boleto;
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const SRC = 'get_boleto';
|
|
16
|
+
const RequestEmitter_1 = __importDefault(require("../api/RequestEmitter"));
|
|
17
|
+
const src = 'get_boleto';
|
|
16
18
|
function get_boleto(args) {
|
|
17
19
|
return __awaiter(this, void 0, void 0, function* () {
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if (response.status === 200) {
|
|
32
|
-
return {
|
|
33
|
-
data: response.data
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
catch (error) {
|
|
38
|
-
console.error(`Erro ao executar recurso: ${SRC}\n`, error);
|
|
39
|
-
}
|
|
40
|
-
return (0, response_1.createResponse)({ error: true });
|
|
20
|
+
const { id_fatura } = args;
|
|
21
|
+
const requestEmitter = new RequestEmitter_1.default(src);
|
|
22
|
+
requestEmitter.setupQuery({
|
|
23
|
+
boletos: id_fatura,
|
|
24
|
+
juro: 'S',
|
|
25
|
+
multa: 'S',
|
|
26
|
+
atualiza_boleto: 'S',
|
|
27
|
+
tipo_boleto: 'arquivo',
|
|
28
|
+
base64: 'S'
|
|
29
|
+
});
|
|
30
|
+
const response = yield requestEmitter.sendRequestToResource();
|
|
31
|
+
const content = response.content();
|
|
32
|
+
return contentConvertedToPDF(content);
|
|
41
33
|
});
|
|
42
34
|
}
|
|
35
|
+
function contentConvertedToPDF(content) {
|
|
36
|
+
const bits = atob(content);
|
|
37
|
+
if (!bits.length) {
|
|
38
|
+
return '';
|
|
39
|
+
}
|
|
40
|
+
const bytes = new Uint8Array(bits.length);
|
|
41
|
+
for (let i = 0; i < bits.length; i++) {
|
|
42
|
+
bytes[i] = bits.charCodeAt(i);
|
|
43
|
+
}
|
|
44
|
+
const decoder = new TextDecoder('utf-8');
|
|
45
|
+
return decoder.decode(bytes);
|
|
46
|
+
}
|
package/dist/recursos/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import cliente_contrato_btn_lib_temp_24722 from './cliente_contrato_btn_lib_temp_24722';
|
|
2
2
|
import desbloqueio_confianca from './desbloqueio_confianca';
|
|
3
3
|
import get_boleto from './get_boleto';
|
|
4
|
+
import radusuarios_25452 from './radusuarios_25452';
|
|
4
5
|
/**
|
|
5
6
|
* @deprecated Acesse os recursos através da constante {@link Recurso}
|
|
6
7
|
*/
|
|
@@ -36,6 +37,13 @@ export declare const Recurso: {
|
|
|
36
37
|
* contendo o conteúdo do boleto, caso a requisição seja bem-sucedida
|
|
37
38
|
*/
|
|
38
39
|
getArquivoBoleto: typeof get_boleto;
|
|
40
|
+
/**
|
|
41
|
+
* Envia uma requisição à API do IXC Provedor, para que o endereço de MAC seja removido do cadastro de um determinado PPPoE.
|
|
42
|
+
*
|
|
43
|
+
* @param id_login O ID do PPPoE que se deseja remover o endereço de MAC.
|
|
44
|
+
* @returns A instância de um **IxcResponse**.
|
|
45
|
+
*/
|
|
46
|
+
limparMAC: typeof radusuarios_25452;
|
|
39
47
|
/**
|
|
40
48
|
* Solicita ao IXC que libere, por 72 horas, o contrato de um cliente bloqueado, que não tenha
|
|
41
49
|
* solicitado outra liberação temporária dentro de um período de 30 dias
|
|
@@ -52,5 +60,5 @@ export declare const Recurso: {
|
|
|
52
60
|
*
|
|
53
61
|
* @deprecated Acesse os recursos através da constante {@link Recurso}
|
|
54
62
|
*/
|
|
55
|
-
export default function RecursoIXC<T extends keyof Recursos>(recurso: T, args: Parameters<Recursos[T]>[0]): Promise<
|
|
63
|
+
export default function RecursoIXC<T extends keyof Recursos>(recurso: T, args: Parameters<Recursos[T]>[0]): Promise<string | import("..").IXCResponse>;
|
|
56
64
|
export {};
|
package/dist/recursos/index.js
CHANGED
|
@@ -17,6 +17,7 @@ exports.default = RecursoIXC;
|
|
|
17
17
|
const cliente_contrato_btn_lib_temp_24722_1 = __importDefault(require("./cliente_contrato_btn_lib_temp_24722"));
|
|
18
18
|
const desbloqueio_confianca_1 = __importDefault(require("./desbloqueio_confianca"));
|
|
19
19
|
const get_boleto_1 = __importDefault(require("./get_boleto"));
|
|
20
|
+
const radusuarios_25452_1 = __importDefault(require("./radusuarios_25452"));
|
|
20
21
|
/**
|
|
21
22
|
* @deprecated Acesse os recursos através da constante {@link Recurso}
|
|
22
23
|
*/
|
|
@@ -51,6 +52,13 @@ exports.Recurso = {
|
|
|
51
52
|
* contendo o conteúdo do boleto, caso a requisição seja bem-sucedida
|
|
52
53
|
*/
|
|
53
54
|
getArquivoBoleto: get_boleto_1.default,
|
|
55
|
+
/**
|
|
56
|
+
* Envia uma requisição à API do IXC Provedor, para que o endereço de MAC seja removido do cadastro de um determinado PPPoE.
|
|
57
|
+
*
|
|
58
|
+
* @param id_login O ID do PPPoE que se deseja remover o endereço de MAC.
|
|
59
|
+
* @returns A instância de um **IxcResponse**.
|
|
60
|
+
*/
|
|
61
|
+
limparMAC: radusuarios_25452_1.default,
|
|
54
62
|
/**
|
|
55
63
|
* Solicita ao IXC que libere, por 72 horas, o contrato de um cliente bloqueado, que não tenha
|
|
56
64
|
* solicitado outra liberação temporária dentro de um período de 30 dias
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.default = radusuarios_25452;
|
|
16
|
+
const RequestEmitter_1 = __importDefault(require("../api/RequestEmitter"));
|
|
17
|
+
const src = 'radusuarios_25452';
|
|
18
|
+
function radusuarios_25452(args) {
|
|
19
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
const { id_login } = args;
|
|
21
|
+
const requestEmitter = new RequestEmitter_1.default(src);
|
|
22
|
+
requestEmitter.setupQuery({ get_id: id_login });
|
|
23
|
+
return yield requestEmitter.sendRequestToResource();
|
|
24
|
+
});
|
|
25
|
+
}
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ixc-orm",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.1",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"description": "ORM para consumo de dados da API do sistema IXC Provedor",
|
|
8
8
|
"scripts": {
|
|
9
9
|
"dev": "nodemon --watch \"src//\" --exec \"ts-node src/index.ts\" -e ts",
|
|
10
|
-
"test": "jest
|
|
10
|
+
"test": "jest",
|
|
11
|
+
"test:cov": "jest --coverage",
|
|
11
12
|
"build": "tsc --build"
|
|
12
13
|
},
|
|
13
14
|
"repository": {
|
|
@@ -30,16 +31,20 @@
|
|
|
30
31
|
},
|
|
31
32
|
"dependencies": {
|
|
32
33
|
"axios": "^1.12.2",
|
|
33
|
-
"dotenv": "^17.2.3"
|
|
34
|
-
"jsdom": "^27.0.1"
|
|
34
|
+
"dotenv": "^17.2.3"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@babel/
|
|
37
|
+
"@babel/core": "^7.28.5",
|
|
38
|
+
"@babel/preset-env": "^7.28.5",
|
|
39
|
+
"@babel/preset-typescript": "^7.28.5",
|
|
38
40
|
"@jest/globals": "^30.2.0",
|
|
41
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
39
42
|
"@types/jest": "^30.0.0",
|
|
40
43
|
"@types/jsdom": "^27.0.0",
|
|
41
44
|
"@types/node": "^24.8.1",
|
|
45
|
+
"babel-jest": "^30.2.0",
|
|
42
46
|
"jest": "^30.2.0",
|
|
47
|
+
"jest-environment-jsdom": "^30.2.0",
|
|
43
48
|
"nodemon": "^3.1.10",
|
|
44
49
|
"ts-jest": "^29.4.5",
|
|
45
50
|
"ts-node": "^10.9.2",
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["./src/ixcclient.ts","./src/ixcorm.ts","./src/ixcresponse.ts","./src/index.ts","./src/request.ts","./src/response.ts","./src/types.ts","./src/api/environment.ts","./src/api/operators.ts","./src/api/ordering.ts","./src/api/pagination.ts","./src/api/parameter.ts","./src/api/requestemitter.ts","./src/recursos/cliente_contrato_btn_lib_temp_24722.ts","./src/recursos/desbloqueio_confianca.ts","./src/recursos/get_boleto.ts","./src/recursos/index.ts","./src/recursos/recurso.ts","./src/utils/fileutils.ts","./src/utils/textutils.ts","./src/utils/index.ts"],"version":"5.9.3"}
|
|
1
|
+
{"root":["./src/ixcclient.ts","./src/ixcorm.ts","./src/ixcresponse.ts","./src/index.ts","./src/request.ts","./src/response.ts","./src/types.ts","./src/api/environment.ts","./src/api/operators.ts","./src/api/ordering.ts","./src/api/pagination.ts","./src/api/parameter.ts","./src/api/requestemitter.ts","./src/recursos/cliente_contrato_ativar_cliente.ts","./src/recursos/cliente_contrato_btn_lib_temp_24722.ts","./src/recursos/desbloqueio_confianca.ts","./src/recursos/get_boleto.ts","./src/recursos/index.ts","./src/recursos/radusuarios_25452.ts","./src/recursos/recurso.ts","./src/utils/fileutils.ts","./src/utils/textutils.ts","./src/utils/index.ts"],"version":"5.9.3"}
|
package/babel.config.cjs
DELETED
package/jest.config.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import type {Config} from 'jest';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const config: Config = {
|
|
5
|
-
|
|
6
|
-
clearMocks: true,
|
|
7
|
-
collectCoverage: true,
|
|
8
|
-
coverageDirectory: 'coverage',
|
|
9
|
-
coverageProvider: 'v8',
|
|
10
|
-
testEnvironment: "node",
|
|
11
|
-
|
|
12
|
-
transform: {
|
|
13
|
-
'^.+\\.(ts|tsx)$': 'ts-jest'
|
|
14
|
-
},
|
|
15
|
-
|
|
16
|
-
collectCoverageFrom: [
|
|
17
|
-
"**/src/**/*.(t|j)s"
|
|
18
|
-
],
|
|
19
|
-
|
|
20
|
-
setupFiles: [
|
|
21
|
-
"dotenv/config"
|
|
22
|
-
],
|
|
23
|
-
|
|
24
|
-
setupFilesAfterEnv: [
|
|
25
|
-
'./tests/jest.setup.ts'
|
|
26
|
-
],
|
|
27
|
-
|
|
28
|
-
testMatch: [
|
|
29
|
-
'<rootDir>/tests/**/*.test.ts'
|
|
30
|
-
]
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
export default config;
|