Files

48 lines
1.2 KiB
JavaScript

function buildPluginGraph(seed = {}) {
const plugins = Array.isArray(seed.plugins) ? seed.plugins : [];
const mimeTypes = Array.isArray(seed.mimeTypes) ? seed.mimeTypes : [];
const pluginArray = [];
const mimeTypeArray = [];
for (const pluginSeed of plugins) {
const plugin = {
name: pluginSeed.name || "",
filename: pluginSeed.filename || "",
description: pluginSeed.description || "",
length: 0,
items: [],
};
pluginArray.push(plugin);
}
for (const mimeSeed of mimeTypes) {
const mime = {
type: mimeSeed.type || "",
suffixes: mimeSeed.suffixes || "",
description: mimeSeed.description || "",
enabledPluginName: mimeSeed.enabledPluginName || "",
enabledPlugin: null,
};
mimeTypeArray.push(mime);
}
for (const mime of mimeTypeArray) {
const plugin = pluginArray.find((item) => item.name === mime.enabledPluginName);
if (plugin) {
mime.enabledPlugin = plugin;
plugin.items.push(mime);
plugin.length = plugin.items.length;
}
}
return {
pluginArray,
mimeTypeArray,
};
}
module.exports = {
buildPluginGraph,
};