@inkandswitch/patchwork-pkg-base 0.0.86 → 0.0.88
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/module-settings-url +1 -1
- package/package.json +1 -1
- package/packages/file/dist/assets/tsgo-worker-BDQ8_wHH.js +4 -0
- package/packages/file/dist/assets/tsgo-worker-BDQ8_wHH.js.map +4 -0
- package/packages/file/dist/assets/wasm_exec-pYYJXccF.js +440 -0
- package/packages/file/dist/assets/wasm_exec-pYYJXccF.js.map +1 -0
- package/packages/file/dist/index.js +36 -32
- package/packages/file/dist/index.js.map +1 -1
- package/packages/file/dist/{tool-DdWP0SYf.js → tool-B3O4i8l2.js} +2759 -3006
- package/packages/file/dist/tool-B3O4i8l2.js.map +1 -0
- package/packages/file/dist/typescript-language-server-oTU8pKzb.js +3408 -0
- package/packages/file/dist/typescript-language-server-oTU8pKzb.js.map +1 -0
- package/packages/file/package.json +3 -3
- package/plugin-registry-url +1 -1
- package/packages/file/dist/index-CW1_LDsW.js +0 -827
- package/packages/file/dist/index-CW1_LDsW.js.map +0 -1
- package/packages/file/dist/tool-DdWP0SYf.js.map +0 -1
- package/packages/file/dist/ts-env-B6QylQR-.js +0 -67681
- package/packages/file/dist/ts-env-B6QylQR-.js.map +0 -1
- package/packages/file/dist/typescript-CWj5JjVs.js +0 -159802
- package/packages/file/dist/typescript-CWj5JjVs.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript-language-server-oTU8pKzb.js","sources":["../node_modules/.pnpm/marked@15.0.12/node_modules/marked/lib/marked.esm.js","../node_modules/.pnpm/@codemirror+lint@6.9.7/node_modules/@codemirror/lint/dist/index.js","../node_modules/.pnpm/@codemirror+lsp-client@6.3.0/node_modules/@codemirror/lsp-client/dist/index.js","../src/typescript-language-server.ts"],"sourcesContent":["/**\n * marked v15.0.12 - a markdown parser\n * Copyright (c) 2011-2025, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n\n// src/defaults.ts\nfunction _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n}\nvar _defaults = _getDefaults();\nfunction changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n\n// src/rules.ts\nvar noopTest = { exec: () => null };\nfunction edit(regex, opt = \"\") {\n let source = typeof regex === \"string\" ? regex : regex.source;\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === \"string\" ? val : val.source;\n valSource = valSource.replace(other.caret, \"$1\");\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n }\n };\n return obj;\n}\nvar other = {\n codeRemoveIndent: /^(?: {1,4}| {0,3}\\t)/gm,\n outputLinkReplace: /\\\\([\\[\\]])/g,\n indentCodeCompensation: /^(\\s+)(?:```)/,\n beginningSpace: /^\\s+/,\n endingHash: /#$/,\n startingSpaceChar: /^ /,\n endingSpaceChar: / $/,\n nonSpaceChar: /[^ ]/,\n newLineCharGlobal: /\\n/g,\n tabCharGlobal: /\\t/g,\n multipleSpaceGlobal: /\\s+/g,\n blankLine: /^[ \\t]*$/,\n doubleBlankLine: /\\n[ \\t]*\\n[ \\t]*$/,\n blockquoteStart: /^ {0,3}>/,\n blockquoteSetextReplace: /\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,\n blockquoteSetextReplace2: /^ {0,3}>[ \\t]?/gm,\n listReplaceTabs: /^\\t+/,\n listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g,\n listIsTask: /^\\[[ xX]\\] /,\n listReplaceTask: /^\\[[ xX]\\] +/,\n anyLine: /\\n.*\\n/,\n hrefBrackets: /^<(.*)>$/,\n tableDelimiter: /[:|]/,\n tableAlignChars: /^\\||\\| *$/g,\n tableRowBlankLine: /\\n[ \\t]*$/,\n tableAlignRight: /^ *-+: *$/,\n tableAlignCenter: /^ *:-+: *$/,\n tableAlignLeft: /^ *:-+ *$/,\n startATag: /^<a /i,\n endATag: /^<\\/a>/i,\n startPreScriptTag: /^<(pre|code|kbd|script)(\\s|>)/i,\n endPreScriptTag: /^<\\/(pre|code|kbd|script)(\\s|>)/i,\n startAngleBracket: /^</,\n endAngleBracket: />$/,\n pedanticHrefTitle: /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,\n unicodeAlphaNumeric: /[\\p{L}\\p{N}]/u,\n escapeTest: /[&<>\"']/,\n escapeReplace: /[&<>\"']/g,\n escapeTestNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,\n escapeReplaceNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,\n unescapeTest: /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig,\n caret: /(^|[^\\[])\\^/g,\n percentDecode: /%25/g,\n findPipe: /\\|/g,\n splitPipe: / \\|/,\n slashPipe: /\\\\\\|/g,\n carriageReturn: /\\r\\n|\\r/g,\n spaceLine: /^ +$/gm,\n notSpaceStart: /^\\S*/,\n endingNewline: /\\n$/,\n listItemRegex: (bull) => new RegExp(`^( {0,3}${bull})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`),\n nextBulletRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`),\n hrRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),\n fencesBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`),\n headingBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`),\n htmlBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}<(?:[a-z].*>|!--)`, \"i\")\n};\nvar newline = /^(?:[ \\t]*(?:\\n|$))+/;\nvar blockCode = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/;\nvar fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nvar hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nvar heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nvar bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nvar lheadingCore = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/;\nvar lheading = edit(lheadingCore).replace(/bull/g, bullet).replace(/blockCode/g, /(?: {4}| {0,3}\\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\\n>]+>\\n/).replace(/\\|table/g, \"\").getRegex();\nvar lheadingGfm = edit(lheadingCore).replace(/bull/g, bullet).replace(/blockCode/g, /(?: {4}| {0,3}\\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\\n>]+>\\n/).replace(/table/g, / {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/).getRegex();\nvar _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nvar blockText = /^[^\\n]+/;\nvar _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nvar def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\", _blockLabel).replace(\"title\", /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex();\nvar list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/).replace(/bull/g, bullet).getRegex();\nvar _tag = \"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\";\nvar _comment = /<!--(?:-?>|[\\s\\S]*?(?:-->|$))/;\nvar html = edit(\n \"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$))\",\n \"i\"\n).replace(\"comment\", _comment).replace(\"tag\", _tag).replace(\"attribute\", / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\nvar paragraph = edit(_paragraph).replace(\"hr\", hr).replace(\"heading\", \" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\", \"\").replace(\"|table\", \"\").replace(\"blockquote\", \" {0,3}>\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", _tag).getRegex();\nvar blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\", paragraph).getRegex();\nvar blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText\n};\nvar gfmTable = edit(\n \"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\"\n).replace(\"hr\", hr).replace(\"heading\", \" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\", \" {0,3}>\").replace(\"code\", \"(?: {4}| {0,3}\t)[^\\\\n]\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", _tag).getRegex();\nvar blockGfm = {\n ...blockNormal,\n lheading: lheadingGfm,\n table: gfmTable,\n paragraph: edit(_paragraph).replace(\"hr\", hr).replace(\"heading\", \" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\", \"\").replace(\"table\", gfmTable).replace(\"blockquote\", \" {0,3}>\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", _tag).getRegex()\n};\nvar blockPedantic = {\n ...blockNormal,\n html: edit(\n `^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`\n ).replace(\"comment\", _comment).replace(/tag/g, \"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph).replace(\"hr\", hr).replace(\"heading\", \" *#{1,6} *[^\\n]\").replace(\"lheading\", lheading).replace(\"|table\", \"\").replace(\"blockquote\", \" {0,3}>\").replace(\"|fences\", \"\").replace(\"|list\", \"\").replace(\"|html\", \"\").replace(\"|tag\", \"\").getRegex()\n};\nvar escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nvar inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nvar br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nvar inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/;\nvar _punctuation = /[\\p{P}\\p{S}]/u;\nvar _punctuationOrSpace = /[\\s\\p{P}\\p{S}]/u;\nvar _notPunctuationOrSpace = /[^\\s\\p{P}\\p{S}]/u;\nvar punctuation = edit(/^((?![*_])punctSpace)/, \"u\").replace(/punctSpace/g, _punctuationOrSpace).getRegex();\nvar _punctuationGfmStrongEm = /(?!~)[\\p{P}\\p{S}]/u;\nvar _punctuationOrSpaceGfmStrongEm = /(?!~)[\\s\\p{P}\\p{S}]/u;\nvar _notPunctuationOrSpaceGfmStrongEm = /(?:[^\\s\\p{P}\\p{S}]|~)/u;\nvar blockSkip = /\\[[^[\\]]*?\\]\\((?:\\\\.|[^\\\\\\(\\)]|\\((?:\\\\.|[^\\\\\\(\\)])*\\))*\\)|`[^`]*?`|<[^<>]*?>/g;\nvar emStrongLDelimCore = /^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/;\nvar emStrongLDelim = edit(emStrongLDelimCore, \"u\").replace(/punct/g, _punctuation).getRegex();\nvar emStrongLDelimGfm = edit(emStrongLDelimCore, \"u\").replace(/punct/g, _punctuationGfmStrongEm).getRegex();\nvar emStrongRDelimAstCore = \"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\";\nvar emStrongRDelimAst = edit(emStrongRDelimAstCore, \"gu\").replace(/notPunctSpace/g, _notPunctuationOrSpace).replace(/punctSpace/g, _punctuationOrSpace).replace(/punct/g, _punctuation).getRegex();\nvar emStrongRDelimAstGfm = edit(emStrongRDelimAstCore, \"gu\").replace(/notPunctSpace/g, _notPunctuationOrSpaceGfmStrongEm).replace(/punctSpace/g, _punctuationOrSpaceGfmStrongEm).replace(/punct/g, _punctuationGfmStrongEm).getRegex();\nvar emStrongRDelimUnd = edit(\n \"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\",\n \"gu\"\n).replace(/notPunctSpace/g, _notPunctuationOrSpace).replace(/punctSpace/g, _punctuationOrSpace).replace(/punct/g, _punctuation).getRegex();\nvar anyPunctuation = edit(/\\\\(punct)/, \"gu\").replace(/punct/g, _punctuation).getRegex();\nvar autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/).replace(\"scheme\", /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(\"email\", /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex();\nvar _inlineComment = edit(_comment).replace(\"(?:-->|$)\", \"-->\").getRegex();\nvar tag = edit(\n \"^comment|^</[a-zA-Z][\\\\w:-]*\\\\s*>|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\"\n).replace(\"comment\", _inlineComment).replace(\"attribute\", /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex();\nvar _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nvar link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]*(?:\\n[ \\t]*)?)(title))?\\s*\\)/).replace(\"label\", _inlineLabel).replace(\"href\", /<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/).replace(\"title\", /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex();\nvar reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\", _inlineLabel).replace(\"ref\", _blockLabel).getRegex();\nvar nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\", _blockLabel).getRegex();\nvar reflinkSearch = edit(\"reflink|nolink(?!\\\\()\", \"g\").replace(\"reflink\", reflink).replace(\"nolink\", nolink).getRegex();\nvar inlineNormal = {\n _backpedal: noopTest,\n // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest\n};\nvar inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\", _inlineLabel).getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\", _inlineLabel).getRegex()\n};\nvar inlineGfm = {\n ...inlineNormal,\n emStrongRDelimAst: emStrongRDelimAstGfm,\n emStrongLDelim: emStrongLDelimGfm,\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, \"i\").replace(\"email\", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])((?:\\\\.|[^\\\\])*?(?:\\\\.|[^\\s~\\\\]))\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n};\nvar inlineBreaks = {\n ...inlineGfm,\n br: edit(br).replace(\"{2,}\", \"*\").getRegex(),\n text: edit(inlineGfm.text).replace(\"\\\\b_\", \"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g, \"*\").getRegex()\n};\nvar block = {\n normal: blockNormal,\n gfm: blockGfm,\n pedantic: blockPedantic\n};\nvar inline = {\n normal: inlineNormal,\n gfm: inlineGfm,\n breaks: inlineBreaks,\n pedantic: inlinePedantic\n};\n\n// src/helpers.ts\nvar escapeReplacements = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\"\n};\nvar getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape2(html2, encode) {\n if (encode) {\n if (other.escapeTest.test(html2)) {\n return html2.replace(other.escapeReplace, getEscapeReplacement);\n }\n } else {\n if (other.escapeTestNoEncode.test(html2)) {\n return html2.replace(other.escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html2;\n}\nfunction cleanUrl(href) {\n try {\n href = encodeURI(href).replace(other.percentDecode, \"%\");\n } catch {\n return null;\n }\n return href;\n}\nfunction splitCells(tableRow, count) {\n const row = tableRow.replace(other.findPipe, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === \"\\\\\") escaped = !escaped;\n if (escaped) {\n return \"|\";\n } else {\n return \" |\";\n }\n }), cells = row.split(other.splitPipe);\n let i = 0;\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells.at(-1)?.trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push(\"\");\n }\n }\n for (; i < cells.length; i++) {\n cells[i] = cells[i].trim().replace(other.slashPipe, \"|\");\n }\n return cells;\n}\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return \"\";\n }\n let suffLen = 0;\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === \"\\\\\") {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n if (level > 0) {\n return -2;\n }\n return -1;\n}\n\n// src/Tokenizer.ts\nfunction outputLink(cap, link2, raw, lexer2, rules) {\n const href = link2.href;\n const title = link2.title || null;\n const text = cap[1].replace(rules.other.outputLinkReplace, \"$1\");\n lexer2.state.inLink = true;\n const token = {\n type: cap[0].charAt(0) === \"!\" ? \"image\" : \"link\",\n raw,\n href,\n title,\n text,\n tokens: lexer2.inlineTokens(text)\n };\n lexer2.state.inLink = false;\n return token;\n}\nfunction indentCodeCompensation(raw, text, rules) {\n const matchIndentToCode = raw.match(rules.other.indentCodeCompensation);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text.split(\"\\n\").map((node) => {\n const matchIndentInNode = node.match(rules.other.beginningSpace);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n }).join(\"\\n\");\n}\nvar _Tokenizer = class {\n options;\n rules;\n // set by the lexer\n lexer;\n // set by the lexer\n constructor(options2) {\n this.options = options2 || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: \"space\",\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(this.rules.other.codeRemoveIndent, \"\");\n return {\n type: \"code\",\n raw: cap[0],\n codeBlockStyle: \"indented\",\n text: !this.options.pedantic ? rtrim(text, \"\\n\") : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || \"\", this.rules);\n return {\n type: \"code\",\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, \"$1\") : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n if (this.rules.other.endingHash.test(text)) {\n const trimmed = rtrim(text, \"#\");\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || this.rules.other.endingSpaceChar.test(trimmed)) {\n text = trimmed.trim();\n }\n }\n return {\n type: \"heading\",\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: \"hr\",\n raw: rtrim(cap[0], \"\\n\")\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n let lines = rtrim(cap[0], \"\\n\").split(\"\\n\");\n let raw = \"\";\n let text = \"\";\n const tokens = [];\n while (lines.length > 0) {\n let inBlockquote = false;\n const currentLines = [];\n let i;\n for (i = 0; i < lines.length; i++) {\n if (this.rules.other.blockquoteStart.test(lines[i])) {\n currentLines.push(lines[i]);\n inBlockquote = true;\n } else if (!inBlockquote) {\n currentLines.push(lines[i]);\n } else {\n break;\n }\n }\n lines = lines.slice(i);\n const currentRaw = currentLines.join(\"\\n\");\n const currentText = currentRaw.replace(this.rules.other.blockquoteSetextReplace, \"\\n $1\").replace(this.rules.other.blockquoteSetextReplace2, \"\");\n raw = raw ? `${raw}\n${currentRaw}` : currentRaw;\n text = text ? `${text}\n${currentText}` : currentText;\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n this.lexer.blockTokens(currentText, tokens, true);\n this.lexer.state.top = top;\n if (lines.length === 0) {\n break;\n }\n const lastToken = tokens.at(-1);\n if (lastToken?.type === \"code\") {\n break;\n } else if (lastToken?.type === \"blockquote\") {\n const oldToken = lastToken;\n const newText = oldToken.raw + \"\\n\" + lines.join(\"\\n\");\n const newToken = this.blockquote(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n break;\n } else if (lastToken?.type === \"list\") {\n const oldToken = lastToken;\n const newText = oldToken.raw + \"\\n\" + lines.join(\"\\n\");\n const newToken = this.list(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n lines = newText.substring(tokens.at(-1).raw.length).split(\"\\n\");\n continue;\n }\n }\n return {\n type: \"blockquote\",\n raw,\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list2 = {\n type: \"list\",\n raw: \"\",\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : \"\",\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : \"[*+-]\";\n }\n const itemRegex = this.rules.other.listItemRegex(bull);\n let endsWithBlankLine = false;\n while (src) {\n let endEarly = false;\n let raw = \"\";\n let itemContents = \"\";\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) {\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split(\"\\n\", 1)[0].replace(this.rules.other.listReplaceTabs, (t) => \" \".repeat(3 * t.length));\n let nextLine = src.split(\"\\n\", 1)[0];\n let blankLine = !line.trim();\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n } else if (blankLine) {\n indent = cap[1].length + 1;\n } else {\n indent = cap[2].search(this.rules.other.nonSpaceChar);\n indent = indent > 4 ? 1 : indent;\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n if (blankLine && this.rules.other.blankLine.test(nextLine)) {\n raw += nextLine + \"\\n\";\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = this.rules.other.nextBulletRegex(indent);\n const hrRegex = this.rules.other.hrRegex(indent);\n const fencesBeginRegex = this.rules.other.fencesBeginRegex(indent);\n const headingBeginRegex = this.rules.other.headingBeginRegex(indent);\n const htmlBeginRegex = this.rules.other.htmlBeginRegex(indent);\n while (src) {\n const rawLine = src.split(\"\\n\", 1)[0];\n let nextLineWithoutTabs;\n nextLine = rawLine;\n if (this.options.pedantic) {\n nextLine = nextLine.replace(this.rules.other.listReplaceNesting, \" \");\n nextLineWithoutTabs = nextLine;\n } else {\n nextLineWithoutTabs = nextLine.replace(this.rules.other.tabCharGlobal, \" \");\n }\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n if (htmlBeginRegex.test(nextLine)) {\n break;\n }\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n if (hrRegex.test(nextLine)) {\n break;\n }\n if (nextLineWithoutTabs.search(this.rules.other.nonSpaceChar) >= indent || !nextLine.trim()) {\n itemContents += \"\\n\" + nextLineWithoutTabs.slice(indent);\n } else {\n if (blankLine) {\n break;\n }\n if (line.replace(this.rules.other.tabCharGlobal, \" \").search(this.rules.other.nonSpaceChar) >= 4) {\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += \"\\n\" + nextLine;\n }\n if (!blankLine && !nextLine.trim()) {\n blankLine = true;\n }\n raw += rawLine + \"\\n\";\n src = src.substring(rawLine.length + 1);\n line = nextLineWithoutTabs.slice(indent);\n }\n }\n if (!list2.loose) {\n if (endsWithBlankLine) {\n list2.loose = true;\n } else if (this.rules.other.doubleBlankLine.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n if (this.options.gfm) {\n istask = this.rules.other.listIsTask.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== \"[ ] \";\n itemContents = itemContents.replace(this.rules.other.listReplaceTask, \"\");\n }\n }\n list2.items.push({\n type: \"list_item\",\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list2.raw += raw;\n }\n const lastItem = list2.items.at(-1);\n if (lastItem) {\n lastItem.raw = lastItem.raw.trimEnd();\n lastItem.text = lastItem.text.trimEnd();\n } else {\n return;\n }\n list2.raw = list2.raw.trimEnd();\n for (let i = 0; i < list2.items.length; i++) {\n this.lexer.state.top = false;\n list2.items[i].tokens = this.lexer.blockTokens(list2.items[i].text, []);\n if (!list2.loose) {\n const spacers = list2.items[i].tokens.filter((t) => t.type === \"space\");\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some((t) => this.rules.other.anyLine.test(t.raw));\n list2.loose = hasMultipleLineBreaks;\n }\n }\n if (list2.loose) {\n for (let i = 0; i < list2.items.length; i++) {\n list2.items[i].loose = true;\n }\n }\n return list2;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: \"html\",\n block: true,\n raw: cap[0],\n pre: cap[1] === \"pre\" || cap[1] === \"script\" || cap[1] === \"style\",\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag2 = cap[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal, \" \");\n const href = cap[2] ? cap[2].replace(this.rules.other.hrefBrackets, \"$1\").replace(this.rules.inline.anyPunctuation, \"$1\") : \"\";\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, \"$1\") : cap[3];\n return {\n type: \"def\",\n tag: tag2,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!this.rules.other.tableDelimiter.test(cap[2])) {\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(this.rules.other.tableAlignChars, \"\").split(\"|\");\n const rows = cap[3]?.trim() ? cap[3].replace(this.rules.other.tableRowBlankLine, \"\").split(\"\\n\") : [];\n const item = {\n type: \"table\",\n raw: cap[0],\n header: [],\n align: [],\n rows: []\n };\n if (headers.length !== aligns.length) {\n return;\n }\n for (const align of aligns) {\n if (this.rules.other.tableAlignRight.test(align)) {\n item.align.push(\"right\");\n } else if (this.rules.other.tableAlignCenter.test(align)) {\n item.align.push(\"center\");\n } else if (this.rules.other.tableAlignLeft.test(align)) {\n item.align.push(\"left\");\n } else {\n item.align.push(null);\n }\n }\n for (let i = 0; i < headers.length; i++) {\n item.header.push({\n text: headers[i],\n tokens: this.lexer.inline(headers[i]),\n header: true,\n align: item.align[i]\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell),\n header: false,\n align: item.align[i]\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: \"heading\",\n raw: cap[0],\n depth: cap[2].charAt(0) === \"=\" ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === \"\\n\" ? cap[1].slice(0, -1) : cap[1];\n return {\n type: \"paragraph\",\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: \"text\",\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: \"escape\",\n raw: cap[0],\n text: cap[1]\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && this.rules.other.startATag.test(cap[0])) {\n this.lexer.state.inLink = true;\n } else if (this.lexer.state.inLink && this.rules.other.endATag.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: \"html\",\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && this.rules.other.startAngleBracket.test(trimmedUrl)) {\n if (!this.rules.other.endAngleBracket.test(trimmedUrl)) {\n return;\n }\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), \"\\\\\");\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n const lastParenIndex = findClosingBracket(cap[2], \"()\");\n if (lastParenIndex === -2) {\n return;\n }\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf(\"!\") === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = \"\";\n }\n }\n let href = cap[2];\n let title = \"\";\n if (this.options.pedantic) {\n const link2 = this.rules.other.pedanticHrefTitle.exec(href);\n if (link2) {\n href = link2[1];\n title = link2[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : \"\";\n }\n href = href.trim();\n if (this.rules.other.startAngleBracket.test(href)) {\n if (this.options.pedantic && !this.rules.other.endAngleBracket.test(trimmedUrl)) {\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, \"$1\") : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, \"$1\") : title\n }, cap[0], this.lexer, this.rules);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(this.rules.other.multipleSpaceGlobal, \" \");\n const link2 = links[linkString.toLowerCase()];\n if (!link2) {\n const text = cap[0].charAt(0);\n return {\n type: \"text\",\n raw: text,\n text\n };\n }\n return outputLink(cap, link2, cap[0], this.lexer, this.rules);\n }\n }\n emStrong(src, maskedSrc, prevChar = \"\") {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match) return;\n if (match[3] && prevChar.match(this.rules.other.unicodeAlphaNumeric)) return;\n const nextChar = match[1] || match[2] || \"\";\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === \"*\" ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim) continue;\n rLength = [...rDelim].length;\n if (match[3] || match[4]) {\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) {\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue;\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0) continue;\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n if (Math.min(lLength, rLength) % 2) {\n const text2 = raw.slice(1, -1);\n return {\n type: \"em\",\n raw,\n text: text2,\n tokens: this.lexer.inlineTokens(text2)\n };\n }\n const text = raw.slice(2, -2);\n return {\n type: \"strong\",\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(this.rules.other.newLineCharGlobal, \" \");\n const hasNonSpaceChars = this.rules.other.nonSpaceChar.test(text);\n const hasSpaceCharsOnBothEnds = this.rules.other.startingSpaceChar.test(text) && this.rules.other.endingSpaceChar.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n return {\n type: \"codespan\",\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: \"br\",\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: \"del\",\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === \"@\") {\n text = cap[1];\n href = \"mailto:\" + text;\n } else {\n text = cap[1];\n href = text;\n }\n return {\n type: \"link\",\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: \"text\",\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === \"@\") {\n text = cap[0];\n href = \"mailto:\" + text;\n } else {\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? \"\";\n } while (prevCapZero !== cap[0]);\n text = cap[0];\n if (cap[1] === \"www.\") {\n href = \"http://\" + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: \"link\",\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: \"text\",\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n const escaped = this.lexer.state.inRawBlock;\n return {\n type: \"text\",\n raw: cap[0],\n text: cap[0],\n escaped\n };\n }\n }\n};\n\n// src/Lexer.ts\nvar _Lexer = class __Lexer {\n tokens;\n options;\n state;\n tokenizer;\n inlineQueue;\n constructor(options2) {\n this.tokens = [];\n this.tokens.links = /* @__PURE__ */ Object.create(null);\n this.options = options2 || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n const rules = {\n other,\n block: block.normal,\n inline: inline.normal\n };\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n /**\n * Static Lex Method\n */\n static lex(src, options2) {\n const lexer2 = new __Lexer(options2);\n return lexer2.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options2) {\n const lexer2 = new __Lexer(options2);\n return lexer2.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n lex(src) {\n src = src.replace(other.carriageReturn, \"\\n\");\n this.blockTokens(src, this.tokens);\n for (let i = 0; i < this.inlineQueue.length; i++) {\n const next = this.inlineQueue[i];\n this.inlineTokens(next.src, next.tokens);\n }\n this.inlineQueue = [];\n return this.tokens;\n }\n blockTokens(src, tokens = [], lastParagraphClipped = false) {\n if (this.options.pedantic) {\n src = src.replace(other.tabCharGlobal, \" \").replace(other.spaceLine, \"\");\n }\n while (src) {\n let token;\n if (this.options.extensions?.block?.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (token.raw.length === 1 && lastToken !== void 0) {\n lastToken.raw += \"\\n\";\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === \"paragraph\" || lastToken?.type === \"text\") {\n lastToken.raw += \"\\n\" + token.raw;\n lastToken.text += \"\\n\" + token.text;\n this.inlineQueue.at(-1).src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === \"paragraph\" || lastToken?.type === \"text\") {\n lastToken.raw += \"\\n\" + token.raw;\n lastToken.text += \"\\n\" + token.raw;\n this.inlineQueue.at(-1).src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n let cutSrc = src;\n if (this.options.extensions?.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === \"number\" && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n const lastToken = tokens.at(-1);\n if (lastParagraphClipped && lastToken?.type === \"paragraph\") {\n lastToken.raw += \"\\n\" + token.raw;\n lastToken.text += \"\\n\" + token.text;\n this.inlineQueue.pop();\n this.inlineQueue.at(-1).src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n }\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === \"text\") {\n lastToken.raw += \"\\n\" + token.raw;\n lastToken.text += \"\\n\" + token.text;\n this.inlineQueue.pop();\n this.inlineQueue.at(-1).src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = \"Infinite loop on byte: \" + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let maskedSrc = src;\n let match = null;\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf(\"[\") + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + \"[\" + \"a\".repeat(match[0].length - 2) + \"]\" + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + \"++\" + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + \"[\" + \"a\".repeat(match[0].length - 2) + \"]\" + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n let keepPrevChar = false;\n let prevChar = \"\";\n while (src) {\n if (!keepPrevChar) {\n prevChar = \"\";\n }\n keepPrevChar = false;\n let token;\n if (this.options.extensions?.inline?.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (token.type === \"text\" && lastToken?.type === \"text\") {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n let cutSrc = src;\n if (this.options.extensions?.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === \"number\" && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== \"_\") {\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n const lastToken = tokens.at(-1);\n if (lastToken?.type === \"text\") {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = \"Infinite loop on byte: \" + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n};\n\n// src/Renderer.ts\nvar _Renderer = class {\n options;\n parser;\n // set by the parser\n constructor(options2) {\n this.options = options2 || _defaults;\n }\n space(token) {\n return \"\";\n }\n code({ text, lang, escaped }) {\n const langString = (lang || \"\").match(other.notSpaceStart)?.[0];\n const code = text.replace(other.endingNewline, \"\") + \"\\n\";\n if (!langString) {\n return \"<pre><code>\" + (escaped ? code : escape2(code, true)) + \"</code></pre>\\n\";\n }\n return '<pre><code class=\"language-' + escape2(langString) + '\">' + (escaped ? code : escape2(code, true)) + \"</code></pre>\\n\";\n }\n blockquote({ tokens }) {\n const body = this.parser.parse(tokens);\n return `<blockquote>\n${body}</blockquote>\n`;\n }\n html({ text }) {\n return text;\n }\n heading({ tokens, depth }) {\n return `<h${depth}>${this.parser.parseInline(tokens)}</h${depth}>\n`;\n }\n hr(token) {\n return \"<hr>\\n\";\n }\n list(token) {\n const ordered = token.ordered;\n const start = token.start;\n let body = \"\";\n for (let j = 0; j < token.items.length; j++) {\n const item = token.items[j];\n body += this.listitem(item);\n }\n const type = ordered ? \"ol\" : \"ul\";\n const startAttr = ordered && start !== 1 ? ' start=\"' + start + '\"' : \"\";\n return \"<\" + type + startAttr + \">\\n\" + body + \"</\" + type + \">\\n\";\n }\n listitem(item) {\n let itemBody = \"\";\n if (item.task) {\n const checkbox = this.checkbox({ checked: !!item.checked });\n if (item.loose) {\n if (item.tokens[0]?.type === \"paragraph\") {\n item.tokens[0].text = checkbox + \" \" + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === \"text\") {\n item.tokens[0].tokens[0].text = checkbox + \" \" + escape2(item.tokens[0].tokens[0].text);\n item.tokens[0].tokens[0].escaped = true;\n }\n } else {\n item.tokens.unshift({\n type: \"text\",\n raw: checkbox + \" \",\n text: checkbox + \" \",\n escaped: true\n });\n }\n } else {\n itemBody += checkbox + \" \";\n }\n }\n itemBody += this.parser.parse(item.tokens, !!item.loose);\n return `<li>${itemBody}</li>\n`;\n }\n checkbox({ checked }) {\n return \"<input \" + (checked ? 'checked=\"\" ' : \"\") + 'disabled=\"\" type=\"checkbox\">';\n }\n paragraph({ tokens }) {\n return `<p>${this.parser.parseInline(tokens)}</p>\n`;\n }\n table(token) {\n let header = \"\";\n let cell = \"\";\n for (let j = 0; j < token.header.length; j++) {\n cell += this.tablecell(token.header[j]);\n }\n header += this.tablerow({ text: cell });\n let body = \"\";\n for (let j = 0; j < token.rows.length; j++) {\n const row = token.rows[j];\n cell = \"\";\n for (let k = 0; k < row.length; k++) {\n cell += this.tablecell(row[k]);\n }\n body += this.tablerow({ text: cell });\n }\n if (body) body = `<tbody>${body}</tbody>`;\n return \"<table>\\n<thead>\\n\" + header + \"</thead>\\n\" + body + \"</table>\\n\";\n }\n tablerow({ text }) {\n return `<tr>\n${text}</tr>\n`;\n }\n tablecell(token) {\n const content = this.parser.parseInline(token.tokens);\n const type = token.header ? \"th\" : \"td\";\n const tag2 = token.align ? `<${type} align=\"${token.align}\">` : `<${type}>`;\n return tag2 + content + `</${type}>\n`;\n }\n /**\n * span level renderer\n */\n strong({ tokens }) {\n return `<strong>${this.parser.parseInline(tokens)}</strong>`;\n }\n em({ tokens }) {\n return `<em>${this.parser.parseInline(tokens)}</em>`;\n }\n codespan({ text }) {\n return `<code>${escape2(text, true)}</code>`;\n }\n br(token) {\n return \"<br>\";\n }\n del({ tokens }) {\n return `<del>${this.parser.parseInline(tokens)}</del>`;\n }\n link({ href, title, tokens }) {\n const text = this.parser.parseInline(tokens);\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + escape2(title) + '\"';\n }\n out += \">\" + text + \"</a>\";\n return out;\n }\n image({ href, title, text, tokens }) {\n if (tokens) {\n text = this.parser.parseInline(tokens, this.parser.textRenderer);\n }\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return escape2(text);\n }\n href = cleanHref;\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${escape2(title)}\"`;\n }\n out += \">\";\n return out;\n }\n text(token) {\n return \"tokens\" in token && token.tokens ? this.parser.parseInline(token.tokens) : \"escaped\" in token && token.escaped ? token.text : escape2(token.text);\n }\n};\n\n// src/TextRenderer.ts\nvar _TextRenderer = class {\n // no need for block level renderers\n strong({ text }) {\n return text;\n }\n em({ text }) {\n return text;\n }\n codespan({ text }) {\n return text;\n }\n del({ text }) {\n return text;\n }\n html({ text }) {\n return text;\n }\n text({ text }) {\n return text;\n }\n link({ text }) {\n return \"\" + text;\n }\n image({ text }) {\n return \"\" + text;\n }\n br() {\n return \"\";\n }\n};\n\n// src/Parser.ts\nvar _Parser = class __Parser {\n options;\n renderer;\n textRenderer;\n constructor(options2) {\n this.options = options2 || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.renderer.parser = this;\n this.textRenderer = new _TextRenderer();\n }\n /**\n * Static Parse Method\n */\n static parse(tokens, options2) {\n const parser2 = new __Parser(options2);\n return parser2.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options2) {\n const parser2 = new __Parser(options2);\n return parser2.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = \"\";\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n if (this.options.extensions?.renderers?.[anyToken.type]) {\n const genericToken = anyToken;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || ![\"space\", \"hr\", \"heading\", \"code\", \"table\", \"blockquote\", \"list\", \"html\", \"paragraph\", \"text\"].includes(genericToken.type)) {\n out += ret || \"\";\n continue;\n }\n }\n const token = anyToken;\n switch (token.type) {\n case \"space\": {\n out += this.renderer.space(token);\n continue;\n }\n case \"hr\": {\n out += this.renderer.hr(token);\n continue;\n }\n case \"heading\": {\n out += this.renderer.heading(token);\n continue;\n }\n case \"code\": {\n out += this.renderer.code(token);\n continue;\n }\n case \"table\": {\n out += this.renderer.table(token);\n continue;\n }\n case \"blockquote\": {\n out += this.renderer.blockquote(token);\n continue;\n }\n case \"list\": {\n out += this.renderer.list(token);\n continue;\n }\n case \"html\": {\n out += this.renderer.html(token);\n continue;\n }\n case \"paragraph\": {\n out += this.renderer.paragraph(token);\n continue;\n }\n case \"text\": {\n let textToken = token;\n let body = this.renderer.text(textToken);\n while (i + 1 < tokens.length && tokens[i + 1].type === \"text\") {\n textToken = tokens[++i];\n body += \"\\n\" + this.renderer.text(textToken);\n }\n if (top) {\n out += this.renderer.paragraph({\n type: \"paragraph\",\n raw: body,\n text: body,\n tokens: [{ type: \"text\", raw: body, text: body, escaped: true }]\n });\n } else {\n out += body;\n }\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return \"\";\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer = this.renderer) {\n let out = \"\";\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n if (this.options.extensions?.renderers?.[anyToken.type]) {\n const ret = this.options.extensions.renderers[anyToken.type].call({ parser: this }, anyToken);\n if (ret !== false || ![\"escape\", \"html\", \"link\", \"image\", \"strong\", \"em\", \"codespan\", \"br\", \"del\", \"text\"].includes(anyToken.type)) {\n out += ret || \"\";\n continue;\n }\n }\n const token = anyToken;\n switch (token.type) {\n case \"escape\": {\n out += renderer.text(token);\n break;\n }\n case \"html\": {\n out += renderer.html(token);\n break;\n }\n case \"link\": {\n out += renderer.link(token);\n break;\n }\n case \"image\": {\n out += renderer.image(token);\n break;\n }\n case \"strong\": {\n out += renderer.strong(token);\n break;\n }\n case \"em\": {\n out += renderer.em(token);\n break;\n }\n case \"codespan\": {\n out += renderer.codespan(token);\n break;\n }\n case \"br\": {\n out += renderer.br(token);\n break;\n }\n case \"del\": {\n out += renderer.del(token);\n break;\n }\n case \"text\": {\n out += renderer.text(token);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return \"\";\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n};\n\n// src/Hooks.ts\nvar _Hooks = class {\n options;\n block;\n constructor(options2) {\n this.options = options2 || _defaults;\n }\n static passThroughHooks = /* @__PURE__ */ new Set([\n \"preprocess\",\n \"postprocess\",\n \"processAllTokens\"\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html2) {\n return html2;\n }\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens) {\n return tokens;\n }\n /**\n * Provide function to tokenize markdown\n */\n provideLexer() {\n return this.block ? _Lexer.lex : _Lexer.lexInline;\n }\n /**\n * Provide function to parse tokens\n */\n provideParser() {\n return this.block ? _Parser.parse : _Parser.parseInline;\n }\n};\n\n// src/Instance.ts\nvar Marked = class {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.parseMarkdown(true);\n parseInline = this.parseMarkdown(false);\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case \"table\": {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case \"list\": {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n const tokens2 = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens2, callback));\n });\n } else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n const opts = { ...pack };\n opts.async = this.defaults.async || opts.async || false;\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error(\"extension name required\");\n }\n if (\"renderer\" in ext) {\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n extensions.renderers[ext.name] = function(...args2) {\n let ret = ext.renderer.apply(this, args2);\n if (ret === false) {\n ret = prevRenderer.apply(this, args2);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if (\"tokenizer\" in ext) {\n if (!ext.level || ext.level !== \"block\" && ext.level !== \"inline\") {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) {\n if (ext.level === \"block\") {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === \"inline\") {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if (\"childTokens\" in ext && ext.childTokens) {\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if ([\"options\", \"parser\"].includes(prop)) {\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n renderer[rendererProp] = (...args2) => {\n let ret = rendererFunc.apply(renderer, args2);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args2);\n }\n return ret || \"\";\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if ([\"options\", \"rules\", \"lexer\"].includes(prop)) {\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n tokenizer[tokenizerProp] = (...args2) => {\n let ret = tokenizerFunc.apply(tokenizer, args2);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args2);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if ([\"options\", \"block\"].includes(prop)) {\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then((ret2) => {\n return prevHook.call(hooks, ret2);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n hooks[hooksProp] = (...args2) => {\n let ret = hooksFunc.apply(hooks, args2);\n if (ret === false) {\n ret = prevHook.apply(hooks, args2);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n if (pack.walkTokens) {\n const walkTokens2 = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function(token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens2) {\n values = values.concat(walkTokens2.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options2) {\n return _Lexer.lex(src, options2 ?? this.defaults);\n }\n parser(tokens, options2) {\n return _Parser.parse(tokens, options2 ?? this.defaults);\n }\n parseMarkdown(blockType) {\n const parse2 = (src, options2) => {\n const origOpt = { ...options2 };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.onError(!!opt.silent, !!opt.async);\n if (this.defaults.async === true && origOpt.async === false) {\n return throwError(new Error(\"marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.\"));\n }\n if (typeof src === \"undefined\" || src === null) {\n return throwError(new Error(\"marked(): input parameter is undefined or null\"));\n }\n if (typeof src !== \"string\") {\n return throwError(new Error(\"marked(): input parameter is of type \" + Object.prototype.toString.call(src) + \", string expected\"));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n opt.hooks.block = blockType;\n }\n const lexer2 = opt.hooks ? opt.hooks.provideLexer() : blockType ? _Lexer.lex : _Lexer.lexInline;\n const parser2 = opt.hooks ? opt.hooks.provideParser() : blockType ? _Parser.parse : _Parser.parseInline;\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then((src2) => lexer2(src2, opt)).then((tokens) => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens).then((tokens) => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens).then((tokens) => parser2(tokens, opt)).then((html2) => opt.hooks ? opt.hooks.postprocess(html2) : html2).catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer2(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html2 = parser2(tokens, opt);\n if (opt.hooks) {\n html2 = opt.hooks.postprocess(html2);\n }\n return html2;\n } catch (e) {\n return throwError(e);\n }\n };\n return parse2;\n }\n onError(silent, async) {\n return (e) => {\n e.message += \"\\nPlease report this to https://github.com/markedjs/marked.\";\n if (silent) {\n const msg = \"<p>An error occurred:</p><pre>\" + escape2(e.message + \"\", true) + \"</pre>\";\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n};\n\n// src/marked.ts\nvar markedInstance = new Marked();\nfunction marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\nmarked.options = marked.setOptions = function(options2) {\n markedInstance.setOptions(options2);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\nmarked.use = function(...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\nmarked.walkTokens = function(tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\nmarked.parseInline = markedInstance.parseInline;\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nvar options = marked.options;\nvar setOptions = marked.setOptions;\nvar use = marked.use;\nvar walkTokens = marked.walkTokens;\nvar parseInline = marked.parseInline;\nvar parse = marked;\nvar parser = _Parser.parse;\nvar lexer = _Lexer.lex;\nexport {\n _Hooks as Hooks,\n _Lexer as Lexer,\n Marked,\n _Parser as Parser,\n _Renderer as Renderer,\n _TextRenderer as TextRenderer,\n _Tokenizer as Tokenizer,\n _defaults as defaults,\n _getDefaults as getDefaults,\n lexer,\n marked,\n options,\n parse,\n parseInline,\n parser,\n setOptions,\n use,\n walkTokens\n};\n//# sourceMappingURL=marked.esm.js.map\n","import { Decoration, showPanel, EditorView, ViewPlugin, gutter, showTooltip, hoverTooltip, getPanel, activateHover, logException, WidgetType, GutterMarker } from '@codemirror/view';\nimport { StateEffect, StateField, Facet, combineConfig, RangeSet, RangeSetBuilder } from '@codemirror/state';\nimport elt from 'crelt';\n\nclass SelectedDiagnostic {\n constructor(from, to, diagnostic) {\n this.from = from;\n this.to = to;\n this.diagnostic = diagnostic;\n }\n}\nclass LintState {\n constructor(diagnostics, panel, selected) {\n this.diagnostics = diagnostics;\n this.panel = panel;\n this.selected = selected;\n }\n static init(diagnostics, panel, state) {\n // Filter the list of diagnostics for which to create markers\n let diagnosticFilter = state.facet(lintConfig).markerFilter;\n if (diagnosticFilter)\n diagnostics = diagnosticFilter(diagnostics, state);\n let sorted = diagnostics.slice().sort((a, b) => a.from - b.from || a.to - b.to);\n let deco = new RangeSetBuilder(), active = [], pos = 0;\n let scan = state.doc.iter(), scanPos = 0, docLen = state.doc.length;\n for (let i = 0;;) {\n let next = i == sorted.length ? null : sorted[i];\n if (!next && !active.length)\n break;\n let from, to;\n if (active.length) {\n from = pos;\n to = active.reduce((p, d) => Math.min(p, d.to), next && next.from > from ? next.from : 1e8);\n }\n else {\n from = next.from;\n if (from > docLen)\n break;\n to = next.to;\n active.push(next);\n i++;\n }\n while (i < sorted.length) {\n let next = sorted[i];\n if (next.from == from && (next.to > next.from || next.to == from)) {\n active.push(next);\n i++;\n to = Math.min(next.to, to);\n }\n else {\n to = Math.min(next.from, to);\n break;\n }\n }\n to = Math.min(to, docLen);\n let widget = false;\n if (active.some(d => d.from == from && (d.to == to || to == docLen))) {\n widget = from == to;\n if (!widget && to - from < 10) {\n let behind = from - (scanPos + scan.value.length);\n if (behind > 0) {\n scan.next(behind);\n scanPos = from;\n }\n for (let check = from;;) {\n if (check >= to) {\n widget = true;\n break;\n }\n if (!scan.lineBreak && scanPos + scan.value.length > check)\n break;\n check = scanPos + scan.value.length;\n scanPos += scan.value.length;\n scan.next();\n }\n }\n }\n let sev = maxSeverity(active);\n if (widget) {\n deco.add(from, from, Decoration.widget({\n widget: new DiagnosticWidget(sev),\n diagnostics: active.slice()\n }));\n }\n else {\n let markClass = active.reduce((c, d) => d.markClass ? c + \" \" + d.markClass : c, \"\");\n deco.add(from, to, Decoration.mark({\n class: \"cm-lintRange cm-lintRange-\" + sev + markClass,\n diagnostics: active.slice(),\n inclusiveEnd: active.some(a => a.to > to)\n }));\n }\n pos = to;\n if (pos == docLen)\n break;\n for (let i = 0; i < active.length; i++)\n if (active[i].to <= pos)\n active.splice(i--, 1);\n }\n let set = deco.finish();\n return new LintState(set, panel, findDiagnostic(set));\n }\n}\nfunction findDiagnostic(diagnostics, diagnostic = null, after = 0) {\n let found = null;\n diagnostics.between(after, 1e9, (from, to, { spec }) => {\n if (diagnostic && spec.diagnostics.indexOf(diagnostic) < 0)\n return;\n if (!found)\n found = new SelectedDiagnostic(from, to, diagnostic || spec.diagnostics[0]);\n else if (spec.diagnostics.indexOf(found.diagnostic) < 0)\n return false;\n else\n found = new SelectedDiagnostic(found.from, to, found.diagnostic);\n });\n return found;\n}\nfunction hideTooltip(tr, tooltip) {\n let from = tooltip.pos, to = tooltip.end || from;\n let result = tr.state.facet(lintConfig).hideOn(tr, from, to);\n if (result != null)\n return result;\n let line = tr.startState.doc.lineAt(tooltip.pos);\n return !!(tr.effects.some(e => e.is(setDiagnosticsEffect)) || tr.changes.touchesRange(line.from, Math.max(line.to, to)));\n}\nfunction maybeEnableLint(state, effects) {\n return state.field(lintState, false) ? effects : effects.concat(StateEffect.appendConfig.of(lintExtensions));\n}\n/**\nReturns a transaction spec which updates the current set of\ndiagnostics, and enables the lint extension if if wasn't already\nactive.\n*/\nfunction setDiagnostics(state, diagnostics) {\n return {\n effects: maybeEnableLint(state, [setDiagnosticsEffect.of(diagnostics)])\n };\n}\n/**\nThe state effect that updates the set of active diagnostics. Can\nbe useful when writing an extension that needs to track these.\n*/\nconst setDiagnosticsEffect = /*@__PURE__*/StateEffect.define();\nconst togglePanel = /*@__PURE__*/StateEffect.define();\nconst movePanelSelection = /*@__PURE__*/StateEffect.define();\nconst lintState = /*@__PURE__*/StateField.define({\n create() {\n return new LintState(Decoration.none, null, null);\n },\n update(value, tr) {\n if (tr.docChanged && value.diagnostics.size) {\n let mapped = value.diagnostics.map(tr.changes), selected = null, panel = value.panel;\n if (value.selected) {\n let selPos = tr.changes.mapPos(value.selected.from, 1);\n selected = findDiagnostic(mapped, value.selected.diagnostic, selPos) || findDiagnostic(mapped, null, selPos);\n }\n if (!mapped.size && panel && tr.state.facet(lintConfig).autoPanel)\n panel = null;\n value = new LintState(mapped, panel, selected);\n }\n for (let effect of tr.effects) {\n if (effect.is(setDiagnosticsEffect)) {\n let panel = !tr.state.facet(lintConfig).autoPanel ? value.panel : effect.value.length ? LintPanel.open : null;\n value = LintState.init(effect.value, panel, tr.state);\n }\n else if (effect.is(togglePanel)) {\n value = new LintState(value.diagnostics, effect.value ? LintPanel.open : null, value.selected);\n }\n else if (effect.is(movePanelSelection)) {\n value = new LintState(value.diagnostics, value.panel, effect.value);\n }\n }\n return value;\n },\n provide: f => [showPanel.from(f, val => val.panel),\n EditorView.decorations.from(f, s => s.diagnostics)]\n});\n/**\nReturns the number of active lint diagnostics in the given state.\n*/\nfunction diagnosticCount(state) {\n let lint = state.field(lintState, false);\n return lint ? lint.diagnostics.size : 0;\n}\nconst activeMark = /*@__PURE__*/Decoration.mark({ class: \"cm-lintRange cm-lintRange-active\" });\nfunction lintTooltip(view, pos, side) {\n let { diagnostics } = view.state.field(lintState);\n let found, start = -1, end = -1;\n diagnostics.between(pos - (side < 0 ? 1 : 0), pos + (side > 0 ? 1 : 0), (from, to, { spec }) => {\n if (pos >= from && pos <= to &&\n (from == to || ((pos > from || side > 0) && (pos < to || side < 0)))) {\n found = spec.diagnostics;\n start = from;\n end = to;\n return false;\n }\n });\n let diagnosticFilter = view.state.facet(lintConfig).tooltipFilter;\n if (found && diagnosticFilter)\n found = diagnosticFilter(found, view.state);\n if (!found)\n return null;\n return {\n pos: start,\n end: end,\n above: true,\n create() {\n return { dom: diagnosticsTooltip(view, found) };\n }\n };\n}\nfunction diagnosticsTooltip(view, diagnostics) {\n return elt(\"ul\", { class: \"cm-tooltip-lint\" }, diagnostics.map(d => renderDiagnostic(view, d, false)));\n}\n/**\nCommand to open and focus the lint panel.\n*/\nconst openLintPanel = (view) => {\n let field = view.state.field(lintState, false);\n if (!field || !field.panel)\n view.dispatch({ effects: maybeEnableLint(view.state, [togglePanel.of(true)]) });\n let panel = getPanel(view, LintPanel.open);\n if (panel)\n panel.dom.querySelector(\".cm-panel-lint ul\").focus();\n return true;\n};\n/**\nCommand to close the lint panel, when open.\n*/\nconst closeLintPanel = (view) => {\n let field = view.state.field(lintState, false);\n if (!field || !field.panel)\n return false;\n view.dispatch({ effects: togglePanel.of(false) });\n return true;\n};\n/**\nMove the selection to the next diagnostic.\n*/\nconst nextDiagnostic = (view) => {\n let field = view.state.field(lintState, false);\n if (!field)\n return false;\n let sel = view.state.selection.main, next = findDiagnostic(field.diagnostics, null, sel.to + 1);\n if (!next) {\n next = findDiagnostic(field.diagnostics, null, 0);\n if (!next || next.from == sel.from && next.to == sel.to)\n return false;\n }\n view.dispatch({ selection: { anchor: next.from, head: next.to }, scrollIntoView: true });\n activateHover(view, next.from, 1, {\n tooltip: lintHover,\n until: tr => tr.docChanged || tr.newSelection.main.head < next.from || tr.newSelection.main.head > next.to\n });\n return true;\n};\n/**\nMove the selection to the previous diagnostic.\n*/\nconst previousDiagnostic = (view) => {\n var _a;\n let { state } = view, field = state.field(lintState, false);\n if (!field)\n return false;\n let sel = state.selection.main;\n let prevFrom, prevTo, lastFrom, lastTo;\n field.diagnostics.between(0, state.doc.length, (from, to) => {\n if (to < sel.to && (prevFrom == null || prevFrom < from)) {\n prevFrom = from;\n prevTo = to;\n }\n if (lastFrom == null || from > lastFrom) {\n lastFrom = from;\n lastTo = to;\n }\n });\n if (lastFrom == null || prevFrom == null && lastFrom == sel.from)\n return false;\n let from = prevFrom !== null && prevFrom !== void 0 ? prevFrom : lastFrom, to = (_a = prevTo !== null && prevTo !== void 0 ? prevTo : lastTo) !== null && _a !== void 0 ? _a : from;\n view.dispatch({ selection: { anchor: from, head: to }, scrollIntoView: true });\n activateHover(view, from, 1, {\n tooltip: lintHover,\n until: tr => tr.docChanged || tr.newSelection.main.head < from || tr.newSelection.main.head > to\n });\n return true;\n};\n/**\nA set of default key bindings for the lint functionality.\n\n- Ctrl-Shift-m (Cmd-Shift-m on macOS): [`openLintPanel`](https://codemirror.net/6/docs/ref/#lint.openLintPanel)\n- F8: [`nextDiagnostic`](https://codemirror.net/6/docs/ref/#lint.nextDiagnostic)\n*/\nconst lintKeymap = [\n { key: \"Mod-Shift-m\", run: openLintPanel, preventDefault: true },\n { key: \"F8\", run: nextDiagnostic }\n];\nconst lintPlugin = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.view = view;\n this.timeout = -1;\n this.set = true;\n let { delay } = view.state.facet(lintConfig);\n this.lintTime = Date.now() + delay;\n this.run = this.run.bind(this);\n this.timeout = setTimeout(this.run, delay);\n }\n run() {\n clearTimeout(this.timeout);\n let now = Date.now();\n if (now < this.lintTime - 10) {\n this.timeout = setTimeout(this.run, this.lintTime - now);\n }\n else {\n this.set = false;\n let { state } = this.view, { sources } = state.facet(lintConfig);\n if (sources.length)\n batchResults(sources.map(s => Promise.resolve(s(this.view))), annotations => {\n if (this.view.state.doc == state.doc)\n this.view.dispatch(setDiagnostics(this.view.state, annotations.reduce((a, b) => a.concat(b))));\n }, error => { logException(this.view.state, error); });\n }\n }\n update(update) {\n let config = update.state.facet(lintConfig);\n if (update.docChanged || config != update.startState.facet(lintConfig) ||\n config.needsRefresh && config.needsRefresh(update)) {\n this.lintTime = Date.now() + config.delay;\n if (!this.set) {\n this.set = true;\n this.timeout = setTimeout(this.run, config.delay);\n }\n }\n }\n force() {\n if (this.set) {\n this.lintTime = Date.now();\n this.run();\n }\n }\n destroy() {\n clearTimeout(this.timeout);\n }\n});\nfunction batchResults(promises, sink, error) {\n let collected = [], timeout = -1;\n for (let p of promises)\n p.then(value => {\n collected.push(value);\n clearTimeout(timeout);\n if (collected.length == promises.length)\n sink(collected);\n else\n timeout = setTimeout(() => sink(collected), 200);\n }, error);\n}\nconst lintConfig = /*@__PURE__*/Facet.define({\n combine(input) {\n return {\n sources: input.map(i => i.source).filter(x => x != null),\n ...combineConfig(input.map(i => i.config), {\n delay: 750,\n markerFilter: null,\n tooltipFilter: null,\n needsRefresh: null,\n hideOn: () => null,\n }, {\n delay: Math.max,\n markerFilter: combineFilter,\n tooltipFilter: combineFilter,\n needsRefresh: (a, b) => !a ? b : !b ? a : u => a(u) || b(u),\n hideOn: (a, b) => !a ? b : !b ? a : (t, x, y) => a(t, x, y) || b(t, x, y),\n autoPanel: (a, b) => a || b\n })\n };\n }\n});\nfunction combineFilter(a, b) {\n return !a ? b : !b ? a : (d, s) => b(a(d, s), s);\n}\n/**\nGiven a diagnostic source, this function returns an extension that\nenables linting with that source. It will be called whenever the\neditor is idle (after its content changed).\n\nNote that settings given here will apply to all linters active in\nthe editor. If `null` is given as source, this only configures the\nlint extension.\n*/\nfunction linter(source, config = {}) {\n return [\n lintConfig.of({ source, config }),\n lintPlugin,\n lintExtensions\n ];\n}\n/**\nForces any linters [configured](https://codemirror.net/6/docs/ref/#lint.linter) to run when the\neditor is idle to run right away.\n*/\nfunction forceLinting(view) {\n let plugin = view.plugin(lintPlugin);\n if (plugin)\n plugin.force();\n}\nfunction assignKeys(actions) {\n let assigned = [];\n if (actions)\n actions: for (let { name } of actions) {\n for (let i = 0; i < name.length; i++) {\n let ch = name[i];\n if (/[a-zA-Z]/.test(ch) && !assigned.some(c => c.toLowerCase() == ch.toLowerCase())) {\n assigned.push(ch);\n continue actions;\n }\n }\n assigned.push(\"\");\n }\n return assigned;\n}\nfunction renderDiagnostic(view, diagnostic, inPanel) {\n var _a;\n let keys = inPanel ? assignKeys(diagnostic.actions) : [];\n return elt(\"li\", { class: \"cm-diagnostic cm-diagnostic-\" + diagnostic.severity }, elt(\"span\", { class: \"cm-diagnosticText\" }, diagnostic.renderMessage ? diagnostic.renderMessage(view) : diagnostic.message), (_a = diagnostic.actions) === null || _a === void 0 ? void 0 : _a.map((action, i) => {\n let fired = false, click = (e) => {\n e.preventDefault();\n if (fired)\n return;\n fired = true;\n let found = findDiagnostic(view.state.field(lintState).diagnostics, diagnostic);\n if (found)\n action.apply(view, found.from, found.to);\n };\n let { name } = action, keyIndex = keys[i] ? name.indexOf(keys[i]) : -1;\n let nameElt = keyIndex < 0 ? name : [name.slice(0, keyIndex),\n elt(\"u\", name.slice(keyIndex, keyIndex + 1)),\n name.slice(keyIndex + 1)];\n let markClass = action.markClass ? \" \" + action.markClass : \"\";\n return elt(\"button\", {\n type: \"button\",\n class: \"cm-diagnosticAction\" + markClass,\n onclick: click,\n onmousedown: click,\n \"aria-label\": ` Action: ${name}${keyIndex < 0 ? \"\" : ` (access key \"${keys[i]})\"`}.`\n }, nameElt);\n }), diagnostic.source && elt(\"div\", { class: \"cm-diagnosticSource\" }, diagnostic.source));\n}\nclass DiagnosticWidget extends WidgetType {\n constructor(sev) {\n super();\n this.sev = sev;\n }\n eq(other) { return other.sev == this.sev; }\n toDOM() {\n return elt(\"span\", { class: \"cm-lintPoint cm-lintPoint-\" + this.sev });\n }\n}\nclass PanelItem {\n constructor(view, diagnostic) {\n this.diagnostic = diagnostic;\n this.id = \"item_\" + Math.floor(Math.random() * 0xffffffff).toString(16);\n this.dom = renderDiagnostic(view, diagnostic, true);\n this.dom.id = this.id;\n this.dom.setAttribute(\"role\", \"option\");\n }\n}\nclass LintPanel {\n constructor(view) {\n this.view = view;\n this.items = [];\n let onkeydown = (event) => {\n if (event.ctrlKey || event.altKey || event.metaKey)\n return;\n if (event.keyCode == 27) { // Escape\n closeLintPanel(this.view);\n this.view.focus();\n }\n else if (event.keyCode == 38 || event.keyCode == 33) { // ArrowUp, PageUp\n this.moveSelection((this.selectedIndex - 1 + this.items.length) % this.items.length);\n }\n else if (event.keyCode == 40 || event.keyCode == 34) { // ArrowDown, PageDown\n this.moveSelection((this.selectedIndex + 1) % this.items.length);\n }\n else if (event.keyCode == 36) { // Home\n this.moveSelection(0);\n }\n else if (event.keyCode == 35) { // End\n this.moveSelection(this.items.length - 1);\n }\n else if (event.keyCode == 13) { // Enter\n this.view.focus();\n }\n else if (event.keyCode >= 65 && event.keyCode <= 90 && this.selectedIndex >= 0) { // A-Z\n let { diagnostic } = this.items[this.selectedIndex], keys = assignKeys(diagnostic.actions);\n for (let i = 0; i < keys.length; i++)\n if (keys[i].toUpperCase().charCodeAt(0) == event.keyCode) {\n let found = findDiagnostic(this.view.state.field(lintState).diagnostics, diagnostic);\n if (found)\n diagnostic.actions[i].apply(view, found.from, found.to);\n }\n }\n else {\n return;\n }\n event.preventDefault();\n };\n let onclick = (event) => {\n for (let i = 0; i < this.items.length; i++) {\n if (this.items[i].dom.contains(event.target))\n this.moveSelection(i);\n }\n };\n this.list = elt(\"ul\", {\n tabIndex: 0,\n role: \"listbox\",\n \"aria-label\": this.view.state.phrase(\"Diagnostics\"),\n onkeydown,\n onclick\n });\n this.dom = elt(\"div\", { class: \"cm-panel-lint\" }, this.list, elt(\"button\", {\n type: \"button\",\n name: \"close\",\n \"aria-label\": this.view.state.phrase(\"close\"),\n onclick: () => closeLintPanel(this.view)\n }, \"×\"));\n this.update();\n }\n get selectedIndex() {\n let selected = this.view.state.field(lintState).selected;\n if (!selected)\n return -1;\n for (let i = 0; i < this.items.length; i++)\n if (this.items[i].diagnostic == selected.diagnostic)\n return i;\n return -1;\n }\n update() {\n let { diagnostics, selected } = this.view.state.field(lintState);\n let i = 0, needsSync = false, newSelectedItem = null;\n let seen = new Set();\n diagnostics.between(0, this.view.state.doc.length, (_start, _end, { spec }) => {\n for (let diagnostic of spec.diagnostics) {\n if (seen.has(diagnostic))\n continue;\n seen.add(diagnostic);\n let found = -1, item;\n for (let j = i; j < this.items.length; j++)\n if (this.items[j].diagnostic == diagnostic) {\n found = j;\n break;\n }\n if (found < 0) {\n item = new PanelItem(this.view, diagnostic);\n this.items.splice(i, 0, item);\n needsSync = true;\n }\n else {\n item = this.items[found];\n if (found > i) {\n this.items.splice(i, found - i);\n needsSync = true;\n }\n }\n if (selected && item.diagnostic == selected.diagnostic) {\n if (!item.dom.hasAttribute(\"aria-selected\")) {\n item.dom.setAttribute(\"aria-selected\", \"true\");\n newSelectedItem = item;\n }\n }\n else if (item.dom.hasAttribute(\"aria-selected\")) {\n item.dom.removeAttribute(\"aria-selected\");\n }\n i++;\n }\n });\n while (i < this.items.length && !(this.items.length == 1 && this.items[0].diagnostic.from < 0)) {\n needsSync = true;\n this.items.pop();\n }\n if (this.items.length == 0) {\n this.items.push(new PanelItem(this.view, {\n from: -1, to: -1,\n severity: \"info\",\n message: this.view.state.phrase(\"No diagnostics\")\n }));\n needsSync = true;\n }\n if (newSelectedItem) {\n this.list.setAttribute(\"aria-activedescendant\", newSelectedItem.id);\n this.view.requestMeasure({\n key: this,\n read: () => ({ sel: newSelectedItem.dom.getBoundingClientRect(), panel: this.list.getBoundingClientRect() }),\n write: ({ sel, panel }) => {\n let scaleY = panel.height / this.list.offsetHeight;\n if (sel.top < panel.top)\n this.list.scrollTop -= (panel.top - sel.top) / scaleY;\n else if (sel.bottom > panel.bottom)\n this.list.scrollTop += (sel.bottom - panel.bottom) / scaleY;\n }\n });\n }\n else if (this.selectedIndex < 0) {\n this.list.removeAttribute(\"aria-activedescendant\");\n }\n if (needsSync)\n this.sync();\n }\n sync() {\n let domPos = this.list.firstChild;\n function rm() {\n let prev = domPos;\n domPos = prev.nextSibling;\n prev.remove();\n }\n for (let item of this.items) {\n if (item.dom.parentNode == this.list) {\n while (domPos != item.dom)\n rm();\n domPos = item.dom.nextSibling;\n }\n else {\n this.list.insertBefore(item.dom, domPos);\n }\n }\n while (domPos)\n rm();\n }\n moveSelection(selectedIndex) {\n if (this.selectedIndex < 0)\n return;\n let field = this.view.state.field(lintState);\n let selection = findDiagnostic(field.diagnostics, this.items[selectedIndex].diagnostic);\n if (!selection)\n return;\n this.view.dispatch({\n selection: { anchor: selection.from, head: selection.to },\n scrollIntoView: true,\n effects: movePanelSelection.of(selection)\n });\n }\n static open(view) { return new LintPanel(view); }\n}\nfunction svg(content, attrs = `viewBox=\"0 0 40 40\"`) {\n return `url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" ${attrs}>${encodeURIComponent(content)}</svg>')`;\n}\nfunction underline(color) {\n return svg(`<path d=\"m0 2.5 l2 -1.5 l1 0 l2 1.5 l1 0\" stroke=\"${color}\" fill=\"none\" stroke-width=\".7\"/>`, `width=\"6\" height=\"3\"`);\n}\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-diagnostic\": {\n padding: \"3px 6px 3px 8px\",\n marginLeft: \"-1px\",\n display: \"block\",\n whiteSpace: \"pre-wrap\"\n },\n \".cm-diagnostic-error\": { borderLeft: \"5px solid #d11\" },\n \".cm-diagnostic-warning\": { borderLeft: \"5px solid orange\" },\n \".cm-diagnostic-info\": { borderLeft: \"5px solid #999\" },\n \".cm-diagnostic-hint\": { borderLeft: \"5px solid #66d\" },\n \".cm-diagnosticAction\": {\n font: \"inherit\",\n border: \"none\",\n padding: \"2px 4px\",\n backgroundColor: \"#444\",\n color: \"white\",\n borderRadius: \"3px\",\n marginLeft: \"8px\",\n cursor: \"pointer\"\n },\n \".cm-diagnosticSource\": {\n fontSize: \"70%\",\n opacity: .7\n },\n \".cm-lintRange\": {\n backgroundPosition: \"left bottom\",\n backgroundRepeat: \"repeat-x\",\n paddingBottom: \"0.7px\",\n },\n \".cm-lintRange-error\": { backgroundImage: /*@__PURE__*/underline(\"#f11\") },\n \".cm-lintRange-warning\": { backgroundImage: /*@__PURE__*/underline(\"orange\") },\n \".cm-lintRange-info\": { backgroundImage: /*@__PURE__*/underline(\"#999\") },\n \".cm-lintRange-hint\": { backgroundImage: /*@__PURE__*/underline(\"#66d\") },\n \".cm-lintRange-active\": { backgroundColor: \"#ffdd9980\" },\n \".cm-tooltip-lint\": {\n padding: 0,\n margin: 0\n },\n \".cm-lintPoint\": {\n position: \"relative\",\n \"&:after\": {\n content: '\"\"',\n position: \"absolute\",\n bottom: 0,\n left: \"-2px\",\n borderLeft: \"3px solid transparent\",\n borderRight: \"3px solid transparent\",\n borderBottom: \"4px solid #d11\"\n }\n },\n \".cm-lintPoint-warning\": {\n \"&:after\": { borderBottomColor: \"orange\" }\n },\n \".cm-lintPoint-info\": {\n \"&:after\": { borderBottomColor: \"#999\" }\n },\n \".cm-lintPoint-hint\": {\n \"&:after\": { borderBottomColor: \"#66d\" }\n },\n \".cm-panel.cm-panel-lint\": {\n position: \"relative\",\n \"& ul\": {\n maxHeight: \"100px\",\n overflowY: \"auto\",\n \"& [aria-selected]\": {\n backgroundColor: \"#ddd\",\n \"& u\": { textDecoration: \"underline\" }\n },\n \"&:focus [aria-selected]\": {\n background_fallback: \"#bdf\",\n backgroundColor: \"Highlight\",\n color_fallback: \"white\",\n color: \"HighlightText\"\n },\n \"& u\": { textDecoration: \"none\" },\n padding: 0,\n margin: 0\n },\n \"& [name=close]\": {\n position: \"absolute\",\n top: \"0\",\n right: \"2px\",\n background: \"inherit\",\n border: \"none\",\n font: \"inherit\",\n padding: 0,\n margin: 0\n }\n },\n \"&dark .cm-lintRange-active\": { backgroundColor: \"#86714a80\" },\n \"&dark .cm-panel.cm-panel-lint ul\": {\n \"& [aria-selected]\": {\n backgroundColor: \"#2e343e\",\n },\n }\n});\nfunction severityWeight(sev) {\n return sev == \"error\" ? 4 : sev == \"warning\" ? 3 : sev == \"info\" ? 2 : 1;\n}\nfunction maxSeverity(diagnostics) {\n let sev = \"hint\", weight = 1;\n for (let d of diagnostics) {\n let w = severityWeight(d.severity);\n if (w > weight) {\n weight = w;\n sev = d.severity;\n }\n }\n return sev;\n}\nclass LintGutterMarker extends GutterMarker {\n constructor(diagnostics) {\n super();\n this.diagnostics = diagnostics;\n this.severity = maxSeverity(diagnostics);\n }\n toDOM(view) {\n let elt = document.createElement(\"div\");\n elt.className = \"cm-lint-marker cm-lint-marker-\" + this.severity;\n let diagnostics = this.diagnostics;\n let diagnosticsFilter = view.state.facet(lintGutterConfig).tooltipFilter;\n if (diagnosticsFilter)\n diagnostics = diagnosticsFilter(diagnostics, view.state);\n if (diagnostics.length)\n elt.onmouseover = () => gutterMarkerMouseOver(view, elt, diagnostics);\n return elt;\n }\n}\nfunction trackHoverOn(view, marker) {\n let mousemove = (event) => {\n let rect = marker.getBoundingClientRect();\n if (event.clientX > rect.left - 10 /* Hover.Margin */ && event.clientX < rect.right + 10 /* Hover.Margin */ &&\n event.clientY > rect.top - 10 /* Hover.Margin */ && event.clientY < rect.bottom + 10 /* Hover.Margin */)\n return;\n for (let target = event.target; target; target = target.parentNode) {\n if (target.nodeType == 1 && target.classList.contains(\"cm-tooltip-lint\"))\n return;\n }\n window.removeEventListener(\"mousemove\", mousemove);\n if (view.state.field(lintGutterTooltip))\n view.dispatch({ effects: setLintGutterTooltip.of(null) });\n };\n window.addEventListener(\"mousemove\", mousemove);\n}\nfunction gutterMarkerMouseOver(view, marker, diagnostics) {\n function hovered() {\n let line = view.elementAtHeight(marker.getBoundingClientRect().top + 5 - view.documentTop);\n const linePos = view.coordsAtPos(line.from);\n if (linePos) {\n view.dispatch({ effects: setLintGutterTooltip.of({\n pos: line.from,\n above: false,\n clip: false,\n create() {\n return {\n dom: diagnosticsTooltip(view, diagnostics),\n getCoords: () => marker.getBoundingClientRect()\n };\n }\n }) });\n }\n marker.onmouseout = marker.onmousemove = null;\n trackHoverOn(view, marker);\n }\n let { hoverTime } = view.state.facet(lintGutterConfig);\n let hoverTimeout = setTimeout(hovered, hoverTime);\n marker.onmouseout = () => {\n clearTimeout(hoverTimeout);\n marker.onmouseout = marker.onmousemove = null;\n };\n marker.onmousemove = () => {\n clearTimeout(hoverTimeout);\n hoverTimeout = setTimeout(hovered, hoverTime);\n };\n}\nfunction markersForDiagnostics(doc, diagnostics) {\n let byLine = Object.create(null);\n for (let diagnostic of diagnostics) {\n let line = doc.lineAt(diagnostic.from);\n (byLine[line.from] || (byLine[line.from] = [])).push(diagnostic);\n }\n let markers = [];\n for (let line in byLine) {\n markers.push(new LintGutterMarker(byLine[line]).range(+line));\n }\n return RangeSet.of(markers, true);\n}\nconst lintGutterExtension = /*@__PURE__*/gutter({\n class: \"cm-gutter-lint\",\n markers: view => view.state.field(lintGutterMarkers),\n widgetMarker: (view, widget, block) => {\n let diagnostics = [];\n view.state.field(lintGutterMarkers).between(block.from, block.to, (from, to, value) => {\n if (from > block.from && from < block.to)\n diagnostics.push(...value.diagnostics);\n });\n return diagnostics.length ? new LintGutterMarker(diagnostics) : null;\n }\n});\nconst lintGutterMarkers = /*@__PURE__*/StateField.define({\n create() {\n return RangeSet.empty;\n },\n update(markers, tr) {\n markers = markers.map(tr.changes);\n let diagnosticFilter = tr.state.facet(lintGutterConfig).markerFilter;\n for (let effect of tr.effects) {\n if (effect.is(setDiagnosticsEffect)) {\n let diagnostics = effect.value;\n if (diagnosticFilter)\n diagnostics = diagnosticFilter(diagnostics || [], tr.state);\n markers = markersForDiagnostics(tr.state.doc, diagnostics.slice(0));\n }\n }\n return markers;\n }\n});\nconst setLintGutterTooltip = /*@__PURE__*/StateEffect.define();\nconst lintGutterTooltip = /*@__PURE__*/StateField.define({\n create() { return null; },\n update(tooltip, tr) {\n if (tooltip && tr.docChanged)\n tooltip = hideTooltip(tr, tooltip) ? null : { ...tooltip, pos: tr.changes.mapPos(tooltip.pos) };\n return tr.effects.reduce((t, e) => e.is(setLintGutterTooltip) ? e.value : t, tooltip);\n },\n provide: field => showTooltip.from(field)\n});\nconst lintGutterTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-gutter-lint\": {\n width: \"1.4em\",\n \"& .cm-gutterElement\": {\n padding: \".2em\"\n }\n },\n \".cm-lint-marker\": {\n width: \"1em\",\n height: \"1em\"\n },\n \".cm-lint-marker-info\": {\n content: /*@__PURE__*/svg(`<path fill=\"#aaf\" stroke=\"#77e\" stroke-width=\"6\" stroke-linejoin=\"round\" d=\"M5 5L35 5L35 35L5 35Z\"/>`)\n },\n \".cm-lint-marker-warning\": {\n content: /*@__PURE__*/svg(`<path fill=\"#fe8\" stroke=\"#fd7\" stroke-width=\"6\" stroke-linejoin=\"round\" d=\"M20 6L37 35L3 35Z\"/>`),\n },\n \".cm-lint-marker-error\": {\n content: /*@__PURE__*/svg(`<circle cx=\"20\" cy=\"20\" r=\"15\" fill=\"#f87\" stroke=\"#f43\" stroke-width=\"6\"/>`)\n },\n});\nconst lintHover = /*@__PURE__*/hoverTooltip(lintTooltip, { hideOn: hideTooltip });\nconst lintExtensions = [\n lintState,\n /*@__PURE__*/EditorView.decorations.compute([lintState], state => {\n let { selected, panel } = state.field(lintState);\n return !selected || !panel || selected.from == selected.to ? Decoration.none : Decoration.set([\n activeMark.range(selected.from, selected.to)\n ]);\n }),\n lintHover,\n baseTheme\n];\nconst lintGutterConfig = /*@__PURE__*/Facet.define({\n combine(configs) {\n return combineConfig(configs, {\n hoverTime: 300 /* Hover.Time */,\n markerFilter: null,\n tooltipFilter: null\n });\n }\n});\n/**\nReturns an extension that installs a gutter showing markers for\neach line that has diagnostics, which can be hovered over to see\nthe diagnostics.\n*/\nfunction lintGutter(config = {}) {\n return [lintGutterConfig.of(config), lintGutterMarkers, lintGutterExtension, lintGutterTheme, lintGutterTooltip];\n}\n/**\nIterate over the marked diagnostics for the given editor state,\ncalling `f` for each of them. Note that, if the document changed\nsince the diagnostics were created, the `Diagnostic` object will\nhold the original outdated position, whereas the `to` and `from`\narguments hold the diagnostic's current position.\n*/\nfunction forEachDiagnostic(state, f) {\n let lState = state.field(lintState, false);\n if (lState && lState.diagnostics.size) {\n let pending = [], pendingStart = [], lastEnd = -1;\n for (let iter = RangeSet.iter([lState.diagnostics]);; iter.next()) {\n for (let i = 0; i < pending.length; i++)\n if (!iter.value || iter.value.spec.diagnostics.indexOf(pending[i]) < 0) {\n f(pending[i], pendingStart[i], lastEnd);\n pending.splice(i, 1);\n pendingStart.splice(i--, 1);\n }\n if (!iter.value)\n break;\n for (let d of iter.value.spec.diagnostics)\n if (pending.indexOf(d) < 0) {\n pending.push(d);\n pendingStart.push(iter.from);\n }\n lastEnd = iter.to;\n }\n }\n}\n\nexport { closeLintPanel, diagnosticCount, forEachDiagnostic, forceLinting, lintGutter, lintKeymap, linter, nextDiagnostic, openLintPanel, previousDiagnostic, setDiagnostics, setDiagnosticsEffect };\n","import { ViewPlugin, showDialog, EditorView, hoverTooltip, getDialog, showTooltip, keymap, showPanel } from '@codemirror/view';\nimport { ChangeSet, MapMode, Facet, EditorState, StateField, StateEffect, Prec } from '@codemirror/state';\nimport { language, highlightingFor, getIndentUnit, indentUnit } from '@codemirror/language';\nimport { Marked } from 'marked';\nimport { highlightCode } from '@lezer/highlight';\nimport { autocompletion, snippet, insertCompletionText } from '@codemirror/autocomplete';\nimport { setDiagnostics } from '@codemirror/lint';\n\nlet context = null;\nfunction withContext(view, language, f) {\n let prev = context;\n try {\n context = { view, language };\n return f();\n }\n finally {\n context = prev;\n }\n}\nconst marked = /*@__PURE__*/new Marked({\n walkTokens(token) {\n if (!context || token.type != \"code\")\n return;\n let lang = context.language && context.language(token.lang);\n if (!lang) {\n let viewLang = context.view.state.facet(language);\n if (viewLang && viewLang.name == token.lang)\n lang = viewLang;\n }\n if (!lang)\n return;\n let highlighter = { style: tags => highlightingFor(context.view.state, tags) };\n let result = \"\";\n highlightCode(token.text, lang.parser.parse(token.text), highlighter, (text, cls) => {\n result += cls ? `<span class=\"${cls}\">${escHTML(text)}</span>` : escHTML(text);\n }, () => {\n result += \"<br>\";\n });\n token.escaped = true;\n token.text = result;\n }\n});\nfunction escHTML(text) {\n return text.replace(/[\\n<&]/g, ch => ch == \"\\n\" ? \"<br>\" : ch == \"<\" ? \"<\" : \"&\");\n}\nfunction docToHTML(value, defaultKind) {\n let kind = defaultKind, text = value;\n if (typeof text != \"string\") {\n kind = text.kind;\n text = text.value;\n }\n if (kind == \"plaintext\") {\n return escHTML(text);\n }\n else {\n return marked.parse(text, { async: false, });\n }\n}\n\nfunction toPosition(doc, pos) {\n let line = doc.lineAt(pos);\n return { line: line.number - 1, character: pos - line.from };\n}\nfunction fromPosition(doc, pos) {\n let line = doc.line(pos.line + 1);\n return line.from + pos.character;\n}\nfunction fromPositionChecked(doc, pos) {\n if (pos.line < 0 || pos.line >= doc.lines)\n return null;\n let line = doc.line(pos.line + 1);\n if (pos.character < 0 || pos.character > line.length)\n return null;\n return line.from + pos.character;\n}\n\n/**\nA plugin that connects a given editor to a language server client.\n*/\nclass LSPPlugin {\n /**\n @internal\n */\n constructor(\n /**\n The editor view that this plugin belongs to.\n */\n view, { client, uri, languageID }) {\n this.view = view;\n this.client = client;\n this.uri = uri;\n if (!languageID) {\n let lang = view.state.facet(language);\n languageID = lang ? lang.name : \"\";\n }\n client.workspace.openFile(uri, languageID, view);\n this.syncedDoc = view.state.doc;\n this.unsyncedChanges = ChangeSet.empty(view.state.doc.length);\n }\n /**\n Render a doc string from the server to HTML.\n */\n docToHTML(value, defaultKind = \"plaintext\") {\n let html = withContext(this.view, this.client.config.highlightLanguage, () => docToHTML(value, defaultKind));\n return this.client.config.sanitizeHTML ? this.client.config.sanitizeHTML(html) : html;\n }\n /**\n Convert a CodeMirror document offset into an LSP `{line,\n character}` object. Defaults to using the view's current\n document, but can be given another one.\n */\n toPosition(pos, doc = this.view.state.doc) {\n return toPosition(doc, pos);\n }\n /**\n Convert an LSP `{line, character}` object to a CodeMirror\n document offset.\n */\n fromPosition(pos, doc = this.view.state.doc) {\n return fromPosition(doc, pos);\n }\n /**\n Display an error in this plugin's editor.\n */\n reportError(message, err) {\n showDialog(this.view, {\n label: this.view.state.phrase(message) + \": \" + (err.message || err),\n class: \"cm-lsp-message cm-lsp-message-error\",\n top: true\n });\n }\n /**\n Reset the [unsynced\n changes](https://codemirror.net/6/docs/ref/#lsp-client.LSPPlugin.unsyncedChanges). Should probably\n only be called by a [workspace](https://codemirror.net/6/docs/ref/#lsp-client.Workspace).\n */\n clear() {\n this.syncedDoc = this.view.state.doc;\n this.unsyncedChanges = ChangeSet.empty(this.view.state.doc.length);\n }\n /**\n @internal\n */\n update(update) {\n if (update.docChanged)\n this.unsyncedChanges = this.unsyncedChanges.compose(update.changes);\n }\n /**\n @internal\n */\n destroy() {\n this.client.workspace.closeFile(this.uri, this.view);\n }\n /**\n Get the LSP plugin associated with an editor, if any.\n */\n static get(view) {\n return view.plugin(lspPlugin);\n }\n /**\n Deprecated. Use\n [`LSPClient.plugin`](https://codemirror.net/6/docs/ref/#lsp-client.LSPClient.plugin) instead.\n */\n static create(client, fileURI, languageID) {\n return client.plugin(fileURI, languageID);\n }\n}\nconst lspPlugin = /*@__PURE__*/ViewPlugin.fromClass(LSPPlugin);\n\n/**\nImplementing your own workspace class can provide more control\nover the way files are loaded and managed when interacting with\nthe language server. See\n[`LSPClientConfig.workspace`](https://codemirror.net/6/docs/ref/#lsp-client.LSPClientConfig.workspace).\n*/\nclass Workspace {\n /**\n The constructor, as called by the client when creating a\n workspace.\n */\n constructor(\n /**\n The LSP client associated with this workspace.\n */\n client) {\n this.client = client;\n }\n /**\n Find the open file with the given URI, if it exists. The default\n implementation just looks it up in `this.files`.\n */\n getFile(uri) {\n return this.files.find(f => f.uri == uri) || null;\n }\n /**\n Called to request that the workspace open a file. The default\n implementation simply returns the file if it is open, null\n otherwise.\n */\n requestFile(uri) {\n return Promise.resolve(this.getFile(uri));\n }\n /**\n Called when the client for this workspace is connected. The\n default implementation calls\n [`LSPClient.didOpen`](https://codemirror.net/6/docs/ref/#lsp-client.LSPClient.didOpen) on all open\n files.\n */\n connected() {\n for (let file of this.files)\n this.client.didOpen(file);\n }\n /**\n Called when the client for this workspace is disconnected. The\n default implementation does nothing.\n */\n disconnected() { }\n /**\n Called when a server-initiated change to a file is applied. The\n default implementation simply dispatches the update to the\n file's view, if the file is open and has a view.\n */\n updateFile(uri, update) {\n var _a;\n let file = this.getFile(uri);\n if (file)\n (_a = file.getView()) === null || _a === void 0 ? void 0 : _a.dispatch(update);\n }\n /**\n When the client needs to put a file other than the one loaded in\n the current editor in front of the user, for example in\n [`jumpToDefinition`](https://codemirror.net/6/docs/ref/#lsp-client.jumpToDefinition), it will call\n this function. It should make sure to create or find an editor\n with the file and make it visible to the user, or return null if\n this isn't possible.\n */\n displayFile(uri) {\n let file = this.getFile(uri);\n return Promise.resolve(file ? file.getView() : null);\n }\n}\nclass DefaultWorkspaceFile {\n constructor(uri, languageId, version, doc, view) {\n this.uri = uri;\n this.languageId = languageId;\n this.version = version;\n this.doc = doc;\n this.view = view;\n }\n getView() { return this.view; }\n}\nclass DefaultWorkspace extends Workspace {\n constructor() {\n super(...arguments);\n this.files = [];\n this.fileVersions = Object.create(null);\n }\n nextFileVersion(uri) {\n var _a;\n return this.fileVersions[uri] = ((_a = this.fileVersions[uri]) !== null && _a !== void 0 ? _a : -1) + 1;\n }\n syncFiles() {\n let result = [];\n for (let file of this.files) {\n let plugin = LSPPlugin.get(file.view);\n if (!plugin)\n continue;\n let changes = plugin.unsyncedChanges;\n if (!changes.empty) {\n result.push({ changes, file, prevDoc: file.doc });\n file.doc = file.view.state.doc;\n file.version = this.nextFileVersion(file.uri);\n plugin.clear();\n }\n }\n return result;\n }\n openFile(uri, languageId, view) {\n if (this.getFile(uri))\n throw new Error(\"Default workspace implementation doesn't support multiple views on the same file\");\n let file = new DefaultWorkspaceFile(uri, languageId, this.nextFileVersion(uri), view.state.doc, view);\n this.files.push(file);\n this.client.didOpen(file);\n }\n closeFile(uri) {\n let file = this.getFile(uri);\n if (file) {\n this.files = this.files.filter(f => f != file);\n this.client.didClose(uri);\n }\n }\n}\n\nconst lspTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-lsp-documentation\": {\n padding: \"0 7px\",\n \"& p, & pre\": {\n margin: \"2px 0\"\n }\n },\n \".cm-lsp-signature-tooltip\": {\n padding: \"2px 6px\",\n borderRadius: \"2.5px\",\n position: \"relative\",\n maxWidth: \"30em\",\n maxHeight: \"10em\",\n overflowY: \"scroll\",\n \"& .cm-lsp-documentation\": {\n padding: \"0\",\n fontSize: \"80%\",\n },\n \"& .cm-lsp-signature-num\": {\n fontFamily: \"monospace\",\n position: \"absolute\",\n left: \"2px\", top: \"4px\",\n fontSize: \"70%\",\n lineHeight: \"1.3\"\n },\n \"& .cm-lsp-signature\": {\n fontFamily: \"monospace\",\n textIndent: \"1em hanging\",\n },\n \"& .cm-lsp-active-parameter\": {\n fontWeight: \"bold\"\n },\n },\n \".cm-lsp-signature-multiple\": {\n paddingLeft: \"1.5em\"\n },\n \".cm-panel.cm-lsp-rename-panel\": {\n padding: \"2px 6px 4px\",\n position: \"relative\",\n \"& label\": { fontSize: \"80%\" },\n \"& [name=close]\": {\n position: \"absolute\",\n top: \"0\", bottom: \"0\",\n right: \"4px\",\n backgroundColor: \"inherit\",\n border: \"none\",\n font: \"inherit\",\n padding: \"0\"\n }\n },\n \".cm-lsp-message button[type=submit]\": {\n display: \"block\"\n },\n \".cm-lsp-reference-panel\": {\n fontFamily: \"monospace\",\n whiteSpace: \"pre\",\n padding: \"3px 6px\",\n maxHeight: \"120px\",\n overflow: \"auto\",\n \"& .cm-lsp-reference-file\": {\n fontWeight: \"bold\",\n },\n \"& .cm-lsp-reference\": {\n cursor: \"pointer\",\n \"&[aria-selected]\": {\n backgroundColor: \"#0077ee44\"\n },\n },\n \"& .cm-lsp-reference-line\": {\n opacity: \"0.7\",\n },\n },\n});\n\nclass Request {\n constructor(id, params, timeout) {\n this.id = id;\n this.params = params;\n this.timeout = timeout;\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\nconst clientCapabilities = {\n general: {\n markdown: {\n parser: \"marked\",\n },\n },\n textDocument: {\n completion: {\n completionItem: {\n snippetSupport: true,\n documentationFormat: [\"markdown\", \"plaintext\"],\n insertReplaceSupport: false,\n },\n completionList: {\n itemDefaults: [\"commitCharacters\", \"editRange\", \"insertTextFormat\"]\n },\n completionItemKind: { valueSet: [] },\n contextSupport: true,\n },\n hover: {\n contentFormat: [\"markdown\", \"plaintext\"]\n },\n formatting: {},\n rename: {},\n signatureHelp: {\n contextSupport: true,\n signatureInformation: {\n documentationFormat: [\"markdown\", \"plaintext\"],\n parameterInformation: { labelOffsetSupport: true },\n activeParameterSupport: true,\n },\n },\n definition: {},\n declaration: {},\n implementation: {},\n typeDefinition: {},\n references: {},\n diagnostic: {},\n },\n window: {\n showMessage: {}\n }\n};\n/**\nA workspace mapping is used to track changes made to open\ndocuments, so that positions returned by a request can be\ninterpreted in terms of the current, potentially changed document.\n*/\nclass WorkspaceMapping {\n /**\n @internal\n */\n constructor(client) {\n this.client = client;\n /**\n @internal\n */\n this.mappings = new Map;\n this.startDocs = new Map;\n for (let file of client.workspace.files) {\n this.mappings.set(file.uri, ChangeSet.empty(file.doc.length));\n this.startDocs.set(file.uri, file.doc);\n }\n }\n /**\n @internal\n */\n addChanges(uri, changes) {\n let known = this.mappings.get(uri);\n if (known)\n this.mappings.set(uri, known.composeDesc(changes));\n }\n /**\n Get the changes made to the document with the given URI since\n the mapping was created. Returns null for documents that aren't\n open.\n */\n getMapping(uri) {\n let known = this.mappings.get(uri);\n if (!known)\n return null;\n let file = this.client.workspace.getFile(uri), view = file === null || file === void 0 ? void 0 : file.getView(), plugin = view && LSPPlugin.get(view);\n return plugin ? known.composeDesc(plugin.unsyncedChanges) : known;\n }\n mapPos(uri, pos, assoc = -1, mode = MapMode.Simple) {\n let changes = this.getMapping(uri);\n return changes ? changes.mapPos(pos, assoc, mode) : pos;\n }\n mapPosition(uri, pos, assoc = -1, mode = MapMode.Simple) {\n let start = this.startDocs.get(uri);\n if (!start)\n throw new Error(\"Cannot map from a file that's not in the workspace\");\n let off = fromPosition(start, pos);\n let changes = this.getMapping(uri);\n return changes ? changes.mapPos(off, assoc, mode) : off;\n }\n /**\n Disconnect this mapping from the client so that it will no\n longer be notified of new changes. You must make sure to call\n this on every mapping you create, except when you use\n [`withMapping`](https://codemirror.net/6/docs/ref/#lsp-client.LSPClient.withMapping), which will\n automatically schedule a disconnect when the given promise\n resolves or aborts.\n */\n destroy() {\n this.client.activeMappings = this.client.activeMappings.filter(m => m != this);\n }\n}\nconst defaultNotificationHandlers = {\n \"window/logMessage\": (client, params) => {\n if (params.type == 1)\n console.error(\"[lsp] \" + params.message);\n else if (params.type == 2)\n console.warn(\"[lsp] \" + params.message);\n },\n \"window/showMessage\": (client, params) => {\n if (params.type > 3 /* Info */)\n return;\n let view;\n for (let f of client.workspace.files)\n if (view = f.getView())\n break;\n if (view)\n showDialog(view, {\n label: params.message,\n class: \"cm-lsp-message cm-lsp-message-\" + (params.type == 1 ? \"error\" : params.type == 2 ? \"warning\" : \"info\"),\n top: true\n });\n }\n};\n/**\nAn LSP client manages a connection to a language server. It should\nbe explicitly [connected](https://codemirror.net/6/docs/ref/#lsp-client.LSPClient.connect) before\nuse.\n*/\nclass LSPClient {\n /**\n Create a client object.\n */\n constructor(\n /**\n @internal\n */\n config = {}) {\n var _a;\n this.config = config;\n /**\n @internal\n */\n this.transport = null;\n this.nextReqID = 0;\n this.requests = [];\n /**\n @internal\n */\n this.activeMappings = [];\n /**\n The capabilities advertised by the server. Will be null when not\n connected or initialized.\n */\n this.serverCapabilities = null;\n this.supportSync = -1;\n /**\n @internal\n */\n this.extensions = [];\n this.receiveMessage = this.receiveMessage.bind(this);\n this.initializing = new Promise((resolve, reject) => this.init = { resolve, reject });\n this.timeout = (_a = config.timeout) !== null && _a !== void 0 ? _a : 3000;\n this.workspace = config.workspace ? config.workspace(this) : new DefaultWorkspace(this);\n if (config.extensions)\n for (let ext of config.extensions) {\n if (Array.isArray(ext) || ext.extension)\n this.extensions.push(ext);\n else if (ext.editorExtension)\n this.extensions.push(ext.editorExtension);\n }\n }\n /**\n Whether this client is connected (has a transport).\n */\n get connected() { return !!this.transport; }\n /**\n Connect this client to a server over the given transport. Will\n immediately start the initialization exchange with the server,\n and resolve `this.initializing` (which it also returns) when\n successful.\n */\n connect(transport) {\n if (this.transport)\n this.transport.unsubscribe(this.receiveMessage);\n this.transport = transport;\n transport.subscribe(this.receiveMessage);\n let capabilities = clientCapabilities;\n if (this.config.extensions)\n for (let ext of this.config.extensions) {\n let { clientCapabilities } = ext;\n if (clientCapabilities)\n capabilities = mergeCapabilities(capabilities, clientCapabilities);\n }\n this.requestInner(\"initialize\", {\n processId: null,\n clientInfo: { name: \"@codemirror/lsp-client\" },\n rootUri: this.config.rootUri || null,\n initializationOptions: this.config.initializationOptions,\n capabilities\n }).promise.then(resp => {\n var _a;\n this.serverCapabilities = resp.capabilities;\n let sync = resp.capabilities.textDocumentSync;\n this.supportSync = sync == null ? 0 : typeof sync == \"number\" ? sync : (_a = sync.change) !== null && _a !== void 0 ? _a : 0;\n transport.send(JSON.stringify({ jsonrpc: \"2.0\", method: \"initialized\", params: {} }));\n this.init.resolve(null);\n }, this.init.reject);\n this.workspace.connected();\n return this;\n }\n /**\n Disconnect the client from the server.\n */\n disconnect() {\n if (this.transport)\n this.transport.unsubscribe(this.receiveMessage);\n this.serverCapabilities = null;\n this.initializing = new Promise((resolve, reject) => this.init = { resolve, reject });\n this.workspace.disconnected();\n }\n /**\n Create a plugin for this client, to add to an editor\n configuration. This extension is necessary to use LSP-related\n functionality exported by this package. The returned extension\n will include the editor\n extensions included in this client's\n [configuration](https://codemirror.net/6/docs/ref/#lsp-client.LSPClientConfig.extensions).\n \n Creating an editor with this plugin will cause\n [`openFile`](https://codemirror.net/6/docs/ref/#lsp-client.Workspace.openFile) to be called on the\n workspace.\n \n By default, the language ID given to the server for this file is\n derived from the editor's language configuration via\n [`Language.name`](https://codemirror.net/6/docs/ref/#language.Language.name). You can pass in\n a specific ID as a third parameter.\n */\n plugin(fileURI, languageID) {\n return [\n lspPlugin.of({ client: this, uri: fileURI, languageID }),\n lspTheme,\n this.extensions\n ];\n }\n /**\n Send a `textDocument/didOpen` notification to the server.\n */\n didOpen(file) {\n this.notification(\"textDocument/didOpen\", {\n textDocument: {\n uri: file.uri,\n languageId: file.languageId,\n text: file.doc.toString(),\n version: file.version\n }\n });\n }\n /**\n Send a `textDocument/didClose` notification to the server.\n */\n didClose(uri) {\n this.notification(\"textDocument/didClose\", { textDocument: { uri } });\n }\n receiveMessage(msg) {\n var _a;\n const value = JSON.parse(msg);\n if (\"id\" in value && !(\"method\" in value)) {\n let index = this.requests.findIndex(r => r.id == value.id);\n if (index < 0) {\n console.warn(`[lsp] Received a response for non-existent request ${value.id}`);\n }\n else {\n let req = this.requests[index];\n clearTimeout(req.timeout);\n this.requests.splice(index, 1);\n if (value.error)\n req.reject(value.error);\n else\n req.resolve(value.result);\n }\n }\n else if (!(\"id\" in value)) {\n let handler = (_a = this.config.notificationHandlers) === null || _a === void 0 ? void 0 : _a[value.method];\n if (handler && handler(this, value.params))\n return;\n if (this.config.extensions)\n for (let ext of this.config.extensions) {\n let { notificationHandlers } = ext;\n let handler = notificationHandlers === null || notificationHandlers === void 0 ? void 0 : notificationHandlers[value.method];\n if (handler && handler(this, value.params))\n return;\n }\n let deflt = defaultNotificationHandlers[value.method];\n if (deflt)\n deflt(this, value.params);\n else if (this.config.unhandledNotification)\n this.config.unhandledNotification(this, value.method, value.params);\n }\n else {\n let resp = {\n jsonrpc: \"2.0\",\n id: value.id,\n error: { code: -32601 /* MethodNotFound */, message: \"Method not implemented\" }\n };\n this.transport.send(JSON.stringify(resp));\n }\n }\n /**\n Make a request to the server. Returns a promise that resolves to\n the response or rejects with a failure message. You'll probably\n want to use types from the `vscode-languageserver-protocol`\n package for the type parameters.\n \n The caller is responsible for\n [synchronizing](https://codemirror.net/6/docs/ref/#lsp-client.LSPClient.sync) state before the\n request and correctly handling state drift caused by local\n changes that happend during the request.\n */\n request(method, params) {\n if (!this.transport)\n return Promise.reject(new Error(\"Client not connected\"));\n return this.initializing.then(() => this.requestInner(method, params).promise);\n }\n requestInner(method, params, mapped = false) {\n let id = ++this.nextReqID, data = {\n jsonrpc: \"2.0\",\n id,\n method,\n params: params\n };\n let req = new Request(id, params, setTimeout(() => this.timeoutRequest(req), this.timeout));\n this.requests.push(req);\n try {\n this.transport.send(JSON.stringify(data));\n }\n catch (e) {\n req.reject(e);\n }\n return req;\n }\n /**\n Send a notification to the server.\n */\n notification(method, params) {\n if (!this.transport)\n return;\n this.initializing.then(() => {\n let data = {\n jsonrpc: \"2.0\",\n method,\n params: params\n };\n this.transport.send(JSON.stringify(data));\n });\n }\n /**\n Cancel the in-progress request with the given parameter value\n (which is compared by identity).\n */\n cancelRequest(params) {\n let found = this.requests.find(r => r.params === params);\n if (found)\n this.notification(\"$/cancelRequest\", { id: found.id });\n }\n /**\n @internal\n */\n hasCapability(name) {\n return this.serverCapabilities ? !!this.serverCapabilities[name] : null;\n }\n /**\n Create a [workspace mapping](https://codemirror.net/6/docs/ref/#lsp-client.WorkspaceMapping) that\n tracks changes to files in this client's workspace, relative to\n the moment where it was created. Make sure you call\n [`destroy`](https://codemirror.net/6/docs/ref/#lsp-client.WorkspaceMapping.destroy) on the mapping\n when you're done with it.\n */\n workspaceMapping() {\n let mapping = new WorkspaceMapping(this);\n this.activeMappings.push(mapping);\n return mapping;\n }\n /**\n Run the given promise with a [workspace\n mapping](https://codemirror.net/6/docs/ref/#lsp-client.WorkspaceMapping) active. Automatically\n release the mapping when the promise resolves or rejects.\n */\n withMapping(f) {\n let mapping = this.workspaceMapping();\n return f(mapping).finally(() => mapping.destroy());\n }\n /**\n Push any [pending changes](https://codemirror.net/6/docs/ref/#lsp-client.Workspace.syncFiles) in\n the open files to the server. You'll want to call this before\n most types of requests, to make sure the server isn't working\n with outdated information.\n */\n sync() {\n for (let { file, changes, prevDoc } of this.workspace.syncFiles()) {\n for (let mapping of this.activeMappings)\n mapping.addChanges(file.uri, changes);\n if (this.supportSync)\n this.notification(\"textDocument/didChange\", {\n textDocument: { uri: file.uri, version: file.version },\n contentChanges: contentChangesFor(file, prevDoc, changes, this.supportSync == 2 /* Incremental */)\n });\n }\n }\n timeoutRequest(req) {\n let index = this.requests.indexOf(req);\n if (index > -1) {\n req.reject(new Error(\"Request timed out\"));\n this.requests.splice(index, 1);\n }\n }\n}\nfunction contentChangesFor(file, startDoc, changes, supportInc) {\n if (!supportInc || file.doc.length < 1024 /* Sync.AlwaysIfSmaller */)\n return [{ text: file.doc.toString() }];\n let events = [];\n changes.iterChanges((fromA, toA, fromB, toB, inserted) => {\n events.push({\n range: { start: toPosition(startDoc, fromA), end: toPosition(startDoc, toA) },\n text: inserted.toString()\n });\n });\n return events.reverse();\n}\nfunction mergeCapabilities(base, add) {\n if (add == null)\n return base;\n if (typeof base != \"object\" || typeof add != \"object\")\n return add;\n let result = {};\n let baseProps = Object.keys(base), addProps = Object.keys(add);\n for (let prop of baseProps)\n result[prop] = addProps.indexOf(prop) > -1 ? mergeCapabilities(base[prop], add[prop]) : base[prop];\n for (let prop of addProps)\n if (baseProps.indexOf(prop) < 0)\n result[prop] = add[prop];\n return result;\n}\n\n// Convert from LSP's snippet syntax to @codemirror/autocompletion's\n// one. Remove backslashes before `$}]`, which don't support backslash\n// escapes in CodeMirror, and expand `$1` to `${1}`.\nfunction lspToSnippet(text) {\n return text.replace(/\\\\([$}\\\\])|\\$(\\d+)/g, (_m, esc, field) => esc || `\\${${field}}`);\n}\n/**\nRegister the [language server completion\nsource](https://codemirror.net/6/docs/ref/#lsp-client.serverCompletionSource) as an autocompletion\nsource.\n*/\nfunction serverCompletion(config = {}) {\n let result;\n if (config.override) {\n result = [autocompletion({ override: [serverCompletionSource] })];\n }\n else {\n let data = [{ autocomplete: serverCompletionSource }];\n result = [autocompletion(), EditorState.languageData.of(() => data)];\n }\n if (config.validFor)\n result.push(completionConfig.of({ validFor: config.validFor }));\n return result;\n}\nconst completionConfig = /*@__PURE__*/Facet.define({\n combine: results => results.length ? results[0] : { validFor: null }\n});\nfunction getCompletions(plugin, pos, context, abort) {\n if (plugin.client.hasCapability(\"completionProvider\") === false)\n return Promise.resolve(null);\n plugin.client.sync();\n let params = {\n position: plugin.toPosition(pos),\n textDocument: { uri: plugin.uri },\n context\n };\n if (abort)\n abort.addEventListener(\"abort\", () => plugin.client.cancelRequest(params));\n return plugin.client.request(\"textDocument/completion\", params);\n}\n// Look for non-alphanumeric prefixes in the completions, and return a\n// regexp that matches them, to use in validFor\nfunction prefixRegexp(items) {\n var _a;\n let step = Math.ceil(items.length / 50), prefixes = [];\n for (let i = 0; i < items.length; i += step) {\n let item = items[i], text = ((_a = item.textEdit) === null || _a === void 0 ? void 0 : _a.newText) || item.textEditText || item.insertText || item.label;\n if (!/^\\w/.test(text)) {\n let prefix = /^[^\\w]*/.exec(text)[0];\n if (prefixes.indexOf(prefix) < 0)\n prefixes.push(prefix);\n }\n }\n if (!prefixes.length)\n return /^\\w*$/;\n return new RegExp(\"^(?:\" + prefixes.map(RegExp.escape || (s => s.replace(/[^\\w\\s]/g, \"\\\\$&\"))).join(\"|\") + \")?\\\\w*$\");\n}\nfunction shouldTriggerCompletion(plugin, character) {\n var _a, _b;\n let triggers = (_b = (_a = plugin.client.serverCapabilities) === null || _a === void 0 ? void 0 : _a.completionProvider) === null || _b === void 0 ? void 0 : _b.triggerCharacters;\n if (triggers && triggers.indexOf(character) > -1)\n return \"triggerCharacter\";\n if (/[a-zA-Z_]/.test(character))\n return \"identifier\";\n return null;\n}\nfunction resultMapper(changes, extraEdits) {\n return (result, newChanges) => {\n changes = changes ? changes.composeDesc(newChanges) : newChanges;\n let options = result.options.slice();\n for (let { index, edits, text } of extraEdits)\n options[index] = { ...options[index], apply: applyEdits(edits, text, changes) };\n return {\n ...result,\n options,\n map: resultMapper(changes, extraEdits)\n };\n };\n}\nfunction applyEdits(edits, text, mapped) {\n return (view, completion, from, to) => {\n let base = insertCompletionText(view.state, text, from, to);\n let changes = [];\n for (let { from, to, text } of edits) {\n if (mapped) {\n if (mapped.touchesRange(from, to))\n continue;\n let len = to - from;\n from = mapped.mapPos(from, 1);\n to = from + len;\n }\n changes.push({ from, to, insert: text });\n }\n view.dispatch(base, { changes });\n };\n}\n/**\nA completion source that requests completions from a language\nserver.\n*/\nconst serverCompletionSource = context => {\n const plugin = context.view && LSPPlugin.get(context.view);\n if (!plugin)\n return null;\n let triggerChar = context.state.sliceDoc(context.pos - 1, context.pos);\n let triggerReason = context.explicit ? \"invoked\" : shouldTriggerCompletion(plugin, triggerChar);\n if (!triggerReason)\n return null;\n let completionContext = triggerReason == \"triggerCharacter\"\n ? { triggerKind: 2 /* TriggerCharacter */, triggerCharacter: triggerChar }\n : { triggerKind: 1 /* Invoked */ };\n return getCompletions(plugin, context.pos, completionContext, context).then(result => {\n var _a, _b;\n if (!result)\n return null;\n if (Array.isArray(result))\n result = { items: result };\n let { from, to } = completionResultRange(context, result);\n let defaultCommitChars = (_a = result.itemDefaults) === null || _a === void 0 ? void 0 : _a.commitCharacters;\n let config = context.state.facet(completionConfig);\n let extraEdits = [];\n return {\n from, to,\n options: result.items.map((item, i) => {\n var _a, _b, _c;\n let text = ((_a = item.textEdit) === null || _a === void 0 ? void 0 : _a.newText) || item.textEditText || item.insertText || item.label;\n let option = {\n label: item.filterText || item.label,\n displayLabel: item.label,\n type: item.kind && kindToType[item.kind],\n };\n let insertTextFormat = (_b = item.insertTextFormat) !== null && _b !== void 0 ? _b : (_c = result.itemDefaults) === null || _c === void 0 ? void 0 : _c.insertTextFormat;\n if (item.commitCharacters && item.commitCharacters != defaultCommitChars)\n option.commitCharacters = item.commitCharacters;\n if (item.detail)\n option.detail = item.detail;\n if (item.sortText)\n option.sortText = item.sortText;\n if (insertTextFormat == 2 /* Snippet */) {\n option.apply = (view, c, from, to) => snippet(lspToSnippet(text))(view, c, from, to);\n }\n else if (item.additionalTextEdits) {\n let edits = [];\n for (let edit of item.additionalTextEdits) {\n let from = fromPositionChecked(context.state.doc, edit.range.start);\n let to = fromPositionChecked(context.state.doc, edit.range.end);\n if (from != null && to != null)\n edits.push({ from, to, text: edit.newText });\n }\n extraEdits.push({ index: i, text, edits });\n option.apply = applyEdits(edits, text, null);\n }\n else if (option.label != text) {\n option.apply = text;\n }\n if (item.documentation)\n option.info = () => renderDocInfo(plugin, item.documentation);\n return option;\n }),\n commitCharacters: defaultCommitChars,\n validFor: result.isIncomplete ? undefined : ((_b = config.validFor) !== null && _b !== void 0 ? _b : prefixRegexp(result.items)),\n map: extraEdits.length ? resultMapper(null, extraEdits) : undefined\n };\n }, err => {\n if (\"code\" in err && err.code == -32800 /* RequestCancelled */)\n return null;\n throw err;\n });\n};\nfunction completionResultRange(cx, result) {\n var _a;\n if (!result.items.length)\n return { from: cx.pos, to: cx.pos };\n let defaultRange = (_a = result.itemDefaults) === null || _a === void 0 ? void 0 : _a.editRange, item0 = result.items[0];\n let range = defaultRange ? (\"insert\" in defaultRange ? defaultRange.insert : defaultRange)\n : item0.textEdit ? (\"range\" in item0.textEdit ? item0.textEdit.range : item0.textEdit.insert)\n : null;\n if (!range)\n return cx.state.wordAt(cx.pos) || { from: cx.pos, to: cx.pos };\n let line = cx.state.doc.lineAt(cx.pos);\n return { from: line.from + range.start.character, to: line.from + range.end.character };\n}\nfunction renderDocInfo(plugin, doc) {\n let elt = document.createElement(\"div\");\n elt.className = \"cm-lsp-documentation cm-lsp-completion-documentation\";\n elt.innerHTML = plugin.docToHTML(doc);\n return elt;\n}\nconst kindToType = {\n 1: \"text\", // Text\n 2: \"method\", // Method\n 3: \"function\", // Function\n 4: \"class\", // Constructor\n 5: \"property\", // Field\n 6: \"variable\", // Variable\n 7: \"class\", // Class\n 8: \"interface\", // Interface\n 9: \"namespace\", // Module\n 10: \"property\", // Property\n 11: \"keyword\", // Unit\n 12: \"constant\", // Value\n 13: \"constant\", // Enum\n 14: \"keyword\", // Keyword\n 16: \"constant\", // Color\n 20: \"constant\", // EnumMember\n 21: \"constant\", // Constant\n 22: \"class\", // Struct\n 25: \"type\" // TypeParameter\n};\n\n/**\nCreate an extension that queries the language server for hover\ntooltips when the user hovers over the code with their pointer,\nand displays a tooltip when the server provides one.\n*/\nfunction hoverTooltips(config = {}) {\n return hoverTooltip(lspTooltipSource, {\n hideOn: tr => tr.docChanged,\n hoverTime: config.hoverTime\n });\n}\nfunction hoverRequest(plugin, pos) {\n if (plugin.client.hasCapability(\"hoverProvider\") === false)\n return Promise.resolve(null);\n plugin.client.sync();\n return plugin.client.request(\"textDocument/hover\", {\n position: plugin.toPosition(pos),\n textDocument: { uri: plugin.uri },\n });\n}\nfunction lspTooltipSource(view, pos) {\n const plugin = LSPPlugin.get(view);\n if (!plugin)\n return Promise.resolve(null);\n return hoverRequest(plugin, pos).then(result => {\n if (!result)\n return null;\n return {\n pos: result.range ? fromPosition(view.state.doc, result.range.start) : pos,\n end: result.range ? fromPosition(view.state.doc, result.range.end) : pos,\n create() {\n let elt = document.createElement(\"div\");\n elt.className = \"cm-lsp-hover-tooltip cm-lsp-documentation\";\n elt.innerHTML = renderTooltipContent(plugin, result.contents);\n return { dom: elt };\n },\n above: true\n };\n });\n}\nfunction renderTooltipContent(plugin, value) {\n if (Array.isArray(value))\n return value.map(m => renderCode(plugin, m)).join(\"<br>\");\n if (typeof value == \"string\" || typeof value == \"object\" && \"language\" in value)\n return renderCode(plugin, value);\n return plugin.docToHTML(value);\n}\nfunction renderCode(plugin, code) {\n if (typeof code == \"string\")\n return plugin.docToHTML(code, \"markdown\");\n let { language: language$1, value } = code;\n let lang = plugin.client.config.highlightLanguage && plugin.client.config.highlightLanguage(language$1 || \"\");\n if (!lang) {\n let viewLang = plugin.view.state.facet(language);\n if (viewLang && (!language$1 || viewLang.name == language$1))\n lang = viewLang;\n }\n if (!lang)\n return escHTML(value);\n let result = \"\";\n highlightCode(value, lang.parser.parse(value), { style: tags => highlightingFor(plugin.view.state, tags) }, (text, cls) => {\n result += cls ? `<span class=\"${cls}\">${escHTML(text)}</span>` : escHTML(text);\n }, () => {\n result += \"<br>\";\n });\n return result;\n}\n\nfunction getFormatting(plugin, options) {\n return plugin.client.request(\"textDocument/formatting\", {\n options,\n textDocument: { uri: plugin.uri },\n });\n}\n/**\nThis command asks the language server to reformat the document,\nand then applies the changes it returns.\n*/\nconst formatDocument = view => {\n const plugin = LSPPlugin.get(view);\n if (!plugin)\n return false;\n plugin.client.sync();\n plugin.client.withMapping(mapping => getFormatting(plugin, {\n tabSize: getIndentUnit(view.state),\n insertSpaces: view.state.facet(indentUnit).indexOf(\"\\t\") < 0,\n }).then(response => {\n if (!response)\n return;\n let changed = mapping.getMapping(plugin.uri);\n let changes = [];\n for (let change of response) {\n let from = mapping.mapPosition(plugin.uri, change.range.start);\n let to = mapping.mapPosition(plugin.uri, change.range.end);\n if (changed) {\n // Don't try to apply the changes if code inside of any of them was touched\n if (changed.touchesRange(from, to))\n return;\n from = changed.mapPos(from, 1);\n to = changed.mapPos(to, -1);\n }\n changes.push({ from, to, insert: change.newText });\n }\n view.dispatch({\n changes,\n userEvent: \"format\"\n });\n }, err => {\n plugin.reportError(\"Formatting request failed\", err);\n }));\n return true;\n};\n/**\nA keymap that binds Shift-Alt-f to\n[`formatDocument`](https://codemirror.net/6/docs/ref/#lsp-client.formatDocument).\n*/\nconst formatKeymap = [\n { key: \"Shift-Alt-f\", run: formatDocument, preventDefault: true }\n];\n\nfunction getRename(plugin, pos, newName) {\n return plugin.client.request(\"textDocument/rename\", {\n newName,\n position: plugin.toPosition(pos),\n textDocument: { uri: plugin.uri },\n });\n}\n/**\nThis command will, if the cursor is over a word, prompt the user\nfor a new name for that symbol, and ask the language server to\nperform a rename of that symbol.\n\nNote that this may affect files other than the one loaded into\nthis view. See the\n[`Workspace.updateFile`](https://codemirror.net/6/docs/ref/#lsp-client.Workspace.updateFile)\nmethod.\n*/\nconst renameSymbol = view => {\n let wordRange = view.state.wordAt(view.state.selection.main.head);\n let plugin = LSPPlugin.get(view);\n if (!wordRange || !plugin || plugin.client.hasCapability(\"renameProvider\") === false)\n return false;\n const word = view.state.sliceDoc(wordRange.from, wordRange.to);\n let panel = getDialog(view, \"cm-lsp-rename-panel\");\n if (panel) {\n let input = panel.dom.querySelector(\"[name=name]\");\n input.value = word;\n input.select();\n }\n else {\n let { close, result } = showDialog(view, {\n label: view.state.phrase(\"New name\"),\n input: { name: \"name\", value: word },\n focus: true,\n submitLabel: view.state.phrase(\"rename\"),\n class: \"cm-lsp-rename-panel\",\n });\n result.then(form => {\n view.dispatch({ effects: close });\n if (form)\n doRename(view, form.elements.namedItem(\"name\").value);\n });\n }\n return true;\n};\nfunction doRename(view, newName) {\n const plugin = LSPPlugin.get(view);\n const word = view.state.wordAt(view.state.selection.main.head);\n if (!plugin || !word)\n return false;\n plugin.client.sync();\n plugin.client.withMapping(mapping => getRename(plugin, word.from, newName).then(response => {\n if (!response)\n return;\n for (let uri in response.changes) {\n let lspChanges = response.changes[uri], file = plugin.client.workspace.getFile(uri);\n if (!lspChanges.length || !file)\n continue;\n plugin.client.workspace.updateFile(uri, {\n changes: lspChanges.map(change => ({\n from: mapping.mapPosition(uri, change.range.start),\n to: mapping.mapPosition(uri, change.range.end),\n insert: change.newText\n })),\n userEvent: \"rename\"\n });\n }\n }, err => {\n plugin.reportError(\"Rename request failed\", err);\n }));\n}\n/**\nA keymap that binds F2 to [`renameSymbol`](https://codemirror.net/6/docs/ref/#lsp-client.renameSymbol).\n*/\nconst renameKeymap = [\n { key: \"F2\", run: renameSymbol, preventDefault: true }\n];\n\nfunction getSignatureHelp(plugin, pos, context) {\n if (plugin.client.hasCapability(\"signatureHelpProvider\") === false)\n return Promise.resolve(null);\n plugin.client.sync();\n return plugin.client.request(\"textDocument/signatureHelp\", {\n context,\n position: plugin.toPosition(pos),\n textDocument: { uri: plugin.uri },\n });\n}\nconst signaturePlugin = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor() {\n this.activeRequest = null;\n this.delayedRequest = 0;\n }\n update(update) {\n var _a;\n if (this.activeRequest) {\n if (update.selectionSet) {\n this.activeRequest.drop = true;\n this.activeRequest = null;\n }\n else if (update.docChanged) {\n this.activeRequest.pos = update.changes.mapPos(this.activeRequest.pos);\n }\n }\n const plugin = LSPPlugin.get(update.view);\n if (!plugin)\n return;\n const sigState = update.view.state.field(signatureState);\n let triggerCharacter = \"\";\n if (update.docChanged && update.transactions.some(tr => tr.isUserEvent(\"input.type\"))) {\n const serverConf = (_a = plugin.client.serverCapabilities) === null || _a === void 0 ? void 0 : _a.signatureHelpProvider;\n const triggers = ((serverConf === null || serverConf === void 0 ? void 0 : serverConf.triggerCharacters) || []).concat(sigState && (serverConf === null || serverConf === void 0 ? void 0 : serverConf.retriggerCharacters) || []);\n if (triggers) {\n update.changes.iterChanges((fromA, toA, fromB, toB, inserted) => {\n let ins = inserted.toString();\n if (ins)\n for (let ch of triggers) {\n if (ins.indexOf(ch) > -1)\n triggerCharacter = ch;\n }\n });\n }\n }\n if (triggerCharacter) {\n this.startRequest(plugin, {\n triggerKind: 2 /* TriggerCharacter */,\n isRetrigger: !!sigState,\n triggerCharacter,\n activeSignatureHelp: sigState ? sigState.data : undefined\n });\n }\n else if (sigState && update.selectionSet) {\n if (this.delayedRequest)\n clearTimeout(this.delayedRequest);\n this.delayedRequest = setTimeout(() => {\n this.startRequest(plugin, {\n triggerKind: 3 /* ContentChange */,\n isRetrigger: true,\n activeSignatureHelp: sigState.data,\n });\n }, 250);\n }\n }\n startRequest(plugin, context) {\n if (this.delayedRequest)\n clearTimeout(this.delayedRequest);\n let { view } = plugin, pos = view.state.selection.main.head;\n if (this.activeRequest)\n this.activeRequest.drop = true;\n let req = this.activeRequest = { pos, drop: false };\n getSignatureHelp(plugin, pos, context).then(result => {\n var _a;\n if (req.drop)\n return;\n if (result && result.signatures.length) {\n let cur = view.state.field(signatureState);\n let same = cur && sameSignatures(cur.data, result);\n let active = same && context.triggerKind == 3 ? cur.active : (_a = result.activeSignature) !== null && _a !== void 0 ? _a : 0;\n // Don't update at all if nothing changed\n if (same && sameActiveParam(cur.data, result, active))\n return;\n view.dispatch({ effects: signatureEffect.of({\n data: result,\n active,\n pos: same ? cur.tooltip.pos : req.pos\n }) });\n }\n else if (view.state.field(signatureState)) {\n view.dispatch({ effects: signatureEffect.of(null) });\n }\n }, context.triggerKind == 1 /* Invoked */ ? err => plugin.reportError(\"Signature request failed\", err) : undefined);\n }\n destroy() {\n if (this.delayedRequest)\n clearTimeout(this.delayedRequest);\n if (this.activeRequest)\n this.activeRequest.drop = true;\n }\n});\nfunction sameSignatures(a, b) {\n if (a.signatures.length != b.signatures.length)\n return false;\n return a.signatures.every((s, i) => s.label == b.signatures[i].label);\n}\nfunction sameActiveParam(a, b, active) {\n var _a, _b;\n return ((_a = a.signatures[active].activeParameter) !== null && _a !== void 0 ? _a : a.activeParameter) ==\n ((_b = b.signatures[active].activeParameter) !== null && _b !== void 0 ? _b : b.activeParameter);\n}\nclass SignatureState {\n constructor(data, active, tooltip) {\n this.data = data;\n this.active = active;\n this.tooltip = tooltip;\n }\n}\nconst signatureState = /*@__PURE__*/StateField.define({\n create() { return null; },\n update(sig, tr) {\n for (let e of tr.effects)\n if (e.is(signatureEffect)) {\n if (e.value) {\n return new SignatureState(e.value.data, e.value.active, signatureTooltip(e.value.data, e.value.active, e.value.pos));\n }\n else {\n return null;\n }\n }\n if (sig && tr.docChanged)\n return new SignatureState(sig.data, sig.active, { ...sig.tooltip, pos: tr.changes.mapPos(sig.tooltip.pos) });\n return sig;\n },\n provide: f => showTooltip.from(f, sig => sig && sig.tooltip)\n});\nconst signatureEffect = /*@__PURE__*/StateEffect.define();\nfunction signatureTooltip(data, active, pos) {\n return {\n pos,\n above: true,\n create: view => drawSignatureTooltip(view, data, active)\n };\n}\nfunction drawSignatureTooltip(view, data, active) {\n var _a;\n let dom = document.createElement(\"div\");\n dom.className = \"cm-lsp-signature-tooltip\";\n if (data.signatures.length > 1) {\n dom.classList.add(\"cm-lsp-signature-multiple\");\n let num = dom.appendChild(document.createElement(\"div\"));\n num.className = \"cm-lsp-signature-num\";\n num.textContent = `${active + 1}/${data.signatures.length}`;\n }\n let signature = data.signatures[active];\n let sig = dom.appendChild(document.createElement(\"div\"));\n sig.className = \"cm-lsp-signature\";\n let activeFrom = 0, activeTo = 0;\n let activeN = (_a = signature.activeParameter) !== null && _a !== void 0 ? _a : data.activeParameter;\n let activeParam = activeN != null && signature.parameters ? signature.parameters[activeN] : null;\n if (activeParam && Array.isArray(activeParam.label)) {\n [activeFrom, activeTo] = activeParam.label;\n }\n else if (activeParam) {\n let found = signature.label.indexOf(activeParam.label);\n if (found > -1) {\n activeFrom = found;\n activeTo = found + activeParam.label.length;\n }\n }\n if (activeTo) {\n sig.appendChild(document.createTextNode(signature.label.slice(0, activeFrom)));\n let activeElt = sig.appendChild(document.createElement(\"span\"));\n activeElt.className = \"cm-lsp-active-parameter\";\n activeElt.textContent = signature.label.slice(activeFrom, activeTo);\n sig.appendChild(document.createTextNode(signature.label.slice(activeTo)));\n }\n else {\n sig.textContent = signature.label;\n }\n if (signature.documentation) {\n let plugin = LSPPlugin.get(view);\n if (plugin) {\n let docs = dom.appendChild(document.createElement(\"div\"));\n docs.className = \"cm-lsp-signature-documentation cm-lsp-documentation\";\n docs.innerHTML = plugin.docToHTML(signature.documentation);\n }\n }\n return { dom };\n}\n/**\nExplicitly prompt the server to provide signature help at the\ncursor.\n*/\nconst showSignatureHelp = view => {\n let plugin = view.plugin(signaturePlugin);\n if (!plugin) {\n view.dispatch({ effects: StateEffect.appendConfig.of([signatureState, signaturePlugin]) });\n plugin = view.plugin(signaturePlugin);\n }\n let field = view.state.field(signatureState);\n if (!plugin || field === undefined)\n return false;\n let lspPlugin = LSPPlugin.get(view);\n if (!lspPlugin)\n return false;\n plugin.startRequest(lspPlugin, {\n triggerKind: 1 /* Invoked */,\n activeSignatureHelp: field ? field.data : undefined,\n isRetrigger: !!field\n });\n return true;\n};\n/**\nIf there is an active signature tooltip with multiple signatures,\nmove to the next one.\n*/\nconst nextSignature = view => {\n let field = view.state.field(signatureState);\n if (!field)\n return false;\n if (field.active < field.data.signatures.length - 1)\n view.dispatch({ effects: signatureEffect.of({ data: field.data, active: field.active + 1, pos: field.tooltip.pos }) });\n return true;\n};\n/**\nIf there is an active signature tooltip with multiple signatures,\nmove to the previous signature.\n*/\nconst prevSignature = view => {\n let field = view.state.field(signatureState);\n if (!field)\n return false;\n if (field.active > 0)\n view.dispatch({ effects: signatureEffect.of({ data: field.data, active: field.active - 1, pos: field.tooltip.pos }) });\n return true;\n};\n/**\nA keymap that binds\n\n- Ctrl-Shift-Space (Cmd-Shift-Space on macOS) to\n [`showSignatureHelp`](https://codemirror.net/6/docs/ref/#lsp-client.showSignatureHelp)\n\n- Ctrl-Shift-ArrowUp (Cmd-Shift-ArrowUp on macOS) to\n [`prevSignature`](https://codemirror.net/6/docs/ref/#lsp-client.prevSignature)\n\n- Ctrl-Shift-ArrowDown (Cmd-Shift-ArrowDown on macOS) to\n [`nextSignature`](https://codemirror.net/6/docs/ref/#lsp-client.nextSignature)\n\nNote that these keys are automatically bound by\n[`signatureHelp`](https://codemirror.net/6/docs/ref/#lsp-client.signatureHelp) unless you pass it\n`keymap: false`.\n*/\nconst signatureKeymap = [\n { key: \"Mod-Shift-Space\", run: showSignatureHelp },\n { key: \"Mod-Shift-ArrowUp\", run: prevSignature },\n { key: \"Mod-Shift-ArrowDown\", run: nextSignature },\n];\n/**\nReturns an extension that enables signature help. Will bind the\nkeys in [`signatureKeymap`](https://codemirror.net/6/docs/ref/#lsp-client.signatureKeymap) unless\n`keymap` is set to `false`.\n*/\nfunction signatureHelp(config = {}) {\n return [\n signatureState,\n signaturePlugin,\n config.keymap === false ? [] : Prec.high(keymap.of(signatureKeymap))\n ];\n}\n\nfunction getDefinition(plugin, pos) {\n return plugin.client.request(\"textDocument/definition\", {\n textDocument: { uri: plugin.uri },\n position: plugin.toPosition(pos)\n });\n}\nfunction getDeclaration(plugin, pos) {\n return plugin.client.request(\"textDocument/declaration\", {\n textDocument: { uri: plugin.uri },\n position: plugin.toPosition(pos)\n });\n}\nfunction getTypeDefinition(plugin, pos) {\n return plugin.client.request(\"textDocument/typeDefinition\", {\n textDocument: { uri: plugin.uri },\n position: plugin.toPosition(pos)\n });\n}\nfunction getImplementation(plugin, pos) {\n return plugin.client.request(\"textDocument/implementation\", {\n textDocument: { uri: plugin.uri },\n position: plugin.toPosition(pos)\n });\n}\nfunction jumpToOrigin(view, type) {\n const plugin = LSPPlugin.get(view);\n if (!plugin || plugin.client.hasCapability(type.capability) === false)\n return false;\n plugin.client.sync();\n plugin.client.withMapping(mapping => type.get(plugin, view.state.selection.main.head).then(response => {\n let loc = Array.isArray(response) ? response[0] : response;\n if (!loc)\n return;\n return (loc.uri == plugin.uri ? Promise.resolve(view) : plugin.client.workspace.displayFile(loc.uri)).then(target => {\n if (!target)\n return;\n let pos = mapping.getMapping(loc.uri) ? mapping.mapPosition(loc.uri, loc.range.start)\n : plugin.fromPosition(loc.range.start, target.state.doc);\n target.dispatch({ selection: { anchor: pos }, scrollIntoView: true, userEvent: \"select.definition\" });\n });\n }, error => plugin.reportError(\"Find definition failed\", error)));\n return true;\n}\n/**\nJump to the definition of the symbol at the cursor. To support\ncross-file jumps, you'll need to implement\n[`Workspace.displayFile`](https://codemirror.net/6/docs/ref/#lsp-client.Workspace.displayFile).\n*/\nconst jumpToDefinition = view => jumpToOrigin(view, {\n get: getDefinition,\n capability: \"definitionProvider\"\n});\n/**\nJump to the declaration of the symbol at the cursor.\n*/\nconst jumpToDeclaration = view => jumpToOrigin(view, {\n get: getDeclaration,\n capability: \"declarationProvider\"\n});\n/**\nJump to the type definition of the symbol at the cursor.\n*/\nconst jumpToTypeDefinition = view => jumpToOrigin(view, {\n get: getTypeDefinition,\n capability: \"typeDefinitionProvider\"\n});\n/**\nJump to the implementation of the symbol at the cursor.\n*/\nconst jumpToImplementation = view => jumpToOrigin(view, {\n get: getImplementation,\n capability: \"implementationProvider\"\n});\n/**\nBinds F12 to [`jumpToDefinition`](https://codemirror.net/6/docs/ref/#lsp-client.jumpToDefinition).\n*/\nconst jumpToDefinitionKeymap = [\n { key: \"F12\", run: jumpToDefinition, preventDefault: true },\n];\n\nfunction getReferences(plugin, pos) {\n return plugin.client.request(\"textDocument/references\", {\n textDocument: { uri: plugin.uri },\n position: plugin.toPosition(pos),\n context: { includeDeclaration: true }\n });\n}\n/**\nAsk the server to locate all references to the symbol at the\ncursor. When the server can provide such references, show them as\na list in a panel.\n*/\nconst findReferences = view => {\n const plugin = LSPPlugin.get(view);\n if (!plugin || plugin.client.hasCapability(\"referencesProvider\") === false)\n return false;\n plugin.client.sync();\n let mapping = plugin.client.workspaceMapping(), passedMapping = false;\n getReferences(plugin, view.state.selection.main.head).then(response => {\n if (!response)\n return;\n return Promise.all(response.map(loc => plugin.client.workspace.requestFile(loc.uri).then(file => {\n return file ? { file, range: loc.range } : null;\n }))).then(resolved => {\n let locs = resolved.filter(l => l);\n if (locs.length) {\n displayReferences(plugin.view, locs, mapping);\n passedMapping = true;\n }\n });\n }, err => plugin.reportError(\"Finding references failed\", err)).finally(() => {\n if (!passedMapping)\n mapping.destroy();\n });\n return true;\n};\n/**\nClose the reference panel, if it is open.\n*/\nconst closeReferencePanel = view => {\n if (!view.state.field(referencePanel, false))\n return false;\n view.dispatch({ effects: setReferencePanel.of(null) });\n return true;\n};\nconst referencePanel = /*@__PURE__*/StateField.define({\n create() { return null; },\n update(panel, tr) {\n for (let e of tr.effects)\n if (e.is(setReferencePanel))\n return e.value;\n return panel;\n },\n provide: f => showPanel.from(f)\n});\nconst setReferencePanel = /*@__PURE__*/StateEffect.define();\nfunction displayReferences(view, locs, mapping) {\n let panel = createReferencePanel(locs, mapping);\n let effect = view.state.field(referencePanel, false) === undefined\n ? StateEffect.appendConfig.of(referencePanel.init(() => panel))\n : setReferencePanel.of(panel);\n view.dispatch({ effects: effect });\n}\nfunction createReferencePanel(locs, mapping) {\n let created = false;\n // Make sure that if this panel isn't used, the mapping still gets destroyed\n setTimeout(() => { if (!created)\n mapping.destroy(); }, 500);\n return view => {\n created = true;\n let prefixLen = findCommonPrefix(locs.map(l => l.file.uri));\n let panel = document.createElement(\"div\"), curFile = null;\n panel.className = \"cm-lsp-reference-panel\";\n panel.tabIndex = 0;\n panel.role = \"listbox\";\n panel.setAttribute(\"aria-label\", view.state.phrase(\"Reference list\"));\n let options = [];\n for (let { file, range } of locs) {\n let fileName = file.uri.slice(prefixLen);\n if (fileName != curFile) {\n curFile = fileName;\n let header = panel.appendChild(document.createElement(\"div\"));\n header.className = \"cm-lsp-reference-file\";\n header.textContent = fileName;\n }\n let entry = panel.appendChild(document.createElement(\"div\"));\n entry.className = \"cm-lsp-reference\";\n entry.role = \"option\";\n let from = mapping.mapPosition(file.uri, range.start, 1), to = mapping.mapPosition(file.uri, range.end, -1);\n let view = file.getView(), line = (view ? view.state.doc : file.doc).lineAt(from);\n let lineNumber = entry.appendChild(document.createElement(\"span\"));\n lineNumber.className = \"cm-lsp-reference-line\";\n lineNumber.textContent = (line.number + \": \").padStart(5, \" \");\n let textBefore = line.text.slice(Math.max(0, from - line.from - 50), from - line.from);\n if (textBefore)\n entry.appendChild(document.createTextNode(textBefore));\n entry.appendChild(document.createElement(\"strong\")).textContent = line.text.slice(from - line.from, to - line.from);\n let textAfter = line.text.slice(to - line.from, Math.min(line.length, 100 - textBefore.length));\n if (textAfter)\n entry.appendChild(document.createTextNode(textAfter));\n if (!options.length)\n entry.setAttribute(\"aria-selected\", \"true\");\n options.push(entry);\n }\n function curSelection() {\n for (let i = 0; i < options.length; i++) {\n if (options[i].hasAttribute(\"aria-selected\"))\n return i;\n }\n return 0;\n }\n function setSelection(index) {\n for (let i = 0; i < options.length; i++) {\n if (i == index)\n options[i].setAttribute(\"aria-selected\", \"true\");\n else\n options[i].removeAttribute(\"aria-selected\");\n }\n }\n function showReference(index) {\n let { file, range } = locs[index];\n let plugin = LSPPlugin.get(view);\n if (!plugin)\n return;\n Promise.resolve(file.uri == plugin.uri ? view : plugin.client.workspace.displayFile(file.uri)).then(view => {\n if (!view)\n return;\n let pos = mapping.mapPosition(file.uri, range.start, 1);\n view.focus();\n view.dispatch({\n selection: { anchor: pos },\n scrollIntoView: true\n });\n });\n }\n panel.addEventListener(\"keydown\", event => {\n if (event.keyCode == 27) { // Escape\n closeReferencePanel(view);\n view.focus();\n }\n else if (event.keyCode == 38 || event.keyCode == 33) { // ArrowUp, PageUp\n setSelection((curSelection() - 1 + locs.length) % locs.length);\n }\n else if (event.keyCode == 40 || event.keyCode == 34) { // ArrowDown, PageDown\n setSelection((curSelection() + 1) % locs.length);\n }\n else if (event.keyCode == 36) { // Home\n setSelection(0);\n }\n else if (event.keyCode == 35) { // End\n setSelection(options.length - 1);\n }\n else if (event.keyCode == 13 || event.keyCode == 10) { // Enter, Space\n showReference(curSelection());\n }\n else {\n return;\n }\n event.preventDefault();\n });\n panel.addEventListener(\"click\", event => {\n for (let i = 0; i < options.length; i++) {\n if (options[i].contains(event.target)) {\n setSelection(i);\n showReference(i);\n event.preventDefault();\n }\n }\n });\n let dom = document.createElement(\"div\");\n dom.appendChild(panel);\n let close = dom.appendChild(document.createElement(\"button\"));\n close.className = \"cm-dialog-close\";\n close.textContent = \"×\";\n close.addEventListener(\"click\", () => closeReferencePanel(view));\n close.setAttribute(\"aria-label\", view.state.phrase(\"close\"));\n return {\n dom,\n destroy: () => mapping.destroy(),\n mount: () => panel.focus(),\n };\n };\n}\nfunction findCommonPrefix(uris) {\n let first = uris[0], prefix = first.length;\n for (let i = 1; i < uris.length; i++) {\n let uri = uris[i], j = 0;\n for (let e = Math.min(prefix, uri.length); j < e && first[j] == uri[j]; j++) { }\n prefix = j;\n }\n while (prefix && first[prefix - 1] != \"/\")\n prefix--;\n return prefix;\n}\n/**\nBinds Shift-F12 to [`findReferences`](https://codemirror.net/6/docs/ref/#lsp-client.findReferences)\nand Escape to\n[`closeReferencePanel`](https://codemirror.net/6/docs/ref/#lsp-client.closeReferencePanel).\n*/\nconst findReferencesKeymap = [\n { key: \"Shift-F12\", run: findReferences, preventDefault: true },\n { key: \"Escape\", run: closeReferencePanel },\n];\n\nfunction toSeverity(sev) {\n return sev == 1 ? \"error\" : sev == 2 ? \"warning\" : sev == 3 ? \"info\" : \"hint\";\n}\nconst autoSync = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor() {\n this.pending = -1;\n }\n update(update) {\n if (update.docChanged) {\n if (this.pending > -1)\n clearTimeout(this.pending);\n this.pending = setTimeout(() => {\n this.pending = -1;\n let plugin = LSPPlugin.get(update.view);\n if (plugin)\n plugin.client.sync();\n }, 500);\n }\n }\n destroy() {\n if (this.pending > -1)\n clearTimeout(this.pending);\n }\n});\nfunction serverDiagnostics() {\n return {\n clientCapabilities: { textDocument: { publishDiagnostics: { versionSupport: true } } },\n notificationHandlers: {\n \"textDocument/publishDiagnostics\": (client, params) => {\n let file = client.workspace.getFile(params.uri);\n if (!file || params.version != null && params.version != file.version)\n return false;\n const view = file.getView(), plugin = view && LSPPlugin.get(view);\n if (!view || !plugin)\n return false;\n view.dispatch(setDiagnostics(view.state, params.diagnostics.map(item => {\n var _a;\n return ({\n from: plugin.unsyncedChanges.mapPos(plugin.fromPosition(item.range.start, plugin.syncedDoc)),\n to: plugin.unsyncedChanges.mapPos(plugin.fromPosition(item.range.end, plugin.syncedDoc)),\n severity: toSeverity((_a = item.severity) !== null && _a !== void 0 ? _a : 1),\n message: item.message,\n });\n })));\n return true;\n }\n },\n editorExtension: autoSync\n };\n}\n\n/**\nReturns an extension that enables the [LSP\nplugin](https://codemirror.net/6/docs/ref/#lsp-client.LSPPlugin) as well as LSP based\nautocompletion, hover tooltips, and signature help, along with the\nkeymaps for reformatting, renaming symbols, jumping to definition,\nand finding references.\n\nThis function is deprecated. Prefer to directly use\n[`LSPPlugin.create`](https://codemirror.net/6/docs/ref/#lsp-client.LSPPlugin^create) and either add\nthe extensions you need directly, or configure them in the client\nvia [`languageServerExtensions`](https://codemirror.net/6/docs/ref/#lsp-client.languageServerExtensions).\n*/\nfunction languageServerSupport(client, uri, languageID) {\n return [\n LSPPlugin.create(client, uri, languageID),\n serverCompletion(),\n hoverTooltips(),\n keymap.of([...formatKeymap, ...renameKeymap, ...jumpToDefinitionKeymap, ...findReferencesKeymap]),\n signatureHelp(),\n ];\n}\n/**\nThis function bundles all the extensions defined in this package,\nin a way that can be passed to the\n[`extensions`](https://codemirror.net/6/docs/ref/#lsp-client.LSPClientConfig.extensions) option to\n`LSPClient`.\n*/\nfunction languageServerExtensions() {\n return [\n serverCompletion(),\n hoverTooltips(),\n keymap.of([...formatKeymap, ...renameKeymap, ...jumpToDefinitionKeymap, ...findReferencesKeymap]),\n signatureHelp(),\n serverDiagnostics()\n ];\n}\n\nexport { LSPClient, LSPPlugin, Workspace, WorkspaceMapping, closeReferencePanel, findReferences, findReferencesKeymap, formatDocument, formatKeymap, hoverTooltips, jumpToDeclaration, jumpToDefinition, jumpToDefinitionKeymap, jumpToImplementation, jumpToTypeDefinition, languageServerExtensions, languageServerSupport, nextSignature, prevSignature, renameKeymap, renameSymbol, serverCompletion, serverCompletionSource, serverDiagnostics, showSignatureHelp, signatureHelp, signatureKeymap };\n","// One TypeScript language server (tsgo, in a worker) shared by every JS/TS\n// editor on the page, started the first time a code file is opened. Its wasm\n// is ~49MB, so the first answers can take a while; the client waits.\nimport {\n\tLSPClient,\n\tlanguageServerExtensions,\n\ttype Transport,\n} from \"@codemirror/lsp-client\"\n\nlet client: LSPClient | undefined\n\nexport function typescriptLanguageServer(): LSPClient {\n\tif (client) return client\n\tconst worker = new Worker(new URL(\"./tsgo-worker.ts\", import.meta.url), {\n\t\ttype: \"module\",\n\t})\n\tconst handlers = new Set<(message: string) => void>()\n\tworker.onmessage = (event) => {\n\t\tif (typeof event.data?.lsp === \"string\") {\n\t\t\tfor (const handler of handlers) handler(event.data.lsp)\n\t\t} else if (event.data?.failed) {\n\t\t\t// type hints are an extra: without them it's a plain editor\n\t\t\tconsole.error(\"TypeScript language server didn't start:\", event.data.failed)\n\t\t}\n\t}\n\tworker.onerror = (event) => {\n\t\tconsole.error(\"TypeScript language server worker:\", event.message)\n\t}\n\tconst transport: Transport = {\n\t\tsend: (message) => worker.postMessage({lsp: message}),\n\t\tsubscribe: (handler) => handlers.add(handler),\n\t\tunsubscribe: (handler) => handlers.delete(handler),\n\t}\n\tclient = new LSPClient({\n\t\trootUri: \"file:///\",\n\t\ttimeout: 30_000,\n\t\textensions: languageServerExtensions(),\n\t}).connect(transport)\n\treturn client\n}\n"],"names":["_getDefaults","_defaults","changeDefaults","newDefaults","noopTest","edit","regex","opt","source","obj","name","val","valSource","other","bull","indent","newline","blockCode","fences","hr","heading","bullet","lheadingCore","lheading","lheadingGfm","_paragraph","blockText","_blockLabel","def","list","_tag","_comment","html","paragraph","blockquote","blockNormal","gfmTable","blockGfm","blockPedantic","escape","inlineCode","br","inlineText","_punctuation","_punctuationOrSpace","_notPunctuationOrSpace","punctuation","_punctuationGfmStrongEm","_punctuationOrSpaceGfmStrongEm","_notPunctuationOrSpaceGfmStrongEm","blockSkip","emStrongLDelimCore","emStrongLDelim","emStrongLDelimGfm","emStrongRDelimAstCore","emStrongRDelimAst","emStrongRDelimAstGfm","emStrongRDelimUnd","anyPunctuation","autolink","_inlineComment","tag","_inlineLabel","link","reflink","nolink","reflinkSearch","inlineNormal","inlinePedantic","inlineGfm","inlineBreaks","block","inline","escapeReplacements","getEscapeReplacement","ch","escape2","html2","encode","cleanUrl","href","splitCells","tableRow","count","row","match","offset","str","escaped","curr","cells","i","_a","rtrim","c","invert","l","suffLen","findClosingBracket","b","level","outputLink","cap","link2","raw","lexer2","rules","title","text","token","indentCodeCompensation","matchIndentToCode","indentToCode","node","matchIndentInNode","indentInNode","_Tokenizer","options2","__publicField","src","trimmed","lines","tokens","inBlockquote","currentLines","currentRaw","currentText","top","lastToken","oldToken","newText","newToken","isordered","list2","itemRegex","endsWithBlankLine","endEarly","itemContents","line","t","nextLine","blankLine","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","htmlBeginRegex","rawLine","nextLineWithoutTabs","istask","ischecked","lastItem","spacers","hasMultipleLineBreaks","tag2","headers","aligns","rows","item","align","cell","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","links","linkString","maskedSrc","prevChar","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","lastCharLength","text2","hasNonSpaceChars","hasSpaceCharsOnBothEnds","prevCapZero","_Lexer","__Lexer","next","lastParagraphClipped","_b","extTokenizer","cutSrc","_c","startIndex","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","_Renderer","lang","langString","code","depth","ordered","start","body","j","type","startAttr","itemBody","checkbox","checked","header","k","content","cleanHref","out","_TextRenderer","_Parser","__Parser","anyToken","genericToken","ret","textToken","renderer","_Hooks","markdown","Marked","args","callback","values","tableToken","listToken","childTokens","tokens2","extensions","pack","opts","ext","prevRenderer","args2","extLevel","prop","rendererProp","rendererFunc","tokenizer","tokenizerProp","tokenizerFunc","prevTokenizer","hooks","hooksProp","hooksFunc","prevHook","arg","ret2","walkTokens2","packWalktokens","blockType","origOpt","throwError","parser2","src2","e","silent","async","msg","markedInstance","marked","SelectedDiagnostic","from","to","diagnostic","LintState","diagnostics","panel","selected","state","diagnosticFilter","lintConfig","sorted","a","deco","RangeSetBuilder","active","pos","scan","scanPos","docLen","p","d","widget","behind","check","sev","maxSeverity","Decoration","DiagnosticWidget","markClass","set","findDiagnostic","after","found","spec","hideTooltip","tr","tooltip","result","setDiagnosticsEffect","maybeEnableLint","effects","lintState","StateEffect","lintExtensions","setDiagnostics","togglePanel","movePanelSelection","StateField","value","mapped","selPos","effect","LintPanel","f","showPanel","EditorView","s","activeMark","lintTooltip","view","side","end","diagnosticsTooltip","elt","renderDiagnostic","closeLintPanel","field","Facet","input","x","combineConfig","combineFilter","u","y","assignKeys","actions","assigned","inPanel","keys","action","fired","click","keyIndex","nameElt","WidgetType","PanelItem","onkeydown","event","onclick","needsSync","newSelectedItem","seen","_start","_end","sel","scaleY","domPos","rm","prev","selectedIndex","selection","svg","attrs","underline","color","baseTheme","severityWeight","weight","w","lintHover","hoverTooltip","context","withContext","language","viewLang","highlighter","tags","highlightingFor","highlightCode","cls","escHTML","docToHTML","defaultKind","kind","toPosition","doc","fromPosition","fromPositionChecked","LSPPlugin","client","uri","languageID","ChangeSet","message","err","showDialog","update","lspPlugin","fileURI","ViewPlugin","Workspace","file","DefaultWorkspaceFile","languageId","version","DefaultWorkspace","plugin","changes","lspTheme","Request","id","params","timeout","resolve","reject","clientCapabilities","WorkspaceMapping","known","assoc","mode","MapMode","off","m","defaultNotificationHandlers","LSPClient","config","transport","capabilities","mergeCapabilities","resp","sync","index","r","req","handler","notificationHandlers","deflt","method","data","mapping","prevDoc","contentChangesFor","startDoc","supportInc","events","fromA","toA","fromB","toB","inserted","base","add","baseProps","addProps","lspToSnippet","_m","esc","serverCompletion","autocompletion","serverCompletionSource","EditorState","completionConfig","results","getCompletions","abort","prefixRegexp","items","step","prefixes","prefix","shouldTriggerCompletion","character","triggers","resultMapper","extraEdits","newChanges","options","edits","applyEdits","completion","insertCompletionText","len","triggerChar","triggerReason","completionContext","completionResultRange","defaultCommitChars","option","kindToType","insertTextFormat","snippet","renderDocInfo","cx","defaultRange","item0","range","hoverTooltips","lspTooltipSource","hoverRequest","renderTooltipContent","renderCode","language$1","getFormatting","formatDocument","getIndentUnit","indentUnit","response","changed","change","formatKeymap","getRename","newName","renameSymbol","wordRange","word","getDialog","close","form","doRename","lspChanges","renameKeymap","getSignatureHelp","signaturePlugin","sigState","signatureState","triggerCharacter","serverConf","ins","cur","same","sameSignatures","sameActiveParam","signatureEffect","SignatureState","sig","signatureTooltip","showTooltip","drawSignatureTooltip","dom","num","signature","activeFrom","activeTo","activeN","activeParam","activeElt","docs","showSignatureHelp","nextSignature","prevSignature","signatureKeymap","signatureHelp","Prec","keymap","getDefinition","jumpToOrigin","loc","target","error","jumpToDefinition","jumpToDefinitionKeymap","getReferences","findReferences","passedMapping","resolved","locs","displayReferences","closeReferencePanel","referencePanel","setReferencePanel","createReferencePanel","created","prefixLen","findCommonPrefix","curFile","fileName","entry","lineNumber","textBefore","textAfter","curSelection","setSelection","showReference","uris","first","findReferencesKeymap","toSeverity","autoSync","serverDiagnostics","languageServerExtensions","typescriptLanguageServer","worker","handlers"],"mappings":"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","x_google_ignoreList":[0,1,2]}
|