Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/common-ancestor-path/index.js')
-rw-r--r--node_modules/common-ancestor-path/index.js17
1 files changed, 17 insertions, 0 deletions
diff --git a/node_modules/common-ancestor-path/index.js b/node_modules/common-ancestor-path/index.js
new file mode 100644
index 000000000..09ae31782
--- /dev/null
+++ b/node_modules/common-ancestor-path/index.js
@@ -0,0 +1,17 @@
+const {parse, sep, normalize: norm} = require('path')
+
+function* commonArrayMembers (a, b) {
+ const [l, s] = a.length > b.length ? [a, b] : [b, a]
+ for (const x of s) {
+ if (x === l.shift())
+ yield x
+ else
+ break
+ }
+}
+
+const commonAncestorPath = (a, b) => a === b ? a
+ : parse(a).root !== parse(b).root ? null
+ : [...commonArrayMembers(norm(a).split(sep), norm(b).split(sep))].join(sep)
+
+module.exports = (...paths) => paths.reduce(commonAncestorPath)