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.
Files changed (116) hide show
  1. package/LICENSE.txt +373 -0
  2. package/README.md +388 -0
  3. package/dist/cjs/abstractions/api-key-service.interface.js +3 -0
  4. package/dist/cjs/abstractions/catalog-service.interface.js +3 -0
  5. package/dist/cjs/abstractions/fiscalapi-client.interface.js +3 -0
  6. package/dist/cjs/abstractions/fiscalapi-service.interface.js +3 -0
  7. package/dist/cjs/abstractions/invoice-service.interface.js +3 -0
  8. package/dist/cjs/abstractions/person-service.interface.js +3 -0
  9. package/dist/cjs/abstractions/product-service.interface.js +3 -0
  10. package/dist/cjs/abstractions/tax-file-service.interface.js +3 -0
  11. package/dist/cjs/common/api-response.js +3 -0
  12. package/dist/cjs/common/auditable-dto.js +11 -0
  13. package/dist/cjs/common/base-dto.js +11 -0
  14. package/dist/cjs/common/catalog-dto.js +8 -0
  15. package/dist/cjs/common/file-response.js +3 -0
  16. package/dist/cjs/common/fiscalapi-settings.js +3 -0
  17. package/dist/cjs/common/paged-list.js +18 -0
  18. package/dist/cjs/common/serializable-dto.js +37 -0
  19. package/dist/cjs/http/fiscalapi-http-client-factory.js +66 -0
  20. package/dist/cjs/http/fiscalapi-http-client.interface.js +3 -0
  21. package/dist/cjs/http/fiscalapi-http-client.js +306 -0
  22. package/dist/cjs/index.js +31 -0
  23. package/dist/cjs/models/api-key.js +3 -0
  24. package/dist/cjs/models/invoice.js +3 -0
  25. package/dist/cjs/models/person.js +3 -0
  26. package/dist/cjs/models/product.js +3 -0
  27. package/dist/cjs/models/tax-file.js +3 -0
  28. package/dist/cjs/sdk-constants.js +25 -0
  29. package/dist/cjs/services/api-key-service.js +19 -0
  30. package/dist/cjs/services/base-fiscalapi-service.js +170 -0
  31. package/dist/cjs/services/catalog-service.js +51 -0
  32. package/dist/cjs/services/fiscalapi-client.js +67 -0
  33. package/dist/cjs/services/invoice-service.js +116 -0
  34. package/dist/cjs/services/person-service.js +19 -0
  35. package/dist/cjs/services/product-service.js +19 -0
  36. package/dist/cjs/services/tax-file-service.js +43 -0
  37. package/dist/cjs/utils/date-utils.js +36 -0
  38. package/dist/cjs/utils/encoding-utils.js +21 -0
  39. package/dist/cjs/utils/validation-utils.js +40 -0
  40. package/dist/esm/abstractions/api-key-service.interface.js +2 -0
  41. package/dist/esm/abstractions/catalog-service.interface.js +2 -0
  42. package/dist/esm/abstractions/fiscalapi-client.interface.js +2 -0
  43. package/dist/esm/abstractions/fiscalapi-service.interface.js +2 -0
  44. package/dist/esm/abstractions/invoice-service.interface.js +2 -0
  45. package/dist/esm/abstractions/person-service.interface.js +2 -0
  46. package/dist/esm/abstractions/product-service.interface.js +2 -0
  47. package/dist/esm/abstractions/tax-file-service.interface.js +2 -0
  48. package/dist/esm/common/api-response.js +2 -0
  49. package/dist/esm/common/auditable-dto.js +7 -0
  50. package/dist/esm/common/base-dto.js +7 -0
  51. package/dist/esm/common/catalog-dto.js +4 -0
  52. package/dist/esm/common/file-response.js +2 -0
  53. package/dist/esm/common/fiscalapi-settings.js +2 -0
  54. package/dist/esm/common/paged-list.js +14 -0
  55. package/dist/esm/common/serializable-dto.js +33 -0
  56. package/dist/esm/http/fiscalapi-http-client-factory.js +59 -0
  57. package/dist/esm/http/fiscalapi-http-client.interface.js +2 -0
  58. package/dist/esm/http/fiscalapi-http-client.js +302 -0
  59. package/dist/esm/index.js +13 -0
  60. package/dist/esm/models/api-key.js +2 -0
  61. package/dist/esm/models/invoice.js +2 -0
  62. package/dist/esm/models/person.js +2 -0
  63. package/dist/esm/models/product.js +2 -0
  64. package/dist/esm/models/tax-file.js +2 -0
  65. package/dist/esm/sdk-constants.js +22 -0
  66. package/dist/esm/services/api-key-service.js +15 -0
  67. package/dist/esm/services/base-fiscalapi-service.js +166 -0
  68. package/dist/esm/services/catalog-service.js +47 -0
  69. package/dist/esm/services/fiscalapi-client.js +63 -0
  70. package/dist/esm/services/invoice-service.js +112 -0
  71. package/dist/esm/services/person-service.js +15 -0
  72. package/dist/esm/services/product-service.js +15 -0
  73. package/dist/esm/services/tax-file-service.js +39 -0
  74. package/dist/esm/utils/date-utils.js +31 -0
  75. package/dist/esm/utils/encoding-utils.js +17 -0
  76. package/dist/esm/utils/validation-utils.js +34 -0
  77. package/dist/types/abstractions/api-key-service.interface.d.ts +7 -0
  78. package/dist/types/abstractions/catalog-service.interface.d.ts +27 -0
  79. package/dist/types/abstractions/fiscalapi-client.interface.d.ts +35 -0
  80. package/dist/types/abstractions/fiscalapi-service.interface.d.ts +94 -0
  81. package/dist/types/abstractions/invoice-service.interface.d.ts +39 -0
  82. package/dist/types/abstractions/person-service.interface.d.ts +7 -0
  83. package/dist/types/abstractions/product-service.interface.d.ts +7 -0
  84. package/dist/types/abstractions/tax-file-service.interface.d.ts +22 -0
  85. package/dist/types/common/api-response.d.ts +56 -0
  86. package/dist/types/common/auditable-dto.d.ts +9 -0
  87. package/dist/types/common/base-dto.d.ts +7 -0
  88. package/dist/types/common/catalog-dto.d.ts +8 -0
  89. package/dist/types/common/file-response.d.ts +18 -0
  90. package/dist/types/common/fiscalapi-settings.d.ts +30 -0
  91. package/dist/types/common/paged-list.d.ts +39 -0
  92. package/dist/types/common/serializable-dto.d.ts +10 -0
  93. package/dist/types/http/fiscalapi-http-client-factory.d.ts +22 -0
  94. package/dist/types/http/fiscalapi-http-client.d.ts +113 -0
  95. package/dist/types/http/fiscalapi-http-client.interface.d.ts +80 -0
  96. package/dist/types/index.d.ts +25 -0
  97. package/dist/types/models/api-key.d.ts +21 -0
  98. package/dist/types/models/invoice.d.ts +337 -0
  99. package/dist/types/models/person.d.ts +42 -0
  100. package/dist/types/models/product.d.ts +49 -0
  101. package/dist/types/models/tax-file.d.ts +23 -0
  102. package/dist/types/sdk-constants.d.ts +21 -0
  103. package/dist/types/services/api-key-service.d.ts +15 -0
  104. package/dist/types/services/base-fiscalapi-service.d.ts +72 -0
  105. package/dist/types/services/catalog-service.d.ts +34 -0
  106. package/dist/types/services/fiscalapi-client.d.ts +49 -0
  107. package/dist/types/services/invoice-service.d.ts +54 -0
  108. package/dist/types/services/person-service.d.ts +15 -0
  109. package/dist/types/services/product-service.d.ts +15 -0
  110. package/dist/types/services/tax-file-service.d.ts +30 -0
  111. package/dist/types/utils/date-utils.d.ts +17 -0
  112. package/dist/types/utils/encoding-utils.d.ts +12 -0
  113. package/dist/types/utils/validation-utils.d.ts +25 -0
  114. package/fiscalapi.ico +0 -0
  115. package/fiscalapi.png +0 -0
  116. package/package.json +64 -0
package/README.md ADDED
@@ -0,0 +1,388 @@
1
+ # FiscalAPI SDK para Node.js
2
+
3
+ [![npm](https://img.shields.io/npm/v/fiscalapi.svg)](https://www.npmjs.com/package/fiscalapi)
4
+ [![License](https://img.shields.io/github/license/FiscalAPI/fiscalapi-node)](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=