From 62e28165afc0d6d3b7c0a8d81b9465cad7cbad3f Mon Sep 17 00:00:00 2001 From: Godfrey Chan Date: Tue, 20 Apr 2021 01:34:20 -0700 Subject: [PATCH] [BUGFIX beta] [DEPRECATION] Deprecate `@foo={{helper}}` Per [RFC 496](https://github.com/emberjs/rfcs/blob/master/text/0496-handlebars-strict-mode.md#3-no-implicit-invocation-of-argument-less-helpers), this commit deprecates the implicit invocation of argument-less helpers and requires explicit parenthesis if: 1. Non-strict mode, AND 2. `helper` is a free variable (not `this.helper`, `@helper` or a local variable), AND 3. No arguments are provided to the helper, AND 4. It's in a component invocation's named argument position (not `
` or ``), AND 5. Not parenthesized (not `@foo={{(helper)}}`), AND 6. Not interpolated (not `@foo="{{helper}}"`). The cases in real apps where all of the above are true should be quite rare, as most helpers take at least one argument. This is probably not the most efficient/minimal changes to the compiler infrastructure, but I chose to optimize for making the change easier to remove/rollback (i.e. adding new nodes instead of changing existing ones) as we won't be needing this for very long. This also bumps `@glimmer/*` to latest which also brings in the bugfix commit https://github.com/glimmerjs/glimmer-vm/pull/1293. --- package.json | 26 +- .../-internals/glimmer/lib/environment.ts | 8 + .../integration/application/engine-test.js | 4 +- .../integration/application/rendering-test.js | 10 +- .../components/curly-components-test.js | 2 +- .../link-to/query-params-angle-test.js | 4 +- .../components/link-to/routing-angle-test.js | 2 +- .../template-only-components-test.js | 2 +- .../custom-modifier-manager-test.js | 22 +- .../integration/helpers/custom-helper-test.js | 107 ++++++- .../tests/integration/helpers/yield-test.js | 22 ++ .../tests/integration/syntax/each-test.js | 4 +- .../tests/integration/syntax/let-test.js | 6 +- .../tests/integration/syntax/with-test.js | 6 +- yarn.lock | 262 +++++++++--------- 15 files changed, 321 insertions(+), 166 deletions(-) diff --git a/package.json b/package.json index cc05ff66278..0f3f175b7f6 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "@babel/plugin-transform-block-scoping": "^7.8.3", "@babel/plugin-transform-object-assign": "^7.8.3", "@ember/edition-utils": "^1.2.0", - "@glimmer/vm-babel-plugins": "0.77.5", + "@glimmer/vm-babel-plugins": "0.78.2", "babel-plugin-debug-macros": "^0.3.3", "babel-plugin-filter-imports": "^4.0.0", "broccoli-concat": "^4.2.4", @@ -75,19 +75,19 @@ }, "devDependencies": { "@babel/preset-env": "^7.9.5", - "@glimmer/compiler": "0.77.5", + "@glimmer/compiler": "0.78.2", "@glimmer/env": "^0.1.7", - "@glimmer/global-context": "0.77.5", - "@glimmer/interfaces": "0.77.5", - "@glimmer/manager": "0.77.5", - "@glimmer/destroyable": "0.77.5", - "@glimmer/owner": "0.77.5", - "@glimmer/node": "0.77.5", - "@glimmer/opcode-compiler": "0.77.5", - "@glimmer/program": "0.77.5", - "@glimmer/reference": "0.77.5", - "@glimmer/runtime": "0.77.5", - "@glimmer/validator": "0.77.5", + "@glimmer/global-context": "0.78.2", + "@glimmer/interfaces": "0.78.2", + "@glimmer/manager": "0.78.2", + "@glimmer/destroyable": "0.78.2", + "@glimmer/owner": "0.78.2", + "@glimmer/node": "0.78.2", + "@glimmer/opcode-compiler": "0.78.2", + "@glimmer/program": "0.78.2", + "@glimmer/reference": "0.78.2", + "@glimmer/runtime": "0.78.2", + "@glimmer/validator": "0.78.2", "@simple-dom/document": "^1.4.0", "@types/qunit": "^2.9.1", "@types/rsvp": "^4.0.3", diff --git a/packages/@ember/-internals/glimmer/lib/environment.ts b/packages/@ember/-internals/glimmer/lib/environment.ts index 5e420176c3a..847642050f0 100644 --- a/packages/@ember/-internals/glimmer/lib/environment.ts +++ b/packages/@ember/-internals/glimmer/lib/environment.ts @@ -116,6 +116,14 @@ const VM_DEPRECATION_OVERRIDES: (DeprecationOptions & { enabled: '3.26.0', }, }, + { + id: 'argument-less-helper-paren-less-invocation', + until: '4.0.0', + for: 'ember-source', + since: { + enabled: '3.27.0', + }, + }, ]; const VM_ASSERTION_OVERRIDES: { id: string; message: string }[] = []; diff --git a/packages/@ember/-internals/glimmer/tests/integration/application/engine-test.js b/packages/@ember/-internals/glimmer/tests/integration/application/engine-test.js index b0e8c891186..49f3499b046 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/application/engine-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/application/engine-test.js @@ -294,7 +294,7 @@ moduleFor( `); expectDeprecation( - /The `[^`]+` property(?: path)? was used in a template for the `[^`]+` component without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ + /The `[^`]+` property(?: path)? was used in the `[^`]+` template without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ ); this.add('template:application', sharedTemplate); @@ -345,7 +345,7 @@ moduleFor( this.assert.expect(2); expectDeprecation( - /The `[^`]+` property(?: path)? was used in a template for the `[^`]+` component without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ + /The `[^`]+` property(?: path)? was used in the `[^`]+` template without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ ); let sharedLayout = compile(strip` diff --git a/packages/@ember/-internals/glimmer/tests/integration/application/rendering-test.js b/packages/@ember/-internals/glimmer/tests/integration/application/rendering-test.js index 2198da8943c..ec4ff535dbb 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/application/rendering-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/application/rendering-test.js @@ -107,7 +107,7 @@ moduleFor( ['@test it can access the model provided by the route via implicit this fallback']() { expectDeprecation( - /The `[^`]+` property(?: path)? was used in a template for the `[^`]+` component without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ + /The `[^`]+` property(?: path)? was used in the `[^`]+` template without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ ); this.add( @@ -143,7 +143,7 @@ moduleFor( async ['@test interior mutations on the model with set'](assert) { expectDeprecation( - /The `[^`]+` property(?: path)? was used in a template for the `[^`]+` component without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ + /The `[^`]+` property(?: path)? was used in the `[^`]+` template without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ ); this.router.map(function () { @@ -204,7 +204,7 @@ moduleFor( async ['@test interior mutations on the model with tracked properties'](assert) { expectDeprecation( - /The `[^`]+` property(?: path)? was used in a template for the `[^`]+` component without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ + /The `[^`]+` property(?: path)? was used in the `[^`]+` template without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ ); class Model { @@ -272,7 +272,7 @@ moduleFor( async ['@test exterior mutations on the model with set'](assert) { expectDeprecation( - /The `[^`]+` property(?: path)? was used in a template for the `[^`]+` component without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ + /The `[^`]+` property(?: path)? was used in the `[^`]+` template without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ ); this.router.map(function () { @@ -333,7 +333,7 @@ moduleFor( async ['@test exterior mutations on the model with tracked properties'](assert) { expectDeprecation( - /The `[^`]+` property(?: path)? was used in a template for the `[^`]+` component without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ + /The `[^`]+` property(?: path)? was used in the `[^`]+` template without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ ); this.router.map(function () { diff --git a/packages/@ember/-internals/glimmer/tests/integration/components/curly-components-test.js b/packages/@ember/-internals/glimmer/tests/integration/components/curly-components-test.js index 032cfa50f03..712f68f7d4e 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/components/curly-components-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/components/curly-components-test.js @@ -3883,7 +3883,7 @@ moduleFor( ['@test can use `{{component.foo}}` in a template GH#19313']() { expectDeprecation( - /The `[^`]+` property(?: path)? was used in a template for the `[^`]+` component without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ + /The `[^`]+` property(?: path)? was used in the `[^`]+` template without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ ); this.registerComponent('foo-bar', { diff --git a/packages/@ember/-internals/glimmer/tests/integration/components/link-to/query-params-angle-test.js b/packages/@ember/-internals/glimmer/tests/integration/components/link-to/query-params-angle-test.js index ab8467d9007..47ad96e478f 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/components/link-to/query-params-angle-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/components/link-to/query-params-angle-test.js @@ -144,7 +144,7 @@ moduleFor( ) { this.addTemplate( 'index', - `Index` + `Index` ); await this.visit('/'); @@ -163,7 +163,7 @@ moduleFor( async [`@test it doesn't update controller QP properties on current route when invoked (empty query-params obj, inferred route)`]( assert ) { - this.addTemplate('index', `Index`); + this.addTemplate('index', `Index`); await this.visit('/'); diff --git a/packages/@ember/-internals/glimmer/tests/integration/components/link-to/routing-angle-test.js b/packages/@ember/-internals/glimmer/tests/integration/components/link-to/routing-angle-test.js index 65eec9a144e..60ac6577dac 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/components/link-to/routing-angle-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/components/link-to/routing-angle-test.js @@ -2085,7 +2085,7 @@ moduleFor( this.addTemplate( 'index', - `Index` + `Index` ); await this.visit('/'); diff --git a/packages/@ember/-internals/glimmer/tests/integration/components/template-only-components-test.js b/packages/@ember/-internals/glimmer/tests/integration/components/template-only-components-test.js index 494072aa523..22896382648 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/components/template-only-components-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/components/template-only-components-test.js @@ -198,7 +198,7 @@ if (ENV._TEMPLATE_ONLY_GLIMMER_COMPONENTS) { ['@test it renders named arguments as reflected properties']() { expectDeprecation( - /The `[^`]+` property(?: path)? was used in a template for the `[^`]+` component without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ + /The `[^`]+` property(?: path)? was used in the `[^`]+` template without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ ); this.registerTemplateOnlyComponent('foo-bar', '|{{foo}}|{{this.bar}}|'); diff --git a/packages/@ember/-internals/glimmer/tests/integration/custom-modifier-manager-test.js b/packages/@ember/-internals/glimmer/tests/integration/custom-modifier-manager-test.js index 508dfc567ed..51f639d9e18 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/custom-modifier-manager-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/custom-modifier-manager-test.js @@ -1,5 +1,11 @@ import { DEBUG } from '@glimmer/env'; -import { moduleFor, RenderingTestCase, runTask, defineSimpleModifier } from 'internal-test-helpers'; +import { + moduleFor, + RenderingTestCase, + runTask, + defineSimpleHelper, + defineSimpleModifier, +} from 'internal-test-helpers'; import { Component } from '@ember/-internals/glimmer'; import { setModifierManager, modifierCapabilities } from '@glimmer/manager'; @@ -644,6 +650,20 @@ moduleFor( }); }, /Cannot use the \(modifier\) keyword yet, as it has not been implemented/); } + + '@feature(EMBER_DYNAMIC_HELPERS_AND_MODIFIERS) Can use a dynamic modifier with a nested dynamic helper'() { + let foo = defineSimpleHelper(() => 'Hello, world!'); + let bar = defineSimpleModifier((element, [value]) => (element.innerHTML = value)); + + this.registerComponent('baz', { + template: '
', + ComponentClass: Component.extend({ tagName: '', foo, bar }), + }); + + this.render(''); + this.assertHTML('
Hello, world!
'); + this.assertStableRerender(); + } } ); diff --git a/packages/@ember/-internals/glimmer/tests/integration/helpers/custom-helper-test.js b/packages/@ember/-internals/glimmer/tests/integration/helpers/custom-helper-test.js index ba4bb014444..dcba0e131bf 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/helpers/custom-helper-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/helpers/custom-helper-test.js @@ -36,7 +36,7 @@ moduleFor( ['@test it does not resolve helpers with a `.` (period)']() { expectDeprecation( - /The `[^`]+` property(?: path)? was used in a template for the `[^`]+` component without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ + /The `[^`]+` property(?: path)? was used in the `[^`]+` template without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ ); this.registerHelper('hello.world', () => 'hello world'); @@ -826,6 +826,20 @@ moduleFor( }, /Cannot use the \(helper\) keyword yet, as it has not been implemented/); } + '@feature(EMBER_DYNAMIC_HELPERS_AND_MODIFIERS) Can use a dynamic helper with nested helpers'() { + let foo = defineSimpleHelper(() => 'world!'); + let bar = defineSimpleHelper((value) => 'Hello, ' + value); + + this.registerComponent('baz', { + template: '{{this.bar (this.foo)}}', + ComponentClass: Component.extend({ foo, bar }), + }); + + this.render(''); + this.assertText('Hello, world!'); + this.assertStableRerender(); + } + ['@test helpers are not computed eagerly when used with if expressions'](assert) { this.registerHelper('is-ok', () => 'hello'); this.registerHelper('throws-error', () => assert.ok(false, 'helper was computed eagerly')); @@ -909,4 +923,95 @@ if (DEBUG) { } } ); + + moduleFor( + 'Helpers test: argument-less helper invocation in named arguments position', + class extends RenderingTestCase { + constructor() { + super(...arguments); + + this.registerComponent('bar', { + template: '[{{is-string @content}}][{{@content}}]', + }); + + this.registerHelper('is-string', ([value]) => typeof value === 'string'); + } + + ['@test invoking an argument-less helper without parens in named argument position is deprecated']() { + this.registerHelper('foo', () => 'Hello, world!'); + + expectDeprecation( + () => this.render('', { foo: 'Not it!' }), + new RegExp( + /The `foo` helper was used in the `-top-level` template as /.source + + /`@content={{foo}}`\. This is ambigious between wanting the `@content` /.source + + /argument to be the `foo` helper itself, or the result of invoking the /.source + + /`foo` helper \(current behavior\)\. This implicit invocation behavior /.source + + /has been deprecated\./.source + ) + ); + + this.assertText('[true][Hello, world!]'); + this.assertStableRerender(); + } + + ['@test invoking an argument-less helper with parens in named argument position is not deprecated']() { + this.registerHelper('foo', () => 'Hello, world!'); + + expectNoDeprecation(() => this.render('', { foo: 'Not it!' })); + + this.assertText('[true][Hello, world!]'); + this.assertStableRerender(); + } + + ['@test invoking an argument-less helper with quotes in named argument position is not deprecated']() { + this.registerHelper('foo', () => 'Hello, world!'); + + expectNoDeprecation(() => this.render('', { foo: 'Not it!' })); + + this.assertText('[true][Hello, world!]'); + this.assertStableRerender(); + } + + ['@test passing a local helper in named argument position is not deprecated']() { + let foo = defineSimpleHelper(() => 'Hello, world!'); + + expectNoDeprecation(() => + this.render(`{{#let this.foo as |foo|}}{{/let}}`, { foo }) + ); + + this.assertText('[false][Hello, world!]'); + this.assertStableRerender(); + } + + // TODO: this one really should work, and there is a passing test in glimmer-vm, + // but somehow it doesn't work here. This is almost certainly a VM bug as something + // is trying to call `block.compile()` but `block` is the reference for `this.foo`. + // So the execution stack is probably off-by-one or something. + + ['@test invoking a local helper with parens in named argument position is not deprecated']() { + let foo = defineSimpleHelper(() => 'Hello, world!'); + + expectNoDeprecation(() => + this.render(`{{#let this.foo as |foo|}}{{/let}}`, { foo }) + ); + + this.assertText('[true][Hello, world!]'); + this.assertStableRerender(); + } + + // TODO: this one doesn't work yet, and there is a failing test in glimmer-vm + + ['@skip invoking a helper with quotes in named argument position is not deprecated']() { + let foo = defineSimpleHelper(() => 'Hello, world!'); + + expectNoDeprecation(() => + this.render(`{{#let this.foo as |foo|}}{{/let}}`, { foo }) + ); + + this.assertText('[true][Hello, world!]'); + this.assertStableRerender(); + } + } + ); } diff --git a/packages/@ember/-internals/glimmer/tests/integration/helpers/yield-test.js b/packages/@ember/-internals/glimmer/tests/integration/helpers/yield-test.js index 82a4d2f7d35..b444d3097e7 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/helpers/yield-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/helpers/yield-test.js @@ -53,6 +53,28 @@ moduleFor( this.assertText('[In layout:] [In block:] Seattle'); } + ['@feature(EMBER_NAMED_BLOCKS) <:else> and <:inverse> named blocks']() { + this.registerComponent('yielder', { + template: + '[:else][{{has-block "else"}}][{{yield to="else"}}]' + + '[:inverse][{{has-block "inverse"}}][{{yield to="inverse"}}]', + }); + + this.render( + '[]' + + '[<:else>Hello]' + + '[<:inverse>Goodbye]' + ); + + this.assertText( + '[[:else][false][][:inverse][false][]]' + + '[[:else][true][Hello][:inverse][true][Hello]]' + + '[[:else][true][Goodbye][:inverse][true][Goodbye]]' + ); + + this.assertStableRerender(); + } + ['@test templates should yield to block inside a nested component']() { this.registerComponent('outer-comp', { template: '
[In layout:] {{yield}}
', diff --git a/packages/@ember/-internals/glimmer/tests/integration/syntax/each-test.js b/packages/@ember/-internals/glimmer/tests/integration/syntax/each-test.js index 33bac1c5f01..07a9ebb3f79 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/syntax/each-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/syntax/each-test.js @@ -732,7 +732,7 @@ class EachTest extends AbstractEachTest { ['@test the scoped variable is not available outside the {{#each}} block.']() { expectDeprecation( - /The `[^`]+` property(?: path)? was used in a template for the `[^`]+` component without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ + /The `[^`]+` property(?: path)? was used in the `[^`]+` template without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ ); this.makeList(['Yehuda']); @@ -953,7 +953,7 @@ class EachTest extends AbstractEachTest { ['@test the scoped variable is not available outside the {{#each}} block']() { expectDeprecation( - /The `[^`]+` property(?: path)? was used in a template for the `[^`]+` component without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ + /The `[^`]+` property(?: path)? was used in the `[^`]+` template without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ ); let first = this.createList(['Limbo']); diff --git a/packages/@ember/-internals/glimmer/tests/integration/syntax/let-test.js b/packages/@ember/-internals/glimmer/tests/integration/syntax/let-test.js index 1bb3d50eed6..a08c411f2a9 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/syntax/let-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/syntax/let-test.js @@ -97,7 +97,7 @@ moduleFor( ['@test the scoped variable is not available outside the {{#let}} block.']() { expectDeprecation( - /The `[^`]+` property(?: path)? was used in a template for the `[^`]+` component without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ + /The `[^`]+` property(?: path)? was used in the `[^`]+` template without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ ); this.render(`{{name}}-{{#let this.other as |name|}}{{name}}{{/let}}-{{name}}`, { @@ -247,7 +247,7 @@ moduleFor( ['@test the scoped variable is not available outside the {{#let}} block']() { expectDeprecation( - /The `[^`]+` property(?: path)? was used in a template for the `[^`]+` component without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ + /The `[^`]+` property(?: path)? was used in the `[^`]+` template without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ ); this.render( @@ -332,7 +332,7 @@ moduleFor( ['@test nested {{#let}} blocks should have access to root context']() { expectDeprecation( - /The `[^`]+` property(?: path)? was used in a template for the `[^`]+` component without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ + /The `[^`]+` property(?: path)? was used in the `[^`]+` template without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ ); this.render( diff --git a/packages/@ember/-internals/glimmer/tests/integration/syntax/with-test.js b/packages/@ember/-internals/glimmer/tests/integration/syntax/with-test.js index a99458c9c43..b3e44698d1d 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/syntax/with-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/syntax/with-test.js @@ -106,7 +106,7 @@ moduleFor( ['@test the scoped variable is not available outside the {{#with}} block.']() { expectDeprecation( - /The `[^`]+` property(?: path)? was used in a template for the `[^`]+` component without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ + /The `[^`]+` property(?: path)? was used in the `[^`]+` template without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ ); this.render(`{{name}}-{{#with this.other as |name|}}{{name}}{{/with}}-{{name}}`, { @@ -295,7 +295,7 @@ moduleFor( ['@test the scoped variable is not available outside the {{#with}} block']() { expectDeprecation( - /The `[^`]+` property(?: path)? was used in a template for the `[^`]+` component without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ + /The `[^`]+` property(?: path)? was used in the `[^`]+` template without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ ); this.render( @@ -380,7 +380,7 @@ moduleFor( ['@test nested {{#with}} blocks should have access to root context']() { expectDeprecation( - /The `[^`]+` property(?: path)? was used in a template for the `[^`]+` component without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ + /The `[^`]+` property(?: path)? was used in the `[^`]+` template without using `this`. This fallback behavior has been deprecated, all properties must be looked up on `this` when used in the template: {{[^}]+}}/ ); this.render( diff --git a/yarn.lock b/yarn.lock index b387ddcfff1..ea432d8bb53 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1588,194 +1588,194 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@glimmer/compiler@0.77.5": - version "0.77.5" - resolved "https://registry.yarnpkg.com/@glimmer/compiler/-/compiler-0.77.5.tgz#f12cf9cff8b8a8c94e8edffa6f967caf3ff92776" - integrity sha512-WXNfEtqmoAur2+aU0qZnE1cK6GVucwUlCHJd6756FrFxTcayl/Zj6+Ti5yfTSnqXnYo2rRWn0FCc/WZ0wGlTGw== - dependencies: - "@glimmer/interfaces" "0.77.5" - "@glimmer/syntax" "0.77.5" - "@glimmer/util" "0.77.5" - "@glimmer/wire-format" "0.77.5" +"@glimmer/compiler@0.78.2": + version "0.78.2" + resolved "https://registry.yarnpkg.com/@glimmer/compiler/-/compiler-0.78.2.tgz#b02d4f1027770446637ffcce41bb5dfc71076c82" + integrity sha512-tI0vkwz4qxsTsOOrbJpXZiOQvDwl5dOyPbeq5Z0Fca1byaAPhxPgq+lvuSny0bDYz+T+NGS0B+9MB4yLMnCl7Q== + dependencies: + "@glimmer/interfaces" "0.78.2" + "@glimmer/syntax" "0.78.2" + "@glimmer/util" "0.78.2" + "@glimmer/wire-format" "0.78.2" "@simple-dom/interface" "^1.4.0" -"@glimmer/destroyable@0.77.5": - version "0.77.5" - resolved "https://registry.yarnpkg.com/@glimmer/destroyable/-/destroyable-0.77.5.tgz#c55089f2007a42a59058784d75b30784ed138bc7" - integrity sha512-s8cVbb+WlE6tTpwRhzOhlwO9PSokjC3s7wzkD6gHCQIPQivc8BHqZ2czUWfQFhHZdYVk4dg04pFMq+y8m3qC0Q== +"@glimmer/destroyable@0.78.2": + version "0.78.2" + resolved "https://registry.yarnpkg.com/@glimmer/destroyable/-/destroyable-0.78.2.tgz#13a3eab3397f25b1a52e7dc3f9f81cf7ceec621c" + integrity sha512-cZ+fXp4PPf9CkDV8GY8A8sd5IJ367uEDk99n0DNBLcypeZU0REb8rCIV/GzJoCUcCnT9FzDXuFGgelp23x2tFw== dependencies: "@glimmer/env" "0.1.7" - "@glimmer/global-context" "0.77.5" - "@glimmer/interfaces" "0.77.5" - "@glimmer/util" "0.77.5" + "@glimmer/global-context" "0.78.2" + "@glimmer/interfaces" "0.78.2" + "@glimmer/util" "0.78.2" -"@glimmer/encoder@0.77.5": - version "0.77.5" - resolved "https://registry.yarnpkg.com/@glimmer/encoder/-/encoder-0.77.5.tgz#40dd91417998c7f1c6b1fa947fa881a598250bc3" - integrity sha512-BJpuFi78T9U8g5ix5R99kYhB4m5hQRfB0femrvGhECyhtOZJ+Y797uuOaSqmGTYTY8VIhvxEao6YRaKly0K3mw== +"@glimmer/encoder@0.78.2": + version "0.78.2" + resolved "https://registry.yarnpkg.com/@glimmer/encoder/-/encoder-0.78.2.tgz#39a4f8223cd7819417909d4a7c86c9e31bb1eef5" + integrity sha512-3V+DYqLf5sY8ehV4qaeACqpy8i1pjP0zGlsxiaFb3LdfIbfuzrNxE1JQGvN/60urqhKqGeeIk+e/Y2879voVbw== dependencies: "@glimmer/env" "0.1.7" - "@glimmer/interfaces" "0.77.5" - "@glimmer/vm" "0.77.5" + "@glimmer/interfaces" "0.78.2" + "@glimmer/vm" "0.78.2" "@glimmer/env@0.1.7", "@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/global-context@0.77.5": - version "0.77.5" - resolved "https://registry.yarnpkg.com/@glimmer/global-context/-/global-context-0.77.5.tgz#ff72f216cd39f7e7923d54f3bb0862910070a9cc" - integrity sha512-kWHYjOyhYeyBEEuu3gMJsLO9WxFlXFFeWmtk2raWkJ37TndZNUFMQt6C0yOyT/AkXUJH5+1W7XSia1P3TB6CKw== +"@glimmer/global-context@0.78.2": + version "0.78.2" + resolved "https://registry.yarnpkg.com/@glimmer/global-context/-/global-context-0.78.2.tgz#3443b000e8617da39202d5319db881ff59a2f248" + integrity sha512-om0ryTEqER1ZZKD9TLBJlPm/M3z9EwHMR22luufPKZ1la8RrDQpGPMh32a8QzWnOyigiv2NXIfuUiSh5OGR/BA== dependencies: "@glimmer/env" "^0.1.7" -"@glimmer/interfaces@0.77.5": - version "0.77.5" - resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.77.5.tgz#74c791ba4712588f2e7b65669d90e8d349eee30a" - integrity sha512-ahiZX2EG2w1DrXmIxjzmkRrAeRJS+y35YTXhP82/NSyLiS2g7NTgYbqXpsS+VfvYRZ2+EbeXzY7cTe8mN4OUxg== +"@glimmer/interfaces@0.78.2": + version "0.78.2" + resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.78.2.tgz#4dafd7f7abaf03f5a9b5d2192205ad007550ca36" + integrity sha512-OM1zJHNioKwd+7PM+mt28Ine9QfZLI7bwDOgB1Y+lHEZ0OdAGu6m351RBrXfQEgDCoVSFPQpOtUpWLP/FU3Utw== dependencies: "@simple-dom/interface" "^1.4.0" -"@glimmer/low-level@0.77.5": - version "0.77.5" - resolved "https://registry.yarnpkg.com/@glimmer/low-level/-/low-level-0.77.5.tgz#f198acd9c6b5f39da07756db32f11cf0f8714f7e" - integrity sha512-A+bNz17vBcTe0qn38q0sdDldCj4gKdFllw8lRHms2Xn50xc+e0uQ00sFFVBT51XDrKiX6u+U72sVnBrUYCbGXg== +"@glimmer/low-level@0.78.2": + version "0.78.2" + resolved "https://registry.yarnpkg.com/@glimmer/low-level/-/low-level-0.78.2.tgz#bca5f666760ce98345e87c5b3e37096e772cb2de" + integrity sha512-0S6TWOOd0fzLLysw1pWZN0TgasaHmYs1Sjz9Til1mTByIXU1S+1rhdyr2veSQPO/aRjPuEQyKXZQHvx23Zax6w== -"@glimmer/manager@0.77.5": - version "0.77.5" - resolved "https://registry.yarnpkg.com/@glimmer/manager/-/manager-0.77.5.tgz#dfbd94a2f47640f8d6fcdf67bb8cc8e995c835f8" - integrity sha512-neURL3qGaDuiq/8YYE4F2reGnS42vMjgYcJjP00eY/pBHfOY6icPR1oPwGmTt8Qr6topGc3FmUaUWDXPt0Lnkg== +"@glimmer/manager@0.78.2": + version "0.78.2" + resolved "https://registry.yarnpkg.com/@glimmer/manager/-/manager-0.78.2.tgz#5c1d0fc24225f9546b182cab6d8ea800135bf86b" + integrity sha512-mHTtPJXf7uYVOsHSrLQEcv0nxGj9M2Rmks60hWKxk/pdNwt12FzRElMqyyj1j9lSbUj+LOpt9g+IZYu03w4O8g== dependencies: - "@glimmer/destroyable" "0.77.5" + "@glimmer/destroyable" "0.78.2" "@glimmer/env" "0.1.7" - "@glimmer/interfaces" "0.77.5" - "@glimmer/reference" "0.77.5" - "@glimmer/util" "0.77.5" - "@glimmer/validator" "0.77.5" - -"@glimmer/node@0.77.5": - version "0.77.5" - resolved "https://registry.yarnpkg.com/@glimmer/node/-/node-0.77.5.tgz#6bb693744d612a770d106b69d2803c2423c15868" - integrity sha512-BBM32C5GldOFxUbV2XljwoNmOGP9YobJF9WEW1zVkbggDZcGH090VwbTErrXVv8aw987fGXqei0UCFGleOXu1A== - dependencies: - "@glimmer/interfaces" "0.77.5" - "@glimmer/runtime" "0.77.5" - "@glimmer/util" "0.77.5" + "@glimmer/interfaces" "0.78.2" + "@glimmer/reference" "0.78.2" + "@glimmer/util" "0.78.2" + "@glimmer/validator" "0.78.2" + +"@glimmer/node@0.78.2": + version "0.78.2" + resolved "https://registry.yarnpkg.com/@glimmer/node/-/node-0.78.2.tgz#a27bd6d5ef188ea4892bc6953a62fc165a173893" + integrity sha512-e5mc63xbvix6qRwGLWrc5zYi0PSN5bUUlx6SWCxItObht7i7TpkylYo3y4bDZc2LqfkTN8e8dIyPqfF2dZsLsQ== + dependencies: + "@glimmer/interfaces" "0.78.2" + "@glimmer/runtime" "0.78.2" + "@glimmer/util" "0.78.2" "@simple-dom/document" "^1.4.0" "@simple-dom/interface" "^1.4.0" -"@glimmer/opcode-compiler@0.77.5": - version "0.77.5" - resolved "https://registry.yarnpkg.com/@glimmer/opcode-compiler/-/opcode-compiler-0.77.5.tgz#088f946587c905fcb37a6516df5cb858fc177d7c" - integrity sha512-qJYdDeJFch2BGpYWmZ0klExsBvu6bZYoNyRtzUmuA0+xzT2I1HdwrTpekkAHVDfB0rfHArHmcimTxgFF15o4Mg== +"@glimmer/opcode-compiler@0.78.2": + version "0.78.2" + resolved "https://registry.yarnpkg.com/@glimmer/opcode-compiler/-/opcode-compiler-0.78.2.tgz#c5199fa02a7e36dbe62e4387bf37d54b1f2c33c7" + integrity sha512-WEmeMZMt3nD8jcUlAYLuW6xVB0uOBkyGAUHU7SHcldnfdP3GTilyPO3OzRC9ksEHK/bwtFelrbwu5tpPH1RgvQ== dependencies: - "@glimmer/encoder" "0.77.5" + "@glimmer/encoder" "0.78.2" "@glimmer/env" "0.1.7" - "@glimmer/interfaces" "0.77.5" - "@glimmer/reference" "0.77.5" - "@glimmer/util" "0.77.5" - "@glimmer/vm" "0.77.5" - "@glimmer/wire-format" "0.77.5" + "@glimmer/interfaces" "0.78.2" + "@glimmer/reference" "0.78.2" + "@glimmer/util" "0.78.2" + "@glimmer/vm" "0.78.2" + "@glimmer/wire-format" "0.78.2" -"@glimmer/owner@0.77.5": - version "0.77.5" - resolved "https://registry.yarnpkg.com/@glimmer/owner/-/owner-0.77.5.tgz#d81933f3d6c4c0feafcf3d972cc7edca00532a5b" - integrity sha512-0jPDb63qBNN20QkVprIuennHP1Vf3fWCQNtuVOYsDOjyV2RIlrOwTVLuFIpua86nSBRQq7gH411ZyEpoq6H3Cg== +"@glimmer/owner@0.78.2": + version "0.78.2" + resolved "https://registry.yarnpkg.com/@glimmer/owner/-/owner-0.78.2.tgz#15e0adf8e2fef7045674e67627fa48d4b8df877e" + integrity sha512-02I4O5kgmQasE5vbmRY/3F6ZshPURAWtZgvCR5+YHgGo+Jt1UBMaLLDtbg8ldPDc5muUmonA3ZXIYmm1F4wTSw== dependencies: - "@glimmer/util" "0.77.5" + "@glimmer/util" "0.78.2" -"@glimmer/program@0.77.5": - version "0.77.5" - resolved "https://registry.yarnpkg.com/@glimmer/program/-/program-0.77.5.tgz#53ce8da78377b255a22eb1d86eb5e6a837393305" - integrity sha512-19rWpeqqK7UF6CT9G+A7TOnWeoIlT8wCF4gKQNRbp2sbUugJ0PyTn7VzZTLAc110F0ohFlv17yKIrDBoPytHDw== +"@glimmer/program@0.78.2": + version "0.78.2" + resolved "https://registry.yarnpkg.com/@glimmer/program/-/program-0.78.2.tgz#c38f2f55005b3c2e8f1a4825aacc2ffd6891d9a1" + integrity sha512-6ZeCSwqnC0mMzfHwbToTX/LC6HeUm2UMAaMri7WIh9ncNetCfKqBXRdFIKepG7fnWEADuCwE/+r6e2Qq2x3dNQ== dependencies: - "@glimmer/encoder" "0.77.5" + "@glimmer/encoder" "0.78.2" "@glimmer/env" "0.1.7" - "@glimmer/interfaces" "0.77.5" - "@glimmer/manager" "0.77.5" - "@glimmer/opcode-compiler" "0.77.5" - "@glimmer/util" "0.77.5" + "@glimmer/interfaces" "0.78.2" + "@glimmer/manager" "0.78.2" + "@glimmer/opcode-compiler" "0.78.2" + "@glimmer/util" "0.78.2" -"@glimmer/reference@0.77.5": - version "0.77.5" - resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.77.5.tgz#54eac6b00bd06cb84ff8c9f854d9a7811f2c298f" - integrity sha512-L432i/VD4Kud8qsvPs3bY12hjkKOjfqH1tyGnjfdNAip/k6Z7GIuFDi+T/lJOLWLFONh4414KDopTysBXx9USw== +"@glimmer/reference@0.78.2": + version "0.78.2" + resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.78.2.tgz#dbffbeb4bc42f64f57104eebab0eb4ef7778d989" + integrity sha512-vUk20mKknDqtQEWfGbDwU9eh+XVztUUuww6V6/UKm8JokBDjGkdt4w74R2wvPIrDZYkfXErZjXwY8Ltu1lBV0A== dependencies: "@glimmer/env" "^0.1.7" - "@glimmer/global-context" "0.77.5" - "@glimmer/interfaces" "0.77.5" - "@glimmer/util" "0.77.5" - "@glimmer/validator" "0.77.5" + "@glimmer/global-context" "0.78.2" + "@glimmer/interfaces" "0.78.2" + "@glimmer/util" "0.78.2" + "@glimmer/validator" "0.78.2" -"@glimmer/runtime@0.77.5": - version "0.77.5" - resolved "https://registry.yarnpkg.com/@glimmer/runtime/-/runtime-0.77.5.tgz#6b936da4e2f37cd3994626efa672b15c715ae0f8" - integrity sha512-rLzXY2IFw7yzsvOwy/3eLxoza9Y9vx52bivlZJ9+8AWCtn4ywNGOKwvv4i8Mf1EMXtvo3nZHC9yIwfpUJg8NLg== +"@glimmer/runtime@0.78.2": + version "0.78.2" + resolved "https://registry.yarnpkg.com/@glimmer/runtime/-/runtime-0.78.2.tgz#e8d8de5b1c74f2aeaa129b43d264ff36de4de5a1" + integrity sha512-pzndIFJl2ycVAAnaFNm2MLwDTKymn03a+xAtHpsFwEZQ3EE2wQNnEKyBDI5SkNRShD8nkbwodd0N+YwZdGDKHw== dependencies: - "@glimmer/destroyable" "0.77.5" + "@glimmer/destroyable" "0.78.2" "@glimmer/env" "0.1.7" - "@glimmer/global-context" "0.77.5" - "@glimmer/interfaces" "0.77.5" - "@glimmer/low-level" "0.77.5" - "@glimmer/owner" "0.77.5" - "@glimmer/program" "0.77.5" - "@glimmer/reference" "0.77.5" - "@glimmer/util" "0.77.5" - "@glimmer/validator" "0.77.5" - "@glimmer/vm" "0.77.5" - "@glimmer/wire-format" "0.77.5" + "@glimmer/global-context" "0.78.2" + "@glimmer/interfaces" "0.78.2" + "@glimmer/low-level" "0.78.2" + "@glimmer/owner" "0.78.2" + "@glimmer/program" "0.78.2" + "@glimmer/reference" "0.78.2" + "@glimmer/util" "0.78.2" + "@glimmer/validator" "0.78.2" + "@glimmer/vm" "0.78.2" + "@glimmer/wire-format" "0.78.2" "@simple-dom/interface" "^1.4.0" -"@glimmer/syntax@0.77.5": - version "0.77.5" - resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.77.5.tgz#b841803dd54ea86de7e8ae8850b3760000033bf2" - integrity sha512-FRb1onDsP9P2CnbwTyKF91QYIbRJ0svALG7TnAJlUjQU9E4lWdI5lf7vPRh45A4W1rjcAcIcuiIS6oGrdEkhuQ== +"@glimmer/syntax@0.78.2": + version "0.78.2" + resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.78.2.tgz#3be25df8c7b7564d94d204ac0ab0c9717abe9043" + integrity sha512-B6OgBtUFo+K0sA+72sNQOs//TKJIZdAPUAIQGjZWsfGZGpzlFx3kuouKeK1DCtXxRIktqSDpmXFcPNKd1OqbOw== dependencies: - "@glimmer/interfaces" "0.77.5" - "@glimmer/util" "0.77.5" + "@glimmer/interfaces" "0.78.2" + "@glimmer/util" "0.78.2" "@handlebars/parser" "~2.0.0" simple-html-tokenizer "^0.5.10" -"@glimmer/util@0.77.5": - version "0.77.5" - resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.77.5.tgz#b4e2909d34eb7db34c63fd9d942e0ffa458d4c90" - integrity sha512-Y78NnJClpz7sBks3q+ZNNVfCjy8ALcCQOG5GEIm/P9O3+eXMBsx2ac9Umu4LBZqmeINQ9CtFz10u2BiyxOtSQg== +"@glimmer/util@0.78.2": + version "0.78.2" + resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.78.2.tgz#d6e7e363d198ef426858a3958170774b4548cce1" + integrity sha512-SqmlzdtXJwAhf5fhflFsoYuM3zk1M/8bamqGXQpCB5I40NpcshpFybY/ZMwIGsYOWEwIo/LDDC1UBZ3gyMPZzA== dependencies: "@glimmer/env" "0.1.7" - "@glimmer/interfaces" "0.77.5" + "@glimmer/interfaces" "0.78.2" "@simple-dom/interface" "^1.4.0" -"@glimmer/validator@0.77.5": - version "0.77.5" - resolved "https://registry.yarnpkg.com/@glimmer/validator/-/validator-0.77.5.tgz#a5e272d700f661aa0b2f350670974792b7785a49" - integrity sha512-LluyvxWTqys5ulkYA24sFDQ/obwOTwbLDakNBOlHvKdh814h+scz4y8bckx6qY7AsJObQgZVAg00r1Nlhfs6fQ== +"@glimmer/validator@0.78.2": + version "0.78.2" + resolved "https://registry.yarnpkg.com/@glimmer/validator/-/validator-0.78.2.tgz#bc7f3cf376789d1090add73bed599e840697fdc8" + integrity sha512-pzdC9uPaQerOoPEeSV9U/oRbZtgTkL+BryGR8R534mhAFfVlzenAa4aavKZEcnIns73MNN/G1l2iYDmjSH/6Hg== dependencies: "@glimmer/env" "^0.1.7" - "@glimmer/global-context" "0.77.5" + "@glimmer/global-context" "0.78.2" -"@glimmer/vm-babel-plugins@0.77.5": - version "0.77.5" - resolved "https://registry.yarnpkg.com/@glimmer/vm-babel-plugins/-/vm-babel-plugins-0.77.5.tgz#daffb6507aa6b08ec36f69d652897d339fdd0007" - integrity sha512-jTBM7fJMrIEy4/bCeI8e7ypR+AuWYzLA+KORCGbnTJtL/NYg4G8qwhQAZBtg1d3KmoqyqaCsyqE6f4/tzJO4eQ== +"@glimmer/vm-babel-plugins@0.78.2": + version "0.78.2" + resolved "https://registry.yarnpkg.com/@glimmer/vm-babel-plugins/-/vm-babel-plugins-0.78.2.tgz#b530a19f54da385c7099a22cf348e9062d186838" + integrity sha512-GSEf16h6OCtKx7PsSvD21cLXZuVc6swW2rSOAvfLeZco1DEWMRgYTwkCkColydKZcQ3gvwbPBeYwTC2K6tlnjg== dependencies: babel-plugin-debug-macros "^0.3.4" -"@glimmer/vm@0.77.5": - version "0.77.5" - resolved "https://registry.yarnpkg.com/@glimmer/vm/-/vm-0.77.5.tgz#ff244acb0ce4a0076df01da8fdd37d690833e478" - integrity sha512-SsG/BEnM+ySk236UlHHoxYufdWwMSmr2RiapQp6O4pDzy7npkRebTYOzXCXpYrFkjDcTwPaygYCnr7RRFJXEUA== +"@glimmer/vm@0.78.2": + version "0.78.2" + resolved "https://registry.yarnpkg.com/@glimmer/vm/-/vm-0.78.2.tgz#525589b4d3556eafea84a2b9c6e7aa72698bf5d6" + integrity sha512-x+0qn1B00i8Gcw3ptqEaGsIECG4M1IdmxtLSIr+Kfga/Da/PPLXJYQx+jk924rVCnad2FzxizhyKRxCqPbU+EA== dependencies: - "@glimmer/interfaces" "0.77.5" - "@glimmer/util" "0.77.5" + "@glimmer/interfaces" "0.78.2" + "@glimmer/util" "0.78.2" -"@glimmer/wire-format@0.77.5": - version "0.77.5" - resolved "https://registry.yarnpkg.com/@glimmer/wire-format/-/wire-format-0.77.5.tgz#326ae0e09d81182096c0e4efef7cc197d96081d4" - integrity sha512-/FyjStQtyHkCS8dOp7t79e+PIgEAF0yo9rxmazexl3Ie3ePE9qRxOQi/GKIxi1V1YGpxxv8Aq6wP8kteUzCDaQ== +"@glimmer/wire-format@0.78.2": + version "0.78.2" + resolved "https://registry.yarnpkg.com/@glimmer/wire-format/-/wire-format-0.78.2.tgz#32686633e66fe674ea39910d48e3db9ba524eadb" + integrity sha512-kd8xP9P7oo+F0EijG3/2YwzUXq/AESxPS2hadjmhu2uMZ+QOzgYbeo1xC2Ig7EkXhf1tdxlmVpCS4rwhCsxzXA== dependencies: - "@glimmer/interfaces" "0.77.5" - "@glimmer/util" "0.77.5" + "@glimmer/interfaces" "0.78.2" + "@glimmer/util" "0.78.2" "@handlebars/parser@~2.0.0": version "2.0.0"