fiscalapi
Version:
SDK de Node.js para FiscalAPI
66 lines • 8.12 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.FiscalapiHttpClientFactory = void 0;
const axios_1 = __importDefault(require("axios"));
const https_1 = __importDefault(require("https"));
const fiscalapi_http_client_1 = require("./fiscalapi-http-client");
/**
* Fábrica para crear clientes HTTP para FiscalAPI
*/
class FiscalapiHttpClientFactory {
/**
* Crea un nuevo cliente HTTP para FiscalAPI
* @param {FiscalapiSettings} settings - Configuración de FiscalAPI
* @returns {IFiscalapiHttpClient} Instancia del cliente HTTP
* @throws {Error} Si la configuración es nula o indefinida
*/
static create(settings) {
if (!settings) {
throw new Error('La configuración no puede ser nula o indefinida');
}
// Crea una clave única para cachear el cliente
const clientKey = `${settings.apiKey}:${settings.tenant}:${settings.apiUrl}`;
// Devuelve el cliente cacheado si existe
if (this.clients.has(clientKey)) {
return this.clients.get(clientKey);
}
// Crea una instancia de Axios configurada
const axiosInstance = this.createAxiosInstance(settings);
// Crea y cachea el cliente
const client = new fiscalapi_http_client_1.FiscalapiHttpClient(axiosInstance, settings);
this.clients.set(clientKey, client);
return client;
}
/**
* Crea una instancia de Axios configurada según los ajustes de FiscalAPI
* @param {FiscalapiSettings} settings - Configuración de FiscalAPI
* @returns {AxiosInstance} Instancia de Axios configurada
* @private
*/
static createAxiosInstance(settings) {
// Agente HTTPS que ignora la validación del certificado autofirmado si está en modo depuración
const httpsAgent = new https_1.default.Agent({
//rejectUnauthorized: !settings.debug
rejectUnauthorized: false, // Cambiado a true para producción
});
// Crea y configura una nueva instancia de axios
return axios_1.default.create({
baseURL: settings.apiUrl,
timeout: 30000, // 30 segundos
headers: {
'X-API-KEY': settings.apiKey,
'X-TENANT-KEY': settings.tenant,
'X-TIMEZONE': settings.timeZone || 'America/Mexico_City',
'Accept': 'application/json',
'Content-Type': 'application/json'
},
httpsAgent: httpsAgent
});
}
}
exports.FiscalapiHttpClientFactory = FiscalapiHttpClientFactory;
FiscalapiHttpClientFactory.clients = new Map();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlzY2FsYXBpLWh0dHAtY2xpZW50LWZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaHR0cC9maXNjYWxhcGktaHR0cC1jbGllbnQtZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrREFBNkM7QUFDN0Msa0RBQTBCO0FBRTFCLG1FQUE4RDtBQUc5RDs7R0FFRztBQUNILE1BQWEsMEJBQTBCO0lBR3JDOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUEyQjtRQUM5QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUVELCtDQUErQztRQUMvQyxNQUFNLFNBQVMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFN0UseUNBQXlDO1FBQ3pDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBRSxDQUFDO1FBQ3RDLENBQUM7UUFFRCwwQ0FBMEM7UUFDMUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXpELDJCQUEyQjtRQUMzQixNQUFNLE1BQU0sR0FBRyxJQUFJLDJDQUFtQixDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFcEMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQTJCO1FBQzVELCtGQUErRjtRQUMvRixNQUFNLFVBQVUsR0FBRyxJQUFJLGVBQUssQ0FBQyxLQUFLLENBQUM7WUFDakMscUNBQXFDO1lBQ3JDLGtCQUFrQixFQUFFLEtBQUssRUFBRSxrQ0FBa0M7U0FDOUQsQ0FBQyxDQUFDO1FBRUgsZ0RBQWdEO1FBQ2hELE9BQU8sZUFBSyxDQUFDLE1BQU0sQ0FBQztZQUNsQixPQUFPLEVBQUUsUUFBUSxDQUFDLE1BQU07WUFDeEIsT0FBTyxFQUFFLEtBQUssRUFBRSxjQUFjO1lBQzlCLE9BQU8sRUFBRTtnQkFDUCxXQUFXLEVBQUUsUUFBUSxDQUFDLE1BQU07Z0JBQzVCLGNBQWMsRUFBRSxRQUFRLENBQUMsTUFBTTtnQkFDL0IsWUFBWSxFQUFFLFFBQVEsQ0FBQyxRQUFRLElBQUkscUJBQXFCO2dCQUN4RCxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixjQUFjLEVBQUUsa0JBQWtCO2FBQ25DO1lBQ0QsVUFBVSxFQUFFLFVBQVU7U0FDdkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUExREgsZ0VBMkRDO0FBMURnQixrQ0FBTyxHQUFzQyxJQUFJLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGF4aW9zLCB7IEF4aW9zSW5zdGFuY2UgfSBmcm9tICdheGlvcyc7XG5pbXBvcnQgaHR0cHMgZnJvbSAnaHR0cHMnO1xuaW1wb3J0IHsgRmlzY2FsYXBpU2V0dGluZ3MgfSBmcm9tICcuLi9jb21tb24vZmlzY2FsYXBpLXNldHRpbmdzJztcbmltcG9ydCB7IEZpc2NhbGFwaUh0dHBDbGllbnQgfSBmcm9tICcuL2Zpc2NhbGFwaS1odHRwLWNsaWVudCc7XG5pbXBvcnQgeyBJRmlzY2FsYXBpSHR0cENsaWVudCB9IGZyb20gJy4vZmlzY2FsYXBpLWh0dHAtY2xpZW50LmludGVyZmFjZSc7XG5cbi8qKlxuICogRsOhYnJpY2EgcGFyYSBjcmVhciBjbGllbnRlcyBIVFRQIHBhcmEgRmlzY2FsQVBJXG4gKi9cbmV4cG9ydCBjbGFzcyBGaXNjYWxhcGlIdHRwQ2xpZW50RmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIGNsaWVudHM6IE1hcDxzdHJpbmcsIElGaXNjYWxhcGlIdHRwQ2xpZW50PiA9IG5ldyBNYXAoKTtcblxuICAvKipcbiAgICogQ3JlYSB1biBudWV2byBjbGllbnRlIEhUVFAgcGFyYSBGaXNjYWxBUElcbiAgICogQHBhcmFtIHtGaXNjYWxhcGlTZXR0aW5nc30gc2V0dGluZ3MgLSBDb25maWd1cmFjacOzbiBkZSBGaXNjYWxBUElcbiAgICogQHJldHVybnMge0lGaXNjYWxhcGlIdHRwQ2xpZW50fSBJbnN0YW5jaWEgZGVsIGNsaWVudGUgSFRUUFxuICAgKiBAdGhyb3dzIHtFcnJvcn0gU2kgbGEgY29uZmlndXJhY2nDs24gZXMgbnVsYSBvIGluZGVmaW5pZGFcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlKHNldHRpbmdzOiBGaXNjYWxhcGlTZXR0aW5ncyk6IElGaXNjYWxhcGlIdHRwQ2xpZW50IHtcbiAgICBpZiAoIXNldHRpbmdzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0xhIGNvbmZpZ3VyYWNpw7NuIG5vIHB1ZWRlIHNlciBudWxhIG8gaW5kZWZpbmlkYScpO1xuICAgIH1cblxuICAgIC8vIENyZWEgdW5hIGNsYXZlIMO6bmljYSBwYXJhIGNhY2hlYXIgZWwgY2xpZW50ZVxuICAgIGNvbnN0IGNsaWVudEtleSA9IGAke3NldHRpbmdzLmFwaUtleX06JHtzZXR0aW5ncy50ZW5hbnR9OiR7c2V0dGluZ3MuYXBpVXJsfWA7XG5cbiAgICAvLyBEZXZ1ZWx2ZSBlbCBjbGllbnRlIGNhY2hlYWRvIHNpIGV4aXN0ZVxuICAgIGlmICh0aGlzLmNsaWVudHMuaGFzKGNsaWVudEtleSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmNsaWVudHMuZ2V0KGNsaWVudEtleSkhO1xuICAgIH1cblxuICAgIC8vIENyZWEgdW5hIGluc3RhbmNpYSBkZSBBeGlvcyBjb25maWd1cmFkYVxuICAgIGNvbnN0IGF4aW9zSW5zdGFuY2UgPSB0aGlzLmNyZWF0ZUF4aW9zSW5zdGFuY2Uoc2V0dGluZ3MpO1xuXG4gICAgLy8gQ3JlYSB5IGNhY2hlYSBlbCBjbGllbnRlXG4gICAgY29uc3QgY2xpZW50ID0gbmV3IEZpc2NhbGFwaUh0dHBDbGllbnQoYXhpb3NJbnN0YW5jZSwgc2V0dGluZ3MpO1xuICAgIHRoaXMuY2xpZW50cy5zZXQoY2xpZW50S2V5LCBjbGllbnQpO1xuXG4gICAgcmV0dXJuIGNsaWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhIHVuYSBpbnN0YW5jaWEgZGUgQXhpb3MgY29uZmlndXJhZGEgc2Vnw7puIGxvcyBhanVzdGVzIGRlIEZpc2NhbEFQSVxuICAgKiBAcGFyYW0ge0Zpc2NhbGFwaVNldHRpbmdzfSBzZXR0aW5ncyAtIENvbmZpZ3VyYWNpw7NuIGRlIEZpc2NhbEFQSVxuICAgKiBAcmV0dXJucyB7QXhpb3NJbnN0YW5jZX0gSW5zdGFuY2lhIGRlIEF4aW9zIGNvbmZpZ3VyYWRhXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBjcmVhdGVBeGlvc0luc3RhbmNlKHNldHRpbmdzOiBGaXNjYWxhcGlTZXR0aW5ncyk6IEF4aW9zSW5zdGFuY2Uge1xuICAgIC8vIEFnZW50ZSBIVFRQUyBxdWUgaWdub3JhIGxhIHZhbGlkYWNpw7NuIGRlbCBjZXJ0aWZpY2FkbyBhdXRvZmlybWFkbyBzaSBlc3TDoSBlbiBtb2RvIGRlcHVyYWNpw7NuXG4gICAgY29uc3QgaHR0cHNBZ2VudCA9IG5ldyBodHRwcy5BZ2VudCh7XG4gICAgICAvL3JlamVjdFVuYXV0aG9yaXplZDogIXNldHRpbmdzLmRlYnVnXG4gICAgICByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlLCAvLyBDYW1iaWFkbyBhIHRydWUgcGFyYSBwcm9kdWNjacOzblxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYSB5IGNvbmZpZ3VyYSB1bmEgbnVldmEgaW5zdGFuY2lhIGRlIGF4aW9zXG4gICAgcmV0dXJuIGF4aW9zLmNyZWF0ZSh7XG4gICAgICBiYXNlVVJMOiBzZXR0aW5ncy5hcGlVcmwsXG4gICAgICB0aW1lb3V0OiAzMDAwMCwgLy8gMzAgc2VndW5kb3NcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ1gtQVBJLUtFWSc6IHNldHRpbmdzLmFwaUtleSxcbiAgICAgICAgJ1gtVEVOQU5ULUtFWSc6IHNldHRpbmdzLnRlbmFudCxcbiAgICAgICAgJ1gtVElNRVpPTkUnOiBzZXR0aW5ncy50aW1lWm9uZSB8fCAnQW1lcmljYS9NZXhpY29fQ2l0eScsXG4gICAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgIH0sXG4gICAgICBodHRwc0FnZW50OiBodHRwc0FnZW50XG4gICAgfSk7XG4gIH1cbn0iXX0=