@tamagui/language-service 0.0.0-bootstrap.0 → 3.0.0-beta.643.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.
- package/README.md +140 -1
- package/dist/cjs/check.cjs +173 -0
- package/dist/cjs/check.native.cjs +369 -0
- package/dist/cjs/check.native.js +371 -0
- package/dist/cjs/check.native.js.map +1 -0
- package/dist/cjs/core.cjs +221 -0
- package/dist/cjs/core.native.cjs +305 -0
- package/dist/cjs/core.native.js +307 -0
- package/dist/cjs/core.native.js.map +1 -0
- package/dist/cjs/document.cjs +82 -0
- package/dist/cjs/document.native.cjs +158 -0
- package/dist/cjs/document.native.js +160 -0
- package/dist/cjs/document.native.js.map +1 -0
- package/dist/cjs/extract-estree.cjs +193 -0
- package/dist/cjs/extract-estree.native.cjs +296 -0
- package/dist/cjs/extract-estree.native.js +298 -0
- package/dist/cjs/extract-estree.native.js.map +1 -0
- package/dist/cjs/extract-sucrase.cjs +222 -0
- package/dist/cjs/extract-sucrase.native.cjs +256 -0
- package/dist/cjs/extract-sucrase.native.js +258 -0
- package/dist/cjs/extract-sucrase.native.js.map +1 -0
- package/dist/cjs/host.cjs +38 -0
- package/dist/cjs/host.native.cjs +61 -0
- package/dist/cjs/host.native.js +63 -0
- package/dist/cjs/host.native.js.map +1 -0
- package/dist/cjs/index.cjs +301 -0
- package/dist/cjs/index.native.cjs +414 -0
- package/dist/cjs/index.native.js +416 -0
- package/dist/cjs/index.native.js.map +1 -0
- package/dist/esm/check.mjs +148 -0
- package/dist/esm/check.mjs.map +1 -0
- package/dist/esm/check.native.js +342 -0
- package/dist/esm/check.native.js.map +1 -0
- package/dist/esm/core.mjs +198 -0
- package/dist/esm/core.mjs.map +1 -0
- package/dist/esm/core.native.js +280 -0
- package/dist/esm/core.native.js.map +1 -0
- package/dist/esm/document.mjs +61 -0
- package/dist/esm/document.mjs.map +1 -0
- package/dist/esm/document.native.js +135 -0
- package/dist/esm/document.native.js.map +1 -0
- package/dist/esm/extract-estree.mjs +172 -0
- package/dist/esm/extract-estree.mjs.map +1 -0
- package/dist/esm/extract-estree.native.js +273 -0
- package/dist/esm/extract-estree.native.js.map +1 -0
- package/dist/esm/extract-sucrase.mjs +201 -0
- package/dist/esm/extract-sucrase.mjs.map +1 -0
- package/dist/esm/extract-sucrase.native.js +233 -0
- package/dist/esm/extract-sucrase.native.js.map +1 -0
- package/dist/esm/host.mjs +17 -0
- package/dist/esm/host.mjs.map +1 -0
- package/dist/esm/host.native.js +38 -0
- package/dist/esm/host.native.js.map +1 -0
- package/dist/esm/index.mjs +281 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +392 -0
- package/dist/esm/index.native.js.map +1 -0
- package/index.cjs +1 -0
- package/package.json +79 -7
- package/src/check.ts +204 -0
- package/src/core.ts +355 -0
- package/src/document.ts +140 -0
- package/src/extract-estree.ts +251 -0
- package/src/extract-sucrase.ts +308 -0
- package/src/host.ts +32 -0
- package/src/index.ts +452 -0
- package/types/check.d.ts +31 -0
- package/types/check.d.ts.map +11 -0
- package/types/core.d.ts +68 -0
- package/types/core.d.ts.map +11 -0
- package/types/document.d.ts +42 -0
- package/types/document.d.ts.map +11 -0
- package/types/extract-estree.d.ts +19 -0
- package/types/extract-estree.d.ts.map +11 -0
- package/types/extract-sucrase.d.ts +26 -0
- package/types/extract-sucrase.d.ts.map +11 -0
- package/types/host.d.ts +10 -0
- package/types/host.d.ts.map +11 -0
- package/types/index.d.ts +9 -0
- package/types/index.d.ts.map +11 -0
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all) __defProp(target, name, {
|
|
10
|
+
get: all[name],
|
|
11
|
+
enumerable: true
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
var __copyProps = (to, from, except, desc) => {
|
|
15
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
16
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
17
|
+
get: () => from[key],
|
|
18
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
return to;
|
|
22
|
+
};
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var index_exports = {};
|
|
25
|
+
__export(index_exports, { default: () => index_default });
|
|
26
|
+
module.exports = __toCommonJS(index_exports);
|
|
27
|
+
var import_path = require("path");
|
|
28
|
+
var import_core = require("./core.native.js");
|
|
29
|
+
var import_host = require("./host.native.js");
|
|
30
|
+
var completionSource = "@tamagui/language-service";
|
|
31
|
+
var diagnosticCode = 78711;
|
|
32
|
+
var defaultConfigPath = ".tamagui/tamagui.config.json";
|
|
33
|
+
var flatStyledModules = /* @__PURE__ */ new Set([
|
|
34
|
+
"tamagui",
|
|
35
|
+
"tamagui/unstyled",
|
|
36
|
+
"@tamagui/core",
|
|
37
|
+
"@tamagui/ui",
|
|
38
|
+
"@tamagui/web"
|
|
39
|
+
]);
|
|
40
|
+
function loadTooling(info, configPath) {
|
|
41
|
+
var contents = info.serverHost.readFile(configPath);
|
|
42
|
+
if (contents === void 0) return null;
|
|
43
|
+
try {
|
|
44
|
+
return (0, import_core.createStyleTooling)(JSON.parse(contents));
|
|
45
|
+
} catch (e) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function findStringLiteralAtPosition(typescript, sourceFile, position) {
|
|
50
|
+
var found = null;
|
|
51
|
+
var visit = function(node) {
|
|
52
|
+
if (position < node.getFullStart() || position > node.getEnd()) return;
|
|
53
|
+
if (typescript.isStringLiteralLike(node) && position >= node.getStart(sourceFile) + 1 && position <= node.getEnd() - 1) {
|
|
54
|
+
found = node;
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
typescript.forEachChild(node, visit);
|
|
58
|
+
};
|
|
59
|
+
visit(sourceFile);
|
|
60
|
+
return found;
|
|
61
|
+
}
|
|
62
|
+
function importedBindings(typescript, sourceFile) {
|
|
63
|
+
var styled = /* @__PURE__ */ new Set();
|
|
64
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
|
|
65
|
+
try {
|
|
66
|
+
for (var _iterator = sourceFile.statements[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
67
|
+
var statement = _step.value;
|
|
68
|
+
var _statement_importClause;
|
|
69
|
+
if (!typescript.isImportDeclaration(statement) || !typescript.isStringLiteral(statement.moduleSpecifier)) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
var source = statement.moduleSpecifier.text;
|
|
73
|
+
if (!flatStyledModules.has(source)) continue;
|
|
74
|
+
var bindings = (_statement_importClause = statement.importClause) === null || _statement_importClause === void 0 ? void 0 : _statement_importClause.namedBindings;
|
|
75
|
+
if (!bindings) continue;
|
|
76
|
+
if (typescript.isNamespaceImport(bindings)) continue;
|
|
77
|
+
var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;
|
|
78
|
+
try {
|
|
79
|
+
for (var _iterator1 = bindings.elements[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
|
|
80
|
+
var element = _step1.value;
|
|
81
|
+
var _element_propertyName;
|
|
82
|
+
var imported = ((_element_propertyName = element.propertyName) === null || _element_propertyName === void 0 ? void 0 : _element_propertyName.text) || element.name.text;
|
|
83
|
+
if (imported === "styled") styled.add(element.name.text);
|
|
84
|
+
}
|
|
85
|
+
} catch (err) {
|
|
86
|
+
_didIteratorError1 = true;
|
|
87
|
+
_iteratorError1 = err;
|
|
88
|
+
} finally {
|
|
89
|
+
try {
|
|
90
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
91
|
+
_iterator1.return();
|
|
92
|
+
}
|
|
93
|
+
} finally {
|
|
94
|
+
if (_didIteratorError1) {
|
|
95
|
+
throw _iteratorError1;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
} catch (err) {
|
|
101
|
+
_didIteratorError = true;
|
|
102
|
+
_iteratorError = err;
|
|
103
|
+
} finally {
|
|
104
|
+
try {
|
|
105
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
106
|
+
_iterator.return();
|
|
107
|
+
}
|
|
108
|
+
} finally {
|
|
109
|
+
if (_didIteratorError) {
|
|
110
|
+
throw _iteratorError;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return { styled };
|
|
115
|
+
}
|
|
116
|
+
function propertyName(typescript, name) {
|
|
117
|
+
if (typescript.isIdentifier(name) || typescript.isStringLiteral(name)) {
|
|
118
|
+
return name.text;
|
|
119
|
+
}
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
function completionProperty(typescript, literal, tooling, checker, bindings) {
|
|
123
|
+
var parent = literal.parent;
|
|
124
|
+
if (typescript.isJsxExpression(parent)) parent = parent.parent;
|
|
125
|
+
if (typescript.isJsxAttribute(parent)) {
|
|
126
|
+
if (!typescript.isIdentifier(parent.name)) return null;
|
|
127
|
+
var property = parent.name.text;
|
|
128
|
+
if (!tooling.styleProps.has(property)) return null;
|
|
129
|
+
var opening = parent.parent.parent;
|
|
130
|
+
if (!typescript.isJsxOpeningLikeElement(opening)) return null;
|
|
131
|
+
var host = (0, import_host.resolveTamaguiHost)(checker, opening.tagName);
|
|
132
|
+
if (!(host === null || host === void 0 ? void 0 : host.accepts(property))) return null;
|
|
133
|
+
return { property };
|
|
134
|
+
}
|
|
135
|
+
if (!typescript.isPropertyAssignment(parent)) return null;
|
|
136
|
+
var property1 = propertyName(typescript, parent.name);
|
|
137
|
+
if (!property1 || !tooling.styleProps.has(property1)) return null;
|
|
138
|
+
var current = parent;
|
|
139
|
+
while (current.parent && !typescript.isCallExpression(current.parent)) {
|
|
140
|
+
current = current.parent;
|
|
141
|
+
}
|
|
142
|
+
if (!current.parent || !typescript.isCallExpression(current.parent)) return null;
|
|
143
|
+
var call = current.parent;
|
|
144
|
+
if (call.arguments[1] !== current || !typescript.isIdentifier(call.expression) || !bindings.styled.has(call.expression.text)) {
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
var component = call.arguments[0];
|
|
148
|
+
var host1 = component && (0, import_host.resolveTamaguiHost)(checker, component);
|
|
149
|
+
if (!(host1 === null || host1 === void 0 ? void 0 : host1.accepts(property1))) return null;
|
|
150
|
+
return { property: property1 };
|
|
151
|
+
}
|
|
152
|
+
function siteForLiteral(typescript, sourceFile, literal, tooling, checker, bindings) {
|
|
153
|
+
var site = completionProperty(typescript, literal, tooling, checker, bindings);
|
|
154
|
+
if (!site) return null;
|
|
155
|
+
var contentStart = literal.getStart(sourceFile) + 1;
|
|
156
|
+
var contentEnd = literal.getEnd() - 1;
|
|
157
|
+
var sourceInput = sourceFile.text.slice(contentStart, contentEnd);
|
|
158
|
+
if (literal.text !== sourceInput) return null;
|
|
159
|
+
return {
|
|
160
|
+
property: site.property,
|
|
161
|
+
value: literal.text,
|
|
162
|
+
contentStart,
|
|
163
|
+
literal
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
function collectLiteralSites(typescript, sourceFile, tooling, checker, bindings) {
|
|
167
|
+
var sites = [];
|
|
168
|
+
var visit = function(node) {
|
|
169
|
+
if (typescript.isStringLiteralLike(node)) {
|
|
170
|
+
var site = siteForLiteral(typescript, sourceFile, node, tooling, checker, bindings);
|
|
171
|
+
if (site) sites.push(site);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
typescript.forEachChild(node, visit);
|
|
175
|
+
};
|
|
176
|
+
visit(sourceFile);
|
|
177
|
+
return sites;
|
|
178
|
+
}
|
|
179
|
+
function copyLanguageService(service) {
|
|
180
|
+
var proxy = /* @__PURE__ */ Object.create(null);
|
|
181
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
|
|
182
|
+
try {
|
|
183
|
+
for (var _iterator = Object.keys(service)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
184
|
+
var key = _step.value;
|
|
185
|
+
var value = service[key];
|
|
186
|
+
proxy[key] = typeof value === "function" ? value.bind(service) : value;
|
|
187
|
+
}
|
|
188
|
+
} catch (err) {
|
|
189
|
+
_didIteratorError = true;
|
|
190
|
+
_iteratorError = err;
|
|
191
|
+
} finally {
|
|
192
|
+
try {
|
|
193
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
194
|
+
_iterator.return();
|
|
195
|
+
}
|
|
196
|
+
} finally {
|
|
197
|
+
if (_didIteratorError) {
|
|
198
|
+
throw _iteratorError;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return proxy;
|
|
203
|
+
}
|
|
204
|
+
var init = function(param) {
|
|
205
|
+
var { typescript } = param;
|
|
206
|
+
return { create(info) {
|
|
207
|
+
var pluginConfig = info.config;
|
|
208
|
+
var configuredPath = (pluginConfig === null || pluginConfig === void 0 ? void 0 : pluginConfig.configPath) || defaultConfigPath;
|
|
209
|
+
var configPath = (0, import_path.isAbsolute)(configuredPath) ? configuredPath : (0, import_path.resolve)(info.project.getCurrentDirectory(), configuredPath);
|
|
210
|
+
var tooling = loadTooling(info, configPath);
|
|
211
|
+
var watcher = info.serverHost.watchFile(configPath, function() {
|
|
212
|
+
tooling = loadTooling(info, configPath);
|
|
213
|
+
});
|
|
214
|
+
var proxy = copyLanguageService(info.languageService);
|
|
215
|
+
var baseCompletions = info.languageService.getCompletionsAtPosition.bind(info.languageService);
|
|
216
|
+
var baseDetails = info.languageService.getCompletionEntryDetails.bind(info.languageService);
|
|
217
|
+
var baseSemanticDiagnostics = info.languageService.getSemanticDiagnostics.bind(info.languageService);
|
|
218
|
+
var baseQuickInfo = info.languageService.getQuickInfoAtPosition.bind(info.languageService);
|
|
219
|
+
var baseDispose = info.languageService.dispose.bind(info.languageService);
|
|
220
|
+
var bindingsBySourceFile = /* @__PURE__ */ new WeakMap();
|
|
221
|
+
var fileContext = function(fileName) {
|
|
222
|
+
var program = info.languageService.getProgram();
|
|
223
|
+
var sourceFile = program === null || program === void 0 ? void 0 : program.getSourceFile(fileName);
|
|
224
|
+
if (!program || !sourceFile) return null;
|
|
225
|
+
var bindings = bindingsBySourceFile.get(sourceFile);
|
|
226
|
+
if (!bindings) {
|
|
227
|
+
bindings = importedBindings(typescript, sourceFile);
|
|
228
|
+
bindingsBySourceFile.set(sourceFile, bindings);
|
|
229
|
+
}
|
|
230
|
+
return {
|
|
231
|
+
sourceFile,
|
|
232
|
+
checker: program.getTypeChecker(),
|
|
233
|
+
bindings
|
|
234
|
+
};
|
|
235
|
+
};
|
|
236
|
+
proxy.getCompletionsAtPosition = function(fileName, position, options, formattingSettings) {
|
|
237
|
+
var getBaseCompletions = function() {
|
|
238
|
+
return baseCompletions(fileName, position, options, formattingSettings);
|
|
239
|
+
};
|
|
240
|
+
if (!tooling) return getBaseCompletions();
|
|
241
|
+
var context = fileContext(fileName);
|
|
242
|
+
if (!context) return getBaseCompletions();
|
|
243
|
+
var { sourceFile, checker, bindings } = context;
|
|
244
|
+
var literal = findStringLiteralAtPosition(typescript, sourceFile, position);
|
|
245
|
+
if (!literal) return getBaseCompletions();
|
|
246
|
+
var site = siteForLiteral(typescript, sourceFile, literal, tooling, checker, bindings);
|
|
247
|
+
if (!site) return getBaseCompletions();
|
|
248
|
+
var cursorCompletions = tooling.completions(site.property, site.value, position - site.contentStart);
|
|
249
|
+
if (!cursorCompletions) return getBaseCompletions();
|
|
250
|
+
var replacementSpan = {
|
|
251
|
+
start: site.contentStart + cursorCompletions.replaceStart,
|
|
252
|
+
length: cursorCompletions.replaceLength
|
|
253
|
+
};
|
|
254
|
+
var entries = [];
|
|
255
|
+
var contextualType;
|
|
256
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
|
|
257
|
+
try {
|
|
258
|
+
for (var _iterator = cursorCompletions.completions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
259
|
+
var completion = _step.value;
|
|
260
|
+
var insertText = completion.insertText || completion.value;
|
|
261
|
+
var modifierKind = completion.kind === "modifier" ? tooling.modifierKind(completion.value) : void 0;
|
|
262
|
+
if (completion.kind === "keyword") {
|
|
263
|
+
contextualType || (contextualType = checker.getContextualType(literal));
|
|
264
|
+
if (!contextualType || !checker.isTypeAssignableTo(checker.getStringLiteralType(insertText), contextualType)) {
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
entries.push({
|
|
269
|
+
name: completion.value,
|
|
270
|
+
kind: typescript.ScriptElementKind.string,
|
|
271
|
+
kindModifiers: "",
|
|
272
|
+
sortText: (0, import_core.completionSortText)(completion, modifierKind),
|
|
273
|
+
insertText,
|
|
274
|
+
replacementSpan,
|
|
275
|
+
source: completionSource,
|
|
276
|
+
labelDetails: { description: modifierKind ? `Tamagui ${modifierKind} modifier` : completion.kind === "configured" ? "Tamagui configured value" : "Tamagui style keyword" }
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
} catch (err) {
|
|
280
|
+
_didIteratorError = true;
|
|
281
|
+
_iteratorError = err;
|
|
282
|
+
} finally {
|
|
283
|
+
try {
|
|
284
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
285
|
+
_iterator.return();
|
|
286
|
+
}
|
|
287
|
+
} finally {
|
|
288
|
+
if (_didIteratorError) {
|
|
289
|
+
throw _iteratorError;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
if (entries.length === 0) return getBaseCompletions();
|
|
294
|
+
return {
|
|
295
|
+
isGlobalCompletion: false,
|
|
296
|
+
isMemberCompletion: false,
|
|
297
|
+
isNewIdentifierLocation: true,
|
|
298
|
+
isIncomplete: true,
|
|
299
|
+
entries
|
|
300
|
+
};
|
|
301
|
+
};
|
|
302
|
+
proxy.getCompletionEntryDetails = function(fileName, position, entryName, formatOptions, source, preferences, data) {
|
|
303
|
+
if (source === completionSource) {
|
|
304
|
+
return {
|
|
305
|
+
name: entryName,
|
|
306
|
+
kind: typescript.ScriptElementKind.string,
|
|
307
|
+
kindModifiers: "",
|
|
308
|
+
displayParts: [{
|
|
309
|
+
text: entryName,
|
|
310
|
+
kind: "stringLiteral"
|
|
311
|
+
}],
|
|
312
|
+
documentation: [{
|
|
313
|
+
text: "Resolved from the active Tamagui config.",
|
|
314
|
+
kind: "text"
|
|
315
|
+
}],
|
|
316
|
+
tags: []
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
return baseDetails(fileName, position, entryName, formatOptions, source, preferences, data);
|
|
320
|
+
};
|
|
321
|
+
proxy.getSemanticDiagnostics = function(fileName) {
|
|
322
|
+
var diagnostics = [...baseSemanticDiagnostics(fileName)];
|
|
323
|
+
if (!tooling) return diagnostics;
|
|
324
|
+
var context = fileContext(fileName);
|
|
325
|
+
if (!context) return diagnostics;
|
|
326
|
+
var { sourceFile, checker, bindings } = context;
|
|
327
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
|
|
328
|
+
try {
|
|
329
|
+
for (var _iterator = collectLiteralSites(typescript, sourceFile, tooling, checker, bindings)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
330
|
+
var site = _step.value;
|
|
331
|
+
var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;
|
|
332
|
+
try {
|
|
333
|
+
for (var _iterator1 = tooling.diagnostics(site.property, site.value)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
|
|
334
|
+
var diagnostic = _step1.value;
|
|
335
|
+
diagnostics.push({
|
|
336
|
+
file: sourceFile,
|
|
337
|
+
start: site.contentStart + diagnostic.start,
|
|
338
|
+
length: Math.max(1, diagnostic.end - diagnostic.start),
|
|
339
|
+
messageText: diagnostic.message,
|
|
340
|
+
category: typescript.DiagnosticCategory.Error,
|
|
341
|
+
code: diagnosticCode,
|
|
342
|
+
source: completionSource
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
} catch (err) {
|
|
346
|
+
_didIteratorError1 = true;
|
|
347
|
+
_iteratorError1 = err;
|
|
348
|
+
} finally {
|
|
349
|
+
try {
|
|
350
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
351
|
+
_iterator1.return();
|
|
352
|
+
}
|
|
353
|
+
} finally {
|
|
354
|
+
if (_didIteratorError1) {
|
|
355
|
+
throw _iteratorError1;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
} catch (err) {
|
|
361
|
+
_didIteratorError = true;
|
|
362
|
+
_iteratorError = err;
|
|
363
|
+
} finally {
|
|
364
|
+
try {
|
|
365
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
366
|
+
_iterator.return();
|
|
367
|
+
}
|
|
368
|
+
} finally {
|
|
369
|
+
if (_didIteratorError) {
|
|
370
|
+
throw _iteratorError;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
return diagnostics;
|
|
375
|
+
};
|
|
376
|
+
proxy.getQuickInfoAtPosition = function(fileName, position) {
|
|
377
|
+
var getBaseQuickInfo = function() {
|
|
378
|
+
return baseQuickInfo(fileName, position);
|
|
379
|
+
};
|
|
380
|
+
if (!tooling) return getBaseQuickInfo();
|
|
381
|
+
var context = fileContext(fileName);
|
|
382
|
+
if (!context) return getBaseQuickInfo();
|
|
383
|
+
var { sourceFile, checker, bindings } = context;
|
|
384
|
+
var literal = findStringLiteralAtPosition(typescript, sourceFile, position);
|
|
385
|
+
if (!literal) return getBaseQuickInfo();
|
|
386
|
+
var site = siteForLiteral(typescript, sourceFile, literal, tooling, checker, bindings);
|
|
387
|
+
if (!site) return getBaseQuickInfo();
|
|
388
|
+
var hover = tooling.hover(site.property, site.value, position - site.contentStart);
|
|
389
|
+
if (!hover) return getBaseQuickInfo();
|
|
390
|
+
return {
|
|
391
|
+
kind: typescript.ScriptElementKind.string,
|
|
392
|
+
kindModifiers: "",
|
|
393
|
+
textSpan: {
|
|
394
|
+
start: site.contentStart + hover.start,
|
|
395
|
+
length: hover.end - hover.start
|
|
396
|
+
},
|
|
397
|
+
displayParts: [{
|
|
398
|
+
text: hover.text,
|
|
399
|
+
kind: "stringLiteral"
|
|
400
|
+
}],
|
|
401
|
+
documentation: [{
|
|
402
|
+
text: hover.markdown,
|
|
403
|
+
kind: "text"
|
|
404
|
+
}]
|
|
405
|
+
};
|
|
406
|
+
};
|
|
407
|
+
proxy.dispose = function() {
|
|
408
|
+
watcher.close();
|
|
409
|
+
baseDispose();
|
|
410
|
+
};
|
|
411
|
+
return proxy;
|
|
412
|
+
} };
|
|
413
|
+
};
|
|
414
|
+
var index_default = init;
|