Skip to content

Commit 0571a60

Browse files
committed
Deprecate importing inject from @ember/service
1 parent cb59342 commit 0571a60

File tree

5 files changed

+68
-43
lines changed

5 files changed

+68
-43
lines changed

packages/@ember/-internals/deprecations/index.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,16 @@ export const DEPRECATIONS = {
139139
enabled: '5.10.0',
140140
},
141141
}),
142+
DEPRECATE_IMPORT_INJECT: deprecation({
143+
for: 'ember-source',
144+
id: 'importing-inject-from-ember-service',
145+
since: {
146+
available: '6.3.0',
147+
enabled: '6.3.0',
148+
},
149+
until: '7.0.0',
150+
url: 'https://deprecations.emberjs.com/id/importing-inject-from-ember-service',
151+
}),
142152
};
143153

144154
export function deprecateUntil(message: string, deprecation: DeprecationObject) {

packages/@ember/service/index.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { FrameworkObject } from '@ember/object/-internals';
2+
import { DEPRECATIONS, deprecateUntil } from '@ember/-internals/deprecations';
23
import type { DecoratorPropertyDescriptor, ElementDescriptor } from '@ember/-internals/metal';
34
import { inject as metalInject } from '@ember/-internals/metal';
45

@@ -16,6 +17,7 @@ import { inject as metalInject } from '@ember/-internals/metal';
1617
the property's name
1718
@return {ComputedDecorator} injection decorator instance
1819
@public
20+
@deprecated Please import `service` instead.
1921
*/
2022
export function inject(name: string): PropertyDecorator;
2123
export function inject(...args: [ElementDescriptor[0], ElementDescriptor[1]]): void;
@@ -24,6 +26,11 @@ export function inject(): PropertyDecorator;
2426
export function inject(
2527
...args: [] | [name: string] | ElementDescriptor
2628
): PropertyDecorator | DecoratorPropertyDescriptor | void {
29+
deprecateUntil(
30+
'Importing `inject` from `@ember/service` is deprecated. Please import `service` instead.',
31+
DEPRECATIONS.DEPRECATE_IMPORT_INJECT
32+
);
33+
2734
return metalInject('service', ...args);
2835
}
2936

packages/@ember/service/tests/service_test.js

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,51 @@
11
import Service, { inject, service } from '@ember/service';
22
import EmberObject from '@ember/object';
33
import { buildOwner, runDestroy } from 'internal-test-helpers';
4-
import { moduleFor, AbstractTestCase } from 'internal-test-helpers';
4+
import { moduleFor, AbstractTestCase, expectDeprecation } from 'internal-test-helpers';
55

66
moduleFor(
77
'inject - decorator',
88
class extends AbstractTestCase {
99
['@test works with native decorators'](assert) {
10-
let owner = buildOwner();
10+
expectDeprecation(() => {
11+
let owner = buildOwner();
1112

12-
class MainService extends Service {}
13+
class MainService extends Service {}
1314

14-
class Foo extends EmberObject {
15-
@inject('main') main;
16-
}
15+
class Foo extends EmberObject {
16+
@inject('main') main;
17+
}
1718

18-
owner.register('service:main', MainService);
19-
owner.register('foo:main', Foo);
19+
owner.register('service:main', MainService);
20+
owner.register('foo:main', Foo);
2021

21-
let foo = owner.lookup('foo:main');
22+
let foo = owner.lookup('foo:main');
2223

23-
assert.ok(foo.main instanceof Service, 'service injected correctly');
24+
assert.ok(foo.main instanceof Service, 'service injected correctly');
2425

25-
runDestroy(owner);
26+
runDestroy(owner);
27+
}, 'Importing `inject` from `@ember/service` is deprecated. Please import `service` instead.');
2628
}
2729

2830
['@test uses the decorated property key if not provided'](assert) {
29-
let owner = buildOwner();
31+
expectDeprecation(() => {
32+
let owner = buildOwner();
3033

31-
class MainService extends Service {}
34+
class MainService extends Service {}
3235

33-
class Foo extends EmberObject {
34-
@inject main;
35-
}
36+
class Foo extends EmberObject {
37+
@inject main;
38+
}
3639

37-
owner.register('service:main', MainService);
38-
owner.register('foo:main', Foo);
40+
owner.register('service:main', MainService);
41+
owner.register('foo:main', Foo);
3942

40-
let foo = owner.lookup('foo:main');
43+
let foo = owner.lookup('foo:main');
4144

42-
assert.ok(foo.main instanceof Service, 'service injected correctly');
45+
assert.ok(foo.main instanceof Service, 'service injected correctly');
4346

44-
runDestroy(owner);
47+
runDestroy(owner);
48+
}, 'Importing `inject` from `@ember/service` is deprecated. Please import `service` instead.');
4549
}
4650
}
4751
);

packages/@ember/service/tests/service_ts_test.ts

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,51 @@
11
import Service, { inject, service } from '@ember/service';
22
import EmberObject from '@ember/object';
33
import { buildOwner, runDestroy } from 'internal-test-helpers';
4-
import { moduleFor, AbstractTestCase } from 'internal-test-helpers';
4+
import { moduleFor, AbstractTestCase, expectDeprecation } from 'internal-test-helpers';
55

66
moduleFor(
77
'inject - decorator (TS)',
88
class extends AbstractTestCase {
99
['@test works with native decorators'](assert: QUnit['assert']) {
10-
let owner = buildOwner();
10+
expectDeprecation(() => {
11+
let owner = buildOwner();
1112

12-
class MainService extends Service {}
13+
class MainService extends Service {}
1314

14-
class Foo extends EmberObject {
15-
@inject('main') declare main: MainService;
16-
}
15+
class Foo extends EmberObject {
16+
@inject('main') declare main: MainService;
17+
}
1718

18-
owner.register('service:main', MainService);
19-
owner.register('foo:main', Foo);
19+
owner.register('service:main', MainService);
20+
owner.register('foo:main', Foo);
2021

21-
let foo = owner.lookup('foo:main') as Foo;
22+
let foo = owner.lookup('foo:main') as Foo;
2223

23-
assert.ok(foo.main instanceof Service, 'service injected correctly');
24+
assert.ok(foo.main instanceof Service, 'service injected correctly');
2425

25-
runDestroy(owner);
26+
runDestroy(owner);
27+
}, 'Importing `inject` from `@ember/service` is deprecated. Please import `service` instead.');
2628
}
2729

2830
['@test uses the decorated property key if not provided'](assert: QUnit['assert']) {
29-
let owner = buildOwner();
31+
expectDeprecation(() => {
32+
let owner = buildOwner();
3033

31-
class MainService extends Service {}
34+
class MainService extends Service {}
3235

33-
class Foo extends EmberObject {
34-
@inject declare main: MainService;
35-
}
36+
class Foo extends EmberObject {
37+
@inject declare main: MainService;
38+
}
3639

37-
owner.register('service:main', MainService);
38-
owner.register('foo:main', Foo);
40+
owner.register('service:main', MainService);
41+
owner.register('foo:main', Foo);
3942

40-
let foo = owner.lookup('foo:main') as Foo;
43+
let foo = owner.lookup('foo:main') as Foo;
4144

42-
assert.ok(foo.main instanceof Service, 'service injected correctly');
45+
assert.ok(foo.main instanceof Service, 'service injected correctly');
4346

44-
runDestroy(owner);
47+
runDestroy(owner);
48+
}, 'Importing `inject` from `@ember/service` is deprecated. Please import `service` instead.');
4549
}
4650
}
4751
);

type-tests/@ember/routing-test/router.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import Router from '@ember/routing/router';
2-
import Service, { inject as service } from '@ember/service';
2+
import Service, { service } from '@ember/service';
33
import EmberObject, { get } from '@ember/object';
44
import RouterService from '@ember/routing/router-service';
55
import RouteInfo, { RouteInfoWithAttributes } from '@ember/routing/route-info';

0 commit comments

Comments
 (0)