diff --git a/package.json b/package.json index a902bf4af02..d290b65f93a 100644 --- a/package.json +++ b/package.json @@ -74,16 +74,16 @@ }, "devDependencies": { "@babel/preset-env": "^7.9.5", - "@glimmer/compiler": "0.65.0", + "@glimmer/compiler": "0.65.1", "@glimmer/env": "^0.1.7", - "@glimmer/global-context": "0.65.0", - "@glimmer/interfaces": "0.65.0", - "@glimmer/node": "0.65.0", - "@glimmer/opcode-compiler": "0.65.0", - "@glimmer/program": "0.65.0", - "@glimmer/reference": "0.65.0", - "@glimmer/runtime": "0.65.0", - "@glimmer/validator": "0.65.0", + "@glimmer/global-context": "0.65.1", + "@glimmer/interfaces": "0.65.1", + "@glimmer/node": "0.65.1", + "@glimmer/opcode-compiler": "0.65.1", + "@glimmer/program": "0.65.1", + "@glimmer/reference": "0.65.1", + "@glimmer/runtime": "0.65.1", + "@glimmer/validator": "0.65.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 af1f85a5b50..c8cfa42abec 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1657,152 +1657,152 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@glimmer/compiler@0.65.0": - version "0.65.0" - resolved "https://registry.yarnpkg.com/@glimmer/compiler/-/compiler-0.65.0.tgz#d501526659c6dd885e0235556d87ca393439fae7" - integrity sha512-JDB6dKP94rqcRQQUGFM+iwh9/Sk20Gu4f9K9g7K1q1pYrxGaJ+Vjq/W03fLawd7iZEVUTRFR4OOG5M1lntoFlQ== - dependencies: - "@glimmer/interfaces" "0.65.0" - "@glimmer/syntax" "0.65.0" - "@glimmer/util" "0.65.0" - "@glimmer/wire-format" "0.65.0" +"@glimmer/compiler@0.65.1": + version "0.65.1" + resolved "https://registry.yarnpkg.com/@glimmer/compiler/-/compiler-0.65.1.tgz#02517936f264f0780ad7b3641718c44b9cd8da92" + integrity sha512-lu9RW1+3FiW2RKk4gYtyAKsElZPkkQU1YGzh4UZULa1L0mHdB7Zj/ATZcK5r5sXp6s7XIxwJvWFojzbg0sZo3A== + dependencies: + "@glimmer/interfaces" "0.65.1" + "@glimmer/syntax" "0.65.1" + "@glimmer/util" "0.65.1" + "@glimmer/wire-format" "0.65.1" "@simple-dom/interface" "^1.4.0" -"@glimmer/encoder@0.65.0": - version "0.65.0" - resolved "https://registry.yarnpkg.com/@glimmer/encoder/-/encoder-0.65.0.tgz#a11102c2ece4004678bb2bc0ab39276d7f0e3d26" - integrity sha512-UycgQr+b4l9X6e78fypO6/SWRDypFuIJkSuS4q43Of/a+hss11xVQAy+oANZjo6shrQtzH159v5F3LlSjYKbzg== +"@glimmer/encoder@0.65.1": + version "0.65.1" + resolved "https://registry.yarnpkg.com/@glimmer/encoder/-/encoder-0.65.1.tgz#6f54691d2c7401b813e39d44e6f10c4b88a23be0" + integrity sha512-tGUt2TEJ3mG2CXG6GgxvVkeKCGmY5lxoL7HOpQu8aNW3eAw/yWwdvw69TaLaXn/ilkf8OyEPxLgHvTCeAFuanQ== dependencies: - "@glimmer/interfaces" "0.65.0" - "@glimmer/vm" "0.65.0" + "@glimmer/interfaces" "0.65.1" + "@glimmer/vm" "0.65.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.65.0": - version "0.65.0" - resolved "https://registry.yarnpkg.com/@glimmer/global-context/-/global-context-0.65.0.tgz#96d8b99d1a805be72d4dcf5d2eb90cd2ecfff550" - integrity sha512-czdgBmQRHFdrpKicZ1qJ0cd2yzNf/T4OV9VT+7dR356At3C7OWU0GJiIfA1IcW7nqS7x27rC8GDsUZm0ntEFRQ== +"@glimmer/global-context@0.65.1": + version "0.65.1" + resolved "https://registry.yarnpkg.com/@glimmer/global-context/-/global-context-0.65.1.tgz#390224b619f4ca0aca1f1ce4e42a33db76ec9c48" + integrity sha512-/nAXRfNFTULhkSB9rD1too5ea35FNtQaIrdU745VPMTsQZc4981OGtn75rJ7jCAPZl5eo17NwKU4ggKDwFMTzg== dependencies: "@glimmer/env" "^0.1.7" -"@glimmer/interfaces@0.65.0": - version "0.65.0" - resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.65.0.tgz#e3852efb63fc9f18268991caea4ab362b75ae231" - integrity sha512-Ka9/w1u7SjWt8ZKa3Gs9IbFtLLDlaCdCTO7B+/Lat0bxGIctyEAyjxUdVqUwXWO4pMfkEFWKBP3L/t9CRT8sVQ== +"@glimmer/interfaces@0.65.1": + version "0.65.1" + resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.65.1.tgz#f6212db145cfa7341ae15ff5d82cde5487e1b452" + integrity sha512-rvbYPhNvgiVJJYOQCv3zIi0/pEHXr8/qV7oWvlV/R5qpYqJKv8BPrBCA+IZ9G5BhFCMZ2Dtd8aKUfpjKOOoEzg== dependencies: "@simple-dom/interface" "^1.4.0" -"@glimmer/low-level@0.65.0": - version "0.65.0" - resolved "https://registry.yarnpkg.com/@glimmer/low-level/-/low-level-0.65.0.tgz#948e7513f36776608ee6cca605bb387ef1cc6c4b" - integrity sha512-BjLmBofuSst0t2iYShUBCsFgitVbmsWd9Lkw8rs1mvB3+jfPsan0yN53sjkIhganccntcW9T2Y2mi/TLGWt+PQ== +"@glimmer/low-level@0.65.1": + version "0.65.1" + resolved "https://registry.yarnpkg.com/@glimmer/low-level/-/low-level-0.65.1.tgz#9f02a03035ed5197511d2e5e6099585c4eec0f23" + integrity sha512-DAcdyFUAgillcF4Anuk23xi2kLTCe2yLEHyzktD+6W7I80xSqRXnbIV6NuK4eZjrFkhN/Jqw/S0UjE1jS0eC7Q== -"@glimmer/node@0.65.0": - version "0.65.0" - resolved "https://registry.yarnpkg.com/@glimmer/node/-/node-0.65.0.tgz#e07432564a076652bddee4f1fb405e05d374bcac" - integrity sha512-t7bqcPmmPRvRC+FkNlHxNzD3ooXmJnepdADKeYnJy+nLyZkgcxZ6ZjQWzHTl8K7BRYcVvIhOnk13/AMQ94orKQ== +"@glimmer/node@0.65.1": + version "0.65.1" + resolved "https://registry.yarnpkg.com/@glimmer/node/-/node-0.65.1.tgz#c1e874376551ccb32b8396197bea5525a3eea961" + integrity sha512-tELMkpNLVs6RBtdh1a7kiEqmG11i21Rri5eKa+VzoBUaaP6Ni1cLEg7NJDp6kgyAEbeDX9v62tqFUGGhvwwOig== dependencies: - "@glimmer/interfaces" "0.65.0" - "@glimmer/runtime" "0.65.0" - "@glimmer/util" "0.65.0" + "@glimmer/interfaces" "0.65.1" + "@glimmer/runtime" "0.65.1" + "@glimmer/util" "0.65.1" "@simple-dom/document" "^1.4.0" "@simple-dom/interface" "^1.4.0" -"@glimmer/opcode-compiler@0.65.0": - version "0.65.0" - resolved "https://registry.yarnpkg.com/@glimmer/opcode-compiler/-/opcode-compiler-0.65.0.tgz#cfc2461e2cb69fe8f6f35ac519634b7a6a223ba2" - integrity sha512-12A0TZgGr6FwGRwA1DwGiQcLiwsBH2i/HIxW3prtNEglmFnpJiDo3VmJJ3uwGNz5gL1qGt0Ftus2VmYHHJIPtA== - dependencies: - "@glimmer/encoder" "0.65.0" - "@glimmer/interfaces" "0.65.0" - "@glimmer/program" "0.65.0" - "@glimmer/reference" "0.65.0" - "@glimmer/util" "0.65.0" - "@glimmer/vm" "0.65.0" - "@glimmer/wire-format" "0.65.0" - -"@glimmer/program@0.65.0": - version "0.65.0" - resolved "https://registry.yarnpkg.com/@glimmer/program/-/program-0.65.0.tgz#c26d6a843c54586d0e6268a2360ad45fd28d9d93" - integrity sha512-cYWLF3bd/wcgZOttDBhcLXmMj8cqWiXm8S3/8IUvnkWRLPmfK+xqFYd7j9kFtJKHjiQ9UWue7wfV6lURZiuC+g== - dependencies: - "@glimmer/encoder" "0.65.0" - "@glimmer/interfaces" "0.65.0" - "@glimmer/util" "0.65.0" - -"@glimmer/reference@0.65.0": - version "0.65.0" - resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.65.0.tgz#8863308d0865d45ae1fc5d07d5ccef9da4dff2d7" - integrity sha512-Cxb5Q91x+oV494dMtjx/fo5QudFCI1yJ4gg2Uj9hWWp2r8EqRmW2rlboLdnkjBDuY5MMuqwY9I8mc+SSAqQ46w== +"@glimmer/opcode-compiler@0.65.1": + version "0.65.1" + resolved "https://registry.yarnpkg.com/@glimmer/opcode-compiler/-/opcode-compiler-0.65.1.tgz#3d22842b41cdd0889b8a05f3a1d973f1ce83f832" + integrity sha512-XUuJC33Gb34h6aa9tsCHsPRJHcpal08U/c0gFAqVBPnymCDJpHpLymaQUzXHziFAnIgPb6eMGic2YYM8YKM61A== + dependencies: + "@glimmer/encoder" "0.65.1" + "@glimmer/interfaces" "0.65.1" + "@glimmer/program" "0.65.1" + "@glimmer/reference" "0.65.1" + "@glimmer/util" "0.65.1" + "@glimmer/vm" "0.65.1" + "@glimmer/wire-format" "0.65.1" + +"@glimmer/program@0.65.1": + version "0.65.1" + resolved "https://registry.yarnpkg.com/@glimmer/program/-/program-0.65.1.tgz#aa65f135a9c5c2be89fabb4f4f4dc60d15a1531b" + integrity sha512-Wtwp/DjO/9Tmjdg3ik4tTwA6n5JAqYYKWuCTdERZUwJYjmXazeDQW0Tbz2BrnyynPn4/OdhvZgVdRu/HDr+TpA== + dependencies: + "@glimmer/encoder" "0.65.1" + "@glimmer/interfaces" "0.65.1" + "@glimmer/util" "0.65.1" + +"@glimmer/reference@0.65.1": + version "0.65.1" + resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.65.1.tgz#44515e7bef58c9ce4ea65c2eb3403caec11a2060" + integrity sha512-oYXBqgSRlQ2e2gLNZ38ql8c2f4Wl6cFyQETpCuRrhHQTs2IIrzxRiwodLej4JCJEkLQICDdwDtDUe9NP5W0Ijw== dependencies: "@glimmer/env" "^0.1.7" - "@glimmer/global-context" "0.65.0" - "@glimmer/interfaces" "0.65.0" - "@glimmer/util" "0.65.0" - "@glimmer/validator" "0.65.0" + "@glimmer/global-context" "0.65.1" + "@glimmer/interfaces" "0.65.1" + "@glimmer/util" "0.65.1" + "@glimmer/validator" "0.65.1" -"@glimmer/runtime@0.65.0": - version "0.65.0" - resolved "https://registry.yarnpkg.com/@glimmer/runtime/-/runtime-0.65.0.tgz#a65889bf3bb23e35dcca6a4d6de0989887119b47" - integrity sha512-CHODyKgeAUrLaGhq5/s4mLpayIviqqDvpDnPNcKNBS3RQeJRzcTdb+JevZyAeR05PuPUxQ4wRLtwpaLJ5XNSRA== +"@glimmer/runtime@0.65.1": + version "0.65.1" + resolved "https://registry.yarnpkg.com/@glimmer/runtime/-/runtime-0.65.1.tgz#86f86c7b5f1f2737c501600783e945e769f00c11" + integrity sha512-NwXzz4j0Gpec0LdG75t5sw6Qe+gCjsgxVaWx8SMVZXerbqxNyRB/t6p6b4MLYJMq/0Gcu0SjEFdWvCerTRc1Mw== dependencies: "@glimmer/env" "0.1.7" - "@glimmer/global-context" "0.65.0" - "@glimmer/interfaces" "0.65.0" - "@glimmer/low-level" "0.65.0" - "@glimmer/program" "0.65.0" - "@glimmer/reference" "0.65.0" - "@glimmer/util" "0.65.0" - "@glimmer/validator" "0.65.0" - "@glimmer/vm" "0.65.0" - "@glimmer/wire-format" "0.65.0" + "@glimmer/global-context" "0.65.1" + "@glimmer/interfaces" "0.65.1" + "@glimmer/low-level" "0.65.1" + "@glimmer/program" "0.65.1" + "@glimmer/reference" "0.65.1" + "@glimmer/util" "0.65.1" + "@glimmer/validator" "0.65.1" + "@glimmer/vm" "0.65.1" + "@glimmer/wire-format" "0.65.1" "@simple-dom/interface" "^1.4.0" -"@glimmer/syntax@0.65.0": - version "0.65.0" - resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.65.0.tgz#a4fd943ca558e15c77619d49a4d4500dd252868c" - integrity sha512-juVFrA62oFdr2FSxLMb7c3j7KU/onQlC7c4E9rnkivXqE7EmNGI7/+I48L/DsMmDOZDOf4bIhjeCWbXNB4dS9g== +"@glimmer/syntax@0.65.1": + version "0.65.1" + resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.65.1.tgz#033e646ea7882d08bfe7d550130ed565b25cf80a" + integrity sha512-WRVuNryOMI7OS9vMTivrGDe4wsJ1Z3MNCKlWJUkUNX2SnzLAuHRLwdiiIVCmYwmkI6OWZZrzJEsoHqYq3KCn8Q== dependencies: - "@glimmer/interfaces" "0.65.0" - "@glimmer/util" "0.65.0" + "@glimmer/interfaces" "0.65.1" + "@glimmer/util" "0.65.1" "@handlebars/parser" "^1.1.0" simple-html-tokenizer "^0.5.10" -"@glimmer/util@0.65.0": - version "0.65.0" - resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.65.0.tgz#8a90382500334e415415bf51b269bc7484b17543" - integrity sha512-tfsKVJpCJ5ADWXgpouiitIKlNacWQseYAlppgn8Y6LnzxcywgnumwFObkfzYlFE6Nd1IiymNxgEeSNJKylWl1A== +"@glimmer/util@0.65.1": + version "0.65.1" + resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.65.1.tgz#c85ebc13344739c123e0ec6551ae740cf5fd62bf" + integrity sha512-+KHvCXJSsY4pbbUqc2x7BMSLkErVYGU9O6gl9CQM3SByjOJ++b//03dziAaglehmiCwfjNUQCfdYWhAp8UpuoA== dependencies: "@glimmer/env" "0.1.7" - "@glimmer/interfaces" "0.65.0" + "@glimmer/interfaces" "0.65.1" "@simple-dom/interface" "^1.4.0" -"@glimmer/validator@0.65.0": - version "0.65.0" - resolved "https://registry.yarnpkg.com/@glimmer/validator/-/validator-0.65.0.tgz#e4411e0a979f002efe236e3bcc91de5f5aaeaed2" - integrity sha512-nwFReFT9zOOV+9iSqhNookTfHbOsqqPvtsALXl5Rn4QmtAHFLdehiWyN6ddb/sJwllWq+fNW8DxQdiY1xRwn9A== +"@glimmer/validator@0.65.1": + version "0.65.1" + resolved "https://registry.yarnpkg.com/@glimmer/validator/-/validator-0.65.1.tgz#07ebd13952660d341fea8e5b606b512fe1dbc176" + integrity sha512-MgPIvGOH4jhWDb93RHbFeSOfVQbUAZHgfovre6NJ3t5k98MfxgsNfyTkTpjzPJW1gVnlRfOTTBqcd8jWoy2xGQ== dependencies: "@glimmer/env" "^0.1.7" - "@glimmer/global-context" "0.65.0" + "@glimmer/global-context" "0.65.1" -"@glimmer/vm@0.65.0": - version "0.65.0" - resolved "https://registry.yarnpkg.com/@glimmer/vm/-/vm-0.65.0.tgz#8a6ff00eced670d7bf0acc45659b7d1510146dc6" - integrity sha512-xJ2NJlg8D0TS3prn/FzCq/nzVNEYmv+v4LShrH1Thp+rFwesFsCYwLpidD6btkH8odYF+2+aZZLmq6uBxs3HGQ== +"@glimmer/vm@0.65.1": + version "0.65.1" + resolved "https://registry.yarnpkg.com/@glimmer/vm/-/vm-0.65.1.tgz#c5787ad08f2dddb05f1a82aeb3ed72dd97f7a6e3" + integrity sha512-IhmTq1djzMskXNKVj/fum7Dksufj1JS4bApGpNc4XYXUjzkBEgceVEn/Wpoi3Tuq0fIaYN64StCH9Ue9RIhqxA== dependencies: - "@glimmer/interfaces" "0.65.0" - "@glimmer/util" "0.65.0" + "@glimmer/interfaces" "0.65.1" + "@glimmer/util" "0.65.1" -"@glimmer/wire-format@0.65.0": - version "0.65.0" - resolved "https://registry.yarnpkg.com/@glimmer/wire-format/-/wire-format-0.65.0.tgz#d51b3d8f2a94e113190302b2bdbe7a3ee70bb1b5" - integrity sha512-8KgxyLzYbelVLLIWheFwI3yXqkW17k/rfQnWQ8SV337LLvx9CFa6cqF9YTgjtaj9/cHMQq+CF8aMFRFhEwx+qw== +"@glimmer/wire-format@0.65.1": + version "0.65.1" + resolved "https://registry.yarnpkg.com/@glimmer/wire-format/-/wire-format-0.65.1.tgz#81567052723e3ec9b25e9f53b3a0365c83aeb5fd" + integrity sha512-NFXcfGMWmBiQLPTEXqIqeiMI3MaR8Nn/C5AnRSeTqnp4TKNw6CW8Zy/p+Hw1Z2e++TRMoXpxSuwUg4iKulMJtQ== dependencies: - "@glimmer/interfaces" "0.65.0" - "@glimmer/util" "0.65.0" + "@glimmer/interfaces" "0.65.1" + "@glimmer/util" "0.65.1" "@handlebars/parser@^1.1.0": version "1.1.0"