29 lines
871 B
JavaScript
29 lines
871 B
JavaScript
const ctXML = "[Content_Types].xml";
|
|
function collectContentTypes(overrides, defaults, zip) {
|
|
const partNames = {};
|
|
for (let i = 0, len = overrides.length; i < len; i++) {
|
|
const override = overrides[i];
|
|
const contentType = override.getAttribute("ContentType");
|
|
const partName = override.getAttribute("PartName").substr(1);
|
|
partNames[partName] = contentType;
|
|
}
|
|
for (let i = 0, len = defaults.length; i < len; i++) {
|
|
const def = defaults[i];
|
|
const contentType = def.getAttribute("ContentType");
|
|
const extension = def.getAttribute("Extension");
|
|
// eslint-disable-next-line no-loop-func
|
|
zip.file(/./).map(({ name }) => {
|
|
if (
|
|
name.slice(name.length - extension.length - 1) === ".xml" &&
|
|
!partNames[name] &&
|
|
name !== ctXML
|
|
) {
|
|
partNames[name] = contentType;
|
|
}
|
|
});
|
|
}
|
|
return partNames;
|
|
}
|
|
|
|
module.exports = collectContentTypes;
|