Skip to content

Commit 84c0a20

Browse files
authored
Merge pull request #963 from ember-fastboot/import-service
Fix ember v6 importing-inject-from-ember-service deprecation
2 parents 174680d + 09d746c commit 84c0a20

17 files changed

Lines changed: 80 additions & 19 deletions

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ jobs:
153153
- run: pnpm install --frozen-lockfile
154154
- id: set-matrix
155155
working-directory: test-packages/test-scenarios
156-
run: echo "matrix=$(npm run --silent test:list -- --matrix 'npm run test -- --filter %s:')" >> $GITHUB_OUTPUT
156+
run: echo "matrix=$(npm run --silent test:list -- --matrix 'pnpm test --filter %s:')" >> $GITHUB_OUTPUT
157157

158158
scenario-tester:
159159
needs: discover_matrix

packages/ember-cli-fastboot/addon/locations/none.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* eslint-disable ember/no-classic-classes, ember/no-get, ember/require-computed-property-dependencies */
22
import { computed, get } from '@ember/object';
33
import { bool, readOnly } from '@ember/object/computed';
4-
import { inject as service } from '@ember/service';
4+
import { service } from '@ember/service';
55
import { getOwner } from '@ember/application';
66
import NoneLocation from '@ember/routing/none-location';
77

packages/ember-cli-fastboot/index.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ const p = require('ember-cli-preprocess-registry/preprocessors');
2121
const fastbootTransform = require('fastboot-transform');
2222
const existsSync = fs.existsSync;
2323

24+
const ServiceImportReplacer = require('./lib/broccoli/service-import');
25+
2426
let checker;
2527
function getVersionChecker(context) {
2628
if (!checker) {
@@ -150,6 +152,17 @@ module.exports = {
150152
return tree;
151153
},
152154

155+
treeForAddon(tree) {
156+
if (this._getEmberVersion().lt('4.1.0')) {
157+
return this._super.treeForAddon.call(
158+
this,
159+
new ServiceImportReplacer(tree),
160+
);
161+
}
162+
163+
return this._super.treeForAddon.call(this, tree);
164+
},
165+
153166
_processAddons(addons, fastbootTrees) {
154167
addons.forEach((addon) => {
155168
this._processAddon(addon, fastbootTrees);
@@ -382,13 +395,13 @@ module.exports = {
382395
},
383396

384397
_getEmberCliVersion() {
385-
const checker = getVersionChecker(this);
398+
const checker = getVersionChecker(this.project);
386399

387400
return checker.for('ember-cli', 'npm');
388401
},
389402

390403
_getEmberVersion() {
391-
const checker = getVersionChecker(this);
404+
const checker = getVersionChecker(this.project);
392405
const emberVersionChecker = checker.for('ember-source', 'npm');
393406

394407
if (emberVersionChecker.version) {
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
const Filter = require('broccoli-persistent-filter');
2+
3+
module.exports = class ServiceImportReplacer extends Filter {
4+
constructor(inputNode, search, replace, options = {}) {
5+
super(inputNode, {
6+
annotation: options.annotation,
7+
});
8+
this.extensions = ['js'];
9+
this.targetExtension = 'js';
10+
}
11+
processString(content) {
12+
return content.replace(
13+
`import { service } from '@ember/service';`,
14+
`import { inject as service } from '@ember/service';`,
15+
);
16+
}
17+
};

packages/ember-cli-fastboot/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,15 @@
2828
"test": "concurrently \"pnpm:lint\" \"pnpm:test:*\" --names \"lint,test:\" --prefixColors auto",
2929
"test:mocha": "mocha",
3030
"test:ember": "ember test",
31-
"test:ember-compatibility": "ember try:each"
31+
"test-ember-compatibility": "ember try:each"
3232
},
3333
"dependencies": {
3434
"@babel/core": "^7.29.0",
3535
"broccoli-concat": "^4.2.5",
3636
"broccoli-file-creator": "^2.1.1",
3737
"broccoli-funnel": "^3.0.8",
3838
"broccoli-merge-trees": "^4.2.0",
39+
"broccoli-persistent-filter": "^3.1.3",
3940
"broccoli-plugin": "^4.0.7",
4041
"chalk": "^4.1.2",
4142
"ember-cli-babel": "^8.3.1",

pnpm-lock.yaml

Lines changed: 25 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test-packages/test-scenarios/fastboot-config-location-test.mjs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@ const { module: Qmodule, test } = qunit;
99

1010
appScenarios
1111
.map('fastboot-config-location', (project) => {
12+
// this test app has the service import itself so we need the polyfill to do its work
13+
project.linkDevDependency('ember-service-import-polyfill', { baseDir: '.' });
1214
merge(project.files, {
1315
app: {
1416
routes: {
1517
'redirect-on-transition-to.js': `
1618
import Route from '@ember/routing/route';
17-
import { inject as service } from '@ember/service';
19+
import { service } from '@ember/service';
1820
1921
export default class MyRoute extends Route {
2022
@service

test-packages/test-scenarios/fastboot-express-middleware-test.mjs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,13 @@ Object.assign(qunit.assert, {
2323

2424
appScenarios
2525
.map('fastboot-express-middleware', (project) => {
26+
// this test app has the service import itself so we need the polyfill to do its work
27+
project.linkDevDependency('ember-service-import-polyfill', { baseDir: '.' });
2628
merge(project.files, {
2729
app: {
2830
routes: {
2931
'index.js': `import Route from '@ember/routing/route';
30-
import { inject as service } from '@ember/service';
32+
import { service } from '@ember/service';
3133
3234
function isEmptyObject(obj) {
3335
return Object.keys(obj).length === 0 && obj.constructor.name === 'Object';
@@ -46,7 +48,7 @@ appScenarios
4648
}
4749
}`,
4850
'application.js': `import Route from '@ember/routing/route';
49-
import { inject as service } from '@ember/service';
51+
import { service } from '@ember/service';
5052
5153
export default class ApplicationRoute extends Route {
5254
@service fastboot;

test-packages/test-scenarios/fastboot-shoebox-test.mjs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@ const { module: Qmodule, test } = qunit;
99

1010
appScenarios
1111
.map('fastboot-shoebox-test', (project) => {
12+
// this test app has the service import itself so we need the polyfill to do its work
13+
project.linkDevDependency('ember-service-import-polyfill', { baseDir: '.' });
1214
merge(project.files, {
1315
app: {
1416
routes: {
1517
'application.js': `import Route from '@ember/routing/route';
16-
import { inject as service } from '@ember/service'
18+
import { service } from '@ember/service'
1719
1820
export default class ApplicationRoute extends Route {
1921
@service fastboot;

test-packages/test-scenarios/fixtures/basic-app/app/components/async-content.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { defer } from 'rsvp';
22
import { later } from '@ember/runloop';
33
import Component from '@glimmer/component';
44
import { tracked } from '@glimmer/tracking';
5-
import { inject as service } from '@ember/service';
5+
import { service } from '@ember/service';
66

77
export default class AsyncContenComponent extends Component {
88
@service fastboot;

0 commit comments

Comments
 (0)