ixc-orm 1.9.0 → 1.10.2
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 +5 -1
- package/README.md +8 -57
- package/dist/IxcResponse.d.ts +9 -0
- package/dist/IxcResponse.js +17 -1
- package/dist/recursos/get_boleto.d.ts +1 -2
- package/dist/recursos/get_boleto.js +30 -26
- package/dist/recursos/index.d.ts +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# 🔄 CHANGELOG
|
|
2
|
-
- [v1.
|
|
2
|
+
- [v1.10.2 - 20 de novembro de 2025](#v1102)
|
|
3
|
+
- [v1.9.0 - 09 de outubro de 2025](#v190)
|
|
3
4
|
- [v1.8.0 - 18 de outubro de 2025](#v180)
|
|
4
5
|
- [v1.7.1 - 18 de outubro de 2025](#v171)
|
|
5
6
|
- [v1.7.0 - 10 de outubro de 2025](#v170)
|
|
@@ -11,6 +12,9 @@
|
|
|
11
12
|
|
|
12
13
|
## 🚀 Novidades
|
|
13
14
|
|
|
15
|
+
### v1.10.2
|
|
16
|
+
* **Melhoria:** O recurso `Recurso.getArquivoBoleto()`, que obtém um arquivo PDF de um boleto, passou a utilizar o 'RequestEmitter' da API para executar a requisição. A resposta desse recurso será uma Promise contendo a instância de um objeto do tipo `IxcResponse`.
|
|
17
|
+
|
|
14
18
|
### v1.9.0
|
|
15
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>.
|
|
16
20
|
|
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.2 `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.2 `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.2 `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
|
@@ -92,6 +92,17 @@ class IxcResponse {
|
|
|
92
92
|
}
|
|
93
93
|
return this.data.registros;
|
|
94
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
|
+
}
|
|
95
106
|
responseTextHasHtml() {
|
|
96
107
|
var _a;
|
|
97
108
|
return !(!((_a = this.text) === null || _a === void 0 ? void 0 : _a.length)) && this.text.startsWith('<div style=');
|
|
@@ -100,7 +111,12 @@ class IxcResponse {
|
|
|
100
111
|
if (this.responseTextHasHtml()) {
|
|
101
112
|
return this.createDataFromHtml();
|
|
102
113
|
}
|
|
103
|
-
|
|
114
|
+
try {
|
|
115
|
+
return JSON.parse(this.text);
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
return {};
|
|
119
|
+
}
|
|
104
120
|
}
|
|
105
121
|
createDataFromHtml() {
|
|
106
122
|
const parser = new DOMParser();
|
|
@@ -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
|
@@ -60,5 +60,5 @@ export declare const Recurso: {
|
|
|
60
60
|
*
|
|
61
61
|
* @deprecated Acesse os recursos através da constante {@link Recurso}
|
|
62
62
|
*/
|
|
63
|
-
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>;
|
|
64
64
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ixc-orm",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.2",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"license": "MIT",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"url": "https://github.com/SousaFelipe/ixc-orm/issues"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"axios": "^1.
|
|
33
|
+
"axios": "^1.13.2",
|
|
34
34
|
"dotenv": "^17.2.3"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
@@ -41,11 +41,11 @@
|
|
|
41
41
|
"@testing-library/jest-dom": "^6.9.1",
|
|
42
42
|
"@types/jest": "^30.0.0",
|
|
43
43
|
"@types/jsdom": "^27.0.0",
|
|
44
|
-
"@types/node": "^24.
|
|
44
|
+
"@types/node": "^24.10.1",
|
|
45
45
|
"babel-jest": "^30.2.0",
|
|
46
46
|
"jest": "^30.2.0",
|
|
47
47
|
"jest-environment-jsdom": "^30.2.0",
|
|
48
|
-
"nodemon": "^3.1.
|
|
48
|
+
"nodemon": "^3.1.11",
|
|
49
49
|
"ts-jest": "^29.4.5",
|
|
50
50
|
"ts-node": "^10.9.2",
|
|
51
51
|
"typescript": "^5.9.3"
|