diff --git a/bin/build-augmentations.mjs b/bin/build-augmentations.mjs index 6a08ba6bd..35d0d21d9 100644 --- a/bin/build-augmentations.mjs +++ b/bin/build-augmentations.mjs @@ -33,6 +33,8 @@ traverse(ast, { let augmentations = []; for (const element of elements) { + if (element === 'HTMLElement') continue; + augmentations.push(` interface ${element} { [GlintSymbol]: '${element}'; diff --git a/packages/template/-private/dsl/lib.dom.augmentation.d.ts b/packages/template/-private/dsl/lib.dom.augmentation.d.ts index 42ffe02c3..a851239c1 100644 --- a/packages/template/-private/dsl/lib.dom.augmentation.d.ts +++ b/packages/template/-private/dsl/lib.dom.augmentation.d.ts @@ -11,11 +11,6 @@ declare global { } - interface HTMLElement { - [GlintSymbol]: 'HTMLElement'; - } - - interface HTMLAreaElement { [GlintSymbol]: 'HTMLAreaElement'; } diff --git a/packages/template/__tests__/keywords/component.test.ts b/packages/template/__tests__/keywords/component.test.ts index 36dd5252d..63b6c7568 100644 --- a/packages/template/__tests__/keywords/component.test.ts +++ b/packages/template/__tests__/keywords/component.test.ts @@ -5,6 +5,16 @@ import TestComponent from '../test-component'; const componentKeyword = resolve({} as ComponentKeyword); +class WithElement extends TestComponent<{ + Element: HTMLElement; +}> {} + +// https://www.typescriptlang.org/play/?#code/JYWwDg9gTgLgBAbzgUwB5mQYxgFQJ4YDyAZnAL5zFQQhwDkaG2AtDAcnQNwBQ3jWudiQA8ACRwBZADIBRADbIQyAHYwAfAAoAlADoYEGahgqAJmMlSAIsABu8xSvXae-bPiLFz063YVLVmrr6hsbKZuLS9v5OWpxAA +expectTypeOf().toExtend(); + +const ElementType = emitComponent(resolve(WithElement)()).element; +expectTypeOf().toExtend(); + class StringComponent extends TestComponent<{ Args: { value: string }; Blocks: { default: [string] }; diff --git a/packages/template/package.json b/packages/template/package.json index 088e41f33..f3f8f766d 100644 --- a/packages/template/package.json +++ b/packages/template/package.json @@ -26,7 +26,7 @@ ], "devDependencies": { "@glimmer/component": "^1.1.2", - "expect-type": "^0.15.0", + "expect-type": "^1.2.1", "sums-up": "^2.1.0", "ember-source": "^6.2.0", "typescript": ">=5.6.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 742c8a3f4..fe97dda15 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -237,8 +237,8 @@ importers: specifier: ^6.2.0 version: 6.2.0(@glimmer/component@1.1.2) expect-type: - specifier: ^0.15.0 - version: 0.15.0 + specifier: ^1.2.1 + version: 1.2.1 html-element-attributes: specifier: ^3.3.0 version: 3.4.0 @@ -4590,6 +4590,10 @@ packages: resolution: {integrity: sha512-80F22aiJ3GLyVnS/B3HzgR6RelZVumzj9jkL0Rhz4h0xYbNW9PjlQz5h3J/SShErbXBc295vseR4/MIbVmUbeA==} engines: {node: '>=12.0.0'} + expect-type@1.2.1: + resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} + engines: {node: '>=12.0.0'} + expect@29.7.0: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -13748,6 +13752,8 @@ snapshots: expect-type@1.2.0: {} + expect-type@1.2.1: {} + expect@29.7.0: dependencies: '@jest/expect-utils': 29.7.0