@depup/glob 13.0.6-depup.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +63 -0
- package/README.md +31 -0
- package/changes.json +10 -0
- package/dist/commonjs/glob.d.ts +396 -0
- package/dist/commonjs/glob.d.ts.map +1 -0
- package/dist/commonjs/glob.js +248 -0
- package/dist/commonjs/glob.js.map +1 -0
- package/dist/commonjs/has-magic.d.ts +14 -0
- package/dist/commonjs/has-magic.d.ts.map +1 -0
- package/dist/commonjs/has-magic.js +27 -0
- package/dist/commonjs/has-magic.js.map +1 -0
- package/dist/commonjs/ignore.d.ts +24 -0
- package/dist/commonjs/ignore.d.ts.map +1 -0
- package/dist/commonjs/ignore.js +119 -0
- package/dist/commonjs/ignore.js.map +1 -0
- package/dist/commonjs/index.d.ts +97 -0
- package/dist/commonjs/index.d.ts.map +1 -0
- package/dist/commonjs/index.js +68 -0
- package/dist/commonjs/index.js.map +1 -0
- package/dist/commonjs/index.min.js +4 -0
- package/dist/commonjs/index.min.js.map +7 -0
- package/dist/commonjs/package.json +3 -0
- package/dist/commonjs/pattern.d.ts +79 -0
- package/dist/commonjs/pattern.d.ts.map +1 -0
- package/dist/commonjs/pattern.js +223 -0
- package/dist/commonjs/pattern.js.map +1 -0
- package/dist/commonjs/processor.d.ts +59 -0
- package/dist/commonjs/processor.d.ts.map +1 -0
- package/dist/commonjs/processor.js +301 -0
- package/dist/commonjs/processor.js.map +1 -0
- package/dist/commonjs/walker.d.ts +97 -0
- package/dist/commonjs/walker.d.ts.map +1 -0
- package/dist/commonjs/walker.js +387 -0
- package/dist/commonjs/walker.js.map +1 -0
- package/dist/esm/glob.d.ts +396 -0
- package/dist/esm/glob.d.ts.map +1 -0
- package/dist/esm/glob.js +244 -0
- package/dist/esm/glob.js.map +1 -0
- package/dist/esm/has-magic.d.ts +14 -0
- package/dist/esm/has-magic.d.ts.map +1 -0
- package/dist/esm/has-magic.js +23 -0
- package/dist/esm/has-magic.js.map +1 -0
- package/dist/esm/ignore.d.ts +24 -0
- package/dist/esm/ignore.d.ts.map +1 -0
- package/dist/esm/ignore.js +115 -0
- package/dist/esm/ignore.js.map +1 -0
- package/dist/esm/index.d.ts +97 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +55 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/index.min.js +4 -0
- package/dist/esm/index.min.js.map +7 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/pattern.d.ts +79 -0
- package/dist/esm/pattern.d.ts.map +1 -0
- package/dist/esm/pattern.js +219 -0
- package/dist/esm/pattern.js.map +1 -0
- package/dist/esm/processor.d.ts +59 -0
- package/dist/esm/processor.d.ts.map +1 -0
- package/dist/esm/processor.js +294 -0
- package/dist/esm/processor.js.map +1 -0
- package/dist/esm/walker.d.ts +97 -0
- package/dist/esm/walker.d.ts.map +1 -0
- package/dist/esm/walker.js +381 -0
- package/dist/esm/walker.js.map +1 -0
- package/package.json +119 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { GLOBSTAR } from 'minimatch';
|
|
2
|
+
export type MMPattern = string | RegExp | typeof GLOBSTAR;
|
|
3
|
+
export type PatternList = [p: MMPattern, ...rest: MMPattern[]];
|
|
4
|
+
export type UNCPatternList = [
|
|
5
|
+
p0: '',
|
|
6
|
+
p1: '',
|
|
7
|
+
p2: string,
|
|
8
|
+
p3: string,
|
|
9
|
+
...rest: MMPattern[]
|
|
10
|
+
];
|
|
11
|
+
export type DrivePatternList = [p0: string, ...rest: MMPattern[]];
|
|
12
|
+
export type AbsolutePatternList = [p0: '', ...rest: MMPattern[]];
|
|
13
|
+
export type GlobList = [p: string, ...rest: string[]];
|
|
14
|
+
declare const customInspect: unique symbol;
|
|
15
|
+
/**
|
|
16
|
+
* An immutable-ish view on an array of glob parts and their parsed
|
|
17
|
+
* results
|
|
18
|
+
*/
|
|
19
|
+
export declare class Pattern {
|
|
20
|
+
#private;
|
|
21
|
+
readonly length: number;
|
|
22
|
+
constructor(patternList: MMPattern[], globList: string[], index: number, platform: NodeJS.Platform);
|
|
23
|
+
[customInspect](): string;
|
|
24
|
+
/**
|
|
25
|
+
* The first entry in the parsed list of patterns
|
|
26
|
+
*/
|
|
27
|
+
pattern(): MMPattern;
|
|
28
|
+
/**
|
|
29
|
+
* true of if pattern() returns a string
|
|
30
|
+
*/
|
|
31
|
+
isString(): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* true of if pattern() returns GLOBSTAR
|
|
34
|
+
*/
|
|
35
|
+
isGlobstar(): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* true if pattern() returns a regexp
|
|
38
|
+
*/
|
|
39
|
+
isRegExp(): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* The /-joined set of glob parts that make up this pattern
|
|
42
|
+
*/
|
|
43
|
+
globString(): string;
|
|
44
|
+
/**
|
|
45
|
+
* true if there are more pattern parts after this one
|
|
46
|
+
*/
|
|
47
|
+
hasMore(): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* The rest of the pattern after this part, or null if this is the end
|
|
50
|
+
*/
|
|
51
|
+
rest(): Pattern | null;
|
|
52
|
+
/**
|
|
53
|
+
* true if the pattern represents a //unc/path/ on windows
|
|
54
|
+
*/
|
|
55
|
+
isUNC(): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* True if the pattern starts with a drive letter on Windows
|
|
58
|
+
*/
|
|
59
|
+
isDrive(): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* True if the pattern is rooted on an absolute path
|
|
62
|
+
*/
|
|
63
|
+
isAbsolute(): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* consume the root of the pattern, and return it
|
|
66
|
+
*/
|
|
67
|
+
root(): string;
|
|
68
|
+
/**
|
|
69
|
+
* Check to see if the current globstar pattern is allowed to follow
|
|
70
|
+
* a symbolic link.
|
|
71
|
+
*/
|
|
72
|
+
checkFollowGlobstar(): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Mark that the current globstar pattern is following a symbolic link
|
|
75
|
+
*/
|
|
76
|
+
markFollowGlobstar(): boolean;
|
|
77
|
+
}
|
|
78
|
+
export {};
|
|
79
|
+
//# sourceMappingURL=pattern.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern.d.ts","sourceRoot":"","sources":["../../src/pattern.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,QAAQ,CAAA;AAGzD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;AAC9D,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,GAAG,IAAI,EAAE,SAAS,EAAE;CACrB,CAAA;AACD,MAAM,MAAM,gBAAgB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;AACjE,MAAM,MAAM,mBAAmB,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;AAChE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;AAMrD,QAAA,MAAM,aAAa,eAA2C,CAAA;AAE9D;;;GAGG;AACH,qBAAa,OAAO;;IAIlB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;gBAUrB,WAAW,EAAE,SAAS,EAAE,EACxB,QAAQ,EAAE,MAAM,EAAE,EAClB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,CAAC,QAAQ;IA6D3B,CAAC,aAAa,CAAC;IAIf;;OAEG;IACH,OAAO,IAAI,SAAS;IAIpB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAGnB;;OAEG;IACH,UAAU,IAAI,OAAO;IAGrB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,UAAU,IAAI,MAAM;IAUpB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,IAAI,IAAI,OAAO,GAAG,IAAI;IAetB;;OAEG;IACH,KAAK,IAAI,OAAO;IAoBhB;;OAEG;IACH,OAAO,IAAI,OAAO;IAelB;;OAEG;IACH,UAAU,IAAI,OAAO;IAUrB;;OAEG;IACH,IAAI,IAAI,MAAM;IASd;;;OAGG;IACH,mBAAmB,IAAI,OAAO;IAQ9B;;OAEG;IACH,kBAAkB,IAAI,OAAO;CAM9B"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// this is just a very light wrapper around 2 arrays with an offset index
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Pattern = void 0;
|
|
5
|
+
const minimatch_1 = require("minimatch");
|
|
6
|
+
const isPatternList = (pl) => pl.length >= 1;
|
|
7
|
+
const isGlobList = (gl) => gl.length >= 1;
|
|
8
|
+
const customInspect = Symbol.for('nodejs.util.inspect.custom');
|
|
9
|
+
/**
|
|
10
|
+
* An immutable-ish view on an array of glob parts and their parsed
|
|
11
|
+
* results
|
|
12
|
+
*/
|
|
13
|
+
class Pattern {
|
|
14
|
+
#patternList;
|
|
15
|
+
#globList;
|
|
16
|
+
#index;
|
|
17
|
+
length;
|
|
18
|
+
#platform;
|
|
19
|
+
#rest;
|
|
20
|
+
#globString;
|
|
21
|
+
#isDrive;
|
|
22
|
+
#isUNC;
|
|
23
|
+
#isAbsolute;
|
|
24
|
+
#followGlobstar = true;
|
|
25
|
+
constructor(patternList, globList, index, platform) {
|
|
26
|
+
if (!isPatternList(patternList)) {
|
|
27
|
+
throw new TypeError('empty pattern list');
|
|
28
|
+
}
|
|
29
|
+
if (!isGlobList(globList)) {
|
|
30
|
+
throw new TypeError('empty glob list');
|
|
31
|
+
}
|
|
32
|
+
if (globList.length !== patternList.length) {
|
|
33
|
+
throw new TypeError('mismatched pattern list and glob list lengths');
|
|
34
|
+
}
|
|
35
|
+
this.length = patternList.length;
|
|
36
|
+
if (index < 0 || index >= this.length) {
|
|
37
|
+
throw new TypeError('index out of range');
|
|
38
|
+
}
|
|
39
|
+
this.#patternList = patternList;
|
|
40
|
+
this.#globList = globList;
|
|
41
|
+
this.#index = index;
|
|
42
|
+
this.#platform = platform;
|
|
43
|
+
// normalize root entries of absolute patterns on initial creation.
|
|
44
|
+
if (this.#index === 0) {
|
|
45
|
+
// c: => ['c:/']
|
|
46
|
+
// C:/ => ['C:/']
|
|
47
|
+
// C:/x => ['C:/', 'x']
|
|
48
|
+
// //host/share => ['//host/share/']
|
|
49
|
+
// //host/share/ => ['//host/share/']
|
|
50
|
+
// //host/share/x => ['//host/share/', 'x']
|
|
51
|
+
// /etc => ['/', 'etc']
|
|
52
|
+
// / => ['/']
|
|
53
|
+
if (this.isUNC()) {
|
|
54
|
+
// '' / '' / 'host' / 'share'
|
|
55
|
+
const [p0, p1, p2, p3, ...prest] = this.#patternList;
|
|
56
|
+
const [g0, g1, g2, g3, ...grest] = this.#globList;
|
|
57
|
+
if (prest[0] === '') {
|
|
58
|
+
// ends in /
|
|
59
|
+
prest.shift();
|
|
60
|
+
grest.shift();
|
|
61
|
+
}
|
|
62
|
+
const p = [p0, p1, p2, p3, ''].join('/');
|
|
63
|
+
const g = [g0, g1, g2, g3, ''].join('/');
|
|
64
|
+
this.#patternList = [p, ...prest];
|
|
65
|
+
this.#globList = [g, ...grest];
|
|
66
|
+
this.length = this.#patternList.length;
|
|
67
|
+
}
|
|
68
|
+
else if (this.isDrive() || this.isAbsolute()) {
|
|
69
|
+
const [p1, ...prest] = this.#patternList;
|
|
70
|
+
const [g1, ...grest] = this.#globList;
|
|
71
|
+
if (prest[0] === '') {
|
|
72
|
+
// ends in /
|
|
73
|
+
prest.shift();
|
|
74
|
+
grest.shift();
|
|
75
|
+
}
|
|
76
|
+
const p = p1 + '/';
|
|
77
|
+
const g = g1 + '/';
|
|
78
|
+
this.#patternList = [p, ...prest];
|
|
79
|
+
this.#globList = [g, ...grest];
|
|
80
|
+
this.length = this.#patternList.length;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
[customInspect]() {
|
|
85
|
+
return 'Pattern <' + this.#globList.slice(this.#index).join('/') + '>';
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* The first entry in the parsed list of patterns
|
|
89
|
+
*/
|
|
90
|
+
pattern() {
|
|
91
|
+
return this.#patternList[this.#index];
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* true of if pattern() returns a string
|
|
95
|
+
*/
|
|
96
|
+
isString() {
|
|
97
|
+
return typeof this.#patternList[this.#index] === 'string';
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* true of if pattern() returns GLOBSTAR
|
|
101
|
+
*/
|
|
102
|
+
isGlobstar() {
|
|
103
|
+
return this.#patternList[this.#index] === minimatch_1.GLOBSTAR;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* true if pattern() returns a regexp
|
|
107
|
+
*/
|
|
108
|
+
isRegExp() {
|
|
109
|
+
return this.#patternList[this.#index] instanceof RegExp;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* The /-joined set of glob parts that make up this pattern
|
|
113
|
+
*/
|
|
114
|
+
globString() {
|
|
115
|
+
return (this.#globString =
|
|
116
|
+
this.#globString ||
|
|
117
|
+
(this.#index === 0 ?
|
|
118
|
+
this.isAbsolute() ?
|
|
119
|
+
this.#globList[0] + this.#globList.slice(1).join('/')
|
|
120
|
+
: this.#globList.join('/')
|
|
121
|
+
: this.#globList.slice(this.#index).join('/')));
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* true if there are more pattern parts after this one
|
|
125
|
+
*/
|
|
126
|
+
hasMore() {
|
|
127
|
+
return this.length > this.#index + 1;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* The rest of the pattern after this part, or null if this is the end
|
|
131
|
+
*/
|
|
132
|
+
rest() {
|
|
133
|
+
if (this.#rest !== undefined)
|
|
134
|
+
return this.#rest;
|
|
135
|
+
if (!this.hasMore())
|
|
136
|
+
return (this.#rest = null);
|
|
137
|
+
this.#rest = new Pattern(this.#patternList, this.#globList, this.#index + 1, this.#platform);
|
|
138
|
+
this.#rest.#isAbsolute = this.#isAbsolute;
|
|
139
|
+
this.#rest.#isUNC = this.#isUNC;
|
|
140
|
+
this.#rest.#isDrive = this.#isDrive;
|
|
141
|
+
return this.#rest;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* true if the pattern represents a //unc/path/ on windows
|
|
145
|
+
*/
|
|
146
|
+
isUNC() {
|
|
147
|
+
const pl = this.#patternList;
|
|
148
|
+
return this.#isUNC !== undefined ?
|
|
149
|
+
this.#isUNC
|
|
150
|
+
: (this.#isUNC =
|
|
151
|
+
this.#platform === 'win32' &&
|
|
152
|
+
this.#index === 0 &&
|
|
153
|
+
pl[0] === '' &&
|
|
154
|
+
pl[1] === '' &&
|
|
155
|
+
typeof pl[2] === 'string' &&
|
|
156
|
+
!!pl[2] &&
|
|
157
|
+
typeof pl[3] === 'string' &&
|
|
158
|
+
!!pl[3]);
|
|
159
|
+
}
|
|
160
|
+
// pattern like C:/...
|
|
161
|
+
// split = ['C:', ...]
|
|
162
|
+
// XXX: would be nice to handle patterns like `c:*` to test the cwd
|
|
163
|
+
// in c: for *, but I don't know of a way to even figure out what that
|
|
164
|
+
// cwd is without actually chdir'ing into it?
|
|
165
|
+
/**
|
|
166
|
+
* True if the pattern starts with a drive letter on Windows
|
|
167
|
+
*/
|
|
168
|
+
isDrive() {
|
|
169
|
+
const pl = this.#patternList;
|
|
170
|
+
return this.#isDrive !== undefined ?
|
|
171
|
+
this.#isDrive
|
|
172
|
+
: (this.#isDrive =
|
|
173
|
+
this.#platform === 'win32' &&
|
|
174
|
+
this.#index === 0 &&
|
|
175
|
+
this.length > 1 &&
|
|
176
|
+
typeof pl[0] === 'string' &&
|
|
177
|
+
/^[a-z]:$/i.test(pl[0]));
|
|
178
|
+
}
|
|
179
|
+
// pattern = '/' or '/...' or '/x/...'
|
|
180
|
+
// split = ['', ''] or ['', ...] or ['', 'x', ...]
|
|
181
|
+
// Drive and UNC both considered absolute on windows
|
|
182
|
+
/**
|
|
183
|
+
* True if the pattern is rooted on an absolute path
|
|
184
|
+
*/
|
|
185
|
+
isAbsolute() {
|
|
186
|
+
const pl = this.#patternList;
|
|
187
|
+
return this.#isAbsolute !== undefined ?
|
|
188
|
+
this.#isAbsolute
|
|
189
|
+
: (this.#isAbsolute =
|
|
190
|
+
(pl[0] === '' && pl.length > 1) ||
|
|
191
|
+
this.isDrive() ||
|
|
192
|
+
this.isUNC());
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* consume the root of the pattern, and return it
|
|
196
|
+
*/
|
|
197
|
+
root() {
|
|
198
|
+
const p = this.#patternList[0];
|
|
199
|
+
return (typeof p === 'string' && this.isAbsolute() && this.#index === 0) ?
|
|
200
|
+
p
|
|
201
|
+
: '';
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Check to see if the current globstar pattern is allowed to follow
|
|
205
|
+
* a symbolic link.
|
|
206
|
+
*/
|
|
207
|
+
checkFollowGlobstar() {
|
|
208
|
+
return !(this.#index === 0 ||
|
|
209
|
+
!this.isGlobstar() ||
|
|
210
|
+
!this.#followGlobstar);
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Mark that the current globstar pattern is following a symbolic link
|
|
214
|
+
*/
|
|
215
|
+
markFollowGlobstar() {
|
|
216
|
+
if (this.#index === 0 || !this.isGlobstar() || !this.#followGlobstar)
|
|
217
|
+
return false;
|
|
218
|
+
this.#followGlobstar = false;
|
|
219
|
+
return true;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
exports.Pattern = Pattern;
|
|
223
|
+
//# sourceMappingURL=pattern.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern.js","sourceRoot":"","sources":["../../src/pattern.ts"],"names":[],"mappings":"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","sourcesContent":["// this is just a very light wrapper around 2 arrays with an offset index\n\nimport { GLOBSTAR } from 'minimatch'\nexport type MMPattern = string | RegExp | typeof GLOBSTAR\n\n// an array of length >= 1\nexport type PatternList = [p: MMPattern, ...rest: MMPattern[]]\nexport type UNCPatternList = [\n p0: '',\n p1: '',\n p2: string,\n p3: string,\n ...rest: MMPattern[],\n]\nexport type DrivePatternList = [p0: string, ...rest: MMPattern[]]\nexport type AbsolutePatternList = [p0: '', ...rest: MMPattern[]]\nexport type GlobList = [p: string, ...rest: string[]]\n\nconst isPatternList = (pl: MMPattern[]): pl is PatternList =>\n pl.length >= 1\nconst isGlobList = (gl: string[]): gl is GlobList => gl.length >= 1\n\nconst customInspect = Symbol.for('nodejs.util.inspect.custom')\n\n/**\n * An immutable-ish view on an array of glob parts and their parsed\n * results\n */\nexport class Pattern {\n readonly #patternList: PatternList\n readonly #globList: GlobList\n readonly #index: number\n readonly length: number\n readonly #platform: NodeJS.Platform\n #rest?: Pattern | null\n #globString?: string\n #isDrive?: boolean\n #isUNC?: boolean\n #isAbsolute?: boolean\n #followGlobstar: boolean = true\n\n constructor(\n patternList: MMPattern[],\n globList: string[],\n index: number,\n platform: NodeJS.Platform,\n ) {\n if (!isPatternList(patternList)) {\n throw new TypeError('empty pattern list')\n }\n if (!isGlobList(globList)) {\n throw new TypeError('empty glob list')\n }\n if (globList.length !== patternList.length) {\n throw new TypeError('mismatched pattern list and glob list lengths')\n }\n this.length = patternList.length\n if (index < 0 || index >= this.length) {\n throw new TypeError('index out of range')\n }\n this.#patternList = patternList\n this.#globList = globList\n this.#index = index\n this.#platform = platform\n\n // normalize root entries of absolute patterns on initial creation.\n if (this.#index === 0) {\n // c: => ['c:/']\n // C:/ => ['C:/']\n // C:/x => ['C:/', 'x']\n // //host/share => ['//host/share/']\n // //host/share/ => ['//host/share/']\n // //host/share/x => ['//host/share/', 'x']\n // /etc => ['/', 'etc']\n // / => ['/']\n if (this.isUNC()) {\n // '' / '' / 'host' / 'share'\n const [p0, p1, p2, p3, ...prest] = this.#patternList\n const [g0, g1, g2, g3, ...grest] = this.#globList\n if (prest[0] === '') {\n // ends in /\n prest.shift()\n grest.shift()\n }\n const p = [p0, p1, p2, p3, ''].join('/')\n const g = [g0, g1, g2, g3, ''].join('/')\n this.#patternList = [p, ...prest]\n this.#globList = [g, ...grest]\n this.length = this.#patternList.length\n } else if (this.isDrive() || this.isAbsolute()) {\n const [p1, ...prest] = this.#patternList\n const [g1, ...grest] = this.#globList\n if (prest[0] === '') {\n // ends in /\n prest.shift()\n grest.shift()\n }\n const p = (p1 as string) + '/'\n const g = g1 + '/'\n this.#patternList = [p, ...prest]\n this.#globList = [g, ...grest]\n this.length = this.#patternList.length\n }\n }\n }\n\n [customInspect]() {\n return 'Pattern <' + this.#globList.slice(this.#index).join('/') + '>'\n }\n\n /**\n * The first entry in the parsed list of patterns\n */\n pattern(): MMPattern {\n return this.#patternList[this.#index] as MMPattern\n }\n\n /**\n * true of if pattern() returns a string\n */\n isString(): boolean {\n return typeof this.#patternList[this.#index] === 'string'\n }\n /**\n * true of if pattern() returns GLOBSTAR\n */\n isGlobstar(): boolean {\n return this.#patternList[this.#index] === GLOBSTAR\n }\n /**\n * true if pattern() returns a regexp\n */\n isRegExp(): boolean {\n return this.#patternList[this.#index] instanceof RegExp\n }\n\n /**\n * The /-joined set of glob parts that make up this pattern\n */\n globString(): string {\n return (this.#globString =\n this.#globString ||\n (this.#index === 0 ?\n this.isAbsolute() ?\n this.#globList[0] + this.#globList.slice(1).join('/')\n : this.#globList.join('/')\n : this.#globList.slice(this.#index).join('/')))\n }\n\n /**\n * true if there are more pattern parts after this one\n */\n hasMore(): boolean {\n return this.length > this.#index + 1\n }\n\n /**\n * The rest of the pattern after this part, or null if this is the end\n */\n rest(): Pattern | null {\n if (this.#rest !== undefined) return this.#rest\n if (!this.hasMore()) return (this.#rest = null)\n this.#rest = new Pattern(\n this.#patternList,\n this.#globList,\n this.#index + 1,\n this.#platform,\n )\n this.#rest.#isAbsolute = this.#isAbsolute\n this.#rest.#isUNC = this.#isUNC\n this.#rest.#isDrive = this.#isDrive\n return this.#rest\n }\n\n /**\n * true if the pattern represents a //unc/path/ on windows\n */\n isUNC(): boolean {\n const pl = this.#patternList\n return this.#isUNC !== undefined ?\n this.#isUNC\n : (this.#isUNC =\n this.#platform === 'win32' &&\n this.#index === 0 &&\n pl[0] === '' &&\n pl[1] === '' &&\n typeof pl[2] === 'string' &&\n !!pl[2] &&\n typeof pl[3] === 'string' &&\n !!pl[3])\n }\n\n // pattern like C:/...\n // split = ['C:', ...]\n // XXX: would be nice to handle patterns like `c:*` to test the cwd\n // in c: for *, but I don't know of a way to even figure out what that\n // cwd is without actually chdir'ing into it?\n /**\n * True if the pattern starts with a drive letter on Windows\n */\n isDrive(): boolean {\n const pl = this.#patternList\n return this.#isDrive !== undefined ?\n this.#isDrive\n : (this.#isDrive =\n this.#platform === 'win32' &&\n this.#index === 0 &&\n this.length > 1 &&\n typeof pl[0] === 'string' &&\n /^[a-z]:$/i.test(pl[0]))\n }\n\n // pattern = '/' or '/...' or '/x/...'\n // split = ['', ''] or ['', ...] or ['', 'x', ...]\n // Drive and UNC both considered absolute on windows\n /**\n * True if the pattern is rooted on an absolute path\n */\n isAbsolute(): boolean {\n const pl = this.#patternList\n return this.#isAbsolute !== undefined ?\n this.#isAbsolute\n : (this.#isAbsolute =\n (pl[0] === '' && pl.length > 1) ||\n this.isDrive() ||\n this.isUNC())\n }\n\n /**\n * consume the root of the pattern, and return it\n */\n root(): string {\n const p = this.#patternList[0]\n return (\n typeof p === 'string' && this.isAbsolute() && this.#index === 0\n ) ?\n p\n : ''\n }\n\n /**\n * Check to see if the current globstar pattern is allowed to follow\n * a symbolic link.\n */\n checkFollowGlobstar(): boolean {\n return !(\n this.#index === 0 ||\n !this.isGlobstar() ||\n !this.#followGlobstar\n )\n }\n\n /**\n * Mark that the current globstar pattern is following a symbolic link\n */\n markFollowGlobstar(): boolean {\n if (this.#index === 0 || !this.isGlobstar() || !this.#followGlobstar)\n return false\n this.#followGlobstar = false\n return true\n }\n}\n"]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { MMRegExp } from 'minimatch';
|
|
2
|
+
import { Path } from 'path-scurry';
|
|
3
|
+
import { Pattern } from './pattern.js';
|
|
4
|
+
import { GlobWalkerOpts } from './walker.js';
|
|
5
|
+
/**
|
|
6
|
+
* A cache of which patterns have been processed for a given Path
|
|
7
|
+
*/
|
|
8
|
+
export declare class HasWalkedCache {
|
|
9
|
+
store: Map<string, Set<string>>;
|
|
10
|
+
constructor(store?: Map<string, Set<string>>);
|
|
11
|
+
copy(): HasWalkedCache;
|
|
12
|
+
hasWalked(target: Path, pattern: Pattern): boolean | undefined;
|
|
13
|
+
storeWalked(target: Path, pattern: Pattern): void;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* A record of which paths have been matched in a given walk step,
|
|
17
|
+
* and whether they only are considered a match if they are a directory,
|
|
18
|
+
* and whether their absolute or relative path should be returned.
|
|
19
|
+
*/
|
|
20
|
+
export declare class MatchRecord {
|
|
21
|
+
store: Map<Path, number>;
|
|
22
|
+
add(target: Path, absolute: boolean, ifDir: boolean): void;
|
|
23
|
+
entries(): [Path, boolean, boolean][];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* A collection of patterns that must be processed in a subsequent step
|
|
27
|
+
* for a given path.
|
|
28
|
+
*/
|
|
29
|
+
export declare class SubWalks {
|
|
30
|
+
store: Map<Path, Pattern[]>;
|
|
31
|
+
add(target: Path, pattern: Pattern): void;
|
|
32
|
+
get(target: Path): Pattern[];
|
|
33
|
+
entries(): [Path, Pattern[]][];
|
|
34
|
+
keys(): Path[];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* The class that processes patterns for a given path.
|
|
38
|
+
*
|
|
39
|
+
* Handles child entry filtering, and determining whether a path's
|
|
40
|
+
* directory contents must be read.
|
|
41
|
+
*/
|
|
42
|
+
export declare class Processor {
|
|
43
|
+
hasWalkedCache: HasWalkedCache;
|
|
44
|
+
matches: MatchRecord;
|
|
45
|
+
subwalks: SubWalks;
|
|
46
|
+
patterns?: Pattern[];
|
|
47
|
+
follow: boolean;
|
|
48
|
+
dot: boolean;
|
|
49
|
+
opts: GlobWalkerOpts;
|
|
50
|
+
constructor(opts: GlobWalkerOpts, hasWalkedCache?: HasWalkedCache);
|
|
51
|
+
processPatterns(target: Path, patterns: Pattern[]): this;
|
|
52
|
+
subwalkTargets(): Path[];
|
|
53
|
+
child(): Processor;
|
|
54
|
+
filterEntries(parent: Path, entries: Path[]): Processor;
|
|
55
|
+
testGlobstar(e: Path, pattern: Pattern, rest: Pattern | null, absolute: boolean): void;
|
|
56
|
+
testRegExp(e: Path, p: MMRegExp, rest: Pattern | null, absolute: boolean): void;
|
|
57
|
+
testString(e: Path, p: string, rest: Pattern | null, absolute: boolean): void;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=processor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processor.d.ts","sourceRoot":"","sources":["../../src/processor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,EAAa,OAAO,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C;;GAEG;AACH,qBAAa,cAAc;IACzB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;gBACnB,KAAK,GAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IAGvD,IAAI;IAGJ,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO;IAGxC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO;CAM3C;AAED;;;;GAIG;AACH,qBAAa,WAAW;IACtB,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAY;IACpC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO;IAMnD,OAAO,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;CAOtC;AAED;;;GAGG;AACH,qBAAa,QAAQ;IACnB,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAY;IACvC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO;IAWlC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,EAAE;IAS5B,OAAO,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE;IAG9B,IAAI,IAAI,IAAI,EAAE;CAGf;AAED;;;;;GAKG;AACH,qBAAa,SAAS;IACpB,cAAc,EAAE,cAAc,CAAA;IAC9B,OAAO,cAAoB;IAC3B,QAAQ,WAAiB;IACzB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB,MAAM,EAAE,OAAO,CAAA;IACf,GAAG,EAAE,OAAO,CAAA;IACZ,IAAI,EAAE,cAAc,CAAA;gBAER,IAAI,EAAE,cAAc,EAAE,cAAc,CAAC,EAAE,cAAc;IAQjE,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE;IAmGjD,cAAc,IAAI,IAAI,EAAE;IAIxB,KAAK;IAQL,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,SAAS;IAqBvD,YAAY,CACV,CAAC,EAAE,IAAI,EACP,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO,GAAG,IAAI,EACpB,QAAQ,EAAE,OAAO;IA8CnB,UAAU,CACR,CAAC,EAAE,IAAI,EACP,CAAC,EAAE,QAAQ,EACX,IAAI,EAAE,OAAO,GAAG,IAAI,EACpB,QAAQ,EAAE,OAAO;IAUnB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO;CASvE"}
|