@@ -6,6 +6,7 @@ export { getStrings as _getStrings, setStrings as _setStrings } from './lib/stri
66
77import { ENV } from '@ember/-internals/environment' ;
88import { Cache } from '@ember/-internals/utils' ;
9+ import { deprecate } from '@ember/debug' ;
910import { getString } from './lib/string_registry' ;
1011
1112const STRING_DASHERIZE_REGEXP = / [ _ ] / g;
@@ -279,6 +280,26 @@ export function capitalize(str: string): string {
279280}
280281
281282if ( ENV . EXTEND_PROTOTYPES . String ) {
283+ let deprecateEmberStringPrototypeExtension = function (
284+ name : string ,
285+ fn : ( utility : string , ...options : any ) => string | string [ ] ,
286+ message = `String prototype extensions are deprecated. Please, us ${ name } from '@ember/string' instead.`
287+ ) {
288+ return function ( this : string ) {
289+ deprecate ( message , false , {
290+ id : 'ember-string.prototype-extensions' ,
291+ for : '@ember/string' ,
292+ since : {
293+ available : '3.24' ,
294+ } ,
295+ until : '4.0.0' ,
296+ url : 'https://deprecations.emberjs.com/v3.x/#toc_ember-string-prototype_extensions' ,
297+ } ) ;
298+
299+ return fn ( this , ...arguments ) ;
300+ } ;
301+ } ;
302+
282303 Object . defineProperties ( String . prototype , {
283304 /**
284305 See [String.w](/ember/release/classes/String/methods/w?anchor=w).
@@ -292,9 +313,7 @@ if (ENV.EXTEND_PROTOTYPES.String) {
292313 configurable : true ,
293314 enumerable : false ,
294315 writeable : true ,
295- value ( ) {
296- return w ( this ) ;
297- } ,
316+ value : deprecateEmberStringPrototypeExtension ( 'w' , w ) ,
298317 } ,
299318
300319 /**
@@ -326,9 +345,7 @@ if (ENV.EXTEND_PROTOTYPES.String) {
326345 configurable : true ,
327346 enumerable : false ,
328347 writeable : true ,
329- value ( ) {
330- return camelize ( this ) ;
331- } ,
348+ value : deprecateEmberStringPrototypeExtension ( 'camelize' , camelize ) ,
332349 } ,
333350
334351 /**
@@ -343,9 +360,7 @@ if (ENV.EXTEND_PROTOTYPES.String) {
343360 configurable : true ,
344361 enumerable : false ,
345362 writeable : true ,
346- value ( ) {
347- return decamelize ( this ) ;
348- } ,
363+ value : deprecateEmberStringPrototypeExtension ( 'decamelize' , decamelize ) ,
349364 } ,
350365
351366 /**
@@ -360,9 +375,7 @@ if (ENV.EXTEND_PROTOTYPES.String) {
360375 configurable : true ,
361376 enumerable : false ,
362377 writeable : true ,
363- value ( ) {
364- return dasherize ( this ) ;
365- } ,
378+ value : deprecateEmberStringPrototypeExtension ( 'dasherize' , dasherize ) ,
366379 } ,
367380
368381 /**
@@ -377,9 +390,7 @@ if (ENV.EXTEND_PROTOTYPES.String) {
377390 configurable : true ,
378391 enumerable : false ,
379392 writeable : true ,
380- value ( ) {
381- return underscore ( this ) ;
382- } ,
393+ value : deprecateEmberStringPrototypeExtension ( 'underscore' , underscore ) ,
383394 } ,
384395
385396 /**
@@ -394,9 +405,7 @@ if (ENV.EXTEND_PROTOTYPES.String) {
394405 configurable : true ,
395406 enumerable : false ,
396407 writeable : true ,
397- value ( ) {
398- return classify ( this ) ;
399- } ,
408+ value : deprecateEmberStringPrototypeExtension ( 'classify' , classify ) ,
400409 } ,
401410
402411 /**
@@ -411,9 +420,7 @@ if (ENV.EXTEND_PROTOTYPES.String) {
411420 configurable : true ,
412421 enumerable : false ,
413422 writeable : true ,
414- value ( ) {
415- return capitalize ( this ) ;
416- } ,
423+ value : deprecateEmberStringPrototypeExtension ( 'capitalize' , capitalize ) ,
417424 } ,
418425 } ) ;
419426}
0 commit comments