Skip to content

Commit deb4c72

Browse files
committed
Deprecate accessing @ember/string methods off of the Ember module
(cherry picked from commit 0175865)
1 parent f1988a3 commit deb4c72

File tree

2 files changed

+56
-39
lines changed

2 files changed

+56
-39
lines changed

packages/ember/index.ts

+31-30
Original file line numberDiff line numberDiff line change
@@ -633,39 +633,40 @@ Object.defineProperty(Ember, 'TEMPLATES', {
633633
enumerable: false,
634634
});
635635

636-
const deprecateImportFromString = function (
637-
name: string,
638-
message = `Importing ${name} from '@ember/string' is deprecated. Please import ${name} from '@ember/template' instead.`
639-
) {
640-
deprecate(message, false, {
641-
id: 'ember-string.htmlsafe-ishtmlsafe',
642-
for: 'ember-source',
643-
since: {
644-
available: '4.10',
645-
enabled: '4.10',
646-
},
647-
until: '5.0.0',
648-
url: 'https://deprecations.emberjs.com/v3.x/#toc_ember-string-htmlsafe-ishtmlsafe',
649-
});
650-
};
651-
// NOTE: these are expressly *not* in the public API, because they were
652-
// deprecated and removed. TODO: remove them after we land the TS conversion,
653-
// and after confirming doing so is safe -- the state of the `@ember/string`
654-
// conversion remains confused.
655-
Object.defineProperty(Ember.String, 'htmlSafe', {
656-
enumerable: true,
657-
configurable: true,
658-
get() {
659-
deprecateImportFromString('htmlSafe');
660-
return htmlSafe;
661-
},
662-
});
663-
Object.defineProperty(Ember.String, 'isHTMLSafe', {
636+
function deprecateStringUseOnEmberModule() {
637+
deprecate(
638+
'Using `Ember.String` is deprecated. Please import methods directly from `@ember/string`.',
639+
false,
640+
{
641+
id: 'ember-string.from-ember-module',
642+
for: 'ember-source',
643+
since: {
644+
available: '4.10',
645+
enabled: '4.10.',
646+
},
647+
until: '5.0.0',
648+
url: 'https://deprecations.emberjs.com/v4.x/#toc_ember-string-from-ember-module',
649+
}
650+
);
651+
}
652+
653+
Object.defineProperty(Ember, 'String', {
664654
enumerable: true,
665655
configurable: true,
666656
get() {
667-
deprecateImportFromString('isHTMLSafe');
668-
return isHTMLSafe;
657+
deprecateStringUseOnEmberModule();
658+
659+
return {
660+
camelize,
661+
capitalize,
662+
classify,
663+
dasherize,
664+
decamelize,
665+
underscore,
666+
w,
667+
htmlSafe,
668+
isHTMLSafe,
669+
};
669670
},
670671
});
671672

packages/ember/tests/reexports_test.js

+25-9
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ moduleFor(
2828
glimmer.htmlSafe,
2929
'Ember.String.htmlSafe is exported correctly'
3030
);
31-
}, /Importing htmlSafe from '@ember\/string' is deprecated/);
31+
}, 'Using `Ember.String` is deprecated. Please import methods directly from `@ember/string`.');
3232
assert.notEqual(glimmer.htmlSafe, undefined, 'Ember.String.htmlSafe is not `undefined`');
3333
}
3434

@@ -40,10 +40,33 @@ moduleFor(
4040
glimmer.isHTMLSafe,
4141
'Ember.String.isHTMLSafe is exported correctly'
4242
);
43-
}, /Importing isHTMLSafe from '@ember\/string' is deprecated/);
43+
}, 'Using `Ember.String` is deprecated. Please import methods directly from `@ember/string`.');
4444
assert.notEqual(glimmer.isHTMLSafe, undefined, 'Ember.String.isHTMLSafe is not `undefined`');
4545
}
4646

47+
['@test Ember.String methods export correctly (but deprecated)'](assert) {
48+
let string = require('@ember/string');
49+
let methods = [
50+
'camelize',
51+
'capitalize',
52+
'classify',
53+
'dasherize',
54+
'decamelize',
55+
'underscore',
56+
'w',
57+
];
58+
methods.forEach((method) => {
59+
expectDeprecation(() => {
60+
assert.equal(
61+
Ember.String[method],
62+
string[method],
63+
`Ember.String.${method} is exported correctly`
64+
);
65+
}, 'Using `Ember.String` is deprecated. Please import methods directly from `@ember/string`.');
66+
assert.notEqual(string[method], undefined, `Ember.String.${method} is not \`undefined\``);
67+
});
68+
}
69+
4770
'@test Ember.FEATURES is exported'(assert) {
4871
for (let feature in FEATURES) {
4972
assert.equal(
@@ -255,13 +278,6 @@ let allExports = [
255278
['inject.service', '@ember/service', 'service'],
256279

257280
// @ember/string
258-
['String.camelize', '@ember/string', 'camelize'],
259-
['String.capitalize', '@ember/string', 'capitalize'],
260-
['String.classify', '@ember/string', 'classify'],
261-
['String.dasherize', '@ember/string', 'dasherize'],
262-
['String.decamelize', '@ember/string', 'decamelize'],
263-
['String.underscore', '@ember/string', 'underscore'],
264-
['String.w', '@ember/string', 'w'],
265281
['STRINGS', '@ember/string', { get: '_getStrings', set: '_setStrings' }],
266282

267283
// @ember/template

0 commit comments

Comments
 (0)