You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
12 KiB

4 years ago
{"ast":null,"code":"'use strict';\n\nconst TEMPLATE_REGEX = /(?:\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.)|([^\\\\])/gi;\nconst ESCAPES = new Map([['n', '\\n'], ['r', '\\r'], ['t', '\\t'], ['b', '\\b'], ['f', '\\f'], ['v', '\\v'], ['0', '\\0'], ['\\\\', '\\\\'], ['e', '\\u001B'], ['a', '\\u0007']]);\n\nfunction unescape(c) {\n if (c[0] === 'u' && c.length === 5 || c[0] === 'x' && c.length === 3) {\n return String.fromCharCode(parseInt(c.slice(1), 16));\n }\n\n return ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, args) {\n const results = [];\n const chunks = args.trim().split(/\\s*,\\s*/g);\n let matches;\n\n for (const chunk of chunks) {\n if (!isNaN(chunk)) {\n results.push(Number(chunk));\n } else if (matches = chunk.match(STRING_REGEX)) {\n results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape(escape) : chr));\n } else {\n throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n }\n }\n\n return results;\n}\n\nfunction parseStyle(style) {\n STYLE_REGEX.lastIndex = 0;\n const results = [];\n let matches;\n\n while ((matches = STYLE_REGEX.exec(style)) !== null) {\n const name = matches[1];\n\n if (matches[2]) {\n const args = parseArguments(name, matches[2]);\n results.push([name].concat(args));\n } else {\n results.push([name]);\n }\n }\n\n return results;\n}\n\nfunction buildStyle(chalk, styles) {\n const enabled = {};\n\n for (const layer of styles) {\n for (const style of layer.styles) {\n enabled[style[0]] = layer.inverse ? null : style.slice(1);\n }\n }\n\n let current = chalk;\n\n for (const styleName of Object.keys(enabled)) {\n if (Array.isArray(enabled[styleName])) {\n if (!(styleName in current)) {\n throw new Error(`Unknown Chalk style: ${styleName}`);\n }\n\n if (enabled[styleName].length > 0) {\n current = current[styleName].apply(current, enabled[styleName]);\n } else {\n current = current[styleName];\n }\n }\n }\n\n return current;\n}\n\nmodule.exports = (chalk, tmp) => {\n const styles = [];\n const chunks = [];\n let chunk = []; // eslint-disable-next-line max-params\n\n tmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => {\n if (escapeChar) {\n chunk.push(unescape(escapeChar));\n } else if (style) {\n const str = chunk.join('');\n chunk = [];\n chunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str));\n styles.push({\n inverse,\n styles: parseStyle(style)\n });\n } else if (close) {\n if (styles.length === 0) {\n throw new Error('Found extraneous } in Chalk template literal');\n }\n\n chunks.push(buildStyle(chalk, styles)(chunk.join('')));\n chunk = [];\n styles.pop();\n } else {\n chunk.push(chr);\n }\n });\n chunks.push(chunk.join(''));\n\n if (styles.length > 0) {\n const errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n throw new Error(errMsg);\n }\n\n return chunks.join('');\n};","map":{"version":3,"sources":["C:/Users/user/Documents/myapp/node_modules/chalk/templates.js"],"names":["TEMPLATE_REGEX","STYLE_REGEX","STRING_REGEX","ESCAPE_REGEX","ESCAPES","Map","unescape","c","length","String","fromCharCode","parseInt","slice","get","parseArguments","name","args","results","chunks","trim","split","matches","chunk","isNaN","push","Number","match","replace","m","escape","chr","Error","parseStyle","style","lastIndex","exec","concat","buildStyle","chalk","styles","enabled","layer","inverse","current","styleName","Object","keys","Array","isArray","apply","module","exports","tmp","escapeCh