@plugjs/plug
Version:
PlugJS Build System ===================
217 lines (216 loc) • 6.03 kB
TypeScript
export interface MatchResult {
/** The glob that matched this `MatchResult` */
glob: string;
/** The regular expression that matched this `MatchResult` */
regex: RegExp;
/** The input string of this `MatchResult` */
input: string;
/** The input string of this `MatchResult` */
output: string;
/** The match result of this instance, if any */
match?: boolean | RegExpExecArray | null;
/** Whether the string matched or not */
isMatch: boolean;
}
export interface MatchOptions {
/**
* 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`.
*
* @defaultValue `false`
*/
basename?: boolean;
/**
* Follow bash matching rules more strictly - disallows backslashes as escape
* characters, and treats single stars as globstars (`**`).
*
* @defaultValue `false`
*/
bash?: boolean;
/**
* Return regex matches in `onIgnore(..)`, `onMatch(..)` and `onResult(..)`.
*
* @defaultValue `false`
*/
capture?: boolean;
/**
* Allows glob to match any part of the given string(s).
*
* @defaultValue `false`
*/
contains?: boolean;
/**
* Debug regular expressions when an error is thrown.
*
* @defaultValue `false`
*/
debug?: boolean;
/**
* Enable dotfile matching.
*
* By default, dotfiles are ignored unless a `.` is explicitly defined in
* the pattern, or this option is `true`.
*
* @defaultValue `false`
*/
dot?: boolean;
/**
* Custom function for expanding ranges in brace patterns, such as `{a..z}`.
*
* The function receives the range values as two arguments, and it must
* return a string to be used in the generated regex.
*
* It's recommended that returned strings be wrapped in parentheses.
*
* @defaultValue `undefined`
*/
expandRange?: (a: string, b: string) => string;
/**
* To speed up processing, full parsing is skipped for a handful common glob
* patterns.
*
* Disable this behavior by setting this option to `false`.
*
* @defaultValue `true`
*/
fastpaths?: boolean;
/**
* Regex flags to use in the generated regex.
*
* If defined, the nocase option will be overridden.
*
* @defaultValue `undefined`
*/
flags?: string;
/**
* One or more glob patterns for excluding strings that should not be matched
* from the result.
*
* @defaultValue `undefined`
*/
ignore?: string | string[];
/**
* Retain quotes in the generated regular expressions, since quotes may also
* be used as an alternative to backslashes.
*
* @defaultValue `false`
*/
keepQuotes?: boolean;
/**
* When `true`, brackets in the glob pattern will be escaped so that only
* literal brackets will be matched.
*
* @defaultValue `false`
*/
literalBrackets?: boolean;
/**
* Disable brace matching, so that `{a,b}` and `{1..3}` would be treated as
* literal characters.
*
* @defaultValue `false`
*/
nobrace?: boolean;
/**
* Disable matching with regex brackets.
*
* @defaultValue `false`
*/
nobracket?: boolean;
/**
* Make matching case-insensitive (equivalent to the regex `i` flag).
*
* Note that this option is overridden by the flags option.
*
* @defaultValue `false`
*/
nocase?: boolean;
/**
* Disable support for matching with extglobs (like `+(a|b)`).
*
* @defaultValue `false`
*/
noextglob?: boolean;
/**
* Disable support for matching nested directories with globstars (`**`).
*
* @defaultValue `false`
*/
noglobstar?: boolean;
/**
* Disable support for negating with leading `!`.
*
* @defaultValue `false`
*/
nonegate?: boolean;
/**
* Disable support for regex quantifiers (like `a{1,2}`) and treat them as
* brace patterns to be expanded.
*
* @defaultValue `false`
*/
noquantifiers?: boolean;
/**
* Function to be called on ignored items.
*
* @defaultValue `undefined`
*/
onIgnore?: (result: MatchResult) => void;
/**
* Function to be called on matched items.
*
* @defaultValue `undefined`
*/
onMatch?: (result: MatchResult) => void;
/**
* Function to be called on all items, regardless of whether or not they
* are matched or ignored.
*
* @defaultValue `undefined`
*/
onResult?: (result: MatchResult) => void;
/**
* Support POSIX character classes ("posix brackets").
*
* @defaultValue `false`
*/
posix?: boolean;
/**
* Use regular expression rules for `+` (instead of matching literal `+`),
* and for stars that follow closing parentheses or brackets (as in `)*`
* and `]*`).
*
* @defaultValue `false`
*/
regex?: boolean;
/**
* Throw an error if brackets, braces, or parens are imbalanced.
*
* @defaultValue `false`
*/
strictBrackets?: boolean;
/**
* When true, picomatch won't match trailing slashes with single stars.
*
* @defaultValue `false`
*/
strictSlashes?: boolean;
/**
* Remove backslashes preceding escaped characters in the glob pattern.
*
* By default, backslashes are retained.
*
* @defaultValue `false`
*/
unescape?: boolean;
}
/** A _function_ matching a string. */
export type Matcher = (string: string) => boolean;
/**
* Create a {@link Matcher} according to the globs and options specified.
*
* Remember that no globs here means an always-failing matcher.
*/
export declare function match(globs: readonly string[], options?: MatchOptions): Matcher;