Skip to content

Commit

Permalink
Merge pull request #58 from typed-ember/env-reexports
Browse files Browse the repository at this point in the history
  • Loading branch information
dfreeman authored Mar 11, 2021
2 parents 1c005c4 + 8bfeecc commit ed20090
Show file tree
Hide file tree
Showing 40 changed files with 487 additions and 366 deletions.
6 changes: 5 additions & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": ["--extensionDevelopmentPath=${workspaceFolder}/packages/vscode"]
"args": [
"--extensionDevelopmentPath=${workspaceFolder}/packages/vscode",
"${workspaceFolder}/test-packages/demo-ember-app",
"${workspaceFolder}/test-packages/demo-glimmerx-app"
]
}
]
}
34 changes: 17 additions & 17 deletions packages/core/__tests__/cli/check.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@ describe('CLI: single-pass typechecking', () => {

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

test('reports diagnostics for a template syntax error', async () => {
let code = stripIndent`
import Component, { hbs } from '@glimmerx/component';
import { Component, hbs } from '@glint/environment-glimmerx';
interface ApplicationArgs {
type ApplicationArgs = {
version: string;
}
};
export default class Application extends Component<ApplicationArgs> {
export default class Application extends Component<{ Args: ApplicationArgs }> {
private startupTime = new Date().toISOString();
public static template = hbs\`
Expand Down Expand Up @@ -78,13 +78,13 @@ describe('CLI: single-pass typechecking', () => {

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

let script = stripIndent`
import Component from '@ember/component';
import { EmberComponent } from '@glint/environment-ember-loose';
export interface MyComponentArgs {
export type MyComponentArgs = {
message: string;
}
};
export default class MyComponent extends Component<MyComponentArgs> {
export default class MyComponent extends EmberComponent<{ Args: MyComponentArgs }> {
target = 'World!';
}
`;
Expand Down Expand Up @@ -156,7 +156,7 @@ describe('CLI: single-pass typechecking', () => {

test('honors .glintrc configuration', async () => {
let code = stripIndent`
import Component, { hbs } from '@glimmerx/component';
import { Component, hbs } from '@glint/environment-glimmerx';
export default class Application extends Component {
public static template = hbs\`
Expand Down
18 changes: 10 additions & 8 deletions packages/core/__tests__/cli/declaration.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ describe('CLI: emitting declarations', () => {

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

expect(project.read('index.d.ts')).toMatchInlineSnapshot(`
"import Component from '@glimmerx/component';
export interface ApplicationArgs {
"import { Component } from '@glint/environment-glimmerx';
export declare type ApplicationArgs = {
version: string;
}
export default class Application extends Component<ApplicationArgs> {
};
export default class Application extends Component<{
Args: ApplicationArgs;
}> {
private startupTime;
static template: import(\\"@glint/environment-glimmerx/types\\").Template;
}
Expand Down
40 changes: 20 additions & 20 deletions packages/core/__tests__/cli/watch.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ describe('CLI: watched typechecking', () => {

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

test('reports diagnostics for a template syntax error', async () => {
let code = stripIndent`
import Component, { hbs } from '@glimmerx/component';
import { Component, hbs } from '@glint/environment-glimmerx';
interface ApplicationArgs {
type ApplicationArgs = {
version: string;
}
};
export default class Application extends Component<ApplicationArgs> {
export default class Application extends Component<{ Args: ApplicationArgs }> {
private startupTime = new Date().toISOString();
public static template = hbs\`
Expand Down Expand Up @@ -87,13 +87,13 @@ describe('CLI: watched typechecking', () => {

test('reports diagnostics for a template type error', async () => {
let code = stripIndent`
import Component, { hbs } from '@glimmerx/component';
import { Component, hbs } from '@glint/environment-glimmerx';
interface ApplicationArgs {
type ApplicationArgs = {
version: string;
}
};
export default class Application extends Component<ApplicationArgs> {
export default class Application extends Component<{ Args: ApplicationArgs }> {
private startupTime = new Date().toISOString();
public static template = hbs\`
Expand Down Expand Up @@ -131,13 +131,13 @@ describe('CLI: watched typechecking', () => {

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

let script = stripIndent`
import Component from '@ember/component';
import { EmberComponent } from '@glint/environment-ember-loose';
export interface MyComponentArgs {
export type MyComponentArgs = {
message: string;
}
};
export default class MyComponent extends Component<MyComponentArgs> {
export default class MyComponent extends EmberComponent<{ Args: MyComponentArgs }> {
target = 'World!';
}
`;
Expand Down
24 changes: 12 additions & 12 deletions packages/core/__tests__/language-server/completions.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@ describe('Language Server: Completions', () => {

test('passing component args', () => {
let code = stripIndent`
import Component, { hbs } from '@glimmerx/component';
import { Component, hbs } from '@glint/environment-glimmerx';
export default class MyComponent extends Component {
static template = hbs\`
<Inner @ />
\`;
}
class Inner extends Component<{ foo?: string; bar?: number }> {}
class Inner extends Component<{ Args: { foo?: string; bar?: number } }> {}
`;

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

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

test('referencing own args', async () => {
let code = stripIndent`
import Component, { hbs } from '@glimmerx/component';
import { Component, hbs } from '@glint/environment-glimmerx';
interface MyComponentArgs<T> {
type MyComponentArgs<T> = {
items: Set<T>;
}
};
export default class MyComponent<T> extends Component<MyComponentArgs<T>> {
export default class MyComponent<T> extends Component<{ Args: MyComponentArgs<T> }> {
static template = hbs\`
{{@i}}
\`;
Expand All @@ -110,14 +110,14 @@ describe('Language Server: Completions', () => {

let details = server.getCompletionDetails(itemsCompletion!);

expect(details.detail).toEqual('(property) MyComponentArgs<T>.items: Set<T>');
expect(details.detail).toEqual('(property) items: Set<T>');
});

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

test('referencing module-scope identifiers', async () => {
let code = stripIndent`
import Component, { hbs } from '@glimmerx/component';
import { Component, hbs } from '@glint/environment-glimmerx';
const greeting: string = 'hello';
export default class MyComponent<T> extends Component {
export default class MyComponent extends Component {
static template = hbs\`
{{g}}
\`;
Expand Down
34 changes: 17 additions & 17 deletions packages/core/__tests__/language-server/definitions.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ describe('Language Server: Definitions', () => {
test('component invocation', () => {
project.write({
'greeting.ts': stripIndent`
import Component, { hbs } from '@glimmerx/component';
export default class Greeting extends Component<{ message: string }> {
import { Component, hbs } from '@glint/environment-glimmerx';
export default class Greeting extends Component<{ Args: { message: string } }> {
static template = hbs\`{{@message}}, World!\`;
}
`,
'index.ts': stripIndent`
import Component, { hbs } from '@glimmerx/component';
import { Component, hbs } from '@glint/environment-glimmerx';
import Greeting from './greeting';
export default class Application extends Component {
Expand Down Expand Up @@ -53,18 +53,18 @@ describe('Language Server: Definitions', () => {
test('arg passing', () => {
project.write({
'greeting.ts': stripIndent`
import Component, { hbs } from '@glimmerx/component';
import { Component, hbs } from '@glint/environment-glimmerx';
export interface GreetingArgs {
export type GreetingArgs = {
message: string;
}
};
export default class Greeting extends Component<GreetingArgs> {
export default class Greeting extends Component<{ Args: GreetingArgs }> {
static template = hbs\`{{@message}}, World!\`;
}
`,
'index.ts': stripIndent`
import Component, { hbs } from '@glimmerx/component';
import { Component, hbs } from '@glint/environment-glimmerx';
import Greeting from './greeting';
export default class Application extends Component {
Expand Down Expand Up @@ -95,13 +95,13 @@ describe('Language Server: Definitions', () => {
test('arg use', () => {
project.write({
'greeting.ts': stripIndent`
import Component, { hbs } from '@glimmerx/component';
import { Component, hbs } from '@glint/environment-glimmerx';
export interface GreetingArgs {
export type GreetingArgs = {
message: string;
}
};
export default class Greeting extends Component<GreetingArgs> {
export default class Greeting extends Component<{ Args: GreetingArgs }> {
static template = hbs\`{{@message}}, World!\`;
}
`,
Expand All @@ -127,18 +127,18 @@ describe('Language Server: Definitions', () => {
test('import source', () => {
project.write({
'greeting.ts': stripIndent`
import Component, { hbs } from '@glimmerx/component';
import { Component, hbs } from '@glint/environment-glimmerx';
export interface GreetingArgs {
export type GreetingArgs = {
message: string;
}
};
export default class Greeting extends Component<GreetingArgs> {
export default class Greeting extends Component<{ Args: GreetingArgs }> {
static template = hbs\`{{@message}}, World!\`;
}
`,
'index.ts': stripIndent`
import Component, { hbs } from '@glimmerx/component';
import { Component, hbs } from '@glint/environment-glimmerx';
import Greeting from './greeting';
export class Application extends Component {
Expand Down
Loading

0 comments on commit ed20090

Please sign in to comment.