import { Result } from "ts-results-es"; import { tryCatch } from "@swiss-army-knife/utilities"; import { XMLParser as FastXmlParser, X2jOptions } from "fast-xml-parser"; import { IXmlParser } from "./i-xml-parser.js"; export class XmlParser implements IXmlParser { private __data: string; private __options: Partial; public constructor(data: string, options: Partial = {}) { this.__data = data || ""; this.__options = options || {} } public async execute(): Promise, Error>> { return new Promise((resolve) => { const executeSyncResult = this.executeSync(); return resolve(executeSyncResult); }); } public executeSync(): Result, Error> { return tryCatch(() => { const parser = new FastXmlParser(this.__options); return parser.parse(this.__data); }); } };