Skip to content

Commit 07193a0

Browse files
authored
Merge pull request #31 from typed-ember/separate-templates
2 parents 3fe8637 + 7dba1a0 commit 07193a0

File tree

9 files changed

+398
-278
lines changed

9 files changed

+398
-278
lines changed

packages/cli/src/transform-manager.ts

Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -22,37 +22,32 @@ export default class TransformManager {
2222
let file = diagnostic.file;
2323
let transformedModule = file && this.transformedModules.get(file.fileName);
2424
if (diagnostic.code && file && transformedModule) {
25-
let sourceFile = this.ts.createSourceFile(
26-
file.fileName,
27-
transformedModule.originalSource,
28-
file.languageVersion
29-
);
30-
31-
diagnostic = rewriteDiagnostic(diagnostic, transformedModule, sourceFile);
25+
diagnostic = rewriteDiagnostic(this.ts, diagnostic, transformedModule);
3226
}
3327

3428
return this.ts.formatDiagnosticsWithColorAndContext([diagnostic], this.formatDiagnosticHost);
3529
}
3630

3731
public readFile(filename: string, encoding?: string): string | undefined {
38-
let source = this.ts.sys.readFile(filename, encoding);
32+
let contents = this.ts.sys.readFile(filename, encoding);
3933
let config = this.glintConfig;
4034

4135
if (
42-
source &&
36+
contents &&
4337
filename.endsWith('.ts') &&
4438
!filename.endsWith('.d.ts') &&
4539
config.includesFile(filename) &&
46-
config.environment.moduleMayHaveTagImports(source)
40+
config.environment.moduleMayHaveTagImports(contents)
4741
) {
48-
let transformedModule = rewriteModule(filename, source, config.environment);
42+
let script = { filename, contents };
43+
let transformedModule = rewriteModule({ script }, config.environment);
4944
if (transformedModule) {
5045
this.transformedModules.set(filename, transformedModule);
51-
return transformedModule.transformedSource;
46+
return transformedModule.transformedContents;
5247
}
5348
}
5449

55-
return source;
50+
return contents;
5651
}
5752

5853
private readonly formatDiagnosticHost: ts.FormatDiagnosticsHost = {
@@ -62,20 +57,14 @@ export default class TransformManager {
6257
};
6358

6459
private buildDiagnostics(transformedModule: TransformedModule): Array<ts.DiagnosticWithLocation> {
65-
if (!transformedModule.errors.length) {
66-
return [];
67-
}
68-
69-
let sourceFile = this.ts.createSourceFile(
70-
transformedModule.filename,
71-
transformedModule.originalSource,
72-
this.ts.ScriptTarget.ESNext
73-
);
74-
7560
return transformedModule.errors.map((error) => ({
7661
category: this.ts.DiagnosticCategory.Error,
7762
code: 0,
78-
file: sourceFile,
63+
file: this.ts.createSourceFile(
64+
error.source.filename,
65+
error.source.contents,
66+
this.ts.ScriptTarget.Latest
67+
),
7968
start: error.location.start,
8069
length: error.location.end - error.location.start,
8170
messageText: `[glint] ${error.message}`,

packages/transform/__tests__/debug.test.ts

Lines changed: 46 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -4,103 +4,106 @@ import { GlintEnvironment } from '@glint/config';
44

55
describe('Debug utilities', () => {
66
test('TransformedModule#toDebugString', () => {
7-
let code = stripIndent`
8-
import Component, { hbs } from '@glimmerx/component';
7+
let script = {
8+
filename: 'test.ts',
9+
contents: stripIndent`
10+
import Component, { hbs } from '@glimmerx/component';
911
10-
export default class MyComponent extends Component {
11-
private bar = 'hi';
12+
export default class MyComponent extends Component {
13+
private bar = 'hi';
1214
13-
static template = hbs\`
14-
<HelperComponent @foo={{this.bar}} />
15-
\`;
16-
}
15+
static template = hbs\`
16+
<HelperComponent @foo={{this.bar}} />
17+
\`;
18+
}
1719
18-
class HelperComponent extends Component<{ foo: string }> {
19-
static template = hbs\`
20-
Hello, {{@foo}}
21-
\`;
22-
}
23-
`;
20+
class HelperComponent extends Component<{ foo: string }> {
21+
static template = hbs\`
22+
Hello, {{@foo}}
23+
\`;
24+
}
25+
`,
26+
};
2427

25-
let transformedModule = rewriteModule('test.ts', code, GlintEnvironment.load('glimmerx'));
28+
let transformedModule = rewriteModule({ script }, GlintEnvironment.load('glimmerx'));
2629

2730
expect(transformedModule?.toDebugString()).toMatchInlineSnapshot(`
28-
"TransformedModule test.ts
31+
"TransformedModule
2932
3033
| Mapping: Template
3134
| hbs(0:50): hbs\`\\\\n <HelperComponent @foo={{this.bar}} />\\\\n \`
3235
| ts(0:277): (() => {\\\\n hbs;\\\\n let χ!: typeof import(\\"@glint/environment-glimmerx/types\\");\\\\n return χ.template(function(𝚪: import(\\"@glint/environment-glimmerx/types\\").ResolveContext<MyComponent>) {\\\\n χ.invokeBlock(χ.resolve(HelperComponent)({ foo: 𝚪.this.bar }), {});\\\\n 𝚪;\\\\n });\\\\n})()
33-
|
36+
|
3437
| | Mapping: Identifier
35-
| | hbs(0:0):
38+
| | hbs(0:0):
3639
| | ts(170:181): MyComponent
37-
| |
40+
| |
3841
| | Mapping: ElementNode
3942
| | hbs(9:46): <HelperComponent @foo={{this.bar}} />
4043
| | ts(186:259): χ.invokeBlock(χ.resolve(HelperComponent)({ foo: 𝚪.this.bar }), {});
41-
| |
44+
| |
4245
| | | Mapping: ElementNode
4346
| | | hbs(9:46): <HelperComponent @foo={{this.bar}} />
4447
| | | ts(186:259): χ.invokeBlock(χ.resolve(HelperComponent)({ foo: 𝚪.this.bar }), {});
45-
| | |
48+
| | |
4649
| | | | Mapping: Identifier
4750
| | | | hbs(10:25): HelperComponent
4851
| | | | ts(214:229): HelperComponent
49-
| | | |
52+
| | | |
5053
| | | | Mapping: AttrNode
5154
| | | | hbs(26:43): @foo={{this.bar}}
5255
| | | | ts(233:249): foo: 𝚪.this.bar
53-
| | | |
56+
| | | |
5457
| | | | | Mapping: Identifier
5558
| | | | | hbs(27:30): foo
5659
| | | | | ts(233:236): foo
57-
| | | | |
60+
| | | | |
5861
| | | | | Mapping: MustacheStatement
5962
| | | | | hbs(31:43): {{this.bar}}
6063
| | | | | ts(238:249): 𝚪.this.bar
61-
| | | | |
64+
| | | | |
6265
| | | | | | Mapping: PathExpression
6366
| | | | | | hbs(33:41): this.bar
6467
| | | | | | ts(238:249): 𝚪.this.bar
65-
| | | | | |
68+
| | | | | |
6669
| | | | | | | Mapping: Identifier
6770
| | | | | | | hbs(33:37): this
6871
| | | | | | | ts(241:245): this
69-
| | | | | | |
72+
| | | | | | |
7073
| | | | | | | Mapping: Identifier
7174
| | | | | | | hbs(38:41): bar
7275
| | | | | | | ts(246:249): bar
73-
| | | | | | |
74-
| | | | | |
75-
| | | | |
76-
| | | |
77-
| | |
78-
| |
79-
|
76+
| | | | | | |
77+
| | | | | |
78+
| | | | |
79+
| | | |
80+
| | |
81+
| |
82+
|
8083
8184
| Mapping: Template
8285
| hbs(0:28): hbs\`\\\\n Hello, {{@foo}}\\\\n \`
8386
| ts(0:262): (() => {\\\\n hbs;\\\\n let χ!: typeof import(\\"@glint/environment-glimmerx/types\\");\\\\n return χ.template(function(𝚪: import(\\"@glint/environment-glimmerx/types\\").ResolveContext<HelperComponent>) {\\\\n χ.invokeEmit(χ.resolveOrReturn(𝚪.args.foo)({}));\\\\n 𝚪;\\\\n });\\\\n})()
84-
|
87+
|
8588
| | Mapping: Identifier
86-
| | hbs(0:0):
89+
| | hbs(0:0):
8790
| | ts(170:185): HelperComponent
88-
| |
91+
| |
8992
| | Mapping: MustacheStatement
9093
| | hbs(16:24): {{@foo}}
9194
| | ts(190:242): χ.invokeEmit(χ.resolveOrReturn(𝚪.args.foo)({}))
92-
| |
95+
| |
9396
| | | Mapping: PathExpression
9497
| | | hbs(18:22): @foo
9598
| | | ts(225:236): 𝚪.args.foo
96-
| | |
99+
| | |
97100
| | | | Mapping: Identifier
98101
| | | | hbs(19:22): foo
99102
| | | | ts(233:236): foo
100-
| | | |
101-
| | |
102-
| |
103-
| "
103+
| | | |
104+
| | |
105+
| |
106+
|"
104107
`);
105108
});
106109
});

0 commit comments

Comments
 (0)