ember-source 4.4.0-alpha.2 → 4.4.0-alpha.5

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.
Files changed (61) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/blueprints/acceptance-test/mocha-rfc-232-files/tests/acceptance/__name__-test.js +1 -1
  3. package/blueprints/acceptance-test/qunit-rfc-232-files/tests/acceptance/__name__-test.js +1 -1
  4. package/blueprints/component-test/mocha-rfc-232-files/__root__/__testType__/__path__/__test__.js +2 -2
  5. package/blueprints/component-test/qunit-rfc-232-files/__root__/__testType__/__path__/__test__.js +2 -2
  6. package/blueprints/controller-test/mocha-rfc-232-files/__root__/__testType__/__path__/__test__.js +1 -1
  7. package/blueprints/controller-test/qunit-rfc-232-files/__root__/__testType__/__path__/__test__.js +1 -1
  8. package/blueprints/helper-test/mocha-rfc-232-files/__root__/__testType__/__collection__/__name__-test.js +1 -1
  9. package/blueprints/helper-test/qunit-rfc-232-files/__root__/__testType__/__collection__/__name__-test.js +1 -1
  10. package/blueprints/route-test/mocha-rfc-232-files/__root__/__testType__/__path__/__test__.js +1 -1
  11. package/blueprints/route-test/qunit-rfc-232-files/__root__/__testType__/__path__/__test__.js +1 -1
  12. package/blueprints/service-test/mocha-rfc-232-files/__root__/__testType__/__path__/__test__.js +1 -1
  13. package/blueprints/service-test/qunit-rfc-232-files/__root__/__testType__/__path__/__test__.js +1 -1
  14. package/build-metadata.json +3 -3
  15. package/dist/ember-template-compiler.js +19 -8
  16. package/dist/ember-template-compiler.map +1 -1
  17. package/dist/ember-testing.js +9 -5
  18. package/dist/ember-testing.map +1 -1
  19. package/dist/ember.debug.js +994 -1537
  20. package/dist/ember.debug.map +1 -1
  21. package/dist/header/license.js +1 -1
  22. package/dist/packages/@ember/-internals/container/index.js +0 -16
  23. package/dist/packages/@ember/-internals/extension-support/lib/container_debug_adapter.js +10 -19
  24. package/dist/packages/@ember/-internals/extension-support/lib/data_adapter.js +113 -112
  25. package/dist/packages/@ember/-internals/glimmer/index.js +150 -749
  26. package/dist/packages/@ember/-internals/metal/index.js +6 -17
  27. package/dist/packages/@ember/-internals/routing/lib/location/hash_location.js +1 -1
  28. package/dist/packages/@ember/-internals/routing/lib/services/router.js +65 -12
  29. package/dist/packages/@ember/-internals/routing/lib/system/route.js +1 -1
  30. package/dist/packages/@ember/-internals/routing/lib/system/router.js +11 -8
  31. package/dist/packages/@ember/-internals/runtime/lib/compare.js +19 -5
  32. package/dist/packages/@ember/-internals/runtime/lib/ext/rsvp.js +8 -4
  33. package/dist/packages/@ember/-internals/runtime/lib/mixins/-proxy.js +1 -1
  34. package/dist/packages/@ember/-internals/runtime/lib/mixins/array.js +1 -1
  35. package/dist/packages/@ember/-internals/runtime/lib/mixins/comparable.js +4 -4
  36. package/dist/packages/@ember/-internals/runtime/lib/mixins/promise_proxy.js +16 -16
  37. package/dist/packages/@ember/-internals/runtime/lib/mixins/target_action_support.js +8 -8
  38. package/dist/packages/@ember/-internals/views/lib/system/utils.js +4 -2
  39. package/dist/packages/@ember/-internals/views/lib/views/core_view.js +5 -22
  40. package/dist/packages/@ember/canary-features/index.js +4 -2
  41. package/dist/packages/@ember/debug/index.js +1 -1
  42. package/dist/packages/@ember/debug/lib/deprecate.js +6 -2
  43. package/dist/packages/@ember/debug/lib/handlers.js +1 -1
  44. package/dist/packages/@ember/renderer/index.js +21 -0
  45. package/dist/packages/@ember/runloop/index.js +31 -528
  46. package/dist/packages/@ember/runloop/type-tests.ts/begin-end.test.js +5 -0
  47. package/dist/packages/@ember/runloop/type-tests.ts/bind.test.js +59 -0
  48. package/dist/packages/@ember/runloop/type-tests.ts/cancel.test.js +5 -0
  49. package/dist/packages/@ember/runloop/type-tests.ts/debounce.test.js +77 -0
  50. package/dist/packages/@ember/runloop/type-tests.ts/join.test.js +38 -0
  51. package/dist/packages/@ember/runloop/type-tests.ts/later.test.js +38 -0
  52. package/dist/packages/@ember/runloop/type-tests.ts/next.test.js +38 -0
  53. package/dist/packages/@ember/runloop/type-tests.ts/once.test.js +38 -0
  54. package/dist/packages/@ember/runloop/type-tests.ts/run.test.js +38 -0
  55. package/dist/packages/@ember/runloop/type-tests.ts/schedule-once.test.js +39 -0
  56. package/dist/packages/@ember/runloop/type-tests.ts/schedule.test.js +39 -0
  57. package/dist/packages/@ember/runloop/type-tests.ts/throttle.test.js +77 -0
  58. package/dist/packages/ember/index.js +1 -0
  59. package/dist/packages/ember/version.js +1 -1
  60. package/docs/data.json +591 -300
  61. package/package.json +11 -11
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": "4.4.0-alpha.2"
6
+ "version": "4.4.0-alpha.5"
7
7
  },
8
8
  "files": {
9
9
  "node_modules/rsvp/lib/rsvp/promise/all.js": {
@@ -202,8 +202,8 @@
202
202
  },
203
203
  "namespaces": {}
204
204
  },
205
- "packages/@ember/-internals/extension-support/lib/container_debug_adapter.js": {
206
- "name": "packages/@ember/-internals/extension-support/lib/container_debug_adapter.js",
205
+ "packages/@ember/-internals/extension-support/lib/container_debug_adapter.ts": {
206
+ "name": "packages/@ember/-internals/extension-support/lib/container_debug_adapter.ts",
207
207
  "modules": {},
208
208
  "classes": {
209
209
  "ContainerDebugAdapter": 1
@@ -211,8 +211,8 @@
211
211
  "fors": {},
212
212
  "namespaces": {}
213
213
  },
214
- "packages/@ember/-internals/extension-support/lib/data_adapter.js": {
215
- "name": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
214
+ "packages/@ember/-internals/extension-support/lib/data_adapter.ts": {
215
+ "name": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
216
216
  "modules": {},
217
217
  "classes": {
218
218
  "DataAdapter": 1
@@ -414,6 +414,15 @@
414
414
  },
415
415
  "namespaces": {}
416
416
  },
417
+ "packages/@ember/-internals/glimmer/lib/helpers/unique-id.ts": {
418
+ "name": "packages/@ember/-internals/glimmer/lib/helpers/unique-id.ts",
419
+ "modules": {},
420
+ "classes": {},
421
+ "fors": {
422
+ "Ember.Templates.helpers": 1
423
+ },
424
+ "namespaces": {}
425
+ },
417
426
  "packages/@ember/-internals/glimmer/lib/modifiers/on.ts": {
418
427
  "name": "packages/@ember/-internals/glimmer/lib/modifiers/on.ts",
419
428
  "modules": {},
@@ -468,6 +477,13 @@
468
477
  "fors": {},
469
478
  "namespaces": {}
470
479
  },
480
+ "packages/@ember/-internals/glimmer/lib/utils/managers.ts": {
481
+ "name": "packages/@ember/-internals/glimmer/lib/utils/managers.ts",
482
+ "modules": {},
483
+ "classes": {},
484
+ "fors": {},
485
+ "namespaces": {}
486
+ },
471
487
  "packages/@ember/-internals/glimmer/lib/utils/outlet.ts": {
472
488
  "name": "packages/@ember/-internals/glimmer/lib/utils/outlet.ts",
473
489
  "modules": {},
@@ -914,6 +930,13 @@
914
930
  "fors": {},
915
931
  "namespaces": {}
916
932
  },
933
+ "packages/@ember/-internals/runtime/lib/mixins/-proxy.d.ts": {
934
+ "name": "packages/@ember/-internals/runtime/lib/mixins/-proxy.d.ts",
935
+ "modules": {},
936
+ "classes": {},
937
+ "fors": {},
938
+ "namespaces": {}
939
+ },
917
940
  "packages/@ember/-internals/runtime/lib/mixins/-proxy.js": {
918
941
  "name": "packages/@ember/-internals/runtime/lib/mixins/-proxy.js",
919
942
  "modules": {},
@@ -1127,8 +1150,8 @@
1127
1150
  "fors": {},
1128
1151
  "namespaces": {}
1129
1152
  },
1130
- "packages/@ember/-internals/runtime/lib/compare.js": {
1131
- "name": "packages/@ember/-internals/runtime/lib/compare.js",
1153
+ "packages/@ember/-internals/runtime/lib/compare.ts": {
1154
+ "name": "packages/@ember/-internals/runtime/lib/compare.ts",
1132
1155
  "modules": {},
1133
1156
  "classes": {},
1134
1157
  "fors": {
@@ -1136,8 +1159,8 @@
1136
1159
  },
1137
1160
  "namespaces": {}
1138
1161
  },
1139
- "packages/@ember/-internals/runtime/lib/is-equal.js": {
1140
- "name": "packages/@ember/-internals/runtime/lib/is-equal.js",
1162
+ "packages/@ember/-internals/runtime/lib/is-equal.ts": {
1163
+ "name": "packages/@ember/-internals/runtime/lib/is-equal.ts",
1141
1164
  "modules": {},
1142
1165
  "classes": {},
1143
1166
  "fors": {
@@ -1145,8 +1168,8 @@
1145
1168
  },
1146
1169
  "namespaces": {}
1147
1170
  },
1148
- "packages/@ember/-internals/runtime/lib/type-of.js": {
1149
- "name": "packages/@ember/-internals/runtime/lib/type-of.js",
1171
+ "packages/@ember/-internals/runtime/lib/type-of.ts": {
1172
+ "name": "packages/@ember/-internals/runtime/lib/type-of.ts",
1150
1173
  "modules": {},
1151
1174
  "classes": {},
1152
1175
  "fors": {
@@ -1270,6 +1293,13 @@
1270
1293
  "fors": {},
1271
1294
  "namespaces": {}
1272
1295
  },
1296
+ "packages/@ember/-internals/views/lib/system/event_dispatcher.d.ts": {
1297
+ "name": "packages/@ember/-internals/views/lib/system/event_dispatcher.d.ts",
1298
+ "modules": {},
1299
+ "classes": {},
1300
+ "fors": {},
1301
+ "namespaces": {}
1302
+ },
1273
1303
  "packages/@ember/-internals/views/lib/system/event_dispatcher.js": {
1274
1304
  "name": "packages/@ember/-internals/views/lib/system/event_dispatcher.js",
1275
1305
  "modules": {},
@@ -1288,8 +1318,8 @@
1288
1318
  "fors": {},
1289
1319
  "namespaces": {}
1290
1320
  },
1291
- "packages/@ember/-internals/views/lib/views/core_view.js": {
1292
- "name": "packages/@ember/-internals/views/lib/views/core_view.js",
1321
+ "packages/@ember/-internals/views/lib/views/core_view.ts": {
1322
+ "name": "packages/@ember/-internals/views/lib/views/core_view.ts",
1293
1323
  "modules": {},
1294
1324
  "classes": {
1295
1325
  "Ember.CoreView": 1
@@ -1299,6 +1329,13 @@
1299
1329
  "Ember": 1
1300
1330
  }
1301
1331
  },
1332
+ "packages/@ember/application/lib/application.d.ts": {
1333
+ "name": "packages/@ember/application/lib/application.d.ts",
1334
+ "modules": {},
1335
+ "classes": {},
1336
+ "fors": {},
1337
+ "namespaces": {}
1338
+ },
1302
1339
  "packages/@ember/application/lib/application.js": {
1303
1340
  "name": "packages/@ember/application/lib/application.js",
1304
1341
  "modules": {
@@ -1562,8 +1599,19 @@
1562
1599
  },
1563
1600
  "namespaces": {}
1564
1601
  },
1565
- "packages/@ember/runloop/index.js": {
1566
- "name": "packages/@ember/runloop/index.js",
1602
+ "packages/@ember/renderer/index.ts": {
1603
+ "name": "packages/@ember/renderer/index.ts",
1604
+ "modules": {
1605
+ "@ember/renderer": 1
1606
+ },
1607
+ "classes": {
1608
+ "Renderer": 1
1609
+ },
1610
+ "fors": {},
1611
+ "namespaces": {}
1612
+ },
1613
+ "packages/@ember/runloop/index.ts": {
1614
+ "name": "packages/@ember/runloop/index.ts",
1567
1615
  "modules": {
1568
1616
  "@ember/runloop": 1
1569
1617
  },
@@ -1771,8 +1819,8 @@
1771
1819
  },
1772
1820
  "namespaces": {},
1773
1821
  "tag": "module",
1774
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
1775
- "line": 125,
1822
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
1823
+ "line": 158,
1776
1824
  "access": "public",
1777
1825
  "tagname": ""
1778
1826
  },
@@ -1795,7 +1843,7 @@
1795
1843
  "namespaces": {},
1796
1844
  "tag": "main",
1797
1845
  "file": "packages/@ember/-internals/glimmer/lib/helper.ts",
1798
- "line": 37,
1846
+ "line": 43,
1799
1847
  "description": "[Glimmer](https://github.com/tildeio/glimmer) is a templating engine used by Ember.js that is compatible with a subset of the [Handlebars](http://handlebarsjs.com/) syntax.\n\n### Showing a property\n\nTemplates manage the flow of an application's UI, and display state (through\nthe DOM) to a user. For example, given a component with the property \"name\",\nthat component's template can use the name in several ways:\n\n```app/components/person-profile.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n name: 'Jill'\n});\n```\n\n```app/components/person-profile.hbs\n{{this.name}}\n<div>{{this.name}}</div>\n<span data-name={{this.name}}></span>\n```\n\nAny time the \"name\" property on the component changes, the DOM will be\nupdated.\n\nProperties can be chained as well:\n\n```handlebars\n{{@aUserModel.name}}\n<div>{{@listOfUsers.firstObject.name}}</div>\n```\n\n### Using Ember helpers\n\nWhen content is passed in mustaches `{{}}`, Ember will first try to find a helper\nor component with that name. For example, the `if` helper:\n\n```app/components/person-profile.hbs\n{{if this.name \"I have a name\" \"I have no name\"}}\n<span data-has-name={{if this.name true}}></span>\n```\n\nThe returned value is placed where the `{{}}` is called. The above style is\ncalled \"inline\". A second style of helper usage is called \"block\". For example:\n\n```handlebars\n{{#if this.name}}\n I have a name\n{{else}}\n I have no name\n{{/if}}\n```\n\nThe block form of helpers allows you to control how the UI is created based\non the values of properties.\nA third form of helper is called \"nested\". For example here the concat\nhelper will add \" Doe\" to a displayed name if the person has no last name:\n\n```handlebars\n<span data-name={{concat this.firstName (\n if this.lastName (concat \" \" this.lastName) \"Doe\"\n)}}></span>\n```\n\nEmber's built-in helpers are described under the [Ember.Templates.helpers](/ember/release/classes/Ember.Templates.helpers)\nnamespace. Documentation on creating custom helpers can be found under\n[helper](/ember/release/functions/@ember%2Fcomponent%2Fhelper/helper) (or\nunder [Helper](/ember/release/classes/Helper) if a helper requires access to\ndependency injection).\n\n### Invoking a Component\n\nEmber components represent state to the UI of an application. Further\nreading on components can be found under [Component](/ember/release/classes/Component).",
1800
1848
  "itemtype": "main"
1801
1849
  },
@@ -1899,7 +1947,7 @@
1899
1947
  "tag": "module",
1900
1948
  "file": "packages/@ember/-internals/glimmer/lib/glimmer-component-docs.ts",
1901
1949
  "line": 1,
1902
- "description": "A component is a reusable UI element that consists of a `.hbs` template and an\noptional JavaScript class that defines its behavior. For example, someone\nmight make a `button` in the template and handle the click behavior in the\nJavaScript file that shares the same name as the template.\n\nComponents are broken down into two categories:\n\n- Components _without_ JavaScript, that are based only on a template. These\n are called Template-only or TO components.\n- Components _with_ JavaScript, which consist of a template and a backing\n class.\n\nEmber ships with two types of JavaScript classes for components:\n\n1. Glimmer components, imported from `@glimmer/component`, which are the\n default component's for Ember Octane (3.15) and more recent editions.\n2. Classic components, imported from `@ember/component`, which were the\n default for older editions of Ember (pre 3.15).\n\nBelow is the documentation for Template-only and Glimmer components. If you\nare looking for the API documentation for Classic components, it is\n[available here](/ember/release/classes/Component). The source code for\nGlimmer components can be found in [`@glimmer/component`](https://github.com/glimmerjs/glimmer.js/tree/master/packages/%40glimmer/component).\n\n## Defining a Template-only Component\n\nThe simplest way to create a component is to create a template file in\n`app/templates/components`. For example, if you name a template\n`app/templates/components/person-profile.hbs`:\n\n```app/templates/components/person-profile.hbs\n<h1>{{@person.name}}</h1>\n<img src={{@person.avatar}}>\n<p class='signature'>{{@person.signature}}</p>\n```\n\nYou will be able to use `<PersonProfile />` to invoke this component elsewhere\nin your application:\n\n```app/templates/application.hbs\n<PersonProfile @person={{this.currentUser}} />\n```\n\nNote that component names are capitalized here in order to distinguish them\nfrom regular HTML elements, but they are dasherized in the file system.\n\nWhile the angle bracket invocation form is generally preferred, it is also\npossible to invoke the same component with the `{{person-profile}}` syntax:\n\n```app/templates/application.hbs\n{{person-profile person=this.currentUser}}\n```\n\nNote that with this syntax, you use dashes in the component name and\narguments are passed without the `@` sign.\n\nIn both cases, Ember will render the content of the component template we\ncreated above. The end result will be something like this:\n\n```html\n<h1>Tomster</h1>\n<img src=\"https://emberjs.com/tomster.jpg\">\n<p class='signature'>Out of office this week</p>\n```\n\n## File System Nesting\n\nComponents can be nested inside sub-folders for logical groupping. For\nexample, if we placed our template in\n`app/templates/components/person/short-profile.hbs`, we can invoke it as\n`<Person::ShortProfile />`:\n\n```app/templates/application.hbs\n<Person::ShortProfile @person={{this.currentUser}} />\n```\n\nOr equivalently, `{{person/short-profile}}`:\n\n```app/templates/application.hbs\n{{person/short-profile person=this.currentUser}}\n```\n\n## Using Blocks\n\nYou can use `yield` inside a template to include the **contents** of any block\nattached to the component. For instance, if we added a `{{yield}}` to our\ncomponent like so:\n\n```app/templates/components/person-profile.hbs\n<h1>{{@person.name}}</h1>\n{{yield}}\n```\n\nWe could then invoke it like this:\n\n```handlebars\n<PersonProfile @person={{this.currentUser}}>\n <p>Admin mode</p>\n</PersonProfile>\n```\n\nor with curly syntax like this:\n\n```handlebars\n{{#person-profile person=this.currentUser}}\n <p>Admin mode</p>\n{{/person-profile}}\n```\n\nAnd the content passed in between the brackets of the component would be\nrendered in the same place as the `{{yield}}` within it, replacing it.\n\nBlocks are executed in their original context, meaning they have access to the\nscope and any in-scope variables where they were defined.\n\n### Passing parameters to blocks\n\nYou can also pass positional parameters to `{{yield}}`, which are then made\navailable in the block:\n\n```app/templates/components/person-profile.hbs\n<h1>{{@person.name}}</h1>\n{{yield @person.signature}}\n```\n\nWe can then use this value in the block like so:\n\n```handlebars\n<PersonProfile @person={{this.currentUser}} as |signature|>\n {{signature}}\n</PersonProfile>\n```\n\n### Passing multiple blocks\n\nYou can pass multiple blocks to a component by giving them names, and\nspecifying which block you are yielding to with `{{yield}}`. For instance, if\nwe wanted to add a way for users to customize the title of our\n`<PersonProfile>` component, we could add a named block inside of the header:\n\n```app/templates/components/person-profile.hbs\n<h1>{{yield to=\"title\"}}</h1>\n{{yield}}\n```\n\nThis component could then be invoked like so:\n\n```handlebars\n<PersonProfile @person={{this.currentUser}}>\n <:title>{{this.currentUser.name}}</:title>\n <:default>{{this.currentUser.signature}}</:default>\n</PersonProfile>\n```\n\nWhen passing named blocks, you must name every block, including the `default`\nblock, which is the block that is defined if you do not pass a `to` parameter\nto `{{yield}}`. Whenever you invoke a component without passing explicitly\nnamed blocks, the passed block is considered the `default` block.\n\n### Passing parameters to named blocks\n\nYou can also pass parameters to named blocks:\n\n```app/templates/components/person-profile.hbs\n<h1>{{yield @person.name to=\"title\"}}</h1>\n{{yield @person.signature}}\n```\n\nThese parameters can then be used like so:\n\n```handlebars\n<PersonProfile @person={{this.currentUser}}>\n <:title as |name|>{{name}}</:title>\n <:default as |signature|>{{signature}}</:default>\n</PersonProfile>\n```\n\n### Checking to see if a block exists\n\nYou can also check to see if a block exists using the `(has-block)` keyword,\nand conditionally use it, or provide a default template instead.\n\n```app/templates/components/person-profile.hbs\n<h1>\n {{#if (has-block \"title\")}}\n {{yield @person.name to=\"title\"}}\n {{else}}\n {{@person.name}}\n {{/if}}\n</h1>\n\n{{#if (has-block)}}\n {{yield @person.signature}}\n{{else}}\n {{@person.signature}}\n{{/if}}\n```\n\nWith this template, we can then optionally pass in one block, both blocks, or\nnone at all:\n\n```handlebars\n{{! passing both blocks }}\n<PersonProfile @person={{this.currentUser}}>\n <:title as |name|>{{name}}</:title>\n <:default as |signature|>{{signature}}</:default>\n</PersonProfile>\n\n{{! passing just the title block }}\n<PersonProfile @person={{this.currentUser}}>\n <:title as |name|>{{name}}</:title>\n</PersonProfile>\n\n{{! passing just the default block }}\n<PersonProfile @person={{this.currentUser}} as |signature|>\n {{signature}}\n</PersonProfile>\n\n{{! not passing any blocks }}\n<PersonProfile @person={{this.currentUser}}/>\n```\n\n### Checking to see if a block has parameters\n\nWe can also check if a block receives parameters using the `(has-block-params)`\nkeyword, and conditionally yield different values if so.\n\n```app/templates/components/person-profile.hbs\n{{#if (has-block-params)}}\n {{yield @person.signature}}\n{{else}}\n {{yield}}\n{{/if}}\n```\n\n## Customizing Components With JavaScript\n\nTo add JavaScript to a component, create a JavaScript file in the same\nlocation as the template file, with the same name, and export a subclass\nof `Component` as the default value. For example, to add Javascript to the\n`PersonProfile` component which we defined above, we would create\n`app/comopnents/person-profile.js` and export our class as the default, like\nso:\n\n```app/components/person-profile.js\nimport Component from '@glimmer/component';\n\nexport default class PersonProfileComponent extends Component {\n get displayName() {\n let { title, firstName, lastName } = this.args.person;\n\n if (title) {\n return `${title} ${lastName}`;\n } else {\n return `${firstName} ${lastName}`;\n }\n })\n}\n```\n\nYou can add your own properties, methods, and lifecycle hooks to this\nsubclass to customize its behavior, and you can reference the instance of the\nclass in your template using `{{this}}`. For instance, we could access the\n`displayName` property of our `PersonProfile` component instance in the\ntemplate like this:\n\n```app/templates/components/person-profile.hbs\n<h1>{{this.displayName}}</h1>\n{{yield}}\n```\n\n## `constructor`\n\nparams: `owner` object and `args` object\n\nConstructs a new component and assigns itself the passed properties. The\nconstructor is run whenever a new instance of the component is created, and\ncan be used to setup the initial state of the component.\n\n```javascript\nimport Component from '@glimmer/component';\n\nexport default class SomeComponent extends Component {\n constructor(owner, args) {\n super(owner, args);\n\n if (this.args.displayMode === 'list') {\n this.items = [];\n }\n }\n}\n```\n\nService injections and arguments are available in the constructor.\n\n```javascript\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\n\nexport default class SomeComponent extends Component {\n @service myAnimations;\n\n constructor(owner, args) {\n super(owner, args);\n\n if (this.args.fadeIn === true) {\n this.myAnimations.register(this, 'fade-in');\n }\n }\n}\n```\n\n## `willDestroy`\n\n`willDestroy` is called after the component has been removed from the DOM, but\nbefore the component is fully destroyed. This lifecycle hook can be used to\ncleanup the component and any related state.\n\n```javascript\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\n\nexport default class SomeComponent extends Component {\n @service myAnimations;\n\n willDestroy() {\n super.willDestroy(...arguments);\n\n this.myAnimations.unregister(this);\n }\n}\n```\n\n## `args`\n\nThe `args` property of Glimmer components is an object that contains the\n_arguments_ that are passed to the component. For instance, the\nfollowing component usage:\n\n```handlebars\n<SomeComponent @fadeIn={{true}} />\n```\n\nWould result in the following `args` object to be passed to the component:\n\n```javascript\n{ fadeIn: true }\n```\n\n`args` can be accessed at any point in the component lifecycle, including\n`constructor` and `willDestroy`. They are also automatically marked as tracked\nproperties, and they can be depended on as computed property dependencies:\n\n```javascript\nimport Component from '@glimmer/component';\nimport { computed } from '@ember/object';\n\nexport default class SomeComponent extends Component {\n\n @computed('args.someValue')\n get computedGetter() {\n // updates whenever args.someValue updates\n return this.args.someValue;\n }\n\n get standardGetter() {\n // updates whenever args.anotherValue updates (Ember 3.13+)\n return this.args.anotherValue;\n }\n}\n```\n\n## `isDestroying`\n\nA boolean flag to tell if the component is in the process of destroying. This is set to\ntrue before `willDestroy` is called.\n\n## `isDestroyed`\nA boolean to tell if the component has been fully destroyed. This is set to true\nafter `willDestroy` is called.",
1950
+ "description": "A component is a reusable UI element that consists of a `.hbs` template and an\noptional JavaScript class that defines its behavior. For example, someone\nmight make a `button` in the template and handle the click behavior in the\nJavaScript file that shares the same name as the template.\n\nComponents are broken down into two categories:\n\n- Components _without_ JavaScript, that are based only on a template. These\n are called Template-only or TO components.\n- Components _with_ JavaScript, which consist of a template and a backing\n class.\n\nEmber ships with two types of JavaScript classes for components:\n\n1. Glimmer components, imported from `@glimmer/component`, which are the\n default components for Ember Octane (3.15) and more recent editions.\n2. Classic components, imported from `@ember/component`, which were the\n default for older editions of Ember (pre 3.15).\n\nBelow is the documentation for Template-only and Glimmer components. If you\nare looking for the API documentation for Classic components, it is\n[available here](/ember/release/classes/Component). The source code for\nGlimmer components can be found in [`@glimmer/component`](https://github.com/glimmerjs/glimmer.js/tree/master/packages/%40glimmer/component).\n\n## Defining a Template-only Component\n\nThe simplest way to create a component is to create a template file in\n`app/templates/components`. For example, if you name a template\n`app/templates/components/person-profile.hbs`:\n\n```app/templates/components/person-profile.hbs\n<h1>{{@person.name}}</h1>\n<img src={{@person.avatar}}>\n<p class='signature'>{{@person.signature}}</p>\n```\n\nYou will be able to use `<PersonProfile />` to invoke this component elsewhere\nin your application:\n\n```app/templates/application.hbs\n<PersonProfile @person={{this.currentUser}} />\n```\n\nNote that component names are capitalized here in order to distinguish them\nfrom regular HTML elements, but they are dasherized in the file system.\n\nWhile the angle bracket invocation form is generally preferred, it is also\npossible to invoke the same component with the `{{person-profile}}` syntax:\n\n```app/templates/application.hbs\n{{person-profile person=this.currentUser}}\n```\n\nNote that with this syntax, you use dashes in the component name and\narguments are passed without the `@` sign.\n\nIn both cases, Ember will render the content of the component template we\ncreated above. The end result will be something like this:\n\n```html\n<h1>Tomster</h1>\n<img src=\"https://emberjs.com/tomster.jpg\">\n<p class='signature'>Out of office this week</p>\n```\n\n## File System Nesting\n\nComponents can be nested inside sub-folders for logical groupping. For\nexample, if we placed our template in\n`app/templates/components/person/short-profile.hbs`, we can invoke it as\n`<Person::ShortProfile />`:\n\n```app/templates/application.hbs\n<Person::ShortProfile @person={{this.currentUser}} />\n```\n\nOr equivalently, `{{person/short-profile}}`:\n\n```app/templates/application.hbs\n{{person/short-profile person=this.currentUser}}\n```\n\n## Using Blocks\n\nYou can use `yield` inside a template to include the **contents** of any block\nattached to the component. For instance, if we added a `{{yield}}` to our\ncomponent like so:\n\n```app/templates/components/person-profile.hbs\n<h1>{{@person.name}}</h1>\n{{yield}}\n```\n\nWe could then invoke it like this:\n\n```handlebars\n<PersonProfile @person={{this.currentUser}}>\n <p>Admin mode</p>\n</PersonProfile>\n```\n\nor with curly syntax like this:\n\n```handlebars\n{{#person-profile person=this.currentUser}}\n <p>Admin mode</p>\n{{/person-profile}}\n```\n\nAnd the content passed in between the brackets of the component would be\nrendered in the same place as the `{{yield}}` within it, replacing it.\n\nBlocks are executed in their original context, meaning they have access to the\nscope and any in-scope variables where they were defined.\n\n### Passing parameters to blocks\n\nYou can also pass positional parameters to `{{yield}}`, which are then made\navailable in the block:\n\n```app/templates/components/person-profile.hbs\n<h1>{{@person.name}}</h1>\n{{yield @person.signature}}\n```\n\nWe can then use this value in the block like so:\n\n```handlebars\n<PersonProfile @person={{this.currentUser}} as |signature|>\n {{signature}}\n</PersonProfile>\n```\n\n### Passing multiple blocks\n\nYou can pass multiple blocks to a component by giving them names, and\nspecifying which block you are yielding to with `{{yield}}`. For instance, if\nwe wanted to add a way for users to customize the title of our\n`<PersonProfile>` component, we could add a named block inside of the header:\n\n```app/templates/components/person-profile.hbs\n<h1>{{yield to=\"title\"}}</h1>\n{{yield}}\n```\n\nThis component could then be invoked like so:\n\n```handlebars\n<PersonProfile @person={{this.currentUser}}>\n <:title>{{this.currentUser.name}}</:title>\n <:default>{{this.currentUser.signature}}</:default>\n</PersonProfile>\n```\n\nWhen passing named blocks, you must name every block, including the `default`\nblock, which is the block that is defined if you do not pass a `to` parameter\nto `{{yield}}`. Whenever you invoke a component without passing explicitly\nnamed blocks, the passed block is considered the `default` block.\n\n### Passing parameters to named blocks\n\nYou can also pass parameters to named blocks:\n\n```app/templates/components/person-profile.hbs\n<h1>{{yield @person.name to=\"title\"}}</h1>\n{{yield @person.signature}}\n```\n\nThese parameters can then be used like so:\n\n```handlebars\n<PersonProfile @person={{this.currentUser}}>\n <:title as |name|>{{name}}</:title>\n <:default as |signature|>{{signature}}</:default>\n</PersonProfile>\n```\n\n### Checking to see if a block exists\n\nYou can also check to see if a block exists using the `(has-block)` keyword,\nand conditionally use it, or provide a default template instead.\n\n```app/templates/components/person-profile.hbs\n<h1>\n {{#if (has-block \"title\")}}\n {{yield @person.name to=\"title\"}}\n {{else}}\n {{@person.name}}\n {{/if}}\n</h1>\n\n{{#if (has-block)}}\n {{yield @person.signature}}\n{{else}}\n {{@person.signature}}\n{{/if}}\n```\n\nWith this template, we can then optionally pass in one block, both blocks, or\nnone at all:\n\n```handlebars\n{{! passing both blocks }}\n<PersonProfile @person={{this.currentUser}}>\n <:title as |name|>{{name}}</:title>\n <:default as |signature|>{{signature}}</:default>\n</PersonProfile>\n\n{{! passing just the title block }}\n<PersonProfile @person={{this.currentUser}}>\n <:title as |name|>{{name}}</:title>\n</PersonProfile>\n\n{{! passing just the default block }}\n<PersonProfile @person={{this.currentUser}} as |signature|>\n {{signature}}\n</PersonProfile>\n\n{{! not passing any blocks }}\n<PersonProfile @person={{this.currentUser}}/>\n```\n\n### Checking to see if a block has parameters\n\nWe can also check if a block receives parameters using the `(has-block-params)`\nkeyword, and conditionally yield different values if so.\n\n```app/templates/components/person-profile.hbs\n{{#if (has-block-params)}}\n {{yield @person.signature}}\n{{else}}\n {{yield}}\n{{/if}}\n```\n\n## Customizing Components With JavaScript\n\nTo add JavaScript to a component, create a JavaScript file in the same\nlocation as the template file, with the same name, and export a subclass\nof `Component` as the default value. For example, to add Javascript to the\n`PersonProfile` component which we defined above, we would create\n`app/components/person-profile.js` and export our class as the default, like\nso:\n\n```app/components/person-profile.js\nimport Component from '@glimmer/component';\n\nexport default class PersonProfileComponent extends Component {\n get displayName() {\n let { title, firstName, lastName } = this.args.person;\n\n if (title) {\n return `${title} ${lastName}`;\n } else {\n return `${firstName} ${lastName}`;\n }\n })\n}\n```\n\nYou can add your own properties, methods, and lifecycle hooks to this\nsubclass to customize its behavior, and you can reference the instance of the\nclass in your template using `{{this}}`. For instance, we could access the\n`displayName` property of our `PersonProfile` component instance in the\ntemplate like this:\n\n```app/templates/components/person-profile.hbs\n<h1>{{this.displayName}}</h1>\n{{yield}}\n```\n\n## `constructor`\n\nparams: `owner` object and `args` object\n\nConstructs a new component and assigns itself the passed properties. The\nconstructor is run whenever a new instance of the component is created, and\ncan be used to setup the initial state of the component.\n\n```javascript\nimport Component from '@glimmer/component';\n\nexport default class SomeComponent extends Component {\n constructor(owner, args) {\n super(owner, args);\n\n if (this.args.displayMode === 'list') {\n this.items = [];\n }\n }\n}\n```\n\nService injections and arguments are available in the constructor.\n\n```javascript\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\n\nexport default class SomeComponent extends Component {\n @service myAnimations;\n\n constructor(owner, args) {\n super(owner, args);\n\n if (this.args.fadeIn === true) {\n this.myAnimations.register(this, 'fade-in');\n }\n }\n}\n```\n\n## `willDestroy`\n\n`willDestroy` is called after the component has been removed from the DOM, but\nbefore the component is fully destroyed. This lifecycle hook can be used to\ncleanup the component and any related state.\n\n```javascript\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\n\nexport default class SomeComponent extends Component {\n @service myAnimations;\n\n willDestroy() {\n super.willDestroy(...arguments);\n\n this.myAnimations.unregister(this);\n }\n}\n```\n\n## `args`\n\nThe `args` property of Glimmer components is an object that contains the\n_arguments_ that are passed to the component. For instance, the\nfollowing component usage:\n\n```handlebars\n<SomeComponent @fadeIn={{true}} />\n```\n\nWould result in the following `args` object to be passed to the component:\n\n```javascript\n{ fadeIn: true }\n```\n\n`args` can be accessed at any point in the component lifecycle, including\n`constructor` and `willDestroy`. They are also automatically marked as tracked\nproperties, and they can be depended on as computed property dependencies:\n\n```javascript\nimport Component from '@glimmer/component';\nimport { computed } from '@ember/object';\n\nexport default class SomeComponent extends Component {\n\n @computed('args.someValue')\n get computedGetter() {\n // updates whenever args.someValue updates\n return this.args.someValue;\n }\n\n get standardGetter() {\n // updates whenever args.anotherValue updates (Ember 3.13+)\n return this.args.anotherValue;\n }\n}\n```\n\n## `isDestroying`\n\nA boolean flag to tell if the component is in the process of destroying. This is set to\ntrue before `willDestroy` is called.\n\n## `isDestroyed`\nA boolean to tell if the component has been fully destroyed. This is set to true\nafter `willDestroy` is called.",
1903
1951
  "access": "public",
1904
1952
  "tagname": ""
1905
1953
  },
@@ -2062,7 +2110,7 @@
2062
2110
  "namespaces": {},
2063
2111
  "tag": "module",
2064
2112
  "file": "packages/@ember/canary-features/index.ts",
2065
- "line": 21,
2113
+ "line": 22,
2066
2114
  "description": "Set `EmberENV.FEATURES` in your application's `config/environment.js` file\nto enable canary features in your application.\n\nSee the [feature flag guide](https://guides.emberjs.com/release/configuring-ember/feature-flags/)\nfor more details.",
2067
2115
  "access": "public",
2068
2116
  "tagname": ""
@@ -2198,6 +2246,21 @@
2198
2246
  "file": "packages/@ember/polyfills/lib/assign.ts",
2199
2247
  "line": 3
2200
2248
  },
2249
+ "@ember/renderer": {
2250
+ "name": "@ember/renderer",
2251
+ "submodules": {},
2252
+ "elements": {},
2253
+ "classes": {
2254
+ "Renderer": 1
2255
+ },
2256
+ "fors": {},
2257
+ "namespaces": {},
2258
+ "tag": "module",
2259
+ "file": "packages/@ember/renderer/index.ts",
2260
+ "line": 6,
2261
+ "access": "public",
2262
+ "tagname": ""
2263
+ },
2201
2264
  "@ember/runloop": {
2202
2265
  "name": "@ember/runloop",
2203
2266
  "submodules": {},
@@ -2210,8 +2273,8 @@
2210
2273
  },
2211
2274
  "namespaces": {},
2212
2275
  "tag": "module",
2213
- "file": "packages/@ember/runloop/index.js",
2214
- "line": 67
2276
+ "file": "packages/@ember/runloop/index.ts",
2277
+ "line": 96
2215
2278
  },
2216
2279
  "@ember/service": {
2217
2280
  "name": "@ember/service",
@@ -2347,7 +2410,7 @@
2347
2410
  "module": "rsvp",
2348
2411
  "namespace": "",
2349
2412
  "file": "packages/@ember/-internals/container/lib/registry.ts",
2350
- "line": 65,
2413
+ "line": 59,
2351
2414
  "description": "A registry used to store factory and option information keyed\nby type.\n\nA `Registry` stores the factory and option information needed by a\n`Container` to instantiate and cache objects.\n\nThe API for `Registry` is still in flux and should not be considered stable.",
2352
2415
  "access": "private",
2353
2416
  "tagname": "",
@@ -2380,8 +2443,8 @@
2380
2443
  "extension_for": [],
2381
2444
  "module": "@ember/debug",
2382
2445
  "namespace": "",
2383
- "file": "packages/@ember/-internals/extension-support/lib/container_debug_adapter.js",
2384
- "line": 9,
2446
+ "file": "packages/@ember/-internals/extension-support/lib/container_debug_adapter.ts",
2447
+ "line": 16,
2385
2448
  "description": "The `ContainerDebugAdapter` helps the container and resolver interface\nwith tools that debug Ember such as the\n[Ember Inspector](https://github.com/emberjs/ember-inspector)\nfor Chrome and Firefox.\n\nThis class can be extended by a custom resolver implementer\nto override some of the methods with library-specific code.\n\nThe methods likely to be overridden are:\n\n* `canCatalogEntriesByType`\n* `catalogEntriesByType`\n\nThe adapter will need to be registered\nin the application's container as `container-debug-adapter:main`.\n\nExample:\n\n```javascript\nApplication.initializer({\n name: \"containerDebugAdapter\",\n\n initialize(application) {\n application.register('container-debug-adapter:main', require('app/container-debug-adapter'));\n }\n});\n```",
2386
2449
  "extends": "EmberObject",
2387
2450
  "since": "1.5.0",
@@ -2398,8 +2461,8 @@
2398
2461
  "extension_for": [],
2399
2462
  "module": "@ember/debug",
2400
2463
  "namespace": "",
2401
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
2402
- "line": 125,
2464
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
2465
+ "line": 158,
2403
2466
  "description": "The `DataAdapter` helps a data persistence library\ninterface with tools that debug Ember such\nas the [Ember Inspector](https://github.com/emberjs/ember-inspector)\nfor Chrome and Firefox.\n\nThis class will be extended by a persistence library\nwhich will override some of the methods with\nlibrary-specific code.\n\nThe methods likely to be overridden are:\n\n* `getFilters`\n* `detect`\n* `columnsForType`\n* `getRecords`\n* `getRecordColumnValues`\n* `getRecordKeywords`\n* `getRecordFilterValues`\n* `getRecordColor`\n\nThe adapter will need to be registered\nin the application's container as `dataAdapter:main`.\n\nExample:\n\n```javascript\nApplication.initializer({\n name: \"data-adapter\",\n\n initialize: function(application) {\n application.register('data-adapter:main', DS.DataAdapter);\n }\n});\n```",
2404
2467
  "extends": "EmberObject",
2405
2468
  "access": "public",
@@ -2464,7 +2527,7 @@
2464
2527
  "module": "ember",
2465
2528
  "namespace": "",
2466
2529
  "file": "packages/@ember/-internals/glimmer/lib/utils/curly-component-state-bucket.ts",
2467
- "line": 33,
2530
+ "line": 15,
2468
2531
  "description": "Represents the internal state of the component.",
2469
2532
  "access": "private",
2470
2533
  "tagname": ""
@@ -2491,7 +2554,7 @@
2491
2554
  "module": "@ember/component",
2492
2555
  "namespace": "",
2493
2556
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
2494
- "line": 37,
2557
+ "line": 38,
2495
2558
  "description": "A component is a reusable UI element that consists of a `.hbs` template and an\noptional JavaScript class that defines its behavior. For example, someone\nmight make a `button` in the template and handle the click behavior in the\nJavaScript file that shares the same name as the template.\n\nComponents are broken down into two categories:\n\n- Components _without_ JavaScript, that are based only on a template. These\n are called Template-only or TO components.\n- Components _with_ JavaScript, which consist of a template and a backing\n class.\n\nEmber ships with two types of JavaScript classes for components:\n\n1. Glimmer components, imported from `@glimmer/component`, which are the\n default component's for Ember Octane (3.15) and more recent editions.\n2. Classic components, imported from `@ember/component`, which were the\n default for older editions of Ember (pre 3.15).\n\nBelow is the documentation for Classic components. If you are looking for the\nAPI documentation for Template-only or Glimmer components, it is\n[available here](/ember/release/modules/@glimmer%2Fcomponent).\n\n## Defining a Classic Component\n\nIf you want to customize the component in order to handle events, transform\narguments or maintain internal state, you implement a subclass of `Component`.\n\nOne example is to add computed properties to your component:\n\n```app/components/person-profile.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n displayName: computed('person.title', 'person.firstName', 'person.lastName', function() {\n let { title, firstName, lastName } = this.person;\n\n if (title) {\n return `${title} ${lastName}`;\n } else {\n return `${firstName} ${lastName}`;\n }\n })\n});\n```\n\nAnd then use it in the component's template:\n\n```app/templates/components/person-profile.hbs\n<h1>{{this.displayName}}</h1>\n{{yield}}\n```\n\n## Customizing a Classic Component's HTML Element in JavaScript\n\n### HTML Tag\n\nThe default HTML tag name used for a component's HTML representation is `div`.\nThis can be customized by setting the `tagName` property.\n\nConsider the following component class:\n\n```app/components/emphasized-paragraph.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n tagName: 'em'\n});\n```\n\nWhen invoked, this component would produce output that looks something like\nthis:\n\n```html\n<em id=\"ember1\" class=\"ember-view\"></em>\n```\n\n### HTML `class` Attribute\n\nThe HTML `class` attribute of a component's tag can be set by providing a\n`classNames` property that is set to an array of strings:\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n classNames: ['my-class', 'my-other-class']\n});\n```\n\nInvoking this component will produce output that looks like this:\n\n```html\n<div id=\"ember1\" class=\"ember-view my-class my-other-class\"></div>\n```\n\n`class` attribute values can also be set by providing a `classNameBindings`\nproperty set to an array of properties names for the component. The return\nvalue of these properties will be added as part of the value for the\ncomponents's `class` attribute. These properties can be computed properties:\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\nimport { computed } from '@ember/object';\n\nexport default Component.extend({\n classNames: ['my-class', 'my-other-class'],\n classNameBindings: ['propertyA', 'propertyB'],\n\n propertyA: 'from-a',\n propertyB: computed(function() {\n if (someLogic) { return 'from-b'; }\n })\n});\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view my-class my-other-class from-a from-b\"></div>\n```\n\nNote that `classNames` and `classNameBindings` is in addition to the `class`\nattribute passed with the angle bracket invocation syntax. Therefore, if this\ncomponent was invoked like so:\n\n```handlebars\n<MyWidget class=\"from-invocation\" />\n```\n\nThe resulting HTML will look similar to this:\n\n```html\n<div id=\"ember1\" class=\"from-invocation ember-view my-class my-other-class from-a from-b\"></div>\n```\n\nIf the value of a class name binding returns a boolean the property name\nitself will be used as the class name if the property is true. The class name\nwill not be added if the value is `false` or `undefined`.\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n classNameBindings: ['hovered'],\n\n hovered: true\n});\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view hovered\"></div>\n```\n\n### Custom Class Names for Boolean Values\n\nWhen using boolean class name bindings you can supply a string value other\nthan the property name for use as the `class` HTML attribute by appending the\npreferred value after a \":\" character when defining the binding:\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n classNameBindings: ['awesome:so-very-cool'],\n\n awesome: true\n});\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view so-very-cool\"></div>\n```\n\nBoolean value class name bindings whose property names are in a\ncamelCase-style format will be converted to a dasherized format:\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n classNameBindings: ['isUrgent'],\n\n isUrgent: true\n});\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view is-urgent\"></div>\n```\n\nClass name bindings can also refer to object values that are found by\ntraversing a path relative to the component itself:\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\nimport EmberObject from '@ember/object';\n\nexport default Component.extend({\n classNameBindings: ['messages.empty'],\n\n messages: EmberObject.create({\n empty: true\n })\n});\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view empty\"></div>\n```\n\nIf you want to add a class name for a property which evaluates to true and\nand a different class name if it evaluates to false, you can pass a binding\nlike this:\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n classNameBindings: ['isEnabled:enabled:disabled'],\n isEnabled: true\n});\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view enabled\"></div>\n```\n\nWhen isEnabled is `false`, the resulting HTML representation looks like this:\n\n```html\n<div id=\"ember1\" class=\"ember-view disabled\"></div>\n```\n\nThis syntax offers the convenience to add a class if a property is `false`:\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\n\n// Applies no class when isEnabled is true and class 'disabled' when isEnabled is false\nexport default Component.extend({\n classNameBindings: ['isEnabled::disabled'],\n isEnabled: true\n});\n```\n\nInvoking this component when the `isEnabled` property is true will produce\nHTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view\"></div>\n```\n\nInvoking it when the `isEnabled` property on the component is `false` will\nproduce HTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view disabled\"></div>\n```\n\nUpdates to the value of a class name binding will result in automatic update\nof the HTML `class` attribute in the component's rendered HTML\nrepresentation. If the value becomes `false` or `undefined` the class name\nwill be removed.\n\nBoth `classNames` and `classNameBindings` are concatenated properties. See\n[EmberObject](/ember/release/classes/EmberObject) documentation for more\ninformation about concatenated properties.\n\n### Other HTML Attributes\n\nThe HTML attribute section of a component's tag can be set by providing an\n`attributeBindings` property set to an array of property names on the component.\nThe return value of these properties will be used as the value of the component's\nHTML associated attribute:\n\n```app/components/my-anchor.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n tagName: 'a',\n attributeBindings: ['href'],\n\n href: 'http://google.com'\n});\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<a id=\"ember1\" class=\"ember-view\" href=\"http://google.com\"></a>\n```\n\nOne property can be mapped on to another by placing a \":\" between\nthe source property and the destination property:\n\n```app/components/my-anchor.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n tagName: 'a',\n attributeBindings: ['url:href'],\n\n url: 'http://google.com'\n});\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<a id=\"ember1\" class=\"ember-view\" href=\"http://google.com\"></a>\n```\n\nHTML attributes passed with angle bracket invocations will take precedence\nover those specified in `attributeBindings`. Therefore, if this component was\ninvoked like so:\n\n```handlebars\n<MyAnchor href=\"http://bing.com\" @url=\"http://google.com\" />\n```\n\nThe resulting HTML will looks like this:\n\n```html\n<a id=\"ember1\" class=\"ember-view\" href=\"http://bing.com\"></a>\n```\n\nNote that the `href` attribute is ultimately set to `http://bing.com`,\ndespite it having attribute binidng to the `url` property, which was\nset to `http://google.com`.\n\nNamespaced attributes (e.g. `xlink:href`) are supported, but have to be\nmapped, since `:` is not a valid character for properties in Javascript:\n\n```app/components/my-use.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n tagName: 'use',\n attributeBindings: ['xlinkHref:xlink:href'],\n\n xlinkHref: '#triangle'\n});\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<use xlink:href=\"#triangle\"></use>\n```\n\nIf the value of a property monitored by `attributeBindings` is a boolean, the\nattribute will be present or absent depending on the value:\n\n```app/components/my-text-input.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n tagName: 'input',\n attributeBindings: ['disabled'],\n\n disabled: false\n});\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<input id=\"ember1\" class=\"ember-view\" />\n```\n\n`attributeBindings` can refer to computed properties:\n\n```app/components/my-text-input.js\nimport Component from '@ember/component';\nimport { computed } from '@ember/object';\n\nexport default Component.extend({\n tagName: 'input',\n attributeBindings: ['disabled'],\n\n disabled: computed(function() {\n if (someLogic) {\n return true;\n } else {\n return false;\n }\n })\n});\n```\n\nTo prevent setting an attribute altogether, use `null` or `undefined` as the\nvalue of the property used in `attributeBindings`:\n\n```app/components/my-text-input.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n tagName: 'form',\n attributeBindings: ['novalidate'],\n novalidate: null\n});\n```\n\nUpdates to the property of an attribute binding will result in automatic\nupdate of the HTML attribute in the component's HTML output.\n\n`attributeBindings` is a concatenated property. See\n[EmberObject](/ember/release/classes/EmberObject) documentation for more\ninformation about concatenated properties.\n\n## Layouts\n\nThe `layout` property can be used to dynamically specify a template associated\nwith a component class, instead of relying on Ember to link together a\ncomponent class and a template based on file names.\n\nIn general, applications should not use this feature, but it's commonly used\nin addons for historical reasons.\n\nThe `layout` property should be set to the default export of a template\nmodule, which is the name of a template file without the `.hbs` extension.\n\n```app/templates/components/person-profile.hbs\n<h1>Person's Title</h1>\n<div class='details'>{{yield}}</div>\n```\n\n```app/components/person-profile.js\n import Component from '@ember/component';\n import layout from '../templates/components/person-profile';\n\n export default Component.extend({\n layout\n });\n```\n\nIf you invoke the component:\n\n```handlebars\n<PersonProfile>\n <h2>Chief Basket Weaver</h2>\n <h3>Fisherman Industries</h3>\n</PersonProfile>\n```\n\nor\n\n```handlebars\n{{#person-profile}}\n <h2>Chief Basket Weaver</h2>\n <h3>Fisherman Industries</h3>\n{{/person-profile}}\n```\n\nIt will result in the following HTML output:\n\n```html\n<h1>Person's Title</h1>\n <div class=\"details\">\n <h2>Chief Basket Weaver</h2>\n <h3>Fisherman Industries</h3>\n</div>\n```\n\n## Handling Browser Events\n\nComponents can respond to user-initiated events in one of three ways: passing\nactions with angle bracket invocation, adding event handler methods to the\ncomponent's class, or adding actions to the component's template.\n\n### Passing Actions With Angle Bracket Invocation\n\nFor one-off events specific to particular instance of a component, it is possible\nto pass actions to the component's element using angle bracket invocation syntax.\n\n```handlebars\n<MyWidget {{action 'firstWidgetClicked'}} />\n\n<MyWidget {{action 'secondWidgetClicked'}} />\n```\n\nIn this case, when the first component is clicked on, Ember will invoke the\n`firstWidgetClicked` action. When the second component is clicked on, Ember\nwill invoke the `secondWidgetClicked` action instead.\n\nBesides `{{action}}`, it is also possible to pass any arbitrary element modifiers\nusing the angle bracket invocation syntax.\n\n### Event Handler Methods\n\nComponents can also respond to user-initiated events by implementing a method\nthat matches the event name. This approach is appropriate when the same event\nshould be handled by all instances of the same component.\n\nAn event object will be passed as the argument to the event handler method.\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n click(event) {\n // `event.target` is either the component's element or one of its children\n let tag = event.target.tagName.toLowerCase();\n console.log('clicked on a `<${tag}>` HTML element!');\n }\n});\n```\n\nIn this example, whenever the user clicked anywhere inside the component, it\nwill log a message to the console.\n\nIt is possible to handle event types other than `click` by implementing the\nfollowing event handler methods. In addition, custom events can be registered\nby using `Application.customEvents`.\n\nTouch events:\n\n* `touchStart`\n* `touchMove`\n* `touchEnd`\n* `touchCancel`\n\nKeyboard events:\n\n* `keyDown`\n* `keyUp`\n* `keyPress`\n\nMouse events:\n\n* `mouseDown`\n* `mouseUp`\n* `contextMenu`\n* `click`\n* `doubleClick`\n* `focusIn`\n* `focusOut`\n\nForm events:\n\n* `submit`\n* `change`\n* `focusIn`\n* `focusOut`\n* `input`\n\nDrag and drop events:\n\n* `dragStart`\n* `drag`\n* `dragEnter`\n* `dragLeave`\n* `dragOver`\n* `dragEnd`\n* `drop`\n\n### `{{action}}` Helper\n\nInstead of handling all events of a particular type anywhere inside the\ncomponent's element, you may instead want to limit it to a particular\nelement in the component's template. In this case, it would be more\nconvenient to implement an action instead.\n\nFor example, you could implement the action `hello` for the `person-profile`\ncomponent:\n\n```app/components/person-profile.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n actions: {\n hello(name) {\n console.log(\"Hello\", name);\n }\n }\n});\n```\n\nAnd then use it in the component's template:\n\n```app/templates/components/person-profile.hbs\n<h1>{{@person.name}}</h1>\n\n<button {{action 'hello' @person.name}}>\n Say Hello to {{@person.name}}\n</button>\n```\n\nWhen the user clicks the button, Ember will invoke the `hello` action,\npassing in the current value of `@person.name` as an argument.\n\nSee [Ember.Templates.helpers.action](/ember/release/classes/Ember.Templates.helpers/methods/action?anchor=action).",
2496
2559
  "extends": "Ember.CoreView",
2497
2560
  "uses": [
@@ -2526,7 +2589,7 @@
2526
2589
  "module": "@ember/component",
2527
2590
  "namespace": "",
2528
2591
  "file": "packages/@ember/-internals/glimmer/lib/helper.ts",
2529
- "line": 37,
2592
+ "line": 43,
2530
2593
  "description": "Ember Helpers are functions that can compute values, and are used in templates.\nFor example, this code calls a helper named `format-currency`:\n\n```app/templates/application.hbs\n<Cost @cents={{230}} />\n```\n\n```app/components/cost.hbs\n<div>{{format-currency @cents currency=\"$\"}}</div>\n```\n\nAdditionally a helper can be called as a nested helper.\nIn this example, we show the formatted currency value if the `showMoney`\nnamed argument is truthy.\n\n```handlebars\n{{if @showMoney (format-currency @cents currency=\"$\")}}\n```\n\nHelpers defined using a class must provide a `compute` function. For example:\n\n```app/helpers/format-currency.js\nimport Helper from '@ember/component/helper';\n\nexport default class extends Helper {\n compute([cents], { currency }) {\n return `${currency}${cents * 0.01}`;\n }\n}\n```\n\nEach time the input to a helper changes, the `compute` function will be\ncalled again.\n\nAs instances, these helpers also have access to the container and will accept\ninjected dependencies.\n\nAdditionally, class helpers can call `recompute` to force a new computation.",
2531
2594
  "extends": "CoreObject",
2532
2595
  "access": "public",
@@ -2977,7 +3040,7 @@
2977
3040
  "module": "@ember/routing",
2978
3041
  "namespace": "",
2979
3042
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
2980
- "line": 138,
3043
+ "line": 139,
2981
3044
  "description": "The `EmberRouter` class manages the application state and URLs. Refer to\nthe [routing guide](https://guides.emberjs.com/release/routing/) for documentation.",
2982
3045
  "extends": "EmberObject",
2983
3046
  "uses": [
@@ -3463,8 +3526,8 @@
3463
3526
  "extension_for": [],
3464
3527
  "module": "ember",
3465
3528
  "namespace": "Ember",
3466
- "file": "packages/@ember/-internals/views/lib/views/core_view.js",
3467
- "line": 5,
3529
+ "file": "packages/@ember/-internals/views/lib/views/core_view.ts",
3530
+ "line": 7,
3468
3531
  "description": "`Ember.CoreView` is an abstract class that exists to give view-like behavior\nto both Ember's main view class `Component` and other classes that don't need\nthe full functionality of `Component`.\n\nUnless you have specific needs for `CoreView`, you will use `Component`\nin your applications.",
3469
3532
  "extends": "EmberObject",
3470
3533
  "deprecated": true,
@@ -3540,7 +3603,7 @@
3540
3603
  "module": "@ember/canary-features",
3541
3604
  "namespace": "",
3542
3605
  "file": "packages/@ember/canary-features/index.ts",
3543
- "line": 21,
3606
+ "line": 22,
3544
3607
  "description": "The hash of enabled Canary features. Add to this, any canary features\nbefore creating your application.",
3545
3608
  "static": 1,
3546
3609
  "since": "1.1.0",
@@ -3730,6 +3793,21 @@
3730
3793
  "module": "@ember/polyfills",
3731
3794
  "namespace": ""
3732
3795
  },
3796
+ "Renderer": {
3797
+ "name": "Renderer",
3798
+ "shortname": "Renderer",
3799
+ "classitems": [],
3800
+ "plugins": [],
3801
+ "extensions": [],
3802
+ "plugin_for": [],
3803
+ "extension_for": [],
3804
+ "module": "@ember/renderer",
3805
+ "namespace": "",
3806
+ "file": "packages/@ember/renderer/index.ts",
3807
+ "line": 6,
3808
+ "access": "public",
3809
+ "tagname": ""
3810
+ },
3733
3811
  "@ember/runloop": {
3734
3812
  "name": "@ember/runloop",
3735
3813
  "shortname": "@ember/runloop",
@@ -4600,7 +4678,7 @@
4600
4678
  },
4601
4679
  {
4602
4680
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4603
- "line": 104,
4681
+ "line": 100,
4604
4682
  "description": "A backup registry for resolving registrations when no matches can be found.",
4605
4683
  "access": "private",
4606
4684
  "tagname": "",
@@ -4612,7 +4690,7 @@
4612
4690
  },
4613
4691
  {
4614
4692
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4615
- "line": 112,
4693
+ "line": 108,
4616
4694
  "description": "An object that has a `resolve` method that resolves a name.",
4617
4695
  "access": "private",
4618
4696
  "tagname": "",
@@ -4624,7 +4702,7 @@
4624
4702
  },
4625
4703
  {
4626
4704
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4627
- "line": 120,
4705
+ "line": 116,
4628
4706
  "access": "private",
4629
4707
  "tagname": "",
4630
4708
  "itemtype": "property",
@@ -4635,7 +4713,7 @@
4635
4713
  },
4636
4714
  {
4637
4715
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4638
- "line": 126,
4716
+ "line": 122,
4639
4717
  "access": "private",
4640
4718
  "tagname": "",
4641
4719
  "itemtype": "property",
@@ -4646,7 +4724,7 @@
4646
4724
  },
4647
4725
  {
4648
4726
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4649
- "line": 133,
4727
+ "line": 129,
4650
4728
  "access": "private",
4651
4729
  "tagname": "",
4652
4730
  "itemtype": "property",
@@ -4657,7 +4735,7 @@
4657
4735
  },
4658
4736
  {
4659
4737
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4660
- "line": 140,
4738
+ "line": 136,
4661
4739
  "access": "private",
4662
4740
  "tagname": "",
4663
4741
  "itemtype": "property",
@@ -4668,7 +4746,7 @@
4668
4746
  },
4669
4747
  {
4670
4748
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4671
- "line": 147,
4749
+ "line": 143,
4672
4750
  "access": "private",
4673
4751
  "tagname": "",
4674
4752
  "itemtype": "property",
@@ -4679,7 +4757,7 @@
4679
4757
  },
4680
4758
  {
4681
4759
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4682
- "line": 154,
4760
+ "line": 150,
4683
4761
  "description": "Creates a container based on this registry.",
4684
4762
  "access": "private",
4685
4763
  "tagname": "",
@@ -4701,7 +4779,7 @@
4701
4779
  },
4702
4780
  {
4703
4781
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4704
- "line": 166,
4782
+ "line": 162,
4705
4783
  "description": "Registers a factory for later injection.\n\nExample:\n\n```javascript\nlet registry = new Registry();\n\nregistry.register('model:user', Person, {singleton: false });\nregistry.register('fruit:favorite', Orange);\nregistry.register('communication:main', Email, {singleton: false});\n```",
4706
4784
  "access": "private",
4707
4785
  "tagname": "",
@@ -4729,7 +4807,7 @@
4729
4807
  },
4730
4808
  {
4731
4809
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4732
- "line": 200,
4810
+ "line": 198,
4733
4811
  "description": "Unregister a fullName\n\n```javascript\nlet registry = new Registry();\nregistry.register('model:user', User);\n\nregistry.resolve('model:user').create() instanceof User //=> true\n\nregistry.unregister('model:user')\nregistry.resolve('model:user') === undefined //=> true\n```",
4734
4812
  "access": "private",
4735
4813
  "tagname": "",
@@ -4747,7 +4825,7 @@
4747
4825
  },
4748
4826
  {
4749
4827
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4750
- "line": 230,
4828
+ "line": 228,
4751
4829
  "description": "Given a fullName return the corresponding factory.\n\nBy default `resolve` will retrieve the factory from\nthe registry.\n\n```javascript\nlet registry = new Registry();\nregistry.register('api:twitter', Twitter);\n\nregistry.resolve('api:twitter') // => Twitter\n```\n\nOptionally the registry can be provided with a custom resolver.\nIf provided, `resolve` will first provide the custom resolver\nthe opportunity to resolve the fullName, otherwise it will fallback\nto the registry.\n\n```javascript\nlet registry = new Registry();\nregistry.resolver = function(fullName) {\n // lookup via the module system of choice\n };\n\n// the twitter factory is added to the module system\nregistry.resolve('api:twitter') // => Twitter\n```",
4752
4830
  "access": "private",
4753
4831
  "tagname": "",
@@ -4783,7 +4861,7 @@
4783
4861
  },
4784
4862
  {
4785
4863
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4786
- "line": 273,
4864
+ "line": 271,
4787
4865
  "description": "A hook that can be used to describe how the resolver will\nattempt to find the factory.\n\nFor example, the default Ember `.describe` returns the full\nclass name (including namespace) where Ember's resolver expects\nto find the `fullName`.",
4788
4866
  "access": "private",
4789
4867
  "tagname": "",
@@ -4805,7 +4883,7 @@
4805
4883
  },
4806
4884
  {
4807
4885
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4808
- "line": 296,
4886
+ "line": 294,
4809
4887
  "description": "A hook to enable custom fullName normalization behavior",
4810
4888
  "access": "private",
4811
4889
  "tagname": "",
@@ -4827,7 +4905,7 @@
4827
4905
  },
4828
4906
  {
4829
4907
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4830
- "line": 314,
4908
+ "line": 312,
4831
4909
  "description": "Normalize a fullName based on the application's conventions",
4832
4910
  "access": "private",
4833
4911
  "tagname": "",
@@ -4849,7 +4927,7 @@
4849
4927
  },
4850
4928
  {
4851
4929
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4852
- "line": 329,
4930
+ "line": 327,
4853
4931
  "itemtype": "method",
4854
4932
  "name": "makeToString",
4855
4933
  "access": "private",
@@ -4875,7 +4953,7 @@
4875
4953
  },
4876
4954
  {
4877
4955
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4878
- "line": 347,
4956
+ "line": 345,
4879
4957
  "description": "Given a fullName check if the container is aware of its factory\nor singleton instance.",
4880
4958
  "access": "private",
4881
4959
  "tagname": "",
@@ -4911,7 +4989,7 @@
4911
4989
  },
4912
4990
  {
4913
4991
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4914
- "line": 366,
4992
+ "line": 364,
4915
4993
  "description": "Allow registering options for all factories of a type.\n\n```javascript\nlet registry = new Registry();\nlet container = registry.container();\n\n// if all of type `connection` must not be singletons\nregistry.optionsForType('connection', { singleton: false });\n\nregistry.register('connection:twitter', TwitterConnection);\nregistry.register('connection:facebook', FacebookConnection);\n\nlet twitter = container.lookup('connection:twitter');\nlet twitter2 = container.lookup('connection:twitter');\n\ntwitter === twitter2; // => false\n\nlet facebook = container.lookup('connection:facebook');\nlet facebook2 = container.lookup('connection:facebook');\n\nfacebook === facebook2; // => false\n```",
4916
4994
  "access": "private",
4917
4995
  "tagname": "",
@@ -4934,7 +5012,7 @@
4934
5012
  },
4935
5013
  {
4936
5014
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4937
- "line": 407,
5015
+ "line": 405,
4938
5016
  "access": "private",
4939
5017
  "tagname": "",
4940
5018
  "itemtype": "method",
@@ -4956,14 +5034,14 @@
4956
5034
  },
4957
5035
  {
4958
5036
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4959
- "line": 450,
5037
+ "line": 448,
4960
5038
  "description": "This is deprecated in favor of explicit injection of dependencies.\n\nReference: https://deprecations.emberjs.com/v3.x#toc_implicit-injections\n```\n\n@private\n@method injection\n@param {String} factoryName\n@param {String} property\n@param {String} injectionName\n@deprecated",
4961
5039
  "class": "Registry",
4962
5040
  "module": "rsvp"
4963
5041
  },
4964
5042
  {
4965
5043
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4966
- "line": 480,
5044
+ "line": 478,
4967
5045
  "access": "private",
4968
5046
  "tagname": "",
4969
5047
  "itemtype": "method",
@@ -5083,20 +5161,19 @@
5083
5161
  "module": "rsvp"
5084
5162
  },
5085
5163
  {
5086
- "file": "packages/@ember/-internals/extension-support/lib/container_debug_adapter.js",
5087
- "line": 50,
5164
+ "file": "packages/@ember/-internals/extension-support/lib/container_debug_adapter.ts",
5165
+ "line": 57,
5088
5166
  "description": "The resolver instance of the application\nbeing debugged. This property will be injected\non creation.",
5089
5167
  "itemtype": "property",
5090
5168
  "name": "resolver",
5091
- "default": "null",
5092
5169
  "access": "public",
5093
5170
  "tagname": "",
5094
5171
  "class": "ContainerDebugAdapter",
5095
5172
  "module": "@ember/debug"
5096
5173
  },
5097
5174
  {
5098
- "file": "packages/@ember/-internals/extension-support/lib/container_debug_adapter.js",
5099
- "line": 61,
5175
+ "file": "packages/@ember/-internals/extension-support/lib/container_debug_adapter.ts",
5176
+ "line": 67,
5100
5177
  "description": "Returns true if it is possible to catalog a list of available\nclasses in the resolver for a given type.",
5101
5178
  "itemtype": "method",
5102
5179
  "name": "canCatalogEntriesByType",
@@ -5117,8 +5194,8 @@
5117
5194
  "module": "@ember/debug"
5118
5195
  },
5119
5196
  {
5120
- "file": "packages/@ember/-internals/extension-support/lib/container_debug_adapter.js",
5121
- "line": 78,
5197
+ "file": "packages/@ember/-internals/extension-support/lib/container_debug_adapter.ts",
5198
+ "line": 84,
5122
5199
  "description": "Returns the available classes a given type.",
5123
5200
  "itemtype": "method",
5124
5201
  "name": "catalogEntriesByType",
@@ -5139,8 +5216,8 @@
5139
5216
  "module": "@ember/debug"
5140
5217
  },
5141
5218
  {
5142
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
5143
- "line": 177,
5219
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
5220
+ "line": 214,
5144
5221
  "description": "The container-debug-adapter which is used\nto list all models.",
5145
5222
  "itemtype": "property",
5146
5223
  "name": "containerDebugAdapter",
@@ -5152,8 +5229,8 @@
5152
5229
  "module": "@ember/debug"
5153
5230
  },
5154
5231
  {
5155
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
5156
- "line": 187,
5232
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
5233
+ "line": 224,
5157
5234
  "description": "The number of attributes to send\nas columns. (Enough to make the record\nidentifiable).",
5158
5235
  "access": "private",
5159
5236
  "tagname": "",
@@ -5165,8 +5242,8 @@
5165
5242
  "module": "@ember/debug"
5166
5243
  },
5167
5244
  {
5168
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
5169
- "line": 199,
5245
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
5246
+ "line": 236,
5170
5247
  "description": "Ember Data > v1.0.0-beta.18\nrequires string model names to be passed\naround instead of the actual factories.\n\nThis is a stamp for the Ember Inspector\nto differentiate between the versions\nto be able to support older versions too.",
5171
5248
  "access": "public",
5172
5249
  "tagname": "",
@@ -5176,8 +5253,8 @@
5176
5253
  "module": "@ember/debug"
5177
5254
  },
5178
5255
  {
5179
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
5180
- "line": 213,
5256
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
5257
+ "line": 250,
5181
5258
  "description": "Map from records arrays to RecordsWatcher instances",
5182
5259
  "access": "private",
5183
5260
  "tagname": "",
@@ -5188,8 +5265,8 @@
5188
5265
  "module": "@ember/debug"
5189
5266
  },
5190
5267
  {
5191
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
5192
- "line": 221,
5268
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
5269
+ "line": 258,
5193
5270
  "description": "Map from records arrays to TypeWatcher instances",
5194
5271
  "access": "private",
5195
5272
  "tagname": "",
@@ -5200,8 +5277,8 @@
5200
5277
  "module": "@ember/debug"
5201
5278
  },
5202
5279
  {
5203
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
5204
- "line": 229,
5280
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
5281
+ "line": 266,
5205
5282
  "description": "Callback that is currently scheduled on backburner end to flush and check\nall active watchers.",
5206
5283
  "access": "private",
5207
5284
  "tagname": "",
@@ -5212,8 +5289,8 @@
5212
5289
  "module": "@ember/debug"
5213
5290
  },
5214
5291
  {
5215
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
5216
- "line": 239,
5292
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
5293
+ "line": 276,
5217
5294
  "description": "Stores all methods that clear observers.\nThese methods will be called on destruction.",
5218
5295
  "access": "private",
5219
5296
  "tagname": "",
@@ -5224,8 +5301,8 @@
5224
5301
  "module": "@ember/debug"
5225
5302
  },
5226
5303
  {
5227
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
5228
- "line": 248,
5304
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
5305
+ "line": 285,
5229
5306
  "description": "Specifies how records can be filtered.\nRecords returned will need to have a `filterValues`\nproperty with a key for every name in the returned array.",
5230
5307
  "access": "public",
5231
5308
  "tagname": "",
@@ -5239,8 +5316,8 @@
5239
5316
  "module": "@ember/debug"
5240
5317
  },
5241
5318
  {
5242
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
5243
- "line": 262,
5319
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
5320
+ "line": 299,
5244
5321
  "description": "Fetch the model types and observe them for changes.",
5245
5322
  "access": "public",
5246
5323
  "tagname": "",
@@ -5266,8 +5343,8 @@
5266
5343
  "module": "@ember/debug"
5267
5344
  },
5268
5345
  {
5269
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
5270
- "line": 307,
5346
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
5347
+ "line": 347,
5271
5348
  "description": "Fetch the records of a given type and observe them for changes.",
5272
5349
  "access": "public",
5273
5350
  "tagname": "",
@@ -5303,8 +5380,8 @@
5303
5380
  "module": "@ember/debug"
5304
5381
  },
5305
5382
  {
5306
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
5307
- "line": 374,
5383
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
5384
+ "line": 419,
5308
5385
  "description": "Clear all observers before destruction",
5309
5386
  "access": "private",
5310
5387
  "tagname": "",
@@ -5314,8 +5391,8 @@
5314
5391
  "module": "@ember/debug"
5315
5392
  },
5316
5393
  {
5317
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
5318
- "line": 392,
5394
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
5395
+ "line": 437,
5319
5396
  "description": "Detect whether a class is a model.\n\nTest that against the model class\nof your persistence library.",
5320
5397
  "access": "public",
5321
5398
  "tagname": "",
@@ -5328,8 +5405,8 @@
5328
5405
  "module": "@ember/debug"
5329
5406
  },
5330
5407
  {
5331
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
5332
- "line": 406,
5408
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
5409
+ "line": 451,
5333
5410
  "description": "Get the columns for a given model type.",
5334
5411
  "access": "public",
5335
5412
  "tagname": "",
@@ -5343,8 +5420,8 @@
5343
5420
  "module": "@ember/debug"
5344
5421
  },
5345
5422
  {
5346
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
5347
- "line": 419,
5423
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
5424
+ "line": 464,
5348
5425
  "description": "Adds observers to a model type class.",
5349
5426
  "access": "private",
5350
5427
  "tagname": "",
@@ -5370,8 +5447,8 @@
5370
5447
  "module": "@ember/debug"
5371
5448
  },
5372
5449
  {
5373
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
5374
- "line": 456,
5450
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
5451
+ "line": 501,
5375
5452
  "description": "Wraps a given model type and observes changes to it.",
5376
5453
  "access": "private",
5377
5454
  "tagname": "",
@@ -5390,15 +5467,15 @@
5390
5467
  }
5391
5468
  ],
5392
5469
  "return": {
5393
- "description": "Contains the wrapped type and the function to remove observers\nFormat:\n type: {Object} The wrapped type.\n The wrapped type has the following format:\n name: {String} The name of the type.\n count: {Integer} The number of records available.\n columns: {Columns} An array of columns to describe the record.\n object: {Class} The actual Model type class.\n release: {Function} The function to remove observers.",
5470
+ "description": "The wrapped type has the following format:\n name: {String} The name of the type.\n count: {Integer} The number of records available.\n columns: {Columns} An array of columns to describe the record.\n object: {Class} The actual Model type class.",
5394
5471
  "type": "Object"
5395
5472
  },
5396
5473
  "class": "DataAdapter",
5397
5474
  "module": "@ember/debug"
5398
5475
  },
5399
5476
  {
5400
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
5401
- "line": 487,
5477
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
5478
+ "line": 525,
5402
5479
  "description": "Fetches all models defined in the application.",
5403
5480
  "access": "private",
5404
5481
  "tagname": "",
@@ -5412,8 +5489,8 @@
5412
5489
  "module": "@ember/debug"
5413
5490
  },
5414
5491
  {
5415
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
5416
- "line": 516,
5492
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
5493
+ "line": 550,
5417
5494
  "description": "Loops over all namespaces and all objects\nattached to them.",
5418
5495
  "access": "private",
5419
5496
  "tagname": "",
@@ -5427,8 +5504,8 @@
5427
5504
  "module": "@ember/debug"
5428
5505
  },
5429
5506
  {
5430
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
5431
- "line": 545,
5507
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
5508
+ "line": 579,
5432
5509
  "description": "Fetches all loaded records for a given type.",
5433
5510
  "access": "public",
5434
5511
  "tagname": "",
@@ -5442,8 +5519,8 @@
5442
5519
  "module": "@ember/debug"
5443
5520
  },
5444
5521
  {
5445
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
5446
- "line": 558,
5522
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
5523
+ "line": 592,
5447
5524
  "description": "Wraps a record and observers changes to it.",
5448
5525
  "access": "private",
5449
5526
  "tagname": "",
@@ -5464,8 +5541,8 @@
5464
5541
  "module": "@ember/debug"
5465
5542
  },
5466
5543
  {
5467
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
5468
- "line": 579,
5544
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
5545
+ "line": 612,
5469
5546
  "description": "Gets the values for each column.",
5470
5547
  "access": "public",
5471
5548
  "tagname": "",
@@ -5479,8 +5556,8 @@
5479
5556
  "module": "@ember/debug"
5480
5557
  },
5481
5558
  {
5482
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
5483
- "line": 591,
5559
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
5560
+ "line": 624,
5484
5561
  "description": "Returns keywords to match when searching records.",
5485
5562
  "access": "public",
5486
5563
  "tagname": "",
@@ -5494,8 +5571,8 @@
5494
5571
  "module": "@ember/debug"
5495
5572
  },
5496
5573
  {
5497
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
5498
- "line": 602,
5574
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
5575
+ "line": 635,
5499
5576
  "description": "Returns the values of filters defined by `getFilters`.",
5500
5577
  "access": "public",
5501
5578
  "tagname": "",
@@ -5516,8 +5593,8 @@
5516
5593
  "module": "@ember/debug"
5517
5594
  },
5518
5595
  {
5519
- "file": "packages/@ember/-internals/extension-support/lib/data_adapter.js",
5520
- "line": 614,
5596
+ "file": "packages/@ember/-internals/extension-support/lib/data_adapter.ts",
5597
+ "line": 647,
5521
5598
  "description": "Each record can have a color that represents its state.",
5522
5599
  "access": "public",
5523
5600
  "tagname": "",
@@ -5946,6 +6023,18 @@
5946
6023
  "class": "Ember.Templates.helpers",
5947
6024
  "module": "ember"
5948
6025
  },
6026
+ {
6027
+ "file": "packages/@ember/-internals/glimmer/lib/helpers/unique-id.ts",
6028
+ "line": 5,
6029
+ "description": "Use the {{unique-id}} helper to generate a unique ID string suitable for use as\nan ID attribute in the DOM.\n\n```handlebars\n<input id={{unique-id}} type=\"email\" />\n```\nEach invocation of {{unique-id}} will return a new, unique ID string.\nYou can use the `let` helper to create an ID that can be reused within a template.\n\n```handlebars\n{{#let (unique-id) as |emailId|}}\n <label for={{emailId}}>Email address</label>\n <input id={{emailId}} type=\"email\" />\n{{/let}}\n```",
6030
+ "itemtype": "method",
6031
+ "name": "unique-id",
6032
+ "since": "4.4.0",
6033
+ "access": "public",
6034
+ "tagname": "",
6035
+ "class": "Ember.Templates.helpers",
6036
+ "module": "ember"
6037
+ },
5949
6038
  {
5950
6039
  "file": "packages/@ember/-internals/glimmer/lib/modifiers/on.ts",
5951
6040
  "line": 5,
@@ -6015,6 +6104,33 @@
6015
6104
  "class": "Ember.Templates.helpers",
6016
6105
  "module": "ember"
6017
6106
  },
6107
+ {
6108
+ "file": "packages/@ember/-internals/glimmer/lib/utils/managers.ts",
6109
+ "line": 9,
6110
+ "description": "Associate a class with a component manager (an object that is responsible for\ncoordinating the lifecycle events that occurs when invoking, rendering and\nre-rendering a component).",
6111
+ "itemtype": "method",
6112
+ "name": "setComponentManager",
6113
+ "params": [
6114
+ {
6115
+ "name": "factory",
6116
+ "description": "a function to create the owner for an object",
6117
+ "type": "Function"
6118
+ },
6119
+ {
6120
+ "name": "obj",
6121
+ "description": "the object to associate with the componetn manager",
6122
+ "type": "Object"
6123
+ }
6124
+ ],
6125
+ "return": {
6126
+ "description": "the same object passed in",
6127
+ "type": "Object"
6128
+ },
6129
+ "access": "public",
6130
+ "tagname": "",
6131
+ "class": "@ember/template",
6132
+ "module": "ember"
6133
+ },
6018
6134
  {
6019
6135
  "file": "packages/@ember/-internals/glimmer/lib/utils/outlet.ts",
6020
6136
  "line": 5,
@@ -6112,19 +6228,44 @@
6112
6228
  },
6113
6229
  {
6114
6230
  "file": "packages/@ember/-internals/glimmer/lib/views/outlet.ts",
6115
- "line": 104,
6231
+ "line": 107,
6116
6232
  "class": "Component",
6117
6233
  "module": "@ember/template"
6118
6234
  },
6119
6235
  {
6120
6236
  "file": "packages/@ember/-internals/glimmer/lib/views/outlet.ts",
6121
- "line": 112,
6237
+ "line": 115,
6122
6238
  "class": "Component",
6123
6239
  "module": "@ember/template"
6124
6240
  },
6125
6241
  {
6126
6242
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6127
- "line": 756,
6243
+ "line": 664,
6244
+ "description": "Layout can be used to wrap content in a component.",
6245
+ "itemtype": "property",
6246
+ "name": "layout",
6247
+ "type": "Function",
6248
+ "access": "public",
6249
+ "tagname": "",
6250
+ "class": "Component",
6251
+ "module": "@ember/component"
6252
+ },
6253
+ {
6254
+ "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6255
+ "line": 672,
6256
+ "description": "The name of the layout to lookup if no layout is provided.\nBy default `Component` will lookup a template with this name in\n`Ember.TEMPLATES` (a shared global object).",
6257
+ "itemtype": "property",
6258
+ "name": "layoutName",
6259
+ "type": "String",
6260
+ "default": "undefined",
6261
+ "access": "private",
6262
+ "tagname": "",
6263
+ "class": "Component",
6264
+ "module": "@ember/component"
6265
+ },
6266
+ {
6267
+ "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6268
+ "line": 789,
6128
6269
  "description": "Normally, Ember's component model is \"write-only\". The component takes a\nbunch of attributes that it got passed in, and uses them to render its\ntemplate.\n\nOne nice thing about this model is that if you try to set a value to the\nsame thing as last time, Ember (through HTMLBars) will avoid doing any\nwork on the DOM.\n\nThis is not just a performance optimization. If an attribute has not\nchanged, it is important not to clobber the element's \"hidden state\".\nFor example, if you set an input's `value` to the same value as before,\nit will clobber selection state and cursor position. In other words,\nsetting an attribute is not **always** idempotent.\n\nThis method provides a way to read an element's attribute and also\nupdate the last value Ember knows about at the same time. This makes\nsetting an attribute idempotent.\n\nIn particular, what this means is that if you get an `<input>` element's\n`value` attribute and then re-render the template with the same value,\nit will avoid clobbering the cursor and selection position.\nSince most attribute sets are idempotent in the browser, you typically\ncan get away with reading attributes using jQuery, but the most reliable\nway to do so is through this method.",
6129
6270
  "itemtype": "method",
6130
6271
  "name": "readDOMAttr",
@@ -6145,7 +6286,7 @@
6145
6286
  },
6146
6287
  {
6147
6288
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6148
- "line": 807,
6289
+ "line": 840,
6149
6290
  "description": "The WAI-ARIA role of the control represented by this view. For example, a\nbutton may have a role of type 'button', or a pane may have a role of\ntype 'alertdialog'. This property is used by assistive software to help\nvisually challenged users navigate rich web applications.\n\nThe full list of valid WAI-ARIA roles is available at:\n[https://www.w3.org/TR/wai-aria/#roles_categorization](https://www.w3.org/TR/wai-aria/#roles_categorization)",
6150
6291
  "itemtype": "property",
6151
6292
  "name": "ariaRole",
@@ -6158,7 +6299,7 @@
6158
6299
  },
6159
6300
  {
6160
6301
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6161
- "line": 822,
6302
+ "line": 855,
6162
6303
  "description": "Enables components to take a list of parameters as arguments.\nFor example, a component that takes two parameters with the names\n`name` and `age`:\n\n```app/components/my-component.js\nimport Component from '@ember/component';\n\nlet MyComponent = Component.extend();\n\nMyComponent.reopenClass({\n positionalParams: ['name', 'age']\n});\n\nexport default MyComponent;\n```\n\nIt can then be invoked like this:\n\n```hbs\n{{my-component \"John\" 38}}\n```\n\nThe parameters can be referred to just like named parameters:\n\n```hbs\nName: {{name}}, Age: {{age}}.\n```\n\nUsing a string instead of an array allows for an arbitrary number of\nparameters:\n\n```app/components/my-component.js\nimport Component from '@ember/component';\n\nlet MyComponent = Component.extend();\n\nMyComponent.reopenClass({\n positionalParams: 'names'\n});\n\nexport default MyComponent;\n```\n\nIt can then be invoked like this:\n\n```hbs\n{{my-component \"John\" \"Michael\" \"Scott\"}}\n```\nThe parameters can then be referred to by enumerating over the list:\n\n```hbs\n{{#each names as |name|}}{{name}}{{/each}}\n```",
6163
6304
  "static": 1,
6164
6305
  "access": "public",
@@ -6171,7 +6312,7 @@
6171
6312
  },
6172
6313
  {
6173
6314
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6174
- "line": 883,
6315
+ "line": 916,
6175
6316
  "description": "Called when the attributes passed into the component have been updated.\nCalled both during the initial render of a container and during a rerender.\nCan be used in place of an observer; code placed here will be executed\nevery time any attribute updates.",
6176
6317
  "itemtype": "method",
6177
6318
  "name": "didReceiveAttrs",
@@ -6183,7 +6324,7 @@
6183
6324
  },
6184
6325
  {
6185
6326
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6186
- "line": 894,
6327
+ "line": 927,
6187
6328
  "description": "Called when the attributes passed into the component have been updated.\nCalled both during the initial render of a container and during a rerender.\nCan be used in place of an observer; code placed here will be executed\nevery time any attribute updates.",
6188
6329
  "itemtype": "event",
6189
6330
  "name": "didReceiveAttrs",
@@ -6195,7 +6336,7 @@
6195
6336
  },
6196
6337
  {
6197
6338
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6198
- "line": 904,
6339
+ "line": 937,
6199
6340
  "description": "Called after a component has been rendered, both on initial render and\nin subsequent rerenders.",
6200
6341
  "itemtype": "method",
6201
6342
  "name": "didRender",
@@ -6207,7 +6348,7 @@
6207
6348
  },
6208
6349
  {
6209
6350
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6210
- "line": 913,
6351
+ "line": 946,
6211
6352
  "description": "Called after a component has been rendered, both on initial render and\nin subsequent rerenders.",
6212
6353
  "itemtype": "event",
6213
6354
  "name": "didRender",
@@ -6219,7 +6360,7 @@
6219
6360
  },
6220
6361
  {
6221
6362
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6222
- "line": 921,
6363
+ "line": 954,
6223
6364
  "description": "Called before a component has been rendered, both on initial render and\nin subsequent rerenders.",
6224
6365
  "itemtype": "method",
6225
6366
  "name": "willRender",
@@ -6231,7 +6372,7 @@
6231
6372
  },
6232
6373
  {
6233
6374
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6234
- "line": 930,
6375
+ "line": 963,
6235
6376
  "description": "Called before a component has been rendered, both on initial render and\nin subsequent rerenders.",
6236
6377
  "itemtype": "event",
6237
6378
  "name": "willRender",
@@ -6243,7 +6384,7 @@
6243
6384
  },
6244
6385
  {
6245
6386
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6246
- "line": 938,
6387
+ "line": 971,
6247
6388
  "description": "Called when the attributes passed into the component have been changed.\nCalled only during a rerender, not during an initial render.",
6248
6389
  "itemtype": "method",
6249
6390
  "name": "didUpdateAttrs",
@@ -6255,7 +6396,7 @@
6255
6396
  },
6256
6397
  {
6257
6398
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6258
- "line": 947,
6399
+ "line": 980,
6259
6400
  "description": "Called when the attributes passed into the component have been changed.\nCalled only during a rerender, not during an initial render.",
6260
6401
  "itemtype": "event",
6261
6402
  "name": "didUpdateAttrs",
@@ -6267,7 +6408,7 @@
6267
6408
  },
6268
6409
  {
6269
6410
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6270
- "line": 955,
6411
+ "line": 988,
6271
6412
  "description": "Called when the component is about to update and rerender itself.\nCalled only during a rerender, not during an initial render.",
6272
6413
  "itemtype": "method",
6273
6414
  "name": "willUpdate",
@@ -6279,7 +6420,7 @@
6279
6420
  },
6280
6421
  {
6281
6422
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6282
- "line": 964,
6423
+ "line": 997,
6283
6424
  "description": "Called when the component is about to update and rerender itself.\nCalled only during a rerender, not during an initial render.",
6284
6425
  "itemtype": "event",
6285
6426
  "name": "willUpdate",
@@ -6291,7 +6432,7 @@
6291
6432
  },
6292
6433
  {
6293
6434
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6294
- "line": 972,
6435
+ "line": 1005,
6295
6436
  "description": "Called when the component has updated and rerendered itself.\nCalled only during a rerender, not during an initial render.",
6296
6437
  "itemtype": "method",
6297
6438
  "name": "didUpdate",
@@ -6303,7 +6444,7 @@
6303
6444
  },
6304
6445
  {
6305
6446
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6306
- "line": 981,
6447
+ "line": 1014,
6307
6448
  "description": "Called when the component has updated and rerendered itself.\nCalled only during a rerender, not during an initial render.",
6308
6449
  "itemtype": "event",
6309
6450
  "name": "didUpdate",
@@ -6315,32 +6456,7 @@
6315
6456
  },
6316
6457
  {
6317
6458
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6318
- "line": 989,
6319
- "description": "Layout can be used to wrap content in a component.",
6320
- "itemtype": "property",
6321
- "name": "layout",
6322
- "type": "Function",
6323
- "access": "public",
6324
- "tagname": "",
6325
- "class": "Component",
6326
- "module": "@ember/component"
6327
- },
6328
- {
6329
- "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6330
- "line": 996,
6331
- "description": "The name of the layout to lookup if no layout is provided.\nBy default `Component` will lookup a template with this name in\n`Ember.TEMPLATES` (a shared global object).",
6332
- "itemtype": "property",
6333
- "name": "layoutName",
6334
- "type": "String",
6335
- "default": "null",
6336
- "access": "private",
6337
- "tagname": "",
6338
- "class": "Component",
6339
- "module": "@ember/component"
6340
- },
6341
- {
6342
- "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6343
- "line": 1006,
6459
+ "line": 1022,
6344
6460
  "description": "The HTML `id` of the component's element in the DOM. You can provide this\nvalue yourself but it must be unique (just as in HTML):\n\n```handlebars\n{{my-component elementId=\"a-really-cool-id\"}}\n```\n\n```handlebars\n<MyComponent @elementId=\"a-really-cool-id\" />\n```\nIf not manually set a default value will be provided by the framework.\nOnce rendered an element's `elementId` is considered immutable and you\nshould never change it. If you need to compute a dynamic value for the\n`elementId`, you should do this when the component or element is being\ninstantiated:\n\n```javascript\nexport default Component.extend({\n init() {\n this._super(...arguments);\n\n var index = this.get('index');\n this.set('elementId', `component-id${index}`);\n }\n});\n```",
6345
6461
  "itemtype": "property",
6346
6462
  "name": "elementId",
@@ -6364,7 +6480,7 @@
6364
6480
  },
6365
6481
  {
6366
6482
  "file": "packages/@ember/-internals/glimmer/lib/helper.ts",
6367
- "line": 83,
6483
+ "line": 89,
6368
6484
  "description": "Override this function when writing a class-based helper.",
6369
6485
  "itemtype": "method",
6370
6486
  "name": "compute",
@@ -6388,7 +6504,7 @@
6388
6504
  },
6389
6505
  {
6390
6506
  "file": "packages/@ember/-internals/glimmer/lib/helper.ts",
6391
- "line": 103,
6507
+ "line": 109,
6392
6508
  "description": "On a class-based helper, it may be useful to force a recomputation of that\nhelpers value. This is akin to `rerender` on a component.\n\nFor example, this component will rerender when the `currentUser` on a\nsession service changes:\n\n```app/helpers/current-user-email.js\nimport Helper from '@ember/component/helper'\nimport { service } from '@ember/service'\nimport { observer } from '@ember/object'\n\nexport default Helper.extend({\n session: service(),\n\n onNewUser: observer('session.currentUser', function() {\n this.recompute();\n }),\n\n compute() {\n return this.get('session.currentUser.email');\n }\n});\n```",
6393
6509
  "itemtype": "method",
6394
6510
  "name": "recompute",
@@ -6400,7 +6516,7 @@
6400
6516
  },
6401
6517
  {
6402
6518
  "file": "packages/@ember/-internals/glimmer/lib/helper.ts",
6403
- "line": 239,
6519
+ "line": 246,
6404
6520
  "description": "In many cases it is not necessary to use the full `Helper` class.\nThe `helper` method create pure-function helpers without instances.\nFor example:\n\n```app/helpers/format-currency.js\nimport { helper } from '@ember/component/helper';\n\nexport default helper(function([cents], {currency}) {\n return `${currency}${cents * 0.01}`;\n});\n```",
6405
6521
  "static": 1,
6406
6522
  "params": [
@@ -7098,7 +7214,7 @@
7098
7214
  {
7099
7215
  "file": "packages/@ember/-internals/metal/lib/events.ts",
7100
7216
  "line": 160,
7101
- "access": "private",
7217
+ "access": "public",
7102
7218
  "tagname": "",
7103
7219
  "itemtype": "method",
7104
7220
  "name": "hasListeners",
@@ -7205,7 +7321,7 @@
7205
7321
  {
7206
7322
  "file": "packages/@ember/-internals/metal/lib/is_blank.ts",
7207
7323
  "line": 5,
7208
- "description": "A value is blank if it is empty or a whitespace string.\n\n```javascript\nimport { isBlank } from '@ember/utils';\n\nisBlank(); // true\nisBlank(null); // true\nisBlank(undefined); // true\nisBlank(''); // true\nisBlank([]); // true\nisBlank('\\n\\t'); // true\nisBlank(' '); // true\nisBlank({}); // false\nisBlank('\\n\\t Hello'); // false\nisBlank('Hello world'); // false\nisBlank([1,2,3]); // false\n```",
7324
+ "description": "A value is blank if it is empty or a whitespace string.\n\n```javascript\nimport { isBlank } from '@ember/utils';\n\nisBlank(null); // true\nisBlank(undefined); // true\nisBlank(''); // true\nisBlank([]); // true\nisBlank('\\n\\t'); // true\nisBlank(' '); // true\nisBlank({}); // false\nisBlank('\\n\\t Hello'); // false\nisBlank('Hello world'); // false\nisBlank([1,2,3]); // false\n```",
7209
7325
  "itemtype": "method",
7210
7326
  "name": "isBlank",
7211
7327
  "static": 1,
@@ -7229,7 +7345,7 @@
7229
7345
  {
7230
7346
  "file": "packages/@ember/-internals/metal/lib/is_empty.ts",
7231
7347
  "line": 5,
7232
- "description": "Verifies that a value is `null` or `undefined`, an empty string, or an empty\narray.\n\nConstrains the rules on `isNone` by returning true for empty strings and\nempty arrays.\n\nIf the value is an object with a `size` property of type number, it is used\nto check emptiness.\n\n```javascript\nisEmpty(); // true\nisEmpty(null); // true\nisEmpty(undefined); // true\nisEmpty(''); // true\nisEmpty([]); // true\nisEmpty({ size: 0}); // true\nisEmpty({}); // false\nisEmpty('Adam Hawkins'); // false\nisEmpty([0,1,2]); // false\nisEmpty('\\n\\t'); // false\nisEmpty(' '); // false\nisEmpty({ size: 1 }) // false\nisEmpty({ size: () => 0 }) // false\n```",
7348
+ "description": "Verifies that a value is `null` or `undefined`, an empty string, or an empty\narray.\n\nConstrains the rules on `isNone` by returning true for empty strings and\nempty arrays.\n\nIf the value is an object with a `size` property of type number, it is used\nto check emptiness.\n\n```javascript\nisEmpty(null); // true\nisEmpty(undefined); // true\nisEmpty(''); // true\nisEmpty([]); // true\nisEmpty({ size: 0}); // true\nisEmpty({}); // false\nisEmpty('Adam Hawkins'); // false\nisEmpty([0,1,2]); // false\nisEmpty('\\n\\t'); // false\nisEmpty(' '); // false\nisEmpty({ size: 1 }) // false\nisEmpty({ size: () => 0 }) // false\n```",
7233
7349
  "itemtype": "method",
7234
7350
  "name": "isEmpty",
7235
7351
  "static": 1,
@@ -7252,7 +7368,7 @@
7252
7368
  {
7253
7369
  "file": "packages/@ember/-internals/metal/lib/is_none.ts",
7254
7370
  "line": 4,
7255
- "description": "Returns true if the passed value is null or undefined. This avoids errors\nfrom JSLint complaining about use of ==, which can be technically\nconfusing.\n\n```javascript\nisNone(); // true\nisNone(null); // true\nisNone(undefined); // true\nisNone(''); // false\nisNone([]); // false\nisNone(function() {}); // false\n```",
7371
+ "description": "Returns true if the passed value is null or undefined. This avoids errors\nfrom JSLint complaining about use of ==, which can be technically\nconfusing.\n\n```javascript\nisNone(null); // true\nisNone(undefined); // true\nisNone(''); // false\nisNone([]); // false\nisNone(function() {}); // false\n```",
7256
7372
  "itemtype": "method",
7257
7373
  "name": "isNone",
7258
7374
  "static": 1,
@@ -7275,7 +7391,7 @@
7275
7391
  {
7276
7392
  "file": "packages/@ember/-internals/metal/lib/is_present.ts",
7277
7393
  "line": 5,
7278
- "description": "A value is present if it not `isBlank`.\n\n```javascript\nisPresent(); // false\nisPresent(null); // false\nisPresent(undefined); // false\nisPresent(''); // false\nisPresent(' '); // false\nisPresent('\\n\\t'); // false\nisPresent([]); // false\nisPresent({ length: 0 }); // false\nisPresent(false); // true\nisPresent(true); // true\nisPresent('string'); // true\nisPresent(0); // true\nisPresent(function() {}); // true\nisPresent({}); // true\nisPresent('\\n\\t Hello'); // true\nisPresent([1, 2, 3]); // true\n```",
7394
+ "description": "A value is present if it not `isBlank`.\n\n```javascript\nisPresent(null); // false\nisPresent(undefined); // false\nisPresent(''); // false\nisPresent(' '); // false\nisPresent('\\n\\t'); // false\nisPresent([]); // false\nisPresent({ length: 0 }); // false\nisPresent(false); // true\nisPresent(true); // true\nisPresent('string'); // true\nisPresent(0); // true\nisPresent(function() {}); // true\nisPresent({}); // true\nisPresent('\\n\\t Hello'); // true\nisPresent([1, 2, 3]); // true\n```",
7279
7395
  "itemtype": "method",
7280
7396
  "name": "isPresent",
7281
7397
  "static": 1,
@@ -7689,7 +7805,7 @@
7689
7805
  },
7690
7806
  {
7691
7807
  "file": "packages/@ember/-internals/metal/lib/property_get.ts",
7692
- "line": 41,
7808
+ "line": 42,
7693
7809
  "description": "Gets the value of a property on an object. If the property is computed,\nthe function will be invoked. If the property is not defined but the\nobject implements the `unknownProperty` method then that will be invoked.\n\n```javascript\nimport { get } from '@ember/object';\nget(obj, \"name\");\n```\n\nIf you plan to run on IE8 and older browsers then you should use this\nmethod anytime you want to retrieve a property on an object that you don't\nknow for sure is private. (Properties beginning with an underscore '_'\nare considered private.)\n\nOn all newer browsers, you only need to use this method to retrieve\nproperties if the property might not be defined on the object and you want\nto respect the `unknownProperty` handler. Otherwise you can ignore this\nmethod.\n\nNote that if the object itself is `undefined`, this method will throw\nan error.",
7694
7810
  "itemtype": "method",
7695
7811
  "name": "get",
@@ -8553,7 +8669,7 @@
8553
8669
  },
8554
8670
  {
8555
8671
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
8556
- "line": 141,
8672
+ "line": 140,
8557
8673
  "description": "Similar to `transitionTo`, but instead of adding the destination to the browser's URL history,\nit replaces the entry for the current route.\nWhen the user clicks the \"back\" button in the browser, there will be fewer steps.\nThis is most commonly used to manage redirects in a way that does not cause confusing additions\nto the user's browsing history.\n\nCalling `replaceWith` from the Router service will cause default query parameter values to be included in the URL.\nThis behavior is different from calling `replaceWith` on a route.\nSee the [Router Service RFC](https://github.com/emberjs/rfcs/blob/master/text/0095-router-service.md#query-parameter-semantics) for more info.\n\nUsage example:\n\n```app/routes/application.js\nimport Route from '@ember/routing/route';\n\nexport default class extends Route {\n beforeModel() {\n if (!authorized()){\n this.replaceWith('unauthorized');\n }\n }\n});\n```",
8558
8674
  "itemtype": "method",
8559
8675
  "name": "replaceWith",
@@ -8586,7 +8702,7 @@
8586
8702
  },
8587
8703
  {
8588
8704
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
8589
- "line": 180,
8705
+ "line": 179,
8590
8706
  "description": "Generate a URL based on the supplied route name and optionally a model. The\nURL is returned as a string that can be used for any purpose.\n\nIn this example, the URL for the `author.books` route for a given author\nis copied to the clipboard.\n\n```app/templates/application.hbs\n<CopyLink @author={{hash id=\"tomster\" name=\"Tomster\"}} />\n```\n\n```app/components/copy-link.js\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\nimport { action } from '@ember/object';\n\nexport default class CopyLinkComponent extends Component {\n @service router;\n @service clipboard;\n\n @action\n copyBooksURL() {\n if (this.author) {\n const url = this.router.urlFor('author.books', this.args.author);\n this.clipboard.set(url);\n // Clipboard now has /author/tomster/books\n }\n }\n}\n```\n\nJust like with `transitionTo` and `replaceWith`, `urlFor` can also handle\nquery parameters.\n\n```app/templates/application.hbs\n<CopyLink @author={{hash id=\"tomster\" name=\"Tomster\"}} />\n```\n\n```app/components/copy-link.js\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\nimport { action } from '@ember/object';\n\nexport default class CopyLinkComponent extends Component {\n @service router;\n @service clipboard;\n\n @action\n copyOnlyEmberBooksURL() {\n if (this.author) {\n const url = this.router.urlFor('author.books', this.author, {\n queryParams: { filter: 'emberjs' }\n });\n this.clipboard.set(url);\n // Clipboard now has /author/tomster/books?filter=emberjs\n }\n }\n}\n```",
8591
8707
  "itemtype": "method",
8592
8708
  "name": "urlFor",
@@ -8619,7 +8735,7 @@
8619
8735
  },
8620
8736
  {
8621
8737
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
8622
- "line": 253,
8738
+ "line": 252,
8623
8739
  "description": "Returns `true` if `routeName/models/queryParams` is the active route, where `models` and `queryParams` are optional.\nSee [model](api/ember/release/classes/Route/methods/model?anchor=model) and\n[queryParams](/api/ember/3.7/classes/Route/properties/queryParams?anchor=queryParams) for more information about these arguments.\n\nIn the following example, `isActive` will return `true` if the current route is `/posts`.\n\n```app/components/posts.js\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\n\nexport default class extends Component {\n @service router;\n\n displayComments() {\n return this.router.isActive('posts');\n }\n});\n```\n\nThe next example includes a dynamic segment, and will return `true` if the current route is `/posts/1`,\nassuming the post has an id of 1:\n\n```app/components/posts.js\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\n\nexport default class extends Component {\n @service router;\n\n displayComments(post) {\n return this.router.isActive('posts', post.id);\n }\n});\n```\n\nWhere `post.id` is the id of a specific post, which is represented in the route as /posts/[post.id].\nIf `post.id` is equal to 1, then isActive will return true if the current route is /posts/1, and false if the route is anything else.",
8624
8740
  "itemtype": "method",
8625
8741
  "name": "isActive",
@@ -8652,7 +8768,7 @@
8652
8768
  },
8653
8769
  {
8654
8770
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
8655
- "line": 347,
8771
+ "line": 356,
8656
8772
  "description": "Takes a string URL and returns a `RouteInfo` for the leafmost route represented\nby the URL. Returns `null` if the URL is not recognized. This method expects to\nreceive the actual URL as seen by the browser including the app's `rootURL`.\n\nSee [RouteInfo](/ember/release/classes/RouteInfo) for more info.\n\nIn the following example `recognize` is used to verify if a path belongs to our\napplication before transitioning to it.\n\n```\nimport Component from '@ember/component';\nimport { service } from '@ember/service';\n\nexport default class extends Component {\n @service router;\n path = '/';\n\n click() {\n if (this.router.recognize(this.path)) {\n this.router.transitionTo(this.path);\n }\n }\n}\n```",
8657
8773
  "itemtype": "method",
8658
8774
  "name": "recognize",
@@ -8674,7 +8790,7 @@
8674
8790
  },
8675
8791
  {
8676
8792
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
8677
- "line": 388,
8793
+ "line": 397,
8678
8794
  "description": "Takes a string URL and returns a promise that resolves to a\n`RouteInfoWithAttributes` for the leafmost route represented by the URL.\nThe promise rejects if the URL is not recognized or an unhandled exception\nis encountered. This method expects to receive the actual URL as seen by\nthe browser including the app's `rootURL`.",
8679
8795
  "itemtype": "method",
8680
8796
  "name": "recognizeAndLoad",
@@ -8696,8 +8812,54 @@
8696
8812
  },
8697
8813
  {
8698
8814
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
8699
- "line": 410,
8700
- "description": "The `routeWillChange` event is fired at the beginning of any\nattempted transition with a `Transition` object as the sole\nargument. This action can be used for aborting, redirecting,\nor decorating the transition from the currently active routes.\n\nA good example is preventing navigation when a form is\nhalf-filled out:\n\n```app/routes/contact-form.js\nimport Route from '@ember/routing';\nimport { service } from '@ember/service';\n\nexport default class extends Route {\n @service router;\n\n constructor() {\n super(...arguments);\n\n this.router.on('routeWillChange', (transition) => {\n if (!transition.to.find(route => route.name === this.routeName)) {\n alert(\"Please save or cancel your changes.\");\n transition.abort();\n }\n })\n }\n}\n```\n\nThe `routeWillChange` event fires whenever a new route is chosen as the desired target of a transition. This includes `transitionTo`, `replaceWith`, all redirection for any reason including error handling, and abort. Aborting implies changing the desired target back to where you already were. Once a transition has completed, `routeDidChange` fires.",
8815
+ "line": 419,
8816
+ "description": "You can register a listener for events emitted by this service with `.on()`:\n\n```app/routes/contact-form.js\nimport Route from '@ember/routing';\nimport { service } from '@ember/service';\n\nexport default class extends Route {\n @service router;\n\n activate() {\n this.router.on('routeWillChange', (transition) => {\n if (!transition.to.find(route => route.name === this.routeName)) {\n alert(\"Please save or cancel your changes.\");\n transition.abort();\n }\n })\n }\n}\n```",
8817
+ "itemtype": "method",
8818
+ "name": "on",
8819
+ "params": [
8820
+ {
8821
+ "name": "eventName",
8822
+ "description": "",
8823
+ "type": "String"
8824
+ },
8825
+ {
8826
+ "name": "callback",
8827
+ "description": "",
8828
+ "type": "Function"
8829
+ }
8830
+ ],
8831
+ "access": "public",
8832
+ "tagname": "",
8833
+ "class": "RouterService",
8834
+ "module": "@ember/routing"
8835
+ },
8836
+ {
8837
+ "file": "packages/@ember/-internals/routing/lib/services/router.ts",
8838
+ "line": 446,
8839
+ "description": "You can unregister a listener for events emitted by this service with `.off()`:\n\n```app/routes/contact-form.js\nimport Route from '@ember/routing';\nimport { service } from '@ember/service';\n\nexport default class extends Route {\n @service router;\n\n callback = (transition) => {\n if (!transition.to.find(route => route.name === this.routeName)) {\n alert(\"Please save or cancel your changes.\");\n transition.abort();\n }\n };\n\n activate() {\n this.router.on('routeWillChange', this.callback);\n }\n\n deactivate() {\n this.router.off('routeWillChange', this.callback);\n}\n```",
8840
+ "itemtype": "method",
8841
+ "name": "off",
8842
+ "params": [
8843
+ {
8844
+ "name": "eventName",
8845
+ "description": "",
8846
+ "type": "String"
8847
+ },
8848
+ {
8849
+ "name": "callback",
8850
+ "description": "",
8851
+ "type": "Function"
8852
+ }
8853
+ ],
8854
+ "access": "public",
8855
+ "tagname": "",
8856
+ "class": "RouterService",
8857
+ "module": "@ember/routing"
8858
+ },
8859
+ {
8860
+ "file": "packages/@ember/-internals/routing/lib/services/router.ts",
8861
+ "line": 478,
8862
+ "description": "The `routeWillChange` event is fired at the beginning of any\nattempted transition with a `Transition` object as the sole\nargument. This action can be used for aborting, redirecting,\nor decorating the transition from the currently active routes.\n\nA good example is preventing navigation when a form is\nhalf-filled out:\n\n```app/routes/contact-form.js\nimport Route from '@ember/routing';\nimport { service } from '@ember/service';\n\nexport default class extends Route {\n @service router;\n\n activate() {\n this.router.on('routeWillChange', (transition) => {\n if (!transition.to.find(route => route.name === this.routeName)) {\n alert(\"Please save or cancel your changes.\");\n transition.abort();\n }\n })\n }\n}\n```\n\nThe `routeWillChange` event fires whenever a new route is chosen as the desired target of a transition. This includes `transitionTo`, `replaceWith`, all redirection for any reason including error handling, and abort. Aborting implies changing the desired target back to where you already were. Once a transition has completed, `routeDidChange` fires.",
8701
8863
  "itemtype": "event",
8702
8864
  "name": "routeWillChange",
8703
8865
  "params": [
@@ -8714,8 +8876,8 @@
8714
8876
  },
8715
8877
  {
8716
8878
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
8717
- "line": 446,
8718
- "description": "The `routeDidChange` event only fires once a transition has settled.\nThis includes aborts and error substates. Like the `routeWillChange` event\nit receives a Transition as the sole argument.\n\nA good example is sending some analytics when the route has transitioned:\n\n```app/routes/contact-form.js\nimport Route from '@ember/routing';\nimport { service } from '@ember/service';\n\nexport default class extends Route {\n @service router;\n\n constructor() {\n super(...arguments);\n\n this.router.on('routeDidChange', (transition) => {\n ga.send('pageView', {\n current: transition.to.name,\n from: transition.from.name\n });\n })\n }\n}\n```\n\n`routeDidChange` will be called after any `Route`'s\n[didTransition](/ember/release/classes/Route/events/didTransition?anchor=didTransition)\naction has been fired.\nThe updates of properties\n[currentURL](/ember/release/classes/RouterService/properties/currentURL?anchor=currentURL),\n[currentRouteName](/ember/release/classes/RouterService/properties/currentURL?anchor=currentRouteName)\nand\n[currentRoute](/ember/release/classes/RouterService/properties/currentURL?anchor=currentRoute)\nare completed at the time `routeDidChange` is called.",
8879
+ "line": 512,
8880
+ "description": "The `routeDidChange` event only fires once a transition has settled.\nThis includes aborts and error substates. Like the `routeWillChange` event\nit receives a Transition as the sole argument.\n\nA good example is sending some analytics when the route has transitioned:\n\n```app/routes/contact-form.js\nimport Route from '@ember/routing';\nimport { service } from '@ember/service';\n\nexport default class extends Route {\n @service router;\n\n activate() {\n this.router.on('routeDidChange', (transition) => {\n ga.send('pageView', {\n current: transition.to.name,\n from: transition.from.name\n });\n })\n }\n}\n```\n\n`routeDidChange` will be called after any `Route`'s\n[didTransition](/ember/release/classes/Route/events/didTransition?anchor=didTransition)\naction has been fired.\nThe updates of properties\n[currentURL](/ember/release/classes/RouterService/properties/currentURL?anchor=currentURL),\n[currentRouteName](/ember/release/classes/RouterService/properties/currentURL?anchor=currentRouteName)\nand\n[currentRoute](/ember/release/classes/RouterService/properties/currentURL?anchor=currentRoute)\nare completed at the time `routeDidChange` is called.",
8719
8881
  "itemtype": "event",
8720
8882
  "name": "routeDidChange",
8721
8883
  "params": [
@@ -8732,7 +8894,7 @@
8732
8894
  },
8733
8895
  {
8734
8896
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
8735
- "line": 489,
8897
+ "line": 553,
8736
8898
  "description": "Refreshes all currently active routes, doing a full transition.\nIf a route name is provided and refers to a currently active route,\nit will refresh only that route and its descendents.\nReturns a promise that will be resolved once the refresh is complete.\nAll resetController, beforeModel, model, afterModel, redirect, and setupController\nhooks will be called again. You will get new data from the model hook.",
8737
8899
  "itemtype": "method",
8738
8900
  "name": "refresh",
@@ -8757,7 +8919,7 @@
8757
8919
  },
8758
8920
  {
8759
8921
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
8760
- "line": 526,
8922
+ "line": 590,
8761
8923
  "description": "Name of the current route.\n\n This property represents the logical name of the route,\n which is comma separated.\n For the following router:\n\n ```app/router.js\n Router.map(function() {\n this.route('about');\n this.route('blog', function () {\n this.route('post', { path: ':post_id' });\n });\n });\n ```\n\n It will return:\n\n * `index` when you visit `/`\n * `about` when you visit `/about`\n * `blog.index` when you visit `/blog`\n * `blog.post` when you visit `/blog/some-post-id`",
8762
8924
  "itemtype": "property",
8763
8925
  "name": "currentRouteName",
@@ -8769,7 +8931,7 @@
8769
8931
  },
8770
8932
  {
8771
8933
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
8772
- "line": 556,
8934
+ "line": 620,
8773
8935
  "description": "Current URL for the application.\n\n This property represents the URL path for this route.\n For the following router:\n\n ```app/router.js\n Router.map(function() {\n this.route('about');\n this.route('blog', function () {\n this.route('post', { path: ':post_id' });\n });\n });\n ```\n\n It will return:\n\n * `/` when you visit `/`\n * `/about` when you visit `/about`\n * `/blog` when you visit `/blog`\n * `/blog/some-post-id` when you visit `/blog/some-post-id`",
8774
8936
  "itemtype": "property",
8775
8937
  "name": "currentURL",
@@ -8781,7 +8943,7 @@
8781
8943
  },
8782
8944
  {
8783
8945
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
8784
- "line": 585,
8946
+ "line": 649,
8785
8947
  "description": "The `location` property returns what implementation of the `location` API\nyour application is using, which determines what type of URL is being used.\n\nSee [Location](/ember/release/classes/Location) for more information.\n\nTo force a particular `location` API implementation to be used in your\napplication you can set a location type on your `config/environment`.\nFor example, to set the `history` type:\n\n```config/environment.js\n'use strict';\n\nmodule.exports = function(environment) {\n let ENV = {\n modulePrefix: 'router-service',\n environment,\n rootURL: '/',\n locationType: 'history',\n ...\n }\n}\n```\n\nThe following location types are available by default:\n`auto`, `hash`, `history`, `none`.\n\nSee [HashLocation](/ember/release/classes/HashLocation).\nSee [HistoryLocation](/ember/release/classes/HistoryLocation).\nSee [NoneLocation](/ember/release/classes/NoneLocation).\nSee [AutoLocation](/ember/release/classes/AutoLocation).",
8786
8948
  "itemtype": "property",
8787
8949
  "name": "location",
@@ -8796,7 +8958,7 @@
8796
8958
  },
8797
8959
  {
8798
8960
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
8799
- "line": 625,
8961
+ "line": 689,
8800
8962
  "description": "The `rootURL` property represents the URL of the root of\nthe application, '/' by default.\nThis prefix is assumed on all routes defined on this app.\n\nIf you change the `rootURL` in your environment configuration\nlike so:\n\n```config/environment.js\n'use strict';\n\nmodule.exports = function(environment) {\n let ENV = {\n modulePrefix: 'router-service',\n environment,\n rootURL: '/my-root',\n …\n }\n]\n```\n\nThis property will return `/my-root`.",
8801
8963
  "itemtype": "property",
8802
8964
  "name": "rootURL",
@@ -8808,7 +8970,7 @@
8808
8970
  },
8809
8971
  {
8810
8972
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
8811
- "line": 655,
8973
+ "line": 719,
8812
8974
  "description": "The `currentRoute` property contains metadata about the current leaf route.\nIt returns a `RouteInfo` object that has information like the route name,\nparams, query params and more.\n\nSee [RouteInfo](/ember/release/classes/RouteInfo) for more info.\n\nThis property is guaranteed to change whenever a route transition\nhappens (even when that transition only changes parameters\nand doesn't change the active route).\n\nUsage example:\n```app/components/header.js\n import Component from '@glimmer/component';\n import { service } from '@ember/service';\n import { notEmpty } from '@ember/object/computed';\n\n export default class extends Component {\n @service router;\n\n @notEmpty('router.currentRoute.child') isChildRoute;\n });\n```",
8813
8975
  "itemtype": "property",
8814
8976
  "name": "currentRoute",
@@ -10128,7 +10290,7 @@
10128
10290
  },
10129
10291
  {
10130
10292
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10131
- "line": 148,
10293
+ "line": 149,
10132
10294
  "description": "Represents the URL of the root of the application, often '/'. This prefix is\n assumed on all routes defined on this router.",
10133
10295
  "itemtype": "property",
10134
10296
  "name": "rootURL",
@@ -10140,7 +10302,7 @@
10140
10302
  },
10141
10303
  {
10142
10304
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10143
- "line": 159,
10305
+ "line": 160,
10144
10306
  "description": "The `location` property determines the type of URL's that your\n application will use.\n\n The following location types are currently available:\n\n * `history` - use the browser's history API to make the URLs look just like any standard URL\n * `hash` - use `#` to separate the server part of the URL from the Ember part: `/blog/#/posts/new`\n * `none` - do not store the Ember URL in the actual browser URL (mainly used for testing)\n * `auto` - use the best option based on browser capabilities: `history` if possible, then `hash` if possible, otherwise `none`\n\n This value is defaulted to `auto` by the `locationType` setting of `/config/environment.js`",
10145
10307
  "itemtype": "property",
10146
10308
  "name": "location",
@@ -10155,7 +10317,7 @@
10155
10317
  },
10156
10318
  {
10157
10319
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10158
- "line": 217,
10320
+ "line": 218,
10159
10321
  "description": "The `Router.map` function allows you to define mappings from URLs to routes\nin your application. These mappings are defined within the\nsupplied callback function using `this.route`.\n\nThe first parameter is the name of the route which is used by default as the\npath name as well.\n\nThe second parameter is the optional options hash. Available options are:\n\n * `path`: allows you to provide your own path as well as mark dynamic\n segments.\n * `resetNamespace`: false by default; when nesting routes, ember will\n combine the route names to form the fully-qualified route name, which is\n used with `{{link-to}}` or manually transitioning to routes. Setting\n `resetNamespace: true` will cause the route not to inherit from its\n parent route's names. This is handy for preventing extremely long route names.\n Keep in mind that the actual URL path behavior is still retained.\n\nThe third parameter is a function, which can be used to nest routes.\nNested routes, by default, will have the parent route tree's route name and\npath prepended to it's own.\n\n```app/router.js\nRouter.map(function(){\n this.route('post', { path: '/post/:post_id' }, function() {\n this.route('edit');\n this.route('comments', { resetNamespace: true }, function() {\n this.route('new');\n });\n });\n});\n```",
10160
10322
  "itemtype": "method",
10161
10323
  "name": "map",
@@ -10172,7 +10334,7 @@
10172
10334
  },
10173
10335
  {
10174
10336
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10175
- "line": 546,
10337
+ "line": 547,
10176
10338
  "description": "Initializes the current router instance and sets up the change handling\nevent listeners used by the instances `location` implementation.\n\nA property named `initialURL` will be used to determine the initial URL.\nIf no value is found `/` will be used.",
10177
10339
  "itemtype": "method",
10178
10340
  "name": "startRouting",
@@ -10183,7 +10345,7 @@
10183
10345
  },
10184
10346
  {
10185
10347
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10186
- "line": 669,
10348
+ "line": 670,
10187
10349
  "description": "Transition the application into another route. The route may\nbe either a single route or route path:",
10188
10350
  "itemtype": "method",
10189
10351
  "name": "transitionTo",
@@ -10217,7 +10379,7 @@
10217
10379
  },
10218
10380
  {
10219
10381
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10220
- "line": 714,
10382
+ "line": 715,
10221
10383
  "description": "Similar to `transitionTo`, but instead of adding the destination to the browser's URL history,\nit replaces the entry for the current route.\nWhen the user clicks the \"back\" button in the browser, there will be fewer steps.\nThis is most commonly used to manage redirects in a way that does not cause confusing additions\nto the user's browsing history.",
10222
10384
  "itemtype": "method",
10223
10385
  "name": "replaceWith",
@@ -10251,7 +10413,7 @@
10251
10413
  },
10252
10414
  {
10253
10415
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10254
- "line": 741,
10416
+ "line": 742,
10255
10417
  "description": "Determines if the supplied route is currently active.",
10256
10418
  "itemtype": "method",
10257
10419
  "name": "isActive",
@@ -10272,7 +10434,7 @@
10272
10434
  },
10273
10435
  {
10274
10436
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10275
- "line": 753,
10437
+ "line": 754,
10276
10438
  "description": "An alternative form of `isActive` that doesn't require\nmanual concatenation of the arguments into a single\narray.",
10277
10439
  "itemtype": "method",
10278
10440
  "name": "isActiveIntent",
@@ -10302,7 +10464,7 @@
10302
10464
  },
10303
10465
  {
10304
10466
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10305
- "line": 775,
10467
+ "line": 776,
10306
10468
  "description": "Does this router instance have the given route.",
10307
10469
  "itemtype": "method",
10308
10470
  "name": "hasRoute",
@@ -10317,7 +10479,7 @@
10317
10479
  },
10318
10480
  {
10319
10481
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10320
- "line": 786,
10482
+ "line": 787,
10321
10483
  "description": "Resets the state of the router by clearing the current route\nhandlers and deactivating them.",
10322
10484
  "access": "private",
10323
10485
  "tagname": "",
@@ -10328,7 +10490,7 @@
10328
10490
  },
10329
10491
  {
10330
10492
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10331
- "line": 932,
10493
+ "line": 935,
10332
10494
  "description": "Serializes the given query params according to their QP meta information.",
10333
10495
  "access": "private",
10334
10496
  "tagname": "",
@@ -10355,7 +10517,7 @@
10355
10517
  },
10356
10518
  {
10357
10519
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10358
- "line": 962,
10520
+ "line": 965,
10359
10521
  "description": "Serializes the value of a query parameter based on a type",
10360
10522
  "access": "private",
10361
10523
  "tagname": "",
@@ -10378,7 +10540,7 @@
10378
10540
  },
10379
10541
  {
10380
10542
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10381
- "line": 980,
10543
+ "line": 983,
10382
10544
  "description": "Deserializes the given query params according to their QP meta information.",
10383
10545
  "access": "private",
10384
10546
  "tagname": "",
@@ -10405,7 +10567,7 @@
10405
10567
  },
10406
10568
  {
10407
10569
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10408
- "line": 1008,
10570
+ "line": 1011,
10409
10571
  "description": "Deserializes the value of a query parameter based on a default type",
10410
10572
  "access": "private",
10411
10573
  "tagname": "",
@@ -10428,7 +10590,7 @@
10428
10590
  },
10429
10591
  {
10430
10592
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10431
- "line": 1029,
10593
+ "line": 1032,
10432
10594
  "description": "Removes (prunes) any query params with default values from the given QP\nobject. Default values are determined from the QP meta information per key.",
10433
10595
  "access": "private",
10434
10596
  "tagname": "",
@@ -10455,7 +10617,7 @@
10455
10617
  },
10456
10618
  {
10457
10619
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10458
- "line": 1115,
10620
+ "line": 1113,
10459
10621
  "description": "Prepares the query params for a URL or Transition. Restores any undefined QP\nkeys/values, serializes all values, and then prunes any default values.",
10460
10622
  "access": "private",
10461
10623
  "tagname": "",
@@ -10492,7 +10654,7 @@
10492
10654
  },
10493
10655
  {
10494
10656
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10495
- "line": 1142,
10657
+ "line": 1140,
10496
10658
  "description": "Returns the meta information for the query params of a given route. This\nwill be overridden to allow support for lazy routes.",
10497
10659
  "access": "private",
10498
10660
  "tagname": "",
@@ -10514,7 +10676,7 @@
10514
10676
  },
10515
10677
  {
10516
10678
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10517
- "line": 1156,
10679
+ "line": 1154,
10518
10680
  "description": "Returns a merged query params meta object for a given set of routeInfos.\nUseful for knowing what query params are available for a given route hierarchy.",
10519
10681
  "access": "private",
10520
10682
  "tagname": "",
@@ -10536,7 +10698,7 @@
10536
10698
  },
10537
10699
  {
10538
10700
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10539
- "line": 1218,
10701
+ "line": 1216,
10540
10702
  "description": "Maps all query param keys to their fully scoped property name of the form\n`controllerName:propName`.",
10541
10703
  "access": "private",
10542
10704
  "tagname": "",
@@ -10568,7 +10730,7 @@
10568
10730
  },
10569
10731
  {
10570
10732
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10571
- "line": 1256,
10733
+ "line": 1254,
10572
10734
  "description": "Hydrates (adds/restores) any query params that have pre-existing values into\nthe given queryParams hash. This is what allows query params to be \"sticky\"\nand restore their last known values for their scope.",
10573
10735
  "access": "private",
10574
10736
  "tagname": "",
@@ -10595,7 +10757,7 @@
10595
10757
  },
10596
10758
  {
10597
10759
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10598
- "line": 1427,
10760
+ "line": 1425,
10599
10761
  "description": "Handles updating the paths and notifying any listeners of the URL\nchange.\n\nTriggers the router level `didTransition` hook.\n\nFor example, to notify google analytics when the route changes,\nyou could use this hook. (Note: requires also including GA scripts, etc.)\n\n```javascript\nimport config from './config/environment';\nimport EmberRouter from '@ember/routing/router';\nimport { service } from '@ember/service';\n\nlet Router = EmberRouter.extend({\n location: config.locationType,\n\n router: service(),\n\n didTransition: function() {\n this._super(...arguments);\n\n ga('send', 'pageview', {\n page: this.router.currentURL,\n title: this.router.currentRouteName,\n });\n }\n});\n```",
10600
10762
  "itemtype": "method",
10601
10763
  "name": "didTransition",
@@ -10607,7 +10769,7 @@
10607
10769
  },
10608
10770
  {
10609
10771
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10610
- "line": 1464,
10772
+ "line": 1462,
10611
10773
  "description": "Handles notifying any listeners of an impending URL\nchange.\n\nTriggers the router level `willTransition` hook.",
10612
10774
  "itemtype": "method",
10613
10775
  "name": "willTransition",
@@ -10619,7 +10781,7 @@
10619
10781
  },
10620
10782
  {
10621
10783
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10622
- "line": 1477,
10784
+ "line": 1475,
10623
10785
  "description": "Represents the current URL.",
10624
10786
  "itemtype": "property",
10625
10787
  "name": "url",
@@ -10631,7 +10793,7 @@
10631
10793
  },
10632
10794
  {
10633
10795
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10634
- "line": 1635,
10796
+ "line": 1633,
10635
10797
  "description": "Finds the name of the substate route if it exists for the given route. A\nsubstate route is of the form `route_state`, such as `foo_loading`.",
10636
10798
  "access": "private",
10637
10799
  "tagname": "",
@@ -10656,7 +10818,7 @@
10656
10818
  },
10657
10819
  {
10658
10820
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10659
- "line": 1656,
10821
+ "line": 1654,
10660
10822
  "description": "Finds the name of the state route if it exists for the given route. A state\nroute is of the form `route.state`, such as `foo.loading`. Properly Handles\n`application` named routes.",
10661
10823
  "access": "private",
10662
10824
  "tagname": "",
@@ -10681,7 +10843,7 @@
10681
10843
  },
10682
10844
  {
10683
10845
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10684
- "line": 1678,
10846
+ "line": 1676,
10685
10847
  "description": "Determines whether or not a route has been defined by checking that the route\nis in the Router's map and the owner has a registration for that route.",
10686
10848
  "access": "private",
10687
10849
  "tagname": "",
@@ -10974,6 +11136,19 @@
10974
11136
  "class": "Transition",
10975
11137
  "module": "@ember/routing"
10976
11138
  },
11139
+ {
11140
+ "file": "packages/@ember/-internals/runtime/lib/mixins/-proxy.d.ts",
11141
+ "line": 6,
11142
+ "description": "The object whose properties will be forwarded.",
11143
+ "itemtype": "property",
11144
+ "name": "content",
11145
+ "type": "{unknown}",
11146
+ "default": "null",
11147
+ "access": "public",
11148
+ "tagname": "",
11149
+ "class": "Ember.ProxyMixin",
11150
+ "module": "@ember/routing"
11151
+ },
10977
11152
  {
10978
11153
  "file": "packages/@ember/-internals/runtime/lib/mixins/-proxy.js",
10979
11154
  "line": 64,
@@ -12031,7 +12206,7 @@
12031
12206
  {
12032
12207
  "name": "objects",
12033
12208
  "description": "the objects to add",
12034
- "type": "Enumberable"
12209
+ "type": "Enumerable"
12035
12210
  }
12036
12211
  ],
12037
12212
  "return": {
@@ -12317,28 +12492,28 @@
12317
12492
  },
12318
12493
  {
12319
12494
  "file": "packages/@ember/-internals/runtime/lib/mixins/evented.d.ts",
12320
- "line": 16,
12495
+ "line": 23,
12321
12496
  "description": "Subscribes a function to a named event and then cancels the subscription\nafter the first time the event is triggered. It is good to use ``one`` when\nyou only care about the first time an event has taken place.",
12322
12497
  "class": "Evented",
12323
12498
  "module": "@ember/enumerable"
12324
12499
  },
12325
12500
  {
12326
12501
  "file": "packages/@ember/-internals/runtime/lib/mixins/evented.d.ts",
12327
- "line": 27,
12502
+ "line": 34,
12328
12503
  "description": "Triggers a named event for the object. Any additional arguments\nwill be passed as parameters to the functions that are subscribed to the\nevent.",
12329
12504
  "class": "Evented",
12330
12505
  "module": "@ember/enumerable"
12331
12506
  },
12332
12507
  {
12333
12508
  "file": "packages/@ember/-internals/runtime/lib/mixins/evented.d.ts",
12334
- "line": 33,
12509
+ "line": 40,
12335
12510
  "description": "Cancels subscription for given name, target, and method.",
12336
12511
  "class": "Evented",
12337
12512
  "module": "@ember/enumerable"
12338
12513
  },
12339
12514
  {
12340
12515
  "file": "packages/@ember/-internals/runtime/lib/mixins/evented.d.ts",
12341
- "line": 42,
12516
+ "line": 49,
12342
12517
  "description": "Checks to see if object has any subscriptions for named event.",
12343
12518
  "class": "Evented",
12344
12519
  "module": "@ember/enumerable"
@@ -13408,13 +13583,25 @@
13408
13583
  },
13409
13584
  {
13410
13585
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13411
- "line": 21,
13586
+ "line": 14,
13412
13587
  "class": "CoreObject",
13413
13588
  "module": "@ember/array"
13414
13589
  },
13415
13590
  {
13416
13591
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13417
- "line": 27,
13592
+ "line": 17,
13593
+ "class": "CoreObject",
13594
+ "module": "@ember/array"
13595
+ },
13596
+ {
13597
+ "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13598
+ "line": 22,
13599
+ "class": "CoreObject",
13600
+ "module": "@ember/array"
13601
+ },
13602
+ {
13603
+ "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13604
+ "line": 24,
13418
13605
  "class": "CoreObject",
13419
13606
  "module": "@ember/array"
13420
13607
  },
@@ -13427,26 +13614,56 @@
13427
13614
  {
13428
13615
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13429
13616
  "line": 33,
13617
+ "class": "CoreObject",
13618
+ "module": "@ember/array"
13619
+ },
13620
+ {
13621
+ "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13622
+ "line": 36,
13623
+ "class": "CoreObject",
13624
+ "module": "@ember/array"
13625
+ },
13626
+ {
13627
+ "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13628
+ "line": 44,
13629
+ "class": "CoreObject",
13630
+ "module": "@ember/array"
13631
+ },
13632
+ {
13633
+ "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13634
+ "line": 50,
13635
+ "class": "CoreObject",
13636
+ "module": "@ember/array"
13637
+ },
13638
+ {
13639
+ "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13640
+ "line": 53,
13641
+ "class": "CoreObject",
13642
+ "module": "@ember/array"
13643
+ },
13644
+ {
13645
+ "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13646
+ "line": 56,
13430
13647
  "description": "CoreObject constructor takes owner.",
13431
13648
  "class": "CoreObject",
13432
13649
  "module": "@ember/array"
13433
13650
  },
13434
13651
  {
13435
13652
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13436
- "line": 38,
13653
+ "line": 61,
13437
13654
  "class": "CoreObject",
13438
13655
  "module": "@ember/array"
13439
13656
  },
13440
13657
  {
13441
13658
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13442
- "line": 41,
13659
+ "line": 64,
13443
13660
  "description": "An overridable method called when objects are instantiated. By default,\ndoes nothing unless it is overridden during class definition.",
13444
13661
  "class": "CoreObject",
13445
13662
  "module": "@ember/array"
13446
13663
  },
13447
13664
  {
13448
13665
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13449
- "line": 47,
13666
+ "line": 70,
13450
13667
  "description": "Defines the properties that will be concatenated from the superclass (instead of overridden).",
13451
13668
  "default": "null",
13452
13669
  "class": "CoreObject",
@@ -13454,7 +13671,7 @@
13454
13671
  },
13455
13672
  {
13456
13673
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13457
- "line": 53,
13674
+ "line": 76,
13458
13675
  "description": "Destroyed object property flag. If this property is true the observers and bindings were\nalready removed by the effect of calling the destroy() method.",
13459
13676
  "default": "false",
13460
13677
  "class": "CoreObject",
@@ -13462,7 +13679,7 @@
13462
13679
  },
13463
13680
  {
13464
13681
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13465
- "line": 59,
13682
+ "line": 82,
13466
13683
  "description": "Destruction scheduled flag. The destroy() method has been called. The object stays intact\nuntil the end of the run loop at which point the isDestroyed flag is set.",
13467
13684
  "default": "false",
13468
13685
  "class": "CoreObject",
@@ -13470,7 +13687,7 @@
13470
13687
  },
13471
13688
  {
13472
13689
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13473
- "line": 66,
13690
+ "line": 90,
13474
13691
  "description": "Destroys an object by setting the `isDestroyed` flag and removing its\nmetadata, which effectively destroys observers and bindings.\nIf you try to set a property on a destroyed object, an exception will be\nraised.\nNote that destruction is scheduled for the end of the run loop and does not\nhappen immediately. It will set an isDestroying flag immediately.",
13475
13692
  "return": {
13476
13693
  "description": "receiver"
@@ -13480,14 +13697,14 @@
13480
13697
  },
13481
13698
  {
13482
13699
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13483
- "line": 77,
13700
+ "line": 101,
13484
13701
  "description": "Override to implement teardown.",
13485
13702
  "class": "CoreObject",
13486
13703
  "module": "@ember/array"
13487
13704
  },
13488
13705
  {
13489
13706
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13490
- "line": 82,
13707
+ "line": 106,
13491
13708
  "description": "Returns a string representation which attempts to provide more information than Javascript's toString\ntypically does, in a generic way for all Ember objects (e.g., \"<App.Person:ember1024>\").",
13492
13709
  "return": {
13493
13710
  "description": "string representation"
@@ -13497,19 +13714,19 @@
13497
13714
  },
13498
13715
  {
13499
13716
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13500
- "line": 94,
13717
+ "line": 118,
13501
13718
  "class": "CoreObject",
13502
13719
  "module": "@ember/array"
13503
13720
  },
13504
13721
  {
13505
13722
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13506
- "line": 100,
13723
+ "line": 124,
13507
13724
  "class": "CoreObject",
13508
13725
  "module": "@ember/array"
13509
13726
  },
13510
13727
  {
13511
13728
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13512
- "line": 103,
13729
+ "line": 127,
13513
13730
  "description": "Iterate over each computed property for the class, passing its name and any\nassociated metadata (see metaForProperty) to the callback.",
13514
13731
  "internal": "",
13515
13732
  "class": "CoreObject",
@@ -13517,7 +13734,7 @@
13517
13734
  },
13518
13735
  {
13519
13736
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13520
- "line": 109,
13737
+ "line": 133,
13521
13738
  "description": "Returns the original hash that was passed to meta().",
13522
13739
  "params": [
13523
13740
  {
@@ -13531,13 +13748,19 @@
13531
13748
  },
13532
13749
  {
13533
13750
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13534
- "line": 116,
13751
+ "line": 140,
13535
13752
  "class": "CoreObject",
13536
13753
  "module": "@ember/array"
13537
13754
  },
13538
13755
  {
13539
13756
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13540
- "line": 119,
13757
+ "line": 143,
13758
+ "class": "CoreObject",
13759
+ "module": "@ember/array"
13760
+ },
13761
+ {
13762
+ "file": "packages/@ember/-internals/runtime/lib/system/core_object.d.ts",
13763
+ "line": 146,
13541
13764
  "class": "CoreObject",
13542
13765
  "module": "@ember/array"
13543
13766
  },
@@ -13791,8 +14014,8 @@
13791
14014
  "module": "@ember/application"
13792
14015
  },
13793
14016
  {
13794
- "file": "packages/@ember/-internals/runtime/lib/compare.js",
13795
- "line": 44,
14017
+ "file": "packages/@ember/-internals/runtime/lib/compare.ts",
14018
+ "line": 48,
13796
14019
  "description": "Compares two javascript values and returns:\n\n - -1 if the first is smaller than the second,\n - 0 if both are equal,\n - 1 if the first is greater than the second.\n\n ```javascript\n import { compare } from '@ember/utils';\n\n compare('hello', 'hello'); // 0\n compare('abc', 'dfg'); // -1\n compare(2, 1); // 1\n ```\n\nIf the types of the two objects are different precedence occurs in the\nfollowing order, with types earlier in the list considered `<` types\nlater in the list:\n\n - undefined\n - null\n - boolean\n - number\n - string\n - array\n - object\n - instance\n - function\n - class\n - date\n\n ```javascript\n import { compare } from '@ember/utils';\n\n compare('hello', 50); // 1\n compare(50, 'hello'); // -1\n ```",
13797
14020
  "itemtype": "method",
13798
14021
  "name": "compare",
@@ -13819,7 +14042,7 @@
13819
14042
  "module": "@ember/utils"
13820
14043
  },
13821
14044
  {
13822
- "file": "packages/@ember/-internals/runtime/lib/is-equal.js",
14045
+ "file": "packages/@ember/-internals/runtime/lib/is-equal.ts",
13823
14046
  "line": 4,
13824
14047
  "description": "Compares two objects, returning true if they are equal.\n\n```javascript\nimport { isEqual } from '@ember/utils';\n\nisEqual('hello', 'hello'); // true\nisEqual(1, 2); // false\n```\n\n`isEqual` is a more specific comparison than a triple equal comparison.\nIt will call the `isEqual` instance method on the objects being\ncompared, allowing finer control over when objects should be considered\nequal to each other.\n\n```javascript\nimport { isEqual } from '@ember/utils';\nimport EmberObject from '@ember/object';\n\nlet Person = EmberObject.extend({\n isEqual(other) { return this.ssn == other.ssn; }\n});\n\nlet personA = Person.create({name: 'Muhammad Ali', ssn: '123-45-6789'});\nlet personB = Person.create({name: 'Cassius Clay', ssn: '123-45-6789'});\n\nisEqual(personA, personB); // true\n```\n\nDue to the expense of array comparisons, collections will never be equal to\neach other even if each of their items are equal to each other.\n\n```javascript\nimport { isEqual } from '@ember/utils';\n\nisEqual([4, 2], [4, 2]); // false\n```",
13825
14048
  "itemtype": "method",
@@ -13847,8 +14070,8 @@
13847
14070
  "module": "@ember/utils"
13848
14071
  },
13849
14072
  {
13850
- "file": "packages/@ember/-internals/runtime/lib/type-of.js",
13851
- "line": 24,
14073
+ "file": "packages/@ember/-internals/runtime/lib/type-of.ts",
14074
+ "line": 40,
13852
14075
  "description": "Returns a consistent type for the passed object.\n\nUse this instead of the built-in `typeof` to get the type of an item.\nIt will return the same result across all browsers and includes a bit\nmore detail. Here is what will be returned:\n\n | Return Value | Meaning |\n |---------------|------------------------------------------------------|\n | 'string' | String primitive or String object. |\n | 'number' | Number primitive or Number object. |\n | 'boolean' | Boolean primitive or Boolean object. |\n | 'null' | Null value |\n | 'undefined' | Undefined value |\n | 'function' | A function |\n | 'array' | An instance of Array |\n | 'regexp' | An instance of RegExp |\n | 'date' | An instance of Date |\n | 'filelist' | An instance of FileList |\n | 'class' | An Ember class (created using EmberObject.extend()) |\n | 'instance' | An Ember object instance |\n | 'error' | An instance of the Error object |\n | 'object' | A JavaScript object not inheriting from EmberObject |\n\nExamples:\n\n```javascript\nimport { A } from '@ember/array';\nimport { typeOf } from '@ember/utils';\nimport EmberObject from '@ember/object';\n\ntypeOf(); // 'undefined'\ntypeOf(null); // 'null'\ntypeOf(undefined); // 'undefined'\ntypeOf('michael'); // 'string'\ntypeOf(new String('michael')); // 'string'\ntypeOf(101); // 'number'\ntypeOf(new Number(101)); // 'number'\ntypeOf(true); // 'boolean'\ntypeOf(new Boolean(true)); // 'boolean'\ntypeOf(A); // 'function'\ntypeOf(A()); // 'array'\ntypeOf([1, 2, 90]); // 'array'\ntypeOf(/abc/); // 'regexp'\ntypeOf(new Date()); // 'date'\ntypeOf(event.target.files); // 'filelist'\ntypeOf(EmberObject.extend()); // 'class'\ntypeOf(EmberObject.create()); // 'instance'\ntypeOf(new Error('teamocil')); // 'error'\n\n// 'normal' JavaScript object\ntypeOf({ a: 'b' }); // 'object'\n```",
13853
14076
  "itemtype": "method",
13854
14077
  "name": "typeOf",
@@ -14405,6 +14628,12 @@
14405
14628
  "class": "Ember.EventDispatcher",
14406
14629
  "module": "ember"
14407
14630
  },
14631
+ {
14632
+ "file": "packages/@ember/-internals/views/lib/system/event_dispatcher.d.ts",
14633
+ "line": 8,
14634
+ "class": "Ember.EventDispatcher",
14635
+ "module": "ember"
14636
+ },
14408
14637
  {
14409
14638
  "file": "packages/@ember/-internals/views/lib/system/event_dispatcher.js",
14410
14639
  "line": 27,
@@ -14518,7 +14747,7 @@
14518
14747
  },
14519
14748
  {
14520
14749
  "file": "packages/@ember/-internals/views/lib/system/utils.ts",
14521
- "line": 41,
14750
+ "line": 35,
14522
14751
  "access": "private",
14523
14752
  "tagname": "",
14524
14753
  "itemtype": "method",
@@ -14535,7 +14764,7 @@
14535
14764
  },
14536
14765
  {
14537
14766
  "file": "packages/@ember/-internals/views/lib/system/utils.ts",
14538
- "line": 63,
14767
+ "line": 57,
14539
14768
  "access": "private",
14540
14769
  "tagname": "",
14541
14770
  "itemtype": "method",
@@ -14552,7 +14781,7 @@
14552
14781
  },
14553
14782
  {
14554
14783
  "file": "packages/@ember/-internals/views/lib/system/utils.ts",
14555
- "line": 83,
14784
+ "line": 77,
14556
14785
  "access": "private",
14557
14786
  "tagname": "",
14558
14787
  "itemtype": "method",
@@ -14569,7 +14798,7 @@
14569
14798
  },
14570
14799
  {
14571
14800
  "file": "packages/@ember/-internals/views/lib/system/utils.ts",
14572
- "line": 115,
14801
+ "line": 109,
14573
14802
  "access": "private",
14574
14803
  "tagname": "",
14575
14804
  "itemtype": "method",
@@ -14586,7 +14815,7 @@
14586
14815
  },
14587
14816
  {
14588
14817
  "file": "packages/@ember/-internals/views/lib/system/utils.ts",
14589
- "line": 158,
14818
+ "line": 152,
14590
14819
  "access": "private",
14591
14820
  "tagname": "",
14592
14821
  "itemtype": "method",
@@ -14603,7 +14832,7 @@
14603
14832
  },
14604
14833
  {
14605
14834
  "file": "packages/@ember/-internals/views/lib/system/utils.ts",
14606
- "line": 167,
14835
+ "line": 161,
14607
14836
  "access": "private",
14608
14837
  "tagname": "",
14609
14838
  "itemtype": "method",
@@ -14620,7 +14849,7 @@
14620
14849
  },
14621
14850
  {
14622
14851
  "file": "packages/@ember/-internals/views/lib/system/utils.ts",
14623
- "line": 182,
14852
+ "line": 176,
14624
14853
  "description": "`getViewClientRects` provides information about the position of the border\nbox edges of a view relative to the viewport.\n\nIt is only intended to be used by development tools like the Ember Inspector\nand may not work on older browsers.",
14625
14854
  "access": "private",
14626
14855
  "tagname": "",
@@ -14638,7 +14867,7 @@
14638
14867
  },
14639
14868
  {
14640
14869
  "file": "packages/@ember/-internals/views/lib/system/utils.ts",
14641
- "line": 198,
14870
+ "line": 192,
14642
14871
  "description": "`getViewBoundingClientRect` provides information about the position of the\nbounding border box edges of a view relative to the viewport.\n\nIt is only intended to be used by development tools like the Ember Inspector\nand may not work on older browsers.",
14643
14872
  "access": "private",
14644
14873
  "tagname": "",
@@ -14656,7 +14885,7 @@
14656
14885
  },
14657
14886
  {
14658
14887
  "file": "packages/@ember/-internals/views/lib/system/utils.ts",
14659
- "line": 214,
14888
+ "line": 208,
14660
14889
  "description": "Determines if the element matches the specified selector.",
14661
14890
  "access": "private",
14662
14891
  "tagname": "",
@@ -14678,8 +14907,8 @@
14678
14907
  "module": "ember"
14679
14908
  },
14680
14909
  {
14681
- "file": "packages/@ember/-internals/views/lib/views/core_view.js",
14682
- "line": 34,
14910
+ "file": "packages/@ember/-internals/views/lib/views/core_view.ts",
14911
+ "line": 39,
14683
14912
  "description": "If the view is currently inserted into the DOM of a parent view, this\nproperty will point to the parent of the view.",
14684
14913
  "itemtype": "property",
14685
14914
  "name": "parentView",
@@ -14692,8 +14921,8 @@
14692
14921
  "namespace": "Ember"
14693
14922
  },
14694
14923
  {
14695
- "file": "packages/@ember/-internals/views/lib/views/core_view.js",
14696
- "line": 52,
14924
+ "file": "packages/@ember/-internals/views/lib/views/core_view.ts",
14925
+ "line": 57,
14697
14926
  "description": "Override the default event firing from `Evented` to\nalso call methods with the given name.",
14698
14927
  "itemtype": "method",
14699
14928
  "name": "trigger",
@@ -14710,6 +14939,13 @@
14710
14939
  "module": "ember",
14711
14940
  "namespace": "Ember"
14712
14941
  },
14942
+ {
14943
+ "file": "packages/@ember/application/lib/application.d.ts",
14944
+ "line": 17,
14945
+ "class": "Application",
14946
+ "module": "ember",
14947
+ "namespace": "Ember"
14948
+ },
14713
14949
  {
14714
14950
  "file": "packages/@ember/application/lib/application.js",
14715
14951
  "line": 185,
@@ -15307,7 +15543,7 @@
15307
15543
  },
15308
15544
  {
15309
15545
  "file": "packages/@ember/canary-features/index.ts",
15310
- "line": 32,
15546
+ "line": 33,
15311
15547
  "description": "Determine whether the specified `feature` is enabled. Used by Ember's\nbuild tools to exclude experimental features from beta/stable builds.\n\nYou can define the following configuration options:\n\n* `EmberENV.ENABLE_OPTIONAL_FEATURES` - enable any features that have not been explicitly\n enabled/disabled.",
15312
15548
  "itemtype": "method",
15313
15549
  "name": "isEnabled",
@@ -15450,7 +15686,7 @@
15450
15686
  },
15451
15687
  {
15452
15688
  "file": "packages/@ember/debug/lib/deprecate.ts",
15453
- "line": 177,
15689
+ "line": 181,
15454
15690
  "description": "Display a deprecation warning with the provided message and a stack trace\n(Chrome and Firefox only).\n\n* In a production build, this method is defined as an empty function (NOP).\nUses of this method in Ember itself are stripped from the ember.prod.js build.",
15455
15691
  "itemtype": "method",
15456
15692
  "name": "deprecate",
@@ -17311,8 +17547,23 @@
17311
17547
  "module": "@ember/polyfills"
17312
17548
  },
17313
17549
  {
17314
- "file": "packages/@ember/runloop/index.js",
17315
- "line": 31,
17550
+ "file": "packages/@ember/renderer/index.ts",
17551
+ "line": 11,
17552
+ "description": "Returns a promise which will resolve when rendering has settled. Settled in\nthis context is defined as when all of the tags in use are \"current\" (e.g.\n`renderers.every(r => r._isValid())`). When this is checked at the _end_ of\nthe run loop, this essentially guarantees that all rendering is completed.",
17553
+ "itemtype": "method",
17554
+ "name": "renderSettled",
17555
+ "return": {
17556
+ "description": "a promise which fulfills when rendering has settled",
17557
+ "type": "Promise<void>"
17558
+ },
17559
+ "access": "public",
17560
+ "tagname": "",
17561
+ "class": "Renderer",
17562
+ "module": "@ember/renderer"
17563
+ },
17564
+ {
17565
+ "file": "packages/@ember/runloop/index.ts",
17566
+ "line": 60,
17316
17567
  "description": "Array of named queues. This array determines the order in which queues\nare flushed at the end of the RunLoop. You can define your own queues by\nsimply adding the queue name to this array. Normally you should not need\nto inspect or modify this property.",
17317
17568
  "itemtype": "property",
17318
17569
  "name": "queues",
@@ -17321,11 +17572,11 @@
17321
17572
  "access": "private",
17322
17573
  "tagname": "",
17323
17574
  "class": "@ember/runloop",
17324
- "module": "@ember/polyfills"
17575
+ "module": "@ember/renderer"
17325
17576
  },
17326
17577
  {
17327
- "file": "packages/@ember/runloop/index.js",
17328
- "line": 74,
17578
+ "file": "packages/@ember/runloop/index.ts",
17579
+ "line": 103,
17329
17580
  "description": "Runs the passed target and method inside of a RunLoop, ensuring any\ndeferred actions including bindings and views updates are flushed at the\nend.\n\nNormally you should not need to invoke this method yourself. However if\nyou are implementing raw event handlers when interfacing with other\nlibraries or plugins, you should probably wrap all of your code inside this\ncall.\n\n```javascript\nimport { run } from '@ember/runloop';\n\nrun(function() {\n // code to be executed within a RunLoop\n});\n```",
17330
17581
  "itemtype": "method",
17331
17582
  "name": "run",
@@ -17359,8 +17610,8 @@
17359
17610
  "module": "@ember/runloop"
17360
17611
  },
17361
17612
  {
17362
- "file": "packages/@ember/runloop/index.js",
17363
- "line": 106,
17613
+ "file": "packages/@ember/runloop/index.ts",
17614
+ "line": 151,
17364
17615
  "description": "If no run-loop is present, it creates a new one. If a run loop is\npresent it will queue itself to run on the existing run-loops action\nqueue.\n\nPlease note: This is not for normal usage, and should be used sparingly.\n\nIf invoked when not within a run loop:\n\n```javascript\nimport { join } from '@ember/runloop';\n\njoin(function() {\n // creates a new run-loop\n});\n```\n\nAlternatively, if called within an existing run loop:\n\n```javascript\nimport { run, join } from '@ember/runloop';\n\nrun(function() {\n // creates a new run-loop\n\n join(function() {\n // joins with the existing run-loop, and queues for invocation on\n // the existing run-loops action queue.\n });\n});\n```",
17365
17616
  "itemtype": "method",
17366
17617
  "name": "join",
@@ -17394,8 +17645,8 @@
17394
17645
  "module": "@ember/runloop"
17395
17646
  },
17396
17647
  {
17397
- "file": "packages/@ember/runloop/index.js",
17398
- "line": 154,
17648
+ "file": "packages/@ember/runloop/index.ts",
17649
+ "line": 213,
17399
17650
  "description": "Allows you to specify which context to call the specified function in while\nadding the execution of that function to the Ember run loop. This ability\nmakes this method a great way to asynchronously integrate third-party libraries\ninto your Ember application.\n\n`bind` takes two main arguments, the desired context and the function to\ninvoke in that context. Any additional arguments will be supplied as arguments\nto the function that is passed in.\n\nLet's use the creation of a TinyMCE component as an example. Currently,\nTinyMCE provides a setup configuration option we can use to do some processing\nafter the TinyMCE instance is initialized but before it is actually rendered.\nWe can use that setup option to do some additional setup for our component.\nThe component itself could look something like the following:\n\n```app/components/rich-text-editor.js\nimport Component from '@ember/component';\nimport { on } from '@ember/object/evented';\nimport { bind } from '@ember/runloop';\n\nexport default Component.extend({\n initializeTinyMCE: on('didInsertElement', function() {\n tinymce.init({\n selector: '#' + this.$().prop('id'),\n setup: bind(this, this.setupEditor)\n });\n }),\n\n didInsertElement() {\n tinymce.init({\n selector: '#' + this.$().prop('id'),\n setup: bind(this, this.setupEditor)\n });\n }\n\n setupEditor(editor) {\n this.set('editor', editor);\n\n editor.on('change', function() {\n console.log('content changed!');\n });\n }\n});\n```\n\nIn this example, we use `bind` to bind the setupEditor method to the\ncontext of the RichTextEditor component and to have the invocation of that\nmethod be safely handled and executed by the Ember run loop.",
17400
17651
  "itemtype": "method",
17401
17652
  "name": "bind",
@@ -17430,8 +17681,8 @@
17430
17681
  "module": "@ember/runloop"
17431
17682
  },
17432
17683
  {
17433
- "file": "packages/@ember/runloop/index.js",
17434
- "line": 241,
17684
+ "file": "packages/@ember/runloop/index.ts",
17685
+ "line": 327,
17435
17686
  "description": "Begins a new RunLoop. Any deferred actions invoked after the begin will\nbe buffered until you invoke a matching call to `end()`. This is\na lower-level way to use a RunLoop instead of using `run()`.\n\n```javascript\nimport { begin, end } from '@ember/runloop';\n\nbegin();\n// code to be executed within a RunLoop\nend();\n```",
17436
17687
  "itemtype": "method",
17437
17688
  "name": "begin",
@@ -17446,8 +17697,8 @@
17446
17697
  "module": "@ember/runloop"
17447
17698
  },
17448
17699
  {
17449
- "file": "packages/@ember/runloop/index.js",
17450
- "line": 264,
17700
+ "file": "packages/@ember/runloop/index.ts",
17701
+ "line": 350,
17451
17702
  "description": "Ends a RunLoop. This must be called sometime after you call\n`begin()` to flush any deferred actions. This is a lower-level way\nto use a RunLoop instead of using `run()`.\n\n```javascript\nimport { begin, end } from '@ember/runloop';\n\nbegin();\n// code to be executed within a RunLoop\nend();\n```",
17452
17703
  "itemtype": "method",
17453
17704
  "name": "end",
@@ -17462,8 +17713,8 @@
17462
17713
  "module": "@ember/runloop"
17463
17714
  },
17464
17715
  {
17465
- "file": "packages/@ember/runloop/index.js",
17466
- "line": 287,
17716
+ "file": "packages/@ember/runloop/index.ts",
17717
+ "line": 373,
17467
17718
  "description": "Adds the passed target/method and any optional arguments to the named\nqueue to be executed at the end of the RunLoop. If you have not already\nstarted a RunLoop when calling this method one will be started for you\nautomatically.\n\nAt the end of a RunLoop, any methods scheduled in this way will be invoked.\nMethods will be invoked in an order matching the named queues defined in\nthe `queues` property.\n\n```javascript\nimport { schedule } from '@ember/runloop';\n\nschedule('afterRender', this, function() {\n // this will be executed in the 'afterRender' queue\n console.log('scheduled on afterRender queue');\n});\n\nschedule('actions', this, function() {\n // this will be executed in the 'actions' queue\n console.log('scheduled on actions queue');\n});\n\n// Note the functions will be run in order based on the run queues order.\n// Output would be:\n// scheduled on actions queue\n// scheduled on afterRender queue\n```",
17468
17719
  "itemtype": "method",
17469
17720
  "name": "schedule",
@@ -17502,8 +17753,8 @@
17502
17753
  "module": "@ember/runloop"
17503
17754
  },
17504
17755
  {
17505
- "file": "packages/@ember/runloop/index.js",
17506
- "line": 342,
17756
+ "file": "packages/@ember/runloop/index.ts",
17757
+ "line": 446,
17507
17758
  "description": "Invokes the passed target/method and optional arguments after a specified\nperiod of time. The last parameter of this method must always be a number\nof milliseconds.\n\nYou should use this method whenever you need to run some action after a\nperiod of time instead of using `setTimeout()`. This method will ensure that\nitems that expire during the same script execution cycle all execute\ntogether, which is often more efficient than using a real setTimeout.\n\n```javascript\nimport { later } from '@ember/runloop';\n\nlater(myContext, function() {\n // code here will execute within a RunLoop in about 500ms with this == myContext\n}, 500);\n```",
17508
17759
  "itemtype": "method",
17509
17760
  "name": "later",
@@ -17542,8 +17793,8 @@
17542
17793
  "module": "@ember/runloop"
17543
17794
  },
17544
17795
  {
17545
- "file": "packages/@ember/runloop/index.js",
17546
- "line": 376,
17796
+ "file": "packages/@ember/runloop/index.ts",
17797
+ "line": 497,
17547
17798
  "description": "Schedule a function to run one time during the current RunLoop. This is equivalent\n to calling `scheduleOnce` with the \"actions\" queue.",
17548
17799
  "itemtype": "method",
17549
17800
  "name": "once",
@@ -17577,8 +17828,8 @@
17577
17828
  "module": "@ember/runloop"
17578
17829
  },
17579
17830
  {
17580
- "file": "packages/@ember/runloop/index.js",
17581
- "line": 396,
17831
+ "file": "packages/@ember/runloop/index.ts",
17832
+ "line": 528,
17582
17833
  "description": "Schedules a function to run one time in a given queue of the current RunLoop.\nCalling this method with the same queue/target/method combination will have\nno effect (past the initial call).\n\nNote that although you can pass optional arguments these will not be\nconsidered when looking for duplicates. New arguments will replace previous\ncalls.\n\n```javascript\nimport { run, scheduleOnce } from '@ember/runloop';\n\nfunction sayHi() {\n console.log('hi');\n}\n\nrun(function() {\n scheduleOnce('afterRender', myContext, sayHi);\n scheduleOnce('afterRender', myContext, sayHi);\n // sayHi will only be executed once, in the afterRender queue of the RunLoop\n});\n```\n\nAlso note that for `scheduleOnce` to prevent additional calls, you need to\npass the same function instance. The following case works as expected:\n\n```javascript\nfunction log() {\n console.log('Logging only once');\n}\n\nfunction scheduleIt() {\n scheduleOnce('actions', myContext, log);\n}\n\nscheduleIt();\nscheduleIt();\n```\n\nBut this other case will schedule the function multiple times:\n\n```javascript\nimport { scheduleOnce } from '@ember/runloop';\n\nfunction scheduleIt() {\n scheduleOnce('actions', myContext, function() {\n console.log('Closure');\n });\n}\n\nscheduleIt();\nscheduleIt();\n\n// \"Closure\" will print twice, even though we're using `scheduleOnce`,\n// because the function we pass to it won't match the\n// previously scheduled operation.\n```\n\nAvailable queues, and their order, can be found at `queues`",
17583
17834
  "itemtype": "method",
17584
17835
  "name": "scheduleOnce",
@@ -17618,8 +17869,8 @@
17618
17869
  "module": "@ember/runloop"
17619
17870
  },
17620
17871
  {
17621
- "file": "packages/@ember/runloop/index.js",
17622
- "line": 472,
17872
+ "file": "packages/@ember/runloop/index.ts",
17873
+ "line": 622,
17623
17874
  "description": "Schedules an item to run from within a separate run loop, after\ncontrol has been returned to the system. This is equivalent to calling\n`later` with a wait time of 1ms.\n\n```javascript\nimport { next } from '@ember/runloop';\n\nnext(myContext, function() {\n // code to be executed in the next run loop,\n // which will be scheduled after the current one\n});\n```\n\nMultiple operations scheduled with `next` will coalesce\ninto the same later run loop, along with any other operations\nscheduled by `later` that expire right around the same\ntime that `next` operations will fire.\n\nNote that there are often alternatives to using `next`.\nFor instance, if you'd like to schedule an operation to happen\nafter all DOM element operations have completed within the current\nrun loop, you can make use of the `afterRender` run loop queue (added\nby the `ember-views` package, along with the preceding `render` queue\nwhere all the DOM element operations happen).\n\nExample:\n\n```app/components/my-component.js\nimport Component from '@ember/component';\nimport { scheduleOnce } from '@ember/runloop';\n\nexport Component.extend({\n didInsertElement() {\n this._super(...arguments);\n scheduleOnce('afterRender', this, 'processChildElements');\n },\n\n processChildElements() {\n // ... do something with component's child component\n // elements after they've finished rendering, which\n // can't be done within this component's\n // `didInsertElement` hook because that gets run\n // before the child elements have been added to the DOM.\n }\n});\n```\n\nOne benefit of the above approach compared to using `next` is\nthat you will be able to perform DOM/CSS operations before unprocessed\nelements are rendered to the screen, which may prevent flickering or\nother artifacts caused by delaying processing until after rendering.\n\nThe other major benefit to the above approach is that `next`\nintroduces an element of non-determinism, which can make things much\nharder to test, due to its reliance on `setTimeout`; it's much harder\nto guarantee the order of scheduled operations when they are scheduled\noutside of the current run loop, i.e. with `next`.",
17624
17875
  "itemtype": "method",
17625
17876
  "name": "next",
@@ -17653,8 +17904,8 @@
17653
17904
  "module": "@ember/runloop"
17654
17905
  },
17655
17906
  {
17656
- "file": "packages/@ember/runloop/index.js",
17657
- "line": 547,
17907
+ "file": "packages/@ember/runloop/index.ts",
17908
+ "line": 707,
17658
17909
  "description": "Cancels a scheduled item. Must be a value returned by `later()`,\n`once()`, `scheduleOnce()`, `next()`, `debounce()`, or\n`throttle()`.\n\n```javascript\nimport {\n next,\n cancel,\n later,\n scheduleOnce,\n once,\n throttle,\n debounce\n} from '@ember/runloop';\n\nlet runNext = next(myContext, function() {\n // will not be executed\n});\n\ncancel(runNext);\n\nlet runLater = later(myContext, function() {\n // will not be executed\n}, 500);\n\ncancel(runLater);\n\nlet runScheduleOnce = scheduleOnce('afterRender', myContext, function() {\n // will not be executed\n});\n\ncancel(runScheduleOnce);\n\nlet runOnce = once(myContext, function() {\n // will not be executed\n});\n\ncancel(runOnce);\n\nlet throttle = throttle(myContext, function() {\n // will not be executed\n}, 1, false);\n\ncancel(throttle);\n\nlet debounce = debounce(myContext, function() {\n // will not be executed\n}, 1);\n\ncancel(debounce);\n\nlet debounceImmediate = debounce(myContext, function() {\n // will be executed since we passed in true (immediate)\n}, 100, true);\n\n// the 100ms delay until this method can be called again will be canceled\ncancel(debounceImmediate);\n```",
17659
17910
  "itemtype": "method",
17660
17911
  "name": "cancel",
@@ -17676,8 +17927,8 @@
17676
17927
  "module": "@ember/runloop"
17677
17928
  },
17678
17929
  {
17679
- "file": "packages/@ember/runloop/index.js",
17680
- "line": 618,
17930
+ "file": "packages/@ember/runloop/index.ts",
17931
+ "line": 778,
17681
17932
  "description": "Delay calling the target method until the debounce period has elapsed\nwith no additional debounce calls. If `debounce` is called again before\nthe specified time has elapsed, the timer is reset and the entire period\nmust pass again before the target method is called.\n\nThis method should be used when an event may be called multiple times\nbut the action should only be called once when the event is done firing.\nA common example is for scroll events where you only want updates to\nhappen once scrolling has ceased.\n\n```javascript\nimport { debounce } from '@ember/runloop';\n\nfunction whoRan() {\n console.log(this.name + ' ran.');\n}\n\nlet myContext = { name: 'debounce' };\n\ndebounce(myContext, whoRan, 150);\n\n// less than 150ms passes\ndebounce(myContext, whoRan, 150);\n\n// 150ms passes\n// whoRan is invoked with context myContext\n// console logs 'debounce ran.' one time.\n```\n\nImmediate allows you to run the function immediately, but debounce\nother calls for this function until the wait time has elapsed. If\n`debounce` is called again before the specified time has elapsed,\nthe timer is reset and the entire period must pass again before\nthe method can be called again.\n\n```javascript\nimport { debounce } from '@ember/runloop';\n\nfunction whoRan() {\n console.log(this.name + ' ran.');\n}\n\nlet myContext = { name: 'debounce' };\n\ndebounce(myContext, whoRan, 150, true);\n\n// console logs 'debounce ran.' one time immediately.\n// 100ms passes\ndebounce(myContext, whoRan, 150, true);\n\n// 150ms passes and nothing else is logged to the console and\n// the debouncee is no longer being watched\ndebounce(myContext, whoRan, 150, true);\n\n// console logs 'debounce ran.' one time immediately.\n// 150ms passes and nothing else is logged to the console and\n// the debouncee is no longer being watched\n```",
17682
17933
  "itemtype": "method",
17683
17934
  "name": "debounce",
@@ -17721,8 +17972,8 @@
17721
17972
  "module": "@ember/runloop"
17722
17973
  },
17723
17974
  {
17724
- "file": "packages/@ember/runloop/index.js",
17725
- "line": 696,
17975
+ "file": "packages/@ember/runloop/index.ts",
17976
+ "line": 875,
17726
17977
  "description": "Ensure that the target method is never called more frequently than\nthe specified spacing period. The target method is called immediately.\n\n```javascript\nimport { throttle } from '@ember/runloop';\n\nfunction whoRan() {\n console.log(this.name + ' ran.');\n}\n\nlet myContext = { name: 'throttle' };\n\nthrottle(myContext, whoRan, 150);\n// whoRan is invoked with context myContext\n// console logs 'throttle ran.'\n\n// 50ms passes\nthrottle(myContext, whoRan, 150);\n\n// 50ms passes\nthrottle(myContext, whoRan, 150);\n\n// 150ms passes\nthrottle(myContext, whoRan, 150);\n// whoRan is invoked with context myContext\n// console logs 'throttle ran.'\n```",
17727
17978
  "itemtype": "method",
17728
17979
  "name": "throttle",
@@ -18495,11 +18746,11 @@
18495
18746
  },
18496
18747
  {
18497
18748
  "message": "unknown tag: internal",
18498
- "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:103"
18749
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:127"
18499
18750
  },
18500
18751
  {
18501
18752
  "message": "unknown tag: internal",
18502
- "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:109"
18753
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:133"
18503
18754
  },
18504
18755
  {
18505
18756
  "message": "replacing incorrect tag: function with method",
@@ -18523,7 +18774,7 @@
18523
18774
  },
18524
18775
  {
18525
18776
  "message": "Missing item type\nThis is deprecated in favor of explicit injection of dependencies.\n\nReference: https://deprecations.emberjs.com/v3.x#toc_implicit-injections\n```\n\n@private\n@method injection\n@param {String} factoryName\n@param {String} property\n@param {String} injectionName\n@deprecated",
18526
- "line": " packages/@ember/-internals/container/lib/registry.ts:450"
18777
+ "line": " packages/@ember/-internals/container/lib/registry.ts:448"
18527
18778
  },
18528
18779
  {
18529
18780
  "message": "Missing item type\nThe `change` and `input` actions need to be overridden in the `Input`\nsubclass. Unfortunately, some ember-source builds currently uses babel\nloose mode to transpile its classes. Having the `@action` decorator on the\nsuper class creates a getter on the prototype, and when the subclass\noverrides the method, the loose mode transpilation would emit something\nlike `Subclass.prototype['change'] = function change() { ... }`, which\nfails because `prototype['change']` is getter-only/readonly. The correct\nsolution is to use `Object.defineProperty(prototype, 'change', ...)` but\nthat requires disabling loose mode. For now, the workaround is to add the\ndecorator only on the subclass. This is more of a configuration issue on\nour own builds and doesn't really affect apps.",
@@ -18587,11 +18838,11 @@
18587
18838
  },
18588
18839
  {
18589
18840
  "message": "Missing item type",
18590
- "line": " packages/@ember/-internals/glimmer/lib/views/outlet.ts:104"
18841
+ "line": " packages/@ember/-internals/glimmer/lib/views/outlet.ts:107"
18591
18842
  },
18592
18843
  {
18593
18844
  "message": "Missing item type",
18594
- "line": " packages/@ember/-internals/glimmer/lib/views/outlet.ts:112"
18845
+ "line": " packages/@ember/-internals/glimmer/lib/views/outlet.ts:115"
18595
18846
  },
18596
18847
  {
18597
18848
  "message": "Missing item type\nThe template-compiler does not support strict mode at this time.\nprecompile from ember-template-compiler returns a string and\nnot a template-factory, so it doesn't help with strict-mode testing.\n\nWe also can't import from `@ember/template-compiler` because it\ndoesn't exist to this kind of test, otherwise we'd be able to use\nprecompileTemplate, which would be perfect :D\n\nCopied(ish) from https://github.com/NullVoxPopuli/ember-repl/blob/main/addon/hbs.ts#L51",
@@ -18847,15 +19098,15 @@
18847
19098
  },
18848
19099
  {
18849
19100
  "message": "Missing item type\nFinds the name of the substate route if it exists for the given route. A\nsubstate route is of the form `route_state`, such as `foo_loading`.",
18850
- "line": " packages/@ember/-internals/routing/lib/system/router.ts:1635"
19101
+ "line": " packages/@ember/-internals/routing/lib/system/router.ts:1633"
18851
19102
  },
18852
19103
  {
18853
19104
  "message": "Missing item type\nFinds the name of the state route if it exists for the given route. A state\nroute is of the form `route.state`, such as `foo.loading`. Properly Handles\n`application` named routes.",
18854
- "line": " packages/@ember/-internals/routing/lib/system/router.ts:1656"
19105
+ "line": " packages/@ember/-internals/routing/lib/system/router.ts:1654"
18855
19106
  },
18856
19107
  {
18857
19108
  "message": "Missing item type\nDetermines whether or not a route has been defined by checking that the route\nis in the Router's map and the owner has a registration for that route.",
18858
- "line": " packages/@ember/-internals/routing/lib/system/router.ts:1678"
19109
+ "line": " packages/@ember/-internals/routing/lib/system/router.ts:1676"
18859
19110
  },
18860
19111
  {
18861
19112
  "message": "Missing item type",
@@ -18871,19 +19122,19 @@
18871
19122
  },
18872
19123
  {
18873
19124
  "message": "Missing item type\nSubscribes a function to a named event and then cancels the subscription\nafter the first time the event is triggered. It is good to use ``one`` when\nyou only care about the first time an event has taken place.",
18874
- "line": " packages/@ember/-internals/runtime/lib/mixins/evented.d.ts:16"
19125
+ "line": " packages/@ember/-internals/runtime/lib/mixins/evented.d.ts:23"
18875
19126
  },
18876
19127
  {
18877
19128
  "message": "Missing item type\nTriggers a named event for the object. Any additional arguments\nwill be passed as parameters to the functions that are subscribed to the\nevent.",
18878
- "line": " packages/@ember/-internals/runtime/lib/mixins/evented.d.ts:27"
19129
+ "line": " packages/@ember/-internals/runtime/lib/mixins/evented.d.ts:34"
18879
19130
  },
18880
19131
  {
18881
19132
  "message": "Missing item type\nCancels subscription for given name, target, and method.",
18882
- "line": " packages/@ember/-internals/runtime/lib/mixins/evented.d.ts:33"
19133
+ "line": " packages/@ember/-internals/runtime/lib/mixins/evented.d.ts:40"
18883
19134
  },
18884
19135
  {
18885
19136
  "message": "Missing item type\nChecks to see if object has any subscriptions for named event.",
18886
- "line": " packages/@ember/-internals/runtime/lib/mixins/evented.d.ts:42"
19137
+ "line": " packages/@ember/-internals/runtime/lib/mixins/evented.d.ts:49"
18887
19138
  },
18888
19139
  {
18889
19140
  "message": "Missing item type\nThis mixin provides properties and property observing functionality, core features of the Ember object model.",
@@ -18943,75 +19194,107 @@
18943
19194
  },
18944
19195
  {
18945
19196
  "message": "Missing item type",
18946
- "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:21"
19197
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:14"
19198
+ },
19199
+ {
19200
+ "message": "Missing item type",
19201
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:17"
19202
+ },
19203
+ {
19204
+ "message": "Missing item type",
19205
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:22"
18947
19206
  },
18948
19207
  {
18949
19208
  "message": "Missing item type",
18950
- "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:27"
19209
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:24"
18951
19210
  },
18952
19211
  {
18953
19212
  "message": "Missing item type",
18954
19213
  "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:30"
18955
19214
  },
18956
19215
  {
18957
- "message": "Missing item type\nCoreObject constructor takes owner.",
19216
+ "message": "Missing item type",
18958
19217
  "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:33"
18959
19218
  },
18960
19219
  {
18961
19220
  "message": "Missing item type",
18962
- "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:38"
19221
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:36"
19222
+ },
19223
+ {
19224
+ "message": "Missing item type",
19225
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:44"
19226
+ },
19227
+ {
19228
+ "message": "Missing item type",
19229
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:50"
19230
+ },
19231
+ {
19232
+ "message": "Missing item type",
19233
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:53"
19234
+ },
19235
+ {
19236
+ "message": "Missing item type\nCoreObject constructor takes owner.",
19237
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:56"
19238
+ },
19239
+ {
19240
+ "message": "Missing item type",
19241
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:61"
18963
19242
  },
18964
19243
  {
18965
19244
  "message": "Missing item type\nAn overridable method called when objects are instantiated. By default,\ndoes nothing unless it is overridden during class definition.",
18966
- "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:41"
19245
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:64"
18967
19246
  },
18968
19247
  {
18969
19248
  "message": "Missing item type\nDefines the properties that will be concatenated from the superclass (instead of overridden).",
18970
- "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:47"
19249
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:70"
18971
19250
  },
18972
19251
  {
18973
19252
  "message": "Missing item type\nDestroyed object property flag. If this property is true the observers and bindings were\nalready removed by the effect of calling the destroy() method.",
18974
- "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:53"
19253
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:76"
18975
19254
  },
18976
19255
  {
18977
19256
  "message": "Missing item type\nDestruction scheduled flag. The destroy() method has been called. The object stays intact\nuntil the end of the run loop at which point the isDestroyed flag is set.",
18978
- "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:59"
19257
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:82"
18979
19258
  },
18980
19259
  {
18981
19260
  "message": "Missing item type\nDestroys an object by setting the `isDestroyed` flag and removing its\nmetadata, which effectively destroys observers and bindings.\nIf you try to set a property on a destroyed object, an exception will be\nraised.\nNote that destruction is scheduled for the end of the run loop and does not\nhappen immediately. It will set an isDestroying flag immediately.",
18982
- "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:66"
19261
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:90"
18983
19262
  },
18984
19263
  {
18985
19264
  "message": "Missing item type\nOverride to implement teardown.",
18986
- "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:77"
19265
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:101"
18987
19266
  },
18988
19267
  {
18989
19268
  "message": "Missing item type\nReturns a string representation which attempts to provide more information than Javascript's toString\ntypically does, in a generic way for all Ember objects (e.g., \"<App.Person:ember1024>\").",
18990
- "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:82"
19269
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:106"
18991
19270
  },
18992
19271
  {
18993
19272
  "message": "Missing item type",
18994
- "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:94"
19273
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:118"
18995
19274
  },
18996
19275
  {
18997
19276
  "message": "Missing item type",
18998
- "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:100"
19277
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:124"
18999
19278
  },
19000
19279
  {
19001
19280
  "message": "Missing item type\nIterate over each computed property for the class, passing its name and any\nassociated metadata (see metaForProperty) to the callback.",
19002
- "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:103"
19281
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:127"
19003
19282
  },
19004
19283
  {
19005
19284
  "message": "Missing item type\nReturns the original hash that was passed to meta().",
19006
- "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:109"
19285
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:133"
19007
19286
  },
19008
19287
  {
19009
19288
  "message": "Missing item type",
19010
- "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:116"
19289
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:140"
19011
19290
  },
19012
19291
  {
19013
19292
  "message": "Missing item type",
19014
- "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:119"
19293
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:143"
19294
+ },
19295
+ {
19296
+ "message": "Missing item type",
19297
+ "line": " packages/@ember/-internals/runtime/lib/system/core_object.d.ts:146"
19015
19298
  },
19016
19299
  {
19017
19300
  "message": "Missing item type",
@@ -19029,6 +19312,14 @@
19029
19312
  "message": "Missing item type\nStrongly hint runtimes to intern the provided string.\n\nWhen do I need to use this function?\n\nFor the most part, never. Pre-mature optimization is bad, and often the\nruntime does exactly what you need it to, and more often the trade-off isn't\nworth it.\n\nWhy?\n\nRuntimes store strings in at least 2 different representations:\nRopes and Symbols (interned strings). The Rope provides a memory efficient\ndata-structure for strings created from concatenation or some other string\nmanipulation like splitting.\n\nUnfortunately checking equality of different ropes can be quite costly as\nruntimes must resort to clever string comparison algorithms. These\nalgorithms typically cost in proportion to the length of the string.\nLuckily, this is where the Symbols (interned strings) shine. As Symbols are\nunique by their string content, equality checks can be done by pointer\ncomparison.\n\nHow do I know if my string is a rope or symbol?\n\nTypically (warning general sweeping statement, but truthy in runtimes at\npresent) static strings created as part of the JS source are interned.\nStrings often used for comparisons can be interned at runtime if some\ncriteria are met. One of these criteria can be the size of the entire rope.\nFor example, in chrome 38 a rope longer then 12 characters will not\nintern, nor will segments of that rope.\n\nSome numbers: http://jsperf.com/eval-vs-keys/8\n\nKnown Trick™",
19030
19313
  "line": " packages/@ember/-internals/utils/lib/intern.ts:1"
19031
19314
  },
19315
+ {
19316
+ "message": "Missing item type",
19317
+ "line": " packages/@ember/-internals/views/lib/system/event_dispatcher.d.ts:8"
19318
+ },
19319
+ {
19320
+ "message": "Missing item type",
19321
+ "line": " packages/@ember/application/lib/application.d.ts:17"
19322
+ },
19032
19323
  {
19033
19324
  "message": "Missing item type\nUnfortunately, a lot of existing code assumes the booting process is\n\"synchronous\". Specifically, a lot of tests assumes the last call to\n`app.advanceReadiness()` or `app.reset()` will result in the app being\nfully-booted when the current runloop completes.\n\nWe would like new code (like the `visit` API) to stop making this assumption,\nso we created the asynchronous version above that returns a promise. But until\nwe have migrated all the code, we would have to expose this method for use\n*internally* in places where we need to boot an app \"synchronously\".",
19034
19325
  "line": " packages/@ember/application/lib/application.js:662"