fiscalapi 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.txt +373 -0
- package/README.md +388 -0
- package/dist/cjs/abstractions/api-key-service.interface.js +3 -0
- package/dist/cjs/abstractions/catalog-service.interface.js +3 -0
- package/dist/cjs/abstractions/fiscalapi-client.interface.js +3 -0
- package/dist/cjs/abstractions/fiscalapi-service.interface.js +3 -0
- package/dist/cjs/abstractions/invoice-service.interface.js +3 -0
- package/dist/cjs/abstractions/person-service.interface.js +3 -0
- package/dist/cjs/abstractions/product-service.interface.js +3 -0
- package/dist/cjs/abstractions/tax-file-service.interface.js +3 -0
- package/dist/cjs/common/api-response.js +3 -0
- package/dist/cjs/common/auditable-dto.js +11 -0
- package/dist/cjs/common/base-dto.js +11 -0
- package/dist/cjs/common/catalog-dto.js +8 -0
- package/dist/cjs/common/file-response.js +3 -0
- package/dist/cjs/common/fiscalapi-settings.js +3 -0
- package/dist/cjs/common/paged-list.js +18 -0
- package/dist/cjs/common/serializable-dto.js +37 -0
- package/dist/cjs/http/fiscalapi-http-client-factory.js +66 -0
- package/dist/cjs/http/fiscalapi-http-client.interface.js +3 -0
- package/dist/cjs/http/fiscalapi-http-client.js +306 -0
- package/dist/cjs/index.js +31 -0
- package/dist/cjs/models/api-key.js +3 -0
- package/dist/cjs/models/invoice.js +3 -0
- package/dist/cjs/models/person.js +3 -0
- package/dist/cjs/models/product.js +3 -0
- package/dist/cjs/models/tax-file.js +3 -0
- package/dist/cjs/sdk-constants.js +25 -0
- package/dist/cjs/services/api-key-service.js +19 -0
- package/dist/cjs/services/base-fiscalapi-service.js +170 -0
- package/dist/cjs/services/catalog-service.js +51 -0
- package/dist/cjs/services/fiscalapi-client.js +67 -0
- package/dist/cjs/services/invoice-service.js +116 -0
- package/dist/cjs/services/person-service.js +19 -0
- package/dist/cjs/services/product-service.js +19 -0
- package/dist/cjs/services/tax-file-service.js +43 -0
- package/dist/cjs/utils/date-utils.js +36 -0
- package/dist/cjs/utils/encoding-utils.js +21 -0
- package/dist/cjs/utils/validation-utils.js +40 -0
- package/dist/esm/abstractions/api-key-service.interface.js +2 -0
- package/dist/esm/abstractions/catalog-service.interface.js +2 -0
- package/dist/esm/abstractions/fiscalapi-client.interface.js +2 -0
- package/dist/esm/abstractions/fiscalapi-service.interface.js +2 -0
- package/dist/esm/abstractions/invoice-service.interface.js +2 -0
- package/dist/esm/abstractions/person-service.interface.js +2 -0
- package/dist/esm/abstractions/product-service.interface.js +2 -0
- package/dist/esm/abstractions/tax-file-service.interface.js +2 -0
- package/dist/esm/common/api-response.js +2 -0
- package/dist/esm/common/auditable-dto.js +7 -0
- package/dist/esm/common/base-dto.js +7 -0
- package/dist/esm/common/catalog-dto.js +4 -0
- package/dist/esm/common/file-response.js +2 -0
- package/dist/esm/common/fiscalapi-settings.js +2 -0
- package/dist/esm/common/paged-list.js +14 -0
- package/dist/esm/common/serializable-dto.js +33 -0
- package/dist/esm/http/fiscalapi-http-client-factory.js +59 -0
- package/dist/esm/http/fiscalapi-http-client.interface.js +2 -0
- package/dist/esm/http/fiscalapi-http-client.js +302 -0
- package/dist/esm/index.js +13 -0
- package/dist/esm/models/api-key.js +2 -0
- package/dist/esm/models/invoice.js +2 -0
- package/dist/esm/models/person.js +2 -0
- package/dist/esm/models/product.js +2 -0
- package/dist/esm/models/tax-file.js +2 -0
- package/dist/esm/sdk-constants.js +22 -0
- package/dist/esm/services/api-key-service.js +15 -0
- package/dist/esm/services/base-fiscalapi-service.js +166 -0
- package/dist/esm/services/catalog-service.js +47 -0
- package/dist/esm/services/fiscalapi-client.js +63 -0
- package/dist/esm/services/invoice-service.js +112 -0
- package/dist/esm/services/person-service.js +15 -0
- package/dist/esm/services/product-service.js +15 -0
- package/dist/esm/services/tax-file-service.js +39 -0
- package/dist/esm/utils/date-utils.js +31 -0
- package/dist/esm/utils/encoding-utils.js +17 -0
- package/dist/esm/utils/validation-utils.js +34 -0
- package/dist/types/abstractions/api-key-service.interface.d.ts +7 -0
- package/dist/types/abstractions/catalog-service.interface.d.ts +27 -0
- package/dist/types/abstractions/fiscalapi-client.interface.d.ts +35 -0
- package/dist/types/abstractions/fiscalapi-service.interface.d.ts +94 -0
- package/dist/types/abstractions/invoice-service.interface.d.ts +39 -0
- package/dist/types/abstractions/person-service.interface.d.ts +7 -0
- package/dist/types/abstractions/product-service.interface.d.ts +7 -0
- package/dist/types/abstractions/tax-file-service.interface.d.ts +22 -0
- package/dist/types/common/api-response.d.ts +56 -0
- package/dist/types/common/auditable-dto.d.ts +9 -0
- package/dist/types/common/base-dto.d.ts +7 -0
- package/dist/types/common/catalog-dto.d.ts +8 -0
- package/dist/types/common/file-response.d.ts +18 -0
- package/dist/types/common/fiscalapi-settings.d.ts +30 -0
- package/dist/types/common/paged-list.d.ts +39 -0
- package/dist/types/common/serializable-dto.d.ts +10 -0
- package/dist/types/http/fiscalapi-http-client-factory.d.ts +22 -0
- package/dist/types/http/fiscalapi-http-client.d.ts +113 -0
- package/dist/types/http/fiscalapi-http-client.interface.d.ts +80 -0
- package/dist/types/index.d.ts +25 -0
- package/dist/types/models/api-key.d.ts +21 -0
- package/dist/types/models/invoice.d.ts +337 -0
- package/dist/types/models/person.d.ts +42 -0
- package/dist/types/models/product.d.ts +49 -0
- package/dist/types/models/tax-file.d.ts +23 -0
- package/dist/types/sdk-constants.d.ts +21 -0
- package/dist/types/services/api-key-service.d.ts +15 -0
- package/dist/types/services/base-fiscalapi-service.d.ts +72 -0
- package/dist/types/services/catalog-service.d.ts +34 -0
- package/dist/types/services/fiscalapi-client.d.ts +49 -0
- package/dist/types/services/invoice-service.d.ts +54 -0
- package/dist/types/services/person-service.d.ts +15 -0
- package/dist/types/services/product-service.d.ts +15 -0
- package/dist/types/services/tax-file-service.d.ts +30 -0
- package/dist/types/utils/date-utils.d.ts +17 -0
- package/dist/types/utils/encoding-utils.d.ts +12 -0
- package/dist/types/utils/validation-utils.d.ts +25 -0
- package/fiscalapi.ico +0 -0
- package/fiscalapi.png +0 -0
- package/package.json +64 -0
package/README.md
ADDED
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
# FiscalAPI SDK para Node.js
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/fiscalapi)
|
|
4
|
+
[](https://github.com/FiscalAPI/fiscalapi-node/blob/master/LICENSE.txt)
|
|
5
|
+
|
|
6
|
+
**SDK oficial de FiscalAPI para Node.js**, la API de facturación CFDI y otros servicios fiscales en México. Simplifica la integración con los servicios de facturación electrónica, eliminando las complejidades del SAT y facilitando la generación de facturas, notas de crédito, complementos de pago, nómina, carta porte, y más. ¡Factura sin dolor!
|
|
7
|
+
|
|
8
|
+
## 🚀 Características
|
|
9
|
+
|
|
10
|
+
- Soporte completo para **CFDI 4.0**
|
|
11
|
+
- Compatible con múltiples versiones de Node.js (desde **Node.js 12.0.0**)
|
|
12
|
+
- Soporte para ESM y CommonJS
|
|
13
|
+
- Operaciones asíncronas con Promises
|
|
14
|
+
- Dos modos de operación: **Por valores** o **Por referencias**
|
|
15
|
+
- Manejo simplificado de errores
|
|
16
|
+
- Búsqueda en catálogos del SAT
|
|
17
|
+
- Tipos TypeScript completos
|
|
18
|
+
- Documentación completa y ejemplos prácticos
|
|
19
|
+
|
|
20
|
+
## 📦 Instalación
|
|
21
|
+
|
|
22
|
+
**npm**:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm install fiscalapi
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**yarn**:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
yarn add fiscalapi
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## ⚙️ Configuración
|
|
35
|
+
|
|
36
|
+
Puedes usar el SDK tanto en aplicaciones Node.js tradicionales como en frameworks modernos (Express, NestJS, Next.js, etc.). A continuación se describen ambas formas:
|
|
37
|
+
|
|
38
|
+
### A) Aplicaciones Node.js tradicionales
|
|
39
|
+
|
|
40
|
+
1. **Crea tu objeto de configuración** con [tus credenciales](https://docs.fiscalapi.com/credentials-info):
|
|
41
|
+
```javascript
|
|
42
|
+
// CommonJS
|
|
43
|
+
const { FiscalApiClient } = require('fiscalapi');
|
|
44
|
+
|
|
45
|
+
// o ESM
|
|
46
|
+
import { FiscalApiClient } from 'fiscalapi';
|
|
47
|
+
|
|
48
|
+
const settings = {
|
|
49
|
+
apiUrl: "https://test.fiscalapi.com", // https://live.fiscalapi.com (producción)
|
|
50
|
+
apiKey: "<tu_api_key>",
|
|
51
|
+
tenant: "<tenant>"
|
|
52
|
+
};
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
2. **Crea la instancia del cliente**:
|
|
56
|
+
```javascript
|
|
57
|
+
const fiscalApi = FiscalApiClient.create(settings);
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Para ejemplos completos, consulta [samples-nodejs](https://github.com/FiscalAPI/fiscalapi-samples-node).
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
### B) Aplicaciones con Frameworks Modernos (Express, NestJS, etc.)
|
|
65
|
+
|
|
66
|
+
1. **Agrega la configuración** en tu archivo de variables de entorno (`.env`):
|
|
67
|
+
```
|
|
68
|
+
FISCALAPI_URL=https://test.fiscalapi.com
|
|
69
|
+
FISCALAPI_KEY=<YourApiKeyHere>
|
|
70
|
+
FISCALAPI_TENANT=<YourTenantHere>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
2. **Crea y registra el cliente** (por ejemplo, en un servicio o módulo):
|
|
74
|
+
```typescript
|
|
75
|
+
// services/fiscalapi.service.ts
|
|
76
|
+
import { FiscalApiClient } from 'fiscalapi';
|
|
77
|
+
|
|
78
|
+
export const createFiscalApiClient = () => {
|
|
79
|
+
return FiscalApiClient.create({
|
|
80
|
+
apiUrl: process.env.FISCALAPI_URL,
|
|
81
|
+
apiKey: process.env.FISCALAPI_KEY,
|
|
82
|
+
tenant: process.env.FISCALAPI_TENANT
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
En Express:
|
|
88
|
+
```javascript
|
|
89
|
+
// En tu controlador o router
|
|
90
|
+
const fiscalApi = createFiscalApiClient();
|
|
91
|
+
|
|
92
|
+
app.post('/invoices', async (req, res) => {
|
|
93
|
+
try {
|
|
94
|
+
const response = await fiscalApi.invoices.create(req.body);
|
|
95
|
+
res.json(response);
|
|
96
|
+
} catch (error) {
|
|
97
|
+
res.status(500).json({ error: error.message });
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Para más ejemplos, revisa [samples-express](https://github.com/FiscalAPI/fiscalapi-samples-node-express).
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
## 🔄 Modos de Operación
|
|
106
|
+
|
|
107
|
+
FiscalAPI admite dos [modos de operación](https://docs.fiscalapi.com/modes-of-operation):
|
|
108
|
+
|
|
109
|
+
- **Por Referencias**: Envía solo IDs de objetos previamente creados en el dashboard de FiscalAPI.
|
|
110
|
+
Ideal para integraciones ligeras.
|
|
111
|
+
|
|
112
|
+
- **Por Valores**: Envía todos los campos requeridos en cada petición, con mayor control sobre los datos.
|
|
113
|
+
No se requiere configuración previa en el dashboard.
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
## 📝 Ejemplos de Uso
|
|
117
|
+
|
|
118
|
+
A continuación se muestran algunos ejemplos básicos para ilustrar cómo utilizar el SDK. Puedes encontrar más ejemplos en la [documentación oficial](https://docs.fiscalapi.com).
|
|
119
|
+
|
|
120
|
+
### 1. Crear una Persona (Emisor o Receptor)
|
|
121
|
+
|
|
122
|
+
```javascript
|
|
123
|
+
const fiscalApi = FiscalApiClient.create(settings);
|
|
124
|
+
|
|
125
|
+
const request = {
|
|
126
|
+
legalName: "Persona de Prueba",
|
|
127
|
+
email: "someone@somewhere.com",
|
|
128
|
+
password: "YourStrongPassword123!",
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
try {
|
|
132
|
+
const apiResponse = await fiscalApi.persons.create(request);
|
|
133
|
+
console.log(apiResponse.data);
|
|
134
|
+
} catch (error) {
|
|
135
|
+
console.error(error);
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### 2. Subir Certificados CSD
|
|
140
|
+
[Descarga certificados de prueba](https://docs.fiscalapi.com/tax-files-info)
|
|
141
|
+
|
|
142
|
+
```javascript
|
|
143
|
+
const fiscalApi = FiscalApiClient.create(settings);
|
|
144
|
+
|
|
145
|
+
const certificadoCsd = {
|
|
146
|
+
personId: "984708c4-fcc0-43bd-9d30-ec017815c20e",
|
|
147
|
+
base64File: "MIIFsDCCA5igAwIBAgI...==", // Certificado .cer codificado en Base64
|
|
148
|
+
fileType: "CertificateCsd",
|
|
149
|
+
password: "12345678a",
|
|
150
|
+
tin: "EKU9003173C9"
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
const clavePrivadaCsd = {
|
|
154
|
+
personId: "984708c4-fcc0-43bd-9d30-ec017815c20e",
|
|
155
|
+
base64File: "MIIFDjBABgkqhkiG9w0BBQ0...==", // Llave privada .key codificada en Base64
|
|
156
|
+
fileType: "PrivateKeyCsd",
|
|
157
|
+
password: "12345678a",
|
|
158
|
+
tin: "EKU9003173C9"
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
try {
|
|
162
|
+
const apiResponseCer = await fiscalApi.taxFiles.create(certificadoCsd);
|
|
163
|
+
const apiResponseKey = await fiscalApi.taxFiles.create(clavePrivadaCsd);
|
|
164
|
+
console.log(apiResponseCer.data, apiResponseKey.data);
|
|
165
|
+
} catch (error) {
|
|
166
|
+
console.error(error);
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### 3. Crear un Producto o Servicio
|
|
171
|
+
|
|
172
|
+
```javascript
|
|
173
|
+
const fiscalApi = FiscalApiClient.create(settings);
|
|
174
|
+
|
|
175
|
+
const request = {
|
|
176
|
+
description: "Servicios contables",
|
|
177
|
+
unitPrice: 100,
|
|
178
|
+
satUnitMeasurementId: "E48",
|
|
179
|
+
satTaxObjectId: "02",
|
|
180
|
+
satProductCodeId: "84111500"
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
try {
|
|
184
|
+
const apiResponse = await fiscalApi.products.create(request);
|
|
185
|
+
console.log(apiResponse.data);
|
|
186
|
+
} catch (error) {
|
|
187
|
+
console.error(error);
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### 4. Actualizar Impuestos de un Producto
|
|
192
|
+
|
|
193
|
+
```javascript
|
|
194
|
+
const fiscalApi = FiscalApiClient.create(settings);
|
|
195
|
+
|
|
196
|
+
const request = {
|
|
197
|
+
id: "310301b3-1ae9-441b-b463-51a8f9ca8ba2",
|
|
198
|
+
description: "Servicios contables",
|
|
199
|
+
unitPrice: 100,
|
|
200
|
+
satUnitMeasurementId: "E48",
|
|
201
|
+
satTaxObjectId: "02",
|
|
202
|
+
satProductCodeId: "84111500",
|
|
203
|
+
productTaxes: [
|
|
204
|
+
{ rate: 0.16, taxId: "002", taxFlagId: "T", taxTypeId: "Tasa" }, // IVA 16%
|
|
205
|
+
{ rate: 0.10, taxId: "001", taxFlagId: "R", taxTypeId: "Tasa" }, // ISR 10%
|
|
206
|
+
{ rate: 0.10666666666, taxId: "002", taxFlagId: "R", taxTypeId: "Tasa" } // IVA 2/3 partes
|
|
207
|
+
]
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
try {
|
|
211
|
+
const apiResponse = await fiscalApi.products.update(request.id, request);
|
|
212
|
+
console.log(apiResponse.data);
|
|
213
|
+
} catch (error) {
|
|
214
|
+
console.error(error);
|
|
215
|
+
}
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### 5. Crear una Factura de Ingreso (Por Referencias)
|
|
219
|
+
|
|
220
|
+
```javascript
|
|
221
|
+
const fiscalApi = FiscalApiClient.create(settings);
|
|
222
|
+
|
|
223
|
+
const invoice = {
|
|
224
|
+
versionCode: "4.0",
|
|
225
|
+
series: "SDK-F",
|
|
226
|
+
date: new Date(),
|
|
227
|
+
paymentFormCode: "01",
|
|
228
|
+
currencyCode: "MXN",
|
|
229
|
+
typeCode: "I",
|
|
230
|
+
expeditionZipCode: "42501",
|
|
231
|
+
issuer: {
|
|
232
|
+
id: "<id-emisor-en-fiscalapi>"
|
|
233
|
+
},
|
|
234
|
+
recipient: {
|
|
235
|
+
id: "<id-receptor-en-fiscalapi>"
|
|
236
|
+
},
|
|
237
|
+
items: [
|
|
238
|
+
{
|
|
239
|
+
id: "<id-producto-en-fiscalapi>",
|
|
240
|
+
quantity: 1,
|
|
241
|
+
discount: 10.85
|
|
242
|
+
}
|
|
243
|
+
],
|
|
244
|
+
paymentMethodCode: "PUE",
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
try {
|
|
248
|
+
const apiResponse = await fiscalApi.invoices.create(invoice);
|
|
249
|
+
console.log(apiResponse.data);
|
|
250
|
+
} catch (error) {
|
|
251
|
+
console.error(error);
|
|
252
|
+
}
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### 6. Crear la Misma Factura de Ingreso (Por Valores)
|
|
256
|
+
|
|
257
|
+
```javascript
|
|
258
|
+
const fiscalApi = FiscalApiClient.create(settings);
|
|
259
|
+
|
|
260
|
+
// Agregar sellos CSD, Emisor, Receptor, Items, etc.
|
|
261
|
+
const invoice = {
|
|
262
|
+
versionCode: "4.0",
|
|
263
|
+
series: "SDK-F",
|
|
264
|
+
date: new Date(),
|
|
265
|
+
paymentFormCode: "01",
|
|
266
|
+
currencyCode: "MXN",
|
|
267
|
+
typeCode: "I",
|
|
268
|
+
expeditionZipCode: "42501",
|
|
269
|
+
issuer: {
|
|
270
|
+
tin: "EKU9003173C9",
|
|
271
|
+
legalName: "ESCUELA KEMPER URGATE",
|
|
272
|
+
taxRegimeCode: "601",
|
|
273
|
+
taxCredentials: [
|
|
274
|
+
{
|
|
275
|
+
base64File: "certificate_base64...",
|
|
276
|
+
fileType: "CertificateCsd",
|
|
277
|
+
password: "12345678a"
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
base64File: "private_key_base64...",
|
|
281
|
+
fileType: "PrivateKeyCsd",
|
|
282
|
+
password: "12345678a"
|
|
283
|
+
}
|
|
284
|
+
]
|
|
285
|
+
},
|
|
286
|
+
recipient: {
|
|
287
|
+
tin: "EKU9003173C9",
|
|
288
|
+
legalName: "ESCUELA KEMPER URGATE",
|
|
289
|
+
zipCode: "42501",
|
|
290
|
+
taxRegimeCode: "601",
|
|
291
|
+
cfdiUseCode: "G01",
|
|
292
|
+
email: "someone@somewhere.com"
|
|
293
|
+
},
|
|
294
|
+
items: [
|
|
295
|
+
{
|
|
296
|
+
itemCode: "01010101",
|
|
297
|
+
quantity: 9.5,
|
|
298
|
+
unitOfMeasurementCode: "E48",
|
|
299
|
+
description: "Invoicing software as a service",
|
|
300
|
+
unitPrice: 3587.75,
|
|
301
|
+
taxObjectCode: "02",
|
|
302
|
+
discount: 255.85,
|
|
303
|
+
itemTaxes: [
|
|
304
|
+
{
|
|
305
|
+
taxCode: "002", // IVA
|
|
306
|
+
taxTypeCode: "Tasa",
|
|
307
|
+
taxRate: 0.16,
|
|
308
|
+
taxFlagCode: "T"
|
|
309
|
+
}
|
|
310
|
+
]
|
|
311
|
+
}
|
|
312
|
+
],
|
|
313
|
+
paymentMethodCode: "PUE",
|
|
314
|
+
};
|
|
315
|
+
|
|
316
|
+
try {
|
|
317
|
+
const apiResponse = await fiscalApi.invoices.create(invoice);
|
|
318
|
+
console.log(apiResponse.data);
|
|
319
|
+
} catch (error) {
|
|
320
|
+
console.error(error);
|
|
321
|
+
}
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
### 7. Búsqueda en Catálogos del SAT
|
|
326
|
+
|
|
327
|
+
```javascript
|
|
328
|
+
try {
|
|
329
|
+
// Busca los registros que contengan 'inter' en el catalogo 'SatUnitMeasurements' (pagina 1, tamaño pagina 10)
|
|
330
|
+
const apiResponse = await fiscalApi.catalogs.searchCatalog("SatUnitMeasurements", "inter", 1, 10);
|
|
331
|
+
|
|
332
|
+
if (apiResponse.succeeded) {
|
|
333
|
+
apiResponse.data.items.forEach(item => {
|
|
334
|
+
console.log(`Unidad: ${item.description}`);
|
|
335
|
+
});
|
|
336
|
+
} else {
|
|
337
|
+
console.log(apiResponse.message);
|
|
338
|
+
}
|
|
339
|
+
} catch (error) {
|
|
340
|
+
console.error(error);
|
|
341
|
+
}
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
---
|
|
345
|
+
|
|
346
|
+
## 📋 Operaciones Principales
|
|
347
|
+
|
|
348
|
+
- **Facturas (CFDI)**
|
|
349
|
+
Crear facturas de ingreso, notas de crédito, complementos de pago, cancelaciones, generación de PDF/XML.
|
|
350
|
+
- **Personas (Clientes/Emisores)**
|
|
351
|
+
Alta y administración de personas, gestión de certificados (CSD).
|
|
352
|
+
- **Productos y Servicios**
|
|
353
|
+
Administración de catálogos de productos, búsqueda en catálogos SAT.
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
## 🤝 Contribuir
|
|
357
|
+
|
|
358
|
+
1. Haz un fork del repositorio.
|
|
359
|
+
2. Crea una rama para tu feature: `git checkout -b feature/AmazingFeature`.
|
|
360
|
+
3. Realiza commits de tus cambios: `git commit -m 'Add some AmazingFeature'`.
|
|
361
|
+
4. Sube tu rama: `git push origin feature/AmazingFeature`.
|
|
362
|
+
5. Abre un Pull Request en GitHub.
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
## 🐛 Reportar Problemas
|
|
366
|
+
|
|
367
|
+
1. Asegúrate de usar la última versión del SDK.
|
|
368
|
+
2. Verifica si el problema ya fue reportado.
|
|
369
|
+
3. Proporciona un ejemplo mínimo reproducible.
|
|
370
|
+
4. Incluye los mensajes de error completos.
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
## 📄 Licencia
|
|
374
|
+
|
|
375
|
+
Este proyecto está licenciado bajo la Licencia **MPL-2.0**. Consulta el archivo [LICENSE](LICENSE.txt) para más detalles.
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
## 🔗 Enlaces Útiles
|
|
379
|
+
|
|
380
|
+
- [Documentación Oficial](https://docs.fiscalapi.com)
|
|
381
|
+
- [Portal de FiscalAPI](https://fiscalapi.com)
|
|
382
|
+
- [Ejemplos Node.js](https://github.com/FiscalAPI/fiscalapi-samples-node)
|
|
383
|
+
- [Ejemplos Express](https://github.com/FiscalAPI/fiscalapi-samples-node-express)
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
Desarrollado con ❤️ por [Fiscalapi](https://www.fiscalapi.com)
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWtleS1zZXJ2aWNlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hYnN0cmFjdGlvbnMvYXBpLWtleS1zZXJ2aWNlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUZpc2NhbGFwaVNlcnZpY2UgfSBmcm9tICcuL2Zpc2NhbGFwaS1zZXJ2aWNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBBcGlLZXkgfSBmcm9tICcuLi9tb2RlbHMvYXBpLWtleSc7XG5cbi8qKlxuICogSW50ZXJmYXogZGVsIHNlcnZpY2lvIGRlIGNsYXZlcyBkZSBBUElcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQXBpS2V5U2VydmljZSBleHRlbmRzIElGaXNjYWxhcGlTZXJ2aWNlPEFwaUtleT4ge1xuICAvLyBBcXXDrSBpcsOtYW4gbcOpdG9kb3MgZXNwZWPDrWZpY29zIHBhcmEgY2xhdmVzIGRlIEFQSVxufSJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1zZXJ2aWNlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hYnN0cmFjdGlvbnMvY2F0YWxvZy1zZXJ2aWNlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiIFxuaW1wb3J0IHsgSUZpc2NhbGFwaVNlcnZpY2UgfSBmcm9tICcuL2Zpc2NhbGFwaS1zZXJ2aWNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDYXRhbG9nRHRvIH0gZnJvbSAnLi4vY29tbW9uL2NhdGFsb2ctZHRvJztcbmltcG9ydCB7IEFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vY29tbW9uL2FwaS1yZXNwb25zZSc7XG5pbXBvcnQgeyBQYWdlZExpc3QgfSBmcm9tICcuLi9jb21tb24vcGFnZWQtbGlzdCc7XG5cbi8qKlxuICogSW50ZXJmYXogZGVsIHNlcnZpY2lvIGRlIGNhdMOhbG9nb3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ2F0YWxvZ1NlcnZpY2UgZXh0ZW5kcyBJRmlzY2FsYXBpU2VydmljZTxDYXRhbG9nRHRvPiB7XG4gXG5cbiAgLyoqXG4gICAqIC9hcGkvdjQvY2F0YWxvZ3MvPGNhdGFsb2dOYW1lPi9rZXkvPGlkPlxuICAgKiBSZWN1cGVyYSB1biByZWdpc3RybyBlc3BlY8OtZmljbyBwb3IgY2F0YWxvZ05hbWUgZSBpZFxuICAgKiBcbiAgICogQHBhcmFtIGNhdGFsb2dOYW1lIC0gTm9tYnJlIGRlbCBjYXTDoWxvZ29cbiAgICogQHBhcmFtIGlkIC0gSWRlbnRpZmljYWRvciBkZWwgcmVnaXN0cm9cbiAgICovXG4gIGdldFJlY29yZEJ5SWQoY2F0YWxvZ05hbWU6IHN0cmluZywgaWQ6IHN0cmluZyk6IFByb21pc2U8QXBpUmVzcG9uc2U8Q2F0YWxvZ0R0bz4+O1xuXG4gIC8qKlxuICAgKiBHRVQgL2FwaS92NC9jYXRhbG9ncy97Y2F0YWxvZ05hbWV9L3tzZWFyY2hUZXh0fVxuICAgKiBCdXNjYSByZWdpc3Ryb3MgZW4gdW4gY2F0w6Fsb2dvIGVzcGVjw61maWNvXG4gICAqIFxuICAgKiBAcGFyYW0gY2F0YWxvZ05hbWUgLSBOb21icmUgZGVsIGNhdMOhbG9nb1xuICAgKiBAcGFyYW0gc2VhcmNoVGV4dCAtIFRleHRvIGRlIGLDunNxdWVkYVxuICAgKiBAcGFyYW0gcGFnZU51bWJlciAtIE7Dum1lcm8gZGUgcMOhZ2luYSAob3BjaW9uYWwsIGRlZmF1bHQ6IDEpXG4gICAqIEBwYXJhbSBwYWdlU2l6ZSAtIFRhbWHDsW8gZGUgcMOhZ2luYSAob3BjaW9uYWwsIGRlZmF1bHQ6IDUwKVxuICAgKi9cbiAgc2VhcmNoQ2F0YWxvZyhcbiAgICAgIGNhdGFsb2dOYW1lOiBzdHJpbmcsIFxuICAgICAgc2VhcmNoVGV4dDogc3RyaW5nLCBcbiAgICAgIHBhZ2VOdW1iZXI/OiBudW1iZXIsIFxuICAgICAgcGFnZVNpemU/OiBudW1iZXJcbiAgKTogUHJvbWlzZTxBcGlSZXNwb25zZTxQYWdlZExpc3Q8Q2F0YWxvZ0R0bz4+PjtcblxuICBcbn0iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlzY2FsYXBpLWNsaWVudC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWJzdHJhY3Rpb25zL2Zpc2NhbGFwaS1jbGllbnQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQXBpS2V5U2VydmljZSB9IGZyb20gJy4vYXBpLWtleS1zZXJ2aWNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJQ2F0YWxvZ1NlcnZpY2UgfSBmcm9tICcuL2NhdGFsb2ctc2VydmljZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUludm9pY2VTZXJ2aWNlIH0gZnJvbSAnLi9pbnZvaWNlLXNlcnZpY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IElQZXJzb25TZXJ2aWNlIH0gZnJvbSAnLi9wZXJzb24tc2VydmljZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSVByb2R1Y3RTZXJ2aWNlIH0gZnJvbSAnLi9wcm9kdWN0LXNlcnZpY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IElUYXhGaWxlU2VydmljZSB9IGZyb20gJy4vdGF4LWZpbGUtc2VydmljZS5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEludGVyZmF6IHByaW5jaXBhbCBkZWwgY2xpZW50ZSBwYXJhIEZpc2NhbEFQSVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElGaXNjYWxhcGlDbGllbnQge1xuICAvKipcbiAgICogU2VydmljaW8gZGUgZmFjdHVyYXNcbiAgICovXG4gIGludm9pY2VzOiBJSW52b2ljZVNlcnZpY2U7XG4gIFxuICAvKipcbiAgICogU2VydmljaW8gZGUgcHJvZHVjdG9zXG4gICAqL1xuICBwcm9kdWN0czogSVByb2R1Y3RTZXJ2aWNlO1xuICBcbiAgLyoqXG4gICAqIFNlcnZpY2lvIGRlIHBlcnNvbmFzXG4gICAqL1xuICBwZXJzb25zOiBJUGVyc29uU2VydmljZTtcbiAgXG4gIC8qKlxuICAgKiBTZXJ2aWNpbyBkZSBjbGF2ZXMgZGUgQVBJXG4gICAqL1xuICBhcGlLZXlzOiBJQXBpS2V5U2VydmljZTtcbiAgXG4gIC8qKlxuICAgKiBTZXJ2aWNpbyBkZSBjYXTDoWxvZ29zXG4gICAqL1xuICBjYXRhbG9nczogSUNhdGFsb2dTZXJ2aWNlO1xuICBcbiAgLyoqXG4gICAqIFNlcnZpY2lvIGRlIGFyY2hpdm9zIGZpc2NhbGVzXG4gICAqL1xuICB0YXhGaWxlczogSVRheEZpbGVTZXJ2aWNlO1xufSJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlzY2FsYXBpLXNlcnZpY2UuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Fic3RyYWN0aW9ucy9maXNjYWxhcGktc2VydmljZS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF4aW9zUmVxdWVzdENvbmZpZyB9IGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IEFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vY29tbW9uL2FwaS1yZXNwb25zZSc7XG5pbXBvcnQgeyBCYXNlRHRvIH0gZnJvbSAnLi4vY29tbW9uL2Jhc2UtZHRvJztcbmltcG9ydCB7IFBhZ2VkTGlzdCB9IGZyb20gJy4uL2NvbW1vbi9wYWdlZC1saXN0JztcbmltcG9ydCB7IEh0dHBNZXRob2QgfSBmcm9tICcuLi9odHRwL2Zpc2NhbGFwaS1odHRwLWNsaWVudC5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIE9wY2lvbmVzIHBhcmEgZWplY3V0YXIgdW5hIG9wZXJhY2nDs25cbiAqIEB0ZW1wbGF0ZSBURGF0YSAtIFRpcG8gZGUgZGF0b3MgZGUgZW50cmFkYVxuICovXG5leHBvcnQgdHlwZSBPcGVyYXRpb25PcHRpb25zPFREYXRhID0gYW55PiA9IHtcbiAgLyoqIFJ1dGEgbyBub21icmUgZGUgbGEgb3BlcmFjacOzbiAqL1xuICBwYXRoOiBzdHJpbmc7XG4gIC8qKiBEYXRvcyBwYXJhIGxhIG9wZXJhY2nDs24gKG9wY2lvbmFsKSAqL1xuICBkYXRhPzogVERhdGE7XG4gIC8qKiBQYXLDoW1ldHJvcyBkZSBjb25zdWx0YSAob3BjaW9uYWwpICovXG4gIHF1ZXJ5UGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqIE3DqXRvZG8gSFRUUCBhIHV0aWxpemFyICovXG4gIG1ldGhvZD86ICdHRVQnIHwgJ1BPU1QnIHwgJ1BVVCcgfCAnUEFUQ0gnIHwgJ0RFTEVURSc7XG4gIC8qKiBDb25maWd1cmFjacOzbiBhZGljaW9uYWwgcGFyYSBBeGlvcyAob3BjaW9uYWwpICovXG4gIGNvbmZpZz86IEF4aW9zUmVxdWVzdENvbmZpZztcbn07XG5cbi8qKlxuICogT3BjaW9uZXMgcGFyYSBlamVjdXRhciB1bmEgcGV0aWNpw7NuIHBlcnNvbmFsaXphZGFcbiAqIEB0ZW1wbGF0ZSBURGF0YSAtIFRpcG8gZGUgZGF0b3MgZGUgZW50cmFkYVxuICovXG5leHBvcnQgdHlwZSBSZXF1ZXN0T3B0aW9uczxURGF0YSA9IGFueT4gPSB7XG4gIC8qKiBNw6l0b2RvIEhUVFAgYSB1dGlsaXphciAqL1xuICBtZXRob2Q6IEh0dHBNZXRob2Q7XG4gIC8qKiBSdXRhIGFkaWNpb25hbCAob3BjaW9uYWwpICovXG4gIHBhdGg/OiBzdHJpbmc7XG4gIC8qKiBJRCBkZWwgcmVjdXJzbyAob3BjaW9uYWwpICovXG4gIGlkPzogc3RyaW5nO1xuICAvKiogRGF0b3MgcGFyYSBsYSBwZXRpY2nDs24gKG9wY2lvbmFsKSAqL1xuICBkYXRhPzogVERhdGE7XG4gIC8qKiBQYXLDoW1ldHJvcyBkZSBjb25zdWx0YSAob3BjaW9uYWwpICovXG4gIHF1ZXJ5UGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqIENvbmZpZ3VyYWNpw7NuIGFkaWNpb25hbCBwYXJhIEF4aW9zIChvcGNpb25hbCkgKi9cbiAgY29uZmlnPzogQXhpb3NSZXF1ZXN0Q29uZmlnO1xuICAvKiogVHJhbnNmb3JtYWRvciBwZXJzb25hbGl6YWRvIHBhcmEgbGEgcmVzcHVlc3RhIChvcGNpb25hbCkgKi9cbiAgcmVzcG9uc2VUcmFuc2Zvcm1lcj86IDxUPihyZXNwb25zZTogYW55KSA9PiBUO1xufTtcblxuLyoqXG4gKiBJbnRlcmZheiBiYXNlIHBhcmEgdG9kb3MgbG9zIHNlcnZpY2lvcyBkZSBGaXNjYWxBUElcbiAqIEB0ZW1wbGF0ZSBUIC0gVGlwbyBkZSBEVE8gcXVlIG1hbmVqYSBlbCBzZXJ2aWNpb1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElGaXNjYWxhcGlTZXJ2aWNlPFQgZXh0ZW5kcyBCYXNlRHRvPiB7XG4gIC8qKlxuICAgKiBSZWN1cGVyYSB1bmEgbGlzdGEgcGFnaW5hZGEgZGUgcmVjdXJzb3NcbiAgICogQHBhcmFtIHtudW1iZXJ9IHBhZ2VOdW1iZXIgLSBOw7ptZXJvIGRlIHDDoWdpbmEgKGJhc2UgMSlcbiAgICogQHBhcmFtIHtudW1iZXJ9IHBhZ2VTaXplIC0gTsO6bWVybyBkZSBlbGVtZW50b3MgcG9yIHDDoWdpbmFcbiAgICogQHJldHVybnMge1Byb21pc2U8QXBpUmVzcG9uc2U8UGFnZWRMaXN0PFQ+Pj59IExpc3RhIHBhZ2luYWRhIGRlIHJlY3Vyc29zXG4gICAqL1xuICBnZXRMaXN0KHBhZ2VOdW1iZXI6IG51bWJlciwgcGFnZVNpemU6IG51bWJlcik6IFByb21pc2U8QXBpUmVzcG9uc2U8UGFnZWRMaXN0PFQ+Pj47XG4gIFxuICAvKipcbiAgICogUmVjdXBlcmEgdW4gcmVjdXJzbyBlc3BlY8OtZmljbyBwb3IgSURcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gSUQgZGVsIHJlY3Vyc29cbiAgICogQHBhcmFtIHtib29sZWFufSBbZGV0YWlscz1mYWxzZV0gLSBTaSBlcyB2ZXJkYWRlcm8sIGluY2x1eWUgb2JqZXRvcyByZWxhY2lvbmFkb3NcbiAgICogQHJldHVybnMge1Byb21pc2U8QXBpUmVzcG9uc2U8VD4+fSBSZWN1cnNvIHNvbGljaXRhZG9cbiAgICovXG4gIGdldEJ5SWQoaWQ6IHN0cmluZywgZGV0YWlscz86IGJvb2xlYW4pOiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PjtcbiAgXG4gIC8qKlxuICAgKiBDcmVhIHVuIG51ZXZvIHJlY3Vyc29cbiAgICogQHBhcmFtIHtUfSBtb2RlbCAtIERhdG9zIGRlbCByZWN1cnNvXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEFwaVJlc3BvbnNlPFQ+Pn0gUmVjdXJzbyBjcmVhZG9cbiAgICovXG4gIGNyZWF0ZShtb2RlbDogVCk6IFByb21pc2U8QXBpUmVzcG9uc2U8VD4+O1xuICBcbiAgLyoqXG4gICAqIEFjdHVhbGl6YSB1biByZWN1cnNvIGV4aXN0ZW50ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgLSBJRCBkZWwgcmVjdXJzb1xuICAgKiBAcGFyYW0ge1R9IG1vZGVsIC0gRGF0b3MgYWN0dWFsaXphZG9zIGRlbCByZWN1cnNvXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEFwaVJlc3BvbnNlPFQ+Pn0gUmVjdXJzbyBhY3R1YWxpemFkb1xuICAgKi9cbiAgdXBkYXRlKG1vZGVsOiBUKTogUHJvbWlzZTxBcGlSZXNwb25zZTxUPj47XG4gIFxuICAvKipcbiAgICogRWxpbWluYSB1biByZWN1cnNvXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCAtIElEIGRlbCByZWN1cnNvXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEFwaVJlc3BvbnNlPGJvb2xlYW4+Pn0gUmVzdWx0YWRvIGRlIGxhIG9wZXJhY2nDs25cbiAgICovXG4gIGRlbGV0ZShpZDogc3RyaW5nKTogUHJvbWlzZTxBcGlSZXNwb25zZTxib29sZWFuPj47XG4gIFxuICAvKipcbiAgICogUmVhbGl6YSB1bmEgYsO6c3F1ZWRhIGVuIGVsIHJlY3Vyc29cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSBzZWFyY2hQYXJhbXMgLSBQYXLDoW1ldHJvcyBkZSBiw7pzcXVlZGFcbiAgICogQHJldHVybnMge1Byb21pc2U8QXBpUmVzcG9uc2U8UGFnZWRMaXN0PFQ+Pj59IFJlc3VsdGFkb3MgZGUgbGEgYsO6c3F1ZWRhXG4gICAqL1xuICBzZWFyY2goc2VhcmNoUGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogUHJvbWlzZTxBcGlSZXNwb25zZTxQYWdlZExpc3Q8VD4+PjtcbiAgXG4gIFxuICAvKipcbiAgICogRWplY3V0YSB1bmEgcGV0aWNpw7NuIEhUVFAgcGVyc29uYWxpemFkYSBjb24gbcOheGltYSBmbGV4aWJpbGlkYWRcbiAgICogQHBhcmFtIHtSZXF1ZXN0T3B0aW9uczxURGF0YT59IG9wdGlvbnMgLSBPcGNpb25lcyBwYXJhIGxhIHBldGljacOzblxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcGlSZXNwb25zZTxUUmVzdWx0Pj59IFJlc3VsdGFkbyBkZSBsYSBwZXRpY2nDs25cbiAgICogQHRlbXBsYXRlIFRSZXN1bHQgLSBUaXBvIGRlIHJlc3VsdGFkbyBlc3BlcmFkb1xuICAgKiBAdGVtcGxhdGUgVERhdGEgLSBUaXBvIGRlIGRhdG9zIGRlIGVudHJhZGFcbiAgICovXG4gIGV4ZWN1dGVSZXF1ZXN0PFRSZXN1bHQsIFREYXRhID0gYW55PihcbiAgICBvcHRpb25zOiBSZXF1ZXN0T3B0aW9uczxURGF0YT5cbiAgKTogUHJvbWlzZTxBcGlSZXNwb25zZTxUUmVzdWx0Pj47XG59Il19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS1zZXJ2aWNlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hYnN0cmFjdGlvbnMvaW52b2ljZS1zZXJ2aWNlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBpUmVzcG9uc2UgfSBmcm9tICcuLi9jb21tb24vYXBpLXJlc3BvbnNlJztcbmltcG9ydCB7IEZpbGVSZXNwb25zZSB9IGZyb20gJy4uL2NvbW1vbi9maWxlLXJlc3BvbnNlJztcbmltcG9ydCB7IFxuICBJbnZvaWNlLCBcbiAgQ2FuY2VsSW52b2ljZVJlcXVlc3QsIFxuICBDYW5jZWxJbnZvaWNlUmVzcG9uc2UsIFxuICBDcmVhdGVQZGZSZXF1ZXN0LCBcbiAgU2VuZEludm9pY2VSZXF1ZXN0LFxuICBJbnZvaWNlU3RhdHVzUmVxdWVzdCxcbiAgSW52b2ljZVN0YXR1c1Jlc3BvbnNlXG59IGZyb20gJy4uL21vZGVscy9pbnZvaWNlJztcbmltcG9ydCB7IElGaXNjYWxhcGlTZXJ2aWNlIH0gZnJvbSAnLi9maXNjYWxhcGktc2VydmljZS5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEludGVyZmF6IHBhcmEgZWwgc2VydmljaW8gZGUgZmFjdHVyYXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSW52b2ljZVNlcnZpY2UgZXh0ZW5kcyBJRmlzY2FsYXBpU2VydmljZTxJbnZvaWNlPiB7XG4gIC8qKlxuICAgKiBDYW5jZWxhIHVuYSBmYWN0dXJhXG4gICAqIEBwYXJhbSB7Q2FuY2VsSW52b2ljZVJlcXVlc3R9IHJlcXVlc3QgLSBTb2xpY2l0dWQgcGFyYSBjYW5jZWxhciBmYWN0dXJhXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEFwaVJlc3BvbnNlPENhbmNlbEludm9pY2VSZXNwb25zZT4+fSBSZXNwdWVzdGEgZGUgbGEgY2FuY2VsYWNpw7NuXG4gICAqL1xuICBjYW5jZWwocmVxdWVzdDogQ2FuY2VsSW52b2ljZVJlcXVlc3QpOiBQcm9taXNlPEFwaVJlc3BvbnNlPENhbmNlbEludm9pY2VSZXNwb25zZT4+O1xuICBcbiAgLyoqXG4gICAqIE9idGllbmUgZWwgUERGIGRlIHVuYSBmYWN0dXJhXG4gICAqIEBwYXJhbSB7Q3JlYXRlUGRmUmVxdWVzdH0gcmVxdWVzdCAtIFNvbGljaXR1ZCBwYXJhIGNyZWFyIFBERlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcGlSZXNwb25zZTxGaWxlUmVzcG9uc2U+Pn0gUmVzcHVlc3RhIGNvbiBlbCBhcmNoaXZvIFBERlxuICAgKi9cbiAgZ2V0UGRmKHJlcXVlc3Q6IENyZWF0ZVBkZlJlcXVlc3QpOiBQcm9taXNlPEFwaVJlc3BvbnNlPEZpbGVSZXNwb25zZT4+O1xuICBcbiAgLyoqXG4gICAqIE9idGllbmUgZWwgWE1MIGRlIHVuYSBmYWN0dXJhXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCAtIElEIGRlIGxhIGZhY3R1cmFcbiAgICogQHJldHVybnMge1Byb21pc2U8QXBpUmVzcG9uc2U8RmlsZVJlc3BvbnNlPj59IFJlc3B1ZXN0YSBjb24gZWwgYXJjaGl2byBYTUxcbiAgICovXG4gIGdldFhtbChpZDogc3RyaW5nKTogUHJvbWlzZTxBcGlSZXNwb25zZTxGaWxlUmVzcG9uc2U+PjtcbiAgXG4gIC8qKlxuICAgKiBFbnbDrWEgdW5hIGZhY3R1cmEgcG9yIGNvcnJlbyBlbGVjdHLDs25pY29cbiAgICogQHBhcmFtIHtTZW5kSW52b2ljZVJlcXVlc3R9IHJlcXVlc3QgLSBTb2xpY2l0dWQgcGFyYSBlbnZpYXIgZmFjdHVyYVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcGlSZXNwb25zZTxib29sZWFuPj59IFJlc3VsdGFkbyBkZSBsYSBvcGVyYWNpw7NuXG4gICAqL1xuICBzZW5kKHJlcXVlc3Q6IFNlbmRJbnZvaWNlUmVxdWVzdCk6IFByb21pc2U8QXBpUmVzcG9uc2U8Ym9vbGVhbj4+O1xuICBcbiAgLyoqXG4gICAqIE9idGllbmUgZWwgZXN0YWRvIGRlIHVuYSBmYWN0dXJhXG4gICAqIEBwYXJhbSB7SW52b2ljZVN0YXR1c1JlcXVlc3R9IHJlcXVlc3QgLSBTb2xpY2l0dWQgcGFyYSBjb25zdWx0YXIgZXN0YWRvXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEFwaVJlc3BvbnNlPEludm9pY2VTdGF0dXNSZXNwb25zZT4+fSBSZXNwdWVzdGEgY29uIGVsIGVzdGFkbyBkZSBsYSBmYWN0dXJhXG4gICAqL1xuICBnZXRTdGF0dXMocmVxdWVzdDogSW52b2ljZVN0YXR1c1JlcXVlc3QpOiBQcm9taXNlPEFwaVJlc3BvbnNlPEludm9pY2VTdGF0dXNSZXNwb25zZT4+O1xufSJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc29uLXNlcnZpY2UuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Fic3RyYWN0aW9ucy9wZXJzb24tc2VydmljZS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIiBcbmltcG9ydCB7IElGaXNjYWxhcGlTZXJ2aWNlIH0gZnJvbSAnLi9maXNjYWxhcGktc2VydmljZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUGVyc29uIH0gZnJvbSAnLi4vbW9kZWxzL3BlcnNvbic7XG5cbi8qKlxuICogSW50ZXJmYXogZGVsIHNlcnZpY2lvIGRlIHBlcnNvbmFzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcnNvblNlcnZpY2UgZXh0ZW5kcyBJRmlzY2FsYXBpU2VydmljZTxQZXJzb24+IHtcbiAgLy8gQXF1w60gaXLDrWFuIG3DqXRvZG9zIGVzcGVjw61maWNvcyBwYXJhIHBlcnNvbmFzXG59Il19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1zZXJ2aWNlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hYnN0cmFjdGlvbnMvcHJvZHVjdC1zZXJ2aWNlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiIFxuLy8gc3JjL2Fic3RyYWN0aW9ucy9pbnRlcmZhY2VzL3Byb2R1Y3Qtc2VydmljZS5pbnRlcmZhY2UudHNcbmltcG9ydCB7IElGaXNjYWxhcGlTZXJ2aWNlIH0gZnJvbSAnLi9maXNjYWxhcGktc2VydmljZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gJy4uL21vZGVscy9wcm9kdWN0JztcblxuLyoqXG4gKiBJbnRlcmZheiBkZWwgc2VydmljaW8gZGUgcHJvZHVjdG9zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVByb2R1Y3RTZXJ2aWNlIGV4dGVuZHMgSUZpc2NhbGFwaVNlcnZpY2U8UHJvZHVjdD4ge1xuICAvLyBBcXXDrSBpcsOtYW4gbcOpdG9kb3MgZXNwZWPDrWZpY29zIHBhcmEgcHJvZHVjdG9zXG59Il19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LWZpbGUtc2VydmljZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWJzdHJhY3Rpb25zL3RheC1maWxlLXNlcnZpY2UuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIgXG5pbXBvcnQgeyBJRmlzY2FsYXBpU2VydmljZSB9IGZyb20gJy4vZmlzY2FsYXBpLXNlcnZpY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRheEZpbGUgfSBmcm9tICcuLi9tb2RlbHMvdGF4LWZpbGUnO1xuaW1wb3J0IHsgQXBpUmVzcG9uc2UgfSBmcm9tICcuLi9jb21tb24vYXBpLXJlc3BvbnNlJztcbmltcG9ydCB7IEZpbGVSZXNwb25zZSB9IGZyb20gJy4uL2NvbW1vbi9maWxlLXJlc3BvbnNlJztcblxuLyoqXG4gKiBJbnRlcmZheiBkZWwgc2VydmljaW8gZGUgYXJjaGl2b3MgZmlzY2FsZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVGF4RmlsZVNlcnZpY2UgZXh0ZW5kcyBJRmlzY2FsYXBpU2VydmljZTxUYXhGaWxlPiB7XG5cblxuICAvKipcbiAgICAgKiBPYnRpZW5lIGVsIMO6bHRpbW8gcGFyIGRlIGlkcyBkZSBjZXJ0aWZpY2Fkb3MgdsOhbGlkb3MgeSB2aWdlbnRlIGRlIHVuYSBwZXJzb25hLiBFcyBkZWNpciBzdXMgY2VydGlmaWNhZG9zIHBvciBkZWZlY3RvIChpZHMpXG4gICAgICogXG4gICAgICogQHBhcmFtIHBlcnNvbklkIC0gSWQgZGUgbGEgcGVyc29uYSBwcm9waWV0YXJpYSBkZSBsb3MgY2VydGlmaWNhZG9zXG4gICAgICogQHJldHVybnMgUHJvbWlzZSBxdWUgcmVzdWVsdmUgZW4gdW5hIHJlc3B1ZXN0YSBBUEkgY29uIHVuYSBsaXN0YSBkZSB1biBwYXIgZGUgY2VydGlmaWNhZG9zLCBwZXJvIHNpbiBjb250ZW5pZG8sIHNvbG8gc3VzIElkc1xuICAgICAqL1xuICBnZXREZWZhdWx0UmVmZXJlbmNlcyhwZXJzb25JZDogc3RyaW5nKTogUHJvbWlzZTxBcGlSZXNwb25zZTxUYXhGaWxlW10+PlxuXG4gIC8qKlxuICAgICogT2J0aWVuZSBlbCDDumx0aW1vIHBhciBkZSBjZXJ0aWZpY2Fkb3MgdsOhbGlkb3MgeSB2aWdlbnRlIGRlIHVuYSBwZXJzb25hLiBFcyBkZWNpciBzdXMgY2VydGlmaWNhZG9zIHBvciBkZWZlY3RvXG4gICAgKiBcbiAgICAqIEBwYXJhbSBwZXJzb25JZCAtIElkIGRlIGxhIHBlcnNvbmEgZHVlw7FhIGRlIGxvcyBjZXJ0aWZpY2Fkb3NcbiAgICAqIEByZXR1cm5zIFByb21pc2UgcXVlIHJlc3VlbHZlIGVuIHVuYSByZXNwdWVzdGEgQVBJIGNvbiB1bmEgbGlzdGEgZGUgdW4gcGFyIGRlIGNlcnRpZmljYWRvc1xuICAgICovXG4gIGdldERlZmF1bHRWYWx1ZXMocGVyc29uSWQ6IHN0cmluZyk6IFByb21pc2U8QXBpUmVzcG9uc2U8VGF4RmlsZVtdPj5cblxufVxuXG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXJlc3BvbnNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1vbi9hcGktcmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIiBcbi8qKlxuICogRW5jYXBzdWxhZG9yIGdlbsOpcmljbyBwYXJhIHJlc3B1ZXN0YXMgZGUgbGEgQVBJXG4gKiBAdGVtcGxhdGUgVFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwaVJlc3BvbnNlPFQ+IHtcbiAgICAvKipcbiAgICAgKiBEYXRvcyBkZSBsYSByZXNwdWVzdGFcbiAgICAgKi9cbiAgICBkYXRhOiBUO1xuICAgIFxuICAgIC8qKlxuICAgICAqIEluZGljYSBzaSBsYSBwZXRpY2nDs24gZnVlIGV4aXRvc2FcbiAgICAgKi9cbiAgICBzdWNjZWVkZWQ6IGJvb2xlYW47XG4gICAgXG4gICAgLyoqXG4gICAgICogTWVuc2FqZSBkZSBlcnJvciBvIGRlIMOpeGl0b1xuICAgICAqL1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBcbiAgICAvKipcbiAgICAgKiBEZXRhbGxlcyBhZGljaW9uYWxlcyBkZWwgZXJyb3JcbiAgICAgKi9cbiAgICBkZXRhaWxzOiBzdHJpbmc7XG4gICAgXG4gICAgLyoqXG4gICAgICogQ8OzZGlnbyBkZSBlc3RhZG8gSFRUUFxuICAgICAqL1xuICAgIGh0dHBTdGF0dXNDb2RlOiBudW1iZXI7XG4gIH1cbiAgXG4gIC8qKlxuICogRGV0YWxsZXMgZGUgZXJyb3JlcyBkZSB2YWxpZGFjacOzblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25GYWlsdXJlIHtcbiAgICAvKipcbiAgICAgKiBOb21icmUgZGUgbGEgcHJvcGllZGFkIHF1ZSBmYWxsw7MgZW4gbGEgdmFsaWRhY2nDs25cbiAgICAgKi9cbiAgICBwcm9wZXJ0eU5hbWU6IHN0cmluZztcbiAgICBcbiAgICAvKipcbiAgICAgKiBNZW5zYWplIGRlIGVycm9yXG4gICAgICovXG4gICAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XG4gIFxuICB9XG5cbiAgLyoqXG4gICAqIEludGVyZmF6IHBhcmEgbG9zIGRldGFsbGVzIGRlIHByb2JsZW1hcyBzZWfDum4gUkZDIDk0NTdcbiAgICovXG4gIGV4cG9ydCBpbnRlcmZhY2UgUHJvYmxlbURldGFpbHMge1xuICAgIC8qKiBVUkkgZGUgcmVmZXJlbmNpYSBxdWUgaWRlbnRpZmljYSBlbCB0aXBvIGRlIHByb2JsZW1hICovXG4gICAgdHlwZTogc3RyaW5nO1xuICAgIC8qKiBSZXN1bWVuIGJyZXZlIHkgbGVnaWJsZSBkZWwgdGlwbyBkZSBwcm9ibGVtYSAqL1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgLyoqIEPDs2RpZ28gZGUgZXN0YWRvIEhUVFAgKi9cbiAgICBzdGF0dXM6IG51bWJlcjtcbiAgICAvKiogRXhwbGljYWNpw7NuIGVzcGVjw61maWNhIHkgbGVnaWJsZSBkZSBlc3RhIG9jdXJyZW5jaWEgZGVsIHByb2JsZW1hICovXG4gICAgZGV0YWlsOiBzdHJpbmc7XG4gICAgLyoqIFVSSSBkZSByZWZlcmVuY2lhIHF1ZSBpZGVudGlmaWNhIGxhIG9jdXJyZW5jaWEgZXNwZWPDrWZpY2EgZGVsIHByb2JsZW1hICovXG4gICAgaW5zdGFuY2U/OiBzdHJpbmc7XG4gICAgLyoqIFByb3BpZWRhZGVzIGFkaWNpb25hbGVzIGV4dGVuZGlkYXMgKi9cbiAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICB9Il19
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuditableDto = void 0;
|
|
4
|
+
const serializable_dto_1 = require("./serializable-dto");
|
|
5
|
+
/**
|
|
6
|
+
* Clase que extiende SerializableDto agregando propiedades de auditoría
|
|
7
|
+
*/
|
|
8
|
+
class AuditableDto extends serializable_dto_1.SerializableDto {
|
|
9
|
+
}
|
|
10
|
+
exports.AuditableDto = AuditableDto;
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXRhYmxlLWR0by5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vYXVkaXRhYmxlLWR0by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSx5REFBcUQ7QUFFckQ7O0dBRUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxrQ0FBZTtDQUdoRDtBQUhELG9DQUdDIiwic291cmNlc0NvbnRlbnQiOlsiIFxuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICdsdXhvbic7XG5pbXBvcnQgeyBTZXJpYWxpemFibGVEdG8gfSBmcm9tICcuL3NlcmlhbGl6YWJsZS1kdG8nO1xuXG4vKipcbiAqIENsYXNlIHF1ZSBleHRpZW5kZSBTZXJpYWxpemFibGVEdG8gYWdyZWdhbmRvIHByb3BpZWRhZGVzIGRlIGF1ZGl0b3LDrWFcbiAqL1xuZXhwb3J0IGNsYXNzIEF1ZGl0YWJsZUR0byBleHRlbmRzIFNlcmlhbGl6YWJsZUR0byB7XG4gIGNyZWF0ZWRBdD86IERhdGVUaW1lO1xuICB1cGRhdGVkQXQ/OiBEYXRlVGltZTtcbn0iXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseDto = void 0;
|
|
4
|
+
const auditable_dto_1 = require("./auditable-dto");
|
|
5
|
+
/**
|
|
6
|
+
* Clase base para todos los DTOs de la API
|
|
7
|
+
*/
|
|
8
|
+
class BaseDto extends auditable_dto_1.AuditableDto {
|
|
9
|
+
}
|
|
10
|
+
exports.BaseDto = BaseDto;
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kdG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2Jhc2UtZHRvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLG1EQUErQztBQUUvQzs7R0FFRztBQUNILE1BQWEsT0FBUSxTQUFRLDRCQUFZO0NBRXhDO0FBRkQsMEJBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RhdGVUaW1lfSBmcm9tICdsdXhvbic7XG5pbXBvcnQgeyBBdWRpdGFibGVEdG8gfSBmcm9tIFwiLi9hdWRpdGFibGUtZHRvXCI7XG5cbi8qKlxuICogQ2xhc2UgYmFzZSBwYXJhIHRvZG9zIGxvcyBEVE9zIGRlIGxhIEFQSVxuICovXG5leHBvcnQgY2xhc3MgQmFzZUR0byBleHRlbmRzIEF1ZGl0YWJsZUR0byB7XG4gICAgaWQ/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CatalogDto = void 0;
|
|
4
|
+
const base_dto_1 = require("./base-dto");
|
|
5
|
+
class CatalogDto extends base_dto_1.BaseDto {
|
|
6
|
+
}
|
|
7
|
+
exports.CatalogDto = CatalogDto;
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1kdG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2NhdGFsb2ctZHRvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUFxQztBQUdyQyxNQUFhLFVBQVcsU0FBUSxrQkFBTztDQU10QztBQU5ELGdDQU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUR0byB9IGZyb20gXCIuL2Jhc2UtZHRvXCI7XG5cblxuZXhwb3J0IGNsYXNzIENhdGFsb2dEdG8gZXh0ZW5kcyBCYXNlRHRvIHtcbiAgICAvKipcbiAgICAgKiBDYXRhbG9nIGRlc2NyaXB0aW9uXG4gICAgICogQGV4YW1wbGUgXCJDYXRhbG9nbyBkZSBmb3JtYXMgZGUgcGFnb1wiXG4gICAgICovXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59Il19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1yZXNwb25zZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vZmlsZS1yZXNwb25zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiIFxuLyoqXG4gKiBGaWxlIHJlc3BvbnNlIGZyb20gdGhlIEFQSS5cbiAqUG9yIGVqZW1wbG86IE1vZGVsbyBkZSByZXNwdWVzdGEgZGUgZ2VuZXJhY2nDs24gZGUgUERGIG8gcmVjdXBlcmFjacOzbiBkZSBYTUxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWxlUmVzcG9uc2Uge1xuICAgIC8qKlxuICAgICAqIEZpbGUgY29udGVudCBhcyBhIGJhc2U2NCBzdHJpbmdcbiAgICAgKi9cbiAgICBiYXNlNjRDb250ZW50OiBzdHJpbmc7XG4gICAgXG4gICAgLyoqXG4gICAgICogRmlsZSBuYW1lXG4gICAgICovXG4gICAgZmlsZU5hbWU6IHN0cmluZztcbiAgICBcbiAgICAvKipcbiAgICAgKiBDb250ZW50IHR5cGVcbiAgICAgKi9cbiAgICBjb250ZW50VHlwZTogc3RyaW5nO1xuICB9Il19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlzY2FsYXBpLXNldHRpbmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1vbi9maXNjYWxhcGktc2V0dGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIiBcblxuLyoqXG4gKiBDb25maWd1cmFjacOzbiBwYXJhIGVsIGNsaWVudGUgZGUgRmlzY2FsQVBJXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlzY2FsYXBpU2V0dGluZ3Mge1xuICAgIC8qKlxuICAgKiBVUkwgYmFzZSBkZSBsYSBBUEkgZGUgRmlzY2FsQVBJXG4gICAqL1xuICBhcGlVcmw6IHN0cmluZztcbiAgXG4gIC8qKlxuICAgKiBDbGF2ZSBkZSBBUEkgcGFyYSBhdXRlbnRpY2FjacOzblxuICAgKi9cbiAgYXBpS2V5OiBzdHJpbmc7XG4gIFxuICAvKipcbiAgICogVmVyc2nDs24gZGUgbGEgQVBJIChwcmVkZXRlcm1pbmFkbzogJ3Y0JylcbiAgICovXG4gIGFwaVZlcnNpb24/OiBzdHJpbmc7XG4gIFxuICAvKipcbiAgICogSWRlbnRpZmljYWRvciBkZWwgaW5xdWlsaW5vXG4gICAqL1xuICB0ZW5hbnQ6IHN0cmluZztcbiAgXG4gIC8qKlxuICAgKiBab25hIGhvcmFyaWEgcGFyYSBsYSBBUEkgKHByZWRldGVybWluYWRvOiAnQW1lcmljYS9NZXhpY29fQ2l0eScpXG4gICAqL1xuICB0aW1lWm9uZT86IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhIHNpIGRlIGRlYmUgZWplY3V0YXIgZW4gbW9kbyBkZXB1cmFjacOzbiwgZXN0byBlcywgc2kgc2UgZGViZW4gbW9zdHJhciBsb3MgbG9ncyBkZSBsYSBBUEkgeSBkZXNoYWJpbGl0YXIgbGEgdmFsaWRhY2nDs24gZGVsIGNlcnRpZmljYWRvIFNTTFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGVidWc/OiBib29sZWFuO1xufSJdfQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PagedList = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Lista paginada genérica para respuestas de la API
|
|
6
|
+
* @template T
|
|
7
|
+
*/
|
|
8
|
+
class PagedList {
|
|
9
|
+
/**
|
|
10
|
+
* Comprueba si la colección está vacía
|
|
11
|
+
* @returns {boolean} Verdadero si la colección está vacía
|
|
12
|
+
*/
|
|
13
|
+
isEmpty() {
|
|
14
|
+
return !this.items || this.items.length === 0;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.PagedList = PagedList;
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZWQtbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vcGFnZWQtbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQTs7O0dBR0c7QUFDSCxNQUFhLFNBQVM7SUFvQ2xCOzs7T0FHRztJQUNILE9BQU87UUFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztDQUNGO0FBM0NILDhCQTJDRyIsInNvdXJjZXNDb250ZW50IjpbIiBcbi8qKlxuICogTGlzdGEgcGFnaW5hZGEgZ2Vuw6lyaWNhIHBhcmEgcmVzcHVlc3RhcyBkZSBsYSBBUElcbiAqIEB0ZW1wbGF0ZSBUXG4gKi9cbmV4cG9ydCBjbGFzcyBQYWdlZExpc3Q8VD4ge1xuICAgIC8qKlxuICAgICAqIE7Dum1lcm8gZGUgcMOhZ2luYSBhY3R1YWxcbiAgICAgKi9cbiAgICBwYWdlTnVtYmVyITogbnVtYmVyO1xuICAgIFxuICAgIC8qKlxuICAgICAqIFRhbWHDsW8gZGUgcMOhZ2luYVxuICAgICAqL1xuICAgIHBhZ2VTaXplITogbnVtYmVyO1xuICAgIFxuICAgIC8qKlxuICAgICAqIE7Dum1lcm8gdG90YWwgZGUgZWxlbWVudG9zIGVuIHRvZGFzIGxhcyBww6FnaW5hc1xuICAgICAqL1xuICAgIHRvdGFsSXRlbXMhOiBudW1iZXI7XG4gICAgXG4gICAgLyoqXG4gICAgICogTsO6bWVybyB0b3RhbCBkZSBww6FnaW5hc1xuICAgICAqL1xuICAgIHRvdGFsUGFnZXMhOiBudW1iZXI7XG4gICAgXG4gICAgLyoqXG4gICAgICogSW5kaWNhIHNpIGhheSB1bmEgcMOhZ2luYSBhbnRlcmlvclxuICAgICAqL1xuICAgIGhhc1ByZXZpb3VzUGFnZSE6IGJvb2xlYW47XG4gICAgXG4gICAgLyoqXG4gICAgICogSW5kaWNhIHNpIGhheSB1bmEgcMOhZ2luYSBzaWd1aWVudGVcbiAgICAgKi9cbiAgICBoYXNOZXh0UGFnZSE6IGJvb2xlYW47XG4gICAgXG4gICAgLyoqXG4gICAgICogRWxlbWVudG9zIGVuIGxhIHDDoWdpbmEgYWN0dWFsXG4gICAgICovXG4gICAgaXRlbXMhOiBUW107XG4gICAgXG4gICAgLyoqXG4gICAgICogQ29tcHJ1ZWJhIHNpIGxhIGNvbGVjY2nDs24gZXN0w6EgdmFjw61hXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFZlcmRhZGVybyBzaSBsYSBjb2xlY2Npw7NuIGVzdMOhIHZhY8OtYVxuICAgICAqL1xuICAgIGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gIXRoaXMuaXRlbXMgfHwgdGhpcy5pdGVtcy5sZW5ndGggPT09IDA7XG4gICAgfVxuICB9Il19
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SerializableDto = void 0;
|
|
4
|
+
const luxon_1 = require("luxon");
|
|
5
|
+
/**
|
|
6
|
+
* Clase base que proporciona funcionalidad de serialización para modelos de datos
|
|
7
|
+
*/
|
|
8
|
+
class SerializableDto {
|
|
9
|
+
/**
|
|
10
|
+
* Convierte la instancia a una representación JSON en forma de string
|
|
11
|
+
* @returns {string} Representación JSON del objeto
|
|
12
|
+
*/
|
|
13
|
+
toString() {
|
|
14
|
+
try {
|
|
15
|
+
// Custom replacer function to handle dates correctly
|
|
16
|
+
const replacer = (_key, value) => {
|
|
17
|
+
// Handle DateTime objects
|
|
18
|
+
if (value instanceof luxon_1.DateTime) {
|
|
19
|
+
return value.toISO();
|
|
20
|
+
}
|
|
21
|
+
return value;
|
|
22
|
+
};
|
|
23
|
+
return JSON.stringify(this, replacer, 2);
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
return '{"error":"Error generating JSON"}';
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Custom implementation to ensure object is correctly serialized in console.log
|
|
31
|
+
*/
|
|
32
|
+
[Symbol.for('nodejs.util.inspect.custom')]() {
|
|
33
|
+
return this.toString();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.SerializableDto = SerializableDto;
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXphYmxlLWR0by5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vc2VyaWFsaXphYmxlLWR0by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpQ0FBaUM7QUFFakM7O0dBRUc7QUFDSCxNQUFhLGVBQWU7SUFFMUI7OztPQUdHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQztZQUNILHFEQUFxRDtZQUNyRCxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQVksRUFBRSxLQUFVLEVBQUUsRUFBRTtnQkFDNUMsMEJBQTBCO2dCQUMxQixJQUFJLEtBQUssWUFBWSxnQkFBUSxFQUFFLENBQUM7b0JBQzlCLE9BQU8sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN2QixDQUFDO2dCQUNELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDO1lBRUYsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLG1DQUFtQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUN4QyxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN6QixDQUFDO0NBQ0Y7QUE3QkQsMENBNkJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICdsdXhvbic7XG5cbi8qKlxuICogQ2xhc2UgYmFzZSBxdWUgcHJvcG9yY2lvbmEgZnVuY2lvbmFsaWRhZCBkZSBzZXJpYWxpemFjacOzbiBwYXJhIG1vZGVsb3MgZGUgZGF0b3NcbiAqL1xuZXhwb3J0IGNsYXNzIFNlcmlhbGl6YWJsZUR0byB7XG4gIFxuICAvKipcbiAgICogQ29udmllcnRlIGxhIGluc3RhbmNpYSBhIHVuYSByZXByZXNlbnRhY2nDs24gSlNPTiBlbiBmb3JtYSBkZSBzdHJpbmdcbiAgICogQHJldHVybnMge3N0cmluZ30gUmVwcmVzZW50YWNpw7NuIEpTT04gZGVsIG9iamV0b1xuICAgKi9cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgLy8gQ3VzdG9tIHJlcGxhY2VyIGZ1bmN0aW9uIHRvIGhhbmRsZSBkYXRlcyBjb3JyZWN0bHlcbiAgICAgIGNvbnN0IHJlcGxhY2VyID0gKF9rZXk6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xuICAgICAgICAvLyBIYW5kbGUgRGF0ZVRpbWUgb2JqZWN0c1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlVGltZSkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZS50b0lTTygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH07XG4gICAgICBcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLCByZXBsYWNlciwgMik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiAne1wiZXJyb3JcIjpcIkVycm9yIGdlbmVyYXRpbmcgSlNPTlwifSc7XG4gICAgfVxuICB9XG4gIFxuICAvKipcbiAgICogQ3VzdG9tIGltcGxlbWVudGF0aW9uIHRvIGVuc3VyZSBvYmplY3QgaXMgY29ycmVjdGx5IHNlcmlhbGl6ZWQgaW4gY29uc29sZS5sb2dcbiAgICovXG4gIFtTeW1ib2wuZm9yKCdub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbScpXSgpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygpO1xuICB9XG59Il19
|
|
@@ -0,0 +1,66 @@
|
|
|
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.FiscalapiHttpClientFactory = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const https_1 = __importDefault(require("https"));
|
|
9
|
+
const fiscalapi_http_client_1 = require("./fiscalapi-http-client");
|
|
10
|
+
/**
|
|
11
|
+
* Fábrica para crear clientes HTTP para FiscalAPI
|
|
12
|
+
*/
|
|
13
|
+
class FiscalapiHttpClientFactory {
|
|
14
|
+
/**
|
|
15
|
+
* Crea un nuevo cliente HTTP para FiscalAPI
|
|
16
|
+
* @param {FiscalapiSettings} settings - Configuración de FiscalAPI
|
|
17
|
+
* @returns {IFiscalapiHttpClient} Instancia del cliente HTTP
|
|
18
|
+
* @throws {Error} Si la configuración es nula o indefinida
|
|
19
|
+
*/
|
|
20
|
+
static create(settings) {
|
|
21
|
+
if (!settings) {
|
|
22
|
+
throw new Error('La configuración no puede ser nula o indefinida');
|
|
23
|
+
}
|
|
24
|
+
// Crea una clave única para cachear el cliente
|
|
25
|
+
const clientKey = `${settings.apiKey}:${settings.tenant}:${settings.apiUrl}`;
|
|
26
|
+
// Devuelve el cliente cacheado si existe
|
|
27
|
+
if (this.clients.has(clientKey)) {
|
|
28
|
+
return this.clients.get(clientKey);
|
|
29
|
+
}
|
|
30
|
+
// Crea una instancia de Axios configurada
|
|
31
|
+
const axiosInstance = this.createAxiosInstance(settings);
|
|
32
|
+
// Crea y cachea el cliente
|
|
33
|
+
const client = new fiscalapi_http_client_1.FiscalapiHttpClient(axiosInstance, settings);
|
|
34
|
+
this.clients.set(clientKey, client);
|
|
35
|
+
return client;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Crea una instancia de Axios configurada según los ajustes de FiscalAPI
|
|
39
|
+
* @param {FiscalapiSettings} settings - Configuración de FiscalAPI
|
|
40
|
+
* @returns {AxiosInstance} Instancia de Axios configurada
|
|
41
|
+
* @private
|
|
42
|
+
*/
|
|
43
|
+
static createAxiosInstance(settings) {
|
|
44
|
+
// Agente HTTPS que ignora la validación del certificado autofirmado si está en modo depuración
|
|
45
|
+
const httpsAgent = new https_1.default.Agent({
|
|
46
|
+
//rejectUnauthorized: !settings.debug
|
|
47
|
+
rejectUnauthorized: false, // Cambiado a true para producción
|
|
48
|
+
});
|
|
49
|
+
// Crea y configura una nueva instancia de axios
|
|
50
|
+
return axios_1.default.create({
|
|
51
|
+
baseURL: settings.apiUrl,
|
|
52
|
+
timeout: 30000, // 30 segundos
|
|
53
|
+
headers: {
|
|
54
|
+
'X-API-KEY': settings.apiKey,
|
|
55
|
+
'X-TENANT-KEY': settings.tenant,
|
|
56
|
+
'X-TIMEZONE': settings.timeZone || 'America/Mexico_City',
|
|
57
|
+
'Accept': 'application/json',
|
|
58
|
+
'Content-Type': 'application/json'
|
|
59
|
+
},
|
|
60
|
+
httpsAgent: httpsAgent
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.FiscalapiHttpClientFactory = FiscalapiHttpClientFactory;
|
|
65
|
+
FiscalapiHttpClientFactory.clients = new Map();
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlzY2FsYXBpLWh0dHAtY2xpZW50LWZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaHR0cC9maXNjYWxhcGktaHR0cC1jbGllbnQtZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrREFBNkM7QUFDN0Msa0RBQTBCO0FBRTFCLG1FQUE4RDtBQUc5RDs7R0FFRztBQUNILE1BQWEsMEJBQTBCO0lBR3JDOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUEyQjtRQUM5QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUVELCtDQUErQztRQUMvQyxNQUFNLFNBQVMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFN0UseUNBQXlDO1FBQ3pDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBRSxDQUFDO1FBQ3RDLENBQUM7UUFFRCwwQ0FBMEM7UUFDMUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXpELDJCQUEyQjtRQUMzQixNQUFNLE1BQU0sR0FBRyxJQUFJLDJDQUFtQixDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFcEMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQTJCO1FBQzVELCtGQUErRjtRQUMvRixNQUFNLFVBQVUsR0FBRyxJQUFJLGVBQUssQ0FBQyxLQUFLLENBQUM7WUFDakMscUNBQXFDO1lBQ3JDLGtCQUFrQixFQUFFLEtBQUssRUFBRSxrQ0FBa0M7U0FDOUQsQ0FBQyxDQUFDO1FBRUgsZ0RBQWdEO1FBQ2hELE9BQU8sZUFBSyxDQUFDLE1BQU0sQ0FBQztZQUNsQixPQUFPLEVBQUUsUUFBUSxDQUFDLE1BQU07WUFDeEIsT0FBTyxFQUFFLEtBQUssRUFBRSxjQUFjO1lBQzlCLE9BQU8sRUFBRTtnQkFDUCxXQUFXLEVBQUUsUUFBUSxDQUFDLE1BQU07Z0JBQzVCLGNBQWMsRUFBRSxRQUFRLENBQUMsTUFBTTtnQkFDL0IsWUFBWSxFQUFFLFFBQVEsQ0FBQyxRQUFRLElBQUkscUJBQXFCO2dCQUN4RCxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixjQUFjLEVBQUUsa0JBQWtCO2FBQ25DO1lBQ0QsVUFBVSxFQUFFLFVBQVU7U0FDdkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUExREgsZ0VBMkRDO0FBMURnQixrQ0FBTyxHQUFzQyxJQUFJLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGF4aW9zLCB7IEF4aW9zSW5zdGFuY2UgfSBmcm9tICdheGlvcyc7XG5pbXBvcnQgaHR0cHMgZnJvbSAnaHR0cHMnO1xuaW1wb3J0IHsgRmlzY2FsYXBpU2V0dGluZ3MgfSBmcm9tICcuLi9jb21tb24vZmlzY2FsYXBpLXNldHRpbmdzJztcbmltcG9ydCB7IEZpc2NhbGFwaUh0dHBDbGllbnQgfSBmcm9tICcuL2Zpc2NhbGFwaS1odHRwLWNsaWVudCc7XG5pbXBvcnQgeyBJRmlzY2FsYXBpSHR0cENsaWVudCB9IGZyb20gJy4vZmlzY2FsYXBpLWh0dHAtY2xpZW50LmludGVyZmFjZSc7XG5cbi8qKlxuICogRsOhYnJpY2EgcGFyYSBjcmVhciBjbGllbnRlcyBIVFRQIHBhcmEgRmlzY2FsQVBJXG4gKi9cbmV4cG9ydCBjbGFzcyBGaXNjYWxhcGlIdHRwQ2xpZW50RmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIGNsaWVudHM6IE1hcDxzdHJpbmcsIElGaXNjYWxhcGlIdHRwQ2xpZW50PiA9IG5ldyBNYXAoKTtcblxuICAvKipcbiAgICogQ3JlYSB1biBudWV2byBjbGllbnRlIEhUVFAgcGFyYSBGaXNjYWxBUElcbiAgICogQHBhcmFtIHtGaXNjYWxhcGlTZXR0aW5nc30gc2V0dGluZ3MgLSBDb25maWd1cmFjacOzbiBkZSBGaXNjYWxBUElcbiAgICogQHJldHVybnMge0lGaXNjYWxhcGlIdHRwQ2xpZW50fSBJbnN0YW5jaWEgZGVsIGNsaWVudGUgSFRUUFxuICAgKiBAdGhyb3dzIHtFcnJvcn0gU2kgbGEgY29uZmlndXJhY2nDs24gZXMgbnVsYSBvIGluZGVmaW5pZGFcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlKHNldHRpbmdzOiBGaXNjYWxhcGlTZXR0aW5ncyk6IElGaXNjYWxhcGlIdHRwQ2xpZW50IHtcbiAgICBpZiAoIXNldHRpbmdzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0xhIGNvbmZpZ3VyYWNpw7NuIG5vIHB1ZWRlIHNlciBudWxhIG8gaW5kZWZpbmlkYScpO1xuICAgIH1cblxuICAgIC8vIENyZWEgdW5hIGNsYXZlIMO6bmljYSBwYXJhIGNhY2hlYXIgZWwgY2xpZW50ZVxuICAgIGNvbnN0IGNsaWVudEtleSA9IGAke3NldHRpbmdzLmFwaUtleX06JHtzZXR0aW5ncy50ZW5hbnR9OiR7c2V0dGluZ3MuYXBpVXJsfWA7XG5cbiAgICAvLyBEZXZ1ZWx2ZSBlbCBjbGllbnRlIGNhY2hlYWRvIHNpIGV4aXN0ZVxuICAgIGlmICh0aGlzLmNsaWVudHMuaGFzKGNsaWVudEtleSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmNsaWVudHMuZ2V0KGNsaWVudEtleSkhO1xuICAgIH1cblxuICAgIC8vIENyZWEgdW5hIGluc3RhbmNpYSBkZSBBeGlvcyBjb25maWd1cmFkYVxuICAgIGNvbnN0IGF4aW9zSW5zdGFuY2UgPSB0aGlzLmNyZWF0ZUF4aW9zSW5zdGFuY2Uoc2V0dGluZ3MpO1xuXG4gICAgLy8gQ3JlYSB5IGNhY2hlYSBlbCBjbGllbnRlXG4gICAgY29uc3QgY2xpZW50ID0gbmV3IEZpc2NhbGFwaUh0dHBDbGllbnQoYXhpb3NJbnN0YW5jZSwgc2V0dGluZ3MpO1xuICAgIHRoaXMuY2xpZW50cy5zZXQoY2xpZW50S2V5LCBjbGllbnQpO1xuXG4gICAgcmV0dXJuIGNsaWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhIHVuYSBpbnN0YW5jaWEgZGUgQXhpb3MgY29uZmlndXJhZGEgc2Vnw7puIGxvcyBhanVzdGVzIGRlIEZpc2NhbEFQSVxuICAgKiBAcGFyYW0ge0Zpc2NhbGFwaVNldHRpbmdzfSBzZXR0aW5ncyAtIENvbmZpZ3VyYWNpw7NuIGRlIEZpc2NhbEFQSVxuICAgKiBAcmV0dXJucyB7QXhpb3NJbnN0YW5jZX0gSW5zdGFuY2lhIGRlIEF4aW9zIGNvbmZpZ3VyYWRhXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBjcmVhdGVBeGlvc0luc3RhbmNlKHNldHRpbmdzOiBGaXNjYWxhcGlTZXR0aW5ncyk6IEF4aW9zSW5zdGFuY2Uge1xuICAgIC8vIEFnZW50ZSBIVFRQUyBxdWUgaWdub3JhIGxhIHZhbGlkYWNpw7NuIGRlbCBjZXJ0aWZpY2FkbyBhdXRvZmlybWFkbyBzaSBlc3TDoSBlbiBtb2RvIGRlcHVyYWNpw7NuXG4gICAgY29uc3QgaHR0cHNBZ2VudCA9IG5ldyBodHRwcy5BZ2VudCh7XG4gICAgICAvL3JlamVjdFVuYXV0aG9yaXplZDogIXNldHRpbmdzLmRlYnVnXG4gICAgICByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlLCAvLyBDYW1iaWFkbyBhIHRydWUgcGFyYSBwcm9kdWNjacOzblxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYSB5IGNvbmZpZ3VyYSB1bmEgbnVldmEgaW5zdGFuY2lhIGRlIGF4aW9zXG4gICAgcmV0dXJuIGF4aW9zLmNyZWF0ZSh7XG4gICAgICBiYXNlVVJMOiBzZXR0aW5ncy5hcGlVcmwsXG4gICAgICB0aW1lb3V0OiAzMDAwMCwgLy8gMzAgc2VndW5kb3NcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ1gtQVBJLUtFWSc6IHNldHRpbmdzLmFwaUtleSxcbiAgICAgICAgJ1gtVEVOQU5ULUtFWSc6IHNldHRpbmdzLnRlbmFudCxcbiAgICAgICAgJ1gtVElNRVpPTkUnOiBzZXR0aW5ncy50aW1lWm9uZSB8fCAnQW1lcmljYS9NZXhpY29fQ2l0eScsXG4gICAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgIH0sXG4gICAgICBodHRwc0FnZW50OiBodHRwc0FnZW50XG4gICAgfSk7XG4gIH1cbn0iXX0=
|