Skip to content

Commit 0d46c3c

Browse files
Merge pull request #124 from runspired/warp-drive
Use modern EmberData/WarpDrive
2 parents d9c532b + 8231e40 commit 0d46c3c

File tree

20 files changed

+400
-36
lines changed

20 files changed

+400
-36
lines changed

eslint.config.mjs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ export default [
2525
pluginJs.configs.recommended,
2626
eslintConfigPrettier,
2727
{
28-
ignores: ['tests/fixtures/*', 'files/ember-cli-build.js'],
28+
ignores: [
29+
'tests/fixtures/*',
30+
'files/ember-cli-build.js',
31+
'files/_js_*',
32+
'files/_ts_*',
33+
],
2934
},
3035
];

files/_js_eslint.config.mjs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import globals from 'globals';
1616
import js from '@eslint/js';
1717

1818
import ember from 'eslint-plugin-ember/recommended';
19+
<% if (warpDrive) { %>import WarpDrive from 'eslint-plugin-warp-drive/recommended';<% } %>
1920
import eslintConfigPrettier from 'eslint-config-prettier';
2021
import qunit from 'eslint-plugin-qunit';
2122
import n from 'eslint-plugin-n';
@@ -32,6 +33,8 @@ export default [
3233
eslintConfigPrettier,
3334
ember.configs.base,
3435
ember.configs.gjs,
36+
<% if (warpDrive) { %>...WarpDrive,<% } %>
37+
3538
/**
3639
* Ignores must be in their own object
3740
* https://eslint.org/docs/latest/use/configure/ignore

files/_ts_eslint.config.mjs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import js from '@eslint/js';
1818
import ts from 'typescript-eslint';
1919

2020
import ember from 'eslint-plugin-ember/recommended';
21+
<% if (warpDrive) { %>import WarpDrive from 'eslint-plugin-warp-drive/recommended';<% } %>
2122

2223
import eslintConfigPrettier from 'eslint-config-prettier';
2324
import qunit from 'eslint-plugin-qunit';
@@ -43,6 +44,7 @@ export default ts.config(
4344
ember.configs.base,
4445
ember.configs.gjs,
4546
ember.configs.gts,
47+
<% if (warpDrive) { %>...WarpDrive,<% } %>
4648
eslintConfigPrettier,
4749
/**
4850
* Ignores must be in their own object

files/app/app.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
<% if (warpDrive) { %>import '@warp-drive/ember/install';<% } %>
12
import Application from '@ember/application';
23
import compatModules from '@embroider/virtual/compat-modules';
34
import Resolver from 'ember-resolver';

files/app/models/.gitkeep

Whitespace-only changes.

files/app/services/store.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { useLegacyStore } from '@warp-drive/legacy';
2+
import { JSONAPICache } from '@warp-drive/json-api';
3+
4+
const Store = useLegacyStore({
5+
linksMode: true,
6+
cache: JSONAPICache,
7+
handlers: [
8+
// -- your handlers here
9+
],
10+
schemas: [
11+
// -- your schemas here
12+
],
13+
});
14+
15+
type Store = InstanceType<typeof Store>;
16+
17+
export default Store;

files/ember-cli-build.js

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,22 @@ const EmberApp = require('ember-cli/lib/broccoli/ember-app');
44
const { compatBuild } = require('@embroider/compat');
55

66
module.exports = async function (defaults) {
7-
const { buildOnce } = await import('@embroider/vite');
7+
<% if (warpDrive) {%>const { setConfig } = await import('@warp-drive/core/build-config');
8+
<% } %>const { buildOnce } = await import('@embroider/vite');
9+
810
let app = new EmberApp(defaults, {
9-
<% if (emberData) {%>emberData: {
10-
deprecations: {
11-
// New projects can safely leave this deprecation disabled.
12-
// If upgrading, to opt-into the deprecated behavior, set this to true and then follow:
13-
// https://deprecations.emberjs.com/id/ember-data-deprecate-store-extends-ember-object
14-
// before upgrading to Ember Data 6.0
15-
DEPRECATE_STORE_EXTENDS_EMBER_OBJECT: false,
16-
},
11+
// Add options here
12+
});
13+
<% if (warpDrive) {%>
14+
setConfig(app, __dirname, {
15+
// this should be the most recent <major>.<minor> version for
16+
// which all deprecations have been fully resolved
17+
// and should be updated when that changes
18+
compatWith: '5.8',
19+
deprecations: {
20+
// ... list individual deprecations that have been resolved here
1721
},
18-
<% } %>// Add options here
1922
});
20-
23+
<% } %>
2124
return compatBuild(app, buildOnce);
2225
};

files/package.json

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,7 @@
3535
"@babel/runtime": "^7.28.4",
3636
"@babel/plugin-transform-runtime": "^7.28.3<% if (typescript) { %>",
3737
"@babel/plugin-transform-typescript": "^7.28.0<% } %>",
38-
"@babel/eslint-parser": "^7.28.4<% if (typescript && emberData) { %>",
39-
"@ember-data/adapter": "~5.6.0",
40-
"@ember-data/graph": "~5.6.0",
41-
"@ember-data/json-api": "~5.6.0",
42-
"@ember-data/legacy-compat": "~5.6.0",
43-
"@ember-data/model": "~5.6.0",
44-
"@ember-data/request": "~5.6.0",
45-
"@ember-data/request-utils": "~5.6.0",
46-
"@ember-data/serializer": "~5.6.0",
47-
"@ember-data/store": "~5.6.0<% } %><% if (typescript) { %>",
38+
"@babel/eslint-parser": "^7.28.4<% if (typescript) { %>",
4839
"@ember/app-tsconfig": "^1.0.3<% } %>",
4940
"@ember/optional-features": "^2.2.0",
5041
"@ember/string": "^4.0.1",
@@ -65,17 +56,19 @@
6556
"@glint/template": "^1.6.1<% } %>",
6657
"@rollup/plugin-babel": "^6.0.4<% if (typescript) { %>",
6758
"@types/qunit": "^2.19.13",
68-
"@types/rsvp": "^4.0.9<% if (emberData) {%>",
69-
"@warp-drive/core-types": "~5.6.0<% }} %><% if (emberData) { %>",
70-
"@warp-drive/ember": "~5.6.0<% } %>",
59+
"@types/rsvp": "^4.0.9<% } %><% if (warpDrive) { %>",
60+
"@warp-drive/core": "5.8.0",
61+
"@warp-drive/ember": "5.8.0",
62+
"@warp-drive/json-api": "5.8.0",
63+
"@warp-drive/legacy": "5.8.0",
64+
"@warp-drive/utilities": "5.8.0<% } %>",
7165
"babel-plugin-ember-template-compilation": "^2.4.1",
7266
"concurrently": "^9.2.1",
7367
"decorator-transforms": "^2.3.0",
7468
"ember-auto-import": "^2.11.1",
7569
"ember-cli": "~6.9.0-alpha.1",
7670
"ember-cli-babel": "^8.2.0",
77-
"ember-cli-deprecation-workflow": "^3.4.0<% if (emberData) { %>",
78-
"ember-data": "~5.6.0<% } %>",
71+
"ember-cli-deprecation-workflow": "^3.4.0",
7972
"ember-load-initializers": "^3.0.1",
8073
"ember-modifier": "^4.2.2",
8174
"ember-page-title": "^9.0.3",
@@ -88,7 +81,8 @@
8881
"eslint-config-prettier": "^10.1.8",
8982
"eslint-plugin-ember": "^12.7.4",
9083
"eslint-plugin-n": "^17.23.1",
91-
"eslint-plugin-qunit": "^8.2.5",
84+
"eslint-plugin-qunit": "^8.2.5<% if (warpDrive) { %>",
85+
"eslint-plugin-warp-drive": "5.8.0<% } %>",
9286
"globals": "^16.4.0",
9387
"prettier": "^3.6.2",
9488
"prettier-plugin-ember-template-tag": "^2.1.0",

files/tests/test-helper.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
<% if (warpDrive) { %>import '@warp-drive/ember/install';<% } %>
12
import Application from '<%= modulePrefix %>/app';
23
import config from '<%= modulePrefix %>/config/environment';
34
import * as QUnit from 'qunit';

index.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ module.exports = {
4040
options.ciProvider && `"--ci-provider=${options.ciProvider}"`,
4141
options.typescript && `"--typescript"`,
4242
!options.emberData && `"--no-ember-data"`,
43+
!options.warpDrive && `"--no-warp-drive"`,
4344
]
4445
.filter(Boolean)
4546
.join(',\n ') +
@@ -75,7 +76,7 @@ module.exports = {
7576
blueprint: 'app',
7677
blueprintOptions,
7778
lang: options.lang,
78-
emberData: options.emberData,
79+
warpDrive: options.warpDrive ?? options.emberData,
7980
ciProvider: options.ciProvider,
8081
typescript: options.typescript,
8182
packageManager: options.packageManager ?? 'npm',
@@ -101,9 +102,11 @@ module.exports = {
101102
);
102103
}
103104

104-
if (!options.emberData) {
105-
files = files.filter((file) => !file.includes('models/'));
106-
files = files.filter((file) => !file.includes('ember-data/'));
105+
const warpDrive = options.warpDrive || options.emberData;
106+
if (!warpDrive) {
107+
files = files.filter((file) => !file.includes('services/store.ts'));
108+
} else {
109+
files = files.filter((file) => !file.includes('services/.gitkeep'));
107110
}
108111

109112
this._files = files;

0 commit comments

Comments
 (0)