Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 2 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@
"@types/yargs": "^17.0.10",
"@typescript-eslint/eslint-plugin": "^5.42.1",
"@typescript-eslint/parser": "^5.42.1",
"@types/rsvp": "^4.0.9",
"ember-source": "~6.2.0",
"eslint": "^8.27.0",
"prettier": "^3.3.2",
"release-it": "^15.5.0",
Expand All @@ -48,12 +50,6 @@
"@types/node": "Locking to avoid conflicts between the declared version in packages/core and floating '*' versions when we run in CI without the lockfile"
},
"resolutions": {
"@glimmer/manager": "0.84.3",
"@glimmer/interfaces": "0.84.3",
"@glimmer/runtime": "0.84.3",
"@glimmer/reference": "0.84.3",
"@glimmer/util": "0.84.3",
"@glimmer/validator": "0.84.3",
"@types/yargs": "17.0.13",
"@types/node": "^20.10.6",
"ember-cli-htmlbars": "^6.0.1"
Expand Down
4 changes: 2 additions & 2 deletions packages/core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
"typescript": ">=5.6.0"
},
"dependencies": {
"@glimmer/syntax": "^0.84.3",
"@glimmer/syntax": "*",
"@volar/kit": "2.4.12",
"@volar/language-core": "2.4.12",
"@volar/language-server": "2.4.12",
Expand Down Expand Up @@ -65,7 +65,7 @@
"execa": "^4.0.1",
"glint-monorepo-test-utils": "^1.4.0",
"strip-ansi": "^6.0.0",
"vitest": "~1.0.0"
"vitest": "~1.4.0"
},
"publishConfig": {
"access": "public"
Expand Down
27 changes: 24 additions & 3 deletions packages/core/src/transform/template/template-to-typescript.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,22 @@ export type TemplateToTypescriptOptions = {
specialForms?: Record<string, GlintSpecialForm>;
};

/**
* NOTE: this is tech debt. Tho solving it will require more work than polyfilling old behavior of path.parts
* @param node
* @returns
*/
function getPathParts(node: AST.PathExpression): string[] {
// The original code which used old @glimmer/syntax used node.parts,
// which never included the @ of the path.
let atLess = node.head.original.replace(/^@/, '');

// The original path.parts array did not include "this" in the parts.
if (atLess === 'this') return node.tail;

return [atLess, ...node.tail];
}

/**
* Given the text contents of a template, returns a TypeScript representation
* of that template's contents, as well as a mapping of offsets and ranges between
Expand Down Expand Up @@ -60,7 +76,12 @@ export function templateToTypescript(
function emitTopLevelStatement(node: AST.TopLevelStatement): void {
switch (node.type) {
case 'Block':
throw new Error(`Internal error: unexpected top-level ${node.type}`);
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-expect-error
case 'PartialStatement':
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-expect-error
throw new Error(`Internal error: unexpected top-level ${node.type}`);

case 'TextNode':
Expand Down Expand Up @@ -1194,7 +1215,7 @@ export function templateToTypescript(
// A little hairier (ha) for mustaches, since they
if (node.path.type === 'PathExpression') {
let start = template.lastIndexOf(node.path.original, rangeForNode(node).end);
emitPathContents(node.path.parts, start, determinePathKind(node.path));
emitPathContents(getPathParts(node.path), start, determinePathKind(node.path));
mapper.text(';');
mapper.newline();
}
Expand Down Expand Up @@ -1338,12 +1359,12 @@ export function templateToTypescript(
function emitPath(node: AST.PathExpression): void {
mapper.forNode(node, () => {
let { start } = rangeForNode(node);
emitPathContents(node.parts, start, determinePathKind(node));
emitPathContents(getPathParts(node), start, determinePathKind(node));
});
}

function determinePathKind(node: AST.PathExpression): PathKind {
return node.this ? 'this' : node.data ? 'arg' : 'free';
return node.head.original === 'this' ? 'this' : node.data ? 'arg' : 'free';
}

function emitPathContents(parts: string[], start: number, kind: PathKind): void {
Expand Down
28 changes: 1 addition & 27 deletions packages/environment-ember-loose/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,30 +31,10 @@
"peerDependencies": {
"@glimmer/component": ">=1.1.2",
"@glint/template": "^1.4.0",
"@types/ember__array": "^4.0.2",
"@types/ember__component": "^4.0.10",
"@types/ember__controller": "^4.0.2",
"@types/ember__object": "^4.0.4",
"@types/ember__routing": "^4.0.11",
"ember-cli-htmlbars": "^6.0.1",
"ember-modifier": "^3.2.7 || ^4.0.0"
},
"peerDependenciesMeta": {
"@types/ember__array": {
"optional": true
},
"@types/ember__component": {
"optional": true
},
"@types/ember__controller": {
"optional": true
},
"@types/ember__object": {
"optional": true
},
"@types/ember__routing": {
"optional": true
},
"ember-cli-htmlbars": {
"optional": true
},
Expand All @@ -64,15 +44,9 @@
},
"devDependencies": {
"@glimmer/component": "^1.1.2",
"@types/ember__array": "^4.0.2",
"@types/ember__component": "^4.0.10",
"@types/ember__controller": "^4.0.2",
"@types/ember__destroyable": "^4.0.1",
"@types/ember__object": "^4.0.4",
"@types/ember__routing": "^4.0.11",
"ember-modifier": "^3.2.7 || ^4.0.0",
"expect-type": "^0.15.0",
"vitest": "~1.0.0"
"vitest": "~1.4.0"
},
"publishConfig": {
"access": "public"
Expand Down
13 changes: 2 additions & 11 deletions packages/environment-ember-template-imports/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,7 @@
},
"peerDependencies": {
"@glint/environment-ember-loose": "^1.4.0",
"@glint/template": "^1.4.0",
"@types/ember__component": "^4.0.10",
"@types/ember__helper": "^4.0.1",
"@types/ember__modifier": "^4.0.3",
"@types/ember__routing": "^4.0.12"
"@glint/template": "^1.4.0"
},
"peerDependenciesMeta": {
"@types/ember__component": {
Expand All @@ -54,13 +50,8 @@
}
},
"devDependencies": {
"@types/ember": "^4.0.0",
"@types/ember__component": "^4.0.10",
"@types/ember__helper": "^4.0.1",
"@types/ember__modifier": "^4.0.3",
"@types/ember__routing": "^4.0.12",
"@types/node": "^18.11.5",
"vitest": "~1.0.0"
"vitest": "~1.4.0"
},
"publishConfig": {
"access": "public"
Expand Down
1 change: 0 additions & 1 deletion packages/template/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
],
"devDependencies": {
"@glimmer/component": "^1.1.2",
"@types/ember__component": "~4.0.8",
"expect-type": "^0.15.0",
"sums-up": "^2.1.0"
},
Expand Down
3 changes: 1 addition & 2 deletions test-packages/ts-ember-app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
"@glimmer/tracking": "^1.1.2",
"@glint/core": "^1.4.0",
"@glint/environment-ember-loose": "^1.4.0",
"@types/ember": "~4.0.0",
"@types/qunit": "^2.11.1",
"broccoli-asset-rev": "^3.0.0",
"ember-auto-import": "^2.4.1",
Expand All @@ -47,7 +46,7 @@
"ember-page-title": "^7.0.0",
"ember-qunit": "^6.1.1",
"ember-resolver": "^9.0.0",
"ember-source": "~4.4.0",
"ember-source": "~6.2.0",
"ember-template-lint": "^4.8.0",
"eslint": "^7.32.0",
"eslint-config-prettier": "^8.5.0",
Expand Down
2 changes: 1 addition & 1 deletion test-packages/ts-ember-preview-types/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
"@glimmer/tracking": "^1.1.2",
"babel-eslint": "^10.1.0",
"ember-page-title": "^7.0.0",
"ember-source": "~4.8.2",
"ember-source": "~6.2.0",
"ember-welcome-page": "^6.2.0",
"eslint": "^7.32.0",
"eslint-config-prettier": "^8.5.0",
Expand Down
16 changes: 12 additions & 4 deletions tsconfig.compileroptions.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,22 @@
"strict": true,
"noImplicitOverride": true,
"noPropertyAccessFromIndexSignature": true,
"esModuleInterop": false,
"composite": true,
"declaration": true,
"declarationMap": true,
"sourceMap": true,
"types": ["@types/node"],
"types": ["ember-source/types", "@types/node"],

// new
"allowSyntheticDefaultImports": true
// compatibility, since
// https://github.com/microsoft/vscode/issues/130367
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
// Need skipLibCheck because @glimmer/* packages don't have extensiosn on their imports.
// The @glimmer packages have moduleResultion: bundler.
// This could probably be avoided if we bundle the types for @glimmer/* packages,
// But that comes with its own challenges.
//
// Because of how vscode/ls extesnions need to be cjs, we can't use moduleResolution=bundler
"skipLibCheck": true
}
}
Loading
Loading