UNPKG

facturacionelectronicapy-setapi

Version:

Módulo NodeJs para enviar el Archivo XML Firmado para la Facturación Electrónica en Paraguay a la SET

869 lines (862 loc) 69.5 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const jszip_1 = __importDefault(require("jszip")); const PKCS12_1 = __importDefault(require("./PKCS12")); const xml2js_1 = __importDefault(require("xml2js")); const fs_1 = __importDefault(require("fs")); const worker_threads_1 = require("worker_threads"); const https = require("https"); const axios = require("axios"); class SET { /** * Crea los certificados para authenticarse a la SET. * @param certificado * @param passphase * / /*auth(env: "test" | "prod", certificado: any, passphase: string) { pkcs12.openFile(certificado, passphase); this.env = env; this.cert = pkcs12.getCertificate(); this.key = pkcs12.getPrivateKey(); } */ abrir(certificado, passphase) { PKCS12_1.default.openFile(certificado, passphase); this.cert = PKCS12_1.default.getCertificate(); this.key = PKCS12_1.default.getPrivateKey(); } /** * Consulta un Documento Electronico por CDC * * @param cdc * @returns */ consulta(id, cdc, env, certificado, passphase, config) { return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { try { let defaultConfig = { debug: false, timeout: 90000, }; defaultConfig = Object.assign(defaultConfig, config); this.abrir(certificado, passphase); let url = "https://sifen.set.gov.py/de/ws/consultas/consulta.wsdl"; if (env == "test") { url = "https://sifen-test.set.gov.py/de/ws/consultas/consulta.wsdl"; } //console.log("URL invocado...", url); if (!this.cert) { reject("Antes debe Autenticarse"); } if (!this.key) { reject("Antes debe autenticarse"); } const httpsAgent = new https.Agent({ cert: Buffer.from(this.cert, "utf8"), key: Buffer.from(this.key, "utf8"), }); let soapXMLData = `<?xml version="1.0" encoding="UTF-8"?>\n\ <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">\n\ <env:Header/>\n\ <env:Body>\n\ <rEnviConsDeRequest xmlns="http://ekuatia.set.gov.py/sifen/xsd">\n\ <dId>${id}</dId>\n\ <dCDC>${cdc}</dCDC>\n\ </rEnviConsDeRequest>\n\ </env:Body>\n\ </env:Envelope>\n`; soapXMLData = this.normalizeXML(soapXMLData); if (defaultConfig.debug === true) { console.log("soapXMLData", soapXMLData); } if (defaultConfig.saveRequestFile) { const json = fs_1.default.writeFileSync(defaultConfig.saveRequestFile, soapXMLData); } axios .post(`${url}`, soapXMLData, { headers: { "User-Agent": "facturaSend", "Content-Type": "application/xml; charset=utf-8", }, httpsAgent, timeout: defaultConfig.timeout, }) .then((respuestaSuccess) => { var parser = new xml2js_1.default.Parser({ explicitArray: false }); //console.log("statuscode", respuestaSuccess); //console.log(respuestaSuccess.status); if (respuestaSuccess.status == 200) { if ((respuestaSuccess.data + "").startsWith("<?xml")) { parser .parseStringPromise(respuestaSuccess.data) .then(function (result) { const resultData = result["env:Envelope"]["env:Body"]; //delete resultData.$; resultData.id = id; resolve(resultData); }); } else { if ((respuestaSuccess.data + "").startsWith("<html>")) { reject(new Error("Error de la SET BIG-IP logout page")); } else { reject(new Error(respuestaSuccess.data + "")); } } } else { reject(new Error("Error de conexión con la SET")); } }) .catch((err) => { if (err && err.response && err.response.data) { var xmlResponse = err.response.data; var parser = new xml2js_1.default.Parser({ explicitArray: false }); parser .parseStringPromise(xmlResponse) .then(function (result) { const resultData = result["env:Envelope"]["env:Body"]; resultData.id = id; resolve(resultData); }) .catch(function (err) { reject(err); }); } else { reject(err); } }); } catch (error) { reject(error); } })); } /** * Consulta un lote en la SET * @param id * @param numeroProtocolo * @returns */ consultaLote2222(id, numeroProtocolo, env, certificado, passphase, config) { return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { try { let defaultConfig = { debug: false, timeout: 90000, }; //console.log("El config del params viene ", config); defaultConfig = Object.assign(defaultConfig, config); let url = "https://sifen.set.gov.py/de/ws/consultas/consulta-lote.wsdl"; if (env == "test") { url = "https://sifen-test.set.gov.py/de/ws/consultas/consulta-lote.wsdl"; } /*this.abrir(certificado, passphase); if (!this.cert) { reject("Antes debe Autenticarse"); } if (!this.key) { reject("Antes debe autenticarse"); }*/ /*const httpsAgent = new https.Agent({ cert: Buffer.from(this.cert, "utf8"), key: Buffer.from(this.key, "utf8"), });*/ let soapXMLData = `<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">\n\ <env:Header/>\n\ <env:Body>\n\ <rEnviConsLoteDe xmlns="http://ekuatia.set.gov.py/sifen/xsd">\n\ <dId>${id}</dId>\n\ <dProtConsLote>${numeroProtocolo}</dProtConsLote>\n\ </rEnviConsLoteDe>\n\ </env:Body>\n\ </env:Envelope>\n`; soapXMLData = this.normalizeXML(soapXMLData); if (defaultConfig.debug === true) { console.log("soapXMLData", soapXMLData); } if (defaultConfig.saveRequestFile) { const json = fs_1.default.writeFileSync(defaultConfig.saveRequestFile, soapXMLData); } console.log("soapXMLData", { url, soapXMLData, id, certificado, passphase, timeout: defaultConfig.timeout, path: "./workerConsultaSET.ts", }); const runService = (WorkerData) => { return new Promise((resolve, reject) => { const worker = new worker_threads_1.Worker("./workerConsultaLote", { workerData: { url, soapXMLData, certificado, passphase, id, timeout: defaultConfig.timeout, path: "./workerConsultaLote.ts", }, }); worker.on("message", resolve); worker.on("error", reject); worker.on("exit", (code) => { if (code !== 0) reject(new Error(`stopped with ${code} exit code`)); }); }); }; const run = () => __awaiter(this, void 0, void 0, function* () { const result = yield runService("hello node.js"); console.log(result); }); run().catch((err) => console.error(err)); /* axios .post(`${url}`, soapXMLData, { headers: { "User-Agent": "facturaSend", "Content-Type": "application/xml; charset=utf-8", }, httpsAgent, timeout: defaultConfig.timeout, }) .then((respuestaSuccess: any) => { var parser = new xml2js.Parser({ explicitArray: false }); if (respuestaSuccess.status == 200) { if ((respuestaSuccess.data + "").startsWith("<?xml")) { parser .parseStringPromise(respuestaSuccess.data) .then(function (result) { const resultData = JSON.parse( JSON.stringify(result["env:Envelope"]["env:Body"]) ); resultData.id = id; resolve(resultData); }); } else { if ((respuestaSuccess.data + "").startsWith("<html>")) { reject(new Error("Error de la SET BIG-IP logout page")); } else { reject(new Error(respuestaSuccess.data + "")); } } } else { reject(new Error("Error de conexión con la SET")); } }) .catch((err: any) => { console.log("CAtch en error 1111", err); if (err && err.response && err.response.data) { var xmlResponse = err.response.data; var parser = new xml2js.Parser({ explicitArray: false }); parser .parseStringPromise(xmlResponse) .then(function (result) { resolve(result["env:Envelope"]["env:Body"]); }) .catch(function (err) { reject(err); }); } else { reject(err); } }); */ } catch (error) { console.log("CAtch en error 2222", error); reject(error); } })); } /** * Consulta un lote en la SET * @param id * @param numeroProtocolo * @returns */ consultaLote(id, numeroProtocolo, env, certificado, passphase, config) { return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { try { let defaultConfig = { debug: false, timeout: 90000, }; //console.log("El config del params viene ", config); defaultConfig = Object.assign(defaultConfig, config); this.abrir(certificado, passphase); let url = "https://sifen.set.gov.py/de/ws/consultas/consulta-lote.wsdl"; if (env == "test") { url = "https://sifen-test.set.gov.py/de/ws/consultas/consulta-lote.wsdl"; } if (!this.cert) { reject("Antes debe Autenticarse"); } if (!this.key) { reject("Antes debe autenticarse"); } const httpsAgent = new https.Agent({ cert: Buffer.from(this.cert, "utf8"), key: Buffer.from(this.key, "utf8"), }); let soapXMLData = `<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">\n\ <env:Header/>\n\ <env:Body>\n\ <rEnviConsLoteDe xmlns="http://ekuatia.set.gov.py/sifen/xsd">\n\ <dId>${id}</dId>\n\ <dProtConsLote>${numeroProtocolo}</dProtConsLote>\n\ </rEnviConsLoteDe>\n\ </env:Body>\n\ </env:Envelope>\n`; soapXMLData = this.normalizeXML(soapXMLData); if (defaultConfig.debug === true) { console.log("url", url, "consultaLote-soapXMLData", soapXMLData); } if (defaultConfig.saveRequestFile) { const json = fs_1.default.writeFileSync(defaultConfig.saveRequestFile, soapXMLData); } axios .post(`${url}`, soapXMLData, { headers: { "User-Agent": "facturaSend", "Content-Type": "application/xml; charset=utf-8", }, httpsAgent, timeout: defaultConfig.timeout, }) .then((respuestaSuccess) => { var parser = new xml2js_1.default.Parser({ explicitArray: false }); if (respuestaSuccess.status == 200) { if ((respuestaSuccess.data + "").startsWith("<?xml")) { parser .parseStringPromise(respuestaSuccess.data) .then(function (result) { const resultData = JSON.parse(JSON.stringify(result["env:Envelope"]["env:Body"])); resultData.id = id; resolve(resultData); }); } else { if ((respuestaSuccess.data + "").startsWith("<html>")) { reject(new Error("Error de la SET BIG-IP logout page")); } else { reject(new Error(respuestaSuccess.data + "")); } } } else { reject(new Error("Error de conexión con la SET")); } }) .catch((err) => { console.log("CAtch en error 1111", err); if (err && err.response && err.response.data) { var xmlResponse = err.response.data; var parser = new xml2js_1.default.Parser({ explicitArray: false }); parser .parseStringPromise(xmlResponse) .then(function (result) { resolve(result["env:Envelope"]["env:Body"]); }) .catch(function (err) { reject(err); }); } else { reject(err); } }); } catch (error) { console.log("CAtch en error 2222", error); reject(error); } })); } /** * * @param xml * @returns */ consultaRUC(id, ruc, env, certificado, passphase, config) { return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { try { let defaultConfig = { debug: false, timeout: 90000, }; defaultConfig = Object.assign(defaultConfig, config); this.abrir(certificado, passphase); let url = "https://sifen.set.gov.py/de/ws/consultas/consulta-ruc.wsdl"; if (env == "test") { url = "https://sifen-test.set.gov.py/de/ws/consultas/consulta-ruc.wsdl"; } if (!this.cert) { reject("Antes debe Autenticarse"); } if (!this.key) { reject("Antes debe autenticarse"); } const httpsAgent = new https.Agent({ cert: Buffer.from(this.cert, "utf8"), key: Buffer.from(this.key, "utf8"), }); let soapXMLData = `<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">\n\ <env:Header/>\n\ <env:Body>\n\ <rEnviConsRUC xmlns="http://ekuatia.set.gov.py/sifen/xsd">\n\ <dId>${id}</dId>\n\ <dRUCCons>${ruc}</dRUCCons>\n\ </rEnviConsRUC>\n\ </env:Body>\n\ </env:Envelope>\n`; soapXMLData = this.normalizeXML(soapXMLData); if (defaultConfig.debug === true) { console.log("soapXMLData", soapXMLData); } if (defaultConfig.saveRequestFile) { const json = fs_1.default.writeFileSync(defaultConfig.saveRequestFile, soapXMLData); } axios .post(`${url}`, soapXMLData, { headers: { "User-Agent": "facturaSend", "Content-Type": "application/xml; charset=utf-8", }, httpsAgent, timeout: defaultConfig.timeout, }) .then((respuestaSuccess) => { var parser = new xml2js_1.default.Parser({ explicitArray: false }); //console.log("respuestaSuccess.data", respuestaSuccess.data); //console.log("statuscode", respuestaSuccess.status); ////console.log(respuestaSuccess.statusCode); if (respuestaSuccess.status == 200) { if ((respuestaSuccess.data + "").startsWith("<?xml")) { parser .parseStringPromise(respuestaSuccess.data) .then(function (result) { const resultData = result["env:Envelope"]["env:Body"]; resultData.id = id; resolve(resultData); }); } else { if ((respuestaSuccess.data + "").startsWith("<html>")) { reject(new Error("Error de la SET BIG-IP logout page")); } else { reject(new Error(respuestaSuccess.data + "")); } } } else { //reject(new Error("Error en la respuesta de comunicación con la SET " + respuestaSuccess.data)); reject(new Error("Error de conexión con la SET")); } }) .catch((err) => { if (err && err.response && err.response.data) { var xmlResponse = err.response.data; var parser = new xml2js_1.default.Parser({ explicitArray: false }); parser .parseStringPromise(xmlResponse) .then(function (result) { const resultData = result["env:Envelope"]["env:Body"]; resultData.id = id; resolve(resultData); }) .catch(function (err) { reject(err); }); } else { reject(err); } }); } catch (error) { reject(error); } })); } /** * Envia el Documento electronico a la SET * https://sifen.set.gov.py/de/ws/sync/recibe.wsdl * @param xml * @returns */ recibe(id, xml, env, certificado, passphase, config) { return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { try { let defaultConfig = { debug: false, timeout: 90000, }; defaultConfig = Object.assign(defaultConfig, config); this.abrir(certificado, passphase); let url = "https://sifen.set.gov.py/de/ws/sync/recibe.wsdl"; if (env == "test") { url = "https://sifen-test.set.gov.py/de/ws/sync/recibe.wsdl"; } if (!this.cert) { reject("Antes debe Autenticarse"); } if (!this.key) { reject("Antes debe autenticarse"); } const httpsAgent = new https.Agent({ cert: Buffer.from(this.cert, "utf8"), key: Buffer.from(this.key, "utf8"), }); xml = xml.split("\n").slice(1).join("\n"); //Retirar <xml> let soapXMLData = `<?xml version="1.0" encoding="UTF-8"?>\n\ <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">\n\ <env:Header/>\n\ <env:Body>\n\ <rEnviDe xmlns="http://ekuatia.set.gov.py/sifen/xsd">\n\ <dId>${id}</dId>\n\ <xDE>${xml}</xDE>\n\ </rEnviDe>\n\ </env:Body>\n\ </env:Envelope>\n`; soapXMLData = this.normalizeXML(soapXMLData); if (defaultConfig.debug === true) { console.log("url", url, "recibe - soapXMLData", soapXMLData); } if (defaultConfig.saveRequestFile) { const json = fs_1.default.writeFileSync(defaultConfig.saveRequestFile, soapXMLData); } axios .post(`${url}`, soapXMLData, { headers: { "User-Agent": "facturaSend", "Content-Type": "application/xml; charset=utf-8", }, httpsAgent, timeout: defaultConfig.timeout, }) .then((respuestaSuccess) => { var parser = new xml2js_1.default.Parser({ explicitArray: false }); if (respuestaSuccess.status == 200) { if ((respuestaSuccess.data + "").startsWith("<?xml")) { parser .parseStringPromise(respuestaSuccess.data) .then(function (result) { //resolve(result['env:Envelope']['env:Body']); const resultData = //result["env:Envelope"]["env:Body"]["ns2:rRetEnviDe"]; result["env:Envelope"]["env:Body"]; //delete resultData.$; resultData["id"] = id; resolve(resultData); }); } else { if ((respuestaSuccess.data + "").startsWith("<html>")) { //console.log("setApi - recibe " + respuestaSuccess.data); reject(new Error("Error de la SET BIG-IP logout page")); } else { reject(new Error(respuestaSuccess.data + "")); } } } else { //reject(new Error("Error en la respuesta de comunicación con la SET " + respuestaSuccess.data)); reject(new Error("Error de conexión con la SET")); } }) .catch((err) => { if (err && err.response && err.response.data) { var xmlResponse = err.response.data; var parser = new xml2js_1.default.Parser({ explicitArray: false }); parser .parseStringPromise(xmlResponse) .then(function (result) { const resultData = result["env:Envelope"]["env:Body"]; resultData["id"] = id; resolve(resultData); }) .catch(function (err) { reject(err); }); } else { reject(err); } }); } catch (error) { reject(error); } })); } /** * Envia el Documento electronico por lote a la SET * https://sifen.set.gov.py/de/ws/async/recibe-lote.wsdl * @param xmls * @returns */ recibeLote(id, xmls, env, certificado, passphase, config) { return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { try { let defaultConfig = { debug: false, timeout: 90000, }; defaultConfig = Object.assign(defaultConfig, config); this.abrir(certificado, passphase); if (xmls.length == 0) { reject("No se envió datos en el array de Documentos electrónicos XMLs"); } if (xmls.length > 50) { reject("Sólo se permiten un máximo de 50 Documentos electrónicos XML por lote"); } let url = "https://sifen.set.gov.py/de/ws/async/recibe-lote.wsdl"; if (env == "test") { url = "https://sifen-test.set.gov.py/de/ws/async/recibe-lote.wsdl"; } if (!this.cert) { reject("Antes debe Autenticarse"); } if (!this.key) { reject("Antes debe autenticarse"); } const zip = new jszip_1.default(); let rLoteDEXml = `<rLoteDE>\n`; for (let i = 0; i < xmls.length; i++) { //const xml = xmls[i]; const xml = xmls[i].split("\n").slice(1).join("\n"); //Retirar xml rLoteDEXml += `${xml}\n`; } rLoteDEXml += `</rLoteDE>`; rLoteDEXml = this.normalizeXML(rLoteDEXml); zip.file(`xml_file.xml`, `<?xml version="1.0" encoding="UTF-8"?>${rLoteDEXml}`); const zipAsBase64 = yield zip.generateAsync({ type: "base64" }); //fs.writeFileSync(__dirname + '/zipped.zip', zipAsBase64); const httpsAgent = new https.Agent({ cert: Buffer.from(this.cert, "utf8"), key: Buffer.from(this.key, "utf8"), }); //axios.get(`${url}`, { httpsAgent }).then((respuesta: any) => { let soapXMLData = `<?xml version="1.0" encoding="UTF-8"?>\n\ <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">\n\ <env:Header/>\n\ <env:Body>\n\ <rEnvioLote xmlns="http://ekuatia.set.gov.py/sifen/xsd">\n\ <dId>${id}</dId>\n\ <xDE>${zipAsBase64}</xDE>\n\ </rEnvioLote>\n\ </env:Body>\n\ </env:Envelope>\n`; soapXMLData = this.normalizeXML(soapXMLData); if (defaultConfig.debug === true) { console.log("url", url, "soapXMLData", soapXMLData); } if (defaultConfig.saveRequestFile) { const json = fs_1.default.writeFileSync(defaultConfig.saveRequestFile, soapXMLData); } axios .post(`${url}`, soapXMLData, { headers: { "User-Agent": "facturaSend", "Content-Type": "application/xml; charset=utf-8", }, httpsAgent, timeout: defaultConfig.timeout, }) .then((respuestaSuccess) => { var parser = new xml2js_1.default.Parser({ explicitArray: false }); if (respuestaSuccess.status == 200) { if ((respuestaSuccess.data + "").startsWith("<?xml")) { parser .parseStringPromise(respuestaSuccess.data) .then(function (result) { //resolve(result['env:Envelope']['env:Body']['ns2:rResEnviLoteDe']); const resultData = //result["env:Envelope"]["env:Body"]["ns2:rResEnviLoteDe"]; result["env:Envelope"]["env:Body"]; resultData["id"] = id; //result['env:Envelope']['env:Body']['ns2:rResEnviLoteDe']['id'] = id; //const resultData = result['env:Envelope']['env:Body']; delete resultData.$; resolve(resultData); }); } else { if ((respuestaSuccess.data + "").startsWith("<html>")) { //console.log("setApi - recibe " + respuestaSuccess.data); reject(new Error("Error de la SET BIG-IP logout page")); } else { reject(new Error(respuestaSuccess.data + "")); } } } else { reject(new Error("Error de conexión con la SET")); } }) .catch((err) => { if (err && err.response && err.response.data) { var xmlResponse = err.response.data; var parser = new xml2js_1.default.Parser({ explicitArray: false }); parser .parseStringPromise(xmlResponse) .then(function (result) { const resultData = /*result["env:Envelope"]["env:Body"]["ns2:rRetEnviDe"][ "ns2:rProtDe" ];*/ result["env:Envelope"]["env:Body"]; resultData["id"] = id; resolve(resultData); }) .catch(function (err) { reject(err); }); } else { reject(err); } }); } catch (error) { reject(error); } })); } /** * * @param xml * @returns */ evento(id, xml, env, certificado, passphase, config) { return __awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { try { let defaultConfig = { debug: false, timeout: 90000, }; defaultConfig = Object.assign(defaultConfig, config); this.abrir(certificado, passphase); let url = "https://sifen.set.gov.py/de/ws/eventos/evento.wsdl"; if (env == "test") { url = "https://sifen-test.set.gov.py/de/ws/eventos/evento.wsdl"; } if (!this.cert) { reject("Antes debe Autenticarse"); } if (!this.key) { reject("Antes debe autenticarse"); } const httpsAgent = new https.Agent({ cert: Buffer.from(this.cert, "utf8"), key: Buffer.from(this.key, "utf8"), }); let soapXMLData = this.normalizeXML(xml); //Para el evento, el xml ya viene con SoapData if (defaultConfig.debug === true) { console.log("soapXMLData", soapXMLData); } if (defaultConfig.saveRequestFile) { const json = fs_1.default.writeFileSync(defaultConfig.saveRequestFile, soapXMLData); } axios .post(`${url}`, soapXMLData, { headers: { "User-Agent": "facturaSend", "Content-Type": "application/xml; charset=utf-8", }, httpsAgent, timeout: defaultConfig.timeout, }) .then((respuestaSuccess) => { var parser = new xml2js_1.default.Parser({ explicitArray: false }); if (respuestaSuccess.status == 200) { if ((respuestaSuccess.data + "").startsWith("<?xml")) { parser .parseStringPromise(respuestaSuccess.data) .then(function (result) { ///resolve(result['env:Envelope']['env:Body']); const resultData = result["env:Envelope"]["env:Body"]; resultData.id = id; //delete resultData.$; resolve(resultData); }); } else { if ((respuestaSuccess.data + "").startsWith("<html>")) { //console.log("setApi - recibe " + respuestaSuccess.data); reject(new Error("Error de la SET BIG-IP logout page")); } else { reject(new Error(respuestaSuccess.data + "")); } } } else { reject(new Error("Error de conexión con la SET")); } }) .catch((err) => { if (err && err.response && err.response.data) { var xmlResponse = err.response.data; var parser = new xml2js_1.default.Parser({ explicitArray: false }); parser .parseStringPromise(xmlResponse) .then(function (result) { const resultData = result["env:Envelope"]["env:Body"]; resultData.id = id; resolve(resultData); }) .catch(function (err) { reject(err); }); } else { reject(err); } }); } catch (error) { reject(error); } })); }); } normalizeXML(xml) { xml = xml.split("\r\n").join(""); xml = xml.split("\n").join(""); xml = xml.split("\t").join(""); xml = xml.split(" ").join(""); xml = xml.split("> <").join("><"); xml = xml.split("> <").join("><"); xml = xml.replace(/\r?\n|\r/g, ""); return xml; } } exports.default = new SET(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU0VULmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NFVC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUEwQjtBQUMxQixzREFBOEI7QUFDOUIsb0RBQTRCO0FBQzVCLDRDQUFvQjtBQUVwQixtREFBd0M7QUFFeEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUUvQixNQUFNLEdBQUc7SUFLUDs7Ozs7Ozs7Ozs7TUFXRTtJQUVGLEtBQUssQ0FBQyxXQUFnQixFQUFFLFNBQWlCO1FBQ3ZDLGdCQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsSUFBSSxHQUFHLGdCQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxnQkFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFFBQVEsQ0FDTixFQUFVLEVBQ1YsR0FBVyxFQUNYLEdBQW9CLEVBQ3BCLFdBQWdCLEVBQ2hCLFNBQWMsRUFDZCxNQUFxQjtRQUVyQixPQUFPLElBQUksT0FBTyxDQUFDLENBQU8sT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzNDLElBQUk7Z0JBQ0YsSUFBSSxhQUFhLEdBQWlCO29CQUNoQyxLQUFLLEVBQUUsS0FBSztvQkFDWixPQUFPLEVBQUUsS0FBSztpQkFDZixDQUFDO2dCQUVGLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFckQsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBRW5DLElBQUksR0FBRyxHQUFHLHdEQUF3RCxDQUFDO2dCQUNuRSxJQUFJLEdBQUcsSUFB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