| // Type definitions for minimatch 5.1 | 
| // Project: https://github.com/isaacs/minimatch | 
| // Definitions by: vvakame <https://github.com/vvakame> | 
| //                 Shant Marouti <https://github.com/shantmarouti> | 
| //                 BendingBender <https://github.com/BendingBender> | 
| // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped | 
|   | 
| /** | 
|  * Tests a path against the pattern using the options. | 
|  * | 
|  * @example | 
|  * import minimatch = require("minimatch"); | 
|  * | 
|  * const isJS = minimatch(file, "*.js", { matchBase: true }); | 
|  */ | 
| declare function minimatch(target: string, pattern: string, options?: minimatch.IOptions): boolean; | 
|   | 
| declare namespace minimatch { | 
|     /** | 
|      * Match against the list of files, in the style of fnmatch or glob. | 
|      * If nothing is matched, and options.nonull is set, | 
|      * then return a list containing the pattern itself. | 
|      * | 
|      * @example | 
|      * import minimatch = require("minimatch"); | 
|      * | 
|      * const javascripts = minimatch.match(fileList, "*.js", {matchBase: true}); | 
|      */ | 
|     function match(list: readonly string[], pattern: string, options?: IOptions): string[]; | 
|   | 
|     /** | 
|      * @return A function that tests its supplied argument, suitable for use with `Array.filter`. | 
|      * | 
|      * @example | 
|      * import minimatch = require("minimatch"); | 
|      * | 
|      * const javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true})); | 
|      */ | 
|     function filter( | 
|         pattern: string, | 
|         options?: IOptions, | 
|     ): (element: string, indexed: number, array: readonly string[]) => boolean; | 
|   | 
|     /** | 
|      * Make a regular expression object from the pattern. | 
|      */ | 
|     function makeRe(pattern: string, options?: IOptions): RegExp | false; | 
|   | 
|     function defaults(defaultOptions: IOptions): typeof minimatch; | 
|   | 
|     function braceExpand(pattern: string, options?: IOptions): string[]; | 
|   | 
|     const sep: string; | 
|     const GLOBSTAR: unique symbol; | 
|   | 
|     interface IOptions { | 
|         /** | 
|          * Dump a ton of stuff to stderr. | 
|          * | 
|          * @default false | 
|          */ | 
|         debug?: boolean | undefined; | 
|   | 
|         /** | 
|          * Do not expand `{a,b}` and `{1..3}` brace sets. | 
|          * | 
|          * @default false | 
|          */ | 
|         nobrace?: boolean | undefined; | 
|   | 
|         /** | 
|          * Disable `**` matching against multiple folder names. | 
|          * | 
|          * @default false | 
|          */ | 
|         noglobstar?: boolean | undefined; | 
|   | 
|         /** | 
|          * Allow patterns to match filenames starting with a period, | 
|          * even if the pattern does not explicitly have a period in that spot. | 
|          * | 
|          * Note that by default, `'a/**' + '/b'` will **not** match `a/.d/b`, unless `dot` is set. | 
|          * | 
|          * @default false | 
|          */ | 
|         dot?: boolean | undefined; | 
|   | 
|         /** | 
|          * Disable "extglob" style patterns like `+(a|b)`. | 
|          * | 
|          * @default false | 
|          */ | 
|         noext?: boolean | undefined; | 
|   | 
|         /** | 
|          * Perform a case-insensitive match. | 
|          * | 
|          * @default false | 
|          */ | 
|         nocase?: boolean | undefined; | 
|   | 
|         /** | 
|          * When a match is not found by `minimatch.match`, | 
|          * return a list containing the pattern itself if this option is set. | 
|          * Otherwise, an empty list is returned if there are no matches. | 
|          * | 
|          * @default false | 
|          */ | 
|         nonull?: boolean | undefined; | 
|   | 
|         /** | 
|          * If set, then patterns without slashes will be matched | 
|          * against the basename of the path if it contains slashes. For example, | 
|          * `a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`. | 
|          * | 
|          * @default false | 
|          */ | 
|         matchBase?: boolean | undefined; | 
|   | 
|         /** | 
|          * Suppress the behavior of treating `#` at the start of a pattern as a comment. | 
|          * | 
|          * @default false | 
|          */ | 
|         nocomment?: boolean | undefined; | 
|   | 
|         /** | 
|          * Suppress the behavior of treating a leading `!` character as negation. | 
|          * | 
|          * @default false | 
|          */ | 
|         nonegate?: boolean | undefined; | 
|   | 
|         /** | 
|          * Returns from negate expressions the same as if they were not negated. | 
|          * (Ie, true on a hit, false on a miss.) | 
|          * | 
|          * @default false | 
|          */ | 
|         flipNegate?: boolean | undefined; | 
|   | 
|         /** | 
|          * Compare a partial path to a pattern.  As long as the parts of the path that | 
|          * are present are not contradicted by the pattern, it will be treated as a | 
|          * match. This is useful in applications where you're walking through a | 
|          * folder structure, and don't yet have the full path, but want to ensure that | 
|          * you do not walk down paths that can never be a match. | 
|          * | 
|          * @default false | 
|          * | 
|          * @example | 
|          * import minimatch = require("minimatch"); | 
|          * | 
|          * minimatch('/a/b', '/a/*' + '/c/d', { partial: true })  // true, might be /a/b/c/d | 
|          * minimatch('/a/b', '/**' + '/d', { partial: true })     // true, might be /a/b/.../d | 
|          * minimatch('/x/y/z', '/a/**' + '/z', { partial: true }) // false, because x !== a | 
|          */ | 
|         partial?: boolean; | 
|   | 
|         /** | 
|          * Use `\\` as a path separator _only_, and _never_ as an escape | 
|          * character. If set, all `\\` characters are replaced with `/` in | 
|          * the pattern. Note that this makes it **impossible** to match | 
|          * against paths containing literal glob pattern characters, but | 
|          * allows matching with patterns constructed using `path.join()` and | 
|          * `path.resolve()` on Windows platforms, mimicking the (buggy!) | 
|          * behavior of earlier versions on Windows. Please use with | 
|          * caution, and be mindful of the caveat about Windows paths | 
|          * | 
|          * For legacy reasons, this is also set if | 
|          * `options.allowWindowsEscape` is set to the exact value `false`. | 
|          * | 
|          * @default false | 
|          */ | 
|         windowsPathsNoEscape?: boolean; | 
|     } | 
|   | 
|     /** | 
|      * @deprecated Keep legacy interface to prevent unnecessary breakage. | 
|      */ | 
|     type IMinimatchStatic = typeof Minimatch; | 
|     /** | 
|      * @deprecated Keep legacy interface to prevent unnecessary breakage. | 
|      */ | 
|     type IMinimatch = Minimatch; | 
|   | 
|     /** | 
|      * Create a minimatch object by instantiating the `minimatch.Minimatch` class. | 
|      * | 
|      * @example | 
|      * import { Minimatch } from "minimatch"; | 
|      * | 
|      * const mm = new Minimatch(pattern, options); | 
|      */ | 
|     class Minimatch { | 
|         constructor(pattern: string, options?: IOptions); | 
|   | 
|         static defaults(defaultOptions: IOptions): typeof Minimatch; | 
|   | 
|         /** | 
|          * The original pattern the minimatch object represents. | 
|          */ | 
|         pattern: string; | 
|   | 
|         /** | 
|          * The options supplied to the constructor. | 
|          */ | 
|         options: IOptions; | 
|   | 
|         /** | 
|          * A 2-dimensional array of regexp or string expressions. Each row in the array corresponds | 
|          * to a brace-expanded pattern. Each item in the row corresponds to a single path-part. For | 
|          * example, the pattern `{a,b/c}/d` would expand to a set of patterns like: | 
|          * | 
|          * ``` | 
|          *   [ [ a, d ] | 
|          *   , [ b, c, d ] ] | 
|          * ``` | 
|          * | 
|          * If a portion of the pattern doesn't have any "magic" in it (that is, it's something like `"foo"`` | 
|          * rather than `fo*o?`), then it will be left as a string rather than converted to a regular expression. | 
|          */ | 
|         set: Array<Array<RegExp | string>>; | 
|   | 
|         /** | 
|          * Created by the `makeRe` method. A single regular expression expressing the entire pattern. This is | 
|          * useful in cases where you wish to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled. | 
|          */ | 
|         regexp: RegExp | false | null; | 
|   | 
|         /** | 
|          * True if the pattern is negated. | 
|          */ | 
|         negate: boolean; | 
|   | 
|         /** | 
|          * True if the pattern is a comment. | 
|          */ | 
|         comment: boolean; | 
|   | 
|         /** | 
|          * True if the pattern is `""`. | 
|          */ | 
|         empty: boolean; | 
|   | 
|         /** | 
|          * True if windows path delimiters shouldn't be interpreted as escape characters. | 
|          */ | 
|         windowsPathsNoEscape: boolean; | 
|   | 
|         /** | 
|          * True if partial paths should be compared to a pattern. | 
|          */ | 
|         partial: boolean; | 
|   | 
|         /** | 
|          * Generate the `regexp` member if necessary, and return it. Will return `false` if the pattern is invalid. | 
|          */ | 
|         makeRe(): RegExp | false; | 
|   | 
|         /** | 
|          * @return `true` if the filename matches the pattern, or `false` otherwise. | 
|          */ | 
|         match(fname: string, partial?: boolean): boolean; | 
|   | 
|         /** | 
|          * Take a `/`-split filename, and match it against a single row in the `regExpSet`. | 
|          * This method is mainly for internal use, but is exposed so that it can be used | 
|          * by a glob-walker that needs to avoid excessive filesystem calls. | 
|          */ | 
|         matchOne(file: readonly string[], pattern: ReadonlyArray<string | RegExp>, partial: boolean): boolean; | 
|   | 
|         /** | 
|          * @deprecated. For internal use. | 
|          */ | 
|         debug(): void; | 
|   | 
|         /** | 
|          * @deprecated. For internal use. | 
|          */ | 
|         make(): void; | 
|   | 
|         /** | 
|          * @deprecated. For internal use. | 
|          */ | 
|         parseNegate(): void; | 
|   | 
|         /** | 
|          * @deprecated. For internal use. | 
|          */ | 
|         braceExpand(): string[]; | 
|   | 
|         /** | 
|          * @deprecated. For internal use. | 
|          */ | 
|         parse(pattern: string, isSub?: boolean): string | false | [string, boolean] | RegExp | typeof GLOBSTAR; | 
|     } | 
| } | 
|   | 
| export = minimatch; |