Repository: ember-cli/ember-cli
Pull request #10644 (2025-02-19 12:01:45)

 [BUGFIX beta] `--no-ember-data` fixes
I noticed we didn't add fixture tests for the new `--no-ember-data` flag, so it's harder to verify the output of certain blueprint changes.

This also includes a fix for https://github.com/ember-cli/ember-cli/pull/10644#discussion_r1961566641 and includes the changes from #10642 as well.

Windvis: Should this target the beta branch instead of master?
Windvis: Some of the CI faillures is due to the Embroider "experiment". I only added fixture tests for the classic build since I didn't think it was relevant.

Should I add -embroider variants for the 2 fixtures as well, or do I simply disable the test new when the Embroider experiment is tested?
NullVoxPopuli: To update those, you could
```bash
WRITE_FIXTURES=true EMBER_CLI_ENABLE_ALL_EXPERIMENTS=true pnpm test:all
```
NullVoxPopuli: > Should this target the beta branch 

Targeting the default branch is fine, as long as no non-test code changes are needed, otherwise, targeting beta would be helpful ya
Windvis: The current CI faillure seems like a flakey windows setup to me: https://github.com/ember-cli/ember-cli/actions/runs/13414576286/job/37472328991?pr=10644#step:4:125

Patch:
diff --git a/blueprints/app/files/package.json b/blueprints/app/files/package.json
index 50c6f9beb..5cddd67e6 100644
--- a/blueprints/app/files/package.json
+++ b/blueprints/app/files/package.json
@@ -56,8 +56,8 @@
     "@tsconfig/ember": "^3.0.9",
     "@types/eslint__js": "^8.42.3",
     "@types/qunit": "^2.19.12",
-    "@types/rsvp": "^4.0.9",
-    "@warp-drive/core-types": "~0.0.1<% } %>",
+    "@types/rsvp": "^4.0.9<% if (emberData) {%>",
+    "@warp-drive/core-types": "~0.0.1<% }} %>",
     "broccoli-asset-rev": "^3.0.0",
     "concurrently": "^9.1.2",
     "ember-auto-import": "^2.10.0",
diff --git a/blueprints/app/index.js b/blueprints/app/index.js
index 5c8e99cef..5f684a697 100644
--- a/blueprints/app/index.js
+++ b/blueprints/app/index.js
@@ -41,6 +41,7 @@ module.exports = {
           embroider && '"--embroider"',
           options.ciProvider && `"--ci-provider=${options.ciProvider}"`,
           options.typescript && `"--typescript"`,
+          !options.emberData && `"--no-ember-data"`,
         ]
           .filter(Boolean)
           .join(',\n            ') +
diff --git a/dev/update-blueprint-dependencies.js b/dev/update-blueprint-dependencies.js
index 2f24d44c5..27dc12767 100644
--- a/dev/update-blueprint-dependencies.js
+++ b/dev/update-blueprint-dependencies.js
@@ -50,12 +50,16 @@ const PACKAGE_FILES = [
   '../tests/fixtures/app/npm/package.json',
   '../tests/fixtures/app/yarn/package.json',
   '../tests/fixtures/app/pnpm/package.json',
+  '../tests/fixtures/app/no-ember-data/package.json',
   '../tests/fixtures/app/embroider/package.json',
   '../tests/fixtures/app/embroider-yarn/package.json',
   '../tests/fixtures/app/embroider-pnpm/package.json',
   '../tests/fixtures/app/embroider-no-welcome/package.json',
+  '../tests/fixtures/app/embroider-no-ember-data/package.json',
   '../tests/fixtures/app/typescript/package.json',
+  '../tests/fixtures/app/typescript-no-ember-data/package.json',
   '../tests/fixtures/app/typescript-embroider/package.json',
+  '../tests/fixtures/app/typescript-embroider-no-ember-data/package.json',
   '../tests/fixtures/addon/defaults/package.json',
   '../tests/fixtures/addon/yarn/package.json',
   '../tests/fixtures/addon/pnpm/package.json',


Test patch:
diff --git a/tests/acceptance/new-test.js b/tests/acceptance/new-test.js
index c1dfd47f5..80b187a6e 100644
--- a/tests/acceptance/new-test.js
+++ b/tests/acceptance/new-test.js
@@ -710,6 +710,35 @@ describe('Acceptance: ember new', function () {
       checkEmberCLIBuild(fixturePath, 'ember-cli-build.js');
       checkEslintConfig(fixturePath);
     });
+
+    it('app + no-ember-data', async function () {
+      await ember(['new', 'foo', '--no-ember-data', '--skip-npm', '--skip-git']);
+
+      let fixturePath;
+      if (isExperimentEnabled('EMBROIDER')) {
+        fixturePath = 'app/embroider-no-ember-data';
+      } else {
+        fixturePath = 'app/no-ember-data';
+      }
+
+      checkFileWithJSONReplacement(fixturePath, 'config/ember-cli-update.json', 'packages[0].version', currentVersion);
+      checkFileWithJSONReplacement(fixturePath, 'package.json', 'devDependencies.ember-cli', `~${currentVersion}`);
+    });
+
+    it('app + typescript + no-ember-data', async function () {
+      await ember(['new', 'foo', '--typescript', '--no-ember-data', '--skip-npm', '--skip-git']);
+
+      let fixturePath;
+      if (isExperimentEnabled('EMBROIDER')) {
+        fixturePath = 'app/typescript-embroider-no-ember-data';
+      } else {
+        fixturePath = 'app/typescript-no-ember-data';
+      }
+
+      checkFile('tsconfig.json', path.join(__dirname, '../fixtures', fixturePath, 'tsconfig.json'));
+      checkFileWithJSONReplacement(fixturePath, 'config/ember-cli-update.json', 'packages[0].version', currentVersion);
+      checkFileWithJSONReplacement(fixturePath, 'package.json', 'devDependencies.ember-cli', `~${currentVersion}`);
+    });
   });
 
   describe('verify dependencies', function () {
diff --git a/tests/fixtures/app/embroider-no-ember-data/config/ember-cli-update.json b/tests/fixtures/app/embroider-no-ember-data/config/ember-cli-update.json
new file mode 100644
index 000000000..3e66f320a
--- /dev/null
+++ b/tests/fixtures/app/embroider-no-ember-data/config/ember-cli-update.json
@@ -0,0 +1,22 @@
+{
+  "schemaVersion": "1.0.0",
+  "packages": [
+    {
+      "name": "ember-cli",
+      "version": "<%= emberCLIVersion %>",
+      "blueprints": [
+        {
+          "name": "app",
+          "outputRepo": "https://github.com/ember-cli/ember-new-output",
+          "codemodsSource": "ember-app-codemods-manifest@1",
+          "isBaseBlueprint": true,
+          "options": [
+            "--embroider",
+            "--ci-provider=github",
+            "--no-ember-data"
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/tests/fixtures/app/embroider-no-ember-data/package.json b/tests/fixtures/app/embroider-no-ember-data/package.json
new file mode 100644
index 000000000..e5fe55cd1
--- /dev/null
+++ b/tests/fixtures/app/embroider-no-ember-data/package.json
@@ -0,0 +1,85 @@
+{
+  "name": "foo",
+  "version": "0.0.0",
+  "private": true,
+  "description": "Small description for foo goes here",
+  "repository": "",
+  "license": "MIT",
+  "author": "",
+  "directories": {
+    "doc": "doc",
+    "test": "tests"
+  },
+  "scripts": {
+    "build": "ember build --environment=production",
+    "format": "prettier . --cache --write",
+    "lint": "concurrently \"npm:lint:*(!fix)\" --names \"lint:\" --prefixColors auto",
+    "lint:css": "stylelint \"**/*.css\"",
+    "lint:css:fix": "concurrently \"npm:lint:css -- --fix\"",
+    "lint:fix": "concurrently \"npm:lint:*:fix\" --names \"fix:\" --prefixColors auto && npm run format",
+    "lint:format": "prettier . --cache --check",
+    "lint:hbs": "ember-template-lint .",
+    "lint:hbs:fix": "ember-template-lint . --fix",
+    "lint:js": "eslint . --cache",
+    "lint:js:fix": "eslint . --fix",
+    "start": "ember serve",
+    "test": "concurrently \"npm:lint\" \"npm:test:*\" --names \"lint,test:\" --prefixColors auto",
+    "test:ember": "ember test"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.26.7",
+    "@babel/eslint-parser": "^7.26.5",
+    "@babel/plugin-proposal-decorators": "^7.25.9",
+    "@ember/optional-features": "^2.2.0",
+    "@ember/test-helpers": "^5.1.0",
+    "@embroider/compat": "^3.8.0",
+    "@embroider/core": "^3.5.0",
+    "@embroider/macros": "^1.16.10",
+    "@embroider/webpack": "^4.0.9",
+    "@eslint/js": "^9.19.0",
+    "@glimmer/component": "^2.0.0",
+    "@glimmer/tracking": "^1.1.2",
+    "broccoli-asset-rev": "^3.0.0",
+    "concurrently": "^9.1.2",
+    "ember-auto-import": "^2.10.0",
+    "ember-cli": "~<%= emberCLIVersion %>",
+    "ember-cli-app-version": "^7.0.0",
+    "ember-cli-babel": "^8.2.0",
+    "ember-cli-clean-css": "^3.0.0",
+    "ember-cli-dependency-checker": "^3.3.3",
+    "ember-cli-deprecation-workflow": "^3.1.0",
+    "ember-cli-htmlbars": "^6.3.0",
+    "ember-cli-inject-live-reload": "^2.1.0",
+    "ember-fetch": "^8.1.2",
+    "ember-load-initializers": "^3.0.1",
+    "ember-modifier": "^4.2.0",
+    "ember-page-title": "^8.2.3",
+    "ember-qunit": "^9.0.1",
+    "ember-resolver": "^13.1.0",
+    "ember-source": "~6.3.0-beta.1",
+    "ember-template-imports": "^4.3.0",
+    "ember-template-lint": "^6.1.0",
+    "ember-welcome-page": "^7.0.2",
+    "eslint": "^9.19.0",
+    "eslint-config-prettier": "^9.1.0",
+    "eslint-plugin-ember": "^12.5.0",
+    "eslint-plugin-n": "^17.15.1",
+    "eslint-plugin-qunit": "^8.1.2",
+    "globals": "^15.14.0",
+    "loader.js": "^4.7.0",
+    "prettier": "^3.4.2",
+    "prettier-plugin-ember-template-tag": "^2.0.4",
+    "qunit": "^2.24.1",
+    "qunit-dom": "^3.4.0",
+    "stylelint": "^16.14.1",
+    "stylelint-config-standard": "^36.0.1",
+    "tracked-built-ins": "^3.4.0",
+    "webpack": "^5.97.1"
+  },
+  "engines": {
+    "node": ">= 18"
+  },
+  "ember": {
+    "edition": "octane"
+  }
+}
diff --git a/tests/fixtures/app/no-ember-data/config/ember-cli-update.json b/tests/fixtures/app/no-ember-data/config/ember-cli-update.json
new file mode 100644
index 000000000..d54f83933
--- /dev/null
+++ b/tests/fixtures/app/no-ember-data/config/ember-cli-update.json
@@ -0,0 +1,21 @@
+{
+  "schemaVersion": "1.0.0",
+  "packages": [
+    {
+      "name": "ember-cli",
+      "version": "<%= emberCLIVersion %>",
+      "blueprints": [
+        {
+          "name": "app",
+          "outputRepo": "https://github.com/ember-cli/ember-new-output",
+          "codemodsSource": "ember-app-codemods-manifest@1",
+          "isBaseBlueprint": true,
+          "options": [
+            "--ci-provider=github",
+            "--no-ember-data"
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/tests/fixtures/app/no-ember-data/package.json b/tests/fixtures/app/no-ember-data/package.json
new file mode 100644
index 000000000..7c679890d
--- /dev/null
+++ b/tests/fixtures/app/no-ember-data/package.json
@@ -0,0 +1,84 @@
+{
+  "name": "foo",
+  "version": "0.0.0",
+  "private": true,
+  "description": "Small description for foo goes here",
+  "repository": "",
+  "license": "MIT",
+  "author": "",
+  "directories": {
+    "doc": "doc",
+    "test": "tests"
+  },
+  "scripts": {
+    "build": "ember build --environment=production",
+    "format": "prettier . --cache --write",
+    "lint": "concurrently \"npm:lint:*(!fix)\" --names \"lint:\" --prefixColors auto",
+    "lint:css": "stylelint \"**/*.css\"",
+    "lint:css:fix": "concurrently \"npm:lint:css -- --fix\"",
+    "lint:fix": "concurrently \"npm:lint:*:fix\" --names \"fix:\" --prefixColors auto && npm run format",
+    "lint:format": "prettier . --cache --check",
+    "lint:hbs": "ember-template-lint .",
+    "lint:hbs:fix": "ember-template-lint . --fix",
+    "lint:js": "eslint . --cache",
+    "lint:js:fix": "eslint . --fix",
+    "start": "ember serve",
+    "test": "concurrently \"npm:lint\" \"npm:test:*\" --names \"lint,test:\" --prefixColors auto",
+    "test:ember": "ember test"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.26.7",
+    "@babel/eslint-parser": "^7.26.5",
+    "@babel/plugin-proposal-decorators": "^7.25.9",
+    "@ember/optional-features": "^2.2.0",
+    "@ember/test-helpers": "^5.1.0",
+    "@embroider/macros": "^1.16.10",
+    "@eslint/js": "^9.19.0",
+    "@glimmer/component": "^2.0.0",
+    "@glimmer/tracking": "^1.1.2",
+    "broccoli-asset-rev": "^3.0.0",
+    "concurrently": "^9.1.2",
+    "ember-auto-import": "^2.10.0",
+    "ember-cli": "~<%= emberCLIVersion %>",
+    "ember-cli-app-version": "^7.0.0",
+    "ember-cli-babel": "^8.2.0",
+    "ember-cli-clean-css": "^3.0.0",
+    "ember-cli-dependency-checker": "^3.3.3",
+    "ember-cli-deprecation-workflow": "^3.1.0",
+    "ember-cli-htmlbars": "^6.3.0",
+    "ember-cli-inject-live-reload": "^2.1.0",
+    "ember-cli-sri": "^2.1.1",
+    "ember-cli-terser": "^4.0.2",
+    "ember-fetch": "^8.1.2",
+    "ember-load-initializers": "^3.0.1",
+    "ember-modifier": "^4.2.0",
+    "ember-page-title": "^8.2.3",
+    "ember-qunit": "^9.0.1",
+    "ember-resolver": "^13.1.0",
+    "ember-source": "~6.3.0-beta.1",
+    "ember-template-imports": "^4.3.0",
+    "ember-template-lint": "^6.1.0",
+    "ember-welcome-page": "^7.0.2",
+    "eslint": "^9.19.0",
+    "eslint-config-prettier": "^9.1.0",
+    "eslint-plugin-ember": "^12.5.0",
+    "eslint-plugin-n": "^17.15.1",
+    "eslint-plugin-qunit": "^8.1.2",
+    "globals": "^15.14.0",
+    "loader.js": "^4.7.0",
+    "prettier": "^3.4.2",
+    "prettier-plugin-ember-template-tag": "^2.0.4",
+    "qunit": "^2.24.1",
+    "qunit-dom": "^3.4.0",
+    "stylelint": "^16.14.1",
+    "stylelint-config-standard": "^36.0.1",
+    "tracked-built-ins": "^3.4.0",
+    "webpack": "^5.97.1"
+  },
+  "engines": {
+    "node": ">= 18"
+  },
+  "ember": {
+    "edition": "octane"
+  }
+}
diff --git a/tests/fixtures/app/typescript-embroider-no-ember-data/config/ember-cli-update.json b/tests/fixtures/app/typescript-embroider-no-ember-data/config/ember-cli-update.json
new file mode 100644
index 000000000..9ab9992b7
--- /dev/null
+++ b/tests/fixtures/app/typescript-embroider-no-ember-data/config/ember-cli-update.json
@@ -0,0 +1,23 @@
+{
+  "schemaVersion": "1.0.0",
+  "packages": [
+    {
+      "name": "ember-cli",
+      "version": "<%= emberCLIVersion %>",
+      "blueprints": [
+        {
+          "name": "app",
+          "outputRepo": "https://github.com/ember-cli/ember-new-output",
+          "codemodsSource": "ember-app-codemods-manifest@1",
+          "isBaseBlueprint": true,
+          "options": [
+            "--embroider",
+            "--ci-provider=github",
+            "--typescript",
+            "--no-ember-data"
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/tests/fixtures/app/typescript-embroider-no-ember-data/package.json b/tests/fixtures/app/typescript-embroider-no-ember-data/package.json
new file mode 100644
index 000000000..9ddead2cb
--- /dev/null
+++ b/tests/fixtures/app/typescript-embroider-no-ember-data/package.json
@@ -0,0 +1,93 @@
+{
+  "name": "foo",
+  "version": "0.0.0",
+  "private": true,
+  "description": "Small description for foo goes here",
+  "repository": "",
+  "license": "MIT",
+  "author": "",
+  "directories": {
+    "doc": "doc",
+    "test": "tests"
+  },
+  "scripts": {
+    "build": "ember build --environment=production",
+    "format": "prettier . --cache --write",
+    "lint": "concurrently \"npm:lint:*(!fix)\" --names \"lint:\" --prefixColors auto",
+    "lint:css": "stylelint \"**/*.css\"",
+    "lint:css:fix": "concurrently \"npm:lint:css -- --fix\"",
+    "lint:fix": "concurrently \"npm:lint:*:fix\" --names \"fix:\" --prefixColors auto && npm run format",
+    "lint:format": "prettier . --cache --check",
+    "lint:hbs": "ember-template-lint .",
+    "lint:hbs:fix": "ember-template-lint . --fix",
+    "lint:js": "eslint . --cache",
+    "lint:js:fix": "eslint . --fix",
+    "lint:types": "tsc --noEmit",
+    "start": "ember serve",
+    "test": "concurrently \"npm:lint\" \"npm:test:*\" --names \"lint,test:\" --prefixColors auto",
+    "test:ember": "ember test"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.26.7",
+    "@ember/optional-features": "^2.2.0",
+    "@ember/test-helpers": "^5.1.0",
+    "@embroider/compat": "^3.8.0",
+    "@embroider/core": "^3.5.0",
+    "@embroider/macros": "^1.16.10",
+    "@embroider/webpack": "^4.0.9",
+    "@eslint/js": "^9.19.0",
+    "@glimmer/component": "^2.0.0",
+    "@glimmer/tracking": "^1.1.2",
+    "@glint/environment-ember-loose": "^1.5.2",
+    "@glint/environment-ember-template-imports": "^1.5.2",
+    "@glint/template": "^1.5.2",
+    "@tsconfig/ember": "^3.0.9",
+    "@types/eslint__js": "^8.42.3",
+    "@types/qunit": "^2.19.12",
+    "@types/rsvp": "^4.0.9",
+    "broccoli-asset-rev": "^3.0.0",
+    "concurrently": "^9.1.2",
+    "ember-auto-import": "^2.10.0",
+    "ember-cli": "~<%= emberCLIVersion %>",
+    "ember-cli-app-version": "^7.0.0",
+    "ember-cli-babel": "^8.2.0",
+    "ember-cli-clean-css": "^3.0.0",
+    "ember-cli-dependency-checker": "^3.3.3",
+    "ember-cli-deprecation-workflow": "^3.1.0",
+    "ember-cli-htmlbars": "^6.3.0",
+    "ember-cli-inject-live-reload": "^2.1.0",
+    "ember-fetch": "^8.1.2",
+    "ember-load-initializers": "^3.0.1",
+    "ember-modifier": "^4.2.0",
+    "ember-page-title": "^8.2.3",
+    "ember-qunit": "^9.0.1",
+    "ember-resolver": "^13.1.0",
+    "ember-source": "~6.3.0-beta.1",
+    "ember-template-imports": "^4.3.0",
+    "ember-template-lint": "^6.1.0",
+    "ember-welcome-page": "^7.0.2",
+    "eslint": "^9.19.0",
+    "eslint-config-prettier": "^9.1.0",
+    "eslint-plugin-ember": "^12.5.0",
+    "eslint-plugin-n": "^17.15.1",
+    "eslint-plugin-qunit": "^8.1.2",
+    "globals": "^15.14.0",
+    "loader.js": "^4.7.0",
+    "prettier": "^3.4.2",
+    "prettier-plugin-ember-template-tag": "^2.0.4",
+    "qunit": "^2.24.1",
+    "qunit-dom": "^3.4.0",
+    "stylelint": "^16.14.1",
+    "stylelint-config-standard": "^36.0.1",
+    "tracked-built-ins": "^3.4.0",
+    "typescript": "^5.7.3",
+    "typescript-eslint": "^8.23.0",
+    "webpack": "^5.97.1"
+  },
+  "engines": {
+    "node": ">= 18"
+  },
+  "ember": {
+    "edition": "octane"
+  }
+}
diff --git a/tests/fixtures/app/typescript-embroider-no-ember-data/tsconfig.json b/tests/fixtures/app/typescript-embroider-no-ember-data/tsconfig.json
new file mode 100644
index 000000000..9d13a9b17
--- /dev/null
+++ b/tests/fixtures/app/typescript-embroider-no-ember-data/tsconfig.json
@@ -0,0 +1,20 @@
+{
+  "extends": "@tsconfig/ember",
+  "glint": {
+    "environment": ["ember-loose", "ember-template-imports"]
+  },
+  "compilerOptions": {
+    // The combination of `baseUrl` with `paths` allows Ember's classic package
+    // layout, which is not resolvable with the Node resolution algorithm, to
+    // work with TypeScript.
+    "baseUrl": ".",
+    "paths": {
+      "foo/tests/*": ["tests/*"],
+      "foo/*": ["app/*"],
+      "*": ["types/*"]
+    },
+    "types": [
+      "ember-source/types"
+    ]
+  }
+}
diff --git a/tests/fixtures/app/typescript-embroider/types/ember-data/types/registries/model.d.ts b/tests/fixtures/app/typescript-embroider/types/ember-data/types/registries/model.d.ts
deleted file mode 100644
index bdd8c0f17..000000000
--- a/tests/fixtures/app/typescript-embroider/types/ember-data/types/registries/model.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Catch-all for ember-data.
- */
-export default interface ModelRegistry {
-  // eslint-disable-next-line @typescript-eslint/no-explicit-any
-  [key: string]: any;
-}
diff --git a/tests/fixtures/app/typescript-no-ember-data/config/ember-cli-update.json b/tests/fixtures/app/typescript-no-ember-data/config/ember-cli-update.json
new file mode 100644
index 000000000..b027a26ed
--- /dev/null
+++ b/tests/fixtures/app/typescript-no-ember-data/config/ember-cli-update.json
@@ -0,0 +1,22 @@
+{
+  "schemaVersion": "1.0.0",
+  "packages": [
+    {
+      "name": "ember-cli",
+      "version": "<%= emberCLIVersion %>",
+      "blueprints": [
+        {
+          "name": "app",
+          "outputRepo": "https://github.com/ember-cli/ember-new-output",
+          "codemodsSource": "ember-app-codemods-manifest@1",
+          "isBaseBlueprint": true,
+          "options": [
+            "--ci-provider=github",
+            "--typescript",
+            "--no-ember-data"
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/tests/fixtures/app/typescript-no-ember-data/package.json b/tests/fixtures/app/typescript-no-ember-data/package.json
new file mode 100644
index 000000000..d55dfbef5
--- /dev/null
+++ b/tests/fixtures/app/typescript-no-ember-data/package.json
@@ -0,0 +1,92 @@
+{
+  "name": "foo",
+  "version": "0.0.0",
+  "private": true,
+  "description": "Small description for foo goes here",
+  "repository": "",
+  "license": "MIT",
+  "author": "",
+  "directories": {
+    "doc": "doc",
+    "test": "tests"
+  },
+  "scripts": {
+    "build": "ember build --environment=production",
+    "format": "prettier . --cache --write",
+    "lint": "concurrently \"npm:lint:*(!fix)\" --names \"lint:\" --prefixColors auto",
+    "lint:css": "stylelint \"**/*.css\"",
+    "lint:css:fix": "concurrently \"npm:lint:css -- --fix\"",
+    "lint:fix": "concurrently \"npm:lint:*:fix\" --names \"fix:\" --prefixColors auto && npm run format",
+    "lint:format": "prettier . --cache --check",
+    "lint:hbs": "ember-template-lint .",
+    "lint:hbs:fix": "ember-template-lint . --fix",
+    "lint:js": "eslint . --cache",
+    "lint:js:fix": "eslint . --fix",
+    "lint:types": "tsc --noEmit",
+    "start": "ember serve",
+    "test": "concurrently \"npm:lint\" \"npm:test:*\" --names \"lint,test:\" --prefixColors auto",
+    "test:ember": "ember test"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.26.7",
+    "@ember/optional-features": "^2.2.0",
+    "@ember/test-helpers": "^5.1.0",
+    "@embroider/macros": "^1.16.10",
+    "@eslint/js": "^9.19.0",
+    "@glimmer/component": "^2.0.0",
+    "@glimmer/tracking": "^1.1.2",
+    "@glint/environment-ember-loose": "^1.5.2",
+    "@glint/environment-ember-template-imports": "^1.5.2",
+    "@glint/template": "^1.5.2",
+    "@tsconfig/ember": "^3.0.9",
+    "@types/eslint__js": "^8.42.3",
+    "@types/qunit": "^2.19.12",
+    "@types/rsvp": "^4.0.9",
+    "broccoli-asset-rev": "^3.0.0",
+    "concurrently": "^9.1.2",
+    "ember-auto-import": "^2.10.0",
+    "ember-cli": "~<%= emberCLIVersion %>",
+    "ember-cli-app-version": "^7.0.0",
+    "ember-cli-babel": "^8.2.0",
+    "ember-cli-clean-css": "^3.0.0",
+    "ember-cli-dependency-checker": "^3.3.3",
+    "ember-cli-deprecation-workflow": "^3.1.0",
+    "ember-cli-htmlbars": "^6.3.0",
+    "ember-cli-inject-live-reload": "^2.1.0",
+    "ember-cli-sri": "^2.1.1",
+    "ember-cli-terser": "^4.0.2",
+    "ember-fetch": "^8.1.2",
+    "ember-load-initializers": "^3.0.1",
+    "ember-modifier": "^4.2.0",
+    "ember-page-title": "^8.2.3",
+    "ember-qunit": "^9.0.1",
+    "ember-resolver": "^13.1.0",
+    "ember-source": "~6.3.0-beta.1",
+    "ember-template-imports": "^4.3.0",
+    "ember-template-lint": "^6.1.0",
+    "ember-welcome-page": "^7.0.2",
+    "eslint": "^9.19.0",
+    "eslint-config-prettier": "^9.1.0",
+    "eslint-plugin-ember": "^12.5.0",
+    "eslint-plugin-n": "^17.15.1",
+    "eslint-plugin-qunit": "^8.1.2",
+    "globals": "^15.14.0",
+    "loader.js": "^4.7.0",
+    "prettier": "^3.4.2",
+    "prettier-plugin-ember-template-tag": "^2.0.4",
+    "qunit": "^2.24.1",
+    "qunit-dom": "^3.4.0",
+    "stylelint": "^16.14.1",
+    "stylelint-config-standard": "^36.0.1",
+    "tracked-built-ins": "^3.4.0",
+    "typescript": "^5.7.3",
+    "typescript-eslint": "^8.23.0",
+    "webpack": "^5.97.1"
+  },
+  "engines": {
+    "node": ">= 18"
+  },
+  "ember": {
+    "edition": "octane"
+  }
+}
diff --git a/tests/fixtures/app/typescript-no-ember-data/tsconfig.json b/tests/fixtures/app/typescript-no-ember-data/tsconfig.json
new file mode 100644
index 000000000..9d13a9b17
--- /dev/null
+++ b/tests/fixtures/app/typescript-no-ember-data/tsconfig.json
@@ -0,0 +1,20 @@
+{
+  "extends": "@tsconfig/ember",
+  "glint": {
+    "environment": ["ember-loose", "ember-template-imports"]
+  },
+  "compilerOptions": {
+    // The combination of `baseUrl` with `paths` allows Ember's classic package
+    // layout, which is not resolvable with the Node resolution algorithm, to
+    // work with TypeScript.
+    "baseUrl": ".",
+    "paths": {
+      "foo/tests/*": ["tests/*"],
+      "foo/*": ["app/*"],
+      "*": ["types/*"]
+    },
+    "types": [
+      "ember-source/types"
+    ]
+  }
+}
diff --git a/tests/fixtures/app/typescript/types/ember-data/types/registries/model.d.ts b/tests/fixtures/app/typescript/types/ember-data/types/registries/model.d.ts
deleted file mode 100644
index bdd8c0f17..000000000
--- a/tests/fixtures/app/typescript/types/ember-data/types/registries/model.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Catch-all for ember-data.
- */
-export default interface ModelRegistry {
-  // eslint-disable-next-line @typescript-eslint/no-explicit-any
-  [key: string]: any;
-}