{"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: \".concat(chunk, \" (in style '\").concat(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: \".concat(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 \".concat(styles.length, \" closing bracket\").concat(styles.length === 1 ? '' : 's', \" (`}`)\");\n    throw new Error(errMsg);\n  }\n\n  return chunks.join('');\n};","map":null,"metadata":{},"sourceType":"script"}