From 599eefde558aff1f42c15180ad0f5cbc80f76f8a Mon Sep 17 00:00:00 2001
From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com>
Date: Thu, 30 Oct 2025 17:11:57 -0400
Subject: [PATCH 1/2] Add JS app configured with TypeScript and tsconfig
---
.../js-template-imports-app/.gitignore | 1 +
.../js-template-imports-app/package.json | 36 +++++++++++++++++++
.../js-template-imports-app/src/Greeting.gjs | 17 +++++++++
.../src/NoTemplate.gjs | 6 ++++
.../js-template-imports-app/src/augmented.gjs | 6 ++++
.../src/empty-fixture.gjs | 6 ++++
.../src/empty-fixture2.gjs | 1 +
.../js-template-imports-app/src/index.gjs | 5 +++
.../js-template-imports-app/src/other.js | 1 +
.../js-template-imports-app/tsconfig.json | 11 ++++++
.../js-template-imports-app/types/index.d.ts | 15 ++++++++
11 files changed, 105 insertions(+)
create mode 100644 test-packages/js-template-imports-app/.gitignore
create mode 100644 test-packages/js-template-imports-app/package.json
create mode 100644 test-packages/js-template-imports-app/src/Greeting.gjs
create mode 100644 test-packages/js-template-imports-app/src/NoTemplate.gjs
create mode 100644 test-packages/js-template-imports-app/src/augmented.gjs
create mode 100644 test-packages/js-template-imports-app/src/empty-fixture.gjs
create mode 100644 test-packages/js-template-imports-app/src/empty-fixture2.gjs
create mode 100644 test-packages/js-template-imports-app/src/index.gjs
create mode 100644 test-packages/js-template-imports-app/src/other.js
create mode 100644 test-packages/js-template-imports-app/tsconfig.json
create mode 100644 test-packages/js-template-imports-app/types/index.d.ts
diff --git a/test-packages/js-template-imports-app/.gitignore b/test-packages/js-template-imports-app/.gitignore
new file mode 100644
index 000000000..cc1b7f164
--- /dev/null
+++ b/test-packages/js-template-imports-app/.gitignore
@@ -0,0 +1 @@
+tsconfig.tsbuildinfo
diff --git a/test-packages/js-template-imports-app/package.json b/test-packages/js-template-imports-app/package.json
new file mode 100644
index 000000000..52b52f9d8
--- /dev/null
+++ b/test-packages/js-template-imports-app/package.json
@@ -0,0 +1,36 @@
+{
+ "name": "js-template-imports-app",
+ "version": "0.0.0",
+ "private": true,
+ "license": "MIT",
+ "scripts": {
+ "test": "echo 'no standalone test within this project'",
+ "test:typecheck": "ember-tsc",
+ "test:tsc": "echo 'no standalone tsc within this project'"
+ },
+ "dependenciesMeta": {
+ "@glint/template": {
+ "injected": true
+ },
+ "@glint/ember-tsc": {
+ "injected": true
+ },
+ "@glint/tsserver-plugin": {
+ "injected": true
+ }
+ },
+ "devDependencies": {
+ "@glimmer/component": "^2.0.0",
+ "@glint/template": "workspace:*",
+ "@glint/ember-tsc": "workspace:*",
+ "@types/rsvp": "^4.0.9",
+ "@glint/tsserver-plugin": "workspace:*",
+ "@tsconfig/ember": "^3.0.9",
+ "ember-modifier": "^4.0.0",
+ "ember-source": "^6.2.0",
+ "typescript": ">=5.6.0"
+ },
+ "volta": {
+ "extends": "../../package.json"
+ }
+}
diff --git a/test-packages/js-template-imports-app/src/Greeting.gjs b/test-packages/js-template-imports-app/src/Greeting.gjs
new file mode 100644
index 000000000..305b7bb69
--- /dev/null
+++ b/test-packages/js-template-imports-app/src/Greeting.gjs
@@ -0,0 +1,17 @@
+import Component from '@glimmer/component';
+
+export default class Greeting extends Component {
+ message = 'Hello';
+
+
+ {{this.message}}, {{@target}}
+
+}
+
+function repeat(value, times) {
+ return Array(times).fill(value).join('');
+}
+
+const Bang =
+ {{repeat '!' @times}}
+
diff --git a/test-packages/js-template-imports-app/src/NoTemplate.gjs b/test-packages/js-template-imports-app/src/NoTemplate.gjs
new file mode 100644
index 000000000..2d756d874
--- /dev/null
+++ b/test-packages/js-template-imports-app/src/NoTemplate.gjs
@@ -0,0 +1,6 @@
+/*NoTemplate*/
+import { Other } from './other';
+
+export class Foo {}
+
+export const O = Other;
diff --git a/test-packages/js-template-imports-app/src/augmented.gjs b/test-packages/js-template-imports-app/src/augmented.gjs
new file mode 100644
index 000000000..2c0714373
--- /dev/null
+++ b/test-packages/js-template-imports-app/src/augmented.gjs
@@ -0,0 +1,6 @@
+
+ hi
+
+
diff --git a/test-packages/js-template-imports-app/src/empty-fixture.gjs b/test-packages/js-template-imports-app/src/empty-fixture.gjs
new file mode 100644
index 000000000..b36cfee1f
--- /dev/null
+++ b/test-packages/js-template-imports-app/src/empty-fixture.gjs
@@ -0,0 +1,6 @@
+// This file is intentionally empty.
+// It exists as a hack to get around some issues when testing our TS Plugin
+// within tsserver harness where, even though many of our tests are only
+// updating tsserver's in-memory content for a file, tsserver still needs
+// the file to exist in the file system in order for things like References
+// and other language features to work properly.
diff --git a/test-packages/js-template-imports-app/src/empty-fixture2.gjs b/test-packages/js-template-imports-app/src/empty-fixture2.gjs
new file mode 100644
index 000000000..83245e5eb
--- /dev/null
+++ b/test-packages/js-template-imports-app/src/empty-fixture2.gjs
@@ -0,0 +1 @@
+// See ./empty-fixture.ts for why this exists.
diff --git a/test-packages/js-template-imports-app/src/index.gjs b/test-packages/js-template-imports-app/src/index.gjs
new file mode 100644
index 000000000..f479dee5f
--- /dev/null
+++ b/test-packages/js-template-imports-app/src/index.gjs
@@ -0,0 +1,5 @@
+import Greeting from './Greeting';
+
+export default
+
+
diff --git a/test-packages/js-template-imports-app/src/other.js b/test-packages/js-template-imports-app/src/other.js
new file mode 100644
index 000000000..4bf93fdbb
--- /dev/null
+++ b/test-packages/js-template-imports-app/src/other.js
@@ -0,0 +1 @@
+export class Other {}
diff --git a/test-packages/js-template-imports-app/tsconfig.json b/test-packages/js-template-imports-app/tsconfig.json
new file mode 100644
index 000000000..860614a02
--- /dev/null
+++ b/test-packages/js-template-imports-app/tsconfig.json
@@ -0,0 +1,11 @@
+{
+ "extends": "@tsconfig/ember",
+ "compilerOptions": {
+ "baseUrl": ".",
+ "types": ["ember-source/types"]
+ },
+ "include": ["src", "types"],
+ "glint": {
+ "additionalGlobals": ["t"]
+ }
+}
diff --git a/test-packages/js-template-imports-app/types/index.d.ts b/test-packages/js-template-imports-app/types/index.d.ts
new file mode 100644
index 000000000..1ce64102a
--- /dev/null
+++ b/test-packages/js-template-imports-app/types/index.d.ts
@@ -0,0 +1,15 @@
+import '@glint/ember-tsc/types';
+
+import { HelperLike } from '@glint/template';
+
+declare module '@glint/ember-tsc/globals' {
+ export default interface Globals {
+ t: HelperLike<{
+ Args: {
+ Positional: string[];
+ Named: Record;
+ };
+ Return: string;
+ }>;
+ }
+}
From 78d424474ca4b7bfee2f8fe81ac471366769d2e1 Mon Sep 17 00:00:00 2001
From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com>
Date: Thu, 30 Oct 2025 17:17:51 -0400
Subject: [PATCH 2/2] Lockfile
---
pnpm-lock.yaml | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 85 insertions(+)
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index be3e596a4..d0c4848e5 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -321,6 +321,43 @@ importers:
specifier: ^0.5.0
version: 0.5.5
+ test-packages/js-template-imports-app:
+ dependenciesMeta:
+ '@glint/ember-tsc':
+ injected: true
+ '@glint/template':
+ injected: true
+ '@glint/tsserver-plugin':
+ injected: true
+ devDependencies:
+ '@glimmer/component':
+ specifier: ^2.0.0
+ version: 2.0.0
+ '@glint/ember-tsc':
+ specifier: workspace:*
+ version: file:packages/core(typescript@5.9.3)
+ '@glint/template':
+ specifier: workspace:*
+ version: file:packages/template
+ '@glint/tsserver-plugin':
+ specifier: workspace:*
+ version: file:packages/tsserver-plugin
+ '@tsconfig/ember':
+ specifier: ^3.0.9
+ version: 3.0.9
+ '@types/rsvp':
+ specifier: ^4.0.9
+ version: 4.0.9
+ ember-modifier:
+ specifier: ^4.0.0
+ version: 4.2.0(a66e9d3f366a4b96fc9f9ab816a4c768)
+ ember-source:
+ specifier: ^6.2.0
+ version: 6.7.0(@glimmer/component@2.0.0)
+ typescript:
+ specifier: '>=5.6.0'
+ version: 5.9.3
+
test-packages/package-test-core:
devDependencies:
'@glimmer/component':
@@ -10892,6 +10929,33 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@glint/ember-tsc@file:packages/core(typescript@5.9.3)':
+ dependencies:
+ '@glimmer/syntax': 0.95.0
+ '@glint/template': link:packages/template
+ '@volar/kit': 2.4.23(typescript@5.9.3)
+ '@volar/language-core': 2.4.23
+ '@volar/language-server': 2.4.23
+ '@volar/language-service': 2.4.23
+ '@volar/source-map': 2.4.23
+ '@volar/test-utils': 2.4.23
+ '@volar/typescript': 2.4.23
+ computeds: 0.0.1
+ content-tag: 3.1.2
+ escape-string-regexp: 4.0.0
+ semver: 7.7.1
+ silent-error: 1.1.1
+ typescript: 5.9.3
+ uuid: 8.3.2
+ volar-service-html: 0.0.64(@volar/language-service@2.4.23)
+ volar-service-typescript: 0.0.65(@volar/language-service@2.4.23)
+ vscode-languageserver-protocol: 3.17.5
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-uri: 3.1.0
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - supports-color
+
'@glint/template@file:packages/template': {}
'@glint/tsserver-plugin@file:packages/tsserver-plugin':
@@ -11714,6 +11778,15 @@ snapshots:
vscode-languageserver-textdocument: 1.0.12
vscode-uri: 3.1.0
+ '@volar/kit@2.4.23(typescript@5.9.3)':
+ dependencies:
+ '@volar/language-service': 2.4.23
+ '@volar/typescript': 2.4.23
+ typesafe-path: 0.2.2
+ typescript: 5.9.3
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-uri: 3.1.0
+
'@volar/language-core@2.4.23':
dependencies:
'@volar/source-map': 2.4.23
@@ -13503,6 +13576,18 @@ snapshots:
- '@babel/core'
- supports-color
+ ember-modifier@4.2.0(a66e9d3f366a4b96fc9f9ab816a4c768):
+ dependencies:
+ '@embroider/addon-shim': 1.9.0
+ decorator-transforms: 2.3.0
+ ember-cli-normalize-entity-name: 1.0.0
+ ember-cli-string-utils: 1.1.0
+ optionalDependencies:
+ ember-source: 6.7.0(@glimmer/component@2.0.0)
+ transitivePeerDependencies:
+ - '@babel/core'
+ - supports-color
+
ember-modifier@4.2.0(bf9a32874a386a74ea54ee4d49caf0ab):
dependencies:
'@embroider/addon-shim': 1.9.0