From ddf7504ca4e82666a2363aecf5c28ae6fcea3d84 Mon Sep 17 00:00:00 2001 From: Patrick Pircher Date: Fri, 5 Jul 2024 18:19:54 +0200 Subject: [PATCH] fix typing (#70) --- ember-routable-component/src/index.ts | 47 +- ember-routable-component/tsconfig.json | 5 +- package.json | 18 +- pnpm-lock.yaml | 621 ++++++------------ test-app/app/router.ts | 2 +- test-app/app/routes/component-works.gts | 11 +- test-app/app/routes/controller-works.gts | 10 +- test-app/app/routes/gjs-template-works.gjs | 4 +- test-app/app/routes/gts-template-works.gts | 4 +- test-app/app/routes/model-works.gts | 13 +- test-app/app/routes/outlet-works.gts | 13 +- .../app/routes/outlet-works/sub-route.gts | 4 +- test-app/app/routes/sub-route/index.gts | 4 +- test-app/package.json | 14 +- test-app/tests/helpers/index.ts | 2 +- 15 files changed, 271 insertions(+), 501 deletions(-) diff --git a/ember-routable-component/src/index.ts b/ember-routable-component/src/index.ts index 8e05fb3..1734b2a 100644 --- a/ember-routable-component/src/index.ts +++ b/ember-routable-component/src/index.ts @@ -1,11 +1,14 @@ import Route from '@ember/routing/route'; import Component from '@glimmer/component'; import type { TemplateOnlyComponent } from '@ember/component/template-only'; -import Controller from '@ember/controller'; +import type Controller from '@ember/controller'; -export interface Signature> { +export interface Signature< + T = unknown, + C extends Controller | unknown = Controller, +> { Args: { - controller: Controller; + controller: C; model: T; }; Blocks: { @@ -14,17 +17,26 @@ export interface Signature> { }; } -export default function RoutableComponentRoute< - Model = unknown, - Controller extends typeof Controller = typeof Controller, ->( - Component: TemplateOnlyComponent>, -): typeof Route; +type GetModel = T extends Controller ? Model : T; +type GetController = T extends Controller ? T : Controller; + +type GetSignature = Signature, GetController>; + +export default function RoutableComponentRoute( + Component: TemplateOnlyComponent>, +): typeof Route>; + +export default function RoutableComponentRoute( + component: typeof Component>, +): typeof Route>; -export default function RoutableComponentRoute< - Model = unknown, - Controller extends typeof Controller = typeof Controller, ->(Component: Component>): typeof Route; +export default function RoutableComponentRoute( + component: Component, +): typeof Route; + +export default function RoutableComponentRoute( + component: TemplateOnlyComponent, +): typeof Route; export default function RoutableComponentRoute(Component: any) { return class Rout extends Route { @@ -43,7 +55,8 @@ export default function RoutableComponentRoute(Component: any) { }; } -export class RoutableComponent< - T = unknown, - Controller extends typeof Controller = typeof Controller, -> extends Component> {} +export class RoutableComponent extends Component< + GetSignature +> {} + +export type RTOC = TemplateOnlyComponent>; diff --git a/ember-routable-component/tsconfig.json b/ember-routable-component/tsconfig.json index cc70e9c..e08ad26 100644 --- a/ember-routable-component/tsconfig.json +++ b/ember-routable-component/tsconfig.json @@ -7,6 +7,9 @@ "compilerOptions": { "allowJs": true, "allowImportingTsExtensions": true, - "declarationDir": "declarations" + "declarationDir": "declarations", + "declaration": true, + "emitDeclarationOnly": true, + "noEmit": false } } diff --git a/package.json b/package.json index b62909d..a179aa5 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Patrick Pircher", "scripts": { "build": "pnpm --filter ember-routable-component run build", - "lint": "pnpm --filter * run lint", + "lint": "pnpm --filter ember-routable-component --filter test-app run lint", "lint:fix": "pnpm --filter * run lint:fix", "prepare": "pnpm build", "start": "concurrently 'npm:start:*' --restart-after 5000 --prefix-colors cyan,white,yellow", @@ -19,13 +19,25 @@ }, "devDependencies": { "@glint/core": "^1.4.0", - "@glint/environment-ember-loose": "^1.3.0", - "@glint/environment-ember-template-imports": "^1.3.0", + "@glint/environment-ember-loose": "^1.4.0", + "@glint/environment-ember-template-imports": "^1.4.0", "@glint/template": "^1.4.0", "concurrently": "^8.2.2", "prettier": "^3.3.2", "prettier-plugin-ember-template-tag": "^2.0.1", "release-plan": "^0.9.0", "typescript": "^5.5.3" + }, + "workspaces": [ + "ember-routable-component", + "test-app" + ], + "pnpm": { + "overrides": { + "@glint/core": "^1.4.1-unstable.e8d1c9a", + "@glint/environment-ember-loose": "^1.4.1-unstable.e8d1c9a", + "@glint/environment-ember-template-imports": "^1.4.1-unstable.e8d1c9a", + "ember-eslint-parser": "^0.4.0" + } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a15eab1..db6c3f6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,12 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + '@glint/core': ^1.4.1-unstable.e8d1c9a + '@glint/environment-ember-loose': ^1.4.1-unstable.e8d1c9a + '@glint/environment-ember-template-imports': ^1.4.1-unstable.e8d1c9a + ember-eslint-parser: ^0.4.0 + importers: .: @@ -13,14 +19,14 @@ importers: version: 2.4.0 devDependencies: '@glint/core': - specifier: ^1.4.0 - version: 1.4.0(typescript@5.5.3) + specifier: ^1.4.1-unstable.e8d1c9a + version: 1.4.1-unstable.ff9ea6c(typescript@5.5.3) '@glint/environment-ember-loose': - specifier: ^1.3.0 - version: 1.4.0(@glimmer/component@1.1.2)(@glint/template@1.4.0)(ember-cli-htmlbars@6.3.0)(ember-modifier@4.2.0) + specifier: ^1.4.1-unstable.e8d1c9a + version: 1.4.1-unstable.ff9ea6c(@glimmer/component@1.1.2)(@glint/template@1.4.0)(ember-cli-htmlbars@6.3.0)(ember-modifier@4.2.0) '@glint/environment-ember-template-imports': - specifier: ^1.3.0 - version: 1.4.0(@glint/environment-ember-loose@1.4.0)(@glint/template@1.4.0) + specifier: ^1.4.1-unstable.e8d1c9a + version: 1.4.1-unstable.ff9ea6c(@glint/environment-ember-loose@1.4.1-unstable.ff9ea6c)(@glint/template@1.4.0) '@glint/template': specifier: ^1.4.0 version: 1.4.0 @@ -71,14 +77,14 @@ importers: specifier: ^1.1.2 version: 1.1.2(@babel/core@7.24.7) '@glint/core': - specifier: ^1.4.0 - version: 1.4.0(typescript@5.5.3) + specifier: ^1.4.1-unstable.e8d1c9a + version: 1.4.1-unstable.ff9ea6c(typescript@5.5.3) '@glint/environment-ember-loose': - specifier: ^1.3.0 - version: 1.4.0(@glimmer/component@1.1.2)(@glint/template@1.4.0)(ember-cli-htmlbars@6.3.0)(ember-modifier@4.2.0) + specifier: ^1.4.1-unstable.e8d1c9a + version: 1.4.1-unstable.ff9ea6c(@glimmer/component@1.1.2)(@glint/template@1.4.0)(ember-cli-htmlbars@6.3.0)(ember-modifier@4.2.0) '@glint/environment-ember-template-imports': - specifier: ^1.3.0 - version: 1.4.0(@glint/environment-ember-loose@1.4.0)(@glint/template@1.4.0) + specifier: ^1.4.1-unstable.e8d1c9a + version: 1.4.1-unstable.ff9ea6c(@glint/environment-ember-loose@1.4.1-unstable.ff9ea6c)(@glint/template@1.4.0) '@glint/template': specifier: ^1.4.0 version: 1.4.0 @@ -168,14 +174,14 @@ importers: specifier: ^1.1.2 version: 1.1.2 '@glint/core': - specifier: ^1.4.0 - version: 1.4.0(typescript@5.5.3) + specifier: ^1.4.1-unstable.e8d1c9a + version: 1.4.1-unstable.ff9ea6c(typescript@5.5.3) '@glint/environment-ember-loose': - specifier: ^1.3.0 - version: 1.4.0(@glimmer/component@1.1.2)(@glint/template@1.4.0)(ember-cli-htmlbars@6.3.0)(ember-modifier@4.2.0) + specifier: ^1.4.1-unstable.e8d1c9a + version: 1.4.1-unstable.ff9ea6c(@glimmer/component@1.1.2)(@glint/template@1.4.0)(ember-cli-htmlbars@6.3.0)(ember-modifier@4.2.0) '@glint/environment-ember-template-imports': - specifier: ^1.3.0 - version: 1.4.0(@glint/environment-ember-loose@1.4.0)(@glint/template@1.4.0) + specifier: ^1.4.1-unstable.e8d1c9a + version: 1.4.1-unstable.ff9ea6c(@glint/environment-ember-loose@1.4.1-unstable.ff9ea6c)(@glint/template@1.4.0) '@glint/template': specifier: ^1.4.0 version: 1.4.0 @@ -190,10 +196,10 @@ importers: version: 4.0.9 '@typescript-eslint/eslint-plugin': specifier: ^7.7.0 - version: 7.15.0(@typescript-eslint/parser@7.15.0)(eslint@9.6.0)(typescript@5.5.3) + version: 7.15.0(@typescript-eslint/parser@7.15.0)(eslint@8.57.0)(typescript@5.5.3) '@typescript-eslint/parser': specifier: ^7.2.0 - version: 7.15.0(eslint@9.6.0)(typescript@5.5.3) + version: 7.15.0(eslint@8.57.0)(typescript@5.5.3) broccoli-asset-rev: specifier: ^3.0.0 version: 3.0.0 @@ -267,23 +273,23 @@ importers: specifier: ^3.0.0 version: 3.0.0 eslint: - specifier: ^9.6.0 - version: 9.6.0 + specifier: ^8.57.0 + version: 8.57.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@9.6.0) + version: 9.1.0(eslint@8.57.0) eslint-plugin-ember: specifier: ^12.1.1 - version: 12.1.1(@babel/core@7.24.7)(@typescript-eslint/parser@7.15.0)(eslint@9.6.0) + version: 12.1.1(@babel/core@7.24.7)(@typescript-eslint/parser@7.15.0)(eslint@8.57.0) eslint-plugin-n: specifier: ^16.6.2 - version: 16.6.2(eslint@9.6.0) + version: 16.6.2(eslint@8.57.0) eslint-plugin-prettier: specifier: ^5.1.3 - version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@9.6.0)(prettier@3.3.2) + version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.3.2) eslint-plugin-qunit: specifier: ^8.1.1 - version: 8.1.1(eslint@9.6.0) + version: 8.1.1(eslint@8.57.0) loader.js: specifier: ^4.7.0 version: 4.7.0 @@ -381,20 +387,6 @@ packages: semver: 6.3.1 dev: true - /@babel/eslint-parser@7.23.10(@babel/core@7.24.7)(eslint@9.6.0): - resolution: {integrity: sha512-3wSYDPZVnhseRnxRJH6ZVTNknBz76AEnyC+AYYhasjP3Yy23qz0ERR7Fcd2SHmYuSFJ2kY9gaaDd3vyqU09eSw==} - engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} - peerDependencies: - '@babel/core': ^7.11.0 - eslint: ^7.5.0 || ^8.0.0 - dependencies: - '@babel/core': 7.24.7 - '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 9.6.0 - eslint-visitor-keys: 2.1.0 - semver: 6.3.1 - dev: true - /@babel/generator@7.24.7: resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==} engines: {node: '>=6.9.0'} @@ -1784,29 +1776,29 @@ packages: dev: true optional: true - /@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3): + /@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.4.1): resolution: {integrity: sha512-qvBMcOU/uWFCH/VO0MYe0AMs0BGMWAt6FTryMbFIKYtZtVnqTZtT8ktv5o718llkaGZWomJezJZjq3vJDHeJNQ==} engines: {node: ^14 || ^16 || >=18} peerDependencies: '@csstools/css-tokenizer': ^2.3.2 dependencies: - '@csstools/css-tokenizer': 2.3.3 + '@csstools/css-tokenizer': 2.4.1 dev: true - /@csstools/css-tokenizer@2.3.3: - resolution: {integrity: sha512-fTaF0vRcXVJ4cmwg8nHofydDjitKMDBzC8cCu+O/Lg13C4PdkC15GVjGpbmWauOOnhomVSTg5I5LpLJFJE2Hfw==} + /@csstools/css-tokenizer@2.4.1: + resolution: {integrity: sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==} engines: {node: ^14 || ^16 || >=18} dev: true - /@csstools/media-query-list-parser@2.1.12(@csstools/css-parser-algorithms@2.7.0)(@csstools/css-tokenizer@2.3.3): + /@csstools/media-query-list-parser@2.1.12(@csstools/css-parser-algorithms@2.7.0)(@csstools/css-tokenizer@2.4.1): resolution: {integrity: sha512-t1/CdyVJzOQUiGUcIBXRzTAkWTFPxiPnoKwowKW2z9Uj78c2bBWI/X94BeVfUwVq1xtCjD7dnO8kS6WONgp8Jw==} engines: {node: ^14 || ^16 || >=18} peerDependencies: '@csstools/css-parser-algorithms': ^2.7.0 '@csstools/css-tokenizer': ^2.3.2 dependencies: - '@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3) - '@csstools/css-tokenizer': 2.3.3 + '@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.4.1) + '@csstools/css-tokenizer': 2.4.1 dev: true /@csstools/selector-specificity@3.1.1(postcss-selector-parser@6.1.0): @@ -2025,32 +2017,11 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/eslint-utils@4.4.0(eslint@9.6.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 9.6.0 - eslint-visitor-keys: 3.4.3 - dev: true - /@eslint-community/regexpp@4.11.0: resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/config-array@0.17.0: - resolution: {integrity: sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - '@eslint/object-schema': 2.1.4 - debug: 4.3.5 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - /@eslint/eslintrc@2.1.4: resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2068,38 +2039,11 @@ packages: - supports-color dev: true - /@eslint/eslintrc@3.1.0: - resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.5 - espree: 10.1.0 - globals: 14.0.0 - ignore: 5.3.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - /@eslint/js@8.57.0: resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@eslint/js@9.6.0: - resolution: {integrity: sha512-D9B0/3vNg44ZeWbYMpBoXqNP4j6eQD5vNwIlGAuFRRzK/WtT/jvDQW3Bi9kkf3PMDMlM7Yi+73VLUsn5bJcl8A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true - - /@eslint/object-schema@2.1.4: - resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true - /@financial-times/origami-service-makefile@7.0.3: resolution: {integrity: sha512-aKe65sZ3XgZ/0Sm0MDLbGrcO3G4DRv/bVW4Gpmw68cRZV9IBE7h/pwfR3Rs7njNSZMFkjS4rPG/YySv9brQByA==} dev: false @@ -2378,19 +2322,27 @@ packages: '@glimmer/util': 0.92.0 dev: true - /@glint/core@1.4.0(typescript@5.5.3): - resolution: {integrity: sha512-nq27a/1R6kc3lsuciz8z9IZO1NQCbNkEBxf5KJI7AUrnps6RzQzmq3pmwO24zQYmFcH4sqpod8fleNIpg8YEqg==} + /@glint/core@1.4.1-unstable.ff9ea6c(typescript@5.5.3): + resolution: {integrity: sha512-DT5Qxls/lJwfoU/TYBmSZn6yFVcGsyocn0iIsMxDMkU9a/6qhkt68C3EeIFpdvqwuGjOjaFWInowIZ2AFefHWQ==} hasBin: true peerDependencies: typescript: '>=4.8.0' dependencies: '@glimmer/syntax': 0.84.3 + '@volar/kit': 2.3.4(typescript@5.5.3) + '@volar/language-core': 2.3.4 + '@volar/language-server': 2.3.4 + '@volar/language-service': 2.3.4 + '@volar/source-map': 2.3.4 + '@volar/test-utils': 2.3.4 + '@volar/typescript': 2.3.4 + computeds: 0.0.1 escape-string-regexp: 4.0.0 semver: 7.6.2 silent-error: 1.1.1 typescript: 5.5.3 uuid: 8.3.2 - vscode-languageserver: 8.1.0 + volar-service-typescript: 0.0.51(@volar/language-service@2.3.4) vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 yargs: 17.7.2 @@ -2398,11 +2350,11 @@ packages: - supports-color dev: true - /@glint/environment-ember-loose@1.4.0(@glimmer/component@1.1.2)(@glint/template@1.4.0)(ember-cli-htmlbars@6.3.0)(ember-modifier@4.2.0): - resolution: {integrity: sha512-vFR3qgPTisGzS36e04195wTUrtUc6GuVwm6hsC/XXx6PeRw/6rtMxhK08Aw/VtDc00UqQzM9sIEghPVKHwqVVQ==} + /@glint/environment-ember-loose@1.4.1-unstable.ff9ea6c(@glimmer/component@1.1.2)(@glint/template@1.4.0)(ember-cli-htmlbars@6.3.0)(ember-modifier@4.2.0): + resolution: {integrity: sha512-GK/BrLxaebJ5uU1UJky5MWEcGMiC9TBTnpNJnUtLF9u3CT11dhD6UGmfnxTfzSX5KowrL34hrzicA2ct/9KUdg==} peerDependencies: '@glimmer/component': ^1.1.2 - '@glint/template': ^1.4.0 + '@glint/template': 1.4.1-unstable.ff9ea6c '@types/ember__array': ^4.0.2 '@types/ember__component': ^4.0.10 '@types/ember__controller': ^4.0.2 @@ -2432,11 +2384,11 @@ packages: ember-modifier: 4.2.0(@babel/core@7.24.7)(ember-source@5.9.0) dev: true - /@glint/environment-ember-template-imports@1.4.0(@glint/environment-ember-loose@1.4.0)(@glint/template@1.4.0): - resolution: {integrity: sha512-VXcUgea92l7NFShU26rpQn+hYUZ7ex/rNtU9vnw2BAVZaPfxZROokW8ABj8aMaCUDe60CoMVZ1/QSeONSCln3w==} + /@glint/environment-ember-template-imports@1.4.1-unstable.ff9ea6c(@glint/environment-ember-loose@1.4.1-unstable.ff9ea6c)(@glint/template@1.4.0): + resolution: {integrity: sha512-9voQDDuCrjPHZQ37q4i8L2ifK4ap2eX+y3si5U4jS0/7sbeX9wwoI7Yqg5BF2TPgQg6CqzDO0xURQFtTsH8y+A==} peerDependencies: - '@glint/environment-ember-loose': ^1.4.0 - '@glint/template': ^1.4.0 + '@glint/environment-ember-loose': ^1.4.1-unstable.e8d1c9a + '@glint/template': 1.4.1-unstable.ff9ea6c '@types/ember__component': ^4.0.10 '@types/ember__helper': ^4.0.1 '@types/ember__modifier': ^4.0.3 @@ -2451,7 +2403,7 @@ packages: '@types/ember__routing': optional: true dependencies: - '@glint/environment-ember-loose': 1.4.0(@glimmer/component@1.1.2)(@glint/template@1.4.0)(ember-cli-htmlbars@6.3.0)(ember-modifier@4.2.0) + '@glint/environment-ember-loose': 1.4.1-unstable.ff9ea6c(@glimmer/component@1.1.2)(@glint/template@1.4.0)(ember-cli-htmlbars@6.3.0)(ember-modifier@4.2.0) '@glint/template': 1.4.0 content-tag: 2.0.1 dev: true @@ -2486,11 +2438,6 @@ packages: deprecated: Use @eslint/object-schema instead dev: true - /@humanwhocodes/retry@0.3.0: - resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} - engines: {node: '>=18.18'} - dev: true - /@inquirer/figures@1.0.3: resolution: {integrity: sha512-ErXXzENMH5pJt5/ssXV0DfWUZqly8nGzf0UcBV9xTnP+KyffE2mqyxIMBrZ8ijQck2nU0TQm40EQB53YreyWHw==} engines: {node: '>=18'} @@ -3281,33 +3228,6 @@ packages: - supports-color dev: true - /@typescript-eslint/eslint-plugin@7.15.0(@typescript-eslint/parser@7.15.0)(eslint@9.6.0)(typescript@5.5.3): - resolution: {integrity: sha512-uiNHpyjZtFrLwLDpHnzaDlP3Tt6sGMqTCiqmxaN4n4RP0EfYZDODJyddiFDF44Hjwxr5xAcaYxVKm9QKQFJFLA==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 7.15.0(eslint@9.6.0)(typescript@5.5.3) - '@typescript-eslint/scope-manager': 7.15.0 - '@typescript-eslint/type-utils': 7.15.0(eslint@9.6.0)(typescript@5.5.3) - '@typescript-eslint/utils': 7.15.0(eslint@9.6.0)(typescript@5.5.3) - '@typescript-eslint/visitor-keys': 7.15.0 - eslint: 9.6.0 - graphemer: 1.4.0 - ignore: 5.3.1 - natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.5.3) - typescript: 5.5.3 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/parser@7.15.0(eslint@8.57.0)(typescript@5.5.3): resolution: {integrity: sha512-k9fYuQNnypLFcqORNClRykkGOMOj+pV6V91R4GO/l1FDGwpqmSwoOQrOHo3cGaH63e+D3ZiCAOsuS/D2c99j/A==} engines: {node: ^18.18.0 || >=20.0.0} @@ -3329,27 +3249,6 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@7.15.0(eslint@9.6.0)(typescript@5.5.3): - resolution: {integrity: sha512-k9fYuQNnypLFcqORNClRykkGOMOj+pV6V91R4GO/l1FDGwpqmSwoOQrOHo3cGaH63e+D3ZiCAOsuS/D2c99j/A==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 7.15.0 - '@typescript-eslint/types': 7.15.0 - '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.5.3) - '@typescript-eslint/visitor-keys': 7.15.0 - debug: 4.3.5 - eslint: 9.6.0 - typescript: 5.5.3 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/scope-manager@7.15.0: resolution: {integrity: sha512-Q/1yrF/XbxOTvttNVPihxh1b9fxamjEoz2Os/Pe38OHwxC24CyCqXxGTOdpb4lt6HYtqw9HetA/Rf6gDGaMPlw==} engines: {node: ^18.18.0 || >=20.0.0} @@ -3378,26 +3277,6 @@ packages: - supports-color dev: true - /@typescript-eslint/type-utils@7.15.0(eslint@9.6.0)(typescript@5.5.3): - resolution: {integrity: sha512-SkgriaeV6PDvpA6253PDVep0qCqgbO1IOBiycjnXsszNTVQe5flN5wR5jiczoEoDEnAqYFSFFc9al9BSGVltkg==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.5.3) - '@typescript-eslint/utils': 7.15.0(eslint@9.6.0)(typescript@5.5.3) - debug: 4.3.5 - eslint: 9.6.0 - ts-api-utils: 1.3.0(typescript@5.5.3) - typescript: 5.5.3 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/types@7.15.0: resolution: {integrity: sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw==} engines: {node: ^18.18.0 || >=20.0.0} @@ -3441,22 +3320,6 @@ packages: - typescript dev: true - /@typescript-eslint/utils@7.15.0(eslint@9.6.0)(typescript@5.5.3): - resolution: {integrity: sha512-hfDMDqaqOqsUVGiEPSMLR/AjTSCsmJwjpKkYQRo1FNbmW4tBwBspYDwO9eh7sKSTwMQgBw9/T4DHudPaqshRWA==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) - '@typescript-eslint/scope-manager': 7.15.0 - '@typescript-eslint/types': 7.15.0 - '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.5.3) - eslint: 9.6.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - /@typescript-eslint/visitor-keys@7.15.0: resolution: {integrity: sha512-Hqgy/ETgpt2L5xueA/zHHIl4fJI2O4XUE9l4+OIfbJIRSnTJb/QscncdqqZzofQegIJugRIF57OJea1khw2SDw==} engines: {node: ^18.18.0 || >=20.0.0} @@ -3469,6 +3332,77 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true + /@volar/kit@2.3.4(typescript@5.5.3): + resolution: {integrity: sha512-MVDrvAHiYMCrt9kEB0Z8ui/CW88fMFj5ZBYslmIsldsalKoJsaSL6ZeKcPmJFn5R5FU6tAlRh3UqcZFbrd9G5Q==} + peerDependencies: + typescript: '*' + dependencies: + '@volar/language-service': 2.3.4 + '@volar/typescript': 2.3.4 + typesafe-path: 0.2.2 + typescript: 5.5.3 + vscode-languageserver-textdocument: 1.0.11 + vscode-uri: 3.0.8 + dev: true + + /@volar/language-core@2.3.4: + resolution: {integrity: sha512-wXBhY11qG6pCDAqDnbBRFIDSIwbqkWI7no+lj5+L7IlA7HRIjRP7YQLGzT0LF4lS6eHkMSsclXqy9DwYJasZTQ==} + dependencies: + '@volar/source-map': 2.3.4 + dev: true + + /@volar/language-server@2.3.4: + resolution: {integrity: sha512-I0usa8dI0nTVTqbNyVTQNMDMOHeOaBs84Onmr6oJH3K0EiqLb+Py/Zd5hP/mX22P6MQLhPI2cMVmk0DrSyZFaw==} + dependencies: + '@volar/language-core': 2.3.4 + '@volar/language-service': 2.3.4 + '@volar/snapshot-document': 2.3.4 + '@volar/typescript': 2.3.4 + 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.11 + vscode-uri: 3.0.8 + dev: true + + /@volar/language-service@2.3.4: + resolution: {integrity: sha512-mtzvYb33l17VVRwmX7C39EjVHBU9LbBJeo1rLXFKoXOzbZCanm0XtPZEENsm05VUvse929y4ParujW7k4G5H0w==} + dependencies: + '@volar/language-core': 2.3.4 + vscode-languageserver-protocol: 3.17.5 + vscode-languageserver-textdocument: 1.0.11 + vscode-uri: 3.0.8 + dev: true + + /@volar/snapshot-document@2.3.4: + resolution: {integrity: sha512-mSyxrKWa181r5Hv7CRjwrYXEnzqBLJ3M2Nse9+0KPRff2pAGIx0yl03O7e3Z7IyvMAkXxv3MIVYvP14zY3gVEQ==} + dependencies: + vscode-languageserver-protocol: 3.17.5 + vscode-languageserver-textdocument: 1.0.11 + dev: true + + /@volar/source-map@2.3.4: + resolution: {integrity: sha512-C+t63nwcblqLIVTYXaVi/+gC8NukDaDIQI72J3R7aXGvtgaVB16c+J8Iz7/VfOy7kjYv7lf5GhBny6ACw9fTGQ==} + dev: true + + /@volar/test-utils@2.3.4: + resolution: {integrity: sha512-J++um8b+dIRetTPPXdnDHPzmEEGan3oJRJSksMlqsOGjBBKU6pd6V/GXsFAKISRB1Sr9VWK7CMstS5ri2bzyYg==} + dependencies: + '@volar/language-core': 2.3.4 + '@volar/language-server': 2.3.4 + vscode-languageserver-textdocument: 1.0.11 + vscode-uri: 3.0.8 + dev: true + + /@volar/typescript@2.3.4: + resolution: {integrity: sha512-acCvt7dZECyKcvO5geNybmrqOsu9u8n5XP1rfiYsOLYGPxvHRav9BVmEdRyZ3vvY6mNyQ1wLL5Hday4IShe17w==} + dependencies: + '@volar/language-core': 2.3.4 + path-browserify: 1.0.1 + vscode-uri: 3.0.8 + dev: true + /@webassemblyjs/ast@1.12.1: resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} dependencies: @@ -5331,6 +5265,10 @@ packages: - supports-color dev: true + /computeds@0.0.1: + resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} + dev: true + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -6543,7 +6481,7 @@ packages: heimdalljs-logger: 0.1.10 http-proxy: 1.18.1 inflection: 2.0.1 - inquirer: 9.3.3 + inquirer: 9.3.4 is-git-url: 1.0.0 is-language-code: 3.1.0 isbinaryfile: 5.0.2 @@ -6674,27 +6612,6 @@ packages: - eslint dev: true - /ember-eslint-parser@0.4.3(@babel/core@7.24.7)(@typescript-eslint/parser@7.15.0)(eslint@9.6.0): - resolution: {integrity: sha512-wMPoaaA+i/F/tPPxURRON9XXJH5MRUOZ5x/9CVJTSpL+0n4EWphyztb20gR+ZJeShnOACQpAdFy6YSS1/JSHKw==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@babel/core': ^7.23.6 - '@typescript-eslint/parser': '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - dependencies: - '@babel/core': 7.24.7 - '@babel/eslint-parser': 7.23.10(@babel/core@7.24.7)(eslint@9.6.0) - '@glimmer/syntax': 0.92.0 - '@typescript-eslint/parser': 7.15.0(eslint@9.6.0)(typescript@5.5.3) - content-tag: 1.2.2 - eslint-scope: 7.2.2 - html-tags: 3.3.1 - transitivePeerDependencies: - - eslint - dev: true - /ember-fetch@8.1.2: resolution: {integrity: sha512-TVx24/jrvDIuPL296DV0hBwp7BWLcSMf0I8464KGz01sPytAB+ZAePbc9ooBTJDkKZEGFgatJa4nj3yF1S9Bpw==} engines: {node: '>= 10'} @@ -7234,16 +7151,6 @@ packages: semver: 7.6.2 dev: true - /eslint-compat-utils@0.5.1(eslint@9.6.0): - resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} - engines: {node: '>=12'} - peerDependencies: - eslint: '>=6.0.0' - dependencies: - eslint: 9.6.0 - semver: 7.6.2 - dev: true - /eslint-config-prettier@9.1.0(eslint@8.57.0): resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true @@ -7253,15 +7160,6 @@ packages: eslint: 8.57.0 dev: true - /eslint-config-prettier@9.1.0(eslint@9.6.0): - resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - dependencies: - eslint: 9.6.0 - dev: true - /eslint-formatter-kakoune@1.0.0: resolution: {integrity: sha512-Uk/TVLt6Nf6Xoz7C1iYuZjOSdJxe5aaauGRke8JhKeJwD66Y61/pY2FjtLP04Ooq9PwV34bzrkKkU2UZ5FtDRA==} dev: true @@ -7292,32 +7190,6 @@ packages: - '@babel/core' dev: true - /eslint-plugin-ember@12.1.1(@babel/core@7.24.7)(@typescript-eslint/parser@7.15.0)(eslint@9.6.0): - resolution: {integrity: sha512-95YWz2nVWtFHwrNlW8kpBivudieTHkiW3vlG3X1P24IpQLigVtPe14LDcZ/vPtEV92Ccao4xcKPKWWOeG0hSNQ==} - engines: {node: 18.* || 20.* || >= 21} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '>= 8' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - dependencies: - '@ember-data/rfc395-data': 0.0.4 - '@typescript-eslint/parser': 7.15.0(eslint@9.6.0)(typescript@5.5.3) - css-tree: 2.3.1 - ember-eslint-parser: 0.4.3(@babel/core@7.24.7)(@typescript-eslint/parser@7.15.0)(eslint@9.6.0) - ember-rfc176-data: 0.3.18 - eslint: 9.6.0 - eslint-utils: 3.0.0(eslint@9.6.0) - estraverse: 5.3.0 - lodash.camelcase: 4.3.0 - lodash.kebabcase: 4.1.1 - requireindex: 1.2.0 - snake-case: 3.0.4 - transitivePeerDependencies: - - '@babel/core' - dev: true - /eslint-plugin-es-x@7.8.0(eslint@8.57.0): resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} engines: {node: ^14.18.0 || >=16.0.0} @@ -7330,18 +7202,6 @@ packages: eslint-compat-utils: 0.5.1(eslint@8.57.0) dev: true - /eslint-plugin-es-x@7.8.0(eslint@9.6.0): - resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '>=8' - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) - '@eslint-community/regexpp': 4.11.0 - eslint: 9.6.0 - eslint-compat-utils: 0.5.1(eslint@9.6.0) - dev: true - /eslint-plugin-n@16.6.2(eslint@8.57.0): resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} engines: {node: '>=16.0.0'} @@ -7362,26 +7222,6 @@ packages: semver: 7.6.2 dev: true - /eslint-plugin-n@16.6.2(eslint@9.6.0): - resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - eslint: '>=7.0.0' - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) - builtins: 5.1.0 - eslint: 9.6.0 - eslint-plugin-es-x: 7.8.0(eslint@9.6.0) - get-tsconfig: 4.7.5 - globals: 13.24.0 - ignore: 5.3.1 - is-builtin-module: 3.2.1 - is-core-module: 2.14.0 - minimatch: 3.1.2 - resolve: 1.22.8 - semver: 7.6.2 - dev: true - /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.3.2): resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} engines: {node: ^14.18.0 || >=16.0.0} @@ -7403,32 +7243,11 @@ packages: synckit: 0.8.8 dev: true - /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@9.6.0)(prettier@3.3.2): - resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true - dependencies: - eslint: 9.6.0 - eslint-config-prettier: 9.1.0(eslint@9.6.0) - prettier: 3.3.2 - prettier-linter-helpers: 1.0.0 - synckit: 0.8.8 - dev: true - - /eslint-plugin-qunit@8.1.1(eslint@9.6.0): + /eslint-plugin-qunit@8.1.1(eslint@8.57.0): resolution: {integrity: sha512-j3xhiAf2Wvr8Dfwl5T6tlJ+F55vqYE9ZdAHUOTzq1lGerYrXzOS46RvK4SSWug2D8sl3ZYr2lA4/hgVXgLloxw==} engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} dependencies: - eslint-utils: 3.0.0(eslint@9.6.0) + eslint-utils: 3.0.0(eslint@8.57.0) requireindex: 1.2.0 transitivePeerDependencies: - eslint @@ -7450,14 +7269,6 @@ packages: estraverse: 5.3.0 dev: true - /eslint-scope@8.0.1: - resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: true - /eslint-utils@3.0.0(eslint@8.57.0): resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} @@ -7468,16 +7279,6 @@ packages: eslint-visitor-keys: 2.1.0 dev: true - /eslint-utils@3.0.0(eslint@9.6.0): - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 9.6.0 - eslint-visitor-keys: 2.1.0 - dev: true - /eslint-visitor-keys@2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} engines: {node: '>=10'} @@ -7488,11 +7289,6 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint-visitor-keys@4.0.0: - resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true - /eslint@8.57.0: resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -7540,63 +7336,11 @@ packages: - supports-color dev: true - /eslint@9.6.0: - resolution: {integrity: sha512-ElQkdLMEEqQNM9Njff+2Y4q2afHk7JpkPvrd7Xh7xefwgQynqPxwf55J7di9+MEibWUGdNjFF9ITG9Pck5M84w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) - '@eslint-community/regexpp': 4.11.0 - '@eslint/config-array': 0.17.0 - '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.6.0 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.3.0 - '@nodelib/fs.walk': 1.2.8 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.5 - escape-string-regexp: 4.0.0 - eslint-scope: 8.0.1 - eslint-visitor-keys: 4.0.0 - espree: 10.1.0 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.1 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: true - /esm@3.2.25: resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} engines: {node: '>=6'} dev: true - /espree@10.1.0: - resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) - eslint-visitor-keys: 4.0.0 - dev: true - /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -7958,13 +7702,6 @@ packages: flat-cache: 3.2.0 dev: true - /file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - dependencies: - flat-cache: 4.0.1 - dev: true - /file-entry-cache@9.0.0: resolution: {integrity: sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==} engines: {node: '>=18'} @@ -8179,14 +7916,6 @@ packages: rimraf: 3.0.2 dev: true - /flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - dependencies: - flatted: 3.3.1 - keyv: 4.5.4 - dev: true - /flat-cache@5.0.0: resolution: {integrity: sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==} engines: {node: '>=18'} @@ -8700,11 +8429,6 @@ packages: type-fest: 0.20.2 dev: true - /globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - dev: true - /globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -9273,8 +8997,8 @@ packages: through: 2.3.8 dev: true - /inquirer@9.3.3: - resolution: {integrity: sha512-Z7lAi4XUBYRa6NPB0k+0+3dyhnyp2sAqVeiyogHyue93DvE9dPxp7oi7Gg8/KfWXSrGEsyBvZbl4PdBpS7ZKkg==} + /inquirer@9.3.4: + resolution: {integrity: sha512-Hp6meNSDzp+Oc9JNUUlYsK81dxaPrrBRa7H/s3+yebCDRJe4UNKYSkEUZoIcuKJjNipBLPKsuc7BvO6tLzo/KA==} engines: {node: '>=18'} dependencies: '@inquirer/figures': 1.0.3 @@ -11284,6 +11008,10 @@ packages: engines: {node: '>=0.10.0'} dev: true + /path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + dev: true + /path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} @@ -11911,6 +11639,10 @@ packages: engines: {node: '>=0.10'} dev: true + /request-light@0.7.0: + resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} + dev: true + /request@2.88.2: resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} engines: {node: '>= 6'} @@ -13021,9 +12753,9 @@ packages: engines: {node: '>=18.12.0'} hasBin: true dependencies: - '@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3) - '@csstools/css-tokenizer': 2.3.3 - '@csstools/media-query-list-parser': 2.1.12(@csstools/css-parser-algorithms@2.7.0)(@csstools/css-tokenizer@2.3.3) + '@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.4.1) + '@csstools/css-tokenizer': 2.4.1 + '@csstools/media-query-list-parser': 2.1.12(@csstools/css-parser-algorithms@2.7.0)(@csstools/css-tokenizer@2.4.1) '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.0) '@dual-bundle/import-meta-resolve': 4.1.0 balanced-match: 2.0.0 @@ -13624,6 +13356,16 @@ packages: is-typedarray: 1.0.0 dev: true + /typesafe-path@0.2.2: + resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==} + dev: true + + /typescript-auto-import-cache@0.3.3: + resolution: {integrity: sha512-ojEC7+Ci1ij9eE6hp8Jl9VUNnsEKzztktP5gtYNRMrTmfXVwA1PITYYAkpxCvvupdSYa/Re51B6KMcv1CTZEUA==} + dependencies: + semver: 7.6.2 + dev: true + /typescript-memoize@1.1.1: resolution: {integrity: sha512-GQ90TcKpIH4XxYTI2F98yEQYZgjNMOGPpOgdjIBhaLaWji5HPWlRnZ4AeA1hfBxtY7bCGDJsqDDHk/KaHOl5bA==} @@ -13865,31 +13607,52 @@ packages: extsprintf: 1.3.0 dev: false - /vscode-jsonrpc@8.1.0: - resolution: {integrity: sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==} + /volar-service-typescript@0.0.51(@volar/language-service@2.3.4): + resolution: {integrity: sha512-nX59huoruBUxuAJ42UEOZ8UYHZddtza2IA0rxotKvO0MfHuPh84nqQpNYyAiNAzE46JDjdliIZkgEmabXIS/SQ==} + peerDependencies: + '@volar/language-service': ~2.3.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + dependencies: + '@volar/language-service': 2.3.4 + path-browserify: 1.0.1 + semver: 7.6.2 + typescript-auto-import-cache: 0.3.3 + vscode-languageserver-textdocument: 1.0.11 + vscode-nls: 5.2.0 + vscode-uri: 3.0.8 + dev: true + + /vscode-jsonrpc@8.2.0: + resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} engines: {node: '>=14.0.0'} dev: true - /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==} dependencies: - vscode-jsonrpc: 8.1.0 - vscode-languageserver-types: 3.17.3 + vscode-jsonrpc: 8.2.0 + vscode-languageserver-types: 3.17.5 dev: true /vscode-languageserver-textdocument@1.0.11: resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} dev: true - /vscode-languageserver-types@3.17.3: - resolution: {integrity: sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==} + /vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} dev: true - /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 dependencies: - vscode-languageserver-protocol: 3.17.3 + vscode-languageserver-protocol: 3.17.5 + dev: true + + /vscode-nls@5.2.0: + resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} dev: true /vscode-uri@3.0.8: diff --git a/test-app/app/router.ts b/test-app/app/router.ts index 05e9026..a88b0cf 100644 --- a/test-app/app/router.ts +++ b/test-app/app/router.ts @@ -13,7 +13,7 @@ Router.map(function () { this.route('model-works', { path: 'model-works/:id' }); this.route('controller-works', { path: 'controller-works/:id' }); this.route('component-works', { path: 'component-works/:id' }); - this.route('outlet-works',function() { + this.route('outlet-works', function () { this.route('sub-route'); }); }); diff --git a/test-app/app/routes/component-works.gts b/test-app/app/routes/component-works.gts index 3638d0d..64d4714 100644 --- a/test-app/app/routes/component-works.gts +++ b/test-app/app/routes/component-works.gts @@ -1,11 +1,18 @@ import Route from 'ember-routable-component'; import Component from '@glimmer/component'; +import type Controller from '@ember/controller'; interface Signature { Args: { model: string; + controller: Controller; + }; + Blocks: { + default: []; + outlet: []; }; } + class MyRouteComponent extends Component { @@ -14,9 +21,7 @@ class MyRouteComponent extends Component { } } -export default class ComponentWorksRoute extends Route( - MyRouteComponent -) { +export default class ComponentWorksRoute extends Route(MyRouteComponent) { model({ id }: { id: string }): string { return id; } diff --git a/test-app/app/routes/controller-works.gts b/test-app/app/routes/controller-works.gts index 8625b24..80c9a4e 100644 --- a/test-app/app/routes/controller-works.gts +++ b/test-app/app/routes/controller-works.gts @@ -1,13 +1,11 @@ import Route from 'ember-routable-component'; -import ControllerWorksController from 'test-app/controllers/controller-works'; +import Controller from '@ember/controller'; -interface Signature { - Args: { - controller: ControllerWorksController; - }; +class MyController extends Controller { + declare specialMessage: string; } -export default class ComponentWorksRoute extends Route( +export default class ComponentWorksRoute extends Route( , ) { model({ id }: { id: string }): string { diff --git a/test-app/app/routes/gjs-template-works.gjs b/test-app/app/routes/gjs-template-works.gjs index cba538c..8d39e97 100644 --- a/test-app/app/routes/gjs-template-works.gjs +++ b/test-app/app/routes/gjs-template-works.gjs @@ -1,5 +1,3 @@ import Route from 'ember-routable-component'; -export default Route( - -); +export default Route(); diff --git a/test-app/app/routes/gts-template-works.gts b/test-app/app/routes/gts-template-works.gts index cba538c..8d39e97 100644 --- a/test-app/app/routes/gts-template-works.gts +++ b/test-app/app/routes/gts-template-works.gts @@ -1,5 +1,3 @@ import Route from 'ember-routable-component'; -export default Route( - -); +export default Route(); diff --git a/test-app/app/routes/model-works.gts b/test-app/app/routes/model-works.gts index 1d8d61f..56fd2a4 100644 --- a/test-app/app/routes/model-works.gts +++ b/test-app/app/routes/model-works.gts @@ -1,12 +1,13 @@ import Route from 'ember-routable-component'; +import Controller from '@ember/controller'; -interface Signature { - Args: { - model: string; - x: string; - }; +class MyController extends Controller { + declare x: number; } -export default class ModelWorksRoute extends Route() { + +export default class ModelWorksRoute extends Route( + , +) { model({ id }: { id: string }): string { return id; } diff --git a/test-app/app/routes/outlet-works.gts b/test-app/app/routes/outlet-works.gts index 5a22341..6c5e88b 100644 --- a/test-app/app/routes/outlet-works.gts +++ b/test-app/app/routes/outlet-works.gts @@ -1,14 +1,5 @@ import Route from 'ember-routable-component'; -import ControllerWorksController from 'test-app/controllers/controller-works'; -interface Signature { - Args: { - controller: ControllerWorksController; - }; -} - -export default class ComponentWorksRoute extends Route( +export default class ComponentWorksRoute extends Route( , -) { - -} +) {} diff --git a/test-app/app/routes/outlet-works/sub-route.gts b/test-app/app/routes/outlet-works/sub-route.gts index adc2377..82c6c42 100644 --- a/test-app/app/routes/outlet-works/sub-route.gts +++ b/test-app/app/routes/outlet-works/sub-route.gts @@ -7,6 +7,4 @@ interface Signature { }; } -export default Route( - , -); +export default Route(); diff --git a/test-app/app/routes/sub-route/index.gts b/test-app/app/routes/sub-route/index.gts index adc2377..82c6c42 100644 --- a/test-app/app/routes/sub-route/index.gts +++ b/test-app/app/routes/sub-route/index.gts @@ -7,6 +7,4 @@ interface Signature { }; } -export default Route( - , -); +export default Route(); diff --git a/test-app/package.json b/test-app/package.json index 7cef847..157ddcf 100644 --- a/test-app/package.json +++ b/test-app/package.json @@ -41,8 +41,8 @@ "@glimmer/component": "^1.1.2", "@glimmer/tracking": "^1.1.2", "@glint/core": "^1.4.0", - "@glint/environment-ember-loose": "^1.3.0", - "@glint/environment-ember-template-imports": "^1.3.0", + "@glint/environment-ember-loose": "^1.4.0", + "@glint/environment-ember-template-imports": "^1.4.0", "@glint/template": "^1.4.0", "@tsconfig/ember": "^3.0.6", "@types/qunit": "^2.19.6", @@ -73,7 +73,7 @@ "ember-template-imports": "^4.1.1", "ember-template-lint": "^6.0.0", "ember-try": "^3.0.0", - "eslint": "^9.6.0", + "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-ember": "^12.1.1", "eslint-plugin-n": "^16.6.2", @@ -97,13 +97,5 @@ }, "ember": { "edition": "octane" - }, - "overrides": { - "ember-eslint-parser": "^0.4.0" - }, - "pnpm": { - "overrides": { - "ember-eslint-parser": "^0.4.0" - } } } diff --git a/test-app/tests/helpers/index.ts b/test-app/tests/helpers/index.ts index 670bc64..a31b569 100644 --- a/test-app/tests/helpers/index.ts +++ b/test-app/tests/helpers/index.ts @@ -2,7 +2,7 @@ import { setupApplicationTest as upstreamSetupApplicationTest, setupRenderingTest as upstreamSetupRenderingTest, setupTest as upstreamSetupTest, - SetupTestOptions, + type SetupTestOptions, } from 'ember-qunit'; // This file exists to provide wrappers around ember-qunit's / ember-mocha's