glob javascript
/* "Globs" are the patterns you type when you do stuff
like ls *.js on the command line,
or put build/* in a .gitignore file.
Before parsing the path part patterns, braced sections are expanded
into a set. Braced sections start with { and end with },
with any number of comma-delimited sections within.
Braced sections may contain slash characters, so a{/b/c,bcd}
would expand into a/b/c and abcd.
The following characters have special magic meaning when used in a path
portion:
* Matches 0 or more characters in a single path portion
? Matches 1 character
[...] Matches a range of characters, similar to a RegExp range.
If the first character of the range is ! or ^ then it matches
any character not in the range.
!(pattern|pattern|pattern)
Matches anything that does not match any of the patterns provided.
?(pattern|pattern|pattern)
Matches zero or one occurrence of the patterns provided.
+(pattern|pattern|pattern)
Matches one or more occurrences of the patterns provided.
*(a|b|c)
Matches zero or more occurrences of the patterns provided
@(pattern|pat*|pat?erN)
Matches exactly one of the patterns provided
*/