@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.
Files changed (66) hide show
  1. package/LICENSE.md +63 -0
  2. package/README.md +31 -0
  3. package/changes.json +10 -0
  4. package/dist/commonjs/glob.d.ts +396 -0
  5. package/dist/commonjs/glob.d.ts.map +1 -0
  6. package/dist/commonjs/glob.js +248 -0
  7. package/dist/commonjs/glob.js.map +1 -0
  8. package/dist/commonjs/has-magic.d.ts +14 -0
  9. package/dist/commonjs/has-magic.d.ts.map +1 -0
  10. package/dist/commonjs/has-magic.js +27 -0
  11. package/dist/commonjs/has-magic.js.map +1 -0
  12. package/dist/commonjs/ignore.d.ts +24 -0
  13. package/dist/commonjs/ignore.d.ts.map +1 -0
  14. package/dist/commonjs/ignore.js +119 -0
  15. package/dist/commonjs/ignore.js.map +1 -0
  16. package/dist/commonjs/index.d.ts +97 -0
  17. package/dist/commonjs/index.d.ts.map +1 -0
  18. package/dist/commonjs/index.js +68 -0
  19. package/dist/commonjs/index.js.map +1 -0
  20. package/dist/commonjs/index.min.js +4 -0
  21. package/dist/commonjs/index.min.js.map +7 -0
  22. package/dist/commonjs/package.json +3 -0
  23. package/dist/commonjs/pattern.d.ts +79 -0
  24. package/dist/commonjs/pattern.d.ts.map +1 -0
  25. package/dist/commonjs/pattern.js +223 -0
  26. package/dist/commonjs/pattern.js.map +1 -0
  27. package/dist/commonjs/processor.d.ts +59 -0
  28. package/dist/commonjs/processor.d.ts.map +1 -0
  29. package/dist/commonjs/processor.js +301 -0
  30. package/dist/commonjs/processor.js.map +1 -0
  31. package/dist/commonjs/walker.d.ts +97 -0
  32. package/dist/commonjs/walker.d.ts.map +1 -0
  33. package/dist/commonjs/walker.js +387 -0
  34. package/dist/commonjs/walker.js.map +1 -0
  35. package/dist/esm/glob.d.ts +396 -0
  36. package/dist/esm/glob.d.ts.map +1 -0
  37. package/dist/esm/glob.js +244 -0
  38. package/dist/esm/glob.js.map +1 -0
  39. package/dist/esm/has-magic.d.ts +14 -0
  40. package/dist/esm/has-magic.d.ts.map +1 -0
  41. package/dist/esm/has-magic.js +23 -0
  42. package/dist/esm/has-magic.js.map +1 -0
  43. package/dist/esm/ignore.d.ts +24 -0
  44. package/dist/esm/ignore.d.ts.map +1 -0
  45. package/dist/esm/ignore.js +115 -0
  46. package/dist/esm/ignore.js.map +1 -0
  47. package/dist/esm/index.d.ts +97 -0
  48. package/dist/esm/index.d.ts.map +1 -0
  49. package/dist/esm/index.js +55 -0
  50. package/dist/esm/index.js.map +1 -0
  51. package/dist/esm/index.min.js +4 -0
  52. package/dist/esm/index.min.js.map +7 -0
  53. package/dist/esm/package.json +3 -0
  54. package/dist/esm/pattern.d.ts +79 -0
  55. package/dist/esm/pattern.d.ts.map +1 -0
  56. package/dist/esm/pattern.js +219 -0
  57. package/dist/esm/pattern.js.map +1 -0
  58. package/dist/esm/processor.d.ts +59 -0
  59. package/dist/esm/processor.d.ts.map +1 -0
  60. package/dist/esm/processor.js +294 -0
  61. package/dist/esm/processor.js.map +1 -0
  62. package/dist/esm/walker.d.ts +97 -0
  63. package/dist/esm/walker.d.ts.map +1 -0
  64. package/dist/esm/walker.js +381 -0
  65. package/dist/esm/walker.js.map +1 -0
  66. package/package.json +119 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -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,219 @@
1
+ // this is just a very light wrapper around 2 arrays with an offset index
2
+ import { GLOBSTAR } from 'minimatch';
3
+ const isPatternList = (pl) => pl.length >= 1;
4
+ const isGlobList = (gl) => gl.length >= 1;
5
+ const customInspect = Symbol.for('nodejs.util.inspect.custom');
6
+ /**
7
+ * An immutable-ish view on an array of glob parts and their parsed
8
+ * results
9
+ */
10
+ export class Pattern {
11
+ #patternList;
12
+ #globList;
13
+ #index;
14
+ length;
15
+ #platform;
16
+ #rest;
17
+ #globString;
18
+ #isDrive;
19
+ #isUNC;
20
+ #isAbsolute;
21
+ #followGlobstar = true;
22
+ constructor(patternList, globList, index, platform) {
23
+ if (!isPatternList(patternList)) {
24
+ throw new TypeError('empty pattern list');
25
+ }
26
+ if (!isGlobList(globList)) {
27
+ throw new TypeError('empty glob list');
28
+ }
29
+ if (globList.length !== patternList.length) {
30
+ throw new TypeError('mismatched pattern list and glob list lengths');
31
+ }
32
+ this.length = patternList.length;
33
+ if (index < 0 || index >= this.length) {
34
+ throw new TypeError('index out of range');
35
+ }
36
+ this.#patternList = patternList;
37
+ this.#globList = globList;
38
+ this.#index = index;
39
+ this.#platform = platform;
40
+ // normalize root entries of absolute patterns on initial creation.
41
+ if (this.#index === 0) {
42
+ // c: => ['c:/']
43
+ // C:/ => ['C:/']
44
+ // C:/x => ['C:/', 'x']
45
+ // //host/share => ['//host/share/']
46
+ // //host/share/ => ['//host/share/']
47
+ // //host/share/x => ['//host/share/', 'x']
48
+ // /etc => ['/', 'etc']
49
+ // / => ['/']
50
+ if (this.isUNC()) {
51
+ // '' / '' / 'host' / 'share'
52
+ const [p0, p1, p2, p3, ...prest] = this.#patternList;
53
+ const [g0, g1, g2, g3, ...grest] = this.#globList;
54
+ if (prest[0] === '') {
55
+ // ends in /
56
+ prest.shift();
57
+ grest.shift();
58
+ }
59
+ const p = [p0, p1, p2, p3, ''].join('/');
60
+ const g = [g0, g1, g2, g3, ''].join('/');
61
+ this.#patternList = [p, ...prest];
62
+ this.#globList = [g, ...grest];
63
+ this.length = this.#patternList.length;
64
+ }
65
+ else if (this.isDrive() || this.isAbsolute()) {
66
+ const [p1, ...prest] = this.#patternList;
67
+ const [g1, ...grest] = this.#globList;
68
+ if (prest[0] === '') {
69
+ // ends in /
70
+ prest.shift();
71
+ grest.shift();
72
+ }
73
+ const p = p1 + '/';
74
+ const g = g1 + '/';
75
+ this.#patternList = [p, ...prest];
76
+ this.#globList = [g, ...grest];
77
+ this.length = this.#patternList.length;
78
+ }
79
+ }
80
+ }
81
+ [customInspect]() {
82
+ return 'Pattern <' + this.#globList.slice(this.#index).join('/') + '>';
83
+ }
84
+ /**
85
+ * The first entry in the parsed list of patterns
86
+ */
87
+ pattern() {
88
+ return this.#patternList[this.#index];
89
+ }
90
+ /**
91
+ * true of if pattern() returns a string
92
+ */
93
+ isString() {
94
+ return typeof this.#patternList[this.#index] === 'string';
95
+ }
96
+ /**
97
+ * true of if pattern() returns GLOBSTAR
98
+ */
99
+ isGlobstar() {
100
+ return this.#patternList[this.#index] === GLOBSTAR;
101
+ }
102
+ /**
103
+ * true if pattern() returns a regexp
104
+ */
105
+ isRegExp() {
106
+ return this.#patternList[this.#index] instanceof RegExp;
107
+ }
108
+ /**
109
+ * The /-joined set of glob parts that make up this pattern
110
+ */
111
+ globString() {
112
+ return (this.#globString =
113
+ this.#globString ||
114
+ (this.#index === 0 ?
115
+ this.isAbsolute() ?
116
+ this.#globList[0] + this.#globList.slice(1).join('/')
117
+ : this.#globList.join('/')
118
+ : this.#globList.slice(this.#index).join('/')));
119
+ }
120
+ /**
121
+ * true if there are more pattern parts after this one
122
+ */
123
+ hasMore() {
124
+ return this.length > this.#index + 1;
125
+ }
126
+ /**
127
+ * The rest of the pattern after this part, or null if this is the end
128
+ */
129
+ rest() {
130
+ if (this.#rest !== undefined)
131
+ return this.#rest;
132
+ if (!this.hasMore())
133
+ return (this.#rest = null);
134
+ this.#rest = new Pattern(this.#patternList, this.#globList, this.#index + 1, this.#platform);
135
+ this.#rest.#isAbsolute = this.#isAbsolute;
136
+ this.#rest.#isUNC = this.#isUNC;
137
+ this.#rest.#isDrive = this.#isDrive;
138
+ return this.#rest;
139
+ }
140
+ /**
141
+ * true if the pattern represents a //unc/path/ on windows
142
+ */
143
+ isUNC() {
144
+ const pl = this.#patternList;
145
+ return this.#isUNC !== undefined ?
146
+ this.#isUNC
147
+ : (this.#isUNC =
148
+ this.#platform === 'win32' &&
149
+ this.#index === 0 &&
150
+ pl[0] === '' &&
151
+ pl[1] === '' &&
152
+ typeof pl[2] === 'string' &&
153
+ !!pl[2] &&
154
+ typeof pl[3] === 'string' &&
155
+ !!pl[3]);
156
+ }
157
+ // pattern like C:/...
158
+ // split = ['C:', ...]
159
+ // XXX: would be nice to handle patterns like `c:*` to test the cwd
160
+ // in c: for *, but I don't know of a way to even figure out what that
161
+ // cwd is without actually chdir'ing into it?
162
+ /**
163
+ * True if the pattern starts with a drive letter on Windows
164
+ */
165
+ isDrive() {
166
+ const pl = this.#patternList;
167
+ return this.#isDrive !== undefined ?
168
+ this.#isDrive
169
+ : (this.#isDrive =
170
+ this.#platform === 'win32' &&
171
+ this.#index === 0 &&
172
+ this.length > 1 &&
173
+ typeof pl[0] === 'string' &&
174
+ /^[a-z]:$/i.test(pl[0]));
175
+ }
176
+ // pattern = '/' or '/...' or '/x/...'
177
+ // split = ['', ''] or ['', ...] or ['', 'x', ...]
178
+ // Drive and UNC both considered absolute on windows
179
+ /**
180
+ * True if the pattern is rooted on an absolute path
181
+ */
182
+ isAbsolute() {
183
+ const pl = this.#patternList;
184
+ return this.#isAbsolute !== undefined ?
185
+ this.#isAbsolute
186
+ : (this.#isAbsolute =
187
+ (pl[0] === '' && pl.length > 1) ||
188
+ this.isDrive() ||
189
+ this.isUNC());
190
+ }
191
+ /**
192
+ * consume the root of the pattern, and return it
193
+ */
194
+ root() {
195
+ const p = this.#patternList[0];
196
+ return (typeof p === 'string' && this.isAbsolute() && this.#index === 0) ?
197
+ p
198
+ : '';
199
+ }
200
+ /**
201
+ * Check to see if the current globstar pattern is allowed to follow
202
+ * a symbolic link.
203
+ */
204
+ checkFollowGlobstar() {
205
+ return !(this.#index === 0 ||
206
+ !this.isGlobstar() ||
207
+ !this.#followGlobstar);
208
+ }
209
+ /**
210
+ * Mark that the current globstar pattern is following a symbolic link
211
+ */
212
+ markFollowGlobstar() {
213
+ if (this.#index === 0 || !this.isGlobstar() || !this.#followGlobstar)
214
+ return false;
215
+ this.#followGlobstar = false;
216
+ return true;
217
+ }
218
+ }
219
+ //# 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"}