diff --git a/docs/app/components/code-block.gts b/docs/app/components/code-block.gts index 2226ab5c..3d9e3bbc 100644 --- a/docs/app/components/code-block.gts +++ b/docs/app/components/code-block.gts @@ -26,9 +26,3 @@ export default class CodeBlock extends Component { } - -declare module '@glint/environment-ember-loose/registry' { - export default interface Registry { - CodeBlock: typeof CodeBlock; - } -} diff --git a/docs/app/components/code-inline.gts b/docs/app/components/code-inline.gts index 8803e247..efc2001d 100644 --- a/docs/app/components/code-inline.gts +++ b/docs/app/components/code-inline.gts @@ -55,9 +55,3 @@ export default class CodeInline extends Component { } - -declare module '@glint/environment-ember-loose/registry' { - export default interface Registry { - CodeInline: typeof CodeInline; - } -} diff --git a/docs/app/components/snippets/custom-position-1.gts b/docs/app/components/snippets/custom-position-1.gts index 04219bfc..2e16f9ed 100644 --- a/docs/app/components/snippets/custom-position-1.gts +++ b/docs/app/components/snippets/custom-position-1.gts @@ -7,7 +7,7 @@ import type { export default class extends Component { calculatePosition( - trigger: Element, + trigger: HTMLElement, content: HTMLElement, _destination: HTMLElement, { horizontalPosition, verticalPosition }: CalculatePositionOptions, diff --git a/docs/app/templates/public-pages.gts b/docs/app/templates/public-pages.gts index c0024538..06827fb9 100644 --- a/docs/app/templates/public-pages.gts +++ b/docs/app/templates/public-pages.gts @@ -32,7 +32,7 @@ export default class extends Component { } } - setBrandColor(color: string, dropdown: BasicDropdownDefaultBlock) { + setBrandColor(color: string, dropdown: BasicDropdownDefaultBlock<'span'>) { brands.forEach((klass) => document.body.classList.remove(klass)); document.body.classList.add(`${color}-brand`); dropdown.actions.close(); @@ -40,7 +40,7 @@ export default class extends Component { // Methods calculatePosition( - trigger: Element, + trigger: HTMLElement, content: HTMLElement, destination: HTMLElement, options: CalculatePositionOptions, diff --git a/docs/config/ember-cli-update.json b/docs/config/ember-cli-update.json index 2d41055c..af06a6a9 100644 --- a/docs/config/ember-cli-update.json +++ b/docs/config/ember-cli-update.json @@ -12,6 +12,7 @@ "isBaseBlueprint": true, "options": [ "--no-welcome", + "--pnpm", "--typescript" ] } diff --git a/docs/package.json b/docs/package.json index ce0af5ab..ff7a7d66 100644 --- a/docs/package.json +++ b/docs/package.json @@ -13,18 +13,18 @@ "scripts": { "build": "vite build", "format": "prettier . --cache --write", - "lint": "concurrently \"npm:lint:*(!fix)\" --names \"lint:\" --prefixColors auto", + "lint": "concurrently \"pnpm:lint:*(!fix)\" --names \"lint:\" --prefixColors auto", "lint:css": "stylelint \"**/*.css\" --allow-empty-input", "lint:css:fix": "concurrently \"pnpm:lint:css -- --fix\"", - "lint:fix": "concurrently \"npm:lint:*:fix\" --names \"fix:\" --prefixColors auto && npm run format", + "lint:fix": "concurrently \"pnpm:lint:*:fix\" --names \"fix:\" --prefixColors auto && npm run format", "lint:format": "prettier . --cache --check", "lint:hbs": "ember-template-lint .", "lint:hbs:fix": "ember-template-lint . --fix", "lint:js": "eslint . --cache", "lint:js:fix": "eslint . --fix", - "lint:types": "glint", + "lint:types": "ember-tsc --noEmit", "start": "vite", - "test": "concurrently \"npm:lint\" \"npm:test:*\" --names \"lint,test:\" --prefixColors auto", + "test": "concurrently \"pnpm:lint\" \"pnpm:test:*\" --names \"lint,test:\" --prefixColors auto", "test:ember": "vite build --mode development && ember test --path dist" }, "dependenciesMeta": { @@ -49,10 +49,8 @@ "@eslint/js": "^9.39.1", "@glimmer/component": "^2.0.0", "@glimmer/tracking": "^1.1.2", - "@glint/core": "^1.5.2", - "@glint/environment-ember-loose": "^1.5.2", - "@glint/environment-ember-template-imports": "^1.5.2", - "@glint/template": "1.5.2", + "@glint/ember-tsc": "^1.0.8", + "@glint/template": "^1.7.3", "@rollup/plugin-babel": "^6.1.0", "@tsconfig/ember": "^3.0.12", "@types/qunit": "^2.19.13", diff --git a/docs/tsconfig.json b/docs/tsconfig.json index 85763872..327e1b4c 100644 --- a/docs/tsconfig.json +++ b/docs/tsconfig.json @@ -1,8 +1,5 @@ { "extends": "@tsconfig/ember", - "glint": { - "environment": ["ember-loose", "ember-template-imports"] - }, "compilerOptions": { // The combination of `baseUrl` with `paths` allows Ember's classic package // layout, which is not resolvable with the Node resolution algorithm, to diff --git a/docs/types/global.d.ts b/docs/types/global.d.ts index 3429951e..47476d4c 100644 --- a/docs/types/global.d.ts +++ b/docs/types/global.d.ts @@ -1,20 +1 @@ -import '@glint/environment-ember-loose'; -import type EmberBasicDropdownRegistry from 'ember-basic-dropdown/template-registry'; - -export interface GetCodeSnippetHelperRegistry { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - [key: string]: any; -} - -export interface CodeBlockRegistry { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - [key: string]: any; -} - -declare module '@glint/environment-ember-loose/registry' { - export default interface Registry - extends - EmberBasicDropdownRegistry, - GetCodeSnippetHelperRegistry, - CodeBlockRegistry {} -} +import '@glint/ember-tsc/types'; diff --git a/ember-basic-dropdown/package.json b/ember-basic-dropdown/package.json index 2f107f3b..d31b53fe 100644 --- a/ember-basic-dropdown/package.json +++ b/ember-basic-dropdown/package.json @@ -54,7 +54,7 @@ "lint:hbs:fix": "ember-template-lint . --fix --no-error-on-unmatched-pattern", "lint:js": "eslint . --cache", "lint:js:fix": "eslint . --fix", - "lint:types": "glint", + "lint:types": "ember-tsc --noEmit", "prepack": "rollup --config", "start": "rollup --config --watch", "test": "echo 'A v2 addon does not have tests, run tests in test-app'" @@ -78,10 +78,8 @@ "@ember/test-helpers": "^5.4.1", "@embroider/addon-dev": "^8.1.2", "@eslint/js": "^9.39.1", - "@glint/core": "^1.5.2", - "@glint/environment-ember-loose": "^1.5.2", - "@glint/environment-ember-template-imports": "^1.5.2", - "@glint/template": "1.5.2", + "@glint/ember-tsc": "^1.0.8", + "@glint/template": "^1.7.3", "@glimmer/component": "^2.0.0", "@glimmer/tracking": "^1.1.2", "@rollup/plugin-babel": "^6.1.0", diff --git a/ember-basic-dropdown/rollup.config.mjs b/ember-basic-dropdown/rollup.config.mjs index 5f5a1f67..d69094c6 100644 --- a/ember-basic-dropdown/rollup.config.mjs +++ b/ember-basic-dropdown/rollup.config.mjs @@ -2,6 +2,11 @@ import { babel } from '@rollup/plugin-babel'; import { Addon } from '@embroider/addon-dev/rollup'; import sass from 'rollup-plugin-sass'; import postcss from 'postcss'; +import { fileURLToPath } from 'node:url'; +import { resolve, dirname } from 'node:path'; + +const rootDirectory = dirname(fileURLToPath(import.meta.url)); +const tsConfig = resolve(rootDirectory, './tsconfig.json'); const addon = new Addon({ srcDir: 'src', @@ -91,7 +96,10 @@ export default [ addon.gjs(), // Emit .d.ts declaration files - addon.declarations('declarations'), + addon.declarations( + 'declarations', + `pnpm ember-tsc --declaration --project ${tsConfig}`, + ), // addons are allowed to contain imports of .css files, which we want rollup // to leave alone and keep in the published output. diff --git a/ember-basic-dropdown/src/components/basic-dropdown-trigger.gts b/ember-basic-dropdown/src/components/basic-dropdown-trigger.gts index 9454e79c..fc09264a 100644 --- a/ember-basic-dropdown/src/components/basic-dropdown-trigger.gts +++ b/ember-basic-dropdown/src/components/basic-dropdown-trigger.gts @@ -1,6 +1,6 @@ import Component from '@glimmer/component'; import { action } from '@ember/object'; -import { element } from 'ember-element-helper'; +import { element, type ElementFromTagName } from 'ember-element-helper'; import { or } from 'ember-truth-helpers'; import { concat } from '@ember/helper'; import basicDropdownTriggerModifier from '../modifiers/basic-dropdown-trigger.ts'; @@ -9,8 +9,10 @@ import { fn } from '@ember/helper'; import type { Dropdown } from './basic-dropdown'; import type { HorizontalPosition, VerticalPosition } from '../types.ts'; -export interface BasicDropdownTriggerSignature { - Element: HTMLElement; +export interface BasicDropdownTriggerSignature< + T extends keyof HTMLElementTagNameMap = 'div', +> { + Element: ElementFromTagName; Args: { dropdown?: Dropdown; eventType?: 'click' | 'mousedown'; @@ -19,7 +21,7 @@ export interface BasicDropdownTriggerSignature { hPosition?: HorizontalPosition | null; defaultClass?: string; renderInPlace?: boolean; - htmlTag?: keyof HTMLElementTagNameMap | undefined; + htmlTag?: T | undefined; onBlur?: (dropdown?: Dropdown, event?: FocusEvent) => void; onClick?: (dropdown?: Dropdown, event?: MouseEvent) => void; onFocus?: (dropdown?: Dropdown, event?: FocusEvent) => void; @@ -36,7 +38,9 @@ export interface BasicDropdownTriggerSignature { }; } -export default class BasicDropdownTrigger extends Component { +export default class BasicDropdownTrigger< + T extends keyof HTMLElementTagNameMap, +> extends Component> { // Actions /** * Allows similar behavior to `ember-composable-helpers`' `optional` helper. @@ -59,9 +63,13 @@ export default class BasicDropdownTrigger extends Component {{#if @dropdown}} - {{#let (element (or @htmlTag "div")) as |OptionalTag|}} + {{#let (element this.tag) as |OptionalTag|}} {{! template-lint-disable no-pointer-down-event-binding }} =4.8.0' + typescript: '>=5.6.0' - '@glint/environment-ember-loose@1.5.2': - resolution: {integrity: sha512-AuYRwZbQZW13WMW9tmyYqSGHLBXbdXn+HqdRDAG1qHItnjON4uv6sJVQUrnadlMT3G2AVRjL6jtfnwHs3t2Kuw==} - peerDependencies: - '@glimmer/component': '>=1.1.2' - '@glint/template': ^1.5.2 - '@types/ember__array': ^4.0.2 - '@types/ember__component': ^4.0.10 - '@types/ember__controller': ^4.0.2 - '@types/ember__object': ^4.0.4 - '@types/ember__routing': ^4.0.11 - ember-cli-htmlbars: ^6.0.1 - ember-modifier: ^3.2.7 || ^4.0.0 - peerDependenciesMeta: - '@types/ember__array': - optional: true - '@types/ember__component': - optional: true - '@types/ember__controller': - optional: true - '@types/ember__object': - optional: true - '@types/ember__routing': - optional: true - ember-cli-htmlbars: - optional: true - ember-modifier: - optional: true - - '@glint/environment-ember-template-imports@1.5.2': - resolution: {integrity: sha512-f/asPRUr2YWtwYWlvl67JC6PIlihIiFnEtvESvMnblsDyJPpzJmVFGGlVujCOkajLwbkX9DDEw7fydn64He8Qw==} - peerDependencies: - '@glint/environment-ember-loose': ^1.5.2 - '@glint/template': ^1.5.2 - '@types/ember__component': ^4.0.10 - '@types/ember__helper': ^4.0.1 - '@types/ember__modifier': ^4.0.3 - '@types/ember__routing': ^4.0.12 - peerDependenciesMeta: - '@types/ember__component': - optional: true - '@types/ember__helper': - optional: true - '@types/ember__modifier': - optional: true - '@types/ember__routing': - optional: true - - '@glint/template@1.5.2': - resolution: {integrity: sha512-fA9FoHCmWsWkoOKWshsOQlS0WCAM7NwwoaeSTHuz5yHvBZmmtkgx3t2SPOTJs85/hWTNVzYC/Gthw7xDUR3BlQ==} + '@glint/template@1.7.3': + resolution: {integrity: sha512-ouB9HjLJ5kDnAhORLx43vTmGukm6uHg5hg+jAoiSlyifQdVINmXIkkGPGCD1HQ0WeIDZ/CmxH7aIZlIyI90AAw==} '@handlebars/parser@2.0.0': resolution: {integrity: sha512-EP9uEDZv/L5Qh9IWuMUGJRfwhXJ4h1dqKTT4/3+tY0eu7sPis7xh23j61SYUnNF4vqCQvvUXpDo9Bh/+q1zASA==} @@ -2440,6 +2366,32 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@volar/kit@2.4.23': + resolution: {integrity: sha512-YuUIzo9zwC2IkN7FStIcVl1YS9w5vkSFEZfPvnu0IbIMaR9WHhc9ZxvlT+91vrcSoRY469H2jwbrGqpG7m1KaQ==} + peerDependencies: + typescript: '*' + + '@volar/language-core@2.4.23': + resolution: {integrity: sha512-hEEd5ET/oSmBC6pi1j6NaNYRWoAiDhINbT8rmwtINugR39loROSlufGdYMF9TaKGfz+ViGs1Idi3mAhnuPcoGQ==} + + '@volar/language-server@2.4.23': + resolution: {integrity: sha512-k0iO+tybMGMMyrNdWOxgFkP0XJTdbH0w+WZlM54RzJU3WZSjHEupwL30klpM7ep4FO6qyQa03h+VcGHD4Q8gEg==} + + '@volar/language-service@2.4.23': + resolution: {integrity: sha512-h5mU9DZ/6u3LCB9xomJtorNG6awBNnk9VuCioGsp6UtFiM8amvS5FcsaC3dabdL9zO0z+Gq9vIEMb/5u9K6jGQ==} + + '@volar/source-map@2.4.23': + resolution: {integrity: sha512-Z1Uc8IB57Lm6k7q6KIDu/p+JWtf3xsXJqAX/5r18hYOTpJyBn0KXUR8oTJ4WFYOcDzWC9n3IflGgHowx6U6z9Q==} + + '@volar/test-utils@2.4.23': + resolution: {integrity: sha512-ZF3Ejtv6mfwXHuR6aZGsh1ksvAdSZUfWKGacXa9S+Mnc3MpSPgxzHN3PwdXGt26HfRDWGuykJc8y6lVs20dDKw==} + + '@volar/typescript@2.4.23': + resolution: {integrity: sha512-lAB5zJghWxVPqfcStmAP1ZqQacMpe90UrP5RJ3arDyrhy4aCUQqmxPPLB2PWDKugvylmO41ljK7vZ+t6INMTag==} + + '@vscode/l10n@0.0.18': + resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} + '@warp-drive/build-config@5.8.0': resolution: {integrity: sha512-p0Cgf/9qO9Ocv33RbsHhKTyQpiw+8FKHFOSvruAUrjtZCXzniqfnzLDv12XtufV7HIKe2aN5HCip6r5Q+xk6fg==} @@ -3413,6 +3365,9 @@ packages: resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} engines: {node: '>= 0.8.0'} + computeds@0.0.1: + resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -6563,6 +6518,9 @@ packages: resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} engines: {node: '>=0.10.0'} + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} @@ -6957,6 +6915,9 @@ packages: resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} engines: {node: '>=0.10'} + request-light@0.7.0: + resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} + require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -7986,6 +7947,12 @@ packages: typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + typesafe-path@0.2.2: + resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==} + + typescript-auto-import-cache@0.3.6: + resolution: {integrity: sha512-RpuHXrknHdVdK7wv/8ug3Fr0WNsNi5l5aB8MYYuXhq2UH5lnEB1htJ1smhtD5VeCsGr2p8mUDtd83LCQDFVgjQ==} + typescript-eslint@8.48.1: resolution: {integrity: sha512-FbOKN1fqNoXp1hIl5KYpObVrp0mCn+CLgn479nmu2IsRMrx2vyv74MmsBLVlhg8qVwNFGbXSp8fh1zp8pEoC2A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -8207,23 +8174,45 @@ packages: yaml: optional: true - vscode-jsonrpc@8.1.0: - resolution: {integrity: sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==} + volar-service-html@0.0.64: + resolution: {integrity: sha512-5xknMYKmZBFzp2399RlsnGce25PfNu9ViXa1s63Q8NP6xeXcF3lInFsV+1o2DWBoXZdnXcuRvWOA+K+JIZLEcA==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-typescript@0.0.65: + resolution: {integrity: sha512-zPJuLIMs7lkQCvL+Rza8+3/EIoXEIkX8+DL7bNNfPgnbalbvRDhqWLVMJ6Zk3pINjLJafDqyhSbw8srfkUv97w==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + vscode-html-languageservice@5.6.1: + resolution: {integrity: sha512-5Mrqy5CLfFZUgkyhNZLA1Ye5g12Cb/v6VM7SxUzZUaRKWMDz4md+y26PrfRTSU0/eQAl3XpO9m2og+GGtDMuaA==} + + vscode-jsonrpc@8.2.0: + resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} engines: {node: '>=14.0.0'} - vscode-languageserver-protocol@3.17.3: - resolution: {integrity: sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==} + vscode-languageserver-protocol@3.17.5: + resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} vscode-languageserver-textdocument@1.0.12: resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} - vscode-languageserver-types@3.17.3: - resolution: {integrity: sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==} + vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} - vscode-languageserver@8.1.0: - resolution: {integrity: sha512-eUt8f1z2N2IEUDBsKaNapkz7jl5QpskN2Y0G01T/ItMxBxw1fJwvtySGB9QMecatne8jFIWJGWI61dWjyTLQsw==} + vscode-languageserver@9.0.1: + resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} hasBin: true + vscode-nls@5.2.0: + resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} + vscode-uri@3.1.0: resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} @@ -9374,11 +9363,11 @@ snapshots: '@ember/string@4.0.1': {} - '@ember/test-helpers@5.4.1(@babel/core@7.28.5)(@glint/template@1.5.2)': + '@ember/test-helpers@5.4.1(@babel/core@7.28.5)(@glint/template@1.7.3)': dependencies: - '@ember/test-waiters': 4.1.1(@glint/template@1.5.2) + '@ember/test-waiters': 4.1.1(@glint/template@1.7.3) '@embroider/addon-shim': 1.10.2 - '@embroider/macros': 1.19.5(@glint/template@1.5.2) + '@embroider/macros': 1.19.5(@glint/template@1.7.3) '@simple-dom/interface': 1.4.0 decorator-transforms: 2.3.0(@babel/core@7.28.5) dom-element-descriptors: 0.5.1 @@ -9387,17 +9376,17 @@ snapshots: - '@glint/template' - supports-color - '@ember/test-waiters@4.1.1(@glint/template@1.5.2)': + '@ember/test-waiters@4.1.1(@glint/template@1.7.3)': dependencies: '@embroider/addon-shim': 1.10.2 - '@embroider/macros': 1.19.5(@glint/template@1.5.2) + '@embroider/macros': 1.19.5(@glint/template@1.7.3) transitivePeerDependencies: - '@glint/template' - supports-color - '@embroider/addon-dev@8.1.2(@glint/template@1.5.2)(rollup@4.53.3)': + '@embroider/addon-dev@8.1.2(@glint/template@1.7.3)(rollup@4.53.3)': dependencies: - '@embroider/core': 4.4.0(@glint/template@1.5.2) + '@embroider/core': 4.4.0(@glint/template@1.7.3) '@rollup/pluginutils': 5.3.0(rollup@4.53.3) content-tag: 3.1.3 execa: 5.1.1 @@ -9424,7 +9413,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@embroider/compat@4.1.11(@embroider/core@4.4.0(@glint/template@1.5.2))(@glint/template@1.5.2)': + '@embroider/compat@4.1.11(@embroider/core@4.4.0(@glint/template@1.7.3))(@glint/template@1.7.3)': dependencies: '@babel/code-frame': 7.27.1 '@babel/core': 7.28.5 @@ -9435,8 +9424,8 @@ snapshots: '@babel/preset-env': 7.28.5(@babel/core@7.28.5) '@babel/runtime': 7.28.4 '@babel/traverse': 7.28.5 - '@embroider/core': 4.4.0(@glint/template@1.5.2) - '@embroider/macros': 1.19.5(@glint/template@1.5.2) + '@embroider/core': 4.4.0(@glint/template@1.7.3) + '@embroider/macros': 1.19.5(@glint/template@1.7.3) '@types/babel__code-frame': 7.0.6 assert-never: 1.4.0 babel-import-util: 3.0.1 @@ -9479,12 +9468,12 @@ snapshots: '@embroider/config-meta-loader@1.0.0': {} - '@embroider/core@4.4.0(@glint/template@1.5.2)': + '@embroider/core@4.4.0(@glint/template@1.7.3)': dependencies: '@babel/core': 7.28.5 '@babel/parser': 7.28.5 '@babel/traverse': 7.28.5 - '@embroider/macros': 1.19.5(@glint/template@1.5.2) + '@embroider/macros': 1.19.5(@glint/template@1.7.3) '@embroider/reverse-exports': 0.2.0 '@embroider/shared-internals': 3.0.1 assert-never: 1.4.0 @@ -9515,7 +9504,7 @@ snapshots: - supports-color - utf-8-validate - '@embroider/macros@1.19.5(@glint/template@1.5.2)': + '@embroider/macros@1.19.5(@glint/template@1.7.3)': dependencies: '@embroider/shared-internals': 3.0.1 assert-never: 1.4.0 @@ -9526,7 +9515,7 @@ snapshots: resolve: 1.22.11 semver: 7.7.3 optionalDependencies: - '@glint/template': 1.5.2 + '@glint/template': 1.7.3 transitivePeerDependencies: - supports-color @@ -9575,11 +9564,11 @@ snapshots: lodash: 4.17.21 resolve: 1.22.11 - '@embroider/vite@1.4.4(@embroider/core@4.4.0(@glint/template@1.5.2))(@glint/template@1.5.2)(rollup@4.53.3)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.94.2)(terser@5.44.1)(yaml@2.8.2))': + '@embroider/vite@1.4.4(@embroider/core@4.4.0(@glint/template@1.7.3))(@glint/template@1.7.3)(rollup@4.53.3)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.94.2)(terser@5.44.1)(yaml@2.8.2))': dependencies: '@babel/core': 7.28.5 - '@embroider/core': 4.4.0(@glint/template@1.5.2) - '@embroider/macros': 1.19.5(@glint/template@1.5.2) + '@embroider/core': 4.4.0(@glint/template@1.7.3) + '@embroider/macros': 1.19.5(@glint/template@1.7.3) '@embroider/reverse-exports': 0.2.0 '@rollup/pluginutils': 5.3.0(rollup@4.53.3) assert-never: 1.4.0 @@ -9764,10 +9753,6 @@ snapshots: '@glimmer/global-context@0.93.4': {} - '@glimmer/interfaces@0.84.3': - dependencies: - '@simple-dom/interface': 1.4.0 - '@glimmer/interfaces@0.94.6': dependencies: '@simple-dom/interface': 1.4.0 @@ -9885,13 +9870,6 @@ snapshots: '@glimmer/validator': 0.95.0 '@glimmer/vm': 0.94.8 - '@glimmer/syntax@0.84.3': - dependencies: - '@glimmer/interfaces': 0.84.3 - '@glimmer/util': 0.84.3 - '@handlebars/parser': 2.0.0 - simple-html-tokenizer: 0.5.11 - '@glimmer/syntax@0.94.9': dependencies: '@glimmer/interfaces': 0.94.6 @@ -9913,12 +9891,6 @@ snapshots: '@glimmer/env': 0.1.7 '@glimmer/validator': 0.44.0 - '@glimmer/util@0.84.3': - dependencies: - '@glimmer/env': 0.1.7 - '@glimmer/interfaces': 0.84.3 - '@simple-dom/interface': 1.4.0 - '@glimmer/util@0.94.8': dependencies: '@glimmer/interfaces': 0.94.6 @@ -9955,36 +9927,34 @@ snapshots: dependencies: '@glimmer/interfaces': 0.94.6 - '@glint/core@1.5.2(typescript@5.9.3)': + '@glint/ember-tsc@1.0.8(typescript@5.9.3)': dependencies: - '@glimmer/syntax': 0.84.3 + '@glimmer/syntax': 0.95.0 + '@glint/template': 1.7.3 + '@volar/kit': 2.4.23(typescript@5.9.3) + '@volar/language-core': 2.4.23 + '@volar/language-server': 2.4.23 + '@volar/language-service': 2.4.23 + '@volar/source-map': 2.4.23 + '@volar/test-utils': 2.4.23 + '@volar/typescript': 2.4.23 + computeds: 0.0.1 + content-tag: 3.1.3 escape-string-regexp: 4.0.0 semver: 7.7.3 silent-error: 1.1.1 typescript: 5.9.3 uuid: 8.3.2 - vscode-languageserver: 8.1.0 + volar-service-html: 0.0.64(@volar/language-service@2.4.23) + volar-service-typescript: 0.0.65(@volar/language-service@2.4.23) + vscode-languageserver-protocol: 3.17.5 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.1.0 yargs: 17.7.2 transitivePeerDependencies: - supports-color - '@glint/environment-ember-loose@1.5.2(@glimmer/component@2.0.0)(@glint/template@1.5.2)(ember-cli-htmlbars@6.3.0)(ember-modifier@4.2.2(@babel/core@7.28.5))': - dependencies: - '@glimmer/component': 2.0.0 - '@glint/template': 1.5.2 - optionalDependencies: - ember-cli-htmlbars: 6.3.0 - ember-modifier: 4.2.2(@babel/core@7.28.5) - - '@glint/environment-ember-template-imports@1.5.2(@glint/environment-ember-loose@1.5.2(@glimmer/component@2.0.0)(@glint/template@1.5.2)(ember-cli-htmlbars@6.3.0)(ember-modifier@4.2.2(@babel/core@7.28.5)))(@glint/template@1.5.2)': - dependencies: - '@glint/environment-ember-loose': 1.5.2(@glimmer/component@2.0.0)(@glint/template@1.5.2)(ember-cli-htmlbars@6.3.0)(ember-modifier@4.2.2(@babel/core@7.28.5)) - '@glint/template': 1.5.2 - content-tag: 2.0.3 - - '@glint/template@1.5.2': {} + '@glint/template@1.7.3': {} '@handlebars/parser@2.0.0': {} @@ -10774,10 +10744,59 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@warp-drive/build-config@5.8.0(@babel/core@7.28.5)(@glint/template@1.5.2)': + '@volar/kit@2.4.23(typescript@5.9.3)': + dependencies: + '@volar/language-service': 2.4.23 + '@volar/typescript': 2.4.23 + typesafe-path: 0.2.2 + typescript: 5.9.3 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.1.0 + + '@volar/language-core@2.4.23': + dependencies: + '@volar/source-map': 2.4.23 + + '@volar/language-server@2.4.23': + dependencies: + '@volar/language-core': 2.4.23 + '@volar/language-service': 2.4.23 + '@volar/typescript': 2.4.23 + path-browserify: 1.0.1 + request-light: 0.7.0 + vscode-languageserver: 9.0.1 + vscode-languageserver-protocol: 3.17.5 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.1.0 + + '@volar/language-service@2.4.23': + dependencies: + '@volar/language-core': 2.4.23 + vscode-languageserver-protocol: 3.17.5 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.1.0 + + '@volar/source-map@2.4.23': {} + + '@volar/test-utils@2.4.23': + dependencies: + '@volar/language-core': 2.4.23 + '@volar/language-server': 2.4.23 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.1.0 + + '@volar/typescript@2.4.23': + dependencies: + '@volar/language-core': 2.4.23 + path-browserify: 1.0.1 + vscode-uri: 3.1.0 + + '@vscode/l10n@0.0.18': {} + + '@warp-drive/build-config@5.8.0(@babel/core@7.28.5)(@glint/template@1.7.3)': dependencies: '@embroider/addon-shim': 1.10.2 - '@embroider/macros': 1.19.5(@glint/template@1.5.2) + '@embroider/macros': 1.19.5(@glint/template@1.7.3) babel-import-util: 2.1.1 babel-plugin-debug-macros: 2.0.0(@babel/core@7.28.5) semver: 7.7.3 @@ -10786,20 +10805,20 @@ snapshots: - '@glint/template' - supports-color - '@warp-drive/core@5.8.0(@babel/core@7.28.5)(@glint/template@1.5.2)': + '@warp-drive/core@5.8.0(@babel/core@7.28.5)(@glint/template@1.7.3)': dependencies: - '@embroider/macros': 1.19.5(@glint/template@1.5.2) - '@warp-drive/build-config': 5.8.0(@babel/core@7.28.5)(@glint/template@1.5.2) + '@embroider/macros': 1.19.5(@glint/template@1.7.3) + '@warp-drive/build-config': 5.8.0(@babel/core@7.28.5)(@glint/template@1.7.3) transitivePeerDependencies: - '@babel/core' - '@glint/template' - supports-color - '@warp-drive/ember@5.8.0(@babel/core@7.28.5)(@ember/test-waiters@4.1.1(@glint/template@1.5.2))(@glint/template@1.5.2)': + '@warp-drive/ember@5.8.0(@babel/core@7.28.5)(@ember/test-waiters@4.1.1(@glint/template@1.7.3))(@glint/template@1.7.3)': dependencies: - '@ember/test-waiters': 4.1.1(@glint/template@1.5.2) - '@embroider/macros': 1.19.5(@glint/template@1.5.2) - '@warp-drive/core': 5.8.0(@babel/core@7.28.5)(@glint/template@1.5.2) + '@ember/test-waiters': 4.1.1(@glint/template@1.7.3) + '@embroider/macros': 1.19.5(@glint/template@1.7.3) + '@warp-drive/core': 5.8.0(@babel/core@7.28.5)(@glint/template@1.7.3) transitivePeerDependencies: - '@babel/core' - '@glint/template' @@ -12141,6 +12160,8 @@ snapshots: transitivePeerDependencies: - supports-color + computeds@0.0.1: {} + concat-map@0.0.1: {} concurrently@9.2.1: @@ -12507,7 +12528,7 @@ snapshots: electron-to-chromium@1.5.266: {} - ember-auto-import@2.12.0(@glint/template@1.5.2)(webpack@5.103.0): + ember-auto-import@2.12.0(@glint/template@1.7.3)(webpack@5.103.0): dependencies: '@babel/core': 7.28.5 '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.28.5) @@ -12515,7 +12536,7 @@ snapshots: '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.28.5) '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.28.5) '@babel/preset-env': 7.28.5(@babel/core@7.28.5) - '@embroider/macros': 1.19.5(@glint/template@1.5.2) + '@embroider/macros': 1.19.5(@glint/template@1.7.3) '@embroider/reverse-exports': 0.2.0 '@embroider/shared-internals': 2.9.2 babel-loader: 8.4.1(@babel/core@7.28.5)(webpack@5.103.0) @@ -12958,7 +12979,7 @@ snapshots: - walrus - whiskers - ember-concurrency@5.1.0(@babel/core@7.28.5)(@glint/template@1.5.2): + ember-concurrency@5.1.0(@babel/core@7.28.5)(@glint/template@1.7.3): dependencies: '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 @@ -12966,7 +12987,7 @@ snapshots: '@embroider/addon-shim': 1.10.2 decorator-transforms: 1.2.1(@babel/core@7.28.5) optionalDependencies: - '@glint/template': 1.5.2 + '@glint/template': 1.7.3 transitivePeerDependencies: - '@babel/core' - supports-color @@ -13015,11 +13036,11 @@ snapshots: transitivePeerDependencies: - supports-color - ember-qunit@9.0.4(@ember/test-helpers@5.4.1(@babel/core@7.28.5)(@glint/template@1.5.2))(@glint/template@1.5.2)(qunit@2.24.3): + ember-qunit@9.0.4(@ember/test-helpers@5.4.1(@babel/core@7.28.5)(@glint/template@1.7.3))(@glint/template@1.7.3)(qunit@2.24.3): dependencies: - '@ember/test-helpers': 5.4.1(@babel/core@7.28.5)(@glint/template@1.5.2) + '@ember/test-helpers': 5.4.1(@babel/core@7.28.5)(@glint/template@1.7.3) '@embroider/addon-shim': 1.10.2 - '@embroider/macros': 1.19.5(@glint/template@1.5.2) + '@embroider/macros': 1.19.5(@glint/template@1.7.3) qunit: 2.24.3 qunit-theme-ember: 1.0.0 transitivePeerDependencies: @@ -16176,6 +16197,8 @@ snapshots: pascalcase@0.1.1: {} + path-browserify@1.0.1: {} + path-exists@3.0.0: {} path-exists@4.0.0: {} @@ -16586,6 +16609,8 @@ snapshots: repeat-string@1.6.1: {} + request-light@0.7.0: {} + require-directory@2.1.1: {} require-from-string@2.0.2: {} @@ -17889,6 +17914,12 @@ snapshots: dependencies: is-typedarray: 1.0.0 + typesafe-path@0.2.2: {} + + typescript-auto-import-cache@0.3.6: + dependencies: + semver: 7.7.3 + typescript-eslint@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3): dependencies: '@typescript-eslint/eslint-plugin': 8.48.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) @@ -18075,20 +18106,48 @@ snapshots: terser: 5.44.1 yaml: 2.8.2 - vscode-jsonrpc@8.1.0: {} + volar-service-html@0.0.64(@volar/language-service@2.4.23): + dependencies: + vscode-html-languageservice: 5.6.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.1.0 + optionalDependencies: + '@volar/language-service': 2.4.23 + + volar-service-typescript@0.0.65(@volar/language-service@2.4.23): + dependencies: + path-browserify: 1.0.1 + semver: 7.7.3 + typescript-auto-import-cache: 0.3.6 + vscode-languageserver-textdocument: 1.0.12 + vscode-nls: 5.2.0 + vscode-uri: 3.1.0 + optionalDependencies: + '@volar/language-service': 2.4.23 + + vscode-html-languageservice@5.6.1: + dependencies: + '@vscode/l10n': 0.0.18 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.1.0 + + vscode-jsonrpc@8.2.0: {} - vscode-languageserver-protocol@3.17.3: + vscode-languageserver-protocol@3.17.5: dependencies: - vscode-jsonrpc: 8.1.0 - vscode-languageserver-types: 3.17.3 + vscode-jsonrpc: 8.2.0 + vscode-languageserver-types: 3.17.5 vscode-languageserver-textdocument@1.0.12: {} - vscode-languageserver-types@3.17.3: {} + vscode-languageserver-types@3.17.5: {} - vscode-languageserver@8.1.0: + vscode-languageserver@9.0.1: dependencies: - vscode-languageserver-protocol: 3.17.3 + vscode-languageserver-protocol: 3.17.5 + + vscode-nls@5.2.0: {} vscode-uri@3.1.0: {} diff --git a/test-app/app/components/shadow-root.gts b/test-app/app/components/shadow-root.gts index 2042b8f8..59a9fd40 100644 --- a/test-app/app/components/shadow-root.gts +++ b/test-app/app/components/shadow-root.gts @@ -52,9 +52,3 @@ export default class ShadowRoot extends Component<{ {{/if}} } - -declare module '@glint/environment-ember-loose/registry' { - export default interface Registry { - ShadowRoot: typeof ShadowRoot; - } -} diff --git a/test-app/app/components/shadow.gts b/test-app/app/components/shadow.gts index e06811c6..823090fe 100644 --- a/test-app/app/components/shadow.gts +++ b/test-app/app/components/shadow.gts @@ -37,9 +37,3 @@ export default class Shadow extends Component<{ {{/if}} } - -declare module '@glint/environment-ember-loose/registry' { - export default interface Registry { - Shadow: typeof Shadow; - } -} diff --git a/test-app/package.json b/test-app/package.json index b82786c9..376e008d 100644 --- a/test-app/package.json +++ b/test-app/package.json @@ -22,7 +22,7 @@ "lint:hbs:fix": "ember-template-lint . --fix", "lint:js": "eslint . --cache", "lint:js:fix": "eslint . --fix", - "lint:types": "glint", + "lint:types": "ember-tsc --noEmit", "start": "ember serve", "test": "concurrently \"pnpm:lint\" \"pnpm:test:*\" --names \"lint,test:\" --prefixColors auto", "test:ember": "ember test", @@ -46,9 +46,8 @@ "@eslint/js": "^9.39.1", "@glimmer/component": "^2.0.0", "@glimmer/tracking": "^1.1.2", - "@glint/environment-ember-loose": "^1.5.2", - "@glint/environment-ember-template-imports": "^1.5.2", - "@glint/template": "1.5.2", + "@glint/ember-tsc": "^1.0.8", + "@glint/template": "^1.7.3", "@tsconfig/ember": "^3.0.12", "@types/qunit": "^2.19.13", "@types/rsvp": "^4.0.9", diff --git a/test-app/tests/integration/components/basic-dropdown-test.gts b/test-app/tests/integration/components/basic-dropdown-test.gts index b873b9ba..7c46bc96 100644 --- a/test-app/tests/integration/components/basic-dropdown-test.gts +++ b/test-app/tests/integration/components/basic-dropdown-test.gts @@ -1326,13 +1326,15 @@ module('Integration | Component | basic-dropdown', function (hooks) { await render(