diff --git a/package.json b/package.json index 5224ed3feb1..797ace52b26 100644 --- a/package.json +++ b/package.json @@ -74,16 +74,16 @@ }, "devDependencies": { "@babel/preset-env": "^7.9.5", - "@glimmer/compiler": "0.66.0", + "@glimmer/compiler": "0.66.1", "@glimmer/env": "^0.1.7", - "@glimmer/global-context": "0.66.0", - "@glimmer/interfaces": "0.66.0", - "@glimmer/node": "0.66.0", - "@glimmer/opcode-compiler": "0.66.0", - "@glimmer/program": "0.66.0", - "@glimmer/reference": "0.66.0", - "@glimmer/runtime": "0.66.0", - "@glimmer/validator": "0.66.0", + "@glimmer/global-context": "0.66.1", + "@glimmer/interfaces": "0.66.1", + "@glimmer/node": "0.66.1", + "@glimmer/opcode-compiler": "0.66.1", + "@glimmer/program": "0.66.1", + "@glimmer/reference": "0.66.1", + "@glimmer/runtime": "0.66.1", + "@glimmer/validator": "0.66.1", "@simple-dom/document": "^1.4.0", "@types/qunit": "^2.9.1", "@types/rsvp": "^4.0.3", diff --git a/packages/@ember/-internals/glimmer/lib/component-managers/custom.ts b/packages/@ember/-internals/glimmer/lib/component-managers/custom.ts index 02f1093e39b..f55e5c03c9c 100644 --- a/packages/@ember/-internals/glimmer/lib/component-managers/custom.ts +++ b/packages/@ember/-internals/glimmer/lib/component-managers/custom.ts @@ -1,5 +1,6 @@ import { Factory } from '@ember/-internals/owner'; import { assert } from '@ember/debug'; +import { DEBUG } from '@glimmer/env'; import { Arguments, ComponentCapabilities, @@ -24,6 +25,7 @@ import { buildCapabilities, registerDestructor, } from '@glimmer/runtime'; +import { deprecateMutationsInTrackingTransaction } from '@glimmer/validator'; import { argsProxyFor } from '../utils/args-proxy'; const CAPABILITIES = { @@ -136,11 +138,19 @@ export default class CustomComponentManager let { delegate } = definition; let args = argsProxyFor(vmArgs.capture(), 'component'); - let component = delegate.createComponent(definition.ComponentClass.class!, args); + let component; + + if (DEBUG && deprecateMutationsInTrackingTransaction !== undefined) { + deprecateMutationsInTrackingTransaction(() => { + component = delegate.createComponent(definition.ComponentClass.class!, args); + }); + } else { + component = delegate.createComponent(definition.ComponentClass.class!, args); + } let bucket = new CustomComponentState(delegate, component, args, env); - return bucket; + return bucket as CustomComponentState; } getDebugName({ name }: CustomComponentDefinitionState): string { diff --git a/packages/@ember/-internals/glimmer/lib/modifiers/custom.ts b/packages/@ember/-internals/glimmer/lib/modifiers/custom.ts index 88a12791e69..9ba2a1154e1 100644 --- a/packages/@ember/-internals/glimmer/lib/modifiers/custom.ts +++ b/packages/@ember/-internals/glimmer/lib/modifiers/custom.ts @@ -10,7 +10,12 @@ import { VMArguments, } from '@glimmer/interfaces'; import { buildCapabilities, registerDestructor, reifyArgs } from '@glimmer/runtime'; -import { createUpdatableTag, untrack, UpdatableTag } from '@glimmer/validator'; +import { + createUpdatableTag, + deprecateMutationsInTrackingTransaction, + untrack, + UpdatableTag, +} from '@glimmer/validator'; import { SimpleElement } from '@simple-dom/interface'; import { argsProxyFor } from '../utils/args-proxy'; @@ -111,10 +116,22 @@ class InteractiveCustomModifierManager let { useArgsProxy, passFactoryToCreate } = delegate.capabilities; let args = useArgsProxy ? argsProxyFor(capturedArgs, 'modifier') : reifyArgs(capturedArgs); - let instance = delegate.createModifier( - passFactoryToCreate ? ModifierClass : ModifierClass.class, - args - ); + + let instance: ModifierInstance; + + if (DEBUG && deprecateMutationsInTrackingTransaction !== undefined) { + deprecateMutationsInTrackingTransaction(() => { + instance = delegate.createModifier( + passFactoryToCreate ? ModifierClass : ModifierClass.class, + args + ); + }); + } else { + instance = delegate.createModifier( + passFactoryToCreate ? ModifierClass : ModifierClass.class, + args + ); + } let tag = createUpdatableTag(); let state: CustomModifierState; @@ -124,14 +141,14 @@ class InteractiveCustomModifierManager element, delegate, args, - modifier: instance, + modifier: instance!, }; } else { state = { tag, element, delegate, - modifier: instance, + modifier: instance!, get args() { return reifyArgs(capturedArgs); }, 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 d7ef5142163..614380f0492 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 @@ -3801,6 +3801,31 @@ moduleFor( runTask(() => set(this.context, 'cond', false)); } + + '@test tracked property mutation in init does not error'() { + // TODO: this should issue a deprecation, but since the curly manager + // uses an untracked frame for construction we don't (yet) + this.registerComponent('foo-bar', { + template: `{{this.itemCount}}`, + ComponentClass: class extends Component { + @tracked itemCount = 0; + + init() { + super.init(...arguments); + + // first read the tracked property + let { itemCount } = this; + + // then attempt to update the tracked property + this.itemCount = itemCount + 1; + } + }, + }); + + this.render(''); + + this.assertComponentElement(this.firstChild, { content: '1' }); + } } ); diff --git a/packages/@ember/-internals/glimmer/tests/integration/custom-component-manager-test.js b/packages/@ember/-internals/glimmer/tests/integration/custom-component-manager-test.js index 36fe9447b60..b8d014e071c 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/custom-component-manager-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/custom-component-manager-test.js @@ -2,7 +2,7 @@ import { DEBUG } from '@glimmer/env'; import { moduleFor, RenderingTestCase, runTask, strip } from 'internal-test-helpers'; import { Object as EmberObject } from '@ember/-internals/runtime'; -import { set, setProperties, computed } from '@ember/-internals/metal'; +import { set, setProperties, computed, tracked } from '@ember/-internals/metal'; import { setComponentManager, capabilities } from '@ember/-internals/glimmer'; const BasicComponentManager = EmberObject.extend({ @@ -897,5 +897,35 @@ moduleFor( assert.verifySteps([]); } + + '@test tracked property mutation in constructor issues a deprecation'() { + let ComponentClass = setComponentManager( + createBasicManager, + class extends EmberObject { + @tracked itemCount = 0; + + init() { + super.init(...arguments); + + // first read the tracked property + let { itemCount } = this; + + // then attempt to update the tracked property + this.itemCount = itemCount + 1; + } + } + ); + + this.registerComponent('foo-bar', { + template: `{{this.itemCount}}`, + ComponentClass, + }); + + expectDeprecation(() => { + this.render(''); + }, /You attempted to update `itemCount` on `<.*>`, but it had already been used previously in the same computation/); + + this.assertHTML(`1`); + } } ); 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 32752394b11..8a9b5aac686 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 @@ -235,6 +235,50 @@ class ModifierManagerTest extends RenderingTestCase { assert.equal(updateCount, 2); } + '@test provides a helpful deprecation when mutating a tracked value that was consumed already within constructor'( + assert + ) { + let ModifierClass = setModifierManager( + (owner) => { + return new this.CustomModifierManager(owner); + }, + class { + static create() { + return new this(); + } + + @tracked foo = 123; + + constructor() { + // first read the tracked property + this.foo; + + // then attempt to update the tracked property + this.foo = 456; + } + + didInsertElement() {} + didUpdate() {} + willDestroyElement() {} + } + ); + + this.registerModifier( + 'foo-bar', + class extends ModifierClass { + didInsertElement() { + assert.ok(true, 'modifiers didInsertElement was called'); + } + } + ); + + let expectedMessage = backtrackingMessageFor('foo'); + + expectDeprecation(() => { + this.render('

hello world

'); + }, expectedMessage); + } + '@test provides a helpful assertion when mutating a value that was consumed already'() { class Person { @tracked name = 'bob'; 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 74d5d4e3553..a11cea0e794 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 @@ -729,7 +729,7 @@ moduleFor( }, expectedMessage); } - ['@test class-based helper gives helpful assertion when mutating a tracked property that was tracked already']() { + ['@test class-based helper gives helpful deprecation when mutating a tracked property that was tracked already']() { this.add( 'helper:hello-world', class HelloWorld extends Helper { @@ -746,7 +746,7 @@ moduleFor( renderTree: ['\\(result of a `` helper\\)'], }); - expectAssertion(() => { + expectDeprecation(() => { this.render('{{hello-world}}'); }, expectedMessage); } diff --git a/packages/@ember/-internals/glimmer/tests/integration/helpers/helper-manager-test.js b/packages/@ember/-internals/glimmer/tests/integration/helpers/helper-manager-test.js index 8b48cb65819..06d71be24f5 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/helpers/helper-manager-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/helpers/helper-manager-test.js @@ -319,6 +319,60 @@ if (EMBER_GLIMMER_HELPER_MANAGER) { assert.verifySteps([]); } + + '@test custom helpers gives helpful assertion when reading then mutating a tracked value within constructor'() { + this.registerCustomHelper( + 'hello', + class extends TestHelper { + @tracked foo = 123; + + constructor() { + super(...arguments); + + // first read the tracked property + this.foo; + + // then attempt to update the tracked property + this.foo = 456; + } + + value() { + return this.foo; + } + } + ); + + let expectedMessage = backtrackingMessageFor('foo'); + + expectAssertion(() => { + this.render('{{hello}}'); + }, expectedMessage); + } + + '@test custom helpers gives helpful assertion when reading then mutating a tracked value within value'() { + this.registerCustomHelper( + 'hello', + class extends TestHelper { + @tracked foo = 123; + + value() { + // first read the tracked property + this.foo; + + // then attempt to update the tracked property + this.foo = 456; + } + } + ); + + let expectedMessage = backtrackingMessageFor('foo', '.*', { + renderTree: ['\\(result of a `TEST_HELPER` helper\\)'], + }); + + expectAssertion(() => { + this.render('{{hello}}'); + }, expectedMessage); + } } ); } diff --git a/packages/@ember/-internals/glimmer/tests/integration/helpers/tracked-test.js b/packages/@ember/-internals/glimmer/tests/integration/helpers/tracked-test.js index b0a44ffeb31..d21570e7ca4 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/helpers/tracked-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/helpers/tracked-test.js @@ -429,7 +429,7 @@ moduleFor( }, expectedMessage); } - '@test simple helper gives helpful assertion when mutating a tracked property that was tracked already'() { + '@test simple helper gives helpful deprecation when mutating a tracked property that was tracked already'() { class Person { @tracked name = 'bob'; } @@ -443,7 +443,7 @@ moduleFor( renderTree: ['\\(result of a `\\(unknown function\\)` helper\\)'], }); - expectAssertion(() => { + expectDeprecation(() => { this.render('{{hello-world this.model}}', { model: new Person() }); }, expectedMessage); } diff --git a/packages/@ember/-internals/metal/tests/tracked/validation_test.js b/packages/@ember/-internals/metal/tests/tracked/validation_test.js index e240efb1916..1aa090cd903 100644 --- a/packages/@ember/-internals/metal/tests/tracked/validation_test.js +++ b/packages/@ember/-internals/metal/tests/tracked/validation_test.js @@ -378,7 +378,7 @@ moduleFor( }, /You attempted to update `value` on `EmberObject`, but it had already been used previously in the same computation/); } - ['@test gives helpful assertion when a tracked property is mutated after access within unknownProperty within an autotracking transaction']() { + ['@test gives helpful deprecation when a tracked property is mutated after access within unknownProperty within an autotracking transaction']() { class EmberObject { @tracked foo; @@ -390,7 +390,7 @@ moduleFor( let obj = new EmberObject(); - expectAssertion(() => { + expectDeprecation(() => { track(() => { get(obj, 'bar'); }); diff --git a/yarn.lock b/yarn.lock index 7ccf7568185..e393a8819c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1657,152 +1657,152 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@glimmer/compiler@0.66.0": - version "0.66.0" - resolved "https://registry.yarnpkg.com/@glimmer/compiler/-/compiler-0.66.0.tgz#90df75c35a1a708192b8349294ca9aeddb45bb0e" - integrity sha512-AlD1VFHfI9RmHajGwJgBKlPVUFowu7meseQY+HH1uA5LpHNrTm/v0Sa2wBTNhCYMZ21WcwdnXehYMHA4n8Ywug== - dependencies: - "@glimmer/interfaces" "0.66.0" - "@glimmer/syntax" "0.66.0" - "@glimmer/util" "0.66.0" - "@glimmer/wire-format" "0.66.0" +"@glimmer/compiler@0.66.1": + version "0.66.1" + resolved "https://registry.yarnpkg.com/@glimmer/compiler/-/compiler-0.66.1.tgz#cfb988634d12038f41b2323ba19b1b9cf2b5cc28" + integrity sha512-O0spaPhowm88nncLut7p5pRm0ZTFzpGQFqGtQfSvqdAr/+i8KwMd515f5lqv/dJobXSzqP0ocXDZVoBKYd8Zkw== + dependencies: + "@glimmer/interfaces" "0.66.1" + "@glimmer/syntax" "0.66.1" + "@glimmer/util" "0.66.1" + "@glimmer/wire-format" "0.66.1" "@simple-dom/interface" "^1.4.0" -"@glimmer/encoder@0.66.0": - version "0.66.0" - resolved "https://registry.yarnpkg.com/@glimmer/encoder/-/encoder-0.66.0.tgz#8deede076db1c4ff0047069bc802585ed16e63f6" - integrity sha512-cxwuyEqX/lsHWB1CR7hJgoIX+LWRKhz2LPbwwunGOG2wiBFOO6629hs/FcfT84BJcBz1Plmit8t3IHWk2vgOzQ== +"@glimmer/encoder@0.66.1": + version "0.66.1" + resolved "https://registry.yarnpkg.com/@glimmer/encoder/-/encoder-0.66.1.tgz#ee15bbdd58e14872915db037b9ed7bbcee844378" + integrity sha512-noItjxOjKO/3KEgViqGZEfslSKOo9sjdHtxxMimQuvDP+ApjhA7sFjWLX+zJCS1fIsZGM0hzEWaNKEB1Pjg9Mw== dependencies: - "@glimmer/interfaces" "0.66.0" - "@glimmer/vm" "0.66.0" + "@glimmer/interfaces" "0.66.1" + "@glimmer/vm" "0.66.1" "@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.66.0": - version "0.66.0" - resolved "https://registry.yarnpkg.com/@glimmer/global-context/-/global-context-0.66.0.tgz#4efc0d90ffc33a07e2f86b1462e71541f4e36cdd" - integrity sha512-3kaSDZptEF3dmCO/rcQptJ0qZQub8ax1C19+IkuBnTbeYOEgdW61rPFdApqAzY/EydMjBmxZRLhS/IMRx4wJcQ== +"@glimmer/global-context@0.66.1": + version "0.66.1" + resolved "https://registry.yarnpkg.com/@glimmer/global-context/-/global-context-0.66.1.tgz#3be91232e225bc0cac4920159f6f73c8761bc98d" + integrity sha512-dWdr6XUsVoZ8XXLYqaYFrz9O6amogb2q9QMDnrxjqurfhcc2Va7qaUM9e3qRyICwph6MsUgrDtX3SRA6dyRwJw== dependencies: "@glimmer/env" "^0.1.7" -"@glimmer/interfaces@0.66.0": - version "0.66.0" - resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.66.0.tgz#f281e1985d6b7f63648d960cc2745c68562fdb92" - integrity sha512-fw1pO6oyczSKeTPR6anrSI4OarLlaAR0SSDAhsYrINXfW7Xd/U/es7i6VE1JjLSZqfnsAxjNOFDe0lA5lmV/dw== +"@glimmer/interfaces@0.66.1": + version "0.66.1" + resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.66.1.tgz#5b50b0dd6bcae19e7848d70b42f9466a184979be" + integrity sha512-opcDbSID3YqkUgOR15+IePfkoiJKRJh5pfxPXNw3xcwkptmbiSXNkfZGnPk4FZr4g+Jpem1CIGUDejtyaTTk3Q== dependencies: "@simple-dom/interface" "^1.4.0" -"@glimmer/low-level@0.66.0": - version "0.66.0" - resolved "https://registry.yarnpkg.com/@glimmer/low-level/-/low-level-0.66.0.tgz#fa21f48c12d77ec765039e30027cbe701ec94081" - integrity sha512-9voF9pO6i+4nLi+h1ix8S/nhqYLUQBV+wlZpcmhDPnvaiCJlNF2ocH4ZjtrTfgg9mKl8vA8JI+xMzuagFvc/aw== +"@glimmer/low-level@0.66.1": + version "0.66.1" + resolved "https://registry.yarnpkg.com/@glimmer/low-level/-/low-level-0.66.1.tgz#f6d74845ba51e8090033d01a571699f15e35dd0c" + integrity sha512-IaIgcd0sJBaF5N6bnOB6MQKB8ObJQJ98CRcFfTf8sw9DvGp8DGL+M/QmOnERUSc28pk76k+z4JOtcbVCaA1NxA== -"@glimmer/node@0.66.0": - version "0.66.0" - resolved "https://registry.yarnpkg.com/@glimmer/node/-/node-0.66.0.tgz#d28a374a935829449ec386de310e7d89369abca4" - integrity sha512-tRlc1wHB9hD4ByLlc4CxDsO/GxaSVhKRJNLP7RBn74dQhywvz4y/q3qxgQngieX8RM29YmQRGMFYKpqkMhr2ZQ== +"@glimmer/node@0.66.1": + version "0.66.1" + resolved "https://registry.yarnpkg.com/@glimmer/node/-/node-0.66.1.tgz#572477e89db8884b437cc2b080dde6c2529e7c19" + integrity sha512-/KLJ3Dal0rCHDkliS6sYUGmmkr1RlpLjhUIJvaKCXJMckKpiq+b1dkLdiqf+CGYShi2+vDDvSqiQbIAPzoMo1A== dependencies: - "@glimmer/interfaces" "0.66.0" - "@glimmer/runtime" "0.66.0" - "@glimmer/util" "0.66.0" + "@glimmer/interfaces" "0.66.1" + "@glimmer/runtime" "0.66.1" + "@glimmer/util" "0.66.1" "@simple-dom/document" "^1.4.0" "@simple-dom/interface" "^1.4.0" -"@glimmer/opcode-compiler@0.66.0": - version "0.66.0" - resolved "https://registry.yarnpkg.com/@glimmer/opcode-compiler/-/opcode-compiler-0.66.0.tgz#bce49e98f6028d2e29dd4f48ea13197c2836bc18" - integrity sha512-Ei43PvD3FyZEMt3dC7HcQ/Ewl6cyFpLQb1+lWL+feMvs7wYPtzUgTXNa+bLKhrEVI4DEqIb+iVKiNiRZlqGsYg== - dependencies: - "@glimmer/encoder" "0.66.0" - "@glimmer/interfaces" "0.66.0" - "@glimmer/program" "0.66.0" - "@glimmer/reference" "0.66.0" - "@glimmer/util" "0.66.0" - "@glimmer/vm" "0.66.0" - "@glimmer/wire-format" "0.66.0" - -"@glimmer/program@0.66.0": - version "0.66.0" - resolved "https://registry.yarnpkg.com/@glimmer/program/-/program-0.66.0.tgz#30073786cd4938dc21d8a9628fbdb16ba38f6ab8" - integrity sha512-r3KuQK9QFADg8Dho/UvGXCB1+ubKeQToVQDaBL+GKQ3w/GGDfkzixxccSNhxOygwSDi/3pm2TWSlV1t5+IyOeg== - dependencies: - "@glimmer/encoder" "0.66.0" - "@glimmer/interfaces" "0.66.0" - "@glimmer/util" "0.66.0" - -"@glimmer/reference@0.66.0": - version "0.66.0" - resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.66.0.tgz#3d1acb1755fe6c1660275aec7482cbc9935a656c" - integrity sha512-HNY2bxx+2/i5jEDQO5tVX3TZGVzCfpvVE5whkNxS+vDTV+E3KACWvxNz4e3cKbA98tYoZJjGw/jWOhgak3Bbvg== +"@glimmer/opcode-compiler@0.66.1": + version "0.66.1" + resolved "https://registry.yarnpkg.com/@glimmer/opcode-compiler/-/opcode-compiler-0.66.1.tgz#38c676abdef62181d5a027e8240baeff71360871" + integrity sha512-ZgsP7WAW5+NR/FrTdC88Ejw9+ChiazGUUHNVF0WWwvaMzY9YuG3re1OHUdYFx8M7An4IRYd+8XgvqQb+9pi3pA== + dependencies: + "@glimmer/encoder" "0.66.1" + "@glimmer/interfaces" "0.66.1" + "@glimmer/program" "0.66.1" + "@glimmer/reference" "0.66.1" + "@glimmer/util" "0.66.1" + "@glimmer/vm" "0.66.1" + "@glimmer/wire-format" "0.66.1" + +"@glimmer/program@0.66.1": + version "0.66.1" + resolved "https://registry.yarnpkg.com/@glimmer/program/-/program-0.66.1.tgz#b0387586819977ed4464db7219d76c116d51ff40" + integrity sha512-9fpiZqNcRqLXyBAbIP+mM+WSiMaeYmP6vT3bGrBTBMTnsK+5ZbdhqOS16bANsB+5V4qridr8RDXf7OEBJz+Msw== + dependencies: + "@glimmer/encoder" "0.66.1" + "@glimmer/interfaces" "0.66.1" + "@glimmer/util" "0.66.1" + +"@glimmer/reference@0.66.1": + version "0.66.1" + resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.66.1.tgz#b61d44d78d44eb3b4bbf62cdb0dc0e4ea9600302" + integrity sha512-ifd2g614YzrDfHcZWTiglHVFv/x9lym79hB92GSYCiK73sl5oGUBodsbur084MfAMc1cNJEp06bXxTAoiguwLg== dependencies: "@glimmer/env" "^0.1.7" - "@glimmer/global-context" "0.66.0" - "@glimmer/interfaces" "0.66.0" - "@glimmer/util" "0.66.0" - "@glimmer/validator" "0.66.0" + "@glimmer/global-context" "0.66.1" + "@glimmer/interfaces" "0.66.1" + "@glimmer/util" "0.66.1" + "@glimmer/validator" "0.66.1" -"@glimmer/runtime@0.66.0": - version "0.66.0" - resolved "https://registry.yarnpkg.com/@glimmer/runtime/-/runtime-0.66.0.tgz#d47eb495a07e8154cb08c120b594dbc05bf2eece" - integrity sha512-ZzuVmXe1CBB3vEzKYBpSZRlMh8AIGmbYjTwqxebokdSMbypCVN96VrKgswheEvWwQXx4EGphO+3Wm027f0SFAQ== +"@glimmer/runtime@0.66.1": + version "0.66.1" + resolved "https://registry.yarnpkg.com/@glimmer/runtime/-/runtime-0.66.1.tgz#5a628db0fb1af63b898b73fa47c30f5aae44ac55" + integrity sha512-c6OFkPl4FSM3lAqjHx3V/bQwjW/SBvzrh5kmbul6YC+yod9+V5cI8HND35ZFelAandEpzxcqe5MclnYDBNJ2Sg== dependencies: "@glimmer/env" "0.1.7" - "@glimmer/global-context" "0.66.0" - "@glimmer/interfaces" "0.66.0" - "@glimmer/low-level" "0.66.0" - "@glimmer/program" "0.66.0" - "@glimmer/reference" "0.66.0" - "@glimmer/util" "0.66.0" - "@glimmer/validator" "0.66.0" - "@glimmer/vm" "0.66.0" - "@glimmer/wire-format" "0.66.0" + "@glimmer/global-context" "0.66.1" + "@glimmer/interfaces" "0.66.1" + "@glimmer/low-level" "0.66.1" + "@glimmer/program" "0.66.1" + "@glimmer/reference" "0.66.1" + "@glimmer/util" "0.66.1" + "@glimmer/validator" "0.66.1" + "@glimmer/vm" "0.66.1" + "@glimmer/wire-format" "0.66.1" "@simple-dom/interface" "^1.4.0" -"@glimmer/syntax@0.66.0": - version "0.66.0" - resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.66.0.tgz#d38561be48f6c4deeb94c24a1344a3426bb7e925" - integrity sha512-sgGQvoLprHjGV/TW2WY5wTmJaUjkHHgXhRJp+nLL5+JVC1zoR/mbGJk2Wfbj/R5D3pKzPln08HsSdXKj9Dl36g== +"@glimmer/syntax@0.66.1": + version "0.66.1" + resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.66.1.tgz#901b9d0253ad5ac1f7f8199de0ef43c98c209a63" + integrity sha512-hzYhlfWzu5c8K7ZtTh3bSdpT5a6efxN1NsKUvGE5p1TC9XGOZuKogq/fRtlK2UGBUazEh5fvTu7qmQ8dTU1dWA== dependencies: - "@glimmer/interfaces" "0.66.0" - "@glimmer/util" "0.66.0" + "@glimmer/interfaces" "0.66.1" + "@glimmer/util" "0.66.1" "@handlebars/parser" "^1.1.0" simple-html-tokenizer "^0.5.10" -"@glimmer/util@0.66.0": - version "0.66.0" - resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.66.0.tgz#c457951951f4ea1d5a1d63fa11c9ffeae8efa4f6" - integrity sha512-4J3sihRKZ7N4igk2BZGryC/E6qIy+20d3Dl9+jYhsM8SdviPm+PtFy7tdJsb3E+u/yITqHnvzt7+Cr+VtlT7KA== +"@glimmer/util@0.66.1": + version "0.66.1" + resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.66.1.tgz#53c5e12f121011f44c018dba6bcaa936133ffd24" + integrity sha512-pB7VEpCmC5hmehQdED7HJJEKFdGPsO6LHGl4LtRHHQptlyKTxotTxevDbzGuIxbsDpGPT+4e3g1rlEAfnC51/Q== dependencies: "@glimmer/env" "0.1.7" - "@glimmer/interfaces" "0.66.0" + "@glimmer/interfaces" "0.66.1" "@simple-dom/interface" "^1.4.0" -"@glimmer/validator@0.66.0": - version "0.66.0" - resolved "https://registry.yarnpkg.com/@glimmer/validator/-/validator-0.66.0.tgz#a127e6f9e36a41665f6bbb8d6635412db8160824" - integrity sha512-9xZK3Z8kIbTa3UoDU3lxel5AeQvr9bI6hQSbx21E2sO7R7dnozWM0GQjvnjCeyU5JLGJH/YKpeItZFhHhbDvtQ== +"@glimmer/validator@0.66.1": + version "0.66.1" + resolved "https://registry.yarnpkg.com/@glimmer/validator/-/validator-0.66.1.tgz#46bf25b2a8b819570d9fca0a248185ca07b8ec2a" + integrity sha512-9mhSCfe9R8TgTnHtOZuVTzsO9/Ej0gwRun1SQtQu5WK7Lamg0XPhluWVV46GcFv6w6NkopStCfoHIrounXTnpA== dependencies: "@glimmer/env" "^0.1.7" - "@glimmer/global-context" "0.66.0" + "@glimmer/global-context" "0.66.1" -"@glimmer/vm@0.66.0": - version "0.66.0" - resolved "https://registry.yarnpkg.com/@glimmer/vm/-/vm-0.66.0.tgz#6d476a4e8ce69fde71a2f9bab651ce156ce9f1b3" - integrity sha512-5pFMob++8bDJU99w0GztPc8HvUSthDRiW2pwScBGmyU0UNJVYRhGHAq0aVktbNKNzAoLh2u9IjNdul4N5fA1uQ== +"@glimmer/vm@0.66.1": + version "0.66.1" + resolved "https://registry.yarnpkg.com/@glimmer/vm/-/vm-0.66.1.tgz#c6c6e248b3ed574a3bfb21208f8e5afa8f9fe7f6" + integrity sha512-VmesyuROi29KGycLe2vzaTnMU74kirCEPCHbTVTxxvFkJHY3ljtpZVpS0OIl9kMnbFQRWcR5X6sPIdPVdebySA== dependencies: - "@glimmer/interfaces" "0.66.0" - "@glimmer/util" "0.66.0" + "@glimmer/interfaces" "0.66.1" + "@glimmer/util" "0.66.1" -"@glimmer/wire-format@0.66.0": - version "0.66.0" - resolved "https://registry.yarnpkg.com/@glimmer/wire-format/-/wire-format-0.66.0.tgz#aa359256b82febde4179a26da3d9164c64fb89da" - integrity sha512-7niSIcxAz0aWhhKuwi11y/0MrJAeiIO0NX6zv0IMFXu9Ul0ywM2UOxni2hNdpqD2XNn2z5O47QcqG2bdVq8fnA== +"@glimmer/wire-format@0.66.1": + version "0.66.1" + resolved "https://registry.yarnpkg.com/@glimmer/wire-format/-/wire-format-0.66.1.tgz#ad63764c3231e97397617d3e2c6a02a6fcff5047" + integrity sha512-TyffGOCJ/LykKev3G7IMEzicpvgip5+XZi3Shr/silMEtncrbDV9ryYkyOalfjWHHWa/XIHz+KAEXVJG3tYq1g== dependencies: - "@glimmer/interfaces" "0.66.0" - "@glimmer/util" "0.66.0" + "@glimmer/interfaces" "0.66.1" + "@glimmer/util" "0.66.1" "@handlebars/parser@^1.1.0": version "1.1.0"