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