@flatfile/plugin-xml-extractor
Version:
A plugin for parsing .xml files in Flatfile.
97 lines (88 loc) • 3.28 kB
JavaScript
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