From 2fbdefef1a42bb84892d41d74cab69d91b4933cb Mon Sep 17 00:00:00 2001 From: gossi Date: Tue, 25 Jul 2023 18:59:39 +0200 Subject: [PATCH 01/19] adding glint support --- .gitignore | 1 + ember-element-helper/babel.config.json | 1 + ember-element-helper/package.json | 29 ++++++++++++---- .../{rollup.config.js => rollup.config.mjs} | 34 +++++++++---------- .../src/helpers/{element.js => element.ts} | 28 ++++++++++----- ember-element-helper/src/index.js | 0 ember-element-helper/src/index.ts | 3 ++ ember-element-helper/tsconfig.json | 17 ++++++++++ ember-element-helper/types/index.d.ts | 2 ++ 9 files changed, 83 insertions(+), 32 deletions(-) rename ember-element-helper/{rollup.config.js => rollup.config.mjs} (80%) rename ember-element-helper/src/helpers/{element.js => element.ts} (67%) delete mode 100644 ember-element-helper/src/index.js create mode 100644 ember-element-helper/src/index.ts create mode 100644 ember-element-helper/tsconfig.json create mode 100644 ember-element-helper/types/index.d.ts 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/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..0fb38752 100644 --- a/ember-element-helper/package.json +++ b/ember-element-helper/package.json @@ -11,11 +11,19 @@ "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" @@ -23,7 +31,7 @@ "scripts": { "start": "concurrently 'npm:watch:*'", "build": "concurrently 'npm:build:*'", - "build:js": "rollup -c ./rollup.config.js", + "build:js": "rollup -c", "build:docs": "cp ../README.md ./README.md", "watch:js": "rollup -c --watch --no-watch.clearScreen", "lint": "concurrently 'npm:lint:js'", @@ -44,9 +52,18 @@ "@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": "3.2.0", "@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 +72,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..2e978007 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,19 @@ 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']), + + // Follow the V2 Addon rules about dependencies. Your code can import from + // `dependencies` and `peerDependencies` as well as standard Ember-provided + // package names. + addon.dependencies(), + + 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,14 +39,10 @@ export default { // By default, this will load the actual babel config from the file // babel.config.json. babel({ + extensions, babelHelpers: 'bundled', }), - // Follow the V2 Addon rules about dependencies. Your code can import from - // `dependencies` and `peerDependencies` as well as standard Ember-provided - // package names. - addon.dependencies(), - // Ensure that standalone .hbs files are properly integrated as Javascript. addon.hbs(), @@ -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 67% rename from ember-element-helper/src/helpers/element.js rename to ember-element-helper/src/helpers/element.ts index 7d48c974..41bbde1c 100644 --- a/ember-element-helper/src/helpers/element.js +++ b/ember-element-helper/src/helpers/element.ts @@ -7,14 +7,24 @@ import { ensureSafeComponent } from '@embroider/util'; function UNINITIALIZED() {} -export default class ElementHelper extends Helper { - constructor() { - super(...arguments); - this.tagName = UNINITIALIZED; - this.componentClass = null; - } +type Positional = [name: T]; +type Return = EmberComponent<{ + Element: T extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[T] : Element; + 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', @@ -32,9 +42,9 @@ export default class ElementHelper extends Helper { tagName = tagName; // eslint-disable-line ember/require-tagless-components }, this - ); + ) 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..1e832bc6 --- /dev/null +++ b/ember-element-helper/src/index.ts @@ -0,0 +1,3 @@ +import ElementHelper from './helpers/element'; + +export { ElementHelper as element }; diff --git a/ember-element-helper/tsconfig.json b/ember-element-helper/tsconfig.json new file mode 100644 index 00000000..4b95df2c --- /dev/null +++ b/ember-element-helper/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "@tsconfig/ember/tsconfig.json", + "compilerOptions": { + "noEmit": false, + "emitDeclarationOnly": true, + "declarationDir": "./declarations", + "paths": { + "*": [ + "./types/*" + ] + } + }, + "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'; From 1a86a310cd0079bef8a7b817ee1b18b620ebfc54 Mon Sep 17 00:00:00 2001 From: gossi Date: Tue, 25 Jul 2023 19:01:28 +0200 Subject: [PATCH 02/19] restore rollup order --- ember-element-helper/rollup.config.mjs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ember-element-helper/rollup.config.mjs b/ember-element-helper/rollup.config.mjs index 2e978007..aa2ff635 100644 --- a/ember-element-helper/rollup.config.mjs +++ b/ember-element-helper/rollup.config.mjs @@ -25,11 +25,6 @@ export default defineConfig({ // not everything in publicEntrypoints necessarily needs to go here. addon.appReexports(['helpers/element.js']), - // Follow the V2 Addon rules about dependencies. Your code can import from - // `dependencies` and `peerDependencies` as well as standard Ember-provided - // package names. - addon.dependencies(), - nodeResolve({ extensions }), // This babel config should *not* apply presets or compile away ES modules. @@ -43,6 +38,11 @@ export default defineConfig({ babelHelpers: 'bundled', }), + // Follow the V2 Addon rules about dependencies. Your code can import from + // `dependencies` and `peerDependencies` as well as standard Ember-provided + // package names. + addon.dependencies(), + // Ensure that standalone .hbs files are properly integrated as Javascript. addon.hbs(), From a22815788189fa590d4fd4c1c52e473f5f965771 Mon Sep 17 00:00:00 2001 From: gossi Date: Tue, 25 Jul 2023 20:59:05 +0200 Subject: [PATCH 03/19] fix a couple of tests --- test-app/ember-cli-build.js | 4 ++++ test-app/package.json | 15 +++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/test-app/ember-cli-build.js b/test-app/ember-cli-build.js index a19af5da..bee703b1 100644 --- a/test-app/ember-cli-build.js +++ b/test-app/ember-cli-build.js @@ -1,10 +1,14 @@ '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), + }, }); if (app.env === 'test') { diff --git a/test-app/package.json b/test-app/package.json index 814e2098..ba63a1e7 100644 --- a/test-app/package.json +++ b/test-app/package.json @@ -29,17 +29,20 @@ "injected": true } }, + "dependencies": { + "ember-element-helper": "*" + }, "devDependencies": { "@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", - "@embroider/macros": "^1.0.0", - "@embroider/test-setup": "^1.8.3", - "@embroider/webpack": "^2.1.1", + "@embroider/compat": "^3.2.0", + "@embroider/core": "^3.2.0", + "@embroider/macros": "^1.13.0", + "@embroider/test-setup": "^3.0.1", + "@embroider/webpack": "^3.1.4", "@glimmer/component": "^1.1.2", "@glimmer/tracking": "^1.1.2", "broccoli-asset-rev": "^3.0.0", From 03419c5be18af3b9fd9a14c1759090b895570f53 Mon Sep 17 00:00:00 2001 From: gossi Date: Tue, 25 Jul 2023 21:19:21 +0200 Subject: [PATCH 04/19] Add template-registry --- ember-element-helper/README.md | 58 ++++++++++++++----- ember-element-helper/src/template-registry.ts | 5 ++ 2 files changed, 49 insertions(+), 14 deletions(-) create mode 100644 ember-element-helper/src/template-registry.ts diff --git a/ember-element-helper/README.md b/ember-element-helper/README.md index ceb8fe68..de77f7f7 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,47 @@ 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! + +## 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/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; +} From aa70b2ed2b9f8a9f859db87f150a0c97c932c4da Mon Sep 17 00:00:00 2001 From: gossi Date: Wed, 26 Jul 2023 14:50:28 +0200 Subject: [PATCH 05/19] fix types --- ember-element-helper/src/helpers/element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ember-element-helper/src/helpers/element.ts b/ember-element-helper/src/helpers/element.ts index 41bbde1c..aa9c39fd 100644 --- a/ember-element-helper/src/helpers/element.ts +++ b/ember-element-helper/src/helpers/element.ts @@ -42,7 +42,7 @@ export default class ElementHelper extends Helper; + ) as unknown as Return; } else { this.componentClass = undefined; From 6da79b32d4dad5d2de280e8208b393afe1614b5c Mon Sep 17 00:00:00 2001 From: gossi Date: Wed, 26 Jul 2023 14:54:57 +0200 Subject: [PATCH 06/19] fix lint --- ember-element-helper/src/helpers/element.ts | 1 + ember-element-helper/tsconfig.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ember-element-helper/src/helpers/element.ts b/ember-element-helper/src/helpers/element.ts index aa9c39fd..03f95a56 100644 --- a/ember-element-helper/src/helpers/element.ts +++ b/ember-element-helper/src/helpers/element.ts @@ -5,6 +5,7 @@ import { assert, runInDebug } from '@ember/debug'; import { ensureSafeComponent } from '@embroider/util'; +// eslint-disable-next-line @typescript-eslint/no-empty-function function UNINITIALIZED() {} type Positional = [name: T]; diff --git a/ember-element-helper/tsconfig.json b/ember-element-helper/tsconfig.json index 4b95df2c..ba5506e4 100644 --- a/ember-element-helper/tsconfig.json +++ b/ember-element-helper/tsconfig.json @@ -13,5 +13,5 @@ "include": [ "src/**/*", "types/**/*" - ], + ] } \ No newline at end of file From 228fcdbd12c34049bf4f396d78956fc91b62de3c Mon Sep 17 00:00:00 2001 From: gossi Date: Wed, 26 Jul 2023 15:19:10 +0200 Subject: [PATCH 07/19] revert embroider versions --- test-app/package.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test-app/package.json b/test-app/package.json index ba63a1e7..bde11a28 100644 --- a/test-app/package.json +++ b/test-app/package.json @@ -38,11 +38,11 @@ "@ember/optional-features": "^2.0.0", "@ember/string": "^3.1.1", "@ember/test-helpers": "^2.9.3", - "@embroider/compat": "^3.2.0", - "@embroider/core": "^3.2.0", - "@embroider/macros": "^1.13.0", - "@embroider/test-setup": "^3.0.1", - "@embroider/webpack": "^3.1.4", + "@embroider/compat": "^2.1.1", + "@embroider/core": "^2.1.1", + "@embroider/macros": "^1.0.0", + "@embroider/test-setup": "^1.8.3", + "@embroider/webpack": "^2.1.1", "@glimmer/component": "^1.1.2", "@glimmer/tracking": "^1.1.2", "broccoli-asset-rev": "^3.0.0", From 77873eb58bb406dc312b1514392f147733c34c6e Mon Sep 17 00:00:00 2001 From: gossi Date: Wed, 26 Jul 2023 15:27:09 +0200 Subject: [PATCH 08/19] Update correct readme --- README.md | 58 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 44 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index ceb8fe68..de77f7f7 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,47 @@ 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! + +## Contributing See the [Contributing](CONTRIBUTING.md) guide for details. -License ------------------------------------------------------------------------------- +## License This project is licensed under the [MIT License](LICENSE.md). From a2edec6a0aa6dde7833f6c989b416a70f11cf29e Mon Sep 17 00:00:00 2001 From: gossi Date: Wed, 26 Jul 2023 15:27:54 +0200 Subject: [PATCH 09/19] lock dependencies --- test-app/package.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/test-app/package.json b/test-app/package.json index bde11a28..64bcfd8f 100644 --- a/test-app/package.json +++ b/test-app/package.json @@ -29,9 +29,6 @@ "injected": true } }, - "dependencies": { - "ember-element-helper": "*" - }, "devDependencies": { "@babel/eslint-parser": "^7.21.3", "@babel/plugin-proposal-decorators": "^7.21.0", From aa132c08da7c2a21d4d6b5361515a28f1b3a225d Mon Sep 17 00:00:00 2001 From: gossi Date: Wed, 2 Aug 2023 23:59:01 +0200 Subject: [PATCH 10/19] adding lockfile after rebase --- pnpm-lock.yaml | 599 +++++++++++++++++++++++++++++++++++-------------- 1 file changed, 428 insertions(+), 171 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 731a31c3..ac7ad4cf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,9 +23,6 @@ importers: '@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) devDependencies: '@babel/core': specifier: 7.18.6 @@ -39,21 +36,45 @@ 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: 3.2.0 + version: 3.2.0(rollup@3.26.3) '@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)(webpack@5.88.2) eslint: specifier: ^7.31.0 version: 7.32.0 @@ -68,7 +89,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,8 +103,11 @@ 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: @@ -101,8 +125,8 @@ 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) @@ -174,7 +198,7 @@ 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) @@ -778,6 +802,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 +1549,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 +1680,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 @@ -1675,27 +1723,23 @@ 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@3.2.0(rollup@3.26.3): + resolution: {integrity: sha512-ISihBJQEHJQ3HBYMKh5wBP5VHiUWNRTtDs7diQCb75WTHa7lXP3UhONuJ4cX5CuWmGSwJjwKg0Z5hXxXbN0Olg==} 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 '@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 @@ -1787,8 +1831,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 +1841,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 +1862,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 +1871,24 @@ packages: - utf-8-validate dev: true - /@embroider/core@2.1.1: - resolution: {integrity: sha512-N4rz+r8WjHYmwprvBYC0iUT4EWNpdDjF7JLl8PEYlWbhXDEJL+Ma/aP78S7spMhIpJX9SHK7nbgNxmZAqAe34A==} + /@embroider/core@3.2.1: + 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 + '@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 +1900,7 @@ packages: typescript-memoize: 1.1.1 walk-sync: 3.0.0 transitivePeerDependencies: + - '@glint/template' - bufferutil - canvas - supports-color @@ -1945,13 +1983,18 @@ packages: transitivePeerDependencies: - supports-color - /@embroider/macros@1.9.0: - resolution: {integrity: sha512-12ElrRT+mX3aSixGHjHnfsnyoH1hw5nM+P+Ax0ITZdp6TaAvWZ8dENnVHltdnv4ssHiX0EsVEXmqbIIdMN4nLA==} + /@embroider/macros@1.13.1: + 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 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 @@ -1998,6 +2041,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 +2073,23 @@ 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 + dev: true + /@embroider/test-setup@1.8.3: resolution: {integrity: sha512-BCCbBG7UWkCw+cQ401Ip6LnqTRaQDeKImxR+e7Q4oP6H4EBj7p4iGR1z6fhMy4NNyXKPB6jk3bGa9bTiiNoEAw==} engines: {node: 12.* || 14.* || >= 16} @@ -2104,6 +2165,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 +2254,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 +2263,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 +2278,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 +2293,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 +2321,6 @@ packages: transitivePeerDependencies: - '@babel/core' - /@glimmer/vm@0.42.2: - resolution: {integrity: sha512-D2MNU5glICLqvet5SfVPrv+l6JNK2TR+CdQhch1Ew+btOoqlW+2LIJIF/5wLb1POjIMEkt+78t/7RN0mDFXGzw==} - dependencies: - '@glimmer/interfaces': 0.42.2 - '@glimmer/util': 0.42.2 - dev: true - - /@glimmer/wire-format@0.42.2: - resolution: {integrity: sha512-IqUo6mdJ7GRsK7KCyZxrc17ioSg9RBniEnb418ZMQxsV/WBv9NQ359MuClUck2M24z1AOXo4TerUw0U7+pb1/A==} - dependencies: - '@glimmer/interfaces': 0.42.2 - '@glimmer/util': 0.42.2 - dev: true - /@handlebars/parser@2.0.0: resolution: {integrity: sha512-EP9uEDZv/L5Qh9IWuMUGJRfwhXJ4h1dqKTT4/3+tY0eu7sPis7xh23j61SYUnNF4vqCQvvUXpDo9Bh/+q1zASA==} @@ -2565,33 +2568,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 +2613,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 +2664,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,15 +2739,12 @@ 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==} /@types/estree@1.0.1: resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} + dev: true /@types/express-serve-static-core@4.17.35: resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==} @@ -2829,6 +2856,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 +2872,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: @@ -2911,6 +2950,34 @@ packages: - 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/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} @@ -2931,6 +2998,26 @@ packages: - 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/scope-manager@5.30.6: resolution: {integrity: sha512-Hkq5PhLgtVoW1obkqYH0i4iELctEKixkhWLPTYs55doGUKCASvkjOXOd/pisVeLdO24ZX9D6yymJ/twqpJiG3g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2939,6 +3026,14 @@ packages: '@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: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + 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==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2958,11 +3053,36 @@ packages: - supports-color dev: true + /@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: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@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/types@5.30.6: resolution: {integrity: sha512-HdnP8HioL1F7CwVmT4RaaMX57RrfqsOMclZc08wGMiDYJBsLGBM7JwXM4cZJmbWLzIR/pXg1kkrBBVpxTOwfUg==} 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 +3104,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 +3143,26 @@ 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/visitor-keys@5.30.6: resolution: {integrity: sha512-41OiCjdL2mCaSDi2SvYbzFLlqqlm5v1ZW9Ym55wXKL/Rx6OOB1IbuFGo71Fj6Xy90gJDFTlgOS+vbmtGHPTQQA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3010,6 +3171,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: @@ -3021,24 +3190,28 @@ packages: dependencies: '@webassemblyjs/helper-numbers': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + dev: true /@webassemblyjs/floating-point-hex-parser@1.11.1: resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==} /@webassemblyjs/floating-point-hex-parser@1.11.6: resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + dev: true /@webassemblyjs/helper-api-error@1.11.1: resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==} /@webassemblyjs/helper-api-error@1.11.6: resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + dev: true /@webassemblyjs/helper-buffer@1.11.1: resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==} /@webassemblyjs/helper-buffer@1.11.6: resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + dev: true /@webassemblyjs/helper-numbers@1.11.1: resolution: {integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==} @@ -3053,12 +3226,14 @@ packages: '@webassemblyjs/floating-point-hex-parser': 1.11.6 '@webassemblyjs/helper-api-error': 1.11.6 '@xtuc/long': 4.2.2 + dev: true /@webassemblyjs/helper-wasm-bytecode@1.11.1: resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==} /@webassemblyjs/helper-wasm-bytecode@1.11.6: resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + dev: true /@webassemblyjs/helper-wasm-section@1.11.1: resolution: {integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==} @@ -3075,6 +3250,7 @@ packages: '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 + dev: true /@webassemblyjs/ieee754@1.11.1: resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==} @@ -3085,6 +3261,7 @@ packages: resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} dependencies: '@xtuc/ieee754': 1.2.0 + dev: true /@webassemblyjs/leb128@1.11.1: resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==} @@ -3095,12 +3272,14 @@ packages: resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} dependencies: '@xtuc/long': 4.2.2 + dev: true /@webassemblyjs/utf8@1.11.1: resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==} /@webassemblyjs/utf8@1.11.6: resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + dev: true /@webassemblyjs/wasm-edit@1.11.1: resolution: {integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==} @@ -3125,6 +3304,7 @@ packages: '@webassemblyjs/wasm-opt': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 '@webassemblyjs/wast-printer': 1.11.6 + dev: true /@webassemblyjs/wasm-gen@1.11.1: resolution: {integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==} @@ -3143,6 +3323,7 @@ packages: '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 + dev: true /@webassemblyjs/wasm-opt@1.11.1: resolution: {integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==} @@ -3159,6 +3340,7 @@ packages: '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 + dev: true /@webassemblyjs/wasm-parser@1.11.1: resolution: {integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==} @@ -3179,6 +3361,7 @@ packages: '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 + dev: true /@webassemblyjs/wast-printer@1.11.1: resolution: {integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==} @@ -3191,6 +3374,7 @@ packages: dependencies: '@webassemblyjs/ast': 1.11.6 '@xtuc/long': 4.2.2 + dev: true /@xmldom/xmldom@0.8.10: resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} @@ -3849,6 +4033,7 @@ packages: make-dir: 3.1.0 schema-utils: 2.7.1 webpack: 5.88.2 + dev: true /babel-messages@6.23.0: resolution: {integrity: sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==} @@ -3892,16 +4077,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.*'} @@ -4956,6 +5131,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 +5886,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'} @@ -5865,6 +6049,7 @@ packages: schema-utils: 3.3.0 semver: 7.5.4 webpack: 5.88.2 + dev: true /css-tree@1.1.3: resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} @@ -6028,6 +6213,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: @@ -6290,6 +6480,7 @@ packages: - '@glint/template' - supports-color - webpack + dev: true /ember-cli-app-version@6.0.0(ember-source@4.12.0): resolution: {integrity: sha512-XhzETSTy+RMTIyxM/FaZ/8aJvAwT/iIp8HC9zukpOaSPEm5i6Vm4tskeXY4OBnY3VwFWNXWssDt1hgIkUP76WQ==} @@ -6841,7 +7032,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 +7042,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 +7110,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)(webpack@5.88.2): + resolution: {integrity: sha512-UuFpMWf931pEWBPuujkaMYhsoPvFyZc+tMYjlUn7um20uL+hWs+k2n/TxMVuxydSzJLnxrXz81nTwbYIlgRWdw==} engines: {node: '>= 14.*'} peerDependencies: '@glimmer/component': ^1.1.2 @@ -6930,6 +7121,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 @@ -6957,6 +7149,7 @@ packages: - '@glint/template' - supports-color - webpack + dev: true /ember-template-imports@3.4.2: resolution: {integrity: sha512-OS8TUVG2kQYYwP3netunLVfeijPoOKIs1SvPQRTNOQX4Pu8xGGBEZmrv0U1YTnQn12Eg+p6w/0UdGbUnITjyzw==} @@ -7214,6 +7407,7 @@ packages: /es-module-lexer@1.3.0: resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==} + dev: true /es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} @@ -7342,6 +7536,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 +7670,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 +8034,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 @@ -8842,6 +9092,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 +9672,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 +9809,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'} @@ -10311,13 +10576,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'} @@ -10626,6 +10884,7 @@ packages: dependencies: schema-utils: 4.2.0 webpack: 5.88.2 + dev: true /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -10835,6 +11094,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 @@ -12243,13 +12506,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 +12545,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 @@ -13045,6 +13308,7 @@ packages: loader-utils: 2.0.4 schema-utils: 3.3.0 webpack: 5.88.2 + dev: true /style-search@0.1.0: resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} @@ -13314,6 +13578,7 @@ packages: serialize-javascript: 6.0.1 terser: 5.19.2 webpack: 5.88.2 + dev: true /terser@5.19.2: resolution: {integrity: sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==} @@ -14205,6 +14470,7 @@ packages: - '@swc/core' - esbuild - uglify-js + dev: true /websocket-driver@0.7.4: resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} @@ -14346,15 +14612,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==} From fb121a7dad074568e6871cfa5af94f752d334646 Mon Sep 17 00:00:00 2001 From: gossi Date: Thu, 3 Aug 2023 00:33:56 +0200 Subject: [PATCH 11/19] update to embroider v4 --- ember-element-helper/package.json | 2 +- pnpm-lock.yaml | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/ember-element-helper/package.json b/ember-element-helper/package.json index 0fb38752..ddfe02c9 100644 --- a/ember-element-helper/package.json +++ b/ember-element-helper/package.json @@ -54,7 +54,7 @@ "@babel/plugin-proposal-decorators": "7.18.6", "@babel/preset-typescript": "7.22.5", "@babel/runtime": "^7.22.6", - "@embroider/addon-dev": "3.2.0", + "@embroider/addon-dev": "4.1.0", "@nullvoxpopuli/eslint-configs": "2.2.36", "@rollup/plugin-babel": "6.0.3", "@rollup/plugin-node-resolve": "15.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ac7ad4cf..f532444b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,8 +43,8 @@ importers: specifier: ^7.22.6 version: 7.22.6 '@embroider/addon-dev': - specifier: 3.2.0 - version: 3.2.0(rollup@3.26.3) + specifier: 4.1.0 + version: 4.1.0(rollup@3.26.3) '@nullvoxpopuli/eslint-configs': specifier: 2.2.36 version: 2.2.36(typescript@5.1.6) @@ -1723,14 +1723,13 @@ packages: - supports-color dev: true - /@embroider/addon-dev@3.2.0(rollup@3.26.3): - resolution: {integrity: sha512-ISihBJQEHJQ3HBYMKh5wBP5VHiUWNRTtDs7diQCb75WTHa7lXP3UhONuJ4cX5CuWmGSwJjwKg0Z5hXxXbN0Olg==} + /@embroider/addon-dev@4.1.0(rollup@3.26.3): + resolution: {integrity: sha512-DR9mGlFxcXFIP9jmVbYhy0CwxIzVqMppiIg8at9C+qayr3Wj3SdS7jM95p0kxv3mMgOYs+Z6FsAaj2em6aRs4w==} engines: {node: 12.* || 14.* || >= 16} hasBin: true dependencies: '@embroider/core': 3.2.1 '@rollup/pluginutils': 4.2.1 - assert-never: 1.2.1 content-tag: 1.0.1 fs-extra: 10.1.0 minimatch: 3.1.2 From 2e791ea1bdfa0cfc926c0f8d8e96ee79c7baaa00 Mon Sep 17 00:00:00 2001 From: gossi Date: Fri, 4 Aug 2023 02:17:43 +0200 Subject: [PATCH 12/19] Readme for typing components accepting an `(element)` --- README.md | 46 +++++++++++++++++++++ ember-element-helper/src/helpers/element.ts | 4 +- ember-element-helper/src/index.ts | 3 +- 3 files changed, 51 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index de77f7f7..e5bda3c4 100644 --- a/README.md +++ b/README.md @@ -117,6 +117,52 @@ declare module '@glint/environment-ember-loose/registry' { > **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. diff --git a/ember-element-helper/src/helpers/element.ts b/ember-element-helper/src/helpers/element.ts index 03f95a56..eb25b69f 100644 --- a/ember-element-helper/src/helpers/element.ts +++ b/ember-element-helper/src/helpers/element.ts @@ -8,9 +8,11 @@ import { ensureSafeComponent } from '@embroider/util'; // eslint-disable-next-line @typescript-eslint/no-empty-function function UNINITIALIZED() {} +export type ElementFromTagName = T extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[T] : Element; + type Positional = [name: T]; type Return = EmberComponent<{ - Element: T extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[T] : Element; + Element: ElementFromTagName; Blocks: { default: [] }; }>; diff --git a/ember-element-helper/src/index.ts b/ember-element-helper/src/index.ts index 1e832bc6..f6d69447 100644 --- a/ember-element-helper/src/index.ts +++ b/ember-element-helper/src/index.ts @@ -1,3 +1,4 @@ -import ElementHelper from './helpers/element'; +import ElementHelper, { type ElementSignature, type ElementFromTagName } from './helpers/element'; export { ElementHelper as element }; +export type { ElementSignature, ElementFromTagName }; From 370e92fc3da7fab2dac02fe9b791b8b1cf8839f8 Mon Sep 17 00:00:00 2001 From: gossi Date: Fri, 4 Aug 2023 02:22:26 +0200 Subject: [PATCH 13/19] fix lint --- ember-element-helper/src/helpers/element.ts | 4 +++- ember-element-helper/src/index.ts | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/ember-element-helper/src/helpers/element.ts b/ember-element-helper/src/helpers/element.ts index eb25b69f..1836f248 100644 --- a/ember-element-helper/src/helpers/element.ts +++ b/ember-element-helper/src/helpers/element.ts @@ -8,7 +8,9 @@ import { ensureSafeComponent } from '@embroider/util'; // eslint-disable-next-line @typescript-eslint/no-empty-function function UNINITIALIZED() {} -export type ElementFromTagName = T extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[T] : Element; +export type ElementFromTagName = T extends keyof HTMLElementTagNameMap + ? HTMLElementTagNameMap[T] + : Element; type Positional = [name: T]; type Return = EmberComponent<{ diff --git a/ember-element-helper/src/index.ts b/ember-element-helper/src/index.ts index f6d69447..4c08993c 100644 --- a/ember-element-helper/src/index.ts +++ b/ember-element-helper/src/index.ts @@ -1,4 +1,4 @@ -import ElementHelper, { type ElementSignature, type ElementFromTagName } from './helpers/element'; +import ElementHelper, { type ElementFromTagName, type ElementSignature } from './helpers/element'; export { ElementHelper as element }; -export type { ElementSignature, ElementFromTagName }; +export type { ElementFromTagName, ElementSignature }; From d212132d5711f74dda8254b8af5d1c49d4d5eff6 Mon Sep 17 00:00:00 2001 From: gossi Date: Fri, 4 Aug 2023 17:40:20 +0200 Subject: [PATCH 14/19] add typecheck matrix --- .github/workflows/ci.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 840b8677..18b9cc6a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -72,6 +72,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 From 34be0578343b88ed550acfb944448f4409fb9c07 Mon Sep 17 00:00:00 2001 From: gossi Date: Fri, 4 Aug 2023 23:28:31 +0200 Subject: [PATCH 15/19] make test-app ts-aware --- ember-element-helper/README.md | 46 +++ ember-element-helper/package.json | 16 +- ember-element-helper/src/helpers/element.ts | 7 +- ember-element-helper/tsconfig.json | 1 - pnpm-lock.yaml | 320 +++++++++++-------- test-app/app/components/element-receiver.hbs | 4 +- test-app/app/components/element-receiver.ts | 14 + test-app/app/controllers/.gitkeep | 0 test-app/app/helpers/.gitkeep | 0 test-app/app/models/.gitkeep | 0 test-app/app/routes/.gitkeep | 0 test-app/app/templates/application.hbs | 3 + test-app/ember-cli-build.js | 9 +- test-app/package.json | 6 + test-app/tsconfig.json | 31 ++ test-app/types/global.d.ts | 16 + 16 files changed, 325 insertions(+), 148 deletions(-) create mode 100644 test-app/app/components/element-receiver.ts delete mode 100644 test-app/app/controllers/.gitkeep delete mode 100644 test-app/app/helpers/.gitkeep delete mode 100644 test-app/app/models/.gitkeep delete mode 100644 test-app/app/routes/.gitkeep create mode 100644 test-app/app/templates/application.hbs create mode 100644 test-app/tsconfig.json create mode 100644 test-app/types/global.d.ts diff --git a/ember-element-helper/README.md b/ember-element-helper/README.md index de77f7f7..e5bda3c4 100644 --- a/ember-element-helper/README.md +++ b/ember-element-helper/README.md @@ -117,6 +117,52 @@ declare module '@glint/environment-ember-loose/registry' { > **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. diff --git a/ember-element-helper/package.json b/ember-element-helper/package.json index ddfe02c9..9c7aa60f 100644 --- a/ember-element-helper/package.json +++ b/ember-element-helper/package.json @@ -29,23 +29,25 @@ "README.md" ], "scripts": { - "start": "concurrently 'npm:watch:*'", "build": "concurrently 'npm:build:*'", "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", + "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", - "prepublishOnly": "pnpm build" + "_prepare": "pnpm build", + "_prepublishOnly": "pnpm build" }, "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", @@ -53,8 +55,10 @@ "@babel/plugin-syntax-decorators": "7.18.6", "@babel/plugin-proposal-decorators": "7.18.6", "@babel/preset-typescript": "7.22.5", - "@babel/runtime": "^7.22.6", + "@babel/runtime": "7.22.6", "@embroider/addon-dev": "4.1.0", + "@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", diff --git a/ember-element-helper/src/helpers/element.ts b/ember-element-helper/src/helpers/element.ts index 1836f248..69215408 100644 --- a/ember-element-helper/src/helpers/element.ts +++ b/ember-element-helper/src/helpers/element.ts @@ -8,12 +8,12 @@ import { ensureSafeComponent } from '@embroider/util'; // eslint-disable-next-line @typescript-eslint/no-empty-function function UNINITIALIZED() {} -export type ElementFromTagName = T extends keyof HTMLElementTagNameMap +export type ElementFromTagName = T extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[T] : Element; -type Positional = [name: T]; -type Return = EmberComponent<{ +type Positional = [name: T]; +type Return = typeof EmberComponent<{ Element: ElementFromTagName; Blocks: { default: [] }; }>; @@ -43,6 +43,7 @@ export default class ElementHelper extends Helper= 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 @@ -1723,12 +1747,12 @@ packages: - supports-color dev: true - /@embroider/addon-dev@4.1.0(rollup@3.26.3): + /@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 dependencies: - '@embroider/core': 3.2.1 + '@embroider/core': 3.2.1(@glint/template@1.0.2) '@rollup/pluginutils': 4.2.1 content-tag: 1.0.1 fs-extra: 10.1.0 @@ -1763,7 +1787,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==} @@ -1870,14 +1893,14 @@ packages: - utf-8-validate dev: true - /@embroider/core@3.2.1: + /@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/traverse': 7.22.8(supports-color@8.1.1) - '@embroider/macros': 1.13.1 + '@embroider/macros': 1.13.1(@glint/template@1.0.2) '@embroider/shared-internals': 2.4.0 assert-never: 1.2.1 babel-plugin-ember-template-compilation: 2.1.1 @@ -1917,20 +1940,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} @@ -1962,7 +1971,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: @@ -1972,6 +1981,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 @@ -1982,7 +1992,7 @@ packages: transitivePeerDependencies: - supports-color - /@embroider/macros@1.13.1: + /@embroider/macros@1.13.1(@glint/template@1.0.2): resolution: {integrity: sha512-4htraP/rNIht8uCxXoc59Bw2EsBFfc4YUQD9XSpzJ4xUr1V0GQf9wL/noeSuYSxIhwRfZOErnJhsdyf1hH+I/A==} engines: {node: 12.* || 14.* || >= 16} peerDependencies: @@ -1992,6 +2002,7 @@ packages: optional: true dependencies: '@embroider/shared-internals': 2.4.0 + '@glint/template': 1.0.2 assert-never: 1.2.1 babel-import-util: 2.0.0 ember-cli-babel: 7.26.11 @@ -2001,20 +2012,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==} @@ -2087,7 +2084,6 @@ packages: typescript-memoize: 1.1.1 transitivePeerDependencies: - supports-color - dev: true /@embroider/test-setup@1.8.3: resolution: {integrity: sha512-BCCbBG7UWkCw+cQ401Ip6LnqTRaQDeKImxR+e7Q4oP6H4EBj7p4iGR1z6fhMy4NNyXKPB6jk3bGa9bTiiNoEAw==} @@ -2097,18 +2093,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: @@ -2121,12 +2128,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==} @@ -2320,6 +2330,87 @@ packages: transitivePeerDependencies: - '@babel/core' + /@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/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 + + /@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/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==} @@ -2743,7 +2834,6 @@ packages: /@types/estree@1.0.1: resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} - dev: true /@types/express-serve-static-core@4.17.35: resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==} @@ -3189,28 +3279,24 @@ packages: dependencies: '@webassemblyjs/helper-numbers': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - dev: true /@webassemblyjs/floating-point-hex-parser@1.11.1: resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==} /@webassemblyjs/floating-point-hex-parser@1.11.6: resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - dev: true /@webassemblyjs/helper-api-error@1.11.1: resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==} /@webassemblyjs/helper-api-error@1.11.6: resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - dev: true /@webassemblyjs/helper-buffer@1.11.1: resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==} /@webassemblyjs/helper-buffer@1.11.6: resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} - dev: true /@webassemblyjs/helper-numbers@1.11.1: resolution: {integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==} @@ -3225,14 +3311,12 @@ packages: '@webassemblyjs/floating-point-hex-parser': 1.11.6 '@webassemblyjs/helper-api-error': 1.11.6 '@xtuc/long': 4.2.2 - dev: true /@webassemblyjs/helper-wasm-bytecode@1.11.1: resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==} /@webassemblyjs/helper-wasm-bytecode@1.11.6: resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - dev: true /@webassemblyjs/helper-wasm-section@1.11.1: resolution: {integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==} @@ -3249,7 +3333,6 @@ packages: '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 - dev: true /@webassemblyjs/ieee754@1.11.1: resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==} @@ -3260,7 +3343,6 @@ packages: resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} dependencies: '@xtuc/ieee754': 1.2.0 - dev: true /@webassemblyjs/leb128@1.11.1: resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==} @@ -3271,14 +3353,12 @@ packages: resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} dependencies: '@xtuc/long': 4.2.2 - dev: true /@webassemblyjs/utf8@1.11.1: resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==} /@webassemblyjs/utf8@1.11.6: resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - dev: true /@webassemblyjs/wasm-edit@1.11.1: resolution: {integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==} @@ -3303,7 +3383,6 @@ packages: '@webassemblyjs/wasm-opt': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 '@webassemblyjs/wast-printer': 1.11.6 - dev: true /@webassemblyjs/wasm-gen@1.11.1: resolution: {integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==} @@ -3322,7 +3401,6 @@ packages: '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 - dev: true /@webassemblyjs/wasm-opt@1.11.1: resolution: {integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==} @@ -3339,7 +3417,6 @@ packages: '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 - dev: true /@webassemblyjs/wasm-parser@1.11.1: resolution: {integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==} @@ -3360,7 +3437,6 @@ packages: '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 - dev: true /@webassemblyjs/wast-printer@1.11.1: resolution: {integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==} @@ -3373,7 +3449,6 @@ packages: dependencies: '@webassemblyjs/ast': 1.11.6 '@xtuc/long': 4.2.2 - dev: true /@xmldom/xmldom@0.8.10: resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} @@ -3815,7 +3890,6 @@ packages: username-sync: 1.0.3 transitivePeerDependencies: - supports-color - dev: true /async-promise-queue@1.0.5: resolution: {integrity: sha512-xi0aQ1rrjPWYmqbwr18rrSKbSaXIeIwSd1J4KAgVfkq8utNbdZoht7GfvfY6swFUAMJ9obkc4WPJmtGwl+B8dw==} @@ -4032,7 +4106,6 @@ packages: make-dir: 3.1.0 schema-utils: 2.7.1 webpack: 5.88.2 - dev: true /babel-messages@6.23.0: resolution: {integrity: sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==} @@ -4956,7 +5029,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==} @@ -6048,7 +6120,6 @@ packages: schema-utils: 3.3.0 semver: 7.5.4 webpack: 5.88.2 - dev: true /css-tree@1.1.3: resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} @@ -6392,7 +6463,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==} @@ -6401,17 +6471,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 @@ -6421,36 +6491,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 @@ -6460,26 +6531,24 @@ 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 - dev: true /ember-cli-app-version@6.0.0(ember-source@4.12.0): resolution: {integrity: sha512-XhzETSTy+RMTIyxM/FaZ/8aJvAwT/iIp8HC9zukpOaSPEm5i6Vm4tskeXY4OBnY3VwFWNXWssDt1hgIkUP76WQ==} @@ -6598,7 +6667,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==} @@ -6995,7 +7063,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==} @@ -7014,7 +7081,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 @@ -7109,7 +7176,7 @@ packages: - supports-color - webpack - /ember-source@4.12.3(@babel/core@7.18.6)(@glimmer/component@1.1.2)(webpack@5.88.2): + /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: @@ -7129,7 +7196,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 @@ -7148,7 +7215,6 @@ packages: - '@glint/template' - supports-color - webpack - dev: true /ember-template-imports@3.4.2: resolution: {integrity: sha512-OS8TUVG2kQYYwP3netunLVfeijPoOKIs1SvPQRTNOQX4Pu8xGGBEZmrv0U1YTnQn12Eg+p6w/0UdGbUnITjyzw==} @@ -7343,7 +7409,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==} @@ -7406,7 +7471,6 @@ packages: /es-module-lexer@1.3.0: resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==} - dev: true /es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} @@ -8430,6 +8494,7 @@ packages: engines: {node: '>=6'} dependencies: locate-path: 3.0.0 + dev: true /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} @@ -10010,7 +10075,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==} @@ -10330,6 +10394,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==} @@ -10883,7 +10948,6 @@ packages: dependencies: schema-utils: 4.2.0 webpack: 5.88.2 - dev: true /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -11504,6 +11568,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==} @@ -11729,6 +11794,7 @@ packages: engines: {node: '>=8'} dependencies: find-up: 3.0.0 + dev: true /portfinder@1.0.32: resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} @@ -13307,7 +13373,6 @@ packages: loader-utils: 2.0.4 schema-utils: 3.3.0 webpack: 5.88.2 - dev: true /style-search@0.1.0: resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} @@ -13481,7 +13546,6 @@ packages: username-sync: 1.0.3 transitivePeerDependencies: - supports-color - dev: true /table@6.8.1: resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} @@ -13577,7 +13641,6 @@ packages: serialize-javascript: 6.0.1 terser: 5.19.2 webpack: 5.88.2 - dev: true /terser@5.19.2: resolution: {integrity: sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==} @@ -14283,6 +14346,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 @@ -14291,6 +14366,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 @@ -14469,7 +14551,6 @@ packages: - '@swc/core' - esbuild - uglify-js - dev: true /websocket-driver@0.7.4: resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} @@ -14775,7 +14856,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 @@ -14784,33 +14865,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..21ba400c 100644 --- a/test-app/app/components/element-receiver.hbs +++ b/test-app/app/components/element-receiver.hbs @@ -1 +1,3 @@ -<@tag id='content' ...attributes>{{yield}} +{{#let @tag as |Tag|}} + {{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..128ab1f5 --- /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/ember-cli-build.js b/test-app/ember-cli-build.js index bee703b1..1cd5ad98 100644 --- a/test-app/ember-cli-build.js +++ b/test-app/ember-cli-build.js @@ -9,14 +9,11 @@ module.exports = function (defaults) { 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 64bcfd8f..8b48d365 100644 --- a/test-app/package.json +++ b/test-app/package.json @@ -42,6 +42,11 @@ "@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", "broccoli-asset-rev": "^3.0.0", "concurrently": "^8.0.1", "ember-auto-import": "^2.6.3", @@ -79,6 +84,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..6f28dab7 --- /dev/null +++ b/test-app/tsconfig.json @@ -0,0 +1,31 @@ +{ + "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/*" + ] + } + }, + "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; + } +} From ece8c9f1f6b2d81c994401c1fbf427fa6e3a8d88 Mon Sep 17 00:00:00 2001 From: gossi Date: Sat, 5 Aug 2023 00:08:50 +0200 Subject: [PATCH 16/19] fix lint --- .npmrc | 2 +- ember-element-helper/src/helpers/element.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.npmrc b/.npmrc index 043b3a4e..1278febe 100644 --- a/.npmrc +++ b/.npmrc @@ -1,5 +1,5 @@ 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* diff --git a/ember-element-helper/src/helpers/element.ts b/ember-element-helper/src/helpers/element.ts index 69215408..07acff4f 100644 --- a/ember-element-helper/src/helpers/element.ts +++ b/ember-element-helper/src/helpers/element.ts @@ -43,6 +43,7 @@ export default class ElementHelper extends Helper Date: Sat, 5 Aug 2023 01:45:57 +0200 Subject: [PATCH 17/19] re-turn on prepare scripts --- ember-element-helper/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ember-element-helper/package.json b/ember-element-helper/package.json index 9c7aa60f..3728fa31 100644 --- a/ember-element-helper/package.json +++ b/ember-element-helper/package.json @@ -42,8 +42,8 @@ "start:types": "tsc --emitDeclarationOnly -w", "pretest": "pnpm build", "test": "echo 'Addon does not have tests, run tests in test-app'", - "_prepare": "pnpm build", - "_prepublishOnly": "pnpm build" + "prepare": "pnpm build", + "prepublishOnly": "pnpm build" }, "dependencies": { "@embroider/addon-shim": "1.8.3", From 40e8ecc3a540d7bf8730927705d59d4d36b93d0e Mon Sep 17 00:00:00 2001 From: gossi Date: Tue, 8 Aug 2023 20:18:50 +0200 Subject: [PATCH 18/19] Check types with glint --- .npmrc | 1 + ember-element-helper/package.json | 3 + ember-element-helper/tsconfig.json | 10 +- pnpm-lock.yaml | 103 +++++++++++++++++++ test-app/app/components/element-receiver.hbs | 1 + test-app/app/components/element-receiver.ts | 4 +- test-app/package.json | 4 + test-app/tsconfig.json | 4 +- 8 files changed, 126 insertions(+), 4 deletions(-) diff --git a/.npmrc b/.npmrc index 1278febe..e0a71fa7 100644 --- a/.npmrc +++ b/.npmrc @@ -3,3 +3,4 @@ public-hoist-pattern[]=*eslint* public-hoist-pattern[]=@typescript-eslint/* public-hoist-pattern[]=*ember-template-lint* public-hoist-pattern[]=*stylelint* +public-hoist-pattern[]=*@glint* diff --git a/ember-element-helper/package.json b/ember-element-helper/package.json index 3728fa31..b0bb2f17 100644 --- a/ember-element-helper/package.json +++ b/ember-element-helper/package.json @@ -37,6 +37,7 @@ "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", @@ -57,6 +58,8 @@ "@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", diff --git a/ember-element-helper/tsconfig.json b/ember-element-helper/tsconfig.json index 8584a4cb..730980d4 100644 --- a/ember-element-helper/tsconfig.json +++ b/ember-element-helper/tsconfig.json @@ -1,5 +1,11 @@ { "extends": "@tsconfig/ember/tsconfig.json", + "glint": { + "environment": [ + "ember-loose", + "ember-template-imports" + ] + }, "compilerOptions": { "noEmit": false, "declarationDir": "./declarations", @@ -7,7 +13,9 @@ "*": [ "./types/*" ] - } + }, + // for typescript < 5 + "moduleResolution": "NodeNext" }, "include": [ "src/**/*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9e7ce48e..f15ecd19 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,6 +45,12 @@ importers: '@embroider/addon-dev': 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) @@ -172,6 +178,12 @@ importers: '@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 @@ -226,6 +238,9 @@ importers: 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 @@ -3067,6 +3082,34 @@ packages: - 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} @@ -3107,6 +3150,26 @@ packages: - 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} @@ -3162,6 +3225,26 @@ packages: - supports-color dev: true + /@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: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@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: 8.37.0 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/types@5.30.6: resolution: {integrity: sha512-HdnP8HioL1F7CwVmT4RaaMX57RrfqsOMclZc08wGMiDYJBsLGBM7JwXM4cZJmbWLzIR/pXg1kkrBBVpxTOwfUg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3252,6 +3335,26 @@ packages: - 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} diff --git a/test-app/app/components/element-receiver.hbs b/test-app/app/components/element-receiver.hbs index 21ba400c..547e7bd7 100644 --- a/test-app/app/components/element-receiver.hbs +++ b/test-app/app/components/element-receiver.hbs @@ -1,3 +1,4 @@ {{#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 index 128ab1f5..f6e74502 100644 --- a/test-app/app/components/element-receiver.ts +++ b/test-app/app/components/element-receiver.ts @@ -1,7 +1,7 @@ import Component from '@glimmer/component'; import type { ElementSignature, ElementFromTagName } from 'ember-element-helper'; -interface ElementReceiverSignature { +interface ElementReceiverSignature { Element: ElementFromTagName; Args: { tag: ElementSignature['Return']; @@ -11,4 +11,4 @@ interface ElementReceiverSignature { } } -export default class ElementReceiver extends Component> {} +export default class ElementReceiver extends Component> {} diff --git a/test-app/package.json b/test-app/package.json index 8b48d365..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" }, @@ -47,6 +48,8 @@ "@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", @@ -65,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", diff --git a/test-app/tsconfig.json b/test-app/tsconfig.json index 6f28dab7..5fa230cc 100644 --- a/test-app/tsconfig.json +++ b/test-app/tsconfig.json @@ -21,7 +21,9 @@ "*": [ "types/*" ] - } + }, + // for typescript < 5 + "moduleResolution": "NodeNext" }, "include": [ "app/**/*", From eb4170598f7a99bd7355998f77f2157e94fe2656 Mon Sep 17 00:00:00 2001 From: gossi Date: Tue, 8 Aug 2023 21:35:39 +0200 Subject: [PATCH 19/19] drop ember@3.24 from test-matrix --- .github/workflows/ci.yml | 1 - test-app/config/ember-try.js | 16 ---------------- 2 files changed, 17 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 18b9cc6a..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 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: {