UNPKG

@flatfile/plugin-xml-extractor

Version:

A plugin for parsing .xml files in Flatfile.

97 lines (88 loc) 3.28 kB
import {Extractor as $a1rj8$Extractor} from "@flatfile/util-extractor"; import {mapValues as $a1rj8$mapValues} from "remeda"; import $a1rj8$xmljsonformat from "xml-json-format"; function $c431edf8528a18e8$export$9df12741220b4999(buffer, options) { const transform = options?.transform || ((value)=>value); const data = $c431edf8528a18e8$export$ddc9d26d0b3d592d(buffer.toString()); const headers = $c431edf8528a18e8$export$33b1e1c1f48cebf6(data); const sheetName = "Sheet1"; return { [sheetName]: { headers: headers, data: data.map((row)=>{ return (0, $a1rj8$mapValues)(transform(row), (value)=>({ value: value })); }) } }; } function $c431edf8528a18e8$export$29a2424249978a8f(obj) { return obj.map((obj)=>{ return $c431edf8528a18e8$var$mapObject(obj, (k, value)=>[ k, { value: value } ]); }); } function $c431edf8528a18e8$export$ddc9d26d0b3d592d(xml) { const json = $c431edf8528a18e8$export$6b2117be12a0a0bc((0, $a1rj8$xmljsonformat)(xml)); return json.map((obj)=>$c431edf8528a18e8$var$flattenObject(obj)); } function $c431edf8528a18e8$export$33b1e1c1f48cebf6(arr) { const keys = {}; arr.forEach((obj)=>{ Object.keys(obj).forEach((key)=>{ keys[key] = true; }); }); return Object.keys(keys); } function $c431edf8528a18e8$var$flattenAttributes(obj) { if (obj && "_attributes" in obj) { const attributes = $c431edf8528a18e8$var$mapObject(obj._attributes, (k, v)=>[ `#${k}`, v ]); delete obj._attributes; return { ...obj, ...attributes }; } return obj; } function $c431edf8528a18e8$var$mapObject(obj, fn) { const result = {}; Object.keys(obj).forEach((k)=>{ const [key, value] = fn(k, obj[k]); result[key] = value; }); return result; } function $c431edf8528a18e8$var$flattenObject(input, prefix = "") { const obj = $c431edf8528a18e8$var$flattenAttributes(input); if (!obj) return {}; const result = {}; Object.keys(obj).forEach((k)=>{ const pre = prefix ? prefix + (k.startsWith("#") || k === "_text" ? "" : "/") : ""; if (typeof obj[k] === "object") Object.assign(result, $c431edf8528a18e8$var$flattenObject(obj[k], pre + k)); else result[pre + (k === "_text" && pre ? "" : k)] = obj[k]; }); return result; } function $c431edf8528a18e8$export$6b2117be12a0a0bc(json) { const key = Object.keys(json).find((k)=>k !== "_declaration"); if (!key) throw new Error("No root xml object found"); return Array.isArray(json[key]) ? json[key] : [ json[key] ]; } const $aa20283b20137ecf$export$f58147e05c4028bc = (options)=>{ return (0, $a1rj8$Extractor)(".xml", "xml", (0, $c431edf8528a18e8$export$9df12741220b4999), options); }; const $aa20283b20137ecf$export$c7c816202c9450cf = (0, $c431edf8528a18e8$export$9df12741220b4999); export {$aa20283b20137ecf$export$f58147e05c4028bc as XMLExtractor, $aa20283b20137ecf$export$c7c816202c9450cf as xmlParser}; //# sourceMappingURL=index.mjs.map