diff --git a/package.json b/package.json index 9ad983289..289460dcd 100644 --- a/package.json +++ b/package.json @@ -36,12 +36,12 @@ "@types/node": "Locking to avoid conflicts between the declared version in packages/core and floating '*' versions when we run in CI without the lockfile" }, "resolutions": { - "@glimmer/manager": "0.84.3", - "@glimmer/interfaces": "0.84.3", - "@glimmer/runtime": "0.84.3", - "@glimmer/reference": "0.84.3", - "@glimmer/util": "0.84.3", - "@glimmer/validator": "0.84.3", + "@glimmer/manager": "0.88.1", + "@glimmer/interfaces": "0.88.1", + "@glimmer/runtime": "0.88.1", + "@glimmer/reference": "0.88.1", + "@glimmer/util": "0.88.1", + "@glimmer/validator": "0.88.1", "@types/yargs": "17.0.13", "@types/node": "^20.10.6", "ember-cli-htmlbars": "^6.0.1" diff --git a/packages/core/__tests__/language-server/diagnostic-augmentation.test.ts b/packages/core/__tests__/language-server/diagnostic-augmentation.test.ts index c093023c8..3ae14ac00 100644 --- a/packages/core/__tests__/language-server/diagnostic-augmentation.test.ts +++ b/packages/core/__tests__/language-server/diagnostic-augmentation.test.ts @@ -471,11 +471,11 @@ describe('Language Server: Diagnostic Augmentation', () => { "message": "The given value does not appear to be usable as a component, modifier or helper.", "range": { "end": { - "character": 26, + "character": 23, "line": 14, }, "start": { - "character": 4, + "character": 5, "line": 14, }, }, @@ -574,11 +574,11 @@ describe('Language Server: Diagnostic Augmentation', () => { Property 'Foo' does not exist on type 'Globals'.", "range": { "end": { - "character": 7, + "character": 4, "line": 1, }, "start": { - "character": 0, + "character": 1, "line": 1, }, }, @@ -593,11 +593,11 @@ describe('Language Server: Diagnostic Augmentation', () => { Property 'foo' does not exist on type 'Globals'.", "range": { "end": { - "character": 10, + "character": 7, "line": 2, }, "start": { - "character": 0, + "character": 1, "line": 2, }, }, diff --git a/packages/core/__tests__/transform/debug.test.ts b/packages/core/__tests__/transform/debug.test.ts index 03429e192..55255c151 100644 --- a/packages/core/__tests__/transform/debug.test.ts +++ b/packages/core/__tests__/transform/debug.test.ts @@ -215,33 +215,43 @@ describe('Transform: Debug utilities', () => { | | | hbs(160:197): | | | ts(331:451): {\\\\n const 𝛄 = χ.emitComponent(χ.resolve(HelperComponent)({ foo: 𝚪.this.bar, ...χ.NamedArgsMarker }));\\\\n 𝛄;\\\\n } | | | - | | | | Mapping: Identifier + | | | | Mapping: ElementNameNode | | | | hbs(161:176): HelperComponent | | | | ts(376:391): HelperComponent | | | | - | | | | Mapping: AttrNode - | | | | hbs(177:194): @foo={{this.bar}} - | | | | ts(395:411): foo: 𝚪.this.bar - | | | | | | | | | Mapping: Identifier - | | | | | hbs(178:181): foo - | | | | | ts(395:398): foo + | | | | | hbs(161:176): HelperComponent + | | | | | ts(376:391): HelperComponent | | | | | - | | | | | Mapping: MustacheStatement - | | | | | hbs(182:194): {{this.bar}} - | | | | | ts(400:411): 𝚪.this.bar + | | | | + | | | | Mapping: ElementStartNode + | | | | hbs(160:197): + | | | | ts(395:435): foo: 𝚪.this.bar, ...χ.NamedArgsMarker } + | | | | + | | | | | Mapping: AttrNode + | | | | | hbs(177:194): @foo={{this.bar}} + | | | | | ts(395:411): foo: 𝚪.this.bar | | | | | - | | | | | | Mapping: PathExpression - | | | | | | hbs(184:192): this.bar + | | | | | | Mapping: Identifier + | | | | | | hbs(178:181): foo + | | | | | | ts(395:398): foo + | | | | | | + | | | | | | Mapping: MustacheStatement + | | | | | | hbs(182:194): {{this.bar}} | | | | | | ts(400:411): 𝚪.this.bar | | | | | | - | | | | | | | Mapping: Identifier - | | | | | | | hbs(184:188): this - | | | | | | | ts(403:407): this + | | | | | | | Mapping: PathExpression + | | | | | | | hbs(184:192): this.bar + | | | | | | | ts(400:411): 𝚪.this.bar | | | | | | | - | | | | | | | Mapping: Identifier - | | | | | | | hbs(189:192): bar - | | | | | | | ts(408:411): bar + | | | | | | | | Mapping: Identifier + | | | | | | | | hbs(184:188): this + | | | | | | | | ts(403:407): this + | | | | | | | | + | | | | | | | | Mapping: Identifier + | | | | | | | | hbs(189:192): bar + | | | | | | | | ts(408:411): bar + | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -256,11 +266,11 @@ describe('Transform: Debug utilities', () => { | Mapping: TemplateEmbedding | hbs(295:419): hbs\`\\\\n

\\\\n Hello, {{@foo}}!\\\\n\\\\n {{! @glint-expect-error: no @bar arg }}\\\\n {{@bar}}\\\\n

\\\\n \` - | ts(556:973): ({} as typeof import(\\"@glint/environment-glimmerx/-private/dsl\\")).templateForBackingValue(this, function(𝚪, χ: typeof import(\\"@glint/environment-glimmerx/-private/dsl\\")) {\\\\n hbs;\\\\n {\\\\n const 𝛄 = χ.emitElement(\\"p\\");\\\\n χ.applySplattributes(𝚪.element, 𝛄.element);\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.foo)());\\\\n // @glint-expect-error\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.bar)());\\\\n }\\\\n 𝚪; χ;\\\\n}) + | ts(556:1025): ({} as typeof import(\\"@glint/environment-glimmerx/-private/dsl\\")).templateForBackingValue(this, function(𝚪, χ: typeof import(\\"@glint/environment-glimmerx/-private/dsl\\")) {\\\\n hbs;\\\\n {\\\\n const 𝛄 = χ.emitElement(\\"p\\");\\\\n χ.applySplattributes(𝚪.element, 𝛄.element);\\\\n χ.applyAttributes(𝛄.element, {\\\\n \\\\n });\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.foo)());\\\\n // @glint-expect-error\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.bar)());\\\\n }\\\\n 𝚪; χ;\\\\n}) | | | Mapping: Template | | hbs(299:418):

\\\\n Hello, {{@foo}}!\\\\n\\\\n {{! @glint-expect-error: no @bar arg }}\\\\n {{@bar}}\\\\n

- | | ts(736:962): {\\\\n const 𝛄 = χ.emitElement(\\"p\\");\\\\n χ.applySplattributes(𝚪.element, 𝛄.element);\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.foo)());\\\\n // @glint-expect-error\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.bar)());\\\\n } + | | ts(736:1014): {\\\\n const 𝛄 = χ.emitElement(\\"p\\");\\\\n χ.applySplattributes(𝚪.element, 𝛄.element);\\\\n χ.applyAttributes(𝛄.element, {\\\\n \\\\n });\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.foo)());\\\\n // @glint-expect-error\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.bar)());\\\\n } | | | | | Mapping: TextContent | | | hbs(299:304): @@ -268,64 +278,72 @@ describe('Transform: Debug utilities', () => { | | | | | | Mapping: ElementNode | | | hbs(304:415):

\\\\n Hello, {{@foo}}!\\\\n\\\\n {{! @glint-expect-error: no @bar arg }}\\\\n {{@bar}}\\\\n

- | | | ts(736:962): {\\\\n const 𝛄 = χ.emitElement(\\"p\\");\\\\n χ.applySplattributes(𝚪.element, 𝛄.element);\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.foo)());\\\\n // @glint-expect-error\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.bar)());\\\\n } + | | | ts(736:1014): {\\\\n const 𝛄 = χ.emitElement(\\"p\\");\\\\n χ.applySplattributes(𝚪.element, 𝛄.element);\\\\n χ.applyAttributes(𝛄.element, {\\\\n \\\\n });\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.foo)());\\\\n // @glint-expect-error\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.bar)());\\\\n } | | | + | | | | Mapping: ElementNameNode + | | | | hbs(305:306): p + | | | | ts(769:772): \\"p\\" + | | | | | | | | Mapping: AttrNode | | | | hbs(307:320): ...attributes | | | | ts(775:824): χ.applySplattributes(𝚪.element, 𝛄.element); | | | | + | | | | Mapping: ElementStartNode + | | | | hbs(304:321):

+ | | | | ts(860:869): + | | | | | | | | Mapping: TextContent | | | | hbs(328:334): Hello, - | | | | ts(825:825): + | | | | ts(877:877): | | | | | | | | Mapping: MustacheStatement | | | | hbs(335:343): {{@foo}} - | | | | ts(825:876): χ.emitContent(χ.resolveOrReturn(𝚪.args.foo)()) + | | | | ts(877:928): χ.emitContent(χ.resolveOrReturn(𝚪.args.foo)()) | | | | | | | | | Mapping: PathExpression | | | | | hbs(337:341): @foo - | | | | | ts(861:872): 𝚪.args.foo + | | | | | ts(913:924): 𝚪.args.foo | | | | | | | | | | | Mapping: Identifier | | | | | | hbs(338:341): foo - | | | | | | ts(869:872): foo + | | | | | | ts(921:924): foo | | | | | | | | | | | | | | | | | | | Mapping: TextContent | | | | hbs(343:344): ! - | | | | ts(878:878): + | | | | ts(930:930): | | | | | | | | Mapping: MustacheCommentStatement | | | | hbs(352:391): {{! @glint-expect-error: no @bar arg }} - | | | | ts(878:905): // @glint-expect-error + | | | | ts(930:957): // @glint-expect-error | | | | | | | | Mapping: TextContent | | | | hbs(392:398): - | | | | ts(905:905): + | | | | ts(957:957): | | | | | | | | Mapping: MustacheStatement | | | | hbs(398:406): {{@bar}} - | | | | ts(905:956): χ.emitContent(χ.resolveOrReturn(𝚪.args.bar)()) + | | | | ts(957:1008): χ.emitContent(χ.resolveOrReturn(𝚪.args.bar)()) | | | | | | | | | Mapping: PathExpression | | | | | hbs(400:404): @bar - | | | | | ts(941:952): 𝚪.args.bar + | | | | | ts(993:1004): 𝚪.args.bar | | | | | | | | | | | Mapping: Identifier | | | | | | hbs(401:404): bar - | | | | | | ts(949:952): bar + | | | | | | ts(1001:1004):bar | | | | | | | | | | | | | | | | | | | Mapping: TextContent | | | | hbs(406:411): - | | | | ts(958:958): + | | | | ts(1010:1010): | | | | | | | | | | Mapping: TextContent | | | hbs(415:418): - | | | ts(962:962): + | | | ts(1014:1014): | | | | | |" @@ -380,33 +398,43 @@ describe('Transform: Debug utilities', () => { | | | hbs(166:203): | | | ts(336:456): {\\\\n const 𝛄 = χ.emitComponent(χ.resolve(HelperComponent)({ foo: 𝚪.this.bar, ...χ.NamedArgsMarker }));\\\\n 𝛄;\\\\n } | | | - | | | | Mapping: Identifier + | | | | Mapping: ElementNameNode | | | | hbs(167:182): HelperComponent | | | | ts(381:396): HelperComponent | | | | - | | | | Mapping: AttrNode - | | | | hbs(183:200): @foo={{this.bar}} - | | | | ts(400:416): foo: 𝚪.this.bar - | | | | | | | | | Mapping: Identifier - | | | | | hbs(184:187): foo - | | | | | ts(400:403): foo + | | | | | hbs(167:182): HelperComponent + | | | | | ts(381:396): HelperComponent | | | | | - | | | | | Mapping: MustacheStatement - | | | | | hbs(188:200): {{this.bar}} - | | | | | ts(405:416): 𝚪.this.bar + | | | | + | | | | Mapping: ElementStartNode + | | | | hbs(166:203): + | | | | ts(400:440): foo: 𝚪.this.bar, ...χ.NamedArgsMarker } + | | | | + | | | | | Mapping: AttrNode + | | | | | hbs(183:200): @foo={{this.bar}} + | | | | | ts(400:416): foo: 𝚪.this.bar | | | | | - | | | | | | Mapping: PathExpression - | | | | | | hbs(190:198): this.bar + | | | | | | Mapping: Identifier + | | | | | | hbs(184:187): foo + | | | | | | ts(400:403): foo + | | | | | | + | | | | | | Mapping: MustacheStatement + | | | | | | hbs(188:200): {{this.bar}} | | | | | | ts(405:416): 𝚪.this.bar | | | | | | - | | | | | | | Mapping: Identifier - | | | | | | | hbs(190:194): this - | | | | | | | ts(408:412): this + | | | | | | | Mapping: PathExpression + | | | | | | | hbs(190:198): this.bar + | | | | | | | ts(405:416): 𝚪.this.bar | | | | | | | - | | | | | | | Mapping: Identifier - | | | | | | | hbs(195:198): bar - | | | | | | | ts(413:416): bar + | | | | | | | | Mapping: Identifier + | | | | | | | | hbs(190:194): this + | | | | | | | | ts(408:412): this + | | | | | | | | + | | | | | | | | Mapping: Identifier + | | | | | | | | hbs(195:198): bar + | | | | | | | | ts(413:416): bar + | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -421,11 +449,11 @@ describe('Transform: Debug utilities', () => { | Mapping: TemplateEmbedding | hbs(306:437): hbs\`\\\\r\\\\n

\\\\r\\\\n Hello, {{@foo}}!\\\\r\\\\n\\\\r\\\\n {{! @glint-expect-error: no @bar arg }}\\\\r\\\\n {{@bar}}\\\\r\\\\n

\\\\r\\\\n \` - | ts(565:982): ({} as typeof import(\\"@glint/environment-glimmerx/-private/dsl\\")).templateForBackingValue(this, function(𝚪, χ: typeof import(\\"@glint/environment-glimmerx/-private/dsl\\")) {\\\\n hbs;\\\\n {\\\\n const 𝛄 = χ.emitElement(\\"p\\");\\\\n χ.applySplattributes(𝚪.element, 𝛄.element);\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.foo)());\\\\n // @glint-expect-error\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.bar)());\\\\n }\\\\n 𝚪; χ;\\\\n}) + | ts(565:1034): ({} as typeof import(\\"@glint/environment-glimmerx/-private/dsl\\")).templateForBackingValue(this, function(𝚪, χ: typeof import(\\"@glint/environment-glimmerx/-private/dsl\\")) {\\\\n hbs;\\\\n {\\\\n const 𝛄 = χ.emitElement(\\"p\\");\\\\n χ.applySplattributes(𝚪.element, 𝛄.element);\\\\n χ.applyAttributes(𝛄.element, {\\\\n \\\\n });\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.foo)());\\\\n // @glint-expect-error\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.bar)());\\\\n }\\\\n 𝚪; χ;\\\\n}) | | | Mapping: Template | | hbs(310:436):

\\\\r\\\\n Hello, {{@foo}}!\\\\r\\\\n\\\\r\\\\n {{! @glint-expect-error: no @bar arg }}\\\\r\\\\n {{@bar}}\\\\r\\\\n

- | | ts(745:971): {\\\\n const 𝛄 = χ.emitElement(\\"p\\");\\\\n χ.applySplattributes(𝚪.element, 𝛄.element);\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.foo)());\\\\n // @glint-expect-error\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.bar)());\\\\n } + | | ts(745:1023): {\\\\n const 𝛄 = χ.emitElement(\\"p\\");\\\\n χ.applySplattributes(𝚪.element, 𝛄.element);\\\\n χ.applyAttributes(𝛄.element, {\\\\n \\\\n });\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.foo)());\\\\n // @glint-expect-error\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.bar)());\\\\n } | | | | | Mapping: TextContent | | | hbs(310:316): @@ -433,64 +461,72 @@ describe('Transform: Debug utilities', () => { | | | | | | Mapping: ElementNode | | | hbs(316:432):

\\\\r\\\\n Hello, {{@foo}}!\\\\r\\\\n\\\\r\\\\n {{! @glint-expect-error: no @bar arg }}\\\\r\\\\n {{@bar}}\\\\r\\\\n

- | | | ts(745:971): {\\\\n const 𝛄 = χ.emitElement(\\"p\\");\\\\n χ.applySplattributes(𝚪.element, 𝛄.element);\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.foo)());\\\\n // @glint-expect-error\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.bar)());\\\\n } + | | | ts(745:1023): {\\\\n const 𝛄 = χ.emitElement(\\"p\\");\\\\n χ.applySplattributes(𝚪.element, 𝛄.element);\\\\n χ.applyAttributes(𝛄.element, {\\\\n \\\\n });\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.foo)());\\\\n // @glint-expect-error\\\\n χ.emitContent(χ.resolveOrReturn(𝚪.args.bar)());\\\\n } | | | + | | | | Mapping: ElementNameNode + | | | | hbs(317:318): p + | | | | ts(778:781): \\"p\\" + | | | | | | | | Mapping: AttrNode | | | | hbs(319:332): ...attributes | | | | ts(784:833): χ.applySplattributes(𝚪.element, 𝛄.element); | | | | + | | | | Mapping: ElementStartNode + | | | | hbs(316:333):

+ | | | | ts(869:878): + | | | | | | | | Mapping: TextContent | | | | hbs(340:347): Hello, - | | | | ts(834:834): + | | | | ts(886:886): | | | | | | | | Mapping: MustacheStatement | | | | hbs(348:356): {{@foo}} - | | | | ts(834:885): χ.emitContent(χ.resolveOrReturn(𝚪.args.foo)()) + | | | | ts(886:937): χ.emitContent(χ.resolveOrReturn(𝚪.args.foo)()) | | | | | | | | | Mapping: PathExpression | | | | | hbs(350:354): @foo - | | | | | ts(870:881): 𝚪.args.foo + | | | | | ts(922:933): 𝚪.args.foo | | | | | | | | | | | Mapping: Identifier | | | | | | hbs(351:354): foo - | | | | | | ts(878:881): foo + | | | | | | ts(930:933): foo | | | | | | | | | | | | | | | | | | | Mapping: TextContent | | | | hbs(356:359): ! - | | | | ts(887:887): + | | | | ts(939:939): | | | | | | | | Mapping: MustacheCommentStatement | | | | hbs(367:406): {{! @glint-expect-error: no @bar arg }} - | | | | ts(887:914): // @glint-expect-error + | | | | ts(939:966): // @glint-expect-error | | | | | | | | Mapping: TextContent | | | | hbs(408:414): - | | | | ts(914:914): + | | | | ts(966:966): | | | | | | | | Mapping: MustacheStatement | | | | hbs(414:422): {{@bar}} - | | | | ts(914:965): χ.emitContent(χ.resolveOrReturn(𝚪.args.bar)()) + | | | | ts(966:1017): χ.emitContent(χ.resolveOrReturn(𝚪.args.bar)()) | | | | | | | | | Mapping: PathExpression | | | | | hbs(416:420): @bar - | | | | | ts(950:961): 𝚪.args.bar + | | | | | ts(1002:1013):𝚪.args.bar | | | | | | | | | | | Mapping: Identifier | | | | | | hbs(417:420): bar - | | | | | | ts(958:961): bar + | | | | | | ts(1010:1013):bar | | | | | | | | | | | | | | | | | | | Mapping: TextContent | | | | hbs(422:428): - | | | | ts(967:967): + | | | | ts(1019:1019): | | | | | | | | | | Mapping: TextContent | | | hbs(432:436): - | | | ts(971:971): + | | | ts(1023:1023): | | | | | |" diff --git a/packages/core/__tests__/transform/template-to-typescript.test.ts b/packages/core/__tests__/transform/template-to-typescript.test.ts index 6f0762e9e..daaaa84ba 100644 --- a/packages/core/__tests__/transform/template-to-typescript.test.ts +++ b/packages/core/__tests__/transform/template-to-typescript.test.ts @@ -933,6 +933,9 @@ describe('Transform: rewriteTemplate', () => { expect(templateBody(template, { globals: [] })).toMatchInlineSnapshot(` "{ const 𝛄 = χ.emitElement(\\"div\\"); + χ.applyAttributes(𝛄.element, { + + }); χ.applyModifier(χ.resolve(modifier)(𝛄.element, { foo: \\"bar\\" , ...χ.NamedArgsMarker })); }" `); @@ -944,6 +947,9 @@ describe('Transform: rewriteTemplate', () => { expect(templateBody(template, { globals: [] })).toMatchInlineSnapshot(` "{ const 𝛄 = χ.emitComponent(χ.resolve(MyComponent)()); + χ.applyAttributes(𝛄.element, { + + }); χ.applyModifier(χ.resolve(modifier)(𝛄.element, { foo: \\"bar\\" , ...χ.NamedArgsMarker })); }" `); @@ -1085,6 +1091,9 @@ describe('Transform: rewriteTemplate', () => { "{ const 𝛄 = χ.emitElement(\\"div\\"); χ.applySplattributes(𝚪.element, 𝛄.element); + χ.applyAttributes(𝛄.element, { + + }); }" `); }); @@ -1129,6 +1138,9 @@ describe('Transform: rewriteTemplate', () => { "{ const 𝛄 = χ.emitComponent(χ.resolve(Foo)()); χ.applySplattributes(𝚪.element, 𝛄.element); + χ.applyAttributes(𝛄.element, { + + }); }" `); }); diff --git a/packages/core/package.json b/packages/core/package.json index b29d53346..2aea62eae 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -32,7 +32,7 @@ "typescript": ">=4.8.0" }, "dependencies": { - "@glimmer/syntax": "^0.84.3", + "@glimmer/syntax": "^0.88.0", "escape-string-regexp": "^4.0.0", "semver": "^7.5.2", "silent-error": "^1.1.1", diff --git a/packages/core/src/transform/diagnostics/augmentation.ts b/packages/core/src/transform/diagnostics/augmentation.ts index 4fc4a7b14..9ae8ef8b7 100644 --- a/packages/core/src/transform/diagnostics/augmentation.ts +++ b/packages/core/src/transform/diagnostics/augmentation.ts @@ -145,6 +145,10 @@ function checkResolveError( // we need to traverse up through the path to find the true parent. let sourceMapping = mapping.sourceNode.type === 'Identifier' ? mapping.parent : mapping; let parentNode = sourceMapping?.parent?.sourceNode; + if (sourceMapping?.sourceNode.type === 'ElementNameNode') { + sourceMapping = sourceMapping.parent; + parentNode = sourceMapping?.parent?.sourceNode; + } // If this error is on the first param to a {{component}} or other bind invocation, this means // we either have a non-component value or a string that's missing from the registry. @@ -176,7 +180,12 @@ function checkResolveError( // Otherwise if this is on a top level invocation, we're trying to use a template-unaware // value in a template-specific way. let nodeType = sourceMapping?.sourceNode.type; - if (nodeType === 'ElementNode' || nodeType === 'PathExpression' || nodeType === 'Identifier') { + if ( + nodeType === 'ElementNode' || + nodeType === 'PathExpression' || + nodeType === 'Identifier' || + nodeType === 'ElementNameNode' + ) { return addGlintDetails( diagnostic, 'The given value does not appear to be usable as a component, modifier or helper.' @@ -201,8 +210,8 @@ function checkImplicitAnyError( // This error may appear either on `` or `{{foo}}`/`(foo)` let globalName = - sourceNode.type === 'ElementNode' - ? sourceNode.tag.split('.')[0] + sourceNode.type === 'ElementNameNode' + ? sourceNode.value.split('.')[0] : sourceNode.type === 'PathExpression' && sourceNode.head.type === 'VarHead' ? sourceNode.head.name : null; diff --git a/packages/core/src/transform/template/template-to-typescript.ts b/packages/core/src/transform/template/template-to-typescript.ts index 5157b4c51..8e49664ed 100644 --- a/packages/core/src/transform/template/template-to-typescript.ts +++ b/packages/core/src/transform/template/template-to-typescript.ts @@ -595,39 +595,43 @@ export function templateToTypescript( emit.indent(); emit.text('const 𝛄 = χ.emitComponent(χ.resolve('); - emitPathContents(path, start, kind); + emit.forNode(node.nameNode, () => { + emitPathContents(path, start, kind); + }); emit.text(')('); let dataAttrs = node.attributes.filter(({ name }) => name.startsWith('@')); if (dataAttrs.length) { emit.text('{ '); - for (let attr of dataAttrs) { - emit.forNode(attr, () => { - start = template.indexOf(attr.name, start + 1); - emitHashKey(attr.name.slice(1), start + 1); - emit.text(': '); - - switch (attr.value.type) { - case 'TextNode': - emit.text(JSON.stringify(attr.value.chars)); - break; - case 'ConcatStatement': - emitConcatStatement(attr.value); - break; - case 'MustacheStatement': - emitMustacheStatement(attr.value, 'arg'); - break; - default: - unreachable(attr.value); - } - }); - - start = rangeForNode(attr.value).end; - emit.text(', '); - } + emit.forNode(node.startTag, () => { + for (let attr of dataAttrs) { + emit.forNode(attr, () => { + start = template.indexOf(attr.name, start + 1); + emitHashKey(attr.name.slice(1), start + 1); + emit.text(': '); + + switch (attr.value.type) { + case 'TextNode': + emit.text(JSON.stringify(attr.value.chars)); + break; + case 'ConcatStatement': + emitConcatStatement(attr.value); + break; + case 'MustacheStatement': + emitMustacheStatement(attr.value, 'arg'); + break; + default: + unreachable(attr.value); + } + }); + + start = rangeForNode(attr.value).end; + emit.text(', '); + } - emit.text('...χ.NamedArgsMarker }'); + emit.text('...χ.NamedArgsMarker }'); + }); } emit.text('));'); @@ -759,7 +763,9 @@ export function templateToTypescript( emit.indent(); emit.text('const 𝛄 = χ.emitElement('); - emit.text(JSON.stringify(node.tag)); + emit.forNode(node.nameNode, () => { + emit.text(JSON.stringify(node.tag)); + }); emit.text(');'); emit.newline(); @@ -793,35 +799,39 @@ export function templateToTypescript( (attr) => !attr.name.startsWith('@') && attr.name !== SPLATTRIBUTES ); - if (!attributes.length) return; - emit.text('χ.applyAttributes(𝛄.element, {'); - emit.newline(); - emit.indent(); + emit.forNode(node.startTag, () => { + emit.newline(); + emit.indent(); - let start = template.indexOf(node.tag, rangeForNode(node).start) + node.tag.length; + let start = template.indexOf(node.tag, rangeForNode(node).start) + node.tag.length; - for (let attr of attributes) { - emit.forNode(attr, () => { - start = template.indexOf(attr.name, start + 1); + for (let attr of attributes) { + emit.forNode(attr, () => { + start = template.indexOf(attr.name, start + 1); - emitHashKey(attr.name, start); - emit.text(': '); + emitHashKey(attr.name, start); + emit.text(': '); - if (attr.value.type === 'MustacheStatement') { - emitMustacheStatement(attr.value, 'attr'); - } else if (attr.value.type === 'ConcatStatement') { - emitConcatStatement(attr.value); - } else { - emit.text(JSON.stringify(attr.value.chars)); - } + if (attr.value.type === 'MustacheStatement') { + emitMustacheStatement(attr.value, 'attr'); + } else if (attr.value.type === 'ConcatStatement') { + emitConcatStatement(attr.value); + } else { + emit.text(JSON.stringify(attr.value.chars)); + } - emit.text(','); + emit.text(','); + emit.newline(); + }); + } + // in case there are no attributes, this would allow completions to trigger + if (attributes.length === 0) { + emit.text(' '); emit.newline(); - }); - } - - emit.dedent(); + } + emit.dedent(); + }); emit.text('});'); emit.newline(); } diff --git a/packages/template/__tests__/emit-content.test.ts b/packages/template/__tests__/emit-content.test.ts index 11fd45519..3dd6d8d0f 100644 --- a/packages/template/__tests__/emit-content.test.ts +++ b/packages/template/__tests__/emit-content.test.ts @@ -1,4 +1,5 @@ -import { SafeString } from '@glimmer/runtime'; +// @ts-expect-error cannot import, but we only need the type... +import type { SafeString } from '@glimmer/runtime'; import { htmlSafe } from '@ember/template'; import { emitContent } from '../-private/dsl'; diff --git a/tsconfig.compileroptions.json b/tsconfig.compileroptions.json index 085a3add8..154f14068 100644 --- a/tsconfig.compileroptions.json +++ b/tsconfig.compileroptions.json @@ -3,6 +3,7 @@ "target": "ES2020", // Node16 allows top-level `await`, which was also unflagged in Node 14.8 "module": "Node16", + "skipLibCheck": true, "moduleResolution": "Node16", "strict": true, "noImplicitOverride": true, diff --git a/yarn.lock b/yarn.lock index 51efff95e..30aac697a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1332,15 +1332,24 @@ dependencies: "@glimmer/global-context" "0.84.0" -"@glimmer/destroyable@0.84.3": - version "0.84.3" - resolved "https://registry.yarnpkg.com/@glimmer/destroyable/-/destroyable-0.84.3.tgz#a837ef59bfd64a7b991c76747586205a4a363e41" - integrity sha512-4tUw5UR4ntuySPvbcWyCMRjqxMJMV1GewjU3zGq22XvuBVFfq2K9WmuYV9H9FHg8X0MgDwcus+LjxrVSel39Sw== +"@glimmer/debug@^0.88.1": + version "0.88.1" + resolved "https://registry.yarnpkg.com/@glimmer/debug/-/debug-0.88.1.tgz#5beaac4d072db405a2ed265652ca197297d699af" + integrity sha512-VA/kx8UvoP3vIjdHiFNIkWwyvIbIN8wv/loP08W1pb8tAzOsW30f2D6eMhNHUXYMeoWDw4OzDBnHQN1k3Azsqw== + dependencies: + "@glimmer/interfaces" "^0.88.1" + "@glimmer/util" "^0.88.1" + "@glimmer/vm" "^0.88.1" + +"@glimmer/destroyable@^0.88.1": + version "0.88.1" + resolved "https://registry.yarnpkg.com/@glimmer/destroyable/-/destroyable-0.88.1.tgz#689be551439372dca64df0b7b7c61edd58c53989" + integrity sha512-AIq507CNzLae9Sj2T7ObdcG1QsEogTr3zBddX22psnLpTlvlvb6IFrtcbKwin0ZT21v/ByorOqjQv8L+2kEqVA== dependencies: "@glimmer/env" "0.1.7" - "@glimmer/global-context" "0.84.3" - "@glimmer/interfaces" "0.84.3" - "@glimmer/util" "0.84.3" + "@glimmer/global-context" "^0.88.1" + "@glimmer/interfaces" "^0.88.1" + "@glimmer/util" "^0.88.1" "@glimmer/di@^0.1.9": version "0.1.11" @@ -1356,14 +1365,13 @@ "@glimmer/interfaces" "0.84.0" "@glimmer/vm" "0.84.0" -"@glimmer/encoder@0.84.3": - version "0.84.3" - resolved "https://registry.yarnpkg.com/@glimmer/encoder/-/encoder-0.84.3.tgz#3c7291243e6cd595bf22fc2771286d570dc24d47" - integrity sha512-T99YQDhNC/1rOFgiz8k4uzgzQsQ+r1my+WVXRv26o0r+/yOnKYndrb6WH/E9d+XtBIZbm1yCSm2BMFYelR0Nrg== +"@glimmer/encoder@^0.88.1": + version "0.88.1" + resolved "https://registry.yarnpkg.com/@glimmer/encoder/-/encoder-0.88.1.tgz#2e986f89d9a8114168b003314eedfd0f2bc16092" + integrity sha512-q21+bFVIC7/jM/iUHZ2h05FLgJK8K5YjCbrZe7yz3Vdy9WoZ6s+B73xcSdYKmj/SS3YXFUOLsanMsFLpwJXjuQ== dependencies: - "@glimmer/env" "0.1.7" - "@glimmer/interfaces" "0.84.3" - "@glimmer/vm" "0.84.3" + "@glimmer/interfaces" "^0.88.1" + "@glimmer/vm" "^0.88.1" "@glimmer/env@0.1.7", "@glimmer/env@^0.1.7": version "0.1.7" @@ -1377,12 +1385,10 @@ dependencies: "@glimmer/env" "^0.1.7" -"@glimmer/global-context@0.84.3": - version "0.84.3" - resolved "https://registry.yarnpkg.com/@glimmer/global-context/-/global-context-0.84.3.tgz#f8bf2cda9562716f2ddf3f96837e7559600635c4" - integrity sha512-8Oy9Wg5IZxMEeAnVmzD2NkObf89BeHoFSzJgJROE/deutd3rxg83mvlOez4zBBGYwnTb+VGU2LYRpet92egJjA== - dependencies: - "@glimmer/env" "^0.1.7" +"@glimmer/global-context@^0.88.1": + version "0.88.1" + resolved "https://registry.yarnpkg.com/@glimmer/global-context/-/global-context-0.88.1.tgz#5754409e4c320fb7ff28c48156bb094989d8fc90" + integrity sha512-665T0Y+b69IGcEgl8w667kn/zRHMjWTN1O0FyzPDgcpc14kxvNqrOgGjqbs8HPnUuPVQzURF8jYGiH5sWM26/Q== "@glimmer/helper@2.0.0-beta.21": version "2.0.0-beta.21" @@ -1393,30 +1399,27 @@ "@glimmer/core" "2.0.0-beta.21" "@glimmer/runtime" "0.84.0" -"@glimmer/interfaces@0.84.0", "@glimmer/interfaces@0.84.3": - version "0.84.3" - resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.84.3.tgz#629777a4abe373b0785656f6c8d08989f5784805" - integrity sha512-dk32ykoNojt0mvEaIW6Vli5MGTbQo58uy3Epj7ahCgTHmWOKuw/0G83f2UmFprRwFx689YTXG38I/vbpltEjzg== +"@glimmer/interfaces@0.84.0", "@glimmer/interfaces@0.84.3", "@glimmer/interfaces@0.88.1", "@glimmer/interfaces@^0.88.0", "@glimmer/interfaces@^0.88.1": + version "0.88.1" + resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.88.1.tgz#e5ce6b5aea2a9fbc15d5f7f684e4b6d2695e7e8f" + integrity sha512-BOcN8xFNX/eppGxwS9Rm1+PlQaFX+tK91cuQLHj2sRwB+qVbL/WeutIa3AUQYr0VVEzMm2S6bYCLvG6p0a8v9A== dependencies: "@simple-dom/interface" "^1.4.0" -"@glimmer/low-level@0.78.2": - version "0.78.2" - resolved "https://registry.yarnpkg.com/@glimmer/low-level/-/low-level-0.78.2.tgz#bca5f666760ce98345e87c5b3e37096e772cb2de" - integrity sha512-0S6TWOOd0fzLLysw1pWZN0TgasaHmYs1Sjz9Til1mTByIXU1S+1rhdyr2veSQPO/aRjPuEQyKXZQHvx23Zax6w== - -"@glimmer/manager@0.84.0", "@glimmer/manager@0.84.3", "@glimmer/manager@>= 0.83.0": - version "0.84.3" - resolved "https://registry.yarnpkg.com/@glimmer/manager/-/manager-0.84.3.tgz#5be61728713e6c893836540353989462492ca9fe" - integrity sha512-FtcwvrQ3HWlGRGChwlXiisMeKf9+XcCkMwVrrO0cxQavT01tIHx40OFtPOhXKGbgXGtRKcJI8XR41aK9t2kvyg== +"@glimmer/manager@0.84.0", "@glimmer/manager@0.88.1", "@glimmer/manager@>= 0.83.0", "@glimmer/manager@^0.88.1": + version "0.88.1" + resolved "https://registry.yarnpkg.com/@glimmer/manager/-/manager-0.88.1.tgz#afd51b35b8d30373f93856e9b2ecd31ad7f8233c" + integrity sha512-AeyZsH/U3heXbEHtQ3J8njCf/hxl2jU9Lk+TDOB8eg0aZnGTcz2DRB26x1fUZgEXQ66nHRrYBO7Pq0Ug/r11Yw== dependencies: - "@glimmer/destroyable" "0.84.3" + "@glimmer/debug" "^0.88.1" + "@glimmer/destroyable" "^0.88.1" "@glimmer/env" "0.1.7" - "@glimmer/global-context" "0.84.3" - "@glimmer/interfaces" "0.84.3" - "@glimmer/reference" "0.84.3" - "@glimmer/util" "0.84.3" - "@glimmer/validator" "0.84.3" + "@glimmer/global-context" "^0.88.1" + "@glimmer/interfaces" "^0.88.1" + "@glimmer/reference" "^0.88.1" + "@glimmer/util" "^0.88.1" + "@glimmer/validator" "^0.88.1" + "@glimmer/vm" "^0.88.1" "@glimmer/modifier@2.0.0-beta.21": version "2.0.0-beta.21" @@ -1438,18 +1441,21 @@ "@glimmer/vm" "0.84.0" "@glimmer/wire-format" "0.84.0" -"@glimmer/opcode-compiler@0.84.3": - version "0.84.3" - resolved "https://registry.yarnpkg.com/@glimmer/opcode-compiler/-/opcode-compiler-0.84.3.tgz#aa95000034d10786cb8fdbd199d66fb5498e90f3" - integrity sha512-flUuikKLFL9cekJUA10gJxMRCDjUPb61R3UCl1u69TGN0Nm7FTsMhOsVDtJLeeiAROtPx+NvasPw/6UB1rrdyg== +"@glimmer/opcode-compiler@^0.88.1": + version "0.88.1" + resolved "https://registry.yarnpkg.com/@glimmer/opcode-compiler/-/opcode-compiler-0.88.1.tgz#26ca954001647cf556bb0262ef26900278cdc065" + integrity sha512-IZCizo+l7784D9qw08XHegqz7kJaQ7M2ONyUQaxpfcSVqdfQ1VTulDi7YWQhQGhHiW900ABDHNuG/DQjlSrPnQ== dependencies: - "@glimmer/encoder" "0.84.3" + "@glimmer/debug" "^0.88.1" + "@glimmer/encoder" "^0.88.1" "@glimmer/env" "0.1.7" - "@glimmer/interfaces" "0.84.3" - "@glimmer/reference" "0.84.3" - "@glimmer/util" "0.84.3" - "@glimmer/vm" "0.84.3" - "@glimmer/wire-format" "0.84.3" + "@glimmer/global-context" "^0.88.1" + "@glimmer/interfaces" "^0.88.1" + "@glimmer/manager" "^0.88.1" + "@glimmer/reference" "^0.88.1" + "@glimmer/util" "^0.88.1" + "@glimmer/vm" "^0.88.1" + "@glimmer/wire-format" "^0.88.1" "@glimmer/owner@0.84.0": version "0.84.0" @@ -1458,12 +1464,12 @@ dependencies: "@glimmer/util" "0.84.0" -"@glimmer/owner@0.84.3": - version "0.84.3" - resolved "https://registry.yarnpkg.com/@glimmer/owner/-/owner-0.84.3.tgz#e64083b692452031bdf30cba4124d1fc64e6e5e2" - integrity sha512-ZwA0rU4V8m0z4ncXtWD2QEU6eh61wkKKQUThahPYhfB+JYceVM6Grx7uWeiAxc2v3ncpvbYqIGdnICXDMloxAA== +"@glimmer/owner@^0.88.1": + version "0.88.1" + resolved "https://registry.yarnpkg.com/@glimmer/owner/-/owner-0.88.1.tgz#bd5e19423c0f16224eec253ce28355d5631dadf8" + integrity sha512-Y0xRvpMHEiLbQItzjUVYSnax2lMxc9y6x3hACTQhDxQWtW5zg2rwh8UKihmFkml0WgJzRhcMkRBYDmZG9WiwEw== dependencies: - "@glimmer/util" "0.84.3" + "@glimmer/util" "^0.88.1" "@glimmer/program@0.84.0": version "0.84.0" @@ -1477,47 +1483,48 @@ "@glimmer/opcode-compiler" "0.84.0" "@glimmer/util" "0.84.0" -"@glimmer/program@0.84.3": - version "0.84.3" - resolved "https://registry.yarnpkg.com/@glimmer/program/-/program-0.84.3.tgz#a93d5e2ecd1cb7b9e4582cc4d41d0f92b16f9cf5" - integrity sha512-D8z1lP8NEMyzT8gByFsZpmbRThZvGLS0Tl5AngaDbI2FqlcpEV0ujvLTzzgecd9QQ1k3Cd60dTgy/2N2CI82SA== +"@glimmer/program@^0.88.1": + version "0.88.1" + resolved "https://registry.yarnpkg.com/@glimmer/program/-/program-0.88.1.tgz#d486575c38bd9c0ebc439970817f623212ceb6c2" + integrity sha512-Z99zsOPRj+WvTh5HF5k4HbGQMnuxqoGKqH0PlLDFeBlIBvExUM/XF2lkhqNC+4KgxxJmPmPIkXh63+cppqz+4g== dependencies: - "@glimmer/encoder" "0.84.3" + "@glimmer/encoder" "^0.88.1" "@glimmer/env" "0.1.7" - "@glimmer/interfaces" "0.84.3" - "@glimmer/manager" "0.84.3" - "@glimmer/opcode-compiler" "0.84.3" - "@glimmer/util" "0.84.3" - -"@glimmer/reference@0.84.0", "@glimmer/reference@0.84.3", "@glimmer/reference@^0.84.3": - version "0.84.3" - resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.84.3.tgz#6420ad9c102633ac83939fd1b2457269d21fb632" - integrity sha512-lV+p/aWPVC8vUjmlvYVU7WQJsLh319SdXuAWoX/SE3pq340BJlAJiEcAc6q52y9JNhT57gMwtjMX96W5Xcx/qw== + "@glimmer/interfaces" "^0.88.1" + "@glimmer/manager" "^0.88.1" + "@glimmer/opcode-compiler" "^0.88.1" + "@glimmer/util" "^0.88.1" + "@glimmer/vm" "^0.88.1" + "@glimmer/wire-format" "^0.88.1" + +"@glimmer/reference@0.84.0", "@glimmer/reference@0.88.1", "@glimmer/reference@^0.84.3", "@glimmer/reference@^0.88.1": + version "0.88.1" + resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.88.1.tgz#0d373d76d8dd93cec04aa5903e57e21be4e6c265" + integrity sha512-1AenHdjFTsaExBddetd7HE7M3okR8x51WyS9ssSp0RNysn0myL3+uCm0vPqdmM7Ncyqfa1brhiqEktp9ZP/Oaw== dependencies: "@glimmer/env" "^0.1.7" - "@glimmer/global-context" "0.84.3" - "@glimmer/interfaces" "0.84.3" - "@glimmer/util" "0.84.3" - "@glimmer/validator" "0.84.3" + "@glimmer/global-context" "^0.88.1" + "@glimmer/interfaces" "^0.88.1" + "@glimmer/util" "^0.88.1" + "@glimmer/validator" "^0.88.1" -"@glimmer/runtime@0.84.0", "@glimmer/runtime@0.84.3", "@glimmer/runtime@>= 0.83.0": - version "0.84.3" - resolved "https://registry.yarnpkg.com/@glimmer/runtime/-/runtime-0.84.3.tgz#d84c02b21ac127fe3da85c7722371406beb6763a" - integrity sha512-LzlJbPDCUH/wjsgJ5kRImvOkqAImSyVRW37t34n/1Qd3v7ZoI8xVQg92lS+2kHZe030sT49ZwKkEIeVZiBreBw== +"@glimmer/runtime@0.84.0", "@glimmer/runtime@0.88.1", "@glimmer/runtime@>= 0.83.0": + version "0.88.1" + resolved "https://registry.yarnpkg.com/@glimmer/runtime/-/runtime-0.88.1.tgz#b74971a2b4ead8d490fc25d259c5db9ba414754e" + integrity sha512-rdaaTShtY2mD1g1unJhtwnWvvnE/XJ621LcJmeK5HPosNd7oXQx/F0hZ4oafqffe1mH4w0z9gNJ2PhV0ts5JqQ== dependencies: - "@glimmer/destroyable" "0.84.3" + "@glimmer/destroyable" "^0.88.1" "@glimmer/env" "0.1.7" - "@glimmer/global-context" "0.84.3" - "@glimmer/interfaces" "0.84.3" - "@glimmer/low-level" "0.78.2" - "@glimmer/owner" "0.84.3" - "@glimmer/program" "0.84.3" - "@glimmer/reference" "0.84.3" - "@glimmer/util" "0.84.3" - "@glimmer/validator" "0.84.3" - "@glimmer/vm" "0.84.3" - "@glimmer/wire-format" "0.84.3" - "@simple-dom/interface" "^1.4.0" + "@glimmer/global-context" "^0.88.1" + "@glimmer/interfaces" "^0.88.1" + "@glimmer/manager" "^0.88.1" + "@glimmer/owner" "^0.88.1" + "@glimmer/program" "^0.88.1" + "@glimmer/reference" "^0.88.1" + "@glimmer/util" "^0.88.1" + "@glimmer/validator" "^0.88.1" + "@glimmer/vm" "^0.88.1" + "@glimmer/wire-format" "^0.88.1" "@glimmer/syntax@0.84.0": version "0.84.0" @@ -1539,6 +1546,17 @@ "@handlebars/parser" "~2.0.0" simple-html-tokenizer "^0.5.11" +"@glimmer/syntax@^0.88.0": + version "0.88.0" + resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.88.0.tgz#26cbf1dac9b3d22397cb1697921331f6d7a81198" + integrity sha512-ncKgfaVcT/7wcAtT0WJzZuASODx0cx4qQ+vgWmyJD7WBDXT5ST0k3Z9+D0mJWQkThD4V9DV+dIFkrpOZiv6YPg== + dependencies: + "@glimmer/interfaces" "^0.88.0" + "@glimmer/util" "^0.88.0" + "@glimmer/wire-format" "^0.88.0" + "@handlebars/parser" "~2.0.0" + simple-html-tokenizer "^0.5.11" + "@glimmer/tracking@2.0.0-beta.21": version "2.0.0-beta.21" resolved "https://registry.yarnpkg.com/@glimmer/tracking/-/tracking-2.0.0-beta.21.tgz#f57419387c130b62dbac73b68c543cdd8fbb8ee4" @@ -1555,22 +1573,23 @@ "@glimmer/env" "^0.1.7" "@glimmer/validator" "^0.44.0" -"@glimmer/util@0.84.0", "@glimmer/util@0.84.3", "@glimmer/util@^0.44.0": - version "0.84.3" - resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.84.3.tgz#9ae0166982c0b48aa94b02d6ba8c2c81976ade4b" - integrity sha512-qFkh6s16ZSRuu2rfz3T4Wp0fylFj3HBsONGXQcrAdZjdUaIS6v3pNj6mecJ71qRgcym9Hbaq/7/fefIwECUiKw== +"@glimmer/util@0.84.0", "@glimmer/util@0.84.3", "@glimmer/util@0.88.1", "@glimmer/util@^0.44.0", "@glimmer/util@^0.88.0", "@glimmer/util@^0.88.1": + version "0.88.1" + resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.88.1.tgz#a9e8cf0be78c5dc0d433294c71101ba1af8433e5" + integrity sha512-PV/24+vBmsReR78UQXJlEHDblU6QBAeIJa8MwKhQoxSD6WgvQHP4KmX23rvlCz11GxApTwyPm/2qyp/SwVvX2A== dependencies: "@glimmer/env" "0.1.7" - "@glimmer/interfaces" "0.84.3" - "@simple-dom/interface" "^1.4.0" + "@glimmer/interfaces" "^0.88.1" -"@glimmer/validator@0.84.0", "@glimmer/validator@0.84.3", "@glimmer/validator@^0.44.0", "@glimmer/validator@^0.84.3": - version "0.84.3" - resolved "https://registry.yarnpkg.com/@glimmer/validator/-/validator-0.84.3.tgz#cd83b7f9ab78953f23cc11a32d83d7f729c54df2" - integrity sha512-RTBV4TokUB0vI31UC7ikpV7lOYpWUlyqaKV//pRC4pexYMlmqnVhkFrdiimB/R1XyNdUOQUmnIAcdic39NkbhQ== +"@glimmer/validator@0.84.0", "@glimmer/validator@0.88.1", "@glimmer/validator@^0.44.0", "@glimmer/validator@^0.84.3", "@glimmer/validator@^0.88.1": + version "0.88.1" + resolved "https://registry.yarnpkg.com/@glimmer/validator/-/validator-0.88.1.tgz#4dbe802a8e37a4350dc6f2d159db167d15474a19" + integrity sha512-E9vY4o80hJbSUussrKTmSGG7Ov8ofYxzSLOYkqqvT4MQt493qd9iS5uQDwTgDzxJrnH4jLuhFPMG+M/DiodIQQ== dependencies: "@glimmer/env" "^0.1.7" - "@glimmer/global-context" "0.84.3" + "@glimmer/global-context" "^0.88.1" + "@glimmer/interfaces" "^0.88.1" + "@glimmer/util" "^0.88.1" "@glimmer/vm-babel-plugins@0.83.1": version "0.83.1" @@ -1601,13 +1620,13 @@ "@glimmer/interfaces" "0.84.0" "@glimmer/util" "0.84.0" -"@glimmer/vm@0.84.3": - version "0.84.3" - resolved "https://registry.yarnpkg.com/@glimmer/vm/-/vm-0.84.3.tgz#45724ba7b4f90383de78a59071222bdc391ada98" - integrity sha512-3mBWvQLEbB8We2EwdmuALMT3zQEcE13ItfLJ0wxlSO2uj1uegeHat++mli8RMxeYNqex27DC+VuhHeWVve6Ngg== +"@glimmer/vm@^0.88.1": + version "0.88.1" + resolved "https://registry.yarnpkg.com/@glimmer/vm/-/vm-0.88.1.tgz#10284fa81fd79d5aea30f9c9c6f5d681b0690754" + integrity sha512-ZpLmelLN9P0mDywhxyxlXcqPVxIdQxOeFH3Cpx8QwplzIK2JPWK0XQcyl5kvaLY8FsPElQQ5cGpwH2YNRpHjCA== dependencies: - "@glimmer/interfaces" "0.84.3" - "@glimmer/util" "0.84.3" + "@glimmer/interfaces" "^0.88.1" + "@glimmer/util" "^0.88.1" "@glimmer/wire-format@0.84.0": version "0.84.0" @@ -1617,13 +1636,21 @@ "@glimmer/interfaces" "0.84.0" "@glimmer/util" "0.84.0" -"@glimmer/wire-format@0.84.3": - version "0.84.3" - resolved "https://registry.yarnpkg.com/@glimmer/wire-format/-/wire-format-0.84.3.tgz#d31ac85e5f51e67636efe9c5fbd8ae3d5097d8b5" - integrity sha512-aZVfQhqv4k7tTo2vwjy+b4mAxKt7cHH75JR3zAeCilimApa+yYTYUyY73NDNSUVbelgAlQ5s6vTiMSQ55WwVow== +"@glimmer/wire-format@^0.88.0": + version "0.88.0" + resolved "https://registry.yarnpkg.com/@glimmer/wire-format/-/wire-format-0.88.0.tgz#1f2380444ae9cb8b40c0234df5b3ca83e19bbd06" + integrity sha512-XOxNoWWt3b45SIsVcn4gT+KTwacuNX710PInSwPa3QaTFXrWp+DnjcJR3P8qe9PJ8+u/9mQFshMly3qhWsUhdA== dependencies: - "@glimmer/interfaces" "0.84.3" - "@glimmer/util" "0.84.3" + "@glimmer/interfaces" "^0.88.0" + "@glimmer/util" "^0.88.0" + +"@glimmer/wire-format@^0.88.1": + version "0.88.1" + resolved "https://registry.yarnpkg.com/@glimmer/wire-format/-/wire-format-0.88.1.tgz#75411def71a30ad4a3afaeb5a95d7cb9f8e22d9a" + integrity sha512-DPM2UiYRNzcWdOUrSa8/IFbWKovH+c2JPnbvtk04DpfQapU7+hteBj34coEN/pW3FJiP3WMvx/EuPfWROkeDsg== + dependencies: + "@glimmer/interfaces" "^0.88.1" + "@glimmer/util" "^0.88.1" "@glimmerx/babel-preset@^0.6.7": version "0.6.8"