@glint/tsserver-plugin 1.4.1-unstable.1e4084c → 1.4.1-unstable.1ed1e8f
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.
|
@@ -1,3 +1,34 @@
|
|
|
1
1
|
declare const plugin: any;
|
|
2
2
|
export = plugin;
|
|
3
|
+
/**
|
|
4
|
+
* Return semantic tokens for semantic highlighting:
|
|
5
|
+
* https://code.visualstudio.com/api/language-extensions/semantic-highlight-guide
|
|
6
|
+
function getEncodedSemanticClassifications<T>(
|
|
7
|
+
ts: typeof import('typescript'),
|
|
8
|
+
language: any, // Language<T>,
|
|
9
|
+
languageService: ts.LanguageService,
|
|
10
|
+
asScriptId: (fileName: string) => T,
|
|
11
|
+
getEncodedSemanticClassifications: ts.LanguageService['getEncodedSemanticClassifications'],
|
|
12
|
+
): ts.LanguageService['getEncodedSemanticClassifications'] {
|
|
13
|
+
return (filePath, span, format) => {
|
|
14
|
+
const fileName = filePath.replace(windowsPathReg, '/');
|
|
15
|
+
const result = getEncodedSemanticClassifications(fileName, span, format);
|
|
16
|
+
const sourceScript = language.scripts.get(asScriptId(fileName));
|
|
17
|
+
const root = sourceScript?.generated?.root;
|
|
18
|
+
if (root instanceof VirtualGtsCode) {
|
|
19
|
+
// This would remove all semantic highlighting from .gts files, including the TS parts
|
|
20
|
+
// outside of the `<template>` tags, which is probably undesirable.
|
|
21
|
+
// result.spans = [];
|
|
22
|
+
|
|
23
|
+
// We can push span to the end of the array to override previous entries.
|
|
24
|
+
// result.spans.push(
|
|
25
|
+
// 0,
|
|
26
|
+
// 100,
|
|
27
|
+
// 256, // class
|
|
28
|
+
// );
|
|
29
|
+
}
|
|
30
|
+
return result;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
*/
|
|
3
34
|
//# sourceMappingURL=typescript-server-plugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript-server-plugin.d.ts","sourceRoot":"","sources":["../src/typescript-server-plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"typescript-server-plugin.d.ts","sourceRoot":"","sources":["../src/typescript-server-plugin.ts"],"names":[],"mappings":"AA+BA,QAAA,MAAM,MAAM,KAmDX,CAAC;AAEF,SAAS,MAAM,CAAC;AAgIhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG"}
|
|
@@ -10,7 +10,15 @@ const { createLanguageServicePlugin, } = require('@volar/typescript/lib/quicksta
|
|
|
10
10
|
* modules from CJS which lets us avoid a ton of hacks and complexity we (or Volar)
|
|
11
11
|
* would otherwise have to write to bridge the sync/async APIs.
|
|
12
12
|
*/
|
|
13
|
-
|
|
13
|
+
let glintCorePath = '@glint/core';
|
|
14
|
+
try {
|
|
15
|
+
// @ts-expect-error esbuild define
|
|
16
|
+
glintCorePath = GLINT_CORE_PATH;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
// Ignore; must not be running in esbuild context
|
|
20
|
+
}
|
|
21
|
+
const glintCore = jiti(glintCorePath);
|
|
14
22
|
const { VirtualGtsCode, LooseModeBackingComponentClassVirtualCode, augmentDiagnostics } = glintCore;
|
|
15
23
|
const plugin = createLanguageServicePlugin((ts, info) => {
|
|
16
24
|
const { findConfig, createEmberLanguagePlugin } = glintCore;
|
|
@@ -57,13 +65,17 @@ languageService, asScriptId) {
|
|
|
57
65
|
const proxyCache = new Map();
|
|
58
66
|
const getProxyMethod = (target, p) => {
|
|
59
67
|
switch (p) {
|
|
60
|
-
|
|
68
|
+
case 'getCompletionsAtPosition':
|
|
69
|
+
return getCompletionsAtPosition(ts, language, languageService, asScriptId, target[p]);
|
|
61
70
|
// case 'getCompletionEntryDetails': return getCompletionEntryDetails(language, asScriptId, target[p]);
|
|
62
71
|
// case 'getCodeFixesAtPosition': return getCodeFixesAtPosition(target[p]);
|
|
63
72
|
// case 'getDefinitionAndBoundSpan': return getDefinitionAndBoundSpan(ts, language, languageService, glintOptions, asScriptId, target[p]);
|
|
64
73
|
// case 'getQuickInfoAtPosition': return getQuickInfoAtPosition(ts, target, target[p]);
|
|
65
74
|
// TS plugin only
|
|
66
|
-
// case
|
|
75
|
+
// Left as an example in case we want to augment semantic classification in .gts files.
|
|
76
|
+
// e.g. Vue does this to semantically classify Component names as `class` tokens.
|
|
77
|
+
// case 'getEncodedSemanticClassifications':
|
|
78
|
+
// return getEncodedSemanticClassifications(ts, language, target, asScriptId, target[p]);
|
|
67
79
|
case 'getSemanticDiagnostics':
|
|
68
80
|
return getSemanticDiagnostics(ts, language, languageService, asScriptId, target[p]);
|
|
69
81
|
}
|
|
@@ -86,6 +98,35 @@ languageService, asScriptId) {
|
|
|
86
98
|
},
|
|
87
99
|
});
|
|
88
100
|
}
|
|
101
|
+
function getCompletionsAtPosition(ts, language, // Language<T>,
|
|
102
|
+
languageService, asScriptId, getCompletionsAtPosition) {
|
|
103
|
+
return (fileName, position, options, formattingSettings) => {
|
|
104
|
+
try {
|
|
105
|
+
const sourceScript = language.scripts.get(asScriptId(fileName));
|
|
106
|
+
const root = sourceScript?.generated?.root;
|
|
107
|
+
const transformedModule = root?.transformedModule;
|
|
108
|
+
const completions = getCompletionsAtPosition(fileName, position, options, formattingSettings);
|
|
109
|
+
const transformedRange = transformedModule?.getTransformedRange(transformedModule.originalFileName, position, position);
|
|
110
|
+
if (completions && transformedRange) {
|
|
111
|
+
// for attribute names on elements, we do not want the wrapping `"`.
|
|
112
|
+
if (transformedRange.mapping?.parent?.sourceNode.type === 'ElementNode') {
|
|
113
|
+
completions.entries = completions.entries.map((e) => ({
|
|
114
|
+
...e,
|
|
115
|
+
name: e.name.replace(/^"/, '').replace(/"$/, ''),
|
|
116
|
+
sortText: e.sortText.replace(/\\"/g, ''),
|
|
117
|
+
}));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
console.log(completions);
|
|
121
|
+
return completions;
|
|
122
|
+
}
|
|
123
|
+
catch (e) {
|
|
124
|
+
console.log('error', e?.message);
|
|
125
|
+
console.log(e);
|
|
126
|
+
throw e;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
}
|
|
89
130
|
function getSemanticDiagnostics(ts, language, // Language<T>,
|
|
90
131
|
languageService, asScriptId, getSemanticDiagnostics) {
|
|
91
132
|
return (fileName) => {
|
|
@@ -111,4 +152,36 @@ languageService, asScriptId, getSemanticDiagnostics) {
|
|
|
111
152
|
return augmentedTsDiagnostics;
|
|
112
153
|
};
|
|
113
154
|
}
|
|
155
|
+
const windowsPathReg = /\\/g;
|
|
156
|
+
/**
|
|
157
|
+
* Return semantic tokens for semantic highlighting:
|
|
158
|
+
* https://code.visualstudio.com/api/language-extensions/semantic-highlight-guide
|
|
159
|
+
function getEncodedSemanticClassifications<T>(
|
|
160
|
+
ts: typeof import('typescript'),
|
|
161
|
+
language: any, // Language<T>,
|
|
162
|
+
languageService: ts.LanguageService,
|
|
163
|
+
asScriptId: (fileName: string) => T,
|
|
164
|
+
getEncodedSemanticClassifications: ts.LanguageService['getEncodedSemanticClassifications'],
|
|
165
|
+
): ts.LanguageService['getEncodedSemanticClassifications'] {
|
|
166
|
+
return (filePath, span, format) => {
|
|
167
|
+
const fileName = filePath.replace(windowsPathReg, '/');
|
|
168
|
+
const result = getEncodedSemanticClassifications(fileName, span, format);
|
|
169
|
+
const sourceScript = language.scripts.get(asScriptId(fileName));
|
|
170
|
+
const root = sourceScript?.generated?.root;
|
|
171
|
+
if (root instanceof VirtualGtsCode) {
|
|
172
|
+
// This would remove all semantic highlighting from .gts files, including the TS parts
|
|
173
|
+
// outside of the `<template>` tags, which is probably undesirable.
|
|
174
|
+
// result.spans = [];
|
|
175
|
+
|
|
176
|
+
// We can push span to the end of the array to override previous entries.
|
|
177
|
+
// result.spans.push(
|
|
178
|
+
// 0,
|
|
179
|
+
// 100,
|
|
180
|
+
// 256, // class
|
|
181
|
+
// );
|
|
182
|
+
}
|
|
183
|
+
return result;
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
*/
|
|
114
187
|
//# sourceMappingURL=typescript-server-plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript-server-plugin.js","sourceRoot":"","sources":["../src/typescript-server-plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"typescript-server-plugin.js","sourceRoot":"","sources":["../src/typescript-server-plugin.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@glint/tsserver-plugin",
|
|
3
|
-
"version": "1.4.1-unstable.
|
|
3
|
+
"version": "1.4.1-unstable.1ed1e8f",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"repository": "typed-ember/glint",
|
|
6
6
|
"description": "TypeScript Server Plugin for Glint",
|
|
@@ -18,15 +18,19 @@
|
|
|
18
18
|
"test:typecheck": "echo 'no standalone typecheck within this project'",
|
|
19
19
|
"test:tsc": "echo 'no standalone typecheck within this project'",
|
|
20
20
|
"build": "tsc --build",
|
|
21
|
-
"prepack": "
|
|
21
|
+
"prepack": "pnpm build"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"
|
|
25
|
-
"@glint/core": "1.4.1-unstable.1e4084c",
|
|
24
|
+
"@glint/core": "1.4.1-unstable.1ed1e8f",
|
|
26
25
|
"@volar/language-core": "2.4.12",
|
|
27
|
-
"@volar/typescript": "2.4.12"
|
|
26
|
+
"@volar/typescript": "2.4.12",
|
|
27
|
+
"jiti": "~2.4.2",
|
|
28
|
+
"typescript": ">=5.6.0"
|
|
28
29
|
},
|
|
29
30
|
"publishConfig": {
|
|
30
31
|
"access": "public"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@types/node": "^22.13.11"
|
|
31
35
|
}
|
|
32
36
|
}
|