Skip to content

Commit ed20090

Browse files
authored
Merge pull request #58 from typed-ember/env-reexports
2 parents 1c005c4 + 8bfeecc commit ed20090

40 files changed

+487
-366
lines changed

.vscode/launch.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@
66
"type": "extensionHost",
77
"request": "launch",
88
"runtimeExecutable": "${execPath}",
9-
"args": ["--extensionDevelopmentPath=${workspaceFolder}/packages/vscode"]
9+
"args": [
10+
"--extensionDevelopmentPath=${workspaceFolder}/packages/vscode",
11+
"${workspaceFolder}/test-packages/demo-ember-app",
12+
"${workspaceFolder}/test-packages/demo-glimmerx-app"
13+
]
1014
}
1115
]
1216
}

packages/core/__tests__/cli/check.test.ts

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ describe('CLI: single-pass typechecking', () => {
1515

1616
test('passes a valid project', async () => {
1717
let code = stripIndent`
18-
import Component, { hbs } from '@glimmerx/component';
18+
import { Component, hbs } from '@glint/environment-glimmerx';
1919
20-
interface ApplicationArgs {
20+
type ApplicationArgs = {
2121
version: string;
22-
}
22+
};
2323
24-
export default class Application extends Component<ApplicationArgs> {
24+
export default class Application extends Component<{ Args: ApplicationArgs }> {
2525
private startupTime = new Date().toISOString();
2626
2727
public static template = hbs\`
@@ -42,13 +42,13 @@ describe('CLI: single-pass typechecking', () => {
4242

4343
test('reports diagnostics for a template syntax error', async () => {
4444
let code = stripIndent`
45-
import Component, { hbs } from '@glimmerx/component';
45+
import { Component, hbs } from '@glint/environment-glimmerx';
4646
47-
interface ApplicationArgs {
47+
type ApplicationArgs = {
4848
version: string;
49-
}
49+
};
5050
51-
export default class Application extends Component<ApplicationArgs> {
51+
export default class Application extends Component<{ Args: ApplicationArgs }> {
5252
private startupTime = new Date().toISOString();
5353
5454
public static template = hbs\`
@@ -78,13 +78,13 @@ describe('CLI: single-pass typechecking', () => {
7878

7979
test('reports diagnostics for an inline template type error', async () => {
8080
let code = stripIndent`
81-
import Component, { hbs } from '@glimmerx/component';
81+
import { Component, hbs } from '@glint/environment-glimmerx';
8282
83-
interface ApplicationArgs {
83+
type ApplicationArgs = {
8484
version: string;
85-
}
85+
};
8686
87-
export default class Application extends Component<ApplicationArgs> {
87+
export default class Application extends Component<{ Args: ApplicationArgs }> {
8888
private startupTime = new Date().toISOString();
8989
9090
public static template = hbs\`
@@ -118,13 +118,13 @@ describe('CLI: single-pass typechecking', () => {
118118
project.write('.glintrc', 'environment: ember-loose\n');
119119

120120
let script = stripIndent`
121-
import Component from '@ember/component';
121+
import { EmberComponent } from '@glint/environment-ember-loose';
122122
123-
export interface MyComponentArgs {
123+
export type MyComponentArgs = {
124124
message: string;
125-
}
125+
};
126126
127-
export default class MyComponent extends Component<MyComponentArgs> {
127+
export default class MyComponent extends EmberComponent<{ Args: MyComponentArgs }> {
128128
target = 'World!';
129129
}
130130
`;
@@ -156,7 +156,7 @@ describe('CLI: single-pass typechecking', () => {
156156

157157
test('honors .glintrc configuration', async () => {
158158
let code = stripIndent`
159-
import Component, { hbs } from '@glimmerx/component';
159+
import { Component, hbs } from '@glint/environment-glimmerx';
160160
161161
export default class Application extends Component {
162162
public static template = hbs\`

packages/core/__tests__/cli/declaration.test.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ describe('CLI: emitting declarations', () => {
1414

1515
test('emit for a valid project', async () => {
1616
let code = stripIndent`
17-
import Component, { hbs } from '@glimmerx/component';
17+
import { Component, hbs } from '@glint/environment-glimmerx';
1818
19-
export interface ApplicationArgs {
19+
export type ApplicationArgs = {
2020
version: string;
21-
}
21+
};
2222
23-
export default class Application extends Component<ApplicationArgs> {
23+
export default class Application extends Component<{ Args: ApplicationArgs }> {
2424
private startupTime = new Date().toISOString();
2525
2626
public static template = hbs\`
@@ -37,11 +37,13 @@ describe('CLI: emitting declarations', () => {
3737
expect(emitResult.exitCode).toBe(0);
3838

3939
expect(project.read('index.d.ts')).toMatchInlineSnapshot(`
40-
"import Component from '@glimmerx/component';
41-
export interface ApplicationArgs {
40+
"import { Component } from '@glint/environment-glimmerx';
41+
export declare type ApplicationArgs = {
4242
version: string;
43-
}
44-
export default class Application extends Component<ApplicationArgs> {
43+
};
44+
export default class Application extends Component<{
45+
Args: ApplicationArgs;
46+
}> {
4547
private startupTime;
4648
static template: import(\\"@glint/environment-glimmerx/types\\").Template;
4749
}

packages/core/__tests__/cli/watch.test.ts

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ describe('CLI: watched typechecking', () => {
1616

1717
test('passes a valid project', async () => {
1818
let code = stripIndent`
19-
import Component, { hbs } from '@glimmerx/component';
19+
import { Component, hbs } from '@glint/environment-glimmerx';
2020
21-
interface ApplicationArgs {
21+
type ApplicationArgs = {
2222
version: string;
23-
}
23+
};
2424
25-
export default class Application extends Component<ApplicationArgs> {
25+
export default class Application extends Component<{ Args: ApplicationArgs }> {
2626
private startupTime = new Date().toISOString();
2727
2828
public static template = hbs\`
@@ -44,13 +44,13 @@ describe('CLI: watched typechecking', () => {
4444

4545
test('reports diagnostics for a template syntax error', async () => {
4646
let code = stripIndent`
47-
import Component, { hbs } from '@glimmerx/component';
47+
import { Component, hbs } from '@glint/environment-glimmerx';
4848
49-
interface ApplicationArgs {
49+
type ApplicationArgs = {
5050
version: string;
51-
}
51+
};
5252
53-
export default class Application extends Component<ApplicationArgs> {
53+
export default class Application extends Component<{ Args: ApplicationArgs }> {
5454
private startupTime = new Date().toISOString();
5555
5656
public static template = hbs\`
@@ -87,13 +87,13 @@ describe('CLI: watched typechecking', () => {
8787

8888
test('reports diagnostics for a template type error', async () => {
8989
let code = stripIndent`
90-
import Component, { hbs } from '@glimmerx/component';
90+
import { Component, hbs } from '@glint/environment-glimmerx';
9191
92-
interface ApplicationArgs {
92+
type ApplicationArgs = {
9393
version: string;
94-
}
94+
};
9595
96-
export default class Application extends Component<ApplicationArgs> {
96+
export default class Application extends Component<{ Args: ApplicationArgs }> {
9797
private startupTime = new Date().toISOString();
9898
9999
public static template = hbs\`
@@ -131,13 +131,13 @@ describe('CLI: watched typechecking', () => {
131131

132132
test('reports on errors introduced and cleared during the watch', async () => {
133133
let code = stripIndent`
134-
import Component, { hbs } from '@glimmerx/component';
134+
import { Component, hbs } from '@glint/environment-glimmerx';
135135
136-
interface ApplicationArgs {
136+
type ApplicationArgs = {
137137
version: string;
138-
}
138+
};
139139
140-
export default class Application extends Component<ApplicationArgs> {
140+
export default class Application extends Component<{ Args: ApplicationArgs }> {
141141
private startupTime = new Date().toISOString();
142142
143143
public static template = hbs\`
@@ -172,13 +172,13 @@ describe('CLI: watched typechecking', () => {
172172
project.write('index.ts', 'import "@glint/environment-ember-loose/types";');
173173

174174
let script = stripIndent`
175-
import Component from '@ember/component';
175+
import { EmberComponent } from '@glint/environment-ember-loose';
176176
177-
export interface MyComponentArgs {
177+
export type MyComponentArgs = {
178178
message: string;
179-
}
179+
};
180180
181-
export default class MyComponent extends Component<MyComponentArgs> {
181+
export default class MyComponent extends EmberComponent<{ Args: MyComponentArgs }> {
182182
target = 'World!';
183183
}
184184
`;

packages/core/__tests__/language-server/completions.test.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@ describe('Language Server: Completions', () => {
1616

1717
test('passing component args', () => {
1818
let code = stripIndent`
19-
import Component, { hbs } from '@glimmerx/component';
19+
import { Component, hbs } from '@glint/environment-glimmerx';
2020
2121
export default class MyComponent extends Component {
2222
static template = hbs\`
2323
<Inner @ />
2424
\`;
2525
}
2626
27-
class Inner extends Component<{ foo?: string; bar?: number }> {}
27+
class Inner extends Component<{ Args: { foo?: string; bar?: number } }> {}
2828
`;
2929

3030
project.write('index.ts', code);
@@ -53,7 +53,7 @@ describe('Language Server: Completions', () => {
5353

5454
test('referencing class properties', () => {
5555
let code = stripIndent`
56-
import Component, { hbs } from '@glimmerx/component';
56+
import { Component, hbs } from '@glint/environment-glimmerx';
5757
5858
export default class MyComponent extends Component {
5959
private message = 'hello';
@@ -83,13 +83,13 @@ describe('Language Server: Completions', () => {
8383

8484
test('referencing own args', async () => {
8585
let code = stripIndent`
86-
import Component, { hbs } from '@glimmerx/component';
86+
import { Component, hbs } from '@glint/environment-glimmerx';
8787
88-
interface MyComponentArgs<T> {
88+
type MyComponentArgs<T> = {
8989
items: Set<T>;
90-
}
90+
};
9191
92-
export default class MyComponent<T> extends Component<MyComponentArgs<T>> {
92+
export default class MyComponent<T> extends Component<{ Args: MyComponentArgs<T> }> {
9393
static template = hbs\`
9494
{{@i}}
9595
\`;
@@ -110,14 +110,14 @@ describe('Language Server: Completions', () => {
110110

111111
let details = server.getCompletionDetails(itemsCompletion!);
112112

113-
expect(details.detail).toEqual('(property) MyComponentArgs<T>.items: Set<T>');
113+
expect(details.detail).toEqual('(property) items: Set<T>');
114114
});
115115

116116
test('referencing block params', async () => {
117117
let code = stripIndent`
118-
import Component, { hbs } from '@glimmerx/component';
118+
import { Component, hbs } from '@glint/environment-glimmerx';
119119
120-
export default class MyComponent<T> extends Component {
120+
export default class MyComponent extends Component {
121121
static template = hbs\`
122122
{{#each (array "a" "b" "c") as |letter|}}
123123
{{l}}
@@ -145,11 +145,11 @@ describe('Language Server: Completions', () => {
145145

146146
test('referencing module-scope identifiers', async () => {
147147
let code = stripIndent`
148-
import Component, { hbs } from '@glimmerx/component';
148+
import { Component, hbs } from '@glint/environment-glimmerx';
149149
150150
const greeting: string = 'hello';
151151
152-
export default class MyComponent<T> extends Component {
152+
export default class MyComponent extends Component {
153153
static template = hbs\`
154154
{{g}}
155155
\`;

packages/core/__tests__/language-server/definitions.test.ts

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ describe('Language Server: Definitions', () => {
1616
test('component invocation', () => {
1717
project.write({
1818
'greeting.ts': stripIndent`
19-
import Component, { hbs } from '@glimmerx/component';
20-
export default class Greeting extends Component<{ message: string }> {
19+
import { Component, hbs } from '@glint/environment-glimmerx';
20+
export default class Greeting extends Component<{ Args: { message: string } }> {
2121
static template = hbs\`{{@message}}, World!\`;
2222
}
2323
`,
2424
'index.ts': stripIndent`
25-
import Component, { hbs } from '@glimmerx/component';
25+
import { Component, hbs } from '@glint/environment-glimmerx';
2626
import Greeting from './greeting';
2727
2828
export default class Application extends Component {
@@ -53,18 +53,18 @@ describe('Language Server: Definitions', () => {
5353
test('arg passing', () => {
5454
project.write({
5555
'greeting.ts': stripIndent`
56-
import Component, { hbs } from '@glimmerx/component';
56+
import { Component, hbs } from '@glint/environment-glimmerx';
5757
58-
export interface GreetingArgs {
58+
export type GreetingArgs = {
5959
message: string;
60-
}
60+
};
6161
62-
export default class Greeting extends Component<GreetingArgs> {
62+
export default class Greeting extends Component<{ Args: GreetingArgs }> {
6363
static template = hbs\`{{@message}}, World!\`;
6464
}
6565
`,
6666
'index.ts': stripIndent`
67-
import Component, { hbs } from '@glimmerx/component';
67+
import { Component, hbs } from '@glint/environment-glimmerx';
6868
import Greeting from './greeting';
6969
7070
export default class Application extends Component {
@@ -95,13 +95,13 @@ describe('Language Server: Definitions', () => {
9595
test('arg use', () => {
9696
project.write({
9797
'greeting.ts': stripIndent`
98-
import Component, { hbs } from '@glimmerx/component';
98+
import { Component, hbs } from '@glint/environment-glimmerx';
9999
100-
export interface GreetingArgs {
100+
export type GreetingArgs = {
101101
message: string;
102-
}
102+
};
103103
104-
export default class Greeting extends Component<GreetingArgs> {
104+
export default class Greeting extends Component<{ Args: GreetingArgs }> {
105105
static template = hbs\`{{@message}}, World!\`;
106106
}
107107
`,
@@ -127,18 +127,18 @@ describe('Language Server: Definitions', () => {
127127
test('import source', () => {
128128
project.write({
129129
'greeting.ts': stripIndent`
130-
import Component, { hbs } from '@glimmerx/component';
130+
import { Component, hbs } from '@glint/environment-glimmerx';
131131
132-
export interface GreetingArgs {
132+
export type GreetingArgs = {
133133
message: string;
134-
}
134+
};
135135
136-
export default class Greeting extends Component<GreetingArgs> {
136+
export default class Greeting extends Component<{ Args: GreetingArgs }> {
137137
static template = hbs\`{{@message}}, World!\`;
138138
}
139139
`,
140140
'index.ts': stripIndent`
141-
import Component, { hbs } from '@glimmerx/component';
141+
import { Component, hbs } from '@glint/environment-glimmerx';
142142
import Greeting from './greeting';
143143
144144
export class Application extends Component {

0 commit comments

Comments
 (0)