Permalink
Cannot retrieve contributors at this time
179 lines (157 sloc)
4.34 KB
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
codeql-action/node_modules/picomatch/lib/constants.js
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'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; | |
} | |
}; |