@glint/ember-tsc 1.6.2 → 1.7.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/lib/cli/run-volar-tsc.d.ts.map +1 -1
- package/lib/cli/run-volar-tsc.js +44 -0
- package/lib/cli/run-volar-tsc.js.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/transform/diagnostics/transform-errors.d.ts +21 -0
- package/lib/transform/diagnostics/transform-errors.d.ts.map +1 -0
- package/lib/transform/diagnostics/transform-errors.js +35 -0
- package/lib/transform/diagnostics/transform-errors.js.map +1 -0
- package/lib/transform/template/rewrite-module.d.ts.map +1 -1
- package/lib/transform/template/rewrite-module.js +20 -0
- package/lib/transform/template/rewrite-module.js.map +1 -1
- package/package.json +2 -2
- package/src/cli/run-volar-tsc.ts +54 -0
- package/src/index.ts +2 -0
- package/src/transform/diagnostics/transform-errors.ts +41 -0
- package/src/transform/template/rewrite-module.ts +22 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-volar-tsc.d.ts","sourceRoot":"","sources":["../../src/cli/run-volar-tsc.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run-volar-tsc.d.ts","sourceRoot":"","sources":["../../src/cli/run-volar-tsc.ts"],"names":[],"mappings":"AAWA,wBAAgB,GAAG,IAAI,IAAI,CA+B1B"}
|
package/lib/cli/run-volar-tsc.js
CHANGED
|
@@ -3,7 +3,12 @@ import { createEmberLanguagePlugin } from '../volar/ember-language-plugin.js';
|
|
|
3
3
|
import { findConfig } from '../config/index.js';
|
|
4
4
|
import { createRequire } from 'node:module';
|
|
5
5
|
const require = createRequire(import.meta.url);
|
|
6
|
+
// Loaded via CJS require so we can monkey-patch readFileSync; the ESM namespace
|
|
7
|
+
// object would be frozen.
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
9
|
+
const fs = require('node:fs');
|
|
6
10
|
export function run() {
|
|
11
|
+
patchVolarProxyForExtensionlessImports();
|
|
7
12
|
let cwd = process.cwd();
|
|
8
13
|
const options = {
|
|
9
14
|
extraSupportedExtensions: ['.gjs', '.gts'],
|
|
@@ -29,4 +34,43 @@ export function run() {
|
|
|
29
34
|
});
|
|
30
35
|
main();
|
|
31
36
|
}
|
|
37
|
+
// Volar's proxyCreateProgram fast-paths module resolution back to the
|
|
38
|
+
// original compiler host when no import literal ends in a `.gts`/`.gjs`
|
|
39
|
+
// extension. In one-shot `tsc` the original host has no resolver, so volar's
|
|
40
|
+
// wrapper (which makes `Bang.gts` look like `Bang.d.ts` to tsc's extensionless
|
|
41
|
+
// resolver via `resolveHiddenExtensions`) runs and extensionless imports work.
|
|
42
|
+
// But `tsc --watch` installs a cached resolver on the host before volar's
|
|
43
|
+
// proxy runs, so extensionless `.gts` imports skip the wrapper and fail with
|
|
44
|
+
// TS2307. Patch the compiled volar source so the fast-path is also disabled
|
|
45
|
+
// whenever any plugin sets `resolveHiddenExtensions: true`.
|
|
46
|
+
//
|
|
47
|
+
// Upstream fix: https://github.com/volarjs/volar.js/pull/309 — once that ships
|
|
48
|
+
// in a `@volar/typescript` release we depend on, this monkey-patch can go.
|
|
49
|
+
// Tracking: https://github.com/typed-ember/glint/issues/806
|
|
50
|
+
function patchVolarProxyForExtensionlessImports() {
|
|
51
|
+
const originalReadFileSync = fs.readFileSync;
|
|
52
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
53
|
+
fs.readFileSync = function (...args) {
|
|
54
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
55
|
+
const result = originalReadFileSync.apply(fs, args);
|
|
56
|
+
const filePath = args[0];
|
|
57
|
+
if (typeof filePath === 'string' && filePath.endsWith('/proxyCreateProgram.js')) {
|
|
58
|
+
const text = typeof result === 'string' ? result : result.toString('utf8');
|
|
59
|
+
const patched = applyProxyPatches(text);
|
|
60
|
+
return typeof result === 'string' ? patched : Buffer.from(patched);
|
|
61
|
+
}
|
|
62
|
+
return result;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function applyProxyPatches(source) {
|
|
66
|
+
const guard = '!languagePlugins.some(p => p.typescript?.resolveHiddenExtensions) && ';
|
|
67
|
+
const literalsPattern = /(if \(resolveModuleNameLiterals\s+&& )(moduleLiterals\.every\(name => !pluginExtensions\.some\(ext => name\.text\.endsWith\(ext\)\)\)\) \{)/;
|
|
68
|
+
const namesPattern = /(if \(resolveModuleNames && )(moduleNames\.every\(name => !pluginExtensions\.some\(ext => name\.endsWith\(ext\)\)\)\) \{)/;
|
|
69
|
+
if (!literalsPattern.test(source) || !namesPattern.test(source)) {
|
|
70
|
+
throw new Error('[glint] failed to patch @volar/typescript proxyCreateProgram.js: ' +
|
|
71
|
+
'fast-path conditions not found in expected shape. ' +
|
|
72
|
+
'The volar dep may have changed; update applyProxyPatches() in run-volar-tsc.ts.');
|
|
73
|
+
}
|
|
74
|
+
return source.replace(literalsPattern, `$1${guard}$2`).replace(namesPattern, `$1${guard}$2`);
|
|
75
|
+
}
|
|
32
76
|
//# sourceMappingURL=run-volar-tsc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-volar-tsc.js","sourceRoot":"","sources":["../../src/cli/run-volar-tsc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,4CAA4C,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"run-volar-tsc.js","sourceRoot":"","sources":["../../src/cli/run-volar-tsc.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { GlintConfig, loadConfig, findConfig, createDefaultConfig } from './conf
|
|
|
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
|
-
|
|
5
|
+
import { getTransformErrorDiagnostics } from './transform/diagnostics/transform-errors.js';
|
|
6
|
+
export { loadConfig, findConfig, createDefaultConfig, createEmberLanguagePlugin, VirtualGtsCode, augmentDiagnostics, getTransformErrorDiagnostics, };
|
|
6
7
|
export type { GlintConfig };
|
|
7
8
|
//# 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,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;
|
|
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;AAC7E,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAE3F,OAAO,EACL,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,yBAAyB,EACzB,cAAc,EACd,kBAAkB,EAClB,4BAA4B,GAC7B,CAAC;AAEF,YAAY,EAAE,WAAW,EAAE,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -2,5 +2,6 @@ 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
|
-
|
|
5
|
+
import { getTransformErrorDiagnostics } from './transform/diagnostics/transform-errors.js';
|
|
6
|
+
export { loadConfig, findConfig, createDefaultConfig, createEmberLanguagePlugin, VirtualGtsCode, augmentDiagnostics, getTransformErrorDiagnostics, };
|
|
6
7
|
//# 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,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;
|
|
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;AAC7E,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAE3F,OAAO,EACL,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,yBAAyB,EACzB,cAAc,EACd,kBAAkB,EAClB,4BAA4B,GAC7B,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type * as ts from 'typescript';
|
|
2
|
+
import TransformedModule from '../template/transformed-module.js';
|
|
3
|
+
import { Diagnostic } from './index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Synthesize TypeScript diagnostics for any unrecoverable transform errors
|
|
6
|
+
* (currently: content-tag parse failures) so that consumers of the
|
|
7
|
+
* tsserver-plugin path see the underlying error rather than nothing.
|
|
8
|
+
*
|
|
9
|
+
* Without this, when content-tag fails to parse a .gts/.gjs file we suppress
|
|
10
|
+
* the resulting flood of TS errors by blanking the transformed contents (see
|
|
11
|
+
* `rewriteModule`). That leaves the tsserver path silent on its own — fine
|
|
12
|
+
* inside VS Code, where the Volar language server's `g-compiler-errors`
|
|
13
|
+
* plugin surfaces the error, but unhelpful for any consumer running only
|
|
14
|
+
* the tsserver plugin.
|
|
15
|
+
*
|
|
16
|
+
* Offsets are in original (.gts) source coordinates; tsserver maps them to
|
|
17
|
+
* line/column using its own ScriptInfo for the source file, so the same
|
|
18
|
+
* value works regardless of how we blanked the transformed output.
|
|
19
|
+
*/
|
|
20
|
+
export declare function getTransformErrorDiagnostics(transformedModule: TransformedModule, sourceFile: ts.SourceFile): Diagnostic[];
|
|
21
|
+
//# sourceMappingURL=transform-errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-errors.d.ts","sourceRoot":"","sources":["../../../src/transform/diagnostics/transform-errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,iBAAiB,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,4BAA4B,CAC1C,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,EAAE,CAAC,UAAU,GACxB,UAAU,EAAE,CAiBd"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Synthesize TypeScript diagnostics for any unrecoverable transform errors
|
|
3
|
+
* (currently: content-tag parse failures) so that consumers of the
|
|
4
|
+
* tsserver-plugin path see the underlying error rather than nothing.
|
|
5
|
+
*
|
|
6
|
+
* Without this, when content-tag fails to parse a .gts/.gjs file we suppress
|
|
7
|
+
* the resulting flood of TS errors by blanking the transformed contents (see
|
|
8
|
+
* `rewriteModule`). That leaves the tsserver path silent on its own — fine
|
|
9
|
+
* inside VS Code, where the Volar language server's `g-compiler-errors`
|
|
10
|
+
* plugin surfaces the error, but unhelpful for any consumer running only
|
|
11
|
+
* the tsserver plugin.
|
|
12
|
+
*
|
|
13
|
+
* Offsets are in original (.gts) source coordinates; tsserver maps them to
|
|
14
|
+
* line/column using its own ScriptInfo for the source file, so the same
|
|
15
|
+
* value works regardless of how we blanked the transformed output.
|
|
16
|
+
*/
|
|
17
|
+
export function getTransformErrorDiagnostics(transformedModule, sourceFile) {
|
|
18
|
+
return transformedModule.errors
|
|
19
|
+
.filter((error) => error.isContentTagError)
|
|
20
|
+
.map((error) => ({
|
|
21
|
+
file: sourceFile,
|
|
22
|
+
start: error.location.start,
|
|
23
|
+
length: Math.max(1, error.location.end - error.location.start),
|
|
24
|
+
messageText: error.message,
|
|
25
|
+
// ts.DiagnosticCategory.Error — hardcoded to avoid importing the ts
|
|
26
|
+
// namespace just for the enum.
|
|
27
|
+
category: 1,
|
|
28
|
+
// Matches the code used by the Volar language server's compiler-errors
|
|
29
|
+
// plugin, so the two surfaces present a consistent identity.
|
|
30
|
+
code: 0,
|
|
31
|
+
source: 'glint',
|
|
32
|
+
isContentTagError: true,
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=transform-errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-errors.js","sourceRoot":"","sources":["../../../src/transform/diagnostics/transform-errors.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,4BAA4B,CAC1C,iBAAoC,EACpC,UAAyB;IAEzB,OAAO,iBAAiB,CAAC,MAAM;SAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC;SAC1C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACf,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK;QAC3B,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC9D,WAAW,EAAE,KAAK,CAAC,OAAO;QAC1B,oEAAoE;QACpE,+BAA+B;QAC/B,QAAQ,EAAE,CAAC;QACX,uEAAuE;QACvE,6DAA6D;QAC7D,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,OAAO;QACf,iBAAiB,EAAE,IAAI;KACxB,CAAC,CAAC,CAAC;AACR,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rewrite-module.d.ts","sourceRoot":"","sources":["../../../src/transform/template/rewrite-module.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAU,KAAK,EAAE,MAAM,YAAY,CAAC;AAI3C,OAAO,iBAAiB,EAAE,EAGxB,UAAU,EAEX,MAAM,yBAAyB,CAAC;AAEjC;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAElD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,KAAK,EACT,EAAE,MAAM,EAAE,EAAE,YAAY,EACxB,WAAW,EAAE,gBAAgB,EAC7B,QAAQ,CAAC,EAAE,MAAM,GAChB,iBAAiB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"rewrite-module.d.ts","sourceRoot":"","sources":["../../../src/transform/template/rewrite-module.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAU,KAAK,EAAE,MAAM,YAAY,CAAC;AAI3C,OAAO,iBAAiB,EAAE,EAGxB,UAAU,EAEX,MAAM,yBAAyB,CAAC;AAEjC;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAElD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,KAAK,EACT,EAAE,MAAM,EAAE,EAAE,YAAY,EACxB,WAAW,EAAE,gBAAgB,EAC7B,QAAQ,CAAC,EAAE,MAAM,GAChB,iBAAiB,GAAG,IAAI,CAgC1B"}
|
|
@@ -18,8 +18,28 @@ export function rewriteModule(ts, { script }, environment, clientId) {
|
|
|
18
18
|
}
|
|
19
19
|
let sparseSpans = completeCorrelatedSpans(partialSpans);
|
|
20
20
|
let { contents, correlatedSpans } = calculateTransformedSource(script, sparseSpans, directives);
|
|
21
|
+
if (errors.some((error) => error.isContentTagError)) {
|
|
22
|
+
// content-tag failed to parse the .gts/.gjs source, which means the
|
|
23
|
+
// "transformed" output above is just the raw source (still containing
|
|
24
|
+
// `<template>` tags etc.). Feeding that to TypeScript would produce a
|
|
25
|
+
// flood of misleading syntax/type errors on top of the underlying
|
|
26
|
+
// parse failure. Blank the transformed output to whitespace so TS sees
|
|
27
|
+
// an effectively empty file and stays quiet. The content-tag error
|
|
28
|
+
// itself is preserved on `errors` and surfaced as the sole diagnostic
|
|
29
|
+
// by the `g-compiler-errors` language service plugin.
|
|
30
|
+
contents = blankNonNewlineChars(contents);
|
|
31
|
+
correlatedSpans = correlatedSpans.map((span) => ({
|
|
32
|
+
...span,
|
|
33
|
+
transformedSource: blankNonNewlineChars(span.transformedSource),
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
21
36
|
return new TransformedModule(contents, errors, directives, correlatedSpans, script.filename);
|
|
22
37
|
}
|
|
38
|
+
function blankNonNewlineChars(value) {
|
|
39
|
+
// Preserve newlines so that line/column tracking still works for any
|
|
40
|
+
// remaining offset-mapping queries; replace everything else with spaces.
|
|
41
|
+
return value.replace(/[^\n]/g, ' ');
|
|
42
|
+
}
|
|
23
43
|
/**
|
|
24
44
|
* Locates any embedded templates in the given AST and returns a corresponding
|
|
25
45
|
* `PartialCorrelatedSpan` for each, as well as any errors encountered. These
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rewrite-module.js","sourceRoot":"","sources":["../../../src/transform/template/rewrite-module.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rewrite-module.js","sourceRoot":"","sources":["../../../src/transform/template/rewrite-module.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.7.1",
|
|
4
4
|
"repository": "typed-ember/glint",
|
|
5
5
|
"description": "A CLI for performing typechecking on Glimmer templates",
|
|
6
6
|
"license": "MIT",
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"@volar/source-map": "~2.4.28",
|
|
76
76
|
"@volar/test-utils": "~2.4.28",
|
|
77
77
|
"@volar/typescript": "~2.4.28",
|
|
78
|
-
"content-tag": "^4.
|
|
78
|
+
"content-tag": "^4.2.0",
|
|
79
79
|
"silent-error": "^1.1.1",
|
|
80
80
|
"volar-service-html": "~0.0.68",
|
|
81
81
|
"volar-service-typescript": "~0.0.68",
|
package/src/cli/run-volar-tsc.ts
CHANGED
|
@@ -4,8 +4,14 @@ import { findConfig } from '../config/index.js';
|
|
|
4
4
|
|
|
5
5
|
import { createRequire } from 'node:module';
|
|
6
6
|
const require = createRequire(import.meta.url);
|
|
7
|
+
// Loaded via CJS require so we can monkey-patch readFileSync; the ESM namespace
|
|
8
|
+
// object would be frozen.
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
10
|
+
const fs = require('node:fs') as typeof import('node:fs');
|
|
7
11
|
|
|
8
12
|
export function run(): void {
|
|
13
|
+
patchVolarProxyForExtensionlessImports();
|
|
14
|
+
|
|
9
15
|
let cwd = process.cwd();
|
|
10
16
|
|
|
11
17
|
const options = {
|
|
@@ -35,3 +41,51 @@ export function run(): void {
|
|
|
35
41
|
});
|
|
36
42
|
main();
|
|
37
43
|
}
|
|
44
|
+
|
|
45
|
+
// Volar's proxyCreateProgram fast-paths module resolution back to the
|
|
46
|
+
// original compiler host when no import literal ends in a `.gts`/`.gjs`
|
|
47
|
+
// extension. In one-shot `tsc` the original host has no resolver, so volar's
|
|
48
|
+
// wrapper (which makes `Bang.gts` look like `Bang.d.ts` to tsc's extensionless
|
|
49
|
+
// resolver via `resolveHiddenExtensions`) runs and extensionless imports work.
|
|
50
|
+
// But `tsc --watch` installs a cached resolver on the host before volar's
|
|
51
|
+
// proxy runs, so extensionless `.gts` imports skip the wrapper and fail with
|
|
52
|
+
// TS2307. Patch the compiled volar source so the fast-path is also disabled
|
|
53
|
+
// whenever any plugin sets `resolveHiddenExtensions: true`.
|
|
54
|
+
//
|
|
55
|
+
// Upstream fix: https://github.com/volarjs/volar.js/pull/309 — once that ships
|
|
56
|
+
// in a `@volar/typescript` release we depend on, this monkey-patch can go.
|
|
57
|
+
// Tracking: https://github.com/typed-ember/glint/issues/806
|
|
58
|
+
function patchVolarProxyForExtensionlessImports(): void {
|
|
59
|
+
const originalReadFileSync = fs.readFileSync;
|
|
60
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
61
|
+
(fs as any).readFileSync = function (...args: unknown[]) {
|
|
62
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
63
|
+
const result = (originalReadFileSync as any).apply(fs, args);
|
|
64
|
+
const filePath = args[0];
|
|
65
|
+
if (typeof filePath === 'string' && filePath.endsWith('/proxyCreateProgram.js')) {
|
|
66
|
+
const text = typeof result === 'string' ? result : (result as Buffer).toString('utf8');
|
|
67
|
+
const patched = applyProxyPatches(text);
|
|
68
|
+
return typeof result === 'string' ? patched : Buffer.from(patched);
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function applyProxyPatches(source: string): string {
|
|
75
|
+
const guard = '!languagePlugins.some(p => p.typescript?.resolveHiddenExtensions) && ';
|
|
76
|
+
|
|
77
|
+
const literalsPattern =
|
|
78
|
+
/(if \(resolveModuleNameLiterals\s+&& )(moduleLiterals\.every\(name => !pluginExtensions\.some\(ext => name\.text\.endsWith\(ext\)\)\)\) \{)/;
|
|
79
|
+
const namesPattern =
|
|
80
|
+
/(if \(resolveModuleNames && )(moduleNames\.every\(name => !pluginExtensions\.some\(ext => name\.endsWith\(ext\)\)\)\) \{)/;
|
|
81
|
+
|
|
82
|
+
if (!literalsPattern.test(source) || !namesPattern.test(source)) {
|
|
83
|
+
throw new Error(
|
|
84
|
+
'[glint] failed to patch @volar/typescript proxyCreateProgram.js: ' +
|
|
85
|
+
'fast-path conditions not found in expected shape. ' +
|
|
86
|
+
'The volar dep may have changed; update applyProxyPatches() in run-volar-tsc.ts.',
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return source.replace(literalsPattern, `$1${guard}$2`).replace(namesPattern, `$1${guard}$2`);
|
|
91
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -3,6 +3,7 @@ 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
|
+
import { getTransformErrorDiagnostics } from './transform/diagnostics/transform-errors.js';
|
|
6
7
|
|
|
7
8
|
export {
|
|
8
9
|
loadConfig,
|
|
@@ -11,6 +12,7 @@ export {
|
|
|
11
12
|
createEmberLanguagePlugin,
|
|
12
13
|
VirtualGtsCode,
|
|
13
14
|
augmentDiagnostics,
|
|
15
|
+
getTransformErrorDiagnostics,
|
|
14
16
|
};
|
|
15
17
|
|
|
16
18
|
export type { GlintConfig };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type * as ts from 'typescript';
|
|
2
|
+
import TransformedModule from '../template/transformed-module.js';
|
|
3
|
+
import { Diagnostic } from './index.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Synthesize TypeScript diagnostics for any unrecoverable transform errors
|
|
7
|
+
* (currently: content-tag parse failures) so that consumers of the
|
|
8
|
+
* tsserver-plugin path see the underlying error rather than nothing.
|
|
9
|
+
*
|
|
10
|
+
* Without this, when content-tag fails to parse a .gts/.gjs file we suppress
|
|
11
|
+
* the resulting flood of TS errors by blanking the transformed contents (see
|
|
12
|
+
* `rewriteModule`). That leaves the tsserver path silent on its own — fine
|
|
13
|
+
* inside VS Code, where the Volar language server's `g-compiler-errors`
|
|
14
|
+
* plugin surfaces the error, but unhelpful for any consumer running only
|
|
15
|
+
* the tsserver plugin.
|
|
16
|
+
*
|
|
17
|
+
* Offsets are in original (.gts) source coordinates; tsserver maps them to
|
|
18
|
+
* line/column using its own ScriptInfo for the source file, so the same
|
|
19
|
+
* value works regardless of how we blanked the transformed output.
|
|
20
|
+
*/
|
|
21
|
+
export function getTransformErrorDiagnostics(
|
|
22
|
+
transformedModule: TransformedModule,
|
|
23
|
+
sourceFile: ts.SourceFile,
|
|
24
|
+
): Diagnostic[] {
|
|
25
|
+
return transformedModule.errors
|
|
26
|
+
.filter((error) => error.isContentTagError)
|
|
27
|
+
.map((error) => ({
|
|
28
|
+
file: sourceFile,
|
|
29
|
+
start: error.location.start,
|
|
30
|
+
length: Math.max(1, error.location.end - error.location.start),
|
|
31
|
+
messageText: error.message,
|
|
32
|
+
// ts.DiagnosticCategory.Error — hardcoded to avoid importing the ts
|
|
33
|
+
// namespace just for the enum.
|
|
34
|
+
category: 1,
|
|
35
|
+
// Matches the code used by the Volar language server's compiler-errors
|
|
36
|
+
// plugin, so the two surfaces present a consistent identity.
|
|
37
|
+
code: 0,
|
|
38
|
+
source: 'glint',
|
|
39
|
+
isContentTagError: true,
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
@@ -49,9 +49,31 @@ export function rewriteModule(
|
|
|
49
49
|
let sparseSpans = completeCorrelatedSpans(partialSpans);
|
|
50
50
|
let { contents, correlatedSpans } = calculateTransformedSource(script, sparseSpans, directives);
|
|
51
51
|
|
|
52
|
+
if (errors.some((error) => error.isContentTagError)) {
|
|
53
|
+
// content-tag failed to parse the .gts/.gjs source, which means the
|
|
54
|
+
// "transformed" output above is just the raw source (still containing
|
|
55
|
+
// `<template>` tags etc.). Feeding that to TypeScript would produce a
|
|
56
|
+
// flood of misleading syntax/type errors on top of the underlying
|
|
57
|
+
// parse failure. Blank the transformed output to whitespace so TS sees
|
|
58
|
+
// an effectively empty file and stays quiet. The content-tag error
|
|
59
|
+
// itself is preserved on `errors` and surfaced as the sole diagnostic
|
|
60
|
+
// by the `g-compiler-errors` language service plugin.
|
|
61
|
+
contents = blankNonNewlineChars(contents);
|
|
62
|
+
correlatedSpans = correlatedSpans.map((span) => ({
|
|
63
|
+
...span,
|
|
64
|
+
transformedSource: blankNonNewlineChars(span.transformedSource),
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
|
|
52
68
|
return new TransformedModule(contents, errors, directives, correlatedSpans, script.filename);
|
|
53
69
|
}
|
|
54
70
|
|
|
71
|
+
function blankNonNewlineChars(value: string): string {
|
|
72
|
+
// Preserve newlines so that line/column tracking still works for any
|
|
73
|
+
// remaining offset-mapping queries; replace everything else with spaces.
|
|
74
|
+
return value.replace(/[^\n]/g, ' ');
|
|
75
|
+
}
|
|
76
|
+
|
|
55
77
|
/**
|
|
56
78
|
* Locates any embedded templates in the given AST and returns a corresponding
|
|
57
79
|
* `PartialCorrelatedSpan` for each, as well as any errors encountered. These
|