minimatch-fast 0.2.1

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 (85) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +950 -0
  3. package/dist/cjs/brace-expand.d.ts +42 -0
  4. package/dist/cjs/brace-expand.d.ts.map +1 -0
  5. package/dist/cjs/brace-expand.js +172 -0
  6. package/dist/cjs/brace-expand.js.map +1 -0
  7. package/dist/cjs/cache.d.ts +36 -0
  8. package/dist/cjs/cache.d.ts.map +1 -0
  9. package/dist/cjs/cache.js +91 -0
  10. package/dist/cjs/cache.js.map +1 -0
  11. package/dist/cjs/escape.d.ts +40 -0
  12. package/dist/cjs/escape.d.ts.map +1 -0
  13. package/dist/cjs/escape.js +52 -0
  14. package/dist/cjs/escape.js.map +1 -0
  15. package/dist/cjs/fast-paths.d.ts +54 -0
  16. package/dist/cjs/fast-paths.d.ts.map +1 -0
  17. package/dist/cjs/fast-paths.js +213 -0
  18. package/dist/cjs/fast-paths.js.map +1 -0
  19. package/dist/cjs/index.d.ts +150 -0
  20. package/dist/cjs/index.d.ts.map +1 -0
  21. package/dist/cjs/index.js +250 -0
  22. package/dist/cjs/index.js.map +1 -0
  23. package/dist/cjs/minimatch-class.d.ts +153 -0
  24. package/dist/cjs/minimatch-class.d.ts.map +1 -0
  25. package/dist/cjs/minimatch-class.js +618 -0
  26. package/dist/cjs/minimatch-class.js.map +1 -0
  27. package/dist/cjs/options.d.ts +31 -0
  28. package/dist/cjs/options.d.ts.map +1 -0
  29. package/dist/cjs/options.js +67 -0
  30. package/dist/cjs/options.js.map +1 -0
  31. package/dist/cjs/package.json +3 -0
  32. package/dist/cjs/types.d.ts +194 -0
  33. package/dist/cjs/types.d.ts.map +1 -0
  34. package/dist/cjs/types.js +19 -0
  35. package/dist/cjs/types.js.map +1 -0
  36. package/dist/cjs/unescape.d.ts +36 -0
  37. package/dist/cjs/unescape.d.ts.map +1 -0
  38. package/dist/cjs/unescape.js +49 -0
  39. package/dist/cjs/unescape.js.map +1 -0
  40. package/dist/cjs/utils.d.ts +62 -0
  41. package/dist/cjs/utils.d.ts.map +1 -0
  42. package/dist/cjs/utils.js +126 -0
  43. package/dist/cjs/utils.js.map +1 -0
  44. package/dist/esm/brace-expand.d.ts +42 -0
  45. package/dist/esm/brace-expand.d.ts.map +1 -0
  46. package/dist/esm/brace-expand.js +165 -0
  47. package/dist/esm/brace-expand.js.map +1 -0
  48. package/dist/esm/cache.d.ts +36 -0
  49. package/dist/esm/cache.d.ts.map +1 -0
  50. package/dist/esm/cache.js +86 -0
  51. package/dist/esm/cache.js.map +1 -0
  52. package/dist/esm/escape.d.ts +40 -0
  53. package/dist/esm/escape.d.ts.map +1 -0
  54. package/dist/esm/escape.js +49 -0
  55. package/dist/esm/escape.js.map +1 -0
  56. package/dist/esm/fast-paths.d.ts +54 -0
  57. package/dist/esm/fast-paths.d.ts.map +1 -0
  58. package/dist/esm/fast-paths.js +209 -0
  59. package/dist/esm/fast-paths.js.map +1 -0
  60. package/dist/esm/index.d.ts +150 -0
  61. package/dist/esm/index.d.ts.map +1 -0
  62. package/dist/esm/index.js +240 -0
  63. package/dist/esm/index.js.map +1 -0
  64. package/dist/esm/minimatch-class.d.ts +153 -0
  65. package/dist/esm/minimatch-class.d.ts.map +1 -0
  66. package/dist/esm/minimatch-class.js +611 -0
  67. package/dist/esm/minimatch-class.js.map +1 -0
  68. package/dist/esm/options.d.ts +31 -0
  69. package/dist/esm/options.d.ts.map +1 -0
  70. package/dist/esm/options.js +63 -0
  71. package/dist/esm/options.js.map +1 -0
  72. package/dist/esm/package.json +3 -0
  73. package/dist/esm/types.d.ts +194 -0
  74. package/dist/esm/types.d.ts.map +1 -0
  75. package/dist/esm/types.js +16 -0
  76. package/dist/esm/types.js.map +1 -0
  77. package/dist/esm/unescape.d.ts +36 -0
  78. package/dist/esm/unescape.d.ts.map +1 -0
  79. package/dist/esm/unescape.js +46 -0
  80. package/dist/esm/unescape.js.map +1 -0
  81. package/dist/esm/utils.d.ts +62 -0
  82. package/dist/esm/utils.d.ts.map +1 -0
  83. package/dist/esm/utils.js +116 -0
  84. package/dist/esm/utils.js.map +1 -0
  85. package/package.json +83 -0
@@ -0,0 +1,618 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Minimatch class - core pattern matching implementation
4
+ *
5
+ * This is the heart of minimatch-fast. The Minimatch class provides 100% API
6
+ * compatibility with minimatch's Minimatch class while using picomatch
7
+ * internally for faster and more secure pattern matching.
8
+ *
9
+ * Key features:
10
+ * - Pattern compilation and caching for efficient repeated matching
11
+ * - Full support for glob patterns: *, **, ?, [], {}, extglob
12
+ * - Brace expansion using the 'braces' package
13
+ * - Negation patterns with !
14
+ * - Comment patterns with #
15
+ * - Cross-platform path handling (Windows and POSIX)
16
+ *
17
+ * Architecture:
18
+ * 1. Constructor receives pattern and options
19
+ * 2. Pattern is parsed and expanded (braces)
20
+ * 3. Picomatch matchers are created for each expanded pattern
21
+ * 4. match() method tests paths against all matchers
22
+ *
23
+ * Compatibility layer:
24
+ * Some edge cases require special handling to match minimatch's exact behavior:
25
+ * - Dotfiles (. and ..) are never matched by wildcards
26
+ * - Negated character classes [^...] don't match dotfiles
27
+ * - Backslash escapes in character classes ([\b] = literal 'b')
28
+ *
29
+ * @author 686f6c61
30
+ * @see https://github.com/686f6c61/minimatch-fast
31
+ * @license MIT
32
+ */
33
+ var __importDefault = (this && this.__importDefault) || function (mod) {
34
+ return (mod && mod.__esModule) ? mod : { "default": mod };
35
+ };
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.Minimatch = void 0;
38
+ const picomatch_1 = __importDefault(require("picomatch"));
39
+ const types_js_1 = require("./types.js");
40
+ const options_js_1 = require("./options.js");
41
+ const brace_expand_js_1 = require("./brace-expand.js");
42
+ const utils_js_1 = require("./utils.js");
43
+ /**
44
+ * Maximum pattern length to prevent ReDoS attacks
45
+ */
46
+ const MAX_PATTERN_LENGTH = 65536;
47
+ /**
48
+ * Minimatch class for glob pattern matching
49
+ */
50
+ class Minimatch {
51
+ /** Original pattern passed to constructor */
52
+ pattern;
53
+ /** Options used for matching */
54
+ options;
55
+ /** 2D array of parsed pattern parts after brace expansion */
56
+ set;
57
+ /** Whether the pattern is negated (starts with !) */
58
+ negate;
59
+ /** Whether the pattern is a comment (starts with #) */
60
+ comment;
61
+ /** Whether the pattern is empty */
62
+ empty;
63
+ /** Whether to preserve multiple consecutive slashes */
64
+ preserveMultipleSlashes;
65
+ /** Whether to do partial matching */
66
+ partial;
67
+ /** Result of brace expansion on the pattern */
68
+ globSet;
69
+ /** Brace-expanded patterns split into path portions */
70
+ globParts;
71
+ /** Whether to perform case-insensitive matching */
72
+ nocase;
73
+ /** Whether running on Windows */
74
+ isWindows;
75
+ /** Target platform */
76
+ platform;
77
+ /** Windows-specific magic root handling */
78
+ windowsNoMagicRoot;
79
+ /** Compiled regular expression (lazily computed) */
80
+ regexp;
81
+ /** Whether backslash is treated as path separator */
82
+ windowsPathsNoEscape;
83
+ /** Whether negation is disabled */
84
+ nonegate;
85
+ // Private properties
86
+ _picoOpts;
87
+ _matchers;
88
+ _debugFn;
89
+ // Cached computed values for performance
90
+ _hasNegatedCharClassCached;
91
+ _requiresTrailingSlashCached;
92
+ _patternBasename;
93
+ /**
94
+ * Create a new Minimatch instance
95
+ *
96
+ * @param pattern - The glob pattern to match against
97
+ * @param options - Matching options
98
+ */
99
+ constructor(pattern, options = {}) {
100
+ // Validate pattern
101
+ if (typeof pattern !== 'string') {
102
+ throw new TypeError('glob pattern must be a string');
103
+ }
104
+ // Prevent ReDoS attacks with very long patterns
105
+ if (pattern.length > MAX_PATTERN_LENGTH) {
106
+ throw new TypeError('pattern is too long');
107
+ }
108
+ // Store options
109
+ this.options = options;
110
+ this.pattern = pattern;
111
+ // Platform detection
112
+ this.platform = options.platform || (0, utils_js_1.getPlatform)();
113
+ this.isWindows = (0, utils_js_1.isWindows)(this.platform);
114
+ // Handle Windows path escape mode
115
+ this.windowsPathsNoEscape =
116
+ !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;
117
+ // Normalize pattern for Windows if needed
118
+ if (this.windowsPathsNoEscape) {
119
+ this.pattern = (0, utils_js_1.normalizePattern)(this.pattern, true);
120
+ }
121
+ // Initialize properties
122
+ this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;
123
+ this.regexp = null;
124
+ this.negate = false;
125
+ this.nonegate = !!options.nonegate;
126
+ this.comment = false;
127
+ this.empty = false;
128
+ this.partial = !!options.partial;
129
+ this.nocase = !!options.nocase;
130
+ this.windowsNoMagicRoot =
131
+ options.windowsNoMagicRoot !== undefined
132
+ ? options.windowsNoMagicRoot
133
+ : !!(this.isWindows && this.nocase);
134
+ this.globSet = [];
135
+ this.globParts = [];
136
+ this.set = [];
137
+ this._matchers = [];
138
+ // Debug function (no-op by default)
139
+ this._debugFn = () => { };
140
+ // Translate options for picomatch
141
+ const { picoOpts } = (0, options_js_1.translateOptions)(options);
142
+ this._picoOpts = picoOpts;
143
+ // Build the pattern set
144
+ this.make();
145
+ // Pre-compute cached values for performance
146
+ // These are used in match() and would otherwise be computed on every call
147
+ this._hasNegatedCharClassCached = /\[\^[^\]]+\]/.test(this.pattern);
148
+ this._requiresTrailingSlashCached = /\*\*\/\.[^/]+\/\*\*/.test(this.pattern);
149
+ // Cache pattern basename for dotfile handling
150
+ const lastSlash = this.pattern.lastIndexOf('/');
151
+ this._patternBasename = lastSlash >= 0
152
+ ? this.pattern.slice(lastSlash + 1)
153
+ : this.pattern;
154
+ }
155
+ /**
156
+ * Enable debug output
157
+ */
158
+ debug(...args) {
159
+ this._debugFn(...args);
160
+ }
161
+ /**
162
+ * Check if the pattern contains glob magic characters
163
+ */
164
+ hasMagic() {
165
+ // If magicalBraces is set and we have multiple patterns from brace expansion
166
+ if (this.options.magicalBraces && this.set.length > 1) {
167
+ return true;
168
+ }
169
+ // Check each pattern part for non-string (regex) parts
170
+ for (const pattern of this.set) {
171
+ for (const part of pattern) {
172
+ if (typeof part !== 'string') {
173
+ return true;
174
+ }
175
+ }
176
+ }
177
+ return false;
178
+ }
179
+ /**
180
+ * Build the pattern matching set
181
+ */
182
+ make() {
183
+ const pattern = this.pattern;
184
+ const options = this.options;
185
+ // Handle debug mode
186
+ if (options.debug) {
187
+ this._debugFn = (...args) => console.error(...args);
188
+ }
189
+ // Comments match nothing
190
+ if (!options.nocomment && pattern.charAt(0) === '#') {
191
+ this.comment = true;
192
+ return;
193
+ }
194
+ // Empty patterns match nothing
195
+ if (!pattern) {
196
+ this.empty = true;
197
+ return;
198
+ }
199
+ // Parse negation (!)
200
+ this.parseNegate();
201
+ // Expand braces
202
+ this.globSet = [...new Set(this.braceExpand())];
203
+ this.debug(this.pattern, this.globSet);
204
+ // Split into path parts
205
+ const rawGlobParts = this.globSet.map((s) => this.slashSplit(s));
206
+ // Apply preprocessing (optimization, normalization)
207
+ this.globParts = this.preprocess(rawGlobParts);
208
+ this.debug(this.pattern, this.globParts);
209
+ // Create matchers for each expanded pattern
210
+ this._matchers = this.globSet.map((p) => {
211
+ try {
212
+ // Pre-process pattern for minimatch compatibility
213
+ const processed = this.preprocessPattern(p);
214
+ return (0, picomatch_1.default)(processed, this._picoOpts);
215
+ }
216
+ catch {
217
+ // If picomatch fails, return a matcher that never matches
218
+ return () => false;
219
+ }
220
+ });
221
+ // Convert to pattern set for internal use
222
+ this.set = this.globParts
223
+ .map((parts) => {
224
+ return parts.map((part) => this.parse(part));
225
+ })
226
+ .filter((s) => s.indexOf(false) === -1);
227
+ this.debug(this.pattern, this.set);
228
+ }
229
+ /**
230
+ * Parse negation from the pattern
231
+ */
232
+ parseNegate() {
233
+ if (this.nonegate)
234
+ return;
235
+ const pattern = this.pattern;
236
+ let negate = false;
237
+ let negateOffset = 0;
238
+ // Count leading ! characters
239
+ for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {
240
+ negate = !negate;
241
+ negateOffset++;
242
+ }
243
+ // Remove leading ! characters from pattern
244
+ if (negateOffset) {
245
+ this.pattern = pattern.slice(negateOffset);
246
+ }
247
+ this.negate = negate;
248
+ }
249
+ /**
250
+ * Perform brace expansion on the pattern
251
+ */
252
+ braceExpand() {
253
+ return (0, brace_expand_js_1.braceExpand)(this.pattern, this.options);
254
+ }
255
+ /**
256
+ * Split a path by slashes
257
+ */
258
+ slashSplit(p) {
259
+ return (0, utils_js_1.slashSplit)(p, this.preserveMultipleSlashes, this.isWindows);
260
+ }
261
+ /**
262
+ * Preprocess glob parts (optimization, normalization)
263
+ */
264
+ preprocess(globParts) {
265
+ // Convert ** to * if noglobstar
266
+ if (this.options.noglobstar) {
267
+ for (const parts of globParts) {
268
+ for (let j = 0; j < parts.length; j++) {
269
+ if (parts[j] === '**') {
270
+ parts[j] = '*';
271
+ }
272
+ }
273
+ }
274
+ }
275
+ const { optimizationLevel = 1 } = this.options;
276
+ if (optimizationLevel >= 1) {
277
+ // Remove adjacent ** and resolve .. portions
278
+ globParts = globParts
279
+ .map((parts) => {
280
+ return parts.reduce((set, part) => {
281
+ const prev = set[set.length - 1];
282
+ // Skip duplicate **
283
+ if (part === '**' && prev === '**') {
284
+ return set;
285
+ }
286
+ // Resolve ..
287
+ if (part === '..') {
288
+ if (prev && prev !== '..' && prev !== '.' && prev !== '**') {
289
+ set.pop();
290
+ return set;
291
+ }
292
+ }
293
+ set.push(part);
294
+ return set;
295
+ }, []);
296
+ })
297
+ .map((parts) => (parts.length === 0 ? [''] : parts));
298
+ }
299
+ return globParts;
300
+ }
301
+ /**
302
+ * Parse a single pattern part into a regex or string
303
+ */
304
+ parse(pattern) {
305
+ // Globstar
306
+ if (pattern === '**') {
307
+ return types_js_1.GLOBSTAR;
308
+ }
309
+ // Empty string
310
+ if (pattern === '') {
311
+ return '';
312
+ }
313
+ // Try to create a regex using picomatch
314
+ try {
315
+ const regex = picomatch_1.default.makeRe(pattern, this._picoOpts);
316
+ if (regex) {
317
+ return regex;
318
+ }
319
+ return false;
320
+ }
321
+ catch {
322
+ return false;
323
+ }
324
+ }
325
+ /**
326
+ * Test if a path matches the pattern
327
+ *
328
+ * @param path - The path to test
329
+ * @param partial - Whether to do partial matching
330
+ * @returns true if the path matches
331
+ */
332
+ match(path, partial = this.partial) {
333
+ this.debug('match', path, this.pattern);
334
+ // Comments never match
335
+ if (this.comment) {
336
+ return false;
337
+ }
338
+ // Empty patterns only match empty strings
339
+ if (this.empty) {
340
+ return path === '';
341
+ }
342
+ // Root matches everything in partial mode
343
+ if (path === '/' && partial) {
344
+ return true;
345
+ }
346
+ // Normalize Windows paths (only if needed)
347
+ if ((this.windowsPathsNoEscape || this.isWindows) && path.includes('\\')) {
348
+ path = (0, utils_js_1.normalizePath)(path, true);
349
+ }
350
+ // Get the basename for special handling (optimized to avoid split)
351
+ const lastSlashIdx = path.lastIndexOf('/');
352
+ const basename = lastSlashIdx >= 0 ? path.slice(lastSlashIdx + 1) : path;
353
+ // minimatch compatibility: '.' and '..' never match unless pattern is exactly '.' or '..'
354
+ // This is true even with dot:true option
355
+ if (basename === '.' || basename === '..') {
356
+ // Only match if the pattern is exactly the basename (use cached value)
357
+ if (this._patternBasename !== basename && this._patternBasename !== '.*' + basename.slice(1)) {
358
+ // Check if pattern explicitly matches . or ..
359
+ if (!this.pattern.includes(basename)) {
360
+ return this.negate ? true : false;
361
+ }
362
+ }
363
+ }
364
+ // Handle trailing slashes in path
365
+ // minimatch treats 'dir/' as equivalent to 'dir' when pattern doesn't end with /
366
+ const pathWithoutTrailingSlash = path.endsWith('/') && path.length > 1
367
+ ? path.slice(0, -1)
368
+ : path;
369
+ // Use picomatch matchers for fast matching
370
+ let matches = false;
371
+ if (this.options.matchBase && !path.includes('/')) {
372
+ // matchBase mode: match against basename only
373
+ matches = this._matchers.some((matcher) => matcher(path));
374
+ }
375
+ else if (this.options.matchBase) {
376
+ // matchBase with path: try full path first, then basename
377
+ matches = this._matchers.some((matcher) => matcher(path) || matcher(basename));
378
+ }
379
+ else {
380
+ // Normal mode: match full path
381
+ // Try with and without trailing slash for compatibility
382
+ matches = this._matchers.some((matcher) => matcher(path) || matcher(pathWithoutTrailingSlash));
383
+ }
384
+ // minimatch compatibility: negated character classes [^...] should not match dotfiles
385
+ // unless dot option is true
386
+ if (matches && !this.options.dot && this._hasNegatedCharClassCached) {
387
+ if (basename.startsWith('.')) {
388
+ matches = false;
389
+ }
390
+ }
391
+ // minimatch compatibility: globstar patterns like **/.x/** require directory indicators
392
+ // The path ".x" or "a/b/.x" (without trailing /) should not match **/.x/**
393
+ // but ".x/" or "a/b/.x/" or "a/b/.x/c" should match
394
+ if (matches && this._requiresTrailingSlashCached && !path.endsWith('/')) {
395
+ // Check if the matched portion requires a trailing slash
396
+ const patternParts = this.pattern.split('/');
397
+ const pathParts = path.split('/');
398
+ const lastPathPart = pathParts[pathParts.length - 1];
399
+ // If pattern has **/.x/** and path ends with just ".x" (no trailing slash), don't match
400
+ // The pattern requires content after the dotfile directory
401
+ for (let i = 0; i < patternParts.length - 1; i++) {
402
+ if (patternParts[i] === '**' && patternParts[i + 1] && patternParts[i + 1].startsWith('.')) {
403
+ const dotPart = patternParts[i + 1];
404
+ // Check if this is followed by another ** (meaning content is required after)
405
+ if (i + 2 < patternParts.length && patternParts[i + 2] === '**') {
406
+ // Path ends with the dotfile part - should not match without trailing slash
407
+ if (lastPathPart === dotPart) {
408
+ matches = false;
409
+ break;
410
+ }
411
+ }
412
+ }
413
+ }
414
+ }
415
+ // Handle flipNegate option
416
+ if (this.options.flipNegate) {
417
+ return matches;
418
+ }
419
+ // Apply negation
420
+ return this.negate ? !matches : matches;
421
+ }
422
+ // Note: _hasNegatedCharClass and _requiresTrailingSlash are now cached
423
+ // in the constructor as _hasNegatedCharClassCached and _requiresTrailingSlashCached
424
+ // for better performance (avoids regex test on every match() call)
425
+ /**
426
+ * Pre-process pattern for minimatch compatibility
427
+ * Handles edge cases where picomatch behaves differently
428
+ */
429
+ preprocessPattern(pattern) {
430
+ // minimatch treats [\b] as [b] (the backslash is just escaping 'b' in a character class)
431
+ // picomatch treats [\b] as the backspace character
432
+ // Convert [\b] to [b] for compatibility
433
+ pattern = pattern.replace(/\[\\b\]/g, '[b]');
434
+ // Also handle other escaped letters in character classes that should be literal
435
+ // [\n], [\t], etc. in minimatch are just the literal letters n, t, etc.
436
+ // But we need to be careful not to break actual escape sequences
437
+ return pattern;
438
+ }
439
+ /**
440
+ * Create a regular expression from the pattern
441
+ *
442
+ * @returns RegExp or false if pattern is invalid
443
+ */
444
+ makeRe() {
445
+ // Return cached regex if available
446
+ if (this.regexp !== null) {
447
+ return this.regexp;
448
+ }
449
+ // Comments and empty patterns produce no regex
450
+ if (this.comment || this.empty) {
451
+ this.regexp = false;
452
+ return this.regexp;
453
+ }
454
+ // No patterns after parsing
455
+ if (!this.set.length) {
456
+ this.regexp = false;
457
+ return this.regexp;
458
+ }
459
+ const options = this.options;
460
+ const flags = options.nocase ? 'i' : '';
461
+ try {
462
+ // Collect all regexes from expanded patterns
463
+ const regexParts = [];
464
+ for (const glob of this.globSet) {
465
+ try {
466
+ const re = picomatch_1.default.makeRe(glob, this._picoOpts);
467
+ if (re) {
468
+ // Extract the source without anchors
469
+ let src = re.source;
470
+ // Remove ^ and $ anchors if present
471
+ if (src.startsWith('^'))
472
+ src = src.slice(1);
473
+ if (src.endsWith('$'))
474
+ src = src.slice(0, -1);
475
+ regexParts.push(src);
476
+ }
477
+ }
478
+ catch {
479
+ // Skip invalid patterns
480
+ }
481
+ }
482
+ if (regexParts.length === 0) {
483
+ this.regexp = false;
484
+ return this.regexp;
485
+ }
486
+ // Combine all patterns with |
487
+ const combined = regexParts.length === 1
488
+ ? regexParts[0]
489
+ : `(?:${regexParts.join('|')})`;
490
+ const re = `^${combined}$`;
491
+ this.regexp = new RegExp(re, flags);
492
+ this.regexp._src = re;
493
+ this.regexp._glob = this.pattern;
494
+ }
495
+ catch (e) {
496
+ this.regexp = false;
497
+ }
498
+ return this.regexp;
499
+ }
500
+ /**
501
+ * Match a file array against a pattern array
502
+ * This is for internal use and advanced matching scenarios
503
+ *
504
+ * @param file - Array of path segments
505
+ * @param pattern - Array of pattern parts
506
+ * @param partial - Whether to do partial matching
507
+ * @returns true if file matches pattern
508
+ */
509
+ matchOne(file, pattern, partial = false) {
510
+ const options = this.options;
511
+ this.debug('matchOne', { file, pattern, partial });
512
+ // Traverse both arrays simultaneously
513
+ let fi = 0;
514
+ let pi = 0;
515
+ const fl = file.length;
516
+ const pl = pattern.length;
517
+ for (; fi < fl && pi < pl; fi++, pi++) {
518
+ const p = pattern[pi];
519
+ const f = file[fi];
520
+ this.debug('matchOne loop', { fi, pi, f, p });
521
+ // Invalid pattern part
522
+ if (p === false) {
523
+ return false;
524
+ }
525
+ // Globstar handling
526
+ if (p === types_js_1.GLOBSTAR) {
527
+ this.debug('GLOBSTAR', { pi, fl, fi });
528
+ // Handle ** at the end
529
+ const pr = pi + 1;
530
+ if (pr === pl) {
531
+ this.debug('** at end');
532
+ // ** at the end swallows everything except . and ..
533
+ for (; fi < fl; fi++) {
534
+ if (file[fi] === '.' ||
535
+ file[fi] === '..' ||
536
+ (!options.dot && file[fi].charAt(0) === '.')) {
537
+ return false;
538
+ }
539
+ }
540
+ return true;
541
+ }
542
+ // Try to match rest of pattern
543
+ let fr = fi;
544
+ while (fr < fl) {
545
+ const swallowee = file[fr];
546
+ this.debug('globstar while', { swallowee, fr, fl });
547
+ // Try matching the rest
548
+ if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
549
+ this.debug('globstar found match!', fr, fl, swallowee);
550
+ return true;
551
+ }
552
+ // Don't swallow . or .. or dotfiles (unless dot option)
553
+ if (swallowee === '.' ||
554
+ swallowee === '..' ||
555
+ (!options.dot && swallowee.charAt(0) === '.')) {
556
+ this.debug('dot detected!', file, fr, pattern, pi);
557
+ break;
558
+ }
559
+ fr++;
560
+ }
561
+ // Partial match if we've consumed all of file
562
+ if (partial && fr === fl) {
563
+ return true;
564
+ }
565
+ return false;
566
+ }
567
+ // String or RegExp matching for this segment
568
+ let hit;
569
+ if (typeof p === 'string') {
570
+ hit = f === p;
571
+ this.debug('string match', p, f, hit);
572
+ }
573
+ else {
574
+ hit = p.test(f);
575
+ this.debug('pattern match', p, f, hit);
576
+ }
577
+ if (!hit) {
578
+ return false;
579
+ }
580
+ }
581
+ // Check if we matched everything
582
+ if (fi === fl && pi === pl) {
583
+ // Perfect match
584
+ return true;
585
+ }
586
+ else if (fi === fl) {
587
+ // Ran out of file, but still have pattern left
588
+ // This is a partial match
589
+ return partial;
590
+ }
591
+ else if (pi === pl) {
592
+ // Ran out of pattern, but still have file left
593
+ // Only OK if we're at the last part and it's empty (trailing slash)
594
+ return fi === fl - 1 && file[fi] === '';
595
+ }
596
+ // Shouldn't reach here
597
+ throw new Error('wtf?');
598
+ }
599
+ /**
600
+ * Create a new Minimatch class with default options
601
+ *
602
+ * @param def - Default options to apply
603
+ * @returns New Minimatch class with defaults
604
+ */
605
+ static defaults(def) {
606
+ const OrigClass = Minimatch;
607
+ return class DefaultMinimatch extends OrigClass {
608
+ constructor(pattern, options = {}) {
609
+ super(pattern, { ...def, ...options });
610
+ }
611
+ static defaults(options) {
612
+ return OrigClass.defaults({ ...def, ...options });
613
+ }
614
+ };
615
+ }
616
+ }
617
+ exports.Minimatch = Minimatch;
618
+ //# sourceMappingURL=minimatch-class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minimatch-class.js","sourceRoot":"","sources":["../../src/minimatch-class.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @fileoverview Options translator: minimatch options -> picomatch options
3
+ *
4
+ * This module handles the translation of minimatch options to picomatch options.
5
+ * Since minimatch-fast uses picomatch as its matching engine, we need to map
6
+ * the options from minimatch's API to picomatch's API.
7
+ *
8
+ * Key differences between minimatch and picomatch options:
9
+ * - noext (minimatch) -> noextglob (picomatch)
10
+ * - matchBase (minimatch) -> basename (picomatch)
11
+ *
12
+ * Some options are handled specially and not passed to picomatch:
13
+ * - nocomment: Comment patterns (handled in Minimatch class)
14
+ * - nonull: Return pattern when no matches (handled in match function)
15
+ * - flipNegate: Invert negation result (handled in match function)
16
+ *
17
+ * @author 686f6c61
18
+ * @see https://github.com/686f6c61/minimatch-fast
19
+ * @license MIT
20
+ */
21
+ import type { MinimatchOptions, TranslatedOptions } from './types.js';
22
+ /**
23
+ * Translate minimatch options to picomatch options
24
+ * Handles naming differences and sets appropriate defaults
25
+ */
26
+ export declare function translateOptions(opts?: MinimatchOptions): TranslatedOptions;
27
+ /**
28
+ * Merge options with defaults
29
+ */
30
+ export declare function mergeOptions(defaults: MinimatchOptions, options: MinimatchOptions): MinimatchOptions;
31
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAoB,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAExF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,gBAAqB,GAAG,iBAAiB,CAqC/E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,gBAAgB,GACxB,gBAAgB,CAElB"}