ember-source 5.0.0-alpha.2 → 5.0.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,5 +5,5 @@
5
5
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
6
6
  * @license Licensed under MIT license
7
7
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
8
- * @version 5.0.0-alpha.2
8
+ * @version 5.0.0-alpha.4
9
9
  */
@@ -7,6 +7,7 @@ import { guidFor, observerListenerMetaFor, ROOT, wrap } from '@ember/-internals/
7
7
  import { assert } from '@ember/debug';
8
8
  import { DEBUG } from '@glimmer/env';
9
9
  import { _WeakSet } from '@glimmer/util';
10
+ import { isClassicDecorator } from '@ember/-internals/metal';
10
11
  import { ComputedProperty, descriptorForDecorator, makeComputedDecorator, nativeDescDecorator, setUnprocessedMixins, addObserver, removeObserver, revalidateObservers, defineDecorator, defineValue } from '@ember/-internals/metal';
11
12
  import { addListener, removeListener } from '@ember/object/events';
12
13
  const a_concat = Array.prototype.concat;
@@ -190,11 +191,16 @@ function mergeProps(meta, props, descs, values, base, keys, keysWithSuper) {
190
191
  keys.push(key);
191
192
  let desc = meta.peekDescriptors(key);
192
193
  if (desc === undefined) {
193
- // The superclass did not have a CP, which means it may have
194
- // observers or listeners on that property.
195
- let prev = values[key] = base[key];
196
- if (typeof prev === 'function') {
197
- updateObserversAndListeners(base, key, prev, false);
194
+ // If the value is a classic decorator, we don't want to actually
195
+ // access it, because that will execute the decorator while we're
196
+ // building the class.
197
+ if (!isClassicDecorator(value)) {
198
+ // The superclass did not have a CP, which means it may have
199
+ // observers or listeners on that property.
200
+ let prev = values[key] = base[key];
201
+ if (typeof prev === 'function') {
202
+ updateObserversAndListeners(base, key, prev, false);
203
+ }
198
204
  }
199
205
  } else {
200
206
  descs[key] = desc;
@@ -1,4 +1,8 @@
1
1
  /**
2
+ This module is deprecated and should not be used.
3
+ See [the deprecations guide](https://deprecations.emberjs.com/v4.x#toc_ember-string-from-ember-module)
4
+ for more details.
5
+
2
6
  @module @ember/string
3
7
  */
4
8
  export { getStrings as _getStrings, setStrings as _setStrings } from './lib/string_registry';
@@ -1 +1 @@
1
- export default "5.0.0-alpha.2";
1
+ export default "5.0.0-alpha.4";
package/docs/data.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "name": "The Ember API",
4
4
  "description": "The Ember API: a framework for building ambitious web applications",
5
5
  "url": "https://emberjs.com/",
6
- "version": "5.0.0-alpha.2"
6
+ "version": "5.0.0-alpha.4"
7
7
  },
8
8
  "files": {
9
9
  "node_modules/rsvp/lib/rsvp/promise/all.js": {
@@ -2262,7 +2262,8 @@
2262
2262
  },
2263
2263
  "tag": "module",
2264
2264
  "file": "packages/@ember/error/index.ts",
2265
- "line": 15
2265
+ "line": 19,
2266
+ "description": "This module is deprecated and should not be used.\nSee [the deprecations guide](https://deprecations.emberjs.com/v4.x#toc_deprecate-ember-error)\nfor more details."
2266
2267
  },
2267
2268
  "@ember/helper": {
2268
2269
  "name": "@ember/helper",
@@ -2339,7 +2340,7 @@
2339
2340
  "namespaces": {},
2340
2341
  "tag": "module",
2341
2342
  "file": "packages/@ember/object/mixin.ts",
2342
- "line": 449
2343
+ "line": 455
2343
2344
  },
2344
2345
  "@ember/object/observable": {
2345
2346
  "name": "@ember/object/observable",
@@ -2603,7 +2604,8 @@
2603
2604
  "namespaces": {},
2604
2605
  "tag": "module",
2605
2606
  "file": "packages/@ember/string/index.ts",
2606
- "line": 74
2607
+ "line": 78,
2608
+ "description": "This module is deprecated and should not be used.\nSee [the deprecations guide](https://deprecations.emberjs.com/v4.x#toc_ember-string-from-ember-module)\nfor more details."
2607
2609
  },
2608
2610
  "@ember/test": {
2609
2611
  "name": "@ember/test",
@@ -3883,7 +3885,7 @@
3883
3885
  "module": "@ember/error",
3884
3886
  "namespace": "Ember",
3885
3887
  "file": "packages/@ember/error/index.ts",
3886
- "line": 15,
3888
+ "line": 19,
3887
3889
  "description": "The JavaScript Error object used by Ember.assert.",
3888
3890
  "extends": "Error",
3889
3891
  "is_constructor": 1,
@@ -4008,7 +4010,7 @@
4008
4010
  "module": "@ember/object/mixin",
4009
4011
  "namespace": "",
4010
4012
  "file": "packages/@ember/object/mixin.ts",
4011
- "line": 449,
4013
+ "line": 455,
4012
4014
  "description": "The `Mixin` class allows you to create mixins, whose properties can be\nadded to other classes. For instance,\n\n```javascript\nimport Mixin from '@ember/object/mixin';\n\nconst EditableMixin = Mixin.create({\n edit() {\n console.log('starting to edit');\n this.set('isEditing', true);\n },\n isEditing: false\n});\n```\n\n```javascript\nimport EmberObject from '@ember/object';\nimport EditableMixin from '../mixins/editable';\n\n// Mix mixins into classes by passing them as the first arguments to\n// `.extend.`\nconst Comment = EmberObject.extend(EditableMixin, {\n post: null\n});\n\nlet comment = Comment.create({\n post: somePost\n});\n\ncomment.edit(); // outputs 'starting to edit'\n```\n\nNote that Mixins are created with `Mixin.create`, not\n`Mixin.extend`.\n\nNote that mixins extend a constructor's prototype so arrays and object literals\ndefined as properties will be shared amongst objects that implement the mixin.\nIf you want to define a property in a mixin that is not shared, you can define\nit either as a computed property or have it be created on initialization of the object.\n\n```javascript\n// filters array will be shared amongst any object implementing mixin\nimport Mixin from '@ember/object/mixin';\nimport { A } from '@ember/array';\n\nconst FilterableMixin = Mixin.create({\n filters: A()\n});\n```\n\n```javascript\nimport Mixin from '@ember/object/mixin';\nimport { A } from '@ember/array';\nimport { computed } from '@ember/object';\n\n// filters will be a separate array for every object implementing the mixin\nconst FilterableMixin = Mixin.create({\n filters: computed(function() {\n return A();\n })\n});\n```\n\n```javascript\nimport Mixin from '@ember/object/mixin';\nimport { A } from '@ember/array';\n\n// filters will be created as a separate array during the object's initialization\nconst Filterable = Mixin.create({\n filters: null,\n\n init() {\n this._super(...arguments);\n this.set(\"filters\", A());\n }\n});\n```",
4013
4015
  "access": "public",
4014
4016
  "tagname": ""
@@ -4379,7 +4381,7 @@
4379
4381
  "module": "@ember/string",
4380
4382
  "namespace": "",
4381
4383
  "file": "packages/@ember/string/index.ts",
4382
- "line": 74,
4384
+ "line": 78,
4383
4385
  "description": "Defines string helper methods including string formatting and localization.",
4384
4386
  "access": "public",
4385
4387
  "tagname": "",
@@ -12956,7 +12958,7 @@
12956
12958
  },
12957
12959
  {
12958
12960
  "file": "packages/@ember/error/index.ts",
12959
- "line": 8,
12961
+ "line": 12,
12960
12962
  "class": "Ember.Error",
12961
12963
  "module": "@ember/error"
12962
12964
  },
@@ -14485,7 +14487,7 @@
14485
14487
  },
14486
14488
  {
14487
14489
  "file": "packages/@ember/object/mixin.ts",
14488
- "line": 435,
14490
+ "line": 441,
14489
14491
  "itemtype": "method",
14490
14492
  "name": "mixin",
14491
14493
  "params": [
@@ -14509,43 +14511,43 @@
14509
14511
  },
14510
14512
  {
14511
14513
  "file": "packages/@ember/object/mixin.ts",
14512
- "line": 532,
14514
+ "line": 538,
14513
14515
  "class": "Mixin",
14514
14516
  "module": "@ember/object/mixin"
14515
14517
  },
14516
14518
  {
14517
14519
  "file": "packages/@ember/object/mixin.ts",
14518
- "line": 535,
14520
+ "line": 541,
14519
14521
  "class": "Mixin",
14520
14522
  "module": "@ember/object/mixin"
14521
14523
  },
14522
14524
  {
14523
14525
  "file": "packages/@ember/object/mixin.ts",
14524
- "line": 538,
14526
+ "line": 544,
14525
14527
  "class": "Mixin",
14526
14528
  "module": "@ember/object/mixin"
14527
14529
  },
14528
14530
  {
14529
14531
  "file": "packages/@ember/object/mixin.ts",
14530
- "line": 541,
14532
+ "line": 547,
14531
14533
  "class": "Mixin",
14532
14534
  "module": "@ember/object/mixin"
14533
14535
  },
14534
14536
  {
14535
14537
  "file": "packages/@ember/object/mixin.ts",
14536
- "line": 544,
14538
+ "line": 550,
14537
14539
  "class": "Mixin",
14538
14540
  "module": "@ember/object/mixin"
14539
14541
  },
14540
14542
  {
14541
14543
  "file": "packages/@ember/object/mixin.ts",
14542
- "line": 549,
14544
+ "line": 555,
14543
14545
  "class": "Mixin",
14544
14546
  "module": "@ember/object/mixin"
14545
14547
  },
14546
14548
  {
14547
14549
  "file": "packages/@ember/object/mixin.ts",
14548
- "line": 575,
14550
+ "line": 581,
14549
14551
  "itemtype": "method",
14550
14552
  "name": "create",
14551
14553
  "static": 1,
@@ -14563,13 +14565,13 @@
14563
14565
  },
14564
14566
  {
14565
14567
  "file": "packages/@ember/object/mixin.ts",
14566
- "line": 590,
14568
+ "line": 596,
14567
14569
  "class": "@ember/object/mixin",
14568
14570
  "module": "@ember/object/mixin"
14569
14571
  },
14570
14572
  {
14571
14573
  "file": "packages/@ember/object/mixin.ts",
14572
- "line": 608,
14574
+ "line": 614,
14573
14575
  "itemtype": "method",
14574
14576
  "name": "reopen",
14575
14577
  "params": [
@@ -14587,7 +14589,7 @@
14587
14589
  },
14588
14590
  {
14589
14591
  "file": "packages/@ember/object/mixin.ts",
14590
- "line": 631,
14592
+ "line": 637,
14591
14593
  "itemtype": "method",
14592
14594
  "name": "apply",
14593
14595
  "params": [
@@ -14607,13 +14609,13 @@
14607
14609
  },
14608
14610
  {
14609
14611
  "file": "packages/@ember/object/mixin.ts",
14610
- "line": 647,
14612
+ "line": 653,
14611
14613
  "class": "@ember/object/mixin",
14612
14614
  "module": "@ember/object/mixin"
14613
14615
  },
14614
14616
  {
14615
14617
  "file": "packages/@ember/object/mixin.ts",
14616
- "line": 652,
14618
+ "line": 658,
14617
14619
  "itemtype": "method",
14618
14620
  "name": "detect",
14619
14621
  "params": [
@@ -14634,19 +14636,19 @@
14634
14636
  },
14635
14637
  {
14636
14638
  "file": "packages/@ember/object/mixin.ts",
14637
- "line": 673,
14639
+ "line": 679,
14638
14640
  "class": "@ember/object/mixin",
14639
14641
  "module": "@ember/object/mixin"
14640
14642
  },
14641
14643
  {
14642
14644
  "file": "packages/@ember/object/mixin.ts",
14643
- "line": 680,
14645
+ "line": 686,
14644
14646
  "class": "@ember/object/mixin",
14645
14647
  "module": "@ember/object/mixin"
14646
14648
  },
14647
14649
  {
14648
14650
  "file": "packages/@ember/object/mixin.ts",
14649
- "line": 687,
14651
+ "line": 693,
14650
14652
  "class": "@ember/object/mixin",
14651
14653
  "module": "@ember/object/mixin"
14652
14654
  },
@@ -18624,7 +18626,7 @@
18624
18626
  },
18625
18627
  {
18626
18628
  "file": "packages/@ember/string/index.ts",
18627
- "line": 82,
18629
+ "line": 86,
18628
18630
  "description": "Splits a string into separate units separated by spaces, eliminating any\nempty strings in the process.\n\n```javascript\nimport { w } from '@ember/string';\n\nw(\"alpha beta gamma\").forEach(function(key) {\n console.log(key);\n});\n\n// > alpha\n// > beta\n// > gamma\n```",
18629
18631
  "itemtype": "method",
18630
18632
  "name": "w",
@@ -18648,7 +18650,7 @@
18648
18650
  },
18649
18651
  {
18650
18652
  "file": "packages/@ember/string/index.ts",
18651
- "line": 109,
18653
+ "line": 113,
18652
18654
  "description": "Converts a camelized string into all lower case separated by underscores.\n\n```javascript\nimport { decamelize } from '@ember/string';\n\ndecamelize('innerHTML'); // 'inner_html'\ndecamelize('action_name'); // 'action_name'\ndecamelize('css-class-name'); // 'css-class-name'\ndecamelize('my favorite items'); // 'my favorite items'\n```",
18653
18655
  "itemtype": "method",
18654
18656
  "name": "decamelize",
@@ -18672,7 +18674,7 @@
18672
18674
  },
18673
18675
  {
18674
18676
  "file": "packages/@ember/string/index.ts",
18675
- "line": 132,
18677
+ "line": 136,
18676
18678
  "description": "Replaces underscores, spaces, or camelCase with dashes.\n\n```javascript\nimport { dasherize } from '@ember/string';\n\ndasherize('innerHTML'); // 'inner-html'\ndasherize('action_name'); // 'action-name'\ndasherize('css-class-name'); // 'css-class-name'\ndasherize('my favorite items'); // 'my-favorite-items'\ndasherize('privateDocs/ownerInvoice'; // 'private-docs/owner-invoice'\n```",
18677
18679
  "itemtype": "method",
18678
18680
  "name": "dasherize",
@@ -18696,7 +18698,7 @@
18696
18698
  },
18697
18699
  {
18698
18700
  "file": "packages/@ember/string/index.ts",
18699
- "line": 156,
18701
+ "line": 160,
18700
18702
  "description": "Returns the lowerCamelCase form of a string.\n\n```javascript\nimport { camelize } from '@ember/string';\n\ncamelize('innerHTML'); // 'innerHTML'\ncamelize('action_name'); // 'actionName'\ncamelize('css-class-name'); // 'cssClassName'\ncamelize('my favorite items'); // 'myFavoriteItems'\ncamelize('My Favorite Items'); // 'myFavoriteItems'\ncamelize('private-docs/owner-invoice'); // 'privateDocs/ownerInvoice'\n```",
18701
18703
  "itemtype": "method",
18702
18704
  "name": "camelize",
@@ -18720,7 +18722,7 @@
18720
18722
  },
18721
18723
  {
18722
18724
  "file": "packages/@ember/string/index.ts",
18723
- "line": 181,
18725
+ "line": 185,
18724
18726
  "description": "Returns the UpperCamelCase form of a string.\n\n```javascript\nimport { classify } from '@ember/string';\n\nclassify('innerHTML'); // 'InnerHTML'\nclassify('action_name'); // 'ActionName'\nclassify('css-class-name'); // 'CssClassName'\nclassify('my favorite items'); // 'MyFavoriteItems'\nclassify('private-docs/owner-invoice'); // 'PrivateDocs/OwnerInvoice'\n```",
18725
18727
  "itemtype": "method",
18726
18728
  "name": "classify",
@@ -18744,7 +18746,7 @@
18744
18746
  },
18745
18747
  {
18746
18748
  "file": "packages/@ember/string/index.ts",
18747
- "line": 205,
18749
+ "line": 209,
18748
18750
  "description": "More general than decamelize. Returns the lower\\_case\\_and\\_underscored\nform of a string.\n\n```javascript\nimport { underscore } from '@ember/string';\n\nunderscore('innerHTML'); // 'inner_html'\nunderscore('action_name'); // 'action_name'\nunderscore('css-class-name'); // 'css_class_name'\nunderscore('my favorite items'); // 'my_favorite_items'\nunderscore('privateDocs/ownerInvoice'); // 'private_docs/owner_invoice'\n```",
18749
18751
  "itemtype": "method",
18750
18752
  "name": "underscore",
@@ -18768,7 +18770,7 @@
18768
18770
  },
18769
18771
  {
18770
18772
  "file": "packages/@ember/string/index.ts",
18771
- "line": 230,
18773
+ "line": 234,
18772
18774
  "description": "Returns the Capitalized form of a string\n\n```javascript\nimport { capitalize } from '@ember/string';\n\ncapitalize('innerHTML') // 'InnerHTML'\ncapitalize('action_name') // 'Action_name'\ncapitalize('css-class-name') // 'Css-class-name'\ncapitalize('my favorite items') // 'My favorite items'\ncapitalize('privateDocs/ownerInvoice'); // 'PrivateDocs/ownerInvoice'\n```",
18773
18775
  "itemtype": "method",
18774
18776
  "name": "capitalize",
@@ -19499,15 +19501,15 @@
19499
19501
  },
19500
19502
  {
19501
19503
  "message": "unknown tag: internal",
19502
- "line": " packages/@ember/object/mixin.ts:608"
19504
+ "line": " packages/@ember/object/mixin.ts:614"
19503
19505
  },
19504
19506
  {
19505
19507
  "message": "unknown tag: internal",
19506
- "line": " packages/@ember/object/mixin.ts:631"
19508
+ "line": " packages/@ember/object/mixin.ts:637"
19507
19509
  },
19508
19510
  {
19509
19511
  "message": "unknown tag: internal",
19510
- "line": " packages/@ember/object/mixin.ts:652"
19512
+ "line": " packages/@ember/object/mixin.ts:658"
19511
19513
  },
19512
19514
  {
19513
19515
  "message": "replacing incorrect tag: returns with return",
@@ -19971,7 +19973,7 @@
19971
19973
  },
19972
19974
  {
19973
19975
  "message": "Missing item type",
19974
- "line": " packages/@ember/error/index.ts:8"
19976
+ "line": " packages/@ember/error/index.ts:12"
19975
19977
  },
19976
19978
  {
19977
19979
  "message": "Missing item type",
@@ -20003,47 +20005,47 @@
20003
20005
  },
20004
20006
  {
20005
20007
  "message": "Missing item type",
20006
- "line": " packages/@ember/object/mixin.ts:532"
20008
+ "line": " packages/@ember/object/mixin.ts:538"
20007
20009
  },
20008
20010
  {
20009
20011
  "message": "Missing item type",
20010
- "line": " packages/@ember/object/mixin.ts:535"
20012
+ "line": " packages/@ember/object/mixin.ts:541"
20011
20013
  },
20012
20014
  {
20013
20015
  "message": "Missing item type",
20014
- "line": " packages/@ember/object/mixin.ts:538"
20016
+ "line": " packages/@ember/object/mixin.ts:544"
20015
20017
  },
20016
20018
  {
20017
20019
  "message": "Missing item type",
20018
- "line": " packages/@ember/object/mixin.ts:541"
20020
+ "line": " packages/@ember/object/mixin.ts:547"
20019
20021
  },
20020
20022
  {
20021
20023
  "message": "Missing item type",
20022
- "line": " packages/@ember/object/mixin.ts:544"
20024
+ "line": " packages/@ember/object/mixin.ts:550"
20023
20025
  },
20024
20026
  {
20025
20027
  "message": "Missing item type",
20026
- "line": " packages/@ember/object/mixin.ts:549"
20028
+ "line": " packages/@ember/object/mixin.ts:555"
20027
20029
  },
20028
20030
  {
20029
20031
  "message": "Missing item type",
20030
- "line": " packages/@ember/object/mixin.ts:590"
20032
+ "line": " packages/@ember/object/mixin.ts:596"
20031
20033
  },
20032
20034
  {
20033
20035
  "message": "Missing item type",
20034
- "line": " packages/@ember/object/mixin.ts:647"
20036
+ "line": " packages/@ember/object/mixin.ts:653"
20035
20037
  },
20036
20038
  {
20037
20039
  "message": "Missing item type",
20038
- "line": " packages/@ember/object/mixin.ts:673"
20040
+ "line": " packages/@ember/object/mixin.ts:679"
20039
20041
  },
20040
20042
  {
20041
20043
  "message": "Missing item type",
20042
- "line": " packages/@ember/object/mixin.ts:680"
20044
+ "line": " packages/@ember/object/mixin.ts:686"
20043
20045
  },
20044
20046
  {
20045
20047
  "message": "Missing item type",
20046
- "line": " packages/@ember/object/mixin.ts:687"
20048
+ "line": " packages/@ember/object/mixin.ts:693"
20047
20049
  },
20048
20050
  {
20049
20051
  "message": "Missing item type",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ember-source",
3
- "version": "5.0.0-alpha.2",
3
+ "version": "5.0.0-alpha.4",
4
4
  "description": "A JavaScript framework for creating ambitious web applications",
5
5
  "keywords": [
6
6
  "ember-addon"
@@ -101,7 +101,7 @@
101
101
  "@simple-dom/document": "^1.4.0",
102
102
  "@tsconfig/ember": "^1.0.1",
103
103
  "@types/node": "^18.11.11",
104
- "@types/qunit": "^2.19.2",
104
+ "@types/qunit": "^2.19.4",
105
105
  "@types/rsvp": "^4.0.4",
106
106
  "@typescript-eslint/eslint-plugin": "^5.50.0",
107
107
  "@typescript-eslint/parser": "^5.51.0",
@@ -128,7 +128,7 @@
128
128
  "ember-publisher": "0.0.7",
129
129
  "eslint": "^8.29.0",
130
130
  "eslint-config-prettier": "^8.5.0",
131
- "eslint-import-resolver-node": "^0.3.6",
131
+ "eslint-import-resolver-node": "^0.3.7",
132
132
  "eslint-plugin-disable-features": "^0.1.3",
133
133
  "eslint-plugin-ember-internal": "^3.0.0",
134
134
  "eslint-plugin-import": "^2.26.0",
@@ -150,7 +150,7 @@
150
150
  "npm-run-all": "^4.1.5",
151
151
  "prettier": "^2.8.0",
152
152
  "puppeteer": "^19.4.1",
153
- "qunit": "^2.19.1",
153
+ "qunit": "^2.19.4",
154
154
  "recast": "^0.21.5",
155
155
  "rollup-plugin-commonjs": "^10.1.0",
156
156
  "rollup-plugin-node-resolve": "^4.2.4",
@@ -182,7 +182,7 @@
182
182
  ]
183
183
  }
184
184
  },
185
- "_originalVersion": "5.0.0-alpha.2",
185
+ "_originalVersion": "5.0.0-alpha.4",
186
186
  "_versionPreviouslyCalculated": true,
187
187
  "publishConfig": {
188
188
  "tag": "alpha"
@@ -1,6 +1,10 @@
1
1
  declare module '@ember/error' {
2
2
  /**
3
- @module @ember/error
3
+ This module is deprecated and should not be used.
4
+ See [the deprecations guide](https://deprecations.emberjs.com/v4.x#toc_deprecate-ember-error)
5
+ for more details.
6
+
7
+ @module @ember/error
4
8
  */
5
9
  /** ErrorConstructor without node extensions */
6
10
  interface BrowserErrorConstructor {
@@ -7,7 +7,7 @@ declare module '@ember/runloop' {
7
7
  ? [] | [First] | [First, ...PartialParams<Rest>]
8
8
  : Required<P> extends [infer First, ...infer Rest]
9
9
  ? [] | [First | undefined] | [First | undefined, ...PartialParams<Partial<Rest>>]
10
- : never;
10
+ : [];
11
11
  type RemainingParams<PartialParams extends any[], All extends any[]> = PartialParams extends [
12
12
  infer First,
13
13
  ...infer Rest
@@ -1,5 +1,9 @@
1
1
  declare module '@ember/string' {
2
2
  /**
3
+ This module is deprecated and should not be used.
4
+ See [the deprecations guide](https://deprecations.emberjs.com/v4.x#toc_ember-string-from-ember-module)
5
+ for more details.
6
+
3
7
  @module @ember/string
4
8
  */
5
9
  export {