diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 840b8677..5e91e14d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -52,7 +52,6 @@ jobs: fail-fast: false matrix: try-scenario: - - ember-lts-3.24 - ember-lts-3.28 - ember-lts-4.4 - ember-lts-4.8 @@ -72,6 +71,33 @@ jobs: run: pnpm exec ember try:one ${{ matrix.try-scenario }} --skip-cleanup working-directory: test-app + typecheck: + name: "${{ matrix.typescript-scenario }}" + runs-on: ubuntu-latest + needs: "test" + timeout-minutes: 5 + continue-on-error: true + strategy: + fail-fast: true + matrix: + typescript-scenario: + - typescript@4.8 + - typescript@4.9 + - typescript@5.0 + - typescript@5.1 + + steps: + - name: Setup + uses: wyvox/action@v1 + - name: "Change TS to ${{ matrix.typescript-scenario }}" + run: "pnpm add --save-dev ${{ matrix.typescript-scenario}}" + working-directory: ./test-app + - name: "Type checking" + run: | + pnpm --filter "test-app*" exec tsc -v; + pnpm --filter "test-app*" exec glint --version; + pnpm --filter "test-app*" exec glint; + publish: name: Publish needs: test diff --git a/.gitignore b/.gitignore index 5a28f4cd..5a0bb0b5 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ # compiled output dist/ +declarations/ tmp/ # dependencies diff --git a/.npmrc b/.npmrc index 043b3a4e..e0a71fa7 100644 --- a/.npmrc +++ b/.npmrc @@ -1,5 +1,6 @@ public-hoist-pattern[]=*prettier* public-hoist-pattern[]=*eslint* -public-hoist-pattern[]=!@typescript-eslint/* +public-hoist-pattern[]=@typescript-eslint/* public-hoist-pattern[]=*ember-template-lint* public-hoist-pattern[]=*stylelint* +public-hoist-pattern[]=*@glint* diff --git a/README.md b/README.md index ceb8fe68..e5bda3c4 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -ember-element-helper -============================================================================== +# ember-element-helper [![Build Status](https://github.com/tildeio/ember-element-helper/actions/workflows/ci.yml/badge.svg)](https://github.com/tildeio/ember-element-helper/actions/workflows/ci.yml) @@ -18,15 +17,13 @@ this addon as a true polyfill for the feature, allowing the feature to be used on older Ember.js versions and be completely inert on newer versions where the official implementation is available. -Compatibility ------------------------------------------------------------------------------- +## Compatibility * Ember.js v3.24 or above * Ember CLI v3.24 or above * Node.js v12 or above -Limitations ------------------------------------------------------------------------------- +## Limitations This implementation has the following known limitations: @@ -52,15 +49,13 @@ This implementation has the following known limitations: which is first available on Ember 3.11. This is an Ember.js limitation, unrelated to this addon. -Installation ------------------------------------------------------------------------------- +## Installation ``` ember install ember-element-helper ``` -Usage ------------------------------------------------------------------------------- +## Usage ```hbs {{#let (element this.tagName) as |Tag|}} @@ -85,12 +80,93 @@ that accepts "contextual components" as arguments: <@tag class="my-tag">hello world! ``` -Contributing ------------------------------------------------------------------------------- +### Single File Components + +Using the `(element)` helper with [first class component +templates](http://emberjs.github.io/rfcs/0779-first-class-component-templates.html): + +```gjs +import { element } from 'ember-element-helper'; + + +``` + +### Glint Usage in Classic Mode + +In order to use a typed `(element)` helper in classic mode, you need to import +the addon's glint template registry and extend your app's registry declaration +as described in the [Using +Addons](https://typed-ember.gitbook.io/glint/using-glint/ember/using-addons#using-glint-enabled-addons) +documentation: + +```ts +import '@glint/environment-ember-loose'; +import type EmberElementHelperRegistry from 'ember-element-helper/template-registry'; + +declare module '@glint/environment-ember-loose/registry' { + export default interface Registry extends EmberElementHelperRegistry, /* other addon registries */ { + // local entries + } +} +``` + +> **Note:** Glint itself is still under active development, and as such breaking changes might occur. +> Therefore, Glint support by this addon is also considered experimental, and not covered by our SemVer contract! + +### Typing your Components + +When your component accepts an element with the `(element)` helper, you want to +give this argument a proper type. Here is how: + +```ts +import type { ElementSignature } from 'ember-element-helper'; + +interface YourComponentSignature { + Element: HTMLSectionElement; + Args: { + element?: ElementSignature['Return']; + }; +} +``` + +When the `@element` argument influences the `Element` of your component: + +```ts +import type { ElementSignature, ElementFromTagName } from 'ember-element-helper'; + +interface YourComponentSignature { + Element: ElementFromTagName; + Args: { + element?: ElementSignature['Return']; + }; +} +``` + +When your component already uses an element for a given condition. When +the condition isn't met, a fallback element is used. The fallback can even be +provided from the outside. Here is the type: + +```ts +import type { ElementSignature, ElementFromTagName } from 'ember-element-helper'; + +interface YourComponentSignature< + T extends string = 'section' +> { + Element: HTMLButtonElement | HTMLAnchorElement | ElementFromTagName; + Args: { + element?: ElementSignature['Return']; + }; +} +``` + +## Contributing See the [Contributing](CONTRIBUTING.md) guide for details. -License ------------------------------------------------------------------------------- +## License This project is licensed under the [MIT License](LICENSE.md). diff --git a/ember-element-helper/README.md b/ember-element-helper/README.md index ceb8fe68..e5bda3c4 100644 --- a/ember-element-helper/README.md +++ b/ember-element-helper/README.md @@ -1,5 +1,4 @@ -ember-element-helper -============================================================================== +# ember-element-helper [![Build Status](https://github.com/tildeio/ember-element-helper/actions/workflows/ci.yml/badge.svg)](https://github.com/tildeio/ember-element-helper/actions/workflows/ci.yml) @@ -18,15 +17,13 @@ this addon as a true polyfill for the feature, allowing the feature to be used on older Ember.js versions and be completely inert on newer versions where the official implementation is available. -Compatibility ------------------------------------------------------------------------------- +## Compatibility * Ember.js v3.24 or above * Ember CLI v3.24 or above * Node.js v12 or above -Limitations ------------------------------------------------------------------------------- +## Limitations This implementation has the following known limitations: @@ -52,15 +49,13 @@ This implementation has the following known limitations: which is first available on Ember 3.11. This is an Ember.js limitation, unrelated to this addon. -Installation ------------------------------------------------------------------------------- +## Installation ``` ember install ember-element-helper ``` -Usage ------------------------------------------------------------------------------- +## Usage ```hbs {{#let (element this.tagName) as |Tag|}} @@ -85,12 +80,93 @@ that accepts "contextual components" as arguments: <@tag class="my-tag">hello world! ``` -Contributing ------------------------------------------------------------------------------- +### Single File Components + +Using the `(element)` helper with [first class component +templates](http://emberjs.github.io/rfcs/0779-first-class-component-templates.html): + +```gjs +import { element } from 'ember-element-helper'; + + +``` + +### Glint Usage in Classic Mode + +In order to use a typed `(element)` helper in classic mode, you need to import +the addon's glint template registry and extend your app's registry declaration +as described in the [Using +Addons](https://typed-ember.gitbook.io/glint/using-glint/ember/using-addons#using-glint-enabled-addons) +documentation: + +```ts +import '@glint/environment-ember-loose'; +import type EmberElementHelperRegistry from 'ember-element-helper/template-registry'; + +declare module '@glint/environment-ember-loose/registry' { + export default interface Registry extends EmberElementHelperRegistry, /* other addon registries */ { + // local entries + } +} +``` + +> **Note:** Glint itself is still under active development, and as such breaking changes might occur. +> Therefore, Glint support by this addon is also considered experimental, and not covered by our SemVer contract! + +### Typing your Components + +When your component accepts an element with the `(element)` helper, you want to +give this argument a proper type. Here is how: + +```ts +import type { ElementSignature } from 'ember-element-helper'; + +interface YourComponentSignature { + Element: HTMLSectionElement; + Args: { + element?: ElementSignature['Return']; + }; +} +``` + +When the `@element` argument influences the `Element` of your component: + +```ts +import type { ElementSignature, ElementFromTagName } from 'ember-element-helper'; + +interface YourComponentSignature { + Element: ElementFromTagName; + Args: { + element?: ElementSignature['Return']; + }; +} +``` + +When your component already uses an element for a given condition. When +the condition isn't met, a fallback element is used. The fallback can even be +provided from the outside. Here is the type: + +```ts +import type { ElementSignature, ElementFromTagName } from 'ember-element-helper'; + +interface YourComponentSignature< + T extends string = 'section' +> { + Element: HTMLButtonElement | HTMLAnchorElement | ElementFromTagName; + Args: { + element?: ElementSignature['Return']; + }; +} +``` + +## Contributing See the [Contributing](CONTRIBUTING.md) guide for details. -License ------------------------------------------------------------------------------- +## License This project is licensed under the [MIT License](LICENSE.md). diff --git a/ember-element-helper/babel.config.json b/ember-element-helper/babel.config.json index cfcf8a3c..d804b38e 100644 --- a/ember-element-helper/babel.config.json +++ b/ember-element-helper/babel.config.json @@ -1,4 +1,5 @@ { + "presets": ["@babel/preset-typescript"], "plugins": [ "@embroider/addon-dev/template-colocation-plugin", ["@babel/plugin-proposal-decorators", { "legacy": true }], diff --git a/ember-element-helper/package.json b/ember-element-helper/package.json index c4117d98..b0bb2f17 100644 --- a/ember-element-helper/package.json +++ b/ember-element-helper/package.json @@ -11,25 +11,36 @@ "dynamic element" ], "exports": { - ".": "./dist/index.js", - "./*": "./dist/*" + ".": { + "types": "./declarations/index.d.ts", + "default": "./dist/index.js" + }, + "./*": { + "types": "./declarations/*.d.ts", + "default": "./dist/*" + }, + "./addon-main.js": "./addon-main.cjs" }, "files": [ "dist", + "declarations", "addon-main.cjs", "CHANGELOG.md", "README.md" ], "scripts": { - "start": "concurrently 'npm:watch:*'", "build": "concurrently 'npm:build:*'", - "build:js": "rollup -c ./rollup.config.js", + "build:js": "rollup -c", + "build:types": "tsc --emitDeclarationOnly", "build:docs": "cp ../README.md ./README.md", - "watch:js": "rollup -c --watch --no-watch.clearScreen", "lint": "concurrently 'npm:lint:js'", "lint:fix": "concurrently 'npm:lint:js:fix'", "lint:js": "eslint . --cache", "lint:js:fix": "eslint . --fix", + "lint:types": "glint", + "start": "concurrently 'npm:start:*'", + "start:js": "rollup -c --watch --no-watch.clearScreen", + "start:types": "tsc --emitDeclarationOnly -w", "pretest": "pnpm build", "test": "echo 'Addon does not have tests, run tests in test-app'", "prepare": "pnpm build", @@ -37,16 +48,29 @@ }, "dependencies": { "@embroider/addon-shim": "1.8.3", - "@embroider/util": "^0.39.1 || ^0.40.0 || ^0.41.0 || ^1.0.0" + "@embroider/util": "^1.0.0" }, "devDependencies": { "@babel/core": "7.18.6", "@babel/plugin-proposal-class-properties": "7.18.6", "@babel/plugin-syntax-decorators": "7.18.6", "@babel/plugin-proposal-decorators": "7.18.6", - "@embroider/addon-dev": "1.8.3", + "@babel/preset-typescript": "7.22.5", + "@babel/runtime": "7.22.6", + "@embroider/addon-dev": "4.1.0", + "@glimmer/component": "^1.1.2", + "@glint/core": "1.0.2", + "@glint/template": "1.0.2", + "@glint/environment-ember-loose": "1.0.2", "@nullvoxpopuli/eslint-configs": "2.2.36", + "@rollup/plugin-babel": "6.0.3", + "@rollup/plugin-node-resolve": "15.1.0", + "@tsconfig/ember": "^3.0.0", + "@types/rsvp": "^4.0.4", + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0", "concurrently": "7.2.2", + "ember-source": "~4.12.3", "eslint-config-prettier": "8.5.0", "eslint-plugin-decorator-position": "5.0.0", "eslint-plugin-ember": "10.6.1", @@ -55,10 +79,10 @@ "eslint-plugin-node": "11.1.0", "eslint-plugin-prettier": "4.2.1", "eslint-plugin-simple-import-sort": "7.0.0", - "rollup": "2.77.0", + "rollup": "3.26.3", "babel-eslint": "10.1.0", "eslint": "^7.31.0", - "@rollup/plugin-babel": "5.3.1" + "typescript": "5.1.6" }, "publishConfig": { "registry": "https://registry.npmjs.org" diff --git a/ember-element-helper/rollup.config.js b/ember-element-helper/rollup.config.mjs similarity index 80% rename from ember-element-helper/rollup.config.js rename to ember-element-helper/rollup.config.mjs index f33524dc..aa2ff635 100644 --- a/ember-element-helper/rollup.config.js +++ b/ember-element-helper/rollup.config.mjs @@ -1,12 +1,16 @@ -import babel from '@rollup/plugin-babel'; +import { babel } from '@rollup/plugin-babel'; import { Addon } from '@embroider/addon-dev/rollup'; +import { defineConfig } from 'rollup'; +import { nodeResolve } from '@rollup/plugin-node-resolve'; const addon = new Addon({ srcDir: 'src', destDir: 'dist', }); -export default { +const extensions = ['.js', '.ts']; + +export default defineConfig({ // This provides defaults that work well alongside `publicEntrypoints` below. // You can augment this if you need to. output: addon.output(), @@ -14,19 +18,14 @@ export default { plugins: [ // These are the modules that users should be able to import from your // addon. Anything not listed here may get optimized away. - addon.publicEntrypoints(['**/*.js']), + addon.publicEntrypoints(['index.js', 'helpers/element.js']), // These are the modules that should get reexported into the traditional // "app" tree. Things in here should also be in publicEntrypoints above, but // not everything in publicEntrypoints necessarily needs to go here. - addon.appReexports([ - 'components/**/*.js', - 'helpers/**/*.js', - 'modifiers/**/*.js', - 'services/**/*.js', - 'initializers/**/*.js', - 'instance-initializers/**/*.js', - ]), + addon.appReexports(['helpers/element.js']), + + nodeResolve({ extensions }), // This babel config should *not* apply presets or compile away ES modules. // It exists only to provide development niceties for you, like automatic @@ -35,6 +34,7 @@ export default { // By default, this will load the actual babel config from the file // babel.config.json. babel({ + extensions, babelHelpers: 'bundled', }), @@ -53,4 +53,4 @@ export default { // Remove leftover build artifacts when starting a new build. addon.clean(), ], -}; +}); diff --git a/ember-element-helper/src/helpers/element.js b/ember-element-helper/src/helpers/element.ts similarity index 58% rename from ember-element-helper/src/helpers/element.js rename to ember-element-helper/src/helpers/element.ts index 7d48c974..07acff4f 100644 --- a/ember-element-helper/src/helpers/element.js +++ b/ember-element-helper/src/helpers/element.ts @@ -5,16 +5,31 @@ import { assert, runInDebug } from '@ember/debug'; import { ensureSafeComponent } from '@embroider/util'; +// eslint-disable-next-line @typescript-eslint/no-empty-function function UNINITIALIZED() {} -export default class ElementHelper extends Helper { - constructor() { - super(...arguments); - this.tagName = UNINITIALIZED; - this.componentClass = null; - } +export type ElementFromTagName = T extends keyof HTMLElementTagNameMap + ? HTMLElementTagNameMap[T] + : Element; + +type Positional = [name: T]; +type Return = typeof EmberComponent<{ + Element: ElementFromTagName; + Blocks: { default: [] }; +}>; + +export interface ElementSignature { + Args: { + Positional: Positional; + }; + Return: Return | undefined; +} + +export default class ElementHelper extends Helper> { + tagName: string | (() => void) = UNINITIALIZED; + componentClass?: Return; - compute(params, hash) { + compute(params: Positional, hash: object) { assert('The `element` helper takes a single positional argument', params.length === 1); assert( 'The `element` helper does not take any named arguments', @@ -28,13 +43,15 @@ export default class ElementHelper extends Helper { if (typeof tagName === 'string') { this.componentClass = ensureSafeComponent( + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore class DynamicElement extends EmberComponent { tagName = tagName; // eslint-disable-line ember/require-tagless-components }, this - ); + ) as unknown as Return; } else { - this.componentClass = null; + this.componentClass = undefined; runInDebug(() => { let message = 'The argument passed to the `element` helper must be a string'; diff --git a/ember-element-helper/src/index.js b/ember-element-helper/src/index.js deleted file mode 100644 index e69de29b..00000000 diff --git a/ember-element-helper/src/index.ts b/ember-element-helper/src/index.ts new file mode 100644 index 00000000..4c08993c --- /dev/null +++ b/ember-element-helper/src/index.ts @@ -0,0 +1,4 @@ +import ElementHelper, { type ElementFromTagName, type ElementSignature } from './helpers/element'; + +export { ElementHelper as element }; +export type { ElementFromTagName, ElementSignature }; diff --git a/ember-element-helper/src/template-registry.ts b/ember-element-helper/src/template-registry.ts new file mode 100644 index 00000000..8d5b0d0d --- /dev/null +++ b/ember-element-helper/src/template-registry.ts @@ -0,0 +1,5 @@ +import type ElementHelper from './helpers/element'; + +export default interface EmberElementHelperRegistry { + element: typeof ElementHelper; +} diff --git a/ember-element-helper/tsconfig.json b/ember-element-helper/tsconfig.json new file mode 100644 index 00000000..730980d4 --- /dev/null +++ b/ember-element-helper/tsconfig.json @@ -0,0 +1,24 @@ +{ + "extends": "@tsconfig/ember/tsconfig.json", + "glint": { + "environment": [ + "ember-loose", + "ember-template-imports" + ] + }, + "compilerOptions": { + "noEmit": false, + "declarationDir": "./declarations", + "paths": { + "*": [ + "./types/*" + ] + }, + // for typescript < 5 + "moduleResolution": "NodeNext" + }, + "include": [ + "src/**/*", + "types/**/*" + ] +} \ No newline at end of file diff --git a/ember-element-helper/types/index.d.ts b/ember-element-helper/types/index.d.ts new file mode 100644 index 00000000..2109bac6 --- /dev/null +++ b/ember-element-helper/types/index.d.ts @@ -0,0 +1,2 @@ +import 'ember-source/types'; +import 'ember-source/types/preview'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 731a31c3..f15ecd19 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,11 +21,8 @@ importers: specifier: 1.8.3 version: 1.8.3 '@embroider/util': - specifier: ^0.39.1 || ^0.40.0 || ^0.41.0 || ^1.0.0 - version: 0.39.1 - ember-source: - specifier: ^3.8 || ^4.0.0 || >= 5.0.0 - version: 4.12.0(@babel/core@7.18.6)(@glimmer/component@1.1.2)(webpack@5.88.2) + specifier: ^1.0.0 + version: 1.12.0(@glint/environment-ember-loose@1.0.2)(@glint/template@1.0.2)(ember-source@4.12.3) devDependencies: '@babel/core': specifier: 7.18.6 @@ -39,21 +36,57 @@ importers: '@babel/plugin-syntax-decorators': specifier: 7.18.6 version: 7.18.6(@babel/core@7.18.6) + '@babel/preset-typescript': + specifier: 7.22.5 + version: 7.22.5(@babel/core@7.18.6) + '@babel/runtime': + specifier: 7.22.6 + version: 7.22.6 '@embroider/addon-dev': - specifier: 1.8.3 - version: 1.8.3(ember-source@4.12.0)(rollup@2.77.0) + specifier: 4.1.0 + version: 4.1.0(@glint/template@1.0.2)(rollup@3.26.3) + '@glimmer/component': + specifier: ^1.1.2 + version: 1.1.2(@babel/core@7.18.6) + '@glint/core': + specifier: 1.0.2 + version: 1.0.2(typescript@5.1.6) + '@glint/environment-ember-loose': + specifier: 1.0.2 + version: 1.0.2(@glimmer/component@1.1.2)(@glint/template@1.0.2)(ember-cli-htmlbars@6.2.0)(ember-modifier@4.1.0) + '@glint/template': + specifier: 1.0.2 + version: 1.0.2 '@nullvoxpopuli/eslint-configs': specifier: 2.2.36 version: 2.2.36(typescript@5.1.6) '@rollup/plugin-babel': - specifier: 5.3.1 - version: 5.3.1(@babel/core@7.18.6)(rollup@2.77.0) + specifier: 6.0.3 + version: 6.0.3(@babel/core@7.18.6)(rollup@3.26.3) + '@rollup/plugin-node-resolve': + specifier: 15.1.0 + version: 15.1.0(rollup@3.26.3) + '@tsconfig/ember': + specifier: ^3.0.0 + version: 3.0.0 + '@types/rsvp': + specifier: ^4.0.4 + version: 4.0.4 + '@typescript-eslint/eslint-plugin': + specifier: ^5.62.0 + version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@7.32.0)(typescript@5.1.6) + '@typescript-eslint/parser': + specifier: ^5.62.0 + version: 5.62.0(eslint@7.32.0)(typescript@5.1.6) babel-eslint: specifier: 10.1.0 version: 10.1.0(eslint@7.32.0) concurrently: specifier: 7.2.2 version: 7.2.2 + ember-source: + specifier: ~4.12.3 + version: 4.12.3(@babel/core@7.18.6)(@glimmer/component@1.1.2)(@glint/template@1.0.2)(webpack@5.88.2) eslint: specifier: ^7.31.0 version: 7.32.0 @@ -68,7 +101,7 @@ importers: version: 10.6.1(eslint@7.32.0) eslint-plugin-import: specifier: 2.26.0 - version: 2.26.0(@typescript-eslint/parser@5.30.6)(eslint@7.32.0) + version: 2.26.0(@typescript-eslint/parser@5.62.0)(eslint@7.32.0) eslint-plugin-json: specifier: 3.1.0 version: 3.1.0 @@ -82,14 +115,17 @@ importers: specifier: 7.0.0 version: 7.0.0(eslint@7.32.0) rollup: - specifier: 2.77.0 - version: 2.77.0 + specifier: 3.26.3 + version: 3.26.3 + typescript: + specifier: 5.1.6 + version: 5.1.6 test-app: dependencies: ember-element-helper: specifier: workspace:* - version: file:ember-element-helper(ember-source@4.12.0) + version: file:ember-element-helper(@glint/environment-ember-loose@1.0.2)(@glint/template@1.0.2)(ember-source@4.12.0) devDependencies: '@babel/eslint-parser': specifier: ^7.21.3 @@ -101,11 +137,11 @@ importers: specifier: ^2.0.0 version: 2.0.0 '@ember/string': - specifier: ^3.0.1 - version: 3.0.1 + specifier: ^3.1.1 + version: 3.1.1 '@ember/test-helpers': specifier: ^2.9.3 - version: 2.9.3(@babel/core@7.18.6)(ember-source@4.12.0) + version: 2.9.3(@babel/core@7.18.6)(@glint/environment-ember-loose@1.0.2)(@glint/template@1.0.2)(ember-source@4.12.0) '@embroider/compat': specifier: ^2.1.1 version: 2.1.1(@embroider/core@2.1.1) @@ -127,6 +163,27 @@ importers: '@glimmer/tracking': specifier: ^1.1.2 version: 1.1.2 + '@glint/core': + specifier: ^1.0.2 + version: 1.0.2(typescript@5.1.6) + '@glint/environment-ember-loose': + specifier: ^1.0.2 + version: 1.0.2(@glimmer/component@1.1.2)(@glint/template@1.0.2)(ember-cli-htmlbars@6.2.0)(ember-modifier@4.1.0) + '@glint/environment-ember-template-imports': + specifier: ^1.0.2 + version: 1.0.2(@glint/environment-ember-loose@1.0.2)(@glint/template@1.0.2)(ember-template-imports@3.4.2) + '@glint/template': + specifier: ^1.0.2 + version: 1.0.2 + '@tsconfig/ember': + specifier: ^3.0.0 + version: 3.0.0 + '@typescript-eslint/eslint-plugin': + specifier: ^5.62.0 + version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.37.0)(typescript@5.1.6) + '@typescript-eslint/parser': + specifier: ^5.62.0 + version: 5.62.0(eslint@8.37.0)(typescript@5.1.6) broccoli-asset-rev: specifier: ^3.0.0 version: 3.0.0 @@ -174,13 +231,16 @@ importers: version: 6.2.0(@ember/test-helpers@2.9.3)(ember-source@4.12.0)(qunit@2.19.4)(webpack@5.78.0) ember-resolver: specifier: ^10.0.0 - version: 10.0.0(@ember/string@3.0.1)(ember-source@4.12.0) + version: 10.0.0(@ember/string@3.1.1)(ember-source@4.12.0) ember-source: specifier: ~4.12.0 version: 4.12.0(@babel/core@7.18.6)(@glimmer/component@1.1.2)(webpack@5.78.0) ember-source-channel-url: specifier: ^3.0.0 version: 3.0.0 + ember-template-imports: + specifier: ^3.4.2 + version: 3.4.2 ember-template-lint: specifier: ^5.7.2 version: 5.7.2 @@ -238,6 +298,9 @@ importers: tracked-built-ins: specifier: ^3.1.1 version: 3.1.1 + typescript: + specifier: 5.1.6 + version: 5.1.6 webpack: specifier: ^5.78.0 version: 5.78.0 @@ -778,6 +841,16 @@ packages: '@babel/core': 7.18.6(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.18.6): + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.18.6): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: @@ -1515,6 +1588,20 @@ packages: '@babel/types': 7.22.5 esutils: 2.0.3 + /@babel/preset-typescript@7.22.5(@babel/core@7.18.6): + resolution: {integrity: sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.18.6) + '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.18.6) + '@babel/plugin-transform-typescript': 7.22.9(@babel/core@7.18.6) + dev: true + /@babel/regjsgen@0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} @@ -1632,8 +1719,8 @@ packages: - supports-color dev: true - /@ember/string@3.0.1: - resolution: {integrity: sha512-ntnmXS+upOWVXE+rVw2l03DjdMnaGdWbYVUxUBuPJqnIGZu2XFRsoXc7E6mOw62s8i1Xh1RgTuFHN41QGIolEQ==} + /@ember/string@3.1.1: + resolution: {integrity: sha512-UbXJ+k3QOrYN4SRPHgXCqYIJ+yWWUg1+vr0H4DhdQPTy8LJfyqwZ2tc5uqpSSnEXE+/1KopHBE5J8GDagAg5cg==} engines: {node: 12.* || 14.* || >= 16} dependencies: ember-cli-babel: 7.26.11 @@ -1641,15 +1728,15 @@ packages: - supports-color dev: true - /@ember/test-helpers@2.9.3(@babel/core@7.18.6)(ember-source@4.12.0): + /@ember/test-helpers@2.9.3(@babel/core@7.18.6)(@glint/environment-ember-loose@1.0.2)(@glint/template@1.0.2)(ember-source@4.12.0): resolution: {integrity: sha512-ejVg4Dj+G/6zyLvQsYOvmGiOLU6AS94tY4ClaO1E2oVvjjtVJIRmVLFN61I+DuyBg9hS3cFoPjQRTZB9MRIbxQ==} engines: {node: 10.* || 12.* || 14.* || 15.* || >= 16.*} peerDependencies: ember-source: '>=3.8.0' dependencies: '@ember/test-waiters': 3.0.2 - '@embroider/macros': 1.13.0 - '@embroider/util': 1.12.0(ember-source@4.12.0) + '@embroider/macros': 1.13.0(@glint/template@1.0.2) + '@embroider/util': 1.12.0(@glint/environment-ember-loose@1.0.2)(@glint/template@1.0.2)(ember-source@4.12.0) broccoli-debug: 0.6.5 broccoli-funnel: 3.0.8 ember-cli-babel: 7.26.11 @@ -1675,27 +1762,22 @@ packages: - supports-color dev: true - /@embroider/addon-dev@1.8.3(ember-source@4.12.0)(rollup@2.77.0): - resolution: {integrity: sha512-h3lv3YNZ0v1vnNc+Nvu6KHIos1A/gwsoTe/F4Y9LNHO+2K8Fx7skpevegBL9Wwb4aGaY9y0hS2xktIfBS0V3Qw==} + /@embroider/addon-dev@4.1.0(@glint/template@1.0.2)(rollup@3.26.3): + resolution: {integrity: sha512-DR9mGlFxcXFIP9jmVbYhy0CwxIzVqMppiIg8at9C+qayr3Wj3SdS7jM95p0kxv3mMgOYs+Z6FsAaj2em6aRs4w==} engines: {node: 12.* || 14.* || >= 16} hasBin: true - peerDependencies: - ember-source: '*' - peerDependenciesMeta: - ember-source: - optional: true dependencies: - '@embroider/core': 1.9.0 + '@embroider/core': 3.2.1(@glint/template@1.0.2) '@rollup/pluginutils': 4.2.1 - assert-never: 1.2.1 - ember-source: 4.12.0(@babel/core@7.18.6)(@glimmer/component@1.1.2)(webpack@5.88.2) + content-tag: 1.0.1 fs-extra: 10.1.0 minimatch: 3.1.2 - rollup-plugin-copy-assets: 2.0.3(rollup@2.77.0) + rollup-plugin-copy-assets: 2.0.3(rollup@3.26.3) rollup-plugin-delete: 2.0.0 walk-sync: 3.0.0 yargs: 17.7.2 transitivePeerDependencies: + - '@glint/template' - bufferutil - canvas - rollup @@ -1720,7 +1802,6 @@ packages: semver: 7.5.4 transitivePeerDependencies: - supports-color - dev: true /@embroider/babel-loader-8@2.0.0(@embroider/core@2.1.1)(supports-color@8.1.1)(webpack@5.78.0): resolution: {integrity: sha512-a1bLodfox8JEgNHuhiIBIcXJ4b8NNnKWYkMIpJx216pn80Jf1jcFosQpxnqC8hYHrnG0XRKzQ9zJYgJXoa1wfg==} @@ -1787,8 +1868,8 @@ packages: - utf-8-validate dev: true - /@embroider/core@1.9.0: - resolution: {integrity: sha512-fjPb1pU7a+V9clpfBCa8CHdxbz7hr6azwNw/DqRQIMM272nrOPml65YVsBE24z7NrHdkqHjvmvDQ+qtl6oBhPw==} + /@embroider/core@2.1.1: + resolution: {integrity: sha512-N4rz+r8WjHYmwprvBYC0iUT4EWNpdDjF7JLl8PEYlWbhXDEJL+Ma/aP78S7spMhIpJX9SHK7nbgNxmZAqAe34A==} engines: {node: 12.* || 14.* || >= 16} dependencies: '@babel/core': 7.18.6(supports-color@8.1.1) @@ -1797,11 +1878,11 @@ packages: '@babel/plugin-transform-runtime': 7.22.9(@babel/core@7.18.6) '@babel/runtime': 7.22.6 '@babel/traverse': 7.22.8(supports-color@8.1.1) - '@embroider/macros': 1.9.0 - '@embroider/shared-internals': 1.8.3 + '@embroider/macros': 1.10.0 + '@embroider/shared-internals': 2.0.0 assert-never: 1.2.1 babel-import-util: 1.4.1 - babel-plugin-ember-template-compilation: 1.0.2 + babel-plugin-ember-template-compilation: 2.1.1 broccoli-node-api: 1.7.0 broccoli-persistent-filter: 3.1.3 broccoli-plugin: 4.0.7 @@ -1818,10 +1899,8 @@ packages: lodash: 4.17.21 resolve: 1.22.2 resolve-package-path: 4.0.3 - strip-bom: 4.0.0 typescript-memoize: 1.1.1 walk-sync: 3.0.0 - wrap-legacy-hbs-plugin-if-needed: 1.0.1 transitivePeerDependencies: - bufferutil - canvas @@ -1829,29 +1908,24 @@ packages: - utf-8-validate dev: true - /@embroider/core@2.1.1: - resolution: {integrity: sha512-N4rz+r8WjHYmwprvBYC0iUT4EWNpdDjF7JLl8PEYlWbhXDEJL+Ma/aP78S7spMhIpJX9SHK7nbgNxmZAqAe34A==} + /@embroider/core@3.2.1(@glint/template@1.0.2): + resolution: {integrity: sha512-GhKc9pqPcbKpvUkhTnRqJhr3Pc4xslnzhrGQqBDBNwOZ0/zUU02wpiB+PmiA3+mZFTZNQoUCq4A7vm5dXraQug==} engines: {node: 12.* || 14.* || >= 16} dependencies: '@babel/core': 7.18.6(supports-color@8.1.1) '@babel/parser': 7.22.7 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.18.6) - '@babel/plugin-transform-runtime': 7.22.9(@babel/core@7.18.6) - '@babel/runtime': 7.22.6 '@babel/traverse': 7.22.8(supports-color@8.1.1) - '@embroider/macros': 1.10.0 - '@embroider/shared-internals': 2.0.0 + '@embroider/macros': 1.13.1(@glint/template@1.0.2) + '@embroider/shared-internals': 2.4.0 assert-never: 1.2.1 - babel-import-util: 1.4.1 babel-plugin-ember-template-compilation: 2.1.1 broccoli-node-api: 1.7.0 broccoli-persistent-filter: 3.1.3 broccoli-plugin: 4.0.7 broccoli-source: 3.0.1 debug: 4.3.4(supports-color@8.1.1) - escape-string-regexp: 4.0.0 fast-sourcemap-concat: 1.4.0 - filesize: 5.0.3 + filesize: 10.0.7 fs-extra: 9.1.0 fs-tree-diff: 2.0.1 handlebars: 4.7.7 @@ -1863,6 +1937,7 @@ packages: typescript-memoize: 1.1.1 walk-sync: 3.0.0 transitivePeerDependencies: + - '@glint/template' - bufferutil - canvas - supports-color @@ -1880,20 +1955,6 @@ packages: webpack: 5.78.0 dev: true - /@embroider/macros@0.39.1: - resolution: {integrity: sha512-2T8g/M3JIfW+qf7HJ2zYBJ7EnxNyi3BzfAozAeqZhiUW0uppP5J9cKYevWAiAEaOFmVf1oGv5KrDgl0Tp9IKdQ==} - engines: {node: 10.* || 12.* || >= 14} - dependencies: - '@embroider/shared-internals': 0.39.1 - assert-never: 1.2.1 - ember-cli-babel: 7.26.11 - lodash: 4.17.21 - resolve: 1.22.2 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - dev: false - /@embroider/macros@1.0.0: resolution: {integrity: sha512-RutDJ27j1eFQulyv83yJm27oSypsMd/UZyy62Q0NU00TIsIgQPCXaDiGIONWcJuAAVbtBRP3X4LMvaBAeq5g+A==} engines: {node: 12.* || 14.* || >= 16} @@ -1925,7 +1986,7 @@ packages: - supports-color dev: true - /@embroider/macros@1.13.0: + /@embroider/macros@1.13.0(@glint/template@1.0.2): resolution: {integrity: sha512-V89lvlNPIjcvbuew+FLxcCcgdPO0cZrgHHmX6dHO3TpiweC5G6DN4/QogvdnSprPvWOMQS9u3bSFmR7DBkmSgg==} engines: {node: 12.* || 14.* || >= 16} peerDependencies: @@ -1935,6 +1996,7 @@ packages: optional: true dependencies: '@embroider/shared-internals': 2.3.0 + '@glint/template': 1.0.2 assert-never: 1.2.1 babel-import-util: 2.0.0 ember-cli-babel: 7.26.11 @@ -1945,13 +2007,19 @@ packages: transitivePeerDependencies: - supports-color - /@embroider/macros@1.9.0: - resolution: {integrity: sha512-12ElrRT+mX3aSixGHjHnfsnyoH1hw5nM+P+Ax0ITZdp6TaAvWZ8dENnVHltdnv4ssHiX0EsVEXmqbIIdMN4nLA==} + /@embroider/macros@1.13.1(@glint/template@1.0.2): + resolution: {integrity: sha512-4htraP/rNIht8uCxXoc59Bw2EsBFfc4YUQD9XSpzJ4xUr1V0GQf9wL/noeSuYSxIhwRfZOErnJhsdyf1hH+I/A==} engines: {node: 12.* || 14.* || >= 16} + peerDependencies: + '@glint/template': ^1.0.0 + peerDependenciesMeta: + '@glint/template': + optional: true dependencies: - '@embroider/shared-internals': 1.8.3 + '@embroider/shared-internals': 2.4.0 + '@glint/template': 1.0.2 assert-never: 1.2.1 - babel-import-util: 1.4.1 + babel-import-util: 2.0.0 ember-cli-babel: 7.26.11 find-up: 5.0.0 lodash: 4.17.21 @@ -1959,20 +2027,6 @@ packages: semver: 7.5.4 transitivePeerDependencies: - supports-color - dev: true - - /@embroider/shared-internals@0.39.1: - resolution: {integrity: sha512-fpENfZqPWd/JUlmpAW1pN967rxSoUg7dTGmkgtAt+UZQh/d4XMeyUGGHTkRToboKa0W19xRu64RZ9LT94xUkeQ==} - engines: {node: 10.* || 12.* || >= 14} - dependencies: - ember-rfc176-data: 0.3.18 - fs-extra: 7.0.1 - lodash: 4.17.21 - pkg-up: 3.1.0 - resolve-package-path: 1.2.7 - semver: 7.5.4 - typescript-memoize: 1.1.1 - dev: false /@embroider/shared-internals@1.0.0: resolution: {integrity: sha512-Vx3dmejJxI5MG/qC7or3EUZY0AZBSBNOAR50PYotX3LxUSb4lAm5wISPnFbwEY4bbo2VhL/6XtWjMv8ZMcaP+g==} @@ -1998,6 +2052,7 @@ packages: resolve-package-path: 4.0.3 semver: 7.5.4 typescript-memoize: 1.1.1 + dev: false /@embroider/shared-internals@2.0.0: resolution: {integrity: sha512-qZ2/xky9mWm5YC6noOa6AiAwgISEQ78YTZNv4SNu2PFgEK/H+Ha/3ddngzGSsnXkVnIHZyxIBzhxETonQYHY9g==} @@ -2029,6 +2084,22 @@ packages: transitivePeerDependencies: - supports-color + /@embroider/shared-internals@2.4.0: + resolution: {integrity: sha512-pFE05ebenWMC9XAPRjadYCXXb6VmqjkhYN5uqkhPo+VUmMHnx7sZYYxqGjxfVuhC/ghS/BNlOffOCXDOoE7k7g==} + engines: {node: 12.* || 14.* || >= 16} + dependencies: + babel-import-util: 2.0.0 + debug: 4.3.4(supports-color@8.1.1) + ember-rfc176-data: 0.3.18 + fs-extra: 9.1.0 + js-string-escape: 1.0.1 + lodash: 4.17.21 + resolve-package-path: 4.0.3 + semver: 7.5.4 + typescript-memoize: 1.1.1 + transitivePeerDependencies: + - supports-color + /@embroider/test-setup@1.8.3: resolution: {integrity: sha512-BCCbBG7UWkCw+cQ401Ip6LnqTRaQDeKImxR+e7Q4oP6H4EBj7p4iGR1z6fhMy4NNyXKPB6jk3bGa9bTiiNoEAw==} engines: {node: 12.* || 14.* || >= 16} @@ -2037,18 +2108,29 @@ packages: resolve: 1.22.2 dev: true - /@embroider/util@0.39.1: - resolution: {integrity: sha512-3sQlpEjOXt03sId8ZYGWjm6SdQaR78Ppa6LwLon76kYsDM8J2hRXY1Zcpt1rKTSuOyXs/0Pc5+ri1MNfJKD3DA==} - engines: {node: 10.* || >= 12} + /@embroider/util@1.12.0(@glint/environment-ember-loose@1.0.2)(@glint/template@1.0.2)(ember-source@4.12.0): + resolution: {integrity: sha512-P4M1QADEH9ceIYC9mwHeV+6DDgEIQQYFfZi728nVKqTAxakXoiLgu/BCyQmEGyow9fYEPYaC1boDCZxW2JQAXg==} + engines: {node: 14.* || >= 16} + peerDependencies: + '@glint/environment-ember-loose': ^1.0.0 + '@glint/template': ^1.0.0 + ember-source: '*' + peerDependenciesMeta: + '@glint/environment-ember-loose': + optional: true + '@glint/template': + optional: true dependencies: - '@embroider/macros': 0.39.1 - broccoli-funnel: github.com/ef4/broccoli-funnel/c70d060076e14793e8495571f304a976afc754ac + '@embroider/macros': 1.13.1(@glint/template@1.0.2) + '@glint/environment-ember-loose': 1.0.2(@glimmer/component@1.1.2)(@glint/template@1.0.2)(ember-cli-htmlbars@6.2.0)(ember-modifier@4.1.0) + '@glint/template': 1.0.2 + broccoli-funnel: 3.0.8 ember-cli-babel: 7.26.11 + ember-source: 4.12.0(@babel/core@7.18.6)(@glimmer/component@1.1.2)(webpack@5.78.0) transitivePeerDependencies: - supports-color - dev: false - /@embroider/util@1.12.0(ember-source@4.12.0): + /@embroider/util@1.12.0(@glint/environment-ember-loose@1.0.2)(@glint/template@1.0.2)(ember-source@4.12.3): resolution: {integrity: sha512-P4M1QADEH9ceIYC9mwHeV+6DDgEIQQYFfZi728nVKqTAxakXoiLgu/BCyQmEGyow9fYEPYaC1boDCZxW2JQAXg==} engines: {node: 14.* || >= 16} peerDependencies: @@ -2061,12 +2143,15 @@ packages: '@glint/template': optional: true dependencies: - '@embroider/macros': 1.13.0 + '@embroider/macros': 1.13.1(@glint/template@1.0.2) + '@glint/environment-ember-loose': 1.0.2(@glimmer/component@1.1.2)(@glint/template@1.0.2)(ember-cli-htmlbars@6.2.0)(ember-modifier@4.1.0) + '@glint/template': 1.0.2 broccoli-funnel: 3.0.8 ember-cli-babel: 7.26.11 - ember-source: 4.12.0(@babel/core@7.18.6)(@glimmer/component@1.1.2)(webpack@5.78.0) + ember-source: 4.12.3(@babel/core@7.18.6)(@glimmer/component@1.1.2)(@glint/template@1.0.2)(webpack@5.88.2) transitivePeerDependencies: - supports-color + dev: false /@embroider/webpack@2.1.1(@embroider/core@2.1.1)(webpack@5.78.0): resolution: {integrity: sha512-1IzXXexv/QxDyk4N6kamtiTk92HszlaQZXGB+xhnRCMY4F7Hgxad4gSPvnSy/oSkbHTMWSGjCTS5e4tQcUC8Cg==} @@ -2104,6 +2189,16 @@ packages: - utf-8-validate dev: true + /@eslint-community/eslint-utils@4.4.0(eslint@7.32.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: 7.32.0 + eslint-visitor-keys: 3.4.1 + dev: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.37.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2183,13 +2278,6 @@ packages: /@glimmer/di@0.1.11: resolution: {integrity: sha512-moRwafNDwHTnTHzyyZC9D+mUSvYrs1Ak0tRPjjmCghdoHHIvMshVbEnwKb/1WmW5CUlKc2eL9rlAV32n3GiItg==} - /@glimmer/encoder@0.42.2: - resolution: {integrity: sha512-8xkdly0i0BP5HMI0suPB9ly0AnEq8x9Z8j3Gee1HYIovM5VLNtmh7a8HsaHYRs/xHmBEZcqtr8JV89w6F59YMQ==} - dependencies: - '@glimmer/interfaces': 0.42.2 - '@glimmer/vm': 0.42.2 - dev: true - /@glimmer/env@0.1.7: resolution: {integrity: sha512-JKF/a9I9jw6fGoz8kA7LEQslrwJ5jms5CXhu/aqkBWk+PmZ6pTl8mlb/eJ/5ujBGTiQzBhy5AIWF712iA+4/mw==} @@ -2199,33 +2287,11 @@ packages: '@glimmer/env': 0.1.7 dev: true - /@glimmer/interfaces@0.42.2: - resolution: {integrity: sha512-7LOuQd02cxxNNHChzdHMAU8/qOeQvTro141CU5tXITP7z6aOv2D2gkFdau97lLQiVxezGrh8J7h8GCuF7TEqtg==} - dev: true - /@glimmer/interfaces@0.84.3: resolution: {integrity: sha512-dk32ykoNojt0mvEaIW6Vli5MGTbQo58uy3Epj7ahCgTHmWOKuw/0G83f2UmFprRwFx689YTXG38I/vbpltEjzg==} dependencies: '@simple-dom/interface': 1.4.0 - /@glimmer/low-level@0.42.2: - resolution: {integrity: sha512-s+Q44SnKdTBTnkgX0deBlVNnNPVas+Pg8xEnwky9VrUqOHKsIZRrPgfVULeC6bIdFXtXOKm5CjTajhb9qnQbXQ==} - dev: true - - /@glimmer/program@0.42.2: - resolution: {integrity: sha512-XpQ6EYzA1VL9ESKoih5XW5JftFmlRvwy3bF/I1ABOa3yLIh8mApEwrRI/sIHK0Nv5s1j0uW4itVF196WxnJXgw==} - dependencies: - '@glimmer/encoder': 0.42.2 - '@glimmer/interfaces': 0.42.2 - '@glimmer/util': 0.42.2 - dev: true - - /@glimmer/reference@0.42.2: - resolution: {integrity: sha512-XuhbRjr3M9Q/DP892jGxVfPE6jaGGHu5w9ppGMnuTY7Vm/x+A+68MCiaREhDcEwJlzGg4UkfVjU3fdgmUIrc5Q==} - dependencies: - '@glimmer/util': 0.42.2 - dev: true - /@glimmer/reference@0.84.3: resolution: {integrity: sha512-lV+p/aWPVC8vUjmlvYVU7WQJsLh319SdXuAWoX/SE3pq340BJlAJiEcAc6q52y9JNhT57gMwtjMX96W5Xcx/qw==} dependencies: @@ -2236,27 +2302,6 @@ packages: '@glimmer/validator': 0.84.3 dev: true - /@glimmer/runtime@0.42.2: - resolution: {integrity: sha512-52LVZJsLKM3GzI3TEmYcw2LdI9Uk0jotISc3w2ozQBWvkKoYxjDNvI/gsjyMpenj4s7FcG2ggOq0x4tNFqm1GA==} - dependencies: - '@glimmer/interfaces': 0.42.2 - '@glimmer/low-level': 0.42.2 - '@glimmer/program': 0.42.2 - '@glimmer/reference': 0.42.2 - '@glimmer/util': 0.42.2 - '@glimmer/vm': 0.42.2 - '@glimmer/wire-format': 0.42.2 - dev: true - - /@glimmer/syntax@0.42.2: - resolution: {integrity: sha512-SR26SmF/Mb5o2cc4eLHpOyoX5kwwXP4KRhq4fbWfrvan74xVWA38PLspPCzwGhyVH/JsE7tUEPMjSo2DcJge/Q==} - dependencies: - '@glimmer/interfaces': 0.42.2 - '@glimmer/util': 0.42.2 - handlebars: 4.7.7 - simple-html-tokenizer: 0.5.11 - dev: true - /@glimmer/syntax@0.84.3: resolution: {integrity: sha512-ioVbTic6ZisLxqTgRBL2PCjYZTFIwobifCustrozRU2xGDiYvVIL0vt25h2c1ioDsX59UgVlDkIK4YTAQQSd2A==} dependencies: @@ -2272,10 +2317,6 @@ packages: '@glimmer/validator': 0.44.0 dev: true - /@glimmer/util@0.42.2: - resolution: {integrity: sha512-Heck0baFSaWDanCYtmOcLeaz7v+rSqI8ovS7twrp2/FWEteb3Ze5sWQ2BEuSAG23L/k/lzVwYM/MY7ZugxBpaA==} - dev: true - /@glimmer/util@0.44.0: resolution: {integrity: sha512-duAsm30uVK9jSysElCbLyU6QQYO2X9iLDLBIBUcCqck9qN1o3tK2qWiHbGK5d6g8E2AJ4H88UrfElkyaJlGrwg==} @@ -2304,20 +2345,87 @@ packages: transitivePeerDependencies: - '@babel/core' - /@glimmer/vm@0.42.2: - resolution: {integrity: sha512-D2MNU5glICLqvet5SfVPrv+l6JNK2TR+CdQhch1Ew+btOoqlW+2LIJIF/5wLb1POjIMEkt+78t/7RN0mDFXGzw==} + /@glint/core@1.0.2(typescript@5.1.6): + resolution: {integrity: sha512-0bVt/lT/NurpD8nBG9RTPKYlcpg51UDGCKgLoBEFOiTXv3aCSxAVKPud1IYaitGBKE0C+s5pl2PHkgptotVS+w==} + hasBin: true + peerDependencies: + typescript: '>=4.8.0' dependencies: - '@glimmer/interfaces': 0.42.2 - '@glimmer/util': 0.42.2 + '@glimmer/syntax': 0.84.3 + escape-string-regexp: 4.0.0 + semver: 7.5.4 + silent-error: 1.1.1 + typescript: 5.1.6 + uuid: 8.3.2 + vscode-languageserver: 8.1.0 + vscode-languageserver-textdocument: 1.0.8 + vscode-uri: 3.0.7 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color dev: true - /@glimmer/wire-format@0.42.2: - resolution: {integrity: sha512-IqUo6mdJ7GRsK7KCyZxrc17ioSg9RBniEnb418ZMQxsV/WBv9NQ359MuClUck2M24z1AOXo4TerUw0U7+pb1/A==} + /@glint/environment-ember-loose@1.0.2(@glimmer/component@1.1.2)(@glint/template@1.0.2)(ember-cli-htmlbars@6.2.0)(ember-modifier@4.1.0): + resolution: {integrity: sha512-tVLYzAx6c/4vcSaijiAubwR27/+K2tujuozArxeNud58MTwncGxhUkCHSM9xl+wn4VJjsjkzI6+nmzjEdkszSg==} + peerDependencies: + '@glimmer/component': ^1.1.2 + '@glint/template': ^1.0.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 dependencies: - '@glimmer/interfaces': 0.42.2 - '@glimmer/util': 0.42.2 + '@glimmer/component': 1.1.2(@babel/core@7.18.6) + '@glint/template': 1.0.2 + ember-cli-htmlbars: 6.2.0 + ember-modifier: 4.1.0(ember-source@4.12.0) + + /@glint/environment-ember-template-imports@1.0.2(@glint/environment-ember-loose@1.0.2)(@glint/template@1.0.2)(ember-template-imports@3.4.2): + resolution: {integrity: sha512-PAH7obVGXPFU7gLb04JVlqiNtz/j7Q29BBTAyhS7EVy99Hc6CPe+nV6+xhUPKu/S5GOVn3MWehVt/6gXPJ+cnA==} + peerDependencies: + '@glint/environment-ember-loose': ^1.0.2 + '@glint/template': ^1.0.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 + ember-template-imports: ^3.0.0 + peerDependenciesMeta: + '@types/ember__component': + optional: true + '@types/ember__helper': + optional: true + '@types/ember__modifier': + optional: true + '@types/ember__routing': + optional: true + dependencies: + '@glint/environment-ember-loose': 1.0.2(@glimmer/component@1.1.2)(@glint/template@1.0.2)(ember-cli-htmlbars@6.2.0)(ember-modifier@4.1.0) + '@glint/template': 1.0.2 + ember-template-imports: 3.4.2 dev: true + /@glint/template@1.0.2: + resolution: {integrity: sha512-kFWfJrS7XM0NjC5YSN0CWA9FiN0mhUvWVlQ2O7YRz/uhrO8+TVYNLst0WKELRbfCXbdI7wyYQkazNgz6FoL9CA==} + /@handlebars/parser@2.0.0: resolution: {integrity: sha512-EP9uEDZv/L5Qh9IWuMUGJRfwhXJ4h1dqKTT4/3+tY0eu7sPis7xh23j61SYUnNF4vqCQvvUXpDo9Bh/+q1zASA==} @@ -2565,33 +2673,41 @@ packages: '@octokit/openapi-types': 12.11.0 dev: true - /@rollup/plugin-babel@5.3.1(@babel/core@7.18.6)(rollup@2.77.0): - resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} - engines: {node: '>= 10.0.0'} + /@rollup/plugin-babel@6.0.3(@babel/core@7.18.6)(rollup@3.26.3): + resolution: {integrity: sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg==} + engines: {node: '>=14.0.0'} peerDependencies: '@babel/core': ^7.0.0 '@types/babel__core': ^7.1.9 - rollup: ^1.20.0||^2.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0 peerDependenciesMeta: '@types/babel__core': optional: true + rollup: + optional: true dependencies: '@babel/core': 7.18.6(supports-color@8.1.1) '@babel/helper-module-imports': 7.22.5 - '@rollup/pluginutils': 3.1.0(rollup@2.77.0) - rollup: 2.77.0 + '@rollup/pluginutils': 5.0.2(rollup@3.26.3) + rollup: 3.26.3 dev: true - /@rollup/pluginutils@3.1.0(rollup@2.77.0): - resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} - engines: {node: '>= 8.0.0'} + /@rollup/plugin-node-resolve@15.1.0(rollup@3.26.3): + resolution: {integrity: sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA==} + engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0 + rollup: ^2.78.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true dependencies: - '@types/estree': 0.0.39 - estree-walker: 1.0.1 - picomatch: 2.3.1 - rollup: 2.77.0 + '@rollup/pluginutils': 5.0.2(rollup@3.26.3) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.2 + rollup: 3.26.3 dev: true /@rollup/pluginutils@4.2.1: @@ -2602,6 +2718,21 @@ packages: picomatch: 2.3.1 dev: true + /@rollup/pluginutils@5.0.2(rollup@3.26.3): + resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.1 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 3.26.3 + dev: true + /@simple-dom/interface@1.4.0: resolution: {integrity: sha512-l5qumKFWU0S+4ZzMaLXFU8tQZsicHEMEyAxI5kDFGhJsRqDwe0a7/iPA/GdxlGyDKseQQAgIz5kzU7eXTrlSpA==} @@ -2638,6 +2769,10 @@ packages: engines: {node: '>= 6'} dev: true + /@tsconfig/ember@3.0.0: + resolution: {integrity: sha512-KF9F9f4i+8LE31OKS014n5uEDt1mB/6ZvyQz/Mam28nAKDTSMBlOWHgTOj0TY8l4BfbEE+BgUuWCSoUHhb2BMw==} + dev: true + /@types/acorn@4.0.6: resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} dependencies: @@ -2709,10 +2844,6 @@ packages: '@types/estree': 0.0.51 '@types/json-schema': 7.0.12 - /@types/estree@0.0.39: - resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} - dev: true - /@types/estree@0.0.51: resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} @@ -2829,6 +2960,10 @@ packages: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} dev: true + /@types/resolve@1.20.2: + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + dev: true + /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: @@ -2841,6 +2976,14 @@ packages: '@types/glob': 8.1.0 '@types/node': 20.4.5 + /@types/rsvp@4.0.4: + resolution: {integrity: sha512-J3Ol++HCC7/hwZhanDvggFYU/GtxHxE/e7cGRWxR04BF7Tt3TqJZ84BkzQgDxmX0uu8IagiyfmfoUlBACh2Ilg==} + dev: true + + /@types/semver@7.5.0: + resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} + dev: true + /@types/send@0.17.1: resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} dependencies: @@ -2878,69 +3021,212 @@ packages: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} dev: true - /@types/yargs@17.0.24: - resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} + /@types/yargs@17.0.24: + resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + + /@typescript-eslint/eslint-plugin@5.30.6(@typescript-eslint/parser@5.30.6)(eslint@7.32.0)(typescript@5.1.6): + resolution: {integrity: sha512-J4zYMIhgrx4MgnZrSDD7sEnQp7FmhKNOaqaOpaoQ/SfdMfRB/0yvK74hTnvH+VQxndZynqs5/Hn4t+2/j9bADg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/parser': 5.30.6(eslint@7.32.0)(typescript@5.1.6) + '@typescript-eslint/scope-manager': 5.30.6 + '@typescript-eslint/type-utils': 5.30.6(eslint@7.32.0)(typescript@5.1.6) + '@typescript-eslint/utils': 5.30.6(eslint@7.32.0)(typescript@5.1.6) + debug: 4.3.4(supports-color@8.1.1) + eslint: 7.32.0 + functional-red-black-tree: 1.0.1 + ignore: 5.2.4 + regexpp: 3.2.0 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@7.32.0)(typescript@5.1.6): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.6.2 + '@typescript-eslint/parser': 5.62.0(eslint@7.32.0)(typescript@5.1.6) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@7.32.0)(typescript@5.1.6) + '@typescript-eslint/utils': 5.62.0(eslint@7.32.0)(typescript@5.1.6) + debug: 4.3.4(supports-color@8.1.1) + eslint: 7.32.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.37.0)(typescript@5.1.6): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.6.2 + '@typescript-eslint/parser': 5.62.0(eslint@8.37.0)(typescript@5.1.6) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.37.0)(typescript@5.1.6) + '@typescript-eslint/utils': 5.62.0(eslint@8.37.0)(typescript@5.1.6) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.37.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@5.30.6(eslint@7.32.0)(typescript@5.1.6): + resolution: {integrity: sha512-gfF9lZjT0p2ZSdxO70Xbw8w9sPPJGfAdjK7WikEjB3fcUI/yr9maUVEdqigBjKincUYNKOmf7QBMiTf719kbrA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.30.6 + '@typescript-eslint/types': 5.30.6 + '@typescript-eslint/typescript-estree': 5.30.6(typescript@5.1.6) + debug: 4.3.4(supports-color@8.1.1) + eslint: 7.32.0 + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@5.62.0(eslint@7.32.0)(typescript@5.1.6): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) + debug: 4.3.4(supports-color@8.1.1) + eslint: 7.32.0 + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.1.6): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.37.0 + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@5.30.6: + resolution: {integrity: sha512-Hkq5PhLgtVoW1obkqYH0i4iELctEKixkhWLPTYs55doGUKCASvkjOXOd/pisVeLdO24ZX9D6yymJ/twqpJiG3g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.30.6 + '@typescript-eslint/visitor-keys': 5.30.6 + dev: true + + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@types/yargs-parser': 21.0.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/eslint-plugin@5.30.6(@typescript-eslint/parser@5.30.6)(eslint@7.32.0)(typescript@5.1.6): - resolution: {integrity: sha512-J4zYMIhgrx4MgnZrSDD7sEnQp7FmhKNOaqaOpaoQ/SfdMfRB/0yvK74hTnvH+VQxndZynqs5/Hn4t+2/j9bADg==} + /@typescript-eslint/type-utils@5.30.6(eslint@7.32.0)(typescript@5.1.6): + resolution: {integrity: sha512-GFVVzs2j0QPpM+NTDMXtNmJKlF842lkZKDSanIxf+ArJsGeZUIaeT4jGg+gAgHt7AcQSFwW7htzF/rbAh2jaVA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: '*' typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.30.6(eslint@7.32.0)(typescript@5.1.6) - '@typescript-eslint/scope-manager': 5.30.6 - '@typescript-eslint/type-utils': 5.30.6(eslint@7.32.0)(typescript@5.1.6) '@typescript-eslint/utils': 5.30.6(eslint@7.32.0)(typescript@5.1.6) debug: 4.3.4(supports-color@8.1.1) eslint: 7.32.0 - functional-red-black-tree: 1.0.1 - ignore: 5.2.4 - regexpp: 3.2.0 - semver: 7.5.4 tsutils: 3.21.0(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.30.6(eslint@7.32.0)(typescript@5.1.6): - resolution: {integrity: sha512-gfF9lZjT0p2ZSdxO70Xbw8w9sPPJGfAdjK7WikEjB3fcUI/yr9maUVEdqigBjKincUYNKOmf7QBMiTf719kbrA==} + /@typescript-eslint/type-utils@5.62.0(eslint@7.32.0)(typescript@5.1.6): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: '*' typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.30.6 - '@typescript-eslint/types': 5.30.6 - '@typescript-eslint/typescript-estree': 5.30.6(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) + '@typescript-eslint/utils': 5.62.0(eslint@7.32.0)(typescript@5.1.6) debug: 4.3.4(supports-color@8.1.1) eslint: 7.32.0 + tsutils: 3.21.0(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@5.30.6: - resolution: {integrity: sha512-Hkq5PhLgtVoW1obkqYH0i4iELctEKixkhWLPTYs55doGUKCASvkjOXOd/pisVeLdO24ZX9D6yymJ/twqpJiG3g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.30.6 - '@typescript-eslint/visitor-keys': 5.30.6 - dev: true - - /@typescript-eslint/type-utils@5.30.6(eslint@7.32.0)(typescript@5.1.6): - resolution: {integrity: sha512-GFVVzs2j0QPpM+NTDMXtNmJKlF842lkZKDSanIxf+ArJsGeZUIaeT4jGg+gAgHt7AcQSFwW7htzF/rbAh2jaVA==} + /@typescript-eslint/type-utils@5.62.0(eslint@8.37.0)(typescript@5.1.6): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -2949,9 +3235,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/utils': 5.30.6(eslint@7.32.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) + '@typescript-eslint/utils': 5.62.0(eslint@8.37.0)(typescript@5.1.6) debug: 4.3.4(supports-color@8.1.1) - eslint: 7.32.0 + eslint: 8.37.0 tsutils: 3.21.0(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: @@ -2963,6 +3250,11 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /@typescript-eslint/typescript-estree@5.30.6(typescript@5.1.6): resolution: {integrity: sha512-Z7TgPoeYUm06smfEfYF0RBkpF8csMyVnqQbLYiGgmUSTaSXTP57bt8f0UFXstbGxKIreTwQCujtaH0LY9w9B+A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2984,6 +3276,27 @@ packages: - supports-color dev: true + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.6): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/utils@5.30.6(eslint@7.32.0)(typescript@5.1.6): resolution: {integrity: sha512-xFBLc/esUbLOJLk9jKv0E9gD/OH966M40aY9jJ8GiqpSkP2xOV908cokJqqhVd85WoIvHVHYXxSFE4cCSDzVvA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3002,6 +3315,46 @@ packages: - typescript dev: true + /@typescript-eslint/utils@5.62.0(eslint@7.32.0)(typescript@5.1.6): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@7.32.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) + eslint: 7.32.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@5.62.0(eslint@8.37.0)(typescript@5.1.6): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.37.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) + eslint: 8.37.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@typescript-eslint/visitor-keys@5.30.6: resolution: {integrity: sha512-41OiCjdL2mCaSDi2SvYbzFLlqqlm5v1ZW9Ym55wXKL/Rx6OOB1IbuFGo71Fj6Xy90gJDFTlgOS+vbmtGHPTQQA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3010,6 +3363,14 @@ packages: eslint-visitor-keys: 3.4.1 dev: true + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.1 + dev: true + /@webassemblyjs/ast@1.11.1: resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} dependencies: @@ -3632,7 +3993,6 @@ packages: username-sync: 1.0.3 transitivePeerDependencies: - supports-color - dev: true /async-promise-queue@1.0.5: resolution: {integrity: sha512-xi0aQ1rrjPWYmqbwr18rrSKbSaXIeIwSd1J4KAgVfkq8utNbdZoht7GfvfY6swFUAMJ9obkc4WPJmtGwl+B8dw==} @@ -3892,16 +4252,6 @@ packages: dependencies: ember-rfc176-data: 0.3.18 - /babel-plugin-ember-template-compilation@1.0.2: - resolution: {integrity: sha512-4HBMksmlYsWEf/C/n3uW5rkBRbUp4FNaspzdQTAHgLbfCJnkLze8R6i6sUSge48y/Wne7mx+vcImI1o6rlUwXQ==} - engines: {node: '>= 12.*'} - dependencies: - babel-import-util: 1.4.1 - line-column: 1.0.2 - magic-string: 0.26.7 - string.prototype.matchall: 4.0.8 - dev: true - /babel-plugin-ember-template-compilation@2.1.1: resolution: {integrity: sha512-vwEUw7qfwAgwUokQc5xMxrcJMhCu2dVvDDMIXFyOpXwxt+kqZ2FKvXFV+rJjYchIgHH5rBduEtt4Qk1qeZ6RDA==} engines: {node: '>= 12.*'} @@ -4782,7 +5132,6 @@ packages: sync-disk-cache: 2.1.0 transitivePeerDependencies: - supports-color - dev: true /broccoli-plugin@1.3.1: resolution: {integrity: sha512-DW8XASZkmorp+q7J4EeDEZz+LoyKLAd2XZULXyD9l4m9/hAKV3vjHmB1kiUshcWAYMgTP1m2i4NnqCE/23h6AQ==} @@ -4956,6 +5305,11 @@ packages: ieee754: 1.2.1 dev: true + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + /builtins@5.0.1: resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} dependencies: @@ -5706,6 +6060,10 @@ packages: safe-buffer: 5.2.1 dev: true + /content-tag@1.0.1: + resolution: {integrity: sha512-7NqA1EmPLgpahxyz8NdLwJVbBzjwHCOsvrKsl1ISfpNNd2Sy/nPSWj4+1HacDMMm8yYoM3Bj2EiCrC9F4ktifg==} + dev: true + /content-type@1.0.5: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} @@ -6028,6 +6386,11 @@ packages: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true + /defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: @@ -6203,7 +6566,6 @@ packages: dependencies: errlop: 2.2.0 semver: 6.3.1 - dev: true /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} @@ -6212,17 +6574,17 @@ packages: /electron-to-chromium@1.4.471: resolution: {integrity: sha512-GpmGRC1vTl60w/k6YpQ18pSiqnmr0j3un//5TV1idPi6aheNfkT1Ye71tMEabWyNDO6sBMgAR+95Eb0eUUr1tA==} - /ember-auto-import@2.6.3(webpack@5.78.0): + /ember-auto-import@2.6.3(@glint/template@1.0.2)(webpack@5.88.2): resolution: {integrity: sha512-uLhrRDJYWCRvQ4JQ1e64XlSrqAKSd6PXaJ9ZsZI6Tlms9T4DtQFxNXasqji2ZRJBVrxEoLCRYX3RTldsQ0vNGQ==} engines: {node: 12.* || 14.* || >= 16} dependencies: '@babel/core': 7.18.6(supports-color@8.1.1) '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.18.6) - '@babel/plugin-proposal-decorators': 7.21.0(@babel/core@7.18.6) + '@babel/plugin-proposal-decorators': 7.22.7(@babel/core@7.18.6) '@babel/preset-env': 7.22.9(@babel/core@7.18.6) - '@embroider/macros': 1.0.0 + '@embroider/macros': 1.13.0(@glint/template@1.0.2) '@embroider/shared-internals': 2.3.0 - babel-loader: 8.3.0(@babel/core@7.18.6)(webpack@5.78.0) + babel-loader: 8.3.0(@babel/core@7.18.6)(webpack@5.88.2) babel-plugin-ember-modules-api-polyfill: 3.5.0 babel-plugin-ember-template-compilation: 2.1.1 babel-plugin-htmlbars-inline-precompile: 5.3.1 @@ -6232,36 +6594,37 @@ packages: broccoli-merge-trees: 4.2.0 broccoli-plugin: 4.0.7 broccoli-source: 3.0.1 - css-loader: 5.2.7(webpack@5.78.0) + css-loader: 5.2.7(webpack@5.88.2) debug: 4.3.4(supports-color@8.1.1) fs-extra: 10.1.0 fs-tree-diff: 2.0.1 handlebars: 4.7.7 js-string-escape: 1.0.1 lodash: 4.17.21 - mini-css-extract-plugin: 2.7.6(webpack@5.78.0) + mini-css-extract-plugin: 2.7.6(webpack@5.88.2) parse5: 6.0.1 resolve: 1.22.2 resolve-package-path: 4.0.3 semver: 7.5.4 - style-loader: 2.0.0(webpack@5.78.0) + style-loader: 2.0.0(webpack@5.88.2) typescript-memoize: 1.1.1 walk-sync: 3.0.0 transitivePeerDependencies: + - '@glint/template' - supports-color - webpack - /ember-auto-import@2.6.3(webpack@5.88.2): + /ember-auto-import@2.6.3(webpack@5.78.0): resolution: {integrity: sha512-uLhrRDJYWCRvQ4JQ1e64XlSrqAKSd6PXaJ9ZsZI6Tlms9T4DtQFxNXasqji2ZRJBVrxEoLCRYX3RTldsQ0vNGQ==} engines: {node: 12.* || 14.* || >= 16} dependencies: '@babel/core': 7.18.6(supports-color@8.1.1) '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.18.6) - '@babel/plugin-proposal-decorators': 7.22.7(@babel/core@7.18.6) + '@babel/plugin-proposal-decorators': 7.21.0(@babel/core@7.18.6) '@babel/preset-env': 7.22.9(@babel/core@7.18.6) - '@embroider/macros': 1.13.0 + '@embroider/macros': 1.0.0 '@embroider/shared-internals': 2.3.0 - babel-loader: 8.3.0(@babel/core@7.18.6)(webpack@5.88.2) + babel-loader: 8.3.0(@babel/core@7.18.6)(webpack@5.78.0) babel-plugin-ember-modules-api-polyfill: 3.5.0 babel-plugin-ember-template-compilation: 2.1.1 babel-plugin-htmlbars-inline-precompile: 5.3.1 @@ -6271,23 +6634,22 @@ packages: broccoli-merge-trees: 4.2.0 broccoli-plugin: 4.0.7 broccoli-source: 3.0.1 - css-loader: 5.2.7(webpack@5.88.2) + css-loader: 5.2.7(webpack@5.78.0) debug: 4.3.4(supports-color@8.1.1) fs-extra: 10.1.0 fs-tree-diff: 2.0.1 handlebars: 4.7.7 js-string-escape: 1.0.1 lodash: 4.17.21 - mini-css-extract-plugin: 2.7.6(webpack@5.88.2) + mini-css-extract-plugin: 2.7.6(webpack@5.78.0) parse5: 6.0.1 resolve: 1.22.2 resolve-package-path: 4.0.3 semver: 7.5.4 - style-loader: 2.0.0(webpack@5.88.2) + style-loader: 2.0.0(webpack@5.78.0) typescript-memoize: 1.1.1 walk-sync: 3.0.0 transitivePeerDependencies: - - '@glint/template' - supports-color - webpack @@ -6408,7 +6770,6 @@ packages: walk-sync: 2.2.0 transitivePeerDependencies: - supports-color - dev: true /ember-cli-inject-live-reload@2.1.0: resolution: {integrity: sha512-YV5wYRD5PJHmxaxaJt18u6LE6Y+wo455BnmcpN+hGNlChy2piM9/GMvYgTAz/8Vin8RJ5KekqP/w/NEaRndc/A==} @@ -6805,7 +7166,6 @@ packages: ember-source: 4.12.0(@babel/core@7.18.6)(@glimmer/component@1.1.2)(webpack@5.78.0) transitivePeerDependencies: - supports-color - dev: true /ember-page-title@7.0.0: resolution: {integrity: sha512-oq6+HYbeVD/BnxIO5AkP4gWlsatdgW2HFO10F8+XQiJZrwa7cC7Wm54JNGqQkavkDQTgNSiy1Fe2NILJ14MmAg==} @@ -6824,7 +7184,7 @@ packages: ember-source: '>=3.28' qunit: ^2.13.0 dependencies: - '@ember/test-helpers': 2.9.3(@babel/core@7.18.6)(ember-source@4.12.0) + '@ember/test-helpers': 2.9.3(@babel/core@7.18.6)(@glint/environment-ember-loose@1.0.2)(@glint/template@1.0.2)(ember-source@4.12.0) broccoli-funnel: 3.0.8 broccoli-merge-trees: 3.0.2 common-tags: 1.8.2 @@ -6841,7 +7201,7 @@ packages: - webpack dev: true - /ember-resolver@10.0.0(@ember/string@3.0.1)(ember-source@4.12.0): + /ember-resolver@10.0.0(@ember/string@3.1.1)(ember-source@4.12.0): resolution: {integrity: sha512-e99wFJ4ZpleJ6JMEcIk4WEYP4s3nc+9/iNSXtwBHXC8ADJHJTeN3HjnT/eEbFbswdui4FYxIYuK+UCdP09811Q==} engines: {node: 14.* || 16.* || >= 18} peerDependencies: @@ -6851,7 +7211,7 @@ packages: ember-source: optional: true dependencies: - '@ember/string': 3.0.1 + '@ember/string': 3.1.1 ember-cli-babel: 7.26.11 ember-source: 4.12.0(@babel/core@7.18.6)(@glimmer/component@1.1.2)(webpack@5.78.0) transitivePeerDependencies: @@ -6919,8 +7279,8 @@ packages: - supports-color - webpack - /ember-source@4.12.0(@babel/core@7.18.6)(@glimmer/component@1.1.2)(webpack@5.88.2): - resolution: {integrity: sha512-h0lV902A4Mny2eiqXPy15uXXoCc7BnUegE4axLAy4IoxEkJ1o5h0aLJFiB4Tzb1htx8vgHjJz//Y5Jig7NSDTw==} + /ember-source@4.12.3(@babel/core@7.18.6)(@glimmer/component@1.1.2)(@glint/template@1.0.2)(webpack@5.88.2): + resolution: {integrity: sha512-UuFpMWf931pEWBPuujkaMYhsoPvFyZc+tMYjlUn7um20uL+hWs+k2n/TxMVuxydSzJLnxrXz81nTwbYIlgRWdw==} engines: {node: '>= 14.*'} peerDependencies: '@glimmer/component': ^1.1.2 @@ -6930,6 +7290,7 @@ packages: '@ember/edition-utils': 1.2.0 '@glimmer/component': 1.1.2(@babel/core@7.18.6) '@glimmer/vm-babel-plugins': 0.84.2(@babel/core@7.18.6) + '@simple-dom/interface': 1.4.0 babel-plugin-debug-macros: 0.3.4(@babel/core@7.18.6) babel-plugin-filter-imports: 4.0.0 broccoli-concat: 4.2.5 @@ -6938,7 +7299,7 @@ packages: broccoli-funnel: 3.0.8 broccoli-merge-trees: 4.2.0 chalk: 4.1.2 - ember-auto-import: 2.6.3(webpack@5.88.2) + ember-auto-import: 2.6.3(@glint/template@1.0.2)(webpack@5.88.2) ember-cli-babel: 7.26.11 ember-cli-get-component-path-option: 1.0.0 ember-cli-is-package-missing: 1.0.0 @@ -7151,7 +7512,6 @@ packages: /errlop@2.2.0: resolution: {integrity: sha512-e64Qj9+4aZzjzzFpZC7p5kmm/ccCrbLhAJplhsDXQFs87XTsXwOpH4s1Io2s90Tau/8r2j9f4l/thhDevRjzxw==} engines: {node: '>=0.8'} - dev: true /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -7342,6 +7702,35 @@ packages: - supports-color dev: true + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint@7.32.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.62.0(eslint@7.32.0)(typescript@5.1.6) + debug: 3.2.7 + eslint: 7.32.0 + eslint-import-resolver-node: 0.3.7 + transitivePeerDependencies: + - supports-color + dev: true + /eslint-plugin-decorator-position@4.0.0(eslint@7.32.0): resolution: {integrity: sha512-aopU1aq6yFWuepkx6k0M3EUduIkTZbENqL8uIZp08wyH6RCbO9k3hHfOffpeCTLyxvTX9f9eHMqASW+smzTc6A==} engines: {node: '>=8.3'} @@ -7447,6 +7836,37 @@ packages: - supports-color dev: true + /eslint-plugin-import@2.26.0(@typescript-eslint/parser@5.62.0)(eslint@7.32.0): + resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 5.62.0(eslint@7.32.0)(typescript@5.1.6) + array-includes: 3.1.6 + array.prototype.flat: 1.3.1 + debug: 2.6.9(supports-color@8.1.1) + doctrine: 2.1.0 + eslint: 7.32.0 + eslint-import-resolver-node: 0.3.7 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint@7.32.0) + has: 1.0.3 + is-core-module: 2.12.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.6 + resolve: 1.22.2 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + /eslint-plugin-json@3.1.0: resolution: {integrity: sha512-MrlG2ynFEHe7wDGwbUuFPsaT2b1uhuEFhJ+W1f1u+1C2EkXmTYJp4B1aAdQQ8M+CC3t//N/oRKiIVw14L2HR1g==} engines: {node: '>=12.0'} @@ -7780,10 +8200,6 @@ packages: resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} dev: true - /estree-walker@1.0.1: - resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} - dev: true - /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true @@ -8181,6 +8597,7 @@ packages: engines: {node: '>=6'} dependencies: locate-path: 3.0.0 + dev: true /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} @@ -8842,6 +9259,10 @@ packages: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + /growly@1.3.0: resolution: {integrity: sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==} dev: true @@ -9418,6 +9839,13 @@ packages: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} dev: true + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -9548,6 +9976,10 @@ packages: '@babel/runtime': 7.22.6 dev: true + /is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + dev: true + /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} @@ -9746,7 +10178,6 @@ packages: binaryextensions: 2.3.0 editions: 2.3.1 textextensions: 2.6.0 - dev: true /jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} @@ -10066,6 +10497,7 @@ packages: dependencies: p-locate: 3.0.0 path-exists: 3.0.0 + dev: true /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} @@ -10311,13 +10743,6 @@ packages: dependencies: sourcemap-codec: 1.4.8 - /magic-string@0.26.7: - resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} - engines: {node: '>=12'} - dependencies: - sourcemap-codec: 1.4.8 - dev: true - /magic-string@0.30.1: resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==} engines: {node: '>=12'} @@ -10835,6 +11260,10 @@ packages: - supports-color dev: true + /natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: true + /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true @@ -11242,6 +11671,7 @@ packages: engines: {node: '>=6'} dependencies: p-limit: 2.3.0 + dev: true /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} @@ -11467,6 +11897,7 @@ packages: engines: {node: '>=8'} dependencies: find-up: 3.0.0 + dev: true /portfinder@1.0.32: resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} @@ -12243,13 +12674,13 @@ packages: dependencies: glob: 7.2.3 - /rollup-plugin-copy-assets@2.0.3(rollup@2.77.0): + /rollup-plugin-copy-assets@2.0.3(rollup@3.26.3): resolution: {integrity: sha512-ETShhQGb9SoiwcNrvb3BhUNSGR89Jao0+XxxfzzLW1YsUzx8+rMO4z9oqWWmo6OHUmfNQRvqRj0cAyPkS9lN9w==} peerDependencies: rollup: '>=1.1.2' dependencies: fs-extra: 7.0.1 - rollup: 2.77.0 + rollup: 3.26.3 dev: true /rollup-plugin-delete@2.0.0: @@ -12282,9 +12713,9 @@ packages: sourcemap-codec: 1.4.8 dev: true - /rollup@2.77.0: - resolution: {integrity: sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g==} - engines: {node: '>=10.0.0'} + /rollup@3.26.3: + resolution: {integrity: sha512-7Tin0C8l86TkpcMtXvQu6saWH93nhG3dGQ1/+l5V2TDMceTxO7kDiK6GzbfLWNNxqJXm591PcEZUozZm51ogwQ==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: fsevents: 2.3.2 @@ -13218,7 +13649,6 @@ packages: username-sync: 1.0.3 transitivePeerDependencies: - supports-color - dev: true /table@6.8.1: resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} @@ -14019,6 +14449,18 @@ packages: vscode-uri: 3.0.7 dev: true + /vscode-jsonrpc@8.1.0: + resolution: {integrity: sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==} + engines: {node: '>=14.0.0'} + dev: true + + /vscode-languageserver-protocol@3.17.3: + resolution: {integrity: sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==} + dependencies: + vscode-jsonrpc: 8.1.0 + vscode-languageserver-types: 3.17.3 + dev: true + /vscode-languageserver-textdocument@1.0.8: resolution: {integrity: sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==} dev: true @@ -14027,6 +14469,13 @@ packages: resolution: {integrity: sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==} dev: true + /vscode-languageserver@8.1.0: + resolution: {integrity: sha512-eUt8f1z2N2IEUDBsKaNapkz7jl5QpskN2Y0G01T/ItMxBxw1fJwvtySGB9QMecatne8jFIWJGWI61dWjyTLQsw==} + hasBin: true + dependencies: + vscode-languageserver-protocol: 3.17.3 + dev: true + /vscode-nls@5.2.0: resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} dev: true @@ -14346,15 +14795,6 @@ packages: strip-ansi: 6.0.1 dev: true - /wrap-legacy-hbs-plugin-if-needed@1.0.1: - resolution: {integrity: sha512-aJjXe5WwrY0u0dcUgKW3m2SGnxosJ66LLm/QaG0YMHqgA6+J2xwAFZfhSLsQ2BmO5x8PTH+OIxoAXuGz3qBA7A==} - dependencies: - '@glimmer/reference': 0.42.2 - '@glimmer/runtime': 0.42.2 - '@glimmer/syntax': 0.42.2 - '@simple-dom/interface': 1.4.0 - dev: true - /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -14519,7 +14959,7 @@ packages: engines: {node: '>=12.20'} dev: true - file:ember-element-helper(ember-source@4.12.0): + file:ember-element-helper(@glint/environment-ember-loose@1.0.2)(@glint/template@1.0.2)(ember-source@4.12.0): resolution: {directory: ember-element-helper, type: directory} id: file:ember-element-helper name: ember-element-helper @@ -14528,33 +14968,10 @@ packages: ember-source: ^3.8 || ^4.0.0 || >= 5.0.0 dependencies: '@embroider/addon-shim': 1.8.3 - '@embroider/util': 1.12.0(ember-source@4.12.0) + '@embroider/util': 1.12.0(@glint/environment-ember-loose@1.0.2)(@glint/template@1.0.2)(ember-source@4.12.0) ember-source: 4.12.0(@babel/core@7.18.6)(@glimmer/component@1.1.2)(webpack@5.78.0) transitivePeerDependencies: - '@glint/environment-ember-loose' - '@glint/template' - supports-color dev: false - - github.com/ef4/broccoli-funnel/c70d060076e14793e8495571f304a976afc754ac: - resolution: {tarball: https://codeload.github.com/ef4/broccoli-funnel/tar.gz/c70d060076e14793e8495571f304a976afc754ac} - name: broccoli-funnel - version: 2.0.2-ef4.0 - engines: {node: ^4.5 || 6.* || >= 7.*} - dependencies: - array-equal: 1.0.0 - blank-object: 1.0.2 - broccoli-plugin: 1.3.1 - debug: 2.6.9(supports-color@8.1.1) - fast-ordered-set: 1.0.3 - fs-tree-diff: 0.5.9 - heimdalljs: 0.2.6 - minimatch: 3.1.2 - mkdirp: 0.5.6 - path-posix: 1.0.0 - rimraf: 2.7.1 - symlink-or-copy: 1.3.1 - walk-sync: 2.2.0 - transitivePeerDependencies: - - supports-color - dev: false diff --git a/test-app/app/components/element-receiver.hbs b/test-app/app/components/element-receiver.hbs index dcfe659d..547e7bd7 100644 --- a/test-app/app/components/element-receiver.hbs +++ b/test-app/app/components/element-receiver.hbs @@ -1 +1,4 @@ -<@tag id='content' ...attributes>{{yield}} +{{#let @tag as |Tag|}} + {{!@glint-ignore}} + {{yield}} +{{/let}} \ No newline at end of file diff --git a/test-app/app/components/element-receiver.ts b/test-app/app/components/element-receiver.ts new file mode 100644 index 00000000..f6e74502 --- /dev/null +++ b/test-app/app/components/element-receiver.ts @@ -0,0 +1,14 @@ +import Component from '@glimmer/component'; +import type { ElementSignature, ElementFromTagName } from 'ember-element-helper'; + +interface ElementReceiverSignature { + Element: ElementFromTagName; + Args: { + tag: ElementSignature['Return']; + }; + Blocks: { + default: []; + } +} + +export default class ElementReceiver extends Component> {} diff --git a/test-app/app/controllers/.gitkeep b/test-app/app/controllers/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/test-app/app/helpers/.gitkeep b/test-app/app/helpers/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/test-app/app/models/.gitkeep b/test-app/app/models/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/test-app/app/routes/.gitkeep b/test-app/app/routes/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/test-app/app/templates/application.hbs b/test-app/app/templates/application.hbs new file mode 100644 index 00000000..076d4e34 --- /dev/null +++ b/test-app/app/templates/application.hbs @@ -0,0 +1,3 @@ +{{#let (element "article") as |Article|}} +
Hello there!
+{{/let}} \ No newline at end of file diff --git a/test-app/config/ember-try.js b/test-app/config/ember-try.js index 93fe5fd9..3cc40b5d 100644 --- a/test-app/config/ember-try.js +++ b/test-app/config/ember-try.js @@ -7,22 +7,6 @@ module.exports = async function () { return { usePnpm: true, scenarios: [ - { - name: 'ember-lts-3.24', - npm: { - devDependencies: { - 'ember-resolver': '^8.0.0', - 'ember-source': '~3.24.3', - 'ember-cli': '^4.0.0', - 'ember-qunit': '^5.0.0', - '@ember/test-helpers': '^2.1.0', - 'ember-cli-htmlbars': '^5.0.0', - '@embroider/core': null, - '@embroider/compat': null, - '@embroider/webpack': null, - }, - }, - }, { name: 'ember-lts-3.28', npm: { diff --git a/test-app/ember-cli-build.js b/test-app/ember-cli-build.js index a19af5da..1cd5ad98 100644 --- a/test-app/ember-cli-build.js +++ b/test-app/ember-cli-build.js @@ -1,18 +1,19 @@ 'use strict'; const EmberApp = require('ember-cli/lib/broccoli/ember-app'); +const packageJson = require('./package'); module.exports = function (defaults) { const app = new EmberApp(defaults, { // Add options here + autoImport: { + watchDependencies: Object.keys(packageJson.dependencies), + }, + 'ember-cli-babel': { + enableTypeScriptTransform: true, + }, }); - if (app.env === 'test') { - app.import('node_modules/ember-source/dist/ember-template-compiler.js', { - type: 'test', - }); - } - const { maybeEmbroider } = require('@embroider/test-setup'); return maybeEmbroider(app, { skipBabel: [ diff --git a/test-app/package.json b/test-app/package.json index 814e2098..31ca9938 100644 --- a/test-app/package.json +++ b/test-app/package.json @@ -18,6 +18,7 @@ "lint:fix": "concurrently 'npm:lint:*:fix' --names 'fix:'", "lint:js": "eslint . --cache", "lint:js:fix": "eslint . --fix", + "lint:types": "glint", "start": "ember serve", "test": "ember test" }, @@ -33,7 +34,7 @@ "@babel/eslint-parser": "^7.21.3", "@babel/plugin-proposal-decorators": "^7.21.0", "@ember/optional-features": "^2.0.0", - "@ember/string": "^3.0.1", + "@ember/string": "^3.1.1", "@ember/test-helpers": "^2.9.3", "@embroider/compat": "^2.1.1", "@embroider/core": "^2.1.1", @@ -42,6 +43,13 @@ "@embroider/webpack": "^2.1.1", "@glimmer/component": "^1.1.2", "@glimmer/tracking": "^1.1.2", + "@glint/core": "^1.0.2", + "@glint/environment-ember-loose": "^1.0.2", + "@glint/environment-ember-template-imports": "^1.0.2", + "@glint/template": "^1.0.2", + "@tsconfig/ember": "^3.0.0", + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0", "broccoli-asset-rev": "^3.0.0", "concurrently": "^8.0.1", "ember-auto-import": "^2.6.3", @@ -60,6 +68,7 @@ "ember-resolver": "^10.0.0", "ember-source": "~4.12.0", "ember-source-channel-url": "^3.0.0", + "ember-template-imports": "^3.4.2", "ember-template-lint": "^5.7.2", "ember-try": "^2.0.0", "eslint": "^8.37.0", @@ -79,6 +88,7 @@ "stylelint-config-standard": "^32.0.0", "stylelint-prettier": "^3.0.0", "tracked-built-ins": "^3.1.1", + "typescript": "5.1.6", "webpack": "^5.78.0" }, "engines": { diff --git a/test-app/tsconfig.json b/test-app/tsconfig.json new file mode 100644 index 00000000..5fa230cc --- /dev/null +++ b/test-app/tsconfig.json @@ -0,0 +1,33 @@ +{ + "extends": "@tsconfig/ember/tsconfig.json", + "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 + // work with TypeScript. + "baseUrl": ".", + "paths": { + "test-app/tests/*": [ + "tests/*" + ], + "test-app/*": [ + "app/*" + ], + "*": [ + "types/*" + ] + }, + // for typescript < 5 + "moduleResolution": "NodeNext" + }, + "include": [ + "app/**/*", + "tests/**/*", + "types/**/*" + ] +} \ No newline at end of file diff --git a/test-app/types/global.d.ts b/test-app/types/global.d.ts new file mode 100644 index 00000000..1192f640 --- /dev/null +++ b/test-app/types/global.d.ts @@ -0,0 +1,16 @@ +import 'ember-source/types'; +import 'ember-source/types/preview'; + +import '@glint/environment-ember-loose'; +import '@glint/environment-ember-loose/native-integration'; + +import ElementHelperRegistry from 'ember-element-helper/template-registry'; + +declare module '@glint/environment-ember-loose/registry' { + export default interface Registry extends ElementHelperRegistry { + // Examples + // state: HelperLike<{ Args: {}, Return: State }>; + // attachShadow: ModifierLike<{ Args: { Positional: [State['update']]}}>; + // welcome: typeof Welcome; + } +}