@skrillex1224/playwright-toolkit 2.1.194 → 2.1.195
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.js +15 -0
- package/dist/browser.js.map +2 -2
- package/dist/index.cjs +19 -1
- package/dist/index.cjs.map +2 -2
- package/dist/index.js +19 -1
- package/dist/index.js.map +2 -2
- package/package.json +1 -1
package/dist/browser.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../node_modules/picomatch/lib/constants.js", "../node_modules/picomatch/lib/utils.js", "../node_modules/picomatch/lib/scan.js", "../node_modules/picomatch/lib/parse.js", "../node_modules/picomatch/lib/picomatch.js", "../node_modules/picomatch/index.js", "../src/internals/logger.js", "../src/logger.js", "../src/display.js", "../src/constants.js", "../src/proxy-bypass.js", "../src/runtime-env.js", "../entrys/browser.js"],
|
|
4
|
-
"sourcesContent": ["'use strict';\n\nconst WIN_SLASH = '\\\\\\\\/';\nconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\n/**\n * Posix glob regex\n */\n\nconst DOT_LITERAL = '\\\\.';\nconst PLUS_LITERAL = '\\\\+';\nconst QMARK_LITERAL = '\\\\?';\nconst SLASH_LITERAL = '\\\\/';\nconst ONE_CHAR = '(?=.)';\nconst QMARK = '[^/]';\nconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\nconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\nconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\nconst NO_DOT = `(?!${DOT_LITERAL})`;\nconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\nconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\nconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\nconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\nconst STAR = `${QMARK}*?`;\nconst SEP = '/';\n\nconst POSIX_CHARS = {\n DOT_LITERAL,\n PLUS_LITERAL,\n QMARK_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n QMARK,\n END_ANCHOR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR,\n SEP\n};\n\n/**\n * Windows glob regex\n */\n\nconst WINDOWS_CHARS = {\n ...POSIX_CHARS,\n\n SLASH_LITERAL: `[${WIN_SLASH}]`,\n QMARK: WIN_NO_SLASH,\n STAR: `${WIN_NO_SLASH}*?`,\n DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n NO_DOT: `(?!${DOT_LITERAL})`,\n NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n END_ANCHOR: `(?:[${WIN_SLASH}]|$)`,\n SEP: '\\\\'\n};\n\n/**\n * POSIX Bracket Regex\n */\n\nconst POSIX_REGEX_SOURCE = {\n alnum: 'a-zA-Z0-9',\n alpha: 'a-zA-Z',\n ascii: '\\\\x00-\\\\x7F',\n blank: ' \\\\t',\n cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n digit: '0-9',\n graph: '\\\\x21-\\\\x7E',\n lower: 'a-z',\n print: '\\\\x20-\\\\x7E ',\n punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n upper: 'A-Z',\n word: 'A-Za-z0-9_',\n xdigit: 'A-Fa-f0-9'\n};\n\nmodule.exports = {\n MAX_LENGTH: 1024 * 64,\n POSIX_REGEX_SOURCE,\n\n // regular expressions\n REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n // Replace globs with equivalent patterns to reduce parsing time.\n REPLACEMENTS: {\n __proto__: null,\n '***': '*',\n '**/**': '**',\n '**/**/**': '**'\n },\n\n // Digits\n CHAR_0: 48, /* 0 */\n CHAR_9: 57, /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 65, /* A */\n CHAR_LOWERCASE_A: 97, /* a */\n CHAR_UPPERCASE_Z: 90, /* Z */\n CHAR_LOWERCASE_Z: 122, /* z */\n\n CHAR_LEFT_PARENTHESES: 40, /* ( */\n CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n CHAR_ASTERISK: 42, /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: 38, /* & */\n CHAR_AT: 64, /* @ */\n CHAR_BACKWARD_SLASH: 92, /* \\ */\n CHAR_CARRIAGE_RETURN: 13, /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n CHAR_COLON: 58, /* : */\n CHAR_COMMA: 44, /* , */\n CHAR_DOT: 46, /* . */\n CHAR_DOUBLE_QUOTE: 34, /* \" */\n CHAR_EQUAL: 61, /* = */\n CHAR_EXCLAMATION_MARK: 33, /* ! */\n CHAR_FORM_FEED: 12, /* \\f */\n CHAR_FORWARD_SLASH: 47, /* / */\n CHAR_GRAVE_ACCENT: 96, /* ` */\n CHAR_HASH: 35, /* # */\n CHAR_HYPHEN_MINUS: 45, /* - */\n CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n CHAR_LEFT_CURLY_BRACE: 123, /* { */\n CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n CHAR_LINE_FEED: 10, /* \\n */\n CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n CHAR_PERCENT: 37, /* % */\n CHAR_PLUS: 43, /* + */\n CHAR_QUESTION_MARK: 63, /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n CHAR_SEMICOLON: 59, /* ; */\n CHAR_SINGLE_QUOTE: 39, /* ' */\n CHAR_SPACE: 32, /* */\n CHAR_TAB: 9, /* \\t */\n CHAR_UNDERSCORE: 95, /* _ */\n CHAR_VERTICAL_LINE: 124, /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n /**\n * Create EXTGLOB_CHARS\n */\n\n extglobChars(chars) {\n return {\n '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n '?': { type: 'qmark', open: '(?:', close: ')?' },\n '+': { type: 'plus', open: '(?:', close: ')+' },\n '*': { type: 'star', open: '(?:', close: ')*' },\n '@': { type: 'at', open: '(?:', close: ')' }\n };\n },\n\n /**\n * Create GLOB_CHARS\n */\n\n globChars(win32) {\n return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n }\n};\n", "/*global navigator*/\n'use strict';\n\nconst {\n REGEX_BACKSLASH,\n REGEX_REMOVE_BACKSLASH,\n REGEX_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_GLOBAL\n} = require('./constants');\n\nexports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nexports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\nexports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\nexports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\nexports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\nexports.isWindows = () => {\n if (typeof navigator !== 'undefined' && navigator.platform) {\n const platform = navigator.platform.toLowerCase();\n return platform === 'win32' || platform === 'windows';\n }\n\n if (typeof process !== 'undefined' && process.platform) {\n return process.platform === 'win32';\n }\n\n return false;\n};\n\nexports.removeBackslashes = str => {\n return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n return match === '\\\\' ? '' : match;\n });\n};\n\nexports.escapeLast = (input, char, lastIdx) => {\n const idx = input.lastIndexOf(char, lastIdx);\n if (idx === -1) return input;\n if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n};\n\nexports.removePrefix = (input, state = {}) => {\n let output = input;\n if (output.startsWith('./')) {\n output = output.slice(2);\n state.prefix = './';\n }\n return output;\n};\n\nexports.wrapOutput = (input, state = {}, options = {}) => {\n const prepend = options.contains ? '' : '^';\n const append = options.contains ? '' : '$';\n\n let output = `${prepend}(?:${input})${append}`;\n if (state.negated === true) {\n output = `(?:^(?!${output}).*$)`;\n }\n return output;\n};\n\nexports.basename = (path, { windows } = {}) => {\n const segs = path.split(windows ? /[\\\\/]/ : '/');\n const last = segs[segs.length - 1];\n\n if (last === '') {\n return segs[segs.length - 2];\n }\n\n return last;\n};\n", "'use strict';\n\nconst utils = require('./utils');\nconst {\n CHAR_ASTERISK, /* * */\n CHAR_AT, /* @ */\n CHAR_BACKWARD_SLASH, /* \\ */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_EXCLAMATION_MARK, /* ! */\n CHAR_FORWARD_SLASH, /* / */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_PLUS, /* + */\n CHAR_QUESTION_MARK, /* ? */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_RIGHT_SQUARE_BRACKET /* ] */\n} = require('./constants');\n\nconst isPathSeparator = code => {\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n};\n\nconst depth = token => {\n if (token.isPrefix !== true) {\n token.depth = token.isGlobstar ? Infinity : 1;\n }\n};\n\n/**\n * Quickly scans a glob pattern and returns an object with a handful of\n * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not\n * with `!(`) and `negatedExtglob` (true if the path starts with `!(`).\n *\n * ```js\n * const pm = require('picomatch');\n * console.log(pm.scan('foo/bar/*.js'));\n * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an object with tokens and regex source string.\n * @api public\n */\n\nconst scan = (input, options) => {\n const opts = options || {};\n\n const length = input.length - 1;\n const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n const slashes = [];\n const tokens = [];\n const parts = [];\n\n let str = input;\n let index = -1;\n let start = 0;\n let lastIndex = 0;\n let isBrace = false;\n let isBracket = false;\n let isGlob = false;\n let isExtglob = false;\n let isGlobstar = false;\n let braceEscaped = false;\n let backslashes = false;\n let negated = false;\n let negatedExtglob = false;\n let finished = false;\n let braces = 0;\n let prev;\n let code;\n let token = { value: '', depth: 0, isGlob: false };\n\n const eos = () => index >= length;\n const peek = () => str.charCodeAt(index + 1);\n const advance = () => {\n prev = code;\n return str.charCodeAt(++index);\n };\n\n while (index < length) {\n code = advance();\n let next;\n\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braceEscaped = true;\n }\n continue;\n }\n\n if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n continue;\n }\n\n if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (braceEscaped !== true && code === CHAR_COMMA) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_RIGHT_CURLY_BRACE) {\n braces--;\n\n if (braces === 0) {\n braceEscaped = false;\n isBrace = token.isBrace = true;\n finished = true;\n break;\n }\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_FORWARD_SLASH) {\n slashes.push(index);\n tokens.push(token);\n token = { value: '', depth: 0, isGlob: false };\n\n if (finished === true) continue;\n if (prev === CHAR_DOT && index === (start + 1)) {\n start += 2;\n continue;\n }\n\n lastIndex = index + 1;\n continue;\n }\n\n if (opts.noext !== true) {\n const isExtglobChar = code === CHAR_PLUS\n || code === CHAR_AT\n || code === CHAR_ASTERISK\n || code === CHAR_QUESTION_MARK\n || code === CHAR_EXCLAMATION_MARK;\n\n if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n isExtglob = token.isExtglob = true;\n finished = true;\n if (code === CHAR_EXCLAMATION_MARK && index === start) {\n negatedExtglob = true;\n }\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n }\n\n if (code === CHAR_ASTERISK) {\n if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_QUESTION_MARK) {\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_LEFT_SQUARE_BRACKET) {\n while (eos() !== true && (next = advance())) {\n if (next === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n isBracket = token.isBracket = true;\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n negated = token.negated = true;\n start++;\n continue;\n }\n\n if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_LEFT_PARENTHESES) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n\n if (isGlob === true) {\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n }\n\n if (opts.noext === true) {\n isExtglob = false;\n isGlob = false;\n }\n\n let base = str;\n let prefix = '';\n let glob = '';\n\n if (start > 0) {\n prefix = str.slice(0, start);\n str = str.slice(start);\n lastIndex -= start;\n }\n\n if (base && isGlob === true && lastIndex > 0) {\n base = str.slice(0, lastIndex);\n glob = str.slice(lastIndex);\n } else if (isGlob === true) {\n base = '';\n glob = str;\n } else {\n base = str;\n }\n\n if (base && base !== '' && base !== '/' && base !== str) {\n if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n base = base.slice(0, -1);\n }\n }\n\n if (opts.unescape === true) {\n if (glob) glob = utils.removeBackslashes(glob);\n\n if (base && backslashes === true) {\n base = utils.removeBackslashes(base);\n }\n }\n\n const state = {\n prefix,\n input,\n start,\n base,\n glob,\n isBrace,\n isBracket,\n isGlob,\n isExtglob,\n isGlobstar,\n negated,\n negatedExtglob\n };\n\n if (opts.tokens === true) {\n state.maxDepth = 0;\n if (!isPathSeparator(code)) {\n tokens.push(token);\n }\n state.tokens = tokens;\n }\n\n if (opts.parts === true || opts.tokens === true) {\n let prevIndex;\n\n for (let idx = 0; idx < slashes.length; idx++) {\n const n = prevIndex ? prevIndex + 1 : start;\n const i = slashes[idx];\n const value = input.slice(n, i);\n if (opts.tokens) {\n if (idx === 0 && start !== 0) {\n tokens[idx].isPrefix = true;\n tokens[idx].value = prefix;\n } else {\n tokens[idx].value = value;\n }\n depth(tokens[idx]);\n state.maxDepth += tokens[idx].depth;\n }\n if (idx !== 0 || value !== '') {\n parts.push(value);\n }\n prevIndex = i;\n }\n\n if (prevIndex && prevIndex + 1 < input.length) {\n const value = input.slice(prevIndex + 1);\n parts.push(value);\n\n if (opts.tokens) {\n tokens[tokens.length - 1].value = value;\n depth(tokens[tokens.length - 1]);\n state.maxDepth += tokens[tokens.length - 1].depth;\n }\n }\n\n state.slashes = slashes;\n state.parts = parts;\n }\n\n return state;\n};\n\nmodule.exports = scan;\n", "'use strict';\n\nconst constants = require('./constants');\nconst utils = require('./utils');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n POSIX_REGEX_SOURCE,\n REGEX_NON_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_BACKREF,\n REPLACEMENTS\n} = constants;\n\n/**\n * Helpers\n */\n\nconst expandRange = (args, options) => {\n if (typeof options.expandRange === 'function') {\n return options.expandRange(...args, options);\n }\n\n args.sort();\n const value = `[${args.join('-')}]`;\n\n try {\n /* eslint-disable-next-line no-new */\n new RegExp(value);\n } catch (ex) {\n return args.map(v => utils.escapeRegex(v)).join('..');\n }\n\n return value;\n};\n\n/**\n * Create the message for a syntax error\n */\n\nconst syntaxError = (type, char) => {\n return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n};\n\n/**\n * Parse the given input string.\n * @param {String} input\n * @param {Object} options\n * @return {Object}\n */\n\nconst parse = (input, options) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n input = REPLACEMENTS[input] || input;\n\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n let len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n const tokens = [bos];\n\n const capture = opts.capture ? '' : '?:';\n\n // create constants based on platform, for windows or posix\n const PLATFORM_CHARS = constants.globChars(opts.windows);\n const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n const {\n DOT_LITERAL,\n PLUS_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n } = PLATFORM_CHARS;\n\n const globstar = opts => {\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const nodot = opts.dot ? '' : NO_DOT;\n const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n let star = opts.bash === true ? globstar(opts) : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n // minimatch options support\n if (typeof opts.noext === 'boolean') {\n opts.noextglob = opts.noext;\n }\n\n const state = {\n input,\n index: -1,\n start: 0,\n dot: opts.dot === true,\n consumed: '',\n output: '',\n prefix: '',\n backtrack: false,\n negated: false,\n brackets: 0,\n braces: 0,\n parens: 0,\n quotes: 0,\n globstar: false,\n tokens\n };\n\n input = utils.removePrefix(input, state);\n len = input.length;\n\n const extglobs = [];\n const braces = [];\n const stack = [];\n let prev = bos;\n let value;\n\n /**\n * Tokenizing helpers\n */\n\n const eos = () => state.index === len - 1;\n const peek = state.peek = (n = 1) => input[state.index + n];\n const advance = state.advance = () => input[++state.index] || '';\n const remaining = () => input.slice(state.index + 1);\n const consume = (value = '', num = 0) => {\n state.consumed += value;\n state.index += num;\n };\n\n const append = token => {\n state.output += token.output != null ? token.output : token.value;\n consume(token.value);\n };\n\n const negate = () => {\n let count = 1;\n\n while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n advance();\n state.start++;\n count++;\n }\n\n if (count % 2 === 0) {\n return false;\n }\n\n state.negated = true;\n state.start++;\n return true;\n };\n\n const increment = type => {\n state[type]++;\n stack.push(type);\n };\n\n const decrement = type => {\n state[type]--;\n stack.pop();\n };\n\n /**\n * Push tokens onto the tokens array. This helper speeds up\n * tokenizing by 1) helping us avoid backtracking as much as possible,\n * and 2) helping us avoid creating extra tokens when consecutive\n * characters are plain text. This improves performance and simplifies\n * lookbehinds.\n */\n\n const push = tok => {\n if (prev.type === 'globstar') {\n const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n state.output = state.output.slice(0, -prev.output.length);\n prev.type = 'star';\n prev.value = '*';\n prev.output = star;\n state.output += prev.output;\n }\n }\n\n if (extglobs.length && tok.type !== 'paren') {\n extglobs[extglobs.length - 1].inner += tok.value;\n }\n\n if (tok.value || tok.output) append(tok);\n if (prev && prev.type === 'text' && tok.type === 'text') {\n prev.output = (prev.output || prev.value) + tok.value;\n prev.value += tok.value;\n return;\n }\n\n tok.prev = prev;\n tokens.push(tok);\n prev = tok;\n };\n\n const extglobOpen = (type, value) => {\n const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n token.prev = prev;\n token.parens = state.parens;\n token.output = state.output;\n const output = (opts.capture ? '(' : '') + token.open;\n\n increment('parens');\n push({ type, value, output: state.output ? '' : ONE_CHAR });\n push({ type: 'paren', extglob: true, value: advance(), output });\n extglobs.push(token);\n };\n\n const extglobClose = token => {\n let output = token.close + (opts.capture ? ')' : '');\n let rest;\n\n if (token.type === 'negate') {\n let extglobStar = star;\n\n if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n extglobStar = globstar(opts);\n }\n\n if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n output = token.close = `)$))${extglobStar}`;\n }\n\n if (token.inner.includes('*') && (rest = remaining()) && /^\\.[^\\\\/.]+$/.test(rest)) {\n // Any non-magical string (`.ts`) or even nested expression (`.{ts,tsx}`) can follow after the closing parenthesis.\n // In this case, we need to parse the string and use it in the output of the original pattern.\n // Suitable patterns: `/!(*.d).ts`, `/!(*.d).{ts,tsx}`, `**/!(*-dbg).@(js)`.\n //\n // Disabling the `fastpaths` option due to a problem with parsing strings as `.ts` in the pattern like `**/!(*.d).ts`.\n const expression = parse(rest, { ...options, fastpaths: false }).output;\n\n output = token.close = `)${expression})${extglobStar})`;\n }\n\n if (token.prev.type === 'bos') {\n state.negatedExtglob = true;\n }\n }\n\n push({ type: 'paren', extglob: true, value, output });\n decrement('parens');\n };\n\n /**\n * Fast paths\n */\n\n if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n let backslashes = false;\n\n let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n if (first === '\\\\') {\n backslashes = true;\n return m;\n }\n\n if (first === '?') {\n if (esc) {\n return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n }\n if (index === 0) {\n return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n }\n return QMARK.repeat(chars.length);\n }\n\n if (first === '.') {\n return DOT_LITERAL.repeat(chars.length);\n }\n\n if (first === '*') {\n if (esc) {\n return esc + first + (rest ? star : '');\n }\n return star;\n }\n return esc ? m : `\\\\${m}`;\n });\n\n if (backslashes === true) {\n if (opts.unescape === true) {\n output = output.replace(/\\\\/g, '');\n } else {\n output = output.replace(/\\\\+/g, m => {\n return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n });\n }\n }\n\n if (output === input && opts.contains === true) {\n state.output = input;\n return state;\n }\n\n state.output = utils.wrapOutput(output, state, options);\n return state;\n }\n\n /**\n * Tokenize input until we reach end-of-string\n */\n\n while (!eos()) {\n value = advance();\n\n if (value === '\\u0000') {\n continue;\n }\n\n /**\n * Escaped characters\n */\n\n if (value === '\\\\') {\n const next = peek();\n\n if (next === '/' && opts.bash !== true) {\n continue;\n }\n\n if (next === '.' || next === ';') {\n continue;\n }\n\n if (!next) {\n value += '\\\\';\n push({ type: 'text', value });\n continue;\n }\n\n // collapse slashes to reduce potential for exploits\n const match = /^\\\\+/.exec(remaining());\n let slashes = 0;\n\n if (match && match[0].length > 2) {\n slashes = match[0].length;\n state.index += slashes;\n if (slashes % 2 !== 0) {\n value += '\\\\';\n }\n }\n\n if (opts.unescape === true) {\n value = advance();\n } else {\n value += advance();\n }\n\n if (state.brackets === 0) {\n push({ type: 'text', value });\n continue;\n }\n }\n\n /**\n * If we're inside a regex character class, continue\n * until we reach the closing bracket.\n */\n\n if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n if (opts.posix !== false && value === ':') {\n const inner = prev.value.slice(1);\n if (inner.includes('[')) {\n prev.posix = true;\n\n if (inner.includes(':')) {\n const idx = prev.value.lastIndexOf('[');\n const pre = prev.value.slice(0, idx);\n const rest = prev.value.slice(idx + 2);\n const posix = POSIX_REGEX_SOURCE[rest];\n if (posix) {\n prev.value = pre + posix;\n state.backtrack = true;\n advance();\n\n if (!bos.output && tokens.indexOf(prev) === 1) {\n bos.output = ONE_CHAR;\n }\n continue;\n }\n }\n }\n }\n\n if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n value = `\\\\${value}`;\n }\n\n if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n value = `\\\\${value}`;\n }\n\n if (opts.posix === true && value === '!' && prev.value === '[') {\n value = '^';\n }\n\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * If we're inside a quoted string, continue\n * until we reach the closing double quote.\n */\n\n if (state.quotes === 1 && value !== '\"') {\n value = utils.escapeRegex(value);\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * Double quotes\n */\n\n if (value === '\"') {\n state.quotes = state.quotes === 1 ? 0 : 1;\n if (opts.keepQuotes === true) {\n push({ type: 'text', value });\n }\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === '(') {\n increment('parens');\n push({ type: 'paren', value });\n continue;\n }\n\n if (value === ')') {\n if (state.parens === 0 && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '('));\n }\n\n const extglob = extglobs[extglobs.length - 1];\n if (extglob && state.parens === extglob.parens + 1) {\n extglobClose(extglobs.pop());\n continue;\n }\n\n push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n decrement('parens');\n continue;\n }\n\n /**\n * Square brackets\n */\n\n if (value === '[') {\n if (opts.nobracket === true || !remaining().includes(']')) {\n if (opts.nobracket !== true && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('closing', ']'));\n }\n\n value = `\\\\${value}`;\n } else {\n increment('brackets');\n }\n\n push({ type: 'bracket', value });\n continue;\n }\n\n if (value === ']') {\n if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n if (state.brackets === 0) {\n if (opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '['));\n }\n\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n decrement('brackets');\n\n const prevValue = prev.value.slice(1);\n if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n value = `/${value}`;\n }\n\n prev.value += value;\n append({ value });\n\n // when literal brackets are explicitly disabled\n // assume we should match with a regex character class\n if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n continue;\n }\n\n const escaped = utils.escapeRegex(prev.value);\n state.output = state.output.slice(0, -prev.value.length);\n\n // when literal brackets are explicitly enabled\n // assume we should escape the brackets to match literal characters\n if (opts.literalBrackets === true) {\n state.output += escaped;\n prev.value = escaped;\n continue;\n }\n\n // when the user specifies nothing, try to match both\n prev.value = `(${capture}${escaped}|${prev.value})`;\n state.output += prev.value;\n continue;\n }\n\n /**\n * Braces\n */\n\n if (value === '{' && opts.nobrace !== true) {\n increment('braces');\n\n const open = {\n type: 'brace',\n value,\n output: '(',\n outputIndex: state.output.length,\n tokensIndex: state.tokens.length\n };\n\n braces.push(open);\n push(open);\n continue;\n }\n\n if (value === '}') {\n const brace = braces[braces.length - 1];\n\n if (opts.nobrace === true || !brace) {\n push({ type: 'text', value, output: value });\n continue;\n }\n\n let output = ')';\n\n if (brace.dots === true) {\n const arr = tokens.slice();\n const range = [];\n\n for (let i = arr.length - 1; i >= 0; i--) {\n tokens.pop();\n if (arr[i].type === 'brace') {\n break;\n }\n if (arr[i].type !== 'dots') {\n range.unshift(arr[i].value);\n }\n }\n\n output = expandRange(range, opts);\n state.backtrack = true;\n }\n\n if (brace.comma !== true && brace.dots !== true) {\n const out = state.output.slice(0, brace.outputIndex);\n const toks = state.tokens.slice(brace.tokensIndex);\n brace.value = brace.output = '\\\\{';\n value = output = '\\\\}';\n state.output = out;\n for (const t of toks) {\n state.output += (t.output || t.value);\n }\n }\n\n push({ type: 'brace', value, output });\n decrement('braces');\n braces.pop();\n continue;\n }\n\n /**\n * Pipes\n */\n\n if (value === '|') {\n if (extglobs.length > 0) {\n extglobs[extglobs.length - 1].conditions++;\n }\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Commas\n */\n\n if (value === ',') {\n let output = value;\n\n const brace = braces[braces.length - 1];\n if (brace && stack[stack.length - 1] === 'braces') {\n brace.comma = true;\n output = '|';\n }\n\n push({ type: 'comma', value, output });\n continue;\n }\n\n /**\n * Slashes\n */\n\n if (value === '/') {\n // if the beginning of the glob is \"./\", advance the start\n // to the current index, and don't add the \"./\" characters\n // to the state. This greatly simplifies lookbehinds when\n // checking for BOS characters like \"!\" and \".\" (not \"./\")\n if (prev.type === 'dot' && state.index === state.start + 1) {\n state.start = state.index + 1;\n state.consumed = '';\n state.output = '';\n tokens.pop();\n prev = bos; // reset \"prev\" to the first token\n continue;\n }\n\n push({ type: 'slash', value, output: SLASH_LITERAL });\n continue;\n }\n\n /**\n * Dots\n */\n\n if (value === '.') {\n if (state.braces > 0 && prev.type === 'dot') {\n if (prev.value === '.') prev.output = DOT_LITERAL;\n const brace = braces[braces.length - 1];\n prev.type = 'dots';\n prev.output += value;\n prev.value += value;\n brace.dots = true;\n continue;\n }\n\n if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n push({ type: 'text', value, output: DOT_LITERAL });\n continue;\n }\n\n push({ type: 'dot', value, output: DOT_LITERAL });\n continue;\n }\n\n /**\n * Question marks\n */\n\n if (value === '?') {\n const isGroup = prev && prev.value === '(';\n if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('qmark', value);\n continue;\n }\n\n if (prev && prev.type === 'paren') {\n const next = peek();\n let output = value;\n\n if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n output = `\\\\${value}`;\n }\n\n push({ type: 'text', value, output });\n continue;\n }\n\n if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n push({ type: 'qmark', value, output: QMARK_NO_DOT });\n continue;\n }\n\n push({ type: 'qmark', value, output: QMARK });\n continue;\n }\n\n /**\n * Exclamation\n */\n\n if (value === '!') {\n if (opts.noextglob !== true && peek() === '(') {\n if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n extglobOpen('negate', value);\n continue;\n }\n }\n\n if (opts.nonegate !== true && state.index === 0) {\n negate();\n continue;\n }\n }\n\n /**\n * Plus\n */\n\n if (value === '+') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('plus', value);\n continue;\n }\n\n if ((prev && prev.value === '(') || opts.regex === false) {\n push({ type: 'plus', value, output: PLUS_LITERAL });\n continue;\n }\n\n if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n push({ type: 'plus', value });\n continue;\n }\n\n push({ type: 'plus', value: PLUS_LITERAL });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value === '@') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n push({ type: 'at', extglob: true, value, output: '' });\n continue;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value !== '*') {\n if (value === '$' || value === '^') {\n value = `\\\\${value}`;\n }\n\n const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n if (match) {\n value += match[0];\n state.index += match[0].length;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Stars\n */\n\n if (prev && (prev.type === 'globstar' || prev.star === true)) {\n prev.type = 'star';\n prev.star = true;\n prev.value += value;\n prev.output = star;\n state.backtrack = true;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n let rest = remaining();\n if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n extglobOpen('star', value);\n continue;\n }\n\n if (prev.type === 'star') {\n if (opts.noglobstar === true) {\n consume(value);\n continue;\n }\n\n const prior = prev.prev;\n const before = prior.prev;\n const isStart = prior.type === 'slash' || prior.type === 'bos';\n const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n // strip consecutive `/**/`\n while (rest.slice(0, 3) === '/**') {\n const after = input[state.index + 4];\n if (after && after !== '/') {\n break;\n }\n rest = rest.slice(3);\n consume('/**', 3);\n }\n\n if (prior.type === 'bos' && eos()) {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = globstar(opts);\n state.output = prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n prev.value += value;\n state.globstar = true;\n state.output += prior.output + prev.output;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n const end = rest[1] !== void 0 ? '|$' : '';\n\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n prev.value += value;\n\n state.output += prior.output + prev.output;\n state.globstar = true;\n\n consume(value + advance());\n\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n if (prior.type === 'bos' && rest[0] === '/') {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n state.output = prev.output;\n state.globstar = true;\n consume(value + advance());\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n // remove single star from output\n state.output = state.output.slice(0, -prev.output.length);\n\n // reset previous token to globstar\n prev.type = 'globstar';\n prev.output = globstar(opts);\n prev.value += value;\n\n // reset output with globstar\n state.output += prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n const token = { type: 'star', value, output: star };\n\n if (opts.bash === true) {\n token.output = '.*?';\n if (prev.type === 'bos' || prev.type === 'slash') {\n token.output = nodot + token.output;\n }\n push(token);\n continue;\n }\n\n if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n token.output = value;\n push(token);\n continue;\n }\n\n if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n if (prev.type === 'dot') {\n state.output += NO_DOT_SLASH;\n prev.output += NO_DOT_SLASH;\n\n } else if (opts.dot === true) {\n state.output += NO_DOTS_SLASH;\n prev.output += NO_DOTS_SLASH;\n\n } else {\n state.output += nodot;\n prev.output += nodot;\n }\n\n if (peek() !== '*') {\n state.output += ONE_CHAR;\n prev.output += ONE_CHAR;\n }\n }\n\n push(token);\n }\n\n while (state.brackets > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n state.output = utils.escapeLast(state.output, '[');\n decrement('brackets');\n }\n\n while (state.parens > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n state.output = utils.escapeLast(state.output, '(');\n decrement('parens');\n }\n\n while (state.braces > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n state.output = utils.escapeLast(state.output, '{');\n decrement('braces');\n }\n\n if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n }\n\n // rebuild the output if we had to backtrack at any point\n if (state.backtrack === true) {\n state.output = '';\n\n for (const token of state.tokens) {\n state.output += token.output != null ? token.output : token.value;\n\n if (token.suffix) {\n state.output += token.suffix;\n }\n }\n }\n\n return state;\n};\n\n/**\n * Fast paths for creating regular expressions for common glob patterns.\n * This can significantly speed up processing and has very little downside\n * impact when none of the fast paths match.\n */\n\nparse.fastpaths = (input, options) => {\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n const len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n input = REPLACEMENTS[input] || input;\n\n // create constants based on platform, for windows or posix\n const {\n DOT_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOTS_SLASH,\n STAR,\n START_ANCHOR\n } = constants.globChars(opts.windows);\n\n const nodot = opts.dot ? NO_DOTS : NO_DOT;\n const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n const capture = opts.capture ? '' : '?:';\n const state = { negated: false, prefix: '' };\n let star = opts.bash === true ? '.*?' : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n const globstar = opts => {\n if (opts.noglobstar === true) return star;\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const create = str => {\n switch (str) {\n case '*':\n return `${nodot}${ONE_CHAR}${star}`;\n\n case '.*':\n return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*.*':\n return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*/*':\n return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n case '**':\n return nodot + globstar(opts);\n\n case '**/*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n case '**/*.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '**/.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n default: {\n const match = /^(.*?)\\.(\\w+)$/.exec(str);\n if (!match) return;\n\n const source = create(match[1]);\n if (!source) return;\n\n return source + DOT_LITERAL + match[2];\n }\n }\n };\n\n const output = utils.removePrefix(input, state);\n let source = create(output);\n\n if (source && opts.strictSlashes !== true) {\n source += `${SLASH_LITERAL}?`;\n }\n\n return source;\n};\n\nmodule.exports = parse;\n", "'use strict';\n\nconst scan = require('./scan');\nconst parse = require('./parse');\nconst utils = require('./utils');\nconst constants = require('./constants');\nconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n/**\n * Creates a matcher function from one or more glob patterns. The\n * returned function takes a string to match as its first argument,\n * and returns true if the string is a match. The returned matcher\n * function also takes a boolean as the second argument that, when true,\n * returns an object with additional information.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch(glob[, options]);\n *\n * const isMatch = picomatch('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @name picomatch\n * @param {String|Array} `globs` One or more glob patterns.\n * @param {Object=} `options`\n * @return {Function=} Returns a matcher function.\n * @api public\n */\n\nconst picomatch = (glob, options, returnState = false) => {\n if (Array.isArray(glob)) {\n const fns = glob.map(input => picomatch(input, options, returnState));\n const arrayMatcher = str => {\n for (const isMatch of fns) {\n const state = isMatch(str);\n if (state) return state;\n }\n return false;\n };\n return arrayMatcher;\n }\n\n const isState = isObject(glob) && glob.tokens && glob.input;\n\n if (glob === '' || (typeof glob !== 'string' && !isState)) {\n throw new TypeError('Expected pattern to be a non-empty string');\n }\n\n const opts = options || {};\n const posix = opts.windows;\n const regex = isState\n ? picomatch.compileRe(glob, options)\n : picomatch.makeRe(glob, options, false, true);\n\n const state = regex.state;\n delete regex.state;\n\n let isIgnored = () => false;\n if (opts.ignore) {\n const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n }\n\n const matcher = (input, returnObject = false) => {\n const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n if (typeof opts.onResult === 'function') {\n opts.onResult(result);\n }\n\n if (isMatch === false) {\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (isIgnored(input)) {\n if (typeof opts.onIgnore === 'function') {\n opts.onIgnore(result);\n }\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (typeof opts.onMatch === 'function') {\n opts.onMatch(result);\n }\n return returnObject ? result : true;\n };\n\n if (returnState) {\n matcher.state = state;\n }\n\n return matcher;\n};\n\n/**\n * Test `input` with the given `regex`. This is used by the main\n * `picomatch()` function to test the input string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.test(input, regex[, options]);\n *\n * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp} `regex`\n * @return {Object} Returns an object with matching info.\n * @api public\n */\n\npicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected input to be a string');\n }\n\n if (input === '') {\n return { isMatch: false, output: '' };\n }\n\n const opts = options || {};\n const format = opts.format || (posix ? utils.toPosixSlashes : null);\n let match = input === glob;\n let output = (match && format) ? format(input) : input;\n\n if (match === false) {\n output = format ? format(input) : input;\n match = output === glob;\n }\n\n if (match === false || opts.capture === true) {\n if (opts.matchBase === true || opts.basename === true) {\n match = picomatch.matchBase(input, regex, options, posix);\n } else {\n match = regex.exec(output);\n }\n }\n\n return { isMatch: Boolean(match), match, output };\n};\n\n/**\n * Match the basename of a filepath.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.matchBase(input, glob[, options]);\n * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n * @return {Boolean}\n * @api public\n */\n\npicomatch.matchBase = (input, glob, options) => {\n const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n return regex.test(utils.basename(input));\n};\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.isMatch(string, patterns[, options]);\n *\n * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String|Array} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\npicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const result = picomatch.parse(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n * @api public\n */\n\npicomatch.parse = (pattern, options) => {\n if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n return parse(pattern, { ...options, fastpaths: false });\n};\n\n/**\n * Scan a glob pattern to separate the pattern into segments.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.scan(input[, options]);\n *\n * const result = picomatch.scan('!./foo/*.js');\n * console.log(result);\n * { prefix: '!./',\n * input: '!./foo/*.js',\n * start: 3,\n * base: 'foo',\n * glob: '*.js',\n * isBrace: false,\n * isBracket: false,\n * isGlob: true,\n * isExtglob: false,\n * isGlobstar: false,\n * negated: true }\n * ```\n * @param {String} `input` Glob pattern to scan.\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\npicomatch.scan = (input, options) => scan(input, options);\n\n/**\n * Compile a regular expression from the `state` object returned by the\n * [parse()](#parse) method.\n *\n * @param {Object} `state`\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser.\n * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging.\n * @return {RegExp}\n * @api public\n */\n\npicomatch.compileRe = (state, options, returnOutput = false, returnState = false) => {\n if (returnOutput === true) {\n return state.output;\n }\n\n const opts = options || {};\n const prepend = opts.contains ? '' : '^';\n const append = opts.contains ? '' : '$';\n\n let source = `${prepend}(?:${state.output})${append}`;\n if (state && state.negated === true) {\n source = `^(?!${source}).*$`;\n }\n\n const regex = picomatch.toRegex(source, options);\n if (returnState === true) {\n regex.state = state;\n }\n\n return regex;\n};\n\n/**\n * Create a regular expression from a parsed glob pattern.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const state = picomatch.parse('*.js');\n * // picomatch.compileRe(state[, options]);\n *\n * console.log(picomatch.compileRe(state));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `state` The object returned from the `.parse` method.\n * @param {Object} `options`\n * @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.\n * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression.\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\npicomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => {\n if (!input || typeof input !== 'string') {\n throw new TypeError('Expected a non-empty string');\n }\n\n let parsed = { negated: false, fastpaths: true };\n\n if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n parsed.output = parse.fastpaths(input, options);\n }\n\n if (!parsed.output) {\n parsed = parse(input, options);\n }\n\n return picomatch.compileRe(parsed, options, returnOutput, returnState);\n};\n\n/**\n * Create a regular expression from the given regex source string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.toRegex(source[, options]);\n *\n * const { output } = picomatch.parse('*.js');\n * console.log(picomatch.toRegex(output));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `source` Regular expression source string.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\npicomatch.toRegex = (source, options) => {\n try {\n const opts = options || {};\n return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n } catch (err) {\n if (options && options.debug === true) throw err;\n return /$^/;\n }\n};\n\n/**\n * Picomatch constants.\n * @return {Object}\n */\n\npicomatch.constants = constants;\n\n/**\n * Expose \"picomatch\"\n */\n\nmodule.exports = picomatch;\n", "'use strict';\n\nconst pico = require('./lib/picomatch');\nconst utils = require('./lib/utils');\n\nfunction picomatch(glob, options, returnState = false) {\n // default to os.platform()\n if (options && (options.windows === null || options.windows === undefined)) {\n // don't mutate the original options object\n options = { ...options, windows: utils.isWindows() };\n }\n\n return pico(glob, options, returnState);\n}\n\nObject.assign(picomatch, pico);\nmodule.exports = picomatch;\n", "\n// =============================================================================\n// Core Helpers & State\n// =============================================================================\n\nconst pad = (value, size = 2) => String(value).padStart(size, '0');\n\nconst FORCED_TIMEZONE_OFFSET_MINUTES = -8 * 60;\n\nconst formatTimestamp = (date = new Date()) => {\n const source = date instanceof Date ? date : new Date(date);\n const forcedDate = new Date(source.getTime() - (FORCED_TIMEZONE_OFFSET_MINUTES * 60 * 1000));\n\n const year = forcedDate.getUTCFullYear();\n const month = pad(forcedDate.getUTCMonth() + 1);\n const day = pad(forcedDate.getUTCDate());\n const hours = pad(forcedDate.getUTCHours());\n const minutes = pad(forcedDate.getUTCMinutes());\n const seconds = pad(forcedDate.getUTCSeconds());\n const millis = pad(forcedDate.getUTCMilliseconds(), 3);\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${millis}`;\n};\n\nconst formatLine = (prefix, icon, message) => {\n const parts = [];\n if (prefix) parts.push(`[${prefix}]`);\n if (icon) parts.push(icon);\n if (message) parts.push(message);\n return parts.join(' ').trim();\n};\n\nconst fallbackLog = {\n info: (...args) => console.log(...args),\n warning: (...args) => (console.warn ? console.warn(...args) : console.log(...args)),\n error: (...args) => console.error(...args),\n debug: (...args) => (console.debug ? console.debug(...args) : console.log(...args)),\n};\n\nconst resolveLogMethod = (logger, name) => {\n if (logger && typeof logger[name] === 'function') {\n return logger[name].bind(logger);\n }\n if (name === 'warning' && logger && typeof logger.warn === 'function') {\n return logger.warn.bind(logger);\n }\n return fallbackLog[name];\n};\n\nlet defaultLogger = null;\n\nexport const setDefaultLogger = (logger) => {\n defaultLogger = logger;\n};\n\n// Lazy resolver: always checks current state\nconst resolveLogger = (explicitLogger) => {\n if (explicitLogger && typeof explicitLogger.info === 'function') {\n return explicitLogger;\n }\n if (defaultLogger && typeof defaultLogger.info === 'function') {\n return defaultLogger;\n }\n return fallbackLog;\n};\n\nconst ANSI = {\n reset: '\\x1b[0m',\n gray: '\\x1b[90m',\n red: '\\x1b[31m',\n green: '\\x1b[32m',\n yellow: '\\x1b[33m',\n blue: '\\x1b[34m',\n cyan: '\\x1b[36m',\n};\n\nconst colorize = (text, color) => {\n if (!text || !color) return text;\n return `${color}${text}${ANSI.reset}`;\n};\n\nexport const createBaseLogger = (prefix = '', explicitLogger) => {\n const name = prefix ? String(prefix) : '';\n\n const dispatch = (methodName, icon, message, color) => {\n const logger = resolveLogger(explicitLogger);\n const logFn = resolveLogMethod(logger, methodName);\n const timestamp = colorize(`[${formatTimestamp()}]`, ANSI.gray);\n const line = formatLine(name, icon, message);\n const coloredLine = colorize(line, color);\n logFn(`${timestamp} ${coloredLine}`.trim());\n };\n\n return {\n info: (message) => dispatch('info', '\uD83D\uDCD6', message, ANSI.cyan),\n success: (message) => dispatch('info', '\u2705', message, ANSI.green),\n warning: (message) => dispatch('warning', '\u26A0\uFE0F', message, ANSI.yellow),\n warn: (message) => dispatch('warning', '\u26A0\uFE0F', message, ANSI.yellow),\n error: (message) => dispatch('error', '\u274C', message, ANSI.red),\n debug: (message) => dispatch('debug', '\uD83D\uDD39', message, ANSI.gray),\n start: (message) => dispatch('info', '\uD83D\uDD37', message, ANSI.blue),\n };\n};\n\n/**\n * \u521B\u5EFA\u6A21\u5757\u7EA7\u65E5\u5FD7\u5668\n * @param {string} moduleName - \u6A21\u5757\u540D\u79F0\n * @param {object} [logger] - \u53EF\u9009\u7684\u663E\u5F0F\u65E5\u5FD7\u5668\uFF0C\u901A\u5E38\u4E0D\u9700\u8981\u4F20\uFF0C\u4F1A\u81EA\u52A8\u4F7F\u7528 setDefaultLogger \u8BBE\u7F6E\u7684\u5168\u5C40\u65E5\u5FD7\u5668\n */\nexport function createInternalLogger(moduleName, explicitLogger) {\n const baseLogger = createBaseLogger(moduleName, explicitLogger);\n\n return {\n start(methodName, params = '') {\n const paramStr = params ? ` (${params})` : '';\n baseLogger.start(`${methodName} \u5F00\u59CB${paramStr}`);\n },\n success(methodName, result = '') {\n const resultStr = result ? ` (${result})` : '';\n baseLogger.success(`${methodName} \u5B8C\u6210${resultStr}`);\n },\n fail(methodName, error) {\n const message = error instanceof Error ? error.message : error;\n baseLogger.error(`${methodName} \u5931\u8D25: ${message}`);\n },\n debug(message) {\n baseLogger.debug(message);\n },\n warn(message) {\n baseLogger.warning(message);\n },\n warning(message) {\n baseLogger.warning(message);\n },\n info(message) {\n baseLogger.info(message);\n }\n };\n}\n", "import { createBaseLogger, setDefaultLogger } from './internals/logger.js';\n\nexport const stripAnsi = (input) => {\n if (!input) return '';\n return String(input).replace(/\\x1b\\[[0-9;]*m/g, '');\n};\n\n// =============================================================================\n// Log Templates & Definitions\n// =============================================================================\n\nconst STEP_PREFIX = '\u6B65\u9AA4:';\nconst STEP_SEPARATOR = ' | ';\nconst STEP_EMOJIS = [\n { match: '\u4EFB\u52A1', emoji: '\uD83E\uDDED' },\n { match: '\u8FD0\u884C\u6A21\u5F0F', emoji: '\uD83E\uDDE9' },\n { match: '\u6A21\u677F\u8BC6\u522B', emoji: '\uD83E\uDDF1' },\n { match: '\u767B\u5F55', emoji: '\uD83D\uDD10' },\n { match: '\u73AF\u5883', emoji: '\uD83E\uDDEA' },\n { match: '\u8F93\u5165', emoji: '\u2328\uFE0F' },\n { match: '\u53D1\u9001', emoji: '\uD83D\uDCE4' },\n { match: '\u54CD\u5E94\u76D1\u542C', emoji: '\uD83D\uDCE1' },\n { match: '\u7B49\u5F85\u54CD\u5E94', emoji: '\u23F3' },\n { match: '\u6D41\u5F0F', emoji: '\uD83E\uDDF5' },\n { match: '\u5F15\u7528', emoji: '\uD83D\uDCCE' },\n { match: '\u622A\u56FE', emoji: '\uD83D\uDDBC\uFE0F' },\n { match: '\u5206\u4EAB\u94FE\u63A5', emoji: '\uD83D\uDD17' },\n { match: '\u6570\u636E\u63A8\u9001', emoji: '\uD83D\uDCE6' },\n { match: '\u5F39\u7A97', emoji: '\uD83E\uDE9F' },\n];\nconst STATUS_EMOJIS = [\n { match: '\u5F00\u59CB', emoji: '\uD83D\uDE80' },\n { match: '\u5B8C\u6210', emoji: '\u2705' },\n { match: '\u6210\u529F', emoji: '\u2705' },\n { match: '\u5931\u8D25', emoji: '\u274C' },\n { match: '\u8DF3\u8FC7', emoji: '\u23ED\uFE0F' },\n { match: '\u8D85\u65F6', emoji: '\u23F1\uFE0F' },\n { match: '\u91CD\u8BD5', emoji: '\uD83D\uDD01' },\n { match: '\u7ED3\u675F', emoji: '\uD83C\uDFC1' },\n { match: '\u5DF2\u914D\u7F6E', emoji: '\uD83E\uDDF7' },\n { match: '\u5DF2\u68C0\u6D4B', emoji: '\uD83D\uDD0E' },\n];\n\nconst toErrorMessage = (error) => {\n if (!error) return '';\n if (error instanceof Error) return error.message;\n if (typeof error === 'string') return error;\n try {\n return JSON.stringify(error);\n } catch {\n return String(error);\n }\n};\n\nconst decorateLabel = (label, mappings) => {\n if (!label) return '';\n const mapping = mappings.find((item) => label.includes(item.match));\n if (!mapping) return label;\n return `${mapping.emoji} ${label}`;\n};\n\nconst normalizeSnippet = (snippet, maxLen = 120) => {\n if (!snippet) return '';\n const text = String(snippet).replace(/\\s+/g, ' ').trim();\n if (!text) return '';\n const cleaned = text.replace(/\"/g, \"'\");\n if (cleaned.length <= maxLen) return cleaned;\n return `${cleaned.slice(0, maxLen)}...`;\n};\n\nconst LOG_TAG_PREFIX = '[#log:';\nconst LOG_TAG_SUFFIX = ']';\n\nconst buildLogTag = (key) => `${LOG_TAG_PREFIX}${key}${LOG_TAG_SUFFIX}`;\n\nconst escapeRegExp = (value) => String(value).replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\nconst buildStepPattern = (step, status) => {\n if (!step) return null;\n let pattern = `\u6B65\u9AA4: .*${escapeRegExp(step)}`;\n if (status) {\n pattern += `.*${escapeRegExp(status)}`;\n }\n return new RegExp(pattern);\n};\n\nconst buildDefinitionPatterns = (definition) => {\n const patterns = [new RegExp(`\\\\[#log:${escapeRegExp(definition.key)}\\\\]`)];\n const fallback = buildStepPattern(definition.step, definition.status);\n if (fallback) patterns.push(fallback);\n if (Array.isArray(definition.extraPatterns)) {\n patterns.push(...definition.extraPatterns);\n }\n return patterns;\n};\n\nconst ATTENTION_RANK = {\n low: 1,\n medium: 2,\n high: 3,\n critical: 4,\n};\nconst DEFAULT_ATTENTION_RANK = ATTENTION_RANK.high;\n\nconst LOG_DEFINITIONS = [\n {\n key: 'task_start',\n method: 'taskStart',\n label: '\u4EFB\u52A1\u5F00\u59CB',\n group: '\u4EFB\u52A1',\n step: '\u4EFB\u52A1',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n buildDetails: (url) => [url ? `url=${url}` : ''],\n },\n {\n key: 'task_success',\n method: 'taskSuccess',\n label: '\u4EFB\u52A1\u5B8C\u6210',\n group: '\u4EFB\u52A1',\n step: '\u4EFB\u52A1',\n status: '\u5B8C\u6210',\n level: 'success',\n attention: 'high',\n },\n {\n key: 'task_fail',\n method: 'taskFail',\n label: '\u4EFB\u52A1\u5931\u8D25',\n group: '\u4EFB\u52A1',\n step: '\u4EFB\u52A1',\n status: '\u5931\u8D25',\n level: 'error',\n attention: 'critical',\n buildDetails: (url, err) => [\n url ? `url=${url}` : '',\n err ? `err=${toErrorMessage(err)}` : ''\n ],\n },\n {\n key: 'runtime_headless',\n method: 'runtimeHeadless',\n label: '\u8FD0\u884C\u6A21\u5F0F\u5F3A\u5236\u65E0\u5934',\n group: '\u8FD0\u884C\u6A21\u5F0F',\n step: '\u8FD0\u884C\u6A21\u5F0F',\n status: 'Apify \u73AF\u5883\u5F3A\u5236\u65E0\u5934',\n level: 'warning',\n attention: 'medium',\n },\n {\n key: 'login_inject_success',\n method: 'loginInjectSuccess',\n label: '\u767B\u5F55\u6001\u6CE8\u5165\u6210\u529F',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u6001\u6CE8\u5165',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'medium',\n buildDetails: (detail) => [detail ? `detail=${detail}` : ''],\n },\n {\n key: 'login_inject_skip',\n method: 'loginInjectSkip',\n label: '\u767B\u5F55\u6001\u6CE8\u5165\u8DF3\u8FC7',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u6001\u6CE8\u5165',\n status: '\u8DF3\u8FC7',\n level: 'warning',\n attention: 'medium',\n buildDetails: (reason) => [reason ? `\u539F\u56E0=${reason}` : ''],\n },\n {\n key: 'login_inject_fail',\n method: 'loginInjectFail',\n label: '\u767B\u5F55\u6001\u6CE8\u5165\u5931\u8D25',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u6001\u6CE8\u5165',\n status: '\u5931\u8D25',\n level: 'error',\n attention: 'high',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'login_verify_success',\n method: 'loginVerifySuccess',\n label: '\u767B\u5F55\u9A8C\u8BC1\u6210\u529F',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u9A8C\u8BC1',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'high',\n buildDetails: (detail) => [detail ? `detail=${detail}` : ''],\n },\n {\n key: 'login_verify_skip',\n method: 'loginVerifySkip',\n label: '\u767B\u5F55\u9A8C\u8BC1\u8DF3\u8FC7',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u9A8C\u8BC1',\n status: '\u8DF3\u8FC7',\n level: 'warning',\n attention: 'medium',\n buildDetails: (reason) => [reason ? `\u539F\u56E0=${reason}` : ''],\n },\n {\n key: 'login_verify_fail',\n method: 'loginVerifyFail',\n label: '\u767B\u5F55\u9A8C\u8BC1\u5931\u8D25',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u9A8C\u8BC1',\n status: '\u5931\u8D25',\n level: 'error',\n attention: 'critical',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'env_check_success',\n method: 'envCheckSuccess',\n label: '\u73AF\u5883\u68C0\u67E5\u6210\u529F',\n group: '\u73AF\u5883',\n step: '\u73AF\u5883\u68C0\u67E5',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'medium',\n buildDetails: (detail) => [detail ? `detail=${detail}` : ''],\n },\n {\n key: 'env_check_fail',\n method: 'envCheckFail',\n label: '\u73AF\u5883\u68C0\u67E5\u5931\u8D25',\n group: '\u73AF\u5883',\n step: '\u73AF\u5883\u68C0\u67E5',\n status: '\u5931\u8D25',\n level: 'error',\n attention: 'high',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'input_query_start',\n method: 'inputQuery',\n label: '\u8F93\u5165\u67E5\u8BE2\u5F00\u59CB',\n group: '\u8F93\u5165',\n step: '\u8F93\u5165\u67E5\u8BE2',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n buildDetails: (query) => [query ? `query=${query}` : ''],\n },\n {\n key: 'send_action',\n method: 'sendAction',\n label: '\u53D1\u9001\u8BF7\u6C42',\n group: '\u53D1\u9001',\n step: '\u53D1\u9001\u8BF7\u6C42',\n status: '\u70B9\u51FB\u53D1\u9001',\n level: 'info',\n attention: 'low',\n },\n {\n key: 'response_listen_start',\n method: 'responseListenStart',\n label: '\u54CD\u5E94\u76D1\u542C\u5F00\u59CB',\n group: '\u54CD\u5E94\u76D1\u542C',\n step: '\u54CD\u5E94\u76D1\u542C',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n buildDetails: (label, timeoutSec) => [\n label ? `\u76EE\u6807=${label}` : '',\n timeoutSec ? `timeout=${timeoutSec}s` : ''\n ],\n },\n {\n key: 'response_listen_ready',\n method: 'responseListenReady',\n label: '\u54CD\u5E94\u76D1\u542C\u5DF2\u914D\u7F6E',\n group: '\u54CD\u5E94\u76D1\u542C',\n step: '\u54CD\u5E94\u76D1\u542C',\n status: '\u5DF2\u914D\u7F6E',\n level: 'info',\n attention: 'medium',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'response_listen_detected',\n method: 'responseListenDetected',\n label: '\u54CD\u5E94\u76D1\u542C\u5DF2\u68C0\u6D4B',\n group: '\u54CD\u5E94\u76D1\u542C',\n step: '\u54CD\u5E94\u76D1\u542C',\n status: '\u5DF2\u68C0\u6D4B',\n level: 'success',\n attention: 'medium',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'response_listen_timeout',\n method: 'responseListenTimeout',\n label: '\u54CD\u5E94\u76D1\u542C\u8D85\u65F6',\n group: '\u54CD\u5E94\u76D1\u542C',\n step: '\u54CD\u5E94\u76D1\u542C',\n status: '\u8D85\u65F6',\n level: 'error',\n attention: 'high',\n buildDetails: (label, err) => [\n label ? `\u76EE\u6807=${label}` : '',\n err ? `err=${toErrorMessage(err)}` : ''\n ],\n },\n {\n key: 'response_listen_end',\n method: 'responseListenEnd',\n label: '\u54CD\u5E94\u76D1\u542C\u7ED3\u675F',\n group: '\u54CD\u5E94\u76D1\u542C',\n step: '\u54CD\u5E94\u76D1\u542C',\n status: '\u7ED3\u675F',\n level: 'info',\n attention: 'low',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'response_wait_start',\n method: 'responseWaitStart',\n label: '\u7B49\u5F85\u54CD\u5E94\u5F00\u59CB',\n group: '\u7B49\u5F85\u54CD\u5E94',\n step: '\u7B49\u5F85\u54CD\u5E94',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'response_wait_success',\n method: 'responseWaitSuccess',\n label: '\u7B49\u5F85\u54CD\u5E94\u5B8C\u6210',\n group: '\u7B49\u5F85\u54CD\u5E94',\n step: '\u7B49\u5F85\u54CD\u5E94',\n status: '\u5B8C\u6210',\n level: 'success',\n attention: 'medium',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'response_wait_fail',\n method: 'responseWaitFail',\n label: '\u7B49\u5F85\u54CD\u5E94\u5931\u8D25',\n group: '\u7B49\u5F85\u54CD\u5E94',\n step: '\u7B49\u5F85\u54CD\u5E94',\n status: '\u5931\u8D25',\n level: 'warning',\n attention: 'high',\n buildDetails: (label, err) => [\n label ? `\u76EE\u6807=${label}` : '',\n err ? `err=${toErrorMessage(err)}` : ''\n ],\n },\n {\n key: 'response_wait_retry',\n method: 'responseWaitRetry',\n label: '\u7B49\u5F85\u54CD\u5E94\u91CD\u8BD5',\n group: '\u7B49\u5F85\u54CD\u5E94',\n step: '\u7B49\u5F85\u54CD\u5E94',\n status: '\u91CD\u8BD5',\n level: 'warning',\n attention: 'medium',\n buildDetails: (label, attempt) => [\n label ? `\u76EE\u6807=${label}` : '',\n attempt !== undefined ? `\u5C1D\u8BD5=${attempt}` : ''\n ],\n },\n {\n key: 'dom_wait_start',\n method: 'domWaitStart',\n label: 'DOM\u7A33\u5B9A\u7B49\u5F85\u5F00\u59CB',\n group: 'DOM',\n step: 'DOM\u7A33\u5B9A',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'dom_wait_fail',\n method: 'domWaitFail',\n label: 'DOM\u7A33\u5B9A\u7B49\u5F85\u5931\u8D25',\n group: 'DOM',\n step: 'DOM\u7A33\u5B9A',\n status: '\u5931\u8D25',\n level: 'warning',\n attention: 'high',\n buildDetails: (label, err) => [\n label ? `\u76EE\u6807=${label}` : '',\n err ? `err=${toErrorMessage(err)}` : ''\n ],\n },\n {\n key: 'dom_chunk',\n method: 'domChunk',\n label: 'DOM\u7247\u6BB5',\n group: 'DOM',\n step: 'DOM\u7247\u6BB5',\n status: '',\n level: 'info',\n attention: 'low',\n throttleKey: 'dom-chunk',\n throttleMs: 2000,\n buildDetails: (length, snippet, paused) => [\n length !== undefined ? `len=${length}` : '',\n snippet ? `preview=\"${normalizeSnippet(snippet)}\"` : '',\n paused ? 'paused=1' : ''\n ],\n },\n {\n key: 'dom_wait_success',\n method: 'domWaitSuccess',\n label: 'DOM\u7A33\u5B9A\u7B49\u5F85\u5B8C\u6210',\n group: 'DOM',\n step: 'DOM\u7A33\u5B9A',\n status: '\u5B8C\u6210',\n level: 'success',\n attention: 'medium',\n buildDetails: (mutationCount, stableTime, wasPaused) => [\n mutationCount !== undefined ? `mutations=${mutationCount}` : '',\n stableTime !== undefined ? `stableTime=${stableTime}ms` : '',\n wasPaused ? 'paused=1' : ''\n ],\n },\n {\n key: 'stream_chunk',\n method: 'streamChunk',\n label: '\u6D41\u5F0F\u7247\u6BB5',\n group: '\u6D41\u5F0F',\n step: '\u6D41\u5F0F\u7247\u6BB5',\n status: '',\n level: 'info',\n attention: 'low',\n throttleKey: 'stream-chunk',\n throttleMs: 2000,\n buildDetails: (length, snippet) => [\n length !== undefined ? `len=${length}` : '',\n snippet ? `preview=\"${normalizeSnippet(snippet)}\"` : ''\n ],\n },\n {\n key: 'stream_events_parsed',\n method: 'streamEventsParsed',\n label: '\u6D41\u5F0F\u4E8B\u4EF6\u89E3\u6790\u5B8C\u6210',\n group: '\u6D41\u5F0F',\n step: '\u6D41\u5F0F\u4E8B\u4EF6\u89E3\u6790',\n status: '\u5B8C\u6210',\n level: 'info',\n attention: 'low',\n throttleKey: 'stream-events',\n throttleMs: 4000,\n buildDetails: (count) => [count !== undefined ? `count=${count}` : ''],\n },\n {\n key: 'stream_complete_event',\n method: 'streamCompleteEvent',\n label: '\u6D41\u5F0F\u5B8C\u6210\u4E8B\u4EF6\u6355\u83B7',\n group: '\u6D41\u5F0F',\n step: '\u6D41\u5F0F\u4E8B\u4EF6',\n status: '\u5B8C\u6210\u4E8B\u4EF6\u5DF2\u6355\u83B7',\n level: 'success',\n attention: 'medium',\n },\n {\n key: 'stream_end',\n method: 'streamEnd',\n label: '\u6D41\u5F0F\u54CD\u5E94\u7ED3\u675F',\n group: '\u6D41\u5F0F',\n step: '\u6D41\u5F0F\u54CD\u5E94',\n status: '\u7ED3\u675F',\n level: 'info',\n attention: 'low',\n },\n {\n key: 'reference_expand_start',\n method: 'referenceExpandStart',\n label: '\u5F15\u7528\u5C55\u5F00\u5F00\u59CB',\n group: '\u5F15\u7528',\n step: '\u5F15\u7528\u5C55\u5F00',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'reference_expand_fail',\n method: 'referenceExpandFail',\n label: '\u5F15\u7528\u5C55\u5F00\u5931\u8D25',\n group: '\u5F15\u7528',\n step: '\u5F15\u7528\u5C55\u5F00',\n status: '\u5931\u8D25',\n level: 'warning',\n attention: 'medium',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'screenshot_start',\n method: 'screenshotStart',\n label: '\u622A\u56FE\u5F00\u59CB',\n group: '\u622A\u56FE',\n step: '\u622A\u56FE',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n },\n {\n key: 'screenshot_success',\n method: 'screenshotSuccess',\n label: '\u622A\u56FE\u6210\u529F',\n group: '\u622A\u56FE',\n step: '\u622A\u56FE',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'high',\n },\n {\n key: 'screenshot_fail',\n method: 'screenshotFail',\n label: '\u622A\u56FE\u5931\u8D25',\n group: '\u622A\u56FE',\n step: '\u622A\u56FE',\n status: '\u5931\u8D25',\n level: 'warning',\n attention: 'high',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'share_start',\n method: 'shareStart',\n label: '\u5206\u4EAB\u94FE\u63A5\u5F00\u59CB',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n },\n {\n key: 'share_progress',\n method: 'shareProgress',\n label: '\u5206\u4EAB\u94FE\u63A5\u6B65\u9AA4',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: '\u6B65\u9AA4',\n level: 'info',\n attention: 'low',\n buildDetails: (label) => [label ? `\u6B65\u9AA4=${label}` : ''],\n },\n {\n key: 'share_dom_hit',\n method: 'shareDomHit',\n label: '\u5206\u4EAB\u94FE\u63A5DOM\u547D\u4E2D',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: 'DOM\u547D\u4E2D',\n level: 'info',\n attention: 'low',\n buildDetails: (link, domSnapshot) => [\n link ? `\u94FE\u63A5=${link}` : '',\n domSnapshot ? `DOM=${normalizeSnippet(domSnapshot, 220)}` : ''\n ],\n },\n {\n key: 'share_source',\n method: 'shareSource',\n label: '\u5206\u4EAB\u94FE\u63A5\u6765\u6E90',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: '\u6765\u6E90',\n level: 'info',\n attention: 'low',\n buildDetails: (source, link, domSnapshot) => [\n source ? `\u6765\u6E90=${source}` : '',\n link ? `\u94FE\u63A5=${link}` : '',\n source === 'dom' && domSnapshot ? `DOM=${normalizeSnippet(domSnapshot, 220)}` : ''\n ],\n },\n {\n key: 'share_success',\n method: 'shareSuccess',\n label: '\u5206\u4EAB\u94FE\u63A5\u6210\u529F',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'high',\n buildDetails: (link) => [link ? `\u94FE\u63A5=${link}` : ''],\n },\n {\n key: 'share_fail',\n method: 'shareFail',\n label: '\u5206\u4EAB\u94FE\u63A5\u5931\u8D25',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: '\u5931\u8D25',\n level: 'warning',\n attention: 'high',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'share_skip',\n method: 'shareSkip',\n label: '\u5206\u4EAB\u94FE\u63A5\u8DF3\u8FC7',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: '\u8DF3\u8FC7',\n level: 'warning',\n attention: 'medium',\n buildDetails: (reason) => [reason ? `\u539F\u56E0=${reason}` : ''],\n },\n {\n key: 'ai_search_card_detect_attempt',\n method: 'aiSearchCardDetectAttempt',\n label: 'AI Search \u5361\u7247\u8BC6\u522B\u5C1D\u8BD5',\n group: 'AI Search',\n step: 'AI Search \u5361\u7247\u8BC6\u522B',\n status: '\u5C1D\u8BD5',\n level: 'info',\n attention: 'low',\n buildDetails: (attempt = 1, maxAttempts = 1, url = '') => [\n `attempt=${attempt}/${maxAttempts}`,\n url ? `url=${url}` : '',\n ],\n },\n {\n key: 'ai_search_card_detect_success',\n method: 'aiSearchCardDetectSuccess',\n label: 'AI Search \u5361\u7247\u8BC6\u522B\u6210\u529F',\n group: 'AI Search',\n step: 'AI Search \u5361\u7247\u8BC6\u522B',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'high',\n buildDetails: (cardType = '', attempts = 1, refreshCount = 0, url = '') => [\n cardType ? `cardType=${cardType}` : '',\n `attempts=${attempts}`,\n `refreshCount=${refreshCount}`,\n url ? `url=${url}` : '',\n ],\n },\n {\n key: 'ai_search_card_empty_result_success',\n method: 'aiSearchCardEmptyResultSuccess',\n label: 'AI Search \u7A7A\u7ED3\u679C\u6210\u529F',\n group: 'AI Search',\n step: 'AI Search \u7A7A\u7ED3\u679C',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'high',\n buildDetails: (contentLeftTpls = [], targetTpls = [], url = '', attempts = 0, refreshCount = 0) => [\n Array.isArray(contentLeftTpls) ? `contentLeftTpls=${normalizeSnippet(contentLeftTpls.join(','), 200)}` : '',\n Array.isArray(targetTpls) ? `targetTpls=${normalizeSnippet(targetTpls.join(','), 200)}` : '',\n `attempts=${attempts}`,\n `refreshCount=${refreshCount}`,\n url ? `url=${url}` : '',\n ],\n },\n {\n key: 'data_push_success',\n method: 'dataPushSuccess',\n label: '\u6570\u636E\u63A8\u9001\u6210\u529F',\n group: '\u6570\u636E\u63A8\u9001',\n step: '\u6570\u636E\u63A8\u9001',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'medium',\n buildDetails: (label) => [label ? `\u8BF4\u660E=${label}` : ''],\n },\n {\n key: 'data_push_fail',\n method: 'dataPushFail',\n label: '\u6570\u636E\u63A8\u9001\u5931\u8D25',\n group: '\u6570\u636E\u63A8\u9001',\n step: '\u6570\u636E\u63A8\u9001',\n status: '\u5931\u8D25',\n level: 'error',\n attention: 'high',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'popup_detected',\n method: 'popupDetected',\n label: '\u5F39\u7A97\u68C0\u6D4B',\n group: '\u5F39\u7A97',\n step: '\u5F39\u7A97\u5904\u7406',\n status: '\u68C0\u6D4B\u5230\u906E\u7F69',\n level: 'warning',\n attention: 'medium',\n buildDetails: (detail) => [detail ? `detail=${detail}` : ''],\n },\n {\n key: 'popup_close_attempt',\n method: 'popupCloseAttempt',\n label: '\u5F39\u7A97\u5173\u95ED\u5C1D\u8BD5',\n group: '\u5F39\u7A97',\n step: '\u5F39\u7A97\u5904\u7406',\n status: '\u5C1D\u8BD5\u5173\u95ED',\n level: 'info',\n attention: 'low',\n buildDetails: (detail) => [detail ? `detail=${detail}` : ''],\n },\n {\n key: 'popup_close_success',\n method: 'popupCloseSuccess',\n label: '\u5F39\u7A97\u5173\u95ED\u5B8C\u6210',\n group: '\u5F39\u7A97',\n step: '\u5F39\u7A97\u5904\u7406',\n status: '\u5173\u95ED\u5B8C\u6210',\n level: 'success',\n attention: 'medium',\n },\n {\n key: 'popup_close_fail',\n method: 'popupCloseFail',\n label: '\u5F39\u7A97\u5173\u95ED\u5931\u8D25',\n group: '\u5F39\u7A97',\n step: '\u5F39\u7A97\u5904\u7406',\n status: '\u5173\u95ED\u5931\u8D25',\n level: 'warning',\n attention: 'medium',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n];\n\nexport const LOG_TEMPLATES = LOG_DEFINITIONS.map((definition) => {\n const attention = definition.attention || 'medium';\n const attentionRank = ATTENTION_RANK[attention] || ATTENTION_RANK.medium;\n const defaultSelected = attentionRank >= DEFAULT_ATTENTION_RANK;\n return {\n key: definition.key,\n label: definition.label,\n group: definition.group,\n attention,\n patterns: buildDefinitionPatterns(definition),\n defaultSelected,\n };\n});\n\nconst buildStepLine = (step, status, details = []) => {\n const parts = [];\n const decoratedStep = step ? decorateLabel(step, STEP_EMOJIS) : '';\n const base = decoratedStep ? `${STEP_PREFIX} ${decoratedStep}` : STEP_PREFIX;\n parts.push(base.trim());\n if (status) parts.push(decorateLabel(status, STATUS_EMOJIS));\n const detailParts = details.filter(Boolean);\n if (detailParts.length > 0) {\n parts.push(...detailParts);\n }\n return parts.join(STEP_SEPARATOR);\n};\n\nconst createThrottle = () => {\n const lastMap = new Map();\n return (key, intervalMs, fn) => {\n const now = Date.now();\n const last = lastMap.get(key) || 0;\n if (now - last >= intervalMs) {\n lastMap.set(key, now);\n fn();\n }\n };\n};\n\nexport const createTemplateLogger = (baseLogger = createBaseLogger()) => {\n const throttle = createThrottle();\n\n const info = (line) => baseLogger.info(line);\n const success = (line) => baseLogger.success(line);\n const warning = (line) => baseLogger.warning(line);\n const error = (line) => baseLogger.error(line);\n const debug = (line) => baseLogger.debug(line);\n const start = (line) => baseLogger.start(line);\n\n const stepInfo = (step, status, details = []) => info(buildStepLine(step, status, details));\n const stepSuccess = (step, status, details = []) => success(buildStepLine(step, status, details));\n const stepWarn = (step, status, details = []) => warning(buildStepLine(step, status, details));\n const stepError = (step, status, details = []) => error(buildStepLine(step, status, details));\n const stepStart = (step, status, details = []) => start(buildStepLine(step, status, details));\n\n const stepHandlers = {\n info: stepInfo,\n success: stepSuccess,\n warning: stepWarn,\n error: stepError,\n start: stepStart,\n };\n\n const logFromDefinition = (definition, details = []) => {\n const handler = stepHandlers[definition.level] || stepInfo;\n const payload = [...details, buildLogTag(definition.key)];\n const emit = () => handler(definition.step, definition.status, payload);\n if (definition.throttleMs) {\n throttle(definition.throttleKey || definition.key, definition.throttleMs, emit);\n return;\n }\n emit();\n };\n\n const definitionMethods = {};\n LOG_DEFINITIONS.forEach((definition) => {\n if (!definition.method) return;\n definitionMethods[definition.method] = (...args) => {\n const details = definition.buildDetails ? definition.buildDetails(...args) : [];\n logFromDefinition(definition, details);\n };\n });\n\n return {\n step: (step, status, details, level = 'info') => {\n if (level === 'error') return stepError(step, status, details);\n if (level === 'warn' || level === 'warning') return stepWarn(step, status, details);\n if (level === 'start') return stepStart(step, status, details);\n if (level === 'success') return stepSuccess(step, status, details);\n return stepInfo(step, status, details);\n },\n info: (message) => info(message),\n success: (message) => success(message),\n warning: (message) => warning(message),\n warn: (message) => warning(message),\n error: (message) => error(message),\n debug: (message) => debug(message),\n start: (message) => start(message),\n ...definitionMethods,\n };\n};\n\nconst getDefaultBaseLogger = () => createBaseLogger('');\n\nexport const Logger = {\n setLogger: (logger) => setDefaultLogger(logger),\n info: (message) => getDefaultBaseLogger().info(message),\n success: (message) => getDefaultBaseLogger().success(message),\n warning: (message) => getDefaultBaseLogger().warning(message),\n warn: (message) => getDefaultBaseLogger().warning(message),\n error: (message) => getDefaultBaseLogger().error(message),\n debug: (message) => getDefaultBaseLogger().debug(message),\n start: (message) => getDefaultBaseLogger().start(message),\n useTemplate: (logger) => {\n if (logger) return createTemplateLogger(createBaseLogger('', logger));\n return createTemplateLogger();\n },\n};\n", "export const Display = {\n parseTokenDisplayName(value) {\n if (!value) {\n return { owner: '', envType: '', note: '' };\n }\n const parts = String(value).split(':');\n const owner = (parts[0] || '').trim();\n const envType = (parts[1] || '').trim();\n const note = parts.length > 2 ? parts.slice(2).join(':').trim() : '';\n return { owner, envType, note };\n },\n\n parseEnvDisplayName(value) {\n if (!value) {\n return { env: '', owner: '', envType: '', note: '' };\n }\n const parts = String(value).split(':');\n const env = (parts[0] || '').trim();\n const owner = (parts[1] || '').trim();\n const envType = (parts[2] || '').trim();\n const note = parts.length > 3 ? parts.slice(3).join(':').trim() : '';\n return { env, owner, envType, note };\n },\n\n buildTokenDisplayName({ owner, envType, note } = {}) {\n const trimmedOwner = owner?.trim() || '';\n const trimmedType = envType?.trim() || '';\n const trimmedNote = note?.trim() || '';\n const parts = [trimmedOwner, trimmedType];\n if (trimmedNote) {\n parts.push(trimmedNote);\n }\n return parts.filter(Boolean).join(':');\n },\n\n shortId(value, max = 8) {\n const clean = String(value || '').trim();\n if (!clean) return '';\n if (clean.length <= max) return clean;\n return clean.slice(0, max);\n },\n\n resolveTokenIdentity(displayName, tokenId) {\n const cleanName = String(displayName || '').trim();\n const cleanId = String(tokenId || '').trim();\n const short = this.shortId(cleanId, 8);\n const hasName = cleanName !== '' && cleanName !== cleanId;\n const primary = hasName ? cleanName : (short || '-');\n const secondary = hasName && short ? short : '';\n return { primary, secondary, fullId: cleanId, shortId: short };\n },\n\n resolveEnvIdentity(displayName, envId) {\n const parts = this.parseEnvDisplayName(displayName);\n const cleanId = String(envId || '').trim();\n const short = this.shortId(cleanId, 8);\n const hasName = parts.env !== '' && parts.env !== cleanId;\n const primary = hasName ? parts.env : (short || '-');\n const secondary = hasName && short ? short : '';\n return { primary, secondary, parts, fullId: cleanId, shortId: short };\n },\n};\n", "export const Code = {\n Success: 0,\n UnknownError: -1,\n NotLogin: 30000001,\n Chaptcha: 30000002,\n Timeout: 30000003,\n InitialTimeout: 30000004,\n OverallTimeout: 30000005,\n}\n\nexport const Status = {\n Success: 'SUCCESS',\n Failed: 'FAILED'\n}\n\nexport const PresetOfLiveViewKey = 'LIVE_VIEW_SCREENSHOT';\n\n\nconst createActorInfo = (info) => {\n const normalizeDomain = (value) => {\n if (!value) return '';\n return String(value).trim().replace(/^https?:\\/\\//, '').replace(/\\/.*$/, '');\n };\n\n const normalizePath = (value) => {\n if (!value) return '/';\n const raw = String(value).trim();\n if (!raw) return '/';\n return raw.startsWith('/') ? raw : `/${raw}`;\n };\n\n const normalizeShare = (value) => {\n const raw = value && typeof value === 'object' ? value : {};\n\n const modeRaw = String(raw.mode || 'dom').trim().toLowerCase();\n const mode = modeRaw === 'response' ? 'response' : 'dom';\n\n const prefix = String(raw.prefix || '').trim();\n\n const rawXurl = Array.isArray(raw.xurl)\n ? raw.xurl\n : [];\n\n const normalizeMatcherList = (input) => {\n if (Array.isArray(input)) {\n return input\n .map((item) => String(item || '').trim().replace(/\\.+$/, ''))\n .filter(Boolean);\n }\n\n const single = String(input || '').trim().replace(/\\.+$/, '');\n return single ? [single] : [];\n };\n\n const normalizeSegments = (input) => {\n if (Array.isArray(input)) {\n return input\n .map((item) => String(item || '').trim().replace(/\\.+$/, ''))\n .filter(Boolean);\n }\n\n const rawPath = String(input || '').trim();\n if (!rawPath) return [];\n\n return rawPath\n .split('.')\n .map((segment) => String(segment || '').trim().replace(/\\.+$/, ''))\n .filter(Boolean);\n };\n\n const xurl = [];\n\n const matcherList = normalizeMatcherList(rawXurl[0]);\n if (matcherList.length > 0) {\n xurl.push(matcherList);\n }\n\n const flatPath = [];\n const extraPaths = [];\n\n rawXurl.slice(1).forEach((item) => {\n if (Array.isArray(item)) {\n const segments = normalizeSegments(item);\n if (segments.length > 0) {\n extraPaths.push(segments);\n }\n return;\n }\n\n const segments = normalizeSegments(item);\n if (segments.length > 0) {\n flatPath.push(...segments);\n }\n });\n\n if (flatPath.length > 0) {\n xurl.push(flatPath);\n }\n\n if (extraPaths.length > 0) {\n xurl.push(...extraPaths);\n }\n\n return {\n mode,\n prefix,\n xurl,\n };\n };\n\n const buildLandingUrl = ({ protocol, domain, path }) => {\n const safeProtocol = String(protocol).trim();\n const safeDomain = normalizeDomain(domain);\n const safePath = normalizePath(path);\n return `${safeProtocol}://${safeDomain}${safePath}`;\n };\n\n const buildIcon = ({ key }) => {\n return `https://heartbitai.com/general/actors/${key}.png`;\n }\n\n\n const protocol = info.protocol || 'https';\n const domain = normalizeDomain(info.domain);\n const path = normalizePath(info.path);\n const share = normalizeShare(info.share);\n\n return {\n ...info,\n protocol,\n domain,\n path,\n share,\n get icon() {\n if (info.icon) return info.icon;\n return buildIcon(this);\n },\n get landingUrl() {\n return buildLandingUrl(this);\n },\n };\n};\n\nexport const ActorInfo = {\n qbot: createActorInfo({\n key: 'qbot',\n name: 'QQ\u6D4F\u89C8\u5668AI\u641C',\n domain: 'sogou.com',\n path: '/web',\n share: {\n mode: 'dom',\n prefix: '',\n xurl: [],\n },\n }),\n douyin: createActorInfo({\n key: 'douyin',\n name: '\u6296\u97F3AI\u641C',\n domain: 'so.douyin.com',\n path: '/',\n share: {\n mode: 'dom',\n prefix: '',\n xurl: [\n ],\n },\n }),\n lingguang: createActorInfo({\n key: 'lingguang',\n name: '\u7075\u5149',\n domain: 'www.lingguang.com',\n path: '/',\n share: {\n mode: 'response',\n prefix: 'https://www.lingguang.com/share/',\n xurl: [\n '/chat/shareChat.json',\n 'result',\n ],\n },\n }),\n doubao: createActorInfo({\n key: 'doubao',\n name: '\u8C46\u5305',\n domain: 'www.doubao.com',\n path: '/',\n share: {\n mode: 'response',\n prefix: 'https://www.doubao.com/thread/',\n xurl: [\n '/samantha/thread/share/save',\n 'data', 'share_id',\n ],\n },\n }),\n deepseek: createActorInfo({\n key: 'deepseek',\n name: 'DeepSeek',\n domain: 'chat.deepseek.com',\n path: '/',\n share: {\n mode: 'response',\n prefix: 'https://chat.deepseek.com/share/',\n xurl: [\n '/api/v0/share/create',\n 'data', 'biz_data', 'share_id',\n ],\n },\n }),\n erine: createActorInfo({\n key: 'erine',\n name: '\u6587\u5FC3\u4E00\u8A00',\n domain: 'yiyan.baidu.com',\n path: '/',\n share: {\n mode: 'response',\n prefix: 'https://yiyan.baidu.com/share/',\n xurl: [\n '/eb/share/key/gen',\n 'data', 'key',\n ],\n },\n }),\n wenxin: createActorInfo({\n key: 'wenxin',\n name: '\u6587\u5FC3\u52A9\u624B',\n domain: 'chat.baidu.com',\n path: '/',\n share: {\n mode: 'response',\n prefix: '',\n xurl: [\n '/aichat/api/shortURL',\n 'data', 'short_url',\n ],\n },\n }),\n baidu: createActorInfo({\n key: 'baidu',\n name: '\u767E\u5EA6AI\u641C',\n domain: 'www.baidu.com',\n path: '/s',\n share: {\n mode: 'response',\n prefix: '',\n xurl: [\n '/aichat/api/shortURL',\n 'data', 'short_url',\n ],\n },\n }),\n yuanbao: createActorInfo({\n key: 'yuanbao',\n name: '\u5143\u5B9D',\n domain: 'yuanbao.tencent.com',\n path: '/chat/',\n share: {\n mode: 'response',\n prefix: 'https://yb.tencent.com/s/',\n xurl: [\n '/api/conversations/v2/share', 'shareId',\n ],\n },\n }),\n kimi: createActorInfo({\n key: 'kimi',\n name: 'Kimi',\n domain: 'www.kimi.com',\n path: '/',\n share: {\n mode: 'response',\n prefix: 'https://www.kimi.com/share/',\n xurl: [\n '/kimi.gateway.chat.v1.ChatService/CreateChatShare', 'share', 'id'\n ],\n },\n }),\n qwen: createActorInfo({\n key: 'qwen',\n name: '\u901A\u4E49\u5343\u95EE',\n domain: 'www.qianwen.com',\n path: '/chat',\n share: {\n mode: 'response',\n prefix: 'https://www.qianwen.com/share/chat/',\n xurl: [\n '/api/v1/share/create', 'data', 'share_id'\n ],\n },\n }),\n}\n", "import picomatch from 'picomatch';\n\nconst normalizeByPassDomains = (domains) => {\n if (!Array.isArray(domains)) return [];\n return domains\n .map((item) => String(item || '').trim())\n .filter(Boolean);\n};\n\nconst normalizeHostname = (value = '') => String(value || '').trim().toLowerCase();\n\nconst buildByPassDomainRule = (rawPattern) => {\n const pattern = String(rawPattern || '').trim().toLowerCase();\n if (!pattern) return null;\n\n let matcher;\n try {\n matcher = picomatch(pattern, { nocase: true });\n } catch {\n return null;\n }\n\n return {\n pattern,\n test: (hostname) => matcher(String(hostname || '').toLowerCase()),\n };\n};\n\nconst buildByPassDomainRules = (domains = []) => {\n return normalizeByPassDomains(domains)\n .map((domain) => buildByPassDomainRule(domain))\n .filter(Boolean);\n};\n\nconst findMatchedByPassRule = (rules = [], requestUrl = '') => {\n let hostname = '';\n try {\n hostname = normalizeHostname(new URL(String(requestUrl || '')).hostname);\n } catch {\n return null;\n }\n\n for (const rule of rules) {\n if (rule && typeof rule.test === 'function' && rule.test(hostname)) {\n return {\n rule,\n hostname,\n };\n }\n }\n\n return {\n rule: null,\n hostname,\n };\n};\n\nconst isDomainCoveredByByPass = (domain = '', rules = []) => {\n const hostname = normalizeHostname(domain);\n if (!hostname) return false;\n\n for (const rule of rules || []) {\n if (!rule || typeof rule.test !== 'function') continue;\n if (rule.test(hostname)) return true;\n }\n\n return false;\n};\n\nconst resolveRouteByProxy = ({\n requestUrl = '',\n enableProxy = false,\n byPassRules = [],\n}) => {\n if (!enableProxy) {\n return { route: 'direct', matchedRule: null, hostname: '' };\n }\n\n const matched = findMatchedByPassRule(byPassRules, requestUrl);\n if (!matched) {\n return { route: 'proxy', matchedRule: null, hostname: '' };\n }\n\n if (matched.rule) {\n return { route: 'direct', matchedRule: matched.rule, hostname: matched.hostname };\n }\n\n return { route: 'proxy', matchedRule: null, hostname: matched.hostname };\n};\n\nexport const ByPass = {\n normalizeByPassDomains,\n normalizeHostname,\n buildByPassDomainRule,\n buildByPassDomainRules,\n findMatchedByPassRule,\n isDomainCoveredByByPass,\n resolveRouteByProxy,\n};\n", "const BROWSER_PROFILE_SCHEMA_VERSION = 1;\n\nlet rememberedRuntimeState = null;\n\nconst isPlainObject = (value) => value && typeof value === 'object' && !Array.isArray(value);\n\n// \u8FD0\u884C\u6001\u5FEB\u7167\u5728 visitor / toolkit / \u540E\u7AEF\u4E4B\u95F4\u6765\u56DE\u4F20\u9012\uFF0C\n// \u6240\u4EE5\u6240\u6709\u5165\u53E3\u90FD\u5148\u8D70 deepClone\uFF0C\u907F\u514D\u5171\u4EAB\u5F15\u7528\u5F15\u53D1\u201C\u8FB9\u8DD1\u8FB9\u6539\u201D\u7684\u9690\u5F0F\u526F\u4F5C\u7528\u3002\nconst deepClone = (value) => {\n if (value == null) return value;\n try {\n return JSON.parse(JSON.stringify(value));\n } catch {\n return value;\n\t}\n};\n\n// \u5C1D\u8BD5\u628A runtime / browser_profile \u4E4B\u7C7B\u7684 JSON \u5B57\u6BB5\u89E3\u6790\u6210\u5BF9\u8C61\u3002\nconst tryParseJSON = (value) => {\n if (value == null) return null;\n if (typeof value === 'object') return value;\n const raw = String(value || '').trim();\n if (!raw) return null;\n try {\n return JSON.parse(raw);\n } catch {\n return null;\n\t}\n};\n\n// local/session/auth \u7684\u89C4\u8303\u5316\u76EE\u6807\u53EA\u6709\u4E00\u4E2A\uFF1A\u8FC7\u6EE4\u7A7A\u503C\uFF0C\u7EDF\u4E00\u8F6C\u6210\u5B57\u7B26\u4E32\u3002\nconst normalizeLocalStorage = (value) => {\n const source = value && typeof value === 'object' && !Array.isArray(value) ? value : {};\n return Object.entries(source).reduce((acc, [key, item]) => {\n const safeKey = String(key || '').trim();\n const safeValue = String(item ?? '').trim();\n if (!safeKey || !safeValue || safeValue === '<nil>') return acc;\n acc[safeKey] = safeValue;\n return acc;\n }, {});\n};\n\nconst normalizeSessionStorage = (value) => {\n const source = value && typeof value === 'object' && !Array.isArray(value) ? value : {};\n return Object.entries(source).reduce((acc, [key, item]) => {\n const safeKey = String(key || '').trim();\n const safeValue = String(item ?? '').trim();\n if (!safeKey || !safeValue || safeValue === '<nil>') return acc;\n acc[safeKey] = safeValue;\n return acc;\n }, {});\n};\n\nconst normalizeAuth = (value) => {\n const source = value && typeof value === 'object' && !Array.isArray(value) ? value : {};\n return Object.entries(source).reduce((acc, [key, item]) => {\n const safeKey = String(key || '').trim();\n const safeValue = String(item ?? '').trim();\n if (!safeKey || !safeValue || safeValue === '<nil>') return acc;\n acc[safeKey] = safeValue;\n return acc;\n }, {});\n};\n\nconst normalizeCookieSameSite = (value) => {\n const raw = String(value || '').trim().toLowerCase();\n if (!raw) return '';\n\n switch (raw) {\n case 'strict':\n return 'Strict';\n case 'lax':\n return 'Lax';\n case 'none':\n case 'no_restriction':\n return 'None';\n case 'unspecified':\n default:\n return '';\n }\n};\n\nconst normalizeCookieExpires = (raw = {}) => {\n const source = raw && typeof raw === 'object' ? raw : {};\n const session = Boolean(source.session);\n if (session) return null;\n\n const expiresCandidate = Number(source.expires);\n if (Number.isFinite(expiresCandidate) && expiresCandidate > 0) {\n return expiresCandidate;\n }\n\n const expirationDateCandidate = Number(source.expirationDate);\n if (Number.isFinite(expirationDateCandidate) && expirationDateCandidate > 0) {\n return expirationDateCandidate;\n }\n\n return null;\n};\n\nconst normalizeCookies = (value) => {\n if (!Array.isArray(value)) return [];\n return value\n .map((item) => {\n const raw = item && typeof item === 'object' ? item : {};\n const name = String(raw.name || '').trim();\n const cookieValue = String(raw.value ?? '').trim();\n if (!name || !cookieValue || cookieValue === '<nil>') return null;\n const domain = String(raw.domain || '').trim();\n const url = normalizeHttpUrl(raw.url);\n const path = String(raw.path || '').trim() || '/';\n const sameSite = normalizeCookieSameSite(raw.sameSite);\n const expires = normalizeCookieExpires(raw);\n const secure = Boolean(raw.secure);\n const httpOnly = Boolean(raw.httpOnly);\n const partitionKey = typeof raw.partitionKey === 'string' ? String(raw.partitionKey).trim() : '';\n\n // \u7EDF\u4E00\u8F93\u51FA Playwright \u53EF\u63A5\u53D7\u7684 Cookie \u7ED3\u6784\uFF0C\u907F\u514D\u628A Chrome \u6269\u5C55\u4FA7\u5B57\u6BB5\u539F\u6837\u900F\u4F20\u8FC7\u53BB\u3002\n const normalized = {\n name,\n value: cookieValue,\n path,\n ...(domain ? { domain } : {}),\n ...(!domain && url ? { url } : {}),\n ...(sameSite ? { sameSite } : {}),\n ...(secure ? { secure: true } : {}),\n ...(httpOnly ? { httpOnly: true } : {}),\n ...(expires !== null ? { expires } : {}),\n ...(partitionKey ? { partitionKey } : {}),\n };\n\n if (!normalized.domain && !normalized.url) {\n return null;\n }\n\n return {\n ...normalized,\n };\n })\n .filter(Boolean);\n};\n\nconst buildCookieMap = (cookies) => cookies.reduce((acc, item) => {\n\tacc[item.name] = item.value;\n\treturn acc;\n}, {});\n\n// \u7EDF\u4E00\u628A\u539F\u59CB URL \u5FEB\u7167\u8FC7\u6EE4\u6210 http/https\uFF0C\u907F\u514D browser/runtime \u4E24\u7AEF\u5404\u81EA\u505A\u4E00\u5957\u5224\u65AD\u3002\nconst normalizeHttpUrl = (value) => {\n const raw = String(value || '').trim();\n if (!raw) return '';\n try {\n const parsed = new URL(raw);\n if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') return '';\n parsed.hash = '';\n return parsed.toString();\n } catch {\n return '';\n }\n};\n\nconst uniqueStrings = (value) => {\n const list = Array.isArray(value) ? value : [];\n const seen = new Set();\n const result = [];\n list.forEach((item) => {\n const normalized = String(item || '').trim();\n if (!normalized || seen.has(normalized)) return;\n seen.add(normalized);\n result.push(normalized);\n });\n return result;\n};\n\nconst normalizeHttpUrlList = (value) => uniqueStrings(\n (Array.isArray(value) ? value : [value])\n .map((item) => normalizeHttpUrl(item))\n .filter(Boolean),\n);\n\nconst normalizeCookieDomain = (value) => String(value || '').trim().replace(/^\\./, '').toLowerCase();\n\nconst normalizeCookiePath = (value) => {\n const raw = String(value || '').trim();\n if (!raw) return '/';\n return raw.startsWith('/') ? raw : `/${raw}`;\n};\n\nconst doesCookieMatchUrl = (cookie, url) => {\n if (!cookie || !url) return false;\n try {\n const parsed = new URL(url);\n const host = String(parsed.hostname || '').trim().toLowerCase();\n const pathname = String(parsed.pathname || '/').trim() || '/';\n const cookieDomain = normalizeCookieDomain(cookie.domain);\n const cookiePath = normalizeCookiePath(cookie.path);\n if (!host || !cookieDomain) return false;\n const domainMatched = host === cookieDomain || host.endsWith(`.${cookieDomain}`);\n if (!domainMatched) return false;\n if (cookie.secure && parsed.protocol !== 'https:') return false;\n return pathname.startsWith(cookiePath);\n } catch {\n return false;\n }\n};\n\nconst normalizeRawSnapshot = (value = {}) => {\n const source = isPlainObject(value) ? value : {};\n const pageUrl = normalizeHttpUrl(source.page_url ?? source.pageUrl);\n const frameUrls = normalizeHttpUrlList(source.frame_urls ?? source.frameUrls);\n const resourceUrls = normalizeHttpUrlList(source.resource_urls ?? source.resourceUrls);\n const browserProfileObservedSource =\n source.browser_profile_observed\n ?? source.browserProfileObserved\n ?? source.browser_profile?.observed\n ?? source.browserProfile?.observed\n ?? source.browserProfile;\n\n return {\n page_url: pageUrl,\n frame_urls: frameUrls,\n resource_urls: resourceUrls,\n cookies: Array.isArray(source.cookies) ? deepClone(source.cookies) : [],\n local_storage: normalizeLocalStorage(source.local_storage ?? source.localStorage),\n session_storage: normalizeSessionStorage(source.session_storage ?? source.sessionStorage),\n browser_profile_observed: normalizeObservedBrowserProfile(browserProfileObservedSource),\n auth: normalizeAuth(source.auth),\n };\n};\n\nconst collectCookieUrlsFromSnapshot = (snapshot = {}) => {\n const normalized = normalizeRawSnapshot(snapshot);\n return uniqueStrings([\n normalized.page_url,\n ...normalized.frame_urls,\n ...normalized.resource_urls,\n ].filter(Boolean));\n};\n\nconst filterCookiesBySnapshot = (cookies = [], snapshot = {}) => {\n const normalizedCookies = normalizeCookies(cookies);\n const cookieUrls = collectCookieUrlsFromSnapshot(snapshot);\n if (cookieUrls.length === 0) {\n return normalizedCookies;\n }\n return normalizedCookies.filter((cookie) => cookieUrls.some((url) => doesCookieMatchUrl(cookie, url)));\n};\n\nconst buildEnvPayloadFromSnapshot = (snapshot = {}, options = {}) => {\n const normalized = normalizeRawSnapshot(snapshot);\n const cookies = filterCookiesBySnapshot(snapshot?.cookies || normalized.cookies, normalized);\n const localStorage = normalized.local_storage;\n const sessionStorage = normalized.session_storage;\n const auth = normalizeAuth(options.auth ?? normalized.auth);\n const browserProfileCore = normalizeBrowserProfileCore(\n options.browserProfileCore\n ?? snapshot?.browser_profile?.core\n ?? snapshot?.browserProfile?.core,\n );\n const browserProfile = buildBrowserProfilePayload(browserProfileCore, normalized.browser_profile_observed);\n\n const payload = {\n ...(cookies.length > 0 ? { cookies } : {}),\n ...(Object.keys(localStorage).length > 0 ? { local_storage: localStorage } : {}),\n ...(Object.keys(sessionStorage).length > 0 ? { session_storage: sessionStorage } : {}),\n ...(Object.keys(auth).length > 0 ? { auth } : {}),\n ...(Object.keys(browserProfile).length > 0 ? { browser_profile: browserProfile } : {}),\n };\n return Object.keys(payload).length > 0 ? payload : null;\n};\n\nconst captureRawSnapshotFromPage = async (page) => {\n const frameUrls = typeof page?.frames === 'function'\n ? page.frames().map((frame) => {\n try {\n return frame.url();\n } catch {\n return '';\n }\n })\n : [];\n\n const snapshot = await page.evaluate(() => {\n const localStorage = {};\n const sessionStorage = {};\n const resourceUrls = [];\n const frameUrls = [];\n\n try {\n for (let i = 0; i < window.localStorage.length; i += 1) {\n const key = window.localStorage.key(i);\n if (!key) continue;\n const value = window.localStorage.getItem(key);\n if (value !== null) localStorage[key] = value;\n }\n } catch {\n // ignore\n }\n\n try {\n for (let i = 0; i < window.sessionStorage.length; i += 1) {\n const key = window.sessionStorage.key(i);\n if (!key) continue;\n const value = window.sessionStorage.getItem(key);\n if (value !== null) sessionStorage[key] = value;\n }\n } catch {\n // ignore\n }\n\n try {\n const perfEntries = performance.getEntriesByType('resource') || [];\n perfEntries.forEach((entry) => {\n const name = String(entry?.name || '').trim();\n if (name) resourceUrls.push(name);\n });\n } catch {\n // ignore\n }\n\n try {\n document.querySelectorAll('iframe,frame').forEach((node) => {\n const src = String(node?.src || '').trim();\n if (src) frameUrls.push(src);\n });\n } catch {\n // ignore\n }\n\n const nav = window.navigator || {};\n const screen = window.screen || {};\n const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone || '';\n\n return {\n page_url: window.location.href || '',\n frame_urls: frameUrls,\n resource_urls: resourceUrls,\n local_storage: localStorage,\n session_storage: sessionStorage,\n browser_profile_observed: {\n user_agent: nav.userAgent || '',\n platform: nav.platform || '',\n language: nav.language || '',\n languages: Array.isArray(nav.languages) ? nav.languages : [],\n hardware_concurrency: Number(nav.hardwareConcurrency || 0),\n device_memory: Number(nav.deviceMemory || 0),\n timezone,\n viewport: {\n width: Number(window.innerWidth || 0),\n height: Number(window.innerHeight || 0),\n },\n screen: {\n width: Number(screen.width || 0),\n height: Number(screen.height || 0),\n avail_width: Number(screen.availWidth || 0),\n avail_height: Number(screen.availHeight || 0),\n color_depth: Number(screen.colorDepth || 0),\n pixel_depth: Number(screen.pixelDepth || 0),\n },\n },\n };\n });\n\n return normalizeRawSnapshot({\n ...snapshot,\n frame_urls: [...frameUrls, ...(snapshot?.frame_urls || [])],\n });\n};\n\n// observed \u53EA\u4FDD\u5B58\u201C\u8FD0\u884C\u540E\u770B\u5230\u7684\u6D4F\u89C8\u5668\u8868\u73B0\u201D\uFF0C\u5B83\u4E0D\u662F\u542F\u52A8\u771F\u6E90\u3002\nconst normalizeObservedBrowserProfile = (value) => {\n const source = isPlainObject(value) ? value : {};\n const profile = {};\n\n const stringFields = {\n user_agent: source.user_agent,\n platform: source.platform,\n language: source.language,\n timezone: source.timezone,\n };\n Object.entries(stringFields).forEach(([key, item]) => {\n const safeValue = String(item || '').trim();\n if (safeValue) {\n profile[key] = safeValue;\n }\n });\n\n if (Array.isArray(source.languages)) {\n const languages = source.languages\n .map((item) => String(item || '').trim())\n .filter(Boolean);\n if (languages.length > 0) {\n profile.languages = languages;\n }\n }\n\n const numericFields = {\n hardware_concurrency: Number(source.hardware_concurrency || 0),\n device_memory: Number(source.device_memory || 0),\n };\n Object.entries(numericFields).forEach(([key, item]) => {\n if (Number.isFinite(item) && item > 0) {\n profile[key] = item;\n }\n });\n\n if (isPlainObject(source.viewport)) {\n const width = Number(source.viewport.width || 0);\n const height = Number(source.viewport.height || 0);\n if (width > 0 && height > 0) {\n profile.viewport = { width, height };\n }\n }\n\n if (isPlainObject(source.screen)) {\n const screenProfile = {};\n const screenFields = {\n width: Number(source.screen.width || 0),\n height: Number(source.screen.height || 0),\n avail_width: Number(source.screen.avail_width || 0),\n avail_height: Number(source.screen.avail_height || 0),\n color_depth: Number(source.screen.color_depth || 0),\n pixel_depth: Number(source.screen.pixel_depth || 0),\n };\n Object.entries(screenFields).forEach(([key, item]) => {\n if (Number.isFinite(item) && item > 0) {\n screenProfile[key] = item;\n }\n });\n if (Object.keys(screenProfile).length > 0) {\n profile.screen = screenProfile;\n }\n }\n\n\treturn profile;\n};\n\n// core \u662F\u6D4F\u89C8\u5668\u73AF\u5883\u7684\u552F\u4E00\u771F\u6E90\uFF1A\n// fingerprint / timezone_id / locale / browser_major_version \u90FD\u5728\u8FD9\u91CC\u3002\nconst normalizeBrowserProfileCore = (value) => {\n const source = isPlainObject(value) ? value : {};\n const profile = {};\n\n if (isPlainObject(source.fingerprint) && Object.keys(source.fingerprint).length > 0) {\n profile.fingerprint = deepClone(source.fingerprint);\n }\n\n const timezoneId = String(source.timezone_id || '').trim();\n if (timezoneId) {\n profile.timezone_id = timezoneId;\n }\n\n const locale = String(source.locale || '').trim();\n if (locale) {\n profile.locale = locale;\n }\n\n const browserMajorVersion = Number(source.browser_major_version || 0);\n if (Number.isFinite(browserMajorVersion) && browserMajorVersion > 0) {\n profile.browser_major_version = browserMajorVersion;\n }\n\n const schemaVersion = Number(source.schema_version || 0);\n if (Number.isFinite(schemaVersion) && schemaVersion > 0) {\n profile.schema_version = schemaVersion;\n } else if (Object.keys(profile).length > 0) {\n profile.schema_version = BROWSER_PROFILE_SCHEMA_VERSION;\n }\n\n\treturn profile;\n};\n\n// buildBrowserProfilePayload \u4FDD\u8BC1 browser_profile \u6C38\u8FDC\u53EA\u66B4\u9732 core / observed \u4E24\u5C42\u7ED3\u6784\u3002\nconst buildBrowserProfilePayload = (core = {}, observed = {}) => {\n const payload = {};\n if (isPlainObject(core) && Object.keys(core).length > 0) {\n payload.core = core;\n }\n if (isPlainObject(observed) && Object.keys(observed).length > 0) {\n payload.observed = observed;\n }\n return payload;\n};\n\nconst mergePlainObject = (target = {}, source = {}) => {\n const next = isPlainObject(target) ? deepClone(target) : {};\n if (!isPlainObject(source)) return next;\n\n Object.entries(source).forEach(([key, value]) => {\n if (!key) return;\n if (isPlainObject(value) && isPlainObject(next[key])) {\n next[key] = mergePlainObject(next[key], value);\n return;\n }\n next[key] = deepClone(value);\n });\n\n\treturn next;\n};\n\n// mergeBrowserProfilePayload \u7684\u6838\u5FC3\u89C4\u5219\uFF1A\n// 1. core \u53EA\u5728\u5F53\u524D\u4E3A\u7A7A\uFF0C\u6216\u6D4F\u89C8\u5668\u5927\u7248\u672C\u51B2\u7A81\u65F6\u624D\u66FF\u6362\uFF1B\n// 2. observed \u6BCF\u6B21\u90FD\u5141\u8BB8\u8986\u76D6\u66F4\u65B0\u3002\nconst mergeBrowserProfilePayload = (target = {}, source = {}) => {\n const current = isPlainObject(target) ? target : {};\n const incoming = isPlainObject(source) ? source : {};\n const currentCore = normalizeBrowserProfileCore(current.core);\n const incomingCore = normalizeBrowserProfileCore(incoming.core);\n const currentObserved = normalizeObservedBrowserProfile(current.observed);\n const incomingObserved = normalizeObservedBrowserProfile(incoming.observed);\n\n let mergedCore = currentCore;\n if (Object.keys(mergedCore).length === 0 && Object.keys(incomingCore).length > 0) {\n mergedCore = incomingCore;\n } else if (Object.keys(incomingCore).length > 0) {\n const currentVersion = Number(currentCore.browser_major_version || 0);\n const incomingVersion = Number(incomingCore.browser_major_version || 0);\n if (currentVersion > 0 && incomingVersion > 0 && currentVersion !== incomingVersion) {\n mergedCore = incomingCore;\n }\n }\n\n const mergedObserved = mergePlainObject(currentObserved, incomingObserved);\n\treturn buildBrowserProfilePayload(mergedCore, mergedObserved);\n};\n\n// mergeEnvPatchObjects \u662F visitor \u6210\u529F/\u5931\u8D25\u81EA\u52A8\u56DE\u5199 env_patch \u7684\u5408\u5E76\u5165\u53E3\u3002\nconst mergeEnvPatchObjects = (...patches) => {\n const merged = {};\n\n patches.forEach((patch) => {\n if (!isPlainObject(patch)) return;\n Object.entries(patch).forEach(([key, value]) => {\n if (!key) return;\n if (key === 'browser_profile') {\n const browserProfile = mergeBrowserProfilePayload(merged.browser_profile, value);\n if (Object.keys(browserProfile).length > 0) {\n merged.browser_profile = browserProfile;\n }\n return;\n }\n if (isPlainObject(value) && isPlainObject(merged[key])) {\n merged[key] = mergePlainObject(merged[key], value);\n return;\n }\n merged[key] = deepClone(value);\n });\n });\n\n return Object.keys(merged).length > 0 ? merged : null;\n};\n\nconst normalizeBrowserProfile = (value) => {\n const source = isPlainObject(value) ? value : {};\n const coreSource = isPlainObject(source.core) ? source.core : {};\n const observedSource = isPlainObject(source.observed) ? source.observed : {};\n const core = normalizeBrowserProfileCore(coreSource);\n const observed = normalizeObservedBrowserProfile(observedSource);\n return {\n core,\n observed,\n payload: buildBrowserProfilePayload(core, observed),\n };\n};\n\nconst rememberRuntimeState = (state) => {\n rememberedRuntimeState = deepClone(state);\n return rememberedRuntimeState;\n};\n\nconst normalizeRuntimeState = (source = {}, actor = '') => {\n if (\n source &&\n typeof source === 'object' &&\n source.runtime &&\n typeof source.runtime === 'object' &&\n !Array.isArray(source.runtime) &&\n Object.prototype.hasOwnProperty.call(source, 'browserProfileCore')\n ) {\n return source;\n }\n return RuntimeEnv.parseInput(source, actor);\n};\n\nexport const RuntimeEnv = {\n tryParseJSON,\n normalizeCookies,\n normalizeLocalStorage,\n normalizeSessionStorage,\n normalizeAuth,\n normalizeBrowserProfileCore,\n normalizeObservedBrowserProfile,\n normalizeSnapshot(snapshot = {}) {\n return normalizeRawSnapshot(snapshot);\n },\n collectCookieUrls(snapshot = {}) {\n return collectCookieUrlsFromSnapshot(snapshot);\n },\n buildRuntimeEnvFromSnapshot(snapshot = {}, options = {}) {\n return buildEnvPayloadFromSnapshot(snapshot, options);\n },\n buildEnvPatchFromSnapshot(snapshot = {}, options = {}) {\n return buildEnvPayloadFromSnapshot(snapshot, options);\n },\n mergeEnvPatches(...patches) {\n return mergeEnvPatchObjects(...patches);\n },\n\n // parseInput \u628A Actor \u8F93\u5165\u91CC\u7684 runtime \u5B57\u6BB5\u6807\u51C6\u5316\u6210 toolkit \u5185\u90E8\u7EDF\u4E00\u7ED3\u6784\u3002\n // \u540E\u7EED visitor \u53EA\u548C\u8FD9\u4E2A state \u4EA4\u4E92\uFF0C\u4E0D\u518D\u81EA\u5DF1\u62FC token/cookie \u903B\u8F91\u3002\n parseInput(input = {}, actor = '') {\n const runtime = tryParseJSON(input?.runtime) || {};\n const resolvedActor = String(actor || input?.actor || '').trim();\n const cookies = normalizeCookies(runtime?.cookies);\n const cookieMap = buildCookieMap(cookies);\n const localStorage = normalizeLocalStorage(runtime?.local_storage);\n const sessionStorage = normalizeSessionStorage(runtime?.session_storage);\n const auth = normalizeAuth(runtime?.auth);\n const browserProfile = normalizeBrowserProfile(runtime?.browser_profile);\n const envId = String(input?.env_id || '').trim();\n\n const normalizedRuntime = {\n ...runtime,\n ...(cookies.length > 0 ? { cookies } : {}),\n ...(Object.keys(localStorage).length > 0 ? { local_storage: localStorage } : {}),\n ...(Object.keys(sessionStorage).length > 0 ? { session_storage: sessionStorage } : {}),\n ...(Object.keys(auth).length > 0 ? { auth } : {}),\n };\n if (Object.keys(browserProfile.payload).length > 0) {\n normalizedRuntime.browser_profile = browserProfile.payload;\n } else {\n delete normalizedRuntime.browser_profile;\n }\n\n const state = {\n actor: resolvedActor,\n runtime: normalizedRuntime,\n envId,\n auth,\n cookies,\n cookieMap,\n localStorage,\n sessionStorage,\n browserProfile: browserProfile.payload,\n browserProfileCore: browserProfile.core,\n browserProfileObserved: browserProfile.observed,\n };\n rememberRuntimeState(state);\n return state;\n },\n\n // buildEnvPatch \u53EA\u6784\u9020\u5141\u8BB8\u56DE\u5199\u5230\u540E\u7AEF env \u7684\u5B57\u6BB5\u96C6\u5408\u3002\n buildEnvPatch(source = {}, actor = '') {\n const state = normalizeRuntimeState(source, actor);\n const browserProfile = buildBrowserProfilePayload(state.browserProfileCore, state.browserProfileObserved);\n const envPatch = {\n ...(Object.keys(state.auth || {}).length > 0 ? { auth: state.auth } : {}),\n ...(Array.isArray(state.cookies) && state.cookies.length > 0 ? { cookies: state.cookies } : {}),\n ...(Object.keys(state.localStorage || {}).length > 0 ? { local_storage: state.localStorage } : {}),\n ...(Object.keys(state.sessionStorage || {}).length > 0 ? { session_storage: state.sessionStorage } : {}),\n ...(Object.keys(browserProfile).length > 0 ? { browser_profile: browserProfile } : {}),\n };\n return Object.keys(envPatch).length > 0 ? envPatch : null;\n },\n\n // hasLoginState \u7528\u6765\u533A\u5206\u201C\u5FC5\u987B\u9274\u6743\u7684\u5E73\u53F0\u201D\u548C\u201C\u53EF\u533F\u540D\u8FD0\u884C\u7684\u5E73\u53F0\u201D\u3002\n hasLoginState(source = {}, actor = '') {\n const state = normalizeRuntimeState(source, actor);\n return (\n (Array.isArray(state.cookies) && state.cookies.length > 0) ||\n Object.keys(state.localStorage || {}).length > 0 ||\n Object.keys(state.sessionStorage || {}).length > 0 ||\n Object.keys(state.auth || {}).length > 0\n );\n },\n\n getAuthValue(source = {}, key = '', actor = '') {\n const state = normalizeRuntimeState(source, actor);\n const safeKey = String(key || '').trim();\n if (!safeKey) return '';\n return String(state.auth?.[safeKey] ?? '').trim();\n },\n\n rememberState(source = {}) {\n const state = normalizeRuntimeState(source);\n rememberRuntimeState(state);\n return RuntimeEnv.peekRememberedState();\n },\n\n peekRememberedState() {\n return rememberedRuntimeState ? deepClone(rememberedRuntimeState) : null;\n },\n\n getBrowserProfileCore(source = {}, actor = '') {\n const state = normalizeRuntimeState(source, actor);\n return deepClone(state.browserProfileCore || {});\n },\n\n setBrowserProfileCore(source = {}, core = {}, actor = '') {\n const state = normalizeRuntimeState(source, actor);\n const normalizedCore = normalizeBrowserProfileCore(core);\n state.browserProfileCore = normalizedCore;\n state.browserProfile = buildBrowserProfilePayload(normalizedCore, state.browserProfileObserved);\n if (Object.keys(state.browserProfile).length > 0) {\n state.runtime.browser_profile = state.browserProfile;\n } else {\n delete state.runtime.browser_profile;\n }\n rememberRuntimeState(state);\n return state;\n },\n\n // applyToPage \u53EA\u8D1F\u8D23\u628A\u767B\u5F55\u6001\u76F8\u5173\u5B57\u6BB5\u6CE8\u5165\u9875\u9762\uFF1A\n // cookies / localStorage / sessionStorage\u3002\n // \u6307\u7EB9\u3001\u65F6\u533A\u3001UA\u3001viewport \u7684\u56DE\u653E\u53D1\u751F\u5728 launch.js \u542F\u52A8\u9636\u6BB5\uFF0C\u4E0D\u5728\u8FD9\u91CC\u505A\u3002\n async applyToPage(page, source = {}, options = {}) {\n if (!page) return;\n const state = normalizeRuntimeState(source, options?.actor || '');\n const localStorage = state.localStorage || {};\n const sessionStorage = state.sessionStorage || {};\n const cookies = (state.cookies || [])\n .map((cookie) => {\n const normalized = { ...cookie };\n if (!normalized.path) {\n normalized.path = '/';\n }\n if (!normalized.domain && !normalized.url) {\n return null;\n }\n return normalized;\n })\n .filter(Boolean);\n\n if (cookies.length > 0) {\n await page.context().addCookies(cookies);\n }\n if (Object.keys(localStorage).length > 0) {\n await page.addInitScript((payload) => {\n try {\n Object.entries(payload || {}).forEach(([key, value]) => {\n if (!key) return;\n window.localStorage.setItem(key, String(value ?? ''));\n });\n } catch (error) {\n // no-op\n }\n }, localStorage);\n }\n if (Object.keys(sessionStorage).length > 0) {\n await page.addInitScript((payload) => {\n try {\n Object.entries(payload || {}).forEach(([key, value]) => {\n if (!key) return;\n window.sessionStorage.setItem(key, String(value ?? ''));\n });\n } catch (error) {\n // no-op\n }\n }, sessionStorage);\n }\n },\n\n // captureEnvPatch \u5728\u4EFB\u52A1\u7ED3\u675F\u65F6\u91C7\u96C6\u6700\u65B0\u73AF\u5883\u5FEB\u7167\uFF0C\u7528\u4E8E pushSuccess / pushFailed \u81EA\u52A8\u56DE\u5199\u3002\n async captureEnvPatch(page, source = {}, options = {}) {\n const state = normalizeRuntimeState(source, options?.actor || '');\n const baseline = RuntimeEnv.buildEnvPatch(state) || {};\n if (!page || typeof page.evaluate !== 'function' || typeof page.context !== 'function') {\n return Object.keys(baseline).length > 0 ? baseline : null;\n }\n\n try {\n const rawSnapshot = await captureRawSnapshotFromPage(page);\n const cookieUrls = collectCookieUrlsFromSnapshot(rawSnapshot);\n let cookies = [];\n try {\n cookies = cookieUrls.length > 0\n ? await page.context().cookies(cookieUrls)\n : await page.context().cookies();\n } catch {\n cookies = [];\n }\n const capturedPatch = RuntimeEnv.buildEnvPatchFromSnapshot(\n {\n ...rawSnapshot,\n cookies,\n },\n {\n auth: state.auth,\n browserProfileCore: state.browserProfileCore,\n },\n );\n return RuntimeEnv.mergeEnvPatches(baseline, capturedPatch);\n } catch {\n // ignore\n }\n return Object.keys(baseline).length > 0 ? baseline : null;\n },\n};\n", "import { Logger, LOG_TEMPLATES, stripAnsi } from '../src/logger.js';\nimport { Display } from '../src/display.js';\nimport * as Constants from '../src/constants.js';\nimport { ByPass } from '../src/proxy-bypass.js';\nimport { RuntimeEnv } from '../src/runtime-env.js';\n\nexport const usePlaywrightToolKit = () => {\n return {\n Logger,\n Display,\n ByPass,\n Constants,\n RuntimeEnv,\n $Internals: {\n LOG_TEMPLATES,\n stripAnsi,\n },\n };\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["'use strict';\n\nconst WIN_SLASH = '\\\\\\\\/';\nconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\n/**\n * Posix glob regex\n */\n\nconst DOT_LITERAL = '\\\\.';\nconst PLUS_LITERAL = '\\\\+';\nconst QMARK_LITERAL = '\\\\?';\nconst SLASH_LITERAL = '\\\\/';\nconst ONE_CHAR = '(?=.)';\nconst QMARK = '[^/]';\nconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\nconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\nconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\nconst NO_DOT = `(?!${DOT_LITERAL})`;\nconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\nconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\nconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\nconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\nconst STAR = `${QMARK}*?`;\nconst SEP = '/';\n\nconst POSIX_CHARS = {\n DOT_LITERAL,\n PLUS_LITERAL,\n QMARK_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n QMARK,\n END_ANCHOR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR,\n SEP\n};\n\n/**\n * Windows glob regex\n */\n\nconst WINDOWS_CHARS = {\n ...POSIX_CHARS,\n\n SLASH_LITERAL: `[${WIN_SLASH}]`,\n QMARK: WIN_NO_SLASH,\n STAR: `${WIN_NO_SLASH}*?`,\n DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n NO_DOT: `(?!${DOT_LITERAL})`,\n NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n END_ANCHOR: `(?:[${WIN_SLASH}]|$)`,\n SEP: '\\\\'\n};\n\n/**\n * POSIX Bracket Regex\n */\n\nconst POSIX_REGEX_SOURCE = {\n alnum: 'a-zA-Z0-9',\n alpha: 'a-zA-Z',\n ascii: '\\\\x00-\\\\x7F',\n blank: ' \\\\t',\n cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n digit: '0-9',\n graph: '\\\\x21-\\\\x7E',\n lower: 'a-z',\n print: '\\\\x20-\\\\x7E ',\n punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n upper: 'A-Z',\n word: 'A-Za-z0-9_',\n xdigit: 'A-Fa-f0-9'\n};\n\nmodule.exports = {\n MAX_LENGTH: 1024 * 64,\n POSIX_REGEX_SOURCE,\n\n // regular expressions\n REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n // Replace globs with equivalent patterns to reduce parsing time.\n REPLACEMENTS: {\n __proto__: null,\n '***': '*',\n '**/**': '**',\n '**/**/**': '**'\n },\n\n // Digits\n CHAR_0: 48, /* 0 */\n CHAR_9: 57, /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 65, /* A */\n CHAR_LOWERCASE_A: 97, /* a */\n CHAR_UPPERCASE_Z: 90, /* Z */\n CHAR_LOWERCASE_Z: 122, /* z */\n\n CHAR_LEFT_PARENTHESES: 40, /* ( */\n CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n CHAR_ASTERISK: 42, /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: 38, /* & */\n CHAR_AT: 64, /* @ */\n CHAR_BACKWARD_SLASH: 92, /* \\ */\n CHAR_CARRIAGE_RETURN: 13, /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n CHAR_COLON: 58, /* : */\n CHAR_COMMA: 44, /* , */\n CHAR_DOT: 46, /* . */\n CHAR_DOUBLE_QUOTE: 34, /* \" */\n CHAR_EQUAL: 61, /* = */\n CHAR_EXCLAMATION_MARK: 33, /* ! */\n CHAR_FORM_FEED: 12, /* \\f */\n CHAR_FORWARD_SLASH: 47, /* / */\n CHAR_GRAVE_ACCENT: 96, /* ` */\n CHAR_HASH: 35, /* # */\n CHAR_HYPHEN_MINUS: 45, /* - */\n CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n CHAR_LEFT_CURLY_BRACE: 123, /* { */\n CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n CHAR_LINE_FEED: 10, /* \\n */\n CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n CHAR_PERCENT: 37, /* % */\n CHAR_PLUS: 43, /* + */\n CHAR_QUESTION_MARK: 63, /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n CHAR_SEMICOLON: 59, /* ; */\n CHAR_SINGLE_QUOTE: 39, /* ' */\n CHAR_SPACE: 32, /* */\n CHAR_TAB: 9, /* \\t */\n CHAR_UNDERSCORE: 95, /* _ */\n CHAR_VERTICAL_LINE: 124, /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n /**\n * Create EXTGLOB_CHARS\n */\n\n extglobChars(chars) {\n return {\n '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n '?': { type: 'qmark', open: '(?:', close: ')?' },\n '+': { type: 'plus', open: '(?:', close: ')+' },\n '*': { type: 'star', open: '(?:', close: ')*' },\n '@': { type: 'at', open: '(?:', close: ')' }\n };\n },\n\n /**\n * Create GLOB_CHARS\n */\n\n globChars(win32) {\n return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n }\n};\n", "/*global navigator*/\n'use strict';\n\nconst {\n REGEX_BACKSLASH,\n REGEX_REMOVE_BACKSLASH,\n REGEX_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_GLOBAL\n} = require('./constants');\n\nexports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nexports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\nexports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\nexports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\nexports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\nexports.isWindows = () => {\n if (typeof navigator !== 'undefined' && navigator.platform) {\n const platform = navigator.platform.toLowerCase();\n return platform === 'win32' || platform === 'windows';\n }\n\n if (typeof process !== 'undefined' && process.platform) {\n return process.platform === 'win32';\n }\n\n return false;\n};\n\nexports.removeBackslashes = str => {\n return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n return match === '\\\\' ? '' : match;\n });\n};\n\nexports.escapeLast = (input, char, lastIdx) => {\n const idx = input.lastIndexOf(char, lastIdx);\n if (idx === -1) return input;\n if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n};\n\nexports.removePrefix = (input, state = {}) => {\n let output = input;\n if (output.startsWith('./')) {\n output = output.slice(2);\n state.prefix = './';\n }\n return output;\n};\n\nexports.wrapOutput = (input, state = {}, options = {}) => {\n const prepend = options.contains ? '' : '^';\n const append = options.contains ? '' : '$';\n\n let output = `${prepend}(?:${input})${append}`;\n if (state.negated === true) {\n output = `(?:^(?!${output}).*$)`;\n }\n return output;\n};\n\nexports.basename = (path, { windows } = {}) => {\n const segs = path.split(windows ? /[\\\\/]/ : '/');\n const last = segs[segs.length - 1];\n\n if (last === '') {\n return segs[segs.length - 2];\n }\n\n return last;\n};\n", "'use strict';\n\nconst utils = require('./utils');\nconst {\n CHAR_ASTERISK, /* * */\n CHAR_AT, /* @ */\n CHAR_BACKWARD_SLASH, /* \\ */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_EXCLAMATION_MARK, /* ! */\n CHAR_FORWARD_SLASH, /* / */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_PLUS, /* + */\n CHAR_QUESTION_MARK, /* ? */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_RIGHT_SQUARE_BRACKET /* ] */\n} = require('./constants');\n\nconst isPathSeparator = code => {\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n};\n\nconst depth = token => {\n if (token.isPrefix !== true) {\n token.depth = token.isGlobstar ? Infinity : 1;\n }\n};\n\n/**\n * Quickly scans a glob pattern and returns an object with a handful of\n * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not\n * with `!(`) and `negatedExtglob` (true if the path starts with `!(`).\n *\n * ```js\n * const pm = require('picomatch');\n * console.log(pm.scan('foo/bar/*.js'));\n * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an object with tokens and regex source string.\n * @api public\n */\n\nconst scan = (input, options) => {\n const opts = options || {};\n\n const length = input.length - 1;\n const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n const slashes = [];\n const tokens = [];\n const parts = [];\n\n let str = input;\n let index = -1;\n let start = 0;\n let lastIndex = 0;\n let isBrace = false;\n let isBracket = false;\n let isGlob = false;\n let isExtglob = false;\n let isGlobstar = false;\n let braceEscaped = false;\n let backslashes = false;\n let negated = false;\n let negatedExtglob = false;\n let finished = false;\n let braces = 0;\n let prev;\n let code;\n let token = { value: '', depth: 0, isGlob: false };\n\n const eos = () => index >= length;\n const peek = () => str.charCodeAt(index + 1);\n const advance = () => {\n prev = code;\n return str.charCodeAt(++index);\n };\n\n while (index < length) {\n code = advance();\n let next;\n\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braceEscaped = true;\n }\n continue;\n }\n\n if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n continue;\n }\n\n if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (braceEscaped !== true && code === CHAR_COMMA) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_RIGHT_CURLY_BRACE) {\n braces--;\n\n if (braces === 0) {\n braceEscaped = false;\n isBrace = token.isBrace = true;\n finished = true;\n break;\n }\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_FORWARD_SLASH) {\n slashes.push(index);\n tokens.push(token);\n token = { value: '', depth: 0, isGlob: false };\n\n if (finished === true) continue;\n if (prev === CHAR_DOT && index === (start + 1)) {\n start += 2;\n continue;\n }\n\n lastIndex = index + 1;\n continue;\n }\n\n if (opts.noext !== true) {\n const isExtglobChar = code === CHAR_PLUS\n || code === CHAR_AT\n || code === CHAR_ASTERISK\n || code === CHAR_QUESTION_MARK\n || code === CHAR_EXCLAMATION_MARK;\n\n if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n isExtglob = token.isExtglob = true;\n finished = true;\n if (code === CHAR_EXCLAMATION_MARK && index === start) {\n negatedExtglob = true;\n }\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n }\n\n if (code === CHAR_ASTERISK) {\n if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_QUESTION_MARK) {\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_LEFT_SQUARE_BRACKET) {\n while (eos() !== true && (next = advance())) {\n if (next === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n isBracket = token.isBracket = true;\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n negated = token.negated = true;\n start++;\n continue;\n }\n\n if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_LEFT_PARENTHESES) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n\n if (isGlob === true) {\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n }\n\n if (opts.noext === true) {\n isExtglob = false;\n isGlob = false;\n }\n\n let base = str;\n let prefix = '';\n let glob = '';\n\n if (start > 0) {\n prefix = str.slice(0, start);\n str = str.slice(start);\n lastIndex -= start;\n }\n\n if (base && isGlob === true && lastIndex > 0) {\n base = str.slice(0, lastIndex);\n glob = str.slice(lastIndex);\n } else if (isGlob === true) {\n base = '';\n glob = str;\n } else {\n base = str;\n }\n\n if (base && base !== '' && base !== '/' && base !== str) {\n if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n base = base.slice(0, -1);\n }\n }\n\n if (opts.unescape === true) {\n if (glob) glob = utils.removeBackslashes(glob);\n\n if (base && backslashes === true) {\n base = utils.removeBackslashes(base);\n }\n }\n\n const state = {\n prefix,\n input,\n start,\n base,\n glob,\n isBrace,\n isBracket,\n isGlob,\n isExtglob,\n isGlobstar,\n negated,\n negatedExtglob\n };\n\n if (opts.tokens === true) {\n state.maxDepth = 0;\n if (!isPathSeparator(code)) {\n tokens.push(token);\n }\n state.tokens = tokens;\n }\n\n if (opts.parts === true || opts.tokens === true) {\n let prevIndex;\n\n for (let idx = 0; idx < slashes.length; idx++) {\n const n = prevIndex ? prevIndex + 1 : start;\n const i = slashes[idx];\n const value = input.slice(n, i);\n if (opts.tokens) {\n if (idx === 0 && start !== 0) {\n tokens[idx].isPrefix = true;\n tokens[idx].value = prefix;\n } else {\n tokens[idx].value = value;\n }\n depth(tokens[idx]);\n state.maxDepth += tokens[idx].depth;\n }\n if (idx !== 0 || value !== '') {\n parts.push(value);\n }\n prevIndex = i;\n }\n\n if (prevIndex && prevIndex + 1 < input.length) {\n const value = input.slice(prevIndex + 1);\n parts.push(value);\n\n if (opts.tokens) {\n tokens[tokens.length - 1].value = value;\n depth(tokens[tokens.length - 1]);\n state.maxDepth += tokens[tokens.length - 1].depth;\n }\n }\n\n state.slashes = slashes;\n state.parts = parts;\n }\n\n return state;\n};\n\nmodule.exports = scan;\n", "'use strict';\n\nconst constants = require('./constants');\nconst utils = require('./utils');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n POSIX_REGEX_SOURCE,\n REGEX_NON_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_BACKREF,\n REPLACEMENTS\n} = constants;\n\n/**\n * Helpers\n */\n\nconst expandRange = (args, options) => {\n if (typeof options.expandRange === 'function') {\n return options.expandRange(...args, options);\n }\n\n args.sort();\n const value = `[${args.join('-')}]`;\n\n try {\n /* eslint-disable-next-line no-new */\n new RegExp(value);\n } catch (ex) {\n return args.map(v => utils.escapeRegex(v)).join('..');\n }\n\n return value;\n};\n\n/**\n * Create the message for a syntax error\n */\n\nconst syntaxError = (type, char) => {\n return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n};\n\n/**\n * Parse the given input string.\n * @param {String} input\n * @param {Object} options\n * @return {Object}\n */\n\nconst parse = (input, options) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n input = REPLACEMENTS[input] || input;\n\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n let len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n const tokens = [bos];\n\n const capture = opts.capture ? '' : '?:';\n\n // create constants based on platform, for windows or posix\n const PLATFORM_CHARS = constants.globChars(opts.windows);\n const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n const {\n DOT_LITERAL,\n PLUS_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n } = PLATFORM_CHARS;\n\n const globstar = opts => {\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const nodot = opts.dot ? '' : NO_DOT;\n const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n let star = opts.bash === true ? globstar(opts) : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n // minimatch options support\n if (typeof opts.noext === 'boolean') {\n opts.noextglob = opts.noext;\n }\n\n const state = {\n input,\n index: -1,\n start: 0,\n dot: opts.dot === true,\n consumed: '',\n output: '',\n prefix: '',\n backtrack: false,\n negated: false,\n brackets: 0,\n braces: 0,\n parens: 0,\n quotes: 0,\n globstar: false,\n tokens\n };\n\n input = utils.removePrefix(input, state);\n len = input.length;\n\n const extglobs = [];\n const braces = [];\n const stack = [];\n let prev = bos;\n let value;\n\n /**\n * Tokenizing helpers\n */\n\n const eos = () => state.index === len - 1;\n const peek = state.peek = (n = 1) => input[state.index + n];\n const advance = state.advance = () => input[++state.index] || '';\n const remaining = () => input.slice(state.index + 1);\n const consume = (value = '', num = 0) => {\n state.consumed += value;\n state.index += num;\n };\n\n const append = token => {\n state.output += token.output != null ? token.output : token.value;\n consume(token.value);\n };\n\n const negate = () => {\n let count = 1;\n\n while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n advance();\n state.start++;\n count++;\n }\n\n if (count % 2 === 0) {\n return false;\n }\n\n state.negated = true;\n state.start++;\n return true;\n };\n\n const increment = type => {\n state[type]++;\n stack.push(type);\n };\n\n const decrement = type => {\n state[type]--;\n stack.pop();\n };\n\n /**\n * Push tokens onto the tokens array. This helper speeds up\n * tokenizing by 1) helping us avoid backtracking as much as possible,\n * and 2) helping us avoid creating extra tokens when consecutive\n * characters are plain text. This improves performance and simplifies\n * lookbehinds.\n */\n\n const push = tok => {\n if (prev.type === 'globstar') {\n const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n state.output = state.output.slice(0, -prev.output.length);\n prev.type = 'star';\n prev.value = '*';\n prev.output = star;\n state.output += prev.output;\n }\n }\n\n if (extglobs.length && tok.type !== 'paren') {\n extglobs[extglobs.length - 1].inner += tok.value;\n }\n\n if (tok.value || tok.output) append(tok);\n if (prev && prev.type === 'text' && tok.type === 'text') {\n prev.output = (prev.output || prev.value) + tok.value;\n prev.value += tok.value;\n return;\n }\n\n tok.prev = prev;\n tokens.push(tok);\n prev = tok;\n };\n\n const extglobOpen = (type, value) => {\n const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n token.prev = prev;\n token.parens = state.parens;\n token.output = state.output;\n const output = (opts.capture ? '(' : '') + token.open;\n\n increment('parens');\n push({ type, value, output: state.output ? '' : ONE_CHAR });\n push({ type: 'paren', extglob: true, value: advance(), output });\n extglobs.push(token);\n };\n\n const extglobClose = token => {\n let output = token.close + (opts.capture ? ')' : '');\n let rest;\n\n if (token.type === 'negate') {\n let extglobStar = star;\n\n if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n extglobStar = globstar(opts);\n }\n\n if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n output = token.close = `)$))${extglobStar}`;\n }\n\n if (token.inner.includes('*') && (rest = remaining()) && /^\\.[^\\\\/.]+$/.test(rest)) {\n // Any non-magical string (`.ts`) or even nested expression (`.{ts,tsx}`) can follow after the closing parenthesis.\n // In this case, we need to parse the string and use it in the output of the original pattern.\n // Suitable patterns: `/!(*.d).ts`, `/!(*.d).{ts,tsx}`, `**/!(*-dbg).@(js)`.\n //\n // Disabling the `fastpaths` option due to a problem with parsing strings as `.ts` in the pattern like `**/!(*.d).ts`.\n const expression = parse(rest, { ...options, fastpaths: false }).output;\n\n output = token.close = `)${expression})${extglobStar})`;\n }\n\n if (token.prev.type === 'bos') {\n state.negatedExtglob = true;\n }\n }\n\n push({ type: 'paren', extglob: true, value, output });\n decrement('parens');\n };\n\n /**\n * Fast paths\n */\n\n if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n let backslashes = false;\n\n let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n if (first === '\\\\') {\n backslashes = true;\n return m;\n }\n\n if (first === '?') {\n if (esc) {\n return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n }\n if (index === 0) {\n return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n }\n return QMARK.repeat(chars.length);\n }\n\n if (first === '.') {\n return DOT_LITERAL.repeat(chars.length);\n }\n\n if (first === '*') {\n if (esc) {\n return esc + first + (rest ? star : '');\n }\n return star;\n }\n return esc ? m : `\\\\${m}`;\n });\n\n if (backslashes === true) {\n if (opts.unescape === true) {\n output = output.replace(/\\\\/g, '');\n } else {\n output = output.replace(/\\\\+/g, m => {\n return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n });\n }\n }\n\n if (output === input && opts.contains === true) {\n state.output = input;\n return state;\n }\n\n state.output = utils.wrapOutput(output, state, options);\n return state;\n }\n\n /**\n * Tokenize input until we reach end-of-string\n */\n\n while (!eos()) {\n value = advance();\n\n if (value === '\\u0000') {\n continue;\n }\n\n /**\n * Escaped characters\n */\n\n if (value === '\\\\') {\n const next = peek();\n\n if (next === '/' && opts.bash !== true) {\n continue;\n }\n\n if (next === '.' || next === ';') {\n continue;\n }\n\n if (!next) {\n value += '\\\\';\n push({ type: 'text', value });\n continue;\n }\n\n // collapse slashes to reduce potential for exploits\n const match = /^\\\\+/.exec(remaining());\n let slashes = 0;\n\n if (match && match[0].length > 2) {\n slashes = match[0].length;\n state.index += slashes;\n if (slashes % 2 !== 0) {\n value += '\\\\';\n }\n }\n\n if (opts.unescape === true) {\n value = advance();\n } else {\n value += advance();\n }\n\n if (state.brackets === 0) {\n push({ type: 'text', value });\n continue;\n }\n }\n\n /**\n * If we're inside a regex character class, continue\n * until we reach the closing bracket.\n */\n\n if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n if (opts.posix !== false && value === ':') {\n const inner = prev.value.slice(1);\n if (inner.includes('[')) {\n prev.posix = true;\n\n if (inner.includes(':')) {\n const idx = prev.value.lastIndexOf('[');\n const pre = prev.value.slice(0, idx);\n const rest = prev.value.slice(idx + 2);\n const posix = POSIX_REGEX_SOURCE[rest];\n if (posix) {\n prev.value = pre + posix;\n state.backtrack = true;\n advance();\n\n if (!bos.output && tokens.indexOf(prev) === 1) {\n bos.output = ONE_CHAR;\n }\n continue;\n }\n }\n }\n }\n\n if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n value = `\\\\${value}`;\n }\n\n if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n value = `\\\\${value}`;\n }\n\n if (opts.posix === true && value === '!' && prev.value === '[') {\n value = '^';\n }\n\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * If we're inside a quoted string, continue\n * until we reach the closing double quote.\n */\n\n if (state.quotes === 1 && value !== '\"') {\n value = utils.escapeRegex(value);\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * Double quotes\n */\n\n if (value === '\"') {\n state.quotes = state.quotes === 1 ? 0 : 1;\n if (opts.keepQuotes === true) {\n push({ type: 'text', value });\n }\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === '(') {\n increment('parens');\n push({ type: 'paren', value });\n continue;\n }\n\n if (value === ')') {\n if (state.parens === 0 && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '('));\n }\n\n const extglob = extglobs[extglobs.length - 1];\n if (extglob && state.parens === extglob.parens + 1) {\n extglobClose(extglobs.pop());\n continue;\n }\n\n push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n decrement('parens');\n continue;\n }\n\n /**\n * Square brackets\n */\n\n if (value === '[') {\n if (opts.nobracket === true || !remaining().includes(']')) {\n if (opts.nobracket !== true && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('closing', ']'));\n }\n\n value = `\\\\${value}`;\n } else {\n increment('brackets');\n }\n\n push({ type: 'bracket', value });\n continue;\n }\n\n if (value === ']') {\n if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n if (state.brackets === 0) {\n if (opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '['));\n }\n\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n decrement('brackets');\n\n const prevValue = prev.value.slice(1);\n if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n value = `/${value}`;\n }\n\n prev.value += value;\n append({ value });\n\n // when literal brackets are explicitly disabled\n // assume we should match with a regex character class\n if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n continue;\n }\n\n const escaped = utils.escapeRegex(prev.value);\n state.output = state.output.slice(0, -prev.value.length);\n\n // when literal brackets are explicitly enabled\n // assume we should escape the brackets to match literal characters\n if (opts.literalBrackets === true) {\n state.output += escaped;\n prev.value = escaped;\n continue;\n }\n\n // when the user specifies nothing, try to match both\n prev.value = `(${capture}${escaped}|${prev.value})`;\n state.output += prev.value;\n continue;\n }\n\n /**\n * Braces\n */\n\n if (value === '{' && opts.nobrace !== true) {\n increment('braces');\n\n const open = {\n type: 'brace',\n value,\n output: '(',\n outputIndex: state.output.length,\n tokensIndex: state.tokens.length\n };\n\n braces.push(open);\n push(open);\n continue;\n }\n\n if (value === '}') {\n const brace = braces[braces.length - 1];\n\n if (opts.nobrace === true || !brace) {\n push({ type: 'text', value, output: value });\n continue;\n }\n\n let output = ')';\n\n if (brace.dots === true) {\n const arr = tokens.slice();\n const range = [];\n\n for (let i = arr.length - 1; i >= 0; i--) {\n tokens.pop();\n if (arr[i].type === 'brace') {\n break;\n }\n if (arr[i].type !== 'dots') {\n range.unshift(arr[i].value);\n }\n }\n\n output = expandRange(range, opts);\n state.backtrack = true;\n }\n\n if (brace.comma !== true && brace.dots !== true) {\n const out = state.output.slice(0, brace.outputIndex);\n const toks = state.tokens.slice(brace.tokensIndex);\n brace.value = brace.output = '\\\\{';\n value = output = '\\\\}';\n state.output = out;\n for (const t of toks) {\n state.output += (t.output || t.value);\n }\n }\n\n push({ type: 'brace', value, output });\n decrement('braces');\n braces.pop();\n continue;\n }\n\n /**\n * Pipes\n */\n\n if (value === '|') {\n if (extglobs.length > 0) {\n extglobs[extglobs.length - 1].conditions++;\n }\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Commas\n */\n\n if (value === ',') {\n let output = value;\n\n const brace = braces[braces.length - 1];\n if (brace && stack[stack.length - 1] === 'braces') {\n brace.comma = true;\n output = '|';\n }\n\n push({ type: 'comma', value, output });\n continue;\n }\n\n /**\n * Slashes\n */\n\n if (value === '/') {\n // if the beginning of the glob is \"./\", advance the start\n // to the current index, and don't add the \"./\" characters\n // to the state. This greatly simplifies lookbehinds when\n // checking for BOS characters like \"!\" and \".\" (not \"./\")\n if (prev.type === 'dot' && state.index === state.start + 1) {\n state.start = state.index + 1;\n state.consumed = '';\n state.output = '';\n tokens.pop();\n prev = bos; // reset \"prev\" to the first token\n continue;\n }\n\n push({ type: 'slash', value, output: SLASH_LITERAL });\n continue;\n }\n\n /**\n * Dots\n */\n\n if (value === '.') {\n if (state.braces > 0 && prev.type === 'dot') {\n if (prev.value === '.') prev.output = DOT_LITERAL;\n const brace = braces[braces.length - 1];\n prev.type = 'dots';\n prev.output += value;\n prev.value += value;\n brace.dots = true;\n continue;\n }\n\n if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n push({ type: 'text', value, output: DOT_LITERAL });\n continue;\n }\n\n push({ type: 'dot', value, output: DOT_LITERAL });\n continue;\n }\n\n /**\n * Question marks\n */\n\n if (value === '?') {\n const isGroup = prev && prev.value === '(';\n if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('qmark', value);\n continue;\n }\n\n if (prev && prev.type === 'paren') {\n const next = peek();\n let output = value;\n\n if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n output = `\\\\${value}`;\n }\n\n push({ type: 'text', value, output });\n continue;\n }\n\n if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n push({ type: 'qmark', value, output: QMARK_NO_DOT });\n continue;\n }\n\n push({ type: 'qmark', value, output: QMARK });\n continue;\n }\n\n /**\n * Exclamation\n */\n\n if (value === '!') {\n if (opts.noextglob !== true && peek() === '(') {\n if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n extglobOpen('negate', value);\n continue;\n }\n }\n\n if (opts.nonegate !== true && state.index === 0) {\n negate();\n continue;\n }\n }\n\n /**\n * Plus\n */\n\n if (value === '+') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('plus', value);\n continue;\n }\n\n if ((prev && prev.value === '(') || opts.regex === false) {\n push({ type: 'plus', value, output: PLUS_LITERAL });\n continue;\n }\n\n if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n push({ type: 'plus', value });\n continue;\n }\n\n push({ type: 'plus', value: PLUS_LITERAL });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value === '@') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n push({ type: 'at', extglob: true, value, output: '' });\n continue;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value !== '*') {\n if (value === '$' || value === '^') {\n value = `\\\\${value}`;\n }\n\n const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n if (match) {\n value += match[0];\n state.index += match[0].length;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Stars\n */\n\n if (prev && (prev.type === 'globstar' || prev.star === true)) {\n prev.type = 'star';\n prev.star = true;\n prev.value += value;\n prev.output = star;\n state.backtrack = true;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n let rest = remaining();\n if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n extglobOpen('star', value);\n continue;\n }\n\n if (prev.type === 'star') {\n if (opts.noglobstar === true) {\n consume(value);\n continue;\n }\n\n const prior = prev.prev;\n const before = prior.prev;\n const isStart = prior.type === 'slash' || prior.type === 'bos';\n const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n // strip consecutive `/**/`\n while (rest.slice(0, 3) === '/**') {\n const after = input[state.index + 4];\n if (after && after !== '/') {\n break;\n }\n rest = rest.slice(3);\n consume('/**', 3);\n }\n\n if (prior.type === 'bos' && eos()) {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = globstar(opts);\n state.output = prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n prev.value += value;\n state.globstar = true;\n state.output += prior.output + prev.output;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n const end = rest[1] !== void 0 ? '|$' : '';\n\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n prev.value += value;\n\n state.output += prior.output + prev.output;\n state.globstar = true;\n\n consume(value + advance());\n\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n if (prior.type === 'bos' && rest[0] === '/') {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n state.output = prev.output;\n state.globstar = true;\n consume(value + advance());\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n // remove single star from output\n state.output = state.output.slice(0, -prev.output.length);\n\n // reset previous token to globstar\n prev.type = 'globstar';\n prev.output = globstar(opts);\n prev.value += value;\n\n // reset output with globstar\n state.output += prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n const token = { type: 'star', value, output: star };\n\n if (opts.bash === true) {\n token.output = '.*?';\n if (prev.type === 'bos' || prev.type === 'slash') {\n token.output = nodot + token.output;\n }\n push(token);\n continue;\n }\n\n if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n token.output = value;\n push(token);\n continue;\n }\n\n if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n if (prev.type === 'dot') {\n state.output += NO_DOT_SLASH;\n prev.output += NO_DOT_SLASH;\n\n } else if (opts.dot === true) {\n state.output += NO_DOTS_SLASH;\n prev.output += NO_DOTS_SLASH;\n\n } else {\n state.output += nodot;\n prev.output += nodot;\n }\n\n if (peek() !== '*') {\n state.output += ONE_CHAR;\n prev.output += ONE_CHAR;\n }\n }\n\n push(token);\n }\n\n while (state.brackets > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n state.output = utils.escapeLast(state.output, '[');\n decrement('brackets');\n }\n\n while (state.parens > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n state.output = utils.escapeLast(state.output, '(');\n decrement('parens');\n }\n\n while (state.braces > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n state.output = utils.escapeLast(state.output, '{');\n decrement('braces');\n }\n\n if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n }\n\n // rebuild the output if we had to backtrack at any point\n if (state.backtrack === true) {\n state.output = '';\n\n for (const token of state.tokens) {\n state.output += token.output != null ? token.output : token.value;\n\n if (token.suffix) {\n state.output += token.suffix;\n }\n }\n }\n\n return state;\n};\n\n/**\n * Fast paths for creating regular expressions for common glob patterns.\n * This can significantly speed up processing and has very little downside\n * impact when none of the fast paths match.\n */\n\nparse.fastpaths = (input, options) => {\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n const len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n input = REPLACEMENTS[input] || input;\n\n // create constants based on platform, for windows or posix\n const {\n DOT_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOTS_SLASH,\n STAR,\n START_ANCHOR\n } = constants.globChars(opts.windows);\n\n const nodot = opts.dot ? NO_DOTS : NO_DOT;\n const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n const capture = opts.capture ? '' : '?:';\n const state = { negated: false, prefix: '' };\n let star = opts.bash === true ? '.*?' : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n const globstar = opts => {\n if (opts.noglobstar === true) return star;\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const create = str => {\n switch (str) {\n case '*':\n return `${nodot}${ONE_CHAR}${star}`;\n\n case '.*':\n return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*.*':\n return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*/*':\n return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n case '**':\n return nodot + globstar(opts);\n\n case '**/*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n case '**/*.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '**/.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n default: {\n const match = /^(.*?)\\.(\\w+)$/.exec(str);\n if (!match) return;\n\n const source = create(match[1]);\n if (!source) return;\n\n return source + DOT_LITERAL + match[2];\n }\n }\n };\n\n const output = utils.removePrefix(input, state);\n let source = create(output);\n\n if (source && opts.strictSlashes !== true) {\n source += `${SLASH_LITERAL}?`;\n }\n\n return source;\n};\n\nmodule.exports = parse;\n", "'use strict';\n\nconst scan = require('./scan');\nconst parse = require('./parse');\nconst utils = require('./utils');\nconst constants = require('./constants');\nconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n/**\n * Creates a matcher function from one or more glob patterns. The\n * returned function takes a string to match as its first argument,\n * and returns true if the string is a match. The returned matcher\n * function also takes a boolean as the second argument that, when true,\n * returns an object with additional information.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch(glob[, options]);\n *\n * const isMatch = picomatch('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @name picomatch\n * @param {String|Array} `globs` One or more glob patterns.\n * @param {Object=} `options`\n * @return {Function=} Returns a matcher function.\n * @api public\n */\n\nconst picomatch = (glob, options, returnState = false) => {\n if (Array.isArray(glob)) {\n const fns = glob.map(input => picomatch(input, options, returnState));\n const arrayMatcher = str => {\n for (const isMatch of fns) {\n const state = isMatch(str);\n if (state) return state;\n }\n return false;\n };\n return arrayMatcher;\n }\n\n const isState = isObject(glob) && glob.tokens && glob.input;\n\n if (glob === '' || (typeof glob !== 'string' && !isState)) {\n throw new TypeError('Expected pattern to be a non-empty string');\n }\n\n const opts = options || {};\n const posix = opts.windows;\n const regex = isState\n ? picomatch.compileRe(glob, options)\n : picomatch.makeRe(glob, options, false, true);\n\n const state = regex.state;\n delete regex.state;\n\n let isIgnored = () => false;\n if (opts.ignore) {\n const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n }\n\n const matcher = (input, returnObject = false) => {\n const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n if (typeof opts.onResult === 'function') {\n opts.onResult(result);\n }\n\n if (isMatch === false) {\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (isIgnored(input)) {\n if (typeof opts.onIgnore === 'function') {\n opts.onIgnore(result);\n }\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (typeof opts.onMatch === 'function') {\n opts.onMatch(result);\n }\n return returnObject ? result : true;\n };\n\n if (returnState) {\n matcher.state = state;\n }\n\n return matcher;\n};\n\n/**\n * Test `input` with the given `regex`. This is used by the main\n * `picomatch()` function to test the input string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.test(input, regex[, options]);\n *\n * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp} `regex`\n * @return {Object} Returns an object with matching info.\n * @api public\n */\n\npicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected input to be a string');\n }\n\n if (input === '') {\n return { isMatch: false, output: '' };\n }\n\n const opts = options || {};\n const format = opts.format || (posix ? utils.toPosixSlashes : null);\n let match = input === glob;\n let output = (match && format) ? format(input) : input;\n\n if (match === false) {\n output = format ? format(input) : input;\n match = output === glob;\n }\n\n if (match === false || opts.capture === true) {\n if (opts.matchBase === true || opts.basename === true) {\n match = picomatch.matchBase(input, regex, options, posix);\n } else {\n match = regex.exec(output);\n }\n }\n\n return { isMatch: Boolean(match), match, output };\n};\n\n/**\n * Match the basename of a filepath.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.matchBase(input, glob[, options]);\n * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n * @return {Boolean}\n * @api public\n */\n\npicomatch.matchBase = (input, glob, options) => {\n const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n return regex.test(utils.basename(input));\n};\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.isMatch(string, patterns[, options]);\n *\n * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String|Array} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\npicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const result = picomatch.parse(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n * @api public\n */\n\npicomatch.parse = (pattern, options) => {\n if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n return parse(pattern, { ...options, fastpaths: false });\n};\n\n/**\n * Scan a glob pattern to separate the pattern into segments.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.scan(input[, options]);\n *\n * const result = picomatch.scan('!./foo/*.js');\n * console.log(result);\n * { prefix: '!./',\n * input: '!./foo/*.js',\n * start: 3,\n * base: 'foo',\n * glob: '*.js',\n * isBrace: false,\n * isBracket: false,\n * isGlob: true,\n * isExtglob: false,\n * isGlobstar: false,\n * negated: true }\n * ```\n * @param {String} `input` Glob pattern to scan.\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\npicomatch.scan = (input, options) => scan(input, options);\n\n/**\n * Compile a regular expression from the `state` object returned by the\n * [parse()](#parse) method.\n *\n * @param {Object} `state`\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser.\n * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging.\n * @return {RegExp}\n * @api public\n */\n\npicomatch.compileRe = (state, options, returnOutput = false, returnState = false) => {\n if (returnOutput === true) {\n return state.output;\n }\n\n const opts = options || {};\n const prepend = opts.contains ? '' : '^';\n const append = opts.contains ? '' : '$';\n\n let source = `${prepend}(?:${state.output})${append}`;\n if (state && state.negated === true) {\n source = `^(?!${source}).*$`;\n }\n\n const regex = picomatch.toRegex(source, options);\n if (returnState === true) {\n regex.state = state;\n }\n\n return regex;\n};\n\n/**\n * Create a regular expression from a parsed glob pattern.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const state = picomatch.parse('*.js');\n * // picomatch.compileRe(state[, options]);\n *\n * console.log(picomatch.compileRe(state));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `state` The object returned from the `.parse` method.\n * @param {Object} `options`\n * @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.\n * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression.\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\npicomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => {\n if (!input || typeof input !== 'string') {\n throw new TypeError('Expected a non-empty string');\n }\n\n let parsed = { negated: false, fastpaths: true };\n\n if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n parsed.output = parse.fastpaths(input, options);\n }\n\n if (!parsed.output) {\n parsed = parse(input, options);\n }\n\n return picomatch.compileRe(parsed, options, returnOutput, returnState);\n};\n\n/**\n * Create a regular expression from the given regex source string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.toRegex(source[, options]);\n *\n * const { output } = picomatch.parse('*.js');\n * console.log(picomatch.toRegex(output));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `source` Regular expression source string.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\npicomatch.toRegex = (source, options) => {\n try {\n const opts = options || {};\n return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n } catch (err) {\n if (options && options.debug === true) throw err;\n return /$^/;\n }\n};\n\n/**\n * Picomatch constants.\n * @return {Object}\n */\n\npicomatch.constants = constants;\n\n/**\n * Expose \"picomatch\"\n */\n\nmodule.exports = picomatch;\n", "'use strict';\n\nconst pico = require('./lib/picomatch');\nconst utils = require('./lib/utils');\n\nfunction picomatch(glob, options, returnState = false) {\n // default to os.platform()\n if (options && (options.windows === null || options.windows === undefined)) {\n // don't mutate the original options object\n options = { ...options, windows: utils.isWindows() };\n }\n\n return pico(glob, options, returnState);\n}\n\nObject.assign(picomatch, pico);\nmodule.exports = picomatch;\n", "\n// =============================================================================\n// Core Helpers & State\n// =============================================================================\n\nconst pad = (value, size = 2) => String(value).padStart(size, '0');\n\nconst FORCED_TIMEZONE_OFFSET_MINUTES = -8 * 60;\n\nconst formatTimestamp = (date = new Date()) => {\n const source = date instanceof Date ? date : new Date(date);\n const forcedDate = new Date(source.getTime() - (FORCED_TIMEZONE_OFFSET_MINUTES * 60 * 1000));\n\n const year = forcedDate.getUTCFullYear();\n const month = pad(forcedDate.getUTCMonth() + 1);\n const day = pad(forcedDate.getUTCDate());\n const hours = pad(forcedDate.getUTCHours());\n const minutes = pad(forcedDate.getUTCMinutes());\n const seconds = pad(forcedDate.getUTCSeconds());\n const millis = pad(forcedDate.getUTCMilliseconds(), 3);\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${millis}`;\n};\n\nconst formatLine = (prefix, icon, message) => {\n const parts = [];\n if (prefix) parts.push(`[${prefix}]`);\n if (icon) parts.push(icon);\n if (message) parts.push(message);\n return parts.join(' ').trim();\n};\n\nconst fallbackLog = {\n info: (...args) => console.log(...args),\n warning: (...args) => (console.warn ? console.warn(...args) : console.log(...args)),\n error: (...args) => console.error(...args),\n debug: (...args) => (console.debug ? console.debug(...args) : console.log(...args)),\n};\n\nconst resolveLogMethod = (logger, name) => {\n if (logger && typeof logger[name] === 'function') {\n return logger[name].bind(logger);\n }\n if (name === 'warning' && logger && typeof logger.warn === 'function') {\n return logger.warn.bind(logger);\n }\n return fallbackLog[name];\n};\n\nlet defaultLogger = null;\n\nexport const setDefaultLogger = (logger) => {\n defaultLogger = logger;\n};\n\n// Lazy resolver: always checks current state\nconst resolveLogger = (explicitLogger) => {\n if (explicitLogger && typeof explicitLogger.info === 'function') {\n return explicitLogger;\n }\n if (defaultLogger && typeof defaultLogger.info === 'function') {\n return defaultLogger;\n }\n return fallbackLog;\n};\n\nconst ANSI = {\n reset: '\\x1b[0m',\n gray: '\\x1b[90m',\n red: '\\x1b[31m',\n green: '\\x1b[32m',\n yellow: '\\x1b[33m',\n blue: '\\x1b[34m',\n cyan: '\\x1b[36m',\n};\n\nconst colorize = (text, color) => {\n if (!text || !color) return text;\n return `${color}${text}${ANSI.reset}`;\n};\n\nexport const createBaseLogger = (prefix = '', explicitLogger) => {\n const name = prefix ? String(prefix) : '';\n\n const dispatch = (methodName, icon, message, color) => {\n const logger = resolveLogger(explicitLogger);\n const logFn = resolveLogMethod(logger, methodName);\n const timestamp = colorize(`[${formatTimestamp()}]`, ANSI.gray);\n const line = formatLine(name, icon, message);\n const coloredLine = colorize(line, color);\n logFn(`${timestamp} ${coloredLine}`.trim());\n };\n\n return {\n info: (message) => dispatch('info', '\uD83D\uDCD6', message, ANSI.cyan),\n success: (message) => dispatch('info', '\u2705', message, ANSI.green),\n warning: (message) => dispatch('warning', '\u26A0\uFE0F', message, ANSI.yellow),\n warn: (message) => dispatch('warning', '\u26A0\uFE0F', message, ANSI.yellow),\n error: (message) => dispatch('error', '\u274C', message, ANSI.red),\n debug: (message) => dispatch('debug', '\uD83D\uDD39', message, ANSI.gray),\n start: (message) => dispatch('info', '\uD83D\uDD37', message, ANSI.blue),\n };\n};\n\n/**\n * \u521B\u5EFA\u6A21\u5757\u7EA7\u65E5\u5FD7\u5668\n * @param {string} moduleName - \u6A21\u5757\u540D\u79F0\n * @param {object} [logger] - \u53EF\u9009\u7684\u663E\u5F0F\u65E5\u5FD7\u5668\uFF0C\u901A\u5E38\u4E0D\u9700\u8981\u4F20\uFF0C\u4F1A\u81EA\u52A8\u4F7F\u7528 setDefaultLogger \u8BBE\u7F6E\u7684\u5168\u5C40\u65E5\u5FD7\u5668\n */\nexport function createInternalLogger(moduleName, explicitLogger) {\n const baseLogger = createBaseLogger(moduleName, explicitLogger);\n\n return {\n start(methodName, params = '') {\n const paramStr = params ? ` (${params})` : '';\n baseLogger.start(`${methodName} \u5F00\u59CB${paramStr}`);\n },\n success(methodName, result = '') {\n const resultStr = result ? ` (${result})` : '';\n baseLogger.success(`${methodName} \u5B8C\u6210${resultStr}`);\n },\n fail(methodName, error) {\n const message = error instanceof Error ? error.message : error;\n baseLogger.error(`${methodName} \u5931\u8D25: ${message}`);\n },\n debug(message) {\n baseLogger.debug(message);\n },\n warn(message) {\n baseLogger.warning(message);\n },\n warning(message) {\n baseLogger.warning(message);\n },\n info(message) {\n baseLogger.info(message);\n }\n };\n}\n", "import { createBaseLogger, setDefaultLogger } from './internals/logger.js';\n\nexport const stripAnsi = (input) => {\n if (!input) return '';\n return String(input).replace(/\\x1b\\[[0-9;]*m/g, '');\n};\n\n// =============================================================================\n// Log Templates & Definitions\n// =============================================================================\n\nconst STEP_PREFIX = '\u6B65\u9AA4:';\nconst STEP_SEPARATOR = ' | ';\nconst STEP_EMOJIS = [\n { match: '\u4EFB\u52A1', emoji: '\uD83E\uDDED' },\n { match: '\u8FD0\u884C\u6A21\u5F0F', emoji: '\uD83E\uDDE9' },\n { match: '\u6A21\u677F\u8BC6\u522B', emoji: '\uD83E\uDDF1' },\n { match: '\u767B\u5F55', emoji: '\uD83D\uDD10' },\n { match: '\u73AF\u5883', emoji: '\uD83E\uDDEA' },\n { match: '\u8F93\u5165', emoji: '\u2328\uFE0F' },\n { match: '\u53D1\u9001', emoji: '\uD83D\uDCE4' },\n { match: '\u54CD\u5E94\u76D1\u542C', emoji: '\uD83D\uDCE1' },\n { match: '\u7B49\u5F85\u54CD\u5E94', emoji: '\u23F3' },\n { match: '\u6D41\u5F0F', emoji: '\uD83E\uDDF5' },\n { match: '\u5F15\u7528', emoji: '\uD83D\uDCCE' },\n { match: '\u622A\u56FE', emoji: '\uD83D\uDDBC\uFE0F' },\n { match: '\u5206\u4EAB\u94FE\u63A5', emoji: '\uD83D\uDD17' },\n { match: '\u6570\u636E\u63A8\u9001', emoji: '\uD83D\uDCE6' },\n { match: '\u5F39\u7A97', emoji: '\uD83E\uDE9F' },\n];\nconst STATUS_EMOJIS = [\n { match: '\u5F00\u59CB', emoji: '\uD83D\uDE80' },\n { match: '\u5B8C\u6210', emoji: '\u2705' },\n { match: '\u6210\u529F', emoji: '\u2705' },\n { match: '\u5931\u8D25', emoji: '\u274C' },\n { match: '\u8DF3\u8FC7', emoji: '\u23ED\uFE0F' },\n { match: '\u8D85\u65F6', emoji: '\u23F1\uFE0F' },\n { match: '\u91CD\u8BD5', emoji: '\uD83D\uDD01' },\n { match: '\u7ED3\u675F', emoji: '\uD83C\uDFC1' },\n { match: '\u5DF2\u914D\u7F6E', emoji: '\uD83E\uDDF7' },\n { match: '\u5DF2\u68C0\u6D4B', emoji: '\uD83D\uDD0E' },\n];\n\nconst toErrorMessage = (error) => {\n if (!error) return '';\n if (error instanceof Error) return error.message;\n if (typeof error === 'string') return error;\n try {\n return JSON.stringify(error);\n } catch {\n return String(error);\n }\n};\n\nconst decorateLabel = (label, mappings) => {\n if (!label) return '';\n const mapping = mappings.find((item) => label.includes(item.match));\n if (!mapping) return label;\n return `${mapping.emoji} ${label}`;\n};\n\nconst normalizeSnippet = (snippet, maxLen = 120) => {\n if (!snippet) return '';\n const text = String(snippet).replace(/\\s+/g, ' ').trim();\n if (!text) return '';\n const cleaned = text.replace(/\"/g, \"'\");\n if (cleaned.length <= maxLen) return cleaned;\n return `${cleaned.slice(0, maxLen)}...`;\n};\n\nconst LOG_TAG_PREFIX = '[#log:';\nconst LOG_TAG_SUFFIX = ']';\n\nconst buildLogTag = (key) => `${LOG_TAG_PREFIX}${key}${LOG_TAG_SUFFIX}`;\n\nconst escapeRegExp = (value) => String(value).replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\nconst buildStepPattern = (step, status) => {\n if (!step) return null;\n let pattern = `\u6B65\u9AA4: .*${escapeRegExp(step)}`;\n if (status) {\n pattern += `.*${escapeRegExp(status)}`;\n }\n return new RegExp(pattern);\n};\n\nconst buildDefinitionPatterns = (definition) => {\n const patterns = [new RegExp(`\\\\[#log:${escapeRegExp(definition.key)}\\\\]`)];\n const fallback = buildStepPattern(definition.step, definition.status);\n if (fallback) patterns.push(fallback);\n if (Array.isArray(definition.extraPatterns)) {\n patterns.push(...definition.extraPatterns);\n }\n return patterns;\n};\n\nconst ATTENTION_RANK = {\n low: 1,\n medium: 2,\n high: 3,\n critical: 4,\n};\nconst DEFAULT_ATTENTION_RANK = ATTENTION_RANK.high;\n\nconst LOG_DEFINITIONS = [\n {\n key: 'task_start',\n method: 'taskStart',\n label: '\u4EFB\u52A1\u5F00\u59CB',\n group: '\u4EFB\u52A1',\n step: '\u4EFB\u52A1',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n buildDetails: (url) => [url ? `url=${url}` : ''],\n },\n {\n key: 'task_success',\n method: 'taskSuccess',\n label: '\u4EFB\u52A1\u5B8C\u6210',\n group: '\u4EFB\u52A1',\n step: '\u4EFB\u52A1',\n status: '\u5B8C\u6210',\n level: 'success',\n attention: 'high',\n },\n {\n key: 'task_fail',\n method: 'taskFail',\n label: '\u4EFB\u52A1\u5931\u8D25',\n group: '\u4EFB\u52A1',\n step: '\u4EFB\u52A1',\n status: '\u5931\u8D25',\n level: 'error',\n attention: 'critical',\n buildDetails: (url, err) => [\n url ? `url=${url}` : '',\n err ? `err=${toErrorMessage(err)}` : ''\n ],\n },\n {\n key: 'runtime_headless',\n method: 'runtimeHeadless',\n label: '\u8FD0\u884C\u6A21\u5F0F\u5F3A\u5236\u65E0\u5934',\n group: '\u8FD0\u884C\u6A21\u5F0F',\n step: '\u8FD0\u884C\u6A21\u5F0F',\n status: 'Apify \u73AF\u5883\u5F3A\u5236\u65E0\u5934',\n level: 'warning',\n attention: 'medium',\n },\n {\n key: 'login_inject_success',\n method: 'loginInjectSuccess',\n label: '\u767B\u5F55\u6001\u6CE8\u5165\u6210\u529F',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u6001\u6CE8\u5165',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'medium',\n buildDetails: (detail) => [detail ? `detail=${detail}` : ''],\n },\n {\n key: 'login_inject_skip',\n method: 'loginInjectSkip',\n label: '\u767B\u5F55\u6001\u6CE8\u5165\u8DF3\u8FC7',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u6001\u6CE8\u5165',\n status: '\u8DF3\u8FC7',\n level: 'warning',\n attention: 'medium',\n buildDetails: (reason) => [reason ? `\u539F\u56E0=${reason}` : ''],\n },\n {\n key: 'login_inject_fail',\n method: 'loginInjectFail',\n label: '\u767B\u5F55\u6001\u6CE8\u5165\u5931\u8D25',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u6001\u6CE8\u5165',\n status: '\u5931\u8D25',\n level: 'error',\n attention: 'high',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'login_verify_success',\n method: 'loginVerifySuccess',\n label: '\u767B\u5F55\u9A8C\u8BC1\u6210\u529F',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u9A8C\u8BC1',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'high',\n buildDetails: (detail) => [detail ? `detail=${detail}` : ''],\n },\n {\n key: 'login_verify_skip',\n method: 'loginVerifySkip',\n label: '\u767B\u5F55\u9A8C\u8BC1\u8DF3\u8FC7',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u9A8C\u8BC1',\n status: '\u8DF3\u8FC7',\n level: 'warning',\n attention: 'medium',\n buildDetails: (reason) => [reason ? `\u539F\u56E0=${reason}` : ''],\n },\n {\n key: 'login_verify_fail',\n method: 'loginVerifyFail',\n label: '\u767B\u5F55\u9A8C\u8BC1\u5931\u8D25',\n group: '\u767B\u5F55',\n step: '\u767B\u5F55\u9A8C\u8BC1',\n status: '\u5931\u8D25',\n level: 'error',\n attention: 'critical',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'env_check_success',\n method: 'envCheckSuccess',\n label: '\u73AF\u5883\u68C0\u67E5\u6210\u529F',\n group: '\u73AF\u5883',\n step: '\u73AF\u5883\u68C0\u67E5',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'medium',\n buildDetails: (detail) => [detail ? `detail=${detail}` : ''],\n },\n {\n key: 'env_check_fail',\n method: 'envCheckFail',\n label: '\u73AF\u5883\u68C0\u67E5\u5931\u8D25',\n group: '\u73AF\u5883',\n step: '\u73AF\u5883\u68C0\u67E5',\n status: '\u5931\u8D25',\n level: 'error',\n attention: 'high',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'input_query_start',\n method: 'inputQuery',\n label: '\u8F93\u5165\u67E5\u8BE2\u5F00\u59CB',\n group: '\u8F93\u5165',\n step: '\u8F93\u5165\u67E5\u8BE2',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n buildDetails: (query) => [query ? `query=${query}` : ''],\n },\n {\n key: 'send_action',\n method: 'sendAction',\n label: '\u53D1\u9001\u8BF7\u6C42',\n group: '\u53D1\u9001',\n step: '\u53D1\u9001\u8BF7\u6C42',\n status: '\u70B9\u51FB\u53D1\u9001',\n level: 'info',\n attention: 'low',\n },\n {\n key: 'response_listen_start',\n method: 'responseListenStart',\n label: '\u54CD\u5E94\u76D1\u542C\u5F00\u59CB',\n group: '\u54CD\u5E94\u76D1\u542C',\n step: '\u54CD\u5E94\u76D1\u542C',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n buildDetails: (label, timeoutSec) => [\n label ? `\u76EE\u6807=${label}` : '',\n timeoutSec ? `timeout=${timeoutSec}s` : ''\n ],\n },\n {\n key: 'response_listen_ready',\n method: 'responseListenReady',\n label: '\u54CD\u5E94\u76D1\u542C\u5DF2\u914D\u7F6E',\n group: '\u54CD\u5E94\u76D1\u542C',\n step: '\u54CD\u5E94\u76D1\u542C',\n status: '\u5DF2\u914D\u7F6E',\n level: 'info',\n attention: 'medium',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'response_listen_detected',\n method: 'responseListenDetected',\n label: '\u54CD\u5E94\u76D1\u542C\u5DF2\u68C0\u6D4B',\n group: '\u54CD\u5E94\u76D1\u542C',\n step: '\u54CD\u5E94\u76D1\u542C',\n status: '\u5DF2\u68C0\u6D4B',\n level: 'success',\n attention: 'medium',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'response_listen_timeout',\n method: 'responseListenTimeout',\n label: '\u54CD\u5E94\u76D1\u542C\u8D85\u65F6',\n group: '\u54CD\u5E94\u76D1\u542C',\n step: '\u54CD\u5E94\u76D1\u542C',\n status: '\u8D85\u65F6',\n level: 'error',\n attention: 'high',\n buildDetails: (label, err) => [\n label ? `\u76EE\u6807=${label}` : '',\n err ? `err=${toErrorMessage(err)}` : ''\n ],\n },\n {\n key: 'response_listen_end',\n method: 'responseListenEnd',\n label: '\u54CD\u5E94\u76D1\u542C\u7ED3\u675F',\n group: '\u54CD\u5E94\u76D1\u542C',\n step: '\u54CD\u5E94\u76D1\u542C',\n status: '\u7ED3\u675F',\n level: 'info',\n attention: 'low',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'response_wait_start',\n method: 'responseWaitStart',\n label: '\u7B49\u5F85\u54CD\u5E94\u5F00\u59CB',\n group: '\u7B49\u5F85\u54CD\u5E94',\n step: '\u7B49\u5F85\u54CD\u5E94',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'response_wait_success',\n method: 'responseWaitSuccess',\n label: '\u7B49\u5F85\u54CD\u5E94\u5B8C\u6210',\n group: '\u7B49\u5F85\u54CD\u5E94',\n step: '\u7B49\u5F85\u54CD\u5E94',\n status: '\u5B8C\u6210',\n level: 'success',\n attention: 'medium',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'response_wait_fail',\n method: 'responseWaitFail',\n label: '\u7B49\u5F85\u54CD\u5E94\u5931\u8D25',\n group: '\u7B49\u5F85\u54CD\u5E94',\n step: '\u7B49\u5F85\u54CD\u5E94',\n status: '\u5931\u8D25',\n level: 'warning',\n attention: 'high',\n buildDetails: (label, err) => [\n label ? `\u76EE\u6807=${label}` : '',\n err ? `err=${toErrorMessage(err)}` : ''\n ],\n },\n {\n key: 'response_wait_retry',\n method: 'responseWaitRetry',\n label: '\u7B49\u5F85\u54CD\u5E94\u91CD\u8BD5',\n group: '\u7B49\u5F85\u54CD\u5E94',\n step: '\u7B49\u5F85\u54CD\u5E94',\n status: '\u91CD\u8BD5',\n level: 'warning',\n attention: 'medium',\n buildDetails: (label, attempt) => [\n label ? `\u76EE\u6807=${label}` : '',\n attempt !== undefined ? `\u5C1D\u8BD5=${attempt}` : ''\n ],\n },\n {\n key: 'dom_wait_start',\n method: 'domWaitStart',\n label: 'DOM\u7A33\u5B9A\u7B49\u5F85\u5F00\u59CB',\n group: 'DOM',\n step: 'DOM\u7A33\u5B9A',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'dom_wait_fail',\n method: 'domWaitFail',\n label: 'DOM\u7A33\u5B9A\u7B49\u5F85\u5931\u8D25',\n group: 'DOM',\n step: 'DOM\u7A33\u5B9A',\n status: '\u5931\u8D25',\n level: 'warning',\n attention: 'high',\n buildDetails: (label, err) => [\n label ? `\u76EE\u6807=${label}` : '',\n err ? `err=${toErrorMessage(err)}` : ''\n ],\n },\n {\n key: 'dom_chunk',\n method: 'domChunk',\n label: 'DOM\u7247\u6BB5',\n group: 'DOM',\n step: 'DOM\u7247\u6BB5',\n status: '',\n level: 'info',\n attention: 'low',\n throttleKey: 'dom-chunk',\n throttleMs: 2000,\n buildDetails: (length, snippet, paused) => [\n length !== undefined ? `len=${length}` : '',\n snippet ? `preview=\"${normalizeSnippet(snippet)}\"` : '',\n paused ? 'paused=1' : ''\n ],\n },\n {\n key: 'dom_wait_success',\n method: 'domWaitSuccess',\n label: 'DOM\u7A33\u5B9A\u7B49\u5F85\u5B8C\u6210',\n group: 'DOM',\n step: 'DOM\u7A33\u5B9A',\n status: '\u5B8C\u6210',\n level: 'success',\n attention: 'medium',\n buildDetails: (mutationCount, stableTime, wasPaused) => [\n mutationCount !== undefined ? `mutations=${mutationCount}` : '',\n stableTime !== undefined ? `stableTime=${stableTime}ms` : '',\n wasPaused ? 'paused=1' : ''\n ],\n },\n {\n key: 'stream_chunk',\n method: 'streamChunk',\n label: '\u6D41\u5F0F\u7247\u6BB5',\n group: '\u6D41\u5F0F',\n step: '\u6D41\u5F0F\u7247\u6BB5',\n status: '',\n level: 'info',\n attention: 'low',\n throttleKey: 'stream-chunk',\n throttleMs: 2000,\n buildDetails: (length, snippet) => [\n length !== undefined ? `len=${length}` : '',\n snippet ? `preview=\"${normalizeSnippet(snippet)}\"` : ''\n ],\n },\n {\n key: 'stream_events_parsed',\n method: 'streamEventsParsed',\n label: '\u6D41\u5F0F\u4E8B\u4EF6\u89E3\u6790\u5B8C\u6210',\n group: '\u6D41\u5F0F',\n step: '\u6D41\u5F0F\u4E8B\u4EF6\u89E3\u6790',\n status: '\u5B8C\u6210',\n level: 'info',\n attention: 'low',\n throttleKey: 'stream-events',\n throttleMs: 4000,\n buildDetails: (count) => [count !== undefined ? `count=${count}` : ''],\n },\n {\n key: 'stream_complete_event',\n method: 'streamCompleteEvent',\n label: '\u6D41\u5F0F\u5B8C\u6210\u4E8B\u4EF6\u6355\u83B7',\n group: '\u6D41\u5F0F',\n step: '\u6D41\u5F0F\u4E8B\u4EF6',\n status: '\u5B8C\u6210\u4E8B\u4EF6\u5DF2\u6355\u83B7',\n level: 'success',\n attention: 'medium',\n },\n {\n key: 'stream_end',\n method: 'streamEnd',\n label: '\u6D41\u5F0F\u54CD\u5E94\u7ED3\u675F',\n group: '\u6D41\u5F0F',\n step: '\u6D41\u5F0F\u54CD\u5E94',\n status: '\u7ED3\u675F',\n level: 'info',\n attention: 'low',\n },\n {\n key: 'reference_expand_start',\n method: 'referenceExpandStart',\n label: '\u5F15\u7528\u5C55\u5F00\u5F00\u59CB',\n group: '\u5F15\u7528',\n step: '\u5F15\u7528\u5C55\u5F00',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n buildDetails: (label) => [label ? `\u76EE\u6807=${label}` : ''],\n },\n {\n key: 'reference_expand_fail',\n method: 'referenceExpandFail',\n label: '\u5F15\u7528\u5C55\u5F00\u5931\u8D25',\n group: '\u5F15\u7528',\n step: '\u5F15\u7528\u5C55\u5F00',\n status: '\u5931\u8D25',\n level: 'warning',\n attention: 'medium',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'screenshot_start',\n method: 'screenshotStart',\n label: '\u622A\u56FE\u5F00\u59CB',\n group: '\u622A\u56FE',\n step: '\u622A\u56FE',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n },\n {\n key: 'screenshot_success',\n method: 'screenshotSuccess',\n label: '\u622A\u56FE\u6210\u529F',\n group: '\u622A\u56FE',\n step: '\u622A\u56FE',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'high',\n },\n {\n key: 'screenshot_fail',\n method: 'screenshotFail',\n label: '\u622A\u56FE\u5931\u8D25',\n group: '\u622A\u56FE',\n step: '\u622A\u56FE',\n status: '\u5931\u8D25',\n level: 'warning',\n attention: 'high',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'share_start',\n method: 'shareStart',\n label: '\u5206\u4EAB\u94FE\u63A5\u5F00\u59CB',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: '\u5F00\u59CB',\n level: 'start',\n attention: 'low',\n },\n {\n key: 'share_progress',\n method: 'shareProgress',\n label: '\u5206\u4EAB\u94FE\u63A5\u6B65\u9AA4',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: '\u6B65\u9AA4',\n level: 'info',\n attention: 'low',\n buildDetails: (label) => [label ? `\u6B65\u9AA4=${label}` : ''],\n },\n {\n key: 'share_dom_hit',\n method: 'shareDomHit',\n label: '\u5206\u4EAB\u94FE\u63A5DOM\u547D\u4E2D',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: 'DOM\u547D\u4E2D',\n level: 'info',\n attention: 'low',\n buildDetails: (link, domSnapshot) => [\n link ? `\u94FE\u63A5=${link}` : '',\n domSnapshot ? `DOM=${normalizeSnippet(domSnapshot, 220)}` : ''\n ],\n },\n {\n key: 'share_source',\n method: 'shareSource',\n label: '\u5206\u4EAB\u94FE\u63A5\u6765\u6E90',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: '\u6765\u6E90',\n level: 'info',\n attention: 'low',\n buildDetails: (source, link, domSnapshot) => [\n source ? `\u6765\u6E90=${source}` : '',\n link ? `\u94FE\u63A5=${link}` : '',\n source === 'dom' && domSnapshot ? `DOM=${normalizeSnippet(domSnapshot, 220)}` : ''\n ],\n },\n {\n key: 'share_success',\n method: 'shareSuccess',\n label: '\u5206\u4EAB\u94FE\u63A5\u6210\u529F',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'high',\n buildDetails: (link) => [link ? `\u94FE\u63A5=${link}` : ''],\n },\n {\n key: 'share_fail',\n method: 'shareFail',\n label: '\u5206\u4EAB\u94FE\u63A5\u5931\u8D25',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: '\u5931\u8D25',\n level: 'warning',\n attention: 'high',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'share_skip',\n method: 'shareSkip',\n label: '\u5206\u4EAB\u94FE\u63A5\u8DF3\u8FC7',\n group: '\u5206\u4EAB',\n step: '\u5206\u4EAB\u94FE\u63A5',\n status: '\u8DF3\u8FC7',\n level: 'warning',\n attention: 'medium',\n buildDetails: (reason) => [reason ? `\u539F\u56E0=${reason}` : ''],\n },\n {\n key: 'ai_search_card_detect_attempt',\n method: 'aiSearchCardDetectAttempt',\n label: 'AI Search \u5361\u7247\u8BC6\u522B\u5C1D\u8BD5',\n group: 'AI Search',\n step: 'AI Search \u5361\u7247\u8BC6\u522B',\n status: '\u5C1D\u8BD5',\n level: 'info',\n attention: 'low',\n buildDetails: (attempt = 1, maxAttempts = 1, url = '') => [\n `attempt=${attempt}/${maxAttempts}`,\n url ? `url=${url}` : '',\n ],\n },\n {\n key: 'ai_search_card_detect_success',\n method: 'aiSearchCardDetectSuccess',\n label: 'AI Search \u5361\u7247\u8BC6\u522B\u6210\u529F',\n group: 'AI Search',\n step: 'AI Search \u5361\u7247\u8BC6\u522B',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'high',\n buildDetails: (cardType = '', attempts = 1, refreshCount = 0, url = '') => [\n cardType ? `cardType=${cardType}` : '',\n `attempts=${attempts}`,\n `refreshCount=${refreshCount}`,\n url ? `url=${url}` : '',\n ],\n },\n {\n key: 'ai_search_card_empty_result_success',\n method: 'aiSearchCardEmptyResultSuccess',\n label: 'AI Search \u7A7A\u7ED3\u679C\u6210\u529F',\n group: 'AI Search',\n step: 'AI Search \u7A7A\u7ED3\u679C',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'high',\n buildDetails: (contentLeftTpls = [], targetTpls = [], url = '', attempts = 0, refreshCount = 0) => [\n Array.isArray(contentLeftTpls) ? `contentLeftTpls=${normalizeSnippet(contentLeftTpls.join(','), 200)}` : '',\n Array.isArray(targetTpls) ? `targetTpls=${normalizeSnippet(targetTpls.join(','), 200)}` : '',\n `attempts=${attempts}`,\n `refreshCount=${refreshCount}`,\n url ? `url=${url}` : '',\n ],\n },\n {\n key: 'data_push_success',\n method: 'dataPushSuccess',\n label: '\u6570\u636E\u63A8\u9001\u6210\u529F',\n group: '\u6570\u636E\u63A8\u9001',\n step: '\u6570\u636E\u63A8\u9001',\n status: '\u6210\u529F',\n level: 'success',\n attention: 'medium',\n buildDetails: (label) => [label ? `\u8BF4\u660E=${label}` : ''],\n },\n {\n key: 'data_push_fail',\n method: 'dataPushFail',\n label: '\u6570\u636E\u63A8\u9001\u5931\u8D25',\n group: '\u6570\u636E\u63A8\u9001',\n step: '\u6570\u636E\u63A8\u9001',\n status: '\u5931\u8D25',\n level: 'error',\n attention: 'high',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n {\n key: 'popup_detected',\n method: 'popupDetected',\n label: '\u5F39\u7A97\u68C0\u6D4B',\n group: '\u5F39\u7A97',\n step: '\u5F39\u7A97\u5904\u7406',\n status: '\u68C0\u6D4B\u5230\u906E\u7F69',\n level: 'warning',\n attention: 'medium',\n buildDetails: (detail) => [detail ? `detail=${detail}` : ''],\n },\n {\n key: 'popup_close_attempt',\n method: 'popupCloseAttempt',\n label: '\u5F39\u7A97\u5173\u95ED\u5C1D\u8BD5',\n group: '\u5F39\u7A97',\n step: '\u5F39\u7A97\u5904\u7406',\n status: '\u5C1D\u8BD5\u5173\u95ED',\n level: 'info',\n attention: 'low',\n buildDetails: (detail) => [detail ? `detail=${detail}` : ''],\n },\n {\n key: 'popup_close_success',\n method: 'popupCloseSuccess',\n label: '\u5F39\u7A97\u5173\u95ED\u5B8C\u6210',\n group: '\u5F39\u7A97',\n step: '\u5F39\u7A97\u5904\u7406',\n status: '\u5173\u95ED\u5B8C\u6210',\n level: 'success',\n attention: 'medium',\n },\n {\n key: 'popup_close_fail',\n method: 'popupCloseFail',\n label: '\u5F39\u7A97\u5173\u95ED\u5931\u8D25',\n group: '\u5F39\u7A97',\n step: '\u5F39\u7A97\u5904\u7406',\n status: '\u5173\u95ED\u5931\u8D25',\n level: 'warning',\n attention: 'medium',\n buildDetails: (err) => [err ? `err=${toErrorMessage(err)}` : ''],\n },\n];\n\nexport const LOG_TEMPLATES = LOG_DEFINITIONS.map((definition) => {\n const attention = definition.attention || 'medium';\n const attentionRank = ATTENTION_RANK[attention] || ATTENTION_RANK.medium;\n const defaultSelected = attentionRank >= DEFAULT_ATTENTION_RANK;\n return {\n key: definition.key,\n label: definition.label,\n group: definition.group,\n attention,\n patterns: buildDefinitionPatterns(definition),\n defaultSelected,\n };\n});\n\nconst buildStepLine = (step, status, details = []) => {\n const parts = [];\n const decoratedStep = step ? decorateLabel(step, STEP_EMOJIS) : '';\n const base = decoratedStep ? `${STEP_PREFIX} ${decoratedStep}` : STEP_PREFIX;\n parts.push(base.trim());\n if (status) parts.push(decorateLabel(status, STATUS_EMOJIS));\n const detailParts = details.filter(Boolean);\n if (detailParts.length > 0) {\n parts.push(...detailParts);\n }\n return parts.join(STEP_SEPARATOR);\n};\n\nconst createThrottle = () => {\n const lastMap = new Map();\n return (key, intervalMs, fn) => {\n const now = Date.now();\n const last = lastMap.get(key) || 0;\n if (now - last >= intervalMs) {\n lastMap.set(key, now);\n fn();\n }\n };\n};\n\nexport const createTemplateLogger = (baseLogger = createBaseLogger()) => {\n const throttle = createThrottle();\n\n const info = (line) => baseLogger.info(line);\n const success = (line) => baseLogger.success(line);\n const warning = (line) => baseLogger.warning(line);\n const error = (line) => baseLogger.error(line);\n const debug = (line) => baseLogger.debug(line);\n const start = (line) => baseLogger.start(line);\n\n const stepInfo = (step, status, details = []) => info(buildStepLine(step, status, details));\n const stepSuccess = (step, status, details = []) => success(buildStepLine(step, status, details));\n const stepWarn = (step, status, details = []) => warning(buildStepLine(step, status, details));\n const stepError = (step, status, details = []) => error(buildStepLine(step, status, details));\n const stepStart = (step, status, details = []) => start(buildStepLine(step, status, details));\n\n const stepHandlers = {\n info: stepInfo,\n success: stepSuccess,\n warning: stepWarn,\n error: stepError,\n start: stepStart,\n };\n\n const logFromDefinition = (definition, details = []) => {\n const handler = stepHandlers[definition.level] || stepInfo;\n const payload = [...details, buildLogTag(definition.key)];\n const emit = () => handler(definition.step, definition.status, payload);\n if (definition.throttleMs) {\n throttle(definition.throttleKey || definition.key, definition.throttleMs, emit);\n return;\n }\n emit();\n };\n\n const definitionMethods = {};\n LOG_DEFINITIONS.forEach((definition) => {\n if (!definition.method) return;\n definitionMethods[definition.method] = (...args) => {\n const details = definition.buildDetails ? definition.buildDetails(...args) : [];\n logFromDefinition(definition, details);\n };\n });\n\n return {\n step: (step, status, details, level = 'info') => {\n if (level === 'error') return stepError(step, status, details);\n if (level === 'warn' || level === 'warning') return stepWarn(step, status, details);\n if (level === 'start') return stepStart(step, status, details);\n if (level === 'success') return stepSuccess(step, status, details);\n return stepInfo(step, status, details);\n },\n info: (message) => info(message),\n success: (message) => success(message),\n warning: (message) => warning(message),\n warn: (message) => warning(message),\n error: (message) => error(message),\n debug: (message) => debug(message),\n start: (message) => start(message),\n ...definitionMethods,\n };\n};\n\nconst getDefaultBaseLogger = () => createBaseLogger('');\n\nexport const Logger = {\n setLogger: (logger) => setDefaultLogger(logger),\n info: (message) => getDefaultBaseLogger().info(message),\n success: (message) => getDefaultBaseLogger().success(message),\n warning: (message) => getDefaultBaseLogger().warning(message),\n warn: (message) => getDefaultBaseLogger().warning(message),\n error: (message) => getDefaultBaseLogger().error(message),\n debug: (message) => getDefaultBaseLogger().debug(message),\n start: (message) => getDefaultBaseLogger().start(message),\n useTemplate: (logger) => {\n if (logger) return createTemplateLogger(createBaseLogger('', logger));\n return createTemplateLogger();\n },\n};\n", "export const Display = {\n parseTokenDisplayName(value) {\n if (!value) {\n return { owner: '', envType: '', note: '' };\n }\n const parts = String(value).split(':');\n const owner = (parts[0] || '').trim();\n const envType = (parts[1] || '').trim();\n const note = parts.length > 2 ? parts.slice(2).join(':').trim() : '';\n return { owner, envType, note };\n },\n\n parseEnvDisplayName(value) {\n if (!value) {\n return { env: '', owner: '', envType: '', note: '' };\n }\n const parts = String(value).split(':');\n const env = (parts[0] || '').trim();\n const owner = (parts[1] || '').trim();\n const envType = (parts[2] || '').trim();\n const note = parts.length > 3 ? parts.slice(3).join(':').trim() : '';\n return { env, owner, envType, note };\n },\n\n buildTokenDisplayName({ owner, envType, note } = {}) {\n const trimmedOwner = owner?.trim() || '';\n const trimmedType = envType?.trim() || '';\n const trimmedNote = note?.trim() || '';\n const parts = [trimmedOwner, trimmedType];\n if (trimmedNote) {\n parts.push(trimmedNote);\n }\n return parts.filter(Boolean).join(':');\n },\n\n shortId(value, max = 8) {\n const clean = String(value || '').trim();\n if (!clean) return '';\n if (clean.length <= max) return clean;\n return clean.slice(0, max);\n },\n\n resolveTokenIdentity(displayName, tokenId) {\n const cleanName = String(displayName || '').trim();\n const cleanId = String(tokenId || '').trim();\n const short = this.shortId(cleanId, 8);\n const hasName = cleanName !== '' && cleanName !== cleanId;\n const primary = hasName ? cleanName : (short || '-');\n const secondary = hasName && short ? short : '';\n return { primary, secondary, fullId: cleanId, shortId: short };\n },\n\n resolveEnvIdentity(displayName, envId) {\n const parts = this.parseEnvDisplayName(displayName);\n const cleanId = String(envId || '').trim();\n const short = this.shortId(cleanId, 8);\n const hasName = parts.env !== '' && parts.env !== cleanId;\n const primary = hasName ? parts.env : (short || '-');\n const secondary = hasName && short ? short : '';\n return { primary, secondary, parts, fullId: cleanId, shortId: short };\n },\n};\n", "export const Code = {\n Success: 0,\n UnknownError: -1,\n NotLogin: 30000001,\n Chaptcha: 30000002,\n Timeout: 30000003,\n InitialTimeout: 30000004,\n OverallTimeout: 30000005,\n}\n\nexport const Status = {\n Success: 'SUCCESS',\n Failed: 'FAILED'\n}\n\nexport const PresetOfLiveViewKey = 'LIVE_VIEW_SCREENSHOT';\n\n\nconst createActorInfo = (info) => {\n const normalizeDomain = (value) => {\n if (!value) return '';\n return String(value).trim().replace(/^https?:\\/\\//, '').replace(/\\/.*$/, '');\n };\n\n const normalizePath = (value) => {\n if (!value) return '/';\n const raw = String(value).trim();\n if (!raw) return '/';\n return raw.startsWith('/') ? raw : `/${raw}`;\n };\n\n const normalizeShare = (value) => {\n const raw = value && typeof value === 'object' ? value : {};\n\n const modeRaw = String(raw.mode || 'dom').trim().toLowerCase();\n const mode = modeRaw === 'response' ? 'response' : 'dom';\n\n const prefix = String(raw.prefix || '').trim();\n\n const rawXurl = Array.isArray(raw.xurl)\n ? raw.xurl\n : [];\n\n const normalizeMatcherList = (input) => {\n if (Array.isArray(input)) {\n return input\n .map((item) => String(item || '').trim().replace(/\\.+$/, ''))\n .filter(Boolean);\n }\n\n const single = String(input || '').trim().replace(/\\.+$/, '');\n return single ? [single] : [];\n };\n\n const normalizeSegments = (input) => {\n if (Array.isArray(input)) {\n return input\n .map((item) => String(item || '').trim().replace(/\\.+$/, ''))\n .filter(Boolean);\n }\n\n const rawPath = String(input || '').trim();\n if (!rawPath) return [];\n\n return rawPath\n .split('.')\n .map((segment) => String(segment || '').trim().replace(/\\.+$/, ''))\n .filter(Boolean);\n };\n\n const xurl = [];\n\n const matcherList = normalizeMatcherList(rawXurl[0]);\n if (matcherList.length > 0) {\n xurl.push(matcherList);\n }\n\n const flatPath = [];\n const extraPaths = [];\n\n rawXurl.slice(1).forEach((item) => {\n if (Array.isArray(item)) {\n const segments = normalizeSegments(item);\n if (segments.length > 0) {\n extraPaths.push(segments);\n }\n return;\n }\n\n const segments = normalizeSegments(item);\n if (segments.length > 0) {\n flatPath.push(...segments);\n }\n });\n\n if (flatPath.length > 0) {\n xurl.push(flatPath);\n }\n\n if (extraPaths.length > 0) {\n xurl.push(...extraPaths);\n }\n\n return {\n mode,\n prefix,\n xurl,\n };\n };\n\n const buildLandingUrl = ({ protocol, domain, path }) => {\n const safeProtocol = String(protocol).trim();\n const safeDomain = normalizeDomain(domain);\n const safePath = normalizePath(path);\n return `${safeProtocol}://${safeDomain}${safePath}`;\n };\n\n const buildIcon = ({ key }) => {\n return `https://heartbitai.com/general/actors/${key}.png`;\n }\n\n\n const protocol = info.protocol || 'https';\n const domain = normalizeDomain(info.domain);\n const path = normalizePath(info.path);\n const share = normalizeShare(info.share);\n\n return {\n ...info,\n protocol,\n domain,\n path,\n share,\n get icon() {\n if (info.icon) return info.icon;\n return buildIcon(this);\n },\n get landingUrl() {\n return buildLandingUrl(this);\n },\n };\n};\n\nexport const ActorInfo = {\n qbot: createActorInfo({\n key: 'qbot',\n name: 'QQ\u6D4F\u89C8\u5668AI\u641C',\n domain: 'sogou.com',\n path: '/web',\n share: {\n mode: 'dom',\n prefix: '',\n xurl: [],\n },\n }),\n douyin: createActorInfo({\n key: 'douyin',\n name: '\u6296\u97F3AI\u641C',\n domain: 'so.douyin.com',\n path: '/',\n share: {\n mode: 'dom',\n prefix: '',\n xurl: [\n ],\n },\n }),\n lingguang: createActorInfo({\n key: 'lingguang',\n name: '\u7075\u5149',\n domain: 'www.lingguang.com',\n path: '/',\n share: {\n mode: 'response',\n prefix: 'https://www.lingguang.com/share/',\n xurl: [\n '/chat/shareChat.json',\n 'result',\n ],\n },\n }),\n doubao: createActorInfo({\n key: 'doubao',\n name: '\u8C46\u5305',\n domain: 'www.doubao.com',\n path: '/',\n share: {\n mode: 'response',\n prefix: 'https://www.doubao.com/thread/',\n xurl: [\n '/samantha/thread/share/save',\n 'data', 'share_id',\n ],\n },\n }),\n deepseek: createActorInfo({\n key: 'deepseek',\n name: 'DeepSeek',\n domain: 'chat.deepseek.com',\n path: '/',\n share: {\n mode: 'response',\n prefix: 'https://chat.deepseek.com/share/',\n xurl: [\n '/api/v0/share/create',\n 'data', 'biz_data', 'share_id',\n ],\n },\n }),\n erine: createActorInfo({\n key: 'erine',\n name: '\u6587\u5FC3\u4E00\u8A00',\n domain: 'yiyan.baidu.com',\n path: '/',\n share: {\n mode: 'response',\n prefix: 'https://yiyan.baidu.com/share/',\n xurl: [\n '/eb/share/key/gen',\n 'data', 'key',\n ],\n },\n }),\n wenxin: createActorInfo({\n key: 'wenxin',\n name: '\u6587\u5FC3\u52A9\u624B',\n domain: 'chat.baidu.com',\n path: '/',\n share: {\n mode: 'response',\n prefix: '',\n xurl: [\n '/aichat/api/shortURL',\n 'data', 'short_url',\n ],\n },\n }),\n baidu: createActorInfo({\n key: 'baidu',\n name: '\u767E\u5EA6AI\u641C',\n domain: 'www.baidu.com',\n path: '/s',\n share: {\n mode: 'response',\n prefix: '',\n xurl: [\n '/aichat/api/shortURL',\n 'data', 'short_url',\n ],\n },\n }),\n yuanbao: createActorInfo({\n key: 'yuanbao',\n name: '\u5143\u5B9D',\n domain: 'yuanbao.tencent.com',\n path: '/chat/',\n share: {\n mode: 'response',\n prefix: 'https://yb.tencent.com/s/',\n xurl: [\n '/api/conversations/v2/share', 'shareId',\n ],\n },\n }),\n kimi: createActorInfo({\n key: 'kimi',\n name: 'Kimi',\n domain: 'www.kimi.com',\n path: '/',\n share: {\n mode: 'response',\n prefix: 'https://www.kimi.com/share/',\n xurl: [\n '/kimi.gateway.chat.v1.ChatService/CreateChatShare', 'share', 'id'\n ],\n },\n }),\n qwen: createActorInfo({\n key: 'qwen',\n name: '\u901A\u4E49\u5343\u95EE',\n domain: 'www.qianwen.com',\n path: '/chat',\n share: {\n mode: 'response',\n prefix: 'https://www.qianwen.com/share/chat/',\n xurl: [\n '/api/v1/share/create', 'data', 'share_id'\n ],\n },\n }),\n nano: createActorInfo({\n key: 'nano',\n name: '\u7EB3\u7C73',\n domain: 'www.n.cn',\n path: '/',\n share: {\n mode: 'response',\n prefix: 'https://www.n.cn/share/mcp?id=',\n xurl: [\n '/api/share/gen', 'data', 'id'\n ],\n },\n }),\n}\n", "import picomatch from 'picomatch';\n\nconst normalizeByPassDomains = (domains) => {\n if (!Array.isArray(domains)) return [];\n return domains\n .map((item) => String(item || '').trim())\n .filter(Boolean);\n};\n\nconst normalizeHostname = (value = '') => String(value || '').trim().toLowerCase();\n\nconst buildByPassDomainRule = (rawPattern) => {\n const pattern = String(rawPattern || '').trim().toLowerCase();\n if (!pattern) return null;\n\n let matcher;\n try {\n matcher = picomatch(pattern, { nocase: true });\n } catch {\n return null;\n }\n\n return {\n pattern,\n test: (hostname) => matcher(String(hostname || '').toLowerCase()),\n };\n};\n\nconst buildByPassDomainRules = (domains = []) => {\n return normalizeByPassDomains(domains)\n .map((domain) => buildByPassDomainRule(domain))\n .filter(Boolean);\n};\n\nconst findMatchedByPassRule = (rules = [], requestUrl = '') => {\n let hostname = '';\n try {\n hostname = normalizeHostname(new URL(String(requestUrl || '')).hostname);\n } catch {\n return null;\n }\n\n for (const rule of rules) {\n if (rule && typeof rule.test === 'function' && rule.test(hostname)) {\n return {\n rule,\n hostname,\n };\n }\n }\n\n return {\n rule: null,\n hostname,\n };\n};\n\nconst isDomainCoveredByByPass = (domain = '', rules = []) => {\n const hostname = normalizeHostname(domain);\n if (!hostname) return false;\n\n for (const rule of rules || []) {\n if (!rule || typeof rule.test !== 'function') continue;\n if (rule.test(hostname)) return true;\n }\n\n return false;\n};\n\nconst resolveRouteByProxy = ({\n requestUrl = '',\n enableProxy = false,\n byPassRules = [],\n}) => {\n if (!enableProxy) {\n return { route: 'direct', matchedRule: null, hostname: '' };\n }\n\n const matched = findMatchedByPassRule(byPassRules, requestUrl);\n if (!matched) {\n return { route: 'proxy', matchedRule: null, hostname: '' };\n }\n\n if (matched.rule) {\n return { route: 'direct', matchedRule: matched.rule, hostname: matched.hostname };\n }\n\n return { route: 'proxy', matchedRule: null, hostname: matched.hostname };\n};\n\nexport const ByPass = {\n normalizeByPassDomains,\n normalizeHostname,\n buildByPassDomainRule,\n buildByPassDomainRules,\n findMatchedByPassRule,\n isDomainCoveredByByPass,\n resolveRouteByProxy,\n};\n", "const BROWSER_PROFILE_SCHEMA_VERSION = 1;\n\nlet rememberedRuntimeState = null;\n\nconst isPlainObject = (value) => value && typeof value === 'object' && !Array.isArray(value);\n\n// \u8FD0\u884C\u6001\u5FEB\u7167\u5728 visitor / toolkit / \u540E\u7AEF\u4E4B\u95F4\u6765\u56DE\u4F20\u9012\uFF0C\n// \u6240\u4EE5\u6240\u6709\u5165\u53E3\u90FD\u5148\u8D70 deepClone\uFF0C\u907F\u514D\u5171\u4EAB\u5F15\u7528\u5F15\u53D1\u201C\u8FB9\u8DD1\u8FB9\u6539\u201D\u7684\u9690\u5F0F\u526F\u4F5C\u7528\u3002\nconst deepClone = (value) => {\n if (value == null) return value;\n try {\n return JSON.parse(JSON.stringify(value));\n } catch {\n return value;\n\t}\n};\n\n// \u5C1D\u8BD5\u628A runtime / browser_profile \u4E4B\u7C7B\u7684 JSON \u5B57\u6BB5\u89E3\u6790\u6210\u5BF9\u8C61\u3002\nconst tryParseJSON = (value) => {\n if (value == null) return null;\n if (typeof value === 'object') return value;\n const raw = String(value || '').trim();\n if (!raw) return null;\n try {\n return JSON.parse(raw);\n } catch {\n return null;\n\t}\n};\n\n// local/session/auth \u7684\u89C4\u8303\u5316\u76EE\u6807\u53EA\u6709\u4E00\u4E2A\uFF1A\u8FC7\u6EE4\u7A7A\u503C\uFF0C\u7EDF\u4E00\u8F6C\u6210\u5B57\u7B26\u4E32\u3002\nconst normalizeLocalStorage = (value) => {\n const source = value && typeof value === 'object' && !Array.isArray(value) ? value : {};\n return Object.entries(source).reduce((acc, [key, item]) => {\n const safeKey = String(key || '').trim();\n const safeValue = String(item ?? '').trim();\n if (!safeKey || !safeValue || safeValue === '<nil>') return acc;\n acc[safeKey] = safeValue;\n return acc;\n }, {});\n};\n\nconst normalizeSessionStorage = (value) => {\n const source = value && typeof value === 'object' && !Array.isArray(value) ? value : {};\n return Object.entries(source).reduce((acc, [key, item]) => {\n const safeKey = String(key || '').trim();\n const safeValue = String(item ?? '').trim();\n if (!safeKey || !safeValue || safeValue === '<nil>') return acc;\n acc[safeKey] = safeValue;\n return acc;\n }, {});\n};\n\nconst normalizeAuth = (value) => {\n const source = value && typeof value === 'object' && !Array.isArray(value) ? value : {};\n return Object.entries(source).reduce((acc, [key, item]) => {\n const safeKey = String(key || '').trim();\n const safeValue = String(item ?? '').trim();\n if (!safeKey || !safeValue || safeValue === '<nil>') return acc;\n acc[safeKey] = safeValue;\n return acc;\n }, {});\n};\n\nconst normalizeCookieSameSite = (value) => {\n const raw = String(value || '').trim().toLowerCase();\n if (!raw) return '';\n\n switch (raw) {\n case 'strict':\n return 'Strict';\n case 'lax':\n return 'Lax';\n case 'none':\n case 'no_restriction':\n return 'None';\n case 'unspecified':\n default:\n return '';\n }\n};\n\nconst normalizeCookieExpires = (raw = {}) => {\n const source = raw && typeof raw === 'object' ? raw : {};\n const session = Boolean(source.session);\n if (session) return null;\n\n const expiresCandidate = Number(source.expires);\n if (Number.isFinite(expiresCandidate) && expiresCandidate > 0) {\n return expiresCandidate;\n }\n\n const expirationDateCandidate = Number(source.expirationDate);\n if (Number.isFinite(expirationDateCandidate) && expirationDateCandidate > 0) {\n return expirationDateCandidate;\n }\n\n return null;\n};\n\nconst normalizeCookies = (value) => {\n if (!Array.isArray(value)) return [];\n return value\n .map((item) => {\n const raw = item && typeof item === 'object' ? item : {};\n const name = String(raw.name || '').trim();\n const cookieValue = String(raw.value ?? '').trim();\n if (!name || !cookieValue || cookieValue === '<nil>') return null;\n const domain = String(raw.domain || '').trim();\n const url = normalizeHttpUrl(raw.url);\n const path = String(raw.path || '').trim() || '/';\n const sameSite = normalizeCookieSameSite(raw.sameSite);\n const expires = normalizeCookieExpires(raw);\n const secure = Boolean(raw.secure);\n const httpOnly = Boolean(raw.httpOnly);\n const partitionKey = typeof raw.partitionKey === 'string' ? String(raw.partitionKey).trim() : '';\n\n // \u7EDF\u4E00\u8F93\u51FA Playwright \u53EF\u63A5\u53D7\u7684 Cookie \u7ED3\u6784\uFF0C\u907F\u514D\u628A Chrome \u6269\u5C55\u4FA7\u5B57\u6BB5\u539F\u6837\u900F\u4F20\u8FC7\u53BB\u3002\n const normalized = {\n name,\n value: cookieValue,\n path,\n ...(domain ? { domain } : {}),\n ...(!domain && url ? { url } : {}),\n ...(sameSite ? { sameSite } : {}),\n ...(secure ? { secure: true } : {}),\n ...(httpOnly ? { httpOnly: true } : {}),\n ...(expires !== null ? { expires } : {}),\n ...(partitionKey ? { partitionKey } : {}),\n };\n\n if (!normalized.domain && !normalized.url) {\n return null;\n }\n\n return {\n ...normalized,\n };\n })\n .filter(Boolean);\n};\n\nconst buildCookieMap = (cookies) => cookies.reduce((acc, item) => {\n\tacc[item.name] = item.value;\n\treturn acc;\n}, {});\n\n// \u7EDF\u4E00\u628A\u539F\u59CB URL \u5FEB\u7167\u8FC7\u6EE4\u6210 http/https\uFF0C\u907F\u514D browser/runtime \u4E24\u7AEF\u5404\u81EA\u505A\u4E00\u5957\u5224\u65AD\u3002\nconst normalizeHttpUrl = (value) => {\n const raw = String(value || '').trim();\n if (!raw) return '';\n try {\n const parsed = new URL(raw);\n if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') return '';\n parsed.hash = '';\n return parsed.toString();\n } catch {\n return '';\n }\n};\n\nconst uniqueStrings = (value) => {\n const list = Array.isArray(value) ? value : [];\n const seen = new Set();\n const result = [];\n list.forEach((item) => {\n const normalized = String(item || '').trim();\n if (!normalized || seen.has(normalized)) return;\n seen.add(normalized);\n result.push(normalized);\n });\n return result;\n};\n\nconst normalizeHttpUrlList = (value) => uniqueStrings(\n (Array.isArray(value) ? value : [value])\n .map((item) => normalizeHttpUrl(item))\n .filter(Boolean),\n);\n\nconst normalizeCookieDomain = (value) => String(value || '').trim().replace(/^\\./, '').toLowerCase();\n\nconst normalizeCookiePath = (value) => {\n const raw = String(value || '').trim();\n if (!raw) return '/';\n return raw.startsWith('/') ? raw : `/${raw}`;\n};\n\nconst doesCookieMatchUrl = (cookie, url) => {\n if (!cookie || !url) return false;\n try {\n const parsed = new URL(url);\n const host = String(parsed.hostname || '').trim().toLowerCase();\n const pathname = String(parsed.pathname || '/').trim() || '/';\n const cookieDomain = normalizeCookieDomain(cookie.domain);\n const cookiePath = normalizeCookiePath(cookie.path);\n if (!host || !cookieDomain) return false;\n const domainMatched = host === cookieDomain || host.endsWith(`.${cookieDomain}`);\n if (!domainMatched) return false;\n if (cookie.secure && parsed.protocol !== 'https:') return false;\n return pathname.startsWith(cookiePath);\n } catch {\n return false;\n }\n};\n\nconst normalizeRawSnapshot = (value = {}) => {\n const source = isPlainObject(value) ? value : {};\n const pageUrl = normalizeHttpUrl(source.page_url ?? source.pageUrl);\n const frameUrls = normalizeHttpUrlList(source.frame_urls ?? source.frameUrls);\n const resourceUrls = normalizeHttpUrlList(source.resource_urls ?? source.resourceUrls);\n const browserProfileObservedSource =\n source.browser_profile_observed\n ?? source.browserProfileObserved\n ?? source.browser_profile?.observed\n ?? source.browserProfile?.observed\n ?? source.browserProfile;\n\n return {\n page_url: pageUrl,\n frame_urls: frameUrls,\n resource_urls: resourceUrls,\n cookies: Array.isArray(source.cookies) ? deepClone(source.cookies) : [],\n local_storage: normalizeLocalStorage(source.local_storage ?? source.localStorage),\n session_storage: normalizeSessionStorage(source.session_storage ?? source.sessionStorage),\n browser_profile_observed: normalizeObservedBrowserProfile(browserProfileObservedSource),\n auth: normalizeAuth(source.auth),\n };\n};\n\nconst collectCookieUrlsFromSnapshot = (snapshot = {}) => {\n const normalized = normalizeRawSnapshot(snapshot);\n return uniqueStrings([\n normalized.page_url,\n ...normalized.frame_urls,\n ...normalized.resource_urls,\n ].filter(Boolean));\n};\n\nconst filterCookiesBySnapshot = (cookies = [], snapshot = {}) => {\n const normalizedCookies = normalizeCookies(cookies);\n const cookieUrls = collectCookieUrlsFromSnapshot(snapshot);\n if (cookieUrls.length === 0) {\n return normalizedCookies;\n }\n return normalizedCookies.filter((cookie) => cookieUrls.some((url) => doesCookieMatchUrl(cookie, url)));\n};\n\nconst buildEnvPayloadFromSnapshot = (snapshot = {}, options = {}) => {\n const normalized = normalizeRawSnapshot(snapshot);\n const cookies = filterCookiesBySnapshot(snapshot?.cookies || normalized.cookies, normalized);\n const localStorage = normalized.local_storage;\n const sessionStorage = normalized.session_storage;\n const auth = normalizeAuth(options.auth ?? normalized.auth);\n const browserProfileCore = normalizeBrowserProfileCore(\n options.browserProfileCore\n ?? snapshot?.browser_profile?.core\n ?? snapshot?.browserProfile?.core,\n );\n const browserProfile = buildBrowserProfilePayload(browserProfileCore, normalized.browser_profile_observed);\n\n const payload = {\n ...(cookies.length > 0 ? { cookies } : {}),\n ...(Object.keys(localStorage).length > 0 ? { local_storage: localStorage } : {}),\n ...(Object.keys(sessionStorage).length > 0 ? { session_storage: sessionStorage } : {}),\n ...(Object.keys(auth).length > 0 ? { auth } : {}),\n ...(Object.keys(browserProfile).length > 0 ? { browser_profile: browserProfile } : {}),\n };\n return Object.keys(payload).length > 0 ? payload : null;\n};\n\nconst captureRawSnapshotFromPage = async (page) => {\n const frameUrls = typeof page?.frames === 'function'\n ? page.frames().map((frame) => {\n try {\n return frame.url();\n } catch {\n return '';\n }\n })\n : [];\n\n const snapshot = await page.evaluate(() => {\n const localStorage = {};\n const sessionStorage = {};\n const resourceUrls = [];\n const frameUrls = [];\n\n try {\n for (let i = 0; i < window.localStorage.length; i += 1) {\n const key = window.localStorage.key(i);\n if (!key) continue;\n const value = window.localStorage.getItem(key);\n if (value !== null) localStorage[key] = value;\n }\n } catch {\n // ignore\n }\n\n try {\n for (let i = 0; i < window.sessionStorage.length; i += 1) {\n const key = window.sessionStorage.key(i);\n if (!key) continue;\n const value = window.sessionStorage.getItem(key);\n if (value !== null) sessionStorage[key] = value;\n }\n } catch {\n // ignore\n }\n\n try {\n const perfEntries = performance.getEntriesByType('resource') || [];\n perfEntries.forEach((entry) => {\n const name = String(entry?.name || '').trim();\n if (name) resourceUrls.push(name);\n });\n } catch {\n // ignore\n }\n\n try {\n document.querySelectorAll('iframe,frame').forEach((node) => {\n const src = String(node?.src || '').trim();\n if (src) frameUrls.push(src);\n });\n } catch {\n // ignore\n }\n\n const nav = window.navigator || {};\n const screen = window.screen || {};\n const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone || '';\n\n return {\n page_url: window.location.href || '',\n frame_urls: frameUrls,\n resource_urls: resourceUrls,\n local_storage: localStorage,\n session_storage: sessionStorage,\n browser_profile_observed: {\n user_agent: nav.userAgent || '',\n platform: nav.platform || '',\n language: nav.language || '',\n languages: Array.isArray(nav.languages) ? nav.languages : [],\n hardware_concurrency: Number(nav.hardwareConcurrency || 0),\n device_memory: Number(nav.deviceMemory || 0),\n timezone,\n viewport: {\n width: Number(window.innerWidth || 0),\n height: Number(window.innerHeight || 0),\n },\n screen: {\n width: Number(screen.width || 0),\n height: Number(screen.height || 0),\n avail_width: Number(screen.availWidth || 0),\n avail_height: Number(screen.availHeight || 0),\n color_depth: Number(screen.colorDepth || 0),\n pixel_depth: Number(screen.pixelDepth || 0),\n },\n },\n };\n });\n\n return normalizeRawSnapshot({\n ...snapshot,\n frame_urls: [...frameUrls, ...(snapshot?.frame_urls || [])],\n });\n};\n\n// observed \u53EA\u4FDD\u5B58\u201C\u8FD0\u884C\u540E\u770B\u5230\u7684\u6D4F\u89C8\u5668\u8868\u73B0\u201D\uFF0C\u5B83\u4E0D\u662F\u542F\u52A8\u771F\u6E90\u3002\nconst normalizeObservedBrowserProfile = (value) => {\n const source = isPlainObject(value) ? value : {};\n const profile = {};\n\n const stringFields = {\n user_agent: source.user_agent,\n platform: source.platform,\n language: source.language,\n timezone: source.timezone,\n };\n Object.entries(stringFields).forEach(([key, item]) => {\n const safeValue = String(item || '').trim();\n if (safeValue) {\n profile[key] = safeValue;\n }\n });\n\n if (Array.isArray(source.languages)) {\n const languages = source.languages\n .map((item) => String(item || '').trim())\n .filter(Boolean);\n if (languages.length > 0) {\n profile.languages = languages;\n }\n }\n\n const numericFields = {\n hardware_concurrency: Number(source.hardware_concurrency || 0),\n device_memory: Number(source.device_memory || 0),\n };\n Object.entries(numericFields).forEach(([key, item]) => {\n if (Number.isFinite(item) && item > 0) {\n profile[key] = item;\n }\n });\n\n if (isPlainObject(source.viewport)) {\n const width = Number(source.viewport.width || 0);\n const height = Number(source.viewport.height || 0);\n if (width > 0 && height > 0) {\n profile.viewport = { width, height };\n }\n }\n\n if (isPlainObject(source.screen)) {\n const screenProfile = {};\n const screenFields = {\n width: Number(source.screen.width || 0),\n height: Number(source.screen.height || 0),\n avail_width: Number(source.screen.avail_width || 0),\n avail_height: Number(source.screen.avail_height || 0),\n color_depth: Number(source.screen.color_depth || 0),\n pixel_depth: Number(source.screen.pixel_depth || 0),\n };\n Object.entries(screenFields).forEach(([key, item]) => {\n if (Number.isFinite(item) && item > 0) {\n screenProfile[key] = item;\n }\n });\n if (Object.keys(screenProfile).length > 0) {\n profile.screen = screenProfile;\n }\n }\n\n\treturn profile;\n};\n\n// core \u662F\u6D4F\u89C8\u5668\u73AF\u5883\u7684\u552F\u4E00\u771F\u6E90\uFF1A\n// fingerprint / timezone_id / locale / browser_major_version \u90FD\u5728\u8FD9\u91CC\u3002\nconst normalizeBrowserProfileCore = (value) => {\n const source = isPlainObject(value) ? value : {};\n const profile = {};\n\n if (isPlainObject(source.fingerprint) && Object.keys(source.fingerprint).length > 0) {\n profile.fingerprint = deepClone(source.fingerprint);\n }\n\n const timezoneId = String(source.timezone_id || '').trim();\n if (timezoneId) {\n profile.timezone_id = timezoneId;\n }\n\n const locale = String(source.locale || '').trim();\n if (locale) {\n profile.locale = locale;\n }\n\n const browserMajorVersion = Number(source.browser_major_version || 0);\n if (Number.isFinite(browserMajorVersion) && browserMajorVersion > 0) {\n profile.browser_major_version = browserMajorVersion;\n }\n\n const schemaVersion = Number(source.schema_version || 0);\n if (Number.isFinite(schemaVersion) && schemaVersion > 0) {\n profile.schema_version = schemaVersion;\n } else if (Object.keys(profile).length > 0) {\n profile.schema_version = BROWSER_PROFILE_SCHEMA_VERSION;\n }\n\n\treturn profile;\n};\n\n// buildBrowserProfilePayload \u4FDD\u8BC1 browser_profile \u6C38\u8FDC\u53EA\u66B4\u9732 core / observed \u4E24\u5C42\u7ED3\u6784\u3002\nconst buildBrowserProfilePayload = (core = {}, observed = {}) => {\n const payload = {};\n if (isPlainObject(core) && Object.keys(core).length > 0) {\n payload.core = core;\n }\n if (isPlainObject(observed) && Object.keys(observed).length > 0) {\n payload.observed = observed;\n }\n return payload;\n};\n\nconst mergePlainObject = (target = {}, source = {}) => {\n const next = isPlainObject(target) ? deepClone(target) : {};\n if (!isPlainObject(source)) return next;\n\n Object.entries(source).forEach(([key, value]) => {\n if (!key) return;\n if (isPlainObject(value) && isPlainObject(next[key])) {\n next[key] = mergePlainObject(next[key], value);\n return;\n }\n next[key] = deepClone(value);\n });\n\n\treturn next;\n};\n\n// mergeBrowserProfilePayload \u7684\u6838\u5FC3\u89C4\u5219\uFF1A\n// 1. core \u53EA\u5728\u5F53\u524D\u4E3A\u7A7A\uFF0C\u6216\u6D4F\u89C8\u5668\u5927\u7248\u672C\u51B2\u7A81\u65F6\u624D\u66FF\u6362\uFF1B\n// 2. observed \u6BCF\u6B21\u90FD\u5141\u8BB8\u8986\u76D6\u66F4\u65B0\u3002\nconst mergeBrowserProfilePayload = (target = {}, source = {}) => {\n const current = isPlainObject(target) ? target : {};\n const incoming = isPlainObject(source) ? source : {};\n const currentCore = normalizeBrowserProfileCore(current.core);\n const incomingCore = normalizeBrowserProfileCore(incoming.core);\n const currentObserved = normalizeObservedBrowserProfile(current.observed);\n const incomingObserved = normalizeObservedBrowserProfile(incoming.observed);\n\n let mergedCore = currentCore;\n if (Object.keys(mergedCore).length === 0 && Object.keys(incomingCore).length > 0) {\n mergedCore = incomingCore;\n } else if (Object.keys(incomingCore).length > 0) {\n const currentVersion = Number(currentCore.browser_major_version || 0);\n const incomingVersion = Number(incomingCore.browser_major_version || 0);\n if (currentVersion > 0 && incomingVersion > 0 && currentVersion !== incomingVersion) {\n mergedCore = incomingCore;\n }\n }\n\n const mergedObserved = mergePlainObject(currentObserved, incomingObserved);\n\treturn buildBrowserProfilePayload(mergedCore, mergedObserved);\n};\n\n// mergeEnvPatchObjects \u662F visitor \u6210\u529F/\u5931\u8D25\u81EA\u52A8\u56DE\u5199 env_patch \u7684\u5408\u5E76\u5165\u53E3\u3002\nconst mergeEnvPatchObjects = (...patches) => {\n const merged = {};\n\n patches.forEach((patch) => {\n if (!isPlainObject(patch)) return;\n Object.entries(patch).forEach(([key, value]) => {\n if (!key) return;\n if (key === 'browser_profile') {\n const browserProfile = mergeBrowserProfilePayload(merged.browser_profile, value);\n if (Object.keys(browserProfile).length > 0) {\n merged.browser_profile = browserProfile;\n }\n return;\n }\n if (isPlainObject(value) && isPlainObject(merged[key])) {\n merged[key] = mergePlainObject(merged[key], value);\n return;\n }\n merged[key] = deepClone(value);\n });\n });\n\n return Object.keys(merged).length > 0 ? merged : null;\n};\n\nconst normalizeBrowserProfile = (value) => {\n const source = isPlainObject(value) ? value : {};\n const coreSource = isPlainObject(source.core) ? source.core : {};\n const observedSource = isPlainObject(source.observed) ? source.observed : {};\n const core = normalizeBrowserProfileCore(coreSource);\n const observed = normalizeObservedBrowserProfile(observedSource);\n return {\n core,\n observed,\n payload: buildBrowserProfilePayload(core, observed),\n };\n};\n\nconst rememberRuntimeState = (state) => {\n rememberedRuntimeState = deepClone(state);\n return rememberedRuntimeState;\n};\n\nconst normalizeRuntimeState = (source = {}, actor = '') => {\n if (\n source &&\n typeof source === 'object' &&\n source.runtime &&\n typeof source.runtime === 'object' &&\n !Array.isArray(source.runtime) &&\n Object.prototype.hasOwnProperty.call(source, 'browserProfileCore')\n ) {\n return source;\n }\n return RuntimeEnv.parseInput(source, actor);\n};\n\nexport const RuntimeEnv = {\n tryParseJSON,\n normalizeCookies,\n normalizeLocalStorage,\n normalizeSessionStorage,\n normalizeAuth,\n normalizeBrowserProfileCore,\n normalizeObservedBrowserProfile,\n normalizeSnapshot(snapshot = {}) {\n return normalizeRawSnapshot(snapshot);\n },\n collectCookieUrls(snapshot = {}) {\n return collectCookieUrlsFromSnapshot(snapshot);\n },\n buildRuntimeEnvFromSnapshot(snapshot = {}, options = {}) {\n return buildEnvPayloadFromSnapshot(snapshot, options);\n },\n buildEnvPatchFromSnapshot(snapshot = {}, options = {}) {\n return buildEnvPayloadFromSnapshot(snapshot, options);\n },\n mergeEnvPatches(...patches) {\n return mergeEnvPatchObjects(...patches);\n },\n\n // parseInput \u628A Actor \u8F93\u5165\u91CC\u7684 runtime \u5B57\u6BB5\u6807\u51C6\u5316\u6210 toolkit \u5185\u90E8\u7EDF\u4E00\u7ED3\u6784\u3002\n // \u540E\u7EED visitor \u53EA\u548C\u8FD9\u4E2A state \u4EA4\u4E92\uFF0C\u4E0D\u518D\u81EA\u5DF1\u62FC token/cookie \u903B\u8F91\u3002\n parseInput(input = {}, actor = '') {\n const runtime = tryParseJSON(input?.runtime) || {};\n const resolvedActor = String(actor || input?.actor || '').trim();\n const cookies = normalizeCookies(runtime?.cookies);\n const cookieMap = buildCookieMap(cookies);\n const localStorage = normalizeLocalStorage(runtime?.local_storage);\n const sessionStorage = normalizeSessionStorage(runtime?.session_storage);\n const auth = normalizeAuth(runtime?.auth);\n const browserProfile = normalizeBrowserProfile(runtime?.browser_profile);\n const envId = String(input?.env_id || '').trim();\n\n const normalizedRuntime = {\n ...runtime,\n ...(cookies.length > 0 ? { cookies } : {}),\n ...(Object.keys(localStorage).length > 0 ? { local_storage: localStorage } : {}),\n ...(Object.keys(sessionStorage).length > 0 ? { session_storage: sessionStorage } : {}),\n ...(Object.keys(auth).length > 0 ? { auth } : {}),\n };\n if (Object.keys(browserProfile.payload).length > 0) {\n normalizedRuntime.browser_profile = browserProfile.payload;\n } else {\n delete normalizedRuntime.browser_profile;\n }\n\n const state = {\n actor: resolvedActor,\n runtime: normalizedRuntime,\n envId,\n auth,\n cookies,\n cookieMap,\n localStorage,\n sessionStorage,\n browserProfile: browserProfile.payload,\n browserProfileCore: browserProfile.core,\n browserProfileObserved: browserProfile.observed,\n };\n rememberRuntimeState(state);\n return state;\n },\n\n // buildEnvPatch \u53EA\u6784\u9020\u5141\u8BB8\u56DE\u5199\u5230\u540E\u7AEF env \u7684\u5B57\u6BB5\u96C6\u5408\u3002\n buildEnvPatch(source = {}, actor = '') {\n const state = normalizeRuntimeState(source, actor);\n const browserProfile = buildBrowserProfilePayload(state.browserProfileCore, state.browserProfileObserved);\n const envPatch = {\n ...(Object.keys(state.auth || {}).length > 0 ? { auth: state.auth } : {}),\n ...(Array.isArray(state.cookies) && state.cookies.length > 0 ? { cookies: state.cookies } : {}),\n ...(Object.keys(state.localStorage || {}).length > 0 ? { local_storage: state.localStorage } : {}),\n ...(Object.keys(state.sessionStorage || {}).length > 0 ? { session_storage: state.sessionStorage } : {}),\n ...(Object.keys(browserProfile).length > 0 ? { browser_profile: browserProfile } : {}),\n };\n return Object.keys(envPatch).length > 0 ? envPatch : null;\n },\n\n // hasLoginState \u7528\u6765\u533A\u5206\u201C\u5FC5\u987B\u9274\u6743\u7684\u5E73\u53F0\u201D\u548C\u201C\u53EF\u533F\u540D\u8FD0\u884C\u7684\u5E73\u53F0\u201D\u3002\n hasLoginState(source = {}, actor = '') {\n const state = normalizeRuntimeState(source, actor);\n return (\n (Array.isArray(state.cookies) && state.cookies.length > 0) ||\n Object.keys(state.localStorage || {}).length > 0 ||\n Object.keys(state.sessionStorage || {}).length > 0 ||\n Object.keys(state.auth || {}).length > 0\n );\n },\n\n getAuthValue(source = {}, key = '', actor = '') {\n const state = normalizeRuntimeState(source, actor);\n const safeKey = String(key || '').trim();\n if (!safeKey) return '';\n return String(state.auth?.[safeKey] ?? '').trim();\n },\n\n rememberState(source = {}) {\n const state = normalizeRuntimeState(source);\n rememberRuntimeState(state);\n return RuntimeEnv.peekRememberedState();\n },\n\n peekRememberedState() {\n return rememberedRuntimeState ? deepClone(rememberedRuntimeState) : null;\n },\n\n getBrowserProfileCore(source = {}, actor = '') {\n const state = normalizeRuntimeState(source, actor);\n return deepClone(state.browserProfileCore || {});\n },\n\n setBrowserProfileCore(source = {}, core = {}, actor = '') {\n const state = normalizeRuntimeState(source, actor);\n const normalizedCore = normalizeBrowserProfileCore(core);\n state.browserProfileCore = normalizedCore;\n state.browserProfile = buildBrowserProfilePayload(normalizedCore, state.browserProfileObserved);\n if (Object.keys(state.browserProfile).length > 0) {\n state.runtime.browser_profile = state.browserProfile;\n } else {\n delete state.runtime.browser_profile;\n }\n rememberRuntimeState(state);\n return state;\n },\n\n // applyToPage \u53EA\u8D1F\u8D23\u628A\u767B\u5F55\u6001\u76F8\u5173\u5B57\u6BB5\u6CE8\u5165\u9875\u9762\uFF1A\n // cookies / localStorage / sessionStorage\u3002\n // \u6307\u7EB9\u3001\u65F6\u533A\u3001UA\u3001viewport \u7684\u56DE\u653E\u53D1\u751F\u5728 launch.js \u542F\u52A8\u9636\u6BB5\uFF0C\u4E0D\u5728\u8FD9\u91CC\u505A\u3002\n async applyToPage(page, source = {}, options = {}) {\n if (!page) return;\n const state = normalizeRuntimeState(source, options?.actor || '');\n const localStorage = state.localStorage || {};\n const sessionStorage = state.sessionStorage || {};\n const cookies = (state.cookies || [])\n .map((cookie) => {\n const normalized = { ...cookie };\n if (!normalized.path) {\n normalized.path = '/';\n }\n if (!normalized.domain && !normalized.url) {\n return null;\n }\n return normalized;\n })\n .filter(Boolean);\n\n if (cookies.length > 0) {\n await page.context().addCookies(cookies);\n }\n if (Object.keys(localStorage).length > 0) {\n await page.addInitScript((payload) => {\n try {\n Object.entries(payload || {}).forEach(([key, value]) => {\n if (!key) return;\n window.localStorage.setItem(key, String(value ?? ''));\n });\n } catch (error) {\n // no-op\n }\n }, localStorage);\n }\n if (Object.keys(sessionStorage).length > 0) {\n await page.addInitScript((payload) => {\n try {\n Object.entries(payload || {}).forEach(([key, value]) => {\n if (!key) return;\n window.sessionStorage.setItem(key, String(value ?? ''));\n });\n } catch (error) {\n // no-op\n }\n }, sessionStorage);\n }\n },\n\n // captureEnvPatch \u5728\u4EFB\u52A1\u7ED3\u675F\u65F6\u91C7\u96C6\u6700\u65B0\u73AF\u5883\u5FEB\u7167\uFF0C\u7528\u4E8E pushSuccess / pushFailed \u81EA\u52A8\u56DE\u5199\u3002\n async captureEnvPatch(page, source = {}, options = {}) {\n const state = normalizeRuntimeState(source, options?.actor || '');\n const baseline = RuntimeEnv.buildEnvPatch(state) || {};\n if (!page || typeof page.evaluate !== 'function' || typeof page.context !== 'function') {\n return Object.keys(baseline).length > 0 ? baseline : null;\n }\n\n try {\n const rawSnapshot = await captureRawSnapshotFromPage(page);\n const cookieUrls = collectCookieUrlsFromSnapshot(rawSnapshot);\n let cookies = [];\n try {\n cookies = cookieUrls.length > 0\n ? await page.context().cookies(cookieUrls)\n : await page.context().cookies();\n } catch {\n cookies = [];\n }\n const capturedPatch = RuntimeEnv.buildEnvPatchFromSnapshot(\n {\n ...rawSnapshot,\n cookies,\n },\n {\n auth: state.auth,\n browserProfileCore: state.browserProfileCore,\n },\n );\n return RuntimeEnv.mergeEnvPatches(baseline, capturedPatch);\n } catch {\n // ignore\n }\n return Object.keys(baseline).length > 0 ? baseline : null;\n },\n};\n", "import { Logger, LOG_TEMPLATES, stripAnsi } from '../src/logger.js';\nimport { Display } from '../src/display.js';\nimport * as Constants from '../src/constants.js';\nimport { ByPass } from '../src/proxy-bypass.js';\nimport { RuntimeEnv } from '../src/runtime-env.js';\n\nexport const usePlaywrightToolKit = () => {\n return {\n Logger,\n Display,\n ByPass,\n Constants,\n RuntimeEnv,\n $Internals: {\n LOG_TEMPLATES,\n stripAnsi,\n },\n };\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["opts", "value", "rest", "source", "picomatch", "state", "require_picomatch", "picomatch", "segments", "protocol", "domain", "path", "picomatch", "frameUrls"]
|
|
7
7
|
}
|