UNPKG

4.93 kBJavaScriptView Raw
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5Object.defineProperty(exports, "__esModule", { value: true });
6const path_1 = __importDefault(require("path"));
7function getCommonPathFragmentsCount(fragmentedPath1, fragmentedPath2) {
8 const maxCommonPathFragmentsCount = Math.min(fragmentedPath1.length, fragmentedPath2.length);
9 let commonPathFragmentsIndex = 0;
10 while (commonPathFragmentsIndex < maxCommonPathFragmentsCount) {
11 if (fragmentedPath1[commonPathFragmentsIndex] !== fragmentedPath2[commonPathFragmentsIndex])
12 break;
13 commonPathFragmentsIndex++;
14 }
15 return commonPathFragmentsIndex;
16}
17function getCommonPathFragments(fragmentedPaths) {
18 const lastFragmentedPath = fragmentedPaths.pop();
19 const commonPathFragmentsCounts = fragmentedPaths
20 .map(fragmentedPath => getCommonPathFragmentsCount(fragmentedPath, lastFragmentedPath));
21 return lastFragmentedPath.splice(0, Math.min(...commonPathFragmentsCounts));
22}
23function default_1(paths) {
24 if (!paths)
25 return null;
26 if (paths.length === 1)
27 return paths[0];
28 const fragmentedPaths = paths.map(item => item.split(path_1.default.sep));
29 const commonPathFragments = getCommonPathFragments(fragmentedPaths);
30 if (!commonPathFragments.length)
31 return null;
32 return commonPathFragments.join(path_1.default.sep);
33}
34exports.default = default_1;
35module.exports = exports.default;
36//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWNvbW1vbi1wYXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2dldC1jb21tb24tcGF0aC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdEQUF3QjtBQUd4QixTQUFTLDJCQUEyQixDQUFFLGVBQWUsRUFBRSxlQUFlO0lBQ2xFLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUU3RixJQUFJLHdCQUF3QixHQUFHLENBQUMsQ0FBQztJQUVqQyxPQUFPLHdCQUF3QixHQUFHLDJCQUEyQixFQUFFO1FBQzNELElBQUksZUFBZSxDQUFDLHdCQUF3QixDQUFDLEtBQUssZUFBZSxDQUFDLHdCQUF3QixDQUFDO1lBQ3ZGLE1BQU07UUFFVix3QkFBd0IsRUFBRSxDQUFDO0tBQzlCO0lBRUQsT0FBTyx3QkFBd0IsQ0FBQztBQUNwQyxDQUFDO0FBRUQsU0FBUyxzQkFBc0IsQ0FBRSxlQUFlO0lBQzVDLE1BQU0sa0JBQWtCLEdBQUcsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRWpELE1BQU0seUJBQXlCLEdBQUcsZUFBZTtTQUM1QyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBRTVGLE9BQU8sa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcseUJBQXlCLENBQUMsQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFFRCxtQkFBeUIsS0FBSztJQUMxQixJQUFJLENBQUMsS0FBSztRQUNOLE9BQU8sSUFBSSxDQUFDO0lBRWhCLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQ2xCLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXBCLE1BQU0sZUFBZSxHQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sbUJBQW1CLEdBQUcsc0JBQXNCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFHcEUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU07UUFDM0IsT0FBTyxJQUFJLENBQUM7SUFFaEIsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsY0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFmRCw0QkFlQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG5cbmZ1bmN0aW9uIGdldENvbW1vblBhdGhGcmFnbWVudHNDb3VudCAoZnJhZ21lbnRlZFBhdGgxLCBmcmFnbWVudGVkUGF0aDIpIHtcbiAgICBjb25zdCBtYXhDb21tb25QYXRoRnJhZ21lbnRzQ291bnQgPSBNYXRoLm1pbihmcmFnbWVudGVkUGF0aDEubGVuZ3RoLCBmcmFnbWVudGVkUGF0aDIubGVuZ3RoKTtcblxuICAgIGxldCBjb21tb25QYXRoRnJhZ21lbnRzSW5kZXggPSAwO1xuXG4gICAgd2hpbGUgKGNvbW1vblBhdGhGcmFnbWVudHNJbmRleCA8IG1heENvbW1vblBhdGhGcmFnbWVudHNDb3VudCkge1xuICAgICAgICBpZiAoZnJhZ21lbnRlZFBhdGgxW2NvbW1vblBhdGhGcmFnbWVudHNJbmRleF0gIT09IGZyYWdtZW50ZWRQYXRoMltjb21tb25QYXRoRnJhZ21lbnRzSW5kZXhdKVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY29tbW9uUGF0aEZyYWdtZW50c0luZGV4Kys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbW1vblBhdGhGcmFnbWVudHNJbmRleDtcbn1cblxuZnVuY3Rpb24gZ2V0Q29tbW9uUGF0aEZyYWdtZW50cyAoZnJhZ21lbnRlZFBhdGhzKSB7XG4gICAgY29uc3QgbGFzdEZyYWdtZW50ZWRQYXRoID0gZnJhZ21lbnRlZFBhdGhzLnBvcCgpO1xuXG4gICAgY29uc3QgY29tbW9uUGF0aEZyYWdtZW50c0NvdW50cyA9IGZyYWdtZW50ZWRQYXRoc1xuICAgICAgICAubWFwKGZyYWdtZW50ZWRQYXRoID0+IGdldENvbW1vblBhdGhGcmFnbWVudHNDb3VudChmcmFnbWVudGVkUGF0aCwgbGFzdEZyYWdtZW50ZWRQYXRoKSk7XG5cbiAgICByZXR1cm4gbGFzdEZyYWdtZW50ZWRQYXRoLnNwbGljZSgwLCBNYXRoLm1pbiguLi5jb21tb25QYXRoRnJhZ21lbnRzQ291bnRzKSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChwYXRocykge1xuICAgIGlmICghcGF0aHMpXG4gICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgaWYgKHBhdGhzLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgcmV0dXJuIHBhdGhzWzBdO1xuXG4gICAgY29uc3QgZnJhZ21lbnRlZFBhdGhzICAgICA9IHBhdGhzLm1hcChpdGVtID0+IGl0ZW0uc3BsaXQocGF0aC5zZXApKTtcbiAgICBjb25zdCBjb21tb25QYXRoRnJhZ21lbnRzID0gZ2V0Q29tbW9uUGF0aEZyYWdtZW50cyhmcmFnbWVudGVkUGF0aHMpO1xuXG5cbiAgICBpZiAoIWNvbW1vblBhdGhGcmFnbWVudHMubGVuZ3RoKVxuICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiBjb21tb25QYXRoRnJhZ21lbnRzLmpvaW4ocGF0aC5zZXApO1xufVxuIl19
\No newline at end of file