diff --git a/package.json b/package.json index aabcf0c959a..70aa30811be 100644 --- a/package.json +++ b/package.json @@ -58,24 +58,24 @@ "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@ember/edition-utils": "^1.2.0", - "@glimmer/compiler": "0.87.1", + "@glimmer/compiler": "0.92.0", "@glimmer/component": "^1.1.2", - "@glimmer/destroyable": "0.87.1", + "@glimmer/destroyable": "0.92.0", "@glimmer/env": "^0.1.7", - "@glimmer/global-context": "0.87.1", - "@glimmer/interfaces": "0.87.1", - "@glimmer/manager": "0.87.1", - "@glimmer/node": "0.87.1", - "@glimmer/opcode-compiler": "0.87.1", - "@glimmer/owner": "0.87.1", - "@glimmer/program": "0.87.1", - "@glimmer/reference": "0.87.1", - "@glimmer/runtime": "0.87.1", - "@glimmer/syntax": "0.87.1", - "@glimmer/util": "0.87.1", - "@glimmer/validator": "0.87.1", - "@glimmer/vm": "0.87.1", - "@glimmer/vm-babel-plugins": "0.87.1", + "@glimmer/global-context": "0.92.0", + "@glimmer/interfaces": "0.92.0", + "@glimmer/manager": "0.92.0", + "@glimmer/node": "0.92.0", + "@glimmer/opcode-compiler": "0.92.0", + "@glimmer/owner": "0.92.0", + "@glimmer/program": "0.92.0", + "@glimmer/reference": "0.92.0", + "@glimmer/runtime": "0.92.0", + "@glimmer/syntax": "0.92.0", + "@glimmer/util": "0.92.0", + "@glimmer/validator": "0.92.0", + "@glimmer/vm": "0.92.0", + "@glimmer/vm-babel-plugins": "0.92.0", "@simple-dom/interface": "^1.4.0", "babel-plugin-debug-macros": "^0.3.4", "babel-plugin-ember-template-compilation": "^2.1.1", @@ -107,6 +107,7 @@ "devDependencies": { "@aws-sdk/client-s3": "^3.321.1", "@babel/core": "^7.22.9", + "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-decorators": "^7.23.6", "@babel/plugin-transform-typescript": "^7.22.9", "@babel/preset-env": "^7.16.11", diff --git a/packages/@ember/-internals/glimmer/lib/modifiers/action.ts b/packages/@ember/-internals/glimmer/lib/modifiers/action.ts index 66da57e79dc..14082c7d343 100644 --- a/packages/@ember/-internals/glimmer/lib/modifiers/action.ts +++ b/packages/@ember/-internals/glimmer/lib/modifiers/action.ts @@ -200,6 +200,10 @@ class ActionModifierManager implements InternalModifierManager { constructor(private ModifierClass: typeof InternalModifier, private name: string) {} @@ -78,6 +78,8 @@ export class InternalModifierManager return null; } + abstract getDebugInstance(state: InternalModifierState): unknown; + getDebugName(): string { return this.name; } diff --git a/packages/@ember/-internals/glimmer/tests/integration/application/debug-render-tree-test.ts b/packages/@ember/-internals/glimmer/tests/integration/application/debug-render-tree-test.ts index 260a61c4574..516cbc2e7c0 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/application/debug-render-tree-test.ts +++ b/packages/@ember/-internals/glimmer/tests/integration/application/debug-render-tree-test.ts @@ -29,6 +29,8 @@ interface CapturedBounds { lastNode: SimpleNode; } +function anyFunc() {} + function compileTemplate(templateSource: string, options: Partial) { return compile(templateSource, options); } @@ -1183,6 +1185,54 @@ if (ENV._DEBUG_RENDER_TREE) { let inputToString = //; + const firstModifiers: ExpectedRenderNode['children'] = [ + { + type: 'modifier', + name: 'on', + instance: null, + args: { named: {}, positional: ['change', anyFunc] }, + template: null, + bounds: this.nodeBounds(this.element!.firstChild), + children: [], + }, + { + type: 'modifier', + name: 'on', + instance: null, + template: null, + args: { named: {}, positional: ['input', anyFunc] }, + bounds: this.nodeBounds(this.element!.firstChild), + children: [], + }, + { + type: 'modifier', + name: 'on', + instance: null, + template: null, + args: { named: {}, positional: ['keyup', anyFunc] }, + bounds: this.nodeBounds(this.element!.firstChild), + children: [], + }, + { + type: 'modifier', + name: 'on', + instance: null, + template: null, + args: { named: {}, positional: ['paste', anyFunc] }, + bounds: this.nodeBounds(this.element!.firstChild), + children: [], + }, + { + type: 'modifier', + name: 'on', + instance: null, + template: null, + args: { named: {}, positional: ['cut', anyFunc] }, + bounds: this.nodeBounds(this.element!.firstChild), + children: [], + }, + ]; + this.assertRenderTree([ { type: 'component', @@ -1191,12 +1241,60 @@ if (ENV._DEBUG_RENDER_TREE) { instance: (instance: object) => inputToString.test(instance.toString()), template: 'packages/@ember/-internals/glimmer/lib/templates/input.hbs', bounds: this.nodeBounds(this.element!.firstChild), - children: [], + children: [...firstModifiers], }, ]); runTask(() => target.set('showSecond', true)); + const secondModifiers: ExpectedRenderNode['children'] = [ + { + type: 'modifier', + name: 'on', + instance: null, + args: { named: {}, positional: ['change', anyFunc] }, + template: null, + bounds: this.nodeBounds(this.element!.lastChild), + children: [], + }, + { + type: 'modifier', + name: 'on', + instance: null, + template: null, + args: { named: {}, positional: ['input', anyFunc] }, + bounds: this.nodeBounds(this.element!.lastChild), + children: [], + }, + { + type: 'modifier', + name: 'on', + instance: null, + template: null, + args: { named: {}, positional: ['keyup', anyFunc] }, + bounds: this.nodeBounds(this.element!.lastChild), + children: [], + }, + { + type: 'modifier', + name: 'on', + instance: null, + template: null, + args: { named: {}, positional: ['paste', anyFunc] }, + bounds: this.nodeBounds(this.element!.lastChild), + children: [], + }, + { + type: 'modifier', + name: 'on', + instance: null, + template: null, + args: { named: {}, positional: ['cut', anyFunc] }, + bounds: this.nodeBounds(this.element!.lastChild), + children: [], + }, + ]; + this.assertRenderTree([ { type: 'component', @@ -1205,7 +1303,7 @@ if (ENV._DEBUG_RENDER_TREE) { instance: (instance: object) => inputToString.test(instance.toString()), template: 'packages/@ember/-internals/glimmer/lib/templates/input.hbs', bounds: this.nodeBounds(this.element!.firstChild), - children: [], + children: [...firstModifiers], }, { type: 'component', @@ -1214,7 +1312,7 @@ if (ENV._DEBUG_RENDER_TREE) { instance: (instance: object) => inputToString.test(instance.toString()), template: 'packages/@ember/-internals/glimmer/lib/templates/input.hbs', bounds: this.nodeBounds(this.element!.lastChild), - children: [], + children: [...secondModifiers], }, ]); @@ -1228,7 +1326,7 @@ if (ENV._DEBUG_RENDER_TREE) { instance: (instance: object) => inputToString.test(instance.toString()), template: 'packages/@ember/-internals/glimmer/lib/templates/input.hbs', bounds: this.nodeBounds(this.element!.firstChild), - children: [], + children: [...firstModifiers], }, ]); } @@ -1247,7 +1345,59 @@ if (ENV._DEBUG_RENDER_TREE) { await this.visit('/'); - let textareaNode = (value: string, node: Node | null): ExpectedRenderNode => { + const firstModifiers: ExpectedRenderNode['children'] = [ + { + type: 'modifier', + name: 'on', + instance: null, + args: { named: {}, positional: ['change', anyFunc] }, + template: null, + bounds: this.nodeBounds(this.element!.firstChild), + children: [], + }, + { + type: 'modifier', + name: 'on', + instance: null, + template: null, + args: { named: {}, positional: ['input', anyFunc] }, + bounds: this.nodeBounds(this.element!.firstChild), + children: [], + }, + { + type: 'modifier', + name: 'on', + instance: null, + template: null, + args: { named: {}, positional: ['keyup', anyFunc] }, + bounds: this.nodeBounds(this.element!.firstChild), + children: [], + }, + { + type: 'modifier', + name: 'on', + instance: null, + template: null, + args: { named: {}, positional: ['paste', anyFunc] }, + bounds: this.nodeBounds(this.element!.firstChild), + children: [], + }, + { + type: 'modifier', + name: 'on', + instance: null, + template: null, + args: { named: {}, positional: ['cut', anyFunc] }, + bounds: this.nodeBounds(this.element!.firstChild), + children: [], + }, + ]; + + let textareaNode = ( + value: string, + node: Node | null, + children: ExpectedRenderNode['children'] + ): ExpectedRenderNode => { return { type: 'component', name: 'textarea', @@ -1255,26 +1405,74 @@ if (ENV._DEBUG_RENDER_TREE) { instance: (instance: Record) => instance['value'] === value, bounds: this.nodeBounds(node), template: 'packages/@ember/-internals/glimmer/lib/templates/textarea.hbs', - children: [], + children, }; }; - this.assertRenderTree([textareaNode('first', this.element!.firstChild)]); + this.assertRenderTree([textareaNode('first', this.element!.firstChild, firstModifiers)]); runTask(() => { this.controllerFor('application')!.set('showSecond', true); }); + const secondModifiers: ExpectedRenderNode['children'] = [ + { + type: 'modifier', + name: 'on', + instance: null, + args: { named: {}, positional: ['change', anyFunc] }, + template: null, + bounds: this.nodeBounds(this.element!.lastChild), + children: [], + }, + { + type: 'modifier', + name: 'on', + instance: null, + template: null, + args: { named: {}, positional: ['input', anyFunc] }, + bounds: this.nodeBounds(this.element!.lastChild), + children: [], + }, + { + type: 'modifier', + name: 'on', + instance: null, + template: null, + args: { named: {}, positional: ['keyup', anyFunc] }, + bounds: this.nodeBounds(this.element!.lastChild), + children: [], + }, + { + type: 'modifier', + name: 'on', + instance: null, + template: null, + args: { named: {}, positional: ['paste', anyFunc] }, + bounds: this.nodeBounds(this.element!.lastChild), + children: [], + }, + { + type: 'modifier', + name: 'on', + instance: null, + template: null, + args: { named: {}, positional: ['cut', anyFunc] }, + bounds: this.nodeBounds(this.element!.lastChild), + children: [], + }, + ]; + this.assertRenderTree([ - textareaNode('first', this.element!.firstChild), - textareaNode('second', this.element!.lastChild), + textareaNode('first', this.element!.firstChild, firstModifiers), + textareaNode('second', this.element!.lastChild, secondModifiers), ]); runTask(() => { this.controllerFor('application')!.set('showSecond', false); }); - this.assertRenderTree([textareaNode('first', this.element!.firstChild)]); + this.assertRenderTree([textareaNode('first', this.element!.firstChild, firstModifiers)]); } async '@test components'() { @@ -1298,6 +1496,18 @@ if (ENV._DEBUG_RENDER_TREE) { let template = `packages/@ember/-internals/glimmer/lib/templates/link-to.hbs`; + const firstModifiers: ExpectedRenderNode['children'] = [ + { + type: 'modifier', + name: 'on', + instance: null, + args: { named: {}, positional: ['click', anyFunc] }, + template: null, + bounds: this.nodeBounds(this.element!.firstChild), + children: [], + }, + ]; + this.assertRenderTree([ { type: 'component', @@ -1306,7 +1516,7 @@ if (ENV._DEBUG_RENDER_TREE) { instance: (instance: Record) => instance['route'] === 'foo', template, bounds: this.nodeBounds(this.element!.firstChild), - children: [], + children: firstModifiers, }, ]); @@ -1314,6 +1524,18 @@ if (ENV._DEBUG_RENDER_TREE) { this.controllerFor('application')!.set('showSecond', true); }); + const secondModifiers: ExpectedRenderNode['children'] = [ + { + type: 'modifier', + name: 'on', + instance: null, + args: { named: {}, positional: ['click', anyFunc] }, + template: null, + bounds: this.nodeBounds(this.element!.lastChild), + children: [], + }, + ]; + this.assertRenderTree([ { type: 'component', @@ -1322,7 +1544,7 @@ if (ENV._DEBUG_RENDER_TREE) { instance: (instance: Record) => instance['route'] === 'foo', template, bounds: this.nodeBounds(this.element!.firstChild), - children: [], + children: firstModifiers, }, { type: 'component', @@ -1331,7 +1553,7 @@ if (ENV._DEBUG_RENDER_TREE) { instance: (instance: Record) => instance['route'] === 'bar', template, bounds: this.nodeBounds(this.element!.lastChild), - children: [], + children: secondModifiers, }, ]); @@ -1347,7 +1569,7 @@ if (ENV._DEBUG_RENDER_TREE) { instance: (instance: Record) => instance['route'] === 'foo', template, bounds: this.nodeBounds(this.element!.firstChild), - children: [], + children: firstModifiers, }, ]); } @@ -1496,11 +1718,65 @@ if (ENV._DEBUG_RENDER_TREE) { } } + assertArgs( + actual: { named: Named; positional: Positional }, + expected: { named: Named; positional: Positional }, + path: string + ): void { + this.assertNamedArgs(actual.named, expected.named, `${path} (named)`); + this.assertPositionalArgs(actual.positional, expected.positional, `${path} (positional)`); + } + + assertNamedArgs(actual: T, expected: T, path: string) { + this.assert.deepEqual(actual, expected, path); + } + + assertPositionalArgs(actual: T, expected: T, path: string) { + assert(`actual must be an array`, Array.isArray(actual)); + assert(`expected must be an array`, Array.isArray(expected)); + + this.assert.strictEqual(actual.length, expected.length, `${path} length`); + + for (let i = 0; i < actual.length; i++) { + let actualItem = actual[i]; + let expectedItem = expected[i]; + + if (typeof actualItem === 'function') { + this.assert.strictEqual( + typeof actualItem, + typeof expectedItem, + `${path} function @ ${i}` + ); + continue; + } + + this.assert.deepEqual(actualItem, expectedItem, `${path} @ ${i}`); + } + } + assertProperty(actual: T, expected: Expected, deep: boolean, path: string): void { if (isExpectedFunc(expected)) { this.assert.ok(expected(actual), `Matching ${path}, got ${actual}`); } else if (deep) { - this.assert.deepEqual(actual, expected, `Matching ${path}`); + if ( + typeof actual === 'object' && + actual !== null && + Object.keys(actual).length === 2 && + 'named' in actual && + 'positional' in actual + ) { + // We have can't compare functions + this.assertArgs( + actual, + // SAFETY: these types are getting in the way more than helping, + // there doesn't seem to be a way to correlate the shape via narrowing of actual + // to the shape of expected + expected as unknown as { named: unknown; positional: unknown }, + path + ); + } else { + this.assert.deepEqual(actual, expected, `Matching ${path}`); + } } else { this.assert.strictEqual(actual, expected, `Matching ${path}`); } 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 386e7c6bb2c..63ade99e232 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 @@ -2501,7 +2501,7 @@ moduleFor( }, value: null, }), - template: '
{{wrapper.content}}
', + template: '
{{this.wrapper.content}}
', }); let expectedBacktrackingMessage = backtrackingMessageFor('content', '<.+?>', { diff --git a/packages/@ember/-internals/glimmer/tests/integration/components/strict-mode-test.js b/packages/@ember/-internals/glimmer/tests/integration/components/strict-mode-test.js index acfb33c1e76..fd11a25c617 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/components/strict-mode-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/components/strict-mode-test.js @@ -5,12 +5,15 @@ import { defineComponent, defineSimpleHelper, defineSimpleModifier, + testUnless, } from 'internal-test-helpers'; import { Input, Textarea } from '@ember/component'; +import { action } from '@ember/object'; import { LinkTo } from '@ember/routing'; import { hash, array, concat, get, on, fn } from '@glimmer/runtime'; import GlimmerishComponent from '../../utils/glimmerish-component'; +import { DEPRECATIONS } from '../../../../deprecations'; moduleFor( 'Strict Mode', @@ -259,6 +262,61 @@ moduleFor( this.click('button'); } + // Test some of the additional keywords not built-in to glimmer-vm (those + // we specifically enable them when calling `precompile`) + + [`${testUnless(DEPRECATIONS.DEPRECATE_TEMPLATE_ACTION.isRemoved)} Can use action helper`]( + assert + ) { + let called = 0; + + let Foo = defineComponent( + { on }, + '', + class extends GlimmerishComponent { + @action + foo() { + called++; + } + } + ); + + this.registerComponent('foo', { ComponentClass: Foo }); + + this.render(''); + assert.strictEqual(called, 0); + this.assertStableRerender(); + assert.strictEqual(called, 0); + this.click('button'); + assert.strictEqual(called, 1); + } + + [`${testUnless(DEPRECATIONS.DEPRECATE_TEMPLATE_ACTION.isRemoved)} Can use action modifier`]( + assert + ) { + let called = 0; + + let Foo = defineComponent( + {}, + '', + class extends GlimmerishComponent { + @action + foo() { + called++; + } + } + ); + + this.registerComponent('foo', { ComponentClass: Foo }); + + this.render(''); + assert.strictEqual(called, 0); + this.assertStableRerender(); + assert.strictEqual(called, 0); + this.click('button'); + assert.strictEqual(called, 1); + } + // Ember currently uses AST plugins to implement certain features that // glimmer-vm does not natively provide, such as {{#each-in}}, {{outlet}} // {{mount}} and some features in {{#in-element}}. These rewrites the AST 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 e320c2ffed3..b938e76fd1f 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 @@ -132,7 +132,7 @@ if (ENV._TEMPLATE_ONLY_GLIMMER_COMPONENTS) { wrapper: EmberObject.create({ content: null }), }), template: - '
{{x-inner-template-only value=this.wrapper.content wrapper=wrapper}}
{{x-inner value=this.value wrapper=this.wrapper}}', + '
{{x-inner-template-only value=this.wrapper.content wrapper=this.wrapper}}
{{x-inner value=this.value wrapper=this.wrapper}}', }); this.registerComponent('x-inner', { @@ -142,7 +142,7 @@ if (ENV._TEMPLATE_ONLY_GLIMMER_COMPONENTS) { }, value: null, }), - template: '
{{wrapper.content}}
', + template: '
{{this.wrapper.content}}
', }); this.registerTemplateOnlyComponent('x-inner-template-only', '{{@value}}'); 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 6d9008deff3..b5ebf2ea267 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 @@ -45,7 +45,7 @@ moduleFor( // (and doesn't go through Ember's own assertion internals) assert.throws(() => { this.render('{{hello.world}}'); - }, /Attempted to resolve a value in a strict mode template, but that value was not in scope: hello/); + }, /You attempted to render a path \(`\{\{hello\.world\}\}`\), but hello was not in scope/); } ['@test it can resolve custom class-based helpers with or without dashes']() { diff --git a/packages/@ember/-internals/glimmer/tests/integration/helpers/hash-test.js b/packages/@ember/-internals/glimmer/tests/integration/helpers/hash-test.js index decbbb138f4..0650980b24a 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/helpers/hash-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/helpers/hash-test.js @@ -217,92 +217,5 @@ moduleFor( this.assertText('Godfrey Chan'); } - - ['@test works with computeds on non-defined properties']() { - let instance; - - let FooBarComponent = Component.extend({ - init() { - this._super(...arguments); - - expectDeprecation(() => { - set(this.hash, 'lastName', 'Hietala'); - }, /You set the '.*' property on a {{hash}} object/); - - instance = this; - }, - - fullName: computed('hash.firstName', 'hash.lastName', function () { - return `${this.hash.firstName} ${this.hash.lastName}`; - }), - }); - - this.registerComponent('foo-bar', { - ComponentClass: FooBarComponent, - template: `{{this.fullName}}`, - }); - - this.render(`{{foo-bar hash=(hash firstName=this.firstName)}}`, { - firstName: 'Chad', - lastName: 'Hietala', - }); - - this.assertText('Chad Hietala'); - - runTask(() => this.rerender()); - - this.assertText('Chad Hietala'); - - runTask(() => { - set(this.context, 'firstName', 'Godfrey'); - }); - - // needs to be separate task because of the way classic components update args - runTask(() => { - expectDeprecation(() => { - set(instance.hash, 'lastName', 'Chan'); - }, /You set the '.*' property on a {{hash}} object/); - }); - - this.assertText('Godfrey Chan'); - } - - ['@test works when properties are set dynamically']() { - let fooBarInstance; - let FooBarComponent = Component.extend({ - init() { - this._super(); - fooBarInstance = this; - }, - }); - - this.registerComponent('foo-bar', { - ComponentClass: FooBarComponent, - template: `{{this.hash.firstName}} {{this.hash.lastName}}`, - }); - - this.render(`{{foo-bar hash=(hash firstName=this.firstName)}}`, { - firstName: 'Chad', - }); - - this.assertText('Chad '); - - runTask(() => { - expectDeprecation(() => { - set(fooBarInstance.hash, 'lastName', 'Hietala'); - }, /You set the '.*' property on a {{hash}} object/); - }); - - this.assertText('Chad Hietala'); - - runTask(() => { - expectDeprecation(() => { - set(fooBarInstance.hash, 'firstName', 'Godfrey'); - set(fooBarInstance.hash, 'lastName', 'Chan'); - }, /You set the '.*' property on a {{hash}} object/); - }); - - this.assertText('Godfrey Chan'); - } } ); diff --git a/packages/@ember/-internals/glimmer/tests/integration/mount-test.js b/packages/@ember/-internals/glimmer/tests/integration/mount-test.js index cda8c3e73b4..b537c7f89bd 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/mount-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/mount-test.js @@ -142,7 +142,7 @@ moduleFor( }); this.engineRegistrations['template:components/component-with-backtracking-set'] = compile( - '[component {{person.name}}]', + '[component {{this.person.name}}]', { moduleName: 'my-app/templates/components/component-with-backtracking-set.hbs', } diff --git a/packages/@ember/-internals/package.json b/packages/@ember/-internals/package.json index 52096eef089..68ee335bd3f 100644 --- a/packages/@ember/-internals/package.json +++ b/packages/@ember/-internals/package.json @@ -39,23 +39,23 @@ "@ember/service": "workspace:*", "@ember/template-factory": "workspace:*", "@ember/utils": "workspace:*", - "@glimmer/compiler": "0.87.1", + "@glimmer/compiler": "0.92.0", "@glimmer/component": "^1.1.2", - "@glimmer/destroyable": "0.87.1", + "@glimmer/destroyable": "0.92.0", "@glimmer/env": "^0.1.7", - "@glimmer/global-context": "0.87.1", - "@glimmer/interfaces": "0.87.1", - "@glimmer/manager": "0.87.1", - "@glimmer/node": "0.87.1", - "@glimmer/opcode-compiler": "0.87.1", - "@glimmer/owner": "0.87.1", - "@glimmer/program": "0.87.1", - "@glimmer/reference": "0.87.1", - "@glimmer/runtime": "0.87.1", - "@glimmer/syntax": "0.87.1", - "@glimmer/util": "0.87.1", - "@glimmer/validator": "0.87.1", - "@glimmer/vm": "0.87.1", + "@glimmer/global-context": "0.92.0", + "@glimmer/interfaces": "0.92.0", + "@glimmer/manager": "0.92.0", + "@glimmer/node": "0.92.0", + "@glimmer/opcode-compiler": "0.92.0", + "@glimmer/owner": "0.92.0", + "@glimmer/program": "0.92.0", + "@glimmer/reference": "0.92.0", + "@glimmer/runtime": "0.92.0", + "@glimmer/syntax": "0.92.0", + "@glimmer/util": "0.92.0", + "@glimmer/validator": "0.92.0", + "@glimmer/vm": "0.92.0", "@simple-dom/interface": "^1.4.0", "backburner.js": "^2.7.0", "dag-map": "^2.0.2", diff --git a/packages/@ember/application/package.json b/packages/@ember/application/package.json index 4bc911c0410..f8f75a80ada 100644 --- a/packages/@ember/application/package.json +++ b/packages/@ember/application/package.json @@ -19,11 +19,11 @@ "@ember/runloop": "workspace:*", "@ember/service": "workspace:*", "@ember/utils": "workspace:*", - "@glimmer/destroyable": "0.87.1", + "@glimmer/destroyable": "0.92.0", "@glimmer/env": "^0.1.7", - "@glimmer/owner": "0.87.1", - "@glimmer/util": "0.87.1", - "@glimmer/validator": "0.87.1", + "@glimmer/owner": "0.92.0", + "@glimmer/util": "0.92.0", + "@glimmer/validator": "0.92.0", "backburner.js": "^2.7.0", "dag-map": "^2.0.2", "ember": "workspace:*", diff --git a/packages/@ember/array/package.json b/packages/@ember/array/package.json index eda8ce2c4c5..1f77264331c 100644 --- a/packages/@ember/array/package.json +++ b/packages/@ember/array/package.json @@ -16,12 +16,12 @@ "@ember/object": "workspace:*", "@ember/runloop": "workspace:*", "@ember/utils": "workspace:*", - "@glimmer/destroyable": "0.87.1", + "@glimmer/destroyable": "0.92.0", "@glimmer/env": "^0.1.7", - "@glimmer/manager": "0.87.1", - "@glimmer/owner": "0.87.1", - "@glimmer/util": "0.87.1", - "@glimmer/validator": "0.87.1", + "@glimmer/manager": "0.92.0", + "@glimmer/owner": "0.92.0", + "@glimmer/util": "0.92.0", + "@glimmer/validator": "0.92.0", "expect-type": "^0.15.0", "internal-test-helpers": "workspace:*" } diff --git a/packages/@ember/component/package.json b/packages/@ember/component/package.json index 5c5959c3369..5c7eadf8e19 100644 --- a/packages/@ember/component/package.json +++ b/packages/@ember/component/package.json @@ -9,8 +9,8 @@ }, "dependencies": { "@ember/-internals": "workspace:*", - "@glimmer/manager": "0.87.1", - "@glimmer/runtime": "0.87.1", + "@glimmer/manager": "0.92.0", + "@glimmer/runtime": "0.92.0", "expect-type": "^0.15.0" } } diff --git a/packages/@ember/controller/package.json b/packages/@ember/controller/package.json index 6097ee34d6c..e2ecadec9b3 100644 --- a/packages/@ember/controller/package.json +++ b/packages/@ember/controller/package.json @@ -11,11 +11,11 @@ "@ember/debug": "workspace:*", "@ember/object": "workspace:*", "@ember/service": "workspace:*", - "@glimmer/destroyable": "0.87.1", + "@glimmer/destroyable": "0.92.0", "@glimmer/env": "^0.1.7", - "@glimmer/owner": "0.87.1", - "@glimmer/util": "0.87.1", - "@glimmer/validator": "0.87.1", + "@glimmer/owner": "0.92.0", + "@glimmer/util": "0.92.0", + "@glimmer/validator": "0.92.0", "expect-type": "^0.15.0", "internal-test-helpers": "workspace:*" } diff --git a/packages/@ember/debug/package.json b/packages/@ember/debug/package.json index b81e541d3a6..ffd4ef3a448 100644 --- a/packages/@ember/debug/package.json +++ b/packages/@ember/debug/package.json @@ -18,12 +18,12 @@ "@ember/routing": "workspace:*", "@ember/runloop": "workspace:*", "@ember/utils": "workspace:*", - "@glimmer/destroyable": "0.87.1", + "@glimmer/destroyable": "0.92.0", "@glimmer/env": "^0.1.7", - "@glimmer/manager": "0.87.1", - "@glimmer/owner": "0.87.1", - "@glimmer/util": "0.87.1", - "@glimmer/validator": "0.87.1", + "@glimmer/manager": "0.92.0", + "@glimmer/owner": "0.92.0", + "@glimmer/util": "0.92.0", + "@glimmer/validator": "0.92.0", "backburner.js": "^2.7.0", "expect-type": "^0.15.0", "internal-test-helpers": "workspace:*" diff --git a/packages/@ember/destroyable/package.json b/packages/@ember/destroyable/package.json index 5e82b9c43bb..0f1aaa448c0 100644 --- a/packages/@ember/destroyable/package.json +++ b/packages/@ember/destroyable/package.json @@ -6,7 +6,7 @@ ".": "./index.ts" }, "dependencies": { - "@glimmer/destroyable": "0.87.1", + "@glimmer/destroyable": "0.92.0", "expect-type": "^0.15.0" } } diff --git a/packages/@ember/engine/package.json b/packages/@ember/engine/package.json index 5f8e92d93a2..3d8c7d16171 100644 --- a/packages/@ember/engine/package.json +++ b/packages/@ember/engine/package.json @@ -18,11 +18,11 @@ "@ember/runloop": "workspace:*", "@ember/service": "workspace:*", "@ember/utils": "workspace:*", - "@glimmer/destroyable": "0.87.1", + "@glimmer/destroyable": "0.92.0", "@glimmer/env": "^0.1.7", - "@glimmer/owner": "0.87.1", - "@glimmer/util": "0.87.1", - "@glimmer/validator": "0.87.1", + "@glimmer/owner": "0.92.0", + "@glimmer/util": "0.92.0", + "@glimmer/validator": "0.92.0", "dag-map": "^2.0.2", "expect-type": "^0.15.0", "internal-test-helpers": "workspace:*", diff --git a/packages/@ember/enumerable/package.json b/packages/@ember/enumerable/package.json index b30a0ca2915..4164074bf03 100644 --- a/packages/@ember/enumerable/package.json +++ b/packages/@ember/enumerable/package.json @@ -11,11 +11,11 @@ "@ember/array": "workspace:*", "@ember/debug": "workspace:*", "@ember/object": "workspace:*", - "@glimmer/destroyable": "0.87.1", + "@glimmer/destroyable": "0.92.0", "@glimmer/env": "^0.1.7", - "@glimmer/owner": "0.87.1", - "@glimmer/util": "0.87.1", - "@glimmer/validator": "0.87.1", + "@glimmer/owner": "0.92.0", + "@glimmer/util": "0.92.0", + "@glimmer/validator": "0.92.0", "internal-test-helpers": "workspace:*" } } diff --git a/packages/@ember/helper/package.json b/packages/@ember/helper/package.json index 42d39416ed3..f0de61ccc8a 100644 --- a/packages/@ember/helper/package.json +++ b/packages/@ember/helper/package.json @@ -8,8 +8,8 @@ "dependencies": { "@ember/-internals": "workspace:*", "@ember/component": "workspace:*", - "@glimmer/manager": "0.87.1", - "@glimmer/runtime": "0.87.1", + "@glimmer/manager": "0.92.0", + "@glimmer/runtime": "0.92.0", "expect-type": "^0.15.0" } } diff --git a/packages/@ember/instrumentation/package.json b/packages/@ember/instrumentation/package.json index 21eea1487ea..50dc51ee284 100644 --- a/packages/@ember/instrumentation/package.json +++ b/packages/@ember/instrumentation/package.json @@ -14,7 +14,7 @@ "@ember/runloop": "workspace:*", "@ember/utils": "workspace:*", "@glimmer/env": "^0.1.7", - "@glimmer/validator": "0.87.1", + "@glimmer/validator": "0.92.0", "internal-test-helpers": "workspace:*" } } diff --git a/packages/@ember/modifier/package.json b/packages/@ember/modifier/package.json index c9daae6a1ac..8207dcfbd39 100644 --- a/packages/@ember/modifier/package.json +++ b/packages/@ember/modifier/package.json @@ -7,7 +7,7 @@ }, "dependencies": { "@ember/-internals": "workspace:*", - "@glimmer/manager": "0.87.1", - "@glimmer/runtime": "0.87.1" + "@glimmer/manager": "0.92.0", + "@glimmer/runtime": "0.92.0" } } diff --git a/packages/@ember/object/package.json b/packages/@ember/object/package.json index eee68d6db4e..da0c6bdffaa 100644 --- a/packages/@ember/object/package.json +++ b/packages/@ember/object/package.json @@ -26,12 +26,12 @@ "@ember/runloop": "workspace:*", "@ember/service": "workspace:*", "@ember/utils": "workspace:*", - "@glimmer/destroyable": "0.87.1", + "@glimmer/destroyable": "0.92.0", "@glimmer/env": "^0.1.7", - "@glimmer/manager": "0.87.1", - "@glimmer/owner": "0.87.1", - "@glimmer/util": "0.87.1", - "@glimmer/validator": "0.87.1", + "@glimmer/manager": "0.92.0", + "@glimmer/owner": "0.92.0", + "@glimmer/util": "0.92.0", + "@glimmer/validator": "0.92.0", "expect-type": "^0.15.0", "internal-test-helpers": "workspace:*" } diff --git a/packages/@ember/routing/package.json b/packages/@ember/routing/package.json index e22fecc1056..690ff868cd0 100644 --- a/packages/@ember/routing/package.json +++ b/packages/@ember/routing/package.json @@ -25,12 +25,12 @@ "@ember/runloop": "workspace:*", "@ember/service": "workspace:*", "@ember/utils": "workspace:*", - "@glimmer/destroyable": "0.87.1", + "@glimmer/destroyable": "0.92.0", "@glimmer/env": "^0.1.7", - "@glimmer/manager": "0.87.1", - "@glimmer/owner": "0.87.1", - "@glimmer/util": "0.87.1", - "@glimmer/validator": "0.87.1", + "@glimmer/manager": "0.92.0", + "@glimmer/owner": "0.92.0", + "@glimmer/util": "0.92.0", + "@glimmer/validator": "0.92.0", "backburner.js": "^2.7.0", "dag-map": "^2.0.2", "expect-type": "^0.15.0", diff --git a/packages/@ember/runloop/package.json b/packages/@ember/runloop/package.json index 93a6751f197..ad842ae814a 100644 --- a/packages/@ember/runloop/package.json +++ b/packages/@ember/runloop/package.json @@ -13,7 +13,7 @@ "@ember/object": "workspace:*", "@ember/utils": "workspace:*", "@glimmer/env": "^0.1.7", - "@glimmer/validator": "0.87.1", + "@glimmer/validator": "0.92.0", "backburner.js": "^2.7.0", "expect-type": "^0.15.0", "internal-test-helpers": "workspace:*" diff --git a/packages/@ember/service/package.json b/packages/@ember/service/package.json index fee8726befc..35be87346a7 100644 --- a/packages/@ember/service/package.json +++ b/packages/@ember/service/package.json @@ -10,11 +10,11 @@ "@ember/array": "workspace:*", "@ember/debug": "workspace:*", "@ember/object": "workspace:*", - "@glimmer/destroyable": "0.87.1", + "@glimmer/destroyable": "0.92.0", "@glimmer/env": "^0.1.7", - "@glimmer/owner": "0.87.1", - "@glimmer/util": "0.87.1", - "@glimmer/validator": "0.87.1", + "@glimmer/owner": "0.92.0", + "@glimmer/util": "0.92.0", + "@glimmer/validator": "0.92.0", "expect-type": "^0.15.0", "internal-test-helpers": "workspace:*" } diff --git a/packages/@ember/template-compilation/package.json b/packages/@ember/template-compilation/package.json index ca93d6431ae..d94193d4fce 100644 --- a/packages/@ember/template-compilation/package.json +++ b/packages/@ember/template-compilation/package.json @@ -8,9 +8,9 @@ "dependencies": { "@ember/-internals": "workspace:*", "@ember/canary-features": "workspace:*", - "@glimmer/compiler": "0.87.1", + "@glimmer/compiler": "0.92.0", "@glimmer/env": "^0.1.7", - "@glimmer/syntax": "0.87.1", + "@glimmer/syntax": "0.92.0", "ember": "workspace:*", "ember-template-compiler": "workspace:*" } diff --git a/packages/@ember/template-factory/package.json b/packages/@ember/template-factory/package.json index 698ad1dbdbc..47a07b914a2 100644 --- a/packages/@ember/template-factory/package.json +++ b/packages/@ember/template-factory/package.json @@ -6,6 +6,6 @@ ".": "./index.ts" }, "dependencies": { - "@glimmer/opcode-compiler": "0.87.1" + "@glimmer/opcode-compiler": "0.92.0" } } diff --git a/packages/@ember/utils/package.json b/packages/@ember/utils/package.json index a45232ab7b6..cf1b22d70a1 100644 --- a/packages/@ember/utils/package.json +++ b/packages/@ember/utils/package.json @@ -13,12 +13,12 @@ "@ember/enumerable": "workspace:*", "@ember/object": "workspace:*", "@ember/runloop": "workspace:*", - "@glimmer/destroyable": "0.87.1", + "@glimmer/destroyable": "0.92.0", "@glimmer/env": "^0.1.7", - "@glimmer/manager": "0.87.1", - "@glimmer/owner": "0.87.1", - "@glimmer/util": "0.87.1", - "@glimmer/validator": "0.87.1", + "@glimmer/manager": "0.92.0", + "@glimmer/owner": "0.92.0", + "@glimmer/util": "0.92.0", + "@glimmer/validator": "0.92.0", "expect-type": "^0.15.0", "internal-test-helpers": "workspace:*" } diff --git a/packages/@ember/version/package.json b/packages/@ember/version/package.json index d2632960eb4..f51397a5e95 100644 --- a/packages/@ember/version/package.json +++ b/packages/@ember/version/package.json @@ -22,8 +22,8 @@ "@ember/runloop": "workspace:*", "@ember/service": "workspace:*", "@ember/utils": "workspace:*", - "@glimmer/manager": "0.87.1", - "@glimmer/runtime": "0.87.1", + "@glimmer/manager": "0.92.0", + "@glimmer/runtime": "0.92.0", "backburner.js": "^2.7.0", "ember": "workspace:*", "expect-type": "^0.15.0" diff --git a/packages/ember-template-compiler/lib/plugins/assert-against-attrs.ts b/packages/ember-template-compiler/lib/plugins/assert-against-attrs.ts index 22849cda421..2a0543076d9 100644 --- a/packages/ember-template-compiler/lib/plugins/assert-against-attrs.ts +++ b/packages/ember-template-compiler/lib/plugins/assert-against-attrs.ts @@ -36,8 +36,17 @@ export default function assertAgainstAttrs(env: EmberASTPluginEnvironment): ASTP name: 'assert-against-attrs', visitor: { - Program: { - enter(node: AST.Program) { + Template: { + enter(node: AST.Template) { + updateBlockParamsStack(node.blockParams); + }, + exit() { + stack.pop(); + }, + }, + + Block: { + enter(node: AST.Block) { updateBlockParamsStack(node.blockParams); }, exit() { diff --git a/packages/ember-template-compiler/lib/plugins/assert-splattribute-expression.ts b/packages/ember-template-compiler/lib/plugins/assert-splattribute-expression.ts deleted file mode 100644 index 4859871efdf..00000000000 --- a/packages/ember-template-compiler/lib/plugins/assert-splattribute-expression.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { assert } from '@ember/debug'; -import type { ASTPlugin } from '@glimmer/syntax'; -import calculateLocationDisplay from '../system/calculate-location-display'; -import type { EmberASTPluginEnvironment } from '../types'; - -export default function assertSplattributeExpressions(env: EmberASTPluginEnvironment): ASTPlugin { - let moduleName = env.meta?.moduleName; - - return { - name: 'assert-splattribute-expressions', - - visitor: { - PathExpression({ original, loc }) { - if (original === '...attributes') { - assert(`${errorMessage()} ${calculateLocationDisplay(moduleName, loc)}`); - } - }, - }, - }; -} - -function errorMessage() { - return '`...attributes` can only be used in the element position e.g. `
`. It cannot be used as a path.'; -} diff --git a/packages/ember-template-compiler/lib/plugins/index.ts b/packages/ember-template-compiler/lib/plugins/index.ts index 0b619bb76f9..6666ba891e7 100644 --- a/packages/ember-template-compiler/lib/plugins/index.ts +++ b/packages/ember-template-compiler/lib/plugins/index.ts @@ -2,7 +2,6 @@ import AssertAgainstAttrs from './assert-against-attrs'; import AssertAgainstNamedOutlets from './assert-against-named-outlets'; import AssertInputHelperWithoutBlock from './assert-input-helper-without-block'; import AssertReservedNamedArguments from './assert-reserved-named-arguments'; -import AssertSplattributeExpressions from './assert-splattribute-expression'; import TransformActionSyntax from './transform-action-syntax'; import TransformEachInIntoEach from './transform-each-in-into-each'; import TransformEachTrackArray from './transform-each-track-array'; @@ -12,37 +11,44 @@ import TransformResolutions from './transform-resolutions'; import TransformWrapMountAndOutlet from './transform-wrap-mount-and-outlet'; // order of plugins is important -export const RESOLUTION_MODE_TRANSFORMS = Object.freeze( - [ - TransformQuotedBindingsIntoJustBindings, - AssertReservedNamedArguments, - TransformActionSyntax, - AssertAgainstAttrs, - TransformEachInIntoEach, - AssertInputHelperWithoutBlock, - TransformInElement, - AssertSplattributeExpressions, - TransformEachTrackArray, - AssertAgainstNamedOutlets, - TransformWrapMountAndOutlet, - TransformResolutions, - ].filter(notNull) -); +export const RESOLUTION_MODE_TRANSFORMS = Object.freeze([ + TransformQuotedBindingsIntoJustBindings, + AssertReservedNamedArguments, + TransformActionSyntax, + AssertAgainstAttrs, + TransformEachInIntoEach, + AssertInputHelperWithoutBlock, + TransformInElement, + TransformEachTrackArray, + AssertAgainstNamedOutlets, + TransformWrapMountAndOutlet, + TransformResolutions, +]); -export const STRICT_MODE_TRANSFORMS = Object.freeze( - [ - TransformQuotedBindingsIntoJustBindings, - AssertReservedNamedArguments, - TransformActionSyntax, - TransformEachInIntoEach, - TransformInElement, - AssertSplattributeExpressions, - TransformEachTrackArray, - AssertAgainstNamedOutlets, - TransformWrapMountAndOutlet, - ].filter(notNull) -); +export const STRICT_MODE_TRANSFORMS = Object.freeze([ + TransformQuotedBindingsIntoJustBindings, + AssertReservedNamedArguments, + TransformActionSyntax, + TransformEachInIntoEach, + TransformInElement, + TransformEachTrackArray, + AssertAgainstNamedOutlets, + TransformWrapMountAndOutlet, +]); -function notNull(value: TValue | null): value is TValue { - return value !== null; -} +export const STRICT_MODE_KEYWORDS = Object.freeze([ + 'action', + 'mut', + 'readonly', + 'unbound', + + // TransformEachInIntoEach + '-each-in', + // TransformInElement + '-in-el-null', + // TransformEachTrackArray + '-track-array', + // TransformWrapMountAndOutlet + '-mount', + '-outlet', +]); diff --git a/packages/ember-template-compiler/lib/plugins/transform-resolutions.ts b/packages/ember-template-compiler/lib/plugins/transform-resolutions.ts index 513aa05ff69..ef4fce732bc 100644 --- a/packages/ember-template-compiler/lib/plugins/transform-resolutions.ts +++ b/packages/ember-template-compiler/lib/plugins/transform-resolutions.ts @@ -149,7 +149,7 @@ export default function transformResolutions(env: EmberASTPluginEnvironment): AS } function isLocalVariable(node: AST.PathExpression, hasLocal: (k: string) => boolean): boolean { - return !node.this && node.parts.length === 1 && hasLocal(node.parts[0]!); + return !(node.head.type === 'ThisHead') && node.tail.length === 1 && hasLocal(node.head.original); } function transformParams( diff --git a/packages/ember-template-compiler/lib/plugins/transform-wrap-mount-and-outlet.ts b/packages/ember-template-compiler/lib/plugins/transform-wrap-mount-and-outlet.ts index f6e178878b7..32482c8f404 100644 --- a/packages/ember-template-compiler/lib/plugins/transform-wrap-mount-and-outlet.ts +++ b/packages/ember-template-compiler/lib/plugins/transform-wrap-mount-and-outlet.ts @@ -43,8 +43,9 @@ export default function transformWrapMountAndOutlet(env: EmberASTPluginEnvironme name: 'transform-wrap-mount-and-outlet', visitor: { - Program: node, + Template: node, ElementNode: node, + Block: node, MustacheStatement(node: AST.MustacheStatement): AST.Node | void { if ( diff --git a/packages/ember-template-compiler/lib/plugins/utils.ts b/packages/ember-template-compiler/lib/plugins/utils.ts index 6bfe6240668..112ed51df4b 100644 --- a/packages/ember-template-compiler/lib/plugins/utils.ts +++ b/packages/ember-template-compiler/lib/plugins/utils.ts @@ -12,25 +12,37 @@ export function isStringLiteral(node: AST.Expression): node is AST.StringLiteral return node.type === 'StringLiteral'; } +function getLocalName(node: string | AST.VarHead): string { + if (typeof node === 'string') { + return node; + } else { + return node.original; + } +} + export function trackLocals() { let locals = new Map(); let node = { - enter(node: AST.Program | AST.Block | AST.ElementNode) { - for (let param of node.blockParams) { + enter(node: AST.Template | AST.Block | AST.ElementNode) { + let params = 'params' in node ? node.params : node.blockParams; + for (let param of params) { + let name = getLocalName(param); let value = locals.get(param) || 0; - locals.set(param, value + 1); + locals.set(name, value + 1); } }, - exit(node: AST.Program | AST.Block | AST.ElementNode) { - for (let param of node.blockParams) { - let value = locals.get(param) - 1; + exit(node: AST.Template | AST.Block | AST.ElementNode) { + let params = 'params' in node ? node.params : node.blockParams; + for (let param of params) { + let name = getLocalName(param); + let value = locals.get(name) - 1; if (value === 0) { - locals.delete(param); + locals.delete(name); } else { - locals.set(param, value); + locals.set(name, value); } } }, diff --git a/packages/ember-template-compiler/lib/system/compile-options.ts b/packages/ember-template-compiler/lib/system/compile-options.ts index 78bd7ca78a7..43736209912 100644 --- a/packages/ember-template-compiler/lib/system/compile-options.ts +++ b/packages/ember-template-compiler/lib/system/compile-options.ts @@ -1,5 +1,9 @@ import { assert } from '@ember/debug'; -import { RESOLUTION_MODE_TRANSFORMS, STRICT_MODE_TRANSFORMS } from '../plugins/index'; +import { + RESOLUTION_MODE_TRANSFORMS, + STRICT_MODE_KEYWORDS, + STRICT_MODE_TRANSFORMS, +} from '../plugins/index'; import type { EmberPrecompileOptions, PluginFunc } from '../types'; import COMPONENT_NAME_SIMPLE_DASHERIZE_CACHE from './dasherize-component-name'; @@ -45,6 +49,10 @@ export function buildCompileOptions(_options: EmberPrecompileOptions): EmberPrec meta.moduleName = options.moduleName; } + if (options.strictMode) { + options.keywords = STRICT_MODE_KEYWORDS; + } + return options; } diff --git a/packages/ember-template-compiler/package.json b/packages/ember-template-compiler/package.json index 49fab3f881f..bc69f1c703b 100644 --- a/packages/ember-template-compiler/package.json +++ b/packages/ember-template-compiler/package.json @@ -24,12 +24,12 @@ "@ember/service": "workspace:*", "@ember/template-compilation": "workspace:*", "@ember/utils": "workspace:*", - "@glimmer/compiler": "0.87.1", + "@glimmer/compiler": "0.92.0", "@glimmer/env": "^0.1.7", - "@glimmer/manager": "0.87.1", - "@glimmer/runtime": "0.87.1", - "@glimmer/syntax": "0.87.1", - "@glimmer/validator": "0.87.1", + "@glimmer/manager": "0.92.0", + "@glimmer/runtime": "0.92.0", + "@glimmer/syntax": "0.92.0", + "@glimmer/validator": "0.92.0", "backburner.js": "^2.7.0", "ember": "workspace:*", "internal-test-helpers": "workspace:*" diff --git a/packages/ember-template-compiler/tests/plugins/assert-splattribute-expression-test.js b/packages/ember-template-compiler/tests/plugins/assert-splattribute-expression-test.js index baaa12437d6..9f069891447 100644 --- a/packages/ember-template-compiler/tests/plugins/assert-splattribute-expression-test.js +++ b/packages/ember-template-compiler/tests/plugins/assert-splattribute-expression-test.js @@ -1,48 +1,27 @@ import { moduleFor, AbstractTestCase } from 'internal-test-helpers'; import { compile } from '../../index'; +const message = `Illegal use of ...attributes`; + moduleFor( 'ember-template-compiler: assert-splattribute-expression', class extends AbstractTestCase { - expectedMessage(locInfo) { - return `\`...attributes\` can only be used in the element position e.g. \`
\`. It cannot be used as a path. (${locInfo}) `; - } - '@test ...attributes is in element space'(assert) { assert.expect(0); compile('
Foo
'); } - '@test {{...attributes}} is not valid'() { - expectAssertion(() => { - compile('
{{...attributes}}
', { - moduleName: 'foo-bar', - }); - }, this.expectedMessage(`'foo-bar' @ L1:C7`)); + '@test {{...attributes}} is not valid path expression'(assert) { + assert.throws(() => compile('
{{...attributes}}
'), message); } - '@test {{...attributes}} is not valid path expression'() { - expectAssertion(() => { - compile('
{{...attributes}}
', { - moduleName: 'foo-bar', - }); - }, this.expectedMessage(`'foo-bar' @ L1:C7`)); - } - '@test {{...attributes}} is not valid modifier'() { - expectAssertion(() => { - compile('
Wat
', { - moduleName: 'foo-bar', - }); - }, this.expectedMessage(`'foo-bar' @ L1:C7`)); + '@test {{...attributes}} is not valid modifier'(assert) { + assert.throws(() => compile('
Wat
', message)); } - '@test {{...attributes}} is not valid attribute'() { - expectAssertion(() => { - compile('
Wat
', { - moduleName: 'foo-bar', - }); - }, this.expectedMessage(`'foo-bar' @ L1:C13`)); + '@test {{...attributes}} is not valid attribute'(assert) { + assert.throws(() => compile('
Wat
', message)); } } ); diff --git a/packages/ember-template-compiler/tests/plugins/transform-component-invocation-test.js b/packages/ember-template-compiler/tests/plugins/transform-component-invocation-test.js index c91857cb088..592edb25c91 100644 --- a/packages/ember-template-compiler/tests/plugins/transform-component-invocation-test.js +++ b/packages/ember-template-compiler/tests/plugins/transform-component-invocation-test.js @@ -14,9 +14,6 @@ moduleFor( '{{@modal open}}', // RFC#311 '{{@modal isOpen=true}}', // RFC#311 '{{#@modal}}Woot{{/@modal}}', // RFC#311 - '{{c.modal open}}', - '{{c.modal isOpen=true}}', - '{{#c.modal}}Woot{{/c.modal}}', '{{#my-component as |c|}}{{c name="Chad"}}{{/my-component}}', // RFC#311 '{{#my-component as |c|}}{{c "Chad"}}{{/my-component}}', // RFC#311 '{{#my-component as |c|}}{{#c}}{{/c}}{{/my-component}}', // RFC#311 diff --git a/packages/ember-template-compiler/tests/utils/transform-test-case.ts b/packages/ember-template-compiler/tests/utils/transform-test-case.ts index f95ea741a0b..46734fbe42b 100644 --- a/packages/ember-template-compiler/tests/utils/transform-test-case.ts +++ b/packages/ember-template-compiler/tests/utils/transform-test-case.ts @@ -10,16 +10,16 @@ export default abstract class extends AbstractTestCase { } } -function ast(template: string): AST.Program { - let program: Nullable = null; +function ast(template: string): AST.Template { + let program: Nullable = null; function extractProgram(): ASTPlugin { return { name: 'extract-program', visitor: { - Program: { - exit(node: AST.Program): void { + Template: { + exit(node: AST.Template): void { program = clone(node); }, }, diff --git a/packages/ember-testing/package.json b/packages/ember-testing/package.json index 92212ad77fd..f70351157da 100644 --- a/packages/ember-testing/package.json +++ b/packages/ember-testing/package.json @@ -19,11 +19,11 @@ "@ember/service": "workspace:*", "@ember/test": "workspace:*", "@ember/utils": "workspace:*", - "@glimmer/destroyable": "0.87.1", + "@glimmer/destroyable": "0.92.0", "@glimmer/env": "^0.1.7", - "@glimmer/owner": "0.87.1", - "@glimmer/util": "0.87.1", - "@glimmer/validator": "0.87.1", + "@glimmer/owner": "0.92.0", + "@glimmer/util": "0.92.0", + "@glimmer/validator": "0.92.0", "backburner.js": "^2.7.0", "ember": "workspace:*", "internal-test-helpers": "workspace:*", diff --git a/packages/ember/package.json b/packages/ember/package.json index 315424aff91..66a6f44c313 100644 --- a/packages/ember/package.json +++ b/packages/ember/package.json @@ -31,14 +31,14 @@ "@ember/test": "workspace:*", "@ember/utils": "workspace:*", "@ember/version": "workspace:*", - "@glimmer/destroyable": "0.87.1", + "@glimmer/destroyable": "0.92.0", "@glimmer/env": "^0.1.7", - "@glimmer/manager": "0.87.1", - "@glimmer/owner": "0.87.1", - "@glimmer/runtime": "0.87.1", + "@glimmer/manager": "0.92.0", + "@glimmer/owner": "0.92.0", + "@glimmer/runtime": "0.92.0", "@glimmer/tracking": "workspace:*", - "@glimmer/util": "0.87.1", - "@glimmer/validator": "0.87.1", + "@glimmer/util": "0.92.0", + "@glimmer/validator": "0.92.0", "backburner.js": "^2.7.0", "dag-map": "^2.0.2", "ember-template-compiler": "workspace:*", diff --git a/packages/internal-test-helpers/package.json b/packages/internal-test-helpers/package.json index c9c471524dc..047f5a70d04 100644 --- a/packages/internal-test-helpers/package.json +++ b/packages/internal-test-helpers/package.json @@ -24,16 +24,16 @@ "@ember/runloop": "workspace:*", "@ember/service": "workspace:*", "@ember/utils": "workspace:*", - "@glimmer/compiler": "0.87.1", - "@glimmer/destroyable": "0.87.1", + "@glimmer/compiler": "0.92.0", + "@glimmer/destroyable": "0.92.0", "@glimmer/env": "^0.1.7", - "@glimmer/manager": "0.87.1", - "@glimmer/opcode-compiler": "0.87.1", - "@glimmer/owner": "0.87.1", - "@glimmer/runtime": "0.87.1", - "@glimmer/syntax": "0.87.1", - "@glimmer/util": "0.87.1", - "@glimmer/validator": "0.87.1", + "@glimmer/manager": "0.92.0", + "@glimmer/opcode-compiler": "0.92.0", + "@glimmer/owner": "0.92.0", + "@glimmer/runtime": "0.92.0", + "@glimmer/syntax": "0.92.0", + "@glimmer/util": "0.92.0", + "@glimmer/validator": "0.92.0", "backburner.js": "^2.7.0", "dag-map": "^2.0.2", "ember": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f385f152d01..605ad276cf1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,59 +19,59 @@ importers: specifier: ^1.2.0 version: 1.2.0 '@glimmer/compiler': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/component': specifier: ^1.1.2 version: 1.1.2(@babel/core@7.23.2) '@glimmer/destroyable': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/env': specifier: ^0.1.7 version: 0.1.7 '@glimmer/global-context': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/interfaces': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/manager': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/node': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/opcode-compiler': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/owner': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/program': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/reference': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/runtime': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/syntax': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/util': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/validator': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/vm': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/vm-babel-plugins': - specifier: 0.87.1 - version: 0.87.1(@babel/core@7.23.2) + specifier: 0.92.0 + version: 0.92.0(@babel/core@7.23.2) '@simple-dom/interface': specifier: ^1.4.0 version: 1.4.0 @@ -160,6 +160,9 @@ importers: '@babel/core': specifier: ^7.22.9 version: 7.23.2 + '@babel/plugin-proposal-class-properties': + specifier: ^7.18.6 + version: 7.18.6(@babel/core@7.23.2) '@babel/plugin-proposal-decorators': specifier: ^7.23.6 version: 7.23.6(@babel/core@7.23.2) @@ -416,56 +419,56 @@ importers: specifier: workspace:* version: link:../utils '@glimmer/compiler': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/component': specifier: ^1.1.2 version: 1.1.2(@babel/core@7.23.2) '@glimmer/destroyable': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/env': specifier: ^0.1.7 version: 0.1.7 '@glimmer/global-context': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/interfaces': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/manager': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/node': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/opcode-compiler': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/owner': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/program': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/reference': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/runtime': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/syntax': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/util': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/validator': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/vm': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@simple-dom/interface': specifier: ^1.4.0 version: 1.4.0 @@ -530,20 +533,20 @@ importers: specifier: workspace:* version: link:../utils '@glimmer/destroyable': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/env': specifier: ^0.1.7 version: 0.1.7 '@glimmer/owner': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/util': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/validator': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 backburner.js: specifier: ^2.7.0 version: 2.8.0 @@ -590,23 +593,23 @@ importers: specifier: workspace:* version: link:../utils '@glimmer/destroyable': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/env': specifier: ^0.1.7 version: 0.1.7 '@glimmer/manager': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/owner': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/util': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/validator': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 expect-type: specifier: ^0.15.0 version: 0.15.0 @@ -629,11 +632,11 @@ importers: specifier: workspace:* version: link:../-internals '@glimmer/manager': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/runtime': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 expect-type: specifier: ^0.15.0 version: 0.15.0 @@ -656,20 +659,20 @@ importers: specifier: workspace:* version: link:../service '@glimmer/destroyable': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/env': specifier: ^0.1.7 version: 0.1.7 '@glimmer/owner': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/util': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/validator': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 expect-type: specifier: ^0.15.0 version: 0.15.0 @@ -710,23 +713,23 @@ importers: specifier: workspace:* version: link:../utils '@glimmer/destroyable': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/env': specifier: ^0.1.7 version: 0.1.7 '@glimmer/manager': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/owner': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/util': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/validator': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 backburner.js: specifier: ^2.7.0 version: 2.8.0 @@ -742,8 +745,8 @@ importers: packages/@ember/destroyable: dependencies: '@glimmer/destroyable': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 expect-type: specifier: ^0.15.0 version: 0.15.0 @@ -784,20 +787,20 @@ importers: specifier: workspace:* version: link:../utils '@glimmer/destroyable': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/env': specifier: ^0.1.7 version: 0.1.7 '@glimmer/owner': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/util': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/validator': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 dag-map: specifier: ^2.0.2 version: 2.0.2 @@ -826,20 +829,20 @@ importers: specifier: workspace:* version: link:../object '@glimmer/destroyable': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/env': specifier: ^0.1.7 version: 0.1.7 '@glimmer/owner': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/util': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/validator': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 internal-test-helpers: specifier: workspace:* version: link:../../internal-test-helpers @@ -853,11 +856,11 @@ importers: specifier: workspace:* version: link:../component '@glimmer/manager': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/runtime': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 expect-type: specifier: ^0.15.0 version: 0.15.0 @@ -889,8 +892,8 @@ importers: specifier: ^0.1.7 version: 0.1.7 '@glimmer/validator': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 internal-test-helpers: specifier: workspace:* version: link:../../internal-test-helpers @@ -901,11 +904,11 @@ importers: specifier: workspace:* version: link:../-internals '@glimmer/manager': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/runtime': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 packages/@ember/object: dependencies: @@ -934,23 +937,23 @@ importers: specifier: workspace:* version: link:../utils '@glimmer/destroyable': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/env': specifier: ^0.1.7 version: 0.1.7 '@glimmer/manager': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/owner': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/util': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/validator': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 expect-type: specifier: ^0.15.0 version: 0.15.0 @@ -1036,23 +1039,23 @@ importers: specifier: workspace:* version: link:../utils '@glimmer/destroyable': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/env': specifier: ^0.1.7 version: 0.1.7 '@glimmer/manager': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/owner': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/util': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/validator': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 backburner.js: specifier: ^2.7.0 version: 2.8.0 @@ -1093,8 +1096,8 @@ importers: specifier: ^0.1.7 version: 0.1.7 '@glimmer/validator': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 backburner.js: specifier: ^2.7.0 version: 2.8.0 @@ -1120,20 +1123,20 @@ importers: specifier: workspace:* version: link:../object '@glimmer/destroyable': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/env': specifier: ^0.1.7 version: 0.1.7 '@glimmer/owner': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/util': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/validator': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 expect-type: specifier: ^0.15.0 version: 0.15.0 @@ -1159,14 +1162,14 @@ importers: specifier: workspace:* version: link:../canary-features '@glimmer/compiler': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/env': specifier: ^0.1.7 version: 0.1.7 '@glimmer/syntax': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 ember: specifier: workspace:* version: link:../../ember @@ -1177,8 +1180,8 @@ importers: packages/@ember/template-factory: dependencies: '@glimmer/opcode-compiler': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 packages/@ember/test: dependencies: @@ -1210,23 +1213,23 @@ importers: specifier: workspace:* version: link:../runloop '@glimmer/destroyable': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/env': specifier: ^0.1.7 version: 0.1.7 '@glimmer/manager': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/owner': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/util': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/validator': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 expect-type: specifier: ^0.15.0 version: 0.15.0 @@ -1285,11 +1288,11 @@ importers: specifier: workspace:* version: link:../utils '@glimmer/manager': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/runtime': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 backburner.js: specifier: ^2.7.0 version: 2.8.0 @@ -1381,29 +1384,29 @@ importers: specifier: workspace:* version: link:../@ember/version '@glimmer/destroyable': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/env': specifier: ^0.1.7 version: 0.1.7 '@glimmer/manager': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/owner': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/runtime': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/tracking': specifier: workspace:* version: link:../@glimmer/tracking '@glimmer/util': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/validator': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 backburner.js: specifier: ^2.7.0 version: 2.8.0 @@ -1483,23 +1486,23 @@ importers: specifier: workspace:* version: link:../@ember/utils '@glimmer/compiler': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/env': specifier: ^0.1.7 version: 0.1.7 '@glimmer/manager': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/runtime': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/syntax': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/validator': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 backburner.js: specifier: ^2.7.0 version: 2.8.0 @@ -1552,20 +1555,20 @@ importers: specifier: workspace:* version: link:../@ember/utils '@glimmer/destroyable': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/env': specifier: ^0.1.7 version: 0.1.7 '@glimmer/owner': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/util': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/validator': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 backburner.js: specifier: ^2.7.0 version: 2.8.0 @@ -1639,35 +1642,35 @@ importers: specifier: workspace:* version: link:../@ember/utils '@glimmer/compiler': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/destroyable': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/env': specifier: ^0.1.7 version: 0.1.7 '@glimmer/manager': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/opcode-compiler': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/owner': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/runtime': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/syntax': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/util': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 '@glimmer/validator': - specifier: 0.87.1 - version: 0.87.1 + specifier: 0.92.0 + version: 0.92.0 backburner.js: specifier: ^2.7.0 version: 2.8.0 @@ -2576,9 +2579,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.2 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.2) + '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-proposal-decorators@7.23.6(@babel/core@7.23.2): resolution: {integrity: sha512-D7Ccq9LfkBFnow3azZGJvZYgcfeqAw3I1e5LoTpj6UKIFQilh8yqXsIGcRIqbBdsPWIz+Ze7ZZfggSj62Qp+Fg==} @@ -2602,7 +2604,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.2 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.2) + '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2623,7 +2625,7 @@ packages: dependencies: '@babel/core': 7.23.2 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.2) + '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.2) dev: false @@ -3277,7 +3279,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.2 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.2) + '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.2) dev: false @@ -3765,15 +3767,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@glimmer/compiler@0.87.1: - resolution: {integrity: sha512-7qXrOv55cH/YW+Vs4dFkNJsNXAW/jP+7kZLhKcH8wCduPfBCQxb9HNh1lBESuFej2rCks6h9I1qXeZHkc/oWxQ==} + /@glimmer/compiler@0.92.0: + resolution: {integrity: sha512-hTP18//aDRxsadWvqzAz3r54yEhN+M2UcTfUV++13gNSqgvRwuKTUelcL3bLDTQcnGUzZEMnFb3+3QayAAmQBg==} engines: {node: '>= 16.0.0'} dependencies: - '@glimmer/interfaces': 0.87.1 - '@glimmer/syntax': 0.87.1 - '@glimmer/util': 0.87.1 - '@glimmer/vm': 0.87.1 - '@glimmer/wire-format': 0.87.1 + '@glimmer/interfaces': 0.92.0 + '@glimmer/syntax': 0.92.0 + '@glimmer/util': 0.92.0 + '@glimmer/vm': 0.92.0 + '@glimmer/wire-format': 0.92.0 dev: false /@glimmer/component@1.1.2(@babel/core@7.23.2): @@ -3799,40 +3801,40 @@ packages: - supports-color dev: false - /@glimmer/debug@0.87.1: - resolution: {integrity: sha512-rja9/Hofv1NEjIqp8P2eQuHY3+orlS3BL4fbFyvrE+Pw4lRwQPLm6UdgCMHZGGe9yweZAGvNVH6CimDBq7biwA==} + /@glimmer/debug@0.92.0: + resolution: {integrity: sha512-asWN1hsKYDwfyCc6dZeIyrXs4EpQCwAfZi9I1/U/RweI7iNOME0baunDVCUB9jZpV5TBSeEx+J1fs1GsIYvqAg==} dependencies: - '@glimmer/interfaces': 0.87.1 - '@glimmer/util': 0.87.1 - '@glimmer/vm': 0.87.1 + '@glimmer/interfaces': 0.92.0 + '@glimmer/util': 0.92.0 + '@glimmer/vm': 0.92.0 dev: false - /@glimmer/destroyable@0.87.1: - resolution: {integrity: sha512-v9kdMq/FCSMcXK4gIKxPCSEcYXjDAnapKVY2o9fCgqky+mbpd0XuGoxaXa35nFwDk69L/9/8B3vXQOpa6ThikA==} + /@glimmer/destroyable@0.92.0: + resolution: {integrity: sha512-Y6IO0CTKdIvM24HvhcZBePDRG9Rc3nbRRqpYameNHmI/msEOVHk6BT217qkpGnma4OuT/AU6msoIOkTQI5kQPg==} dependencies: '@glimmer/env': 0.1.7 - '@glimmer/global-context': 0.87.1 - '@glimmer/interfaces': 0.87.1 - '@glimmer/util': 0.87.1 + '@glimmer/global-context': 0.92.0 + '@glimmer/interfaces': 0.92.0 + '@glimmer/util': 0.92.0 dev: false /@glimmer/di@0.1.11: resolution: {integrity: sha512-moRwafNDwHTnTHzyyZC9D+mUSvYrs1Ak0tRPjjmCghdoHHIvMshVbEnwKb/1WmW5CUlKc2eL9rlAV32n3GiItg==} dev: false - /@glimmer/encoder@0.87.1: - resolution: {integrity: sha512-5oZEkdtYcAbkiWuXFQ8ofSEGH5uzqi86WK9/IXb7Qn4t6o7ixadWk8nhtORRpVS1u4FpAjhsAysnzRFoNqJwbQ==} + /@glimmer/encoder@0.92.0: + resolution: {integrity: sha512-JLg9dEiRTjKI4yEr7iS8ZnZ/Q6afuD58DVGNm1m5H+rZs0SPfK0/RXMKjeSeOlW4TU/gUc/vS1ltpdXTp08mDQ==} dependencies: - '@glimmer/interfaces': 0.87.1 - '@glimmer/vm': 0.87.1 + '@glimmer/interfaces': 0.92.0 + '@glimmer/vm': 0.92.0 dev: false /@glimmer/env@0.1.7: resolution: {integrity: sha512-JKF/a9I9jw6fGoz8kA7LEQslrwJ5jms5CXhu/aqkBWk+PmZ6pTl8mlb/eJ/5ujBGTiQzBhy5AIWF712iA+4/mw==} dev: false - /@glimmer/global-context@0.87.1: - resolution: {integrity: sha512-Mitr7pBeVDTplFWlohyzxWLpFll7ffMZN+fnkBmUj8HiDLbD790Lb8lR9B2nL3t4RGnh6W9kDkCnZB+hvDm/eQ==} + /@glimmer/global-context@0.92.0: + resolution: {integrity: sha512-XUPXIsz/F0YQz3vY9x+u3YQMibM3378gEPJObs3CHzAWJUl9Kz1CAb+jRigRrxIcmdzoonA49VMwGmmKRNoGag==} dev: false /@glimmer/interfaces@0.84.3: @@ -3841,94 +3843,94 @@ packages: '@simple-dom/interface': 1.4.0 dev: false - /@glimmer/interfaces@0.87.1: - resolution: {integrity: sha512-2lbwLY4Bt9i2SvwT4hhY0TgEYKhOMQBgYvRiraq2BYHwO8iLKh3lC8iO3d+rQ3VgDtQ9i/sP6HG848VNRyVHxA==} + /@glimmer/interfaces@0.92.0: + resolution: {integrity: sha512-SKZvIs+ZPN8F3EH8kEzs7rGIUa+wuV+/3oWYyEiBrqd+VrZlmAxIELM6qZ6oxXT2tx6q1rh2EmA5rWezi6bmYQ==} dependencies: '@simple-dom/interface': 1.4.0 dev: false - /@glimmer/manager@0.87.1: - resolution: {integrity: sha512-jEUZZQWcuxKg+Ri/A1HGURm9pBrx13JDHx1djYCnPo96yjtQFYxEG0VcwLq2EtAEpFrekwfO1b6m3JZiFqmtGg==} + /@glimmer/manager@0.92.0: + resolution: {integrity: sha512-vo5kpdyRq1YpP9FBcpSB9K8nGyz3C8k/vF3yd6g0u4zqVaaQrtvM+nw7pqOOQHf+FfQMr5nLYisvySWT7Eqwww==} dependencies: - '@glimmer/debug': 0.87.1 - '@glimmer/destroyable': 0.87.1 + '@glimmer/debug': 0.92.0 + '@glimmer/destroyable': 0.92.0 '@glimmer/env': 0.1.7 - '@glimmer/global-context': 0.87.1 - '@glimmer/interfaces': 0.87.1 - '@glimmer/reference': 0.87.1 - '@glimmer/util': 0.87.1 - '@glimmer/validator': 0.87.1 - '@glimmer/vm': 0.87.1 + '@glimmer/global-context': 0.92.0 + '@glimmer/interfaces': 0.92.0 + '@glimmer/reference': 0.92.0 + '@glimmer/util': 0.92.0 + '@glimmer/validator': 0.92.0 + '@glimmer/vm': 0.92.0 dev: false - /@glimmer/node@0.87.1: - resolution: {integrity: sha512-peESyArA08Va9f3gpBnhO+RNkK4Oe0Q8sMPQILCloAukNe2+DQOhTvDgVjRUKmVXMJCWoSgmJtxkiB3ZE193vw==} + /@glimmer/node@0.92.0: + resolution: {integrity: sha512-TlyGmuCjGLWXvQDsAXUhDGjd4Q7BgNVwqv0hObu7A0qGOlEfpS1l6i/7cAzmCpQVUcGQiyUruJrIfpQgDWaepg==} dependencies: - '@glimmer/interfaces': 0.87.1 - '@glimmer/runtime': 0.87.1 - '@glimmer/util': 0.87.1 + '@glimmer/interfaces': 0.92.0 + '@glimmer/runtime': 0.92.0 + '@glimmer/util': 0.92.0 '@simple-dom/document': 1.4.0 dev: false - /@glimmer/opcode-compiler@0.87.1: - resolution: {integrity: sha512-D9OFrH3CrGNXfGtgcVWvu3xofpQZPoYFkqj3RrcDwnsSIYPSqUYTIOO6dwpxTbPlzkASidq0B2htXK7WkCERVw==} + /@glimmer/opcode-compiler@0.92.0: + resolution: {integrity: sha512-78LgXyLzGeCIlQwH45T6RoKtO8AGXEmrlOMjP7dq7k5JpDpitJHAwmPavjC18uhgOVs8V3SLYUsE/lnvhmuQkg==} dependencies: - '@glimmer/debug': 0.87.1 - '@glimmer/encoder': 0.87.1 + '@glimmer/debug': 0.92.0 + '@glimmer/encoder': 0.92.0 '@glimmer/env': 0.1.7 - '@glimmer/global-context': 0.87.1 - '@glimmer/interfaces': 0.87.1 - '@glimmer/manager': 0.87.1 - '@glimmer/reference': 0.87.1 - '@glimmer/util': 0.87.1 - '@glimmer/vm': 0.87.1 - '@glimmer/wire-format': 0.87.1 + '@glimmer/global-context': 0.92.0 + '@glimmer/interfaces': 0.92.0 + '@glimmer/manager': 0.92.0 + '@glimmer/reference': 0.92.0 + '@glimmer/util': 0.92.0 + '@glimmer/vm': 0.92.0 + '@glimmer/wire-format': 0.92.0 dev: false - /@glimmer/owner@0.87.1: - resolution: {integrity: sha512-ayYjznPMSGpgygNT7XlTXeel6Cl/fafm4WJeRRgdPxG1EZMjKPlfpfAyNzf9peEIlW3WMbPu3RAIYrf54aThWQ==} + /@glimmer/owner@0.92.0: + resolution: {integrity: sha512-SUhVaUvcLcVJ+9f8ob/fln0+z6jAinYv21sA1FcgAYMnb3eaB5RPjFFW3BjGy9VPT/IOAVyj95+NDm6wguMDEg==} dependencies: - '@glimmer/util': 0.87.1 + '@glimmer/util': 0.92.0 dev: false - /@glimmer/program@0.87.1: - resolution: {integrity: sha512-+r1Dz5Da0zyYwBhPmqoXiw3qmDamqqhVmSCtJLLcZ6exXXC2ZjGoNdynfos80A91dx+PFqYgHg+5lfa5STT9iQ==} + /@glimmer/program@0.92.0: + resolution: {integrity: sha512-hRIZMRlRsyJuhUoqLsBu66NTPel6itXrccBOHBI49n9+FdisjiM3tgNNhrY+Tik/GnmtzztrCWjrqpf/PCp+rg==} dependencies: - '@glimmer/encoder': 0.87.1 + '@glimmer/encoder': 0.92.0 '@glimmer/env': 0.1.7 - '@glimmer/interfaces': 0.87.1 - '@glimmer/manager': 0.87.1 - '@glimmer/opcode-compiler': 0.87.1 - '@glimmer/util': 0.87.1 - '@glimmer/vm': 0.87.1 - '@glimmer/wire-format': 0.87.1 + '@glimmer/interfaces': 0.92.0 + '@glimmer/manager': 0.92.0 + '@glimmer/opcode-compiler': 0.92.0 + '@glimmer/util': 0.92.0 + '@glimmer/vm': 0.92.0 + '@glimmer/wire-format': 0.92.0 dev: false - /@glimmer/reference@0.87.1: - resolution: {integrity: sha512-KJwKYDnds6amsmVB1YxmFhJGI/TNCNmsFBWKUH8K0odmiggUCjt3AwUoOKztkwh3xxy/jpq+5AahIuV+uBgW7A==} + /@glimmer/reference@0.92.0: + resolution: {integrity: sha512-es2a3bh9nk8kYCacLfm5Ly3x5sFDf2f0/7Vj1Ca2BXXfAn8UhuaR9uCrEI1OtBBz1JBciCzpbKemsu8J6VulYg==} dependencies: '@glimmer/env': 0.1.7 - '@glimmer/global-context': 0.87.1 - '@glimmer/interfaces': 0.87.1 - '@glimmer/util': 0.87.1 - '@glimmer/validator': 0.87.1 + '@glimmer/global-context': 0.92.0 + '@glimmer/interfaces': 0.92.0 + '@glimmer/util': 0.92.0 + '@glimmer/validator': 0.92.0 dev: false - /@glimmer/runtime@0.87.1: - resolution: {integrity: sha512-7QBONxRFesnHzelCiUahZjRj3nhbUxPg0F+iD+3rALrXaWfB1pkhngMTK2DYEmsJ7kq04qVzwBnTSrqsmLzOTg==} + /@glimmer/runtime@0.92.0: + resolution: {integrity: sha512-LlAf86bNhRCfPvrXY5x+3YMhhSWSCT5NVTTYQp9j07D0bxvNw57n4mESuEgYZYWl4/cyEwegrmWW6Qs1P85bmQ==} dependencies: - '@glimmer/destroyable': 0.87.1 + '@glimmer/destroyable': 0.92.0 '@glimmer/env': 0.1.7 - '@glimmer/global-context': 0.87.1 - '@glimmer/interfaces': 0.87.1 - '@glimmer/manager': 0.87.1 - '@glimmer/owner': 0.87.1 - '@glimmer/program': 0.87.1 - '@glimmer/reference': 0.87.1 - '@glimmer/util': 0.87.1 - '@glimmer/validator': 0.87.1 - '@glimmer/vm': 0.87.1 - '@glimmer/wire-format': 0.87.1 + '@glimmer/global-context': 0.92.0 + '@glimmer/interfaces': 0.92.0 + '@glimmer/manager': 0.92.0 + '@glimmer/owner': 0.92.0 + '@glimmer/program': 0.92.0 + '@glimmer/reference': 0.92.0 + '@glimmer/util': 0.92.0 + '@glimmer/validator': 0.92.0 + '@glimmer/vm': 0.92.0 + '@glimmer/wire-format': 0.92.0 dev: false /@glimmer/syntax@0.84.3: @@ -3940,12 +3942,12 @@ packages: simple-html-tokenizer: 0.5.11 dev: false - /@glimmer/syntax@0.87.1: - resolution: {integrity: sha512-zYzZT6LgpSF0iv5iuxmMV5Pf52aE8dukNC2KfrHC6gXJfM4eLZMZcyk76NW5m+SEetZSOXX6AWv/KwLnoxiMfQ==} + /@glimmer/syntax@0.92.0: + resolution: {integrity: sha512-h8pYBC2cCnEyjbZBip2Yw4qi8S8sjNCYAb57iHek3AIhyFKMM13aTN+/aajFOM4FUTMCVE2B/iAAmO41WRCX4A==} dependencies: - '@glimmer/interfaces': 0.87.1 - '@glimmer/util': 0.87.1 - '@glimmer/wire-format': 0.87.1 + '@glimmer/interfaces': 0.92.0 + '@glimmer/util': 0.92.0 + '@glimmer/wire-format': 0.92.0 '@handlebars/parser': 2.0.0 simple-html-tokenizer: 0.5.11 dev: false @@ -3962,24 +3964,24 @@ packages: '@simple-dom/interface': 1.4.0 dev: false - /@glimmer/util@0.87.1: - resolution: {integrity: sha512-Duxi2JutaIewfIWp8PJl7U5n12yasKWtZFHNLSrg+C8TKeMXdRyJtI7uqtqg0Z/6F9JwdJe/IPhTvdsTTfzAuA==} + /@glimmer/util@0.92.0: + resolution: {integrity: sha512-Fap52smLp8RkCgvozrZG7RysNJ2T6mk1SPoknMzmukbabFVBAzxl5iyY4OXUbmR09j6t2pupjF6sPabnLtL4vw==} dependencies: '@glimmer/env': 0.1.7 - '@glimmer/interfaces': 0.87.1 + '@glimmer/interfaces': 0.92.0 dev: false - /@glimmer/validator@0.87.1: - resolution: {integrity: sha512-GqzULgK9m2QPfPswhyV30tZmsUegowv9Tyfz2l15cLDFX9L5GcEORpzKXjR0TzCplffuqOC1g8rnMaPsP55apw==} + /@glimmer/validator@0.92.0: + resolution: {integrity: sha512-GFX54PD8BRi+lg/HJ8KJRcvnV4rbDzJooQnOpJ9PlgIQi4KP/ivdjsw3DaEuvqn4K584LR6VTgHmxfZlLkDh2g==} dependencies: '@glimmer/env': 0.1.7 - '@glimmer/global-context': 0.87.1 - '@glimmer/interfaces': 0.87.1 - '@glimmer/util': 0.87.1 + '@glimmer/global-context': 0.92.0 + '@glimmer/interfaces': 0.92.0 + '@glimmer/util': 0.92.0 dev: false - /@glimmer/vm-babel-plugins@0.87.1(@babel/core@7.23.2): - resolution: {integrity: sha512-VbhYHa+HfGFiTIOOkvFuYPwBTaDvWTAR1Q55RI25JI6Nno0duBLB3UVRTDgHM+iOfbgRN7OSR5XCe/C5X5C5LA==} + /@glimmer/vm-babel-plugins@0.92.0(@babel/core@7.23.2): + resolution: {integrity: sha512-s/jPlTykZb3YzzOCVmGyMP8NihonHM+eY5WBQl+MOCXe2KdGkTAxFgnuGYzHTtJ/JzCRa/YRXQhJhncJSg6L2A==} engines: {node: '>=16'} dependencies: babel-plugin-debug-macros: 0.3.4(@babel/core@7.23.2) @@ -3987,18 +3989,18 @@ packages: - '@babel/core' dev: false - /@glimmer/vm@0.87.1: - resolution: {integrity: sha512-JSFr85ASZmuN4H72px7GHtnW79PPRHpqHw6O/6UUZd+ocwWHy+nG9JGbo8kntvqN5xP0SdCipjv/c0u7nkc8tg==} + /@glimmer/vm@0.92.0: + resolution: {integrity: sha512-y8HKYa0XrVZEKKJxfjVudpiC1ghe33lNKy0+/vxUBosQlH/+i1IJsHMaszQ5jhXZ3+RyTug4PMbs8BUeKDfzig==} dependencies: - '@glimmer/interfaces': 0.87.1 - '@glimmer/util': 0.87.1 + '@glimmer/interfaces': 0.92.0 + '@glimmer/util': 0.92.0 dev: false - /@glimmer/wire-format@0.87.1: - resolution: {integrity: sha512-O3W1HDfRGX7wHZqvP8UzI/nWyZ2GIMFolU7l6WcLGU9HIdzqfxsc7ae2Icob/fq2kV9meHti4yDEdTMlBVK9AQ==} + /@glimmer/wire-format@0.92.0: + resolution: {integrity: sha512-yKhfU7b3PN86iqbfKksB+F9PB/RqbVkZlcRpZWRpEL3HnZ0bJUKC9bsOJynOg77PDXuYQXkbDMfL8ngTuxk+rg==} dependencies: - '@glimmer/interfaces': 0.87.1 - '@glimmer/util': 0.87.1 + '@glimmer/interfaces': 0.92.0 + '@glimmer/util': 0.92.0 dev: false /@handlebars/parser@2.0.0: