diff --git a/.travis.yml b/.travis.yml index 445176141d9..4869bcf4666 100644 --- a/.travis.yml +++ b/.travis.yml @@ -96,9 +96,3 @@ jobs: - PUBLISH=true script: - "./bin/publish_builds" - - - env: - - BUILD_TYPE=alpha - - PUBLISH=true - script: - - "./bin/publish_builds" diff --git a/CHANGELOG.md b/CHANGELOG.md index b2fb4889b69..5342891c3ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,40 @@ # Ember Changelog +### v3.8.0-beta.3 (January 28, 2019) + +- [#17498](https://github.com/emberjs/ember.js/pull/17498) [BUGFIX] Don't remove dep keys in `didUnwatch` +- [#17499](https://github.com/emberjs/ember.js/pull/17499) [BUGFIX] Update to glimmer-vm 0.37.1. + +### v3.8.0-beta.2 (January 14, 2019) + +- [#17467](https://github.com/emberjs/ember.js/pull/17467) [BUGFIX] Fix substate interactions with aborts + +### v3.8.0-beta.1 (January 7, 2019) + +- [#17143](https://github.com/emberjs/ember.js/pull/17143) / [#17375](https://github.com/emberjs/ember.js/pull/17375) [FEATURE] Implement Element Modifier Manager RFC (see [emberjs/rfcs#0373](https://github.com/emberjs/rfcs/blob/master/text/0373-Element-Modifier-Managers.md)). +- [#17054](https://github.com/emberjs/ember.js/pull/17054) / [#17376](https://github.com/emberjs/ember.js/pull/17376) [FEATURE] Implement `array` helper RFC (see [emberjs/rfcs#0318](https://github.com/emberjs/rfcs/blob/master/text/0318-array-helper.md)) +- [#16735](https://github.com/emberjs/ember.js/pull/16735) [BUGFIX] Observed properties not being marked as enum +- [#17319](https://github.com/emberjs/ember.js/pull/17319) [CLEANUP] Remove deprecated 'POSITIONAL_PARAM_CONFLICT' +- [#17394](https://github.com/emberjs/ember.js/pull/17394) [CLEANUP] Remove deprecated code in mixins/array +- [#17166](https://github.com/emberjs/ember.js/pull/17166) Improve performance of get() / set() +- [#16710](https://github.com/emberjs/ember.js/pull/16710) Deprecation of (private) `NAME_KEY` +- [#17244](https://github.com/emberjs/ember.js/pull/17244) Upgrade to Glimmer VM 0.37.0 +- [#17216](https://github.com/emberjs/ember.js/pull/17216) Use native Error instead of custom Error subclass. +- [#17340](https://github.com/emberjs/ember.js/pull/17340) Remove unused `hooks` variable from qunit-rfc-232 util-test blueprint +- [#17357](https://github.com/emberjs/ember.js/pull/17357) Allow notifyPropertyChange to be imported from @ember/object +- [#17413](https://github.com/emberjs/ember.js/pull/17413) Fix missing import in instance-initializer blueprint for ember-mocha + +### v3.7.2 (January 22, 2019) + +* Upgrade @glimmer/* packages to 0.35.10. Fixes a few issues: + * Usage of positional arguments with custom components. + * Forwarding attributes via `...attributes` to a dynamic component. + * Prevent errors when rendering many template blocks (`Error: Operand over 16-bits. Got 65536`). + +### v3.7.1 (January 21, 2019) + +- [#17461](https://github.com/emberjs/ember.js/pull/17461) [BUGFIX] Fix substate interactions with aborts + ### v3.7.0 (January 7, 2019) - [#17254](https://github.com/emberjs/ember.js/pull/17254) [BREAKING] Explicitly drop support for Node 4 @@ -54,6 +89,13 @@ - [#16978](https://github.com/emberjs/ember.js/pull/16978) [BUGFIX] Properly teardown alias - [#16877](https://github.com/emberjs/ember.js/pull/16877) [CLEANUP] Allow routes to be named "array" and "object" +### v3.4.8 (January 22, 2019) + +* Upgrade @glimmer/* packages to 0.35.10. Fixes a few issues: + * Usage of positional arguments with custom components. + * Forwarding attributes via `...attributes` to a dynamic component. + * Prevent errors when rendering many template blocks (`Error: Operand over 16-bits. Got 65536`). + ### v3.4.7 (December 7, 2018) - #17271 [BUGFIX] Update `backburner.js` to 2.4.2. diff --git a/package.json b/package.json index b9e5d570415..174ad30da18 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ember-source", - "version": "3.8.0", + "version": "3.8.0-beta.3", "description": "A JavaScript framework for creating ambitious web applications", "keywords": [ "ember-addon" @@ -89,14 +89,14 @@ "@babel/plugin-transform-shorthand-properties": "^7.2.0", "@babel/plugin-transform-spread": "^7.2.2", "@babel/plugin-transform-template-literals": "^7.2.0", - "@glimmer/compiler": "^0.37.0", + "@glimmer/compiler": "^0.37.1", "@glimmer/env": "^0.1.7", - "@glimmer/interfaces": "^0.37.0", - "@glimmer/node": "^0.37.0", - "@glimmer/opcode-compiler": "^0.37.0", - "@glimmer/program": "^0.37.0", - "@glimmer/reference": "^0.37.0", - "@glimmer/runtime": "^0.37.0", + "@glimmer/interfaces": "^0.37.1", + "@glimmer/node": "^0.37.1", + "@glimmer/opcode-compiler": "^0.37.1", + "@glimmer/program": "^0.37.1", + "@glimmer/reference": "^0.37.1", + "@glimmer/runtime": "^0.37.1", "@types/qunit": "^2.5.3", "@types/rsvp": "^4.0.2", "auto-dist-tag": "^1.0.0", @@ -148,7 +148,7 @@ "puppeteer": "^1.11.0", "qunit": "^2.8.0", "route-recognizer": "^0.3.4", - "router_js": "^6.2.1", + "router_js": "^6.2.2", "rsvp": "^4.8.4", "semver": "^5.5.0", "serve-static": "^1.13.2", diff --git a/packages/@ember/-internals/glimmer/lib/helpers/action.ts b/packages/@ember/-internals/glimmer/lib/helpers/action.ts index b5da3c4529a..972e99c21f0 100644 --- a/packages/@ember/-internals/glimmer/lib/helpers/action.ts +++ b/packages/@ember/-internals/glimmer/lib/helpers/action.ts @@ -92,12 +92,15 @@ import { ACTION, INVOKE, UnboundReference } from '../utils/references'; additional arguments are passed to the action function. This has interesting properties combined with currying of arguments. For example: + ```app/templates/components/my-component.hbs + {{input on-input=(action (action 'setName' model) value="target.value")}} + ``` + ```app/components/my-component.js import Component from '@ember/component'; export default Component.extend({ actions: { - // Usage {{input on-input=(action (action 'setName' model) value="target.value")}} setName(model, name) { model.set('name', name); } diff --git a/packages/@ember/-internals/glimmer/tests/integration/components/angle-bracket-invocation-test.js b/packages/@ember/-internals/glimmer/tests/integration/components/angle-bracket-invocation-test.js index eeb243aa60c..59ed820f073 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/components/angle-bracket-invocation-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/components/angle-bracket-invocation-test.js @@ -855,6 +855,70 @@ if (EMBER_GLIMMER_ANGLE_BRACKET_INVOCATION) { }); } + '@test can forward ...attributes to dynamic component invocation ("splattributes")'() { + this.registerComponent('x-outer', { + ComponentClass: Component.extend({ tagName: '' }), + template: '{{yield}}', + }); + + this.registerComponent('x-inner', { + ComponentClass: Component.extend({ tagName: '' }), + template: '
{{yield}}
', + }); + + this.render(strip` + {{#let (component 'x-outer') as |Thing|}} + Hello! + {{/let}} + `); + + this.assertElement(this.firstChild, { + tagName: 'div', + attrs: { 'data-foo': '' }, + content: 'Hello!', + }); + } + + '@test an inner angle invocation can forward ...attributes through dynamic component invocation ("splattributes")'() { + this.registerComponent('x-outer', { + ComponentClass: Component.extend({ tagName: '' }), + template: `{{#let (component 'x-inner') as |Thing|}}{{yield}}{{/let}}`, + }); + + this.registerComponent('x-inner', { + ComponentClass: Component.extend({ tagName: '' }), + template: '
{{yield}}
', + }); + + this.render('Hello!'); + + this.assertElement(this.firstChild, { + tagName: 'div', + attrs: { 'data-foo': '' }, + content: 'Hello!', + }); + } + + '@test an inner angle invocation can forward ...attributes through static component invocation ("splattributes")'() { + this.registerComponent('x-outer', { + ComponentClass: Component.extend({ tagName: '' }), + template: `{{yield}}`, + }); + + this.registerComponent('x-inner', { + ComponentClass: Component.extend({ tagName: '' }), + template: '
{{yield}}
', + }); + + this.render('Hello!'); + + this.assertElement(this.firstChild, { + tagName: 'div', + attrs: { 'data-foo': '' }, + content: 'Hello!', + }); + } + '@test can include `...attributes` in multiple elements in tagless component ("splattributes")'() { this.registerComponent('foo-bar', { ComponentClass: Component.extend({ tagName: '' }), @@ -919,6 +983,41 @@ if (EMBER_GLIMMER_ANGLE_BRACKET_INVOCATION) { content: 'world', }); } + + '@test can yield content to contextual components invoked with angle-bracket components that receives splattributes'() { + this.registerComponent('foo-bar/inner', { + ComponentClass: Component.extend({ tagName: '' }), + template: '

{{yield}}

', + }); + this.registerComponent('foo-bar', { + ComponentClass: Component.extend({ tagName: '' }), + // If doesn't receive splattributes this test passes + template: strip` + {{#let (component "foo-bar/inner") as |Inner|}} + {{yield}} +

Inside the let

+ {{/let}} +

Outside the let

+ `, + }); + + this.render('Yielded content'); + this.assertElement(this.firstChild, { + tagName: 'h1', + attrs: {}, + content: 'Yielded content', + }); + this.assertElement(this.nthChild(1), { + tagName: 'h2', + attrs: {}, + content: 'Inside the let', + }); + this.assertElement(this.nthChild(2), { + tagName: 'h3', + attrs: {}, + content: 'Outside the let', + }); + } } ); } diff --git a/packages/@ember/-internals/glimmer/tests/integration/custom-component-manager-test.js b/packages/@ember/-internals/glimmer/tests/integration/custom-component-manager-test.js index 5608f28aec9..f0bcb33e2ab 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/custom-component-manager-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/custom-component-manager-test.js @@ -305,6 +305,58 @@ if (GLIMMER_CUSTOM_COMPONENT_MANAGER) { this.assertHTML(`

Chad Hietala

`); } + ['@test it can set positional params on the component instance']() { + let ComponentClass = setComponentManager( + createBasicManager, + EmberObject.extend({ + salutation: computed('args.positional', function() { + return this.args.positional[0] + ' ' + this.args.positional[1]; + }), + }) + ); + + this.registerComponent('foo-bar', { + template: `

{{salutation}}

`, + ComponentClass, + }); + + this.render('{{foo-bar "Yehuda" "Katz"}}'); + + this.assertHTML(`

Yehuda Katz

`); + } + + ['@test positional params are updated if they change']() { + let ComponentClass = setComponentManager( + createBasicManager, + EmberObject.extend({ + salutation: computed('args.positional', function() { + return this.args.positional[0] + ' ' + this.args.positional[1]; + }), + }) + ); + + this.registerComponent('foo-bar', { + template: `

{{salutation}}

`, + ComponentClass, + }); + + this.render('{{foo-bar firstName lastName}}', { + firstName: 'Yehuda', + lastName: 'Katz', + }); + + this.assertHTML(`

Yehuda Katz

`); + + runTask(() => + setProperties(this.context, { + firstName: 'Chad', + lastName: 'Hietala', + }) + ); + + this.assertHTML(`

Chad Hietala

`); + } + ['@test it can opt-in to running destructor'](assert) { let ComponentClass = setComponentManager( () => { diff --git a/packages/@ember/-internals/glimmer/tests/integration/syntax/each-in-test.js b/packages/@ember/-internals/glimmer/tests/integration/syntax/each-in-test.js index e01939aa5c6..1b05c381dfd 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/syntax/each-in-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/syntax/each-in-test.js @@ -139,6 +139,31 @@ class AbstractEachInTest extends RenderingTestCase { } class EachInTest extends AbstractEachInTest { + [`@only each-in supports keys with a period in them`]() { + this.render( + strip` + + `, + { + categories: { + // uncomment and run. notice `items` is undefined + 'hello.world': { name: 'foo' }, + }, + } + ); + + // Empty + this.assertHTML(strip` + + `); + } + [`@test it repeats the given block for each item in the hash`]() { this.makeHash({ Smartphones: 8203, 'JavaScript Frameworks': Infinity }); diff --git a/packages/@ember/-internals/metal/lib/alias.ts b/packages/@ember/-internals/metal/lib/alias.ts index 38471c23882..b8f3b6cdb1e 100644 --- a/packages/@ember/-internals/metal/lib/alias.ts +++ b/packages/@ember/-internals/metal/lib/alias.ts @@ -46,10 +46,6 @@ export class AliasedProperty extends Descriptor implements DescriptorWithDepende this.consume(obj, keyName, meta); } - didUnwatch(obj: object, keyName: string, meta: Meta): void { - this.unconsume(obj, keyName, meta); - } - get(obj: object, keyName: string): any { let ret = get(obj, this.altKey); this.consume(obj, keyName, metaFor(obj)); diff --git a/packages/@ember/canary-features/index.ts b/packages/@ember/canary-features/index.ts index 992c99b629f..a2603221be2 100644 --- a/packages/@ember/canary-features/index.ts +++ b/packages/@ember/canary-features/index.ts @@ -13,18 +13,18 @@ import { assign } from '@ember/polyfills'; */ export const DEFAULT_FEATURES = { - EMBER_LIBRARIES_ISREGISTERED: null, - EMBER_IMPROVED_INSTRUMENTATION: null, + EMBER_LIBRARIES_ISREGISTERED: false, + EMBER_IMPROVED_INSTRUMENTATION: false, EMBER_GLIMMER_NAMED_ARGUMENTS: true, EMBER_ROUTING_ROUTER_SERVICE: true, EMBER_ENGINES_MOUNT_PARAMS: true, - EMBER_MODULE_UNIFICATION: null, + EMBER_MODULE_UNIFICATION: false, GLIMMER_CUSTOM_COMPONENT_MANAGER: true, GLIMMER_MODIFIER_MANAGER: true, - EMBER_METAL_TRACKED_PROPERTIES: null, + EMBER_METAL_TRACKED_PROPERTIES: false, EMBER_GLIMMER_ANGLE_BRACKET_INVOCATION: true, EMBER_GLIMMER_ARRAY_HELPER: true, - EMBER_ROUTING_BUILD_ROUTEINFO_METADATA: null, + EMBER_ROUTING_BUILD_ROUTEINFO_METADATA: false, }; /** diff --git a/packages/@ember/string/index.ts b/packages/@ember/string/index.ts index cde9a51b1f5..7c9cb1df0a9 100644 --- a/packages/@ember/string/index.ts +++ b/packages/@ember/string/index.ts @@ -149,10 +149,12 @@ export function w(str: string): string[] { Converts a camelized string into all lower case separated by underscores. ```javascript - 'innerHTML'.decamelize(); // 'inner_html' - 'action_name'.decamelize(); // 'action_name' - 'css-class-name'.decamelize(); // 'css-class-name' - 'my favorite items'.decamelize(); // 'my favorite items' + import { decamelize } from '@ember/string'; + + decamelize('innerHTML'); // 'inner_html' + decamelize('action_name'); // 'action_name' + decamelize('css-class-name'); // 'css-class-name' + decamelize('my favorite items'); // 'my favorite items' ``` @method decamelize @@ -168,11 +170,13 @@ export function decamelize(str: string): string { Replaces underscores, spaces, or camelCase with dashes. ```javascript - 'innerHTML'.dasherize(); // 'inner-html' - 'action_name'.dasherize(); // 'action-name' - 'css-class-name'.dasherize(); // 'css-class-name' - 'my favorite items'.dasherize(); // 'my-favorite-items' - 'privateDocs/ownerInvoice'.dasherize(); // 'private-docs/owner-invoice' + import { dasherize } from '@ember/string'; + + dasherize('innerHTML'); // 'inner-html' + dasherize('action_name'); // 'action-name' + dasherize('css-class-name'); // 'css-class-name' + dasherize('my favorite items'); // 'my-favorite-items' + dasherize('privateDocs/ownerInvoice'; // 'private-docs/owner-invoice' ``` @method dasherize @@ -188,12 +192,14 @@ export function dasherize(str: string): string { Returns the lowerCamelCase form of a string. ```javascript - 'innerHTML'.camelize(); // 'innerHTML' - 'action_name'.camelize(); // 'actionName' - 'css-class-name'.camelize(); // 'cssClassName' - 'my favorite items'.camelize(); // 'myFavoriteItems' - 'My Favorite Items'.camelize(); // 'myFavoriteItems' - 'private-docs/owner-invoice'.camelize(); // 'privateDocs/ownerInvoice' + import { camelize } from '@ember/string'; + + camelize('innerHTML'); // 'innerHTML' + camelize('action_name'); // 'actionName' + camelize('css-class-name'); // 'cssClassName' + camelize('my favorite items'); // 'myFavoriteItems' + camelize('My Favorite Items'); // 'myFavoriteItems' + camelize('private-docs/owner-invoice'); // 'privateDocs/ownerInvoice' ``` @method camelize @@ -209,11 +215,13 @@ export function camelize(str: string): string { Returns the UpperCamelCase form of a string. ```javascript - 'innerHTML'.classify(); // 'InnerHTML' - 'action_name'.classify(); // 'ActionName' - 'css-class-name'.classify(); // 'CssClassName' - 'my favorite items'.classify(); // 'MyFavoriteItems' - 'private-docs/owner-invoice'.classify(); // 'PrivateDocs/OwnerInvoice' + import { classify } from '@ember/string'; + + classify('innerHTML'); // 'InnerHTML' + classify('action_name'); // 'ActionName' + classify('css-class-name'); // 'CssClassName' + classify('my favorite items'); // 'MyFavoriteItems' + classify('private-docs/owner-invoice'); // 'PrivateDocs/OwnerInvoice' ``` @method classify @@ -230,11 +238,13 @@ export function classify(str: string): string { form of a string. ```javascript - 'innerHTML'.underscore(); // 'inner_html' - 'action_name'.underscore(); // 'action_name' - 'css-class-name'.underscore(); // 'css_class_name' - 'my favorite items'.underscore(); // 'my_favorite_items' - 'privateDocs/ownerInvoice'.underscore(); // 'private_docs/owner_invoice' + import { underscore } from '@ember/string'; + + underscore('innerHTML'); // 'inner_html' + underscore('action_name'); // 'action_name' + underscore('css-class-name'); // 'css_class_name' + underscore('my favorite items'); // 'my_favorite_items' + underscore('privateDocs/ownerInvoice'); // 'private_docs/owner_invoice' ``` @method underscore @@ -250,11 +260,13 @@ export function underscore(str: string): string { Returns the Capitalized form of a string ```javascript - 'innerHTML'.capitalize() // 'InnerHTML' - 'action_name'.capitalize() // 'Action_name' - 'css-class-name'.capitalize() // 'Css-class-name' - 'my favorite items'.capitalize() // 'My favorite items' - 'privateDocs/ownerInvoice'.capitalize(); // 'PrivateDocs/ownerInvoice' + import { capitalize } from '@ember/string'; + + capitalize('innerHTML') // 'InnerHTML' + capitalize('action_name') // 'Action_name' + capitalize('css-class-name') // 'Css-class-name' + capitalize('my favorite items') // 'My favorite items' + capitalize('privateDocs/ownerInvoice'); // 'PrivateDocs/ownerInvoice' ``` @method capitalize @@ -280,7 +292,7 @@ if (ENV.EXTEND_PROTOTYPES.String) { configurable: true, enumerable: false, writeable: true, - value: function() { + value() { return w(this); }, }, @@ -297,7 +309,7 @@ if (ENV.EXTEND_PROTOTYPES.String) { configurable: true, enumerable: false, writeable: true, - value: function(this: string, ...args: any[]) { + value(this: string, ...args: any[]) { return loc(this, args); }, }, @@ -314,7 +326,7 @@ if (ENV.EXTEND_PROTOTYPES.String) { configurable: true, enumerable: false, writeable: true, - value: function() { + value() { return camelize(this); }, }, @@ -331,7 +343,7 @@ if (ENV.EXTEND_PROTOTYPES.String) { configurable: true, enumerable: false, writeable: true, - value: function() { + value() { return decamelize(this); }, }, @@ -348,7 +360,7 @@ if (ENV.EXTEND_PROTOTYPES.String) { configurable: true, enumerable: false, writeable: true, - value: function() { + value() { return dasherize(this); }, }, @@ -365,7 +377,7 @@ if (ENV.EXTEND_PROTOTYPES.String) { configurable: true, enumerable: false, writeable: true, - value: function() { + value() { return underscore(this); }, }, @@ -382,7 +394,7 @@ if (ENV.EXTEND_PROTOTYPES.String) { configurable: true, enumerable: false, writeable: true, - value: function() { + value() { return classify(this); }, }, @@ -399,7 +411,7 @@ if (ENV.EXTEND_PROTOTYPES.String) { configurable: true, enumerable: false, writeable: true, - value: function() { + value() { return capitalize(this); }, }, diff --git a/packages/ember/tests/routing/decoupled_basic_test.js b/packages/ember/tests/routing/decoupled_basic_test.js index 286f8e6b4e9..503d52005b9 100644 --- a/packages/ember/tests/routing/decoupled_basic_test.js +++ b/packages/ember/tests/routing/decoupled_basic_test.js @@ -41,10 +41,20 @@ moduleFor( return this.applicationInstance.lookup(`controller:${name}`); } - handleURLAborts(assert, path) { + handleURLAborts(assert, path, deprecated) { run(() => { let router = this.applicationInstance.lookup('router:main'); - router.handleURL(path).then( + let result; + + if (deprecated !== undefined) { + expectDeprecation(() => { + result = router.handleURL(path); + }); + } else { + result = router.handleURL(path); + } + + result.then( function() { assert.ok(false, 'url: `' + path + '` was NOT to be handled'); }, @@ -2749,33 +2759,15 @@ moduleFor( } ['@test Router `willTransition` hook passes in cancellable transition'](assert) { - // Should hit willTransition 3 times, once for the initial route, and then 2 more times - // for the two handleURL calls below - if (EMBER_ROUTING_ROUTER_SERVICE) { - assert.expect(7); - - this.router.reopen({ - init() { - this._super(...arguments); - this.on('routeWillChange', transition => { - assert.ok(true, 'routeWillChange was called'); - if (transition.intent && transition.intent.url !== '/') { - transition.abort(); - } - }); - }, - }); - } else { - assert.expect(5); - this.router.reopen({ - willTransition(_, _2, transition) { - assert.ok(true, 'willTransition was called'); - if (transition.intent.url !== '/') { - transition.abort(); - } - }, - }); - } + assert.expect(8); + this.router.reopen({ + willTransition(_, _2, transition) { + assert.ok(true, 'willTransition was called'); + if (transition.intent.url !== '/') { + transition.abort(); + } + }, + }); this.router.map(function() { this.route('nork'); @@ -2809,10 +2801,14 @@ moduleFor( }) ); - return this.visit('/').then(() => { - this.handleURLAborts(assert, '/nork'); - this.handleURLAborts(assert, '/about'); - }); + let deprecation = /You attempted to override the "willTransition" method which is deprecated\./; + + return expectDeprecation(() => { + return this.visit('/').then(() => { + this.handleURLAborts(assert, '/nork', deprecation); + this.handleURLAborts(assert, '/about', deprecation); + }); + }, deprecation); } ['@test Aborting/redirecting the transition in `willTransition` prevents LoadingRoute from being entered']( diff --git a/packages/ember/tests/routing/router_service_test/basic_test.js b/packages/ember/tests/routing/router_service_test/basic_test.js index 9dbf901fe9c..601ce099d6f 100644 --- a/packages/ember/tests/routing/router_service_test/basic_test.js +++ b/packages/ember/tests/routing/router_service_test/basic_test.js @@ -79,6 +79,28 @@ moduleFor( }); } + '@test substates survive aborts GH#17430'(assert) { + assert.expect(2); + this.add( + `route:parent.child`, + Route.extend({ + beforeModel(transition) { + transition.abort(); + this.intermediateTransitionTo('parent.sister'); + }, + }) + ); + + return this.visit('/') + .then(() => { + return this.routerService.transitionTo('/child'); + }) + .catch(e => { + assert.equal(this.routerService.currentRouteName, 'parent.sister'); + assert.equal(e.message, 'TransitionAborted'); + }); + } + ['@test RouterService#currentRouteName is correctly set on each transition'](assert) { if (EMBER_ROUTING_ROUTER_SERVICE) { assert.expect(9); diff --git a/yarn.lock b/yarn.lock index 358a6f94bc3..c7dc8409f13 100644 --- a/yarn.lock +++ b/yarn.lock @@ -598,120 +598,120 @@ lodash "^4.17.10" to-fast-properties "^2.0.0" -"@glimmer/compiler@^0.37.0": - version "0.37.0" - resolved "https://registry.yarnpkg.com/@glimmer/compiler/-/compiler-0.37.0.tgz#861d9c8064b54c24895262e1dd6a805cf24b8175" - integrity sha512-h01QJvqzClYw6Y5+DptqaB74KeBz14fsbNlig2O1sH5B2RKXRXo6T/OFSlFO/BHdzPLIrhyrkNQ/pooy2nTNmQ== +"@glimmer/compiler@^0.37.1": + version "0.37.1" + resolved "https://registry.yarnpkg.com/@glimmer/compiler/-/compiler-0.37.1.tgz#a3d59e0b1e51341314d3f8202aa0d4b70dc55173" + integrity sha512-bGdRb52eWZuHEGaIa1Rl0e0f4vPpQtp+gnpsaRwBMmRLqDrCZKdEJ8jCN5bI8TMFbtvP78s/5O0qi/XK+UzO4A== dependencies: - "@glimmer/interfaces" "^0.37.0" - "@glimmer/syntax" "^0.37.0" - "@glimmer/util" "^0.37.0" - "@glimmer/wire-format" "^0.37.0" + "@glimmer/interfaces" "^0.37.1" + "@glimmer/syntax" "^0.37.1" + "@glimmer/util" "^0.37.1" + "@glimmer/wire-format" "^0.37.1" -"@glimmer/encoder@^0.37.0": - version "0.37.0" - resolved "https://registry.yarnpkg.com/@glimmer/encoder/-/encoder-0.37.0.tgz#3689bb8dbdbce4ae45783b447d1a7fcc40c067c2" - integrity sha512-NS5UTeBZd0GRQYpUVQ/sSYriHxAPLSb4z1qlRzWQCfJmovtMRRYgcFpyRck/ckmFsXdlfDL+Nu0hJLOcYU+oXQ== +"@glimmer/encoder@^0.37.1": + version "0.37.1" + resolved "https://registry.yarnpkg.com/@glimmer/encoder/-/encoder-0.37.1.tgz#5cd95e04043c74ee4253811a768871b02fcd12c5" + integrity sha512-XvtlyFYibYxwYBfak5NK62u/iNtOgP1hbccxJNuDgK2pwYakrnZX6KSOg/6QnFNknjJkSQ/cwpW696ROliPTfw== "@glimmer/env@^0.1.7": version "0.1.7" resolved "https://registry.yarnpkg.com/@glimmer/env/-/env-0.1.7.tgz#fd2d2b55a9029c6b37a6c935e8c8871ae70dfa07" integrity sha1-/S0rVakCnGs3psk16MiHGucN+gc= -"@glimmer/interfaces@^0.37.0": - version "0.37.0" - resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.37.0.tgz#7e16dc3b44369ea084e13064dd30ec14ed86623f" - integrity sha512-tLvn6O0SqPotkQy/I/PBgnUorho+kim7psitpAZQMljOY8ocSf0+dfIY4GKQsTqefbpHbmdu4dYBhyy09xDJag== +"@glimmer/interfaces@^0.37.1": + version "0.37.1" + resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.37.1.tgz#44328c49d835445fda26efa7c8d5463ee2e626ed" + integrity sha512-ys5I6iEeaPvSPY9dn6uc9NAh9HkL8fnUZjTHJhlKV5nFv5qqXhBK8hFE86fVXqGRtXLHfOa90pg75vLXgw7u/g== dependencies: - "@glimmer/wire-format" "^0.37.0" + "@glimmer/wire-format" "^0.37.1" "@simple-dom/interface" "1.4.0" -"@glimmer/low-level@^0.37.0": - version "0.37.0" - resolved "https://registry.yarnpkg.com/@glimmer/low-level/-/low-level-0.37.0.tgz#ef49a49abb829c5ffcf539c3408cc545df688875" - integrity sha512-OFPE0KVUbSsQhpJpwI2zmG+1+y0NkpSJzn4qQ1kuKzpk50TABeTBo8ycqJFTgYh/cjus/W212G2YgEN/YXZqZw== - -"@glimmer/node@^0.37.0": - version "0.37.0" - resolved "https://registry.yarnpkg.com/@glimmer/node/-/node-0.37.0.tgz#cbf51153ec3d3e858314b95f249c8c80f458fa23" - integrity sha512-f2F/ttR1J3pkOLBGEuR/I+Z4tNKLuii5983LnUB6UDW0DKbz3DZwkejVcYr6wxhaU5QuD5RWl+AkaREOfZuh7w== - dependencies: - "@glimmer/interfaces" "^0.37.0" - "@glimmer/runtime" "^0.37.0" - -"@glimmer/opcode-compiler@^0.37.0": - version "0.37.0" - resolved "https://registry.yarnpkg.com/@glimmer/opcode-compiler/-/opcode-compiler-0.37.0.tgz#26b37cc3a569ba88377e373d602f518b65b36cc3" - integrity sha512-a+wMGHXTnzrvapFzyxx7tE73msnnIFCDy7O5vH/gnwNqy8VEGeXperJDpwZxxn0SnSVtwvCPJ+85MXFDmcfrvQ== - dependencies: - "@glimmer/encoder" "^0.37.0" - "@glimmer/interfaces" "^0.37.0" - "@glimmer/program" "^0.37.0" - "@glimmer/reference" "^0.37.0" - "@glimmer/util" "^0.37.0" - "@glimmer/vm" "^0.37.0" - "@glimmer/wire-format" "^0.37.0" - -"@glimmer/program@^0.37.0": - version "0.37.0" - resolved "https://registry.yarnpkg.com/@glimmer/program/-/program-0.37.0.tgz#25aaa78363216a47074246c4ddea0d6241e3295b" - integrity sha512-wsu9R5+ytndMJg4AXBGm8dJax3q/vk5PkSxl8VHi5jxje4Ja/8AjJl7SpE2nRCfmLpq8rV6vHSmZaKY1tSRANQ== - dependencies: - "@glimmer/encoder" "^0.37.0" - "@glimmer/interfaces" "^0.37.0" - "@glimmer/util" "^0.37.0" - -"@glimmer/reference@^0.37.0": - version "0.37.0" - resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.37.0.tgz#5910810d932a03f5bb62014caa9733cecf0683ed" - integrity sha512-NCYlu9X0ok7pJiGb/Uevv/84xA1Z49PHDUcDrN0X/bDzSI/zoFy//wPevjPO/+ihBtD5Hy9Ve3eC/lfSSWsWVA== - dependencies: - "@glimmer/util" "^0.37.0" - -"@glimmer/runtime@^0.37.0": - version "0.37.0" - resolved "https://registry.yarnpkg.com/@glimmer/runtime/-/runtime-0.37.0.tgz#b1ec8303f6a97141310bb4fe3ecac7396311381a" - integrity sha512-U9FKj4id2HwA1FTVJLFWpCIsICOaIZklwhTHHd7XrtoETdFaesn7/4e3fH/LNx0BrPkXy6dfD/9I7izLFM4ToQ== - dependencies: - "@glimmer/interfaces" "^0.37.0" - "@glimmer/low-level" "^0.37.0" - "@glimmer/program" "^0.37.0" - "@glimmer/reference" "^0.37.0" - "@glimmer/util" "^0.37.0" - "@glimmer/vm" "^0.37.0" - "@glimmer/wire-format" "^0.37.0" +"@glimmer/low-level@^0.37.1": + version "0.37.1" + resolved "https://registry.yarnpkg.com/@glimmer/low-level/-/low-level-0.37.1.tgz#307f818b20b8df43c04750c01eb92ead2af4b455" + integrity sha512-CIscEE0BKNMlx6PCNUJVyPWYGCwtfoYTbwUIyQdY5IeVXLvBweT8fteMmHv4HapsPCKubPPkvwwm3bgBLSq3dA== + +"@glimmer/node@^0.37.1": + version "0.37.1" + resolved "https://registry.yarnpkg.com/@glimmer/node/-/node-0.37.1.tgz#f401e366b6b6d71a16f9aa7e3fddaeb7f9cf7b3b" + integrity sha512-eQiIhfx3MJqXhjDTqQMtzAfI+IJ+5aw0bLXjBikXHCau/lpSS6EqO12WZR1QN+K1wchdVlYkseme4wEs89fyag== + dependencies: + "@glimmer/interfaces" "^0.37.1" + "@glimmer/runtime" "^0.37.1" + +"@glimmer/opcode-compiler@^0.37.1": + version "0.37.1" + resolved "https://registry.yarnpkg.com/@glimmer/opcode-compiler/-/opcode-compiler-0.37.1.tgz#e69eaa227ea85f2b6316f447617fedef58a38ca3" + integrity sha512-Nf6BOgcSfOUDDlExNWqjGqNUx6m6biebnMX6aEwfJwD/JrnwQuMo20/K4d8+6ZvJwqwn1Bwth9Jk3rsp7caLAw== + dependencies: + "@glimmer/encoder" "^0.37.1" + "@glimmer/interfaces" "^0.37.1" + "@glimmer/program" "^0.37.1" + "@glimmer/reference" "^0.37.1" + "@glimmer/util" "^0.37.1" + "@glimmer/vm" "^0.37.1" + "@glimmer/wire-format" "^0.37.1" + +"@glimmer/program@^0.37.1": + version "0.37.1" + resolved "https://registry.yarnpkg.com/@glimmer/program/-/program-0.37.1.tgz#440efc86fdc2e870dfca9c678c1986c84e8ab5dc" + integrity sha512-HVaF3U1bCTH7cryMccgkxHn7/IzLfy9LGbyQK0wgeiHsY+xCSBb7Kq1WP4LPUH8+84/BzEpuLJN7u2n5GGdZlw== + dependencies: + "@glimmer/encoder" "^0.37.1" + "@glimmer/interfaces" "^0.37.1" + "@glimmer/util" "^0.37.1" + +"@glimmer/reference@^0.37.1": + version "0.37.1" + resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.37.1.tgz#a444a56eb3e79d9d6d991c423f32c6491778d57b" + integrity sha512-nGelUwaQ1jBnI1OH80JV3cMiWfjgsi399y61ajARiHjl1DK8gXchZ0qLpNu83Sa5UbL09AMbVaUTb8xsy6MFwA== + dependencies: + "@glimmer/util" "^0.37.1" + +"@glimmer/runtime@^0.37.1": + version "0.37.1" + resolved "https://registry.yarnpkg.com/@glimmer/runtime/-/runtime-0.37.1.tgz#3f690f003d00af710823449afadeaf01e379533e" + integrity sha512-ujkaODl2DDrwOttXZTcobH8ML4eSpgepnPpsYYEafCBXxKxkTWHV7JzSuuh3/hnHZVdrRO/vP6zIJ0P86FXBLQ== + dependencies: + "@glimmer/interfaces" "^0.37.1" + "@glimmer/low-level" "^0.37.1" + "@glimmer/program" "^0.37.1" + "@glimmer/reference" "^0.37.1" + "@glimmer/util" "^0.37.1" + "@glimmer/vm" "^0.37.1" + "@glimmer/wire-format" "^0.37.1" "@simple-dom/interface" "^1.4.0" -"@glimmer/syntax@^0.37.0": - version "0.37.0" - resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.37.0.tgz#3d91aef9ecad70e70654584f84552c195f3280a6" - integrity sha512-DTWPjTK6f7sXAYIqLjC7lfNpONyY21jmHjhzAbC6nbEfZ3DegmogWDBLCO8dhun1bAF4T2FL7+gLho698UqBiw== +"@glimmer/syntax@^0.37.1": + version "0.37.1" + resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.37.1.tgz#f3c507122f7c4b859ce712e0c5bbc43608ca12db" + integrity sha512-DtSRWrbZlgAvLOR62slBvMgUmcnYxfq4Jv5uqCqD4/DUrjV2ezmOMhDFW4zxAVz55luqx9/900XHYiUzsicPyA== dependencies: - "@glimmer/interfaces" "^0.37.0" - "@glimmer/util" "^0.37.0" + "@glimmer/interfaces" "^0.37.1" + "@glimmer/util" "^0.37.1" handlebars "^4.0.6" simple-html-tokenizer "^0.5.6" -"@glimmer/util@^0.37.0": - version "0.37.0" - resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.37.0.tgz#962937c187b05a8a371d5b064674e74e838411c7" - integrity sha512-gwApoQ4xAAPKUBd9IpKYqW3UojZv45gIH+hxi9G9BbZWQZd1f9qIUHwk6JP+bNQ4zvxv9z4QEL1pOCWLx0TE3w== +"@glimmer/util@^0.37.1": + version "0.37.1" + resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.37.1.tgz#b6dafd36134556053121fc8a8ffceb68e490a4b5" + integrity sha512-Of58Of07fsT8JOkok/tXJvewEdI6LzDxdlIIcdhv6iOJgYUsJUQKUYf6XY+5o/rtsrByPQ5da2WwHbLAcpq0aQ== -"@glimmer/vm@^0.37.0": - version "0.37.0" - resolved "https://registry.yarnpkg.com/@glimmer/vm/-/vm-0.37.0.tgz#34268bb46a69e551379ccc554773e80900461c24" - integrity sha512-1H0Vag7kgZKJ6hCFg9Lv5OA0Q5b130atdnbKb79AS0OUpT3G7f64h/eCIlxMxhF+YhRi2nrD5Hb5bVuuD8Pszg== +"@glimmer/vm@^0.37.1": + version "0.37.1" + resolved "https://registry.yarnpkg.com/@glimmer/vm/-/vm-0.37.1.tgz#26ad736b1228dac88fd8c1b9ce2b8ffefa91bdc0" + integrity sha512-EIhJoDrXX+WW3vyovTiEQSYwdbAQgaJKGR25mkMKGLSwvIu4RcX2d9uUPSkm+pBvijHNk2f67q86k1s6j8cBIQ== dependencies: - "@glimmer/interfaces" "^0.37.0" - "@glimmer/program" "^0.37.0" - "@glimmer/util" "^0.37.0" + "@glimmer/interfaces" "^0.37.1" + "@glimmer/program" "^0.37.1" + "@glimmer/util" "^0.37.1" -"@glimmer/wire-format@^0.37.0": - version "0.37.0" - resolved "https://registry.yarnpkg.com/@glimmer/wire-format/-/wire-format-0.37.0.tgz#cd26f3d260d92a9e5d2873bd0234b54556ab3e85" - integrity sha512-wMBCo9cosxKzcsHuPlFzd+WHS8AqJoNYYK+LcpgLZRhjXO55oeirEQcwthV1uHdYs0CK7i+HcljuMDdJk2heww== +"@glimmer/wire-format@^0.37.1": + version "0.37.1" + resolved "https://registry.yarnpkg.com/@glimmer/wire-format/-/wire-format-0.37.1.tgz#34906e320d38bc65b1730b5f78890b184211a0d5" + integrity sha512-iDj8D1eCVDmcsNUcz5epdOCN6Gt53W3cMsS2qAkf2H6REiXQ9kG7ySIGIdahNsLT/f21MT+JzqawylZR0hrw0w== dependencies: - "@glimmer/util" "^0.37.0" + "@glimmer/util" "^0.37.1" "@simple-dom/document@^1.4.0": version "1.4.0" @@ -7441,10 +7441,10 @@ route-recognizer@^0.3.4: resolved "https://registry.yarnpkg.com/route-recognizer/-/route-recognizer-0.3.4.tgz#39ab1ffbce1c59e6d2bdca416f0932611e4f3ca3" integrity sha512-2+MhsfPhvauN1O8KaXpXAOfR/fwe8dnUXVM+xw7yt40lJRfPVQxV6yryZm0cgRvAj5fMF/mdRZbL2ptwbs5i2g== -router_js@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/router_js/-/router_js-6.2.1.tgz#60130764ad3ed41592a41b9a0bb9133b3edc7d84" - integrity sha512-DL0FPuLZUkk7/mhIcXK3SO7215gyOVcQinPtdcLRHKJDt8GGqN6c0pNr0+vuE1IQX7QW1YyuIxBICZ0egzn8Dg== +router_js@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/router_js/-/router_js-6.2.2.tgz#173fe28f004d437a150a42be8220a0341d8df4d8" + integrity sha512-gjNl8cxJYHXxLKe/BimTuXLANAb6AVIpK5nK4XvY5d5Do69RMr80YrNFmfHvgD31p0qXUDlz3+fcfAn7ylqIjg== dependencies: "@types/node" "^10.5.5"