update socials section
This commit is contained in:
		
							
								
								
									
										179
									
								
								node_modules/picomatch/lib/constants.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										179
									
								
								node_modules/picomatch/lib/constants.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,179 @@ | ||||
| 'use strict'; | ||||
|  | ||||
| const path = require('path'); | ||||
| const WIN_SLASH = '\\\\/'; | ||||
| const WIN_NO_SLASH = `[^${WIN_SLASH}]`; | ||||
|  | ||||
| /** | ||||
|  * Posix glob regex | ||||
|  */ | ||||
|  | ||||
| const DOT_LITERAL = '\\.'; | ||||
| const PLUS_LITERAL = '\\+'; | ||||
| const QMARK_LITERAL = '\\?'; | ||||
| const SLASH_LITERAL = '\\/'; | ||||
| const ONE_CHAR = '(?=.)'; | ||||
| const QMARK = '[^/]'; | ||||
| const END_ANCHOR = `(?:${SLASH_LITERAL}|$)`; | ||||
| const START_ANCHOR = `(?:^|${SLASH_LITERAL})`; | ||||
| const DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`; | ||||
| const NO_DOT = `(?!${DOT_LITERAL})`; | ||||
| const NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`; | ||||
| const NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`; | ||||
| const NO_DOTS_SLASH = `(?!${DOTS_SLASH})`; | ||||
| const QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`; | ||||
| const STAR = `${QMARK}*?`; | ||||
|  | ||||
| const POSIX_CHARS = { | ||||
|   DOT_LITERAL, | ||||
|   PLUS_LITERAL, | ||||
|   QMARK_LITERAL, | ||||
|   SLASH_LITERAL, | ||||
|   ONE_CHAR, | ||||
|   QMARK, | ||||
|   END_ANCHOR, | ||||
|   DOTS_SLASH, | ||||
|   NO_DOT, | ||||
|   NO_DOTS, | ||||
|   NO_DOT_SLASH, | ||||
|   NO_DOTS_SLASH, | ||||
|   QMARK_NO_DOT, | ||||
|   STAR, | ||||
|   START_ANCHOR | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Windows glob regex | ||||
|  */ | ||||
|  | ||||
| const WINDOWS_CHARS = { | ||||
|   ...POSIX_CHARS, | ||||
|  | ||||
|   SLASH_LITERAL: `[${WIN_SLASH}]`, | ||||
|   QMARK: WIN_NO_SLASH, | ||||
|   STAR: `${WIN_NO_SLASH}*?`, | ||||
|   DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`, | ||||
|   NO_DOT: `(?!${DOT_LITERAL})`, | ||||
|   NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, | ||||
|   NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`, | ||||
|   NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, | ||||
|   QMARK_NO_DOT: `[^.${WIN_SLASH}]`, | ||||
|   START_ANCHOR: `(?:^|[${WIN_SLASH}])`, | ||||
|   END_ANCHOR: `(?:[${WIN_SLASH}]|$)` | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * POSIX Bracket Regex | ||||
|  */ | ||||
|  | ||||
| const POSIX_REGEX_SOURCE = { | ||||
|   alnum: 'a-zA-Z0-9', | ||||
|   alpha: 'a-zA-Z', | ||||
|   ascii: '\\x00-\\x7F', | ||||
|   blank: ' \\t', | ||||
|   cntrl: '\\x00-\\x1F\\x7F', | ||||
|   digit: '0-9', | ||||
|   graph: '\\x21-\\x7E', | ||||
|   lower: 'a-z', | ||||
|   print: '\\x20-\\x7E ', | ||||
|   punct: '\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~', | ||||
|   space: ' \\t\\r\\n\\v\\f', | ||||
|   upper: 'A-Z', | ||||
|   word: 'A-Za-z0-9_', | ||||
|   xdigit: 'A-Fa-f0-9' | ||||
| }; | ||||
|  | ||||
| module.exports = { | ||||
|   MAX_LENGTH: 1024 * 64, | ||||
|   POSIX_REGEX_SOURCE, | ||||
|  | ||||
|   // regular expressions | ||||
|   REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g, | ||||
|   REGEX_NON_SPECIAL_CHARS: /^[^@![\].,$*+?^{}()|\\/]+/, | ||||
|   REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\]]/, | ||||
|   REGEX_SPECIAL_CHARS_BACKREF: /(\\?)((\W)(\3*))/g, | ||||
|   REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g, | ||||
|   REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g, | ||||
|  | ||||
|   // Replace globs with equivalent patterns to reduce parsing time. | ||||
|   REPLACEMENTS: { | ||||
|     '***': '*', | ||||
|     '**/**': '**', | ||||
|     '**/**/**': '**' | ||||
|   }, | ||||
|  | ||||
|   // Digits | ||||
|   CHAR_0: 48, /* 0 */ | ||||
|   CHAR_9: 57, /* 9 */ | ||||
|  | ||||
|   // Alphabet chars. | ||||
|   CHAR_UPPERCASE_A: 65, /* A */ | ||||
|   CHAR_LOWERCASE_A: 97, /* a */ | ||||
|   CHAR_UPPERCASE_Z: 90, /* Z */ | ||||
|   CHAR_LOWERCASE_Z: 122, /* z */ | ||||
|  | ||||
|   CHAR_LEFT_PARENTHESES: 40, /* ( */ | ||||
|   CHAR_RIGHT_PARENTHESES: 41, /* ) */ | ||||
|  | ||||
|   CHAR_ASTERISK: 42, /* * */ | ||||
|  | ||||
|   // Non-alphabetic chars. | ||||
|   CHAR_AMPERSAND: 38, /* & */ | ||||
|   CHAR_AT: 64, /* @ */ | ||||
|   CHAR_BACKWARD_SLASH: 92, /* \ */ | ||||
|   CHAR_CARRIAGE_RETURN: 13, /* \r */ | ||||
|   CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */ | ||||
|   CHAR_COLON: 58, /* : */ | ||||
|   CHAR_COMMA: 44, /* , */ | ||||
|   CHAR_DOT: 46, /* . */ | ||||
|   CHAR_DOUBLE_QUOTE: 34, /* " */ | ||||
|   CHAR_EQUAL: 61, /* = */ | ||||
|   CHAR_EXCLAMATION_MARK: 33, /* ! */ | ||||
|   CHAR_FORM_FEED: 12, /* \f */ | ||||
|   CHAR_FORWARD_SLASH: 47, /* / */ | ||||
|   CHAR_GRAVE_ACCENT: 96, /* ` */ | ||||
|   CHAR_HASH: 35, /* # */ | ||||
|   CHAR_HYPHEN_MINUS: 45, /* - */ | ||||
|   CHAR_LEFT_ANGLE_BRACKET: 60, /* < */ | ||||
|   CHAR_LEFT_CURLY_BRACE: 123, /* { */ | ||||
|   CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */ | ||||
|   CHAR_LINE_FEED: 10, /* \n */ | ||||
|   CHAR_NO_BREAK_SPACE: 160, /* \u00A0 */ | ||||
|   CHAR_PERCENT: 37, /* % */ | ||||
|   CHAR_PLUS: 43, /* + */ | ||||
|   CHAR_QUESTION_MARK: 63, /* ? */ | ||||
|   CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */ | ||||
|   CHAR_RIGHT_CURLY_BRACE: 125, /* } */ | ||||
|   CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */ | ||||
|   CHAR_SEMICOLON: 59, /* ; */ | ||||
|   CHAR_SINGLE_QUOTE: 39, /* ' */ | ||||
|   CHAR_SPACE: 32, /*   */ | ||||
|   CHAR_TAB: 9, /* \t */ | ||||
|   CHAR_UNDERSCORE: 95, /* _ */ | ||||
|   CHAR_VERTICAL_LINE: 124, /* | */ | ||||
|   CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \uFEFF */ | ||||
|  | ||||
|   SEP: path.sep, | ||||
|  | ||||
|   /** | ||||
|    * Create EXTGLOB_CHARS | ||||
|    */ | ||||
|  | ||||
|   extglobChars(chars) { | ||||
|     return { | ||||
|       '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` }, | ||||
|       '?': { type: 'qmark', open: '(?:', close: ')?' }, | ||||
|       '+': { type: 'plus', open: '(?:', close: ')+' }, | ||||
|       '*': { type: 'star', open: '(?:', close: ')*' }, | ||||
|       '@': { type: 'at', open: '(?:', close: ')' } | ||||
|     }; | ||||
|   }, | ||||
|  | ||||
|   /** | ||||
|    * Create GLOB_CHARS | ||||
|    */ | ||||
|  | ||||
|   globChars(win32) { | ||||
|     return win32 === true ? WINDOWS_CHARS : POSIX_CHARS; | ||||
|   } | ||||
| }; | ||||
							
								
								
									
										1091
									
								
								node_modules/picomatch/lib/parse.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1091
									
								
								node_modules/picomatch/lib/parse.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										342
									
								
								node_modules/picomatch/lib/picomatch.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										342
									
								
								node_modules/picomatch/lib/picomatch.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,342 @@ | ||||
| 'use strict'; | ||||
|  | ||||
| const path = require('path'); | ||||
| const scan = require('./scan'); | ||||
| const parse = require('./parse'); | ||||
| const utils = require('./utils'); | ||||
| const constants = require('./constants'); | ||||
| const isObject = val => val && typeof val === 'object' && !Array.isArray(val); | ||||
|  | ||||
| /** | ||||
|  * Creates a matcher function from one or more glob patterns. The | ||||
|  * returned function takes a string to match as its first argument, | ||||
|  * and returns true if the string is a match. The returned matcher | ||||
|  * function also takes a boolean as the second argument that, when true, | ||||
|  * returns an object with additional information. | ||||
|  * | ||||
|  * ```js | ||||
|  * const picomatch = require('picomatch'); | ||||
|  * // picomatch(glob[, options]); | ||||
|  * | ||||
|  * const isMatch = picomatch('*.!(*a)'); | ||||
|  * console.log(isMatch('a.a')); //=> false | ||||
|  * console.log(isMatch('a.b')); //=> true | ||||
|  * ``` | ||||
|  * @name picomatch | ||||
|  * @param {String|Array} `globs` One or more glob patterns. | ||||
|  * @param {Object=} `options` | ||||
|  * @return {Function=} Returns a matcher function. | ||||
|  * @api public | ||||
|  */ | ||||
|  | ||||
| const picomatch = (glob, options, returnState = false) => { | ||||
|   if (Array.isArray(glob)) { | ||||
|     const fns = glob.map(input => picomatch(input, options, returnState)); | ||||
|     const arrayMatcher = str => { | ||||
|       for (const isMatch of fns) { | ||||
|         const state = isMatch(str); | ||||
|         if (state) return state; | ||||
|       } | ||||
|       return false; | ||||
|     }; | ||||
|     return arrayMatcher; | ||||
|   } | ||||
|  | ||||
|   const isState = isObject(glob) && glob.tokens && glob.input; | ||||
|  | ||||
|   if (glob === '' || (typeof glob !== 'string' && !isState)) { | ||||
|     throw new TypeError('Expected pattern to be a non-empty string'); | ||||
|   } | ||||
|  | ||||
|   const opts = options || {}; | ||||
|   const posix = utils.isWindows(options); | ||||
|   const regex = isState | ||||
|     ? picomatch.compileRe(glob, options) | ||||
|     : picomatch.makeRe(glob, options, false, true); | ||||
|  | ||||
|   const state = regex.state; | ||||
|   delete regex.state; | ||||
|  | ||||
|   let isIgnored = () => false; | ||||
|   if (opts.ignore) { | ||||
|     const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null }; | ||||
|     isIgnored = picomatch(opts.ignore, ignoreOpts, returnState); | ||||
|   } | ||||
|  | ||||
|   const matcher = (input, returnObject = false) => { | ||||
|     const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix }); | ||||
|     const result = { glob, state, regex, posix, input, output, match, isMatch }; | ||||
|  | ||||
|     if (typeof opts.onResult === 'function') { | ||||
|       opts.onResult(result); | ||||
|     } | ||||
|  | ||||
|     if (isMatch === false) { | ||||
|       result.isMatch = false; | ||||
|       return returnObject ? result : false; | ||||
|     } | ||||
|  | ||||
|     if (isIgnored(input)) { | ||||
|       if (typeof opts.onIgnore === 'function') { | ||||
|         opts.onIgnore(result); | ||||
|       } | ||||
|       result.isMatch = false; | ||||
|       return returnObject ? result : false; | ||||
|     } | ||||
|  | ||||
|     if (typeof opts.onMatch === 'function') { | ||||
|       opts.onMatch(result); | ||||
|     } | ||||
|     return returnObject ? result : true; | ||||
|   }; | ||||
|  | ||||
|   if (returnState) { | ||||
|     matcher.state = state; | ||||
|   } | ||||
|  | ||||
|   return matcher; | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Test `input` with the given `regex`. This is used by the main | ||||
|  * `picomatch()` function to test the input string. | ||||
|  * | ||||
|  * ```js | ||||
|  * const picomatch = require('picomatch'); | ||||
|  * // picomatch.test(input, regex[, options]); | ||||
|  * | ||||
|  * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\/([^/]*?))$/)); | ||||
|  * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' } | ||||
|  * ``` | ||||
|  * @param {String} `input` String to test. | ||||
|  * @param {RegExp} `regex` | ||||
|  * @return {Object} Returns an object with matching info. | ||||
|  * @api public | ||||
|  */ | ||||
|  | ||||
| picomatch.test = (input, regex, options, { glob, posix } = {}) => { | ||||
|   if (typeof input !== 'string') { | ||||
|     throw new TypeError('Expected input to be a string'); | ||||
|   } | ||||
|  | ||||
|   if (input === '') { | ||||
|     return { isMatch: false, output: '' }; | ||||
|   } | ||||
|  | ||||
|   const opts = options || {}; | ||||
|   const format = opts.format || (posix ? utils.toPosixSlashes : null); | ||||
|   let match = input === glob; | ||||
|   let output = (match && format) ? format(input) : input; | ||||
|  | ||||
|   if (match === false) { | ||||
|     output = format ? format(input) : input; | ||||
|     match = output === glob; | ||||
|   } | ||||
|  | ||||
|   if (match === false || opts.capture === true) { | ||||
|     if (opts.matchBase === true || opts.basename === true) { | ||||
|       match = picomatch.matchBase(input, regex, options, posix); | ||||
|     } else { | ||||
|       match = regex.exec(output); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   return { isMatch: Boolean(match), match, output }; | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Match the basename of a filepath. | ||||
|  * | ||||
|  * ```js | ||||
|  * const picomatch = require('picomatch'); | ||||
|  * // picomatch.matchBase(input, glob[, options]); | ||||
|  * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true | ||||
|  * ``` | ||||
|  * @param {String} `input` String to test. | ||||
|  * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe). | ||||
|  * @return {Boolean} | ||||
|  * @api public | ||||
|  */ | ||||
|  | ||||
| picomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => { | ||||
|   const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options); | ||||
|   return regex.test(path.basename(input)); | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Returns true if **any** of the given glob `patterns` match the specified `string`. | ||||
|  * | ||||
|  * ```js | ||||
|  * const picomatch = require('picomatch'); | ||||
|  * // picomatch.isMatch(string, patterns[, options]); | ||||
|  * | ||||
|  * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true | ||||
|  * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false | ||||
|  * ``` | ||||
|  * @param {String|Array} str The string to test. | ||||
|  * @param {String|Array} patterns One or more glob patterns to use for matching. | ||||
|  * @param {Object} [options] See available [options](#options). | ||||
|  * @return {Boolean} Returns true if any patterns match `str` | ||||
|  * @api public | ||||
|  */ | ||||
|  | ||||
| picomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); | ||||
|  | ||||
| /** | ||||
|  * Parse a glob pattern to create the source string for a regular | ||||
|  * expression. | ||||
|  * | ||||
|  * ```js | ||||
|  * const picomatch = require('picomatch'); | ||||
|  * const result = picomatch.parse(pattern[, options]); | ||||
|  * ``` | ||||
|  * @param {String} `pattern` | ||||
|  * @param {Object} `options` | ||||
|  * @return {Object} Returns an object with useful properties and output to be used as a regex source string. | ||||
|  * @api public | ||||
|  */ | ||||
|  | ||||
| picomatch.parse = (pattern, options) => { | ||||
|   if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options)); | ||||
|   return parse(pattern, { ...options, fastpaths: false }); | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Scan a glob pattern to separate the pattern into segments. | ||||
|  * | ||||
|  * ```js | ||||
|  * const picomatch = require('picomatch'); | ||||
|  * // picomatch.scan(input[, options]); | ||||
|  * | ||||
|  * const result = picomatch.scan('!./foo/*.js'); | ||||
|  * console.log(result); | ||||
|  * { prefix: '!./', | ||||
|  *   input: '!./foo/*.js', | ||||
|  *   start: 3, | ||||
|  *   base: 'foo', | ||||
|  *   glob: '*.js', | ||||
|  *   isBrace: false, | ||||
|  *   isBracket: false, | ||||
|  *   isGlob: true, | ||||
|  *   isExtglob: false, | ||||
|  *   isGlobstar: false, | ||||
|  *   negated: true } | ||||
|  * ``` | ||||
|  * @param {String} `input` Glob pattern to scan. | ||||
|  * @param {Object} `options` | ||||
|  * @return {Object} Returns an object with | ||||
|  * @api public | ||||
|  */ | ||||
|  | ||||
| picomatch.scan = (input, options) => scan(input, options); | ||||
|  | ||||
| /** | ||||
|  * Compile a regular expression from the `state` object returned by the | ||||
|  * [parse()](#parse) method. | ||||
|  * | ||||
|  * @param {Object} `state` | ||||
|  * @param {Object} `options` | ||||
|  * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser. | ||||
|  * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging. | ||||
|  * @return {RegExp} | ||||
|  * @api public | ||||
|  */ | ||||
|  | ||||
| picomatch.compileRe = (state, options, returnOutput = false, returnState = false) => { | ||||
|   if (returnOutput === true) { | ||||
|     return state.output; | ||||
|   } | ||||
|  | ||||
|   const opts = options || {}; | ||||
|   const prepend = opts.contains ? '' : '^'; | ||||
|   const append = opts.contains ? '' : '$'; | ||||
|  | ||||
|   let source = `${prepend}(?:${state.output})${append}`; | ||||
|   if (state && state.negated === true) { | ||||
|     source = `^(?!${source}).*$`; | ||||
|   } | ||||
|  | ||||
|   const regex = picomatch.toRegex(source, options); | ||||
|   if (returnState === true) { | ||||
|     regex.state = state; | ||||
|   } | ||||
|  | ||||
|   return regex; | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Create a regular expression from a parsed glob pattern. | ||||
|  * | ||||
|  * ```js | ||||
|  * const picomatch = require('picomatch'); | ||||
|  * const state = picomatch.parse('*.js'); | ||||
|  * // picomatch.compileRe(state[, options]); | ||||
|  * | ||||
|  * console.log(picomatch.compileRe(state)); | ||||
|  * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ | ||||
|  * ``` | ||||
|  * @param {String} `state` The object returned from the `.parse` method. | ||||
|  * @param {Object} `options` | ||||
|  * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result. | ||||
|  * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression. | ||||
|  * @return {RegExp} Returns a regex created from the given pattern. | ||||
|  * @api public | ||||
|  */ | ||||
|  | ||||
| picomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => { | ||||
|   if (!input || typeof input !== 'string') { | ||||
|     throw new TypeError('Expected a non-empty string'); | ||||
|   } | ||||
|  | ||||
|   let parsed = { negated: false, fastpaths: true }; | ||||
|  | ||||
|   if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) { | ||||
|     parsed.output = parse.fastpaths(input, options); | ||||
|   } | ||||
|  | ||||
|   if (!parsed.output) { | ||||
|     parsed = parse(input, options); | ||||
|   } | ||||
|  | ||||
|   return picomatch.compileRe(parsed, options, returnOutput, returnState); | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Create a regular expression from the given regex source string. | ||||
|  * | ||||
|  * ```js | ||||
|  * const picomatch = require('picomatch'); | ||||
|  * // picomatch.toRegex(source[, options]); | ||||
|  * | ||||
|  * const { output } = picomatch.parse('*.js'); | ||||
|  * console.log(picomatch.toRegex(output)); | ||||
|  * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ | ||||
|  * ``` | ||||
|  * @param {String} `source` Regular expression source string. | ||||
|  * @param {Object} `options` | ||||
|  * @return {RegExp} | ||||
|  * @api public | ||||
|  */ | ||||
|  | ||||
| picomatch.toRegex = (source, options) => { | ||||
|   try { | ||||
|     const opts = options || {}; | ||||
|     return new RegExp(source, opts.flags || (opts.nocase ? 'i' : '')); | ||||
|   } catch (err) { | ||||
|     if (options && options.debug === true) throw err; | ||||
|     return /$^/; | ||||
|   } | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Picomatch constants. | ||||
|  * @return {Object} | ||||
|  */ | ||||
|  | ||||
| picomatch.constants = constants; | ||||
|  | ||||
| /** | ||||
|  * Expose "picomatch" | ||||
|  */ | ||||
|  | ||||
| module.exports = picomatch; | ||||
							
								
								
									
										391
									
								
								node_modules/picomatch/lib/scan.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										391
									
								
								node_modules/picomatch/lib/scan.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,391 @@ | ||||
| 'use strict'; | ||||
|  | ||||
| const utils = require('./utils'); | ||||
| const { | ||||
|   CHAR_ASTERISK,             /* * */ | ||||
|   CHAR_AT,                   /* @ */ | ||||
|   CHAR_BACKWARD_SLASH,       /* \ */ | ||||
|   CHAR_COMMA,                /* , */ | ||||
|   CHAR_DOT,                  /* . */ | ||||
|   CHAR_EXCLAMATION_MARK,     /* ! */ | ||||
|   CHAR_FORWARD_SLASH,        /* / */ | ||||
|   CHAR_LEFT_CURLY_BRACE,     /* { */ | ||||
|   CHAR_LEFT_PARENTHESES,     /* ( */ | ||||
|   CHAR_LEFT_SQUARE_BRACKET,  /* [ */ | ||||
|   CHAR_PLUS,                 /* + */ | ||||
|   CHAR_QUESTION_MARK,        /* ? */ | ||||
|   CHAR_RIGHT_CURLY_BRACE,    /* } */ | ||||
|   CHAR_RIGHT_PARENTHESES,    /* ) */ | ||||
|   CHAR_RIGHT_SQUARE_BRACKET  /* ] */ | ||||
| } = require('./constants'); | ||||
|  | ||||
| const isPathSeparator = code => { | ||||
|   return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; | ||||
| }; | ||||
|  | ||||
| const depth = token => { | ||||
|   if (token.isPrefix !== true) { | ||||
|     token.depth = token.isGlobstar ? Infinity : 1; | ||||
|   } | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Quickly scans a glob pattern and returns an object with a handful of | ||||
|  * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists), | ||||
|  * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not | ||||
|  * with `!(`) and `negatedExtglob` (true if the path starts with `!(`). | ||||
|  * | ||||
|  * ```js | ||||
|  * const pm = require('picomatch'); | ||||
|  * console.log(pm.scan('foo/bar/*.js')); | ||||
|  * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' } | ||||
|  * ``` | ||||
|  * @param {String} `str` | ||||
|  * @param {Object} `options` | ||||
|  * @return {Object} Returns an object with tokens and regex source string. | ||||
|  * @api public | ||||
|  */ | ||||
|  | ||||
| const scan = (input, options) => { | ||||
|   const opts = options || {}; | ||||
|  | ||||
|   const length = input.length - 1; | ||||
|   const scanToEnd = opts.parts === true || opts.scanToEnd === true; | ||||
|   const slashes = []; | ||||
|   const tokens = []; | ||||
|   const parts = []; | ||||
|  | ||||
|   let str = input; | ||||
|   let index = -1; | ||||
|   let start = 0; | ||||
|   let lastIndex = 0; | ||||
|   let isBrace = false; | ||||
|   let isBracket = false; | ||||
|   let isGlob = false; | ||||
|   let isExtglob = false; | ||||
|   let isGlobstar = false; | ||||
|   let braceEscaped = false; | ||||
|   let backslashes = false; | ||||
|   let negated = false; | ||||
|   let negatedExtglob = false; | ||||
|   let finished = false; | ||||
|   let braces = 0; | ||||
|   let prev; | ||||
|   let code; | ||||
|   let token = { value: '', depth: 0, isGlob: false }; | ||||
|  | ||||
|   const eos = () => index >= length; | ||||
|   const peek = () => str.charCodeAt(index + 1); | ||||
|   const advance = () => { | ||||
|     prev = code; | ||||
|     return str.charCodeAt(++index); | ||||
|   }; | ||||
|  | ||||
|   while (index < length) { | ||||
|     code = advance(); | ||||
|     let next; | ||||
|  | ||||
|     if (code === CHAR_BACKWARD_SLASH) { | ||||
|       backslashes = token.backslashes = true; | ||||
|       code = advance(); | ||||
|  | ||||
|       if (code === CHAR_LEFT_CURLY_BRACE) { | ||||
|         braceEscaped = true; | ||||
|       } | ||||
|       continue; | ||||
|     } | ||||
|  | ||||
|     if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) { | ||||
|       braces++; | ||||
|  | ||||
|       while (eos() !== true && (code = advance())) { | ||||
|         if (code === CHAR_BACKWARD_SLASH) { | ||||
|           backslashes = token.backslashes = true; | ||||
|           advance(); | ||||
|           continue; | ||||
|         } | ||||
|  | ||||
|         if (code === CHAR_LEFT_CURLY_BRACE) { | ||||
|           braces++; | ||||
|           continue; | ||||
|         } | ||||
|  | ||||
|         if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) { | ||||
|           isBrace = token.isBrace = true; | ||||
|           isGlob = token.isGlob = true; | ||||
|           finished = true; | ||||
|  | ||||
|           if (scanToEnd === true) { | ||||
|             continue; | ||||
|           } | ||||
|  | ||||
|           break; | ||||
|         } | ||||
|  | ||||
|         if (braceEscaped !== true && code === CHAR_COMMA) { | ||||
|           isBrace = token.isBrace = true; | ||||
|           isGlob = token.isGlob = true; | ||||
|           finished = true; | ||||
|  | ||||
|           if (scanToEnd === true) { | ||||
|             continue; | ||||
|           } | ||||
|  | ||||
|           break; | ||||
|         } | ||||
|  | ||||
|         if (code === CHAR_RIGHT_CURLY_BRACE) { | ||||
|           braces--; | ||||
|  | ||||
|           if (braces === 0) { | ||||
|             braceEscaped = false; | ||||
|             isBrace = token.isBrace = true; | ||||
|             finished = true; | ||||
|             break; | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|  | ||||
|       if (scanToEnd === true) { | ||||
|         continue; | ||||
|       } | ||||
|  | ||||
|       break; | ||||
|     } | ||||
|  | ||||
|     if (code === CHAR_FORWARD_SLASH) { | ||||
|       slashes.push(index); | ||||
|       tokens.push(token); | ||||
|       token = { value: '', depth: 0, isGlob: false }; | ||||
|  | ||||
|       if (finished === true) continue; | ||||
|       if (prev === CHAR_DOT && index === (start + 1)) { | ||||
|         start += 2; | ||||
|         continue; | ||||
|       } | ||||
|  | ||||
|       lastIndex = index + 1; | ||||
|       continue; | ||||
|     } | ||||
|  | ||||
|     if (opts.noext !== true) { | ||||
|       const isExtglobChar = code === CHAR_PLUS | ||||
|         || code === CHAR_AT | ||||
|         || code === CHAR_ASTERISK | ||||
|         || code === CHAR_QUESTION_MARK | ||||
|         || code === CHAR_EXCLAMATION_MARK; | ||||
|  | ||||
|       if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) { | ||||
|         isGlob = token.isGlob = true; | ||||
|         isExtglob = token.isExtglob = true; | ||||
|         finished = true; | ||||
|         if (code === CHAR_EXCLAMATION_MARK && index === start) { | ||||
|           negatedExtglob = true; | ||||
|         } | ||||
|  | ||||
|         if (scanToEnd === true) { | ||||
|           while (eos() !== true && (code = advance())) { | ||||
|             if (code === CHAR_BACKWARD_SLASH) { | ||||
|               backslashes = token.backslashes = true; | ||||
|               code = advance(); | ||||
|               continue; | ||||
|             } | ||||
|  | ||||
|             if (code === CHAR_RIGHT_PARENTHESES) { | ||||
|               isGlob = token.isGlob = true; | ||||
|               finished = true; | ||||
|               break; | ||||
|             } | ||||
|           } | ||||
|           continue; | ||||
|         } | ||||
|         break; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     if (code === CHAR_ASTERISK) { | ||||
|       if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true; | ||||
|       isGlob = token.isGlob = true; | ||||
|       finished = true; | ||||
|  | ||||
|       if (scanToEnd === true) { | ||||
|         continue; | ||||
|       } | ||||
|       break; | ||||
|     } | ||||
|  | ||||
|     if (code === CHAR_QUESTION_MARK) { | ||||
|       isGlob = token.isGlob = true; | ||||
|       finished = true; | ||||
|  | ||||
|       if (scanToEnd === true) { | ||||
|         continue; | ||||
|       } | ||||
|       break; | ||||
|     } | ||||
|  | ||||
|     if (code === CHAR_LEFT_SQUARE_BRACKET) { | ||||
|       while (eos() !== true && (next = advance())) { | ||||
|         if (next === CHAR_BACKWARD_SLASH) { | ||||
|           backslashes = token.backslashes = true; | ||||
|           advance(); | ||||
|           continue; | ||||
|         } | ||||
|  | ||||
|         if (next === CHAR_RIGHT_SQUARE_BRACKET) { | ||||
|           isBracket = token.isBracket = true; | ||||
|           isGlob = token.isGlob = true; | ||||
|           finished = true; | ||||
|           break; | ||||
|         } | ||||
|       } | ||||
|  | ||||
|       if (scanToEnd === true) { | ||||
|         continue; | ||||
|       } | ||||
|  | ||||
|       break; | ||||
|     } | ||||
|  | ||||
|     if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) { | ||||
|       negated = token.negated = true; | ||||
|       start++; | ||||
|       continue; | ||||
|     } | ||||
|  | ||||
|     if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) { | ||||
|       isGlob = token.isGlob = true; | ||||
|  | ||||
|       if (scanToEnd === true) { | ||||
|         while (eos() !== true && (code = advance())) { | ||||
|           if (code === CHAR_LEFT_PARENTHESES) { | ||||
|             backslashes = token.backslashes = true; | ||||
|             code = advance(); | ||||
|             continue; | ||||
|           } | ||||
|  | ||||
|           if (code === CHAR_RIGHT_PARENTHESES) { | ||||
|             finished = true; | ||||
|             break; | ||||
|           } | ||||
|         } | ||||
|         continue; | ||||
|       } | ||||
|       break; | ||||
|     } | ||||
|  | ||||
|     if (isGlob === true) { | ||||
|       finished = true; | ||||
|  | ||||
|       if (scanToEnd === true) { | ||||
|         continue; | ||||
|       } | ||||
|  | ||||
|       break; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   if (opts.noext === true) { | ||||
|     isExtglob = false; | ||||
|     isGlob = false; | ||||
|   } | ||||
|  | ||||
|   let base = str; | ||||
|   let prefix = ''; | ||||
|   let glob = ''; | ||||
|  | ||||
|   if (start > 0) { | ||||
|     prefix = str.slice(0, start); | ||||
|     str = str.slice(start); | ||||
|     lastIndex -= start; | ||||
|   } | ||||
|  | ||||
|   if (base && isGlob === true && lastIndex > 0) { | ||||
|     base = str.slice(0, lastIndex); | ||||
|     glob = str.slice(lastIndex); | ||||
|   } else if (isGlob === true) { | ||||
|     base = ''; | ||||
|     glob = str; | ||||
|   } else { | ||||
|     base = str; | ||||
|   } | ||||
|  | ||||
|   if (base && base !== '' && base !== '/' && base !== str) { | ||||
|     if (isPathSeparator(base.charCodeAt(base.length - 1))) { | ||||
|       base = base.slice(0, -1); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   if (opts.unescape === true) { | ||||
|     if (glob) glob = utils.removeBackslashes(glob); | ||||
|  | ||||
|     if (base && backslashes === true) { | ||||
|       base = utils.removeBackslashes(base); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   const state = { | ||||
|     prefix, | ||||
|     input, | ||||
|     start, | ||||
|     base, | ||||
|     glob, | ||||
|     isBrace, | ||||
|     isBracket, | ||||
|     isGlob, | ||||
|     isExtglob, | ||||
|     isGlobstar, | ||||
|     negated, | ||||
|     negatedExtglob | ||||
|   }; | ||||
|  | ||||
|   if (opts.tokens === true) { | ||||
|     state.maxDepth = 0; | ||||
|     if (!isPathSeparator(code)) { | ||||
|       tokens.push(token); | ||||
|     } | ||||
|     state.tokens = tokens; | ||||
|   } | ||||
|  | ||||
|   if (opts.parts === true || opts.tokens === true) { | ||||
|     let prevIndex; | ||||
|  | ||||
|     for (let idx = 0; idx < slashes.length; idx++) { | ||||
|       const n = prevIndex ? prevIndex + 1 : start; | ||||
|       const i = slashes[idx]; | ||||
|       const value = input.slice(n, i); | ||||
|       if (opts.tokens) { | ||||
|         if (idx === 0 && start !== 0) { | ||||
|           tokens[idx].isPrefix = true; | ||||
|           tokens[idx].value = prefix; | ||||
|         } else { | ||||
|           tokens[idx].value = value; | ||||
|         } | ||||
|         depth(tokens[idx]); | ||||
|         state.maxDepth += tokens[idx].depth; | ||||
|       } | ||||
|       if (idx !== 0 || value !== '') { | ||||
|         parts.push(value); | ||||
|       } | ||||
|       prevIndex = i; | ||||
|     } | ||||
|  | ||||
|     if (prevIndex && prevIndex + 1 < input.length) { | ||||
|       const value = input.slice(prevIndex + 1); | ||||
|       parts.push(value); | ||||
|  | ||||
|       if (opts.tokens) { | ||||
|         tokens[tokens.length - 1].value = value; | ||||
|         depth(tokens[tokens.length - 1]); | ||||
|         state.maxDepth += tokens[tokens.length - 1].depth; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     state.slashes = slashes; | ||||
|     state.parts = parts; | ||||
|   } | ||||
|  | ||||
|   return state; | ||||
| }; | ||||
|  | ||||
| module.exports = scan; | ||||
							
								
								
									
										64
									
								
								node_modules/picomatch/lib/utils.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								node_modules/picomatch/lib/utils.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,64 @@ | ||||
| 'use strict'; | ||||
|  | ||||
| const path = require('path'); | ||||
| const win32 = process.platform === 'win32'; | ||||
| const { | ||||
|   REGEX_BACKSLASH, | ||||
|   REGEX_REMOVE_BACKSLASH, | ||||
|   REGEX_SPECIAL_CHARS, | ||||
|   REGEX_SPECIAL_CHARS_GLOBAL | ||||
| } = require('./constants'); | ||||
|  | ||||
| exports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); | ||||
| exports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str); | ||||
| exports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str); | ||||
| exports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\$1'); | ||||
| exports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/'); | ||||
|  | ||||
| exports.removeBackslashes = str => { | ||||
|   return str.replace(REGEX_REMOVE_BACKSLASH, match => { | ||||
|     return match === '\\' ? '' : match; | ||||
|   }); | ||||
| }; | ||||
|  | ||||
| exports.supportsLookbehinds = () => { | ||||
|   const segs = process.version.slice(1).split('.').map(Number); | ||||
|   if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) { | ||||
|     return true; | ||||
|   } | ||||
|   return false; | ||||
| }; | ||||
|  | ||||
| exports.isWindows = options => { | ||||
|   if (options && typeof options.windows === 'boolean') { | ||||
|     return options.windows; | ||||
|   } | ||||
|   return win32 === true || path.sep === '\\'; | ||||
| }; | ||||
|  | ||||
| exports.escapeLast = (input, char, lastIdx) => { | ||||
|   const idx = input.lastIndexOf(char, lastIdx); | ||||
|   if (idx === -1) return input; | ||||
|   if (input[idx - 1] === '\\') return exports.escapeLast(input, char, idx - 1); | ||||
|   return `${input.slice(0, idx)}\\${input.slice(idx)}`; | ||||
| }; | ||||
|  | ||||
| exports.removePrefix = (input, state = {}) => { | ||||
|   let output = input; | ||||
|   if (output.startsWith('./')) { | ||||
|     output = output.slice(2); | ||||
|     state.prefix = './'; | ||||
|   } | ||||
|   return output; | ||||
| }; | ||||
|  | ||||
| exports.wrapOutput = (input, state = {}, options = {}) => { | ||||
|   const prepend = options.contains ? '' : '^'; | ||||
|   const append = options.contains ? '' : '$'; | ||||
|  | ||||
|   let output = `${prepend}(?:${input})${append}`; | ||||
|   if (state.negated === true) { | ||||
|     output = `(?:^(?!${output}).*$)`; | ||||
|   } | ||||
|   return output; | ||||
| }; | ||||
		Reference in New Issue
	
	Block a user