UNPKG

nav-connect

Version:
71 lines 2.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.xmlParser = xmlParser; const fast_xml_parser_1 = require("fast-xml-parser"); function normalizeNumbersAsText(obj) { if (!obj || typeof obj !== "object") return obj; // always string keys not number const taxKeys = [ "supplierTaxNumber", "customerTaxNumber", "supplierGroupMemberTaxNumber", "customerGroupMemberTaxNumber", "taxNumber", "vatGroupMembership", "groupMemberTaxNumber", "invoiceNumber" ]; for (const key of Object.keys(obj)) { if (taxKeys.includes(key) && obj[key] !== undefined && obj[key] !== null) { obj[key] = String(obj[key]); } else if (typeof obj[key] === "object") { // Rekurzívan mélyebbre megy, pl. tömbök, beágyazott objektumok obj[key] = normalizeNumbersAsText(obj[key]); } } return obj; } function normalizeArrays(obj) { const keys = [ "invoiceDigest", ]; if (!obj || typeof obj !== "object") return obj; for (const key of Object.keys(obj)) { if (keys.includes(key)) { if (obj[key] === undefined) { obj[key] = []; } else if (!Array.isArray(obj[key])) { obj[key] = [obj[key]]; } } if (typeof obj[key] === "object") { obj[key] = normalizeArrays(obj[key]); } } return obj; } async function xmlParser(xmlData) { const parser = new fast_xml_parser_1.XMLParser({ attributeNamePrefix: "@_", textNodeName: "#text", ignoreAttributes: false, parseAttributeValue: true, trimValues: true, parseTagValue: true, ignoreDeclaration: true, removeNSPrefix: true, }); try { const result = parser.parse(xmlData); return normalizeArrays(normalizeNumbersAsText(result)); // taxNumbers always string } catch (err) { console.error("XML response processing error:", err); throw err; } } //# sourceMappingURL=xmlParser.js.map