Urara-Blog/node_modules/.pnpm-store/v3/files/fb/3ae1a3a68b06bf81086de5a812ced9e4a639242d44887a26e6464900f859e140f0e95d91d64eebe12f1444f2374d29823220e7f76c2f997550c1de8975ff5c
2022-08-14 01:14:53 +08:00

1 line
No EOL
72 KiB
Text

{"version":3,"file":"shiki-twoslash.cjs.development.js","sources":["../src/annotations.ts","../src/utils.ts","../src/renderers/plain.ts","../src/renderers/twoslash.ts","../src/renderers/shiki.ts","../src/tsconfig-oneliners.generated.ts","../src/renderers/tsconfig.ts","../src/index.ts"],"sourcesContent":["import { TwoslashError, TwoSlashReturn } from \"@typescript/twoslash\"\n\nexport const htmlForTags = (tags: TwoSlashReturn[\"tags\"]) => {\n let html = \"\"\n tags.forEach(t => {\n if (t.name === \"annotate\" && t.annotation) {\n const meta = t.annotation.split(\" - \")\n const text = meta.pop()\n const info = (meta[0] || \"\").trim()\n const flipped = info.includes(\"right\")\n let settings = {\n flipped,\n arrowRot: flipped ? \"90deg 20px 20px\" : \"90deg 20px 20px\",\n textDegree: \"0deg\",\n top: `${t.line}em`\n }\n \n \n if (info.includes(\"{\")) {\n const theInfo = \"{\" + info.split(\"{\")[1]\n try {\n const specificSettings = JSON.parse(theInfo)\n settings = {...settings, ...specificSettings }\n } catch (error) {\n throw new TwoslashError(\"Could not parse annotation\", `The annotation ${JSON.stringify(t)} could convert '${theInfo}' into JSON`, `Look at ${(error as any).message}.`)\n }\n }\n \n const arrowSVG = arrow(settings)\n\n html += `\n<div class='twoslash-annotation ${flipped ? \"right\" : \"left\"}' style=\"top: ${settings.top}\">\n ${arrowSVG}\n <p class='twoslash-annotation-text' style=\"transform: rotate(${settings.textDegree})\">${text}</p>\n</div>`\n }\n })\n\n return html\n}\n\nconst arrow = (style: { flipped: boolean; arrowRot: string, textDegree: string, top: string }) => {\n const leftInner = `M27 39C26.5 32.7511 21.9 17.5173 7.5 6.57333M16.5 4.04L0.999999 0.999998C3.16667 4.88444 7.5 13.16 7.5 15.1867`\n const rightInner = `M1 39C1.5 32.7511 6.1 17.5173 20.5 6.57333M11.5 4.04L27 0.999998C24.8333 4.88444 20.5 13.16 20.5 15.1867`\n const inner = style.flipped ? leftInner : rightInner\n const rot = style.arrowRot.split(\" \")\n return `<svg style='transform: translateX(${rot[1]}) translateY(${rot[2]}) rotate(${rot[0]});' width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"${inner}\" stroke=\"black\" />\n</svg>`\n}\n","import type { parse } from \"fenceparser\"\n\nexport type Meta = NonNullable<ReturnType<typeof parse>>\n\ntype Range = {\n begin: number\n end: number\n text?: string\n count?: number\n tooltip?: string[]\n classes?: string\n lsp?: string\n}\n\n/**\n * We're given the text which lives inside the token, and this function will\n * annotate it with twoslash metadata\n */\nexport function createHighlightedString(ranges: Range[], text: string, targetedWord: string = \"\") {\n // Why the weird chars? We need to make sure that generic syntax isn't\n // interpreted as html tags - to do that we need to switch out < to &lt; - *but*\n // making that transition changes the indexes because it's gone from 1 char to 4 chars\n //\n // So, use an obscure character to indicate a real < for HTML, then switch it after\n const tag = (x: string) => `⇍${x}⇏`\n const makeTagFromRange = (r: Range, close?: true) => {\n switch (r.classes) {\n case \"lsp\":\n // The LSP response lives inside a dom attribute, which _can_ have < inside it, so switch them ahead of time.\n const lsp = htmlAttrReplacer(r.lsp || \"\")\n const underLineTargetedWord = r.lsp === targetedWord ? \"style=⇯border-bottom: solid 2px lightgrey;⇯\" : \"\"\n return close ? tag(\"/data-lsp\") : tag(`data-lsp lsp=¿${lsp}¿ ${underLineTargetedWord}`)\n case \"query\":\n return tag(`${close ? \"/\" : \"\"}data-highlight`)\n // handle both unknown and err variant as error-tag\n // case \"err\": is not required, just to be useful for others\n case \"err\":\n default:\n return tag(`${close ? \"/\" : \"\"}data-err`)\n }\n }\n\n ranges.sort((a, b) => {\n // Order of precedence\n // if two same offset meet, the lsp will be put as innermost than err and query\n const precedenceOf = (x?: string) => [\"err\", \"query\", \"lsp\"].indexOf(x ?? \"\")\n\n let cmp = 0\n // Can be desugared into,\n // 1. compare based on smaller begin, !(cmp) means if it's 0 then\n // 2. compare based on bigger end, ^ same thing again then\n // 3. compare based on higher precedence\n // && is so that if a step made cmp to something other than 0, it stops\n /***1*/ !(cmp = a.begin - b.begin) &&\n /*2*/ !(cmp = b.end - a.end) &&\n /*3*/ !(cmp = precedenceOf(a.classes) - precedenceOf(b.classes))\n return cmp\n }) // `Array.sort` works in place\n\n // Marks how much of the text has been put into the output/html\n let cursor = 0\n // should be maximum of O(n) where n is length of ranges\n const nest = (data: typeof ranges) => {\n let stack = \"\"\n const top = data.shift()! // I have made sure data can't be empty\n\n // parse from cursor to top.begin to make sure\n // strings on the way are parsed\n stack += text.substring(cursor, top.begin)\n cursor = top.begin\n\n // open tag\n stack += makeTagFromRange(top)\n\n // if the data still have an element that's in the top's range\n if (data.some(x => x.begin < top.end)) {\n stack += nest(data)\n } else {\n // othewise slice the text and set cursor\n stack += text.substring(top.begin, top.end)\n cursor = top.end\n }\n\n // close tag\n stack += makeTagFromRange(top, true)\n\n // if the tag is complete but still have some data left in the range\n if (data.length !== 0) {\n stack += nest(data)\n }\n\n return stack\n }\n\n // cloned because I don't feel comfortable modifying this as a side-effect from recursion\n const data = JSON.parse(JSON.stringify(ranges))\n const html = nest(data) + text.substring(cursor) // nested + leftover texts\n\n return htmlAttrUnReplacer(replaceTripleArrow(stripHTML(html)))\n}\n\n// HTML attributes have different rules,\nconst htmlAttrReplacer = (str: string) => str.replace(/\"/g, \"⃟\")\nconst htmlAttrUnReplacer = (str: string) => str.replace(/⃟/g, '\"')\n\n// Inline strings which are shown at HTML level\nexport const subTripleArrow = (str: string) => str.replace(/</g, \"⇍\").replace(/>/g, \"⇏\").replace(/'/g, \"⇯\")\nexport const replaceTripleArrow = (str: string) =>\n str.replace(/⇍/g, \"<\").replace(/⇏/g, \">\").replace(/⇯/g, \"'\").replace(/¿/g, \"'\")\nexport const replaceTripleArrowEncoded = (str: string) =>\n str.replace(/⇍/g, \"&lt;\").replace(/⇏/g, \"&gt;\").replace(/⇯/g, \"&apos;\")\n\nexport function stripHTML(text: string) {\n var table: any = {\n \"<\": \"lt\",\n '\"': \"quot\",\n \"'\": \"apos\",\n \"&\": \"amp\",\n \"\\r\": \"#13\",\n \"\\n\": \"#10\",\n }\n\n return text.toString().replace(/[<\"'\\r\\n&]/g, function (chr) {\n return \"&\" + table[chr] + \";\"\n })\n}\n\nexport function escapeHtml(html: string) {\n return html.replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\")\n}\n\n/** Does anything in the object imply that we should highlight any lines? */\nexport const shouldBeHighlightable = (highlight: any) => {\n return !!Object.keys(highlight || {}).find(key => {\n if (key.includes(\"-\")) return true\n if (!isNaN(parseInt(key))) return true\n return false\n })\n}\n\n/** Returns a func for figuring out if this line should be highlighted */\nexport const shouldHighlightLine = (highlight: any) => {\n const lines: number[] = []\n Object.keys(highlight || {}).find(key => {\n if (!isNaN(parseInt(key))) lines.push(parseInt(key))\n if (key.includes(\"-\")) {\n const [first, last] = key.split(\"-\")\n const lastIndex = parseInt(last) + 1\n for (let i = parseInt(first); i < lastIndex; i++) {\n lines.push(i)\n }\n }\n })\n\n return (line: number) => lines.includes(line)\n}\n","import { escapeHtml, Meta } from \"../utils\"\n\n// C&P'd from shiki\nexport interface HtmlRendererOptions {\n langId?: string\n fg?: string\n bg?: string\n themeName?: string\n}\n\n/** A func for setting a consistent <pre> */\nexport const preOpenerFromRenderingOptsWithExtras = (opts: HtmlRendererOptions, meta: Meta, classes?: string[]) => {\n const bg = opts.bg || \"#fff\"\n const fg = opts.fg || \"black\"\n const theme = opts.themeName || \"\"\n\n // shiki + `class` from fence + with-title if title exists + classes\n const classList = [\"shiki\", theme, meta.class, meta.title ? \"with-title\" : \"\", ...(classes || [])]\n .filter(Boolean)\n .join(\" \")\n .trim()\n\n const attributes = Object.entries(meta)\n .filter(entry => {\n // exclude types other than string, number, boolean\n // exclude keys class, twoslash\n // exclude falsy booleans\n return (\n [\"string\", \"number\", \"boolean\"].includes(typeof entry[1]) &&\n ![\"class\", \"twoslash\"].includes(entry[0]) &&\n entry[1] !== false\n )\n })\n .map(([key, value]) => `${key}=\"${value}\"`)\n .join(\" \")\n .trim()\n\n // prettier-ignore\n return `<pre class=\"${classList}\" style=\"background-color: ${bg}; color: ${fg}\"${attributes ? ` ${attributes}`: ''}>`\n}\n\n/** You don't have a language which shiki twoslash can handle, make a DOM compatible version */\nexport function plainTextRenderer(code: string, options: HtmlRendererOptions, meta: Meta) {\n let html = \"\"\n\n html += preOpenerFromRenderingOptsWithExtras(options, meta, [])\n if (meta.title) {\n html += `<div class='code-title'>${meta.title}</div>`\n }\n\n if (options.langId) {\n html += `<div class=\"language-id\">${options.langId}</div>`\n }\n\n html += `<div class='code-container'><code>`\n html += escapeHtml(code)\n\n html = html.replace(/\\n*$/, \"\") // Get rid of final new lines\n html += `</code></div></pre>`\n return html\n}\n","type Lines = import(\"shiki\").IThemedToken[][]\ntype TwoSlash = import(\"@typescript/twoslash\").TwoSlashReturn\n\nimport { TwoslashShikiOptions } from \"..\"\nimport { htmlForTags } from \"../annotations\"\nimport {\n shouldBeHighlightable,\n shouldHighlightLine,\n createHighlightedString,\n subTripleArrow,\n replaceTripleArrowEncoded,\n escapeHtml,\n Meta,\n} from \"../utils\"\nimport { HtmlRendererOptions, preOpenerFromRenderingOptsWithExtras } from \"./plain\"\n\n// OK, so - this is just straight up complex code.\n\n// What we're trying to do is merge two sets of information into a single tree for HTML\n\n// 1: Syntax highlight info from shiki\n// 2: Twoslash metadata like errors, identifiers etc\n\n// Because shiki gives use a set of lines to work from, then the first thing which happens\n// is converting twoslash data into the same format.\n\n// Things which make it hard:\n//\n// - Twoslash results can be cut, so sometimes there is edge cases between twoslash results\n// - Twoslash results can be multi-file\n// - the DOM requires a flattened graph of html elements (e.g. spans can' be interspersed)\n//\n\nexport function twoslashRenderer(lines: Lines, options: HtmlRendererOptions & TwoslashShikiOptions, twoslash: TwoSlash, meta: Meta) {\n let html = \"\"\n\n const hasHighlight = meta.highlight && shouldBeHighlightable(meta.highlight)\n const hl = shouldHighlightLine(meta.highlight)\n\n if (twoslash.tags && twoslash.tags.length) html += \"<div class='tag-container'>\"\n \n html += preOpenerFromRenderingOptsWithExtras(options, meta, [\"twoslash\", \"lsp\"])\n if (meta.title) {\n html += `<div class='code-title'>${meta.title}</div>`\n }\n\n if (options.langId) {\n html += `<div class=\"language-id\">${options.langId}</div>`\n }\n\n html += `<div class='code-container'><code>`\n\n const errorsGroupedByLine = groupBy(twoslash.errors, e => e.line) || new Map()\n const staticQuickInfosGroupedByLine = groupBy(twoslash.staticQuickInfos, q => q.line) || new Map()\n // A query is always about the line above it!\n const queriesGroupedByLine = groupBy(twoslash.queries, q => q.line - 1) || new Map()\n const tagsGroupedByLine = groupBy(twoslash.tags, q => q.line - 1) || new Map()\n\n /**\n * This is the index of the original twoslash code reference, it is not\n * related to the HTML output\n */\n let filePos = 0\n\n lines.forEach((l, i) => {\n const errors = errorsGroupedByLine.get(i) || []\n const lspValues = staticQuickInfosGroupedByLine.get(i) || []\n const queries = queriesGroupedByLine.get(i) || []\n const tags = tagsGroupedByLine.get(i) || []\n\n const hiClass = hasHighlight ? (hl(i + 1) ? \" highlight\" : \" dim\") : \"\"\n const prefix = `<div class='line${hiClass}'>`\n\n if (l.length === 0 && i === 0) {\n // Skip the first newline if it's blank\n filePos += 1\n } else if (l.length === 0) {\n const emptyLine = `${prefix}&nbsp;</div>` \n html += emptyLine\n filePos += 1\n } else {\n html += prefix\n\n // Keep track of the position of the current token in a line so we can match it up to the\n // errors and lang serv identifiers\n let tokenPos = 0\n\n l.forEach(token => {\n let targetedQueryWord: typeof twoslash.staticQuickInfos[number] | undefined\n\n let tokenContent = \"\"\n // Underlining particular words\n const findTokenFunc = (start: number) => (e: any) =>\n start <= e.character && start + token.content.length >= e.character + e.length\n\n const findTokenDebug = (start: number) => (e: any) => {\n const result = start <= e.character && start + token.content.length >= e.character + e.length\n // prettier-ignore\n console.log(result, start, '<=', e.character, '&&', start + token.content.length, '>=', e.character + e.length)\n if (result) {\n console.log(\"Found:\", e)\n console.log(\"Inside:\", token)\n }\n return result\n }\n\n const errorsInToken = errors.filter(findTokenFunc(tokenPos))\n const lspResponsesInToken = lspValues.filter(findTokenFunc(tokenPos))\n const queriesInToken = queries.filter(findTokenFunc(tokenPos))\n\n // Does this line have a word targeted by a query?\n targetedQueryWord = targetedQueryWord || lspResponsesInToken.find(response => response.text === (queries.length && queries[0].text))!\n\n const allTokens = [...errorsInToken, ...lspResponsesInToken, ...queriesInToken]\n const allTokensByStart = allTokens.sort((l, r) => {\n return (l.start || 0) - (r.start || 0)\n })\n\n if (allTokensByStart.length) {\n const ranges = allTokensByStart.map(token => {\n const range: any = {\n begin: token.start! - filePos,\n end: token.start! + token.length! - filePos,\n }\n\n // prettier-ignore\n if (range.begin < 0 || range.end < 0) {\n // prettier-ignore\n // throw new Error(`The begin range of a token is at a minus location, filePos:${filePos} current token: ${JSON.stringify(token, null, ' ')}\\n result: ${JSON.stringify(range, null, ' ')}`)\n }\n\n if (\"renderedMessage\" in token) range.classes = \"err\"\n if (\"kind\" in token) range.classes = token.kind\n if (\"targetString\" in token) {\n range.classes = \"lsp\"\n const lspText = options.includeJSDocInHover && token.docs ? `${token.docs}\\n\\n${token.text}` : token.text\n range[\"lsp\"] = lspText\n }\n return range\n })\n\n tokenContent += createHighlightedString(ranges, token.content, targetedQueryWord?.text)\n } else {\n tokenContent += subTripleArrow(token.content)\n }\n\n html += `<span style=\"color: ${token.color}\">${tokenContent}</span>`\n tokenPos += token.content.length\n filePos += token.content.length\n })\n\n html += `</div>`\n // This is the \\n which the </div> represents\n filePos += 1\n }\n\n // Adding error messages to the line after\n if (errors.length) {\n const messages = errors.map(e => escapeHtml(e.renderedMessage)).join(\"</br>\")\n const codes = errors.map(e => e.code).join(\"<br/>\")\n html += `<span class=\"error\"><span>${messages}</span><span class=\"code\">${codes}</span></span>`\n html += `<span class=\"error-behind\">${messages}</span>`\n }\n\n // Add queries to the next line\n if (queries.length) {\n queries.forEach(query => {\n // This is used to wrap popovers and completions to improve styling options for users.\n html += `<div class='meta-line'>`\n\n switch (query.kind) {\n case \"query\": {\n const queryTextWithPrefix = escapeHtml(query.text!)\n const lspValues = staticQuickInfosGroupedByLine.get(i) || []\n const targetedWord = lspValues.find(response => response.text === (queries.length && queries[0].text))!\n const halfWayAcrossTheTargetedWord = ((targetedWord && targetedWord.character + targetedWord?.length / 2) - 1) || 0\n html +=\n `<span class='popover-prefix'>` +\n \" \".repeat(halfWayAcrossTheTargetedWord) +\n \"</span>\" +\n `<span class='popover'><div class='arrow'></div>${queryTextWithPrefix}</span>`\n break\n }\n\n case \"completions\": {\n if (!query.completions) {\n html += `<span class='query'>${\"//\" + \"\".padStart(query.offset - 2) + \"^ - No completions found\"}</span>`\n } else {\n const prefixed = query.completions.filter(c => c.name.startsWith(query.completionsPrefix || \"____\"))\n\n const lis = prefixed\n .sort((l, r) => l.name.localeCompare(r.name))\n .map(c => {\n const after = c.name.substr(query.completionsPrefix?.length || 0)\n const name = `<span><span class='result-found'>${query.completionsPrefix || \"\"}</span>${after}<span>`\n const isDeprecated = c.kindModifiers?.split(\",\").includes(\"deprecated\")\n const liClass = isDeprecated ? \"deprecated\" : \"\"\n return `<li class='${liClass}'>${name}</li>`\n })\n .join(\"\")\n html += `${\"&nbsp;\".repeat(query.offset)}<span class='inline-completions'><ul class='dropdown'>${lis}</ul></span>`\n }\n }\n }\n html += \"</div>\"\n })\n }\n\n // Any tags (currently that's warn/error/log)\n if (tags.length) {\n tags.forEach(tag => {\n if(![\"error\", \"warn\", \"log\"].includes(tag.name)) return\n\n // This is used to wrap popovers and completions to improve styling options for users.\n html += `<div class='meta-line logger ${tag.name}-log'>`\n switch(tag.name) {\n case \"error\": html += `${errorSVG}<span class='message'>${tag.annotation || \"N/A\"}</span>`; break;\n case \"warn\": html += `${warningSVG}<span class='message'>${tag.annotation || \"N/A\"}</span>`; break;\n case \"log\": html += `${logSVG}<span class='message'>${tag.annotation || \"N/A\"}</span>`; break;\n }\n html += \"</div>\"\n })\n }\n })\n html = replaceTripleArrowEncoded(html.replace(/\\n*$/, \"\")) // Get rid of final new lines\n\n if (options.addTryButton) {\n const playgroundLink = `<a class='playground-link' href='${twoslash.playgroundURL}'>Try</a>`\n html += `</code>${playgroundLink}`\n } else {\n html += `</code>`\n }\n\n html += `</div></pre>`\n\n // Attach annotations which live above of the code\n if (twoslash.tags && twoslash.tags.length) {\n html += htmlForTags(twoslash.tags)\n html += \"</div>\"\n }\n\n return html\n}\n\n/** Returns a map where all the keys are the value in keyGetter */\nfunction groupBy<T>(list: T[], keyGetter: (obj: any) => number) {\n const map = new Map<number, T[]>()\n list.forEach(item => {\n const key = keyGetter(item)\n const collection = map.get(key)\n if (!collection) {\n map.set(key, [item])\n } else {\n collection.push(item)\n }\n })\n return map\n}\n\n\nconst errorSVG = `<svg width=\"19\" height=\"19\" viewBox=\"0 0 19 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.63018 1.29289L1.29289 4.63018C1.10536 4.81772 1 5.07207 1 5.33729V13.6627C1 13.9279 1.10536 14.1823 1.29289 14.3698L4.63018 17.7071C4.81772 17.8946 5.07207 18 5.33729 18H13.6627C13.9279 18 14.1823 17.8946 14.3698 17.7071L17.7071 14.3698C17.8946 14.1823 18 13.9279 18 13.6627V5.33729C18 5.07207 17.8946 4.81772 17.7071 4.63018L14.3698 1.29289C14.1823 1.10536 13.9279 1 13.6627 1H5.33729C5.07207 1 4.81772 1.10536 4.63018 1.29289Z\" fill=\"#E72622\" stroke=\"#E72622\"/><rect x=\"8\" y=\"4\" width=\"3\" height=\"7\" fill=\"white\"/><rect x=\"8\" y=\"13\" width=\"3\" height=\"3\" fill=\"white\"/></svg>`\nconst warningSVG = `<svg width=\"21\" height=\"18\" viewBox=\"0 0 21 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.63401 0.5C10.0189 -0.166667 10.9812 -0.166667 11.3661 0.5L20.4593 16.25C20.8442 16.9167 20.3631 17.75 19.5933 17.75H1.40676C0.636965 17.75 0.15584 16.9167 0.54074 16.25L9.63401 0.5Z\" fill=\"#E5A604\"/><rect x=\"9\" y=\"4\" width=\"3\" height=\"7\" fill=\"white\"/><rect x=\"9\" y=\"13\" width=\"3\" height=\"3\" fill=\"white\"/></svg>`\nconst logSVG = `<svg width=\"12\" height=\"15\" viewBox=\"0 0 12 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.76822 0.359816C5.41466 -0.0644613 4.78409 -0.121785 4.35982 0.231779C3.93554 0.585343 3.87821 1.21591 4.23178 1.64018L5.76822 0.359816ZM10 7L10.7926 7.60971L11.2809 6.97499L10.7682 6.35982L10 7ZM4.20738 12.8903C3.87064 13.328 3.95254 13.9559 4.39029 14.2926C4.82804 14.6294 5.45589 14.5475 5.79262 14.1097L4.20738 12.8903ZM4.23178 1.64018L9.23178 7.64018L10.7682 6.35982L5.76822 0.359816L4.23178 1.64018ZM9.20738 6.39029L4.20738 12.8903L5.79262 14.1097L10.7926 7.60971L9.20738 6.39029Z\" fill=\"#BDBDBD\"/><line y1=\"3.5\" x2=\"4\" y2=\"3.5\" stroke=\"#BDBDBD\"/><path d=\"M0 7H4\" stroke=\"#BDBDBD\"/><line y1=\"10.5\" x2=\"4\" y2=\"10.5\" stroke=\"#BDBDBD\"/></svg>`","import { shouldBeHighlightable, shouldHighlightLine, escapeHtml, Meta } from \"../utils\"\nimport { HtmlRendererOptions, preOpenerFromRenderingOptsWithExtras } from \"./plain\"\n\ntype Lines = import(\"shiki\").IThemedToken[][]\n\nexport function defaultShikiRenderer(lines: Lines, options: HtmlRendererOptions, meta: Meta) {\n let html = \"\"\n\n const hasHighlight = meta.highlight && shouldBeHighlightable(meta.highlight)\n const hl = shouldHighlightLine(meta.highlight)\n\n html += preOpenerFromRenderingOptsWithExtras(options, meta, [])\n if (meta.title) {\n html += `<div class='code-title'>${meta.title}</div>`\n }\n\n if (options.langId) {\n html += `<div class=\"language-id\">${options.langId}</div>`\n }\n\n html += `<div class='code-container'><code>`\n\n lines.forEach((l, i) => {\n if (l.length === 0) {\n html += `<div class='line'></div>`\n } else {\n const hiClass = hasHighlight ? (hl(i) ? \" highlight\" : \" dim\") : \"\"\n const prefix = `<div class='line${hiClass}'>`\n html += prefix\n\n l.forEach(token => {\n html += `<span style=\"color: ${token.color}\">${escapeHtml(token.content)}</span>`\n })\n html += `</div>`\n }\n })\n\n html = html.replace(/\\n*$/, \"\") // Get rid of final new lines\n html += `</code></div></pre>`\n return html\n}\n","export const tsconfig = {\n compilerOptions: `The set of compiler options for your project`,\n allowJs: `Allow JavaScript files to be a part of your program. Use the \\`checkJS\\` option to get errors from these files.`,\n allowSyntheticDefaultImports: `Allow 'import x from y' when a module doesn't have a default export.`,\n allowUmdGlobalAccess: `Allow accessing UMD globals from modules.`,\n allowUnreachableCode: `Disable error reporting for unreachable code.`,\n allowUnusedLabels: `Disable error reporting for unused labels.`,\n alwaysStrict: `Ensure 'use strict' is always emitted.`,\n assumeChangesOnlyAffectDirectDependencies: `Have recompiles in projects that use [\\`incremental\\`](#incremental) and \\`watch\\` mode assume that changes within a file will only affect files directly depending on it.`,\n baseUrl: `Specify the base directory to resolve non-relative module names.`,\n charset: `No longer supported. In early versions, manually set the text encoding for reading files.`,\n checkJs: `Enable error reporting in type-checked JavaScript files.`,\n clean: `Delete the outputs of all projects.`,\n composite: `Enable constraints that allow a TypeScript project to be used with project references.`,\n declaration: `Generate .d.ts files from TypeScript and JavaScript files in your project.`,\n declarationDir: `Specify the output directory for generated declaration files.`,\n declarationMap: `Create sourcemaps for d.ts files.`,\n diagnostics: `Output compiler performance information after building.`,\n disableFilenameBasedTypeAcquisition: `Disables inference for type acquisition by looking at filenames in a project.`,\n disableReferencedProjectLoad: `Reduce the number of projects loaded automatically by TypeScript.`,\n disableSizeLimit: `Remove the 20mb cap on total source code size for JavaScript files in the TypeScript language server.`,\n disableSolutionSearching: `Opt a project out of multi-project reference checking when editing.`,\n disableSourceOfProjectReferenceRedirect: `Disable preferring source files instead of declaration files when referencing composite projects.`,\n downlevelIteration: `Emit more compliant, but verbose and less performant JavaScript for iteration.`,\n emitBOM: `Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files.`,\n emitDeclarationOnly: `Only output d.ts files and not JavaScript files.`,\n emitDecoratorMetadata: `Emit design-type metadata for decorated declarations in source files.`,\n enable: `Disable the type acquisition for JavaScript projects.`,\n esModuleInterop: `Emit additional JavaScript to ease support for importing CommonJS modules. This enables [\\`allowSyntheticDefaultImports\\`](#allowSyntheticDefaultImports) for type compatibility.`,\n exactOptionalPropertyTypes: `Interpret optional property types as written, rather than adding \\`undefined\\`.`,\n exclude: `Filters results from the [\\`include\\`](#include) option.`,\n excludeDirectories: `Remove a list of directories from the watch process.`,\n excludeFiles: `Remove a list of files from the watch mode's processing.`,\n experimentalDecorators: `Enable experimental support for TC39 stage 2 draft decorators.`,\n explainFiles: `Print files read during the compilation including why it was included.`,\n extendedDiagnostics: `Output more detailed compiler performance information after building.`,\n extends: `Specify one or more path or node module references to base configuration files from which settings are inherited.`,\n fallbackPolling: `Specify what approach the watcher should use if the system runs out of native file watchers.`,\n files: `Include a list of files. This does not support glob patterns, as opposed to [\\`include\\`](#include).`,\n force: `Build all projects, including those that appear to be up to date.`,\n forceConsistentCasingInFileNames: `Ensure that casing is correct in imports.`,\n generateCpuProfile: `Emit a v8 CPU profile of the compiler run for debugging.`,\n importHelpers: `Allow importing helper functions from tslib once per project, instead of including them per-file.`,\n importsNotUsedAsValues: `Specify emit/checking behavior for imports that are only used for types.`,\n include: `Specify a list of glob patterns that match files to be included in compilation.`,\n incremental: `Save .tsbuildinfo files to allow for incremental compilation of projects.`,\n inlineSourceMap: `Include sourcemap files inside the emitted JavaScript.`,\n inlineSources: `Include source code in the sourcemaps inside the emitted JavaScript.`,\n isolatedModules: `Ensure that each file can be safely transpiled without relying on other imports.`,\n jsx: `Specify what JSX code is generated.`,\n jsxFactory: `Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'.`,\n jsxFragmentFactory: `Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'.`,\n jsxImportSource: `Specify module specifier used to import the JSX factory functions when using \\`jsx: react-jsx*\\`.`,\n keyofStringsOnly: `Make keyof only return strings instead of string, numbers or symbols. Legacy option.`,\n lib: `Specify a set of bundled library declaration files that describe the target runtime environment.`,\n listEmittedFiles: `Print the names of emitted files after a compilation.`,\n listFiles: `Print all of the files read during the compilation.`,\n locale: `Set the language of the messaging from TypeScript. This does not affect emit.`,\n mapRoot: `Specify the location where debugger should locate map files instead of generated locations.`,\n maxNodeModuleJsDepth: `Specify the maximum folder depth used for checking JavaScript files from \\`node_modules\\`. Only applicable with [\\`allowJs\\`](#allowJs).`,\n module: `Specify what module code is generated.`,\n moduleDetection: `Control what method is used to detect the whether a JS file is a module.`,\n moduleResolution: `Specify how TypeScript looks up a file from a given module specifier.`,\n moduleSuffixes: `List of file name suffixes to search when resolving a module.`,\n newLine: `Set the newline character for emitting files.`,\n noEmit: `Disable emitting files from a compilation.`,\n noEmitHelpers: `Disable generating custom helper functions like \\`__extends\\` in compiled output.`,\n noEmitOnError: `Disable emitting files if any type checking errors are reported.`,\n noErrorTruncation: `Disable truncating types in error messages.`,\n noFallthroughCasesInSwitch: `Enable error reporting for fallthrough cases in switch statements.`,\n noImplicitAny: `Enable error reporting for expressions and declarations with an implied \\`any\\` type.`,\n noImplicitOverride: `Ensure overriding members in derived classes are marked with an override modifier.`,\n noImplicitReturns: `Enable error reporting for codepaths that do not explicitly return in a function.`,\n noImplicitThis: `Enable error reporting when \\`this\\` is given the type \\`any\\`.`,\n noImplicitUseStrict: `Disable adding 'use strict' directives in emitted JavaScript files.`,\n noLib: `Disable including any library files, including the default lib.d.ts.`,\n noPropertyAccessFromIndexSignature: `Enforces using indexed accessors for keys declared using an indexed type.`,\n noResolve: `Disallow \\`import\\`s, \\`require\\`s or \\`<reference>\\`s from expanding the number of files TypeScript should add to a project.`,\n noStrictGenericChecks: `Disable strict checking of generic signatures in function types.`,\n noUncheckedIndexedAccess: `Add \\`undefined\\` to a type when accessed using an index.`,\n noUnusedLocals: `Enable error reporting when local variables aren't read.`,\n noUnusedParameters: `Raise an error when a function parameter isn't read.`,\n out: `Deprecated setting. Use [\\`outFile\\`](#outFile) instead.`,\n outDir: `Specify an output folder for all emitted files.`,\n outFile: `Specify a file that bundles all outputs into one JavaScript file. If [\\`declaration\\`](#declaration) is true, also designates a file that bundles all .d.ts output.`,\n paths: `Specify a set of entries that re-map imports to additional lookup locations.`,\n plugins: `Specify a list of language service plugins to include.`,\n preserveConstEnums: `Disable erasing \\`const enum\\` declarations in generated code.`,\n preserveSymlinks: `Disable resolving symlinks to their realpath. This correlates to the same flag in node.`,\n preserveValueImports: `Preserve unused imported values in the JavaScript output that would otherwise be removed.`,\n preserveWatchOutput: `Disable wiping the console in watch mode.`,\n pretty: `Enable color and formatting in TypeScript's output to make compiler errors easier to read.`,\n reactNamespace: `Specify the object invoked for \\`createElement\\`. This only applies when targeting \\`react\\` JSX emit.`,\n references: `Specify an array of objects that specify paths for projects. Used in project references.`,\n removeComments: `Disable emitting comments.`,\n resolveJsonModule: `Enable importing .json files.`,\n rootDir: `Specify the root folder within your source files.`,\n rootDirs: `Allow multiple folders to be treated as one when resolving modules.`,\n skipDefaultLibCheck: `Skip type checking .d.ts files that are included with TypeScript.`,\n skipLibCheck: `Skip type checking all .d.ts files.`,\n sourceMap: `Create source map files for emitted JavaScript files.`,\n sourceRoot: `Specify the root path for debuggers to find the reference source code.`,\n strict: `Enable all strict type-checking options.`,\n strictBindCallApply: `Check that the arguments for \\`bind\\`, \\`call\\`, and \\`apply\\` methods match the original function.`,\n strictFunctionTypes: `When assigning functions, check to ensure parameters and the return values are subtype-compatible.`,\n strictNullChecks: `When type checking, take into account \\`null\\` and \\`undefined\\`.`,\n strictPropertyInitialization: `Check for class properties that are declared but not set in the constructor.`,\n stripInternal: `Disable emitting declarations that have \\`@internal\\` in their JSDoc comments.`,\n suppressExcessPropertyErrors: `Disable reporting of excess property errors during the creation of object literals.`,\n suppressImplicitAnyIndexErrors: `Suppress [\\`noImplicitAny\\`](#noImplicitAny) errors when indexing objects that lack index signatures.`,\n synchronousWatchDirectory: `Synchronously call callbacks and update the state of directory watchers on platforms that don\\`t support recursive watching natively.`,\n target: `Set the JavaScript language version for emitted JavaScript and include compatible library declarations.`,\n traceResolution: `Log paths used during the [\\`moduleResolution\\`](#moduleResolution) process.`,\n tsBuildInfoFile: `Specify the folder for .tsbuildinfo incremental compilation files.`,\n typeAcquisition: `Specify options for automatic acquisition of declaration files.`,\n typeRoots: `Specify multiple folders that act like \\`./node_modules/@types\\`.`,\n types: `Specify type package names to be included without being referenced in a source file.`,\n useDefineForClassFields: `Emit ECMAScript-standard-compliant class fields.`,\n useUnknownInCatchVariables: `Default catch clause variables as \\`unknown\\` instead of \\`any\\`.`,\n verbose: `Enable verbose logging.`,\n watchDirectory: `Specify how directories are watched on systems that lack recursive file-watching functionality.`,\n watchFile: `Specify how the TypeScript watch mode works.`,\n};\n","type Lines = import(\"shiki\").IThemedToken[][]\n\nimport type { IThemedToken } from \"shiki\"\nimport { escapeHtml, Meta } from \"../utils\"\nimport { tsconfig } from \"../tsconfig-oneliners.generated\"\nimport { HtmlRendererOptions, preOpenerFromRenderingOptsWithExtras } from \"./plain\"\n\n/** Uses tmLanguage scopes to determine what the content of the token is */\nconst tokenIsJSONKey = (token: IThemedToken) => {\n if (!token.explanation) return false\n return token.explanation.find(e => e.scopes.find(s => s.scopeName.includes(\"support.type.property-name\")))\n}\n\n/** Can you look up the token in the tsconfig reference? */\nconst isKeyInTSConfig = (token: IThemedToken) => {\n if (token.content === '\"') return\n const name = token.content.slice(1, token.content.length - 1)\n return name in tsconfig\n}\n\n/**\n * Renders a TSConfig JSON object with additional LSP-ish information\n * @param lines the result of shiki highlighting\n * @param options shiki display options\n */\nexport function tsconfigJSONRenderer(lines: Lines, options: HtmlRendererOptions, meta: Meta) {\n let html = \"\"\n\n html += preOpenerFromRenderingOptsWithExtras(options, meta, [\"tsconfig\", \"lsp\"])\n if (meta.title) {\n html += `<div class=\"code-title\">${meta.title}</div>`\n }\n\n if (options.langId) {\n html += `<div class=\"language-id\">${options.langId}</div>`\n }\n\n html += `<div class='code-container'><code>`\n\n lines.forEach(l => {\n if (l.length === 0) {\n html += `<div class='line'></div>`\n } else {\n html += `<div class='line'>`\n l.forEach(token => {\n // This means we're looking at a token which could be '\"module\"', '\"', '\"compilerOptions\"' etc\n if (tokenIsJSONKey(token) && isKeyInTSConfig(token)) {\n const key = token.content.slice(1, token.content.length - 1)\n const oneliner = (tsconfig as Record<string, string>)[key]\n // prettier-ignore\n html += `<span style=\"color: ${token.color}\">\"<a aria-hidden=true tabindex=\"-1\" href='https://www.typescriptlang.org/tsconfig#${key}'><data-lsp lsp=\"${oneliner}\">${escapeHtml(key)}</data-lsp></a>\"</span>`\n } else {\n html += `<span style=\"color: ${token.color}\">${escapeHtml(token.content)}</span>`\n }\n })\n html += `</div>`\n }\n })\n\n html = html.replace(/\\n*$/, \"\") // Get rid of final new lines\n html += `</code></div></pre>`\n return html\n}\n","import { getHighlighter, Highlighter, HighlighterOptions, IThemedToken } from \"shiki\"\nimport { twoslasher, TwoSlashOptions, TwoSlashReturn } from \"@typescript/twoslash\"\nimport { twoslashRenderer } from \"./renderers/twoslash\"\nimport { HtmlRendererOptions, plainTextRenderer } from \"./renderers/plain\"\nimport { defaultShikiRenderer } from \"./renderers/shiki\"\nimport { tsconfigJSONRenderer } from \"./renderers/tsconfig\"\nimport { Meta } from \"./utils\"\n\nexport interface TwoslashShikiOptions {\n /** A way to turn on the try buttons seen on the TS website */\n addTryButton?: true\n /** A way to disable implicit React imports on tsx/jsx language codeblocks */\n disableImplicitReactImport?: true\n /** A way to add a div wrapper for multi-theme outputs */\n wrapFragments?: true\n /** Include JSDoc comments in the hovers */\n includeJSDocInHover?: true\n /** Instead of showing twoslash exceptions inline, throw the entire process like it will on CI */\n alwayRaiseForTwoslashExceptions?: true\n /** Ignore transforming certain code blocks */\n ignoreCodeblocksWithCodefenceMeta?: string[]\n}\n\n/** The possible user config, a combination of all shiki, twoslash and twoslash-shiki options */\nexport type UserConfigSettings = HighlighterOptions & TwoSlashOptions & TwoslashShikiOptions\n\n/**\n * This gets filled in by the promise below, then should\n * hopefully be more or less synchronous access by each parse\n * of the highlighter\n */\nlet storedHighlighter: Highlighter = null as any\n\n/**\n * Creates a *cached singleton* Shiki highlighter, this is an async call because of the call to WASM to get\n * the regex parser set up.\n *\n * In other functions, passing a the result of this highlighter function is kind of optional but it's the author's\n * opinion that you should be in control of the highlighter, and not this library.\n *\n */\nexport const createShikiHighlighter = (options: HighlighterOptions) => {\n if (storedHighlighter) return Promise.resolve(storedHighlighter)\n\n return getHighlighter(options).then(newHighlighter => {\n storedHighlighter = newHighlighter\n return storedHighlighter\n })\n}\n\n/**\n * Renders a code sample to HTML, automatically taking into account:\n *\n * - rendering overrides for twoslash and tsconfig\n * - whether the language exists in shiki\n *\n * @param code the source code to render\n * @param lang the language to use in highlighting\n * @param info additional metadata which lives after the code-fence lang (e.g. `{ twoslash: true }`)\n * @param shikiOptions user settings\n * @param highlighter optional, but you should use it, highlighter\n * @param twoslash optional, but required when info contains 'twoslash' as a string\n */\nexport const renderCodeToHTML = (\n code: string,\n lang: string,\n meta: Meta,\n shikiOptions?: UserConfigSettings & { themeName: string },\n highlighter?: Highlighter,\n twoslash?: TwoSlashReturn\n) => {\n if (!highlighter && !storedHighlighter) {\n throw new Error(\"The highlighter object hasn't been initialised via `setupHighLighter` yet in shiki-twoslash\")\n }\n\n // Shiki does know the lang, so tokenize\n const renderHighlighter = highlighter || storedHighlighter\n\n const renderOpts: HtmlRendererOptions = {\n fg: renderHighlighter.getForegroundColor(),\n bg: renderHighlighter.getBackgroundColor(),\n ...shikiOptions,\n }\n\n let tokens: IThemedToken[][]\n try {\n // I'm a little unsure about why we need this, perhaps the jsx language\n // upstream in shiki is broken?\n const tmpLang = lang === \"jsx\" ? \"tsx\" : lang\n\n tokens = renderHighlighter.codeToThemedTokens(code, tmpLang as any)\n } catch (error) {\n // Shiki doesn't know this lang, so render it as plain text, but\n // also add a note at the end as a HTML comment\n const note = `<!-- Note from shiki-twoslash: the language ${lang} was not set up for Shiki to use, and so there is no code highlighting -->`\n return plainTextRenderer(code, renderOpts, meta) + note\n }\n\n // Twoslash specific renderer\n if (lang && meta.twoslash && twoslash) {\n return twoslashRenderer(tokens, { ...renderOpts, langId: lang }, twoslash, meta)\n }\n\n // TSConfig renderer\n if (lang && lang.startsWith(\"json\") && meta.tsconfig) {\n return tsconfigJSONRenderer(tokens, renderOpts, meta)\n }\n\n // Otherwise just the normal shiki renderer\n return defaultShikiRenderer(tokens, { ...renderOpts, langId: lang }, meta)\n}\n\n/**\n * Runs Twoslash over the code passed in with a particular language as the default file.\n */\nexport const runTwoSlash = (input: string, lang: string, settings: UserConfigSettings = {}): TwoSlashReturn => {\n let code = input\n\n // Shiki doesn't handle a few filetype mappings, so do that ahead of time. Oddly enough, this also\n // gets re-done at remark-shiki level\n const replacer = {\n json5: \"json\",\n yml: \"yaml\",\n }\n\n // @ts-ignore\n if (replacer[lang]) lang = replacer[lang]\n\n const hasReactImport = /^import\\s+React(?:.*)\\s+from\\s+('|\")react\\1/gm\n\n // Add react import to code samples indicating they're needing react.\n if ([\"tsx\", \"jsx\"].includes(lang) && !settings.disableImplicitReactImport && !hasReactImport.test(code)) {\n const reactImport = \"import React from 'react'\\n\"\n const cutString = \"// ---cut---\\n\"\n // ^ cutString taken directly from\n // https://github.com/microsoft/TypeScript-Website/blob/0c8d98a69d520365c1909d536fa1323f03a8438c/packages/ts-twoslasher/src/index.ts#L694\n\n if (code.includes(cutString)) {\n code = code\n .split(cutString)\n .map((item, index) => (index == 0 ? reactImport.concat(item) : item))\n .join(cutString)\n } else {\n code = [reactImport, cutString, code].join(\"\")\n }\n }\n\n settings.customTags = [\"annotate\", \"log\", \"warn\", \"error\"]\n const results = twoslasher(code, lang, settings)\n return results\n}\n\n/** Set of renderers if you want to explicitly call one instead of using renderCodeToHTML */\nexport const renderers = {\n plainTextRenderer,\n defaultShikiRenderer,\n twoslashRenderer,\n tsconfigJSONRenderer,\n}\n"],"names":["htmlForTags","tags","html","forEach","t","name","annotation","meta","split","text","pop","info","trim","flipped","includes","settings","arrowRot","textDegree","top","line","theInfo","specificSettings","JSON","parse","error","TwoslashError","stringify","message","arrowSVG","arrow","style","leftInner","rightInner","inner","rot","createHighlightedString","ranges","targetedWord","tag","x","makeTagFromRange","r","close","classes","lsp","htmlAttrReplacer","underLineTargetedWord","sort","a","b","precedenceOf","indexOf","cmp","begin","end","cursor","nest","data","stack","shift","substring","some","length","htmlAttrUnReplacer","replaceTripleArrow","stripHTML","str","replace","subTripleArrow","replaceTripleArrowEncoded","table","toString","chr","escapeHtml","shouldBeHighlightable","highlight","Object","keys","find","key","isNaN","parseInt","shouldHighlightLine","lines","push","first","last","lastIndex","i","preOpenerFromRenderingOptsWithExtras","opts","bg","fg","theme","themeName","classList","title","filter","Boolean","join","attributes","entries","entry","map","value","plainTextRenderer","code","options","langId","twoslashRenderer","twoslash","hasHighlight","hl","errorsGroupedByLine","groupBy","errors","e","Map","staticQuickInfosGroupedByLine","staticQuickInfos","q","queriesGroupedByLine","queries","tagsGroupedByLine","filePos","l","get","lspValues","hiClass","prefix","emptyLine","tokenPos","token","targetedQueryWord","tokenContent","findTokenFunc","start","character","content","errorsInToken","lspResponsesInToken","queriesInToken","response","allTokens","allTokensByStart","range","kind","lspText","includeJSDocInHover","docs","color","messages","renderedMessage","codes","query","queryTextWithPrefix","halfWayAcrossTheTargetedWord","repeat","completions","padStart","offset","prefixed","c","startsWith","completionsPrefix","lis","localeCompare","after","substr","isDeprecated","kindModifiers","liClass","errorSVG","warningSVG","logSVG","addTryButton","playgroundLink","playgroundURL","list","keyGetter","item","collection","set","defaultShikiRenderer","tsconfig","compilerOptions","allowJs","allowSyntheticDefaultImports","allowUmdGlobalAccess","allowUnreachableCode","allowUnusedLabels","alwaysStrict","assumeChangesOnlyAffectDirectDependencies","baseUrl","charset","checkJs","clean","composite","declaration","declarationDir","declarationMap","diagnostics","disableFilenameBasedTypeAcquisition","disableReferencedProjectLoad","disableSizeLimit","disableSolutionSearching","disableSourceOfProjectReferenceRedirect","downlevelIteration","emitBOM","emitDeclarationOnly","emitDecoratorMetadata","enable","esModuleInterop","exactOptionalPropertyTypes","exclude","excludeDirectories","excludeFiles","experimentalDecorators","explainFiles","extendedDiagnostics","fallbackPolling","files","force","forceConsistentCasingInFileNames","generateCpuProfile","importHelpers","importsNotUsedAsValues","include","incremental","inlineSourceMap","inlineSources","isolatedModules","jsx","jsxFactory","jsxFragmentFactory","jsxImportSource","keyofStringsOnly","lib","listEmittedFiles","listFiles","locale","mapRoot","maxNodeModuleJsDepth","module","moduleDetection","moduleResolution","moduleSuffixes","newLine","noEmit","noEmitHelpers","noEmitOnError","noErrorTruncation","noFallthroughCasesInSwitch","noImplicitAny","noImplicitOverride","noImplicitReturns","noImplicitThis","noImplicitUseStrict","noLib","noPropertyAccessFromIndexSignature","noResolve","noStrictGenericChecks","noUncheckedIndexedAccess","noUnusedLocals","noUnusedParameters","out","outDir","outFile","paths","plugins","preserveConstEnums","preserveSymlinks","preserveValueImports","preserveWatchOutput","pretty","reactNamespace","references","removeComments","resolveJsonModule","rootDir","rootDirs","skipDefaultLibCheck","skipLibCheck","sourceMap","sourceRoot","strict","strictBindCallApply","strictFunctionTypes","strictNullChecks","strictPropertyInitialization","stripInternal","suppressExcessPropertyErrors","suppressImplicitAnyIndexErrors","synchronousWatchDirectory","target","traceResolution","tsBuildInfoFile","typeAcquisition","typeRoots","types","useDefineForClassFields","useUnknownInCatchVariables","verbose","watchDirectory","watchFile","tokenIsJSONKey","explanation","scopes","s","scopeName","isKeyInTSConfig","slice","tsconfigJSONRenderer","oneliner","storedHighlighter","createShikiHighlighter","Promise","resolve","getHighlighter","then","newHighlighter","renderCodeToHTML","lang","shikiOptions","highlighter","Error","renderHighlighter","renderOpts","getForegroundColor","getBackgroundColor","tokens","tmpLang","codeToThemedTokens","note","runTwoSlash","input","replacer","json5","yml","hasReactImport","disableImplicitReactImport","test","reactImport","cutString","index","concat","customTags","results","twoslasher","renderers"],"mappings":"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"}