@glint/ember-tsc 1.3.0 → 1.5.0
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/lib/config/index.d.ts +7 -0
- package/lib/config/index.d.ts.map +1 -1
- package/lib/config/index.js +11 -0
- package/lib/config/index.js.map +1 -1
- package/lib/environment-ember-template-imports/-private/environment/preprocess.d.ts.map +1 -1
- package/lib/environment-ember-template-imports/-private/environment/preprocess.js +21 -52
- package/lib/environment-ember-template-imports/-private/environment/preprocess.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/volar/language-server.js +21 -12
- package/lib/volar/language-server.js.map +1 -1
- package/package.json +2 -2
- package/src/config/index.ts +12 -0
- package/src/environment-ember-template-imports/-private/environment/preprocess.ts +21 -59
- package/src/index.ts +9 -2
- package/src/volar/language-server.ts +23 -11
package/lib/config/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type TS from 'typescript';
|
|
1
2
|
import { GlintConfig } from './config.js';
|
|
2
3
|
export { GlintConfig } from './config.js';
|
|
3
4
|
export { GlintEnvironment } from './environment.js';
|
|
@@ -14,4 +15,10 @@ export declare function loadConfig(from: string): GlintConfig;
|
|
|
14
15
|
* found.
|
|
15
16
|
*/
|
|
16
17
|
export declare function findConfig(from: string): GlintConfig | null;
|
|
18
|
+
/**
|
|
19
|
+
* Creates a default GlintConfig with ember-template-imports environment
|
|
20
|
+
* for use when no tsconfig.json or jsconfig.json exists. This enables
|
|
21
|
+
* Glint to provide IntelliSense in JavaScript-only Ember projects.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createDefaultConfig(ts: typeof TS, rootDir: string): GlintConfig;
|
|
17
24
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE3D;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAOpD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,CAG/E"}
|
package/lib/config/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import * as path from 'node:path';
|
|
1
2
|
import SilentError from 'silent-error';
|
|
3
|
+
import { GlintConfig } from './config.js';
|
|
2
4
|
import { ConfigLoader } from './loader.js';
|
|
3
5
|
export { GlintConfig } from './config.js';
|
|
4
6
|
export { GlintEnvironment } from './environment.js';
|
|
@@ -23,4 +25,13 @@ export function loadConfig(from) {
|
|
|
23
25
|
export function findConfig(from) {
|
|
24
26
|
return new ConfigLoader().configForDirectory(from);
|
|
25
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Creates a default GlintConfig with ember-template-imports environment
|
|
30
|
+
* for use when no tsconfig.json or jsconfig.json exists. This enables
|
|
31
|
+
* Glint to provide IntelliSense in JavaScript-only Ember projects.
|
|
32
|
+
*/
|
|
33
|
+
export function createDefaultConfig(ts, rootDir) {
|
|
34
|
+
const syntheticConfigPath = path.join(rootDir, 'jsconfig.json');
|
|
35
|
+
return new GlintConfig(ts, syntheticConfigPath, { environment: 'ember-template-imports' });
|
|
36
|
+
}
|
|
26
37
|
//# sourceMappingURL=index.js.map
|
package/lib/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE3D;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,WAAW,CAAC,0CAA0C,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,YAAY,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,WAAW,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE3D;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,WAAW,CAAC,0CAA0C,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,YAAY,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAAa,EAAE,OAAe;IAChE,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAChE,OAAO,IAAI,WAAW,CAAC,EAAE,EAAE,mBAAmB,EAAE,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC,CAAC;AAC7F,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preprocess.d.ts","sourceRoot":"","sources":["../../../../src/environment-ember-template-imports/-private/environment/preprocess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAc,cAAc,EAAoB,MAAM,aAAa,CAAC;AAQ3E,eAAO,MAAM,UAAU,EAAE,wBAAwB,CAAC,cAAc,
|
|
1
|
+
{"version":3,"file":"preprocess.d.ts","sourceRoot":"","sources":["../../../../src/environment-ember-template-imports/-private/environment/preprocess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAc,cAAc,EAAoB,MAAM,aAAa,CAAC;AAQ3E,eAAO,MAAM,UAAU,EAAE,wBAAwB,CAAC,cAAc,CA0C/D,CAAC"}
|
|
@@ -4,52 +4,34 @@ const TEMPLATE_END = '`]';
|
|
|
4
4
|
import { Preprocessor } from 'content-tag';
|
|
5
5
|
const p = new Preprocessor();
|
|
6
6
|
export const preprocess = (source, path) => {
|
|
7
|
-
// NOTE: https://github.com/embroider-build/content-tag/issues/45
|
|
8
|
-
// All indicies are byte-index, not char-index.
|
|
9
7
|
let templates = p.parse(source, { filename: path });
|
|
10
8
|
let templateLocations = [];
|
|
11
9
|
let contents = '';
|
|
12
|
-
let
|
|
13
|
-
let deltaBytes = 0;
|
|
14
|
-
let sourceBuffer = getBuffer(source);
|
|
10
|
+
let sourceOffset = 0;
|
|
15
11
|
for (let template of templates) {
|
|
16
|
-
let
|
|
17
|
-
let
|
|
18
|
-
let
|
|
19
|
-
let
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
let
|
|
28
|
-
|
|
29
|
-
contents = contents.concat(TEMPLATE_START);
|
|
30
|
-
// For TEMPLATE_START & TEMPLATE_END, characters === bytes
|
|
31
|
-
deltaBytes += startTagLengthBytes - TEMPLATE_START.length;
|
|
32
|
-
let transformedEnd = endTagOffsetBytes - deltaBytes + TEMPLATE_END.length;
|
|
33
|
-
let templateContentSegment = sourceBuffer.subarray(startTagOffsetBytes + startTagLengthBytes, endTagOffsetBytes);
|
|
34
|
-
let templateContentSegmentString = templateContentSegment.toString();
|
|
35
|
-
let escapedTemplateContentSegment = templateContentSegmentString
|
|
36
|
-
.replaceAll('${{', '\\${{')
|
|
37
|
-
.replaceAll('`', '\\`');
|
|
38
|
-
deltaBytes += templateContentSegmentString.length - escapedTemplateContentSegment.length;
|
|
39
|
-
contents = contents.concat(escapedTemplateContentSegment);
|
|
40
|
-
contents = contents.concat(TEMPLATE_END);
|
|
41
|
-
deltaBytes += endTagLengthBytes - TEMPLATE_END.length;
|
|
42
|
-
sourceOffsetBytes = endTagOffsetBytes + endTagLengthBytes;
|
|
12
|
+
let startTagOffset = template.startRange.startUtf16Codepoint;
|
|
13
|
+
let startTagEnd = template.startRange.endUtf16Codepoint;
|
|
14
|
+
let endTagOffset = template.endRange.startUtf16Codepoint;
|
|
15
|
+
let endTagEnd = template.endRange.endUtf16Codepoint;
|
|
16
|
+
contents += source.slice(sourceOffset, startTagOffset);
|
|
17
|
+
let transformedStart = contents.length;
|
|
18
|
+
contents += TEMPLATE_START;
|
|
19
|
+
let templateContent = source.slice(startTagEnd, endTagOffset);
|
|
20
|
+
let escapedContent = templateContent.replaceAll('${{', '\\${{').replaceAll('`', '\\`');
|
|
21
|
+
contents += escapedContent;
|
|
22
|
+
contents += TEMPLATE_END;
|
|
23
|
+
let transformedEnd = contents.length;
|
|
24
|
+
sourceOffset = endTagEnd;
|
|
43
25
|
templateLocations.push({
|
|
44
|
-
startTagOffset
|
|
45
|
-
endTagOffset
|
|
46
|
-
startTagLength:
|
|
47
|
-
endTagLength:
|
|
48
|
-
transformedStart
|
|
49
|
-
transformedEnd
|
|
26
|
+
startTagOffset,
|
|
27
|
+
endTagOffset,
|
|
28
|
+
startTagLength: startTagEnd - startTagOffset,
|
|
29
|
+
endTagLength: endTagEnd - endTagOffset,
|
|
30
|
+
transformedStart,
|
|
31
|
+
transformedEnd,
|
|
50
32
|
});
|
|
51
33
|
}
|
|
52
|
-
contents
|
|
34
|
+
contents += source.slice(sourceOffset);
|
|
53
35
|
return {
|
|
54
36
|
contents,
|
|
55
37
|
data: {
|
|
@@ -57,17 +39,4 @@ export const preprocess = (source, path) => {
|
|
|
57
39
|
},
|
|
58
40
|
};
|
|
59
41
|
};
|
|
60
|
-
function byteToCharIndex(str, byteOffset) {
|
|
61
|
-
const buf = getBuffer(str);
|
|
62
|
-
return buf.subarray(0, byteOffset).toString().length;
|
|
63
|
-
}
|
|
64
|
-
const BufferMap = new Map();
|
|
65
|
-
function getBuffer(str) {
|
|
66
|
-
let buf = BufferMap.get(str);
|
|
67
|
-
if (!buf) {
|
|
68
|
-
buf = Buffer.from(str);
|
|
69
|
-
BufferMap.set(str, buf);
|
|
70
|
-
}
|
|
71
|
-
return buf;
|
|
72
|
-
}
|
|
73
42
|
//# sourceMappingURL=preprocess.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preprocess.js","sourceRoot":"","sources":["../../../../src/environment-ember-template-imports/-private/environment/preprocess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAoC,MAAM,aAAa,CAAC;AAE3E,MAAM,cAAc,GAAG,IAAI,UAAU,IAAI,CAAC;AAC1C,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,MAAM,CAAC,GAAG,IAAI,YAAY,EAAE,CAAC;AAE7B,MAAM,CAAC,MAAM,UAAU,GAA6C,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;IACnF,
|
|
1
|
+
{"version":3,"file":"preprocess.js","sourceRoot":"","sources":["../../../../src/environment-ember-template-imports/-private/environment/preprocess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAoC,MAAM,aAAa,CAAC;AAE3E,MAAM,cAAc,GAAG,IAAI,UAAU,IAAI,CAAC;AAC1C,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,MAAM,CAAC,GAAG,IAAI,YAAY,EAAE,CAAC;AAE7B,MAAM,CAAC,MAAM,UAAU,GAA6C,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;IACnF,IAAI,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAEpD,IAAI,iBAAiB,GAA4B,EAAE,CAAC;IACpD,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,IAAI,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC,mBAAmB,CAAC;QAC7D,IAAI,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC;QACxD,IAAI,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACzD,IAAI,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAEpD,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QAEvD,IAAI,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC;QACvC,QAAQ,IAAI,cAAc,CAAC;QAE3B,IAAI,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC9D,IAAI,cAAc,GAAG,eAAe,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACvF,QAAQ,IAAI,cAAc,CAAC;QAC3B,QAAQ,IAAI,YAAY,CAAC;QACzB,IAAI,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;QAErC,YAAY,GAAG,SAAS,CAAC;QACzB,iBAAiB,CAAC,IAAI,CAAC;YACrB,cAAc;YACd,YAAY;YACZ,cAAc,EAAE,WAAW,GAAG,cAAc;YAC5C,YAAY,EAAE,SAAS,GAAG,YAAY;YACtC,gBAAgB;YAChB,cAAc;SACf,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACvC,OAAO;QACL,QAAQ;QACR,IAAI,EAAE;YACJ,iBAAiB;SAClB;KACF,CAAC;AACJ,CAAC,CAAC"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { GlintConfig, loadConfig, findConfig } from './config/index.js';
|
|
1
|
+
import { GlintConfig, loadConfig, findConfig, createDefaultConfig } from './config/index.js';
|
|
2
2
|
import { createEmberLanguagePlugin } from './volar/ember-language-plugin.js';
|
|
3
3
|
import { VirtualGtsCode } from './volar/gts-virtual-code.js';
|
|
4
4
|
import { augmentDiagnostics } from './transform/diagnostics/augmentation.js';
|
|
5
|
-
export { loadConfig, findConfig, createEmberLanguagePlugin, VirtualGtsCode, augmentDiagnostics };
|
|
5
|
+
export { loadConfig, findConfig, createDefaultConfig, createEmberLanguagePlugin, VirtualGtsCode, augmentDiagnostics, };
|
|
6
6
|
export type { GlintConfig };
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,EACL,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,yBAAyB,EACzB,cAAc,EACd,kBAAkB,GACnB,CAAC;AAEF,YAAY,EAAE,WAAW,EAAE,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { loadConfig, findConfig } from './config/index.js';
|
|
1
|
+
import { loadConfig, findConfig, createDefaultConfig } from './config/index.js';
|
|
2
2
|
import { createEmberLanguagePlugin } from './volar/ember-language-plugin.js';
|
|
3
3
|
import { VirtualGtsCode } from './volar/gts-virtual-code.js';
|
|
4
4
|
import { augmentDiagnostics } from './transform/diagnostics/augmentation.js';
|
|
5
|
-
export { loadConfig, findConfig, createEmberLanguagePlugin, VirtualGtsCode, augmentDiagnostics };
|
|
5
|
+
export { loadConfig, findConfig, createDefaultConfig, createEmberLanguagePlugin, VirtualGtsCode, augmentDiagnostics, };
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,EACL,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,yBAAyB,EACzB,cAAc,EACd,kBAAkB,GACnB,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as path from 'node:path';
|
|
1
2
|
import { createLanguage } from '@volar/language-core';
|
|
2
3
|
import { createLanguageServiceEnvironment } from '@volar/language-server/lib/project/simpleProject.js';
|
|
3
4
|
import { createConnection, createServer } from '@volar/language-server/node.js';
|
|
@@ -7,6 +8,7 @@ import { create as createHtmlSyntacticPlugin } from 'volar-service-html';
|
|
|
7
8
|
import { create as createTypeScriptSyntacticPlugin } from 'volar-service-typescript/lib/plugins/syntactic.js';
|
|
8
9
|
import { URI } from 'vscode-uri';
|
|
9
10
|
import { ConfigLoader } from '../config/loader.js';
|
|
11
|
+
import { createDefaultConfig } from '../config/index.js';
|
|
10
12
|
import { create as createCompilerErrorsPlugin } from '../plugins/g-compiler-errors.js';
|
|
11
13
|
import { create as createComponentHoverPlugin } from '../plugins/g-component-hover.js';
|
|
12
14
|
import { create as createTemplateTagSymbolsPlugin } from '../plugins/g-template-tag-symbols.js';
|
|
@@ -119,20 +121,27 @@ connection.onInitialize((params) => {
|
|
|
119
121
|
getLanguageId: (uri) => server.documents.get(uri)?.languageId,
|
|
120
122
|
},
|
|
121
123
|
];
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
124
|
+
{
|
|
125
|
+
let glintConfig = null;
|
|
126
|
+
const isRealConfigFile = tsconfigFileName &&
|
|
127
|
+
!tsconfigFileName.startsWith('/dev/null') &&
|
|
128
|
+
tsconfigFileName.endsWith('.json');
|
|
129
|
+
if (isRealConfigFile) {
|
|
130
|
+
const configLoader = new ConfigLoader(logInfo);
|
|
131
|
+
glintConfig = configLoader.configForFile(tsconfigFileName);
|
|
129
132
|
}
|
|
130
|
-
|
|
131
|
-
|
|
133
|
+
if (!glintConfig) {
|
|
134
|
+
const rootDir = isRealConfigFile
|
|
135
|
+
? path.dirname(tsconfigFileName)
|
|
136
|
+
: params.workspaceFolders?.[0]
|
|
137
|
+
? URI.parse(params.workspaceFolders[0].uri).fsPath
|
|
138
|
+
: process.cwd();
|
|
139
|
+
logInfo(`Using default Glint config for ${rootDir}.`);
|
|
140
|
+
glintConfig = createDefaultConfig(ts, rootDir);
|
|
132
141
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
142
|
+
logInfo(`Glint config active for ${tsconfigFileName ?? 'default'}.`);
|
|
143
|
+
const emberLanguagePlugin = createEmberLanguagePlugin(glintConfig);
|
|
144
|
+
languagePlugins.push(emberLanguagePlugin);
|
|
136
145
|
}
|
|
137
146
|
const language = createLanguage(languagePlugins, createUriMap(), (uri) => {
|
|
138
147
|
const document = server.documents.get(uri);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"language-server.js","sourceRoot":"","sources":["../../src/volar/language-server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"language-server.js","sourceRoot":"","sources":["../../src/volar/language-server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@glint/ember-tsc",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"repository": "typed-ember/glint",
|
|
5
5
|
"description": "A CLI for performing typechecking on Glimmer templates",
|
|
6
6
|
"license": "MIT",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"@volar/source-map": "~2.4.28",
|
|
65
65
|
"@volar/test-utils": "~2.4.28",
|
|
66
66
|
"@volar/typescript": "~2.4.28",
|
|
67
|
-
"content-tag": "^
|
|
67
|
+
"content-tag": "^4.1.1",
|
|
68
68
|
"silent-error": "^1.1.1",
|
|
69
69
|
"volar-service-html": "~0.0.68",
|
|
70
70
|
"volar-service-typescript": "~0.0.68",
|
package/src/config/index.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import * as path from 'node:path';
|
|
1
2
|
import SilentError from 'silent-error';
|
|
3
|
+
import type TS from 'typescript';
|
|
2
4
|
import { GlintConfig } from './config.js';
|
|
3
5
|
import { ConfigLoader } from './loader.js';
|
|
4
6
|
|
|
@@ -28,3 +30,13 @@ export function loadConfig(from: string): GlintConfig {
|
|
|
28
30
|
export function findConfig(from: string): GlintConfig | null {
|
|
29
31
|
return new ConfigLoader().configForDirectory(from);
|
|
30
32
|
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Creates a default GlintConfig with ember-template-imports environment
|
|
36
|
+
* for use when no tsconfig.json or jsconfig.json exists. This enables
|
|
37
|
+
* Glint to provide IntelliSense in JavaScript-only Ember projects.
|
|
38
|
+
*/
|
|
39
|
+
export function createDefaultConfig(ts: typeof TS, rootDir: string): GlintConfig {
|
|
40
|
+
const syntheticConfigPath = path.join(rootDir, 'jsconfig.json');
|
|
41
|
+
return new GlintConfig(ts, syntheticConfigPath, { environment: 'ember-template-imports' });
|
|
42
|
+
}
|
|
@@ -8,63 +8,41 @@ import { Preprocessor } from 'content-tag';
|
|
|
8
8
|
const p = new Preprocessor();
|
|
9
9
|
|
|
10
10
|
export const preprocess: GlintExtensionPreprocess<PreprocessData> = (source, path) => {
|
|
11
|
-
// NOTE: https://github.com/embroider-build/content-tag/issues/45
|
|
12
|
-
// All indicies are byte-index, not char-index.
|
|
13
11
|
let templates = p.parse(source, { filename: path });
|
|
14
12
|
|
|
15
13
|
let templateLocations: Array<TemplateLocation> = [];
|
|
16
14
|
let contents = '';
|
|
17
|
-
let
|
|
18
|
-
let deltaBytes = 0;
|
|
19
|
-
|
|
20
|
-
let sourceBuffer = getBuffer(source);
|
|
15
|
+
let sourceOffset = 0;
|
|
21
16
|
|
|
22
17
|
for (let template of templates) {
|
|
23
|
-
let
|
|
24
|
-
let
|
|
25
|
-
let
|
|
26
|
-
let
|
|
27
|
-
let transformedStartBytes = startTagOffsetBytes - deltaBytes;
|
|
28
|
-
/**
|
|
29
|
-
* TODO: we want content-tag to manage all this for us, as managing indicies
|
|
30
|
-
* can be error-prone.
|
|
31
|
-
*
|
|
32
|
-
* SEE: https://github.com/embroider-build/content-tag/issues/39#issuecomment-1832443310
|
|
33
|
-
*/
|
|
34
|
-
let prefixingSegment = sourceBuffer.subarray(sourceOffsetBytes, startTagOffsetBytes);
|
|
35
|
-
contents = contents.concat(prefixingSegment.toString());
|
|
36
|
-
contents = contents.concat(TEMPLATE_START);
|
|
18
|
+
let startTagOffset = template.startRange.startUtf16Codepoint;
|
|
19
|
+
let startTagEnd = template.startRange.endUtf16Codepoint;
|
|
20
|
+
let endTagOffset = template.endRange.startUtf16Codepoint;
|
|
21
|
+
let endTagEnd = template.endRange.endUtf16Codepoint;
|
|
37
22
|
|
|
38
|
-
|
|
39
|
-
deltaBytes += startTagLengthBytes - TEMPLATE_START.length;
|
|
23
|
+
contents += source.slice(sourceOffset, startTagOffset);
|
|
40
24
|
|
|
41
|
-
let
|
|
42
|
-
|
|
43
|
-
startTagOffsetBytes + startTagLengthBytes,
|
|
44
|
-
endTagOffsetBytes,
|
|
45
|
-
);
|
|
46
|
-
let templateContentSegmentString = templateContentSegment.toString();
|
|
47
|
-
let escapedTemplateContentSegment = templateContentSegmentString
|
|
48
|
-
.replaceAll('${{', '\\${{')
|
|
49
|
-
.replaceAll('`', '\\`');
|
|
50
|
-
deltaBytes += templateContentSegmentString.length - escapedTemplateContentSegment.length;
|
|
25
|
+
let transformedStart = contents.length;
|
|
26
|
+
contents += TEMPLATE_START;
|
|
51
27
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
28
|
+
let templateContent = source.slice(startTagEnd, endTagOffset);
|
|
29
|
+
let escapedContent = templateContent.replaceAll('${{', '\\${{').replaceAll('`', '\\`');
|
|
30
|
+
contents += escapedContent;
|
|
31
|
+
contents += TEMPLATE_END;
|
|
32
|
+
let transformedEnd = contents.length;
|
|
55
33
|
|
|
56
|
-
|
|
34
|
+
sourceOffset = endTagEnd;
|
|
57
35
|
templateLocations.push({
|
|
58
|
-
startTagOffset
|
|
59
|
-
endTagOffset
|
|
60
|
-
startTagLength:
|
|
61
|
-
endTagLength:
|
|
62
|
-
transformedStart
|
|
63
|
-
transformedEnd
|
|
36
|
+
startTagOffset,
|
|
37
|
+
endTagOffset,
|
|
38
|
+
startTagLength: startTagEnd - startTagOffset,
|
|
39
|
+
endTagLength: endTagEnd - endTagOffset,
|
|
40
|
+
transformedStart,
|
|
41
|
+
transformedEnd,
|
|
64
42
|
});
|
|
65
43
|
}
|
|
66
44
|
|
|
67
|
-
contents
|
|
45
|
+
contents += source.slice(sourceOffset);
|
|
68
46
|
return {
|
|
69
47
|
contents,
|
|
70
48
|
data: {
|
|
@@ -72,19 +50,3 @@ export const preprocess: GlintExtensionPreprocess<PreprocessData> = (source, pat
|
|
|
72
50
|
},
|
|
73
51
|
};
|
|
74
52
|
};
|
|
75
|
-
|
|
76
|
-
function byteToCharIndex(str: string, byteOffset: number): number {
|
|
77
|
-
const buf = getBuffer(str);
|
|
78
|
-
return buf.subarray(0, byteOffset).toString().length;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
const BufferMap = new Map();
|
|
82
|
-
|
|
83
|
-
function getBuffer(str: string): Buffer {
|
|
84
|
-
let buf = BufferMap.get(str);
|
|
85
|
-
if (!buf) {
|
|
86
|
-
buf = Buffer.from(str);
|
|
87
|
-
BufferMap.set(str, buf);
|
|
88
|
-
}
|
|
89
|
-
return buf;
|
|
90
|
-
}
|
package/src/index.ts
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
import { GlintConfig, loadConfig, findConfig } from './config/index.js';
|
|
1
|
+
import { GlintConfig, loadConfig, findConfig, createDefaultConfig } from './config/index.js';
|
|
2
2
|
import { createEmberLanguagePlugin } from './volar/ember-language-plugin.js';
|
|
3
3
|
|
|
4
4
|
import { VirtualGtsCode } from './volar/gts-virtual-code.js';
|
|
5
5
|
import { augmentDiagnostics } from './transform/diagnostics/augmentation.js';
|
|
6
6
|
|
|
7
|
-
export {
|
|
7
|
+
export {
|
|
8
|
+
loadConfig,
|
|
9
|
+
findConfig,
|
|
10
|
+
createDefaultConfig,
|
|
11
|
+
createEmberLanguagePlugin,
|
|
12
|
+
VirtualGtsCode,
|
|
13
|
+
augmentDiagnostics,
|
|
14
|
+
};
|
|
8
15
|
|
|
9
16
|
export type { GlintConfig };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as path from 'node:path';
|
|
1
2
|
import { createLanguage } from '@volar/language-core';
|
|
2
3
|
import type { LanguagePlugin, LanguageServer } from '@volar/language-server';
|
|
3
4
|
import { createLanguageServiceEnvironment } from '@volar/language-server/lib/project/simpleProject.js';
|
|
@@ -9,6 +10,7 @@ import { create as createHtmlSyntacticPlugin } from 'volar-service-html';
|
|
|
9
10
|
import { create as createTypeScriptSyntacticPlugin } from 'volar-service-typescript/lib/plugins/syntactic.js';
|
|
10
11
|
import { URI } from 'vscode-uri';
|
|
11
12
|
import { ConfigLoader } from '../config/loader.js';
|
|
13
|
+
import { createDefaultConfig } from '../config/index.js';
|
|
12
14
|
import { create as createCompilerErrorsPlugin } from '../plugins/g-compiler-errors.js';
|
|
13
15
|
import { create as createComponentHoverPlugin } from '../plugins/g-component-hover.js';
|
|
14
16
|
import type { ComponentMeta, TsPluginClient } from '../plugins/g-component-hover.js';
|
|
@@ -143,18 +145,28 @@ connection.onInitialize((params) => {
|
|
|
143
145
|
},
|
|
144
146
|
];
|
|
145
147
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
const
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
148
|
+
{
|
|
149
|
+
let glintConfig = null;
|
|
150
|
+
const isRealConfigFile =
|
|
151
|
+
tsconfigFileName &&
|
|
152
|
+
!tsconfigFileName.startsWith('/dev/null') &&
|
|
153
|
+
tsconfigFileName.endsWith('.json');
|
|
154
|
+
if (isRealConfigFile) {
|
|
155
|
+
const configLoader = new ConfigLoader(logInfo);
|
|
156
|
+
glintConfig = configLoader.configForFile(tsconfigFileName);
|
|
157
|
+
}
|
|
158
|
+
if (!glintConfig) {
|
|
159
|
+
const rootDir = isRealConfigFile
|
|
160
|
+
? path.dirname(tsconfigFileName!)
|
|
161
|
+
: params.workspaceFolders?.[0]
|
|
162
|
+
? URI.parse(params.workspaceFolders[0].uri).fsPath
|
|
163
|
+
: process.cwd();
|
|
164
|
+
logInfo(`Using default Glint config for ${rootDir}.`);
|
|
165
|
+
glintConfig = createDefaultConfig(ts, rootDir);
|
|
155
166
|
}
|
|
156
|
-
|
|
157
|
-
|
|
167
|
+
logInfo(`Glint config active for ${tsconfigFileName ?? 'default'}.`);
|
|
168
|
+
const emberLanguagePlugin = createEmberLanguagePlugin(glintConfig);
|
|
169
|
+
languagePlugins.push(emberLanguagePlugin);
|
|
158
170
|
}
|
|
159
171
|
|
|
160
172
|
const language = createLanguage<URI>(languagePlugins, createUriMap(), (uri) => {
|