Security update for permissions_by_term
[yaffs-website] / node_modules / glob2base / index.js
1 'use strict';
2
3 var path = require('path');
4 var findIndex = require('find-index');
5
6 var flattenGlob = function(arr){
7   var out = [];
8   var flat = true;
9   for(var i = 0; i < arr.length; i++) {
10     if (typeof arr[i] !== 'string') {
11       flat = false;
12       break;
13     }
14     out.push(arr[i]);
15   }
16
17   // last one is a file or specific dir
18   // so we pop it off
19   if (flat) {
20     out.pop();
21   }
22   return out;
23 };
24
25 var flattenExpansion = function(set) {
26   var first = set[0];
27   var toCompare = set.slice(1);
28
29   // find index where the diff is
30   var idx = findIndex(first, function(v, idx){
31     if (typeof v !== 'string') {
32       return true;
33     }
34
35     var matched = toCompare.every(function(arr){
36       return v === arr[idx];
37     });
38
39     return !matched;
40   });
41
42   return first.slice(0, idx);
43 };
44
45 var setToBase = function(set) {
46   // normal something/*.js
47   if (set.length <= 1) {
48     return flattenGlob(set[0]);
49   }
50   // has expansion
51   return flattenExpansion(set);
52 };
53
54 module.exports = function(glob) {
55   var set = glob.minimatch.set;
56   var baseParts = setToBase(set);
57   var basePath = path.normalize(baseParts.join(path.sep))+path.sep;
58   return basePath;
59 };