-
-
Notifications
You must be signed in to change notification settings - Fork 29
/
index.d.ts
144 lines (106 loc) · 3.19 KB
/
index.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
export interface Options {
/**
Treat uppercase and lowercase characters as being the same.
Ensure you use this correctly. For example, files and directories should be matched case-insensitively, while most often, object keys should be matched case-sensitively.
@default false
@example
```
import {isMatch} from 'matcher';
isMatch('UNICORN', 'UNI*', {caseSensitive: true});
//=> true
isMatch('UNICORN', 'unicorn', {caseSensitive: true});
//=> false
isMatch('unicorn', ['tri*', 'UNI*'], {caseSensitive: true});
//=> false
```
*/
readonly caseSensitive?: boolean;
/**
Require all negated patterns to not match and any normal patterns to match at least once. Otherwise, it will be a no-match condition.
@default false
@example
```
import {matcher} from 'matcher';
// Find text strings containing both "edge" and "tiger" in arbitrary order, but not "stunt".
const demo = (strings) => matcher(strings, ['*edge*', '*tiger*', '!*stunt*'], {allPatterns: true});
demo(['Hey, tiger!', 'tiger has edge over hyenas', 'pushing a tiger over the edge is a stunt']);
//=> ['tiger has edge over hyenas']
```
@example
```
import {matcher} from 'matcher';
matcher(['foo', 'for', 'bar'], ['f*', 'b*', '!x*'], {allPatterns: true});
//=> ['foo', 'for', 'bar']
matcher(['foo', 'for', 'bar'], ['f*'], {allPatterns: true});
//=> []
```
*/
readonly allPatterns?: boolean;
}
/**
Simple [wildcard](https://en.wikipedia.org/wiki/Wildcard_character) matching.
It matches even across newlines. For example, `foo*r` will match `foo\nbar`.
@param inputs - The string or array of strings to match.
@param patterns - The string or array of string patterns. Use `*` to match zero or more characters. A leading `!` negates the pattern.
@returns An array of `inputs` filtered based on the `patterns`.
@example
```
import {matcher} from 'matcher';
matcher(['foo', 'bar', 'moo'], ['*oo', '!foo']);
//=> ['moo']
matcher(['foo', 'bar', 'moo'], ['!*oo']);
//=> ['bar']
matcher('moo', ['']);
//=> []
matcher('moo', []);
//=> []
matcher([''], ['']);
//=> ['']
```
*/
export function matcher(
inputs: string | readonly string[],
patterns: string | readonly string[],
options?: Options,
): string[];
/**
It matches even across newlines. For example, `foo*r` will match `foo\nbar`.
@param inputs - The string or array of strings to match.
@param patterns - The string or array of string patterns. Use `*` to match zero or more characters. A leading `!` negates the pattern.
@returns A `boolean` of whether any of given `inputs` matches all the `patterns`.
@example
```
import {isMatch} from 'matcher';
isMatch('unicorn', 'uni*');
//=> true
isMatch('unicorn', '*corn');
//=> true
isMatch('unicorn', 'un*rn');
//=> true
isMatch('rainbow', '!unicorn');
//=> true
isMatch('foo bar baz', 'foo b* b*');
//=> true
isMatch('unicorn', 'uni\\*');
//=> false
isMatch(['foo', 'bar'], 'f*');
//=> true
isMatch(['foo', 'bar'], ['a*', 'b*']);
//=> true
isMatch('unicorn', ['']);
//=> false
isMatch('unicorn', []);
//=> false
isMatch([], 'bar');
//=> false
isMatch([], []);
//=> false
isMatch([''], ['']);
//=> true
```
*/
export function isMatch(
inputs: string | readonly string[],
patterns: string | readonly string[],
options?: Options,
): boolean;