UNPKG

crx3

Version:

Package web extension into CRX file (version 3) for Google Chrome and Chromium browsers

58 lines (49 loc) 1.31 kB
const pathSeparator = require('path').sep; /** * @module crx3/lib/findCommonPath */ module.exports = findCommonPath; /** * Finds the longest possible path that's a common parent to all specified paths. * * @alias module:crx3/lib/findCommonPath * @param {string[]} paths * @return {string} */ function findCommonPath (paths) { if (!Array.isArray(paths) || paths.length < 1) { return ''; } var lastSeparatorAt = paths[0].lastIndexOf(pathSeparator); if (lastSeparatorAt < 0) { return ''; } if (lastSeparatorAt < 1) { return pathSeparator; } var common = paths[0].substring(0, lastSeparatorAt + 1); if (paths.length < 2) { // eslint-disable-line no-magic-numbers return common; } common = common.split(pathSeparator); var lastCommonIndex = common.length - 1; // Ignore last empty item, since we know that last character was a separator lastCommonIndex -= 1; var current; var i; var m; for (var index = 1, max = paths.length; index < max; index++) { current = paths[index].split(pathSeparator); for (i = 0, m = current.length; i < m; i++) { if (i > lastCommonIndex) { break; } if (current[i] !== common[i]) { lastCommonIndex = i - 1; break; } } } common.length = lastCommonIndex + 1; return common.join(pathSeparator) + pathSeparator; }