@litsx/typescript 0.6.0 → 0.6.1

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.
@@ -127,6 +127,56 @@ function remapDisplayParts(parts) {
127
127
  }));
128
128
  }
129
129
 
130
+ function normalizeEscapedNewlines(text) {
131
+ if (typeof text !== "string" || !text.includes("\\")) {
132
+ return text;
133
+ }
134
+
135
+ return text
136
+ .replace(/\\r\\n/g, "\r\n")
137
+ .replace(/\\n/g, "\n");
138
+ }
139
+
140
+ function remapDocumentationParts(parts) {
141
+ return parts?.map((part) => ({
142
+ ...part,
143
+ text: normalizeEscapedNewlines(authoredSemantics.remapVirtualText(part.text)),
144
+ }));
145
+ }
146
+
147
+ function getHoverCodeLanguage(languageId) {
148
+ if (languageId === "litsx" || languageId === "tsx") {
149
+ return "tsx";
150
+ }
151
+
152
+ if (languageId === "litsx-jsx" || languageId === "jsx") {
153
+ return "jsx";
154
+ }
155
+
156
+ return "ts";
157
+ }
158
+
159
+ function createHoverResult({ start, length, code, documentation, languageId }) {
160
+ const normalizedDocumentation = normalizeEscapedNewlines(documentation ?? "");
161
+ const markdownParts = [
162
+ `\`\`\`${getHoverCodeLanguage(languageId)}`,
163
+ code || "symbol",
164
+ "```",
165
+ ];
166
+
167
+ if (normalizedDocumentation) {
168
+ markdownParts.push("", normalizedDocumentation);
169
+ }
170
+
171
+ return {
172
+ start,
173
+ length,
174
+ code: code || "symbol",
175
+ documentation: normalizedDocumentation,
176
+ markdown: markdownParts.join("\n"),
177
+ };
178
+ }
179
+
130
180
  function remapMessageText(messageText) {
131
181
  if (typeof messageText === "string") {
132
182
  return authoredSemantics.remapVirtualText(messageText);
@@ -1047,12 +1097,13 @@ function createLitsxEditorSession(options = {}) {
1047
1097
 
1048
1098
  const hoistInfo = authoredSemantics.inferLitsxStaticHoistInfoAtPosition(sourceText, position);
1049
1099
  if (hoistInfo) {
1050
- return {
1100
+ return createHoverResult({
1051
1101
  start: hoistInfo.start,
1052
1102
  length: hoistInfo.length,
1053
1103
  code: `${hoistInfo.name}(...): static hoist`,
1054
1104
  documentation: hoistInfo.documentation,
1055
- };
1105
+ languageId,
1106
+ });
1056
1107
  }
1057
1108
 
1058
1109
  if (!info) {
@@ -1064,12 +1115,13 @@ function createLitsxEditorSession(options = {}) {
1064
1115
  authoredSemantics.inferLitsxAttributeInfoAtPosition(sourceText, position),
1065
1116
  );
1066
1117
  return bindingHoverInfo
1067
- ? {
1118
+ ? createHoverResult({
1068
1119
  start: bindingHoverInfo.start,
1069
1120
  length: bindingHoverInfo.length,
1070
1121
  code: `${bindingHoverInfo.name}: ${bindingHoverInfo.kindLabel}`,
1071
1122
  documentation: bindingHoverInfo.detail,
1072
- }
1123
+ languageId,
1124
+ })
1073
1125
  : null;
1074
1126
  }
1075
1127
 
@@ -1095,26 +1147,28 @@ function createLitsxEditorSession(options = {}) {
1095
1147
  length: 0,
1096
1148
  };
1097
1149
 
1098
- return {
1150
+ return createHoverResult({
1099
1151
  start: remappedNodeSpan.start,
1100
1152
  length: remappedNodeSpan.length,
1101
1153
  code: `${symbol?.getName?.() ?? node.getText(sourceFile)}: ${checker.typeToString(type)}`,
1102
1154
  documentation: symbol
1103
- ? ts$1.displayPartsToString(symbol.getDocumentationComment(checker))
1155
+ ? normalizeEscapedNewlines(ts$1.displayPartsToString(symbol.getDocumentationComment(checker)))
1104
1156
  : "",
1105
- };
1157
+ languageId,
1158
+ });
1106
1159
  }
1107
1160
 
1108
1161
  const bindingHoverInfo = getBindingHoverInfo(
1109
1162
  authoredSemantics.inferLitsxAttributeInfoAtPosition(sourceText, position),
1110
1163
  );
1111
1164
  return bindingHoverInfo
1112
- ? {
1165
+ ? createHoverResult({
1113
1166
  start: bindingHoverInfo.start,
1114
1167
  length: bindingHoverInfo.length,
1115
1168
  code: `${bindingHoverInfo.name}: ${bindingHoverInfo.kindLabel}`,
1116
1169
  documentation: bindingHoverInfo.detail,
1117
- }
1170
+ languageId,
1171
+ })
1118
1172
  : null;
1119
1173
  }
1120
1174
 
@@ -1124,16 +1178,17 @@ function createLitsxEditorSession(options = {}) {
1124
1178
  const displayText = (remapDisplayParts(info.displayParts) ?? [])
1125
1179
  .map((entry) => entry.text)
1126
1180
  .join("");
1127
- const documentation = (remapDisplayParts(info.documentation) ?? [])
1181
+ const documentation = (remapDocumentationParts(info.documentation) ?? [])
1128
1182
  .map((entry) => entry.text)
1129
1183
  .join("");
1130
1184
 
1131
- return {
1185
+ return createHoverResult({
1132
1186
  start: remappedSpan.start,
1133
1187
  length: remappedSpan.length,
1134
1188
  code: displayText || "symbol",
1135
1189
  documentation,
1136
- };
1190
+ languageId,
1191
+ });
1137
1192
  }
1138
1193
 
1139
1194
  function getCompletions(fileName, sourceText, languageId, position, completionKindAdapter) {
@@ -1 +1 @@
1
- {"version":3,"file":"editor-session.cjs","sources":["../src/editor-session.js"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport defaultTs from \"typescript\";\n\nimport {\n collectLitsxAuthoredDiagnostics,\n createToolingVirtualLitsxSource,\n decodeVirtualAttributeName,\n getLitsxAttributeCompletionNames,\n inferLitsxComponentEventNames,\n inferLitsxComponentPropNames,\n inferLitsxAttributeCompletionContext,\n inferLitsxAttributeInfoAtPosition,\n inferLitsxMarkupCompletionContext,\n inferLitsxStaticHoistInfoAtPosition,\n looksLikeLitsxJsx,\n mapOriginalPositionToToolingVirtual,\n remapToolingTextSpanToOriginal,\n getLitsxMarkupCompletionNames,\n remapVirtualText,\n} from \"./virtualization.js\";\n\nconst QUERY_FILE_SUFFIX_BY_LANGUAGE_ID = {\n litsx: \".tsx\",\n \"litsx-jsx\": \".jsx\",\n};\n\nconst SUPPORTED_SOURCE_EXTENSIONS = [\n \".litsx.jsx\",\n \".litsx\",\n \".tsx\",\n \".ts\",\n \".jsx\",\n \".js\",\n];\n\nconst SCRIPT_KIND_BY_EXTENSION = {\n \"litsx.jsx\": \"JSX\",\n litsx: \"TSX\",\n tsx: \"TSX\",\n jsx: \"JSX\",\n ts: \"TS\",\n js: \"JS\",\n};\n\nconst BINDING_HOVER_BY_PREFIX = {\n \"@\": {\n kindLabel: \"event\",\n detail: \"LitSX event listener binding\",\n },\n \".\": {\n kindLabel: \"property\",\n detail: \"LitSX property binding\",\n },\n \"?\": {\n kindLabel: \"boolean\",\n detail: \"LitSX boolean attribute binding\",\n },\n};\n\nconst COMPLETION_KIND_BY_TS_KIND = {\n keyword: \"Keyword\",\n const: \"Variable\",\n constElement: \"Variable\",\n let: \"Variable\",\n letElement: \"Variable\",\n variable: \"Variable\",\n variableElement: \"Variable\",\n localVariableElement: \"Variable\",\n memberVariableElement: \"Property\",\n property: \"Property\",\n function: \"Function\",\n functionElement: \"Function\",\n memberFunctionElement: \"Function\",\n class: \"Class\",\n classElement: \"Class\",\n interface: \"Interface\",\n interfaceElement: \"Interface\",\n module: \"Module\",\n moduleElement: \"Module\",\n};\n\nconst SYMBOL_KIND_RULES = [\n [\"Function\", (ts) => ts.SymbolFlags.Function | ts.SymbolFlags.Method],\n [\"Class\", (ts) => ts.SymbolFlags.Class | ts.SymbolFlags.TypeAlias],\n [\"Interface\", (ts) => ts.SymbolFlags.Interface],\n [\"Module\", (ts) => ts.SymbolFlags.Module | ts.SymbolFlags.Namespace],\n [\"Property\", (ts) => ts.SymbolFlags.Property | ts.SymbolFlags.EnumMember],\n];\n\nfunction normalizeFileName(fileName) {\n return path.resolve(fileName).replace(/\\\\/g, \"/\");\n}\n\nfunction getParserPlugins(languageId) {\n return languageId === \"litsx\" ? [\"typescript\"] : [];\n}\n\nfunction isRelevantFile(fileName) {\n return /\\.(jsx|tsx|litsx)$/.test(fileName) || fileName.endsWith(\".litsx.jsx\");\n}\n\nfunction getPluginsForFile(fileName, languageId) {\n return (languageId === \"litsx\" || /\\.(tsx|litsx)$/.test(fileName ?? \"\"))\n ? [\"typescript\"]\n : [];\n}\n\nfunction createCompletionKindAdapter(adapter) {\n if (typeof adapter === \"function\") {\n return adapter;\n }\n\n if (adapter && typeof adapter === \"object\") {\n return (kind) => adapter[kind] ?? kind;\n }\n\n return (kind) => kind;\n}\n\nfunction createDefaultLogger(logger) {\n if (!logger) {\n return () => {};\n }\n\n if (typeof logger === \"function\") {\n return logger;\n }\n\n if (typeof logger.appendLine === \"function\") {\n return (message) => logger.appendLine(message);\n }\n\n return () => {};\n}\n\nfunction remapDisplayParts(parts) {\n return parts?.map((part) => ({\n ...part,\n text: remapVirtualText(part.text),\n }));\n}\n\nfunction remapMessageText(messageText) {\n if (typeof messageText === \"string\") {\n return remapVirtualText(messageText);\n }\n\n if (!messageText || typeof messageText !== \"object\") {\n return messageText;\n }\n\n return {\n ...messageText,\n messageText: remapMessageText(messageText.messageText),\n next: messageText.next?.map(remapMessageText),\n };\n}\n\nfunction remapCompletionTextChanges(textChanges, targetFileName, virtualization) {\n if (!Array.isArray(textChanges)) {\n return [];\n }\n\n return textChanges.map((change) => {\n const span = virtualization\n ? remapToolingTextSpanToOriginal(change.span, virtualization)\n : change.span;\n\n return {\n fileName: targetFileName,\n start: span.start,\n length: span.length,\n newText: change.newText,\n };\n });\n}\n\nfunction startsAtAuthoredSyntax(sourceText, start) {\n if (typeof sourceText !== \"string\" || typeof start !== \"number\" || !(start >= 0 && start < sourceText.length)) {\n return false;\n }\n\n return \"@.?\".includes(sourceText[start]);\n}\n\nfunction getBindingHoverInfo(attributeInfo) {\n if (!attributeInfo) {\n return null;\n }\n\n const bindingInfo = BINDING_HOVER_BY_PREFIX[attributeInfo.prefix] ?? {\n kindLabel: \"binding\",\n detail: \"LitSX binding\",\n };\n\n return {\n name: attributeInfo.name,\n start: attributeInfo.start,\n length: attributeInfo.length,\n kindLabel: bindingInfo.kindLabel,\n detail: `${bindingInfo.detail} for <${attributeInfo.tagName}>.`,\n };\n}\n\nfunction getCompletionKindToken(name) {\n return name.startsWith(\"@\") ? \"Event\" : \"Property\";\n}\n\nfunction getContextualCompletionEdit(name, context) {\n const replacementStart = (context?.start ?? 0) + 1;\n const replacementLength = Math.max((context?.length ?? 1) - 1, 0);\n\n return {\n insertText: name.slice(1),\n filterText: name.slice(1),\n start: replacementStart,\n length: replacementLength,\n };\n}\n\nfunction getModuleExtension(ts, fileName) {\n if (fileName.endsWith(\".litsx.jsx\") || fileName.endsWith(\".jsx\")) {\n return ts.Extension.Jsx;\n }\n\n if (fileName.endsWith(\".litsx\") || fileName.endsWith(\".tsx\")) {\n return ts.Extension.Tsx;\n }\n\n if (fileName.endsWith(\".ts\")) {\n return ts.Extension.Ts;\n }\n\n return ts.Extension.Js;\n}\n\nfunction isPathLikeModuleName(moduleName) {\n return moduleName.startsWith(\"./\") || moduleName.startsWith(\"../\") || moduleName.startsWith(\"/\");\n}\n\nfunction getTransparentResolutionCandidates(modulePath) {\n const requestedExtension = SUPPORTED_SOURCE_EXTENSIONS.find((extension) => modulePath.endsWith(extension)) ?? null;\n\n if (requestedExtension) {\n return [\n modulePath,\n path.join(modulePath, `index${requestedExtension}`),\n ];\n }\n\n return [\n ...SUPPORTED_SOURCE_EXTENSIONS.map((extension) => `${modulePath}${extension}`),\n ...SUPPORTED_SOURCE_EXTENSIONS.map((extension) => path.join(modulePath, `index${extension}`)),\n ];\n}\n\nfunction createResolvedModule(ts, resolvedFileName) {\n return {\n resolvedFileName,\n extension: getModuleExtension(ts, resolvedFileName),\n isExternalLibraryImport: false,\n };\n}\n\nfunction findDeepestNodeAtPosition(sourceFile, position) {\n let bestNode = null;\n\n function visit(node) {\n if (position < node.pos || position >= node.end) {\n return;\n }\n\n bestNode = node;\n node.forEachChild(visit);\n }\n\n visit(sourceFile);\n return bestNode;\n}\n\nfunction getSourceFileScriptKind(ts, fileName, languageId) {\n if (fileName.endsWith(\".litsx.jsx\") || languageId === \"litsx-jsx\" || fileName.endsWith(\".jsx\")) {\n return ts.ScriptKind.JSX;\n }\n\n if (fileName.endsWith(\".litsx\") || languageId === \"litsx\" || fileName.endsWith(\".tsx\")) {\n return ts.ScriptKind.TSX;\n }\n\n if (fileName.endsWith(\".ts\")) {\n return ts.ScriptKind.TS;\n }\n\n return ts.ScriptKind.JS;\n}\n\nfunction isCustomElementsDefineCall(ts, node) {\n return ts.isCallExpression(node)\n && ts.isPropertyAccessExpression(node.expression)\n && ts.isIdentifier(node.expression.expression)\n && node.expression.expression.text === \"customElements\"\n && node.expression.name.text === \"define\";\n}\n\nfunction isLikelyLitsxComponentReference(ts, sourceFile, node) {\n if (!ts.isIdentifier(node) || !/^[A-Z]/.test(node.text)) {\n return false;\n }\n\n let matches = false;\n\n function visit(current) {\n if (matches) {\n return;\n }\n\n if (\n ts.isImportDeclaration(current)\n && ts.isStringLiteral(current.moduleSpecifier)\n && (current.moduleSpecifier.text.endsWith(\".litsx\") || current.moduleSpecifier.text.endsWith(\".litsx.jsx\"))\n ) {\n const bindings = current.importClause?.namedBindings;\n if (bindings && ts.isNamedImports(bindings)) {\n matches = bindings.elements.some((element) => element.name.text === node.text);\n }\n }\n\n if (\n ts.isVariableDeclaration(current)\n && ts.isIdentifier(current.name)\n && current.name.text === node.text\n && (ts.isArrowFunction(current.initializer) || ts.isFunctionExpression(current.initializer))\n ) {\n matches = true;\n }\n\n if (ts.isFunctionDeclaration(current) && current.name?.text === node.text) {\n matches = true;\n }\n\n if (!matches) {\n current.forEachChild(visit);\n }\n }\n\n sourceFile.forEachChild(visit);\n return matches;\n}\n\nfunction shouldSuppressCustomElementConstructorDiagnostic(ts, sourceFile, diagnostic) {\n if (diagnostic.code !== 2345 || typeof diagnostic.start !== \"number\") {\n return false;\n }\n\n const node = findDeepestNodeAtPosition(sourceFile, diagnostic.start);\n let current = node;\n\n while (current && !isCustomElementsDefineCall(ts, current)) {\n current = current.parent ?? null;\n }\n\n if (!current || !isCustomElementsDefineCall(ts, current)) {\n return false;\n }\n\n const candidate = current.arguments?.[1];\n if (!candidate || diagnostic.start < candidate.getStart(sourceFile) || diagnostic.start >= candidate.getEnd()) {\n return false;\n }\n\n return isLikelyLitsxComponentReference(ts, sourceFile, candidate)\n && String(typeof diagnostic.messageText === \"string\" ? diagnostic.messageText : diagnostic.messageText?.messageText ?? \"\")\n .includes(\"CustomElementConstructor\");\n}\n\nfunction getScopeCompletionPrefix(sourceText, position) {\n const match = /[A-Za-z0-9_$]*$/.exec(sourceText.slice(0, position));\n return match?.[0] ?? \"\";\n}\n\nfunction getJsxImportSourceExportEntries(service, ts, prefix, adaptKind, position) {\n if (!prefix) {\n return [];\n }\n\n const program = service.languageService.getProgram();\n const checker = program?.getTypeChecker();\n const jsxImportSource = program?.getCompilerOptions?.().jsxImportSource;\n\n if (!program || !checker || typeof jsxImportSource !== \"string\" || jsxImportSource.length === 0) {\n return [];\n }\n\n const moduleSourceFile = program.getSourceFiles().find((sourceFile) => (\n sourceFile.fileName.includes(`/node_modules/${jsxImportSource}/`)\n || sourceFile.fileName.includes(`/${jsxImportSource}/src/`)\n ));\n\n const moduleSymbol = moduleSourceFile?.symbol ?? null;\n if (!moduleSymbol) {\n return [];\n }\n\n const exportedSymbols = checker.getExportsOfModule(moduleSymbol);\n\n return exportedSymbols\n .filter((symbol) => {\n const name = symbol.getName?.();\n return typeof name === \"string\"\n && name.startsWith(prefix)\n && !isInternalCompletionName(name);\n })\n .map((symbol) => {\n const name = symbol.getName();\n return {\n label: name,\n kind: adaptKind(getSymbolCompletionKind(ts, symbol), {\n source: jsxImportSource,\n label: name,\n }),\n detail: \"export\",\n documentation: `From ${jsxImportSource}`,\n start: position - prefix.length,\n length: prefix.length,\n };\n });\n}\n\nfunction getSourceParserPlugins(fileName) {\n return /\\.(litsx|tsx|ts)$/.test(fileName) ? [\"typescript\"] : [];\n}\n\nfunction getImportedComponentReference(ts, sourceFile, tagName) {\n let reference = null;\n\n sourceFile.forEachChild((node) => {\n if (\n reference ||\n !ts.isImportDeclaration(node) ||\n !ts.isStringLiteral(node.moduleSpecifier)\n ) {\n return;\n }\n\n const bindings = node.importClause?.namedBindings;\n if (!bindings || !ts.isNamedImports(bindings)) {\n return;\n }\n\n for (const element of bindings.elements) {\n if (element.name.text !== tagName) {\n continue;\n }\n\n reference = {\n exportName: element.propertyName?.text ?? element.name.text,\n moduleName: node.moduleSpecifier.text,\n };\n return;\n }\n });\n\n return reference;\n}\n\nfunction getComponentEventCompletionEntries(service, ts, queryFileName, sourceText, position, adaptKind) {\n const context = inferLitsxAttributeCompletionContext(sourceText, position);\n if (!context || context.prefix !== \"@\" || !/^[A-Z]/.test(context.tagName)) {\n return [];\n }\n\n const program = service.languageService.getProgram();\n const sourceFile = program?.getSourceFile(queryFileName);\n if (!sourceFile) {\n return [];\n }\n\n const reference = getImportedComponentReference(ts, sourceFile, context.tagName);\n if (!reference) {\n return [];\n }\n\n const resolvedModule = service.resolveModuleName?.(reference.moduleName, queryFileName);\n const componentFileName = resolvedModule?.resolvedFileName;\n if (!componentFileName) {\n return [];\n }\n\n const componentSourceText = service.readSourceText?.(componentFileName);\n if (typeof componentSourceText !== \"string\") {\n return [];\n }\n\n const eventNames = inferLitsxComponentEventNames(componentSourceText, {\n plugins: getSourceParserPlugins(componentFileName),\n })[reference.exportName] ?? [];\n\n return eventNames\n .filter((name) => typeof name === \"string\" && name.startsWith(context.partialName))\n .map((name) => ({\n ...getContextualCompletionEdit(`@${name}`, context),\n label: `@${name}`,\n kind: adaptKind(\"Event\", {\n source: \"litsx-component-event\",\n label: `@${name}`,\n }),\n detail: `Emitted by <${context.tagName}>`,\n documentation: `LitSX custom event emitted by <${context.tagName}>.`,\n }));\n}\n\nfunction getComponentStaticPropCompletionEntries(service, ts, queryFileName, sourceText, position, adaptKind) {\n const markupContext = inferLitsxMarkupCompletionContext(sourceText, position);\n if (!markupContext || !/^[A-Z]/.test(markupContext.tagName)) {\n return [];\n }\n\n const program = service.languageService.getProgram();\n const sourceFile = program?.getSourceFile(queryFileName);\n if (!sourceFile) {\n return [];\n }\n\n const reference = getImportedComponentReference(ts, sourceFile, markupContext.tagName);\n if (!reference) {\n return [];\n }\n\n const resolvedModule = service.resolveModuleName?.(reference.moduleName, queryFileName);\n const componentFileName = resolvedModule?.resolvedFileName;\n if (!componentFileName) {\n return [];\n }\n\n const componentSourceText = service.readSourceText?.(componentFileName);\n if (typeof componentSourceText !== \"string\") {\n return [];\n }\n\n const propNames = inferLitsxComponentPropNames(componentSourceText, {\n plugins: getSourceParserPlugins(componentFileName),\n })[reference.exportName] ?? [];\n\n return propNames\n .filter((name) => typeof name === \"string\" && name.startsWith(markupContext.partialName))\n .map((name) => ({\n label: name,\n kind: adaptKind(\"Property\", {\n source: \"litsx-component-static-prop\",\n label: name,\n }),\n detail: `Static property of <${markupContext.tagName}>`,\n documentation: `LitSX static property exposed by <${markupContext.tagName}>.`,\n start: markupContext.start,\n length: markupContext.length,\n }));\n}\n\nfunction getCompletionEntryImportEdits(languageService, queryFileName, fileName, position, entry, virtualization) {\n if (typeof languageService.getCompletionEntryDetails !== \"function\" || !entry?.hasAction) {\n return [];\n }\n\n let details;\n try {\n details = languageService.getCompletionEntryDetails(\n queryFileName,\n position,\n entry.name,\n {},\n entry.source,\n {},\n entry.data,\n );\n } catch {\n return [];\n }\n\n const fileChanges = details?.codeActions\n ?.flatMap((action) => action.changes ?? [])\n ?.filter((change) => change.fileName === queryFileName || change.fileName === fileName) ?? [];\n\n return fileChanges.flatMap((change) => (\n remapCompletionTextChanges(change.textChanges, fileName, virtualization)\n ));\n}\n\nfunction isInternalCompletionName(name) {\n return typeof name === \"string\" && (\n name.startsWith(\"__litsx_\") ||\n name.startsWith(\"_$L\") ||\n name.startsWith(\"_currentTarget\") ||\n name.includes(\"$\")\n );\n}\n\nfunction isLikelyIntrinsicMarkupCompletionName(name) {\n if (\n typeof name !== \"string\" ||\n name.length === 0 ||\n isInternalCompletionName(name) ||\n name.startsWith(\"_\") ||\n /^[A-Z0-9_]+$/.test(name) ||\n /^[A-Z]/.test(name) ||\n /^on[a-z]/.test(name) ||\n /(Element|Elements|Node|Nodes)$/.test(name)\n ) {\n return false;\n }\n\n return /^[a-z][\\w-]*$/.test(name) || /^aria[A-Z]/.test(name);\n}\n\nfunction isLikelyComponentPropCompletionName(name) {\n return typeof name === \"string\"\n && name.length > 0\n && !isInternalCompletionName(name)\n && !name.startsWith(\"_\")\n && !/^[A-Z]/.test(name)\n && !name.includes(\"$\")\n && /^[a-z][\\w-]*$/.test(name);\n}\n\nfunction rankCompletionLabel(label, prefix) {\n const normalizedLabel = String(label ?? \"\").toLowerCase();\n const normalizedPrefix = prefix.toLowerCase();\n\n if (normalizedPrefix.length === 0) {\n return 3;\n }\n\n if (normalizedLabel === normalizedPrefix) {\n return 0;\n }\n\n if (normalizedLabel.startsWith(normalizedPrefix)) {\n return 1;\n }\n\n if (normalizedLabel.includes(normalizedPrefix)) {\n return 2;\n }\n\n return 3;\n}\n\nfunction compareCompletionEntries(left, right, prefix) {\n const leftLabel = String(left.label ?? \"\");\n const rightLabel = String(right.label ?? \"\");\n const leftRank = rankCompletionLabel(leftLabel, prefix);\n const rightRank = rankCompletionLabel(rightLabel, prefix);\n\n if (leftRank !== rightRank) {\n return leftRank - rightRank;\n }\n\n const leftIsLitsxApi = left.documentation === \"From @litsx/core\";\n const rightIsLitsxApi = right.documentation === \"From @litsx/core\";\n\n if (leftIsLitsxApi !== rightIsLitsxApi) {\n return leftIsLitsxApi ? -1 : 1;\n }\n\n if (prefix.toLowerCase().startsWith(\"use\")) {\n const leftStartsWithUse = leftLabel.startsWith(\"use\");\n const rightStartsWithUse = rightLabel.startsWith(\"use\");\n if (leftStartsWithUse !== rightStartsWithUse) {\n return leftStartsWithUse ? -1 : 1;\n }\n }\n\n return leftLabel.localeCompare(rightLabel);\n}\n\nfunction getSymbolCompletionKind(ts, symbol) {\n return SYMBOL_KIND_RULES.find(([, getMask]) => (symbol.flags & getMask(ts)) !== 0)?.[0] ?? \"Variable\";\n}\n\nfunction createLitsxEditorSession(options = {}) {\n const ts = options.typescript ?? defaultTs;\n const bundledLibDir = options.bundledLibDir ?? null;\n const trace = createDefaultLogger(options.logger);\n const projectServiceCache = new Map();\n\n function log(message) {\n if (!options.trace) {\n return;\n }\n trace(message);\n }\n\n function getDefaultLibFilePath(localTs, compilerOptions) {\n if (!bundledLibDir) {\n return localTs.getDefaultLibFilePath(compilerOptions);\n }\n\n const libFileName = localTs.getDefaultLibFileName(compilerOptions);\n const candidate = path.join(bundledLibDir, libFileName);\n return fs.existsSync(candidate) ? candidate : localTs.getDefaultLibFilePath(compilerOptions);\n }\n\n function getProjectKey(fileName) {\n const configPath =\n ts.findConfigFile(path.dirname(fileName), ts.sys.fileExists, \"tsconfig.json\") ??\n ts.findConfigFile(path.dirname(fileName), ts.sys.fileExists, \"jsconfig.json\");\n return configPath ? normalizeFileName(configPath) : `<standalone>:${normalizeFileName(fileName)}`;\n }\n\n function getQueryFileName(fileName, languageId) {\n return `${fileName}${QUERY_FILE_SUFFIX_BY_LANGUAGE_ID[languageId] ?? \"\"}`;\n }\n\n function getExtraFileExtensions(localTs) {\n return [\n {\n extension: \".litsx\",\n isMixedContent: false,\n scriptKind: localTs.ScriptKind.TSX,\n },\n {\n extension: \".litsx.jsx\",\n isMixedContent: false,\n scriptKind: localTs.ScriptKind.JSX,\n },\n ];\n }\n\n function getFileVersion(fileName) {\n try {\n const stats = fs.statSync(fileName);\n return `${stats.mtimeMs}:${stats.size}`;\n } catch {\n return \"0\";\n }\n }\n\n function readFileText(fileName, overlays) {\n const normalizedFileName = normalizeFileName(fileName);\n if (overlays.has(normalizedFileName)) {\n return overlays.get(normalizedFileName).text;\n }\n\n try {\n return fs.readFileSync(fileName, \"utf8\");\n } catch {\n return null;\n }\n }\n\n function getOrCreateProjectService(fileName, sourceText, languageId) {\n const projectKey = getProjectKey(fileName);\n const queryFileName = getQueryFileName(fileName, languageId);\n let service = projectServiceCache.get(projectKey);\n\n if (!service) {\n const configPath = projectKey.startsWith(\"<standalone>:\") ? null : projectKey;\n let compilerOptions;\n let rootNames;\n\n if (configPath) {\n const configFile = ts.readConfigFile(configPath, ts.sys.readFile);\n const parsed = ts.parseJsonConfigFileContent(\n configFile.config,\n {\n ...ts.sys,\n onUnRecoverableConfigFileDiagnostic() {},\n },\n path.dirname(configPath),\n undefined,\n configPath,\n undefined,\n getExtraFileExtensions(ts),\n );\n\n compilerOptions = parsed.options;\n rootNames = [...parsed.fileNames];\n if (\n rootNames.some((entry) => entry.endsWith(\".litsx\") || entry.endsWith(\".litsx.jsx\")) ||\n queryFileName.endsWith(\".tsx\") ||\n queryFileName.endsWith(\".jsx\") ||\n fileName.endsWith(\".litsx\") ||\n fileName.endsWith(\".litsx.jsx\")\n ) {\n compilerOptions = {\n ...compilerOptions,\n allowNonTsExtensions: true,\n };\n }\n } else {\n compilerOptions = {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n jsx: ts.JsxEmit.Preserve,\n allowJs: true,\n checkJs: true,\n allowNonTsExtensions: true,\n types: [],\n };\n rootNames = [queryFileName];\n }\n\n if (!rootNames.includes(queryFileName)) {\n rootNames.push(queryFileName);\n }\n\n const overlays = new Map();\n const virtualizationCache = new Map();\n\n function fileExistsForResolution(nextFileName) {\n return overlays.has(normalizeFileName(nextFileName)) || ts.sys.fileExists(nextFileName);\n }\n\n function getScriptKind(nextFileName) {\n const extension = /\\.((?:litsx\\.jsx)|litsx|tsx|jsx|ts|js)$/.exec(nextFileName)?.[1];\n const scriptKindName = extension ? SCRIPT_KIND_BY_EXTENSION[extension] : undefined;\n return scriptKindName ? ts.ScriptKind[scriptKindName] : undefined;\n }\n\n function getSnapshotRecord(nextFileName) {\n const normalizedFileName = normalizeFileName(nextFileName);\n const overlay = overlays.get(normalizedFileName);\n const version = overlay?.version ?? getFileVersion(nextFileName);\n const cached = virtualizationCache.get(normalizedFileName);\n\n if (cached?.version === version) {\n return cached;\n }\n\n const nextSourceText = readFileText(nextFileName, overlays);\n if (typeof nextSourceText !== \"string\") {\n virtualizationCache.delete(normalizedFileName);\n return null;\n }\n\n let virtualization = null;\n let toolingText = nextSourceText;\n\n if (isRelevantFile(nextFileName) && looksLikeLitsxJsx(nextSourceText)) {\n virtualization = createToolingVirtualLitsxSource(nextSourceText, {\n plugins: getPluginsForFile(nextFileName, languageId),\n });\n toolingText = virtualization.code;\n }\n\n const record = {\n version,\n sourceText: nextSourceText,\n toolingText,\n virtualization,\n snapshot: ts.ScriptSnapshot.fromString(toolingText),\n };\n virtualizationCache.set(normalizedFileName, record);\n return record;\n }\n\n function resolveTransparentModuleName(moduleName, containingFile) {\n if (!isPathLikeModuleName(moduleName)) {\n return null;\n }\n\n const candidateBase = path.resolve(path.dirname(containingFile), moduleName);\n for (const candidate of getTransparentResolutionCandidates(candidateBase)) {\n if (fileExistsForResolution(candidate)) {\n return createResolvedModule(ts, candidate);\n }\n }\n\n return null;\n }\n\n function resolveModule(moduleName, containingFile) {\n const resolved = ts.resolveModuleName(\n moduleName,\n containingFile,\n compilerOptions,\n {\n fileExists: fileExistsForResolution,\n readFile(nextFileName) {\n return readFileText(nextFileName, overlays);\n },\n directoryExists(nextDirName) {\n return ts.sys.directoryExists?.(nextDirName) ?? true;\n },\n getDirectories(nextDirName) {\n return ts.sys.getDirectories?.(nextDirName) ?? [];\n },\n realpath(nextFileName) {\n return ts.sys.realpath?.(nextFileName) ?? nextFileName;\n },\n },\n ).resolvedModule;\n\n return resolved ?? resolveTransparentModuleName(moduleName, containingFile);\n }\n\n const host = {\n extraFileExtensions: getExtraFileExtensions(ts),\n getCompilationSettings() {\n return compilerOptions;\n },\n getCurrentDirectory() {\n return configPath ? path.dirname(configPath) : path.dirname(fileName);\n },\n getDefaultLibFileName(optionsForLib) {\n return getDefaultLibFilePath(ts, optionsForLib);\n },\n getScriptFileNames() {\n return rootNames;\n },\n getScriptVersion(nextFileName) {\n const normalizedFileName = normalizeFileName(nextFileName);\n const overlay = overlays.get(normalizedFileName);\n return String(overlay?.version ?? getFileVersion(nextFileName));\n },\n getScriptKind,\n getScriptSnapshot(nextFileName) {\n return getSnapshotRecord(nextFileName)?.snapshot;\n },\n fileExists(nextFileName) {\n return fileExistsForResolution(nextFileName);\n },\n readFile(nextFileName) {\n return readFileText(nextFileName, overlays);\n },\n resolveModuleNames(moduleNames, containingFile) {\n return moduleNames.map((moduleName) => resolveModule(moduleName, containingFile));\n },\n resolveModuleNameLiterals(moduleLiterals, containingFile) {\n return moduleLiterals.map(({ text }) => ({ resolvedModule: resolveModule(text, containingFile) }));\n },\n readDirectory(...args) {\n return ts.sys.readDirectory(...args);\n },\n directoryExists(nextDirName) {\n return ts.sys.directoryExists?.(nextDirName) ?? true;\n },\n getDirectories(nextDirName) {\n return ts.sys.getDirectories?.(nextDirName) ?? [];\n },\n getNewLine() {\n return ts.sys.newLine;\n },\n useCaseSensitiveFileNames() {\n return ts.sys.useCaseSensitiveFileNames;\n },\n getCanonicalFileName(nextFileName) {\n return ts.sys.useCaseSensitiveFileNames\n ? nextFileName\n : nextFileName.toLowerCase();\n },\n };\n\n service = {\n rootNames,\n overlays,\n languageService: ts.createLanguageService(host, ts.createDocumentRegistry()),\n readSourceText(nextFileName) {\n return readFileText(nextFileName, overlays);\n },\n resolveModuleName(moduleName, containingFile) {\n return resolveModule(moduleName, containingFile);\n },\n getVirtualization(nextFileName) {\n return getSnapshotRecord(nextFileName)?.virtualization ?? null;\n },\n setOverlay(nextFileName, nextSourceText) {\n const normalizedFileName = normalizeFileName(nextFileName);\n const previousVersion = overlays.get(normalizedFileName)?.version ?? 0;\n overlays.set(normalizedFileName, {\n text: nextSourceText,\n version: previousVersion + 1,\n });\n if (!rootNames.includes(nextFileName)) {\n rootNames.push(nextFileName);\n }\n },\n };\n\n projectServiceCache.set(projectKey, service);\n }\n\n service.setOverlay(queryFileName, sourceText);\n service.queryFileName = queryFileName;\n return service;\n }\n\n function getDiagnostics(fileName, sourceText, languageId) {\n const service = getOrCreateProjectService(fileName, sourceText, languageId);\n const queryFileName = service.queryFileName ?? fileName;\n const virtualization = service.getVirtualization(queryFileName);\n const authoredSourceFile = ts.createSourceFile(\n fileName,\n sourceText,\n ts.ScriptTarget.Latest,\n true,\n getSourceFileScriptKind(ts, fileName, languageId),\n );\n const diagnostics = [\n ...service.languageService.getSyntacticDiagnostics(queryFileName),\n ...service.languageService.getSemanticDiagnostics(queryFileName),\n ];\n const remappedDiagnostics = diagnostics\n .map((diagnostic) => {\n if (!virtualization || typeof diagnostic.start !== \"number\") {\n return {\n ...diagnostic,\n messageText: remapMessageText(diagnostic.messageText),\n };\n }\n\n const remappedSpan = remapToolingTextSpanToOriginal(\n {\n start: diagnostic.start,\n length: diagnostic.length ?? 0,\n },\n virtualization,\n );\n\n return {\n ...diagnostic,\n start: remappedSpan.start,\n length: remappedSpan.length,\n messageText: remapMessageText(diagnostic.messageText),\n };\n })\n .filter((diagnostic) => (\n !String(diagnostic.messageText ?? \"\").includes(\"__litsx_\") &&\n !startsAtAuthoredSyntax(sourceText, diagnostic.start) &&\n !shouldSuppressCustomElementConstructorDiagnostic(ts, authoredSourceFile, diagnostic)\n ));\n\n const authoredDiagnostics = collectLitsxAuthoredDiagnostics(sourceText, ts, {\n plugins: getParserPlugins(languageId),\n });\n const seen = new Set(\n remappedDiagnostics.map((diagnostic) => `${diagnostic.code}:${diagnostic.start}:${diagnostic.length}`),\n );\n\n return [\n ...remappedDiagnostics,\n ...authoredDiagnostics.filter((diagnostic) => {\n const key = `${diagnostic.code}:${diagnostic.start}:${diagnostic.length}`;\n if (seen.has(key)) {\n return false;\n }\n seen.add(key);\n return true;\n }),\n ];\n }\n\n function getHover(fileName, sourceText, languageId, position) {\n const service = getOrCreateProjectService(fileName, sourceText, languageId);\n const queryFileName = service.queryFileName ?? fileName;\n const virtualization = service.getVirtualization(queryFileName);\n const mappedPosition = virtualization\n ? mapOriginalPositionToToolingVirtual(position, virtualization)\n : position;\n const info = service.languageService.getQuickInfoAtPosition(queryFileName, mappedPosition);\n\n const hoistInfo = inferLitsxStaticHoistInfoAtPosition(sourceText, position);\n if (hoistInfo) {\n return {\n start: hoistInfo.start,\n length: hoistInfo.length,\n code: `${hoistInfo.name}(...): static hoist`,\n documentation: hoistInfo.documentation,\n };\n }\n\n if (!info) {\n const program = service.languageService.getProgram();\n const sourceFile = program?.getSourceFile(queryFileName);\n const checker = program?.getTypeChecker();\n if (!program || !sourceFile || !checker) {\n const bindingHoverInfo = getBindingHoverInfo(\n inferLitsxAttributeInfoAtPosition(sourceText, position),\n );\n return bindingHoverInfo\n ? {\n start: bindingHoverInfo.start,\n length: bindingHoverInfo.length,\n code: `${bindingHoverInfo.name}: ${bindingHoverInfo.kindLabel}`,\n documentation: bindingHoverInfo.detail,\n }\n : null;\n }\n\n let node = findDeepestNodeAtPosition(sourceFile, mappedPosition);\n while (node) {\n const symbol = checker.getSymbolAtLocation(node) ?? null;\n const type = checker.getTypeAtLocation(node) ?? null;\n if (!type) {\n node = node.parent ?? null;\n continue;\n }\n\n const remappedNodeSpan = virtualization\n ? remapToolingTextSpanToOriginal(\n {\n start: node.getStart(sourceFile),\n length: node.getWidth(sourceFile),\n },\n virtualization,\n )\n : {\n start: position,\n length: 0,\n };\n\n return {\n start: remappedNodeSpan.start,\n length: remappedNodeSpan.length,\n code: `${symbol?.getName?.() ?? node.getText(sourceFile)}: ${checker.typeToString(type)}`,\n documentation: symbol\n ? ts.displayPartsToString(symbol.getDocumentationComment(checker))\n : \"\",\n };\n }\n\n const bindingHoverInfo = getBindingHoverInfo(\n inferLitsxAttributeInfoAtPosition(sourceText, position),\n );\n return bindingHoverInfo\n ? {\n start: bindingHoverInfo.start,\n length: bindingHoverInfo.length,\n code: `${bindingHoverInfo.name}: ${bindingHoverInfo.kindLabel}`,\n documentation: bindingHoverInfo.detail,\n }\n : null;\n }\n\n const remappedSpan = virtualization\n ? remapToolingTextSpanToOriginal(info.textSpan, virtualization)\n : info.textSpan;\n const displayText = (remapDisplayParts(info.displayParts) ?? [])\n .map((entry) => entry.text)\n .join(\"\");\n const documentation = (remapDisplayParts(info.documentation) ?? [])\n .map((entry) => entry.text)\n .join(\"\");\n\n return {\n start: remappedSpan.start,\n length: remappedSpan.length,\n code: displayText || \"symbol\",\n documentation,\n };\n }\n\n function getCompletions(fileName, sourceText, languageId, position, completionKindAdapter) {\n const adaptKind = createCompletionKindAdapter(completionKindAdapter);\n const service = getOrCreateProjectService(fileName, sourceText, languageId);\n const queryFileName = service.queryFileName ?? fileName;\n const virtualization = service.getVirtualization(queryFileName);\n const mappedPosition = virtualization\n ? mapOriginalPositionToToolingVirtual(position, virtualization)\n : position;\n const completions = service.languageService.getCompletionsAtPosition(queryFileName, mappedPosition, {\n includeCompletionsForModuleExports: true,\n includeCompletionsWithInsertText: true,\n });\n const rawCompletionEntriesByName = new Map(\n (completions?.entries ?? []).map((entry) => [entry.name, entry]),\n );\n\n const context = inferLitsxAttributeCompletionContext(sourceText, position);\n const markupContext = inferLitsxMarkupCompletionContext(sourceText, position);\n const isComponentTag = /^[A-Z]/.test(markupContext?.tagName ?? \"\");\n const contextualEntries = context\n ? getLitsxAttributeCompletionNames(context).map((name) => ({\n ...getContextualCompletionEdit(name, context),\n label: name,\n kind: adaptKind(getCompletionKindToken(name), {\n source: \"litsx\",\n label: name,\n }),\n detail: \"LitSX binding\",\n documentation: `LitSX binding for <${context.tagName}>.`,\n }))\n : [];\n const componentEventEntries = getComponentEventCompletionEntries(\n service,\n ts,\n queryFileName,\n sourceText,\n position,\n adaptKind,\n ).filter((entry) => !contextualEntries.some((contextualEntry) => contextualEntry.label === entry.label));\n const componentStaticPropEntries = getComponentStaticPropCompletionEntries(\n service,\n ts,\n queryFileName,\n sourceText,\n position,\n adaptKind,\n );\n const markupEntries = markupContext && !isComponentTag\n ? getLitsxMarkupCompletionNames(markupContext).map((name) => ({\n label: name,\n kind: adaptKind(\n name.startsWith(\"@\")\n ? \"Event\"\n : name.startsWith(\".\") || name.startsWith(\"?\")\n ? \"Property\"\n : \"Property\",\n {\n source: \"litsx-markup\",\n label: name,\n },\n ),\n detail: name.startsWith(\"@\")\n ? \"LitSX event binding\"\n : name.startsWith(\".\")\n ? \"LitSX property binding\"\n : name.startsWith(\"?\")\n ? \"LitSX boolean attribute binding\"\n : \"LitSX markup attribute\",\n documentation: name.startsWith(\"@\") || name.startsWith(\".\") || name.startsWith(\"?\")\n ? `LitSX binding for <${markupContext.tagName}>.`\n : `LitSX-authored attribute for <${markupContext.tagName}>.`,\n start: markupContext.start,\n length: markupContext.length,\n }))\n : [];\n const scopePrefix = getScopeCompletionPrefix(sourceText, position);\n const jsxImportSourceEntries = markupContext\n ? []\n : getJsxImportSourceExportEntries(service, ts, scopePrefix, adaptKind, position).map((entry) => ({\n ...entry,\n additionalTextEdits: getCompletionEntryImportEdits(\n service.languageService,\n queryFileName,\n fileName,\n mappedPosition,\n rawCompletionEntriesByName.get(entry.label),\n virtualization,\n ),\n }));\n\n const mergedEntries = [\n ...contextualEntries,\n ...componentEventEntries,\n ...componentStaticPropEntries,\n ...markupEntries,\n ...jsxImportSourceEntries,\n ];\n const seen = new Set(mergedEntries.map((entry) => entry.label));\n\n for (const entry of completions?.entries ?? []) {\n if (\n decodeVirtualAttributeName(entry.name) ||\n seen.has(entry.name) ||\n isInternalCompletionName(entry.name)\n ) {\n continue;\n }\n\n if (markupContext && !isComponentTag && !isLikelyIntrinsicMarkupCompletionName(entry.name)) {\n continue;\n }\n\n if (markupContext && isComponentTag && !isLikelyComponentPropCompletionName(entry.name)) {\n continue;\n }\n\n seen.add(entry.name);\n\n const remappedSpan = virtualization && entry.replacementSpan\n ? remapToolingTextSpanToOriginal(entry.replacementSpan, virtualization)\n : entry.replacementSpan ?? { start: position, length: 0 };\n\n const kindToken = COMPLETION_KIND_BY_TS_KIND[entry.kind] ?? \"Text\";\n mergedEntries.push({\n label: entry.name,\n kind: adaptKind(kindToken, {\n source: \"typescript\",\n label: entry.name,\n tsKind: entry.kind,\n kindModifiers: entry.kindModifiers,\n }),\n detail: entry.kindModifiers || entry.kind,\n documentation: entry.source ? `From ${entry.source}` : \"TypeScript completion\",\n start: remappedSpan.start,\n length: remappedSpan.length,\n additionalTextEdits: getCompletionEntryImportEdits(\n service.languageService,\n queryFileName,\n fileName,\n mappedPosition,\n entry,\n virtualization,\n ),\n });\n }\n\n if (mergedEntries.length === (contextualEntries.length + componentEventEntries.length + componentStaticPropEntries.length)) {\n const program = service.languageService.getProgram();\n const sourceFile = program?.getSourceFile(queryFileName);\n const checker = program?.getTypeChecker();\n const node = sourceFile ? findDeepestNodeAtPosition(sourceFile, mappedPosition) : null;\n const prefix = scopePrefix;\n\n if (node && checker && !markupContext) {\n const scopeSymbols = checker.getSymbolsInScope(\n node,\n ts.SymbolFlags.Value | ts.SymbolFlags.Type | ts.SymbolFlags.Namespace | ts.SymbolFlags.Alias,\n );\n\n for (const symbol of scopeSymbols) {\n const name = symbol.getName?.();\n if (!name || isInternalCompletionName(name) || seen.has(name) || !name.startsWith(prefix)) {\n continue;\n }\n\n seen.add(name);\n const kindToken = getSymbolCompletionKind(ts, symbol);\n mergedEntries.push({\n label: name,\n kind: adaptKind(kindToken, {\n source: \"typescript-scope\",\n label: name,\n }),\n detail: \"TypeScript symbol\",\n documentation: \"Project-backed TypeScript completion\",\n start: position - prefix.length,\n length: prefix.length,\n });\n }\n }\n }\n\n if (markupContext) {\n return mergedEntries;\n }\n\n return mergedEntries.sort((left, right) => (\n compareCompletionEntries(left, right, scopePrefix)\n ));\n }\n\n log(\"LitSX editor session initialized\");\n\n return {\n typescript: ts,\n bundledLibDir,\n getDiagnostics,\n getHover,\n getCompletions,\n clear() {\n projectServiceCache.clear();\n },\n };\n}\n\nexport {\n createLitsxEditorSession,\n};\n"],"names":["remapVirtualText","virtualization","remapToolingTextSpanToOriginal","inferLitsxAttributeCompletionContext","inferLitsxComponentEventNames","inferLitsxMarkupCompletionContext","inferLitsxComponentPropNames","ts","defaultTs","looksLikeLitsxJsx","createToolingVirtualLitsxSource","collectLitsxAuthoredDiagnostics","mapOriginalPositionToToolingVirtual","inferLitsxStaticHoistInfoAtPosition","inferLitsxAttributeInfoAtPosition","getLitsxAttributeCompletionNames","getLitsxMarkupCompletionNames","decodeVirtualAttributeName"],"mappings":"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"}
1
+ {"version":3,"file":"editor-session.cjs","sources":["../src/editor-session.js"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport defaultTs from \"typescript\";\n\nimport {\n collectLitsxAuthoredDiagnostics,\n createToolingVirtualLitsxSource,\n decodeVirtualAttributeName,\n getLitsxAttributeCompletionNames,\n inferLitsxComponentEventNames,\n inferLitsxComponentPropNames,\n inferLitsxAttributeCompletionContext,\n inferLitsxAttributeInfoAtPosition,\n inferLitsxMarkupCompletionContext,\n inferLitsxStaticHoistInfoAtPosition,\n looksLikeLitsxJsx,\n mapOriginalPositionToToolingVirtual,\n remapToolingTextSpanToOriginal,\n getLitsxMarkupCompletionNames,\n remapVirtualText,\n} from \"./virtualization.js\";\n\nconst QUERY_FILE_SUFFIX_BY_LANGUAGE_ID = {\n litsx: \".tsx\",\n \"litsx-jsx\": \".jsx\",\n};\n\nconst SUPPORTED_SOURCE_EXTENSIONS = [\n \".litsx.jsx\",\n \".litsx\",\n \".tsx\",\n \".ts\",\n \".jsx\",\n \".js\",\n];\n\nconst SCRIPT_KIND_BY_EXTENSION = {\n \"litsx.jsx\": \"JSX\",\n litsx: \"TSX\",\n tsx: \"TSX\",\n jsx: \"JSX\",\n ts: \"TS\",\n js: \"JS\",\n};\n\nconst BINDING_HOVER_BY_PREFIX = {\n \"@\": {\n kindLabel: \"event\",\n detail: \"LitSX event listener binding\",\n },\n \".\": {\n kindLabel: \"property\",\n detail: \"LitSX property binding\",\n },\n \"?\": {\n kindLabel: \"boolean\",\n detail: \"LitSX boolean attribute binding\",\n },\n};\n\nconst COMPLETION_KIND_BY_TS_KIND = {\n keyword: \"Keyword\",\n const: \"Variable\",\n constElement: \"Variable\",\n let: \"Variable\",\n letElement: \"Variable\",\n variable: \"Variable\",\n variableElement: \"Variable\",\n localVariableElement: \"Variable\",\n memberVariableElement: \"Property\",\n property: \"Property\",\n function: \"Function\",\n functionElement: \"Function\",\n memberFunctionElement: \"Function\",\n class: \"Class\",\n classElement: \"Class\",\n interface: \"Interface\",\n interfaceElement: \"Interface\",\n module: \"Module\",\n moduleElement: \"Module\",\n};\n\nconst SYMBOL_KIND_RULES = [\n [\"Function\", (ts) => ts.SymbolFlags.Function | ts.SymbolFlags.Method],\n [\"Class\", (ts) => ts.SymbolFlags.Class | ts.SymbolFlags.TypeAlias],\n [\"Interface\", (ts) => ts.SymbolFlags.Interface],\n [\"Module\", (ts) => ts.SymbolFlags.Module | ts.SymbolFlags.Namespace],\n [\"Property\", (ts) => ts.SymbolFlags.Property | ts.SymbolFlags.EnumMember],\n];\n\nfunction normalizeFileName(fileName) {\n return path.resolve(fileName).replace(/\\\\/g, \"/\");\n}\n\nfunction getParserPlugins(languageId) {\n return languageId === \"litsx\" ? [\"typescript\"] : [];\n}\n\nfunction isRelevantFile(fileName) {\n return /\\.(jsx|tsx|litsx)$/.test(fileName) || fileName.endsWith(\".litsx.jsx\");\n}\n\nfunction getPluginsForFile(fileName, languageId) {\n return (languageId === \"litsx\" || /\\.(tsx|litsx)$/.test(fileName ?? \"\"))\n ? [\"typescript\"]\n : [];\n}\n\nfunction createCompletionKindAdapter(adapter) {\n if (typeof adapter === \"function\") {\n return adapter;\n }\n\n if (adapter && typeof adapter === \"object\") {\n return (kind) => adapter[kind] ?? kind;\n }\n\n return (kind) => kind;\n}\n\nfunction createDefaultLogger(logger) {\n if (!logger) {\n return () => {};\n }\n\n if (typeof logger === \"function\") {\n return logger;\n }\n\n if (typeof logger.appendLine === \"function\") {\n return (message) => logger.appendLine(message);\n }\n\n return () => {};\n}\n\nfunction remapDisplayParts(parts) {\n return parts?.map((part) => ({\n ...part,\n text: remapVirtualText(part.text),\n }));\n}\n\nfunction normalizeEscapedNewlines(text) {\n if (typeof text !== \"string\" || !text.includes(\"\\\\\")) {\n return text;\n }\n\n return text\n .replace(/\\\\r\\\\n/g, \"\\r\\n\")\n .replace(/\\\\n/g, \"\\n\");\n}\n\nfunction remapDocumentationParts(parts) {\n return parts?.map((part) => ({\n ...part,\n text: normalizeEscapedNewlines(remapVirtualText(part.text)),\n }));\n}\n\nfunction getHoverCodeLanguage(languageId) {\n if (languageId === \"litsx\" || languageId === \"tsx\") {\n return \"tsx\";\n }\n\n if (languageId === \"litsx-jsx\" || languageId === \"jsx\") {\n return \"jsx\";\n }\n\n return \"ts\";\n}\n\nfunction createHoverResult({ start, length, code, documentation, languageId }) {\n const normalizedDocumentation = normalizeEscapedNewlines(documentation ?? \"\");\n const markdownParts = [\n `\\`\\`\\`${getHoverCodeLanguage(languageId)}`,\n code || \"symbol\",\n \"```\",\n ];\n\n if (normalizedDocumentation) {\n markdownParts.push(\"\", normalizedDocumentation);\n }\n\n return {\n start,\n length,\n code: code || \"symbol\",\n documentation: normalizedDocumentation,\n markdown: markdownParts.join(\"\\n\"),\n };\n}\n\nfunction remapMessageText(messageText) {\n if (typeof messageText === \"string\") {\n return remapVirtualText(messageText);\n }\n\n if (!messageText || typeof messageText !== \"object\") {\n return messageText;\n }\n\n return {\n ...messageText,\n messageText: remapMessageText(messageText.messageText),\n next: messageText.next?.map(remapMessageText),\n };\n}\n\nfunction remapCompletionTextChanges(textChanges, targetFileName, virtualization) {\n if (!Array.isArray(textChanges)) {\n return [];\n }\n\n return textChanges.map((change) => {\n const span = virtualization\n ? remapToolingTextSpanToOriginal(change.span, virtualization)\n : change.span;\n\n return {\n fileName: targetFileName,\n start: span.start,\n length: span.length,\n newText: change.newText,\n };\n });\n}\n\nfunction startsAtAuthoredSyntax(sourceText, start) {\n if (typeof sourceText !== \"string\" || typeof start !== \"number\" || !(start >= 0 && start < sourceText.length)) {\n return false;\n }\n\n return \"@.?\".includes(sourceText[start]);\n}\n\nfunction getBindingHoverInfo(attributeInfo) {\n if (!attributeInfo) {\n return null;\n }\n\n const bindingInfo = BINDING_HOVER_BY_PREFIX[attributeInfo.prefix] ?? {\n kindLabel: \"binding\",\n detail: \"LitSX binding\",\n };\n\n return {\n name: attributeInfo.name,\n start: attributeInfo.start,\n length: attributeInfo.length,\n kindLabel: bindingInfo.kindLabel,\n detail: `${bindingInfo.detail} for <${attributeInfo.tagName}>.`,\n };\n}\n\nfunction getCompletionKindToken(name) {\n return name.startsWith(\"@\") ? \"Event\" : \"Property\";\n}\n\nfunction getContextualCompletionEdit(name, context) {\n const replacementStart = (context?.start ?? 0) + 1;\n const replacementLength = Math.max((context?.length ?? 1) - 1, 0);\n\n return {\n insertText: name.slice(1),\n filterText: name.slice(1),\n start: replacementStart,\n length: replacementLength,\n };\n}\n\nfunction getModuleExtension(ts, fileName) {\n if (fileName.endsWith(\".litsx.jsx\") || fileName.endsWith(\".jsx\")) {\n return ts.Extension.Jsx;\n }\n\n if (fileName.endsWith(\".litsx\") || fileName.endsWith(\".tsx\")) {\n return ts.Extension.Tsx;\n }\n\n if (fileName.endsWith(\".ts\")) {\n return ts.Extension.Ts;\n }\n\n return ts.Extension.Js;\n}\n\nfunction isPathLikeModuleName(moduleName) {\n return moduleName.startsWith(\"./\") || moduleName.startsWith(\"../\") || moduleName.startsWith(\"/\");\n}\n\nfunction getTransparentResolutionCandidates(modulePath) {\n const requestedExtension = SUPPORTED_SOURCE_EXTENSIONS.find((extension) => modulePath.endsWith(extension)) ?? null;\n\n if (requestedExtension) {\n return [\n modulePath,\n path.join(modulePath, `index${requestedExtension}`),\n ];\n }\n\n return [\n ...SUPPORTED_SOURCE_EXTENSIONS.map((extension) => `${modulePath}${extension}`),\n ...SUPPORTED_SOURCE_EXTENSIONS.map((extension) => path.join(modulePath, `index${extension}`)),\n ];\n}\n\nfunction createResolvedModule(ts, resolvedFileName) {\n return {\n resolvedFileName,\n extension: getModuleExtension(ts, resolvedFileName),\n isExternalLibraryImport: false,\n };\n}\n\nfunction findDeepestNodeAtPosition(sourceFile, position) {\n let bestNode = null;\n\n function visit(node) {\n if (position < node.pos || position >= node.end) {\n return;\n }\n\n bestNode = node;\n node.forEachChild(visit);\n }\n\n visit(sourceFile);\n return bestNode;\n}\n\nfunction getSourceFileScriptKind(ts, fileName, languageId) {\n if (fileName.endsWith(\".litsx.jsx\") || languageId === \"litsx-jsx\" || fileName.endsWith(\".jsx\")) {\n return ts.ScriptKind.JSX;\n }\n\n if (fileName.endsWith(\".litsx\") || languageId === \"litsx\" || fileName.endsWith(\".tsx\")) {\n return ts.ScriptKind.TSX;\n }\n\n if (fileName.endsWith(\".ts\")) {\n return ts.ScriptKind.TS;\n }\n\n return ts.ScriptKind.JS;\n}\n\nfunction isCustomElementsDefineCall(ts, node) {\n return ts.isCallExpression(node)\n && ts.isPropertyAccessExpression(node.expression)\n && ts.isIdentifier(node.expression.expression)\n && node.expression.expression.text === \"customElements\"\n && node.expression.name.text === \"define\";\n}\n\nfunction isLikelyLitsxComponentReference(ts, sourceFile, node) {\n if (!ts.isIdentifier(node) || !/^[A-Z]/.test(node.text)) {\n return false;\n }\n\n let matches = false;\n\n function visit(current) {\n if (matches) {\n return;\n }\n\n if (\n ts.isImportDeclaration(current)\n && ts.isStringLiteral(current.moduleSpecifier)\n && (current.moduleSpecifier.text.endsWith(\".litsx\") || current.moduleSpecifier.text.endsWith(\".litsx.jsx\"))\n ) {\n const bindings = current.importClause?.namedBindings;\n if (bindings && ts.isNamedImports(bindings)) {\n matches = bindings.elements.some((element) => element.name.text === node.text);\n }\n }\n\n if (\n ts.isVariableDeclaration(current)\n && ts.isIdentifier(current.name)\n && current.name.text === node.text\n && (ts.isArrowFunction(current.initializer) || ts.isFunctionExpression(current.initializer))\n ) {\n matches = true;\n }\n\n if (ts.isFunctionDeclaration(current) && current.name?.text === node.text) {\n matches = true;\n }\n\n if (!matches) {\n current.forEachChild(visit);\n }\n }\n\n sourceFile.forEachChild(visit);\n return matches;\n}\n\nfunction shouldSuppressCustomElementConstructorDiagnostic(ts, sourceFile, diagnostic) {\n if (diagnostic.code !== 2345 || typeof diagnostic.start !== \"number\") {\n return false;\n }\n\n const node = findDeepestNodeAtPosition(sourceFile, diagnostic.start);\n let current = node;\n\n while (current && !isCustomElementsDefineCall(ts, current)) {\n current = current.parent ?? null;\n }\n\n if (!current || !isCustomElementsDefineCall(ts, current)) {\n return false;\n }\n\n const candidate = current.arguments?.[1];\n if (!candidate || diagnostic.start < candidate.getStart(sourceFile) || diagnostic.start >= candidate.getEnd()) {\n return false;\n }\n\n return isLikelyLitsxComponentReference(ts, sourceFile, candidate)\n && String(typeof diagnostic.messageText === \"string\" ? diagnostic.messageText : diagnostic.messageText?.messageText ?? \"\")\n .includes(\"CustomElementConstructor\");\n}\n\nfunction getScopeCompletionPrefix(sourceText, position) {\n const match = /[A-Za-z0-9_$]*$/.exec(sourceText.slice(0, position));\n return match?.[0] ?? \"\";\n}\n\nfunction getJsxImportSourceExportEntries(service, ts, prefix, adaptKind, position) {\n if (!prefix) {\n return [];\n }\n\n const program = service.languageService.getProgram();\n const checker = program?.getTypeChecker();\n const jsxImportSource = program?.getCompilerOptions?.().jsxImportSource;\n\n if (!program || !checker || typeof jsxImportSource !== \"string\" || jsxImportSource.length === 0) {\n return [];\n }\n\n const moduleSourceFile = program.getSourceFiles().find((sourceFile) => (\n sourceFile.fileName.includes(`/node_modules/${jsxImportSource}/`)\n || sourceFile.fileName.includes(`/${jsxImportSource}/src/`)\n ));\n\n const moduleSymbol = moduleSourceFile?.symbol ?? null;\n if (!moduleSymbol) {\n return [];\n }\n\n const exportedSymbols = checker.getExportsOfModule(moduleSymbol);\n\n return exportedSymbols\n .filter((symbol) => {\n const name = symbol.getName?.();\n return typeof name === \"string\"\n && name.startsWith(prefix)\n && !isInternalCompletionName(name);\n })\n .map((symbol) => {\n const name = symbol.getName();\n return {\n label: name,\n kind: adaptKind(getSymbolCompletionKind(ts, symbol), {\n source: jsxImportSource,\n label: name,\n }),\n detail: \"export\",\n documentation: `From ${jsxImportSource}`,\n start: position - prefix.length,\n length: prefix.length,\n };\n });\n}\n\nfunction getSourceParserPlugins(fileName) {\n return /\\.(litsx|tsx|ts)$/.test(fileName) ? [\"typescript\"] : [];\n}\n\nfunction getImportedComponentReference(ts, sourceFile, tagName) {\n let reference = null;\n\n sourceFile.forEachChild((node) => {\n if (\n reference ||\n !ts.isImportDeclaration(node) ||\n !ts.isStringLiteral(node.moduleSpecifier)\n ) {\n return;\n }\n\n const bindings = node.importClause?.namedBindings;\n if (!bindings || !ts.isNamedImports(bindings)) {\n return;\n }\n\n for (const element of bindings.elements) {\n if (element.name.text !== tagName) {\n continue;\n }\n\n reference = {\n exportName: element.propertyName?.text ?? element.name.text,\n moduleName: node.moduleSpecifier.text,\n };\n return;\n }\n });\n\n return reference;\n}\n\nfunction getComponentEventCompletionEntries(service, ts, queryFileName, sourceText, position, adaptKind) {\n const context = inferLitsxAttributeCompletionContext(sourceText, position);\n if (!context || context.prefix !== \"@\" || !/^[A-Z]/.test(context.tagName)) {\n return [];\n }\n\n const program = service.languageService.getProgram();\n const sourceFile = program?.getSourceFile(queryFileName);\n if (!sourceFile) {\n return [];\n }\n\n const reference = getImportedComponentReference(ts, sourceFile, context.tagName);\n if (!reference) {\n return [];\n }\n\n const resolvedModule = service.resolveModuleName?.(reference.moduleName, queryFileName);\n const componentFileName = resolvedModule?.resolvedFileName;\n if (!componentFileName) {\n return [];\n }\n\n const componentSourceText = service.readSourceText?.(componentFileName);\n if (typeof componentSourceText !== \"string\") {\n return [];\n }\n\n const eventNames = inferLitsxComponentEventNames(componentSourceText, {\n plugins: getSourceParserPlugins(componentFileName),\n })[reference.exportName] ?? [];\n\n return eventNames\n .filter((name) => typeof name === \"string\" && name.startsWith(context.partialName))\n .map((name) => ({\n ...getContextualCompletionEdit(`@${name}`, context),\n label: `@${name}`,\n kind: adaptKind(\"Event\", {\n source: \"litsx-component-event\",\n label: `@${name}`,\n }),\n detail: `Emitted by <${context.tagName}>`,\n documentation: `LitSX custom event emitted by <${context.tagName}>.`,\n }));\n}\n\nfunction getComponentStaticPropCompletionEntries(service, ts, queryFileName, sourceText, position, adaptKind) {\n const markupContext = inferLitsxMarkupCompletionContext(sourceText, position);\n if (!markupContext || !/^[A-Z]/.test(markupContext.tagName)) {\n return [];\n }\n\n const program = service.languageService.getProgram();\n const sourceFile = program?.getSourceFile(queryFileName);\n if (!sourceFile) {\n return [];\n }\n\n const reference = getImportedComponentReference(ts, sourceFile, markupContext.tagName);\n if (!reference) {\n return [];\n }\n\n const resolvedModule = service.resolveModuleName?.(reference.moduleName, queryFileName);\n const componentFileName = resolvedModule?.resolvedFileName;\n if (!componentFileName) {\n return [];\n }\n\n const componentSourceText = service.readSourceText?.(componentFileName);\n if (typeof componentSourceText !== \"string\") {\n return [];\n }\n\n const propNames = inferLitsxComponentPropNames(componentSourceText, {\n plugins: getSourceParserPlugins(componentFileName),\n })[reference.exportName] ?? [];\n\n return propNames\n .filter((name) => typeof name === \"string\" && name.startsWith(markupContext.partialName))\n .map((name) => ({\n label: name,\n kind: adaptKind(\"Property\", {\n source: \"litsx-component-static-prop\",\n label: name,\n }),\n detail: `Static property of <${markupContext.tagName}>`,\n documentation: `LitSX static property exposed by <${markupContext.tagName}>.`,\n start: markupContext.start,\n length: markupContext.length,\n }));\n}\n\nfunction getCompletionEntryImportEdits(languageService, queryFileName, fileName, position, entry, virtualization) {\n if (typeof languageService.getCompletionEntryDetails !== \"function\" || !entry?.hasAction) {\n return [];\n }\n\n let details;\n try {\n details = languageService.getCompletionEntryDetails(\n queryFileName,\n position,\n entry.name,\n {},\n entry.source,\n {},\n entry.data,\n );\n } catch {\n return [];\n }\n\n const fileChanges = details?.codeActions\n ?.flatMap((action) => action.changes ?? [])\n ?.filter((change) => change.fileName === queryFileName || change.fileName === fileName) ?? [];\n\n return fileChanges.flatMap((change) => (\n remapCompletionTextChanges(change.textChanges, fileName, virtualization)\n ));\n}\n\nfunction isInternalCompletionName(name) {\n return typeof name === \"string\" && (\n name.startsWith(\"__litsx_\") ||\n name.startsWith(\"_$L\") ||\n name.startsWith(\"_currentTarget\") ||\n name.includes(\"$\")\n );\n}\n\nfunction isLikelyIntrinsicMarkupCompletionName(name) {\n if (\n typeof name !== \"string\" ||\n name.length === 0 ||\n isInternalCompletionName(name) ||\n name.startsWith(\"_\") ||\n /^[A-Z0-9_]+$/.test(name) ||\n /^[A-Z]/.test(name) ||\n /^on[a-z]/.test(name) ||\n /(Element|Elements|Node|Nodes)$/.test(name)\n ) {\n return false;\n }\n\n return /^[a-z][\\w-]*$/.test(name) || /^aria[A-Z]/.test(name);\n}\n\nfunction isLikelyComponentPropCompletionName(name) {\n return typeof name === \"string\"\n && name.length > 0\n && !isInternalCompletionName(name)\n && !name.startsWith(\"_\")\n && !/^[A-Z]/.test(name)\n && !name.includes(\"$\")\n && /^[a-z][\\w-]*$/.test(name);\n}\n\nfunction rankCompletionLabel(label, prefix) {\n const normalizedLabel = String(label ?? \"\").toLowerCase();\n const normalizedPrefix = prefix.toLowerCase();\n\n if (normalizedPrefix.length === 0) {\n return 3;\n }\n\n if (normalizedLabel === normalizedPrefix) {\n return 0;\n }\n\n if (normalizedLabel.startsWith(normalizedPrefix)) {\n return 1;\n }\n\n if (normalizedLabel.includes(normalizedPrefix)) {\n return 2;\n }\n\n return 3;\n}\n\nfunction compareCompletionEntries(left, right, prefix) {\n const leftLabel = String(left.label ?? \"\");\n const rightLabel = String(right.label ?? \"\");\n const leftRank = rankCompletionLabel(leftLabel, prefix);\n const rightRank = rankCompletionLabel(rightLabel, prefix);\n\n if (leftRank !== rightRank) {\n return leftRank - rightRank;\n }\n\n const leftIsLitsxApi = left.documentation === \"From @litsx/core\";\n const rightIsLitsxApi = right.documentation === \"From @litsx/core\";\n\n if (leftIsLitsxApi !== rightIsLitsxApi) {\n return leftIsLitsxApi ? -1 : 1;\n }\n\n if (prefix.toLowerCase().startsWith(\"use\")) {\n const leftStartsWithUse = leftLabel.startsWith(\"use\");\n const rightStartsWithUse = rightLabel.startsWith(\"use\");\n if (leftStartsWithUse !== rightStartsWithUse) {\n return leftStartsWithUse ? -1 : 1;\n }\n }\n\n return leftLabel.localeCompare(rightLabel);\n}\n\nfunction getSymbolCompletionKind(ts, symbol) {\n return SYMBOL_KIND_RULES.find(([, getMask]) => (symbol.flags & getMask(ts)) !== 0)?.[0] ?? \"Variable\";\n}\n\nfunction createLitsxEditorSession(options = {}) {\n const ts = options.typescript ?? defaultTs;\n const bundledLibDir = options.bundledLibDir ?? null;\n const trace = createDefaultLogger(options.logger);\n const projectServiceCache = new Map();\n\n function log(message) {\n if (!options.trace) {\n return;\n }\n trace(message);\n }\n\n function getDefaultLibFilePath(localTs, compilerOptions) {\n if (!bundledLibDir) {\n return localTs.getDefaultLibFilePath(compilerOptions);\n }\n\n const libFileName = localTs.getDefaultLibFileName(compilerOptions);\n const candidate = path.join(bundledLibDir, libFileName);\n return fs.existsSync(candidate) ? candidate : localTs.getDefaultLibFilePath(compilerOptions);\n }\n\n function getProjectKey(fileName) {\n const configPath =\n ts.findConfigFile(path.dirname(fileName), ts.sys.fileExists, \"tsconfig.json\") ??\n ts.findConfigFile(path.dirname(fileName), ts.sys.fileExists, \"jsconfig.json\");\n return configPath ? normalizeFileName(configPath) : `<standalone>:${normalizeFileName(fileName)}`;\n }\n\n function getQueryFileName(fileName, languageId) {\n return `${fileName}${QUERY_FILE_SUFFIX_BY_LANGUAGE_ID[languageId] ?? \"\"}`;\n }\n\n function getExtraFileExtensions(localTs) {\n return [\n {\n extension: \".litsx\",\n isMixedContent: false,\n scriptKind: localTs.ScriptKind.TSX,\n },\n {\n extension: \".litsx.jsx\",\n isMixedContent: false,\n scriptKind: localTs.ScriptKind.JSX,\n },\n ];\n }\n\n function getFileVersion(fileName) {\n try {\n const stats = fs.statSync(fileName);\n return `${stats.mtimeMs}:${stats.size}`;\n } catch {\n return \"0\";\n }\n }\n\n function readFileText(fileName, overlays) {\n const normalizedFileName = normalizeFileName(fileName);\n if (overlays.has(normalizedFileName)) {\n return overlays.get(normalizedFileName).text;\n }\n\n try {\n return fs.readFileSync(fileName, \"utf8\");\n } catch {\n return null;\n }\n }\n\n function getOrCreateProjectService(fileName, sourceText, languageId) {\n const projectKey = getProjectKey(fileName);\n const queryFileName = getQueryFileName(fileName, languageId);\n let service = projectServiceCache.get(projectKey);\n\n if (!service) {\n const configPath = projectKey.startsWith(\"<standalone>:\") ? null : projectKey;\n let compilerOptions;\n let rootNames;\n\n if (configPath) {\n const configFile = ts.readConfigFile(configPath, ts.sys.readFile);\n const parsed = ts.parseJsonConfigFileContent(\n configFile.config,\n {\n ...ts.sys,\n onUnRecoverableConfigFileDiagnostic() {},\n },\n path.dirname(configPath),\n undefined,\n configPath,\n undefined,\n getExtraFileExtensions(ts),\n );\n\n compilerOptions = parsed.options;\n rootNames = [...parsed.fileNames];\n if (\n rootNames.some((entry) => entry.endsWith(\".litsx\") || entry.endsWith(\".litsx.jsx\")) ||\n queryFileName.endsWith(\".tsx\") ||\n queryFileName.endsWith(\".jsx\") ||\n fileName.endsWith(\".litsx\") ||\n fileName.endsWith(\".litsx.jsx\")\n ) {\n compilerOptions = {\n ...compilerOptions,\n allowNonTsExtensions: true,\n };\n }\n } else {\n compilerOptions = {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n jsx: ts.JsxEmit.Preserve,\n allowJs: true,\n checkJs: true,\n allowNonTsExtensions: true,\n types: [],\n };\n rootNames = [queryFileName];\n }\n\n if (!rootNames.includes(queryFileName)) {\n rootNames.push(queryFileName);\n }\n\n const overlays = new Map();\n const virtualizationCache = new Map();\n\n function fileExistsForResolution(nextFileName) {\n return overlays.has(normalizeFileName(nextFileName)) || ts.sys.fileExists(nextFileName);\n }\n\n function getScriptKind(nextFileName) {\n const extension = /\\.((?:litsx\\.jsx)|litsx|tsx|jsx|ts|js)$/.exec(nextFileName)?.[1];\n const scriptKindName = extension ? SCRIPT_KIND_BY_EXTENSION[extension] : undefined;\n return scriptKindName ? ts.ScriptKind[scriptKindName] : undefined;\n }\n\n function getSnapshotRecord(nextFileName) {\n const normalizedFileName = normalizeFileName(nextFileName);\n const overlay = overlays.get(normalizedFileName);\n const version = overlay?.version ?? getFileVersion(nextFileName);\n const cached = virtualizationCache.get(normalizedFileName);\n\n if (cached?.version === version) {\n return cached;\n }\n\n const nextSourceText = readFileText(nextFileName, overlays);\n if (typeof nextSourceText !== \"string\") {\n virtualizationCache.delete(normalizedFileName);\n return null;\n }\n\n let virtualization = null;\n let toolingText = nextSourceText;\n\n if (isRelevantFile(nextFileName) && looksLikeLitsxJsx(nextSourceText)) {\n virtualization = createToolingVirtualLitsxSource(nextSourceText, {\n plugins: getPluginsForFile(nextFileName, languageId),\n });\n toolingText = virtualization.code;\n }\n\n const record = {\n version,\n sourceText: nextSourceText,\n toolingText,\n virtualization,\n snapshot: ts.ScriptSnapshot.fromString(toolingText),\n };\n virtualizationCache.set(normalizedFileName, record);\n return record;\n }\n\n function resolveTransparentModuleName(moduleName, containingFile) {\n if (!isPathLikeModuleName(moduleName)) {\n return null;\n }\n\n const candidateBase = path.resolve(path.dirname(containingFile), moduleName);\n for (const candidate of getTransparentResolutionCandidates(candidateBase)) {\n if (fileExistsForResolution(candidate)) {\n return createResolvedModule(ts, candidate);\n }\n }\n\n return null;\n }\n\n function resolveModule(moduleName, containingFile) {\n const resolved = ts.resolveModuleName(\n moduleName,\n containingFile,\n compilerOptions,\n {\n fileExists: fileExistsForResolution,\n readFile(nextFileName) {\n return readFileText(nextFileName, overlays);\n },\n directoryExists(nextDirName) {\n return ts.sys.directoryExists?.(nextDirName) ?? true;\n },\n getDirectories(nextDirName) {\n return ts.sys.getDirectories?.(nextDirName) ?? [];\n },\n realpath(nextFileName) {\n return ts.sys.realpath?.(nextFileName) ?? nextFileName;\n },\n },\n ).resolvedModule;\n\n return resolved ?? resolveTransparentModuleName(moduleName, containingFile);\n }\n\n const host = {\n extraFileExtensions: getExtraFileExtensions(ts),\n getCompilationSettings() {\n return compilerOptions;\n },\n getCurrentDirectory() {\n return configPath ? path.dirname(configPath) : path.dirname(fileName);\n },\n getDefaultLibFileName(optionsForLib) {\n return getDefaultLibFilePath(ts, optionsForLib);\n },\n getScriptFileNames() {\n return rootNames;\n },\n getScriptVersion(nextFileName) {\n const normalizedFileName = normalizeFileName(nextFileName);\n const overlay = overlays.get(normalizedFileName);\n return String(overlay?.version ?? getFileVersion(nextFileName));\n },\n getScriptKind,\n getScriptSnapshot(nextFileName) {\n return getSnapshotRecord(nextFileName)?.snapshot;\n },\n fileExists(nextFileName) {\n return fileExistsForResolution(nextFileName);\n },\n readFile(nextFileName) {\n return readFileText(nextFileName, overlays);\n },\n resolveModuleNames(moduleNames, containingFile) {\n return moduleNames.map((moduleName) => resolveModule(moduleName, containingFile));\n },\n resolveModuleNameLiterals(moduleLiterals, containingFile) {\n return moduleLiterals.map(({ text }) => ({ resolvedModule: resolveModule(text, containingFile) }));\n },\n readDirectory(...args) {\n return ts.sys.readDirectory(...args);\n },\n directoryExists(nextDirName) {\n return ts.sys.directoryExists?.(nextDirName) ?? true;\n },\n getDirectories(nextDirName) {\n return ts.sys.getDirectories?.(nextDirName) ?? [];\n },\n getNewLine() {\n return ts.sys.newLine;\n },\n useCaseSensitiveFileNames() {\n return ts.sys.useCaseSensitiveFileNames;\n },\n getCanonicalFileName(nextFileName) {\n return ts.sys.useCaseSensitiveFileNames\n ? nextFileName\n : nextFileName.toLowerCase();\n },\n };\n\n service = {\n rootNames,\n overlays,\n languageService: ts.createLanguageService(host, ts.createDocumentRegistry()),\n readSourceText(nextFileName) {\n return readFileText(nextFileName, overlays);\n },\n resolveModuleName(moduleName, containingFile) {\n return resolveModule(moduleName, containingFile);\n },\n getVirtualization(nextFileName) {\n return getSnapshotRecord(nextFileName)?.virtualization ?? null;\n },\n setOverlay(nextFileName, nextSourceText) {\n const normalizedFileName = normalizeFileName(nextFileName);\n const previousVersion = overlays.get(normalizedFileName)?.version ?? 0;\n overlays.set(normalizedFileName, {\n text: nextSourceText,\n version: previousVersion + 1,\n });\n if (!rootNames.includes(nextFileName)) {\n rootNames.push(nextFileName);\n }\n },\n };\n\n projectServiceCache.set(projectKey, service);\n }\n\n service.setOverlay(queryFileName, sourceText);\n service.queryFileName = queryFileName;\n return service;\n }\n\n function getDiagnostics(fileName, sourceText, languageId) {\n const service = getOrCreateProjectService(fileName, sourceText, languageId);\n const queryFileName = service.queryFileName ?? fileName;\n const virtualization = service.getVirtualization(queryFileName);\n const authoredSourceFile = ts.createSourceFile(\n fileName,\n sourceText,\n ts.ScriptTarget.Latest,\n true,\n getSourceFileScriptKind(ts, fileName, languageId),\n );\n const diagnostics = [\n ...service.languageService.getSyntacticDiagnostics(queryFileName),\n ...service.languageService.getSemanticDiagnostics(queryFileName),\n ];\n const remappedDiagnostics = diagnostics\n .map((diagnostic) => {\n if (!virtualization || typeof diagnostic.start !== \"number\") {\n return {\n ...diagnostic,\n messageText: remapMessageText(diagnostic.messageText),\n };\n }\n\n const remappedSpan = remapToolingTextSpanToOriginal(\n {\n start: diagnostic.start,\n length: diagnostic.length ?? 0,\n },\n virtualization,\n );\n\n return {\n ...diagnostic,\n start: remappedSpan.start,\n length: remappedSpan.length,\n messageText: remapMessageText(diagnostic.messageText),\n };\n })\n .filter((diagnostic) => (\n !String(diagnostic.messageText ?? \"\").includes(\"__litsx_\") &&\n !startsAtAuthoredSyntax(sourceText, diagnostic.start) &&\n !shouldSuppressCustomElementConstructorDiagnostic(ts, authoredSourceFile, diagnostic)\n ));\n\n const authoredDiagnostics = collectLitsxAuthoredDiagnostics(sourceText, ts, {\n plugins: getParserPlugins(languageId),\n });\n const seen = new Set(\n remappedDiagnostics.map((diagnostic) => `${diagnostic.code}:${diagnostic.start}:${diagnostic.length}`),\n );\n\n return [\n ...remappedDiagnostics,\n ...authoredDiagnostics.filter((diagnostic) => {\n const key = `${diagnostic.code}:${diagnostic.start}:${diagnostic.length}`;\n if (seen.has(key)) {\n return false;\n }\n seen.add(key);\n return true;\n }),\n ];\n }\n\n function getHover(fileName, sourceText, languageId, position) {\n const service = getOrCreateProjectService(fileName, sourceText, languageId);\n const queryFileName = service.queryFileName ?? fileName;\n const virtualization = service.getVirtualization(queryFileName);\n const mappedPosition = virtualization\n ? mapOriginalPositionToToolingVirtual(position, virtualization)\n : position;\n const info = service.languageService.getQuickInfoAtPosition(queryFileName, mappedPosition);\n\n const hoistInfo = inferLitsxStaticHoistInfoAtPosition(sourceText, position);\n if (hoistInfo) {\n return createHoverResult({\n start: hoistInfo.start,\n length: hoistInfo.length,\n code: `${hoistInfo.name}(...): static hoist`,\n documentation: hoistInfo.documentation,\n languageId,\n });\n }\n\n if (!info) {\n const program = service.languageService.getProgram();\n const sourceFile = program?.getSourceFile(queryFileName);\n const checker = program?.getTypeChecker();\n if (!program || !sourceFile || !checker) {\n const bindingHoverInfo = getBindingHoverInfo(\n inferLitsxAttributeInfoAtPosition(sourceText, position),\n );\n return bindingHoverInfo\n ? createHoverResult({\n start: bindingHoverInfo.start,\n length: bindingHoverInfo.length,\n code: `${bindingHoverInfo.name}: ${bindingHoverInfo.kindLabel}`,\n documentation: bindingHoverInfo.detail,\n languageId,\n })\n : null;\n }\n\n let node = findDeepestNodeAtPosition(sourceFile, mappedPosition);\n while (node) {\n const symbol = checker.getSymbolAtLocation(node) ?? null;\n const type = checker.getTypeAtLocation(node) ?? null;\n if (!type) {\n node = node.parent ?? null;\n continue;\n }\n\n const remappedNodeSpan = virtualization\n ? remapToolingTextSpanToOriginal(\n {\n start: node.getStart(sourceFile),\n length: node.getWidth(sourceFile),\n },\n virtualization,\n )\n : {\n start: position,\n length: 0,\n };\n\n return createHoverResult({\n start: remappedNodeSpan.start,\n length: remappedNodeSpan.length,\n code: `${symbol?.getName?.() ?? node.getText(sourceFile)}: ${checker.typeToString(type)}`,\n documentation: symbol\n ? normalizeEscapedNewlines(ts.displayPartsToString(symbol.getDocumentationComment(checker)))\n : \"\",\n languageId,\n });\n }\n\n const bindingHoverInfo = getBindingHoverInfo(\n inferLitsxAttributeInfoAtPosition(sourceText, position),\n );\n return bindingHoverInfo\n ? createHoverResult({\n start: bindingHoverInfo.start,\n length: bindingHoverInfo.length,\n code: `${bindingHoverInfo.name}: ${bindingHoverInfo.kindLabel}`,\n documentation: bindingHoverInfo.detail,\n languageId,\n })\n : null;\n }\n\n const remappedSpan = virtualization\n ? remapToolingTextSpanToOriginal(info.textSpan, virtualization)\n : info.textSpan;\n const displayText = (remapDisplayParts(info.displayParts) ?? [])\n .map((entry) => entry.text)\n .join(\"\");\n const documentation = (remapDocumentationParts(info.documentation) ?? [])\n .map((entry) => entry.text)\n .join(\"\");\n\n return createHoverResult({\n start: remappedSpan.start,\n length: remappedSpan.length,\n code: displayText || \"symbol\",\n documentation,\n languageId,\n });\n }\n\n function getCompletions(fileName, sourceText, languageId, position, completionKindAdapter) {\n const adaptKind = createCompletionKindAdapter(completionKindAdapter);\n const service = getOrCreateProjectService(fileName, sourceText, languageId);\n const queryFileName = service.queryFileName ?? fileName;\n const virtualization = service.getVirtualization(queryFileName);\n const mappedPosition = virtualization\n ? mapOriginalPositionToToolingVirtual(position, virtualization)\n : position;\n const completions = service.languageService.getCompletionsAtPosition(queryFileName, mappedPosition, {\n includeCompletionsForModuleExports: true,\n includeCompletionsWithInsertText: true,\n });\n const rawCompletionEntriesByName = new Map(\n (completions?.entries ?? []).map((entry) => [entry.name, entry]),\n );\n\n const context = inferLitsxAttributeCompletionContext(sourceText, position);\n const markupContext = inferLitsxMarkupCompletionContext(sourceText, position);\n const isComponentTag = /^[A-Z]/.test(markupContext?.tagName ?? \"\");\n const contextualEntries = context\n ? getLitsxAttributeCompletionNames(context).map((name) => ({\n ...getContextualCompletionEdit(name, context),\n label: name,\n kind: adaptKind(getCompletionKindToken(name), {\n source: \"litsx\",\n label: name,\n }),\n detail: \"LitSX binding\",\n documentation: `LitSX binding for <${context.tagName}>.`,\n }))\n : [];\n const componentEventEntries = getComponentEventCompletionEntries(\n service,\n ts,\n queryFileName,\n sourceText,\n position,\n adaptKind,\n ).filter((entry) => !contextualEntries.some((contextualEntry) => contextualEntry.label === entry.label));\n const componentStaticPropEntries = getComponentStaticPropCompletionEntries(\n service,\n ts,\n queryFileName,\n sourceText,\n position,\n adaptKind,\n );\n const markupEntries = markupContext && !isComponentTag\n ? getLitsxMarkupCompletionNames(markupContext).map((name) => ({\n label: name,\n kind: adaptKind(\n name.startsWith(\"@\")\n ? \"Event\"\n : name.startsWith(\".\") || name.startsWith(\"?\")\n ? \"Property\"\n : \"Property\",\n {\n source: \"litsx-markup\",\n label: name,\n },\n ),\n detail: name.startsWith(\"@\")\n ? \"LitSX event binding\"\n : name.startsWith(\".\")\n ? \"LitSX property binding\"\n : name.startsWith(\"?\")\n ? \"LitSX boolean attribute binding\"\n : \"LitSX markup attribute\",\n documentation: name.startsWith(\"@\") || name.startsWith(\".\") || name.startsWith(\"?\")\n ? `LitSX binding for <${markupContext.tagName}>.`\n : `LitSX-authored attribute for <${markupContext.tagName}>.`,\n start: markupContext.start,\n length: markupContext.length,\n }))\n : [];\n const scopePrefix = getScopeCompletionPrefix(sourceText, position);\n const jsxImportSourceEntries = markupContext\n ? []\n : getJsxImportSourceExportEntries(service, ts, scopePrefix, adaptKind, position).map((entry) => ({\n ...entry,\n additionalTextEdits: getCompletionEntryImportEdits(\n service.languageService,\n queryFileName,\n fileName,\n mappedPosition,\n rawCompletionEntriesByName.get(entry.label),\n virtualization,\n ),\n }));\n\n const mergedEntries = [\n ...contextualEntries,\n ...componentEventEntries,\n ...componentStaticPropEntries,\n ...markupEntries,\n ...jsxImportSourceEntries,\n ];\n const seen = new Set(mergedEntries.map((entry) => entry.label));\n\n for (const entry of completions?.entries ?? []) {\n if (\n decodeVirtualAttributeName(entry.name) ||\n seen.has(entry.name) ||\n isInternalCompletionName(entry.name)\n ) {\n continue;\n }\n\n if (markupContext && !isComponentTag && !isLikelyIntrinsicMarkupCompletionName(entry.name)) {\n continue;\n }\n\n if (markupContext && isComponentTag && !isLikelyComponentPropCompletionName(entry.name)) {\n continue;\n }\n\n seen.add(entry.name);\n\n const remappedSpan = virtualization && entry.replacementSpan\n ? remapToolingTextSpanToOriginal(entry.replacementSpan, virtualization)\n : entry.replacementSpan ?? { start: position, length: 0 };\n\n const kindToken = COMPLETION_KIND_BY_TS_KIND[entry.kind] ?? \"Text\";\n mergedEntries.push({\n label: entry.name,\n kind: adaptKind(kindToken, {\n source: \"typescript\",\n label: entry.name,\n tsKind: entry.kind,\n kindModifiers: entry.kindModifiers,\n }),\n detail: entry.kindModifiers || entry.kind,\n documentation: entry.source ? `From ${entry.source}` : \"TypeScript completion\",\n start: remappedSpan.start,\n length: remappedSpan.length,\n additionalTextEdits: getCompletionEntryImportEdits(\n service.languageService,\n queryFileName,\n fileName,\n mappedPosition,\n entry,\n virtualization,\n ),\n });\n }\n\n if (mergedEntries.length === (contextualEntries.length + componentEventEntries.length + componentStaticPropEntries.length)) {\n const program = service.languageService.getProgram();\n const sourceFile = program?.getSourceFile(queryFileName);\n const checker = program?.getTypeChecker();\n const node = sourceFile ? findDeepestNodeAtPosition(sourceFile, mappedPosition) : null;\n const prefix = scopePrefix;\n\n if (node && checker && !markupContext) {\n const scopeSymbols = checker.getSymbolsInScope(\n node,\n ts.SymbolFlags.Value | ts.SymbolFlags.Type | ts.SymbolFlags.Namespace | ts.SymbolFlags.Alias,\n );\n\n for (const symbol of scopeSymbols) {\n const name = symbol.getName?.();\n if (!name || isInternalCompletionName(name) || seen.has(name) || !name.startsWith(prefix)) {\n continue;\n }\n\n seen.add(name);\n const kindToken = getSymbolCompletionKind(ts, symbol);\n mergedEntries.push({\n label: name,\n kind: adaptKind(kindToken, {\n source: \"typescript-scope\",\n label: name,\n }),\n detail: \"TypeScript symbol\",\n documentation: \"Project-backed TypeScript completion\",\n start: position - prefix.length,\n length: prefix.length,\n });\n }\n }\n }\n\n if (markupContext) {\n return mergedEntries;\n }\n\n return mergedEntries.sort((left, right) => (\n compareCompletionEntries(left, right, scopePrefix)\n ));\n }\n\n log(\"LitSX editor session initialized\");\n\n return {\n typescript: ts,\n bundledLibDir,\n getDiagnostics,\n getHover,\n getCompletions,\n clear() {\n projectServiceCache.clear();\n },\n };\n}\n\nexport {\n createLitsxEditorSession,\n};\n"],"names":["remapVirtualText","virtualization","remapToolingTextSpanToOriginal","inferLitsxAttributeCompletionContext","inferLitsxComponentEventNames","inferLitsxMarkupCompletionContext","inferLitsxComponentPropNames","ts","defaultTs","looksLikeLitsxJsx","createToolingVirtualLitsxSource","collectLitsxAuthoredDiagnostics","mapOriginalPositionToToolingVirtual","inferLitsxStaticHoistInfoAtPosition","inferLitsxAttributeInfoAtPosition","getLitsxAttributeCompletionNames","getLitsxMarkupCompletionNames","decodeVirtualAttributeName"],"mappings":"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"}
package/dist/index.cjs CHANGED
@@ -51,6 +51,23 @@ function remapDisplayParts(parts) {
51
51
  }));
52
52
  }
53
53
 
54
+ function normalizeEscapedNewlines(text) {
55
+ if (typeof text !== "string" || !text.includes("\\")) {
56
+ return text;
57
+ }
58
+
59
+ return text
60
+ .replace(/\\r\\n/g, "\r\n")
61
+ .replace(/\\n/g, "\n");
62
+ }
63
+
64
+ function remapDocumentationParts(parts) {
65
+ return parts?.map((part) => ({
66
+ ...part,
67
+ text: normalizeEscapedNewlines(authoredSemantics.remapVirtualText(part.text)),
68
+ }));
69
+ }
70
+
54
71
  function remapMessageText(messageText) {
55
72
  if (typeof messageText === "string") {
56
73
  return authoredSemantics.remapVirtualText(messageText);
@@ -437,7 +454,7 @@ function wrapQuickInfo(method, getVirtualization) {
437
454
  ...info,
438
455
  textSpan: virtualization.remapToolingTextSpanToOriginal(info.textSpan, virtualization$1),
439
456
  displayParts: remappedDisplayParts,
440
- documentation: remapDisplayParts(info.documentation),
457
+ documentation: remapDocumentationParts(info.documentation),
441
458
  };
442
459
  };
443
460
  }
@@ -588,7 +605,7 @@ function wrapCompletionEntryDetails(method, getVirtualization) {
588
605
  return {
589
606
  ...details,
590
607
  displayParts: remapDisplayParts(details.displayParts),
591
- documentation: remapDisplayParts(details.documentation),
608
+ documentation: remapDocumentationParts(details.documentation),
592
609
  };
593
610
  };
594
611
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/index.js"],"sourcesContent":["import fs from \"fs\";\n\nimport {\n collectLitsxAuthoredDiagnostics,\n createToolingVirtualLitsxSource,\n decodeVirtualAttributeName,\n getLitsxAttributeCompletionNames,\n inferLitsxAttributeInfoAtPosition,\n inferLitsxStaticHoistInfoAtPosition,\n inferLitsxAttributeCompletionContext,\n inferLitsxMarkupCompletionContext,\n looksLikeLitsxJsx,\n mapOriginalPositionToToolingVirtual,\n remapVirtualText,\n remapToolingTextSpanToOriginal,\n} from \"./virtualization.js\";\nexport { createLitsxTypecheckSession, runLitsxTypecheck } from \"./typecheck.js\";\n\nconst PROFILE_ENABLED = process.env.LITSX_PROFILE === \"1\";\nconst EXTERNAL_FILES_CACHE = new WeakMap();\n\nfunction profilePhase(namespace, name, callback) {\n if (!PROFILE_ENABLED) {\n return callback();\n }\n\n const start = performance.now();\n try {\n return callback();\n } finally {\n globalThis.__litsxProfileEvents ??= [];\n globalThis.__litsxProfileEvents.push({\n namespace,\n name,\n durationMs: performance.now() - start,\n });\n }\n}\n\nfunction isRelevantFile(fileName) {\n return /\\.(jsx|tsx|litsx)$/.test(fileName) || fileName.endsWith(\".litsx.jsx\");\n}\n\nfunction readSnapshotText(snapshot) {\n return snapshot.getText(0, snapshot.getLength());\n}\n\nfunction createSnapshot(ts, sourceText) {\n return ts.ScriptSnapshot.fromString(sourceText);\n}\n\nfunction remapDisplayParts(parts) {\n return parts?.map((part) => ({\n ...part,\n text: remapVirtualText(part.text),\n }));\n}\n\nfunction remapMessageText(messageText) {\n if (typeof messageText === \"string\") {\n return remapVirtualText(messageText);\n }\n\n if (!messageText || typeof messageText !== \"object\") {\n return messageText;\n }\n\n return {\n ...messageText,\n messageText: remapMessageText(messageText.messageText),\n next: messageText.next?.map(remapMessageText),\n };\n}\n\nfunction remapNumericTextSpan(start, length, virtualization) {\n if (typeof start !== \"number\") {\n return null;\n }\n\n return remapToolingTextSpanToOriginal(\n { start, length: length ?? 0 },\n virtualization,\n );\n}\n\nfunction remapTextSpanField(record, fieldName, virtualization) {\n const span = record?.[fieldName];\n if (!span) {\n return record;\n }\n\n return {\n ...record,\n [fieldName]: remapToolingTextSpanToOriginal(span, virtualization),\n };\n}\n\nfunction remapFileSpanRecord(record, getVirtualization) {\n const virtualization = record?.fileName\n ? getVirtualization(record.fileName)\n : null;\n\n if (!virtualization) {\n return record;\n }\n\n let remapped = {\n ...record,\n textSpan: record.textSpan\n ? remapToolingTextSpanToOriginal(record.textSpan, virtualization)\n : record.textSpan,\n };\n\n remapped = remapTextSpanField(remapped, \"contextSpan\", virtualization);\n remapped = remapTextSpanField(remapped, \"originalTextSpan\", virtualization);\n\n return remapped;\n}\n\nfunction remapRelatedInformation(info, getVirtualization, fallbackVirtualization) {\n const virtualization = info.file?.fileName\n ? getVirtualization(info.file.fileName) ?? fallbackVirtualization\n : fallbackVirtualization;\n\n if (!virtualization) {\n return info;\n }\n\n const remappedStartLength = remapNumericTextSpan(info.start, info.length, virtualization);\n const remappedSpan = info.span\n ? remapToolingTextSpanToOriginal(info.span, virtualization)\n : info.span;\n\n return {\n ...info,\n ...(remappedStartLength\n ? {\n start: remappedStartLength.start,\n length: remappedStartLength.length,\n }\n : {}),\n span: remappedSpan,\n messageText: remapMessageText(info.messageText),\n };\n}\n\nfunction wrapDiagnostics(method, getVirtualization) {\n return (fileName) => {\n const diagnostics = method(fileName) ?? [];\n const virtualization = getVirtualization(fileName);\n\n if (!virtualization) {\n return diagnostics;\n }\n\n return diagnostics.map((diagnostic) => {\n const remappedSpan = remapNumericTextSpan(\n diagnostic.start,\n diagnostic.length,\n virtualization,\n );\n\n return {\n ...diagnostic,\n ...(remappedSpan\n ? remappedSpan\n : {\n start: diagnostic.start,\n length: diagnostic.length,\n }),\n messageText: remapMessageText(diagnostic.messageText),\n relatedInformation: diagnostic.relatedInformation?.map((info) => (\n remapRelatedInformation(info, getVirtualization, virtualization)\n )),\n };\n });\n };\n}\n\nfunction wrapSemanticDiagnostics(method, getVirtualization, getAuthoredDiagnostics) {\n return (fileName) => {\n const diagnostics = wrapDiagnostics(method, getVirtualization)(fileName);\n const authoredDiagnostics = getAuthoredDiagnostics(fileName);\n\n if (!authoredDiagnostics?.length) {\n return diagnostics;\n }\n\n const warningCategory = 0;\n const authoredErrors = authoredDiagnostics.filter(\n (diagnostic) => diagnostic.category !== warningCategory,\n );\n\n if (authoredErrors.length === 0) {\n return diagnostics;\n }\n\n return [...diagnostics, ...authoredErrors];\n };\n}\n\nfunction wrapSyntacticDiagnostics(method, getVirtualization, getAuthoredDiagnostics, ts) {\n return (fileName) => {\n const diagnostics = wrapDiagnostics(method, getVirtualization)(fileName);\n const virtualization = getVirtualization(fileName);\n\n if (\n !(/\\.[cm]?[jt]sx$/.test(fileName) || fileName.endsWith(\".litsx\") || fileName.endsWith(\".litsx.jsx\")) ||\n !virtualization\n ) {\n return diagnostics;\n }\n\n const authoredDiagnostics = getAuthoredDiagnostics(fileName);\n if (!authoredDiagnostics?.length) {\n return fileName.endsWith(\".jsx\") ? [] : diagnostics;\n }\n\n // TypeScript's JSX parser does not understand LitSX-authored syntax in\n // plain .jsx files, so its raw syntactic diagnostics are mostly parser\n // cascades. Replace them wholesale with authored diagnostics instead.\n if (fileName.endsWith(\".jsx\")) {\n const seen = new Set();\n return authoredDiagnostics.filter((diagnostic) => {\n const key = `${diagnostic.code}:${diagnostic.start}:${diagnostic.length}`;\n if (seen.has(key)) {\n return false;\n }\n seen.add(key);\n return true;\n });\n }\n\n const warningCategory = ts?.DiagnosticCategory?.Warning ?? 0;\n const authoredWarnings = authoredDiagnostics.filter(\n (diagnostic) => diagnostic.category === warningCategory,\n );\n\n if (authoredWarnings.length === 0) {\n return diagnostics;\n }\n\n const seen = new Set(\n diagnostics.map(\n (diagnostic) => `${diagnostic.code}:${diagnostic.start}:${diagnostic.length}`,\n ),\n );\n\n return [\n ...diagnostics,\n ...authoredWarnings.filter((diagnostic) => {\n const key = `${diagnostic.code}:${diagnostic.start}:${diagnostic.length}`;\n if (seen.has(key)) {\n return false;\n }\n seen.add(key);\n return true;\n }),\n ];\n };\n}\n\nfunction wrapDefinitionAtPosition(method, getVirtualization) {\n return (fileName, position) => {\n const virtualization = getVirtualization(fileName);\n const mappedPosition = virtualization\n ? mapOriginalPositionToToolingVirtual(position, virtualization)\n : position;\n const definitions = method?.(fileName, mappedPosition);\n\n if (!definitions?.length) {\n return definitions;\n }\n\n return definitions.map((definition) => remapFileSpanRecord(definition, getVirtualization));\n };\n}\n\nfunction wrapDefinitionAndBoundSpan(method, getVirtualization) {\n return (fileName, position) => {\n const virtualization = getVirtualization(fileName);\n const mappedPosition = virtualization\n ? mapOriginalPositionToToolingVirtual(position, virtualization)\n : position;\n const result = method?.(fileName, mappedPosition);\n\n if (!result) {\n return result;\n }\n\n return {\n ...result,\n textSpan: virtualization && result.textSpan\n ? remapToolingTextSpanToOriginal(result.textSpan, virtualization)\n : result.textSpan,\n definitions: result.definitions?.map((definition) => remapFileSpanRecord(definition, getVirtualization)),\n };\n };\n}\n\nfunction wrapReferences(method, getVirtualization) {\n return (fileName, position) => {\n const virtualization = getVirtualization(fileName);\n const mappedPosition = virtualization\n ? mapOriginalPositionToToolingVirtual(position, virtualization)\n : position;\n const references = method?.(fileName, mappedPosition);\n\n if (!references?.length) {\n return references;\n }\n\n return references.map((reference) => remapFileSpanRecord(reference, getVirtualization));\n };\n}\n\nfunction wrapRenameInfo(method, getVirtualization) {\n return (fileName, position, ...rest) => {\n const virtualization = getVirtualization(fileName);\n const mappedPosition = virtualization\n ? mapOriginalPositionToToolingVirtual(position, virtualization)\n : position;\n const info = method?.(fileName, mappedPosition, ...rest);\n\n if (!info || !virtualization || !info.triggerSpan) {\n return info;\n }\n\n return {\n ...info,\n triggerSpan: remapToolingTextSpanToOriginal(info.triggerSpan, virtualization),\n };\n };\n}\n\nfunction wrapRenameLocations(method, getVirtualization) {\n return (fileName, position, ...rest) => {\n const virtualization = getVirtualization(fileName);\n const mappedPosition = virtualization\n ? mapOriginalPositionToToolingVirtual(position, virtualization)\n : position;\n const locations = method?.(fileName, mappedPosition, ...rest);\n\n if (!locations?.length) {\n return locations;\n }\n\n return locations.map((location) => remapFileSpanRecord(location, getVirtualization));\n };\n}\n\nfunction wrapQuickInfo(method, getVirtualization) {\n return (fileName, position) => {\n const virtualization = getVirtualization(fileName);\n const mappedPosition = virtualization\n ? mapOriginalPositionToToolingVirtual(position, virtualization)\n : position;\n const info = method(fileName, mappedPosition);\n\n if (!virtualization) {\n return info;\n }\n\n function createHoistQuickInfo(hoistInfo, fallbackSpan = null) {\n return {\n kind: \"function\",\n kindModifiers: \"\",\n textSpan: hoistInfo\n ? {\n start: hoistInfo.start,\n length: hoistInfo.length,\n }\n : fallbackSpan,\n displayParts: [\n { text: hoistInfo?.name ?? \"static hoist\", kind: \"functionName\" },\n { text: \"(...)\", kind: \"punctuation\" },\n { text: \": \", kind: \"punctuation\" },\n { text: \"static hoist\", kind: \"keyword\" },\n ],\n documentation: [\n {\n text: hoistInfo?.documentation ?? \"LitSX static hoist.\",\n kind: \"text\",\n },\n ],\n };\n }\n\n if (!info) {\n const hoistInfo = inferLitsxStaticHoistInfoAtPosition(virtualization.sourceText, position);\n if (hoistInfo) {\n return createHoistQuickInfo(hoistInfo);\n }\n\n const attributeInfo = inferLitsxAttributeInfoAtPosition(virtualization.sourceText, position);\n if (!attributeInfo) {\n return info;\n }\n\n let kindLabel = \"binding\";\n let detail = \"LitSX binding\";\n\n if (attributeInfo.prefix === \"@\") {\n kindLabel = \"event\";\n detail = \"LitSX event listener binding\";\n } else if (attributeInfo.prefix === \".\") {\n kindLabel = \"property\";\n detail = \"LitSX property binding\";\n } else if (attributeInfo.prefix === \"?\") {\n kindLabel = \"boolean\";\n detail = \"LitSX boolean attribute binding\";\n }\n\n return {\n kind: \"property\",\n kindModifiers: \"\",\n textSpan: {\n start: attributeInfo.start,\n length: attributeInfo.length,\n },\n displayParts: [\n { text: attributeInfo.name, kind: \"propertyName\" },\n { text: \": \", kind: \"punctuation\" },\n { text: kindLabel, kind: \"keyword\" },\n ],\n documentation: [\n {\n text: `${detail} for <${attributeInfo.tagName}>.`,\n kind: \"text\",\n },\n ],\n };\n }\n\n const hoistInfo = inferLitsxStaticHoistInfoAtPosition(virtualization.sourceText, position);\n if (hoistInfo) {\n return createHoistQuickInfo(hoistInfo);\n }\n\n const remappedDisplayParts = remapDisplayParts(info.displayParts);\n return {\n ...info,\n textSpan: remapToolingTextSpanToOriginal(info.textSpan, virtualization),\n displayParts: remappedDisplayParts,\n documentation: remapDisplayParts(info.documentation),\n };\n };\n}\n\nfunction getLitsxCompletionMetadata(name) {\n if (typeof name !== \"string\" || name.length < 2) {\n return null;\n }\n\n if (name.startsWith(\"@\")) {\n return {\n kind: \"memberVariableElement\",\n kindLabel: \"event\",\n detail: \"LitSX event listener binding\",\n };\n }\n\n if (name.startsWith(\".\")) {\n return {\n kind: \"property\",\n kindLabel: \"property\",\n detail: \"LitSX property binding\",\n };\n }\n\n if (name.startsWith(\"?\")) {\n return {\n kind: \"property\",\n kindLabel: \"boolean\",\n detail: \"LitSX boolean attribute binding\",\n };\n }\n\n return null;\n}\n\nfunction createContextualReplacementSpan(context) {\n if (!context) {\n return undefined;\n }\n\n return {\n start: context.start + 1,\n length: Math.max(context.length - 1, 0),\n };\n}\n\nfunction createContextualCompletionEntries(virtualization, position) {\n if (!virtualization) {\n return [];\n }\n\n const context = inferLitsxAttributeCompletionContext(virtualization.sourceText, position);\n\n return getLitsxAttributeCompletionNames(context).map((name, index) => {\n const metadata = getLitsxCompletionMetadata(name);\n\n return {\n name,\n kind: metadata?.kind ?? \"property\",\n kindModifiers: \"\",\n sortText: `0${index}`,\n insertText: name.slice(1),\n filterText: name.slice(1),\n replacementSpan: createContextualReplacementSpan(context),\n source: \"LitSX\",\n data: {\n __litsxContextualCompletion: true,\n },\n };\n });\n}\n\nfunction wrapCompletions(method, getVirtualization) {\n return (fileName, position, options, formattingSettings) => {\n const virtualization = getVirtualization(fileName);\n const mappedPosition = virtualization\n ? mapOriginalPositionToToolingVirtual(position, virtualization)\n : position;\n const completions = method(fileName, mappedPosition, options, formattingSettings);\n const contextualEntries = createContextualCompletionEntries(virtualization, position);\n\n const filteredEntries = (completions?.entries ?? []).filter(\n (entry) => !decodeVirtualAttributeName(entry.name),\n );\n const mergedEntries = [...contextualEntries];\n const seenNames = new Set(contextualEntries.map((entry) => entry.name));\n\n for (const entry of filteredEntries) {\n if (seenNames.has(entry.name)) continue;\n seenNames.add(entry.name);\n mergedEntries.push(entry);\n }\n\n if (!completions && mergedEntries.length === 0) {\n return completions;\n }\n\n return {\n ...(completions ?? {}),\n entries: mergedEntries,\n };\n };\n}\n\nfunction wrapCompletionEntryDetails(method, getVirtualization) {\n return (fileName, position, entryName, ...rest) => {\n const virtualization = getVirtualization(fileName);\n const metadata = getLitsxCompletionMetadata(entryName);\n\n if (virtualization && metadata) {\n const context = inferLitsxAttributeCompletionContext(virtualization.sourceText, position);\n if (context && getLitsxAttributeCompletionNames(context).includes(entryName)) {\n return {\n name: entryName,\n kind: metadata.kind,\n kindModifiers: \"\",\n displayParts: [\n { text: entryName, kind: \"propertyName\" },\n { text: \": \", kind: \"punctuation\" },\n { text: metadata.kindLabel, kind: \"keyword\" },\n ],\n documentation: [\n {\n text: `${metadata.detail} for <${context.tagName}>.`,\n kind: \"text\",\n },\n ],\n tags: [],\n codeActions: [],\n };\n }\n }\n\n if (typeof method !== \"function\") {\n return undefined;\n }\n\n const mappedPosition = virtualization\n ? mapOriginalPositionToToolingVirtual(position, virtualization)\n : position;\n const details = method(fileName, mappedPosition, entryName, ...rest);\n\n if (!details || !virtualization) {\n return details;\n }\n\n return {\n ...details,\n displayParts: remapDisplayParts(details.displayParts),\n documentation: remapDisplayParts(details.documentation),\n };\n };\n}\n\nexport default function init(modules) {\n const ts = modules.typescript;\n\n return {\n create(info) {\n const host = info.languageServiceHost;\n\n if (!host || typeof host.getScriptSnapshot !== \"function\") {\n return info.languageService;\n }\n\n const originalGetScriptSnapshot = host.getScriptSnapshot.bind(host);\n const virtualizations = new Map();\n\n function getPluginsForFile(fileName) {\n return (fileName.endsWith(\".tsx\") || fileName.endsWith(\".litsx\")) ? [\"typescript\"] : [];\n }\n\n const originalGetScriptKind = typeof host.getScriptKind === \"function\"\n ? host.getScriptKind.bind(host)\n : null;\n\n host.getScriptKind = (fileName) => {\n if (fileName.endsWith(\".litsx\")) {\n return ts.ScriptKind.TSX;\n }\n\n if (fileName.endsWith(\".litsx.jsx\")) {\n return ts.ScriptKind.JSX;\n }\n\n return originalGetScriptKind?.(fileName);\n };\n\n function getCachedRecord(fileName) {\n return virtualizations.get(fileName) ?? null;\n }\n\n function clearRecord(fileName) {\n virtualizations.delete(fileName);\n }\n\n function getOrBuildVirtualizationRecord(fileName) {\n const snapshot = originalGetScriptSnapshot(fileName);\n\n if (!snapshot || !isRelevantFile(fileName)) {\n clearRecord(fileName);\n return {\n snapshot,\n record: null,\n };\n }\n\n const cachedRecord = getCachedRecord(fileName);\n if (cachedRecord?.snapshot === snapshot) {\n return {\n snapshot,\n record: cachedRecord,\n };\n }\n\n const sourceText = readSnapshotText(snapshot);\n if (cachedRecord?.sourceText === sourceText) {\n cachedRecord.snapshot = snapshot;\n return {\n snapshot,\n record: cachedRecord,\n };\n }\n\n if (!looksLikeLitsxJsx(sourceText)) {\n clearRecord(fileName);\n return {\n snapshot,\n record: null,\n };\n }\n\n const parserPlugins = getPluginsForFile(fileName);\n const virtualization = profilePhase(\n \"typescript-plugin\",\n \"tooling-virtualization\",\n () => createToolingVirtualLitsxSource(sourceText, {\n plugins: parserPlugins,\n }),\n );\n\n if (virtualization.code === sourceText) {\n clearRecord(fileName);\n return {\n snapshot,\n record: null,\n };\n }\n\n const record = {\n ...virtualization,\n sourceText,\n parserPlugins,\n snapshot,\n virtualizedSnapshot: null,\n authoredDiagnostics: null,\n authoredDiagnosticsReady: false,\n };\n\n virtualizations.set(fileName, record);\n\n return {\n snapshot,\n record,\n };\n }\n\n function getVirtualization(fileName) {\n return getOrBuildVirtualizationRecord(fileName).record;\n }\n\n function getAuthoredDiagnostics(fileName) {\n const record = getVirtualization(fileName);\n if (!record) {\n return null;\n }\n\n if (!record.authoredDiagnosticsReady) {\n record.authoredDiagnostics = profilePhase(\n \"typescript-plugin\",\n \"authored-diagnostics\",\n () => collectLitsxAuthoredDiagnostics(record.sourceText, ts, {\n plugins: record.parserPlugins,\n }),\n );\n record.authoredDiagnosticsReady = true;\n }\n\n return record.authoredDiagnostics;\n }\n\n host.getScriptSnapshot = (fileName) => {\n const { snapshot, record } = getOrBuildVirtualizationRecord(fileName);\n\n if (!record) {\n return snapshot;\n }\n\n if (!record.virtualizedSnapshot) {\n record.virtualizedSnapshot = createSnapshot(ts, record.code);\n }\n\n return record.virtualizedSnapshot;\n };\n\n const languageService = info.languageService;\n\n return {\n ...languageService,\n getSyntacticDiagnostics: wrapSyntacticDiagnostics(\n languageService.getSyntacticDiagnostics.bind(languageService),\n getVirtualization,\n getAuthoredDiagnostics,\n ts,\n ),\n getSemanticDiagnostics: wrapSemanticDiagnostics(\n languageService.getSemanticDiagnostics.bind(languageService),\n getVirtualization,\n getAuthoredDiagnostics,\n ),\n getSuggestionDiagnostics: wrapDiagnostics(\n languageService.getSuggestionDiagnostics.bind(languageService),\n getVirtualization,\n ),\n getQuickInfoAtPosition: wrapQuickInfo(\n languageService.getQuickInfoAtPosition.bind(languageService),\n getVirtualization,\n ),\n getCompletionsAtPosition: wrapCompletions(\n languageService.getCompletionsAtPosition.bind(languageService),\n getVirtualization,\n ),\n getCompletionEntryDetails: wrapCompletionEntryDetails(\n languageService.getCompletionEntryDetails?.bind(languageService),\n getVirtualization,\n ),\n getDefinitionAtPosition: wrapDefinitionAtPosition(\n languageService.getDefinitionAtPosition?.bind(languageService),\n getVirtualization,\n ),\n getDefinitionAndBoundSpan: wrapDefinitionAndBoundSpan(\n languageService.getDefinitionAndBoundSpan?.bind(languageService),\n getVirtualization,\n ),\n getReferencesAtPosition: wrapReferences(\n languageService.getReferencesAtPosition?.bind(languageService),\n getVirtualization,\n ),\n getRenameInfo: wrapRenameInfo(\n languageService.getRenameInfo?.bind(languageService),\n getVirtualization,\n ),\n findRenameLocations: wrapRenameLocations(\n languageService.findRenameLocations?.bind(languageService),\n getVirtualization,\n ),\n };\n },\n\n getExternalFiles(project) {\n const fileNames = project.getFileNames?.() ?? [];\n const projectVersion = project.getProjectVersion?.() ?? \"\";\n const cacheKey = `${projectVersion}:${fileNames.join(\"\\0\")}`;\n const cached = EXTERNAL_FILES_CACHE.get(project);\n if (cached?.cacheKey === cacheKey) {\n return cached.result;\n }\n\n const result = fileNames.filter((fileName) => {\n if (!isRelevantFile(fileName) || !fs.existsSync(fileName)) {\n return false;\n }\n\n const sourceText = fs.readFileSync(fileName, \"utf8\");\n return looksLikeLitsxJsx(sourceText);\n });\n EXTERNAL_FILES_CACHE.set(project, { cacheKey, result });\n return result;\n },\n };\n}\n\nexport {\n collectLitsxAuthoredDiagnostics,\n createVirtualLitsxJsxSource,\n createToolingVirtualLitsxSource,\n decodeVirtualAttributeName,\n getLitsxAttributeCompletionNames,\n inferLitsxAttributeInfoAtPosition,\n inferLitsxAttributeCompletionContext,\n inferLitsxMarkupCompletionContext,\n looksLikeLitsxJsx,\n mapOriginalPositionToVirtual,\n mapOriginalPositionToToolingVirtual,\n remapVirtualText,\n remapTextSpanToOriginal,\n remapToolingTextSpanToOriginal,\n} from \"./virtualization.js\";\n"],"names":["remapVirtualText","virtualization","remapToolingTextSpanToOriginal","mapOriginalPositionToToolingVirtual","inferLitsxStaticHoistInfoAtPosition","inferLitsxAttributeInfoAtPosition","inferLitsxAttributeCompletionContext","getLitsxAttributeCompletionNames","decodeVirtualAttributeName","looksLikeLitsxJsx","createToolingVirtualLitsxSource","collectLitsxAuthoredDiagnostics"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/index.js"],"sourcesContent":["import fs from \"fs\";\n\nimport {\n collectLitsxAuthoredDiagnostics,\n createToolingVirtualLitsxSource,\n decodeVirtualAttributeName,\n getLitsxAttributeCompletionNames,\n inferLitsxAttributeInfoAtPosition,\n inferLitsxStaticHoistInfoAtPosition,\n inferLitsxAttributeCompletionContext,\n inferLitsxMarkupCompletionContext,\n looksLikeLitsxJsx,\n mapOriginalPositionToToolingVirtual,\n remapVirtualText,\n remapToolingTextSpanToOriginal,\n} from \"./virtualization.js\";\nexport { createLitsxTypecheckSession, runLitsxTypecheck } from \"./typecheck.js\";\n\nconst PROFILE_ENABLED = process.env.LITSX_PROFILE === \"1\";\nconst EXTERNAL_FILES_CACHE = new WeakMap();\n\nfunction profilePhase(namespace, name, callback) {\n if (!PROFILE_ENABLED) {\n return callback();\n }\n\n const start = performance.now();\n try {\n return callback();\n } finally {\n globalThis.__litsxProfileEvents ??= [];\n globalThis.__litsxProfileEvents.push({\n namespace,\n name,\n durationMs: performance.now() - start,\n });\n }\n}\n\nfunction isRelevantFile(fileName) {\n return /\\.(jsx|tsx|litsx)$/.test(fileName) || fileName.endsWith(\".litsx.jsx\");\n}\n\nfunction readSnapshotText(snapshot) {\n return snapshot.getText(0, snapshot.getLength());\n}\n\nfunction createSnapshot(ts, sourceText) {\n return ts.ScriptSnapshot.fromString(sourceText);\n}\n\nfunction remapDisplayParts(parts) {\n return parts?.map((part) => ({\n ...part,\n text: remapVirtualText(part.text),\n }));\n}\n\nfunction normalizeEscapedNewlines(text) {\n if (typeof text !== \"string\" || !text.includes(\"\\\\\")) {\n return text;\n }\n\n return text\n .replace(/\\\\r\\\\n/g, \"\\r\\n\")\n .replace(/\\\\n/g, \"\\n\");\n}\n\nfunction remapDocumentationParts(parts) {\n return parts?.map((part) => ({\n ...part,\n text: normalizeEscapedNewlines(remapVirtualText(part.text)),\n }));\n}\n\nfunction remapMessageText(messageText) {\n if (typeof messageText === \"string\") {\n return remapVirtualText(messageText);\n }\n\n if (!messageText || typeof messageText !== \"object\") {\n return messageText;\n }\n\n return {\n ...messageText,\n messageText: remapMessageText(messageText.messageText),\n next: messageText.next?.map(remapMessageText),\n };\n}\n\nfunction remapNumericTextSpan(start, length, virtualization) {\n if (typeof start !== \"number\") {\n return null;\n }\n\n return remapToolingTextSpanToOriginal(\n { start, length: length ?? 0 },\n virtualization,\n );\n}\n\nfunction remapTextSpanField(record, fieldName, virtualization) {\n const span = record?.[fieldName];\n if (!span) {\n return record;\n }\n\n return {\n ...record,\n [fieldName]: remapToolingTextSpanToOriginal(span, virtualization),\n };\n}\n\nfunction remapFileSpanRecord(record, getVirtualization) {\n const virtualization = record?.fileName\n ? getVirtualization(record.fileName)\n : null;\n\n if (!virtualization) {\n return record;\n }\n\n let remapped = {\n ...record,\n textSpan: record.textSpan\n ? remapToolingTextSpanToOriginal(record.textSpan, virtualization)\n : record.textSpan,\n };\n\n remapped = remapTextSpanField(remapped, \"contextSpan\", virtualization);\n remapped = remapTextSpanField(remapped, \"originalTextSpan\", virtualization);\n\n return remapped;\n}\n\nfunction remapRelatedInformation(info, getVirtualization, fallbackVirtualization) {\n const virtualization = info.file?.fileName\n ? getVirtualization(info.file.fileName) ?? fallbackVirtualization\n : fallbackVirtualization;\n\n if (!virtualization) {\n return info;\n }\n\n const remappedStartLength = remapNumericTextSpan(info.start, info.length, virtualization);\n const remappedSpan = info.span\n ? remapToolingTextSpanToOriginal(info.span, virtualization)\n : info.span;\n\n return {\n ...info,\n ...(remappedStartLength\n ? {\n start: remappedStartLength.start,\n length: remappedStartLength.length,\n }\n : {}),\n span: remappedSpan,\n messageText: remapMessageText(info.messageText),\n };\n}\n\nfunction wrapDiagnostics(method, getVirtualization) {\n return (fileName) => {\n const diagnostics = method(fileName) ?? [];\n const virtualization = getVirtualization(fileName);\n\n if (!virtualization) {\n return diagnostics;\n }\n\n return diagnostics.map((diagnostic) => {\n const remappedSpan = remapNumericTextSpan(\n diagnostic.start,\n diagnostic.length,\n virtualization,\n );\n\n return {\n ...diagnostic,\n ...(remappedSpan\n ? remappedSpan\n : {\n start: diagnostic.start,\n length: diagnostic.length,\n }),\n messageText: remapMessageText(diagnostic.messageText),\n relatedInformation: diagnostic.relatedInformation?.map((info) => (\n remapRelatedInformation(info, getVirtualization, virtualization)\n )),\n };\n });\n };\n}\n\nfunction wrapSemanticDiagnostics(method, getVirtualization, getAuthoredDiagnostics) {\n return (fileName) => {\n const diagnostics = wrapDiagnostics(method, getVirtualization)(fileName);\n const authoredDiagnostics = getAuthoredDiagnostics(fileName);\n\n if (!authoredDiagnostics?.length) {\n return diagnostics;\n }\n\n const warningCategory = 0;\n const authoredErrors = authoredDiagnostics.filter(\n (diagnostic) => diagnostic.category !== warningCategory,\n );\n\n if (authoredErrors.length === 0) {\n return diagnostics;\n }\n\n return [...diagnostics, ...authoredErrors];\n };\n}\n\nfunction wrapSyntacticDiagnostics(method, getVirtualization, getAuthoredDiagnostics, ts) {\n return (fileName) => {\n const diagnostics = wrapDiagnostics(method, getVirtualization)(fileName);\n const virtualization = getVirtualization(fileName);\n\n if (\n !(/\\.[cm]?[jt]sx$/.test(fileName) || fileName.endsWith(\".litsx\") || fileName.endsWith(\".litsx.jsx\")) ||\n !virtualization\n ) {\n return diagnostics;\n }\n\n const authoredDiagnostics = getAuthoredDiagnostics(fileName);\n if (!authoredDiagnostics?.length) {\n return fileName.endsWith(\".jsx\") ? [] : diagnostics;\n }\n\n // TypeScript's JSX parser does not understand LitSX-authored syntax in\n // plain .jsx files, so its raw syntactic diagnostics are mostly parser\n // cascades. Replace them wholesale with authored diagnostics instead.\n if (fileName.endsWith(\".jsx\")) {\n const seen = new Set();\n return authoredDiagnostics.filter((diagnostic) => {\n const key = `${diagnostic.code}:${diagnostic.start}:${diagnostic.length}`;\n if (seen.has(key)) {\n return false;\n }\n seen.add(key);\n return true;\n });\n }\n\n const warningCategory = ts?.DiagnosticCategory?.Warning ?? 0;\n const authoredWarnings = authoredDiagnostics.filter(\n (diagnostic) => diagnostic.category === warningCategory,\n );\n\n if (authoredWarnings.length === 0) {\n return diagnostics;\n }\n\n const seen = new Set(\n diagnostics.map(\n (diagnostic) => `${diagnostic.code}:${diagnostic.start}:${diagnostic.length}`,\n ),\n );\n\n return [\n ...diagnostics,\n ...authoredWarnings.filter((diagnostic) => {\n const key = `${diagnostic.code}:${diagnostic.start}:${diagnostic.length}`;\n if (seen.has(key)) {\n return false;\n }\n seen.add(key);\n return true;\n }),\n ];\n };\n}\n\nfunction wrapDefinitionAtPosition(method, getVirtualization) {\n return (fileName, position) => {\n const virtualization = getVirtualization(fileName);\n const mappedPosition = virtualization\n ? mapOriginalPositionToToolingVirtual(position, virtualization)\n : position;\n const definitions = method?.(fileName, mappedPosition);\n\n if (!definitions?.length) {\n return definitions;\n }\n\n return definitions.map((definition) => remapFileSpanRecord(definition, getVirtualization));\n };\n}\n\nfunction wrapDefinitionAndBoundSpan(method, getVirtualization) {\n return (fileName, position) => {\n const virtualization = getVirtualization(fileName);\n const mappedPosition = virtualization\n ? mapOriginalPositionToToolingVirtual(position, virtualization)\n : position;\n const result = method?.(fileName, mappedPosition);\n\n if (!result) {\n return result;\n }\n\n return {\n ...result,\n textSpan: virtualization && result.textSpan\n ? remapToolingTextSpanToOriginal(result.textSpan, virtualization)\n : result.textSpan,\n definitions: result.definitions?.map((definition) => remapFileSpanRecord(definition, getVirtualization)),\n };\n };\n}\n\nfunction wrapReferences(method, getVirtualization) {\n return (fileName, position) => {\n const virtualization = getVirtualization(fileName);\n const mappedPosition = virtualization\n ? mapOriginalPositionToToolingVirtual(position, virtualization)\n : position;\n const references = method?.(fileName, mappedPosition);\n\n if (!references?.length) {\n return references;\n }\n\n return references.map((reference) => remapFileSpanRecord(reference, getVirtualization));\n };\n}\n\nfunction wrapRenameInfo(method, getVirtualization) {\n return (fileName, position, ...rest) => {\n const virtualization = getVirtualization(fileName);\n const mappedPosition = virtualization\n ? mapOriginalPositionToToolingVirtual(position, virtualization)\n : position;\n const info = method?.(fileName, mappedPosition, ...rest);\n\n if (!info || !virtualization || !info.triggerSpan) {\n return info;\n }\n\n return {\n ...info,\n triggerSpan: remapToolingTextSpanToOriginal(info.triggerSpan, virtualization),\n };\n };\n}\n\nfunction wrapRenameLocations(method, getVirtualization) {\n return (fileName, position, ...rest) => {\n const virtualization = getVirtualization(fileName);\n const mappedPosition = virtualization\n ? mapOriginalPositionToToolingVirtual(position, virtualization)\n : position;\n const locations = method?.(fileName, mappedPosition, ...rest);\n\n if (!locations?.length) {\n return locations;\n }\n\n return locations.map((location) => remapFileSpanRecord(location, getVirtualization));\n };\n}\n\nfunction wrapQuickInfo(method, getVirtualization) {\n return (fileName, position) => {\n const virtualization = getVirtualization(fileName);\n const mappedPosition = virtualization\n ? mapOriginalPositionToToolingVirtual(position, virtualization)\n : position;\n const info = method(fileName, mappedPosition);\n\n if (!virtualization) {\n return info;\n }\n\n function createHoistQuickInfo(hoistInfo, fallbackSpan = null) {\n return {\n kind: \"function\",\n kindModifiers: \"\",\n textSpan: hoistInfo\n ? {\n start: hoistInfo.start,\n length: hoistInfo.length,\n }\n : fallbackSpan,\n displayParts: [\n { text: hoistInfo?.name ?? \"static hoist\", kind: \"functionName\" },\n { text: \"(...)\", kind: \"punctuation\" },\n { text: \": \", kind: \"punctuation\" },\n { text: \"static hoist\", kind: \"keyword\" },\n ],\n documentation: [\n {\n text: hoistInfo?.documentation ?? \"LitSX static hoist.\",\n kind: \"text\",\n },\n ],\n };\n }\n\n if (!info) {\n const hoistInfo = inferLitsxStaticHoistInfoAtPosition(virtualization.sourceText, position);\n if (hoistInfo) {\n return createHoistQuickInfo(hoistInfo);\n }\n\n const attributeInfo = inferLitsxAttributeInfoAtPosition(virtualization.sourceText, position);\n if (!attributeInfo) {\n return info;\n }\n\n let kindLabel = \"binding\";\n let detail = \"LitSX binding\";\n\n if (attributeInfo.prefix === \"@\") {\n kindLabel = \"event\";\n detail = \"LitSX event listener binding\";\n } else if (attributeInfo.prefix === \".\") {\n kindLabel = \"property\";\n detail = \"LitSX property binding\";\n } else if (attributeInfo.prefix === \"?\") {\n kindLabel = \"boolean\";\n detail = \"LitSX boolean attribute binding\";\n }\n\n return {\n kind: \"property\",\n kindModifiers: \"\",\n textSpan: {\n start: attributeInfo.start,\n length: attributeInfo.length,\n },\n displayParts: [\n { text: attributeInfo.name, kind: \"propertyName\" },\n { text: \": \", kind: \"punctuation\" },\n { text: kindLabel, kind: \"keyword\" },\n ],\n documentation: [\n {\n text: `${detail} for <${attributeInfo.tagName}>.`,\n kind: \"text\",\n },\n ],\n };\n }\n\n const hoistInfo = inferLitsxStaticHoistInfoAtPosition(virtualization.sourceText, position);\n if (hoistInfo) {\n return createHoistQuickInfo(hoistInfo);\n }\n\n const remappedDisplayParts = remapDisplayParts(info.displayParts);\n return {\n ...info,\n textSpan: remapToolingTextSpanToOriginal(info.textSpan, virtualization),\n displayParts: remappedDisplayParts,\n documentation: remapDocumentationParts(info.documentation),\n };\n };\n}\n\nfunction getLitsxCompletionMetadata(name) {\n if (typeof name !== \"string\" || name.length < 2) {\n return null;\n }\n\n if (name.startsWith(\"@\")) {\n return {\n kind: \"memberVariableElement\",\n kindLabel: \"event\",\n detail: \"LitSX event listener binding\",\n };\n }\n\n if (name.startsWith(\".\")) {\n return {\n kind: \"property\",\n kindLabel: \"property\",\n detail: \"LitSX property binding\",\n };\n }\n\n if (name.startsWith(\"?\")) {\n return {\n kind: \"property\",\n kindLabel: \"boolean\",\n detail: \"LitSX boolean attribute binding\",\n };\n }\n\n return null;\n}\n\nfunction createContextualReplacementSpan(context) {\n if (!context) {\n return undefined;\n }\n\n return {\n start: context.start + 1,\n length: Math.max(context.length - 1, 0),\n };\n}\n\nfunction createContextualCompletionEntries(virtualization, position) {\n if (!virtualization) {\n return [];\n }\n\n const context = inferLitsxAttributeCompletionContext(virtualization.sourceText, position);\n\n return getLitsxAttributeCompletionNames(context).map((name, index) => {\n const metadata = getLitsxCompletionMetadata(name);\n\n return {\n name,\n kind: metadata?.kind ?? \"property\",\n kindModifiers: \"\",\n sortText: `0${index}`,\n insertText: name.slice(1),\n filterText: name.slice(1),\n replacementSpan: createContextualReplacementSpan(context),\n source: \"LitSX\",\n data: {\n __litsxContextualCompletion: true,\n },\n };\n });\n}\n\nfunction wrapCompletions(method, getVirtualization) {\n return (fileName, position, options, formattingSettings) => {\n const virtualization = getVirtualization(fileName);\n const mappedPosition = virtualization\n ? mapOriginalPositionToToolingVirtual(position, virtualization)\n : position;\n const completions = method(fileName, mappedPosition, options, formattingSettings);\n const contextualEntries = createContextualCompletionEntries(virtualization, position);\n\n const filteredEntries = (completions?.entries ?? []).filter(\n (entry) => !decodeVirtualAttributeName(entry.name),\n );\n const mergedEntries = [...contextualEntries];\n const seenNames = new Set(contextualEntries.map((entry) => entry.name));\n\n for (const entry of filteredEntries) {\n if (seenNames.has(entry.name)) continue;\n seenNames.add(entry.name);\n mergedEntries.push(entry);\n }\n\n if (!completions && mergedEntries.length === 0) {\n return completions;\n }\n\n return {\n ...(completions ?? {}),\n entries: mergedEntries,\n };\n };\n}\n\nfunction wrapCompletionEntryDetails(method, getVirtualization) {\n return (fileName, position, entryName, ...rest) => {\n const virtualization = getVirtualization(fileName);\n const metadata = getLitsxCompletionMetadata(entryName);\n\n if (virtualization && metadata) {\n const context = inferLitsxAttributeCompletionContext(virtualization.sourceText, position);\n if (context && getLitsxAttributeCompletionNames(context).includes(entryName)) {\n return {\n name: entryName,\n kind: metadata.kind,\n kindModifiers: \"\",\n displayParts: [\n { text: entryName, kind: \"propertyName\" },\n { text: \": \", kind: \"punctuation\" },\n { text: metadata.kindLabel, kind: \"keyword\" },\n ],\n documentation: [\n {\n text: `${metadata.detail} for <${context.tagName}>.`,\n kind: \"text\",\n },\n ],\n tags: [],\n codeActions: [],\n };\n }\n }\n\n if (typeof method !== \"function\") {\n return undefined;\n }\n\n const mappedPosition = virtualization\n ? mapOriginalPositionToToolingVirtual(position, virtualization)\n : position;\n const details = method(fileName, mappedPosition, entryName, ...rest);\n\n if (!details || !virtualization) {\n return details;\n }\n\n return {\n ...details,\n displayParts: remapDisplayParts(details.displayParts),\n documentation: remapDocumentationParts(details.documentation),\n };\n };\n}\n\nexport default function init(modules) {\n const ts = modules.typescript;\n\n return {\n create(info) {\n const host = info.languageServiceHost;\n\n if (!host || typeof host.getScriptSnapshot !== \"function\") {\n return info.languageService;\n }\n\n const originalGetScriptSnapshot = host.getScriptSnapshot.bind(host);\n const virtualizations = new Map();\n\n function getPluginsForFile(fileName) {\n return (fileName.endsWith(\".tsx\") || fileName.endsWith(\".litsx\")) ? [\"typescript\"] : [];\n }\n\n const originalGetScriptKind = typeof host.getScriptKind === \"function\"\n ? host.getScriptKind.bind(host)\n : null;\n\n host.getScriptKind = (fileName) => {\n if (fileName.endsWith(\".litsx\")) {\n return ts.ScriptKind.TSX;\n }\n\n if (fileName.endsWith(\".litsx.jsx\")) {\n return ts.ScriptKind.JSX;\n }\n\n return originalGetScriptKind?.(fileName);\n };\n\n function getCachedRecord(fileName) {\n return virtualizations.get(fileName) ?? null;\n }\n\n function clearRecord(fileName) {\n virtualizations.delete(fileName);\n }\n\n function getOrBuildVirtualizationRecord(fileName) {\n const snapshot = originalGetScriptSnapshot(fileName);\n\n if (!snapshot || !isRelevantFile(fileName)) {\n clearRecord(fileName);\n return {\n snapshot,\n record: null,\n };\n }\n\n const cachedRecord = getCachedRecord(fileName);\n if (cachedRecord?.snapshot === snapshot) {\n return {\n snapshot,\n record: cachedRecord,\n };\n }\n\n const sourceText = readSnapshotText(snapshot);\n if (cachedRecord?.sourceText === sourceText) {\n cachedRecord.snapshot = snapshot;\n return {\n snapshot,\n record: cachedRecord,\n };\n }\n\n if (!looksLikeLitsxJsx(sourceText)) {\n clearRecord(fileName);\n return {\n snapshot,\n record: null,\n };\n }\n\n const parserPlugins = getPluginsForFile(fileName);\n const virtualization = profilePhase(\n \"typescript-plugin\",\n \"tooling-virtualization\",\n () => createToolingVirtualLitsxSource(sourceText, {\n plugins: parserPlugins,\n }),\n );\n\n if (virtualization.code === sourceText) {\n clearRecord(fileName);\n return {\n snapshot,\n record: null,\n };\n }\n\n const record = {\n ...virtualization,\n sourceText,\n parserPlugins,\n snapshot,\n virtualizedSnapshot: null,\n authoredDiagnostics: null,\n authoredDiagnosticsReady: false,\n };\n\n virtualizations.set(fileName, record);\n\n return {\n snapshot,\n record,\n };\n }\n\n function getVirtualization(fileName) {\n return getOrBuildVirtualizationRecord(fileName).record;\n }\n\n function getAuthoredDiagnostics(fileName) {\n const record = getVirtualization(fileName);\n if (!record) {\n return null;\n }\n\n if (!record.authoredDiagnosticsReady) {\n record.authoredDiagnostics = profilePhase(\n \"typescript-plugin\",\n \"authored-diagnostics\",\n () => collectLitsxAuthoredDiagnostics(record.sourceText, ts, {\n plugins: record.parserPlugins,\n }),\n );\n record.authoredDiagnosticsReady = true;\n }\n\n return record.authoredDiagnostics;\n }\n\n host.getScriptSnapshot = (fileName) => {\n const { snapshot, record } = getOrBuildVirtualizationRecord(fileName);\n\n if (!record) {\n return snapshot;\n }\n\n if (!record.virtualizedSnapshot) {\n record.virtualizedSnapshot = createSnapshot(ts, record.code);\n }\n\n return record.virtualizedSnapshot;\n };\n\n const languageService = info.languageService;\n\n return {\n ...languageService,\n getSyntacticDiagnostics: wrapSyntacticDiagnostics(\n languageService.getSyntacticDiagnostics.bind(languageService),\n getVirtualization,\n getAuthoredDiagnostics,\n ts,\n ),\n getSemanticDiagnostics: wrapSemanticDiagnostics(\n languageService.getSemanticDiagnostics.bind(languageService),\n getVirtualization,\n getAuthoredDiagnostics,\n ),\n getSuggestionDiagnostics: wrapDiagnostics(\n languageService.getSuggestionDiagnostics.bind(languageService),\n getVirtualization,\n ),\n getQuickInfoAtPosition: wrapQuickInfo(\n languageService.getQuickInfoAtPosition.bind(languageService),\n getVirtualization,\n ),\n getCompletionsAtPosition: wrapCompletions(\n languageService.getCompletionsAtPosition.bind(languageService),\n getVirtualization,\n ),\n getCompletionEntryDetails: wrapCompletionEntryDetails(\n languageService.getCompletionEntryDetails?.bind(languageService),\n getVirtualization,\n ),\n getDefinitionAtPosition: wrapDefinitionAtPosition(\n languageService.getDefinitionAtPosition?.bind(languageService),\n getVirtualization,\n ),\n getDefinitionAndBoundSpan: wrapDefinitionAndBoundSpan(\n languageService.getDefinitionAndBoundSpan?.bind(languageService),\n getVirtualization,\n ),\n getReferencesAtPosition: wrapReferences(\n languageService.getReferencesAtPosition?.bind(languageService),\n getVirtualization,\n ),\n getRenameInfo: wrapRenameInfo(\n languageService.getRenameInfo?.bind(languageService),\n getVirtualization,\n ),\n findRenameLocations: wrapRenameLocations(\n languageService.findRenameLocations?.bind(languageService),\n getVirtualization,\n ),\n };\n },\n\n getExternalFiles(project) {\n const fileNames = project.getFileNames?.() ?? [];\n const projectVersion = project.getProjectVersion?.() ?? \"\";\n const cacheKey = `${projectVersion}:${fileNames.join(\"\\0\")}`;\n const cached = EXTERNAL_FILES_CACHE.get(project);\n if (cached?.cacheKey === cacheKey) {\n return cached.result;\n }\n\n const result = fileNames.filter((fileName) => {\n if (!isRelevantFile(fileName) || !fs.existsSync(fileName)) {\n return false;\n }\n\n const sourceText = fs.readFileSync(fileName, \"utf8\");\n return looksLikeLitsxJsx(sourceText);\n });\n EXTERNAL_FILES_CACHE.set(project, { cacheKey, result });\n return result;\n },\n };\n}\n\nexport {\n collectLitsxAuthoredDiagnostics,\n createVirtualLitsxJsxSource,\n createToolingVirtualLitsxSource,\n decodeVirtualAttributeName,\n getLitsxAttributeCompletionNames,\n inferLitsxAttributeInfoAtPosition,\n inferLitsxAttributeCompletionContext,\n inferLitsxMarkupCompletionContext,\n looksLikeLitsxJsx,\n mapOriginalPositionToVirtual,\n mapOriginalPositionToToolingVirtual,\n remapVirtualText,\n remapTextSpanToOriginal,\n remapToolingTextSpanToOriginal,\n} from \"./virtualization.js\";\n"],"names":["remapVirtualText","virtualization","remapToolingTextSpanToOriginal","mapOriginalPositionToToolingVirtual","inferLitsxStaticHoistInfoAtPosition","inferLitsxAttributeInfoAtPosition","inferLitsxAttributeCompletionContext","getLitsxAttributeCompletionNames","decodeVirtualAttributeName","looksLikeLitsxJsx","createToolingVirtualLitsxSource","collectLitsxAuthoredDiagnostics"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@litsx/typescript",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "description": "TypeScript language-service, typecheck, and editor support for LitSX authored syntax",
5
5
  "author": "LitSX Team",
6
6
  "homepage": "https://litsx.dev/",
@@ -141,6 +141,56 @@ function remapDisplayParts(parts) {
141
141
  }));
142
142
  }
143
143
 
144
+ function normalizeEscapedNewlines(text) {
145
+ if (typeof text !== "string" || !text.includes("\\")) {
146
+ return text;
147
+ }
148
+
149
+ return text
150
+ .replace(/\\r\\n/g, "\r\n")
151
+ .replace(/\\n/g, "\n");
152
+ }
153
+
154
+ function remapDocumentationParts(parts) {
155
+ return parts?.map((part) => ({
156
+ ...part,
157
+ text: normalizeEscapedNewlines(remapVirtualText(part.text)),
158
+ }));
159
+ }
160
+
161
+ function getHoverCodeLanguage(languageId) {
162
+ if (languageId === "litsx" || languageId === "tsx") {
163
+ return "tsx";
164
+ }
165
+
166
+ if (languageId === "litsx-jsx" || languageId === "jsx") {
167
+ return "jsx";
168
+ }
169
+
170
+ return "ts";
171
+ }
172
+
173
+ function createHoverResult({ start, length, code, documentation, languageId }) {
174
+ const normalizedDocumentation = normalizeEscapedNewlines(documentation ?? "");
175
+ const markdownParts = [
176
+ `\`\`\`${getHoverCodeLanguage(languageId)}`,
177
+ code || "symbol",
178
+ "```",
179
+ ];
180
+
181
+ if (normalizedDocumentation) {
182
+ markdownParts.push("", normalizedDocumentation);
183
+ }
184
+
185
+ return {
186
+ start,
187
+ length,
188
+ code: code || "symbol",
189
+ documentation: normalizedDocumentation,
190
+ markdown: markdownParts.join("\n"),
191
+ };
192
+ }
193
+
144
194
  function remapMessageText(messageText) {
145
195
  if (typeof messageText === "string") {
146
196
  return remapVirtualText(messageText);
@@ -1061,12 +1111,13 @@ function createLitsxEditorSession(options = {}) {
1061
1111
 
1062
1112
  const hoistInfo = inferLitsxStaticHoistInfoAtPosition(sourceText, position);
1063
1113
  if (hoistInfo) {
1064
- return {
1114
+ return createHoverResult({
1065
1115
  start: hoistInfo.start,
1066
1116
  length: hoistInfo.length,
1067
1117
  code: `${hoistInfo.name}(...): static hoist`,
1068
1118
  documentation: hoistInfo.documentation,
1069
- };
1119
+ languageId,
1120
+ });
1070
1121
  }
1071
1122
 
1072
1123
  if (!info) {
@@ -1078,12 +1129,13 @@ function createLitsxEditorSession(options = {}) {
1078
1129
  inferLitsxAttributeInfoAtPosition(sourceText, position),
1079
1130
  );
1080
1131
  return bindingHoverInfo
1081
- ? {
1132
+ ? createHoverResult({
1082
1133
  start: bindingHoverInfo.start,
1083
1134
  length: bindingHoverInfo.length,
1084
1135
  code: `${bindingHoverInfo.name}: ${bindingHoverInfo.kindLabel}`,
1085
1136
  documentation: bindingHoverInfo.detail,
1086
- }
1137
+ languageId,
1138
+ })
1087
1139
  : null;
1088
1140
  }
1089
1141
 
@@ -1109,26 +1161,28 @@ function createLitsxEditorSession(options = {}) {
1109
1161
  length: 0,
1110
1162
  };
1111
1163
 
1112
- return {
1164
+ return createHoverResult({
1113
1165
  start: remappedNodeSpan.start,
1114
1166
  length: remappedNodeSpan.length,
1115
1167
  code: `${symbol?.getName?.() ?? node.getText(sourceFile)}: ${checker.typeToString(type)}`,
1116
1168
  documentation: symbol
1117
- ? ts.displayPartsToString(symbol.getDocumentationComment(checker))
1169
+ ? normalizeEscapedNewlines(ts.displayPartsToString(symbol.getDocumentationComment(checker)))
1118
1170
  : "",
1119
- };
1171
+ languageId,
1172
+ });
1120
1173
  }
1121
1174
 
1122
1175
  const bindingHoverInfo = getBindingHoverInfo(
1123
1176
  inferLitsxAttributeInfoAtPosition(sourceText, position),
1124
1177
  );
1125
1178
  return bindingHoverInfo
1126
- ? {
1179
+ ? createHoverResult({
1127
1180
  start: bindingHoverInfo.start,
1128
1181
  length: bindingHoverInfo.length,
1129
1182
  code: `${bindingHoverInfo.name}: ${bindingHoverInfo.kindLabel}`,
1130
1183
  documentation: bindingHoverInfo.detail,
1131
- }
1184
+ languageId,
1185
+ })
1132
1186
  : null;
1133
1187
  }
1134
1188
 
@@ -1138,16 +1192,17 @@ function createLitsxEditorSession(options = {}) {
1138
1192
  const displayText = (remapDisplayParts(info.displayParts) ?? [])
1139
1193
  .map((entry) => entry.text)
1140
1194
  .join("");
1141
- const documentation = (remapDisplayParts(info.documentation) ?? [])
1195
+ const documentation = (remapDocumentationParts(info.documentation) ?? [])
1142
1196
  .map((entry) => entry.text)
1143
1197
  .join("");
1144
1198
 
1145
- return {
1199
+ return createHoverResult({
1146
1200
  start: remappedSpan.start,
1147
1201
  length: remappedSpan.length,
1148
1202
  code: displayText || "symbol",
1149
1203
  documentation,
1150
- };
1204
+ languageId,
1205
+ });
1151
1206
  }
1152
1207
 
1153
1208
  function getCompletions(fileName, sourceText, languageId, position, completionKindAdapter) {
package/src/index.js CHANGED
@@ -56,6 +56,23 @@ function remapDisplayParts(parts) {
56
56
  }));
57
57
  }
58
58
 
59
+ function normalizeEscapedNewlines(text) {
60
+ if (typeof text !== "string" || !text.includes("\\")) {
61
+ return text;
62
+ }
63
+
64
+ return text
65
+ .replace(/\\r\\n/g, "\r\n")
66
+ .replace(/\\n/g, "\n");
67
+ }
68
+
69
+ function remapDocumentationParts(parts) {
70
+ return parts?.map((part) => ({
71
+ ...part,
72
+ text: normalizeEscapedNewlines(remapVirtualText(part.text)),
73
+ }));
74
+ }
75
+
59
76
  function remapMessageText(messageText) {
60
77
  if (typeof messageText === "string") {
61
78
  return remapVirtualText(messageText);
@@ -442,7 +459,7 @@ function wrapQuickInfo(method, getVirtualization) {
442
459
  ...info,
443
460
  textSpan: remapToolingTextSpanToOriginal(info.textSpan, virtualization),
444
461
  displayParts: remappedDisplayParts,
445
- documentation: remapDisplayParts(info.documentation),
462
+ documentation: remapDocumentationParts(info.documentation),
446
463
  };
447
464
  };
448
465
  }
@@ -593,7 +610,7 @@ function wrapCompletionEntryDetails(method, getVirtualization) {
593
610
  return {
594
611
  ...details,
595
612
  displayParts: remapDisplayParts(details.displayParts),
596
- documentation: remapDisplayParts(details.documentation),
613
+ documentation: remapDocumentationParts(details.documentation),
597
614
  };
598
615
  };
599
616
  }