@glint/ember-tsc 1.0.1-unstable.0a00188
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 +49 -0
- package/bin/ember-tsc.js +4 -0
- package/bin/glint-language-server.js +2 -0
- package/lib/cli/run-volar-tsc.d.ts +2 -0
- package/lib/cli/run-volar-tsc.d.ts.map +1 -0
- package/lib/cli/run-volar-tsc.js +30 -0
- package/lib/cli/run-volar-tsc.js.map +1 -0
- package/lib/config/config.d.ts +15 -0
- package/lib/config/config.d.ts.map +1 -0
- package/lib/config/config.js +21 -0
- package/lib/config/config.js.map +1 -0
- package/lib/config/environment.d.ts +26 -0
- package/lib/config/environment.d.ts.map +1 -0
- package/lib/config/environment.js +96 -0
- package/lib/config/environment.js.map +1 -0
- package/lib/config/index.d.ts +17 -0
- package/lib/config/index.d.ts.map +1 -0
- package/lib/config/index.js +26 -0
- package/lib/config/index.js.map +1 -0
- package/lib/config/loader.d.ts +25 -0
- package/lib/config/loader.d.ts.map +1 -0
- package/lib/config/loader.js +110 -0
- package/lib/config/loader.js.map +1 -0
- package/lib/config/types.cjs +3 -0
- package/lib/config/types.cjs.map +1 -0
- package/lib/config/types.d.cts +60 -0
- package/lib/config/types.d.cts.map +1 -0
- package/lib/environment-ember-template-imports/-private/environment/common.d.ts +13 -0
- package/lib/environment-ember-template-imports/-private/environment/common.d.ts.map +1 -0
- package/lib/environment-ember-template-imports/-private/environment/common.js +2 -0
- package/lib/environment-ember-template-imports/-private/environment/common.js.map +1 -0
- package/lib/environment-ember-template-imports/-private/environment/index.d.ts +3 -0
- package/lib/environment-ember-template-imports/-private/environment/index.d.ts.map +1 -0
- package/lib/environment-ember-template-imports/-private/environment/index.js +76 -0
- package/lib/environment-ember-template-imports/-private/environment/index.js.map +1 -0
- package/lib/environment-ember-template-imports/-private/environment/preprocess.d.ts +4 -0
- package/lib/environment-ember-template-imports/-private/environment/preprocess.d.ts.map +1 -0
- package/lib/environment-ember-template-imports/-private/environment/preprocess.js +73 -0
- package/lib/environment-ember-template-imports/-private/environment/preprocess.js.map +1 -0
- package/lib/environment-ember-template-imports/-private/environment/transform.d.ts +4 -0
- package/lib/environment-ember-template-imports/-private/environment/transform.d.ts.map +1 -0
- package/lib/environment-ember-template-imports/-private/environment/transform.js +134 -0
- package/lib/environment-ember-template-imports/-private/environment/transform.js.map +1 -0
- package/lib/index.d.ts +7 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +6 -0
- package/lib/index.js.map +1 -0
- package/lib/plugins/g-compiler-errors.d.ts +12 -0
- package/lib/plugins/g-compiler-errors.d.ts.map +1 -0
- package/lib/plugins/g-compiler-errors.js +58 -0
- package/lib/plugins/g-compiler-errors.js.map +1 -0
- package/lib/plugins/g-template-tag-symbols.d.ts +11 -0
- package/lib/plugins/g-template-tag-symbols.d.ts.map +1 -0
- package/lib/plugins/g-template-tag-symbols.js +48 -0
- package/lib/plugins/g-template-tag-symbols.js.map +1 -0
- package/lib/plugins/utils.d.ts +25 -0
- package/lib/plugins/utils.d.ts.map +1 -0
- package/lib/plugins/utils.js +63 -0
- package/lib/plugins/utils.js.map +1 -0
- package/lib/transform/diagnostics/augmentation.d.ts +4 -0
- package/lib/transform/diagnostics/augmentation.d.ts.map +1 -0
- package/lib/transform/diagnostics/augmentation.js +223 -0
- package/lib/transform/diagnostics/augmentation.js.map +1 -0
- package/lib/transform/diagnostics/index.d.ts +5 -0
- package/lib/transform/diagnostics/index.d.ts.map +1 -0
- package/lib/transform/diagnostics/index.js +2 -0
- package/lib/transform/diagnostics/index.js.map +1 -0
- package/lib/transform/index.d.ts +4 -0
- package/lib/transform/index.d.ts.map +1 -0
- package/lib/transform/index.js +2 -0
- package/lib/transform/index.js.map +1 -0
- package/lib/transform/template/code-features.d.ts +30 -0
- package/lib/transform/template/code-features.d.ts.map +1 -0
- package/lib/transform/template/code-features.js +26 -0
- package/lib/transform/template/code-features.js.map +1 -0
- package/lib/transform/template/glimmer-ast-mapping-tree.d.ts +80 -0
- package/lib/transform/template/glimmer-ast-mapping-tree.d.ts.map +1 -0
- package/lib/transform/template/glimmer-ast-mapping-tree.js +132 -0
- package/lib/transform/template/glimmer-ast-mapping-tree.js.map +1 -0
- package/lib/transform/template/inlining/index.d.ts +16 -0
- package/lib/transform/template/inlining/index.d.ts.map +1 -0
- package/lib/transform/template/inlining/index.js +21 -0
- package/lib/transform/template/inlining/index.js.map +1 -0
- package/lib/transform/template/inlining/tagged-strings.d.ts +8 -0
- package/lib/transform/template/inlining/tagged-strings.d.ts.map +1 -0
- package/lib/transform/template/inlining/tagged-strings.js +140 -0
- package/lib/transform/template/inlining/tagged-strings.js.map +1 -0
- package/lib/transform/template/map-template-contents.d.ts +121 -0
- package/lib/transform/template/map-template-contents.d.ts.map +1 -0
- package/lib/transform/template/map-template-contents.js +287 -0
- package/lib/transform/template/map-template-contents.js.map +1 -0
- package/lib/transform/template/rewrite-module.d.ts +22 -0
- package/lib/transform/template/rewrite-module.d.ts.map +1 -0
- package/lib/transform/template/rewrite-module.js +265 -0
- package/lib/transform/template/rewrite-module.js.map +1 -0
- package/lib/transform/template/scope-stack.d.ts +13 -0
- package/lib/transform/template/scope-stack.d.ts.map +1 -0
- package/lib/transform/template/scope-stack.js +28 -0
- package/lib/transform/template/scope-stack.js.map +1 -0
- package/lib/transform/template/template-to-typescript.d.ts +19 -0
- package/lib/transform/template/template-to-typescript.d.ts.map +1 -0
- package/lib/transform/template/template-to-typescript.js +1095 -0
- package/lib/transform/template/template-to-typescript.js.map +1 -0
- package/lib/transform/template/transformed-module.d.ts +111 -0
- package/lib/transform/template/transformed-module.d.ts.map +1 -0
- package/lib/transform/template/transformed-module.js +287 -0
- package/lib/transform/template/transformed-module.js.map +1 -0
- package/lib/transform/util.d.ts +7 -0
- package/lib/transform/util.d.ts.map +1 -0
- package/lib/transform/util.js +15 -0
- package/lib/transform/util.js.map +1 -0
- package/lib/volar/ember-language-plugin.d.ts +14 -0
- package/lib/volar/ember-language-plugin.d.ts.map +1 -0
- package/lib/volar/ember-language-plugin.js +91 -0
- package/lib/volar/ember-language-plugin.js.map +1 -0
- package/lib/volar/gts-virtual-code.d.ts +83 -0
- package/lib/volar/gts-virtual-code.d.ts.map +1 -0
- package/lib/volar/gts-virtual-code.js +210 -0
- package/lib/volar/gts-virtual-code.js.map +1 -0
- package/lib/volar/language-server.d.ts +2 -0
- package/lib/volar/language-server.d.ts.map +1 -0
- package/lib/volar/language-server.js +214 -0
- package/lib/volar/language-server.js.map +1 -0
- package/lib/volar/script-snapshot.d.ts +17 -0
- package/lib/volar/script-snapshot.d.ts.map +1 -0
- package/lib/volar/script-snapshot.js +24 -0
- package/lib/volar/script-snapshot.js.map +1 -0
- package/package.json +114 -0
- package/src/cli/run-volar-tsc.ts +36 -0
- package/src/config/config.ts +33 -0
- package/src/config/environment.ts +128 -0
- package/src/config/index.ts +30 -0
- package/src/config/loader.ts +143 -0
- package/src/config/types.cts +85 -0
- package/src/environment-ember-template-imports/-private/environment/common.ts +14 -0
- package/src/environment-ember-template-imports/-private/environment/index.ts +83 -0
- package/src/environment-ember-template-imports/-private/environment/preprocess.ts +90 -0
- package/src/environment-ember-template-imports/-private/environment/transform.ts +202 -0
- package/src/index.ts +9 -0
- package/src/plugins/g-compiler-errors.ts +67 -0
- package/src/plugins/g-template-tag-symbols.ts +54 -0
- package/src/plugins/utils.ts +86 -0
- package/src/transform/diagnostics/augmentation.ts +333 -0
- package/src/transform/diagnostics/index.ts +5 -0
- package/src/transform/index.ts +4 -0
- package/src/transform/template/code-features.ts +30 -0
- package/src/transform/template/glimmer-ast-mapping-tree.ts +173 -0
- package/src/transform/template/inlining/index.ts +33 -0
- package/src/transform/template/inlining/tagged-strings.ts +187 -0
- package/src/transform/template/map-template-contents.ts +501 -0
- package/src/transform/template/rewrite-module.ts +372 -0
- package/src/transform/template/scope-stack.ts +34 -0
- package/src/transform/template/template-to-typescript.ts +1476 -0
- package/src/transform/template/transformed-module.ts +431 -0
- package/src/transform/util.ts +24 -0
- package/src/volar/ember-language-plugin.ts +108 -0
- package/src/volar/gts-virtual-code.ts +249 -0
- package/src/volar/language-server.ts +250 -0
- package/src/volar/script-snapshot.ts +27 -0
- package/types/-private/dsl/globals.d.ts +204 -0
- package/types/-private/dsl/index.d.ts +50 -0
- package/types/-private/dsl/integration-declarations.d.ts +143 -0
- package/types/-private/intrinsics/action.d.ts +45 -0
- package/types/-private/intrinsics/concat.d.ts +6 -0
- package/types/-private/intrinsics/each-in.d.ts +24 -0
- package/types/-private/intrinsics/each.d.ts +17 -0
- package/types/-private/intrinsics/fn.d.ts +44 -0
- package/types/-private/intrinsics/get.d.ts +31 -0
- package/types/-private/intrinsics/input.d.ts +24 -0
- package/types/-private/intrinsics/link-to.d.ts +31 -0
- package/types/-private/intrinsics/log.d.ts +6 -0
- package/types/-private/intrinsics/mount.d.ts +9 -0
- package/types/-private/intrinsics/mut.d.ts +14 -0
- package/types/-private/intrinsics/on.d.ts +21 -0
- package/types/-private/intrinsics/outlet.d.ts +8 -0
- package/types/-private/intrinsics/textarea.d.ts +16 -0
- package/types/-private/intrinsics/unbound.d.ts +10 -0
- package/types/-private/intrinsics/unique-id.d.ts +5 -0
- package/types/globals/index.d.ts +3 -0
- package/types/silent-error.d.ts +4 -0
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import * as path from 'node:path';
|
|
2
|
+
import { assert } from '../util.js';
|
|
3
|
+
import { calculateTaggedTemplateSpans } from './inlining/tagged-strings.js';
|
|
4
|
+
import TransformedModule from './transformed-module.js';
|
|
5
|
+
/**
|
|
6
|
+
* Given the script and/or template that together comprise a component module,
|
|
7
|
+
* returns a `TransformedModule` representing the combined result, with the
|
|
8
|
+
* template(s), either alongside or inline, rewritten into equivalent TypeScript
|
|
9
|
+
* in terms of the active glint environment's exported types.
|
|
10
|
+
*
|
|
11
|
+
* May return `null` if an unrecoverable parse error occurs or if there is
|
|
12
|
+
* no transformation to be done.
|
|
13
|
+
*/
|
|
14
|
+
export function rewriteModule(ts, { script }, environment, clientId) {
|
|
15
|
+
let { errors, directives, partialSpans } = calculateCorrelatedSpans(ts, script, environment, clientId);
|
|
16
|
+
if (!partialSpans.length && !errors.length) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
let sparseSpans = completeCorrelatedSpans(partialSpans);
|
|
20
|
+
let { contents, correlatedSpans } = calculateTransformedSource(script, sparseSpans, directives);
|
|
21
|
+
return new TransformedModule(contents, errors, directives, correlatedSpans, script.filename);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Locates any embedded templates in the given AST and returns a corresponding
|
|
25
|
+
* `PartialCorrelatedSpan` for each, as well as any errors encountered. These
|
|
26
|
+
* spans are then used in `rewriteModule` above to calculate the full set of
|
|
27
|
+
* source-to-source location information as well as the final transformed source
|
|
28
|
+
* string.
|
|
29
|
+
*/
|
|
30
|
+
function calculateCorrelatedSpans(ts, script, environment, clientId) {
|
|
31
|
+
let directives = [];
|
|
32
|
+
let errors = [];
|
|
33
|
+
let partialSpans = [];
|
|
34
|
+
if (clientId === 'tsserver-plugin') {
|
|
35
|
+
partialSpans.push(generateAutoImportAnchor(script));
|
|
36
|
+
}
|
|
37
|
+
let { ast, emitMetadata, error } = parseScript(ts, script, environment);
|
|
38
|
+
if (error) {
|
|
39
|
+
if (typeof error === 'string') {
|
|
40
|
+
errors.push({
|
|
41
|
+
message: error,
|
|
42
|
+
location: { start: 0, end: script.contents.length - 1 },
|
|
43
|
+
source: script,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
else if ('isContentTagError' in error && error.isContentTagError) {
|
|
47
|
+
// these lines exclude the line with the error, because
|
|
48
|
+
// adding the column offset will get us on to the line with the error
|
|
49
|
+
let lines = script.contents.split('\n').slice(0, error.line);
|
|
50
|
+
let start = lines.reduce((sum, line) => sum + line.length, 0) + error.column - 1;
|
|
51
|
+
let end = start + 1;
|
|
52
|
+
errors.push({
|
|
53
|
+
isContentTagError: true,
|
|
54
|
+
// we have to show the "help" because content-tag has different line numbers
|
|
55
|
+
// than we are able to discern ourselves.
|
|
56
|
+
message: error.message + '\n\n' + error.help,
|
|
57
|
+
source: script,
|
|
58
|
+
location: {
|
|
59
|
+
start,
|
|
60
|
+
end,
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
// We've hit a parsing error, so we need to immediately return as the parsed
|
|
65
|
+
// document must be correct before we can continue.
|
|
66
|
+
return { errors, directives, partialSpans };
|
|
67
|
+
}
|
|
68
|
+
ts.transform(ast, [
|
|
69
|
+
(context) => function visit(node) {
|
|
70
|
+
// Here we look for ```hbs``` tagged template expressions, originally introduced
|
|
71
|
+
// in the now-removed GlimmerX environment. We can consider getting rid of this, but
|
|
72
|
+
// then again there are still some use cases in the wild (e.g. Glimmer Next / GXT)
|
|
73
|
+
// where have tagged templates closing over outer scope is desirable:
|
|
74
|
+
// https://github.com/lifeart/glimmer-next/tree/master/glint-environment-gxt
|
|
75
|
+
// https://discord.com/channels/480462759797063690/717767358743183412/1259061848632721480
|
|
76
|
+
if (ts.isTaggedTemplateExpression(node)) {
|
|
77
|
+
let meta = emitMetadata.get(node);
|
|
78
|
+
let result = calculateTaggedTemplateSpans(ts, node, meta, script, environment);
|
|
79
|
+
directives.push(...result.directives);
|
|
80
|
+
errors.push(...result.errors);
|
|
81
|
+
partialSpans.push(...result.partialSpans);
|
|
82
|
+
}
|
|
83
|
+
else if (ts.isModuleDeclaration(node)) {
|
|
84
|
+
// don't traverse into declare module
|
|
85
|
+
return node;
|
|
86
|
+
}
|
|
87
|
+
return ts.visitEachChild(node, visit, context);
|
|
88
|
+
},
|
|
89
|
+
]);
|
|
90
|
+
return { errors, directives, partialSpans };
|
|
91
|
+
}
|
|
92
|
+
function parseScript(ts, script, environment) {
|
|
93
|
+
let { filename, contents } = script;
|
|
94
|
+
let extension = path.extname(filename);
|
|
95
|
+
let emitMetadata = new WeakMap();
|
|
96
|
+
let setEmitMetadata = (node, data) => void emitMetadata.set(node, Object.assign(emitMetadata.get(node) ?? {}, data));
|
|
97
|
+
let { preprocess, transform } = environment.getConfigForExtension(extension) ?? {};
|
|
98
|
+
let original = { contents, data: { templateLocations: [] } };
|
|
99
|
+
let preprocessed = original;
|
|
100
|
+
let error;
|
|
101
|
+
try {
|
|
102
|
+
preprocessed = preprocess?.(contents, filename) ?? original;
|
|
103
|
+
}
|
|
104
|
+
catch (e) {
|
|
105
|
+
error = parseError(e, filename);
|
|
106
|
+
}
|
|
107
|
+
let ast = ts.createSourceFile(filename,
|
|
108
|
+
// contents will be transformed and placeholder'd content
|
|
109
|
+
// or, in the event of a parse error, the original content
|
|
110
|
+
// in which case, TS will report a ton of errors about some goofy syntax.
|
|
111
|
+
// We'll want to ignore all of that and only display our parsing error from content-tag.
|
|
112
|
+
preprocessed.contents, ts.ScriptTarget.Latest, true);
|
|
113
|
+
// Only transform if we don't have a parse error
|
|
114
|
+
if (!error && transform) {
|
|
115
|
+
let { transformed } = ts.transform(ast, [
|
|
116
|
+
(context) => transform(preprocessed.data, { ts, context, setEmitMetadata }),
|
|
117
|
+
]);
|
|
118
|
+
assert(transformed.length === 1 && ts.isSourceFile(transformed[0]));
|
|
119
|
+
ast = transformed[0];
|
|
120
|
+
}
|
|
121
|
+
return { ast, emitMetadata, error };
|
|
122
|
+
}
|
|
123
|
+
function parseError(e, filename) {
|
|
124
|
+
if (typeof e === 'object' && e !== null) {
|
|
125
|
+
// Parse Errors from the rust parser
|
|
126
|
+
if ('source_code' in e) {
|
|
127
|
+
// We remove the blank links in the error because swc
|
|
128
|
+
// pads errors with a leading and trailing blank line.
|
|
129
|
+
// the error is typically meant for the terminal, so making it
|
|
130
|
+
// stand out a bit more is a good, but that's more a presentation
|
|
131
|
+
// concern than just pure error information (which is what we need).
|
|
132
|
+
// @ts-expect-error object / property narrowing isn't available until TS 5.1
|
|
133
|
+
let lines = e.source_code.split('\n').filter(Boolean);
|
|
134
|
+
// Example:
|
|
135
|
+
// ' × Unexpected eof'
|
|
136
|
+
// ' ╭─[/home/nullvoxpopuli/Development/OpenSource/glint/test-packages/ts-template-imports-app/src/index.gts:6:1]'
|
|
137
|
+
// ' 6 │ '
|
|
138
|
+
// ' 7 │ export const X = <tem'
|
|
139
|
+
// ' ╰────'
|
|
140
|
+
let raw = lines.join('\n');
|
|
141
|
+
let message = lines[0].replace('×', '').trim();
|
|
142
|
+
let info = lines[1];
|
|
143
|
+
// a filename may have numbers in it, so we want to remove the filename
|
|
144
|
+
// before regex searching for numbers at the end of this line
|
|
145
|
+
let strippedInfo = info.replace(filename, '');
|
|
146
|
+
let matches = [...strippedInfo.matchAll(/\d+/g)];
|
|
147
|
+
let line = parseInt(matches[0][0], 10);
|
|
148
|
+
let column = parseInt(matches[1][0], 10);
|
|
149
|
+
// The help omits the original file name, because TS will provide that.
|
|
150
|
+
let help = lines.slice(2).join('\n');
|
|
151
|
+
return {
|
|
152
|
+
isContentTagError: true,
|
|
153
|
+
raw,
|
|
154
|
+
message,
|
|
155
|
+
line,
|
|
156
|
+
column,
|
|
157
|
+
file: filename,
|
|
158
|
+
help,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return `${e}`;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Given a sparse `CorrelatedSpan` array and the original source for a module,
|
|
166
|
+
* returns the resulting full transformed source string for that module, as
|
|
167
|
+
* well as a filled-in array of correlated spans that includes chunks of the
|
|
168
|
+
* original source that were not transformed.
|
|
169
|
+
*/
|
|
170
|
+
function calculateTransformedSource(originalFile, sparseSpans, directives) {
|
|
171
|
+
let correlatedSpans = [];
|
|
172
|
+
let originalOffset = 0;
|
|
173
|
+
let transformedOffset = 0;
|
|
174
|
+
for (let span of sparseSpans) {
|
|
175
|
+
let interstitial = originalFile.contents.slice(originalOffset, span.insertionPoint);
|
|
176
|
+
if (interstitial.length) {
|
|
177
|
+
correlatedSpans.push({
|
|
178
|
+
originalFile,
|
|
179
|
+
originalStart: originalOffset,
|
|
180
|
+
originalLength: interstitial.length,
|
|
181
|
+
insertionPoint: originalOffset,
|
|
182
|
+
transformedStart: transformedOffset,
|
|
183
|
+
transformedLength: interstitial.length,
|
|
184
|
+
transformedSource: interstitial,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
correlatedSpans.push(span);
|
|
188
|
+
transformedOffset += interstitial.length + span.transformedLength;
|
|
189
|
+
originalOffset +=
|
|
190
|
+
interstitial.length + (span.originalFile === originalFile ? span.originalLength : 0);
|
|
191
|
+
}
|
|
192
|
+
let trailingContent = originalFile.contents.slice(originalOffset);
|
|
193
|
+
const trailingSpan = {
|
|
194
|
+
originalFile,
|
|
195
|
+
originalStart: originalOffset,
|
|
196
|
+
originalLength: trailingContent.length + 1,
|
|
197
|
+
insertionPoint: originalOffset,
|
|
198
|
+
transformedStart: transformedOffset,
|
|
199
|
+
transformedLength: trailingContent.length + 1,
|
|
200
|
+
transformedSource: trailingContent,
|
|
201
|
+
};
|
|
202
|
+
correlatedSpans.push(trailingSpan);
|
|
203
|
+
const placeholderContent = '\n\n// @ts-expect-error placeholder for glint-expect-error\n;\n';
|
|
204
|
+
for (let directive of directives) {
|
|
205
|
+
if (directive.kind === 'expect-error') {
|
|
206
|
+
correlatedSpans.push({
|
|
207
|
+
originalFile,
|
|
208
|
+
originalStart: directive.location.start,
|
|
209
|
+
originalLength: directive.location.end - directive.location.start,
|
|
210
|
+
insertionPoint: originalOffset + trailingContent.length,
|
|
211
|
+
transformedSource: placeholderContent,
|
|
212
|
+
transformedStart: transformedOffset + trailingContent.length,
|
|
213
|
+
transformedLength: placeholderContent.length,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return {
|
|
218
|
+
contents: correlatedSpans.map((span) => span.transformedSource).join(''),
|
|
219
|
+
correlatedSpans,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Given an array of `PartialCorrelatedSpan`s for a file, calculates
|
|
224
|
+
* their `transformedLength` and `transformedStart` values, resulting
|
|
225
|
+
* in full `CorrelatedSpan`s.
|
|
226
|
+
*/
|
|
227
|
+
function completeCorrelatedSpans(partialSpans) {
|
|
228
|
+
let correlatedSpans = [];
|
|
229
|
+
for (let i = 0; i < partialSpans.length; i++) {
|
|
230
|
+
let current = partialSpans[i];
|
|
231
|
+
let transformedLength = current.transformedSource.length;
|
|
232
|
+
let transformedStart = current.insertionPoint;
|
|
233
|
+
if (i > 0) {
|
|
234
|
+
let previous = correlatedSpans[i - 1];
|
|
235
|
+
transformedStart =
|
|
236
|
+
previous.transformedStart +
|
|
237
|
+
previous.transformedSource.length +
|
|
238
|
+
(current.insertionPoint - previous.insertionPoint - previous.originalLength);
|
|
239
|
+
}
|
|
240
|
+
correlatedSpans.push({ ...current, transformedStart, transformedLength });
|
|
241
|
+
}
|
|
242
|
+
return correlatedSpans;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Insert a triple-slash reference directive to the top of the transformed file which provides
|
|
246
|
+
* an anchor/insertion point for auto-imports. This fixes an issue where auto-imports
|
|
247
|
+
* don't work for the first import in a file.
|
|
248
|
+
*
|
|
249
|
+
* Because we don't provide any mapping information to Volar, the internal error that
|
|
250
|
+
* this generates is quietly swallowed when Volar reverse source-maps the error back to
|
|
251
|
+
* .gts/.gjs. This is hacky but I don't know of any other (non-upstream) fix for this.
|
|
252
|
+
*
|
|
253
|
+
* Potential upstream Volar fix for this:
|
|
254
|
+
* https://github.com/volarjs/volar.js/pull/281
|
|
255
|
+
*/
|
|
256
|
+
function generateAutoImportAnchor(script) {
|
|
257
|
+
return {
|
|
258
|
+
originalFile: script,
|
|
259
|
+
originalStart: 0,
|
|
260
|
+
originalLength: 0,
|
|
261
|
+
insertionPoint: 0,
|
|
262
|
+
transformedSource: '/// <reference types="__GLINT_AUTO_IMPORT_ANCHOR__" />\n',
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=rewrite-module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rewrite-module.js","sourceRoot":"","sources":["../../../src/transform/template/rewrite-module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A `ScopeStack` is used while traversing a template
|
|
3
|
+
* to track what identifiers are currently in scope.
|
|
4
|
+
*/
|
|
5
|
+
export default class ScopeStack {
|
|
6
|
+
private stack;
|
|
7
|
+
constructor(identifiers: string[]);
|
|
8
|
+
push(identifiers: Array<string>): void;
|
|
9
|
+
pop(): void;
|
|
10
|
+
hasBinding(identifier: string): boolean;
|
|
11
|
+
private get top();
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=scope-stack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-stack.d.ts","sourceRoot":"","sources":["../../../src/transform/template/scope-stack.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B,OAAO,CAAC,KAAK,CAAqB;gBAEf,WAAW,EAAE,MAAM,EAAE;IAIjC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;IAQtC,GAAG,IAAI,IAAI;IAKX,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAI9C,OAAO,KAAK,GAAG,GAEd;CACF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { assert } from '../util.js';
|
|
2
|
+
/**
|
|
3
|
+
* A `ScopeStack` is used while traversing a template
|
|
4
|
+
* to track what identifiers are currently in scope.
|
|
5
|
+
*/
|
|
6
|
+
export default class ScopeStack {
|
|
7
|
+
constructor(identifiers) {
|
|
8
|
+
this.stack = [new Set(identifiers)];
|
|
9
|
+
}
|
|
10
|
+
push(identifiers) {
|
|
11
|
+
let scope = new Set(this.top);
|
|
12
|
+
for (let identifier of identifiers) {
|
|
13
|
+
scope.add(identifier);
|
|
14
|
+
}
|
|
15
|
+
this.stack.unshift(scope);
|
|
16
|
+
}
|
|
17
|
+
pop() {
|
|
18
|
+
assert(this.stack.length > 1);
|
|
19
|
+
this.stack.shift();
|
|
20
|
+
}
|
|
21
|
+
hasBinding(identifier) {
|
|
22
|
+
return this.top.has(identifier);
|
|
23
|
+
}
|
|
24
|
+
get top() {
|
|
25
|
+
return this.stack[0];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=scope-stack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-stack.js","sourceRoot":"","sources":["../../../src/transform/template/scope-stack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,UAAU;IAG7B,YAAmB,WAAqB;QACtC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;IACtC,CAAC;IAEM,IAAI,CAAC,WAA0B;QACpC,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,KAAK,IAAI,UAAU,IAAI,WAAW,EAAE,CAAC;YACnC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAEM,GAAG;QACR,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAEM,UAAU,CAAC,UAAkB;QAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,IAAY,GAAG;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { GlintEmitMetadata, GlintSpecialForm } from '@glint/ember-tsc/config-types';
|
|
2
|
+
import { EmbeddingSyntax, RewriteResult } from './map-template-contents.js';
|
|
3
|
+
export type TemplateToTypescriptOptions = {
|
|
4
|
+
typesModule: string;
|
|
5
|
+
meta?: GlintEmitMetadata | undefined;
|
|
6
|
+
globals?: Array<string> | undefined;
|
|
7
|
+
backingValue?: string;
|
|
8
|
+
preamble?: Array<string>;
|
|
9
|
+
embeddingSyntax?: EmbeddingSyntax;
|
|
10
|
+
useJsDoc?: boolean;
|
|
11
|
+
specialForms?: Record<string, GlintSpecialForm>;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Given the text contents of a template, returns a TypeScript representation
|
|
15
|
+
* of that template's contents, as well as a mapping of offsets and ranges between
|
|
16
|
+
* the original and transformed contents.
|
|
17
|
+
*/
|
|
18
|
+
export declare function templateToTypescript(originalTemplate: string, { typesModule, globals, meta, backingValue, preamble, embeddingSyntax, specialForms, useJsDoc, }: TemplateToTypescriptOptions): RewriteResult;
|
|
19
|
+
//# sourceMappingURL=template-to-typescript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-to-typescript.d.ts","sourceRoot":"","sources":["../../../src/transform/template/template-to-typescript.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGpF,OAAO,EAAE,eAAe,EAAuB,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAKjG,MAAM,MAAM,2BAA2B,GAAG;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACrC,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CACjD,CAAC;AAkBF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,gBAAgB,EAAE,MAAM,EACxB,EACE,WAAW,EACX,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,QAAa,EACb,eAA4C,EAC5C,YAAiB,EACjB,QAAgB,GACjB,EAAE,2BAA2B,GAC7B,aAAa,CA+0Cf"}
|