fiscalapi 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +373 -0
- package/README.md +388 -0
- package/dist/cjs/abstractions/api-key-service.interface.js +3 -0
- package/dist/cjs/abstractions/catalog-service.interface.js +3 -0
- package/dist/cjs/abstractions/fiscalapi-client.interface.js +3 -0
- package/dist/cjs/abstractions/fiscalapi-service.interface.js +3 -0
- package/dist/cjs/abstractions/invoice-service.interface.js +3 -0
- package/dist/cjs/abstractions/person-service.interface.js +3 -0
- package/dist/cjs/abstractions/product-service.interface.js +3 -0
- package/dist/cjs/abstractions/tax-file-service.interface.js +3 -0
- package/dist/cjs/common/api-response.js +3 -0
- package/dist/cjs/common/auditable-dto.js +11 -0
- package/dist/cjs/common/base-dto.js +11 -0
- package/dist/cjs/common/catalog-dto.js +8 -0
- package/dist/cjs/common/file-response.js +3 -0
- package/dist/cjs/common/fiscalapi-settings.js +3 -0
- package/dist/cjs/common/paged-list.js +18 -0
- package/dist/cjs/common/serializable-dto.js +37 -0
- package/dist/cjs/http/fiscalapi-http-client-factory.js +66 -0
- package/dist/cjs/http/fiscalapi-http-client.interface.js +3 -0
- package/dist/cjs/http/fiscalapi-http-client.js +306 -0
- package/dist/cjs/index.js +31 -0
- package/dist/cjs/models/api-key.js +3 -0
- package/dist/cjs/models/invoice.js +3 -0
- package/dist/cjs/models/person.js +3 -0
- package/dist/cjs/models/product.js +3 -0
- package/dist/cjs/models/tax-file.js +3 -0
- package/dist/cjs/sdk-constants.js +25 -0
- package/dist/cjs/services/api-key-service.js +19 -0
- package/dist/cjs/services/base-fiscalapi-service.js +170 -0
- package/dist/cjs/services/catalog-service.js +51 -0
- package/dist/cjs/services/fiscalapi-client.js +67 -0
- package/dist/cjs/services/invoice-service.js +116 -0
- package/dist/cjs/services/person-service.js +19 -0
- package/dist/cjs/services/product-service.js +19 -0
- package/dist/cjs/services/tax-file-service.js +43 -0
- package/dist/cjs/utils/date-utils.js +36 -0
- package/dist/cjs/utils/encoding-utils.js +21 -0
- package/dist/cjs/utils/validation-utils.js +40 -0
- package/dist/esm/abstractions/api-key-service.interface.js +2 -0
- package/dist/esm/abstractions/catalog-service.interface.js +2 -0
- package/dist/esm/abstractions/fiscalapi-client.interface.js +2 -0
- package/dist/esm/abstractions/fiscalapi-service.interface.js +2 -0
- package/dist/esm/abstractions/invoice-service.interface.js +2 -0
- package/dist/esm/abstractions/person-service.interface.js +2 -0
- package/dist/esm/abstractions/product-service.interface.js +2 -0
- package/dist/esm/abstractions/tax-file-service.interface.js +2 -0
- package/dist/esm/common/api-response.js +2 -0
- package/dist/esm/common/auditable-dto.js +7 -0
- package/dist/esm/common/base-dto.js +7 -0
- package/dist/esm/common/catalog-dto.js +4 -0
- package/dist/esm/common/file-response.js +2 -0
- package/dist/esm/common/fiscalapi-settings.js +2 -0
- package/dist/esm/common/paged-list.js +14 -0
- package/dist/esm/common/serializable-dto.js +33 -0
- package/dist/esm/http/fiscalapi-http-client-factory.js +59 -0
- package/dist/esm/http/fiscalapi-http-client.interface.js +2 -0
- package/dist/esm/http/fiscalapi-http-client.js +302 -0
- package/dist/esm/index.js +13 -0
- package/dist/esm/models/api-key.js +2 -0
- package/dist/esm/models/invoice.js +2 -0
- package/dist/esm/models/person.js +2 -0
- package/dist/esm/models/product.js +2 -0
- package/dist/esm/models/tax-file.js +2 -0
- package/dist/esm/sdk-constants.js +22 -0
- package/dist/esm/services/api-key-service.js +15 -0
- package/dist/esm/services/base-fiscalapi-service.js +166 -0
- package/dist/esm/services/catalog-service.js +47 -0
- package/dist/esm/services/fiscalapi-client.js +63 -0
- package/dist/esm/services/invoice-service.js +112 -0
- package/dist/esm/services/person-service.js +15 -0
- package/dist/esm/services/product-service.js +15 -0
- package/dist/esm/services/tax-file-service.js +39 -0
- package/dist/esm/utils/date-utils.js +31 -0
- package/dist/esm/utils/encoding-utils.js +17 -0
- package/dist/esm/utils/validation-utils.js +34 -0
- package/dist/types/abstractions/api-key-service.interface.d.ts +7 -0
- package/dist/types/abstractions/catalog-service.interface.d.ts +27 -0
- package/dist/types/abstractions/fiscalapi-client.interface.d.ts +35 -0
- package/dist/types/abstractions/fiscalapi-service.interface.d.ts +94 -0
- package/dist/types/abstractions/invoice-service.interface.d.ts +39 -0
- package/dist/types/abstractions/person-service.interface.d.ts +7 -0
- package/dist/types/abstractions/product-service.interface.d.ts +7 -0
- package/dist/types/abstractions/tax-file-service.interface.d.ts +22 -0
- package/dist/types/common/api-response.d.ts +56 -0
- package/dist/types/common/auditable-dto.d.ts +9 -0
- package/dist/types/common/base-dto.d.ts +7 -0
- package/dist/types/common/catalog-dto.d.ts +8 -0
- package/dist/types/common/file-response.d.ts +18 -0
- package/dist/types/common/fiscalapi-settings.d.ts +30 -0
- package/dist/types/common/paged-list.d.ts +39 -0
- package/dist/types/common/serializable-dto.d.ts +10 -0
- package/dist/types/http/fiscalapi-http-client-factory.d.ts +22 -0
- package/dist/types/http/fiscalapi-http-client.d.ts +113 -0
- package/dist/types/http/fiscalapi-http-client.interface.d.ts +80 -0
- package/dist/types/index.d.ts +25 -0
- package/dist/types/models/api-key.d.ts +21 -0
- package/dist/types/models/invoice.d.ts +337 -0
- package/dist/types/models/person.d.ts +42 -0
- package/dist/types/models/product.d.ts +49 -0
- package/dist/types/models/tax-file.d.ts +23 -0
- package/dist/types/sdk-constants.d.ts +21 -0
- package/dist/types/services/api-key-service.d.ts +15 -0
- package/dist/types/services/base-fiscalapi-service.d.ts +72 -0
- package/dist/types/services/catalog-service.d.ts +34 -0
- package/dist/types/services/fiscalapi-client.d.ts +49 -0
- package/dist/types/services/invoice-service.d.ts +54 -0
- package/dist/types/services/person-service.d.ts +15 -0
- package/dist/types/services/product-service.d.ts +15 -0
- package/dist/types/services/tax-file-service.d.ts +30 -0
- package/dist/types/utils/date-utils.d.ts +17 -0
- package/dist/types/utils/encoding-utils.d.ts +12 -0
- package/dist/types/utils/validation-utils.d.ts +25 -0
- package/fiscalapi.ico +0 -0
- package/fiscalapi.png +0 -0
- package/package.json +64 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Implementación base de un servicio de FiscalAPI
|
|
3
|
+
* @template T - Tipo de DTO que maneja el servicio
|
|
4
|
+
*/
|
|
5
|
+
export class BaseFiscalapiService {
|
|
6
|
+
/**
|
|
7
|
+
* Crea una nueva instancia del servicio base
|
|
8
|
+
* @param {IFiscalapiHttpClient} httpClient - Cliente HTTP
|
|
9
|
+
* @param {string} resourcePath - Ruta del recurso en la API
|
|
10
|
+
* @param {string} apiVersion - Versión de la API
|
|
11
|
+
*/
|
|
12
|
+
constructor(httpClient, resourcePath, apiVersion) {
|
|
13
|
+
if (!httpClient)
|
|
14
|
+
throw new Error('httpClient no puede ser nulo o indefinido');
|
|
15
|
+
if (!resourcePath)
|
|
16
|
+
throw new Error('resourcePath no puede ser nulo o indefinido');
|
|
17
|
+
if (!apiVersion)
|
|
18
|
+
throw new Error('apiVersion no puede ser nulo o indefinido');
|
|
19
|
+
this.httpClient = httpClient;
|
|
20
|
+
this.resourcePath = resourcePath;
|
|
21
|
+
this.apiVersion = apiVersion;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Construye una URL de endpoint de API
|
|
25
|
+
* @param {string} [path=''] - Segmento de ruta opcional
|
|
26
|
+
* @param {Record<string, string>} [queryParams] - Parámetros de consulta opcionales
|
|
27
|
+
* @returns {string} URL del endpoint
|
|
28
|
+
* @protected
|
|
29
|
+
*/
|
|
30
|
+
buildEndpoint(path = '', queryParams) {
|
|
31
|
+
let baseEndpoint = `api/${this.apiVersion}/${this.resourcePath}`;
|
|
32
|
+
if (path) {
|
|
33
|
+
baseEndpoint += `/${path}`;
|
|
34
|
+
}
|
|
35
|
+
if (queryParams && Object.keys(queryParams).length > 0) {
|
|
36
|
+
const queryString = Object.entries(queryParams)
|
|
37
|
+
.filter(([key]) => key)
|
|
38
|
+
.map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
|
|
39
|
+
.join('&');
|
|
40
|
+
baseEndpoint += `?${queryString}`;
|
|
41
|
+
}
|
|
42
|
+
return baseEndpoint;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Convierte los parámetros de consulta a un objeto compatible con la configuración de Axios
|
|
46
|
+
* @param {Record<string, string>} queryParams - Parámetros de consulta
|
|
47
|
+
* @returns {AxiosRequestConfig} Configuración de Axios con los parámetros
|
|
48
|
+
* @protected
|
|
49
|
+
*/
|
|
50
|
+
createConfigWithParams(queryParams) {
|
|
51
|
+
return queryParams ? { params: queryParams } : {};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Ejecuta una petición HTTP personalizada con máxima flexibilidad
|
|
55
|
+
* @param {RequestOptions<TData>} options - Opciones para la petición
|
|
56
|
+
* @returns {Promise<ApiResponse<TResult>>} Resultado de la petición
|
|
57
|
+
* @template TResult - Tipo de resultado esperado
|
|
58
|
+
* @template TData - Tipo de datos de entrada
|
|
59
|
+
*/
|
|
60
|
+
async executeRequest(options) {
|
|
61
|
+
try {
|
|
62
|
+
// Extraer opciones
|
|
63
|
+
const { method, path = '', id, data, queryParams = {}, config = {}, responseTransformer } = options;
|
|
64
|
+
// Construir el endpoint completo
|
|
65
|
+
let endpoint = '';
|
|
66
|
+
// Si se proporciona un ID, lo añadimos a la ruta
|
|
67
|
+
if (id) {
|
|
68
|
+
endpoint = this.buildEndpoint(`${path ? `${path}/` : ''}${id}`, queryParams);
|
|
69
|
+
}
|
|
70
|
+
else if (path) {
|
|
71
|
+
endpoint = this.buildEndpoint(path, queryParams);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
endpoint = this.buildEndpoint('', queryParams);
|
|
75
|
+
}
|
|
76
|
+
// Ejecutar la petición a través del cliente HTTP
|
|
77
|
+
return this.httpClient.executeRequest(method, endpoint, {
|
|
78
|
+
data,
|
|
79
|
+
config,
|
|
80
|
+
responseTransformer
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
// Manejo centralizado de errores
|
|
85
|
+
console.error(`Error al ejecutar petición personalizada:`, error);
|
|
86
|
+
// Convertir el error en una respuesta de error estándar
|
|
87
|
+
if (error instanceof Error) {
|
|
88
|
+
const errorResponse = {
|
|
89
|
+
succeeded: false,
|
|
90
|
+
data: null,
|
|
91
|
+
message: `Error al ejecutar petición: ${error.message}`,
|
|
92
|
+
details: JSON.stringify({
|
|
93
|
+
code: 'REQUEST_ERROR',
|
|
94
|
+
message: error.message
|
|
95
|
+
}),
|
|
96
|
+
httpStatusCode: 500
|
|
97
|
+
};
|
|
98
|
+
return errorResponse;
|
|
99
|
+
}
|
|
100
|
+
throw error;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* @inheritdoc
|
|
105
|
+
*/
|
|
106
|
+
async getList(pageNumber, pageSize) {
|
|
107
|
+
const queryParams = {
|
|
108
|
+
PageNumber: pageNumber.toString(),
|
|
109
|
+
PageSize: pageSize.toString()
|
|
110
|
+
};
|
|
111
|
+
return this.executeRequest({
|
|
112
|
+
method: 'GET',
|
|
113
|
+
queryParams
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* @inheritdoc
|
|
118
|
+
*/
|
|
119
|
+
async getById(id, details = false) {
|
|
120
|
+
const queryParams = details ? { details: details.toString().toLowerCase() } : undefined;
|
|
121
|
+
return this.executeRequest({
|
|
122
|
+
method: 'GET',
|
|
123
|
+
id,
|
|
124
|
+
queryParams
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* @inheritdoc
|
|
129
|
+
*/
|
|
130
|
+
async create(model) {
|
|
131
|
+
return this.executeRequest({
|
|
132
|
+
method: 'POST',
|
|
133
|
+
data: model
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* @inheritdoc
|
|
138
|
+
*/
|
|
139
|
+
async update(model) {
|
|
140
|
+
return this.executeRequest({
|
|
141
|
+
method: 'PUT',
|
|
142
|
+
id: model.id,
|
|
143
|
+
data: model
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* @inheritdoc
|
|
148
|
+
*/
|
|
149
|
+
async delete(id) {
|
|
150
|
+
return this.executeRequest({
|
|
151
|
+
method: 'DELETE',
|
|
152
|
+
id
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* @inheritdoc
|
|
157
|
+
*/
|
|
158
|
+
async search(searchParams) {
|
|
159
|
+
return this.executeRequest({
|
|
160
|
+
method: 'GET',
|
|
161
|
+
path: 'search',
|
|
162
|
+
queryParams: searchParams
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1maXNjYWxhcGktc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9iYXNlLWZpc2NhbGFwaS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BOzs7R0FHRztBQUNILE1BQU0sT0FBZ0Isb0JBQW9CO0lBVXhDOzs7OztPQUtHO0lBQ0gsWUFBWSxVQUFnQyxFQUFFLFlBQW9CLEVBQUUsVUFBa0I7UUFDcEYsSUFBSSxDQUFDLFVBQVU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLFlBQVk7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7UUFDbEYsSUFBSSxDQUFDLFVBQVU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFFOUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNPLGFBQWEsQ0FBQyxPQUFlLEVBQUUsRUFBRSxXQUFvQztRQUM3RSxJQUFJLFlBQVksR0FBRyxPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRWpFLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxZQUFZLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBRUQsSUFBSSxXQUFXLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7aUJBQzVDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FB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QUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBeGlvc1JlcXVlc3RDb25maWcgfSBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBCYXNlRHRvIH0gZnJvbSAnLi4vY29tbW9uL2Jhc2UtZHRvJztcbmltcG9ydCB7IEFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vY29tbW9uL2FwaS1yZXNwb25zZSc7XG5pbXBvcnQgeyBQYWdlZExpc3QgfSBmcm9tICcuLi9jb21tb24vcGFnZWQtbGlzdCc7XG5pbXBvcnQgeyBJRmlzY2FsYXBpSHR0cENsaWVudCwgSHR0cE1ldGhvZCB9IGZyb20gJy4uL2h0dHAvZmlzY2FsYXBpLWh0dHAtY2xpZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRmlzY2FsYXBpU2VydmljZSwgT3BlcmF0aW9uT3B0aW9ucywgUmVxdWVzdE9wdGlvbnMgfSBmcm9tICcuLi9hYnN0cmFjdGlvbnMvZmlzY2FsYXBpLXNlcnZpY2UuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBJbXBsZW1lbnRhY2nDs24gYmFzZSBkZSB1biBzZXJ2aWNpbyBkZSBGaXNjYWxBUElcbiAqIEB0ZW1wbGF0ZSBUIC0gVGlwbyBkZSBEVE8gcXVlIG1hbmVqYSBlbCBzZXJ2aWNpb1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUZpc2NhbGFwaVNlcnZpY2U8VCBleHRlbmRzIEJhc2VEdG8+IGltcGxlbWVudHMgSUZpc2NhbGFwaVNlcnZpY2U8VD4ge1xuICAvKiogQ2xpZW50ZSBIVFRQICovXG4gIHByb3RlY3RlZCByZWFkb25seSBodHRwQ2xpZW50OiBJRmlzY2FsYXBpSHR0cENsaWVudDtcbiAgXG4gIC8qKiBSdXRhIGRlbCByZWN1cnNvICovXG4gIHByb3RlY3RlZCByZWFkb25seSByZXNvdXJjZVBhdGg6IHN0cmluZztcbiAgXG4gIC8qKiBWZXJzacOzbiBkZSBsYSBBUEkgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwaVZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlYSB1bmEgbnVldmEgaW5zdGFuY2lhIGRlbCBzZXJ2aWNpbyBiYXNlXG4gICAqIEBwYXJhbSB7SUZpc2NhbGFwaUh0dHBDbGllbnR9IGh0dHBDbGllbnQgLSBDbGllbnRlIEhUVFBcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlc291cmNlUGF0aCAtIFJ1dGEgZGVsIHJlY3Vyc28gZW4gbGEgQVBJXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcGlWZXJzaW9uIC0gVmVyc2nDs24gZGUgbGEgQVBJXG4gICAqL1xuICBjb25zdHJ1Y3RvcihodHRwQ2xpZW50OiBJRmlzY2FsYXBpSHR0cENsaWVudCwgcmVzb3VyY2VQYXRoOiBzdHJpbmcsIGFwaVZlcnNpb246IHN0cmluZykge1xuICAgIGlmICghaHR0cENsaWVudCkgdGhyb3cgbmV3IEVycm9yKCdodHRwQ2xpZW50IG5vIHB1ZWRlIHNlciBudWxvIG8gaW5kZWZpbmlkbycpO1xuICAgIGlmICghcmVzb3VyY2VQYXRoKSB0aHJvdyBuZXcgRXJyb3IoJ3Jlc291cmNlUGF0aCBubyBwdWVkZSBzZXIgbnVsbyBvIGluZGVmaW5pZG8nKTtcbiAgICBpZiAoIWFwaVZlcnNpb24pIHRocm93IG5ldyBFcnJvcignYXBpVmVyc2lvbiBubyBwdWVkZSBzZXIgbnVsbyBvIGluZGVmaW5pZG8nKTtcbiAgICBcbiAgICB0aGlzLmh0dHBDbGllbnQgPSBodHRwQ2xpZW50O1xuICAgIHRoaXMucmVzb3VyY2VQYXRoID0gcmVzb3VyY2VQYXRoO1xuICAgIHRoaXMuYXBpVmVyc2lvbiA9IGFwaVZlcnNpb247XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydXllIHVuYSBVUkwgZGUgZW5kcG9pbnQgZGUgQVBJXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcGF0aD0nJ10gLSBTZWdtZW50byBkZSBydXRhIG9wY2lvbmFsXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgc3RyaW5nPn0gW3F1ZXJ5UGFyYW1zXSAtIFBhcsOhbWV0cm9zIGRlIGNvbnN1bHRhIG9wY2lvbmFsZXNcbiAgICogQHJldHVybnMge3N0cmluZ30gVVJMIGRlbCBlbmRwb2ludFxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgYnVpbGRFbmRwb2ludChwYXRoOiBzdHJpbmcgPSAnJywgcXVlcnlQYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogc3RyaW5nIHtcbiAgICBsZXQgYmFzZUVuZHBvaW50ID0gYGFwaS8ke3RoaXMuYXBpVmVyc2lvbn0vJHt0aGlzLnJlc291cmNlUGF0aH1gO1xuICAgIFxuICAgIGlmIChwYXRoKSB7XG4gICAgICBiYXNlRW5kcG9pbnQgKz0gYC8ke3BhdGh9YDtcbiAgICB9XG4gICAgXG4gICAgaWYgKHF1ZXJ5UGFyYW1zICYmIE9iamVjdC5rZXlzKHF1ZXJ5UGFyYW1zKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBxdWVyeVN0cmluZyA9IE9iamVjdC5lbnRyaWVzKHF1ZXJ5UGFyYW1zKVxuICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4ga2V5KVxuICAgICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IGAke2VuY29kZVVSSUNvbXBvbmVudChrZXkpfT0ke2VuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSl9YClcbiAgICAgICAgLmpvaW4oJyYnKTtcbiAgICAgIFxuICAgICAgYmFzZUVuZHBvaW50ICs9IGA/JHtxdWVyeVN0cmluZ31gO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gYmFzZUVuZHBvaW50O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZpZXJ0ZSBsb3MgcGFyw6FtZXRyb3MgZGUgY29uc3VsdGEgYSB1biBvYmpldG8gY29tcGF0aWJsZSBjb24gbGEgY29uZmlndXJhY2nDs24gZGUgQXhpb3NcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSBxdWVyeVBhcmFtcyAtIFBhcsOhbWV0cm9zIGRlIGNvbnN1bHRhXG4gICAqIEByZXR1cm5zIHtBeGlvc1JlcXVlc3RDb25maWd9IENvbmZpZ3VyYWNpw7NuIGRlIEF4aW9zIGNvbiBsb3MgcGFyw6FtZXRyb3NcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUNvbmZpZ1dpdGhQYXJhbXMocXVlcnlQYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogQXhpb3NSZXF1ZXN0Q29uZmlnIHtcbiAgICByZXR1cm4gcXVlcnlQYXJhbXMgPyB7IHBhcmFtczogcXVlcnlQYXJhbXMgfSA6IHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIEVqZWN1dGEgdW5hIHBldGljacOzbiBIVFRQIHBlcnNvbmFsaXphZGEgY29uIG3DoXhpbWEgZmxleGliaWxpZGFkXG4gICAqIEBwYXJhbSB7UmVxdWVzdE9wdGlvbnM8VERhdGE+fSBvcHRpb25zIC0gT3BjaW9uZXMgcGFyYSBsYSBwZXRpY2nDs25cbiAgICogQHJldHVybnMge1Byb21pc2U8QXBpUmVzcG9uc2U8VFJlc3VsdD4+fSBSZXN1bHRhZG8gZGUgbGEgcGV0aWNpw7NuXG4gICAqIEB0ZW1wbGF0ZSBUUmVzdWx0IC0gVGlwbyBkZSByZXN1bHRhZG8gZXNwZXJhZG9cbiAgICogQHRlbXBsYXRlIFREYXRhIC0gVGlwbyBkZSBkYXRvcyBkZSBlbnRyYWRhXG4gICAqL1xuICBhc3luYyBleGVjdXRlUmVxdWVzdDxUUmVzdWx0LCBURGF0YSA9IGFueT4oXG4gICAgb3B0aW9uczogUmVxdWVzdE9wdGlvbnM8VERhdGE+XG4gICk6IFByb21pc2U8QXBpUmVzcG9uc2U8VFJlc3VsdD4+IHtcbiAgICB0cnkge1xuICAgICAgLy8gRXh0cmFlciBvcGNpb25lc1xuICAgICAgY29uc3QgeyBcbiAgICAgICAgbWV0aG9kLCBcbiAgICAgICAgcGF0aCA9ICcnLCBcbiAgICAgICAgaWQsIFxuICAgICAgICBkYXRhLCBcbiAgICAgICAgcXVlcnlQYXJhbXMgPSB7fSwgXG4gICAgICAgIGNvbmZpZyA9IHt9LFxuICAgICAgICByZXNwb25zZVRyYW5zZm9ybWVyXG4gICAgICB9ID0gb3B0aW9ucztcbiAgICAgIFxuICAgICAgLy8gQ29uc3RydWlyIGVsIGVuZHBvaW50IGNvbXBsZXRvXG4gICAgICBsZXQgZW5kcG9pbnQgPSAnJztcbiAgICAgIFxuICAgICAgLy8gU2kgc2UgcHJvcG9yY2lvbmEgdW4gSUQsIGxvIGHDsWFkaW1vcyBhIGxhIHJ1dGFcbiAgICAgIGlmIChpZCkge1xuICAgICAgICBlbmRwb2ludCA9IHRoaXMuYnVpbGRFbmRwb2ludChgJHtwYXRoID8gYCR7cGF0aH0vYCA6ICcnfSR7aWR9YCwgcXVlcnlQYXJhbXMpO1xuICAgICAgfSBlbHNlIGlmIChwYXRoKSB7XG4gICAgICAgIGVuZHBvaW50ID0gdGhpcy5idWlsZEVuZHBvaW50KHBhdGgsIHF1ZXJ5UGFyYW1zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVuZHBvaW50ID0gdGhpcy5idWlsZEVuZHBvaW50KCcnLCBxdWVyeVBhcmFtcyk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIC8vIEVqZWN1dGFyIGxhIHBldGljacOzbiBhIHRyYXbDqXMgZGVsIGNsaWVudGUgSFRUUFxuICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5leGVjdXRlUmVxdWVzdDxUUmVzdWx0LCBURGF0YT4oXG4gICAgICAgIG1ldGhvZCxcbiAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgIHtcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICByZXNwb25zZVRyYW5zZm9ybWVyXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIE1hbmVqbyBjZW50cmFsaXphZG8gZGUgZXJyb3Jlc1xuICAgICAgY29uc29sZS5lcnJvcihgRXJyb3IgYWwgZWplY3V0YXIgcGV0aWNpw7NuIHBlcnNvbmFsaXphZGE6YCwgZXJyb3IpO1xuICAgICAgXG4gICAgICAvLyBDb252ZXJ0aXIgZWwgZXJyb3IgZW4gdW5hIHJlc3B1ZXN0YSBkZSBlcnJvciBlc3TDoW5kYXJcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIGNvbnN0IGVycm9yUmVzcG9uc2U6IEFwaVJlc3BvbnNlPFRSZXN1bHQ+ID0ge1xuICAgICAgICAgIHN1Y2NlZWRlZDogZmFsc2UsXG4gICAgICAgICAgZGF0YTogbnVsbCBhcyB1bmtub3duIGFzIFRSZXN1bHQsXG4gICAgICAgICAgbWVzc2FnZTogYEVycm9yIGFsIGVqZWN1dGFyIHBldGljacOzbjogJHtlcnJvci5tZXNzYWdlfWAsXG4gICAgICAgICAgZGV0YWlsczogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgY29kZTogJ1JFUVVFU1RfRVJST1InLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGh0dHBTdGF0dXNDb2RlOiA1MDBcbiAgICAgICAgfTtcbiAgICAgICAgXG4gICAgICAgIHJldHVybiBlcnJvclJlc3BvbnNlO1xuICAgICAgfVxuICAgICAgXG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cbiAgXG4gXG5cbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqL1xuICBhc3luYyBnZXRMaXN0KHBhZ2VOdW1iZXI6IG51bWJlciwgcGFnZVNpemU6IG51bWJlcik6IFByb21pc2U8QXBpUmVzcG9uc2U8UGFnZWRMaXN0PFQ+Pj4ge1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0ge1xuICAgICAgUGFnZU51bWJlcjogcGFnZU51bWJlci50b1N0cmluZygpLFxuICAgICAgUGFnZVNpemU6IHBhZ2VTaXplLnRvU3RyaW5nKClcbiAgICB9O1xuICAgIFxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVSZXF1ZXN0PFBhZ2VkTGlzdDxUPj4oe1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIHF1ZXJ5UGFyYW1zXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIGFzeW5jIGdldEJ5SWQoaWQ6IHN0cmluZywgZGV0YWlsczogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxBcGlSZXNwb25zZTxUPj4ge1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gZGV0YWlscyA/IHsgZGV0YWlsczogZGV0YWlscy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgfSA6IHVuZGVmaW5lZDtcbiAgICBcbiAgICByZXR1cm4gdGhpcy5leGVjdXRlUmVxdWVzdDxUPih7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgaWQsXG4gICAgICBxdWVyeVBhcmFtc1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqL1xuICBhc3luYyBjcmVhdGUobW9kZWw6IFQpOiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVJlcXVlc3Q8VCwgVD4oe1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBkYXRhOiBtb2RlbFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqL1xuICBhc3luYyB1cGRhdGUobW9kZWw6IFQpOiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVJlcXVlc3Q8VCwgVD4oe1xuICAgICAgbWV0aG9kOiAnUFVUJyxcbiAgICAgIGlkOiBtb2RlbC5pZCxcbiAgICAgIGRhdGE6IG1vZGVsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIGFzeW5jIGRlbGV0ZShpZDogc3RyaW5nKTogUHJvbWlzZTxBcGlSZXNwb25zZTxib29sZWFuPj4ge1xuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVSZXF1ZXN0PGJvb2xlYW4+KHtcbiAgICAgIG1ldGhvZDogJ0RFTEVURScsXG4gICAgICBpZFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqL1xuICBhc3luYyBzZWFyY2goc2VhcmNoUGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogUHJvbWlzZTxBcGlSZXNwb25zZTxQYWdlZExpc3Q8VD4+PiB7XG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVJlcXVlc3Q8UGFnZWRMaXN0PFQ+Pih7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgcGF0aDogJ3NlYXJjaCcsXG4gICAgICBxdWVyeVBhcmFtczogc2VhcmNoUGFyYW1zXG4gICAgfSk7XG4gIH1cbn0iXX0=
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { BaseFiscalapiService } from './base-fiscalapi-service';
|
|
2
|
+
/**
|
|
3
|
+
* Implementación del servicio de catálogos
|
|
4
|
+
*/
|
|
5
|
+
export class CatalogService extends BaseFiscalapiService {
|
|
6
|
+
/**
|
|
7
|
+
* Crea una nueva instancia del servicio de catálogos
|
|
8
|
+
* @param {IFiscalapiHttpClient} httpClient - Cliente HTTP
|
|
9
|
+
* @param {string} apiVersion - Versión de la API
|
|
10
|
+
*/
|
|
11
|
+
constructor(httpClient, apiVersion) {
|
|
12
|
+
super(httpClient, 'catalogs', apiVersion);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Recupera un registro de un catálogo por catalogName y id.
|
|
16
|
+
*
|
|
17
|
+
* @param catalogName - Nombre del catálogo
|
|
18
|
+
* @param id - Id del registro en el catalogName
|
|
19
|
+
* @returns Promise que resuelve en una respuesta API con CatalogDto
|
|
20
|
+
*/
|
|
21
|
+
async getRecordById(catalogName, id) {
|
|
22
|
+
const path = `${catalogName}/key/${id}`;
|
|
23
|
+
const endpoint = this.buildEndpoint(path);
|
|
24
|
+
// api/v4/catalogs/<catalogName>/key/<id>
|
|
25
|
+
return this.httpClient.getAsync(endpoint);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Busca en un catálogo.
|
|
29
|
+
*
|
|
30
|
+
* @param catalogName - Catalog name. Must be a catalog retrieved from getList()
|
|
31
|
+
* @param searchText - Criterio de búsqueda. Debe tener 4 caracteres de longitud como mínimo.
|
|
32
|
+
* @param pageNumber - Numero de pagina a recuperar (default: 1)
|
|
33
|
+
* @param pageSize - Tamaño de la página entre 1 y 100 registros por página (default: 50)
|
|
34
|
+
* @returns Promise que resuelve en una respuesta API con lista paginada de CatalogDto
|
|
35
|
+
*/
|
|
36
|
+
async searchCatalog(catalogName, searchText, pageNumber = 1, pageSize = 50) {
|
|
37
|
+
const path = `${catalogName}/${searchText}`;
|
|
38
|
+
const queryParams = {
|
|
39
|
+
pageNumber: pageNumber.toString(),
|
|
40
|
+
pageSize: pageSize.toString()
|
|
41
|
+
};
|
|
42
|
+
const endpoint = this.buildEndpoint(path, queryParams);
|
|
43
|
+
const response = await this.httpClient.getAsync(endpoint);
|
|
44
|
+
return response;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2NhdGFsb2ctc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdoRTs7R0FFRztBQUNILE1BQU0sT0FBTyxjQUFlLFNBQVEsb0JBQWdDO0lBQ2xFOzs7O09BSUc7SUFDSCxZQUFZLFVBQWdDLEVBQUUsVUFBa0I7UUFDOUQsS0FBSyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUlDOzs7Ozs7TUFNRTtJQUNLLEtBQUssQ0FBQyxhQUFhLENBQUMsV0FBbUIsRUFBRSxFQUFVO1FBQ3hELE1BQU0sSUFBSSxHQUFHLEdBQUcsV0FBVyxRQUFRLEVBQUUsRUFBRSxDQUFDO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMseUNBQXlDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQWEsUUFBUSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOzs7Ozs7OztNQVFFO0lBQ0ssS0FBSyxDQUFDLGFBQWEsQ0FDeEIsV0FBbUIsRUFDbkIsVUFBa0IsRUFDbEIsYUFBcUIsQ0FBQyxFQUN0QixXQUFtQixFQUFFO1FBRXJCLE1BQU0sSUFBSSxHQUFHLEdBQUcsV0FBVyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzVDLE1BQU0sV0FBVyxHQUFHO1lBQ2hCLFVBQVUsRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFO1lBQ2pDLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFO1NBQ2hDLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN2RCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUF3QixRQUFRLENBQUMsQ0FBQztRQUNqRixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBR0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYXRhbG9nRHRvIH0gZnJvbSAnLi4vY29tbW9uL2NhdGFsb2ctZHRvJztcbmltcG9ydCB7IElGaXNjYWxhcGlIdHRwQ2xpZW50IH0gZnJvbSAnLi4vaHR0cC9maXNjYWxhcGktaHR0cC1jbGllbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vY29tbW9uL2FwaS1yZXNwb25zZSc7XG5pbXBvcnQgeyBCYXNlRmlzY2FsYXBpU2VydmljZSB9IGZyb20gJy4vYmFzZS1maXNjYWxhcGktc2VydmljZSc7XG5pbXBvcnQgeyBJQ2F0YWxvZ1NlcnZpY2UsIFBhZ2VkTGlzdCB9IGZyb20gJy4uJztcblxuLyoqXG4gKiBJbXBsZW1lbnRhY2nDs24gZGVsIHNlcnZpY2lvIGRlIGNhdMOhbG9nb3NcbiAqL1xuZXhwb3J0IGNsYXNzIENhdGFsb2dTZXJ2aWNlIGV4dGVuZHMgQmFzZUZpc2NhbGFwaVNlcnZpY2U8Q2F0YWxvZ0R0bz4gaW1wbGVtZW50cyBJQ2F0YWxvZ1NlcnZpY2Uge1xuICAvKipcbiAgICogQ3JlYSB1bmEgbnVldmEgaW5zdGFuY2lhIGRlbCBzZXJ2aWNpbyBkZSBjYXTDoWxvZ29zXG4gICAqIEBwYXJhbSB7SUZpc2NhbGFwaUh0dHBDbGllbnR9IGh0dHBDbGllbnQgLSBDbGllbnRlIEhUVFBcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFwaVZlcnNpb24gLSBWZXJzacOzbiBkZSBsYSBBUElcbiAgICovXG4gIGNvbnN0cnVjdG9yKGh0dHBDbGllbnQ6IElGaXNjYWxhcGlIdHRwQ2xpZW50LCBhcGlWZXJzaW9uOiBzdHJpbmcpIHtcbiAgICBzdXBlcihodHRwQ2xpZW50LCAnY2F0YWxvZ3MnLCBhcGlWZXJzaW9uKTtcbiAgfVxuXG5cblxuICAgIC8qKlxuICAgICogUmVjdXBlcmEgdW4gcmVnaXN0cm8gZGUgdW4gY2F0w6Fsb2dvIHBvciBjYXRhbG9nTmFtZSB5IGlkLlxuICAgICogXG4gICAgKiBAcGFyYW0gY2F0YWxvZ05hbWUgLSBOb21icmUgZGVsIGNhdMOhbG9nb1xuICAgICogQHBhcmFtIGlkIC0gSWQgZGVsIHJlZ2lzdHJvIGVuIGVsIGNhdGFsb2dOYW1lXG4gICAgKiBAcmV0dXJucyBQcm9taXNlIHF1ZSByZXN1ZWx2ZSBlbiB1bmEgcmVzcHVlc3RhIEFQSSBjb24gQ2F0YWxvZ0R0b1xuICAgICovXG4gICAgcHVibGljIGFzeW5jIGdldFJlY29yZEJ5SWQoY2F0YWxvZ05hbWU6IHN0cmluZywgaWQ6IHN0cmluZyk6IFByb21pc2U8QXBpUmVzcG9uc2U8Q2F0YWxvZ0R0bz4+IHtcbiAgICAgIGNvbnN0IHBhdGggPSBgJHtjYXRhbG9nTmFtZX0va2V5LyR7aWR9YDtcbiAgICAgIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5idWlsZEVuZHBvaW50KHBhdGgpO1xuICAgICAgLy8gYXBpL3Y0L2NhdGFsb2dzLzxjYXRhbG9nTmFtZT4va2V5LzxpZD5cbiAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0QXN5bmM8Q2F0YWxvZ0R0bz4oZW5kcG9pbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICogQnVzY2EgZW4gdW4gY2F0w6Fsb2dvLlxuICAgICogXG4gICAgKiBAcGFyYW0gY2F0YWxvZ05hbWUgLSBDYXRhbG9nIG5hbWUuIE11c3QgYmUgYSBjYXRhbG9nIHJldHJpZXZlZCBmcm9tIGdldExpc3QoKVxuICAgICogQHBhcmFtIHNlYXJjaFRleHQgLSBDcml0ZXJpbyBkZSBiw7pzcXVlZGEuIERlYmUgdGVuZXIgNCBjYXJhY3RlcmVzIGRlIGxvbmdpdHVkIGNvbW8gbcOtbmltby5cbiAgICAqIEBwYXJhbSBwYWdlTnVtYmVyIC0gTnVtZXJvIGRlIHBhZ2luYSBhIHJlY3VwZXJhciAoZGVmYXVsdDogMSlcbiAgICAqIEBwYXJhbSBwYWdlU2l6ZSAtIFRhbWHDsW8gZGUgbGEgcMOhZ2luYSBlbnRyZSAxIHkgMTAwIHJlZ2lzdHJvcyBwb3IgcMOhZ2luYSAoZGVmYXVsdDogNTApXG4gICAgKiBAcmV0dXJucyBQcm9taXNlIHF1ZSByZXN1ZWx2ZSBlbiB1bmEgcmVzcHVlc3RhIEFQSSBjb24gbGlzdGEgcGFnaW5hZGEgZGUgQ2F0YWxvZ0R0b1xuICAgICovXG4gICAgcHVibGljIGFzeW5jIHNlYXJjaENhdGFsb2coXG4gICAgICBjYXRhbG9nTmFtZTogc3RyaW5nLCBcbiAgICAgIHNlYXJjaFRleHQ6IHN0cmluZyxcbiAgICAgIHBhZ2VOdW1iZXI6IG51bWJlciA9IDEsIFxuICAgICAgcGFnZVNpemU6IG51bWJlciA9IDUwXG4gICAgKTogUHJvbWlzZTxBcGlSZXNwb25zZTxQYWdlZExpc3Q8Q2F0YWxvZ0R0bz4+PiB7XG4gICAgICBjb25zdCBwYXRoID0gYCR7Y2F0YWxvZ05hbWV9LyR7c2VhcmNoVGV4dH1gO1xuICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSB7XG4gICAgICAgICAgcGFnZU51bWJlcjogcGFnZU51bWJlci50b1N0cmluZygpLFxuICAgICAgICAgIHBhZ2VTaXplOiBwYWdlU2l6ZS50b1N0cmluZygpXG4gICAgICB9O1xuICAgICAgY29uc3QgZW5kcG9pbnQgPSB0aGlzLmJ1aWxkRW5kcG9pbnQocGF0aCwgcXVlcnlQYXJhbXMpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnQuZ2V0QXN5bmM8UGFnZWRMaXN0PENhdGFsb2dEdG8+PihlbmRwb2ludCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuXG4gIFxufVxuIl19
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { FiscalapiHttpClientFactory } from '../http/fiscalapi-http-client-factory';
|
|
2
|
+
import { ApiKeyService } from './api-key-service';
|
|
3
|
+
import { CatalogService } from './catalog-service';
|
|
4
|
+
import { InvoiceService } from './invoice-service';
|
|
5
|
+
import { PersonService } from './person-service';
|
|
6
|
+
import { ProductService } from './product-service';
|
|
7
|
+
import { TaxFileService } from './tax-file-service';
|
|
8
|
+
/**
|
|
9
|
+
* Cliente principal para FiscalAPI
|
|
10
|
+
*/
|
|
11
|
+
export class FiscalapiClient {
|
|
12
|
+
/**
|
|
13
|
+
* Crea una nueva instancia del cliente de FiscalAPI
|
|
14
|
+
* @param {FiscalapiSettings} settings - Configuración
|
|
15
|
+
* @private
|
|
16
|
+
*/
|
|
17
|
+
constructor(settings) {
|
|
18
|
+
// Crea el cliente HTTP
|
|
19
|
+
const httpClient = FiscalapiHttpClientFactory.create(settings);
|
|
20
|
+
const apiVersion = settings.apiVersion || 'v4';
|
|
21
|
+
// Inicializa los servicios
|
|
22
|
+
this.invoices = new InvoiceService(httpClient, apiVersion);
|
|
23
|
+
this.products = new ProductService(httpClient, apiVersion);
|
|
24
|
+
this.persons = new PersonService(httpClient, apiVersion);
|
|
25
|
+
this.apiKeys = new ApiKeyService(httpClient, apiVersion);
|
|
26
|
+
this.catalogs = new CatalogService(httpClient, apiVersion);
|
|
27
|
+
this.taxFiles = new TaxFileService(httpClient, apiVersion);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Crea una nueva instancia del cliente de FiscalAPI
|
|
31
|
+
* @param {FiscalapiSettings} settings - Configuración
|
|
32
|
+
* @returns {IFiscalapiClient} Instancia del cliente de FiscalAPI
|
|
33
|
+
*/
|
|
34
|
+
static create(settings) {
|
|
35
|
+
if (!settings) {
|
|
36
|
+
throw new Error('La configuración no puede ser nula o indefinida');
|
|
37
|
+
}
|
|
38
|
+
// Valida la configuración
|
|
39
|
+
FiscalapiClient.validateSettings(settings);
|
|
40
|
+
// Establece valores predeterminados para configuraciones opcionales
|
|
41
|
+
settings.apiVersion = settings.apiVersion || 'v4';
|
|
42
|
+
settings.timeZone = settings.timeZone || 'America/Mexico_City';
|
|
43
|
+
settings.debug = settings.debug || false;
|
|
44
|
+
return new FiscalapiClient(settings);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Valida la configuración
|
|
48
|
+
* @param {FiscalapiSettings} settings - Configuración
|
|
49
|
+
* @private
|
|
50
|
+
*/
|
|
51
|
+
static validateSettings(settings) {
|
|
52
|
+
if (!settings.apiUrl) {
|
|
53
|
+
throw new Error('apiUrl es requerido');
|
|
54
|
+
}
|
|
55
|
+
if (!settings.apiKey) {
|
|
56
|
+
throw new Error('apiKey es requerido');
|
|
57
|
+
}
|
|
58
|
+
if (!settings.tenant) {
|
|
59
|
+
throw new Error('tenant es requerido');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlzY2FsYXBpLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9maXNjYWxhcGktY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUErQjFCOzs7O09BSUc7SUFDSCxZQUFvQixRQUEyQjtRQUM3Qyx1QkFBdUI7UUFDdkIsTUFBTSxVQUFVLEdBQUcsMEJBQTBCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDO1FBRS9DLDJCQUEyQjtRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksYUFBYSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksYUFBYSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBMkI7UUFDdkMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFFRCwwQkFBMEI7UUFDMUIsZUFBZSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTNDLG9FQUFvRTtRQUNwRSxRQUFRLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDO1FBQ2xELFFBQVEsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsSUFBSSxxQkFBcUIsQ0FBQztRQUMvRCxRQUFRLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDO1FBRXpDLE9BQU8sSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBMkI7UUFDekQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDekMsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgXG4gIElGaXNjYWxhcGlDbGllbnQsXG4gIElJbnZvaWNlU2VydmljZSwgXG4gIElQcm9kdWN0U2VydmljZSwgXG4gIElQZXJzb25TZXJ2aWNlLCBcbiAgSUFwaUtleVNlcnZpY2UsIFxuICBJQ2F0YWxvZ1NlcnZpY2UsIFxuICBJVGF4RmlsZVNlcnZpY2UgfSBmcm9tICcuLic7XG5pbXBvcnQgeyBGaXNjYWxhcGlTZXR0aW5ncyB9IGZyb20gJy4uL2NvbW1vbi9maXNjYWxhcGktc2V0dGluZ3MnO1xuaW1wb3J0IHsgRmlzY2FsYXBpSHR0cENsaWVudEZhY3RvcnkgfSBmcm9tICcuLi9odHRwL2Zpc2NhbGFwaS1odHRwLWNsaWVudC1mYWN0b3J5JztcbmltcG9ydCB7IEFwaUtleVNlcnZpY2UgfSBmcm9tICcuL2FwaS1rZXktc2VydmljZSc7XG5pbXBvcnQgeyBDYXRhbG9nU2VydmljZSB9IGZyb20gJy4vY2F0YWxvZy1zZXJ2aWNlJztcbmltcG9ydCB7IEludm9pY2VTZXJ2aWNlIH0gZnJvbSAnLi9pbnZvaWNlLXNlcnZpY2UnO1xuaW1wb3J0IHsgUGVyc29uU2VydmljZSB9IGZyb20gJy4vcGVyc29uLXNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvZHVjdFNlcnZpY2UgfSBmcm9tICcuL3Byb2R1Y3Qtc2VydmljZSc7XG5pbXBvcnQgeyBUYXhGaWxlU2VydmljZSB9IGZyb20gJy4vdGF4LWZpbGUtc2VydmljZSc7XG5cbi8qKlxuICogQ2xpZW50ZSBwcmluY2lwYWwgcGFyYSBGaXNjYWxBUElcbiAqL1xuZXhwb3J0IGNsYXNzIEZpc2NhbGFwaUNsaWVudCBpbXBsZW1lbnRzIElGaXNjYWxhcGlDbGllbnQge1xuICAvKipcbiAgICogU2VydmljaW8gZGUgZmFjdHVyYXNcbiAgICovXG4gIHJlYWRvbmx5IGludm9pY2VzOiBJSW52b2ljZVNlcnZpY2U7XG4gIFxuICAvKipcbiAgICogU2VydmljaW8gZGUgcHJvZHVjdG9zXG4gICAqL1xuICByZWFkb25seSBwcm9kdWN0czogSVByb2R1Y3RTZXJ2aWNlO1xuICBcbiAgLyoqXG4gICAqIFNlcnZpY2lvIGRlIHBlcnNvbmFzXG4gICAqL1xuICByZWFkb25seSBwZXJzb25zOiBJUGVyc29uU2VydmljZTtcbiAgXG4gIC8qKlxuICAgKiBTZXJ2aWNpbyBkZSBjbGF2ZXMgZGUgQVBJXG4gICAqL1xuICByZWFkb25seSBhcGlLZXlzOiBJQXBpS2V5U2VydmljZTtcbiAgXG4gIC8qKlxuICAgKiBTZXJ2aWNpbyBkZSBjYXTDoWxvZ29zXG4gICAqL1xuICByZWFkb25seSBjYXRhbG9nczogSUNhdGFsb2dTZXJ2aWNlO1xuICBcbiAgLyoqXG4gICAqIFNlcnZpY2lvIGRlIGFyY2hpdm9zIGZpc2NhbGVzXG4gICAqL1xuICByZWFkb25seSB0YXhGaWxlczogSVRheEZpbGVTZXJ2aWNlO1xuXG4gIC8qKlxuICAgKiBDcmVhIHVuYSBudWV2YSBpbnN0YW5jaWEgZGVsIGNsaWVudGUgZGUgRmlzY2FsQVBJXG4gICAqIEBwYXJhbSB7RmlzY2FsYXBpU2V0dGluZ3N9IHNldHRpbmdzIC0gQ29uZmlndXJhY2nDs25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgY29uc3RydWN0b3Ioc2V0dGluZ3M6IEZpc2NhbGFwaVNldHRpbmdzKSB7XG4gICAgLy8gQ3JlYSBlbCBjbGllbnRlIEhUVFBcbiAgICBjb25zdCBodHRwQ2xpZW50ID0gRmlzY2FsYXBpSHR0cENsaWVudEZhY3RvcnkuY3JlYXRlKHNldHRpbmdzKTtcbiAgICBjb25zdCBhcGlWZXJzaW9uID0gc2V0dGluZ3MuYXBpVmVyc2lvbiB8fCAndjQnO1xuICAgIFxuICAgIC8vIEluaWNpYWxpemEgbG9zIHNlcnZpY2lvc1xuICAgIHRoaXMuaW52b2ljZXMgPSBuZXcgSW52b2ljZVNlcnZpY2UoaHR0cENsaWVudCwgYXBpVmVyc2lvbik7XG4gICAgdGhpcy5wcm9kdWN0cyA9IG5ldyBQcm9kdWN0U2VydmljZShodHRwQ2xpZW50LCBhcGlWZXJzaW9uKTtcbiAgICB0aGlzLnBlcnNvbnMgPSBuZXcgUGVyc29uU2VydmljZShodHRwQ2xpZW50LCBhcGlWZXJzaW9uKTtcbiAgICB0aGlzLmFwaUtleXMgPSBuZXcgQXBpS2V5U2VydmljZShodHRwQ2xpZW50LCBhcGlWZXJzaW9uKTtcbiAgICB0aGlzLmNhdGFsb2dzID0gbmV3IENhdGFsb2dTZXJ2aWNlKGh0dHBDbGllbnQsIGFwaVZlcnNpb24pO1xuICAgIHRoaXMudGF4RmlsZXMgPSBuZXcgVGF4RmlsZVNlcnZpY2UoaHR0cENsaWVudCwgYXBpVmVyc2lvbik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYSB1bmEgbnVldmEgaW5zdGFuY2lhIGRlbCBjbGllbnRlIGRlIEZpc2NhbEFQSVxuICAgKiBAcGFyYW0ge0Zpc2NhbGFwaVNldHRpbmdzfSBzZXR0aW5ncyAtIENvbmZpZ3VyYWNpw7NuXG4gICAqIEByZXR1cm5zIHtJRmlzY2FsYXBpQ2xpZW50fSBJbnN0YW5jaWEgZGVsIGNsaWVudGUgZGUgRmlzY2FsQVBJXG4gICAqL1xuICBzdGF0aWMgY3JlYXRlKHNldHRpbmdzOiBGaXNjYWxhcGlTZXR0aW5ncyk6IElGaXNjYWxhcGlDbGllbnQge1xuICAgIGlmICghc2V0dGluZ3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTGEgY29uZmlndXJhY2nDs24gbm8gcHVlZGUgc2VyIG51bGEgbyBpbmRlZmluaWRhJyk7XG4gICAgfVxuICAgIFxuICAgIC8vIFZhbGlkYSBsYSBjb25maWd1cmFjacOzblxuICAgIEZpc2NhbGFwaUNsaWVudC52YWxpZGF0ZVNldHRpbmdzKHNldHRpbmdzKTtcbiAgICBcbiAgICAvLyBFc3RhYmxlY2UgdmFsb3JlcyBwcmVkZXRlcm1pbmFkb3MgcGFyYSBjb25maWd1cmFjaW9uZXMgb3BjaW9uYWxlc1xuICAgIHNldHRpbmdzLmFwaVZlcnNpb24gPSBzZXR0aW5ncy5hcGlWZXJzaW9uIHx8ICd2NCc7XG4gICAgc2V0dGluZ3MudGltZVpvbmUgPSBzZXR0aW5ncy50aW1lWm9uZSB8fCAnQW1lcmljYS9NZXhpY29fQ2l0eSc7XG4gICAgc2V0dGluZ3MuZGVidWcgPSBzZXR0aW5ncy5kZWJ1ZyB8fCBmYWxzZTtcbiAgICBcbiAgICByZXR1cm4gbmV3IEZpc2NhbGFwaUNsaWVudChzZXR0aW5ncyk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhIGxhIGNvbmZpZ3VyYWNpw7NuXG4gICAqIEBwYXJhbSB7RmlzY2FsYXBpU2V0dGluZ3N9IHNldHRpbmdzIC0gQ29uZmlndXJhY2nDs25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHZhbGlkYXRlU2V0dGluZ3Moc2V0dGluZ3M6IEZpc2NhbGFwaVNldHRpbmdzKTogdm9pZCB7XG4gICAgaWYgKCFzZXR0aW5ncy5hcGlVcmwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYXBpVXJsIGVzIHJlcXVlcmlkbycpO1xuICAgIH1cbiAgICBcbiAgICBpZiAoIXNldHRpbmdzLmFwaUtleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhcGlLZXkgZXMgcmVxdWVyaWRvJyk7XG4gICAgfVxuICAgIFxuICAgIGlmICghc2V0dGluZ3MudGVuYW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RlbmFudCBlcyByZXF1ZXJpZG8nKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { BaseFiscalapiService } from './base-fiscalapi-service';
|
|
2
|
+
/**
|
|
3
|
+
* Implementación del servicio de facturas
|
|
4
|
+
*/
|
|
5
|
+
export class InvoiceService extends BaseFiscalapiService {
|
|
6
|
+
/**
|
|
7
|
+
* Crea una nueva instancia del servicio de facturas
|
|
8
|
+
* @param {IFiscalapiHttpClient} httpClient - Cliente HTTP
|
|
9
|
+
* @param {string} apiVersion - Versión de la API
|
|
10
|
+
*/
|
|
11
|
+
constructor(httpClient, apiVersion) {
|
|
12
|
+
super(httpClient, 'invoices', apiVersion);
|
|
13
|
+
this.INCOME_ENDPOINT = 'income';
|
|
14
|
+
this.CREDIT_NOTE_ENDPOINT = 'credit-note';
|
|
15
|
+
this.PAYMENT_ENDPOINT = 'payment';
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* @inheritdoc
|
|
19
|
+
*/
|
|
20
|
+
async create(requestModel) {
|
|
21
|
+
if (!requestModel) {
|
|
22
|
+
throw new Error('requestModel cannot be null');
|
|
23
|
+
}
|
|
24
|
+
let endpoint;
|
|
25
|
+
switch (requestModel.typeCode) {
|
|
26
|
+
case 'I':
|
|
27
|
+
endpoint = this.INCOME_ENDPOINT;
|
|
28
|
+
break;
|
|
29
|
+
case 'E':
|
|
30
|
+
endpoint = this.CREDIT_NOTE_ENDPOINT;
|
|
31
|
+
break;
|
|
32
|
+
case 'P':
|
|
33
|
+
endpoint = this.PAYMENT_ENDPOINT;
|
|
34
|
+
break;
|
|
35
|
+
default:
|
|
36
|
+
throw new Error(`Unsupported invoice type: ${requestModel.typeCode}`);
|
|
37
|
+
}
|
|
38
|
+
return await this.executeRequest({
|
|
39
|
+
path: endpoint,
|
|
40
|
+
data: requestModel,
|
|
41
|
+
method: 'POST',
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Cancela una factura
|
|
46
|
+
* @param {CancelInvoiceRequest} request - Solicitud para cancelar factura
|
|
47
|
+
* @returns {Promise<ApiResponse<CancelInvoiceResponse>>} Respuesta de la cancelación
|
|
48
|
+
*/
|
|
49
|
+
async cancel(request) {
|
|
50
|
+
if (!request) {
|
|
51
|
+
throw new Error('request cannot be null');
|
|
52
|
+
}
|
|
53
|
+
return await this.executeRequest({
|
|
54
|
+
data: request,
|
|
55
|
+
method: 'DELETE',
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Obtiene el PDF de una factura
|
|
60
|
+
* @param {CreatePdfRequest} request - Solicitud para crear PDF
|
|
61
|
+
* @returns {Promise<ApiResponse<FileResponse>>} Respuesta con el archivo PDF
|
|
62
|
+
*/
|
|
63
|
+
async getPdf(request) {
|
|
64
|
+
if (!request) {
|
|
65
|
+
throw new Error('request cannot be null');
|
|
66
|
+
}
|
|
67
|
+
return await this.executeRequest({
|
|
68
|
+
path: 'pdf',
|
|
69
|
+
data: request,
|
|
70
|
+
method: 'POST',
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Obtiene el XML de una factura
|
|
75
|
+
* @param {string} id - ID de la factura
|
|
76
|
+
* @returns {Promise<ApiResponse<FileResponse>>} Respuesta con el archivo XML
|
|
77
|
+
*/
|
|
78
|
+
async getXml(id) {
|
|
79
|
+
if (!id || id.trim() === '') {
|
|
80
|
+
throw new Error('id cannot be null or empty');
|
|
81
|
+
}
|
|
82
|
+
return await this.executeRequest({
|
|
83
|
+
path: `${id}/xml`,
|
|
84
|
+
method: 'GET',
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Envía una factura por correo electrónico
|
|
89
|
+
* @param {SendInvoiceRequest} request - Solicitud para enviar factura
|
|
90
|
+
* @returns {Promise<ApiResponse<boolean>>} Resultado de la operación
|
|
91
|
+
*/
|
|
92
|
+
async send(request) {
|
|
93
|
+
return await this.executeRequest({
|
|
94
|
+
path: 'send',
|
|
95
|
+
data: request,
|
|
96
|
+
method: 'POST',
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Obtiene el estado de una factura
|
|
101
|
+
* @param {InvoiceStatusRequest} request - Solicitud para consultar estado
|
|
102
|
+
* @returns {Promise<ApiResponse<InvoiceStatusResponse>>} Respuesta con el estado de la factura
|
|
103
|
+
*/
|
|
104
|
+
async getStatus(request) {
|
|
105
|
+
return await this.executeRequest({
|
|
106
|
+
path: 'status',
|
|
107
|
+
data: request,
|
|
108
|
+
method: 'POST',
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2ludm9pY2Utc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQVloRTs7R0FFRztBQUNILE1BQU0sT0FBTyxjQUFlLFNBQVEsb0JBQTZCO0lBSy9EOzs7O09BSUc7SUFDSCxZQUFZLFVBQWdDLEVBQUUsVUFBa0I7UUFDOUQsS0FBSyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFWM0Isb0JBQWUsR0FBRyxRQUFRLENBQUM7UUFDM0IseUJBQW9CLEdBQUcsYUFBYSxDQUFDO1FBQ3JDLHFCQUFnQixHQUFHLFNBQVMsQ0FBQztJQVM5QyxDQUFDO0lBRUQ7O09BRUc7SUFDTyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQXFCO1FBQzFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVELElBQUksUUFBZ0IsQ0FBQztRQUVyQixRQUFRLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5QixLQUFLLEdBQUc7Z0JBQ04sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7Z0JBQ2hDLE1BQU07WUFDUixLQUFLLEdBQUc7Z0JBQ04sUUFBUSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztnQkFDckMsTUFBTTtZQUNSLEtBQUssR0FBRztnQkFDTixRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO2dCQUNqQyxNQUFNO1lBQ1I7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUVDLE9BQU8sTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFtQjtZQUNqRCxJQUFJLEVBQUMsUUFBUTtZQUNiLElBQUksRUFBQyxZQUFZO1lBQ2pCLE1BQU0sRUFBQyxNQUFNO1NBQ2QsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQTZCO1FBQ3hDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBRUQsT0FBTyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQThDO1lBQzVFLElBQUksRUFBQyxPQUFPO1lBQ1osTUFBTSxFQUFDLFFBQVE7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQXlCO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsT0FBTyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQWlDO1lBQy9ELElBQUksRUFBQyxLQUFLO1lBQ1YsSUFBSSxFQUFDLE9BQU87WUFDWixNQUFNLEVBQUMsTUFBTTtTQUNkLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFVO1FBRXJCLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBRUQsT0FBTyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQXVCO1lBQ3JELElBQUksRUFBQyxHQUFHLEVBQUUsTUFBTTtZQUNoQixNQUFNLEVBQUUsS0FBSztTQUNkLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUEyQjtRQUNwQyxPQUFPLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBOEI7WUFDNUQsSUFBSSxFQUFDLE1BQU07WUFDWCxJQUFJLEVBQUMsT0FBTztZQUNaLE1BQU0sRUFBQyxNQUFNO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQTZCO1FBQ3ZDLE9BQU8sTUFBTSxJQUFJLENBQUMsY0FBYyxDQUE4QztZQUM5RSxJQUFJLEVBQUMsUUFBUTtZQUNiLElBQUksRUFBQyxPQUFPO1lBQ1osTUFBTSxFQUFDLE1BQU07U0FDZCxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJRmlzY2FsYXBpSHR0cENsaWVudCB9IGZyb20gJy4uL2h0dHAvZmlzY2FsYXBpLWh0dHAtY2xpZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBBcGlSZXNwb25zZSB9IGZyb20gJy4uL2NvbW1vbi9hcGktcmVzcG9uc2UnO1xuaW1wb3J0IHsgRmlsZVJlc3BvbnNlIH0gZnJvbSAnLi4vY29tbW9uL2ZpbGUtcmVzcG9uc2UnO1xuaW1wb3J0IHsgQmFzZUZpc2NhbGFwaVNlcnZpY2UgfSBmcm9tICcuL2Jhc2UtZmlzY2FsYXBpLXNlcnZpY2UnO1xuaW1wb3J0IHsgSUludm9pY2VTZXJ2aWNlIH0gZnJvbSAnLi4vYWJzdHJhY3Rpb25zL2ludm9pY2Utc2VydmljZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgXG4gIEludm9pY2UsIFxuICBDYW5jZWxJbnZvaWNlUmVxdWVzdCwgXG4gIENhbmNlbEludm9pY2VSZXNwb25zZSwgXG4gIENyZWF0ZVBkZlJlcXVlc3QsIFxuICBTZW5kSW52b2ljZVJlcXVlc3QsXG4gIEludm9pY2VTdGF0dXNSZXF1ZXN0LFxuICBJbnZvaWNlU3RhdHVzUmVzcG9uc2Vcbn0gZnJvbSAnLi4vbW9kZWxzL2ludm9pY2UnO1xuXG4vKipcbiAqIEltcGxlbWVudGFjacOzbiBkZWwgc2VydmljaW8gZGUgZmFjdHVyYXNcbiAqL1xuZXhwb3J0IGNsYXNzIEludm9pY2VTZXJ2aWNlIGV4dGVuZHMgQmFzZUZpc2NhbGFwaVNlcnZpY2U8SW52b2ljZT4gaW1wbGVtZW50cyBJSW52b2ljZVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IElOQ09NRV9FTkRQT0lOVCA9ICdpbmNvbWUnO1xuICBwcml2YXRlIHJlYWRvbmx5IENSRURJVF9OT1RFX0VORFBPSU5UID0gJ2NyZWRpdC1ub3RlJztcbiAgcHJpdmF0ZSByZWFkb25seSBQQVlNRU5UX0VORFBPSU5UID0gJ3BheW1lbnQnO1xuXG4gIC8qKlxuICAgKiBDcmVhIHVuYSBudWV2YSBpbnN0YW5jaWEgZGVsIHNlcnZpY2lvIGRlIGZhY3R1cmFzXG4gICAqIEBwYXJhbSB7SUZpc2NhbGFwaUh0dHBDbGllbnR9IGh0dHBDbGllbnQgLSBDbGllbnRlIEhUVFBcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFwaVZlcnNpb24gLSBWZXJzacOzbiBkZSBsYSBBUElcbiAgICovXG4gIGNvbnN0cnVjdG9yKGh0dHBDbGllbnQ6IElGaXNjYWxhcGlIdHRwQ2xpZW50LCBhcGlWZXJzaW9uOiBzdHJpbmcpIHtcbiAgICBzdXBlcihodHRwQ2xpZW50LCAnaW52b2ljZXMnLCBhcGlWZXJzaW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKi9cbiAgIG92ZXJyaWRlIGFzeW5jIGNyZWF0ZShyZXF1ZXN0TW9kZWw6IEludm9pY2UpOiBQcm9taXNlPEFwaVJlc3BvbnNlPEludm9pY2U+PiB7XG4gICAgaWYgKCFyZXF1ZXN0TW9kZWwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncmVxdWVzdE1vZGVsIGNhbm5vdCBiZSBudWxsJyk7XG4gICAgfVxuXG4gICAgbGV0IGVuZHBvaW50OiBzdHJpbmc7XG5cbiAgICBzd2l0Y2ggKHJlcXVlc3RNb2RlbC50eXBlQ29kZSkge1xuICAgICAgY2FzZSAnSSc6XG4gICAgICAgIGVuZHBvaW50ID0gdGhpcy5JTkNPTUVfRU5EUE9JTlQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRSc6XG4gICAgICAgIGVuZHBvaW50ID0gdGhpcy5DUkVESVRfTk9URV9FTkRQT0lOVDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdQJzpcbiAgICAgICAgZW5kcG9pbnQgPSB0aGlzLlBBWU1FTlRfRU5EUE9JTlQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBpbnZvaWNlIHR5cGU6ICR7cmVxdWVzdE1vZGVsLnR5cGVDb2RlfWApO1xuICAgIH1cblxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZVJlcXVlc3Q8SW52b2ljZSwgSW52b2ljZT4oe1xuICAgICAgICBwYXRoOmVuZHBvaW50LFxuICAgICAgICBkYXRhOnJlcXVlc3RNb2RlbCxcbiAgICAgICAgbWV0aG9kOidQT1NUJyxcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbGEgdW5hIGZhY3R1cmFcbiAgICogQHBhcmFtIHtDYW5jZWxJbnZvaWNlUmVxdWVzdH0gcmVxdWVzdCAtIFNvbGljaXR1ZCBwYXJhIGNhbmNlbGFyIGZhY3R1cmFcbiAgICogQHJldHVybnMge1Byb21pc2U8QXBpUmVzcG9uc2U8Q2FuY2VsSW52b2ljZVJlc3BvbnNlPj59IFJlc3B1ZXN0YSBkZSBsYSBjYW5jZWxhY2nDs25cbiAgICovXG4gIGFzeW5jIGNhbmNlbChyZXF1ZXN0OiBDYW5jZWxJbnZvaWNlUmVxdWVzdCk6IFByb21pc2U8QXBpUmVzcG9uc2U8Q2FuY2VsSW52b2ljZVJlc3BvbnNlPj4ge1xuICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXF1ZXN0IGNhbm5vdCBiZSBudWxsJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZVJlcXVlc3Q8Q2FuY2VsSW52b2ljZVJlc3BvbnNlLCBDYW5jZWxJbnZvaWNlUmVxdWVzdD4oe1xuICAgICAgZGF0YTpyZXF1ZXN0LFxuICAgICAgbWV0aG9kOidERUxFVEUnLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgUERGIGRlIHVuYSBmYWN0dXJhXG4gICAqIEBwYXJhbSB7Q3JlYXRlUGRmUmVxdWVzdH0gcmVxdWVzdCAtIFNvbGljaXR1ZCBwYXJhIGNyZWFyIFBERlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcGlSZXNwb25zZTxGaWxlUmVzcG9uc2U+Pn0gUmVzcHVlc3RhIGNvbiBlbCBhcmNoaXZvIFBERlxuICAgKi9cbiAgYXN5bmMgZ2V0UGRmKHJlcXVlc3Q6IENyZWF0ZVBkZlJlcXVlc3QpOiBQcm9taXNlPEFwaVJlc3BvbnNlPEZpbGVSZXNwb25zZT4+IHtcbiAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncmVxdWVzdCBjYW5ub3QgYmUgbnVsbCcpO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlUmVxdWVzdDxGaWxlUmVzcG9uc2UsIENyZWF0ZVBkZlJlcXVlc3Q+KHtcbiAgICAgIHBhdGg6J3BkZicsXG4gICAgICBkYXRhOnJlcXVlc3QsXG4gICAgICBtZXRob2Q6J1BPU1QnLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgWE1MIGRlIHVuYSBmYWN0dXJhXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCAtIElEIGRlIGxhIGZhY3R1cmFcbiAgICogQHJldHVybnMge1Byb21pc2U8QXBpUmVzcG9uc2U8RmlsZVJlc3BvbnNlPj59IFJlc3B1ZXN0YSBjb24gZWwgYXJjaGl2byBYTUxcbiAgICovXG4gIGFzeW5jIGdldFhtbChpZDogc3RyaW5nKTogUHJvbWlzZTxBcGlSZXNwb25zZTxGaWxlUmVzcG9uc2U+PiB7XG5cbiAgICBpZiAoIWlkIHx8IGlkLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaWQgY2Fubm90IGJlIG51bGwgb3IgZW1wdHknKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlUmVxdWVzdDxGaWxlUmVzcG9uc2UsIHN0cmluZz4oe1xuICAgICAgcGF0aDpgJHtpZH0veG1sYCxcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgfSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBFbnbDrWEgdW5hIGZhY3R1cmEgcG9yIGNvcnJlbyBlbGVjdHLDs25pY29cbiAgICogQHBhcmFtIHtTZW5kSW52b2ljZVJlcXVlc3R9IHJlcXVlc3QgLSBTb2xpY2l0dWQgcGFyYSBlbnZpYXIgZmFjdHVyYVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcGlSZXNwb25zZTxib29sZWFuPj59IFJlc3VsdGFkbyBkZSBsYSBvcGVyYWNpw7NuXG4gICAqL1xuICBhc3luYyBzZW5kKHJlcXVlc3Q6IFNlbmRJbnZvaWNlUmVxdWVzdCk6IFByb21pc2U8QXBpUmVzcG9uc2U8Ym9vbGVhbj4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlUmVxdWVzdDxib29sZWFuLCBTZW5kSW52b2ljZVJlcXVlc3Q+KHtcbiAgICAgIHBhdGg6J3NlbmQnLFxuICAgICAgZGF0YTpyZXF1ZXN0LFxuICAgICAgbWV0aG9kOidQT1NUJyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGVsIGVzdGFkbyBkZSB1bmEgZmFjdHVyYVxuICAgKiBAcGFyYW0ge0ludm9pY2VTdGF0dXNSZXF1ZXN0fSByZXF1ZXN0IC0gU29saWNpdHVkIHBhcmEgY29uc3VsdGFyIGVzdGFkb1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcGlSZXNwb25zZTxJbnZvaWNlU3RhdHVzUmVzcG9uc2U+Pn0gUmVzcHVlc3RhIGNvbiBlbCBlc3RhZG8gZGUgbGEgZmFjdHVyYVxuICAgKi9cbiAgYXN5bmMgZ2V0U3RhdHVzKHJlcXVlc3Q6IEludm9pY2VTdGF0dXNSZXF1ZXN0KTogUHJvbWlzZTxBcGlSZXNwb25zZTxJbnZvaWNlU3RhdHVzUmVzcG9uc2U+PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVSZXF1ZXN0PEludm9pY2VTdGF0dXNSZXNwb25zZSwgSW52b2ljZVN0YXR1c1JlcXVlc3Q+KHtcbiAgICAgICAgcGF0aDonc3RhdHVzJyxcbiAgICAgICAgZGF0YTpyZXF1ZXN0LFxuICAgICAgICBtZXRob2Q6J1BPU1QnLFxuICAgICAgfSk7XG4gIH1cbn0iXX0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BaseFiscalapiService } from './base-fiscalapi-service';
|
|
2
|
+
/**
|
|
3
|
+
* Implementación del servicio de personas
|
|
4
|
+
*/
|
|
5
|
+
export class PersonService extends BaseFiscalapiService {
|
|
6
|
+
/**
|
|
7
|
+
* Crea una nueva instancia del servicio de personas
|
|
8
|
+
* @param {IFiscalapiHttpClient} httpClient - Cliente HTTP
|
|
9
|
+
* @param {string} apiVersion - Versión de la API
|
|
10
|
+
*/
|
|
11
|
+
constructor(httpClient, apiVersion) {
|
|
12
|
+
super(httpClient, 'people', apiVersion);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc29uLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvcGVyc29uLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHaEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBYyxTQUFRLG9CQUE0QjtJQUM3RDs7OztPQUlHO0lBQ0gsWUFBWSxVQUFnQyxFQUFFLFVBQWtCO1FBQzlELEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgUGVyc29uIH0gZnJvbSAnLi4vbW9kZWxzL3BlcnNvbic7XG5pbXBvcnQgeyBJRmlzY2FsYXBpSHR0cENsaWVudCB9IGZyb20gJy4uL2h0dHAvZmlzY2FsYXBpLWh0dHAtY2xpZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYXNlRmlzY2FsYXBpU2VydmljZSB9IGZyb20gJy4vYmFzZS1maXNjYWxhcGktc2VydmljZSc7XG5pbXBvcnQgeyBJUGVyc29uU2VydmljZSB9IGZyb20gJy4uJztcblxuLyoqXG4gKiBJbXBsZW1lbnRhY2nDs24gZGVsIHNlcnZpY2lvIGRlIHBlcnNvbmFzXG4gKi9cbmV4cG9ydCBjbGFzcyBQZXJzb25TZXJ2aWNlIGV4dGVuZHMgQmFzZUZpc2NhbGFwaVNlcnZpY2U8UGVyc29uPiBpbXBsZW1lbnRzIElQZXJzb25TZXJ2aWNlIHtcbiAgLyoqXG4gICAqIENyZWEgdW5hIG51ZXZhIGluc3RhbmNpYSBkZWwgc2VydmljaW8gZGUgcGVyc29uYXNcbiAgICogQHBhcmFtIHtJRmlzY2FsYXBpSHR0cENsaWVudH0gaHR0cENsaWVudCAtIENsaWVudGUgSFRUUFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBpVmVyc2lvbiAtIFZlcnNpw7NuIGRlIGxhIEFQSVxuICAgKi9cbiAgY29uc3RydWN0b3IoaHR0cENsaWVudDogSUZpc2NhbGFwaUh0dHBDbGllbnQsIGFwaVZlcnNpb246IHN0cmluZykge1xuICAgIHN1cGVyKGh0dHBDbGllbnQsICdwZW9wbGUnLCBhcGlWZXJzaW9uKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BaseFiscalapiService } from './base-fiscalapi-service';
|
|
2
|
+
/**
|
|
3
|
+
* Implementación del servicio de productos
|
|
4
|
+
*/
|
|
5
|
+
export class ProductService extends BaseFiscalapiService {
|
|
6
|
+
/**
|
|
7
|
+
* Crea una nueva instancia del servicio de productos
|
|
8
|
+
* @param {IFiscalapiHttpClient} httpClient - Cliente HTTP
|
|
9
|
+
* @param {string} apiVersion - Versión de la API
|
|
10
|
+
*/
|
|
11
|
+
constructor(httpClient, apiVersion) {
|
|
12
|
+
super(httpClient, 'products', apiVersion);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3Byb2R1Y3Qtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdoRTs7R0FFRztBQUNILE1BQU0sT0FBTyxjQUFlLFNBQVEsb0JBQTZCO0lBQy9EOzs7O09BSUc7SUFDSCxZQUFZLFVBQWdDLEVBQUUsVUFBa0I7UUFDOUQsS0FBSyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDNUMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gJy4uL21vZGVscy9wcm9kdWN0JztcbmltcG9ydCB7IElGaXNjYWxhcGlIdHRwQ2xpZW50IH0gZnJvbSAnLi4vaHR0cC9maXNjYWxhcGktaHR0cC1jbGllbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhc2VGaXNjYWxhcGlTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlLWZpc2NhbGFwaS1zZXJ2aWNlJztcbmltcG9ydCB7IElQcm9kdWN0U2VydmljZSB9IGZyb20gJy4uJztcblxuLyoqXG4gKiBJbXBsZW1lbnRhY2nDs24gZGVsIHNlcnZpY2lvIGRlIHByb2R1Y3Rvc1xuICovXG5leHBvcnQgY2xhc3MgUHJvZHVjdFNlcnZpY2UgZXh0ZW5kcyBCYXNlRmlzY2FsYXBpU2VydmljZTxQcm9kdWN0PiBpbXBsZW1lbnRzIElQcm9kdWN0U2VydmljZSB7XG4gIC8qKlxuICAgKiBDcmVhIHVuYSBudWV2YSBpbnN0YW5jaWEgZGVsIHNlcnZpY2lvIGRlIHByb2R1Y3Rvc1xuICAgKiBAcGFyYW0ge0lGaXNjYWxhcGlIdHRwQ2xpZW50fSBodHRwQ2xpZW50IC0gQ2xpZW50ZSBIVFRQXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcGlWZXJzaW9uIC0gVmVyc2nDs24gZGUgbGEgQVBJXG4gICAqL1xuICBjb25zdHJ1Y3RvcihodHRwQ2xpZW50OiBJRmlzY2FsYXBpSHR0cENsaWVudCwgYXBpVmVyc2lvbjogc3RyaW5nKSB7XG4gICAgc3VwZXIoaHR0cENsaWVudCwgJ3Byb2R1Y3RzJywgYXBpVmVyc2lvbik7XG4gIH1cbn0iXX0=
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { BaseFiscalapiService } from './base-fiscalapi-service';
|
|
2
|
+
/**
|
|
3
|
+
* Implementación del servicio de archivos fiscales
|
|
4
|
+
*/
|
|
5
|
+
export class TaxFileService extends BaseFiscalapiService {
|
|
6
|
+
/**
|
|
7
|
+
* Crea una nueva instancia del servicio de archivos fiscales
|
|
8
|
+
* @param {IFiscalapiHttpClient} httpClient - Cliente HTTP
|
|
9
|
+
* @param {string} apiVersion - Versión de la API
|
|
10
|
+
*/
|
|
11
|
+
constructor(httpClient, apiVersion) {
|
|
12
|
+
super(httpClient, 'tax-files', apiVersion);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Obtiene el último par de ids de certificados válidos y vigente de una persona. Es decir sus certificados por defecto (ids)
|
|
16
|
+
*
|
|
17
|
+
* @param personId - Id de la persona propietaria de los certificados
|
|
18
|
+
* @returns Promise que resuelve en una respuesta API con una lista de un par de certificados, pero sin contenido, solo sus Ids
|
|
19
|
+
*/
|
|
20
|
+
async getDefaultReferences(personId) {
|
|
21
|
+
// GET /api/v4/tax-files/{personId}/default-references
|
|
22
|
+
const path = `${personId}/default-references`;
|
|
23
|
+
const endpoint = this.buildEndpoint(path);
|
|
24
|
+
return this.httpClient.getAsync(endpoint);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Obtiene el último par de certificados válidos y vigente de una persona. Es decir sus certificados por defecto
|
|
28
|
+
*
|
|
29
|
+
* @param personId - Id de la persona dueña de los certificados
|
|
30
|
+
* @returns Promise que resuelve en una respuesta API con una lista de un par de certificados
|
|
31
|
+
*/
|
|
32
|
+
async getDefaultValues(personId) {
|
|
33
|
+
// GET /api/v4/tax-files/{personId}/default-values
|
|
34
|
+
const path = `${personId}/default-values`;
|
|
35
|
+
const endpoint = this.buildEndpoint(path);
|
|
36
|
+
return this.httpClient.getAsync(endpoint);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LWZpbGUtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy90YXgtZmlsZS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR2hFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWUsU0FBUSxvQkFBNkI7SUFDL0Q7Ozs7T0FJRztJQUNILFlBQVksVUFBZ0MsRUFBRSxVQUFrQjtRQUM5RCxLQUFLLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBR0M7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsb0JBQW9CLENBQUMsUUFBZ0I7UUFDekMsc0RBQXNEO1FBQ3RELE1BQU0sSUFBSSxHQUFHLEdBQUcsUUFBUSxxQkFBcUIsQ0FBQztRQUM5QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQVksUUFBUSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7OztNQUtFO0lBQ0ssS0FBSyxDQUFDLGdCQUFnQixDQUFDLFFBQWdCO1FBQzVDLGtEQUFrRDtRQUNsRCxNQUFNLElBQUksR0FBRyxHQUFHLFFBQVEsaUJBQWlCLENBQUM7UUFDMUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFZLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRheEZpbGUgfSBmcm9tICcuLi9tb2RlbHMvdGF4LWZpbGUnO1xuaW1wb3J0IHsgSUZpc2NhbGFwaUh0dHBDbGllbnQgfSBmcm9tICcuLi9odHRwL2Zpc2NhbGFwaS1odHRwLWNsaWVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXBpUmVzcG9uc2UgfSBmcm9tICcuLi9jb21tb24vYXBpLXJlc3BvbnNlJztcbmltcG9ydCB7IEZpbGVSZXNwb25zZSB9IGZyb20gJy4uL2NvbW1vbi9maWxlLXJlc3BvbnNlJztcbmltcG9ydCB7IEJhc2VGaXNjYWxhcGlTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlLWZpc2NhbGFwaS1zZXJ2aWNlJztcbmltcG9ydCB7IElUYXhGaWxlU2VydmljZSB9IGZyb20gJy4uJztcblxuLyoqXG4gKiBJbXBsZW1lbnRhY2nDs24gZGVsIHNlcnZpY2lvIGRlIGFyY2hpdm9zIGZpc2NhbGVzXG4gKi9cbmV4cG9ydCBjbGFzcyBUYXhGaWxlU2VydmljZSBleHRlbmRzIEJhc2VGaXNjYWxhcGlTZXJ2aWNlPFRheEZpbGU+IGltcGxlbWVudHMgSVRheEZpbGVTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIENyZWEgdW5hIG51ZXZhIGluc3RhbmNpYSBkZWwgc2VydmljaW8gZGUgYXJjaGl2b3MgZmlzY2FsZXNcbiAgICogQHBhcmFtIHtJRmlzY2FsYXBpSHR0cENsaWVudH0gaHR0cENsaWVudCAtIENsaWVudGUgSFRUUFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBpVmVyc2lvbiAtIFZlcnNpw7NuIGRlIGxhIEFQSVxuICAgKi9cbiAgY29uc3RydWN0b3IoaHR0cENsaWVudDogSUZpc2NhbGFwaUh0dHBDbGllbnQsIGFwaVZlcnNpb246IHN0cmluZykge1xuICAgIHN1cGVyKGh0dHBDbGllbnQsICd0YXgtZmlsZXMnLCBhcGlWZXJzaW9uKTtcbiAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBPYnRpZW5lIGVsIMO6bHRpbW8gcGFyIGRlIGlkcyBkZSBjZXJ0aWZpY2Fkb3MgdsOhbGlkb3MgeSB2aWdlbnRlIGRlIHVuYSBwZXJzb25hLiBFcyBkZWNpciBzdXMgY2VydGlmaWNhZG9zIHBvciBkZWZlY3RvIChpZHMpXG4gICAgICogXG4gICAgICogQHBhcmFtIHBlcnNvbklkIC0gSWQgZGUgbGEgcGVyc29uYSBwcm9waWV0YXJpYSBkZSBsb3MgY2VydGlmaWNhZG9zXG4gICAgICogQHJldHVybnMgUHJvbWlzZSBxdWUgcmVzdWVsdmUgZW4gdW5hIHJlc3B1ZXN0YSBBUEkgY29uIHVuYSBsaXN0YSBkZSB1biBwYXIgZGUgY2VydGlmaWNhZG9zLCBwZXJvIHNpbiBjb250ZW5pZG8sIHNvbG8gc3VzIElkc1xuICAgICAqL1xuICAgIGFzeW5jIGdldERlZmF1bHRSZWZlcmVuY2VzKHBlcnNvbklkOiBzdHJpbmcpOiBQcm9taXNlPEFwaVJlc3BvbnNlPFRheEZpbGVbXT4+IHtcbiAgICAgIC8vIEdFVCAvYXBpL3Y0L3RheC1maWxlcy97cGVyc29uSWR9L2RlZmF1bHQtcmVmZXJlbmNlc1xuICAgICAgY29uc3QgcGF0aCA9IGAke3BlcnNvbklkfS9kZWZhdWx0LXJlZmVyZW5jZXNgO1xuICAgICAgY29uc3QgZW5kcG9pbnQgPSB0aGlzLmJ1aWxkRW5kcG9pbnQocGF0aCk7XG4gICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldEFzeW5jPFRheEZpbGVbXT4oZW5kcG9pbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICogT2J0aWVuZSBlbCDDumx0aW1vIHBhciBkZSBjZXJ0aWZpY2Fkb3MgdsOhbGlkb3MgeSB2aWdlbnRlIGRlIHVuYSBwZXJzb25hLiBFcyBkZWNpciBzdXMgY2VydGlmaWNhZG9zIHBvciBkZWZlY3RvXG4gICAgKiBcbiAgICAqIEBwYXJhbSBwZXJzb25JZCAtIElkIGRlIGxhIHBlcnNvbmEgZHVlw7FhIGRlIGxvcyBjZXJ0aWZpY2Fkb3NcbiAgICAqIEByZXR1cm5zIFByb21pc2UgcXVlIHJlc3VlbHZlIGVuIHVuYSByZXNwdWVzdGEgQVBJIGNvbiB1bmEgbGlzdGEgZGUgdW4gcGFyIGRlIGNlcnRpZmljYWRvc1xuICAgICovXG4gICAgcHVibGljIGFzeW5jIGdldERlZmF1bHRWYWx1ZXMocGVyc29uSWQ6IHN0cmluZyk6IFByb21pc2U8QXBpUmVzcG9uc2U8VGF4RmlsZVtdPj4ge1xuICAgICAgLy8gR0VUIC9hcGkvdjQvdGF4LWZpbGVzL3twZXJzb25JZH0vZGVmYXVsdC12YWx1ZXNcbiAgICAgIGNvbnN0IHBhdGggPSBgJHtwZXJzb25JZH0vZGVmYXVsdC12YWx1ZXNgO1xuICAgICAgY29uc3QgZW5kcG9pbnQgPSB0aGlzLmJ1aWxkRW5kcG9pbnQocGF0aCk7XG4gICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldEFzeW5jPFRheEZpbGVbXT4oZW5kcG9pbnQpO1xuICAgIH1cbn0iXX0=
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { DateTime } from 'luxon';
|
|
2
|
+
/**
|
|
3
|
+
* Formato de fecha SAT (para facturas mexicanas)
|
|
4
|
+
*/
|
|
5
|
+
export const SAT_DATE_FORMAT = 'yyyy-MM-dd\'T\'HH:mm:ss';
|
|
6
|
+
/**
|
|
7
|
+
* Formatea una fecha de acuerdo al formato de fecha SAT
|
|
8
|
+
* @param {Date|string|DateTime} date - Fecha a formatear
|
|
9
|
+
* @returns {string} Cadena de fecha formateada
|
|
10
|
+
*/
|
|
11
|
+
export function formatSatDate(date) {
|
|
12
|
+
if (typeof date === 'string') {
|
|
13
|
+
return DateTime.fromISO(date).toFormat(SAT_DATE_FORMAT);
|
|
14
|
+
}
|
|
15
|
+
else if (date instanceof Date) {
|
|
16
|
+
return DateTime.fromJSDate(date).toFormat(SAT_DATE_FORMAT);
|
|
17
|
+
}
|
|
18
|
+
else if (date instanceof DateTime) {
|
|
19
|
+
return date.toFormat(SAT_DATE_FORMAT);
|
|
20
|
+
}
|
|
21
|
+
throw new Error('Formato de fecha inválido');
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Analiza una cadena de formato de fecha SAT en un objeto DateTime
|
|
25
|
+
* @param {string} dateStr - Cadena de fecha en formato SAT
|
|
26
|
+
* @returns {DateTime} Objeto DateTime
|
|
27
|
+
*/
|
|
28
|
+
export function parseSatDate(dateStr) {
|
|
29
|
+
return DateTime.fromFormat(dateStr, SAT_DATE_FORMAT);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9kYXRlLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFHakM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcseUJBQXlCLENBQUM7QUFFekQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsSUFBOEI7SUFDMUQsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM3QixPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzFELENBQUM7U0FBTSxJQUFJLElBQUksWUFBWSxJQUFJLEVBQUUsQ0FBQztRQUNoQyxPQUFPLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzdELENBQUM7U0FBTSxJQUFJLElBQUksWUFBWSxRQUFRLEVBQUUsQ0FBQztRQUNwQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsT0FBZTtJQUN4QyxPQUFPLFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQ3ZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIgXG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gJ2x1eG9uJztcblxuXG4vKipcbiAqIEZvcm1hdG8gZGUgZmVjaGEgU0FUIChwYXJhIGZhY3R1cmFzIG1leGljYW5hcylcbiAqL1xuZXhwb3J0IGNvbnN0IFNBVF9EQVRFX0ZPUk1BVCA9ICd5eXl5LU1NLWRkXFwnVFxcJ0hIOm1tOnNzJztcblxuLyoqXG4gKiBGb3JtYXRlYSB1bmEgZmVjaGEgZGUgYWN1ZXJkbyBhbCBmb3JtYXRvIGRlIGZlY2hhIFNBVFxuICogQHBhcmFtIHtEYXRlfHN0cmluZ3xEYXRlVGltZX0gZGF0ZSAtIEZlY2hhIGEgZm9ybWF0ZWFyXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBDYWRlbmEgZGUgZmVjaGEgZm9ybWF0ZWFkYVxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0U2F0RGF0ZShkYXRlOiBEYXRlIHwgc3RyaW5nIHwgRGF0ZVRpbWUpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIERhdGVUaW1lLmZyb21JU08oZGF0ZSkudG9Gb3JtYXQoU0FUX0RBVEVfRk9STUFUKTtcbiAgfSBlbHNlIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBEYXRlVGltZS5mcm9tSlNEYXRlKGRhdGUpLnRvRm9ybWF0KFNBVF9EQVRFX0ZPUk1BVCk7XG4gIH0gZWxzZSBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGVUaW1lKSB7XG4gICAgcmV0dXJuIGRhdGUudG9Gb3JtYXQoU0FUX0RBVEVfRk9STUFUKTtcbiAgfVxuICBcbiAgdGhyb3cgbmV3IEVycm9yKCdGb3JtYXRvIGRlIGZlY2hhIGludsOhbGlkbycpO1xufVxuXG4vKipcbiAqIEFuYWxpemEgdW5hIGNhZGVuYSBkZSBmb3JtYXRvIGRlIGZlY2hhIFNBVCBlbiB1biBvYmpldG8gRGF0ZVRpbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRlU3RyIC0gQ2FkZW5hIGRlIGZlY2hhIGVuIGZvcm1hdG8gU0FUXG4gKiBAcmV0dXJucyB7RGF0ZVRpbWV9IE9iamV0byBEYXRlVGltZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTYXREYXRlKGRhdGVTdHI6IHN0cmluZyk6IERhdGVUaW1lIHtcbiAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbUZvcm1hdChkYXRlU3RyLCBTQVRfREFURV9GT1JNQVQpO1xuICB9XG4gICJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codifica una cadena a base64
|
|
3
|
+
* @param {string} text - Texto a codificar
|
|
4
|
+
* @returns {string} Cadena codificada en base64
|
|
5
|
+
*/
|
|
6
|
+
export function encodeToBase64(text) {
|
|
7
|
+
return Buffer.from(text).toString('base64');
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Decodifica una cadena base64
|
|
11
|
+
* @param {string} base64Text - Cadena codificada en base64
|
|
12
|
+
* @returns {string} Cadena decodificada
|
|
13
|
+
*/
|
|
14
|
+
export function decodeFromBase64(base64Text) {
|
|
15
|
+
return Buffer.from(base64Text, 'base64').toString('utf8');
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RpbmctdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvZW5jb2RpbmctdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0E7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsSUFBWTtJQUN2QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFVBQWtCO0lBQ2pELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIgXG4vKipcbiAqIENvZGlmaWNhIHVuYSBjYWRlbmEgYSBiYXNlNjRcbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gVGV4dG8gYSBjb2RpZmljYXJcbiAqIEByZXR1cm5zIHtzdHJpbmd9IENhZGVuYSBjb2RpZmljYWRhIGVuIGJhc2U2NFxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlVG9CYXNlNjQodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odGV4dCkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICB9XG4gIFxuICAvKipcbiAgICogRGVjb2RpZmljYSB1bmEgY2FkZW5hIGJhc2U2NFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmFzZTY0VGV4dCAtIENhZGVuYSBjb2RpZmljYWRhIGVuIGJhc2U2NFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBDYWRlbmEgZGVjb2RpZmljYWRhXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gZGVjb2RlRnJvbUJhc2U2NChiYXNlNjRUZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShiYXNlNjRUZXh0LCAnYmFzZTY0JykudG9TdHJpbmcoJ3V0ZjgnKTtcbiAgfSJdfQ==
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comprueba si un valor es nulo o indefinido
|
|
3
|
+
* @param {any} value - Valor a comprobar
|
|
4
|
+
* @returns {boolean} Verdadero si el valor es nulo o indefinido, falso en caso contrario
|
|
5
|
+
*/
|
|
6
|
+
export function isNullOrUndefined(value) {
|
|
7
|
+
return value === null || value === undefined;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Comprueba si una cadena es nula, indefinida o vacía
|
|
11
|
+
* @param {string|null|undefined} value - Cadena a comprobar
|
|
12
|
+
* @returns {boolean} Verdadero si la cadena es nula, indefinida o vacía, falso en caso contrario
|
|
13
|
+
*/
|
|
14
|
+
export function isNullOrEmpty(value) {
|
|
15
|
+
return isNullOrUndefined(value) || value === '';
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Comprueba si un array es nulo, indefinido o vacío
|
|
19
|
+
* @param {T[]|null|undefined} value - Array a comprobar
|
|
20
|
+
* @returns {boolean} Verdadero si el array es nulo, indefinido o vacío, falso en caso contrario
|
|
21
|
+
* @template T
|
|
22
|
+
*/
|
|
23
|
+
export function isArrayNullOrEmpty(value) {
|
|
24
|
+
return isNullOrUndefined(value) || (Array.isArray(value) && value.length === 0);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Comprueba si un objeto es nulo, indefinido o no tiene propiedades
|
|
28
|
+
* @param {object|null|undefined} value - Objeto a comprobar
|
|
29
|
+
* @returns {boolean} Verdadero si el objeto es nulo, indefinido o no tiene propiedades, falso en caso contrario
|
|
30
|
+
*/
|
|
31
|
+
export function isObjectEmpty(value) {
|
|
32
|
+
return isNullOrUndefined(value) || (typeof value === 'object' && value !== null && Object.keys(value).length === 0);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy92YWxpZGF0aW9uLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsS0FBVTtJQUN4QyxPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQztBQUMvQyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBZ0M7SUFDNUQsT0FBTyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO0FBQ2xELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBSSxLQUE2QjtJQUNqRSxPQUFPLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2xGLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUFnQztJQUM1RCxPQUFPLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdEgsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiBcbi8qKlxuICogQ29tcHJ1ZWJhIHNpIHVuIHZhbG9yIGVzIG51bG8gbyBpbmRlZmluaWRvXG4gKiBAcGFyYW0ge2FueX0gdmFsdWUgLSBWYWxvciBhIGNvbXByb2JhclxuICogQHJldHVybnMge2Jvb2xlYW59IFZlcmRhZGVybyBzaSBlbCB2YWxvciBlcyBudWxvIG8gaW5kZWZpbmlkbywgZmFsc28gZW4gY2FzbyBjb250cmFyaW9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZDtcbiAgfVxuICBcbiAgLyoqXG4gICAqIENvbXBydWViYSBzaSB1bmEgY2FkZW5hIGVzIG51bGEsIGluZGVmaW5pZGEgbyB2YWPDrWFcbiAgICogQHBhcmFtIHtzdHJpbmd8bnVsbHx1bmRlZmluZWR9IHZhbHVlIC0gQ2FkZW5hIGEgY29tcHJvYmFyXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBWZXJkYWRlcm8gc2kgbGEgY2FkZW5hIGVzIG51bGEsIGluZGVmaW5pZGEgbyB2YWPDrWEsIGZhbHNvIGVuIGNhc28gY29udHJhcmlvXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JFbXB0eSh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc051bGxPclVuZGVmaW5lZCh2YWx1ZSkgfHwgdmFsdWUgPT09ICcnO1xuICB9XG4gIFxuICAvKipcbiAgICogQ29tcHJ1ZWJhIHNpIHVuIGFycmF5IGVzIG51bG8sIGluZGVmaW5pZG8gbyB2YWPDrW9cbiAgICogQHBhcmFtIHtUW118bnVsbHx1bmRlZmluZWR9IHZhbHVlIC0gQXJyYXkgYSBjb21wcm9iYXJcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFZlcmRhZGVybyBzaSBlbCBhcnJheSBlcyBudWxvLCBpbmRlZmluaWRvIG8gdmFjw61vLCBmYWxzbyBlbiBjYXNvIGNvbnRyYXJpb1xuICAgKiBAdGVtcGxhdGUgVFxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzQXJyYXlOdWxsT3JFbXB0eTxUPih2YWx1ZTogVFtdIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc051bGxPclVuZGVmaW5lZCh2YWx1ZSkgfHwgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDb21wcnVlYmEgc2kgdW4gb2JqZXRvIGVzIG51bG8sIGluZGVmaW5pZG8gbyBubyB0aWVuZSBwcm9waWVkYWRlc1xuICAgKiBAcGFyYW0ge29iamVjdHxudWxsfHVuZGVmaW5lZH0gdmFsdWUgLSBPYmpldG8gYSBjb21wcm9iYXJcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFZlcmRhZGVybyBzaSBlbCBvYmpldG8gZXMgbnVsbywgaW5kZWZpbmlkbyBvIG5vIHRpZW5lIHByb3BpZWRhZGVzLCBmYWxzbyBlbiBjYXNvIGNvbnRyYXJpb1xuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0RW1wdHkodmFsdWU6IG9iamVjdCB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNOdWxsT3JVbmRlZmluZWQodmFsdWUpIHx8ICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDApO1xuICB9Il19
|