UNPKG

wext-manifest

Version:
36 lines (29 loc) 914 B
const browserVendors = ['chrome', 'firefox', 'opera', 'edge']; const vendorRegExp = new RegExp(`^__((?:(?:${browserVendors.join('|')})\\|?)+)__(.*)`); /** * Fork of `webextension-toolbox/webpack-webextension-plugin` */ const transformVendorKeys = (manifest, vendor) => { if (Array.isArray(manifest)) { return manifest.map(newManifest => { return transformVendorKeys(newManifest, vendor); }); } if (typeof manifest === 'object') { return Object.entries(manifest).reduce((newManifest, [key, value]) => { const match = key.match(vendorRegExp); if (match) { const vendors = match[1].split('|'); // Swap key with non prefixed name if (vendors.indexOf(vendor) > -1) { newManifest[match[2]] = value; } } else { newManifest[key] = transformVendorKeys(value, vendor); } return newManifest; }, {}); } return manifest; }; module.exports = transformVendorKeys;