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
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseFiscalapiService = void 0;
4
+ /**
5
+ * Implementación base de un servicio de FiscalAPI
6
+ * @template T - Tipo de DTO que maneja el servicio
7
+ */
8
+ class BaseFiscalapiService {
9
+ /**
10
+ * Crea una nueva instancia del servicio base
11
+ * @param {IFiscalapiHttpClient} httpClient - Cliente HTTP
12
+ * @param {string} resourcePath - Ruta del recurso en la API
13
+ * @param {string} apiVersion - Versión de la API
14
+ */
15
+ constructor(httpClient, resourcePath, apiVersion) {
16
+ if (!httpClient)
17
+ throw new Error('httpClient no puede ser nulo o indefinido');
18
+ if (!resourcePath)
19
+ throw new Error('resourcePath no puede ser nulo o indefinido');
20
+ if (!apiVersion)
21
+ throw new Error('apiVersion no puede ser nulo o indefinido');
22
+ this.httpClient = httpClient;
23
+ this.resourcePath = resourcePath;
24
+ this.apiVersion = apiVersion;
25
+ }
26
+ /**
27
+ * Construye una URL de endpoint de API
28
+ * @param {string} [path=''] - Segmento de ruta opcional
29
+ * @param {Record<string, string>} [queryParams] - Parámetros de consulta opcionales
30
+ * @returns {string} URL del endpoint
31
+ * @protected
32
+ */
33
+ buildEndpoint(path = '', queryParams) {
34
+ let baseEndpoint = `api/${this.apiVersion}/${this.resourcePath}`;
35
+ if (path) {
36
+ baseEndpoint += `/${path}`;
37
+ }
38
+ if (queryParams && Object.keys(queryParams).length > 0) {
39
+ const queryString = Object.entries(queryParams)
40
+ .filter(([key]) => key)
41
+ .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
42
+ .join('&');
43
+ baseEndpoint += `?${queryString}`;
44
+ }
45
+ return baseEndpoint;
46
+ }
47
+ /**
48
+ * Convierte los parámetros de consulta a un objeto compatible con la configuración de Axios
49
+ * @param {Record<string, string>} queryParams - Parámetros de consulta
50
+ * @returns {AxiosRequestConfig} Configuración de Axios con los parámetros
51
+ * @protected
52
+ */
53
+ createConfigWithParams(queryParams) {
54
+ return queryParams ? { params: queryParams } : {};
55
+ }
56
+ /**
57
+ * Ejecuta una petición HTTP personalizada con máxima flexibilidad
58
+ * @param {RequestOptions<TData>} options - Opciones para la petición
59
+ * @returns {Promise<ApiResponse<TResult>>} Resultado de la petición
60
+ * @template TResult - Tipo de resultado esperado
61
+ * @template TData - Tipo de datos de entrada
62
+ */
63
+ async executeRequest(options) {
64
+ try {
65
+ // Extraer opciones
66
+ const { method, path = '', id, data, queryParams = {}, config = {}, responseTransformer } = options;
67
+ // Construir el endpoint completo
68
+ let endpoint = '';
69
+ // Si se proporciona un ID, lo añadimos a la ruta
70
+ if (id) {
71
+ endpoint = this.buildEndpoint(`${path ? `${path}/` : ''}${id}`, queryParams);
72
+ }
73
+ else if (path) {
74
+ endpoint = this.buildEndpoint(path, queryParams);
75
+ }
76
+ else {
77
+ endpoint = this.buildEndpoint('', queryParams);
78
+ }
79
+ // Ejecutar la petición a través del cliente HTTP
80
+ return this.httpClient.executeRequest(method, endpoint, {
81
+ data,
82
+ config,
83
+ responseTransformer
84
+ });
85
+ }
86
+ catch (error) {
87
+ // Manejo centralizado de errores
88
+ console.error(`Error al ejecutar petición personalizada:`, error);
89
+ // Convertir el error en una respuesta de error estándar
90
+ if (error instanceof Error) {
91
+ const errorResponse = {
92
+ succeeded: false,
93
+ data: null,
94
+ message: `Error al ejecutar petición: ${error.message}`,
95
+ details: JSON.stringify({
96
+ code: 'REQUEST_ERROR',
97
+ message: error.message
98
+ }),
99
+ httpStatusCode: 500
100
+ };
101
+ return errorResponse;
102
+ }
103
+ throw error;
104
+ }
105
+ }
106
+ /**
107
+ * @inheritdoc
108
+ */
109
+ async getList(pageNumber, pageSize) {
110
+ const queryParams = {
111
+ PageNumber: pageNumber.toString(),
112
+ PageSize: pageSize.toString()
113
+ };
114
+ return this.executeRequest({
115
+ method: 'GET',
116
+ queryParams
117
+ });
118
+ }
119
+ /**
120
+ * @inheritdoc
121
+ */
122
+ async getById(id, details = false) {
123
+ const queryParams = details ? { details: details.toString().toLowerCase() } : undefined;
124
+ return this.executeRequest({
125
+ method: 'GET',
126
+ id,
127
+ queryParams
128
+ });
129
+ }
130
+ /**
131
+ * @inheritdoc
132
+ */
133
+ async create(model) {
134
+ return this.executeRequest({
135
+ method: 'POST',
136
+ data: model
137
+ });
138
+ }
139
+ /**
140
+ * @inheritdoc
141
+ */
142
+ async update(model) {
143
+ return this.executeRequest({
144
+ method: 'PUT',
145
+ id: model.id,
146
+ data: model
147
+ });
148
+ }
149
+ /**
150
+ * @inheritdoc
151
+ */
152
+ async delete(id) {
153
+ return this.executeRequest({
154
+ method: 'DELETE',
155
+ id
156
+ });
157
+ }
158
+ /**
159
+ * @inheritdoc
160
+ */
161
+ async search(searchParams) {
162
+ return this.executeRequest({
163
+ method: 'GET',
164
+ path: 'search',
165
+ queryParams: searchParams
166
+ });
167
+ }
168
+ }
169
+ exports.BaseFiscalapiService = BaseFiscalapiService;
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1maXNjYWxhcGktc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9iYXNlLWZpc2NhbGFwaS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU9BOzs7R0FHRztBQUNILE1BQXNCLG9CQUFvQjtJQVV4Qzs7Ozs7T0FLRztJQUNILFlBQVksVUFBZ0MsRUFBRSxZQUFvQixFQUFFLFVBQWtCO1FBQ3BGLElBQUksQ0FBQyxVQUFVO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxZQUFZO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1FBQ2xGLElBQUksQ0FBQyxVQUFVO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBRTlFLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDTyxhQUFhLENBQUMsT0FBZSxFQUFFLEVBQUUsV0FBb0M7UUFDN0UsSUFBSSxZQUFZLEdBQUcsT0FBTyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVqRSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsWUFBWSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7UUFDN0IsQ0FBQztRQUVELElBQUksV0FBVyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO2lCQUM1QyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUM7aUJBQ3RCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7aUJBQ2hGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUViLFlBQVksSUFBSSxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLENBQUM7UUFFRCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDTyxzQkFBc0IsQ0FBQyxXQUFvQztRQUNuRSxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FDbEIsT0FBOEI7UUFFOUIsSUFBSSxDQUFDO1lBQ0gsbUJBQW1CO1lBQ25CLE1BQU0sRUFDSixNQUFNLEVBQ04sSUFBSSxHQUFHLEVBQUUsRUFDVCxFQUFFLEVBQ0YsSUFBSSxFQUNKLFdBQVcsR0FBRyxFQUFFLEVBQ2hCLE1BQU0sR0FBRyxFQUFFLEVBQ1gsbUJBQW1CLEVBQ3BCLEdBQUcsT0FBTyxDQUFDO1lBRVosaUNBQWlDO1lBQ2pDLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUVsQixpREFBaUQ7WUFDakQsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDUCxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQy9FLENBQUM7aUJBQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDaEIsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ25ELENBQUM7aUJBQU0sQ0FBQztnQkFDTixRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDakQsQ0FBQztZQUVELGlEQUFpRDtZQUNqRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUNuQyxNQUFNLEVBQ04sUUFBUSxFQUNSO2dCQUNFLElBQUk7Z0JBQ0osTUFBTTtnQkFDTixtQkFBbUI7YUFDcEIsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixpQ0FBaUM7WUFDakMsT0FBTyxDQUFDLEtBQUssQ0FBQywyQ0FBMkMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUVsRSx3REFBd0Q7WUFDeEQsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sYUFBYSxHQUF5QjtvQkFDMUMsU0FBUyxFQUFFLEtBQUs7b0JBQ2hCLElBQUksRUFBRSxJQUEwQjtvQkFDaEMsT0FBTyxFQUFFLCtCQUErQixLQUFLLENBQUMsT0FBTyxFQUFFO29CQUN2RCxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQzt3QkFDdEIsSUFBSSxFQUFFLGVBQWU7d0JBQ3JCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztxQkFDdkIsQ0FBQztvQkFDRixjQUFjLEVBQUUsR0FBRztpQkFDcEIsQ0FBQztnQkFFRixPQUFPLGFBQWEsQ0FBQztZQUN2QixDQUFDO1lBRUQsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUlEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFrQixFQUFFLFFBQWdCO1FBQ2hELE1BQU0sV0FBVyxHQUFHO1lBQ2xCLFVBQVUsRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFO1lBQ2pDLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFO1NBQzlCLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxjQUFjLENBQWU7WUFDdkMsTUFBTSxFQUFFLEtBQUs7WUFDYixXQUFXO1NBQ1osQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFVLEVBQUUsVUFBbUIsS0FBSztRQUNoRCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFeEYsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFJO1lBQzVCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsRUFBRTtZQUNGLFdBQVc7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQVE7UUFDbkIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFPO1lBQy9CLE1BQU0sRUFBRSxNQUFNO1lBQ2QsSUFBSSxFQUFFLEtBQUs7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQVE7UUFDbkIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFPO1lBQy9CLE1BQU0sRUFBRSxLQUFLO1lBQ2IsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ1osSUFBSSxFQUFFLEtBQUs7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVU7UUFDckIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFVO1lBQ2xDLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLEVBQUU7U0FDSCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQW9DO1FBQy9DLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBZTtZQUN2QyxNQUFNLEVBQUUsS0FBSztZQUNiLElBQUksRUFBRSxRQUFRO1lBQ2QsV0FBVyxFQUFFLFlBQVk7U0FDMUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBek1ELG9EQXlNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF4aW9zUmVxdWVzdENvbmZpZyB9IGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IEJhc2VEdG8gfSBmcm9tICcuLi9jb21tb24vYmFzZS1kdG8nO1xuaW1wb3J0IHsgQXBpUmVzcG9uc2UgfSBmcm9tICcuLi9jb21tb24vYXBpLXJlc3BvbnNlJztcbmltcG9ydCB7IFBhZ2VkTGlzdCB9IGZyb20gJy4uL2NvbW1vbi9wYWdlZC1saXN0JztcbmltcG9ydCB7IElGaXNjYWxhcGlIdHRwQ2xpZW50LCBIdHRwTWV0aG9kIH0gZnJvbSAnLi4vaHR0cC9maXNjYWxhcGktaHR0cC1jbGllbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IElGaXNjYWxhcGlTZXJ2aWNlLCBPcGVyYXRpb25PcHRpb25zLCBSZXF1ZXN0T3B0aW9ucyB9IGZyb20gJy4uL2Fic3RyYWN0aW9ucy9maXNjYWxhcGktc2VydmljZS5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEltcGxlbWVudGFjacOzbiBiYXNlIGRlIHVuIHNlcnZpY2lvIGRlIEZpc2NhbEFQSVxuICogQHRlbXBsYXRlIFQgLSBUaXBvIGRlIERUTyBxdWUgbWFuZWphIGVsIHNlcnZpY2lvXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRmlzY2FsYXBpU2VydmljZTxUIGV4dGVuZHMgQmFzZUR0bz4gaW1wbGVtZW50cyBJRmlzY2FsYXBpU2VydmljZTxUPiB7XG4gIC8qKiBDbGllbnRlIEhUVFAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGh0dHBDbGllbnQ6IElGaXNjYWxhcGlIdHRwQ2xpZW50O1xuICBcbiAgLyoqIFJ1dGEgZGVsIHJlY3Vyc28gKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlc291cmNlUGF0aDogc3RyaW5nO1xuICBcbiAgLyoqIFZlcnNpw7NuIGRlIGxhIEFQSSAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBpVmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhIHVuYSBudWV2YSBpbnN0YW5jaWEgZGVsIHNlcnZpY2lvIGJhc2VcbiAgICogQHBhcmFtIHtJRmlzY2FsYXBpSHR0cENsaWVudH0gaHR0cENsaWVudCAtIENsaWVudGUgSFRUUFxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVzb3VyY2VQYXRoIC0gUnV0YSBkZWwgcmVjdXJzbyBlbiBsYSBBUElcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFwaVZlcnNpb24gLSBWZXJzacOzbiBkZSBsYSBBUElcbiAgICovXG4gIGNvbnN0cnVjdG9yKGh0dHBDbGllbnQ6IElGaXNjYWxhcGlIdHRwQ2xpZW50LCByZXNvdXJjZVBhdGg6IHN0cmluZywgYXBpVmVyc2lvbjogc3RyaW5nKSB7XG4gICAgaWYgKCFodHRwQ2xpZW50KSB0aHJvdyBuZXcgRXJyb3IoJ2h0dHBDbGllbnQgbm8gcHVlZGUgc2VyIG51bG8gbyBpbmRlZmluaWRvJyk7XG4gICAgaWYgKCFyZXNvdXJjZVBhdGgpIHRocm93IG5ldyBFcnJvcigncmVzb3VyY2VQYXRoIG5vIHB1ZWRlIHNlciBudWxvIG8gaW5kZWZpbmlkbycpO1xuICAgIGlmICghYXBpVmVyc2lvbikgdGhyb3cgbmV3IEVycm9yKCdhcGlWZXJzaW9uIG5vIHB1ZWRlIHNlciBudWxvIG8gaW5kZWZpbmlkbycpO1xuICAgIFxuICAgIHRoaXMuaHR0cENsaWVudCA9IGh0dHBDbGllbnQ7XG4gICAgdGhpcy5yZXNvdXJjZVBhdGggPSByZXNvdXJjZVBhdGg7XG4gICAgdGhpcy5hcGlWZXJzaW9uID0gYXBpVmVyc2lvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1eWUgdW5hIFVSTCBkZSBlbmRwb2ludCBkZSBBUElcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtwYXRoPScnXSAtIFNlZ21lbnRvIGRlIHJ1dGEgb3BjaW9uYWxcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSBbcXVlcnlQYXJhbXNdIC0gUGFyw6FtZXRyb3MgZGUgY29uc3VsdGEgb3BjaW9uYWxlc1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBVUkwgZGVsIGVuZHBvaW50XG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBidWlsZEVuZHBvaW50KHBhdGg6IHN0cmluZyA9ICcnLCBxdWVyeVBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBzdHJpbmcge1xuICAgIGxldCBiYXNlRW5kcG9pbnQgPSBgYXBpLyR7dGhpcy5hcGlWZXJzaW9ufS8ke3RoaXMucmVzb3VyY2VQYXRofWA7XG4gICAgXG4gICAgaWYgKHBhdGgpIHtcbiAgICAgIGJhc2VFbmRwb2ludCArPSBgLyR7cGF0aH1gO1xuICAgIH1cbiAgICBcbiAgICBpZiAocXVlcnlQYXJhbXMgJiYgT2JqZWN0LmtleXMocXVlcnlQYXJhbXMpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gT2JqZWN0LmVudHJpZXMocXVlcnlQYXJhbXMpXG4gICAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiBrZXkpXG4gICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKX1gKVxuICAgICAgICAuam9pbignJicpO1xuICAgICAgXG4gICAgICBiYXNlRW5kcG9pbnQgKz0gYD8ke3F1ZXJ5U3RyaW5nfWA7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBiYXNlRW5kcG9pbnQ7XG4gIH1cblxuICAvKipcbiAgICogQ29udmllcnRlIGxvcyBwYXLDoW1ldHJvcyBkZSBjb25zdWx0YSBhIHVuIG9iamV0byBjb21wYXRpYmxlIGNvbiBsYSBjb25maWd1cmFjacOzbiBkZSBBeGlvc1xuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHN0cmluZz59IHF1ZXJ5UGFyYW1zIC0gUGFyw6FtZXRyb3MgZGUgY29uc3VsdGFcbiAgICogQHJldHVybnMge0F4aW9zUmVxdWVzdENvbmZpZ30gQ29uZmlndXJhY2nDs24gZGUgQXhpb3MgY29uIGxvcyBwYXLDoW1ldHJvc1xuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlQ29uZmlnV2l0aFBhcmFtcyhxdWVyeVBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBBeGlvc1JlcXVlc3RDb25maWcge1xuICAgIHJldHVybiBxdWVyeVBhcmFtcyA/IHsgcGFyYW1zOiBxdWVyeVBhcmFtcyB9IDoge307XG4gIH1cblxuICAvKipcbiAgICogRWplY3V0YSB1bmEgcGV0aWNpw7NuIEhUVFAgcGVyc29uYWxpemFkYSBjb24gbcOheGltYSBmbGV4aWJpbGlkYWRcbiAgICogQHBhcmFtIHtSZXF1ZXN0T3B0aW9uczxURGF0YT59IG9wdGlvbnMgLSBPcGNpb25lcyBwYXJhIGxhIHBldGljacOzblxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcGlSZXNwb25zZTxUUmVzdWx0Pj59IFJlc3VsdGFkbyBkZSBsYSBwZXRpY2nDs25cbiAgICogQHRlbXBsYXRlIFRSZXN1bHQgLSBUaXBvIGRlIHJlc3VsdGFkbyBlc3BlcmFkb1xuICAgKiBAdGVtcGxhdGUgVERhdGEgLSBUaXBvIGRlIGRhdG9zIGRlIGVudHJhZGFcbiAgICovXG4gIGFzeW5jIGV4ZWN1dGVSZXF1ZXN0PFRSZXN1bHQsIFREYXRhID0gYW55PihcbiAgICBvcHRpb25zOiBSZXF1ZXN0T3B0aW9uczxURGF0YT5cbiAgKTogUHJvbWlzZTxBcGlSZXNwb25zZTxUUmVzdWx0Pj4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBFeHRyYWVyIG9wY2lvbmVzXG4gICAgICBjb25zdCB7IFxuICAgICAgICBtZXRob2QsIFxuICAgICAgICBwYXRoID0gJycsIFxuICAgICAgICBpZCwgXG4gICAgICAgIGRhdGEsIFxuICAgICAgICBxdWVyeVBhcmFtcyA9IHt9LCBcbiAgICAgICAgY29uZmlnID0ge30sXG4gICAgICAgIHJlc3BvbnNlVHJhbnNmb3JtZXJcbiAgICAgIH0gPSBvcHRpb25zO1xuICAgICAgXG4gICAgICAvLyBDb25zdHJ1aXIgZWwgZW5kcG9pbnQgY29tcGxldG9cbiAgICAgIGxldCBlbmRwb2ludCA9ICcnO1xuICAgICAgXG4gICAgICAvLyBTaSBzZSBwcm9wb3JjaW9uYSB1biBJRCwgbG8gYcOxYWRpbW9zIGEgbGEgcnV0YVxuICAgICAgaWYgKGlkKSB7XG4gICAgICAgIGVuZHBvaW50ID0gdGhpcy5idWlsZEVuZHBvaW50KGAke3BhdGggPyBgJHtwYXRofS9gIDogJyd9JHtpZH1gLCBxdWVyeVBhcmFtcyk7XG4gICAgICB9IGVsc2UgaWYgKHBhdGgpIHtcbiAgICAgICAgZW5kcG9pbnQgPSB0aGlzLmJ1aWxkRW5kcG9pbnQocGF0aCwgcXVlcnlQYXJhbXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW5kcG9pbnQgPSB0aGlzLmJ1aWxkRW5kcG9pbnQoJycsIHF1ZXJ5UGFyYW1zKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gRWplY3V0YXIgbGEgcGV0aWNpw7NuIGEgdHJhdsOpcyBkZWwgY2xpZW50ZSBIVFRQXG4gICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmV4ZWN1dGVSZXF1ZXN0PFRSZXN1bHQsIFREYXRhPihcbiAgICAgICAgbWV0aG9kLFxuICAgICAgICBlbmRwb2ludCxcbiAgICAgICAge1xuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIHJlc3BvbnNlVHJhbnNmb3JtZXJcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gTWFuZWpvIGNlbnRyYWxpemFkbyBkZSBlcnJvcmVzXG4gICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBhbCBlamVjdXRhciBwZXRpY2nDs24gcGVyc29uYWxpemFkYTpgLCBlcnJvcik7XG4gICAgICBcbiAgICAgIC8vIENvbnZlcnRpciBlbCBlcnJvciBlbiB1bmEgcmVzcHVlc3RhIGRlIGVycm9yIGVzdMOhbmRhclxuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgY29uc3QgZXJyb3JSZXNwb25zZTogQXBpUmVzcG9uc2U8VFJlc3VsdD4gPSB7XG4gICAgICAgICAgc3VjY2VlZGVkOiBmYWxzZSxcbiAgICAgICAgICBkYXRhOiBudWxsIGFzIHVua25vd24gYXMgVFJlc3VsdCxcbiAgICAgICAgICBtZXNzYWdlOiBgRXJyb3IgYWwgZWplY3V0YXIgcGV0aWNpw7NuOiAke2Vycm9yLm1lc3NhZ2V9YCxcbiAgICAgICAgICBkZXRhaWxzOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBjb2RlOiAnUkVRVUVTVF9FUlJPUicsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvci5tZXNzYWdlXG4gICAgICAgICAgfSksXG4gICAgICAgICAgaHR0cFN0YXR1c0NvZGU6IDUwMFxuICAgICAgICB9O1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIGVycm9yUmVzcG9uc2U7XG4gICAgICB9XG4gICAgICBcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuICBcbiBcblxuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIGFzeW5jIGdldExpc3QocGFnZU51bWJlcjogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyKTogUHJvbWlzZTxBcGlSZXNwb25zZTxQYWdlZExpc3Q8VD4+PiB7XG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSB7XG4gICAgICBQYWdlTnVtYmVyOiBwYWdlTnVtYmVyLnRvU3RyaW5nKCksXG4gICAgICBQYWdlU2l6ZTogcGFnZVNpemUudG9TdHJpbmcoKVxuICAgIH07XG4gICAgXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVJlcXVlc3Q8UGFnZWRMaXN0PFQ+Pih7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgcXVlcnlQYXJhbXNcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKi9cbiAgYXN5bmMgZ2V0QnlJZChpZDogc3RyaW5nLCBkZXRhaWxzOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PiB7XG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSBkZXRhaWxzID8geyBkZXRhaWxzOiBkZXRhaWxzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSB9IDogdW5kZWZpbmVkO1xuICAgIFxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVSZXF1ZXN0PFQ+KHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICBpZCxcbiAgICAgIHF1ZXJ5UGFyYW1zXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIGFzeW5jIGNyZWF0ZShtb2RlbDogVCk6IFByb21pc2U8QXBpUmVzcG9uc2U8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5leGVjdXRlUmVxdWVzdDxULCBUPih7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGRhdGE6IG1vZGVsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIGFzeW5jIHVwZGF0ZShtb2RlbDogVCk6IFByb21pc2U8QXBpUmVzcG9uc2U8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5leGVjdXRlUmVxdWVzdDxULCBUPih7XG4gICAgICBtZXRob2Q6ICdQVVQnLFxuICAgICAgaWQ6IG1vZGVsLmlkLFxuICAgICAgZGF0YTogbW9kZWxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKi9cbiAgYXN5bmMgZGVsZXRlKGlkOiBzdHJpbmcpOiBQcm9taXNlPEFwaVJlc3BvbnNlPGJvb2xlYW4+PiB7XG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVJlcXVlc3Q8Ym9vbGVhbj4oe1xuICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICAgIGlkXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIGFzeW5jIHNlYXJjaChzZWFyY2hQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBQcm9taXNlPEFwaVJlc3BvbnNlPFBhZ2VkTGlzdDxUPj4+IHtcbiAgICByZXR1cm4gdGhpcy5leGVjdXRlUmVxdWVzdDxQYWdlZExpc3Q8VD4+KHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICBwYXRoOiAnc2VhcmNoJyxcbiAgICAgIHF1ZXJ5UGFyYW1zOiBzZWFyY2hQYXJhbXNcbiAgICB9KTtcbiAgfVxufSJdfQ==
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CatalogService = void 0;
4
+ const base_fiscalapi_service_1 = require("./base-fiscalapi-service");
5
+ /**
6
+ * Implementación del servicio de catálogos
7
+ */
8
+ class CatalogService extends base_fiscalapi_service_1.BaseFiscalapiService {
9
+ /**
10
+ * Crea una nueva instancia del servicio de catálogos
11
+ * @param {IFiscalapiHttpClient} httpClient - Cliente HTTP
12
+ * @param {string} apiVersion - Versión de la API
13
+ */
14
+ constructor(httpClient, apiVersion) {
15
+ super(httpClient, 'catalogs', apiVersion);
16
+ }
17
+ /**
18
+ * Recupera un registro de un catálogo por catalogName y id.
19
+ *
20
+ * @param catalogName - Nombre del catálogo
21
+ * @param id - Id del registro en el catalogName
22
+ * @returns Promise que resuelve en una respuesta API con CatalogDto
23
+ */
24
+ async getRecordById(catalogName, id) {
25
+ const path = `${catalogName}/key/${id}`;
26
+ const endpoint = this.buildEndpoint(path);
27
+ // api/v4/catalogs/<catalogName>/key/<id>
28
+ return this.httpClient.getAsync(endpoint);
29
+ }
30
+ /**
31
+ * Busca en un catálogo.
32
+ *
33
+ * @param catalogName - Catalog name. Must be a catalog retrieved from getList()
34
+ * @param searchText - Criterio de búsqueda. Debe tener 4 caracteres de longitud como mínimo.
35
+ * @param pageNumber - Numero de pagina a recuperar (default: 1)
36
+ * @param pageSize - Tamaño de la página entre 1 y 100 registros por página (default: 50)
37
+ * @returns Promise que resuelve en una respuesta API con lista paginada de CatalogDto
38
+ */
39
+ async searchCatalog(catalogName, searchText, pageNumber = 1, pageSize = 50) {
40
+ const path = `${catalogName}/${searchText}`;
41
+ const queryParams = {
42
+ pageNumber: pageNumber.toString(),
43
+ pageSize: pageSize.toString()
44
+ };
45
+ const endpoint = this.buildEndpoint(path, queryParams);
46
+ const response = await this.httpClient.getAsync(endpoint);
47
+ return response;
48
+ }
49
+ }
50
+ exports.CatalogService = CatalogService;
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2NhdGFsb2ctc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQSxxRUFBZ0U7QUFHaEU7O0dBRUc7QUFDSCxNQUFhLGNBQWUsU0FBUSw2Q0FBZ0M7SUFDbEU7Ozs7T0FJRztJQUNILFlBQVksVUFBZ0MsRUFBRSxVQUFrQjtRQUM5RCxLQUFLLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBSUM7Ozs7OztNQU1FO0lBQ0ssS0FBSyxDQUFDLGFBQWEsQ0FBQyxXQUFtQixFQUFFLEVBQVU7UUFDeEQsTUFBTSxJQUFJLEdBQUcsR0FBRyxXQUFXLFFBQVEsRUFBRSxFQUFFLENBQUM7UUFDeEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyx5Q0FBeUM7UUFDekMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBYSxRQUFRLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7Ozs7Ozs7O01BUUU7SUFDSyxLQUFLLENBQUMsYUFBYSxDQUN4QixXQUFtQixFQUNuQixVQUFrQixFQUNsQixhQUFxQixDQUFDLEVBQ3RCLFdBQW1CLEVBQUU7UUFFckIsTUFBTSxJQUFJLEdBQUcsR0FBRyxXQUFXLElBQUksVUFBVSxFQUFFLENBQUM7UUFDNUMsTUFBTSxXQUFXLEdBQUc7WUFDaEIsVUFBVSxFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUU7WUFDakMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUU7U0FDaEMsQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQXdCLFFBQVEsQ0FBQyxDQUFDO1FBQ2pGLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FHSjtBQXBERCx3Q0FvREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYXRhbG9nRHRvIH0gZnJvbSAnLi4vY29tbW9uL2NhdGFsb2ctZHRvJztcbmltcG9ydCB7IElGaXNjYWxhcGlIdHRwQ2xpZW50IH0gZnJvbSAnLi4vaHR0cC9maXNjYWxhcGktaHR0cC1jbGllbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vY29tbW9uL2FwaS1yZXNwb25zZSc7XG5pbXBvcnQgeyBCYXNlRmlzY2FsYXBpU2VydmljZSB9IGZyb20gJy4vYmFzZS1maXNjYWxhcGktc2VydmljZSc7XG5pbXBvcnQgeyBJQ2F0YWxvZ1NlcnZpY2UsIFBhZ2VkTGlzdCB9IGZyb20gJy4uJztcblxuLyoqXG4gKiBJbXBsZW1lbnRhY2nDs24gZGVsIHNlcnZpY2lvIGRlIGNhdMOhbG9nb3NcbiAqL1xuZXhwb3J0IGNsYXNzIENhdGFsb2dTZXJ2aWNlIGV4dGVuZHMgQmFzZUZpc2NhbGFwaVNlcnZpY2U8Q2F0YWxvZ0R0bz4gaW1wbGVtZW50cyBJQ2F0YWxvZ1NlcnZpY2Uge1xuICAvKipcbiAgICogQ3JlYSB1bmEgbnVldmEgaW5zdGFuY2lhIGRlbCBzZXJ2aWNpbyBkZSBjYXTDoWxvZ29zXG4gICAqIEBwYXJhbSB7SUZpc2NhbGFwaUh0dHBDbGllbnR9IGh0dHBDbGllbnQgLSBDbGllbnRlIEhUVFBcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFwaVZlcnNpb24gLSBWZXJzacOzbiBkZSBsYSBBUElcbiAgICovXG4gIGNvbnN0cnVjdG9yKGh0dHBDbGllbnQ6IElGaXNjYWxhcGlIdHRwQ2xpZW50LCBhcGlWZXJzaW9uOiBzdHJpbmcpIHtcbiAgICBzdXBlcihodHRwQ2xpZW50LCAnY2F0YWxvZ3MnLCBhcGlWZXJzaW9uKTtcbiAgfVxuXG5cblxuICAgIC8qKlxuICAgICogUmVjdXBlcmEgdW4gcmVnaXN0cm8gZGUgdW4gY2F0w6Fsb2dvIHBvciBjYXRhbG9nTmFtZSB5IGlkLlxuICAgICogXG4gICAgKiBAcGFyYW0gY2F0YWxvZ05hbWUgLSBOb21icmUgZGVsIGNhdMOhbG9nb1xuICAgICogQHBhcmFtIGlkIC0gSWQgZGVsIHJlZ2lzdHJvIGVuIGVsIGNhdGFsb2dOYW1lXG4gICAgKiBAcmV0dXJucyBQcm9taXNlIHF1ZSByZXN1ZWx2ZSBlbiB1bmEgcmVzcHVlc3RhIEFQSSBjb24gQ2F0YWxvZ0R0b1xuICAgICovXG4gICAgcHVibGljIGFzeW5jIGdldFJlY29yZEJ5SWQoY2F0YWxvZ05hbWU6IHN0cmluZywgaWQ6IHN0cmluZyk6IFByb21pc2U8QXBpUmVzcG9uc2U8Q2F0YWxvZ0R0bz4+IHtcbiAgICAgIGNvbnN0IHBhdGggPSBgJHtjYXRhbG9nTmFtZX0va2V5LyR7aWR9YDtcbiAgICAgIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5idWlsZEVuZHBvaW50KHBhdGgpO1xuICAgICAgLy8gYXBpL3Y0L2NhdGFsb2dzLzxjYXRhbG9nTmFtZT4va2V5LzxpZD5cbiAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0QXN5bmM8Q2F0YWxvZ0R0bz4oZW5kcG9pbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICogQnVzY2EgZW4gdW4gY2F0w6Fsb2dvLlxuICAgICogXG4gICAgKiBAcGFyYW0gY2F0YWxvZ05hbWUgLSBDYXRhbG9nIG5hbWUuIE11c3QgYmUgYSBjYXRhbG9nIHJldHJpZXZlZCBmcm9tIGdldExpc3QoKVxuICAgICogQHBhcmFtIHNlYXJjaFRleHQgLSBDcml0ZXJpbyBkZSBiw7pzcXVlZGEuIERlYmUgdGVuZXIgNCBjYXJhY3RlcmVzIGRlIGxvbmdpdHVkIGNvbW8gbcOtbmltby5cbiAgICAqIEBwYXJhbSBwYWdlTnVtYmVyIC0gTnVtZXJvIGRlIHBhZ2luYSBhIHJlY3VwZXJhciAoZGVmYXVsdDogMSlcbiAgICAqIEBwYXJhbSBwYWdlU2l6ZSAtIFRhbWHDsW8gZGUgbGEgcMOhZ2luYSBlbnRyZSAxIHkgMTAwIHJlZ2lzdHJvcyBwb3IgcMOhZ2luYSAoZGVmYXVsdDogNTApXG4gICAgKiBAcmV0dXJucyBQcm9taXNlIHF1ZSByZXN1ZWx2ZSBlbiB1bmEgcmVzcHVlc3RhIEFQSSBjb24gbGlzdGEgcGFnaW5hZGEgZGUgQ2F0YWxvZ0R0b1xuICAgICovXG4gICAgcHVibGljIGFzeW5jIHNlYXJjaENhdGFsb2coXG4gICAgICBjYXRhbG9nTmFtZTogc3RyaW5nLCBcbiAgICAgIHNlYXJjaFRleHQ6IHN0cmluZyxcbiAgICAgIHBhZ2VOdW1iZXI6IG51bWJlciA9IDEsIFxuICAgICAgcGFnZVNpemU6IG51bWJlciA9IDUwXG4gICAgKTogUHJvbWlzZTxBcGlSZXNwb25zZTxQYWdlZExpc3Q8Q2F0YWxvZ0R0bz4+PiB7XG4gICAgICBjb25zdCBwYXRoID0gYCR7Y2F0YWxvZ05hbWV9LyR7c2VhcmNoVGV4dH1gO1xuICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSB7XG4gICAgICAgICAgcGFnZU51bWJlcjogcGFnZU51bWJlci50b1N0cmluZygpLFxuICAgICAgICAgIHBhZ2VTaXplOiBwYWdlU2l6ZS50b1N0cmluZygpXG4gICAgICB9O1xuICAgICAgY29uc3QgZW5kcG9pbnQgPSB0aGlzLmJ1aWxkRW5kcG9pbnQocGF0aCwgcXVlcnlQYXJhbXMpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnQuZ2V0QXN5bmM8UGFnZWRMaXN0PENhdGFsb2dEdG8+PihlbmRwb2ludCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuXG4gIFxufVxuIl19
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FiscalapiClient = void 0;
4
+ const fiscalapi_http_client_factory_1 = require("../http/fiscalapi-http-client-factory");
5
+ const api_key_service_1 = require("./api-key-service");
6
+ const catalog_service_1 = require("./catalog-service");
7
+ const invoice_service_1 = require("./invoice-service");
8
+ const person_service_1 = require("./person-service");
9
+ const product_service_1 = require("./product-service");
10
+ const tax_file_service_1 = require("./tax-file-service");
11
+ /**
12
+ * Cliente principal para FiscalAPI
13
+ */
14
+ class FiscalapiClient {
15
+ /**
16
+ * Crea una nueva instancia del cliente de FiscalAPI
17
+ * @param {FiscalapiSettings} settings - Configuración
18
+ * @private
19
+ */
20
+ constructor(settings) {
21
+ // Crea el cliente HTTP
22
+ const httpClient = fiscalapi_http_client_factory_1.FiscalapiHttpClientFactory.create(settings);
23
+ const apiVersion = settings.apiVersion || 'v4';
24
+ // Inicializa los servicios
25
+ this.invoices = new invoice_service_1.InvoiceService(httpClient, apiVersion);
26
+ this.products = new product_service_1.ProductService(httpClient, apiVersion);
27
+ this.persons = new person_service_1.PersonService(httpClient, apiVersion);
28
+ this.apiKeys = new api_key_service_1.ApiKeyService(httpClient, apiVersion);
29
+ this.catalogs = new catalog_service_1.CatalogService(httpClient, apiVersion);
30
+ this.taxFiles = new tax_file_service_1.TaxFileService(httpClient, apiVersion);
31
+ }
32
+ /**
33
+ * Crea una nueva instancia del cliente de FiscalAPI
34
+ * @param {FiscalapiSettings} settings - Configuración
35
+ * @returns {IFiscalapiClient} Instancia del cliente de FiscalAPI
36
+ */
37
+ static create(settings) {
38
+ if (!settings) {
39
+ throw new Error('La configuración no puede ser nula o indefinida');
40
+ }
41
+ // Valida la configuración
42
+ FiscalapiClient.validateSettings(settings);
43
+ // Establece valores predeterminados para configuraciones opcionales
44
+ settings.apiVersion = settings.apiVersion || 'v4';
45
+ settings.timeZone = settings.timeZone || 'America/Mexico_City';
46
+ settings.debug = settings.debug || false;
47
+ return new FiscalapiClient(settings);
48
+ }
49
+ /**
50
+ * Valida la configuración
51
+ * @param {FiscalapiSettings} settings - Configuración
52
+ * @private
53
+ */
54
+ static validateSettings(settings) {
55
+ if (!settings.apiUrl) {
56
+ throw new Error('apiUrl es requerido');
57
+ }
58
+ if (!settings.apiKey) {
59
+ throw new Error('apiKey es requerido');
60
+ }
61
+ if (!settings.tenant) {
62
+ throw new Error('tenant es requerido');
63
+ }
64
+ }
65
+ }
66
+ exports.FiscalapiClient = FiscalapiClient;
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlzY2FsYXBpLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9maXNjYWxhcGktY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVNBLHlGQUFtRjtBQUNuRix1REFBa0Q7QUFDbEQsdURBQW1EO0FBQ25ELHVEQUFtRDtBQUNuRCxxREFBaUQ7QUFDakQsdURBQW1EO0FBQ25ELHlEQUFvRDtBQUVwRDs7R0FFRztBQUNILE1BQWEsZUFBZTtJQStCMUI7Ozs7T0FJRztJQUNILFlBQW9CLFFBQTJCO1FBQzdDLHVCQUF1QjtRQUN2QixNQUFNLFVBQVUsR0FBRywwREFBMEIsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0QsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUM7UUFFL0MsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxnQ0FBYyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksZ0NBQWMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLDhCQUFhLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSwrQkFBYSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksZ0NBQWMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGlDQUFjLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUEyQjtRQUN2QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUVELDBCQUEwQjtRQUMxQixlQUFlLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFM0Msb0VBQW9FO1FBQ3BFLFFBQVEsQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUM7UUFDbEQsUUFBUSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxJQUFJLHFCQUFxQixDQUFDO1FBQy9ELFFBQVEsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUM7UUFFekMsT0FBTyxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUEyQjtRQUN6RCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDekMsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUF6RkQsMENBeUZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgXG4gIElGaXNjYWxhcGlDbGllbnQsXG4gIElJbnZvaWNlU2VydmljZSwgXG4gIElQcm9kdWN0U2VydmljZSwgXG4gIElQZXJzb25TZXJ2aWNlLCBcbiAgSUFwaUtleVNlcnZpY2UsIFxuICBJQ2F0YWxvZ1NlcnZpY2UsIFxuICBJVGF4RmlsZVNlcnZpY2UgfSBmcm9tICcuLic7XG5pbXBvcnQgeyBGaXNjYWxhcGlTZXR0aW5ncyB9IGZyb20gJy4uL2NvbW1vbi9maXNjYWxhcGktc2V0dGluZ3MnO1xuaW1wb3J0IHsgRmlzY2FsYXBpSHR0cENsaWVudEZhY3RvcnkgfSBmcm9tICcuLi9odHRwL2Zpc2NhbGFwaS1odHRwLWNsaWVudC1mYWN0b3J5JztcbmltcG9ydCB7IEFwaUtleVNlcnZpY2UgfSBmcm9tICcuL2FwaS1rZXktc2VydmljZSc7XG5pbXBvcnQgeyBDYXRhbG9nU2VydmljZSB9IGZyb20gJy4vY2F0YWxvZy1zZXJ2aWNlJztcbmltcG9ydCB7IEludm9pY2VTZXJ2aWNlIH0gZnJvbSAnLi9pbnZvaWNlLXNlcnZpY2UnO1xuaW1wb3J0IHsgUGVyc29uU2VydmljZSB9IGZyb20gJy4vcGVyc29uLXNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvZHVjdFNlcnZpY2UgfSBmcm9tICcuL3Byb2R1Y3Qtc2VydmljZSc7XG5pbXBvcnQgeyBUYXhGaWxlU2VydmljZSB9IGZyb20gJy4vdGF4LWZpbGUtc2VydmljZSc7XG5cbi8qKlxuICogQ2xpZW50ZSBwcmluY2lwYWwgcGFyYSBGaXNjYWxBUElcbiAqL1xuZXhwb3J0IGNsYXNzIEZpc2NhbGFwaUNsaWVudCBpbXBsZW1lbnRzIElGaXNjYWxhcGlDbGllbnQge1xuICAvKipcbiAgICogU2VydmljaW8gZGUgZmFjdHVyYXNcbiAgICovXG4gIHJlYWRvbmx5IGludm9pY2VzOiBJSW52b2ljZVNlcnZpY2U7XG4gIFxuICAvKipcbiAgICogU2VydmljaW8gZGUgcHJvZHVjdG9zXG4gICAqL1xuICByZWFkb25seSBwcm9kdWN0czogSVByb2R1Y3RTZXJ2aWNlO1xuICBcbiAgLyoqXG4gICAqIFNlcnZpY2lvIGRlIHBlcnNvbmFzXG4gICAqL1xuICByZWFkb25seSBwZXJzb25zOiBJUGVyc29uU2VydmljZTtcbiAgXG4gIC8qKlxuICAgKiBTZXJ2aWNpbyBkZSBjbGF2ZXMgZGUgQVBJXG4gICAqL1xuICByZWFkb25seSBhcGlLZXlzOiBJQXBpS2V5U2VydmljZTtcbiAgXG4gIC8qKlxuICAgKiBTZXJ2aWNpbyBkZSBjYXTDoWxvZ29zXG4gICAqL1xuICByZWFkb25seSBjYXRhbG9nczogSUNhdGFsb2dTZXJ2aWNlO1xuICBcbiAgLyoqXG4gICAqIFNlcnZpY2lvIGRlIGFyY2hpdm9zIGZpc2NhbGVzXG4gICAqL1xuICByZWFkb25seSB0YXhGaWxlczogSVRheEZpbGVTZXJ2aWNlO1xuXG4gIC8qKlxuICAgKiBDcmVhIHVuYSBudWV2YSBpbnN0YW5jaWEgZGVsIGNsaWVudGUgZGUgRmlzY2FsQVBJXG4gICAqIEBwYXJhbSB7RmlzY2FsYXBpU2V0dGluZ3N9IHNldHRpbmdzIC0gQ29uZmlndXJhY2nDs25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgY29uc3RydWN0b3Ioc2V0dGluZ3M6IEZpc2NhbGFwaVNldHRpbmdzKSB7XG4gICAgLy8gQ3JlYSBlbCBjbGllbnRlIEhUVFBcbiAgICBjb25zdCBodHRwQ2xpZW50ID0gRmlzY2FsYXBpSHR0cENsaWVudEZhY3RvcnkuY3JlYXRlKHNldHRpbmdzKTtcbiAgICBjb25zdCBhcGlWZXJzaW9uID0gc2V0dGluZ3MuYXBpVmVyc2lvbiB8fCAndjQnO1xuICAgIFxuICAgIC8vIEluaWNpYWxpemEgbG9zIHNlcnZpY2lvc1xuICAgIHRoaXMuaW52b2ljZXMgPSBuZXcgSW52b2ljZVNlcnZpY2UoaHR0cENsaWVudCwgYXBpVmVyc2lvbik7XG4gICAgdGhpcy5wcm9kdWN0cyA9IG5ldyBQcm9kdWN0U2VydmljZShodHRwQ2xpZW50LCBhcGlWZXJzaW9uKTtcbiAgICB0aGlzLnBlcnNvbnMgPSBuZXcgUGVyc29uU2VydmljZShodHRwQ2xpZW50LCBhcGlWZXJzaW9uKTtcbiAgICB0aGlzLmFwaUtleXMgPSBuZXcgQXBpS2V5U2VydmljZShodHRwQ2xpZW50LCBhcGlWZXJzaW9uKTtcbiAgICB0aGlzLmNhdGFsb2dzID0gbmV3IENhdGFsb2dTZXJ2aWNlKGh0dHBDbGllbnQsIGFwaVZlcnNpb24pO1xuICAgIHRoaXMudGF4RmlsZXMgPSBuZXcgVGF4RmlsZVNlcnZpY2UoaHR0cENsaWVudCwgYXBpVmVyc2lvbik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYSB1bmEgbnVldmEgaW5zdGFuY2lhIGRlbCBjbGllbnRlIGRlIEZpc2NhbEFQSVxuICAgKiBAcGFyYW0ge0Zpc2NhbGFwaVNldHRpbmdzfSBzZXR0aW5ncyAtIENvbmZpZ3VyYWNpw7NuXG4gICAqIEByZXR1cm5zIHtJRmlzY2FsYXBpQ2xpZW50fSBJbnN0YW5jaWEgZGVsIGNsaWVudGUgZGUgRmlzY2FsQVBJXG4gICAqL1xuICBzdGF0aWMgY3JlYXRlKHNldHRpbmdzOiBGaXNjYWxhcGlTZXR0aW5ncyk6IElGaXNjYWxhcGlDbGllbnQge1xuICAgIGlmICghc2V0dGluZ3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTGEgY29uZmlndXJhY2nDs24gbm8gcHVlZGUgc2VyIG51bGEgbyBpbmRlZmluaWRhJyk7XG4gICAgfVxuICAgIFxuICAgIC8vIFZhbGlkYSBsYSBjb25maWd1cmFjacOzblxuICAgIEZpc2NhbGFwaUNsaWVudC52YWxpZGF0ZVNldHRpbmdzKHNldHRpbmdzKTtcbiAgICBcbiAgICAvLyBFc3RhYmxlY2UgdmFsb3JlcyBwcmVkZXRlcm1pbmFkb3MgcGFyYSBjb25maWd1cmFjaW9uZXMgb3BjaW9uYWxlc1xuICAgIHNldHRpbmdzLmFwaVZlcnNpb24gPSBzZXR0aW5ncy5hcGlWZXJzaW9uIHx8ICd2NCc7XG4gICAgc2V0dGluZ3MudGltZVpvbmUgPSBzZXR0aW5ncy50aW1lWm9uZSB8fCAnQW1lcmljYS9NZXhpY29fQ2l0eSc7XG4gICAgc2V0dGluZ3MuZGVidWcgPSBzZXR0aW5ncy5kZWJ1ZyB8fCBmYWxzZTtcbiAgICBcbiAgICByZXR1cm4gbmV3IEZpc2NhbGFwaUNsaWVudChzZXR0aW5ncyk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhIGxhIGNvbmZpZ3VyYWNpw7NuXG4gICAqIEBwYXJhbSB7RmlzY2FsYXBpU2V0dGluZ3N9IHNldHRpbmdzIC0gQ29uZmlndXJhY2nDs25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHZhbGlkYXRlU2V0dGluZ3Moc2V0dGluZ3M6IEZpc2NhbGFwaVNldHRpbmdzKTogdm9pZCB7XG4gICAgaWYgKCFzZXR0aW5ncy5hcGlVcmwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYXBpVXJsIGVzIHJlcXVlcmlkbycpO1xuICAgIH1cbiAgICBcbiAgICBpZiAoIXNldHRpbmdzLmFwaUtleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhcGlLZXkgZXMgcmVxdWVyaWRvJyk7XG4gICAgfVxuICAgIFxuICAgIGlmICghc2V0dGluZ3MudGVuYW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RlbmFudCBlcyByZXF1ZXJpZG8nKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvoiceService = void 0;
4
+ const base_fiscalapi_service_1 = require("./base-fiscalapi-service");
5
+ /**
6
+ * Implementación del servicio de facturas
7
+ */
8
+ class InvoiceService extends base_fiscalapi_service_1.BaseFiscalapiService {
9
+ /**
10
+ * Crea una nueva instancia del servicio de facturas
11
+ * @param {IFiscalapiHttpClient} httpClient - Cliente HTTP
12
+ * @param {string} apiVersion - Versión de la API
13
+ */
14
+ constructor(httpClient, apiVersion) {
15
+ super(httpClient, 'invoices', apiVersion);
16
+ this.INCOME_ENDPOINT = 'income';
17
+ this.CREDIT_NOTE_ENDPOINT = 'credit-note';
18
+ this.PAYMENT_ENDPOINT = 'payment';
19
+ }
20
+ /**
21
+ * @inheritdoc
22
+ */
23
+ async create(requestModel) {
24
+ if (!requestModel) {
25
+ throw new Error('requestModel cannot be null');
26
+ }
27
+ let endpoint;
28
+ switch (requestModel.typeCode) {
29
+ case 'I':
30
+ endpoint = this.INCOME_ENDPOINT;
31
+ break;
32
+ case 'E':
33
+ endpoint = this.CREDIT_NOTE_ENDPOINT;
34
+ break;
35
+ case 'P':
36
+ endpoint = this.PAYMENT_ENDPOINT;
37
+ break;
38
+ default:
39
+ throw new Error(`Unsupported invoice type: ${requestModel.typeCode}`);
40
+ }
41
+ return await this.executeRequest({
42
+ path: endpoint,
43
+ data: requestModel,
44
+ method: 'POST',
45
+ });
46
+ }
47
+ /**
48
+ * Cancela una factura
49
+ * @param {CancelInvoiceRequest} request - Solicitud para cancelar factura
50
+ * @returns {Promise<ApiResponse<CancelInvoiceResponse>>} Respuesta de la cancelación
51
+ */
52
+ async cancel(request) {
53
+ if (!request) {
54
+ throw new Error('request cannot be null');
55
+ }
56
+ return await this.executeRequest({
57
+ data: request,
58
+ method: 'DELETE',
59
+ });
60
+ }
61
+ /**
62
+ * Obtiene el PDF de una factura
63
+ * @param {CreatePdfRequest} request - Solicitud para crear PDF
64
+ * @returns {Promise<ApiResponse<FileResponse>>} Respuesta con el archivo PDF
65
+ */
66
+ async getPdf(request) {
67
+ if (!request) {
68
+ throw new Error('request cannot be null');
69
+ }
70
+ return await this.executeRequest({
71
+ path: 'pdf',
72
+ data: request,
73
+ method: 'POST',
74
+ });
75
+ }
76
+ /**
77
+ * Obtiene el XML de una factura
78
+ * @param {string} id - ID de la factura
79
+ * @returns {Promise<ApiResponse<FileResponse>>} Respuesta con el archivo XML
80
+ */
81
+ async getXml(id) {
82
+ if (!id || id.trim() === '') {
83
+ throw new Error('id cannot be null or empty');
84
+ }
85
+ return await this.executeRequest({
86
+ path: `${id}/xml`,
87
+ method: 'GET',
88
+ });
89
+ }
90
+ /**
91
+ * Envía una factura por correo electrónico
92
+ * @param {SendInvoiceRequest} request - Solicitud para enviar factura
93
+ * @returns {Promise<ApiResponse<boolean>>} Resultado de la operación
94
+ */
95
+ async send(request) {
96
+ return await this.executeRequest({
97
+ path: 'send',
98
+ data: request,
99
+ method: 'POST',
100
+ });
101
+ }
102
+ /**
103
+ * Obtiene el estado de una factura
104
+ * @param {InvoiceStatusRequest} request - Solicitud para consultar estado
105
+ * @returns {Promise<ApiResponse<InvoiceStatusResponse>>} Respuesta con el estado de la factura
106
+ */
107
+ async getStatus(request) {
108
+ return await this.executeRequest({
109
+ path: 'status',
110
+ data: request,
111
+ method: 'POST',
112
+ });
113
+ }
114
+ }
115
+ exports.InvoiceService = InvoiceService;
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2ludm9pY2Utc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQSxxRUFBZ0U7QUFZaEU7O0dBRUc7QUFDSCxNQUFhLGNBQWUsU0FBUSw2Q0FBNkI7SUFLL0Q7Ozs7T0FJRztJQUNILFlBQVksVUFBZ0MsRUFBRSxVQUFrQjtRQUM5RCxLQUFLLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQVYzQixvQkFBZSxHQUFHLFFBQVEsQ0FBQztRQUMzQix5QkFBb0IsR0FBRyxhQUFhLENBQUM7UUFDckMscUJBQWdCLEdBQUcsU0FBUyxDQUFDO0lBUzlDLENBQUM7SUFFRDs7T0FFRztJQUNPLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBcUI7UUFDMUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsSUFBSSxRQUFnQixDQUFDO1FBRXJCLFFBQVEsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzlCLEtBQUssR0FBRztnQkFDTixRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztnQkFDaEMsTUFBTTtZQUNSLEtBQUssR0FBRztnQkFDTixRQUFRLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO2dCQUNyQyxNQUFNO1lBQ1IsS0FBSyxHQUFHO2dCQUNOLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ2pDLE1BQU07WUFDUjtnQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUMsT0FBTyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQW1CO1lBQ2pELElBQUksRUFBQyxRQUFRO1lBQ2IsSUFBSSxFQUFDLFlBQVk7WUFDakIsTUFBTSxFQUFDLE1BQU07U0FDZCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBNkI7UUFDeEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFFRCxPQUFPLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBOEM7WUFDNUUsSUFBSSxFQUFDLE9BQU87WUFDWixNQUFNLEVBQUMsUUFBUTtTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBeUI7UUFDcEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFDRCxPQUFPLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBaUM7WUFDL0QsSUFBSSxFQUFDLEtBQUs7WUFDVixJQUFJLEVBQUMsT0FBTztZQUNaLE1BQU0sRUFBQyxNQUFNO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVU7UUFFckIsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFRCxPQUFPLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBdUI7WUFDckQsSUFBSSxFQUFDLEdBQUcsRUFBRSxNQUFNO1lBQ2hCLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQTJCO1FBQ3BDLE9BQU8sTUFBTSxJQUFJLENBQUMsY0FBYyxDQUE4QjtZQUM1RCxJQUFJLEVBQUMsTUFBTTtZQUNYLElBQUksRUFBQyxPQUFPO1lBQ1osTUFBTSxFQUFDLE1BQU07U0FDZCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBNkI7UUFDdkMsT0FBTyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQThDO1lBQzlFLElBQUksRUFBQyxRQUFRO1lBQ2IsSUFBSSxFQUFDLE9BQU87WUFDWixNQUFNLEVBQUMsTUFBTTtTQUNkLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDRjtBQXhIRCx3Q0F3SEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJRmlzY2FsYXBpSHR0cENsaWVudCB9IGZyb20gJy4uL2h0dHAvZmlzY2FsYXBpLWh0dHAtY2xpZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBBcGlSZXNwb25zZSB9IGZyb20gJy4uL2NvbW1vbi9hcGktcmVzcG9uc2UnO1xuaW1wb3J0IHsgRmlsZVJlc3BvbnNlIH0gZnJvbSAnLi4vY29tbW9uL2ZpbGUtcmVzcG9uc2UnO1xuaW1wb3J0IHsgQmFzZUZpc2NhbGFwaVNlcnZpY2UgfSBmcm9tICcuL2Jhc2UtZmlzY2FsYXBpLXNlcnZpY2UnO1xuaW1wb3J0IHsgSUludm9pY2VTZXJ2aWNlIH0gZnJvbSAnLi4vYWJzdHJhY3Rpb25zL2ludm9pY2Utc2VydmljZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgXG4gIEludm9pY2UsIFxuICBDYW5jZWxJbnZvaWNlUmVxdWVzdCwgXG4gIENhbmNlbEludm9pY2VSZXNwb25zZSwgXG4gIENyZWF0ZVBkZlJlcXVlc3QsIFxuICBTZW5kSW52b2ljZVJlcXVlc3QsXG4gIEludm9pY2VTdGF0dXNSZXF1ZXN0LFxuICBJbnZvaWNlU3RhdHVzUmVzcG9uc2Vcbn0gZnJvbSAnLi4vbW9kZWxzL2ludm9pY2UnO1xuXG4vKipcbiAqIEltcGxlbWVudGFjacOzbiBkZWwgc2VydmljaW8gZGUgZmFjdHVyYXNcbiAqL1xuZXhwb3J0IGNsYXNzIEludm9pY2VTZXJ2aWNlIGV4dGVuZHMgQmFzZUZpc2NhbGFwaVNlcnZpY2U8SW52b2ljZT4gaW1wbGVtZW50cyBJSW52b2ljZVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IElOQ09NRV9FTkRQT0lOVCA9ICdpbmNvbWUnO1xuICBwcml2YXRlIHJlYWRvbmx5IENSRURJVF9OT1RFX0VORFBPSU5UID0gJ2NyZWRpdC1ub3RlJztcbiAgcHJpdmF0ZSByZWFkb25seSBQQVlNRU5UX0VORFBPSU5UID0gJ3BheW1lbnQnO1xuXG4gIC8qKlxuICAgKiBDcmVhIHVuYSBudWV2YSBpbnN0YW5jaWEgZGVsIHNlcnZpY2lvIGRlIGZhY3R1cmFzXG4gICAqIEBwYXJhbSB7SUZpc2NhbGFwaUh0dHBDbGllbnR9IGh0dHBDbGllbnQgLSBDbGllbnRlIEhUVFBcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFwaVZlcnNpb24gLSBWZXJzacOzbiBkZSBsYSBBUElcbiAgICovXG4gIGNvbnN0cnVjdG9yKGh0dHBDbGllbnQ6IElGaXNjYWxhcGlIdHRwQ2xpZW50LCBhcGlWZXJzaW9uOiBzdHJpbmcpIHtcbiAgICBzdXBlcihodHRwQ2xpZW50LCAnaW52b2ljZXMnLCBhcGlWZXJzaW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKi9cbiAgIG92ZXJyaWRlIGFzeW5jIGNyZWF0ZShyZXF1ZXN0TW9kZWw6IEludm9pY2UpOiBQcm9taXNlPEFwaVJlc3BvbnNlPEludm9pY2U+PiB7XG4gICAgaWYgKCFyZXF1ZXN0TW9kZWwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncmVxdWVzdE1vZGVsIGNhbm5vdCBiZSBudWxsJyk7XG4gICAgfVxuXG4gICAgbGV0IGVuZHBvaW50OiBzdHJpbmc7XG5cbiAgICBzd2l0Y2ggKHJlcXVlc3RNb2RlbC50eXBlQ29kZSkge1xuICAgICAgY2FzZSAnSSc6XG4gICAgICAgIGVuZHBvaW50ID0gdGhpcy5JTkNPTUVfRU5EUE9JTlQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRSc6XG4gICAgICAgIGVuZHBvaW50ID0gdGhpcy5DUkVESVRfTk9URV9FTkRQT0lOVDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdQJzpcbiAgICAgICAgZW5kcG9pbnQgPSB0aGlzLlBBWU1FTlRfRU5EUE9JTlQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBpbnZvaWNlIHR5cGU6ICR7cmVxdWVzdE1vZGVsLnR5cGVDb2RlfWApO1xuICAgIH1cblxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZVJlcXVlc3Q8SW52b2ljZSwgSW52b2ljZT4oe1xuICAgICAgICBwYXRoOmVuZHBvaW50LFxuICAgICAgICBkYXRhOnJlcXVlc3RNb2RlbCxcbiAgICAgICAgbWV0aG9kOidQT1NUJyxcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbGEgdW5hIGZhY3R1cmFcbiAgICogQHBhcmFtIHtDYW5jZWxJbnZvaWNlUmVxdWVzdH0gcmVxdWVzdCAtIFNvbGljaXR1ZCBwYXJhIGNhbmNlbGFyIGZhY3R1cmFcbiAgICogQHJldHVybnMge1Byb21pc2U8QXBpUmVzcG9uc2U8Q2FuY2VsSW52b2ljZVJlc3BvbnNlPj59IFJlc3B1ZXN0YSBkZSBsYSBjYW5jZWxhY2nDs25cbiAgICovXG4gIGFzeW5jIGNhbmNlbChyZXF1ZXN0OiBDYW5jZWxJbnZvaWNlUmVxdWVzdCk6IFByb21pc2U8QXBpUmVzcG9uc2U8Q2FuY2VsSW52b2ljZVJlc3BvbnNlPj4ge1xuICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXF1ZXN0IGNhbm5vdCBiZSBudWxsJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZVJlcXVlc3Q8Q2FuY2VsSW52b2ljZVJlc3BvbnNlLCBDYW5jZWxJbnZvaWNlUmVxdWVzdD4oe1xuICAgICAgZGF0YTpyZXF1ZXN0LFxuICAgICAgbWV0aG9kOidERUxFVEUnLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgUERGIGRlIHVuYSBmYWN0dXJhXG4gICAqIEBwYXJhbSB7Q3JlYXRlUGRmUmVxdWVzdH0gcmVxdWVzdCAtIFNvbGljaXR1ZCBwYXJhIGNyZWFyIFBERlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcGlSZXNwb25zZTxGaWxlUmVzcG9uc2U+Pn0gUmVzcHVlc3RhIGNvbiBlbCBhcmNoaXZvIFBERlxuICAgKi9cbiAgYXN5bmMgZ2V0UGRmKHJlcXVlc3Q6IENyZWF0ZVBkZlJlcXVlc3QpOiBQcm9taXNlPEFwaVJlc3BvbnNlPEZpbGVSZXNwb25zZT4+IHtcbiAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncmVxdWVzdCBjYW5ub3QgYmUgbnVsbCcpO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlUmVxdWVzdDxGaWxlUmVzcG9uc2UsIENyZWF0ZVBkZlJlcXVlc3Q+KHtcbiAgICAgIHBhdGg6J3BkZicsXG4gICAgICBkYXRhOnJlcXVlc3QsXG4gICAgICBtZXRob2Q6J1BPU1QnLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgWE1MIGRlIHVuYSBmYWN0dXJhXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCAtIElEIGRlIGxhIGZhY3R1cmFcbiAgICogQHJldHVybnMge1Byb21pc2U8QXBpUmVzcG9uc2U8RmlsZVJlc3BvbnNlPj59IFJlc3B1ZXN0YSBjb24gZWwgYXJjaGl2byBYTUxcbiAgICovXG4gIGFzeW5jIGdldFhtbChpZDogc3RyaW5nKTogUHJvbWlzZTxBcGlSZXNwb25zZTxGaWxlUmVzcG9uc2U+PiB7XG5cbiAgICBpZiAoIWlkIHx8IGlkLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaWQgY2Fubm90IGJlIG51bGwgb3IgZW1wdHknKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlUmVxdWVzdDxGaWxlUmVzcG9uc2UsIHN0cmluZz4oe1xuICAgICAgcGF0aDpgJHtpZH0veG1sYCxcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgfSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBFbnbDrWEgdW5hIGZhY3R1cmEgcG9yIGNvcnJlbyBlbGVjdHLDs25pY29cbiAgICogQHBhcmFtIHtTZW5kSW52b2ljZVJlcXVlc3R9IHJlcXVlc3QgLSBTb2xpY2l0dWQgcGFyYSBlbnZpYXIgZmFjdHVyYVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcGlSZXNwb25zZTxib29sZWFuPj59IFJlc3VsdGFkbyBkZSBsYSBvcGVyYWNpw7NuXG4gICAqL1xuICBhc3luYyBzZW5kKHJlcXVlc3Q6IFNlbmRJbnZvaWNlUmVxdWVzdCk6IFByb21pc2U8QXBpUmVzcG9uc2U8Ym9vbGVhbj4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlUmVxdWVzdDxib29sZWFuLCBTZW5kSW52b2ljZVJlcXVlc3Q+KHtcbiAgICAgIHBhdGg6J3NlbmQnLFxuICAgICAgZGF0YTpyZXF1ZXN0LFxuICAgICAgbWV0aG9kOidQT1NUJyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGVsIGVzdGFkbyBkZSB1bmEgZmFjdHVyYVxuICAgKiBAcGFyYW0ge0ludm9pY2VTdGF0dXNSZXF1ZXN0fSByZXF1ZXN0IC0gU29saWNpdHVkIHBhcmEgY29uc3VsdGFyIGVzdGFkb1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcGlSZXNwb25zZTxJbnZvaWNlU3RhdHVzUmVzcG9uc2U+Pn0gUmVzcHVlc3RhIGNvbiBlbCBlc3RhZG8gZGUgbGEgZmFjdHVyYVxuICAgKi9cbiAgYXN5bmMgZ2V0U3RhdHVzKHJlcXVlc3Q6IEludm9pY2VTdGF0dXNSZXF1ZXN0KTogUHJvbWlzZTxBcGlSZXNwb25zZTxJbnZvaWNlU3RhdHVzUmVzcG9uc2U+PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVSZXF1ZXN0PEludm9pY2VTdGF0dXNSZXNwb25zZSwgSW52b2ljZVN0YXR1c1JlcXVlc3Q+KHtcbiAgICAgICAgcGF0aDonc3RhdHVzJyxcbiAgICAgICAgZGF0YTpyZXF1ZXN0LFxuICAgICAgICBtZXRob2Q6J1BPU1QnLFxuICAgICAgfSk7XG4gIH1cbn0iXX0=
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PersonService = void 0;
4
+ const base_fiscalapi_service_1 = require("./base-fiscalapi-service");
5
+ /**
6
+ * Implementación del servicio de personas
7
+ */
8
+ class PersonService extends base_fiscalapi_service_1.BaseFiscalapiService {
9
+ /**
10
+ * Crea una nueva instancia del servicio de personas
11
+ * @param {IFiscalapiHttpClient} httpClient - Cliente HTTP
12
+ * @param {string} apiVersion - Versión de la API
13
+ */
14
+ constructor(httpClient, apiVersion) {
15
+ super(httpClient, 'people', apiVersion);
16
+ }
17
+ }
18
+ exports.PersonService = PersonService;
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc29uLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvcGVyc29uLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0EscUVBQWdFO0FBR2hFOztHQUVHO0FBQ0gsTUFBYSxhQUFjLFNBQVEsNkNBQTRCO0lBQzdEOzs7O09BSUc7SUFDSCxZQUFZLFVBQWdDLEVBQUUsVUFBa0I7UUFDOUQsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDMUMsQ0FBQztDQUNGO0FBVEQsc0NBU0MiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IFBlcnNvbiB9IGZyb20gJy4uL21vZGVscy9wZXJzb24nO1xuaW1wb3J0IHsgSUZpc2NhbGFwaUh0dHBDbGllbnQgfSBmcm9tICcuLi9odHRwL2Zpc2NhbGFwaS1odHRwLWNsaWVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFzZUZpc2NhbGFwaVNlcnZpY2UgfSBmcm9tICcuL2Jhc2UtZmlzY2FsYXBpLXNlcnZpY2UnO1xuaW1wb3J0IHsgSVBlcnNvblNlcnZpY2UgfSBmcm9tICcuLic7XG5cbi8qKlxuICogSW1wbGVtZW50YWNpw7NuIGRlbCBzZXJ2aWNpbyBkZSBwZXJzb25hc1xuICovXG5leHBvcnQgY2xhc3MgUGVyc29uU2VydmljZSBleHRlbmRzIEJhc2VGaXNjYWxhcGlTZXJ2aWNlPFBlcnNvbj4gaW1wbGVtZW50cyBJUGVyc29uU2VydmljZSB7XG4gIC8qKlxuICAgKiBDcmVhIHVuYSBudWV2YSBpbnN0YW5jaWEgZGVsIHNlcnZpY2lvIGRlIHBlcnNvbmFzXG4gICAqIEBwYXJhbSB7SUZpc2NhbGFwaUh0dHBDbGllbnR9IGh0dHBDbGllbnQgLSBDbGllbnRlIEhUVFBcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFwaVZlcnNpb24gLSBWZXJzacOzbiBkZSBsYSBBUElcbiAgICovXG4gIGNvbnN0cnVjdG9yKGh0dHBDbGllbnQ6IElGaXNjYWxhcGlIdHRwQ2xpZW50LCBhcGlWZXJzaW9uOiBzdHJpbmcpIHtcbiAgICBzdXBlcihodHRwQ2xpZW50LCAncGVvcGxlJywgYXBpVmVyc2lvbik7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProductService = void 0;
4
+ const base_fiscalapi_service_1 = require("./base-fiscalapi-service");
5
+ /**
6
+ * Implementación del servicio de productos
7
+ */
8
+ class ProductService extends base_fiscalapi_service_1.BaseFiscalapiService {
9
+ /**
10
+ * Crea una nueva instancia del servicio de productos
11
+ * @param {IFiscalapiHttpClient} httpClient - Cliente HTTP
12
+ * @param {string} apiVersion - Versión de la API
13
+ */
14
+ constructor(httpClient, apiVersion) {
15
+ super(httpClient, 'products', apiVersion);
16
+ }
17
+ }
18
+ exports.ProductService = ProductService;
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3Byb2R1Y3Qtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxxRUFBZ0U7QUFHaEU7O0dBRUc7QUFDSCxNQUFhLGNBQWUsU0FBUSw2Q0FBNkI7SUFDL0Q7Ozs7T0FJRztJQUNILFlBQVksVUFBZ0MsRUFBRSxVQUFrQjtRQUM5RCxLQUFLLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0Y7QUFURCx3Q0FTQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2R1Y3QgfSBmcm9tICcuLi9tb2RlbHMvcHJvZHVjdCc7XG5pbXBvcnQgeyBJRmlzY2FsYXBpSHR0cENsaWVudCB9IGZyb20gJy4uL2h0dHAvZmlzY2FsYXBpLWh0dHAtY2xpZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYXNlRmlzY2FsYXBpU2VydmljZSB9IGZyb20gJy4vYmFzZS1maXNjYWxhcGktc2VydmljZSc7XG5pbXBvcnQgeyBJUHJvZHVjdFNlcnZpY2UgfSBmcm9tICcuLic7XG5cbi8qKlxuICogSW1wbGVtZW50YWNpw7NuIGRlbCBzZXJ2aWNpbyBkZSBwcm9kdWN0b3NcbiAqL1xuZXhwb3J0IGNsYXNzIFByb2R1Y3RTZXJ2aWNlIGV4dGVuZHMgQmFzZUZpc2NhbGFwaVNlcnZpY2U8UHJvZHVjdD4gaW1wbGVtZW50cyBJUHJvZHVjdFNlcnZpY2Uge1xuICAvKipcbiAgICogQ3JlYSB1bmEgbnVldmEgaW5zdGFuY2lhIGRlbCBzZXJ2aWNpbyBkZSBwcm9kdWN0b3NcbiAgICogQHBhcmFtIHtJRmlzY2FsYXBpSHR0cENsaWVudH0gaHR0cENsaWVudCAtIENsaWVudGUgSFRUUFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBpVmVyc2lvbiAtIFZlcnNpw7NuIGRlIGxhIEFQSVxuICAgKi9cbiAgY29uc3RydWN0b3IoaHR0cENsaWVudDogSUZpc2NhbGFwaUh0dHBDbGllbnQsIGFwaVZlcnNpb246IHN0cmluZykge1xuICAgIHN1cGVyKGh0dHBDbGllbnQsICdwcm9kdWN0cycsIGFwaVZlcnNpb24pO1xuICB9XG59Il19
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaxFileService = void 0;
4
+ const base_fiscalapi_service_1 = require("./base-fiscalapi-service");
5
+ /**
6
+ * Implementación del servicio de archivos fiscales
7
+ */
8
+ class TaxFileService extends base_fiscalapi_service_1.BaseFiscalapiService {
9
+ /**
10
+ * Crea una nueva instancia del servicio de archivos fiscales
11
+ * @param {IFiscalapiHttpClient} httpClient - Cliente HTTP
12
+ * @param {string} apiVersion - Versión de la API
13
+ */
14
+ constructor(httpClient, apiVersion) {
15
+ super(httpClient, 'tax-files', apiVersion);
16
+ }
17
+ /**
18
+ * Obtiene el último par de ids de certificados válidos y vigente de una persona. Es decir sus certificados por defecto (ids)
19
+ *
20
+ * @param personId - Id de la persona propietaria de los certificados
21
+ * @returns Promise que resuelve en una respuesta API con una lista de un par de certificados, pero sin contenido, solo sus Ids
22
+ */
23
+ async getDefaultReferences(personId) {
24
+ // GET /api/v4/tax-files/{personId}/default-references
25
+ const path = `${personId}/default-references`;
26
+ const endpoint = this.buildEndpoint(path);
27
+ return this.httpClient.getAsync(endpoint);
28
+ }
29
+ /**
30
+ * Obtiene el último par de certificados válidos y vigente de una persona. Es decir sus certificados por defecto
31
+ *
32
+ * @param personId - Id de la persona dueña de los certificados
33
+ * @returns Promise que resuelve en una respuesta API con una lista de un par de certificados
34
+ */
35
+ async getDefaultValues(personId) {
36
+ // GET /api/v4/tax-files/{personId}/default-values
37
+ const path = `${personId}/default-values`;
38
+ const endpoint = this.buildEndpoint(path);
39
+ return this.httpClient.getAsync(endpoint);
40
+ }
41
+ }
42
+ exports.TaxFileService = TaxFileService;
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LWZpbGUtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy90YXgtZmlsZS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHFFQUFnRTtBQUdoRTs7R0FFRztBQUNILE1BQWEsY0FBZSxTQUFRLDZDQUE2QjtJQUMvRDs7OztPQUlHO0lBQ0gsWUFBWSxVQUFnQyxFQUFFLFVBQWtCO1FBQzlELEtBQUssQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFHQzs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxRQUFnQjtRQUN6QyxzREFBc0Q7UUFDdEQsTUFBTSxJQUFJLEdBQUcsR0FBRyxRQUFRLHFCQUFxQixDQUFDO1FBQzlDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBWSxRQUFRLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7O01BS0U7SUFDSyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsUUFBZ0I7UUFDNUMsa0RBQWtEO1FBQ2xELE1BQU0sSUFBSSxHQUFHLEdBQUcsUUFBUSxpQkFBaUIsQ0FBQztRQUMxQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQVksUUFBUSxDQUFDLENBQUM7SUFDdkQsQ0FBQztDQUNKO0FBcENELHdDQW9DQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRheEZpbGUgfSBmcm9tICcuLi9tb2RlbHMvdGF4LWZpbGUnO1xuaW1wb3J0IHsgSUZpc2NhbGFwaUh0dHBDbGllbnQgfSBmcm9tICcuLi9odHRwL2Zpc2NhbGFwaS1odHRwLWNsaWVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXBpUmVzcG9uc2UgfSBmcm9tICcuLi9jb21tb24vYXBpLXJlc3BvbnNlJztcbmltcG9ydCB7IEZpbGVSZXNwb25zZSB9IGZyb20gJy4uL2NvbW1vbi9maWxlLXJlc3BvbnNlJztcbmltcG9ydCB7IEJhc2VGaXNjYWxhcGlTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlLWZpc2NhbGFwaS1zZXJ2aWNlJztcbmltcG9ydCB7IElUYXhGaWxlU2VydmljZSB9IGZyb20gJy4uJztcblxuLyoqXG4gKiBJbXBsZW1lbnRhY2nDs24gZGVsIHNlcnZpY2lvIGRlIGFyY2hpdm9zIGZpc2NhbGVzXG4gKi9cbmV4cG9ydCBjbGFzcyBUYXhGaWxlU2VydmljZSBleHRlbmRzIEJhc2VGaXNjYWxhcGlTZXJ2aWNlPFRheEZpbGU+IGltcGxlbWVudHMgSVRheEZpbGVTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIENyZWEgdW5hIG51ZXZhIGluc3RhbmNpYSBkZWwgc2VydmljaW8gZGUgYXJjaGl2b3MgZmlzY2FsZXNcbiAgICogQHBhcmFtIHtJRmlzY2FsYXBpSHR0cENsaWVudH0gaHR0cENsaWVudCAtIENsaWVudGUgSFRUUFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBpVmVyc2lvbiAtIFZlcnNpw7NuIGRlIGxhIEFQSVxuICAgKi9cbiAgY29uc3RydWN0b3IoaHR0cENsaWVudDogSUZpc2NhbGFwaUh0dHBDbGllbnQsIGFwaVZlcnNpb246IHN0cmluZykge1xuICAgIHN1cGVyKGh0dHBDbGllbnQsICd0YXgtZmlsZXMnLCBhcGlWZXJzaW9uKTtcbiAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBPYnRpZW5lIGVsIMO6bHRpbW8gcGFyIGRlIGlkcyBkZSBjZXJ0aWZpY2Fkb3MgdsOhbGlkb3MgeSB2aWdlbnRlIGRlIHVuYSBwZXJzb25hLiBFcyBkZWNpciBzdXMgY2VydGlmaWNhZG9zIHBvciBkZWZlY3RvIChpZHMpXG4gICAgICogXG4gICAgICogQHBhcmFtIHBlcnNvbklkIC0gSWQgZGUgbGEgcGVyc29uYSBwcm9waWV0YXJpYSBkZSBsb3MgY2VydGlmaWNhZG9zXG4gICAgICogQHJldHVybnMgUHJvbWlzZSBxdWUgcmVzdWVsdmUgZW4gdW5hIHJlc3B1ZXN0YSBBUEkgY29uIHVuYSBsaXN0YSBkZSB1biBwYXIgZGUgY2VydGlmaWNhZG9zLCBwZXJvIHNpbiBjb250ZW5pZG8sIHNvbG8gc3VzIElkc1xuICAgICAqL1xuICAgIGFzeW5jIGdldERlZmF1bHRSZWZlcmVuY2VzKHBlcnNvbklkOiBzdHJpbmcpOiBQcm9taXNlPEFwaVJlc3BvbnNlPFRheEZpbGVbXT4+IHtcbiAgICAgIC8vIEdFVCAvYXBpL3Y0L3RheC1maWxlcy97cGVyc29uSWR9L2RlZmF1bHQtcmVmZXJlbmNlc1xuICAgICAgY29uc3QgcGF0aCA9IGAke3BlcnNvbklkfS9kZWZhdWx0LXJlZmVyZW5jZXNgO1xuICAgICAgY29uc3QgZW5kcG9pbnQgPSB0aGlzLmJ1aWxkRW5kcG9pbnQocGF0aCk7XG4gICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldEFzeW5jPFRheEZpbGVbXT4oZW5kcG9pbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICogT2J0aWVuZSBlbCDDumx0aW1vIHBhciBkZSBjZXJ0aWZpY2Fkb3MgdsOhbGlkb3MgeSB2aWdlbnRlIGRlIHVuYSBwZXJzb25hLiBFcyBkZWNpciBzdXMgY2VydGlmaWNhZG9zIHBvciBkZWZlY3RvXG4gICAgKiBcbiAgICAqIEBwYXJhbSBwZXJzb25JZCAtIElkIGRlIGxhIHBlcnNvbmEgZHVlw7FhIGRlIGxvcyBjZXJ0aWZpY2Fkb3NcbiAgICAqIEByZXR1cm5zIFByb21pc2UgcXVlIHJlc3VlbHZlIGVuIHVuYSByZXNwdWVzdGEgQVBJIGNvbiB1bmEgbGlzdGEgZGUgdW4gcGFyIGRlIGNlcnRpZmljYWRvc1xuICAgICovXG4gICAgcHVibGljIGFzeW5jIGdldERlZmF1bHRWYWx1ZXMocGVyc29uSWQ6IHN0cmluZyk6IFByb21pc2U8QXBpUmVzcG9uc2U8VGF4RmlsZVtdPj4ge1xuICAgICAgLy8gR0VUIC9hcGkvdjQvdGF4LWZpbGVzL3twZXJzb25JZH0vZGVmYXVsdC12YWx1ZXNcbiAgICAgIGNvbnN0IHBhdGggPSBgJHtwZXJzb25JZH0vZGVmYXVsdC12YWx1ZXNgO1xuICAgICAgY29uc3QgZW5kcG9pbnQgPSB0aGlzLmJ1aWxkRW5kcG9pbnQocGF0aCk7XG4gICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldEFzeW5jPFRheEZpbGVbXT4oZW5kcG9pbnQpO1xuICAgIH1cbn0iXX0=
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SAT_DATE_FORMAT = void 0;
4
+ exports.formatSatDate = formatSatDate;
5
+ exports.parseSatDate = parseSatDate;
6
+ const luxon_1 = require("luxon");
7
+ /**
8
+ * Formato de fecha SAT (para facturas mexicanas)
9
+ */
10
+ exports.SAT_DATE_FORMAT = 'yyyy-MM-dd\'T\'HH:mm:ss';
11
+ /**
12
+ * Formatea una fecha de acuerdo al formato de fecha SAT
13
+ * @param {Date|string|DateTime} date - Fecha a formatear
14
+ * @returns {string} Cadena de fecha formateada
15
+ */
16
+ function formatSatDate(date) {
17
+ if (typeof date === 'string') {
18
+ return luxon_1.DateTime.fromISO(date).toFormat(exports.SAT_DATE_FORMAT);
19
+ }
20
+ else if (date instanceof Date) {
21
+ return luxon_1.DateTime.fromJSDate(date).toFormat(exports.SAT_DATE_FORMAT);
22
+ }
23
+ else if (date instanceof luxon_1.DateTime) {
24
+ return date.toFormat(exports.SAT_DATE_FORMAT);
25
+ }
26
+ throw new Error('Formato de fecha inválido');
27
+ }
28
+ /**
29
+ * Analiza una cadena de formato de fecha SAT en un objeto DateTime
30
+ * @param {string} dateStr - Cadena de fecha en formato SAT
31
+ * @returns {DateTime} Objeto DateTime
32
+ */
33
+ function parseSatDate(dateStr) {
34
+ return luxon_1.DateTime.fromFormat(dateStr, exports.SAT_DATE_FORMAT);
35
+ }
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9kYXRlLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWNBLHNDQVVDO0FBT0Qsb0NBRUc7QUFoQ0gsaUNBQWlDO0FBR2pDOztHQUVHO0FBQ1UsUUFBQSxlQUFlLEdBQUcseUJBQXlCLENBQUM7QUFFekQ7Ozs7R0FJRztBQUNILFNBQWdCLGFBQWEsQ0FBQyxJQUE4QjtJQUMxRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzdCLE9BQU8sZ0JBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLHVCQUFlLENBQUMsQ0FBQztJQUMxRCxDQUFDO1NBQU0sSUFBSSxJQUFJLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDaEMsT0FBTyxnQkFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsdUJBQWUsQ0FBQyxDQUFDO0lBQzdELENBQUM7U0FBTSxJQUFJLElBQUksWUFBWSxnQkFBUSxFQUFFLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLHVCQUFlLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLE9BQWU7SUFDeEMsT0FBTyxnQkFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsdUJBQWUsQ0FBQyxDQUFDO0FBQ3ZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIgXG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gJ2x1eG9uJztcblxuXG4vKipcbiAqIEZvcm1hdG8gZGUgZmVjaGEgU0FUIChwYXJhIGZhY3R1cmFzIG1leGljYW5hcylcbiAqL1xuZXhwb3J0IGNvbnN0IFNBVF9EQVRFX0ZPUk1BVCA9ICd5eXl5LU1NLWRkXFwnVFxcJ0hIOm1tOnNzJztcblxuLyoqXG4gKiBGb3JtYXRlYSB1bmEgZmVjaGEgZGUgYWN1ZXJkbyBhbCBmb3JtYXRvIGRlIGZlY2hhIFNBVFxuICogQHBhcmFtIHtEYXRlfHN0cmluZ3xEYXRlVGltZX0gZGF0ZSAtIEZlY2hhIGEgZm9ybWF0ZWFyXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBDYWRlbmEgZGUgZmVjaGEgZm9ybWF0ZWFkYVxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0U2F0RGF0ZShkYXRlOiBEYXRlIHwgc3RyaW5nIHwgRGF0ZVRpbWUpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIERhdGVUaW1lLmZyb21JU08oZGF0ZSkudG9Gb3JtYXQoU0FUX0RBVEVfRk9STUFUKTtcbiAgfSBlbHNlIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBEYXRlVGltZS5mcm9tSlNEYXRlKGRhdGUpLnRvRm9ybWF0KFNBVF9EQVRFX0ZPUk1BVCk7XG4gIH0gZWxzZSBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGVUaW1lKSB7XG4gICAgcmV0dXJuIGRhdGUudG9Gb3JtYXQoU0FUX0RBVEVfRk9STUFUKTtcbiAgfVxuICBcbiAgdGhyb3cgbmV3IEVycm9yKCdGb3JtYXRvIGRlIGZlY2hhIGludsOhbGlkbycpO1xufVxuXG4vKipcbiAqIEFuYWxpemEgdW5hIGNhZGVuYSBkZSBmb3JtYXRvIGRlIGZlY2hhIFNBVCBlbiB1biBvYmpldG8gRGF0ZVRpbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRlU3RyIC0gQ2FkZW5hIGRlIGZlY2hhIGVuIGZvcm1hdG8gU0FUXG4gKiBAcmV0dXJucyB7RGF0ZVRpbWV9IE9iamV0byBEYXRlVGltZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTYXREYXRlKGRhdGVTdHI6IHN0cmluZyk6IERhdGVUaW1lIHtcbiAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbUZvcm1hdChkYXRlU3RyLCBTQVRfREFURV9GT1JNQVQpO1xuICB9XG4gICJdfQ==
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encodeToBase64 = encodeToBase64;
4
+ exports.decodeFromBase64 = decodeFromBase64;
5
+ /**
6
+ * Codifica una cadena a base64
7
+ * @param {string} text - Texto a codificar
8
+ * @returns {string} Cadena codificada en base64
9
+ */
10
+ function encodeToBase64(text) {
11
+ return Buffer.from(text).toString('base64');
12
+ }
13
+ /**
14
+ * Decodifica una cadena base64
15
+ * @param {string} base64Text - Cadena codificada en base64
16
+ * @returns {string} Cadena decodificada
17
+ */
18
+ function decodeFromBase64(base64Text) {
19
+ return Buffer.from(base64Text, 'base64').toString('utf8');
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RpbmctdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvZW5jb2RpbmctdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFNQSx3Q0FFRztBQU9ELDRDQUVDO0FBaEJIOzs7O0dBSUc7QUFDSCxTQUFnQixjQUFjLENBQUMsSUFBWTtJQUN2QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsVUFBa0I7SUFDakQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiBcbi8qKlxuICogQ29kaWZpY2EgdW5hIGNhZGVuYSBhIGJhc2U2NFxuICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBUZXh0byBhIGNvZGlmaWNhclxuICogQHJldHVybnMge3N0cmluZ30gQ2FkZW5hIGNvZGlmaWNhZGEgZW4gYmFzZTY0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVUb0Jhc2U2NCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh0ZXh0KS50b1N0cmluZygnYmFzZTY0Jyk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBEZWNvZGlmaWNhIHVuYSBjYWRlbmEgYmFzZTY0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlNjRUZXh0IC0gQ2FkZW5hIGNvZGlmaWNhZGEgZW4gYmFzZTY0XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IENhZGVuYSBkZWNvZGlmaWNhZGFcbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBkZWNvZGVGcm9tQmFzZTY0KGJhc2U2NFRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGJhc2U2NFRleHQsICdiYXNlNjQnKS50b1N0cmluZygndXRmOCcpO1xuICB9Il19