From a13f486575c0eb07a377cf076adb7df30fb1ae8b Mon Sep 17 00:00:00 2001
From: Git Online Helper
<190613237+git-online-helper[bot]@users.noreply.github.com>
Date: Thu, 22 May 2025 08:24:55 +0000
Subject: [PATCH 1/8] move ember debug tests into own app
---
.github/workflows/build.yml | 16 +-
.gitignore | 2 +
ember_debug/rollup.config.js | 1 +
ember_debug/utils/version.js | 2 +
eslint.config.mjs | 21 +-
package.json | 6 +-
pnpm-lock.yaml | 271 +++++++++++++
pnpm-workspace.yaml | 1 +
test-apps/classic/.ember-cli | 7 +
test-apps/classic/app/app.js | 14 +
test-apps/classic/app/components/.gitkeep | 0
test-apps/classic/app/controllers/.gitkeep | 0
test-apps/classic/app/helpers/.gitkeep | 0
test-apps/classic/app/index.html | 25 ++
test-apps/classic/app/models/.gitkeep | 0
test-apps/classic/app/router.js | 9 +
test-apps/classic/app/routes/.gitkeep | 0
.../classic/app/services/adapters/basic.js | 156 ++++++++
.../app/services/adapters/web-extension.js | 163 ++++++++
test-apps/classic/app/styles/app.css | 1 +
.../classic/app/templates/application.hbs | 7 +
.../classic/config/ember-cli-update.json | 20 +
.../classic/config}/ember-try.js | 4 -
test-apps/classic/config/environment.js | 48 +++
.../classic/config/optional-features.json | 7 +
test-apps/classic/config/targets.js | 11 +
test-apps/classic/ember-cli-build.js | 30 ++
test-apps/classic/package.json | 67 ++++
test-apps/classic/testem.js | 23 ++
test-apps/embroider-static-source/tests | 1 +
.../ember_debug/container-debug-test.js | 0
.../ember_debug/deprecation-debug-test.js | 0
.../tests}/ember_debug/ember-data-test.js | 0
.../tests}/ember_debug/ember-debug-test.js | 0
.../ember_debug/object-inspector-test.js | 0
.../ember_debug/profile-manager-test.js | 0
.../tests}/ember_debug/profile-node-test.js | 0
.../ember_debug/promise-assembler-test.js | 0
.../tests}/ember_debug/promise-debug-test.js | 0
.../tests}/ember_debug/render-debug-test.js | 0
.../tests}/ember_debug/route-debug-test.js | 0
.../tests}/ember_debug/view-debug-test.js | 0
test-apps/tests/helpers/index.ts | 43 +++
.../tests/helpers/setup-ember-debug-test.js | 86 +++++
test-apps/tests/index.html | 65 ++++
test-apps/tests/integration/injection-test.js | 361 ++++++++++++++++++
test-apps/tests/test-adapter.js | 348 +++++++++++++++++
test-apps/tests/test-helper.js | 29 ++
test-apps/tests/unit/.gitkeep | 0
test-apps/tests/unit/utils/type-check-test.js | 22 ++
tests/index.html | 1 -
tsconfig.json | 2 +-
52 files changed, 1854 insertions(+), 16 deletions(-)
create mode 100644 test-apps/classic/.ember-cli
create mode 100644 test-apps/classic/app/app.js
create mode 100644 test-apps/classic/app/components/.gitkeep
create mode 100644 test-apps/classic/app/controllers/.gitkeep
create mode 100644 test-apps/classic/app/helpers/.gitkeep
create mode 100644 test-apps/classic/app/index.html
create mode 100644 test-apps/classic/app/models/.gitkeep
create mode 100644 test-apps/classic/app/router.js
create mode 100644 test-apps/classic/app/routes/.gitkeep
create mode 100644 test-apps/classic/app/services/adapters/basic.js
create mode 100644 test-apps/classic/app/services/adapters/web-extension.js
create mode 100644 test-apps/classic/app/styles/app.css
create mode 100644 test-apps/classic/app/templates/application.hbs
create mode 100644 test-apps/classic/config/ember-cli-update.json
rename {config => test-apps/classic/config}/ember-try.js (94%)
create mode 100644 test-apps/classic/config/environment.js
create mode 100644 test-apps/classic/config/optional-features.json
create mode 100644 test-apps/classic/config/targets.js
create mode 100644 test-apps/classic/ember-cli-build.js
create mode 100644 test-apps/classic/package.json
create mode 100644 test-apps/classic/testem.js
create mode 120000 test-apps/embroider-static-source/tests
rename {tests => test-apps/tests}/ember_debug/container-debug-test.js (100%)
rename {tests => test-apps/tests}/ember_debug/deprecation-debug-test.js (100%)
rename {tests => test-apps/tests}/ember_debug/ember-data-test.js (100%)
rename {tests => test-apps/tests}/ember_debug/ember-debug-test.js (100%)
rename {tests => test-apps/tests}/ember_debug/object-inspector-test.js (100%)
rename {tests => test-apps/tests}/ember_debug/profile-manager-test.js (100%)
rename {tests => test-apps/tests}/ember_debug/profile-node-test.js (100%)
rename {tests => test-apps/tests}/ember_debug/promise-assembler-test.js (100%)
rename {tests => test-apps/tests}/ember_debug/promise-debug-test.js (100%)
rename {tests => test-apps/tests}/ember_debug/render-debug-test.js (100%)
rename {tests => test-apps/tests}/ember_debug/route-debug-test.js (100%)
rename {tests => test-apps/tests}/ember_debug/view-debug-test.js (100%)
create mode 100644 test-apps/tests/helpers/index.ts
create mode 100644 test-apps/tests/helpers/setup-ember-debug-test.js
create mode 100644 test-apps/tests/index.html
create mode 100644 test-apps/tests/integration/injection-test.js
create mode 100644 test-apps/tests/test-adapter.js
create mode 100644 test-apps/tests/test-helper.js
create mode 100644 test-apps/tests/unit/.gitkeep
create mode 100644 test-apps/tests/unit/utils/type-check-test.js
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 84b590eda4..ca0ae43cfc 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -47,7 +47,11 @@ jobs:
run: pnpm lint:hbs
- name: Lint (js)
run: pnpm lint:js
- - name: Run test
+ - name: build
+ run: EMBER_ENV=test pnpm ember build --environment test
+ - name: test ember debug
+ run: pnpm ember-debug:test
+ - name: Run test inspector ui
run: pnpm test
env:
COVERAGE: 'true'
@@ -110,14 +114,12 @@ jobs:
- name: Set NO_EXTEND_PROTOTYPES
if: matrix.scenario == 'ember-default-no-prototype-extensions'
run: echo "NO_EXTEND_PROTOTYPES==true" >> .GITHUB_ENV
- - name: Setup ember-try scenario
- run: pnpm ember try:one ${{ matrix.scenario }} --skip-cleanup --- cat package.json
- - name: Build
+ - name: Build Inspector
run: pnpm ember build --environment test
+ - name: Setup ember-try scenario
+ run: pnpm ember-debug:try:one ${{ matrix.scenario }} --skip-cleanup --- cat package.json
- name: Run test
- # Due to a bug in ember-cli, running `ember test` with `--path` doesn't set `EMBER_ENV=test`
- # See https://github.com/ember-cli/ember-cli/issues/8922
- run: EMBER_ENV=test pnpm ember test --path dist --filter="Ember Debug"
+ run: pnpm ember-debug:test
build:
name: Build extensions
diff --git a/.gitignore b/.gitignore
index 741b8e7b8d..4241b06d61 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,8 @@
# dependencies
/node_modules/
+/test-apps/classic/dist
+/test-apps/classic/node_modules
# misc
/.env*
diff --git a/ember_debug/rollup.config.js b/ember_debug/rollup.config.js
index a681c7962c..a999d42522 100644
--- a/ember_debug/rollup.config.js
+++ b/ember_debug/rollup.config.js
@@ -11,6 +11,7 @@ export default {
'utils/type-check.js',
'port.js',
'utils/ember.js',
+ 'utils/type-check',
'models/profile-node.js',
'libs/promise-assembler.js',
'lib/versions.js',
diff --git a/ember_debug/utils/version.js b/ember_debug/utils/version.js
index d07b125267..12a6030d37 100644
--- a/ember_debug/utils/version.js
+++ b/ember_debug/utils/version.js
@@ -34,6 +34,8 @@ export function isInVersionSpecifier(specifier, version) {
let operator = specifier[0];
if (Number.isNaN(+operator)) {
specifier = specifier.slice(1);
+ } else {
+ return specifier === version;
}
specifier = cleanupVersion(specifier).split('.');
version2 = cleanupVersion(version).split('.');
diff --git a/eslint.config.mjs b/eslint.config.mjs
index 5aed6b609e..8546720f338 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -62,6 +62,10 @@ export default ts.config(
'dist/',
'ember_debug/dist/',
'node_modules/',
+ 'test-apps/classic/node_modules/',
+ 'test-apps/classic/dist/',
+ 'test-apps/classic/public/',
+ 'test-apps/tests/helpers/index.ts',
'coverage/',
'!**/.*',
'vendor/',
@@ -93,6 +97,7 @@ export default ts.config(
...globals.browser,
basicContext: false,
requireModule: false,
+ chrome: true,
},
},
},
@@ -113,10 +118,21 @@ export default ts.config(
},
},
{
- files: ['tests/**/*-test.{js,gjs,ts,gts}'],
+ files: [
+ 'tests/**/*-test.{js,gjs,ts,gts}',
+ 'test-apps/classic/tests/**/*-test.{js,gjs,ts,gts}',
+ ],
plugins: {
qunit,
},
+ languageOptions: {
+ globals: {
+ ...globals.browser,
+ basicContext: false,
+ requireModule: false,
+ chrome: true,
+ },
+ },
},
/**
* CJS node files
@@ -125,15 +141,18 @@ export default ts.config(
files: [
'**/*.cjs',
'config/**/*.js',
+ 'test-apps/classic/config/**/*.js',
'lib/*/index.js',
'scripts/**/*.js',
'testem.js',
+ 'test-apps/classic/testem.js',
'testem*.js',
'.prettierrc.js',
'.stylelintrc.js',
'.template-lintrc.js',
'babel.config.js',
'ember-cli-build.js',
+ 'test-apps/classic/ember-cli-build.js',
'gulpfile.js',
],
plugins: {
diff --git a/package.json b/package.json
index 5f3fa8458c..6a1bfa35cb 100644
--- a/package.json
+++ b/package.json
@@ -30,12 +30,14 @@
"start": "ember serve",
"test": "concurrently \"pnpm:lint\" \"pnpm:test:*\" --names \"lint,test:\" --prefixColors auto",
"test:ember": "pnpm build:ember-debug && COVERAGE=true ember test",
- "watch": "pnpm '/watch:/'",
"watch-test": "pnpm '/watch-test:/'",
"watch-test:ember-debug": "pnpm --filter ember-debug watch",
"watch-test:inspector-ui": "ember test --serv",
+ "watch": "pnpm '/watch:/'",
+ "watch:inspector-ui": "ember build --watch",
"watch:ember-debug": "pnpm --filter ember-debug watch",
- "watch:inspector-ui": "ember build --watch"
+ "ember-debug:try:one": "pnpm --filter '*' ember:try:one",
+ "ember-debug:test": "pnpm --filter '*' ember-debug-test"
},
"dependencies": {
"got": "^11.8.6",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 3fe181a692..9c05175e38 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -396,6 +396,126 @@ importers:
specifier: ^1.2.1
version: 1.2.1
+ test-apps/classic:
+ devDependencies:
+ '@babel/core':
+ specifier: ^7.26.0
+ version: 7.26.0
+ '@babel/eslint-parser':
+ specifier: ^7.25.9
+ version: 7.26.5(@babel/core@7.26.0)(eslint@9.18.0)
+ '@babel/plugin-proposal-decorators':
+ specifier: ^7.25.9
+ version: 7.25.9(@babel/core@7.26.0)
+ '@ember/optional-features':
+ specifier: ^2.2.0
+ version: 2.2.0
+ '@ember/render-modifiers':
+ specifier: ^3.0.0
+ version: 3.0.0(@glint/template@1.5.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1))
+ '@ember/string':
+ specifier: ^4.0.0
+ version: 4.0.0
+ '@ember/test-helpers':
+ specifier: ^4.0.4
+ version: 4.0.4(@babel/core@7.26.0)(@glint/template@1.5.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1))
+ '@eslint/js':
+ specifier: ^9.17.0
+ version: 9.18.0
+ '@glimmer/component':
+ specifier: ^1.1.2
+ version: 1.1.2(@babel/core@7.26.0)
+ '@glimmer/tracking':
+ specifier: ^1.1.2
+ version: 1.1.2
+ broccoli-asset-rev:
+ specifier: ^3.0.0
+ version: 3.0.0
+ concurrently:
+ specifier: ^9.1.0
+ version: 9.1.2
+ ember-auto-import:
+ specifier: ^2.10.0
+ version: 2.10.0(@glint/template@1.5.1)(webpack@5.97.1)
+ ember-cli:
+ specifier: ~6.1.0
+ version: 6.1.0(handlebars@4.7.8)(underscore@1.13.7)
+ ember-cli-babel:
+ specifier: ^8.2.0
+ version: 8.2.0(@babel/core@7.26.0)
+ ember-cli-clean-css:
+ specifier: ^3.0.0
+ version: 3.0.0
+ ember-cli-dependency-checker:
+ specifier: ^3.3.3
+ version: 3.3.3(ember-cli@6.1.0(handlebars@4.7.8)(underscore@1.13.7))
+ ember-cli-htmlbars:
+ specifier: ^6.3.0
+ version: 6.3.0
+ ember-cli-inject-live-reload:
+ specifier: ^2.1.0
+ version: 2.1.0
+ ember-cli-sri:
+ specifier: ^2.1.1
+ version: 2.1.1
+ ember-cli-terser:
+ specifier: ^4.0.2
+ version: 4.0.2
+ ember-fetch:
+ specifier: ^8.1.2
+ version: 8.1.2(encoding@0.1.13)
+ ember-in-element-polyfill:
+ specifier: ^1.0.1
+ version: 1.0.1
+ ember-load-initializers:
+ specifier: ^3.0.1
+ version: 3.0.1(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1))
+ ember-modifier:
+ specifier: ^4.2.0
+ version: 4.2.0(@babel/core@7.26.0)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1))
+ ember-page-title:
+ specifier: ^8.2.3
+ version: 8.2.4(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1))
+ ember-qunit:
+ specifier: ^8.1.1
+ version: 8.1.1(@ember/test-helpers@4.0.4(@babel/core@7.26.0)(@glint/template@1.5.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1)))(@glint/template@1.5.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1))(qunit@2.24.1)
+ ember-resolver:
+ specifier: ^13.1.0
+ version: 13.1.0(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1))
+ ember-sinon-qunit:
+ specifier: ^7.5.0
+ version: 7.5.0(@babel/core@7.26.0)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1))(qunit@2.24.1)(sinon@15.2.0)
+ ember-source:
+ specifier: ^5.0.0
+ version: 5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1)
+ ember-template-lint:
+ specifier: ^6.0.0
+ version: 6.0.0
+ ember-try:
+ specifier: ^3.0.0
+ version: 3.0.0(encoding@0.1.13)
+ ember-welcome-page:
+ specifier: ^7.0.2
+ version: 7.0.2
+ ember-wormhole:
+ specifier: ^0.6.0
+ version: 0.6.0
+ loader.js:
+ specifier: ^4.7.0
+ version: 4.7.0
+ qunit:
+ specifier: ^2.24.1
+ version: 2.24.1
+ qunit-dom:
+ specifier: ^3.4.0
+ version: 3.4.0
+ tracked-built-ins:
+ specifier: ^3.4.0
+ version: 3.4.0(@babel/core@7.26.0)
+ webpack:
+ specifier: ^5.97.1
+ version: 5.97.1
+
packages:
'@ampproject/remapping@2.3.0':
@@ -1220,6 +1340,16 @@ packages:
'@glint/template':
optional: true
+ '@ember/render-modifiers@3.0.0':
+ resolution: {integrity: sha512-gJztS8dI7Jt8ohFQptEDJAgpl9DG84IpqwQoR1JDpVIBy2uLbf8KFD6S3h3LfyMsgJce6G38cOvyQv6BDgcnsA==}
+ engines: {node: '>= 18'}
+ peerDependencies:
+ '@glint/template': ^1.0.2
+ ember-source: '>= 4.0.0'
+ peerDependenciesMeta:
+ '@glint/template':
+ optional: true
+
'@ember/string@3.1.1':
resolution: {integrity: sha512-UbXJ+k3QOrYN4SRPHgXCqYIJ+yWWUg1+vr0H4DhdQPTy8LJfyqwZ2tc5uqpSSnEXE+/1KopHBE5J8GDagAg5cg==}
engines: {node: 12.* || 14.* || >= 16}
@@ -2878,6 +3008,9 @@ packages:
resolution: {integrity: sha512-YoUHeKnPi4xIGZ2XDVN9oHNA9k3xF5f5vlA+1wvrxIIDXqQU97gp2FxVAF503Zxdtt0C5CRB5n+47k2hlkaBzA==}
engines: {node: '>= 0.10.0'}
+ broccoli-caching-writer@2.3.1:
+ resolution: {integrity: sha512-lfoDx98VaU8tG4mUXCxKdKyw2Lr+iSIGUjCgV83KC2zRC07SzYTGuSsMqpXFiOQlOGuoJxG3NRoyniBa1BWOqA==}
+
broccoli-caching-writer@3.0.3:
resolution: {integrity: sha512-g644Kb5uBPsy+6e2DvO3sOc+/cXZQQNgQt64QQzjA9TSdP0dl5qvetpoNIx4sy/XIjrPYG1smEidq9Z9r61INw==}
@@ -2915,6 +3048,9 @@ packages:
resolution: {integrity: sha512-ng4eIhPYiXqMw6SyGoxPHR3YAwEd2lr9FgBI1CyTbspl4txZovOsmzFkMkGAlu88xyvYXJqHiM2crfLa65T1BQ==}
engines: {node: 10.* || >= 12.*}
+ broccoli-kitchen-sink-helpers@0.2.9:
+ resolution: {integrity: sha512-C+oEqivDofZv/h80rgN4WJkbZkbfwkrIeu8vFn4bb4m4jPd3ICNNplhkXGl3ps439pzc2yjZ1qIwz0yy8uHcQg==}
+
broccoli-kitchen-sink-helpers@0.3.1:
resolution: {integrity: sha512-gqYnKSJxBSjj/uJqeuRAzYVbmjWhG0mOZ8jrp6+fnUIOgLN6MvI7XxBECDHkYMIFPJ8Smf4xaI066Q2FqQDnXg==}
@@ -2959,6 +3095,9 @@ packages:
resolution: {integrity: sha512-Q+8iezprZzL9voaBsDY3rQVl7c7H5h+bvv8SpzCZXPZgfBFCbx7KFQ2c3rZR6lW5k4Kwoqt7jG+rZMUg67Gwxw==}
engines: {node: 10.* || >= 12.*}
+ broccoli-plugin@1.1.0:
+ resolution: {integrity: sha512-dY1QsA20of9wWEto8yhN7JQjpfjySmgeIMsvnQ9aBAv1wEJJCe04B0ekdgq7Bduyx9yWXdoC5CngGy81swmp2w==}
+
broccoli-plugin@1.3.1:
resolution: {integrity: sha512-DW8XASZkmorp+q7J4EeDEZz+LoyKLAd2XZULXyD9l4m9/hAKV3vjHmB1kiUshcWAYMgTP1m2i4NnqCE/23h6AQ==}
@@ -2996,6 +3135,9 @@ packages:
resolution: {integrity: sha512-ZbGVQjivWi0k220fEeIUioN6Y68xjMy0xiLAc0LdieHI99gw+tafU8w0CggBDYVNsJMKUr006AZaM7gNEwCxEg==}
engines: {node: 8.* || 10.* || >= 12.*}
+ broccoli-sri-hash@2.1.2:
+ resolution: {integrity: sha512-toLD/v7ut2ajcH8JsdCMG2Bpq2qkwTcKM6CMzVMSAJjaz/KpK69fR+gSqe1dsjh+QTdxG0yVvkq3Sij/XMzV6A==}
+
broccoli-stew@3.0.0:
resolution: {integrity: sha512-NXfi+Vas24n3Ivo21GvENTI55qxKu7OwKRnCLWXld8MiLiQKQlWIq28eoARaFj0lTUFwUa4jKZeA7fW9PiWQeg==}
engines: {node: 8.* || >= 10.*}
@@ -4153,6 +4295,10 @@ packages:
resolution: {integrity: sha512-RMlFPMK4kaB+67seF/IIoY3EC4rRd+L58q+lyElrxB3FcQTgph/qmGwtqf9Up7m3SDbPiA7cccCOSmgReMgCXA==}
engines: {node: '>= 10.*'}
+ ember-cli-sri@2.1.1:
+ resolution: {integrity: sha512-YG/lojDxkur9Bnskt7xB6gUOtJ6aPl/+JyGYm9HNDk3GECVHB3SMN3rlGhDKHa1ndS5NK2W2TSLb9bzRbGlMdg==}
+ engines: {node: '>= 0.10.0'}
+
ember-cli-string-utils@1.1.0:
resolution: {integrity: sha512-PlJt4fUDyBrC/0X+4cOpaGCiMawaaB//qD85AXmDRikxhxVzfVdpuoec02HSiTGTTB85qCIzWBIh8lDOiMyyFg==}
@@ -4277,6 +4423,12 @@ packages:
resolution: {integrity: sha512-Pz7muUcwzgAVGQ3ZNCdY/KMKtmvtJk5DWetuvx2MVHZCRpVzSRvkVa2tKXcp4tmz/COYUysneJxAR4tmwAyH9Q==}
engines: {node: 12.* || 14.* || >= 16}
+ ember-page-title@8.2.4:
+ resolution: {integrity: sha512-ZZ912IRItIEfD5+35w65DT9TmqppK+suXJeaJenD5OSuvujUnYl6KxBpyAbfjw4mYtURwJO/TmSe+4GGJbsJ0w==}
+ engines: {node: 16.* || >= 18}
+ peerDependencies:
+ ember-source: '>= 3.28.0'
+
ember-qunit@8.1.1:
resolution: {integrity: sha512-nT+6s74j3BKNn+QQY/hINC3Xw3kn0NF0cU9zlgVQmCBWoyis1J24xWrY2LFOMThPmF6lHqcrUb5JwvBD4BXEXg==}
peerDependencies:
@@ -4378,6 +4530,10 @@ packages:
resolution: {integrity: sha512-ZYVKYWMnrHSD3vywo7rV76kPCOC9ATIEnGGG/PEKfCcFE0lB26jltRDnOrhORfLKq0JFp62fFxC/4940U+MwRQ==}
engines: {node: 16.* || >= 18.*}
+ ember-welcome-page@7.0.2:
+ resolution: {integrity: sha512-TyaKxFIRXhODW5BTbqD/by0Gu8Z9B9AA1ki3Bzzm6fOj2b30Qlprtt+XUG52kS0zVNmxYj/WWoT0TsKiU61VOw==}
+ engines: {node: 14.* || 16.* || >= 18}
+
ember-wormhole@0.6.0:
resolution: {integrity: sha512-b7RrRxkwCBEJxM2zR34dEzIET81BOZWTcYNJtkidLycLQvdbxPys5QJEjJ/IfDikT/z5HuQBdZRKBhXI0vZNXQ==}
engines: {node: 10.* || >= 12}
@@ -7717,6 +7873,11 @@ packages:
engines: {node: '>=10'}
hasBin: true
+ qunit@2.24.1:
+ resolution: {integrity: sha512-Eu0k/5JDjx0QnqxsE1WavnDNDgL1zgMZKsMw/AoAxnsl9p4RgyLODyo2N7abZY7CEAnvl5YUqFZdkImzbgXzSg==}
+ engines: {node: '>=10'}
+ hasBin: true
+
randombytes@2.1.0:
resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
@@ -8439,6 +8600,10 @@ packages:
sprintf-js@1.1.3:
resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==}
+ sri-toolbox@0.2.0:
+ resolution: {integrity: sha512-DQIMWCAr/M7phwo+d3bEfXwSBEwuaJL+SJx9cuqt1Ty7K96ZFoHpYnSbhrQZEr0+0/GtmpKECP8X/R4RyeTAfw==}
+ engines: {node: '>= 0.10.4'}
+
sshpk@1.18.0:
resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==}
engines: {node: '>=0.10.0'}
@@ -9217,6 +9382,9 @@ packages:
deprecated: The library contains critical security issues and should not be used for production! The maintenance of the project has been discontinued. Consider migrating your code to isolated-vm.
hasBin: true
+ walk-sync@0.2.7:
+ resolution: {integrity: sha512-OH8GdRMowEFr0XSHQeX5fGweO6zSVHo7bG/0yJQx6LAj9Oukz0C8heI3/FYectT66gY0IPGe89kOvU410/UNpg==}
+
walk-sync@0.3.4:
resolution: {integrity: sha512-ttGcuHA/OBnN2pcM6johpYlEms7XpO5/fyKIr48541xXedan4roO8cS1Q2S/zbbjGH/BarYDAMeS2Mi9HE5Tig==}
@@ -10532,6 +10700,18 @@ snapshots:
- '@babel/core'
- supports-color
+ '@ember/render-modifiers@3.0.0(@glint/template@1.5.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1))':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@embroider/macros': 1.16.9(@glint/template@1.5.1)
+ ember-cli-babel: 8.2.0(@babel/core@7.26.0)
+ ember-modifier-manager-polyfill: 1.2.0(@babel/core@7.26.0)
+ ember-source: 5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1)
+ optionalDependencies:
+ '@glint/template': 1.5.1
+ transitivePeerDependencies:
+ - supports-color
+
'@ember/string@3.1.1':
dependencies:
ember-cli-babel: 7.26.11
@@ -12565,6 +12745,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ broccoli-caching-writer@2.3.1:
+ dependencies:
+ broccoli-kitchen-sink-helpers: 0.2.9
+ broccoli-plugin: 1.1.0
+ debug: 2.6.9
+ rimraf: 2.7.1
+ rsvp: 3.6.2
+ walk-sync: 0.2.7
+ transitivePeerDependencies:
+ - supports-color
+
broccoli-caching-writer@3.0.3:
dependencies:
broccoli-kitchen-sink-helpers: 0.3.1
@@ -12688,6 +12879,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ broccoli-kitchen-sink-helpers@0.2.9:
+ dependencies:
+ glob: 5.0.15
+ mkdirp: 0.5.6
+
broccoli-kitchen-sink-helpers@0.3.1:
dependencies:
glob: 5.0.15
@@ -12794,6 +12990,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ broccoli-plugin@1.1.0:
+ dependencies:
+ promise-map-series: 0.2.3
+ quick-temp: 0.1.8
+ rimraf: 2.7.1
+ symlink-or-copy: 1.3.1
+
broccoli-plugin@1.3.1:
dependencies:
promise-map-series: 0.2.3
@@ -12870,6 +13073,16 @@ snapshots:
dependencies:
broccoli-node-api: 1.7.0
+ broccoli-sri-hash@2.1.2:
+ dependencies:
+ broccoli-caching-writer: 2.3.1
+ mkdirp: 0.5.6
+ rsvp: 3.6.2
+ sri-toolbox: 0.2.0
+ symlink-or-copy: 1.3.1
+ transitivePeerDependencies:
+ - supports-color
+
broccoli-stew@3.0.0:
dependencies:
broccoli-debug: 0.6.5
@@ -14220,6 +14433,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ ember-cli-sri@2.1.1:
+ dependencies:
+ broccoli-sri-hash: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
ember-cli-string-utils@1.1.0: {}
ember-cli-terser@4.0.2:
@@ -14615,6 +14834,14 @@ snapshots:
- '@babel/core'
- supports-color
+ ember-page-title@8.2.4(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1)):
+ dependencies:
+ '@embroider/addon-shim': 1.8.9
+ '@simple-dom/document': 1.4.0
+ ember-source: 5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1)
+ transitivePeerDependencies:
+ - supports-color
+
ember-qunit@8.1.1(@ember/test-helpers@4.0.4(@babel/core@7.26.0)(@glint/template@1.5.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1)))(@glint/template@1.5.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1))(qunit@2.24.0):
dependencies:
'@ember/test-helpers': 4.0.4(@babel/core@7.26.0)(@glint/template@1.5.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1))
@@ -14628,6 +14855,19 @@ snapshots:
- '@glint/template'
- supports-color
+ ember-qunit@8.1.1(@ember/test-helpers@4.0.4(@babel/core@7.26.0)(@glint/template@1.5.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1)))(@glint/template@1.5.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1))(qunit@2.24.1):
+ dependencies:
+ '@ember/test-helpers': 4.0.4(@babel/core@7.26.0)(@glint/template@1.5.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1))
+ '@embroider/addon-shim': 1.8.9
+ '@embroider/macros': 1.16.9(@glint/template@1.5.1)
+ ember-cli-test-loader: 3.1.0
+ ember-source: 5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1)
+ qunit: 2.24.1
+ qunit-theme-ember: 1.0.0
+ transitivePeerDependencies:
+ - '@glint/template'
+ - supports-color
+
ember-raf-scheduler@0.3.0:
dependencies:
ember-cli-babel: 7.26.11
@@ -14693,6 +14933,18 @@ snapshots:
- '@babel/core'
- supports-color
+ ember-sinon-qunit@7.5.0(@babel/core@7.26.0)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1))(qunit@2.24.1)(sinon@15.2.0):
+ dependencies:
+ '@embroider/addon-shim': 1.8.9
+ '@types/sinon': 17.0.3
+ decorator-transforms: 2.2.2(@babel/core@7.26.0)
+ ember-source: 5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1)
+ qunit: 2.24.1
+ sinon: 15.2.0
+ transitivePeerDependencies:
+ - '@babel/core'
+ - supports-color
+
ember-source-channel-url@3.0.0(encoding@0.1.13):
dependencies:
node-fetch: 2.7.0(encoding@0.1.13)
@@ -14897,6 +15149,12 @@ snapshots:
- encoding
- supports-color
+ ember-welcome-page@7.0.2:
+ dependencies:
+ '@embroider/addon-shim': 1.8.9
+ transitivePeerDependencies:
+ - supports-color
+
ember-wormhole@0.6.0:
dependencies:
ember-cli-babel: 7.26.11
@@ -18679,6 +18937,12 @@ snapshots:
node-watch: 0.7.3
tiny-glob: 0.2.9
+ qunit@2.24.1:
+ dependencies:
+ commander: 7.2.0
+ node-watch: 0.7.3
+ tiny-glob: 0.2.9
+
randombytes@2.1.0:
dependencies:
safe-buffer: 5.2.1
@@ -19594,6 +19858,8 @@ snapshots:
sprintf-js@1.1.3: {}
+ sri-toolbox@0.2.0: {}
+
sshpk@1.18.0:
dependencies:
asn1: 0.2.6
@@ -20560,6 +20826,11 @@ snapshots:
acorn: 8.12.1
acorn-walk: 8.3.4
+ walk-sync@0.2.7:
+ dependencies:
+ ensure-posix-path: 1.1.1
+ matcher-collection: 1.1.2
+
walk-sync@0.3.4:
dependencies:
ensure-posix-path: 1.1.1
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index a694fdd9da..ecdf393257 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -1,3 +1,4 @@
packages:
- .
- ember_debug
+ - test-apps/*
diff --git a/test-apps/classic/.ember-cli b/test-apps/classic/.ember-cli
new file mode 100644
index 0000000000..4defd284ec
--- /dev/null
+++ b/test-apps/classic/.ember-cli
@@ -0,0 +1,7 @@
+{
+ /**
+ Setting `isTypeScriptProject` to true will force the blueprint generators to generate TypeScript
+ rather than JavaScript by default, when a TypeScript version of a given blueprint is available.
+ */
+ "isTypeScriptProject": true
+}
diff --git a/test-apps/classic/app/app.js b/test-apps/classic/app/app.js
new file mode 100644
index 0000000000..19f2ce27d7
--- /dev/null
+++ b/test-apps/classic/app/app.js
@@ -0,0 +1,14 @@
+import Application from '@ember/application';
+import Resolver from 'ember-resolver';
+import loadInitializers from 'ember-load-initializers';
+import config from 'test-app/config/environment';
+
+export default class App extends Application {
+ modulePrefix = config.modulePrefix;
+ podModulePrefix = config.podModulePrefix;
+ Resolver = Resolver;
+}
+
+console.log('test app');
+
+loadInitializers(App, config.modulePrefix);
diff --git a/test-apps/classic/app/components/.gitkeep b/test-apps/classic/app/components/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/test-apps/classic/app/controllers/.gitkeep b/test-apps/classic/app/controllers/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/test-apps/classic/app/helpers/.gitkeep b/test-apps/classic/app/helpers/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/test-apps/classic/app/index.html b/test-apps/classic/app/index.html
new file mode 100644
index 0000000000..3a3c400d40
--- /dev/null
+++ b/test-apps/classic/app/index.html
@@ -0,0 +1,25 @@
+
+
+
+
+ TestApp
+
+
+
+ {{content-for "head"}}
+
+
+
+
+ {{content-for "head-footer"}}
+
+
+ {{content-for "body"}}
+
+
+
+
+
+ {{content-for "body-footer"}}
+
+
diff --git a/test-apps/classic/app/models/.gitkeep b/test-apps/classic/app/models/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/test-apps/classic/app/router.js b/test-apps/classic/app/router.js
new file mode 100644
index 0000000000..38a0b80a63
--- /dev/null
+++ b/test-apps/classic/app/router.js
@@ -0,0 +1,9 @@
+import EmberRouter from '@ember/routing/router';
+import config from 'test-app/config/environment';
+
+export default class Router extends EmberRouter {
+ location = config.locationType;
+ rootURL = config.rootURL;
+}
+
+Router.map(function () {});
diff --git a/test-apps/classic/app/routes/.gitkeep b/test-apps/classic/app/routes/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/test-apps/classic/app/services/adapters/basic.js b/test-apps/classic/app/services/adapters/basic.js
new file mode 100644
index 0000000000..9fa13c3a9b
--- /dev/null
+++ b/test-apps/classic/app/services/adapters/basic.js
@@ -0,0 +1,156 @@
+/**
+ * The adapter stores logic specific to each environment.
+ * Extend this object with env specific code (such as chrome/firefox/test),
+ * then set the application's `adapter` property to the name of this adapter.
+ *
+ * example:
+ *
+ * ```javascript
+ * const EmberInspector = App.Create({
+ * adapter: 'chrome'
+ * });
+ * ```
+ */
+import Service from '@ember/service';
+import { action } from '@ember/object';
+import { tracked } from '@glimmer/tracking';
+
+const config = {};
+
+export default class Basic extends Service {
+ _messageCallbacks;
+ name = 'basic';
+
+ @tracked canOpenResource = false;
+
+ /**
+ * Called when the adapter is created (when
+ * the inspector app boots).
+ */
+ constructor() {
+ super(...arguments);
+
+ this._messageCallbacks = [];
+ this._checkVersion();
+ }
+
+ /**
+ * Listens to Ember Inspector message about
+ * Ember version mismatch. If a mismatch message is received
+ * it means the current inspector app does not support the current
+ * Ember version and needs to switch to an inspector version
+ * that does.
+ *
+ * @private
+ */
+ _checkVersion() {
+ this.onMessageReceived((message) => {
+ const { name, version } = message;
+ if (name === 'version-mismatch') {
+ const previousVersions = config.previousEmberVersionsSupported;
+ const [fromVersion, tillVersion] = config.emberVersionsSupported;
+ let neededVersion;
+
+ if (compareVersion(version, fromVersion) === -1) {
+ neededVersion = previousVersions[previousVersions.length - 1];
+ } else if (tillVersion && compareVersion(version, tillVersion) !== -1) {
+ neededVersion = tillVersion;
+ } else {
+ return;
+ }
+ this.onVersionMismatch(neededVersion);
+ }
+ });
+ this.sendMessage({ type: 'check-version', from: 'devtools' });
+ }
+
+ /**
+ * Hook called when the Ember version is not
+ * supported by the current inspector version.
+ *
+ * Each adapter should implement this hook
+ * to switch to an older/new inspector version
+ * that supports this Ember version.
+ *
+ * @param _neededVersion (The version to go to)
+ */
+ onVersionMismatch() {}
+
+ /**
+ Used to send messages to EmberDebug
+
+ @param _message the message to send
+ **/
+ sendMessage() {}
+
+ /**
+ Register functions to be called
+ when a message from EmberDebug is received
+ **/
+ onMessageReceived(callback) {
+ this._messageCallbacks.push(callback);
+ }
+
+ _messageReceived(...args) {
+ this._messageCallbacks.forEach((callback) => {
+ callback(...args);
+ });
+ }
+
+ reloadTab() {}
+ // Called when the "Reload" is clicked by the user
+ willReload() {}
+ openResource() {}
+
+ @action
+ refreshPage() {
+ // If the adapter defined a `reloadTab` method, it means
+ // they prefer to handle the reload themselves
+ if (typeof this.reloadTab === 'function') {
+ this.reloadTab();
+ } else {
+ // inject ember_debug as quickly as possible in chrome
+ // so that promises created on dom ready are caught
+ this.port.send('general:refresh');
+ this.willReload();
+ }
+ }
+}
+
+/**
+ * Compares two Ember versions.
+ *
+ * Returns:
+ * `-1` if version < version
+ * 0 if version1 == version2
+ * 1 if version1 > version2
+ *
+ * @return result of the comparison
+ */
+function compareVersion(version1, version2) {
+ const v1 = cleanupVersion(version1).split('.');
+ const v2 = cleanupVersion(version2).split('.');
+ for (let i = 0; i < 3; i++) {
+ // @ts-expect-error TODO: refactor this to make TS happy
+ const compared = compare(+v1[i], +v2[i]);
+ if (compared !== 0) {
+ return compared;
+ }
+ }
+ return 0;
+}
+
+/* Remove -alpha, -beta, etc from versions */
+function cleanupVersion(version) {
+ return version.replace(/-.*/g, '');
+}
+
+function compare(val, number) {
+ if (val === number) {
+ return 0;
+ } else if (val < number) {
+ return -1;
+ } else if (val > number) {
+ return 1;
+ }
+}
diff --git a/test-apps/classic/app/services/adapters/web-extension.js b/test-apps/classic/app/services/adapters/web-extension.js
new file mode 100644
index 0000000000..68221c533a
--- /dev/null
+++ b/test-apps/classic/app/services/adapters/web-extension.js
@@ -0,0 +1,163 @@
+import { tracked } from '@glimmer/tracking';
+
+import BasicAdapter from './basic';
+
+let emberDebug = null;
+let config = {
+ emberVersionsSupported: ['3.16.0'],
+};
+
+export default class WebExtension extends BasicAdapter {
+ @tracked canOpenResource = false;
+ name = 'web-extension';
+
+ /**
+ * Called when the adapter is created.
+ */
+ constructor() {
+ super();
+
+ this._connect();
+ this._handleReload();
+ this._setThemeColors();
+
+ void Promise.resolve().then(() => this._sendEmberDebug());
+ }
+
+ sendMessage(message) {
+ this._chromePort.postMessage(message ?? {});
+ }
+
+ _sendEmberDebug() {
+ const minimumVersion = config.emberVersionsSupported[0].replace(/\./g, '-');
+ const url = chrome.runtime.getURL(
+ `/panes-${minimumVersion}/ember_debug.js`,
+ );
+ // first send to all frames in current tab
+ this.sendMessage({
+ from: 'devtools',
+ tabId: chrome.devtools.inspectedWindow.tabId,
+ type: 'inject-ember-debug',
+ value: url,
+ });
+ this.onMessageReceived((message, sender) => {
+ if (message === 'ember-content-script-ready') {
+ this.sendMessage({
+ frameId: sender.frameId,
+ from: 'devtools',
+ tabId: chrome.devtools.inspectedWindow.tabId,
+ type: 'inject-ember-debug',
+ value: url,
+ });
+ }
+ });
+ }
+
+ get _chromePort() {
+ return chrome.runtime.connect();
+ }
+
+ _connect() {
+ const chromePort = this._chromePort;
+ chromePort.postMessage({ appId: chrome.devtools.inspectedWindow.tabId });
+
+ chromePort.onMessage.addListener((...args) => {
+ this._messageReceived(...args);
+ });
+
+ chromePort.onDisconnect.addListener(() => {
+ this._connect();
+ });
+ }
+
+ _handleReload() {
+ chrome.devtools.network.onNavigated.addListener(() => {
+ this._injectDebugger();
+ location.reload();
+ });
+ }
+
+ _injectDebugger() {
+ void loadEmberDebug().then((emberDebug) => {
+ chrome.devtools.inspectedWindow.eval(emberDebug, (success, error) => {
+ if (success === undefined && error) {
+ throw error;
+ }
+ });
+ });
+ }
+
+ _setThemeColors() {
+ // Remove old theme colors to ensure switching themes works
+ document.body.classList.remove('theme-light', 'theme-dark');
+
+ let theme = 'theme-light';
+ if (chrome.devtools.panels.themeName === 'dark') {
+ theme = 'theme-dark';
+ }
+ document.body.classList.add(theme);
+ }
+
+ willReload() {
+ this._injectDebugger();
+ }
+
+ /**
+ * Open the devtools "Elements" or "Sources" tab and select a specific DOM node or function.
+ */
+ inspectJSValue(name) {
+ chrome.devtools.inspectedWindow.eval(`
+ inspect(window[${JSON.stringify(name)}]);
+ delete window[${JSON.stringify(name)}];
+ `);
+ }
+
+ /**
+ * Redirect to the correct inspector version.
+ */
+ onVersionMismatch(goToVersion) {
+ window.location.href = `../panes-${goToVersion.replace(
+ /\./g,
+ '-',
+ )}/index.html`;
+ }
+
+ /**
+ We handle the reload here so we can inject
+ scripts as soon as possible into the new page.
+ */
+ reloadTab() {
+ void loadEmberDebug().then((emberDebug) => {
+ chrome.devtools.inspectedWindow.reload({
+ injectedScript: emberDebug,
+ });
+ });
+ }
+}
+
+function loadEmberDebug() {
+ const minimumVersion = config.emberVersionsSupported[0].replace(/\./g, '-');
+ let xhr;
+
+ return new Promise((resolve) => {
+ if (!emberDebug) {
+ xhr = new XMLHttpRequest();
+ xhr.open(
+ 'GET',
+ chrome.runtime.getURL(`/panes-${minimumVersion}/ember_debug.js`),
+ );
+ xhr.onload = function () {
+ if (xhr.readyState === 4) {
+ if (xhr.status === 200) {
+ emberDebug = xhr.responseText;
+ resolve(emberDebug);
+ }
+ }
+ };
+
+ xhr.send();
+ } else {
+ resolve(emberDebug);
+ }
+ });
+}
diff --git a/test-apps/classic/app/styles/app.css b/test-apps/classic/app/styles/app.css
new file mode 100644
index 0000000000..2763afa4cf
--- /dev/null
+++ b/test-apps/classic/app/styles/app.css
@@ -0,0 +1 @@
+/* Ember supports plain CSS out of the box. More info: https://cli.emberjs.com/release/advanced-use/stylesheets/ */
diff --git a/test-apps/classic/app/templates/application.hbs b/test-apps/classic/app/templates/application.hbs
new file mode 100644
index 0000000000..d6565bbd6b
--- /dev/null
+++ b/test-apps/classic/app/templates/application.hbs
@@ -0,0 +1,7 @@
+{{page-title "TestApp"}}
+
+{{outlet}}
+
+{{! The following component displays Ember's default welcome message. }}
+
+{{! Feel free to remove this! }}
\ No newline at end of file
diff --git a/test-apps/classic/config/ember-cli-update.json b/test-apps/classic/config/ember-cli-update.json
new file mode 100644
index 0000000000..5dc0d1493e
--- /dev/null
+++ b/test-apps/classic/config/ember-cli-update.json
@@ -0,0 +1,20 @@
+{
+ "schemaVersion": "1.0.0",
+ "packages": [
+ {
+ "name": "ember-cli",
+ "version": "6.1.0",
+ "blueprints": [
+ {
+ "name": "app",
+ "outputRepo": "https://github.com/ember-cli/ember-new-output",
+ "codemodsSource": "ember-app-codemods-manifest@1",
+ "isBaseBlueprint": true,
+ "options": [
+ "--ci-provider=github"
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/config/ember-try.js b/test-apps/classic/config/ember-try.js
similarity index 94%
rename from config/ember-try.js
rename to test-apps/classic/config/ember-try.js
index 4471528f9f..5cae0d8085 100644
--- a/config/ember-try.js
+++ b/test-apps/classic/config/ember-try.js
@@ -12,7 +12,6 @@ module.exports = async function () {
devDependencies: {
'@ember/test-helpers': '^2.4.0',
'ember-cli': '^3.28.0',
- 'ember-cli-app-version': '^5.0.0',
'ember-source': '~3.16.0',
'ember-resolver': '^11.0.1',
'ember-qunit': '^5.1.5',
@@ -25,7 +24,6 @@ module.exports = async function () {
devDependencies: {
'@ember/test-helpers': '^2.4.0',
'ember-cli': '^3.28.0',
- 'ember-cli-app-version': '^5.0.0',
'ember-source': '~3.20.5',
'ember-resolver': '^11.0.1',
'ember-qunit': '^5.1.5',
@@ -38,7 +36,6 @@ module.exports = async function () {
devDependencies: {
'@ember/test-helpers': '^2.4.0',
'ember-cli': '^3.28.0',
- 'ember-cli-app-version': '^5.0.0',
'ember-source': '~3.24.0',
'ember-resolver': '^11.0.1',
'ember-qunit': '^5.1.5',
@@ -51,7 +48,6 @@ module.exports = async function () {
devDependencies: {
'@ember/test-helpers': '^2.4.0',
'ember-cli': '^3.28.0',
- 'ember-cli-app-version': '^6.0.0',
'ember-source': '~3.28.0',
'ember-resolver': '^11.0.1',
'ember-qunit': '^5.1.5',
diff --git a/test-apps/classic/config/environment.js b/test-apps/classic/config/environment.js
new file mode 100644
index 0000000000..113d30aeb0
--- /dev/null
+++ b/test-apps/classic/config/environment.js
@@ -0,0 +1,48 @@
+'use strict';
+
+module.exports = function (environment) {
+ const ENV = {
+ modulePrefix: 'test-app',
+ environment,
+ rootURL: '/',
+ locationType: 'history',
+ EmberENV: {
+ EXTEND_PROTOTYPES: false,
+ FEATURES: {
+ // Here you can enable experimental features on an ember canary build
+ // e.g. EMBER_NATIVE_DECORATOR_SUPPORT: true
+ },
+ },
+
+ APP: {
+ // Here you can pass flags/options to your application instance
+ // when it is created
+ },
+ };
+
+ if (environment === 'development') {
+ // ENV.APP.LOG_RESOLVER = true;
+ // ENV.APP.LOG_ACTIVE_GENERATION = true;
+ // ENV.APP.LOG_TRANSITIONS = true;
+ // ENV.APP.LOG_TRANSITIONS_INTERNAL = true;
+ // ENV.APP.LOG_VIEW_LOOKUPS = true;
+ }
+
+ if (environment === 'test') {
+ // Testem prefers this...
+ ENV.locationType = 'none';
+
+ // keep test console output quieter
+ ENV.APP.LOG_ACTIVE_GENERATION = false;
+ ENV.APP.LOG_VIEW_LOOKUPS = false;
+
+ ENV.APP.rootElement = '#ember-testing';
+ ENV.APP.autoboot = false;
+ }
+
+ if (environment === 'production') {
+ // here you can enable a production-specific feature
+ }
+
+ return ENV;
+};
diff --git a/test-apps/classic/config/optional-features.json b/test-apps/classic/config/optional-features.json
new file mode 100644
index 0000000000..5329dd9913
--- /dev/null
+++ b/test-apps/classic/config/optional-features.json
@@ -0,0 +1,7 @@
+{
+ "application-template-wrapper": false,
+ "default-async-observers": true,
+ "jquery-integration": false,
+ "template-only-glimmer-components": true,
+ "no-implicit-route-model": true
+}
diff --git a/test-apps/classic/config/targets.js b/test-apps/classic/config/targets.js
new file mode 100644
index 0000000000..1e48e0599f
--- /dev/null
+++ b/test-apps/classic/config/targets.js
@@ -0,0 +1,11 @@
+'use strict';
+
+const browsers = [
+ 'last 1 Chrome versions',
+ 'last 1 Firefox versions',
+ 'last 1 Safari versions',
+];
+
+module.exports = {
+ browsers,
+};
diff --git a/test-apps/classic/ember-cli-build.js b/test-apps/classic/ember-cli-build.js
new file mode 100644
index 0000000000..d7b5410d4e
--- /dev/null
+++ b/test-apps/classic/ember-cli-build.js
@@ -0,0 +1,30 @@
+'use strict';
+
+const EmberApp = require('ember-cli/lib/broccoli/ember-app');
+const path = require('path');
+const fs = require('fs');
+const { Funnel } = require('broccoli-funnel');
+
+const testingDir = path.resolve(__dirname, '../../dist/testing');
+const distDir = path.resolve(__dirname, '../../dist');
+const testingFolderExists = fs.existsSync(testingDir);
+
+module.exports = function (defaults) {
+ defaults.project.name = () => 'test-app';
+ const app = new EmberApp(defaults, {
+ 'ember-cli-babel': { enableTypeScriptTransform: true },
+ trees: {
+ tests: new Funnel(path.resolve(__dirname, '../tests')),
+ public: new Funnel(testingFolderExists ? testingDir : distDir, {
+ files: [
+ 'ember_debug.js',
+ 'background.js',
+ 'content-script.js',
+ 'panes-3-16-0',
+ ],
+ }),
+ },
+ });
+
+ return app.toTree();
+};
diff --git a/test-apps/classic/package.json b/test-apps/classic/package.json
new file mode 100644
index 0000000000..50e284094b
--- /dev/null
+++ b/test-apps/classic/package.json
@@ -0,0 +1,67 @@
+{
+ "name": "classic-test-app",
+ "version": "0.0.0",
+ "private": true,
+ "description": "Small description for test-app goes here",
+ "repository": "",
+ "license": "MIT",
+ "author": "",
+ "directories": {
+ "doc": "doc",
+ "test": "tests"
+ },
+ "scripts": {
+ "build": "ember build --environment=testing",
+ "test": "EMBER_ENV=test ember test",
+ "ember-debug-test": "pnpm test",
+ "ember:try:one": "ember try:one",
+ "test-server:ember": "ember test --serve --watcher node"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.26.0",
+ "@babel/eslint-parser": "^7.25.9",
+ "@babel/plugin-proposal-decorators": "^7.25.9",
+ "@ember/optional-features": "^2.2.0",
+ "@ember/string": "^4.0.0",
+ "@ember/test-helpers": "^4.0.4",
+ "@eslint/js": "^9.17.0",
+ "@glimmer/component": "^1.1.2",
+ "@glimmer/tracking": "^1.1.2",
+ "broccoli-asset-rev": "^3.0.0",
+ "concurrently": "^9.1.0",
+ "ember-auto-import": "^2.10.0",
+ "ember-cli": "~6.1.0",
+ "ember-cli-babel": "^8.2.0",
+ "ember-cli-clean-css": "^3.0.0",
+ "ember-cli-dependency-checker": "^3.3.3",
+ "ember-cli-htmlbars": "^6.3.0",
+ "ember-cli-inject-live-reload": "^2.1.0",
+ "ember-cli-sri": "^2.1.1",
+ "ember-cli-terser": "^4.0.2",
+ "ember-fetch": "^8.1.2",
+ "ember-load-initializers": "^3.0.1",
+ "ember-modifier": "^4.2.0",
+ "ember-page-title": "^8.2.3",
+ "ember-qunit": "^8.1.1",
+ "@ember/render-modifiers": "^3.0.0",
+ "qunit": "^2.24.1",
+ "qunit-dom": "^3.4.0",
+ "ember-sinon-qunit": "^7.5.0",
+ "ember-resolver": "^13.1.0",
+ "ember-source": "^5.0.0",
+ "ember-template-lint": "^6.0.0",
+ "ember-welcome-page": "^7.0.2",
+ "ember-wormhole": "^0.6.0",
+ "ember-try": "^3.0.0",
+ "loader.js": "^4.7.0",
+ "tracked-built-ins": "^3.4.0",
+ "ember-in-element-polyfill": "^1.0.1",
+ "webpack": "^5.97.1"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "ember": {
+ "edition": "octane"
+ }
+}
diff --git a/test-apps/classic/testem.js b/test-apps/classic/testem.js
new file mode 100644
index 0000000000..ed2f37124a
--- /dev/null
+++ b/test-apps/classic/testem.js
@@ -0,0 +1,23 @@
+'use strict';
+
+module.exports = {
+ test_page: 'tests/index.html?hidepassed',
+ disable_watching: true,
+ launch_in_ci: ['Chrome'],
+ launch_in_dev: ['Chrome'],
+ browser_start_timeout: 120,
+ browser_args: {
+ Chrome: {
+ ci: [
+ // --no-sandbox is needed when running Chrome inside a container
+ process.env.CI ? '--no-sandbox' : null,
+ '--headless',
+ '--disable-dev-shm-usage',
+ '--disable-software-rasterizer',
+ '--mute-audio',
+ '--remote-debugging-port=0',
+ '--window-size=1440,900',
+ ].filter(Boolean),
+ },
+ },
+};
diff --git a/test-apps/embroider-static-source/tests b/test-apps/embroider-static-source/tests
new file mode 120000
index 0000000000..6dd24e02b5
--- /dev/null
+++ b/test-apps/embroider-static-source/tests
@@ -0,0 +1 @@
+../tests
\ No newline at end of file
diff --git a/tests/ember_debug/container-debug-test.js b/test-apps/tests/ember_debug/container-debug-test.js
similarity index 100%
rename from tests/ember_debug/container-debug-test.js
rename to test-apps/tests/ember_debug/container-debug-test.js
diff --git a/tests/ember_debug/deprecation-debug-test.js b/test-apps/tests/ember_debug/deprecation-debug-test.js
similarity index 100%
rename from tests/ember_debug/deprecation-debug-test.js
rename to test-apps/tests/ember_debug/deprecation-debug-test.js
diff --git a/tests/ember_debug/ember-data-test.js b/test-apps/tests/ember_debug/ember-data-test.js
similarity index 100%
rename from tests/ember_debug/ember-data-test.js
rename to test-apps/tests/ember_debug/ember-data-test.js
diff --git a/tests/ember_debug/ember-debug-test.js b/test-apps/tests/ember_debug/ember-debug-test.js
similarity index 100%
rename from tests/ember_debug/ember-debug-test.js
rename to test-apps/tests/ember_debug/ember-debug-test.js
diff --git a/tests/ember_debug/object-inspector-test.js b/test-apps/tests/ember_debug/object-inspector-test.js
similarity index 100%
rename from tests/ember_debug/object-inspector-test.js
rename to test-apps/tests/ember_debug/object-inspector-test.js
diff --git a/tests/ember_debug/profile-manager-test.js b/test-apps/tests/ember_debug/profile-manager-test.js
similarity index 100%
rename from tests/ember_debug/profile-manager-test.js
rename to test-apps/tests/ember_debug/profile-manager-test.js
diff --git a/tests/ember_debug/profile-node-test.js b/test-apps/tests/ember_debug/profile-node-test.js
similarity index 100%
rename from tests/ember_debug/profile-node-test.js
rename to test-apps/tests/ember_debug/profile-node-test.js
diff --git a/tests/ember_debug/promise-assembler-test.js b/test-apps/tests/ember_debug/promise-assembler-test.js
similarity index 100%
rename from tests/ember_debug/promise-assembler-test.js
rename to test-apps/tests/ember_debug/promise-assembler-test.js
diff --git a/tests/ember_debug/promise-debug-test.js b/test-apps/tests/ember_debug/promise-debug-test.js
similarity index 100%
rename from tests/ember_debug/promise-debug-test.js
rename to test-apps/tests/ember_debug/promise-debug-test.js
diff --git a/tests/ember_debug/render-debug-test.js b/test-apps/tests/ember_debug/render-debug-test.js
similarity index 100%
rename from tests/ember_debug/render-debug-test.js
rename to test-apps/tests/ember_debug/render-debug-test.js
diff --git a/tests/ember_debug/route-debug-test.js b/test-apps/tests/ember_debug/route-debug-test.js
similarity index 100%
rename from tests/ember_debug/route-debug-test.js
rename to test-apps/tests/ember_debug/route-debug-test.js
diff --git a/tests/ember_debug/view-debug-test.js b/test-apps/tests/ember_debug/view-debug-test.js
similarity index 100%
rename from tests/ember_debug/view-debug-test.js
rename to test-apps/tests/ember_debug/view-debug-test.js
diff --git a/test-apps/tests/helpers/index.ts b/test-apps/tests/helpers/index.ts
new file mode 100644
index 0000000000..e190f567ed
--- /dev/null
+++ b/test-apps/tests/helpers/index.ts
@@ -0,0 +1,43 @@
+import {
+ setupApplicationTest as upstreamSetupApplicationTest,
+ setupRenderingTest as upstreamSetupRenderingTest,
+ setupTest as upstreamSetupTest,
+ type SetupTestOptions,
+} from 'ember-qunit';
+
+// This file exists to provide wrappers around ember-qunit's
+// test setup functions. This way, you can easily extend the setup that is
+// needed per test type.
+
+function setupApplicationTest(hooks: NestedHooks, options?: SetupTestOptions) {
+ upstreamSetupApplicationTest(hooks, options);
+
+ // Additional setup for application tests can be done here.
+ //
+ // For example, if you need an authenticated session for each
+ // application test, you could do:
+ //
+ // hooks.beforeEach(async function () {
+ // await authenticateSession(); // ember-simple-auth
+ // });
+ //
+ // This is also a good place to call test setup functions coming
+ // from other addons:
+ //
+ // setupIntl(hooks, 'en-us'); // ember-intl
+ // setupMirage(hooks); // ember-cli-mirage
+}
+
+function setupRenderingTest(hooks: NestedHooks, options?: SetupTestOptions) {
+ upstreamSetupRenderingTest(hooks, options);
+
+ // Additional setup for rendering tests can be done here.
+}
+
+function setupTest(hooks: NestedHooks, options?: SetupTestOptions) {
+ upstreamSetupTest(hooks, options);
+
+ // Additional setup for unit tests can be done here.
+}
+
+export { setupApplicationTest, setupRenderingTest, setupTest };
diff --git a/test-apps/tests/helpers/setup-ember-debug-test.js b/test-apps/tests/helpers/setup-ember-debug-test.js
new file mode 100644
index 0000000000..466a549cbf
--- /dev/null
+++ b/test-apps/tests/helpers/setup-ember-debug-test.js
@@ -0,0 +1,86 @@
+/* eslint-disable ember/no-runloop */
+import Application from '@ember/application';
+import Resolver from 'ember-resolver';
+import EmberRouter from '@ember/routing/router';
+import {
+ getApplication,
+ setApplication,
+ setupApplicationContext,
+ setupContext,
+ teardownContext,
+} from '@ember/test-helpers';
+import { run } from '@ember/runloop';
+import config from 'test-app/config/environment';
+import EmberDebug from 'ember-debug/main';
+import { hbs } from 'ember-cli-htmlbars';
+import Port from 'ember-debug/port';
+
+export default function setupEmberDebugTest(hooks, options = {}) {
+ let app, originalApp, originalPort, originalIgnoreDeprecations;
+
+ hooks.beforeEach(async function () {
+ originalPort = EmberDebug.Port;
+ originalApp = getApplication();
+ originalIgnoreDeprecations = EmberDebug.IGNORE_DEPRECATIONS;
+
+ app = Application.create({
+ ...config.APP,
+ modulePrefix: config.modulePrefix,
+ Resolver,
+ });
+ setApplication(app);
+
+ await setupContext(this);
+ await setupApplicationContext(this);
+
+ // eslint-disable-next-line ember/no-classic-classes
+ const Router = EmberRouter.extend({
+ location: 'none',
+ });
+
+ if (options.routes) {
+ Router.map(options.routes);
+ } else {
+ Router.map(function () {
+ this.route('simple');
+ });
+
+ this.owner.register('template:simple', hbs`Simple template`);
+ }
+
+ this.owner.register('router:main', Router);
+
+ run(() => {
+ EmberDebug.isTesting = true;
+ EmberDebug.owner = this.owner;
+ });
+
+ EmberDebug.Port =
+ options.Port ||
+ class extends Port {
+ init() {}
+ send() {}
+ };
+
+ run(EmberDebug, 'start');
+ });
+
+ hooks.afterEach(async function () {
+ EmberDebug.destroyContainer();
+ EmberDebug.clear();
+
+ await teardownContext(this);
+
+ EmberDebug.IGNORE_DEPRECATIONS = originalIgnoreDeprecations;
+
+ run(() => {
+ EmberDebug.isTesting = false;
+ });
+
+ EmberDebug.Port = originalPort;
+
+ setApplication(originalApp);
+
+ run(app, 'destroy');
+ });
+}
diff --git a/test-apps/tests/index.html b/test-apps/tests/index.html
new file mode 100644
index 0000000000..e5ca721ca1
--- /dev/null
+++ b/test-apps/tests/index.html
@@ -0,0 +1,65 @@
+
+
+
+
+ EmberInspector Tests
+
+
+
+
+
+ {{content-for "head"}}
+ {{content-for "test-head"}}
+
+
+
+
+
+ {{content-for "head-footer"}}
+ {{content-for "test-head-footer"}}
+
+
+
+ {{content-for "body"}}
+ {{content-for "test-body"}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{content-for "body-footer"}}
+ {{content-for "test-body-footer"}}
+
+
diff --git a/test-apps/tests/integration/injection-test.js b/test-apps/tests/integration/injection-test.js
new file mode 100644
index 0000000000..869849ba74
--- /dev/null
+++ b/test-apps/tests/integration/injection-test.js
@@ -0,0 +1,361 @@
+import { module, test } from 'qunit';
+import { setupApplicationTest } from 'ember-qunit';
+import { isInVersionSpecifier } from 'ember-debug/version';
+import { VERSION } from 'ember-debug/ember';
+
+class ChromePort {
+ constructor(self, other) {
+ this.onDisconnectListeners = [];
+ const port = this;
+ this.selfSide = {
+ postMessage(msg) {
+ other.subscribers.forEach((sub) => sub(msg, other.sender));
+ },
+ onMessage: {
+ addListener(callback) {
+ self.subscribers.push(callback);
+ },
+ },
+ onDisconnect: {
+ addListener(l) {
+ port.onDisconnectListeners.push(l);
+ },
+ },
+ };
+ this.otherSide = {
+ postMessage(msg) {
+ self.subscribers.forEach((sub) => sub(msg, self.sender));
+ },
+ onMessage: {
+ addListener(callback) {
+ other.subscribers.push(callback);
+ },
+ },
+ onDisconnect: {
+ addListener(l) {
+ port.onDisconnectListeners.push(l);
+ },
+ },
+ };
+ }
+}
+
+// mock chrome api
+class ChromeApi {
+ /**
+ *
+ * @param type {'content'|'background'|'inspector'}
+ */
+ constructor(type) {
+ const self = this;
+ let subscribers;
+ this.subscribers = subscribers = [];
+ this.contentScript = null;
+ this.inspector = null;
+ this.backgroundScript = null;
+ this.type = type;
+
+ this.onRemovedListeners = [];
+ this.onNavigatedListeners = [];
+ this.onConnectListeners = [];
+ this.onTabActivatedListeners = [];
+
+ this.registeredContextMenus = {};
+
+ this.storage = {
+ sync: {
+ get() {},
+ },
+ };
+
+ const contextMenuListeners = [];
+
+ this.contextMenus = {
+ remove(name) {
+ delete self.registeredContextMenus[name];
+ },
+
+ create(menu) {
+ self.registeredContextMenus[menu.id] = menu;
+ self.registeredContextMenus[menu.id].onclick = () =>
+ contextMenuListeners.forEach((fn) => fn({ menuItemId: menu.id }));
+ },
+
+ onClicked: {
+ addListener(fn) {
+ contextMenuListeners.push(fn);
+ },
+ },
+ };
+
+ this.tabs = {
+ onActivated: {
+ addListener(l) {
+ self.onTabActivatedListeners.push(l);
+ },
+ },
+ onRemoved: {
+ addListener(l) {
+ self.onRemovedListeners.push(l);
+ },
+ },
+ sendMessage(tabId, msg) {
+ self.contentScript.subscribers.forEach((sub) => sub(msg, self.sender));
+ },
+ };
+ this.devtools = {
+ panels: {},
+ network: {
+ onNavigated: {
+ addListener(l) {
+ self.onNavigatedListeners.push(l);
+ },
+ },
+ },
+ inspectedWindow: {
+ tabId: 1,
+ },
+ };
+ this.runtime = {
+ onConnect: {
+ addListener(l) {
+ self.onConnectListeners.push(l);
+ },
+ },
+ sendMessage(msg) {
+ (self.backgroundScript || self.inspector).subscribers.forEach((sub) =>
+ sub(msg, self.sender),
+ );
+ },
+ onMessage: {
+ addListener(callback) {
+ subscribers.push(callback);
+ },
+ },
+ getURL(url) {
+ if (url.startsWith('/')) {
+ url = url.slice(1);
+ }
+ return '/' + url;
+ },
+ connect() {
+ const other = self.connectToOther;
+ const port = new ChromePort(self, other);
+ other.onConnectListeners.forEach((l) => l(port.otherSide));
+ return port.selfSide;
+ },
+ };
+ }
+
+ get connectToOther() {
+ return this.contentScript || this.inspector || this.backgroundScript;
+ }
+
+ get sender() {
+ if (this.type === 'content') {
+ return {
+ tab: {
+ id: 1,
+ },
+ };
+ }
+ return {};
+ }
+}
+
+let loaderInstance = {};
+function getLoader(def, req) {
+ let { define, requireModule } = loaderInstance;
+ if (typeof define !== 'function' || typeof requireModule !== 'function') {
+ (function () {
+ let registry = {},
+ seen = {};
+
+ define = function (name, deps, callback) {
+ if (arguments.length < 3) {
+ callback = deps;
+ deps = [];
+ }
+ registry[name] = { deps, callback };
+ };
+
+ requireModule = function (name) {
+ if (!name.startsWith('ember-debug')) {
+ return req(name);
+ }
+ if (seen[name]) {
+ return seen[name];
+ }
+
+ let mod = registry[name];
+ if (!mod) {
+ throw new Error(`Module: '${name}' not found.`);
+ }
+
+ seen[name] = {};
+
+ let deps = mod.deps;
+ let callback = mod.callback;
+ let reified = [];
+ let exports;
+
+ for (let i = 0, l = deps.length; i < l; i++) {
+ if (deps[i] === 'exports') {
+ reified.push((exports = {}));
+ } else {
+ reified.push(requireModule(deps[i]));
+ }
+ }
+
+ let value = callback.apply(this, reified);
+ seen[name] = exports || value;
+ return seen[name];
+ };
+
+ requireModule.has = req.has;
+
+ define.registry = registry;
+ define.seen = seen;
+ })();
+ }
+ loaderInstance = { define, requireModule };
+ return loaderInstance;
+}
+
+module('Integration | Injection', function (hooks) {
+ setupApplicationTest(hooks);
+
+ if (isInVersionSpecifier('~3.16.0', VERSION)) {
+ return;
+ }
+
+ /**
+ * @type {ChromeApi}
+ */
+ let contentChromeApi, inspectorChromeApi, backgroundChromeApi;
+ const olddefine = window.define;
+ const olddrequireModule = window.requireModule;
+
+ let injected;
+
+ async function inject(owner, assert) {
+ if (injected) return;
+ const backgroundScript = await (await fetch('/background.js')).text();
+ {
+ const chrome = backgroundChromeApi;
+ eval(backgroundScript);
+ assert.strictEqual(chrome.onRemovedListeners.length, 1);
+ }
+
+ let contentScript = await (await fetch('/content-script.js')).text();
+
+ window.addEventListener('message', () => {
+ windowMessages += 1;
+ });
+
+ let windowMessages = 0;
+
+ // setup global loader for ember-debug, will be reset after test
+
+ const { define, requireModule } = getLoader(
+ window.define,
+ window.requireModule,
+ );
+ window.define = define;
+ window.requireModule = requireModule;
+ {
+ // eslint-disable-next-line no-unused-vars
+ const chrome = contentChromeApi;
+ backgroundChromeApi.onTabActivatedListeners.forEach((act) =>
+ act({ tabId: 1 }),
+ );
+ eval(contentScript);
+ }
+
+ assert.strictEqual(
+ windowMessages,
+ 0,
+ 'content script should not send window messages',
+ );
+
+ window.chrome = inspectorChromeApi;
+
+ const emberDebugStarted = new Promise((resolve) => {
+ inspectorChromeApi.runtime.onMessage.addListener((msg) => {
+ if (msg.type === 'general:applicationBooted') {
+ resolve();
+ }
+ });
+ });
+
+ const p = new Promise((resolve) => {
+ window.addEventListener('message', (msg) => {
+ if (msg.data === 'debugger-client') {
+ resolve();
+ }
+ });
+ });
+ owner.lookup('service:adapters/web-extension');
+ await p;
+ await emberDebugStarted;
+ injected = true;
+ }
+
+ hooks.before(() => {
+ window.NO_EMBER_DEBUG = false;
+ contentChromeApi = new ChromeApi('content');
+ inspectorChromeApi = new ChromeApi('inspector');
+ backgroundChromeApi = new ChromeApi('background');
+ backgroundChromeApi.contentScript = contentChromeApi;
+ backgroundChromeApi.inspector = inspectorChromeApi;
+
+ contentChromeApi.backgroundScript = backgroundChromeApi;
+ inspectorChromeApi.backgroundScript = backgroundChromeApi;
+ });
+
+ hooks.after(() => {
+ window.define = olddefine;
+ window.requireModule = olddrequireModule;
+ window.NO_EMBER_DEBUG = true;
+ });
+
+ test('inject ember debug via content and background scripts', async function (assert) {
+ await inject(this.owner, assert);
+ const { requireModule } = getLoader(window.define, window.requireModule);
+ const emberDebug = requireModule('ember-debug/main');
+ assert.notStrictEqual(
+ emberDebug,
+ undefined,
+ 'ember debug should be loaded',
+ );
+ });
+
+ test('add Inspect Ember Component Context Menu Item', async function (assert) {
+ await inject(this.owner, assert);
+ assert.true(
+ !!backgroundChromeApi.registeredContextMenus['inspect-ember-component'],
+ 'should have registered context menu',
+ );
+ });
+
+ test('triggering Ember Component Context Menu Item should call inspect nearest', async function (assert) {
+ await inject(this.owner, assert);
+ assert.timeout(100);
+
+ const emberDebug = requireModule('ember-debug/main');
+ const viewInspection = emberDebug.viewDebug.viewInspection;
+
+ const inspectNearestCalled = new Promise((resolve) => {
+ viewInspection.inspectNearest = () => {
+ resolve();
+ };
+ });
+
+ backgroundChromeApi.registeredContextMenus[
+ 'inspect-ember-component'
+ ].onclick();
+
+ await inspectNearestCalled;
+ assert.true(true);
+ });
+});
diff --git a/test-apps/tests/test-adapter.js b/test-apps/tests/test-adapter.js
new file mode 100644
index 0000000000..283b5204b4
--- /dev/null
+++ b/test-apps/tests/test-adapter.js
@@ -0,0 +1,348 @@
+import QUnit from 'qunit';
+import { next } from '@ember/runloop';
+import BasicAdapter from 'test-app/services/adapters/basic';
+import { settled } from '@ember/test-helpers';
+
+let adapter = null;
+let resourcesEnabled = false;
+let resources = [];
+let responders = [];
+
+export function setupTestAdapter(hooks) {
+ // Some default responders that are part of the normal application boot cycle
+ hooks.beforeEach(function () {
+ respondWith('check-version', false, { isDefault: true });
+
+ respondWith(
+ 'general:applicationBooted',
+ {
+ type: 'general:applicationBooted',
+ applicationId: 'my-app',
+ applicationName: 'My App',
+ booted: true,
+ },
+ { isDefault: true },
+ );
+
+ respondWith(
+ 'app-picker-loaded',
+ {
+ type: 'apps-loaded',
+ applicationId: null,
+ applicationName: null,
+ apps: [
+ {
+ applicationId: 'my-app',
+ applicationName: 'My App',
+ },
+ ],
+ },
+ { isDefault: true },
+ );
+
+ respondWith('app-selected', false, { isDefault: true });
+
+ respondWith(
+ 'deprecation:getCount',
+ ({ applicationId, applicationName }) => ({
+ type: 'deprecation:count',
+ applicationId,
+ applicationName,
+ count: 0,
+ }),
+ { isDefault: true },
+ );
+ });
+
+ // Ensure all expectations are met and reset the global states
+ hooks.afterEach(function (assert) {
+ for (let { file, line, actual, expected, reject } of resources) {
+ if (!isNaN(expected) && actual !== expected) {
+ assert.strictEqual(
+ actual,
+ expected,
+ `Expceting resouce ${file}:${line} to be opened ${expected} time(s)`,
+ );
+ reject(
+ `Expceting resouce ${file}:${line} to be opened ${expected} time(s), was opened ${actual} time(s)`,
+ );
+ }
+ }
+
+ for (let { type, isDefault, actual, expected, reject } of responders) {
+ if (!isDefault && !isNaN(expected) && actual !== expected) {
+ assert.strictEqual(
+ actual,
+ expected,
+ `The correct amount of ${type} messages are sent`,
+ );
+ reject(`Expecting ${expected} ${type} messages, got ${actual}`);
+ }
+ }
+
+ adapter = null;
+ resourcesEnabled = false;
+ resources.length = 0;
+ responders.length = 0;
+ });
+}
+
+/**
+ * Allow `openResouce` to be called on the adapter.
+ *
+ * @method enableOpenResource
+ */
+export function enableOpenResource() {
+ resourcesEnabled = true;
+}
+
+/**
+ * Expect `openResouce` to be called on the adapter with a specific filename and
+ * line number. Must call `enableOpenResource` first.
+ *
+ * @method expectOpenResource
+ * @param {String} file The filename.
+ * @param {number} line The line number.
+ * @param {Object} options
+ * - {number | false} count How many calls to allow. `false` for unlimited.
+ * Defaults to 1.
+ * @return {Promise} Resolves when all the expected calls are made, or
+ * rejects at the end of the current test if not called
+ * enough times.
+ */
+export function expectOpenResource(file, line, options = {}) {
+ if (!resourcesEnabled) {
+ throw new Error('call enableOpenResource first');
+ }
+
+ return new Promise((resolve, reject) => {
+ let { count } = { count: 1, ...options };
+ resources.push({
+ file,
+ line,
+ actual: 0,
+ expected: count === false ? NaN : count,
+ resolve,
+ reject,
+ });
+ });
+}
+
+/**
+ * Send a message to the adapter.
+ *
+ * @method expectOpenResource
+ * @param {Object} message The message.
+ * @return {Promise} Resolves when the message is delivered.
+ */
+export async function sendMessage(message) {
+ if (adapter === null) {
+ throw new Error('Cannot call sendMessage outside of a test');
+ }
+
+ const msg = await new Promise((resolve, reject) => {
+ // eslint-disable-next-line ember/no-runloop
+ next(async () => {
+ let normalized = {
+ applicationId: 'my-app',
+ applicationName: 'My App',
+ ...message,
+ from: 'inspectedWindow',
+ };
+ try {
+ adapter._messageReceived(normalized);
+ } catch (e) {
+ return reject(e);
+ }
+
+ resolve(normalized);
+ });
+ });
+
+ await settled();
+ return msg;
+}
+
+/**
+ * Expect a message from the adapter of the given type, and respond to the message
+ * with the given payload.
+ *
+ * @method respondWith
+ * @param {String} type The incoming message type.
+ * @param { false | Object | Function } payload The payload.
+ * - Pass `false` to acknoledge the message but don't send a response.
+ * - Pass an object to send a response (`message` parameter of `sendMessage`).
+ * - Pass a callback to dynamically respond with one of the above, or `undefined`,
+ * in which case the incoming messages is considered unhandled and the remaining
+ * responders will be tried instead. The callback is given the incoming message
+ * as an argument.
+ * @param {Object} options
+ * - {number | false} count How many calls to allow. `false` for unlimited.
+ * Defaults to 1.
+ * @return {Promise} Resolves when all the expected calls are made, or
+ * rejects at the end of the current test if not called
+ * enough times.
+ */
+export function respondWith(type, payload, options = {}) {
+ return new Promise((resolve, reject) => {
+ let { count, isDefault } = { count: 1, isDefault: false, ...options };
+ let callback = typeof payload === 'function' ? payload : () => payload;
+
+ responders.push({
+ type,
+ isDefault,
+ callback,
+ actual: 0,
+ expected: count === false ? NaN : count,
+ resolve,
+ reject,
+ });
+ });
+}
+
+/**
+ * Disable the default responder for the given type.
+ *
+ * @method disableDefaultResponseFor
+ */
+export function disableDefaultResponseFor(type) {
+ for (let [i, responder] of responders.entries()) {
+ if (responder.type === type && responder.isDefault) {
+ if (responder.actual > 0) {
+ throw new Error(
+ `Cannot remove default responder for ${type}: a response has already been sent!`,
+ );
+ }
+
+ responders.splice(i, 1);
+ return;
+ }
+ }
+
+ throw new Error(
+ `Cannot remove default responder for ${type}: no such responder!`,
+ );
+}
+
+export default class TestAdapter extends BasicAdapter {
+ constructor() {
+ super(...arguments);
+ adapter = this;
+ }
+
+ get name() {
+ return 'test';
+ }
+
+ get canOpenResource() {
+ return resourcesEnabled;
+ }
+
+ openResource(file, line) {
+ if (!resourcesEnabled) {
+ throw new Error('openResource called unexpectedly');
+ }
+
+ console.debug('Opening resource', { file, line });
+
+ if (!file) {
+ QUnit.assert.ok(
+ file,
+ `resource has valid "file" field: ${JSON.stringify(file)}`,
+ );
+ return;
+ }
+
+ if (!line) {
+ QUnit.assert.ok(
+ file,
+ `resource has valid "line" field: ${JSON.stringify(line)}`,
+ );
+ return;
+ }
+
+ for (let resource of resources) {
+ let { actual, expected, resolve } = resource;
+
+ if (actual === expected) {
+ continue;
+ }
+
+ if (file === resource.file && line === resource.line) {
+ console.debug('Opened resource', { file, line });
+ resource.actual = ++actual;
+ resolve();
+ return;
+ }
+ }
+
+ console.error('Unknown resource', { file, line });
+
+ QUnit.assert.deepEqual({ file, line }, {}, 'Unknown resource');
+ }
+
+ sendMessage(message) {
+ console.debug('Sending message (devtools -> inspectedWindow)', message);
+
+ if (!message.type) {
+ QUnit.assert.ok(
+ false,
+ `message has valid "type" field: ${JSON.stringify(message)}`,
+ );
+ return;
+ }
+
+ if (message.from !== 'devtools') {
+ QUnit.assert.strictEqual(
+ message.from,
+ 'devtools',
+ `message has valid "from" field: ${JSON.stringify(message)}`,
+ );
+ return;
+ }
+
+ for (let responder of responders) {
+ let { type, callback, actual, expected, resolve } = responder;
+
+ if (actual === expected) {
+ continue;
+ }
+
+ if (type === message.type) {
+ let response = callback(message);
+
+ if (response !== undefined) {
+ responder.actual = ++actual;
+ }
+
+ let didRespond;
+
+ if (response) {
+ console.debug(
+ 'Received response (inspectedWindow -> devtools)',
+ response,
+ );
+ didRespond = sendMessage(response);
+ } else if (response === false) {
+ console.debug(
+ 'Ignoreing message (devtools -> inspectedWindow)',
+ message,
+ );
+ didRespond = Promise.resolve();
+ }
+
+ if (didRespond) {
+ if (actual === expected) {
+ didRespond.then(resolve);
+ }
+
+ return;
+ }
+ }
+ }
+
+ console.error('Unexpected message', message);
+
+ QUnit.assert.deepEqual(message, {}, 'Unexpected message');
+ }
+}
diff --git a/test-apps/tests/test-helper.js b/test-apps/tests/test-helper.js
new file mode 100644
index 0000000000..b1b2d0a399
--- /dev/null
+++ b/test-apps/tests/test-helper.js
@@ -0,0 +1,29 @@
+import Application from 'test-app/app';
+import config from 'test-app/config/environment';
+import * as QUnit from 'qunit';
+import { setApplication } from '@ember/test-helpers';
+import { setup } from 'qunit-dom';
+import { start } from 'ember-qunit';
+import TestAdapter from './test-adapter';
+import setupSinon from 'ember-sinon-qunit';
+
+// ensure ember-debug is required
+import 'ember-debug/main';
+
+Application.initializer({
+ name: `00-override-adapter`,
+ initialize(app) {
+ app.register('service:adapter', TestAdapter);
+ },
+});
+
+setApplication(Application.create(config.APP));
+
+setupSinon();
+
+window.NO_EMBER_DEBUG = true;
+QUnit.config.testTimeout = 60000;
+
+setup(QUnit.assert);
+
+start();
diff --git a/test-apps/tests/unit/.gitkeep b/test-apps/tests/unit/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/test-apps/tests/unit/utils/type-check-test.js b/test-apps/tests/unit/utils/type-check-test.js
new file mode 100644
index 0000000000..8586e31def
--- /dev/null
+++ b/test-apps/tests/unit/utils/type-check-test.js
@@ -0,0 +1,22 @@
+import { inspect } from 'ember-debug/type-check';
+import { module, test } from 'qunit';
+
+module('Unit | Utility | type-check', function () {
+ test('inspect | An POJO with Symbols is correctly transformed into preview', async function (assert) {
+ let symbol = Symbol('test');
+ let symbolValue = Symbol('value');
+
+ let inspected = {
+ [symbol]: 'Symbol Value',
+ symbolVal: symbolValue,
+ };
+
+ let obj = inspect(inspected);
+
+ assert.deepEqual(
+ obj,
+ '{ symbolVal: Symbol(value) }',
+ 'object is in expected shape',
+ );
+ });
+});
diff --git a/tests/index.html b/tests/index.html
index 07b1a904a3..6fe4ea4efb 100644
--- a/tests/index.html
+++ b/tests/index.html
@@ -26,7 +26,6 @@
-
{{content-for "head-footer"}}
{{content-for "test-head-footer"}}
diff --git a/tsconfig.json b/tsconfig.json
index 1c159c047d..32ce044bec 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -19,5 +19,5 @@
},
"types": ["chrome", "./node_modules/ember-source/types/stable"]
},
- "include": ["app/**/*", "tests/**/*", "types/**/*", "lib/ui/**/*"]
+ "include": ["app/**/*", "test-apps/**/*", "tests/**/*", "types/**/*", "lib/ui/**/*"]
}
From b8616e412a16e355534dbb1b7f5a2a872158abc5 Mon Sep 17 00:00:00 2001
From: Patrick Pircher
Date: Mon, 6 Oct 2025 23:20:02 +0200
Subject: [PATCH 2/8] fix lock
---
pnpm-lock.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9c05175e38..cb7ea95d0d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -454,7 +454,7 @@ importers:
version: 6.3.0
ember-cli-inject-live-reload:
specifier: ^2.1.0
- version: 2.1.0
+ version: 2.1.0(patch_hash=enhtbujp77hfcye7o4pfeqcdua)
ember-cli-sri:
specifier: ^2.1.1
version: 2.1.1
From 7aabc9181e085ba316dfa1401b521f8ae5c81f88 Mon Sep 17 00:00:00 2001
From: Patrick Pircher
Date: Wed, 25 Jun 2025 10:26:30 +0200
Subject: [PATCH 3/8] add ember static source
---
.gitignore | 4 +-
eslint.config.mjs | 14 +-
package.json | 4 +-
test-apps/embroider-static-source/.ember-cli | 7 +
test-apps/embroider-static-source/app/app.js | 14 ++
.../app/components/.gitkeep | 0
.../app/controllers/.gitkeep | 0
.../app/helpers/.gitkeep | 0
.../embroider-static-source/app/index.html | 25 +++
.../app/models/.gitkeep | 0
.../embroider-static-source/app/router.js | 9 +
.../app/routes/.gitkeep | 0
.../app/services/adapters/basic.js | 156 +++++++++++++++++
.../app/services/adapters/web-extension.js | 163 ++++++++++++++++++
.../app/styles/app.css | 1 +
.../app/templates/application.hbs | 7 +
.../config/ember-cli-update.json | 20 +++
.../config/ember-try.js | 136 +++++++++++++++
.../config/environment.js | 48 ++++++
.../config/optional-features.json | 7 +
.../embroider-static-source/config/targets.js | 11 ++
.../ember-cli-build.js | 33 ++++
.../embroider-static-source/package.json | 70 ++++++++
test-apps/embroider-static-source/testem.js | 23 +++
test-apps/embroider-static-source/tests | 1 -
25 files changed, 741 insertions(+), 12 deletions(-)
create mode 100644 test-apps/embroider-static-source/.ember-cli
create mode 100644 test-apps/embroider-static-source/app/app.js
create mode 100644 test-apps/embroider-static-source/app/components/.gitkeep
create mode 100644 test-apps/embroider-static-source/app/controllers/.gitkeep
create mode 100644 test-apps/embroider-static-source/app/helpers/.gitkeep
create mode 100644 test-apps/embroider-static-source/app/index.html
create mode 100644 test-apps/embroider-static-source/app/models/.gitkeep
create mode 100644 test-apps/embroider-static-source/app/router.js
create mode 100644 test-apps/embroider-static-source/app/routes/.gitkeep
create mode 100644 test-apps/embroider-static-source/app/services/adapters/basic.js
create mode 100644 test-apps/embroider-static-source/app/services/adapters/web-extension.js
create mode 100644 test-apps/embroider-static-source/app/styles/app.css
create mode 100644 test-apps/embroider-static-source/app/templates/application.hbs
create mode 100644 test-apps/embroider-static-source/config/ember-cli-update.json
create mode 100644 test-apps/embroider-static-source/config/ember-try.js
create mode 100644 test-apps/embroider-static-source/config/environment.js
create mode 100644 test-apps/embroider-static-source/config/optional-features.json
create mode 100644 test-apps/embroider-static-source/config/targets.js
create mode 100644 test-apps/embroider-static-source/ember-cli-build.js
create mode 100644 test-apps/embroider-static-source/package.json
create mode 100644 test-apps/embroider-static-source/testem.js
delete mode 120000 test-apps/embroider-static-source/tests
diff --git a/.gitignore b/.gitignore
index 4241b06d61..45f2e23712 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,8 +8,8 @@
# dependencies
/node_modules/
-/test-apps/classic/dist
-/test-apps/classic/node_modules
+/test-apps/*/dist
+/test-apps/*/node_modules
# misc
/.env*
diff --git a/eslint.config.mjs b/eslint.config.mjs
index 8546720f338..05f34638a2 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -62,9 +62,9 @@ export default ts.config(
'dist/',
'ember_debug/dist/',
'node_modules/',
- 'test-apps/classic/node_modules/',
- 'test-apps/classic/dist/',
- 'test-apps/classic/public/',
+ 'test-apps/*/node_modules/',
+ 'test-apps/*/dist/',
+ 'test-apps/*/public/',
'test-apps/tests/helpers/index.ts',
'coverage/',
'!**/.*',
@@ -120,7 +120,7 @@ export default ts.config(
{
files: [
'tests/**/*-test.{js,gjs,ts,gts}',
- 'test-apps/classic/tests/**/*-test.{js,gjs,ts,gts}',
+ 'test-apps/*/tests/**/*-test.{js,gjs,ts,gts}',
],
plugins: {
qunit,
@@ -141,18 +141,18 @@ export default ts.config(
files: [
'**/*.cjs',
'config/**/*.js',
- 'test-apps/classic/config/**/*.js',
+ 'test-apps/*/config/**/*.js',
'lib/*/index.js',
'scripts/**/*.js',
'testem.js',
- 'test-apps/classic/testem.js',
+ 'test-apps/*/testem.js',
'testem*.js',
'.prettierrc.js',
'.stylelintrc.js',
'.template-lintrc.js',
'babel.config.js',
'ember-cli-build.js',
- 'test-apps/classic/ember-cli-build.js',
+ 'test-apps/*/ember-cli-build.js',
'gulpfile.js',
],
plugins: {
diff --git a/package.json b/package.json
index 6a1bfa35cb..48e1144f68 100644
--- a/package.json
+++ b/package.json
@@ -36,8 +36,8 @@
"watch": "pnpm '/watch:/'",
"watch:inspector-ui": "ember build --watch",
"watch:ember-debug": "pnpm --filter ember-debug watch",
- "ember-debug:try:one": "pnpm --filter '*' ember:try:one",
- "ember-debug:test": "pnpm --filter '*' ember-debug-test"
+ "ember-debug:try:one": "pnpm run --sequential --filter '*' ember:try:one",
+ "ember-debug:test": "pnpm run --sequential --filter '*' ember-debug-test"
},
"dependencies": {
"got": "^11.8.6",
diff --git a/test-apps/embroider-static-source/.ember-cli b/test-apps/embroider-static-source/.ember-cli
new file mode 100644
index 0000000000..4defd284ec
--- /dev/null
+++ b/test-apps/embroider-static-source/.ember-cli
@@ -0,0 +1,7 @@
+{
+ /**
+ Setting `isTypeScriptProject` to true will force the blueprint generators to generate TypeScript
+ rather than JavaScript by default, when a TypeScript version of a given blueprint is available.
+ */
+ "isTypeScriptProject": true
+}
diff --git a/test-apps/embroider-static-source/app/app.js b/test-apps/embroider-static-source/app/app.js
new file mode 100644
index 0000000000..19f2ce27d7
--- /dev/null
+++ b/test-apps/embroider-static-source/app/app.js
@@ -0,0 +1,14 @@
+import Application from '@ember/application';
+import Resolver from 'ember-resolver';
+import loadInitializers from 'ember-load-initializers';
+import config from 'test-app/config/environment';
+
+export default class App extends Application {
+ modulePrefix = config.modulePrefix;
+ podModulePrefix = config.podModulePrefix;
+ Resolver = Resolver;
+}
+
+console.log('test app');
+
+loadInitializers(App, config.modulePrefix);
diff --git a/test-apps/embroider-static-source/app/components/.gitkeep b/test-apps/embroider-static-source/app/components/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/test-apps/embroider-static-source/app/controllers/.gitkeep b/test-apps/embroider-static-source/app/controllers/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/test-apps/embroider-static-source/app/helpers/.gitkeep b/test-apps/embroider-static-source/app/helpers/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/test-apps/embroider-static-source/app/index.html b/test-apps/embroider-static-source/app/index.html
new file mode 100644
index 0000000000..3a3c400d40
--- /dev/null
+++ b/test-apps/embroider-static-source/app/index.html
@@ -0,0 +1,25 @@
+
+
+
+
+ TestApp
+
+
+
+ {{content-for "head"}}
+
+
+
+
+ {{content-for "head-footer"}}
+
+
+ {{content-for "body"}}
+
+
+
+
+
+ {{content-for "body-footer"}}
+
+
diff --git a/test-apps/embroider-static-source/app/models/.gitkeep b/test-apps/embroider-static-source/app/models/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/test-apps/embroider-static-source/app/router.js b/test-apps/embroider-static-source/app/router.js
new file mode 100644
index 0000000000..38a0b80a63
--- /dev/null
+++ b/test-apps/embroider-static-source/app/router.js
@@ -0,0 +1,9 @@
+import EmberRouter from '@ember/routing/router';
+import config from 'test-app/config/environment';
+
+export default class Router extends EmberRouter {
+ location = config.locationType;
+ rootURL = config.rootURL;
+}
+
+Router.map(function () {});
diff --git a/test-apps/embroider-static-source/app/routes/.gitkeep b/test-apps/embroider-static-source/app/routes/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/test-apps/embroider-static-source/app/services/adapters/basic.js b/test-apps/embroider-static-source/app/services/adapters/basic.js
new file mode 100644
index 0000000000..9fa13c3a9b
--- /dev/null
+++ b/test-apps/embroider-static-source/app/services/adapters/basic.js
@@ -0,0 +1,156 @@
+/**
+ * The adapter stores logic specific to each environment.
+ * Extend this object with env specific code (such as chrome/firefox/test),
+ * then set the application's `adapter` property to the name of this adapter.
+ *
+ * example:
+ *
+ * ```javascript
+ * const EmberInspector = App.Create({
+ * adapter: 'chrome'
+ * });
+ * ```
+ */
+import Service from '@ember/service';
+import { action } from '@ember/object';
+import { tracked } from '@glimmer/tracking';
+
+const config = {};
+
+export default class Basic extends Service {
+ _messageCallbacks;
+ name = 'basic';
+
+ @tracked canOpenResource = false;
+
+ /**
+ * Called when the adapter is created (when
+ * the inspector app boots).
+ */
+ constructor() {
+ super(...arguments);
+
+ this._messageCallbacks = [];
+ this._checkVersion();
+ }
+
+ /**
+ * Listens to Ember Inspector message about
+ * Ember version mismatch. If a mismatch message is received
+ * it means the current inspector app does not support the current
+ * Ember version and needs to switch to an inspector version
+ * that does.
+ *
+ * @private
+ */
+ _checkVersion() {
+ this.onMessageReceived((message) => {
+ const { name, version } = message;
+ if (name === 'version-mismatch') {
+ const previousVersions = config.previousEmberVersionsSupported;
+ const [fromVersion, tillVersion] = config.emberVersionsSupported;
+ let neededVersion;
+
+ if (compareVersion(version, fromVersion) === -1) {
+ neededVersion = previousVersions[previousVersions.length - 1];
+ } else if (tillVersion && compareVersion(version, tillVersion) !== -1) {
+ neededVersion = tillVersion;
+ } else {
+ return;
+ }
+ this.onVersionMismatch(neededVersion);
+ }
+ });
+ this.sendMessage({ type: 'check-version', from: 'devtools' });
+ }
+
+ /**
+ * Hook called when the Ember version is not
+ * supported by the current inspector version.
+ *
+ * Each adapter should implement this hook
+ * to switch to an older/new inspector version
+ * that supports this Ember version.
+ *
+ * @param _neededVersion (The version to go to)
+ */
+ onVersionMismatch() {}
+
+ /**
+ Used to send messages to EmberDebug
+
+ @param _message the message to send
+ **/
+ sendMessage() {}
+
+ /**
+ Register functions to be called
+ when a message from EmberDebug is received
+ **/
+ onMessageReceived(callback) {
+ this._messageCallbacks.push(callback);
+ }
+
+ _messageReceived(...args) {
+ this._messageCallbacks.forEach((callback) => {
+ callback(...args);
+ });
+ }
+
+ reloadTab() {}
+ // Called when the "Reload" is clicked by the user
+ willReload() {}
+ openResource() {}
+
+ @action
+ refreshPage() {
+ // If the adapter defined a `reloadTab` method, it means
+ // they prefer to handle the reload themselves
+ if (typeof this.reloadTab === 'function') {
+ this.reloadTab();
+ } else {
+ // inject ember_debug as quickly as possible in chrome
+ // so that promises created on dom ready are caught
+ this.port.send('general:refresh');
+ this.willReload();
+ }
+ }
+}
+
+/**
+ * Compares two Ember versions.
+ *
+ * Returns:
+ * `-1` if version < version
+ * 0 if version1 == version2
+ * 1 if version1 > version2
+ *
+ * @return result of the comparison
+ */
+function compareVersion(version1, version2) {
+ const v1 = cleanupVersion(version1).split('.');
+ const v2 = cleanupVersion(version2).split('.');
+ for (let i = 0; i < 3; i++) {
+ // @ts-expect-error TODO: refactor this to make TS happy
+ const compared = compare(+v1[i], +v2[i]);
+ if (compared !== 0) {
+ return compared;
+ }
+ }
+ return 0;
+}
+
+/* Remove -alpha, -beta, etc from versions */
+function cleanupVersion(version) {
+ return version.replace(/-.*/g, '');
+}
+
+function compare(val, number) {
+ if (val === number) {
+ return 0;
+ } else if (val < number) {
+ return -1;
+ } else if (val > number) {
+ return 1;
+ }
+}
diff --git a/test-apps/embroider-static-source/app/services/adapters/web-extension.js b/test-apps/embroider-static-source/app/services/adapters/web-extension.js
new file mode 100644
index 0000000000..68221c533a
--- /dev/null
+++ b/test-apps/embroider-static-source/app/services/adapters/web-extension.js
@@ -0,0 +1,163 @@
+import { tracked } from '@glimmer/tracking';
+
+import BasicAdapter from './basic';
+
+let emberDebug = null;
+let config = {
+ emberVersionsSupported: ['3.16.0'],
+};
+
+export default class WebExtension extends BasicAdapter {
+ @tracked canOpenResource = false;
+ name = 'web-extension';
+
+ /**
+ * Called when the adapter is created.
+ */
+ constructor() {
+ super();
+
+ this._connect();
+ this._handleReload();
+ this._setThemeColors();
+
+ void Promise.resolve().then(() => this._sendEmberDebug());
+ }
+
+ sendMessage(message) {
+ this._chromePort.postMessage(message ?? {});
+ }
+
+ _sendEmberDebug() {
+ const minimumVersion = config.emberVersionsSupported[0].replace(/\./g, '-');
+ const url = chrome.runtime.getURL(
+ `/panes-${minimumVersion}/ember_debug.js`,
+ );
+ // first send to all frames in current tab
+ this.sendMessage({
+ from: 'devtools',
+ tabId: chrome.devtools.inspectedWindow.tabId,
+ type: 'inject-ember-debug',
+ value: url,
+ });
+ this.onMessageReceived((message, sender) => {
+ if (message === 'ember-content-script-ready') {
+ this.sendMessage({
+ frameId: sender.frameId,
+ from: 'devtools',
+ tabId: chrome.devtools.inspectedWindow.tabId,
+ type: 'inject-ember-debug',
+ value: url,
+ });
+ }
+ });
+ }
+
+ get _chromePort() {
+ return chrome.runtime.connect();
+ }
+
+ _connect() {
+ const chromePort = this._chromePort;
+ chromePort.postMessage({ appId: chrome.devtools.inspectedWindow.tabId });
+
+ chromePort.onMessage.addListener((...args) => {
+ this._messageReceived(...args);
+ });
+
+ chromePort.onDisconnect.addListener(() => {
+ this._connect();
+ });
+ }
+
+ _handleReload() {
+ chrome.devtools.network.onNavigated.addListener(() => {
+ this._injectDebugger();
+ location.reload();
+ });
+ }
+
+ _injectDebugger() {
+ void loadEmberDebug().then((emberDebug) => {
+ chrome.devtools.inspectedWindow.eval(emberDebug, (success, error) => {
+ if (success === undefined && error) {
+ throw error;
+ }
+ });
+ });
+ }
+
+ _setThemeColors() {
+ // Remove old theme colors to ensure switching themes works
+ document.body.classList.remove('theme-light', 'theme-dark');
+
+ let theme = 'theme-light';
+ if (chrome.devtools.panels.themeName === 'dark') {
+ theme = 'theme-dark';
+ }
+ document.body.classList.add(theme);
+ }
+
+ willReload() {
+ this._injectDebugger();
+ }
+
+ /**
+ * Open the devtools "Elements" or "Sources" tab and select a specific DOM node or function.
+ */
+ inspectJSValue(name) {
+ chrome.devtools.inspectedWindow.eval(`
+ inspect(window[${JSON.stringify(name)}]);
+ delete window[${JSON.stringify(name)}];
+ `);
+ }
+
+ /**
+ * Redirect to the correct inspector version.
+ */
+ onVersionMismatch(goToVersion) {
+ window.location.href = `../panes-${goToVersion.replace(
+ /\./g,
+ '-',
+ )}/index.html`;
+ }
+
+ /**
+ We handle the reload here so we can inject
+ scripts as soon as possible into the new page.
+ */
+ reloadTab() {
+ void loadEmberDebug().then((emberDebug) => {
+ chrome.devtools.inspectedWindow.reload({
+ injectedScript: emberDebug,
+ });
+ });
+ }
+}
+
+function loadEmberDebug() {
+ const minimumVersion = config.emberVersionsSupported[0].replace(/\./g, '-');
+ let xhr;
+
+ return new Promise((resolve) => {
+ if (!emberDebug) {
+ xhr = new XMLHttpRequest();
+ xhr.open(
+ 'GET',
+ chrome.runtime.getURL(`/panes-${minimumVersion}/ember_debug.js`),
+ );
+ xhr.onload = function () {
+ if (xhr.readyState === 4) {
+ if (xhr.status === 200) {
+ emberDebug = xhr.responseText;
+ resolve(emberDebug);
+ }
+ }
+ };
+
+ xhr.send();
+ } else {
+ resolve(emberDebug);
+ }
+ });
+}
diff --git a/test-apps/embroider-static-source/app/styles/app.css b/test-apps/embroider-static-source/app/styles/app.css
new file mode 100644
index 0000000000..2763afa4cf
--- /dev/null
+++ b/test-apps/embroider-static-source/app/styles/app.css
@@ -0,0 +1 @@
+/* Ember supports plain CSS out of the box. More info: https://cli.emberjs.com/release/advanced-use/stylesheets/ */
diff --git a/test-apps/embroider-static-source/app/templates/application.hbs b/test-apps/embroider-static-source/app/templates/application.hbs
new file mode 100644
index 0000000000..d6565bbd6b
--- /dev/null
+++ b/test-apps/embroider-static-source/app/templates/application.hbs
@@ -0,0 +1,7 @@
+{{page-title "TestApp"}}
+
+{{outlet}}
+
+{{! The following component displays Ember's default welcome message. }}
+
+{{! Feel free to remove this! }}
\ No newline at end of file
diff --git a/test-apps/embroider-static-source/config/ember-cli-update.json b/test-apps/embroider-static-source/config/ember-cli-update.json
new file mode 100644
index 0000000000..5dc0d1493e
--- /dev/null
+++ b/test-apps/embroider-static-source/config/ember-cli-update.json
@@ -0,0 +1,20 @@
+{
+ "schemaVersion": "1.0.0",
+ "packages": [
+ {
+ "name": "ember-cli",
+ "version": "6.1.0",
+ "blueprints": [
+ {
+ "name": "app",
+ "outputRepo": "https://github.com/ember-cli/ember-new-output",
+ "codemodsSource": "ember-app-codemods-manifest@1",
+ "isBaseBlueprint": true,
+ "options": [
+ "--ci-provider=github"
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/test-apps/embroider-static-source/config/ember-try.js b/test-apps/embroider-static-source/config/ember-try.js
new file mode 100644
index 0000000000..5cae0d8085
--- /dev/null
+++ b/test-apps/embroider-static-source/config/ember-try.js
@@ -0,0 +1,136 @@
+'use strict';
+
+const getChannelURL = require('ember-source-channel-url');
+
+module.exports = async function () {
+ return {
+ usePnpm: true,
+ scenarios: [
+ {
+ name: 'ember-lts-3.16',
+ npm: {
+ devDependencies: {
+ '@ember/test-helpers': '^2.4.0',
+ 'ember-cli': '^3.28.0',
+ 'ember-source': '~3.16.0',
+ 'ember-resolver': '^11.0.1',
+ 'ember-qunit': '^5.1.5',
+ },
+ },
+ },
+ {
+ name: 'ember-lts-3.20',
+ npm: {
+ devDependencies: {
+ '@ember/test-helpers': '^2.4.0',
+ 'ember-cli': '^3.28.0',
+ 'ember-source': '~3.20.5',
+ 'ember-resolver': '^11.0.1',
+ 'ember-qunit': '^5.1.5',
+ },
+ },
+ },
+ {
+ name: 'ember-lts-3.24',
+ npm: {
+ devDependencies: {
+ '@ember/test-helpers': '^2.4.0',
+ 'ember-cli': '^3.28.0',
+ 'ember-source': '~3.24.0',
+ 'ember-resolver': '^11.0.1',
+ 'ember-qunit': '^5.1.5',
+ },
+ },
+ },
+ {
+ name: 'ember-lts-3.28',
+ npm: {
+ devDependencies: {
+ '@ember/test-helpers': '^2.4.0',
+ 'ember-cli': '^3.28.0',
+ 'ember-source': '~3.28.0',
+ 'ember-resolver': '^11.0.1',
+ 'ember-qunit': '^5.1.5',
+ },
+ },
+ },
+ {
+ name: 'ember-lts-4.8',
+ npm: {
+ devDependencies: {
+ 'ember-resolver': '^11.0.1',
+ 'ember-source': '~4.8.0',
+ },
+ },
+ },
+ {
+ name: 'ember-lts-4.12',
+ npm: {
+ devDependencies: {
+ 'ember-source': '~4.12.0',
+ },
+ },
+ },
+ {
+ name: 'ember-lts-5.4',
+ npm: {
+ devDependencies: {
+ 'ember-source': '~5.4.0',
+ },
+ },
+ },
+ {
+ name: 'ember-lts-5.8',
+ npm: {
+ devDependencies: {
+ 'ember-source': '~5.8.0',
+ },
+ },
+ },
+ {
+ name: 'ember-lts-5.12',
+ npm: {
+ devDependencies: {
+ 'ember-source': '~5.12.0',
+ },
+ },
+ },
+ {
+ name: 'ember-release',
+ npm: {
+ devDependencies: {
+ 'ember-source': await getChannelURL('release'),
+ },
+ },
+ },
+ {
+ name: 'ember-beta',
+ npm: {
+ devDependencies: {
+ 'ember-source': await getChannelURL('beta'),
+ },
+ },
+ },
+ {
+ name: 'ember-canary',
+ npm: {
+ devDependencies: {
+ 'ember-source': await getChannelURL('canary'),
+ },
+ },
+ },
+ {
+ name: 'ember-default',
+ npm: {
+ devDependencies: {},
+ },
+ },
+ {
+ name: 'ember-default-no-prototype-extensions',
+ env: {
+ NO_EXTEND_PROTOTYPES: 'true',
+ },
+ },
+ ],
+ };
+};
diff --git a/test-apps/embroider-static-source/config/environment.js b/test-apps/embroider-static-source/config/environment.js
new file mode 100644
index 0000000000..113d30aeb0
--- /dev/null
+++ b/test-apps/embroider-static-source/config/environment.js
@@ -0,0 +1,48 @@
+'use strict';
+
+module.exports = function (environment) {
+ const ENV = {
+ modulePrefix: 'test-app',
+ environment,
+ rootURL: '/',
+ locationType: 'history',
+ EmberENV: {
+ EXTEND_PROTOTYPES: false,
+ FEATURES: {
+ // Here you can enable experimental features on an ember canary build
+ // e.g. EMBER_NATIVE_DECORATOR_SUPPORT: true
+ },
+ },
+
+ APP: {
+ // Here you can pass flags/options to your application instance
+ // when it is created
+ },
+ };
+
+ if (environment === 'development') {
+ // ENV.APP.LOG_RESOLVER = true;
+ // ENV.APP.LOG_ACTIVE_GENERATION = true;
+ // ENV.APP.LOG_TRANSITIONS = true;
+ // ENV.APP.LOG_TRANSITIONS_INTERNAL = true;
+ // ENV.APP.LOG_VIEW_LOOKUPS = true;
+ }
+
+ if (environment === 'test') {
+ // Testem prefers this...
+ ENV.locationType = 'none';
+
+ // keep test console output quieter
+ ENV.APP.LOG_ACTIVE_GENERATION = false;
+ ENV.APP.LOG_VIEW_LOOKUPS = false;
+
+ ENV.APP.rootElement = '#ember-testing';
+ ENV.APP.autoboot = false;
+ }
+
+ if (environment === 'production') {
+ // here you can enable a production-specific feature
+ }
+
+ return ENV;
+};
diff --git a/test-apps/embroider-static-source/config/optional-features.json b/test-apps/embroider-static-source/config/optional-features.json
new file mode 100644
index 0000000000..5329dd9913
--- /dev/null
+++ b/test-apps/embroider-static-source/config/optional-features.json
@@ -0,0 +1,7 @@
+{
+ "application-template-wrapper": false,
+ "default-async-observers": true,
+ "jquery-integration": false,
+ "template-only-glimmer-components": true,
+ "no-implicit-route-model": true
+}
diff --git a/test-apps/embroider-static-source/config/targets.js b/test-apps/embroider-static-source/config/targets.js
new file mode 100644
index 0000000000..1e48e0599f
--- /dev/null
+++ b/test-apps/embroider-static-source/config/targets.js
@@ -0,0 +1,11 @@
+'use strict';
+
+const browsers = [
+ 'last 1 Chrome versions',
+ 'last 1 Firefox versions',
+ 'last 1 Safari versions',
+];
+
+module.exports = {
+ browsers,
+};
diff --git a/test-apps/embroider-static-source/ember-cli-build.js b/test-apps/embroider-static-source/ember-cli-build.js
new file mode 100644
index 0000000000..9f53471a1d
--- /dev/null
+++ b/test-apps/embroider-static-source/ember-cli-build.js
@@ -0,0 +1,33 @@
+'use strict';
+
+const EmberApp = require('ember-cli/lib/broccoli/ember-app');
+const path = require('path');
+const fs = require('fs');
+const { Funnel } = require('broccoli-funnel');
+const { compatBuild } = require('@embroider/compat');
+
+const testingDir = path.resolve(__dirname, '../../dist/testing');
+const distDir = path.resolve(__dirname, '../../dist');
+const testingFolderExists = fs.existsSync(testingDir);
+
+module.exports = function (defaults) {
+ defaults.project.name = () => 'test-app';
+ const app = new EmberApp(defaults, {
+ 'ember-cli-babel': { enableTypeScriptTransform: true },
+ trees: {
+ tests: new Funnel(path.resolve(__dirname, '../tests')),
+ public: new Funnel(testingFolderExists ? testingDir : distDir, {
+ files: [
+ 'ember_debug.js',
+ 'background.js',
+ 'content-script.js',
+ 'panes-3-16-0',
+ ],
+ }),
+ },
+ });
+
+ return compatBuild(app, require('@embroider/webpack').Webpack, {
+ emberStaticSource: true,
+ });
+};
diff --git a/test-apps/embroider-static-source/package.json b/test-apps/embroider-static-source/package.json
new file mode 100644
index 0000000000..98bd41d498
--- /dev/null
+++ b/test-apps/embroider-static-source/package.json
@@ -0,0 +1,70 @@
+{
+ "name": "classic-test-app",
+ "version": "0.0.0",
+ "private": true,
+ "description": "Small description for test-app goes here",
+ "repository": "",
+ "license": "MIT",
+ "author": "",
+ "directories": {
+ "doc": "doc",
+ "test": "tests"
+ },
+ "scripts": {
+ "build": "ember build --environment=testing",
+ "test": "EMBER_ENV=test ember test",
+ "ember-debug-test": "pnpm test",
+ "ember:try:one": "ember try:one",
+ "test-server:ember": "ember test --serve --watcher node"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.26.0",
+ "@babel/eslint-parser": "^7.25.9",
+ "@babel/plugin-proposal-decorators": "^7.25.9",
+ "@ember/optional-features": "^2.2.0",
+ "@ember/string": "^4.0.0",
+ "@ember/test-helpers": "^4.0.4",
+ "@eslint/js": "^9.17.0",
+ "@glimmer/component": "^1.1.2",
+ "@glimmer/tracking": "^1.1.2",
+ "broccoli-asset-rev": "^3.0.0",
+ "concurrently": "^9.1.0",
+ "ember-auto-import": "^2.10.0",
+ "ember-cli": "~6.1.0",
+ "ember-cli-babel": "^8.2.0",
+ "ember-cli-clean-css": "^3.0.0",
+ "ember-cli-dependency-checker": "^3.3.3",
+ "ember-cli-htmlbars": "^6.3.0",
+ "ember-cli-inject-live-reload": "^2.1.0",
+ "ember-cli-sri": "^2.1.1",
+ "ember-cli-terser": "^4.0.2",
+ "ember-fetch": "^8.1.2",
+ "ember-load-initializers": "^3.0.1",
+ "ember-modifier": "^4.2.0",
+ "ember-page-title": "^8.2.3",
+ "ember-qunit": "^8.1.1",
+ "@ember/render-modifiers": "^3.0.0",
+ "qunit": "^2.24.1",
+ "qunit-dom": "^3.4.0",
+ "ember-sinon-qunit": "^7.5.0",
+ "ember-resolver": "^13.1.0",
+ "ember-source": "^5.0.0",
+ "ember-template-lint": "^6.0.0",
+ "ember-welcome-page": "^7.0.2",
+ "ember-wormhole": "^0.6.0",
+ "ember-try": "^3.0.0",
+ "loader.js": "^4.7.0",
+ "tracked-built-ins": "^3.4.0",
+ "ember-in-element-polyfill": "^1.0.1",
+ "webpack": "^5.97.1",
+ "@embroider/compat": "^3.9.1",
+ "@embroider/webpack": "^4.1.0",
+ "@embroider/core": "^3.5.7"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "ember": {
+ "edition": "octane"
+ }
+}
diff --git a/test-apps/embroider-static-source/testem.js b/test-apps/embroider-static-source/testem.js
new file mode 100644
index 0000000000..ed2f37124a
--- /dev/null
+++ b/test-apps/embroider-static-source/testem.js
@@ -0,0 +1,23 @@
+'use strict';
+
+module.exports = {
+ test_page: 'tests/index.html?hidepassed',
+ disable_watching: true,
+ launch_in_ci: ['Chrome'],
+ launch_in_dev: ['Chrome'],
+ browser_start_timeout: 120,
+ browser_args: {
+ Chrome: {
+ ci: [
+ // --no-sandbox is needed when running Chrome inside a container
+ process.env.CI ? '--no-sandbox' : null,
+ '--headless',
+ '--disable-dev-shm-usage',
+ '--disable-software-rasterizer',
+ '--mute-audio',
+ '--remote-debugging-port=0',
+ '--window-size=1440,900',
+ ].filter(Boolean),
+ },
+ },
+};
diff --git a/test-apps/embroider-static-source/tests b/test-apps/embroider-static-source/tests
deleted file mode 120000
index 6dd24e02b5..0000000000
--- a/test-apps/embroider-static-source/tests
+++ /dev/null
@@ -1 +0,0 @@
-../tests
\ No newline at end of file
From c49b55f82a068f9dbe72c721412209b7f0adcd56 Mon Sep 17 00:00:00 2001
From: Patrick Pircher
Date: Wed, 25 Jun 2025 10:44:29 +0200
Subject: [PATCH 4/8] fix wormhole detection
---
ember_debug/libs/render-tree.js | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/ember_debug/libs/render-tree.js b/ember_debug/libs/render-tree.js
index e30cce1ef8..154d197461 100644
--- a/ember_debug/libs/render-tree.js
+++ b/ember_debug/libs/render-tree.js
@@ -605,8 +605,9 @@ export default class RenderTree {
// EmberWormhole component from ember-wormhole was used to provide
// rendering into a given DOM element prior to built-in in-element.
if (
- node.template ===
- 'ember-wormhole/templates/components/ember-wormhole.hbs'
+ node.template
+ ?.replace(/\\/g, '/')
+ .includes('ember-wormhole/templates/components/ember-wormhole.hbs')
) {
this.inElementSupport?.remoteRoots.push(node);
const bounds = node.bounds;
From e09b555246e91d00dd35e2155c0dc8a03ae38361 Mon Sep 17 00:00:00 2001
From: Patrick Pircher
Date: Wed, 25 Jun 2025 11:07:25 +0200
Subject: [PATCH 5/8] fix old lts
---
.github/workflows/build.yml | 2 +-
pnpm-lock.yaml | 58 +++++++++++++++++--
.../config/ember-try.js | 8 ++-
.../ember-cli-build.js | 2 +-
.../embroider-static-source/package.json | 7 ++-
5 files changed, 66 insertions(+), 11 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index ca0ae43cfc..d59457110c 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -119,7 +119,7 @@ jobs:
- name: Setup ember-try scenario
run: pnpm ember-debug:try:one ${{ matrix.scenario }} --skip-cleanup --- cat package.json
- name: Run test
- run: pnpm ember-debug:test
+ run: pnpm ember-debug:try:one ${{ matrix.scenario }} --skip-cleanup
build:
name: Build extensions
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index cb7ea95d0d..51a8a761c5 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -492,8 +492,8 @@ importers:
specifier: ^6.0.0
version: 6.0.0
ember-try:
- specifier: ^3.0.0
- version: 3.0.0(encoding@0.1.13)
+ specifier: ^4.0.0
+ version: 4.0.0(encoding@0.1.13)
ember-welcome-page:
specifier: ^7.0.2
version: 7.0.2
@@ -3965,6 +3965,15 @@ packages:
supports-color:
optional: true
+ debug@4.4.1:
+ resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
decamelize@1.2.0:
resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
engines: {node: '>=0.10.0'}
@@ -4530,6 +4539,10 @@ packages:
resolution: {integrity: sha512-ZYVKYWMnrHSD3vywo7rV76kPCOC9ATIEnGGG/PEKfCcFE0lB26jltRDnOrhORfLKq0JFp62fFxC/4940U+MwRQ==}
engines: {node: 16.* || >= 18.*}
+ ember-try@4.0.0:
+ resolution: {integrity: sha512-gWG1k8+hio1rndJXxzIYhayL7ITof3ebkZ7HwFzFDaz3NARb8MjcVloKj1PFCheu8ZbY8iP8QTRPqb+J+N+Izg==}
+ engines: {node: '>= 18'}
+
ember-welcome-page@7.0.2:
resolution: {integrity: sha512-TyaKxFIRXhODW5BTbqD/by0Gu8Z9B9AA1ki3Bzzm6fOj2b30Qlprtt+XUG52kS0zVNmxYj/WWoT0TsKiU61VOw==}
engines: {node: 14.* || 16.* || >= 18}
@@ -4644,6 +4657,9 @@ packages:
resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
engines: {node: '>= 0.4'}
+ es-toolkit@1.39.5:
+ resolution: {integrity: sha512-z9V0qU4lx1TBXDNFWfAASWk6RNU6c6+TJBKE+FLIg8u0XJ6Yw58Hi0yX8ftEouj6p1QARRlXLFfHbIli93BdQQ==}
+
es5-ext@0.10.64:
resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==}
engines: {node: '>=0.10'}
@@ -8880,6 +8896,10 @@ packages:
resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==}
engines: {node: '>=10'}
+ temp-dir@2.0.0:
+ resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==}
+ engines: {node: '>=8'}
+
temp@0.9.4:
resolution: {integrity: sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==}
engines: {node: '>=6.0.0'}
@@ -13899,6 +13919,10 @@ snapshots:
dependencies:
ms: 2.1.3
+ debug@4.4.1:
+ dependencies:
+ ms: 2.1.3
+
decamelize@1.2.0: {}
decode-named-character-reference@1.0.2:
@@ -15149,6 +15173,24 @@ snapshots:
- encoding
- supports-color
+ ember-try@4.0.0(encoding@0.1.13):
+ dependencies:
+ chalk: 4.1.2
+ cli-table3: 0.6.5
+ debug: 4.4.1
+ ember-try-config: 4.0.0(encoding@0.1.13)
+ es-toolkit: 1.39.5
+ execa: 4.1.0
+ fs-extra: 6.0.1
+ resolve: 1.22.8
+ rimraf: 3.0.2
+ semver: 7.6.3
+ temp-dir: 2.0.0
+ walk-sync: 2.2.0
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+
ember-welcome-page@7.0.2:
dependencies:
'@embroider/addon-shim': 1.8.9
@@ -15321,6 +15363,8 @@ snapshots:
is-date-object: 1.0.5
is-symbol: 1.0.4
+ es-toolkit@1.39.5: {}
+
es5-ext@0.10.64:
dependencies:
es6-iterator: 2.0.3
@@ -15579,7 +15623,7 @@ snapshots:
execa@4.1.0:
dependencies:
- cross-spawn: 7.0.3
+ cross-spawn: 7.0.6
get-stream: 5.2.0
human-signals: 1.1.1
is-stream: 2.0.1
@@ -16883,7 +16927,7 @@ snapshots:
inquirer@9.2.6:
dependencies:
ansi-escapes: 4.3.2
- chalk: 5.3.0
+ chalk: 5.4.1
cli-cursor: 3.1.0
cli-width: 4.1.0
external-editor: 3.1.0
@@ -18406,7 +18450,7 @@ snapshots:
ora@6.3.1:
dependencies:
- chalk: 5.3.0
+ chalk: 5.4.1
cli-cursor: 4.0.0
cli-spinners: 2.9.2
is-interactive: 2.0.0
@@ -20216,6 +20260,8 @@ snapshots:
mkdirp: 1.0.4
yallist: 4.0.0
+ temp-dir@2.0.0: {}
+
temp@0.9.4:
dependencies:
mkdirp: 0.5.6
@@ -20695,7 +20741,7 @@ snapshots:
update-notifier@6.0.2:
dependencies:
boxen: 7.1.1
- chalk: 5.3.0
+ chalk: 5.4.1
configstore: 6.0.0
has-yarn: 3.0.0
import-lazy: 4.0.0
diff --git a/test-apps/embroider-static-source/config/ember-try.js b/test-apps/embroider-static-source/config/ember-try.js
index 5cae0d8085..9bd6ec4c89 100644
--- a/test-apps/embroider-static-source/config/ember-try.js
+++ b/test-apps/embroider-static-source/config/ember-try.js
@@ -4,10 +4,12 @@ const getChannelURL = require('ember-source-channel-url');
module.exports = async function () {
return {
- usePnpm: true,
+ packageManager: 'pnpm',
+ // hack to override
scenarios: [
{
name: 'ember-lts-3.16',
+ command: 'pnpm run test-lts-3',
npm: {
devDependencies: {
'@ember/test-helpers': '^2.4.0',
@@ -20,6 +22,7 @@ module.exports = async function () {
},
{
name: 'ember-lts-3.20',
+ command: 'pnpm run test-lts-3',
npm: {
devDependencies: {
'@ember/test-helpers': '^2.4.0',
@@ -32,6 +35,7 @@ module.exports = async function () {
},
{
name: 'ember-lts-3.24',
+ command: 'pnpm run test-lts-3',
npm: {
devDependencies: {
'@ember/test-helpers': '^2.4.0',
@@ -44,6 +48,7 @@ module.exports = async function () {
},
{
name: 'ember-lts-3.28',
+ command: 'pnpm run test-lts-3',
npm: {
devDependencies: {
'@ember/test-helpers': '^2.4.0',
@@ -51,6 +56,7 @@ module.exports = async function () {
'ember-source': '~3.28.0',
'ember-resolver': '^11.0.1',
'ember-qunit': '^5.1.5',
+ 'babel-plugin-ember-template-compilation': '^1.0.2',
},
},
},
diff --git a/test-apps/embroider-static-source/ember-cli-build.js b/test-apps/embroider-static-source/ember-cli-build.js
index 9f53471a1d..dbee8f4649 100644
--- a/test-apps/embroider-static-source/ember-cli-build.js
+++ b/test-apps/embroider-static-source/ember-cli-build.js
@@ -28,6 +28,6 @@ module.exports = function (defaults) {
});
return compatBuild(app, require('@embroider/webpack').Webpack, {
- emberStaticSource: true,
+ staticEmberSource: true,
});
};
diff --git a/test-apps/embroider-static-source/package.json b/test-apps/embroider-static-source/package.json
index 98bd41d498..d847cdebdf 100644
--- a/test-apps/embroider-static-source/package.json
+++ b/test-apps/embroider-static-source/package.json
@@ -1,5 +1,5 @@
{
- "name": "classic-test-app",
+ "name": "embroider-static-source-test-app",
"version": "0.0.0",
"private": true,
"description": "Small description for test-app goes here",
@@ -14,6 +14,9 @@
"build": "ember build --environment=testing",
"test": "EMBER_ENV=test ember test",
"ember-debug-test": "pnpm test",
+ "lts-3-apply-override": "jq '.pnpm.overrides.\"babel-plugin-ember-template-compilation\" = \"^1.0.2\"' ../../package.json > tmp.json && mv tmp.json ../../package.json",
+ "lts-3-remove-override": "jq 'del(.pnpm)' ../../package.json > tmp.json && mv tmp.json ../../package.json",
+ "test-lts-3": "pnpm lts-3-apply-override; pnpm test; pnpm lts-3-remove-override",
"ember:try:one": "ember try:one",
"test-server:ember": "ember test --serve --watcher node"
},
@@ -52,7 +55,7 @@
"ember-template-lint": "^6.0.0",
"ember-welcome-page": "^7.0.2",
"ember-wormhole": "^0.6.0",
- "ember-try": "^3.0.0",
+ "ember-try": "^4.0.0",
"loader.js": "^4.7.0",
"tracked-built-ins": "^3.4.0",
"ember-in-element-polyfill": "^1.0.1",
From ec994b7362ed9f56ae8092a166962c79b92970bf Mon Sep 17 00:00:00 2001
From: Patrick Pircher
Date: Wed, 25 Jun 2025 11:59:06 +0200
Subject: [PATCH 6/8] fix ember 6
---
ember_debug/object-inspector.js | 58 ++++++++++---------
test-apps/embroider-static-source/app/app.js | 1 +
.../app/inspector-support.js | 26 +++++++++
test-apps/tests/index.html | 2 +-
test-apps/tests/test-helper.js | 11 ++--
5 files changed, 66 insertions(+), 32 deletions(-)
create mode 100644 test-apps/embroider-static-source/app/inspector-support.js
diff --git a/ember_debug/object-inspector.js b/ember_debug/object-inspector.js
index 3d8fd8790d..f356a3a517 100644
--- a/ember_debug/object-inspector.js
+++ b/ember_debug/object-inspector.js
@@ -45,33 +45,37 @@ if (GlimmerValidator && !globalThis.emberInspectorApps) {
track = GlimmerValidator.track;
// patch tagFor to add debug info, older versions already have _propertyKey
- const tagFor = GlimmerValidator.tagFor;
- GlimmerValidator.tagFor = function (...args) {
- const tag = tagFor.call(this, ...args);
- const [obj, key] = args;
- if (
- (!tag._propertyKey || !tag._object) &&
- typeof obj === 'object' &&
- typeof key === 'string'
- ) {
- tag._propertyKey = key;
- tag._object = obj;
- }
- return tag;
- };
- const trackedData = GlimmerValidator.trackedData;
- GlimmerValidator.trackedData = function (...args) {
- const r = trackedData.call(this, ...args);
- if (r.getter && args.length === 2) {
- const [key] = args;
- const getter = r.getter;
- r.getter = function (self) {
- GlimmerValidator.tagFor(self, key);
- return getter.call(this, self);
- };
- }
- return r;
- };
+ try {
+ const tagFor = GlimmerValidator.tagFor;
+ GlimmerValidator.tagFor = function (...args) {
+ const tag = tagFor.call(this, ...args);
+ const [obj, key] = args;
+ if (
+ (!tag._propertyKey || !tag._object) &&
+ typeof obj === 'object' &&
+ typeof key === 'string'
+ ) {
+ tag._propertyKey = key;
+ tag._object = obj;
+ }
+ return tag;
+ };
+ const trackedData = GlimmerValidator.trackedData;
+ GlimmerValidator.trackedData = function (...args) {
+ const r = trackedData.call(this, ...args);
+ if (r.getter && args.length === 2) {
+ const [key] = args;
+ const getter = r.getter;
+ r.getter = function (self) {
+ GlimmerValidator.tagFor(self, key);
+ return getter.call(this, self);
+ };
+ }
+ return r;
+ };
+ } catch {
+ // cannot patch
+ }
} else if (GlimmerReference) {
tagValue = GlimmerReference.value;
tagValidate = GlimmerReference.validate;
diff --git a/test-apps/embroider-static-source/app/app.js b/test-apps/embroider-static-source/app/app.js
index 19f2ce27d7..2b768cf9fc 100644
--- a/test-apps/embroider-static-source/app/app.js
+++ b/test-apps/embroider-static-source/app/app.js
@@ -1,3 +1,4 @@
+import './inspector-support';
import Application from '@ember/application';
import Resolver from 'ember-resolver';
import loadInitializers from 'ember-load-initializers';
diff --git a/test-apps/embroider-static-source/app/inspector-support.js b/test-apps/embroider-static-source/app/inspector-support.js
new file mode 100644
index 0000000000..ad4711e3a2
--- /dev/null
+++ b/test-apps/embroider-static-source/app/inspector-support.js
@@ -0,0 +1,26 @@
+// this is to support ember > 6
+
+import Ember from 'ember';
+import * as runtime from '@glimmer/runtime';
+import * as tracking from '@glimmer/tracking';
+import * as validator from '@glimmer/validator';
+import { RSVP } from '@ember/-internals/runtime';
+import * as metal from '@ember/-internals/metal';
+import * as runloop from '@ember/runloop';
+
+import config from 'test-app/config/environment';
+
+// eslint-disable-next-line ember/new-module-imports
+if (Ember.VERSION?.startsWith('6')) {
+ window.define('@glimmer/tracking', () => tracking);
+ window.define('@glimmer/runtime', () => runtime);
+ window.define('@ember/-internals/metal', () => metal);
+ window.define('@glimmer/validator', () => validator);
+ window.define('@ember/runloop', () => runloop);
+ window.define('rsvp', () => RSVP);
+ window.define('ember', () => ({ default: Ember }));
+ window.define('test-app/config/environment', () => ({
+ default: config,
+ }));
+ document.dispatchEvent(new Event('Ember'));
+}
diff --git a/test-apps/tests/index.html b/test-apps/tests/index.html
index e5ca721ca1..3da4f5837f 100644
--- a/test-apps/tests/index.html
+++ b/test-apps/tests/index.html
@@ -52,11 +52,11 @@
document.head.appendChild(meta);
+
-
{{content-for "body-footer"}}
diff --git a/test-apps/tests/test-helper.js b/test-apps/tests/test-helper.js
index b1b2d0a399..c157e82cb0 100644
--- a/test-apps/tests/test-helper.js
+++ b/test-apps/tests/test-helper.js
@@ -7,9 +7,6 @@ import { start } from 'ember-qunit';
import TestAdapter from './test-adapter';
import setupSinon from 'ember-sinon-qunit';
-// ensure ember-debug is required
-import 'ember-debug/main';
-
Application.initializer({
name: `00-override-adapter`,
initialize(app) {
@@ -26,4 +23,10 @@ QUnit.config.testTimeout = 60000;
setup(QUnit.assert);
-start();
+export async function waitForEmberDebug() {
+ while (true) {
+ if (requireModule.has('ember-debug/main')) return;
+ await new Promise((res) => setTimeout(res, 1));
+ }
+}
+waitForEmberDebug().then(() => start());
From 438aed7fd13c04227881c78a0daf6cbfe833a704 Mon Sep 17 00:00:00 2001
From: Patrick Pircher
Date: Thu, 26 Jun 2025 09:21:50 +0200
Subject: [PATCH 7/8] change layout
---
test-apps/classic/app/app.js | 14 --
test-apps/classic/ember-cli-build.js | 5 +-
.../app/controllers/.gitkeep | 0
.../app/helpers/.gitkeep | 0
.../embroider-static-source/app/index.html | 25 ---
.../app/models/.gitkeep | 0
.../embroider-static-source/app/router.js | 9 -
.../app/routes/.gitkeep | 0
.../app/services/adapters/basic.js | 156 -----------------
.../app/services/adapters/web-extension.js | 163 ------------------
.../app/styles/app.css | 1 -
.../app/templates/application.hbs | 7 -
.../ember-cli-build.js | 11 +-
.../app/app.js | 0
.../app/components/.gitkeep | 0
.../app/controllers/.gitkeep | 0
.../{classic => shared}/app/helpers/.gitkeep | 0
test-apps/{classic => shared}/app/index.html | 0
test-apps/shared/app/inspector-support.js | 1 +
.../{classic => shared}/app/models/.gitkeep | 0
test-apps/{classic => shared}/app/router.js | 0
.../{classic => shared}/app/routes/.gitkeep | 0
.../app/services/adapters/basic.js | 0
.../app/services/adapters/web-extension.js | 0
.../{classic => shared}/app/styles/app.css | 0
.../app/templates/application.hbs | 0
.../tests/ember_debug/container-debug-test.js | 0
.../ember_debug/deprecation-debug-test.js | 0
.../tests/ember_debug/ember-data-test.js | 0
.../tests/ember_debug/ember-debug-test.js | 0
.../ember_debug/object-inspector-test.js | 0
.../tests/ember_debug/profile-manager-test.js | 0
.../tests/ember_debug/profile-node-test.js | 0
.../ember_debug/promise-assembler-test.js | 0
.../tests/ember_debug/promise-debug-test.js | 0
.../tests/ember_debug/render-debug-test.js | 0
.../tests/ember_debug/route-debug-test.js | 0
.../tests/ember_debug/view-debug-test.js | 0
test-apps/{ => shared}/tests/helpers/index.ts | 0
.../tests/helpers/setup-ember-debug-test.js | 0
test-apps/{ => shared}/tests/index.html | 0
.../tests/integration/injection-test.js | 0
test-apps/{ => shared}/tests/test-adapter.js | 0
test-apps/{ => shared}/tests/test-helper.js | 0
.../components => shared/tests/unit}/.gitkeep | 0
.../tests/unit/utils/type-check-test.js | 0
test-apps/tests/unit/.gitkeep | 0
47 files changed, 15 insertions(+), 377 deletions(-)
delete mode 100644 test-apps/classic/app/app.js
delete mode 100644 test-apps/embroider-static-source/app/controllers/.gitkeep
delete mode 100644 test-apps/embroider-static-source/app/helpers/.gitkeep
delete mode 100644 test-apps/embroider-static-source/app/index.html
delete mode 100644 test-apps/embroider-static-source/app/models/.gitkeep
delete mode 100644 test-apps/embroider-static-source/app/router.js
delete mode 100644 test-apps/embroider-static-source/app/routes/.gitkeep
delete mode 100644 test-apps/embroider-static-source/app/services/adapters/basic.js
delete mode 100644 test-apps/embroider-static-source/app/services/adapters/web-extension.js
delete mode 100644 test-apps/embroider-static-source/app/styles/app.css
delete mode 100644 test-apps/embroider-static-source/app/templates/application.hbs
rename test-apps/{embroider-static-source => shared}/app/app.js (100%)
rename test-apps/{classic => shared}/app/components/.gitkeep (100%)
rename test-apps/{classic => shared}/app/controllers/.gitkeep (100%)
rename test-apps/{classic => shared}/app/helpers/.gitkeep (100%)
rename test-apps/{classic => shared}/app/index.html (100%)
create mode 100644 test-apps/shared/app/inspector-support.js
rename test-apps/{classic => shared}/app/models/.gitkeep (100%)
rename test-apps/{classic => shared}/app/router.js (100%)
rename test-apps/{classic => shared}/app/routes/.gitkeep (100%)
rename test-apps/{classic => shared}/app/services/adapters/basic.js (100%)
rename test-apps/{classic => shared}/app/services/adapters/web-extension.js (100%)
rename test-apps/{classic => shared}/app/styles/app.css (100%)
rename test-apps/{classic => shared}/app/templates/application.hbs (100%)
rename test-apps/{ => shared}/tests/ember_debug/container-debug-test.js (100%)
rename test-apps/{ => shared}/tests/ember_debug/deprecation-debug-test.js (100%)
rename test-apps/{ => shared}/tests/ember_debug/ember-data-test.js (100%)
rename test-apps/{ => shared}/tests/ember_debug/ember-debug-test.js (100%)
rename test-apps/{ => shared}/tests/ember_debug/object-inspector-test.js (100%)
rename test-apps/{ => shared}/tests/ember_debug/profile-manager-test.js (100%)
rename test-apps/{ => shared}/tests/ember_debug/profile-node-test.js (100%)
rename test-apps/{ => shared}/tests/ember_debug/promise-assembler-test.js (100%)
rename test-apps/{ => shared}/tests/ember_debug/promise-debug-test.js (100%)
rename test-apps/{ => shared}/tests/ember_debug/render-debug-test.js (100%)
rename test-apps/{ => shared}/tests/ember_debug/route-debug-test.js (100%)
rename test-apps/{ => shared}/tests/ember_debug/view-debug-test.js (100%)
rename test-apps/{ => shared}/tests/helpers/index.ts (100%)
rename test-apps/{ => shared}/tests/helpers/setup-ember-debug-test.js (100%)
rename test-apps/{ => shared}/tests/index.html (100%)
rename test-apps/{ => shared}/tests/integration/injection-test.js (100%)
rename test-apps/{ => shared}/tests/test-adapter.js (100%)
rename test-apps/{ => shared}/tests/test-helper.js (100%)
rename test-apps/{embroider-static-source/app/components => shared/tests/unit}/.gitkeep (100%)
rename test-apps/{ => shared}/tests/unit/utils/type-check-test.js (100%)
delete mode 100644 test-apps/tests/unit/.gitkeep
diff --git a/test-apps/classic/app/app.js b/test-apps/classic/app/app.js
deleted file mode 100644
index 19f2ce27d7..0000000000
--- a/test-apps/classic/app/app.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import Application from '@ember/application';
-import Resolver from 'ember-resolver';
-import loadInitializers from 'ember-load-initializers';
-import config from 'test-app/config/environment';
-
-export default class App extends Application {
- modulePrefix = config.modulePrefix;
- podModulePrefix = config.podModulePrefix;
- Resolver = Resolver;
-}
-
-console.log('test app');
-
-loadInitializers(App, config.modulePrefix);
diff --git a/test-apps/classic/ember-cli-build.js b/test-apps/classic/ember-cli-build.js
index d7b5410d4e..fdfdfa2438 100644
--- a/test-apps/classic/ember-cli-build.js
+++ b/test-apps/classic/ember-cli-build.js
@@ -14,7 +14,10 @@ module.exports = function (defaults) {
const app = new EmberApp(defaults, {
'ember-cli-babel': { enableTypeScriptTransform: true },
trees: {
- tests: new Funnel(path.resolve(__dirname, '../tests')),
+ tests: new Funnel(path.resolve(__dirname, '../shared/tests')),
+ app: new Funnel(path.resolve(__dirname, '../shared/app')),
+ styles: new Funnel(path.resolve(__dirname, '../shared/app/styles')),
+ templates: new Funnel(path.resolve(__dirname, '../shared/app/templates')),
public: new Funnel(testingFolderExists ? testingDir : distDir, {
files: [
'ember_debug.js',
diff --git a/test-apps/embroider-static-source/app/controllers/.gitkeep b/test-apps/embroider-static-source/app/controllers/.gitkeep
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/test-apps/embroider-static-source/app/helpers/.gitkeep b/test-apps/embroider-static-source/app/helpers/.gitkeep
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/test-apps/embroider-static-source/app/index.html b/test-apps/embroider-static-source/app/index.html
deleted file mode 100644
index 3a3c400d40..0000000000
--- a/test-apps/embroider-static-source/app/index.html
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
- TestApp
-
-
-
- {{content-for "head"}}
-
-
-
-
- {{content-for "head-footer"}}
-
-
- {{content-for "body"}}
-
-
-
-
-
- {{content-for "body-footer"}}
-
-
diff --git a/test-apps/embroider-static-source/app/models/.gitkeep b/test-apps/embroider-static-source/app/models/.gitkeep
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/test-apps/embroider-static-source/app/router.js b/test-apps/embroider-static-source/app/router.js
deleted file mode 100644
index 38a0b80a63..0000000000
--- a/test-apps/embroider-static-source/app/router.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import EmberRouter from '@ember/routing/router';
-import config from 'test-app/config/environment';
-
-export default class Router extends EmberRouter {
- location = config.locationType;
- rootURL = config.rootURL;
-}
-
-Router.map(function () {});
diff --git a/test-apps/embroider-static-source/app/routes/.gitkeep b/test-apps/embroider-static-source/app/routes/.gitkeep
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/test-apps/embroider-static-source/app/services/adapters/basic.js b/test-apps/embroider-static-source/app/services/adapters/basic.js
deleted file mode 100644
index 9fa13c3a9b..0000000000
--- a/test-apps/embroider-static-source/app/services/adapters/basic.js
+++ /dev/null
@@ -1,156 +0,0 @@
-/**
- * The adapter stores logic specific to each environment.
- * Extend this object with env specific code (such as chrome/firefox/test),
- * then set the application's `adapter` property to the name of this adapter.
- *
- * example:
- *
- * ```javascript
- * const EmberInspector = App.Create({
- * adapter: 'chrome'
- * });
- * ```
- */
-import Service from '@ember/service';
-import { action } from '@ember/object';
-import { tracked } from '@glimmer/tracking';
-
-const config = {};
-
-export default class Basic extends Service {
- _messageCallbacks;
- name = 'basic';
-
- @tracked canOpenResource = false;
-
- /**
- * Called when the adapter is created (when
- * the inspector app boots).
- */
- constructor() {
- super(...arguments);
-
- this._messageCallbacks = [];
- this._checkVersion();
- }
-
- /**
- * Listens to Ember Inspector message about
- * Ember version mismatch. If a mismatch message is received
- * it means the current inspector app does not support the current
- * Ember version and needs to switch to an inspector version
- * that does.
- *
- * @private
- */
- _checkVersion() {
- this.onMessageReceived((message) => {
- const { name, version } = message;
- if (name === 'version-mismatch') {
- const previousVersions = config.previousEmberVersionsSupported;
- const [fromVersion, tillVersion] = config.emberVersionsSupported;
- let neededVersion;
-
- if (compareVersion(version, fromVersion) === -1) {
- neededVersion = previousVersions[previousVersions.length - 1];
- } else if (tillVersion && compareVersion(version, tillVersion) !== -1) {
- neededVersion = tillVersion;
- } else {
- return;
- }
- this.onVersionMismatch(neededVersion);
- }
- });
- this.sendMessage({ type: 'check-version', from: 'devtools' });
- }
-
- /**
- * Hook called when the Ember version is not
- * supported by the current inspector version.
- *
- * Each adapter should implement this hook
- * to switch to an older/new inspector version
- * that supports this Ember version.
- *
- * @param _neededVersion (The version to go to)
- */
- onVersionMismatch() {}
-
- /**
- Used to send messages to EmberDebug
-
- @param _message the message to send
- **/
- sendMessage() {}
-
- /**
- Register functions to be called
- when a message from EmberDebug is received
- **/
- onMessageReceived(callback) {
- this._messageCallbacks.push(callback);
- }
-
- _messageReceived(...args) {
- this._messageCallbacks.forEach((callback) => {
- callback(...args);
- });
- }
-
- reloadTab() {}
- // Called when the "Reload" is clicked by the user
- willReload() {}
- openResource() {}
-
- @action
- refreshPage() {
- // If the adapter defined a `reloadTab` method, it means
- // they prefer to handle the reload themselves
- if (typeof this.reloadTab === 'function') {
- this.reloadTab();
- } else {
- // inject ember_debug as quickly as possible in chrome
- // so that promises created on dom ready are caught
- this.port.send('general:refresh');
- this.willReload();
- }
- }
-}
-
-/**
- * Compares two Ember versions.
- *
- * Returns:
- * `-1` if version < version
- * 0 if version1 == version2
- * 1 if version1 > version2
- *
- * @return result of the comparison
- */
-function compareVersion(version1, version2) {
- const v1 = cleanupVersion(version1).split('.');
- const v2 = cleanupVersion(version2).split('.');
- for (let i = 0; i < 3; i++) {
- // @ts-expect-error TODO: refactor this to make TS happy
- const compared = compare(+v1[i], +v2[i]);
- if (compared !== 0) {
- return compared;
- }
- }
- return 0;
-}
-
-/* Remove -alpha, -beta, etc from versions */
-function cleanupVersion(version) {
- return version.replace(/-.*/g, '');
-}
-
-function compare(val, number) {
- if (val === number) {
- return 0;
- } else if (val < number) {
- return -1;
- } else if (val > number) {
- return 1;
- }
-}
diff --git a/test-apps/embroider-static-source/app/services/adapters/web-extension.js b/test-apps/embroider-static-source/app/services/adapters/web-extension.js
deleted file mode 100644
index 68221c533a..0000000000
--- a/test-apps/embroider-static-source/app/services/adapters/web-extension.js
+++ /dev/null
@@ -1,163 +0,0 @@
-import { tracked } from '@glimmer/tracking';
-
-import BasicAdapter from './basic';
-
-let emberDebug = null;
-let config = {
- emberVersionsSupported: ['3.16.0'],
-};
-
-export default class WebExtension extends BasicAdapter {
- @tracked canOpenResource = false;
- name = 'web-extension';
-
- /**
- * Called when the adapter is created.
- */
- constructor() {
- super();
-
- this._connect();
- this._handleReload();
- this._setThemeColors();
-
- void Promise.resolve().then(() => this._sendEmberDebug());
- }
-
- sendMessage(message) {
- this._chromePort.postMessage(message ?? {});
- }
-
- _sendEmberDebug() {
- const minimumVersion = config.emberVersionsSupported[0].replace(/\./g, '-');
- const url = chrome.runtime.getURL(
- `/panes-${minimumVersion}/ember_debug.js`,
- );
- // first send to all frames in current tab
- this.sendMessage({
- from: 'devtools',
- tabId: chrome.devtools.inspectedWindow.tabId,
- type: 'inject-ember-debug',
- value: url,
- });
- this.onMessageReceived((message, sender) => {
- if (message === 'ember-content-script-ready') {
- this.sendMessage({
- frameId: sender.frameId,
- from: 'devtools',
- tabId: chrome.devtools.inspectedWindow.tabId,
- type: 'inject-ember-debug',
- value: url,
- });
- }
- });
- }
-
- get _chromePort() {
- return chrome.runtime.connect();
- }
-
- _connect() {
- const chromePort = this._chromePort;
- chromePort.postMessage({ appId: chrome.devtools.inspectedWindow.tabId });
-
- chromePort.onMessage.addListener((...args) => {
- this._messageReceived(...args);
- });
-
- chromePort.onDisconnect.addListener(() => {
- this._connect();
- });
- }
-
- _handleReload() {
- chrome.devtools.network.onNavigated.addListener(() => {
- this._injectDebugger();
- location.reload();
- });
- }
-
- _injectDebugger() {
- void loadEmberDebug().then((emberDebug) => {
- chrome.devtools.inspectedWindow.eval(emberDebug, (success, error) => {
- if (success === undefined && error) {
- throw error;
- }
- });
- });
- }
-
- _setThemeColors() {
- // Remove old theme colors to ensure switching themes works
- document.body.classList.remove('theme-light', 'theme-dark');
-
- let theme = 'theme-light';
- if (chrome.devtools.panels.themeName === 'dark') {
- theme = 'theme-dark';
- }
- document.body.classList.add(theme);
- }
-
- willReload() {
- this._injectDebugger();
- }
-
- /**
- * Open the devtools "Elements" or "Sources" tab and select a specific DOM node or function.
- */
- inspectJSValue(name) {
- chrome.devtools.inspectedWindow.eval(`
- inspect(window[${JSON.stringify(name)}]);
- delete window[${JSON.stringify(name)}];
- `);
- }
-
- /**
- * Redirect to the correct inspector version.
- */
- onVersionMismatch(goToVersion) {
- window.location.href = `../panes-${goToVersion.replace(
- /\./g,
- '-',
- )}/index.html`;
- }
-
- /**
- We handle the reload here so we can inject
- scripts as soon as possible into the new page.
- */
- reloadTab() {
- void loadEmberDebug().then((emberDebug) => {
- chrome.devtools.inspectedWindow.reload({
- injectedScript: emberDebug,
- });
- });
- }
-}
-
-function loadEmberDebug() {
- const minimumVersion = config.emberVersionsSupported[0].replace(/\./g, '-');
- let xhr;
-
- return new Promise((resolve) => {
- if (!emberDebug) {
- xhr = new XMLHttpRequest();
- xhr.open(
- 'GET',
- chrome.runtime.getURL(`/panes-${minimumVersion}/ember_debug.js`),
- );
- xhr.onload = function () {
- if (xhr.readyState === 4) {
- if (xhr.status === 200) {
- emberDebug = xhr.responseText;
- resolve(emberDebug);
- }
- }
- };
-
- xhr.send();
- } else {
- resolve(emberDebug);
- }
- });
-}
diff --git a/test-apps/embroider-static-source/app/styles/app.css b/test-apps/embroider-static-source/app/styles/app.css
deleted file mode 100644
index 2763afa4cf..0000000000
--- a/test-apps/embroider-static-source/app/styles/app.css
+++ /dev/null
@@ -1 +0,0 @@
-/* Ember supports plain CSS out of the box. More info: https://cli.emberjs.com/release/advanced-use/stylesheets/ */
diff --git a/test-apps/embroider-static-source/app/templates/application.hbs b/test-apps/embroider-static-source/app/templates/application.hbs
deleted file mode 100644
index d6565bbd6b..0000000000
--- a/test-apps/embroider-static-source/app/templates/application.hbs
+++ /dev/null
@@ -1,7 +0,0 @@
-{{page-title "TestApp"}}
-
-{{outlet}}
-
-{{! The following component displays Ember's default welcome message. }}
-
-{{! Feel free to remove this! }}
\ No newline at end of file
diff --git a/test-apps/embroider-static-source/ember-cli-build.js b/test-apps/embroider-static-source/ember-cli-build.js
index dbee8f4649..6b2cd89a69 100644
--- a/test-apps/embroider-static-source/ember-cli-build.js
+++ b/test-apps/embroider-static-source/ember-cli-build.js
@@ -4,6 +4,7 @@ const EmberApp = require('ember-cli/lib/broccoli/ember-app');
const path = require('path');
const fs = require('fs');
const { Funnel } = require('broccoli-funnel');
+const merge = require('broccoli-merge-trees');
const { compatBuild } = require('@embroider/compat');
const testingDir = path.resolve(__dirname, '../../dist/testing');
@@ -15,7 +16,15 @@ module.exports = function (defaults) {
const app = new EmberApp(defaults, {
'ember-cli-babel': { enableTypeScriptTransform: true },
trees: {
- tests: new Funnel(path.resolve(__dirname, '../tests')),
+ tests: new Funnel(path.resolve(__dirname, '../shared/tests')),
+ app: merge(
+ [new Funnel(path.resolve(__dirname, '../shared/app')), 'app'],
+ {
+ overwrite: true,
+ },
+ ),
+ styles: new Funnel(path.resolve(__dirname, '../shared/app/styles')),
+ templates: new Funnel(path.resolve(__dirname, '../shared/app/templates')),
public: new Funnel(testingFolderExists ? testingDir : distDir, {
files: [
'ember_debug.js',
diff --git a/test-apps/embroider-static-source/app/app.js b/test-apps/shared/app/app.js
similarity index 100%
rename from test-apps/embroider-static-source/app/app.js
rename to test-apps/shared/app/app.js
diff --git a/test-apps/classic/app/components/.gitkeep b/test-apps/shared/app/components/.gitkeep
similarity index 100%
rename from test-apps/classic/app/components/.gitkeep
rename to test-apps/shared/app/components/.gitkeep
diff --git a/test-apps/classic/app/controllers/.gitkeep b/test-apps/shared/app/controllers/.gitkeep
similarity index 100%
rename from test-apps/classic/app/controllers/.gitkeep
rename to test-apps/shared/app/controllers/.gitkeep
diff --git a/test-apps/classic/app/helpers/.gitkeep b/test-apps/shared/app/helpers/.gitkeep
similarity index 100%
rename from test-apps/classic/app/helpers/.gitkeep
rename to test-apps/shared/app/helpers/.gitkeep
diff --git a/test-apps/classic/app/index.html b/test-apps/shared/app/index.html
similarity index 100%
rename from test-apps/classic/app/index.html
rename to test-apps/shared/app/index.html
diff --git a/test-apps/shared/app/inspector-support.js b/test-apps/shared/app/inspector-support.js
new file mode 100644
index 0000000000..ff7bd09c0c
--- /dev/null
+++ b/test-apps/shared/app/inspector-support.js
@@ -0,0 +1 @@
+// placeholder
diff --git a/test-apps/classic/app/models/.gitkeep b/test-apps/shared/app/models/.gitkeep
similarity index 100%
rename from test-apps/classic/app/models/.gitkeep
rename to test-apps/shared/app/models/.gitkeep
diff --git a/test-apps/classic/app/router.js b/test-apps/shared/app/router.js
similarity index 100%
rename from test-apps/classic/app/router.js
rename to test-apps/shared/app/router.js
diff --git a/test-apps/classic/app/routes/.gitkeep b/test-apps/shared/app/routes/.gitkeep
similarity index 100%
rename from test-apps/classic/app/routes/.gitkeep
rename to test-apps/shared/app/routes/.gitkeep
diff --git a/test-apps/classic/app/services/adapters/basic.js b/test-apps/shared/app/services/adapters/basic.js
similarity index 100%
rename from test-apps/classic/app/services/adapters/basic.js
rename to test-apps/shared/app/services/adapters/basic.js
diff --git a/test-apps/classic/app/services/adapters/web-extension.js b/test-apps/shared/app/services/adapters/web-extension.js
similarity index 100%
rename from test-apps/classic/app/services/adapters/web-extension.js
rename to test-apps/shared/app/services/adapters/web-extension.js
diff --git a/test-apps/classic/app/styles/app.css b/test-apps/shared/app/styles/app.css
similarity index 100%
rename from test-apps/classic/app/styles/app.css
rename to test-apps/shared/app/styles/app.css
diff --git a/test-apps/classic/app/templates/application.hbs b/test-apps/shared/app/templates/application.hbs
similarity index 100%
rename from test-apps/classic/app/templates/application.hbs
rename to test-apps/shared/app/templates/application.hbs
diff --git a/test-apps/tests/ember_debug/container-debug-test.js b/test-apps/shared/tests/ember_debug/container-debug-test.js
similarity index 100%
rename from test-apps/tests/ember_debug/container-debug-test.js
rename to test-apps/shared/tests/ember_debug/container-debug-test.js
diff --git a/test-apps/tests/ember_debug/deprecation-debug-test.js b/test-apps/shared/tests/ember_debug/deprecation-debug-test.js
similarity index 100%
rename from test-apps/tests/ember_debug/deprecation-debug-test.js
rename to test-apps/shared/tests/ember_debug/deprecation-debug-test.js
diff --git a/test-apps/tests/ember_debug/ember-data-test.js b/test-apps/shared/tests/ember_debug/ember-data-test.js
similarity index 100%
rename from test-apps/tests/ember_debug/ember-data-test.js
rename to test-apps/shared/tests/ember_debug/ember-data-test.js
diff --git a/test-apps/tests/ember_debug/ember-debug-test.js b/test-apps/shared/tests/ember_debug/ember-debug-test.js
similarity index 100%
rename from test-apps/tests/ember_debug/ember-debug-test.js
rename to test-apps/shared/tests/ember_debug/ember-debug-test.js
diff --git a/test-apps/tests/ember_debug/object-inspector-test.js b/test-apps/shared/tests/ember_debug/object-inspector-test.js
similarity index 100%
rename from test-apps/tests/ember_debug/object-inspector-test.js
rename to test-apps/shared/tests/ember_debug/object-inspector-test.js
diff --git a/test-apps/tests/ember_debug/profile-manager-test.js b/test-apps/shared/tests/ember_debug/profile-manager-test.js
similarity index 100%
rename from test-apps/tests/ember_debug/profile-manager-test.js
rename to test-apps/shared/tests/ember_debug/profile-manager-test.js
diff --git a/test-apps/tests/ember_debug/profile-node-test.js b/test-apps/shared/tests/ember_debug/profile-node-test.js
similarity index 100%
rename from test-apps/tests/ember_debug/profile-node-test.js
rename to test-apps/shared/tests/ember_debug/profile-node-test.js
diff --git a/test-apps/tests/ember_debug/promise-assembler-test.js b/test-apps/shared/tests/ember_debug/promise-assembler-test.js
similarity index 100%
rename from test-apps/tests/ember_debug/promise-assembler-test.js
rename to test-apps/shared/tests/ember_debug/promise-assembler-test.js
diff --git a/test-apps/tests/ember_debug/promise-debug-test.js b/test-apps/shared/tests/ember_debug/promise-debug-test.js
similarity index 100%
rename from test-apps/tests/ember_debug/promise-debug-test.js
rename to test-apps/shared/tests/ember_debug/promise-debug-test.js
diff --git a/test-apps/tests/ember_debug/render-debug-test.js b/test-apps/shared/tests/ember_debug/render-debug-test.js
similarity index 100%
rename from test-apps/tests/ember_debug/render-debug-test.js
rename to test-apps/shared/tests/ember_debug/render-debug-test.js
diff --git a/test-apps/tests/ember_debug/route-debug-test.js b/test-apps/shared/tests/ember_debug/route-debug-test.js
similarity index 100%
rename from test-apps/tests/ember_debug/route-debug-test.js
rename to test-apps/shared/tests/ember_debug/route-debug-test.js
diff --git a/test-apps/tests/ember_debug/view-debug-test.js b/test-apps/shared/tests/ember_debug/view-debug-test.js
similarity index 100%
rename from test-apps/tests/ember_debug/view-debug-test.js
rename to test-apps/shared/tests/ember_debug/view-debug-test.js
diff --git a/test-apps/tests/helpers/index.ts b/test-apps/shared/tests/helpers/index.ts
similarity index 100%
rename from test-apps/tests/helpers/index.ts
rename to test-apps/shared/tests/helpers/index.ts
diff --git a/test-apps/tests/helpers/setup-ember-debug-test.js b/test-apps/shared/tests/helpers/setup-ember-debug-test.js
similarity index 100%
rename from test-apps/tests/helpers/setup-ember-debug-test.js
rename to test-apps/shared/tests/helpers/setup-ember-debug-test.js
diff --git a/test-apps/tests/index.html b/test-apps/shared/tests/index.html
similarity index 100%
rename from test-apps/tests/index.html
rename to test-apps/shared/tests/index.html
diff --git a/test-apps/tests/integration/injection-test.js b/test-apps/shared/tests/integration/injection-test.js
similarity index 100%
rename from test-apps/tests/integration/injection-test.js
rename to test-apps/shared/tests/integration/injection-test.js
diff --git a/test-apps/tests/test-adapter.js b/test-apps/shared/tests/test-adapter.js
similarity index 100%
rename from test-apps/tests/test-adapter.js
rename to test-apps/shared/tests/test-adapter.js
diff --git a/test-apps/tests/test-helper.js b/test-apps/shared/tests/test-helper.js
similarity index 100%
rename from test-apps/tests/test-helper.js
rename to test-apps/shared/tests/test-helper.js
diff --git a/test-apps/embroider-static-source/app/components/.gitkeep b/test-apps/shared/tests/unit/.gitkeep
similarity index 100%
rename from test-apps/embroider-static-source/app/components/.gitkeep
rename to test-apps/shared/tests/unit/.gitkeep
diff --git a/test-apps/tests/unit/utils/type-check-test.js b/test-apps/shared/tests/unit/utils/type-check-test.js
similarity index 100%
rename from test-apps/tests/unit/utils/type-check-test.js
rename to test-apps/shared/tests/unit/utils/type-check-test.js
diff --git a/test-apps/tests/unit/.gitkeep b/test-apps/tests/unit/.gitkeep
deleted file mode 100644
index e69de29bb2..0000000000
From 63adb1f66d62363aee9825ab3a276f2f969909c4 Mon Sep 17 00:00:00 2001
From: Patrick Pircher
Date: Mon, 6 Oct 2025 23:21:35 +0200
Subject: [PATCH 8/8] fix lock
---
pnpm-lock.yaml | 1400 +++++++++++++++++++++++++++++++++++++-----------
1 file changed, 1081 insertions(+), 319 deletions(-)
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 51a8a761c5..98ad6e1e97 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -25,7 +25,7 @@ importers:
devDependencies:
'@babel/core':
specifier: ^7.26.0
- version: 7.26.0
+ version: 7.26.0(supports-color@8.1.1)
'@babel/eslint-parser':
specifier: ^7.25.9
version: 7.26.5(@babel/core@7.26.0)(eslint@9.18.0)
@@ -367,10 +367,10 @@ importers:
version: 7.25.9(@babel/core@7.26.0)
'@babel/plugin-transform-class-properties':
specifier: ^7.25.9
- version: 7.27.1(@babel/core@7.26.0)
+ version: 7.27.1(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/plugin-transform-class-static-block':
specifier: ^7.26.0
- version: 7.27.1(@babel/core@7.26.0)
+ version: 7.27.1(@babel/core@7.26.0)(supports-color@8.1.1)
'@rollup/plugin-babel':
specifier: ^6.0.4
version: 6.0.4(@babel/core@7.26.0)(rollup@4.41.1)
@@ -400,7 +400,7 @@ importers:
devDependencies:
'@babel/core':
specifier: ^7.26.0
- version: 7.26.0
+ version: 7.26.0(supports-color@8.1.1)
'@babel/eslint-parser':
specifier: ^7.25.9
version: 7.26.5(@babel/core@7.26.0)(eslint@9.18.0)
@@ -491,6 +491,135 @@ importers:
ember-template-lint:
specifier: ^6.0.0
version: 6.0.0
+ ember-try:
+ specifier: ^3.0.0
+ version: 3.0.0(encoding@0.1.13)
+ ember-welcome-page:
+ specifier: ^7.0.2
+ version: 7.0.2
+ ember-wormhole:
+ specifier: ^0.6.0
+ version: 0.6.0
+ loader.js:
+ specifier: ^4.7.0
+ version: 4.7.0
+ qunit:
+ specifier: ^2.24.1
+ version: 2.24.1
+ qunit-dom:
+ specifier: ^3.4.0
+ version: 3.4.0
+ tracked-built-ins:
+ specifier: ^3.4.0
+ version: 3.4.0(@babel/core@7.26.0)
+ webpack:
+ specifier: ^5.97.1
+ version: 5.97.1
+
+ test-apps/embroider-static-source:
+ devDependencies:
+ '@babel/core':
+ specifier: ^7.26.0
+ version: 7.26.0(supports-color@8.1.1)
+ '@babel/eslint-parser':
+ specifier: ^7.25.9
+ version: 7.26.5(@babel/core@7.26.0)(eslint@9.18.0)
+ '@babel/plugin-proposal-decorators':
+ specifier: ^7.25.9
+ version: 7.25.9(@babel/core@7.26.0)
+ '@ember/optional-features':
+ specifier: ^2.2.0
+ version: 2.2.0
+ '@ember/render-modifiers':
+ specifier: ^3.0.0
+ version: 3.0.0(@glint/template@1.5.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1))
+ '@ember/string':
+ specifier: ^4.0.0
+ version: 4.0.0
+ '@ember/test-helpers':
+ specifier: ^4.0.4
+ version: 4.0.4(@babel/core@7.26.0)(@glint/template@1.5.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1))
+ '@embroider/compat':
+ specifier: ^3.9.1
+ version: 3.9.1(@embroider/core@3.5.7(@glint/template@1.5.1))(@glint/template@1.5.1)
+ '@embroider/core':
+ specifier: ^3.5.7
+ version: 3.5.7(@glint/template@1.5.1)
+ '@embroider/webpack':
+ specifier: ^4.1.0
+ version: 4.1.1(@embroider/core@3.5.7(@glint/template@1.5.1))(webpack@5.97.1)
+ '@eslint/js':
+ specifier: ^9.17.0
+ version: 9.18.0
+ '@glimmer/component':
+ specifier: ^1.1.2
+ version: 1.1.2(@babel/core@7.26.0)
+ '@glimmer/tracking':
+ specifier: ^1.1.2
+ version: 1.1.2
+ broccoli-asset-rev:
+ specifier: ^3.0.0
+ version: 3.0.0
+ concurrently:
+ specifier: ^9.1.0
+ version: 9.1.2
+ ember-auto-import:
+ specifier: ^2.10.0
+ version: 2.10.0(@glint/template@1.5.1)(webpack@5.97.1)
+ ember-cli:
+ specifier: ~6.1.0
+ version: 6.1.0(handlebars@4.7.8)(underscore@1.13.7)
+ ember-cli-babel:
+ specifier: ^8.2.0
+ version: 8.2.0(@babel/core@7.26.0)
+ ember-cli-clean-css:
+ specifier: ^3.0.0
+ version: 3.0.0
+ ember-cli-dependency-checker:
+ specifier: ^3.3.3
+ version: 3.3.3(ember-cli@6.1.0(handlebars@4.7.8)(underscore@1.13.7))
+ ember-cli-htmlbars:
+ specifier: ^6.3.0
+ version: 6.3.0
+ ember-cli-inject-live-reload:
+ specifier: ^2.1.0
+ version: 2.1.0(patch_hash=enhtbujp77hfcye7o4pfeqcdua)
+ ember-cli-sri:
+ specifier: ^2.1.1
+ version: 2.1.1
+ ember-cli-terser:
+ specifier: ^4.0.2
+ version: 4.0.2
+ ember-fetch:
+ specifier: ^8.1.2
+ version: 8.1.2(encoding@0.1.13)
+ ember-in-element-polyfill:
+ specifier: ^1.0.1
+ version: 1.0.1
+ ember-load-initializers:
+ specifier: ^3.0.1
+ version: 3.0.1(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1))
+ ember-modifier:
+ specifier: ^4.2.0
+ version: 4.2.0(@babel/core@7.26.0)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1))
+ ember-page-title:
+ specifier: ^8.2.3
+ version: 8.2.4(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1))
+ ember-qunit:
+ specifier: ^8.1.1
+ version: 8.1.1(@ember/test-helpers@4.0.4(@babel/core@7.26.0)(@glint/template@1.5.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1)))(@glint/template@1.5.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1))(qunit@2.24.1)
+ ember-resolver:
+ specifier: ^13.1.0
+ version: 13.1.0(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1))
+ ember-sinon-qunit:
+ specifier: ^7.5.0
+ version: 7.5.0(@babel/core@7.26.0)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1))(qunit@2.24.1)(sinon@15.2.0)
+ ember-source:
+ specifier: ^5.0.0
+ version: 5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1)
+ ember-template-lint:
+ specifier: ^6.0.0
+ version: 6.0.0
ember-try:
specifier: ^4.0.0
version: 4.0.0(encoding@0.1.13)
@@ -522,6 +651,9 @@ packages:
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
+ '@asamuzakjp/css-color@3.2.0':
+ resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==}
+
'@babel/code-frame@7.26.2':
resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
engines: {node: '>=6.9.0'}
@@ -847,6 +979,11 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
+ '@babel/plugin-syntax-dynamic-import@7.8.3':
+ resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
'@babel/plugin-syntax-import-assertions@7.25.7':
resolution: {integrity: sha512-ZvZQRmME0zfJnDQnVBKYzHxXT7lYBB3Revz1GuS7oLXWMgqUPX4G+DDbT30ICClht9WKV34QVrZhSw6WdklwZQ==}
engines: {node: '>=6.9.0'}
@@ -1276,6 +1413,24 @@ packages:
resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==}
engines: {node: '>=0.1.90'}
+ '@csstools/color-helpers@5.1.0':
+ resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==}
+ engines: {node: '>=18'}
+
+ '@csstools/css-calc@2.1.4':
+ resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@csstools/css-parser-algorithms': ^3.0.5
+ '@csstools/css-tokenizer': ^3.0.4
+
+ '@csstools/css-color-parser@3.1.0':
+ resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@csstools/css-parser-algorithms': ^3.0.5
+ '@csstools/css-tokenizer': ^3.0.4
+
'@csstools/css-parser-algorithms@3.0.4':
resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==}
engines: {node: '>=18'}
@@ -1370,6 +1525,30 @@ packages:
resolution: {integrity: sha512-qyN64T1jMHZ99ihlk7VFHCWHYZHLE1DOdHi0J7lmn5waV1DoW7gD8JLi1i7FregzXtKhbDc7shyEmTmWPTs8MQ==}
engines: {node: 12.* || 14.* || >= 16}
+ '@embroider/babel-loader-9@3.1.2':
+ resolution: {integrity: sha512-x2K0QpG+S3h6a0gY8tWtiUFEQAMUk6NdWqtT+4eyoZ1YCYcWXVPhRx3FXS5FsHXk/lmrMd2hc7XPgYk6kYoKuQ==}
+ engines: {node: 12.* || 14.* || >= 16}
+ peerDependencies:
+ '@embroider/core': ^3.5.7
+
+ '@embroider/compat@3.9.1':
+ resolution: {integrity: sha512-bFG1XZWC388OV0/tlCmzwEYX7i+G4sQCyTGFIz657r1ouQiCaCu6vFDNsumfwYZw/ixqJSUowbbvSucPwWHi4g==}
+ engines: {node: 12.* || 14.* || >= 16}
+ hasBin: true
+ peerDependencies:
+ '@embroider/core': ^3.5.7
+
+ '@embroider/core@3.5.7':
+ resolution: {integrity: sha512-0oytko2+iaYS31TG9Axj7Py0e0FAccUhu9J1h7ldEnQegK+Eu5+OINU0dYQgt0ijp6f2yF4+o3J7u9CJCLZ1gw==}
+ engines: {node: 12.* || 14.* || >= 16}
+
+ '@embroider/hbs-loader@3.0.4':
+ resolution: {integrity: sha512-k7ZWqOzZGQHyCciaPs87K5/nlaFOtXbLaRhjrBpSZJafXxbu21tYQWDjsQG5sfNhmX+izjQeZ/7fcimpG08edg==}
+ engines: {node: 12.* || 14.* || >= 16}
+ peerDependencies:
+ '@embroider/core': ^3.5.7
+ webpack: ^5
+
'@embroider/macros@1.16.9':
resolution: {integrity: sha512-AUrmHQdixczIU3ouv/+HzWxwYVsw/NwssZxAQnXfBDJ3d3/CRtAvGRu3JhY6OT3AAPFwfa2WT66tB5jeAa7r5g==}
engines: {node: 12.* || 14.* || >= 16}
@@ -1383,6 +1562,17 @@ packages:
resolution: {integrity: sha512-zi0CENFD1e0DH7c9M/rNKJnFnt2c3+736J3lguBddZdmaIV6Cb8l3HQSkskSW5O4ady+SavemLKO3hCjQQJBIw==}
engines: {node: 12.* || 14.* || >= 16}
+ '@embroider/shared-internals@2.9.1':
+ resolution: {integrity: sha512-8PJBsa37GD++SAfHf8rcJzlwDwuAQCBo0fr+eGxg9l8XhBXsTnE/7706dM4OqWew9XNqRXn39wfIGHZoBpjNMw==}
+ engines: {node: 12.* || 14.* || >= 16}
+
+ '@embroider/webpack@4.1.1':
+ resolution: {integrity: sha512-L/Og9W9BhHo0RhRsxJjfDMIBZQvuAP9kcUw7ysG+yfblCmRpQarWu+3IyKEBpPt0B2BKfnJY1fW6WtyPKCov3Q==}
+ engines: {node: 12.* || 14.* || >= 16}
+ peerDependencies:
+ '@embroider/core': ^3.5.7
+ webpack: ^5.0.0
+
'@eslint-community/eslint-utils@4.4.0':
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -2056,6 +2246,9 @@ packages:
'@types/acorn@4.0.6':
resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==}
+ '@types/babel__code-frame@7.0.6':
+ resolution: {integrity: sha512-Anitqkl3+KrzcW2k77lRlg/GfLZLWXBuNgbEcIOU6M92yw42vsd3xV/Z/yAHEj8m+KUjL6bWOVOFqX8PFPJ4LA==}
+
'@types/body-parser@1.19.5':
resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==}
@@ -2204,12 +2397,21 @@ packages:
'@types/sizzle@2.3.8':
resolution: {integrity: sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==}
+ '@types/supports-color@8.1.3':
+ resolution: {integrity: sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==}
+
'@types/symlink-or-copy@1.2.2':
resolution: {integrity: sha512-MQ1AnmTLOncwEf9IVU+B2e4Hchrku5N67NkgcAHW0p3sdzPe0FNMANxEm6OJUzPniEQGkeT3OROLlCwZJLWFZA==}
'@types/unist@2.0.11':
resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
+ '@types/yargs-parser@21.0.3':
+ resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
+
+ '@types/yargs@17.0.33':
+ resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==}
+
'@typescript-eslint/eslint-plugin@8.21.0':
resolution: {integrity: sha512-eTH+UOR4I7WbdQnG4Z48ebIA6Bgi7WO8HvFEneeYBxG8qCOYgTOFPSg6ek9ITIDvGjDQzWHcoWHCDO2biByNzA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -2703,6 +2905,13 @@ packages:
'@babel/core': ^7.0.0
webpack: '>=2'
+ babel-loader@9.2.1:
+ resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==}
+ engines: {node: '>= 14.15.0'}
+ peerDependencies:
+ '@babel/core': ^7.12.0
+ webpack: '>=5'
+
babel-messages@6.23.0:
resolution: {integrity: sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==}
@@ -2932,6 +3141,9 @@ packages:
resolution: {integrity: sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==}
engines: {node: '>=0.8'}
+ bind-decorator@1.0.11:
+ resolution: {integrity: sha512-yzkH0uog6Vv/vQ9+rhSKxecnqGUZHYncg7qS7voz3Q76+TAi1SGiOKk2mlOvusQnFz9Dc4BC/NMkeXu11YgjJg==}
+
bindings@1.5.0:
resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
@@ -3235,6 +3447,10 @@ packages:
resolution: {integrity: sha512-Quw8a6y8CPmRd6eU+mwypktYCwUcf8yVFIRbNZ6tPQEckX9yd+EBVEPC/GSZZrMWH9e7Vz4pT7XhpmyApRByLQ==}
engines: {node: 6.* || 8.* || >= 10.*}
+ call-bind-apply-helpers@1.0.2:
+ resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
+ engines: {node: '>= 0.4'}
+
call-bind@1.0.7:
resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
engines: {node: '>= 0.4'}
@@ -3526,6 +3742,9 @@ packages:
common-ancestor-path@1.0.1:
resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==}
+ common-path-prefix@3.0.0:
+ resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==}
+
common-tags@1.8.2:
resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==}
engines: {node: '>=4.0.0'}
@@ -3881,6 +4100,10 @@ packages:
resolution: {integrity: sha512-SPt57bh5nQnpsTBsx/IXbO14sRc9xXu5MtMAVuo0BaQQmyf0NupNPPSoMaqiAF5tDFafYsTkfeH4Q/HCKXkg4w==}
engines: {node: '>=0.10.0'}
+ css-tree@1.1.3:
+ resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==}
+ engines: {node: '>=8.0.0'}
+
css-tree@3.1.0:
resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==}
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
@@ -3902,6 +4125,14 @@ packages:
resolution: {integrity: sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==}
engines: {node: '>=0.10.0'}
+ csso@4.2.0:
+ resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==}
+ engines: {node: '>=8.0.0'}
+
+ cssstyle@4.6.0:
+ resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==}
+ engines: {node: '>=18'}
+
d@1.0.2:
resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==}
engines: {node: '>=0.12'}
@@ -3921,6 +4152,10 @@ packages:
resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==}
engines: {node: '>= 14'}
+ data-urls@5.0.0:
+ resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==}
+ engines: {node: '>=18'}
+
data-view-buffer@1.0.1:
resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==}
engines: {node: '>= 0.4'}
@@ -3978,6 +4213,9 @@ packages:
resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
engines: {node: '>=0.10.0'}
+ decimal.js@10.6.0:
+ resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==}
+
decode-named-character-reference@1.0.2:
resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==}
@@ -4166,6 +4404,10 @@ packages:
resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==}
engines: {node: '>=10'}
+ dunder-proto@1.0.1:
+ resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
+ engines: {node: '>= 0.4'}
+
duplexer3@0.1.5:
resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==}
@@ -4635,6 +4877,10 @@ packages:
resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
engines: {node: '>= 0.4'}
+ es-define-property@1.0.1:
+ resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
+ engines: {node: '>= 0.4'}
+
es-errors@1.3.0:
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
engines: {node: '>= 0.4'}
@@ -4649,10 +4895,18 @@ packages:
resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==}
engines: {node: '>= 0.4'}
+ es-object-atoms@1.1.1:
+ resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
+ engines: {node: '>= 0.4'}
+
es-set-tostringtag@2.0.3:
resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==}
engines: {node: '>= 0.4'}
+ es-set-tostringtag@2.1.0:
+ resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
+ engines: {node: '>= 0.4'}
+
es-to-primitive@1.2.1:
resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
engines: {node: '>= 0.4'}
@@ -5083,6 +5337,10 @@ packages:
resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==}
engines: {node: '>=8'}
+ find-cache-dir@4.0.0:
+ resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==}
+ engines: {node: '>=14.16'}
+
find-index@1.1.1:
resolution: {integrity: sha512-XYKutXMrIK99YMUPf91KX5QVJoG31/OsgftD6YoTPAObfQIxM4ziA9f0J1AsqKhJmo+IeaIPP0CFopTD4bdUBw==}
@@ -5106,6 +5364,10 @@ packages:
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
engines: {node: '>=10'}
+ find-up@6.3.0:
+ resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
find-up@7.0.0:
resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==}
engines: {node: '>=18'}
@@ -5205,6 +5467,10 @@ packages:
resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==}
engines: {node: '>= 0.12'}
+ form-data@4.0.4:
+ resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==}
+ engines: {node: '>= 6'}
+
formdata-polyfill@4.0.10:
resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
engines: {node: '>=12.20.0'}
@@ -5331,10 +5597,18 @@ packages:
resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
engines: {node: '>= 0.4'}
+ get-intrinsic@1.3.0:
+ resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
+ engines: {node: '>= 0.4'}
+
get-package-type@0.1.0:
resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
engines: {node: '>=8.0.0'}
+ get-proto@1.0.1:
+ resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
+ engines: {node: '>= 0.4'}
+
get-stdin@4.0.1:
resolution: {integrity: sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==}
engines: {node: '>=0.10.0'}
@@ -5519,6 +5793,10 @@ packages:
gopd@1.0.1:
resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
+ gopd@1.2.0:
+ resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
+ engines: {node: '>= 0.4'}
+
got@11.8.6:
resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==}
engines: {node: '>=10.19.0'}
@@ -5617,6 +5895,10 @@ packages:
resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
engines: {node: '>= 0.4'}
+ has-symbols@1.1.0:
+ resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
+ engines: {node: '>= 0.4'}
+
has-tostringtag@1.0.2:
resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
engines: {node: '>= 0.4'}
@@ -5689,6 +5971,10 @@ packages:
resolution: {integrity: sha512-sYKnA7eGln5ov8T8gnYlkSOxFJvywzEx9BueN6xo/GKO8PGiI6uK6xx+DIGe45T3bdVjLAQDQW1aicT8z8JwQg==}
engines: {node: ^18.17.0 || >=20.5.0}
+ html-encoding-sniffer@4.0.0:
+ resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==}
+ engines: {node: '>=18'}
+
html-escaper@2.0.2:
resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
@@ -6100,6 +6386,9 @@ packages:
resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
engines: {node: '>=0.10.0'}
+ is-potential-custom-element-name@1.0.1:
+ resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
+
is-reference@1.2.1:
resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==}
@@ -6307,6 +6596,15 @@ packages:
jsbn@1.1.0:
resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==}
+ jsdom@25.0.1:
+ resolution: {integrity: sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ canvas: ^2.11.2
+ peerDependenciesMeta:
+ canvas:
+ optional: true
+
jsesc@0.5.0:
resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==}
hasBin: true
@@ -6322,6 +6620,9 @@ packages:
json-buffer@3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
+ json-parse-better-errors@1.0.2:
+ resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==}
+
json-parse-even-better-errors@2.3.1:
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
@@ -6734,6 +7035,10 @@ packages:
resolution: {integrity: sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==}
engines: {node: 6.* || 8.* || >= 10.*}
+ math-intrinsics@1.1.0:
+ resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
+ engines: {node: '>= 0.4'}
+
mathml-tag-names@2.1.3:
resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==}
@@ -6746,6 +7051,9 @@ packages:
mdn-data@1.1.4:
resolution: {integrity: sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==}
+ mdn-data@2.0.14:
+ resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==}
+
mdn-data@2.0.4:
resolution: {integrity: sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==}
@@ -7207,6 +7515,9 @@ packages:
resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==}
engines: {node: '>=0.10.0'}
+ nwsapi@2.2.22:
+ resolution: {integrity: sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==}
+
oauth-sign@0.9.0:
resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==}
@@ -7631,6 +7942,10 @@ packages:
resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
engines: {node: '>=8'}
+ pkg-dir@7.0.0:
+ resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==}
+ engines: {node: '>=14.16'}
+
pkg-entry-points@1.1.0:
resolution: {integrity: sha512-9vL2T/he5Kb97GVY+V3Ih4jCC1lF3PQGIDUJIUqKM4Q6twmhrUSAa0OFj+kb8IEs4wYzEgB6kcc4oYy21kZnQw==}
@@ -8265,6 +8580,12 @@ packages:
route-recognizer: ^0.3.4
rsvp: ^4.8.5
+ rrweb-cssom@0.7.1:
+ resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==}
+
+ rrweb-cssom@0.8.0:
+ resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==}
+
rsvp@3.2.1:
resolution: {integrity: sha512-Rf4YVNYpKjZ6ASAmibcwTNciQ5Co5Ztq6iZPEykHpkoflnD/K5ryE/rHehFsTm4NJj8nKDhbi3eKBWGogmNnkg==}
@@ -8348,6 +8669,10 @@ packages:
sax@1.2.4:
resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
+ saxes@6.0.0:
+ resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==}
+ engines: {node: '>=v12.22.7'}
+
schema-utils@2.7.1:
resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==}
engines: {node: '>= 8.9.0'}
@@ -8866,6 +9191,9 @@ packages:
deprecated: This SVGO version is no longer supported. Upgrade to v2.x.x.
hasBin: true
+ symbol-tree@3.2.4:
+ resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
+
symlink-or-copy@1.3.1:
resolution: {integrity: sha512-0K91MEXFpBUaywiwSSkmKjnGcasG/rVBXFLJz5DrgGabpYD6N+3yZrfD6uUIfpuTu65DZLHi7N8CizHc07BPZA==}
@@ -8945,6 +9273,12 @@ packages:
thenify@3.3.1:
resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
+ thread-loader@3.0.4:
+ resolution: {integrity: sha512-ByaL2TPb+m6yArpqQUZvP+5S1mZtXsEP7nWKKlAUTm7fCml8kB5s1uI3+eHRP2bk5mVYfRSBI7FFf+tWEyLZwA==}
+ engines: {node: '>= 10.13.0'}
+ peerDependencies:
+ webpack: ^4.27.0 || ^5.0.0
+
through2-filter@3.0.0:
resolution: {integrity: sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==}
@@ -8975,6 +9309,13 @@ packages:
resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==}
engines: {node: '>=12'}
+ tldts-core@6.1.86:
+ resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==}
+
+ tldts@6.1.86:
+ resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==}
+ hasBin: true
+
tmp@0.0.28:
resolution: {integrity: sha512-c2mmfiBmND6SOVxzogm1oda0OJ1HZVIk/5n26N59dDTh80MUeavpiCls4PGAdkX1PFkKokLpcf7prSjCeXLsJg==}
engines: {node: '>=0.4.0'}
@@ -9038,9 +9379,17 @@ packages:
resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==}
engines: {node: '>=0.8'}
+ tough-cookie@5.1.2:
+ resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==}
+ engines: {node: '>=16'}
+
tr46@0.0.3:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+ tr46@5.1.1:
+ resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==}
+ engines: {node: '>=18'}
+
tracked-built-ins@3.4.0:
resolution: {integrity: sha512-aRwWQXC3VkY50oYxS7wKZiavkjf3uaN+UYUH30D5gxUqbxDN2LnNsfWyDfckmxHUGw4gJDH5lpRS0jX/tim0vw==}
@@ -9402,6 +9751,10 @@ packages:
deprecated: The library contains critical security issues and should not be used for production! The maintenance of the project has been discontinued. Consider migrating your code to isolated-vm.
hasBin: true
+ w3c-xmlserializer@5.0.0:
+ resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
+ engines: {node: '>=18'}
+
walk-sync@0.2.7:
resolution: {integrity: sha512-OH8GdRMowEFr0XSHQeX5fGweO6zSVHo7bG/0yJQx6LAj9Oukz0C8heI3/FYectT66gY0IPGe89kOvU410/UNpg==}
@@ -9440,6 +9793,10 @@ packages:
webidl-conversions@3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
+ webidl-conversions@7.0.0:
+ resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
+ engines: {node: '>=12'}
+
webpack-sources@3.2.3:
resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
engines: {node: '>=10.13.0'}
@@ -9473,6 +9830,10 @@ packages:
resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==}
engines: {node: '>=18'}
+ whatwg-url@14.2.0:
+ resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==}
+ engines: {node: '>=18'}
+
whatwg-url@5.0.0:
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
@@ -9584,6 +9945,18 @@ packages:
utf-8-validate:
optional: true
+ ws@8.18.3:
+ resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
xdg-basedir@4.0.0:
resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==}
engines: {node: '>=8'}
@@ -9592,6 +9965,13 @@ packages:
resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==}
engines: {node: '>=12'}
+ xml-name-validator@5.0.0:
+ resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==}
+ engines: {node: '>=18'}
+
+ xmlchars@2.2.0:
+ resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
+
xtend@4.0.2:
resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
engines: {node: '>=0.4'}
@@ -9676,6 +10056,14 @@ snapshots:
'@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.25
+ '@asamuzakjp/css-color@3.2.0':
+ dependencies:
+ '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ lru-cache: 10.4.3
+
'@babel/code-frame@7.26.2':
dependencies:
'@babel/helper-validator-identifier': 7.25.9
@@ -9692,20 +10080,20 @@ snapshots:
'@babel/compat-data@7.26.5': {}
- '@babel/core@7.26.0':
+ '@babel/core@7.26.0(supports-color@8.1.1)':
dependencies:
'@ampproject/remapping': 2.3.0
'@babel/code-frame': 7.26.2
'@babel/generator': 7.26.5
'@babel/helper-compilation-targets': 7.26.5
- '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0)
+ '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/helpers': 7.26.0
'@babel/parser': 7.26.5
'@babel/template': 7.25.9
- '@babel/traverse': 7.26.5
+ '@babel/traverse': 7.26.5(supports-color@8.1.1)
'@babel/types': 7.26.5
convert-source-map: 2.0.0
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -9714,7 +10102,7 @@ snapshots:
'@babel/eslint-parser@7.26.5(@babel/core@7.26.0)(eslint@9.18.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1
eslint: 9.18.0
eslint-visitor-keys: 2.1.0
@@ -9748,9 +10136,9 @@ snapshots:
dependencies:
'@babel/types': 7.27.3
- '@babel/helper-builder-binary-assignment-operator-visitor@7.25.7':
+ '@babel/helper-builder-binary-assignment-operator-visitor@7.25.7(supports-color@8.1.1)':
dependencies:
- '@babel/traverse': 7.26.5
+ '@babel/traverse': 7.26.5(supports-color@8.1.1)
'@babel/types': 7.26.5
transitivePeerDependencies:
- supports-color
@@ -9771,87 +10159,87 @@ snapshots:
lru-cache: 5.1.1
semver: 6.3.1
- '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0)':
+ '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-annotate-as-pure': 7.25.9
- '@babel/helper-member-expression-to-functions': 7.25.9
+ '@babel/helper-member-expression-to-functions': 7.25.9(supports-color@8.1.1)
'@babel/helper-optimise-call-expression': 7.25.9
- '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.0)
- '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
- '@babel/traverse': 7.26.5
+ '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.0)(supports-color@8.1.1)
+ '@babel/helper-skip-transparent-expression-wrappers': 7.25.9(supports-color@8.1.1)
+ '@babel/traverse': 7.26.5(supports-color@8.1.1)
semver: 6.3.1
transitivePeerDependencies:
- supports-color
- '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.26.0)':
+ '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-annotate-as-pure': 7.27.3
- '@babel/helper-member-expression-to-functions': 7.27.1
+ '@babel/helper-member-expression-to-functions': 7.27.1(supports-color@8.1.1)
'@babel/helper-optimise-call-expression': 7.27.1
- '@babel/helper-replace-supers': 7.27.1(@babel/core@7.26.0)
- '@babel/helper-skip-transparent-expression-wrappers': 7.27.1
- '@babel/traverse': 7.27.3
+ '@babel/helper-replace-supers': 7.27.1(@babel/core@7.26.0)(supports-color@8.1.1)
+ '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@8.1.1)
+ '@babel/traverse': 7.27.3(supports-color@8.1.1)
semver: 6.3.1
transitivePeerDependencies:
- supports-color
'@babel/helper-create-regexp-features-plugin@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-annotate-as-pure': 7.25.9
regexpu-core: 6.1.1
semver: 6.3.1
- '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.26.0)':
+ '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-compilation-targets': 7.25.7
'@babel/helper-plugin-utils': 7.26.5
- debug: 4.3.7
+ debug: 4.4.1(supports-color@8.1.1)
lodash.debounce: 4.0.8
resolve: 1.22.8
transitivePeerDependencies:
- supports-color
- '@babel/helper-member-expression-to-functions@7.25.9':
+ '@babel/helper-member-expression-to-functions@7.25.9(supports-color@8.1.1)':
dependencies:
- '@babel/traverse': 7.26.5
+ '@babel/traverse': 7.26.5(supports-color@8.1.1)
'@babel/types': 7.26.5
transitivePeerDependencies:
- supports-color
- '@babel/helper-member-expression-to-functions@7.27.1':
+ '@babel/helper-member-expression-to-functions@7.27.1(supports-color@8.1.1)':
dependencies:
- '@babel/traverse': 7.27.3
+ '@babel/traverse': 7.27.3(supports-color@8.1.1)
'@babel/types': 7.27.3
transitivePeerDependencies:
- supports-color
- '@babel/helper-module-imports@7.25.9':
+ '@babel/helper-module-imports@7.25.9(supports-color@8.1.1)':
dependencies:
- '@babel/traverse': 7.26.5
+ '@babel/traverse': 7.26.5(supports-color@8.1.1)
'@babel/types': 7.26.5
transitivePeerDependencies:
- supports-color
- '@babel/helper-module-transforms@7.25.7(@babel/core@7.26.0)':
+ '@babel/helper-module-transforms@7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-module-imports': 7.25.9
- '@babel/helper-simple-access': 7.25.7
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-module-imports': 7.25.9(supports-color@8.1.1)
+ '@babel/helper-simple-access': 7.25.7(supports-color@8.1.1)
'@babel/helper-validator-identifier': 7.25.7
- '@babel/traverse': 7.26.5
+ '@babel/traverse': 7.26.5(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
- '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)':
+ '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-module-imports': 7.25.9
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-module-imports': 7.25.9(supports-color@8.1.1)
'@babel/helper-validator-identifier': 7.25.9
- '@babel/traverse': 7.26.5
+ '@babel/traverse': 7.26.5(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
@@ -9869,57 +10257,57 @@ snapshots:
'@babel/helper-plugin-utils@7.27.1': {}
- '@babel/helper-remap-async-to-generator@7.25.7(@babel/core@7.26.0)':
+ '@babel/helper-remap-async-to-generator@7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-annotate-as-pure': 7.25.9
- '@babel/helper-wrap-function': 7.25.7
- '@babel/traverse': 7.26.5
+ '@babel/helper-wrap-function': 7.25.7(supports-color@8.1.1)
+ '@babel/traverse': 7.26.5(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
- '@babel/helper-replace-supers@7.26.5(@babel/core@7.26.0)':
+ '@babel/helper-replace-supers@7.26.5(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-member-expression-to-functions': 7.25.9
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-member-expression-to-functions': 7.25.9(supports-color@8.1.1)
'@babel/helper-optimise-call-expression': 7.25.9
- '@babel/traverse': 7.26.5
+ '@babel/traverse': 7.26.5(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
- '@babel/helper-replace-supers@7.27.1(@babel/core@7.26.0)':
+ '@babel/helper-replace-supers@7.27.1(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-member-expression-to-functions': 7.27.1
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-member-expression-to-functions': 7.27.1(supports-color@8.1.1)
'@babel/helper-optimise-call-expression': 7.27.1
- '@babel/traverse': 7.27.3
+ '@babel/traverse': 7.27.3(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
- '@babel/helper-simple-access@7.25.7':
+ '@babel/helper-simple-access@7.25.7(supports-color@8.1.1)':
dependencies:
- '@babel/traverse': 7.26.5
+ '@babel/traverse': 7.26.5(supports-color@8.1.1)
'@babel/types': 7.26.5
transitivePeerDependencies:
- supports-color
'@babel/helper-skip-transparent-expression-wrappers@7.25.7':
dependencies:
- '@babel/traverse': 7.26.5
+ '@babel/traverse': 7.26.5(supports-color@8.1.1)
'@babel/types': 7.26.5
transitivePeerDependencies:
- supports-color
- '@babel/helper-skip-transparent-expression-wrappers@7.25.9':
+ '@babel/helper-skip-transparent-expression-wrappers@7.25.9(supports-color@8.1.1)':
dependencies:
- '@babel/traverse': 7.26.5
+ '@babel/traverse': 7.26.5(supports-color@8.1.1)
'@babel/types': 7.26.5
transitivePeerDependencies:
- supports-color
- '@babel/helper-skip-transparent-expression-wrappers@7.27.1':
+ '@babel/helper-skip-transparent-expression-wrappers@7.27.1(supports-color@8.1.1)':
dependencies:
- '@babel/traverse': 7.27.3
+ '@babel/traverse': 7.27.3(supports-color@8.1.1)
'@babel/types': 7.27.3
transitivePeerDependencies:
- supports-color
@@ -9940,10 +10328,10 @@ snapshots:
'@babel/helper-validator-option@7.25.9': {}
- '@babel/helper-wrap-function@7.25.7':
+ '@babel/helper-wrap-function@7.25.7(supports-color@8.1.1)':
dependencies:
'@babel/template': 7.25.9
- '@babel/traverse': 7.26.5
+ '@babel/traverse': 7.26.5(supports-color@8.1.1)
'@babel/types': 7.26.5
transitivePeerDependencies:
- supports-color
@@ -9965,53 +10353,53 @@ snapshots:
dependencies:
'@babel/types': 7.27.3
- '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.7(@babel/core@7.26.0)':
+ '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
- '@babel/traverse': 7.26.5
+ '@babel/traverse': 7.26.5(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
'@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
- '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.7(@babel/core@7.26.0)':
+ '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
- '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
- '@babel/plugin-transform-optional-chaining': 7.25.8(@babel/core@7.26.0)
+ '@babel/helper-skip-transparent-expression-wrappers': 7.25.9(supports-color@8.1.1)
+ '@babel/plugin-transform-optional-chaining': 7.25.8(@babel/core@7.26.0)(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
- '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.7(@babel/core@7.26.0)':
+ '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
- '@babel/traverse': 7.26.5
+ '@babel/traverse': 7.26.5(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
'@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
transitivePeerDependencies:
- supports-color
'@babel/plugin-proposal-decorators@7.25.9(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-syntax-decorators': 7.25.9(@babel/core@7.26.0)
transitivePeerDependencies:
@@ -10019,20 +10407,20 @@ snapshots:
'@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0)
'@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0)
'@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.26.0)':
dependencies:
'@babel/compat-data': 7.25.8
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-compilation-targets': 7.25.7
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0)
@@ -10040,13 +10428,13 @@ snapshots:
'@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0)
'@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/helper-skip-transparent-expression-wrappers': 7.25.7
'@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0)
@@ -10055,21 +10443,21 @@ snapshots:
'@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
transitivePeerDependencies:
- supports-color
'@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-annotate-as-pure': 7.25.7
- '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0)
transitivePeerDependencies:
@@ -10077,376 +10465,381 @@ snapshots:
'@babel/plugin-syntax-decorators@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-syntax-decorators@7.25.9(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
+ '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-plugin-utils': 7.27.1
+
'@babel/plugin-syntax-import-assertions@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-syntax-import-attributes@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-syntax-typescript@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.26.5
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-plugin-utils': 7.27.1
'@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.26.0)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-transform-arrow-functions@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
- '@babel/plugin-transform-async-generator-functions@7.25.8(@babel/core@7.26.0)':
+ '@babel/plugin-transform-async-generator-functions@7.25.8(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
- '@babel/helper-remap-async-to-generator': 7.25.7(@babel/core@7.26.0)
- '@babel/traverse': 7.26.5
+ '@babel/helper-remap-async-to-generator': 7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)
+ '@babel/traverse': 7.26.5(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-async-to-generator@7.25.7(@babel/core@7.26.0)':
+ '@babel/plugin-transform-async-to-generator@7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-module-imports': 7.25.9
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-module-imports': 7.25.9(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
- '@babel/helper-remap-async-to-generator': 7.25.7(@babel/core@7.26.0)
+ '@babel/helper-remap-async-to-generator': 7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
'@babel/plugin-transform-block-scoped-functions@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-transform-block-scoping@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
- '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.26.0)':
+ '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.26.0)
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.27.1
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-class-static-block@7.27.1(@babel/core@7.26.0)':
+ '@babel/plugin-transform-class-static-block@7.27.1(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.26.0)
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.27.1
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-classes@7.25.7(@babel/core@7.26.0)':
+ '@babel/plugin-transform-classes@7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-annotate-as-pure': 7.25.9
'@babel/helper-compilation-targets': 7.25.7
'@babel/helper-plugin-utils': 7.26.5
- '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.0)
- '@babel/traverse': 7.26.5
+ '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.0)(supports-color@8.1.1)
+ '@babel/traverse': 7.26.5(supports-color@8.1.1)
globals: 11.12.0
transitivePeerDependencies:
- supports-color
'@babel/plugin-transform-computed-properties@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/template': 7.25.7
'@babel/plugin-transform-destructuring@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-transform-dotall-regex@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.26.0)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-transform-duplicate-keys@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.26.0)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-transform-dynamic-import@7.25.8(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
- '@babel/plugin-transform-exponentiation-operator@7.25.7(@babel/core@7.26.0)':
+ '@babel/plugin-transform-exponentiation-operator@7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.7
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.7(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
transitivePeerDependencies:
- supports-color
'@babel/plugin-transform-export-namespace-from@7.25.8(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
- '@babel/plugin-transform-for-of@7.25.7(@babel/core@7.26.0)':
+ '@babel/plugin-transform-for-of@7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
- '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
+ '@babel/helper-skip-transparent-expression-wrappers': 7.25.9(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-function-name@7.25.7(@babel/core@7.26.0)':
+ '@babel/plugin-transform-function-name@7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-compilation-targets': 7.25.7
'@babel/helper-plugin-utils': 7.26.5
- '@babel/traverse': 7.26.5
+ '@babel/traverse': 7.26.5(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
'@babel/plugin-transform-json-strings@7.25.8(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-transform-literals@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-transform-logical-assignment-operators@7.25.8(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-transform-member-expression-literals@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
- '@babel/plugin-transform-modules-amd@7.25.7(@babel/core@7.26.0)':
+ '@babel/plugin-transform-modules-amd@7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-module-transforms': 7.25.7(@babel/core@7.26.0)
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-module-transforms': 7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.26.0)':
+ '@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-module-transforms': 7.25.7(@babel/core@7.26.0)
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-module-transforms': 7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
- '@babel/helper-simple-access': 7.25.7
+ '@babel/helper-simple-access': 7.25.7(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-modules-systemjs@7.25.7(@babel/core@7.26.0)':
+ '@babel/plugin-transform-modules-systemjs@7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-module-transforms': 7.25.7(@babel/core@7.26.0)
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-module-transforms': 7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/helper-validator-identifier': 7.25.7
- '@babel/traverse': 7.26.5
+ '@babel/traverse': 7.26.5(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-modules-umd@7.25.7(@babel/core@7.26.0)':
+ '@babel/plugin-transform-modules-umd@7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-module-transforms': 7.25.7(@babel/core@7.26.0)
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-module-transforms': 7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
transitivePeerDependencies:
- supports-color
'@babel/plugin-transform-named-capturing-groups-regex@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.26.0)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-transform-new-target@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-transform-nullish-coalescing-operator@7.25.8(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-transform-numeric-separator@7.25.8(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-transform-object-rest-spread@7.25.8(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-compilation-targets': 7.25.7
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.26.0)
- '@babel/plugin-transform-object-super@7.25.7(@babel/core@7.26.0)':
+ '@babel/plugin-transform-object-super@7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
- '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.0)
+ '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.0)(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
'@babel/plugin-transform-optional-catch-binding@7.25.8(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
- '@babel/plugin-transform-optional-chaining@7.25.8(@babel/core@7.26.0)':
+ '@babel/plugin-transform-optional-chaining@7.25.8(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
- '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
+ '@babel/helper-skip-transparent-expression-wrappers': 7.25.9(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
'@babel/plugin-transform-parameters@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
- '@babel/plugin-transform-private-methods@7.25.7(@babel/core@7.26.0)':
+ '@babel/plugin-transform-private-methods@7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-private-property-in-object@7.25.8(@babel/core@7.26.0)':
+ '@babel/plugin-transform-private-property-in-object@7.25.8(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-annotate-as-pure': 7.25.9
- '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
transitivePeerDependencies:
- supports-color
'@babel/plugin-transform-property-literals@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-transform-regenerator@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
regenerator-transform: 0.15.2
'@babel/plugin-transform-reserved-words@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-transform-runtime@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-module-imports': 7.25.9
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-module-imports': 7.25.9(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
- babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.0)
- babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0)
- babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.0)
+ babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.0)(supports-color@8.1.1)
+ babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0)(supports-color@8.1.1)
+ babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.0)(supports-color@8.1.1)
semver: 6.3.1
transitivePeerDependencies:
- supports-color
'@babel/plugin-transform-shorthand-properties@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
- '@babel/plugin-transform-spread@7.25.7(@babel/core@7.26.0)':
+ '@babel/plugin-transform-spread@7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
- '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
+ '@babel/helper-skip-transparent-expression-wrappers': 7.25.9(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
'@babel/plugin-transform-sticky-regex@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-transform-template-literals@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-transform-typeof-symbol@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-transform-typescript@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-annotate-as-pure': 7.25.7
- '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/helper-skip-transparent-expression-wrappers': 7.25.7
'@babel/plugin-syntax-typescript': 7.25.7(@babel/core@7.26.0)
@@ -10455,8 +10848,8 @@ snapshots:
'@babel/plugin-transform-typescript@7.5.5(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-syntax-typescript': 7.25.7(@babel/core@7.26.0)
transitivePeerDependencies:
@@ -10464,24 +10857,24 @@ snapshots:
'@babel/plugin-transform-unicode-escapes@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-transform-unicode-property-regex@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.26.0)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-transform-unicode-regex@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.26.0)
'@babel/helper-plugin-utils': 7.26.5
'@babel/plugin-transform-unicode-sets-regex@7.25.7(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.26.0)
'@babel/helper-plugin-utils': 7.26.5
@@ -10490,64 +10883,64 @@ snapshots:
core-js: 2.6.12
regenerator-runtime: 0.13.11
- '@babel/preset-env@7.25.8(@babel/core@7.26.0)':
+ '@babel/preset-env@7.25.8(@babel/core@7.26.0)(supports-color@8.1.1)':
dependencies:
'@babel/compat-data': 7.25.8
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-compilation-targets': 7.25.7
'@babel/helper-plugin-utils': 7.26.5
'@babel/helper-validator-option': 7.25.7
- '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.7(@babel/core@7.26.0)
+ '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.7(@babel/core@7.26.0)
'@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.7(@babel/core@7.26.0)
- '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.7(@babel/core@7.26.0)
- '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.7(@babel/core@7.26.0)
+ '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)
+ '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)
'@babel/plugin-syntax-import-assertions': 7.25.7(@babel/core@7.26.0)
'@babel/plugin-syntax-import-attributes': 7.25.7(@babel/core@7.26.0)
'@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.0)
'@babel/plugin-transform-arrow-functions': 7.25.7(@babel/core@7.26.0)
- '@babel/plugin-transform-async-generator-functions': 7.25.8(@babel/core@7.26.0)
- '@babel/plugin-transform-async-to-generator': 7.25.7(@babel/core@7.26.0)
+ '@babel/plugin-transform-async-generator-functions': 7.25.8(@babel/core@7.26.0)(supports-color@8.1.1)
+ '@babel/plugin-transform-async-to-generator': 7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/plugin-transform-block-scoped-functions': 7.25.7(@babel/core@7.26.0)
'@babel/plugin-transform-block-scoping': 7.25.7(@babel/core@7.26.0)
- '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.26.0)
- '@babel/plugin-transform-class-static-block': 7.27.1(@babel/core@7.26.0)
- '@babel/plugin-transform-classes': 7.25.7(@babel/core@7.26.0)
+ '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.26.0)(supports-color@8.1.1)
+ '@babel/plugin-transform-class-static-block': 7.27.1(@babel/core@7.26.0)(supports-color@8.1.1)
+ '@babel/plugin-transform-classes': 7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/plugin-transform-computed-properties': 7.25.7(@babel/core@7.26.0)
'@babel/plugin-transform-destructuring': 7.25.7(@babel/core@7.26.0)
'@babel/plugin-transform-dotall-regex': 7.25.7(@babel/core@7.26.0)
'@babel/plugin-transform-duplicate-keys': 7.25.7(@babel/core@7.26.0)
'@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.7(@babel/core@7.26.0)
'@babel/plugin-transform-dynamic-import': 7.25.8(@babel/core@7.26.0)
- '@babel/plugin-transform-exponentiation-operator': 7.25.7(@babel/core@7.26.0)
+ '@babel/plugin-transform-exponentiation-operator': 7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/plugin-transform-export-namespace-from': 7.25.8(@babel/core@7.26.0)
- '@babel/plugin-transform-for-of': 7.25.7(@babel/core@7.26.0)
- '@babel/plugin-transform-function-name': 7.25.7(@babel/core@7.26.0)
+ '@babel/plugin-transform-for-of': 7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)
+ '@babel/plugin-transform-function-name': 7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/plugin-transform-json-strings': 7.25.8(@babel/core@7.26.0)
'@babel/plugin-transform-literals': 7.25.7(@babel/core@7.26.0)
'@babel/plugin-transform-logical-assignment-operators': 7.25.8(@babel/core@7.26.0)
'@babel/plugin-transform-member-expression-literals': 7.25.7(@babel/core@7.26.0)
- '@babel/plugin-transform-modules-amd': 7.25.7(@babel/core@7.26.0)
- '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.26.0)
- '@babel/plugin-transform-modules-systemjs': 7.25.7(@babel/core@7.26.0)
- '@babel/plugin-transform-modules-umd': 7.25.7(@babel/core@7.26.0)
+ '@babel/plugin-transform-modules-amd': 7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)
+ '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)
+ '@babel/plugin-transform-modules-systemjs': 7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)
+ '@babel/plugin-transform-modules-umd': 7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/plugin-transform-named-capturing-groups-regex': 7.25.7(@babel/core@7.26.0)
'@babel/plugin-transform-new-target': 7.25.7(@babel/core@7.26.0)
'@babel/plugin-transform-nullish-coalescing-operator': 7.25.8(@babel/core@7.26.0)
'@babel/plugin-transform-numeric-separator': 7.25.8(@babel/core@7.26.0)
'@babel/plugin-transform-object-rest-spread': 7.25.8(@babel/core@7.26.0)
- '@babel/plugin-transform-object-super': 7.25.7(@babel/core@7.26.0)
+ '@babel/plugin-transform-object-super': 7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/plugin-transform-optional-catch-binding': 7.25.8(@babel/core@7.26.0)
- '@babel/plugin-transform-optional-chaining': 7.25.8(@babel/core@7.26.0)
+ '@babel/plugin-transform-optional-chaining': 7.25.8(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.26.0)
- '@babel/plugin-transform-private-methods': 7.25.7(@babel/core@7.26.0)
- '@babel/plugin-transform-private-property-in-object': 7.25.8(@babel/core@7.26.0)
+ '@babel/plugin-transform-private-methods': 7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)
+ '@babel/plugin-transform-private-property-in-object': 7.25.8(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/plugin-transform-property-literals': 7.25.7(@babel/core@7.26.0)
'@babel/plugin-transform-regenerator': 7.25.7(@babel/core@7.26.0)
'@babel/plugin-transform-reserved-words': 7.25.7(@babel/core@7.26.0)
'@babel/plugin-transform-shorthand-properties': 7.25.7(@babel/core@7.26.0)
- '@babel/plugin-transform-spread': 7.25.7(@babel/core@7.26.0)
+ '@babel/plugin-transform-spread': 7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/plugin-transform-sticky-regex': 7.25.7(@babel/core@7.26.0)
'@babel/plugin-transform-template-literals': 7.25.7(@babel/core@7.26.0)
'@babel/plugin-transform-typeof-symbol': 7.25.7(@babel/core@7.26.0)
@@ -10556,9 +10949,9 @@ snapshots:
'@babel/plugin-transform-unicode-regex': 7.25.7(@babel/core@7.26.0)
'@babel/plugin-transform-unicode-sets-regex': 7.25.7(@babel/core@7.26.0)
'@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.0)
- babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.0)
- babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0)
- babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.0)
+ babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.0)(supports-color@8.1.1)
+ babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0)(supports-color@8.1.1)
+ babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.0)(supports-color@8.1.1)
core-js-compat: 3.38.1
semver: 6.3.1
transitivePeerDependencies:
@@ -10566,7 +10959,7 @@ snapshots:
'@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.26.5
'@babel/types': 7.26.5
esutils: 2.0.3
@@ -10597,26 +10990,26 @@ snapshots:
'@babel/parser': 7.27.3
'@babel/types': 7.27.3
- '@babel/traverse@7.26.5':
+ '@babel/traverse@7.26.5(supports-color@8.1.1)':
dependencies:
'@babel/code-frame': 7.26.2
'@babel/generator': 7.26.5
'@babel/parser': 7.26.5
'@babel/template': 7.25.9
'@babel/types': 7.26.5
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
globals: 11.12.0
transitivePeerDependencies:
- supports-color
- '@babel/traverse@7.27.3':
+ '@babel/traverse@7.27.3(supports-color@8.1.1)':
dependencies:
'@babel/code-frame': 7.27.1
'@babel/generator': 7.27.3
'@babel/parser': 7.27.3
'@babel/template': 7.27.2
'@babel/types': 7.27.3
- debug: 4.3.7
+ debug: 4.4.1(supports-color@8.1.1)
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@@ -10645,6 +11038,20 @@ snapshots:
'@colors/colors@1.5.0':
optional: true
+ '@csstools/color-helpers@5.1.0': {}
+
+ '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)':
+ dependencies:
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+
+ '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)':
+ dependencies:
+ '@csstools/color-helpers': 5.1.0
+ '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+
'@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)':
dependencies:
'@csstools/css-tokenizer': 3.0.3
@@ -10722,7 +11129,7 @@ snapshots:
'@ember/render-modifiers@3.0.0(@glint/template@1.5.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1))':
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@embroider/macros': 1.16.9(@glint/template@1.5.1)
ember-cli-babel: 8.2.0(@babel/core@7.26.0)
ember-modifier-manager-polyfill: 1.2.0(@babel/core@7.26.0)
@@ -10772,6 +11179,107 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@embroider/babel-loader-9@3.1.2(@embroider/core@3.5.7(@glint/template@1.5.1))(supports-color@8.1.1)(webpack@5.97.1)':
+ dependencies:
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@embroider/core': 3.5.7(@glint/template@1.5.1)
+ babel-loader: 9.2.1(@babel/core@7.26.0)(webpack@5.97.1)
+ transitivePeerDependencies:
+ - supports-color
+ - webpack
+
+ '@embroider/compat@3.9.1(@embroider/core@3.5.7(@glint/template@1.5.1))(@glint/template@1.5.1)':
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/plugin-syntax-decorators': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0)
+ '@babel/plugin-syntax-typescript': 7.25.7(@babel/core@7.26.0)
+ '@babel/plugin-transform-runtime': 7.25.7(@babel/core@7.26.0)
+ '@babel/preset-env': 7.25.8(@babel/core@7.26.0)(supports-color@8.1.1)
+ '@babel/runtime': 7.25.7
+ '@babel/traverse': 7.27.3(supports-color@8.1.1)
+ '@embroider/core': 3.5.7(@glint/template@1.5.1)
+ '@embroider/macros': 1.16.9(@glint/template@1.5.1)
+ '@types/babel__code-frame': 7.0.6
+ '@types/yargs': 17.0.33
+ assert-never: 1.3.0
+ babel-import-util: 2.1.1
+ babel-plugin-ember-template-compilation: 2.3.0
+ babel-plugin-syntax-dynamic-import: 6.18.0
+ babylon: 6.18.0
+ bind-decorator: 1.0.11
+ broccoli: 3.5.2
+ broccoli-concat: 4.2.5
+ broccoli-file-creator: 2.1.1
+ broccoli-funnel: 3.0.8
+ broccoli-merge-trees: 4.2.0
+ broccoli-persistent-filter: 3.1.3
+ broccoli-plugin: 4.0.7
+ broccoli-source: 3.0.1
+ chalk: 4.1.2
+ debug: 4.4.1(supports-color@8.1.1)
+ escape-string-regexp: 4.0.0
+ fast-sourcemap-concat: 2.1.1
+ fs-extra: 9.1.0
+ fs-tree-diff: 2.0.1
+ jsdom: 25.0.1(supports-color@8.1.1)
+ lodash: 4.17.21
+ pkg-up: 3.1.0
+ resolve: 1.22.8
+ resolve-package-path: 4.0.3
+ semver: 7.6.3
+ symlink-or-copy: 1.3.1
+ tree-sync: 2.1.0
+ typescript-memoize: 1.1.1
+ walk-sync: 3.0.0
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - '@glint/template'
+ - bufferutil
+ - canvas
+ - supports-color
+ - utf-8-validate
+
+ '@embroider/core@3.5.7(@glint/template@1.5.1)':
+ dependencies:
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/parser': 7.27.3
+ '@babel/traverse': 7.27.3(supports-color@8.1.1)
+ '@embroider/macros': 1.16.9(@glint/template@1.5.1)
+ '@embroider/shared-internals': 2.9.1(supports-color@8.1.1)
+ assert-never: 1.3.0
+ babel-plugin-ember-template-compilation: 2.3.0
+ broccoli-node-api: 1.7.0
+ broccoli-persistent-filter: 3.1.3
+ broccoli-plugin: 4.0.7
+ broccoli-source: 3.0.1
+ debug: 4.4.1(supports-color@8.1.1)
+ fast-sourcemap-concat: 2.1.1
+ filesize: 10.1.6
+ fs-extra: 9.1.0
+ fs-tree-diff: 2.0.1
+ handlebars: 4.7.8
+ js-string-escape: 1.0.1
+ jsdom: 25.0.1(supports-color@8.1.1)
+ lodash: 4.17.21
+ resolve: 1.22.8
+ resolve-package-path: 4.0.3
+ semver: 7.6.3
+ typescript-memoize: 1.1.1
+ walk-sync: 3.0.0
+ transitivePeerDependencies:
+ - '@glint/template'
+ - bufferutil
+ - canvas
+ - supports-color
+ - utf-8-validate
+
+ '@embroider/hbs-loader@3.0.4(@embroider/core@3.5.7(@glint/template@1.5.1))(webpack@5.97.1)':
+ dependencies:
+ '@embroider/core': 3.5.7(@glint/template@1.5.1)
+ webpack: 5.97.1
+
'@embroider/macros@1.16.9(@glint/template@1.5.1)':
dependencies:
'@embroider/shared-internals': 2.8.1
@@ -10790,7 +11298,24 @@ snapshots:
'@embroider/shared-internals@2.8.1':
dependencies:
babel-import-util: 2.1.1
- debug: 4.3.7
+ debug: 4.4.1(supports-color@8.1.1)
+ ember-rfc176-data: 0.3.18
+ fs-extra: 9.1.0
+ is-subdir: 1.2.0
+ js-string-escape: 1.0.1
+ lodash: 4.17.21
+ minimatch: 3.1.2
+ pkg-entry-points: 1.1.0
+ resolve-package-path: 4.0.3
+ semver: 7.6.3
+ typescript-memoize: 1.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@embroider/shared-internals@2.9.1(supports-color@8.1.1)':
+ dependencies:
+ babel-import-util: 2.1.1
+ debug: 4.4.1(supports-color@8.1.1)
ember-rfc176-data: 0.3.18
fs-extra: 9.1.0
is-subdir: 1.2.0
@@ -10804,6 +11329,37 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@embroider/webpack@4.1.1(@embroider/core@3.5.7(@glint/template@1.5.1))(webpack@5.97.1)':
+ dependencies:
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/preset-env': 7.25.8(@babel/core@7.26.0)(supports-color@8.1.1)
+ '@embroider/babel-loader-9': 3.1.2(@embroider/core@3.5.7(@glint/template@1.5.1))(supports-color@8.1.1)(webpack@5.97.1)
+ '@embroider/core': 3.5.7(@glint/template@1.5.1)
+ '@embroider/hbs-loader': 3.0.4(@embroider/core@3.5.7(@glint/template@1.5.1))(webpack@5.97.1)
+ '@embroider/shared-internals': 2.9.1(supports-color@8.1.1)
+ '@types/supports-color': 8.1.3
+ assert-never: 1.3.0
+ babel-loader: 8.4.1(@babel/core@7.26.0)(webpack@5.97.1)
+ css-loader: 5.2.7(webpack@5.97.1)
+ csso: 4.2.0
+ debug: 4.4.1(supports-color@8.1.1)
+ escape-string-regexp: 4.0.0
+ fs-extra: 9.1.0
+ jsdom: 25.0.1(supports-color@8.1.1)
+ lodash: 4.17.21
+ mini-css-extract-plugin: 2.9.1(webpack@5.97.1)
+ semver: 7.6.3
+ source-map-url: 0.4.1
+ style-loader: 2.0.0(webpack@5.97.1)
+ supports-color: 8.1.1
+ terser: 5.34.1
+ thread-loader: 3.0.4(webpack@5.97.1)
+ webpack: 5.97.1
+ transitivePeerDependencies:
+ - bufferutil
+ - canvas
+ - utf-8-validate
+
'@eslint-community/eslint-utils@4.4.0(eslint@9.18.0)':
dependencies:
eslint: 9.18.0
@@ -10821,7 +11377,7 @@ snapshots:
'@eslint/config-array@0.19.1':
dependencies:
'@eslint/object-schema': 2.1.5
- debug: 4.3.7
+ debug: 4.4.1(supports-color@8.1.1)
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@@ -10833,7 +11389,7 @@ snapshots:
'@eslint/eslintrc@3.2.0':
dependencies:
ajv: 6.12.6
- debug: 4.3.7
+ debug: 4.4.1(supports-color@8.1.1)
espree: 10.3.0
globals: 14.0.0
ignore: 5.3.2
@@ -11410,8 +11966,8 @@ snapshots:
'@rollup/plugin-babel@6.0.4(@babel/core@7.26.0)(rollup@4.41.1)':
dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-module-imports': 7.25.9
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-module-imports': 7.25.9(supports-color@8.1.1)
'@rollup/pluginutils': 5.1.4(rollup@4.41.1)
optionalDependencies:
rollup: 4.41.1
@@ -11568,6 +12124,8 @@ snapshots:
dependencies:
'@types/estree': 1.0.6
+ '@types/babel__code-frame@7.0.6': {}
+
'@types/body-parser@1.19.5':
dependencies:
'@types/connect': 3.4.38
@@ -11741,10 +12299,18 @@ snapshots:
'@types/sizzle@2.3.8': {}
+ '@types/supports-color@8.1.3': {}
+
'@types/symlink-or-copy@1.2.2': {}
'@types/unist@2.0.11': {}
+ '@types/yargs-parser@21.0.3': {}
+
+ '@types/yargs@17.0.33':
+ dependencies:
+ '@types/yargs-parser': 21.0.3
+
'@typescript-eslint/eslint-plugin@8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0)(typescript@5.7.3)':
dependencies:
'@eslint-community/regexpp': 4.12.1
@@ -11768,7 +12334,7 @@ snapshots:
'@typescript-eslint/types': 8.21.0
'@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3)
'@typescript-eslint/visitor-keys': 8.21.0
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
eslint: 9.18.0
typescript: 5.7.3
transitivePeerDependencies:
@@ -11783,7 +12349,7 @@ snapshots:
dependencies:
'@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3)
'@typescript-eslint/utils': 8.21.0(eslint@9.18.0)(typescript@5.7.3)
- debug: 4.3.7
+ debug: 4.4.1(supports-color@8.1.1)
eslint: 9.18.0
ts-api-utils: 2.0.0(typescript@5.7.3)
typescript: 5.7.3
@@ -11796,7 +12362,7 @@ snapshots:
dependencies:
'@typescript-eslint/types': 8.21.0
'@typescript-eslint/visitor-keys': 8.21.0
- debug: 4.3.7
+ debug: 4.4.1(supports-color@8.1.1)
fast-glob: 3.3.3
is-glob: 4.0.3
minimatch: 9.0.5
@@ -11933,13 +12499,13 @@ snapshots:
agent-base@6.0.2:
dependencies:
- debug: 4.3.7
+ debug: 4.4.1(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
- agent-base@7.1.1:
+ agent-base@7.1.1(supports-color@8.1.1):
dependencies:
- debug: 4.3.7
+ debug: 4.4.1(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
@@ -12197,7 +12763,7 @@ snapshots:
async-disk-cache@2.1.0:
dependencies:
- debug: 4.3.7
+ debug: 4.4.1(supports-color@8.1.1)
heimdalljs: 0.2.6
istextorbinary: 2.6.0
mkdirp: 0.5.6
@@ -12318,13 +12884,20 @@ snapshots:
babel-loader@8.4.1(@babel/core@7.26.0)(webpack@5.97.1):
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
find-cache-dir: 3.3.2
loader-utils: 2.0.4
make-dir: 3.1.0
schema-utils: 2.7.1
webpack: 5.97.1
+ babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.97.1):
+ dependencies:
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ find-cache-dir: 4.0.0
+ schema-utils: 4.2.0
+ webpack: 5.97.1
+
babel-messages@6.23.0:
dependencies:
babel-runtime: 6.26.0
@@ -12335,12 +12908,12 @@ snapshots:
babel-plugin-debug-macros@0.2.0(@babel/core@7.26.0):
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
semver: 5.7.2
babel-plugin-debug-macros@0.3.4(@babel/core@7.26.0):
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
semver: 5.7.2
babel-plugin-ember-data-packages-polyfill@0.1.2:
@@ -12406,27 +12979,27 @@ snapshots:
reselect: 4.1.8
resolve: 1.22.8
- babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.26.0):
+ babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.26.0)(supports-color@8.1.1):
dependencies:
'@babel/compat-data': 7.25.8
- '@babel/core': 7.26.0
- '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0)
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0)(supports-color@8.1.1)
semver: 6.3.1
transitivePeerDependencies:
- supports-color
- babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.26.0):
+ babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.26.0)(supports-color@8.1.1):
dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0)
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0)(supports-color@8.1.1)
core-js-compat: 3.38.1
transitivePeerDependencies:
- supports-color
- babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.26.0):
+ babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.26.0)(supports-color@8.1.1):
dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0)
+ '@babel/core': 7.26.0(supports-color@8.1.1)
+ '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0)(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
@@ -12450,7 +13023,7 @@ snapshots:
babel-plugin-transform-commonjs@1.1.6(@babel/core@7.26.0):
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-plugin-utils': 7.25.7
babel-plugin-transform-es2015-modules-amd@6.24.1:
@@ -12483,7 +13056,7 @@ snapshots:
babel-remove-types@1.0.0:
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/plugin-syntax-decorators': 7.25.7(@babel/core@7.26.0)
'@babel/plugin-transform-typescript': 7.25.7(@babel/core@7.26.0)
prettier: 2.8.8
@@ -12596,6 +13169,8 @@ snapshots:
binaryextensions@2.3.0: {}
+ bind-decorator@1.0.11: {}
+
bindings@1.5.0:
dependencies:
file-uri-to-path: 1.0.0
@@ -12724,7 +13299,7 @@ snapshots:
broccoli-babel-transpiler@7.8.1:
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/polyfill': 7.12.1
broccoli-funnel: 2.0.2
broccoli-merge-trees: 3.0.2
@@ -12741,7 +13316,7 @@ snapshots:
broccoli-babel-transpiler@8.0.0(@babel/core@7.26.0):
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
broccoli-persistent-filter: 3.1.3
clone: 2.1.2
hash-for-dep: 1.5.1
@@ -12891,7 +13466,7 @@ snapshots:
dependencies:
array-equal: 1.0.2
broccoli-plugin: 4.0.7
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
fs-tree-diff: 2.0.1
heimdalljs: 0.2.6
minimatch: 3.1.2
@@ -13111,7 +13686,7 @@ snapshots:
broccoli-persistent-filter: 2.3.1
broccoli-plugin: 2.1.0
chalk: 2.4.2
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
ensure-posix-path: 1.1.1
fs-extra: 8.1.0
minimatch: 3.1.2
@@ -13152,7 +13727,7 @@ snapshots:
async-promise-queue: 1.0.5
broccoli-plugin: 4.0.7
convert-source-map: 2.0.0
- debug: 4.3.7
+ debug: 4.4.1(supports-color@8.1.1)
lodash.defaultsdeep: 4.6.1
matcher-collection: 2.0.1
symlink-or-copy: 1.3.1
@@ -13306,6 +13881,11 @@ snapshots:
dependencies:
json-stable-stringify: 1.1.1
+ call-bind-apply-helpers@1.0.2:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+
call-bind@1.0.7:
dependencies:
es-define-property: 1.0.0
@@ -13611,6 +14191,8 @@ snapshots:
common-ancestor-path@1.0.1: {}
+ common-path-prefix@3.0.0: {}
+
common-tags@1.8.2: {}
commondir@1.0.1: {}
@@ -13853,6 +14435,11 @@ snapshots:
mdn-data: 2.0.4
source-map: 0.5.7
+ css-tree@1.1.3:
+ dependencies:
+ mdn-data: 2.0.14
+ source-map: 0.6.1
+
css-tree@3.1.0:
dependencies:
mdn-data: 2.12.2
@@ -13868,6 +14455,15 @@ snapshots:
dependencies:
css-tree: 1.0.0-alpha.29
+ csso@4.2.0:
+ dependencies:
+ css-tree: 1.1.3
+
+ cssstyle@4.6.0:
+ dependencies:
+ '@asamuzakjp/css-color': 3.2.0
+ rrweb-cssom: 0.8.0
+
d@1.0.2:
dependencies:
es5-ext: 0.10.64
@@ -13883,6 +14479,11 @@ snapshots:
data-uri-to-buffer@6.0.2: {}
+ data-urls@5.0.0:
+ dependencies:
+ whatwg-mimetype: 4.0.0
+ whatwg-url: 14.2.0
+
data-view-buffer@1.0.1:
dependencies:
call-bind: 1.0.7
@@ -13915,16 +14516,22 @@ snapshots:
dependencies:
ms: 2.1.3
- debug@4.3.7:
+ debug@4.3.7(supports-color@8.1.1):
dependencies:
ms: 2.1.3
+ optionalDependencies:
+ supports-color: 8.1.1
- debug@4.4.1:
+ debug@4.4.1(supports-color@8.1.1):
dependencies:
ms: 2.1.3
+ optionalDependencies:
+ supports-color: 8.1.1
decamelize@1.2.0: {}
+ decimal.js@10.6.0: {}
+
decode-named-character-reference@1.0.2:
dependencies:
character-entities: 2.0.2
@@ -14129,6 +14736,12 @@ snapshots:
dependencies:
is-obj: 2.0.0
+ dunder-proto@1.0.1:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
duplexer3@0.1.5: {}
duplexify@3.7.1:
@@ -14163,12 +14776,12 @@ snapshots:
ember-auto-import@2.10.0(@glint/template@1.5.1)(webpack@5.97.1):
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0)
'@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.0)
'@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.26.0)
- '@babel/plugin-transform-class-static-block': 7.27.1(@babel/core@7.26.0)
- '@babel/preset-env': 7.25.8(@babel/core@7.26.0)
+ '@babel/plugin-transform-class-static-block': 7.27.1(@babel/core@7.26.0)(supports-color@8.1.1)
+ '@babel/preset-env': 7.25.8(@babel/core@7.26.0)(supports-color@8.1.1)
'@embroider/macros': 1.16.9(@glint/template@1.5.1)
'@embroider/shared-internals': 2.8.1
babel-loader: 8.4.1(@babel/core@7.26.0)(webpack@5.97.1)
@@ -14182,7 +14795,7 @@ snapshots:
broccoli-plugin: 4.0.7
broccoli-source: 3.0.1
css-loader: 5.2.7(webpack@5.97.1)
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
fs-extra: 10.1.0
fs-tree-diff: 2.0.1
handlebars: 4.7.8
@@ -14249,17 +14862,17 @@ snapshots:
ember-cli-babel@7.26.11:
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-compilation-targets': 7.25.7
'@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0)
'@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.0)
'@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.26.0)
'@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.26.0)
- '@babel/plugin-transform-modules-amd': 7.25.7(@babel/core@7.26.0)
+ '@babel/plugin-transform-modules-amd': 7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/plugin-transform-runtime': 7.25.7(@babel/core@7.26.0)
'@babel/plugin-transform-typescript': 7.25.7(@babel/core@7.26.0)
'@babel/polyfill': 7.12.1
- '@babel/preset-env': 7.25.8(@babel/core@7.26.0)
+ '@babel/preset-env': 7.25.8(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/runtime': 7.12.18
amd-name-resolver: 1.3.1
babel-plugin-debug-macros: 0.3.4(@babel/core@7.26.0)
@@ -14284,17 +14897,17 @@ snapshots:
ember-cli-babel@8.2.0(@babel/core@7.26.0):
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/helper-compilation-targets': 7.25.7
'@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0)
'@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.0)
'@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.26.0)
'@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.26.0)
- '@babel/plugin-transform-class-static-block': 7.27.1(@babel/core@7.26.0)
- '@babel/plugin-transform-modules-amd': 7.25.7(@babel/core@7.26.0)
+ '@babel/plugin-transform-class-static-block': 7.27.1(@babel/core@7.26.0)(supports-color@8.1.1)
+ '@babel/plugin-transform-modules-amd': 7.25.7(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/plugin-transform-runtime': 7.25.7(@babel/core@7.26.0)
'@babel/plugin-transform-typescript': 7.25.7(@babel/core@7.26.0)
- '@babel/preset-env': 7.25.8(@babel/core@7.26.0)
+ '@babel/preset-env': 7.25.8(@babel/core@7.26.0)(supports-color@8.1.1)
'@babel/runtime': 7.12.18
amd-name-resolver: 1.3.1
babel-plugin-debug-macros: 0.3.4(@babel/core@7.26.0)
@@ -14444,7 +15057,7 @@ snapshots:
ember-cli-preprocess-registry@5.0.1:
dependencies:
broccoli-funnel: 3.0.8
- debug: 4.3.7
+ debug: 4.4.1(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
@@ -14488,7 +15101,7 @@ snapshots:
dependencies:
'@babel/plugin-transform-typescript': 7.5.5(@babel/core@7.26.0)
ansi-to-html: 0.6.15
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
ember-cli-babel-plugin-helpers: 1.1.1
execa: 2.1.0
fs-extra: 8.1.0
@@ -14505,7 +15118,7 @@ snapshots:
dependencies:
ansi-to-html: 0.6.15
broccoli-stew: 3.0.0
- debug: 4.3.7
+ debug: 4.4.1(supports-color@8.1.1)
execa: 4.1.0
fs-extra: 9.1.0
resolve: 1.22.8
@@ -14520,7 +15133,7 @@ snapshots:
dependencies:
ansi-to-html: 0.6.15
broccoli-stew: 3.0.0
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
execa: 4.1.0
fs-extra: 9.1.0
resolve: 1.22.8
@@ -14739,7 +15352,7 @@ snapshots:
ember-eslint-parser@0.5.8(@babel/core@7.26.0)(@typescript-eslint/parser@8.21.0(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0):
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/eslint-parser': 7.26.5(@babel/core@7.26.0)(eslint@9.18.0)
'@glimmer/syntax': 0.92.3
content-tag: 2.0.2
@@ -14798,7 +15411,7 @@ snapshots:
ember-in-element-polyfill@1.0.1:
dependencies:
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
ember-cli-babel: 7.26.11
ember-cli-htmlbars: 5.7.2
ember-cli-version-checker: 5.1.2
@@ -14918,7 +15531,7 @@ snapshots:
ember-router-generator@2.0.0:
dependencies:
'@babel/parser': 7.26.5
- '@babel/traverse': 7.26.5
+ '@babel/traverse': 7.26.5(supports-color@8.1.1)
recast: 0.18.10
transitivePeerDependencies:
- supports-color
@@ -14977,7 +15590,7 @@ snapshots:
ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1):
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@ember/edition-utils': 1.2.0
'@glimmer/compiler': 0.92.4
'@glimmer/component': 1.1.2(@babel/core@7.26.0)
@@ -15048,7 +15661,7 @@ snapshots:
ember-table@5.0.6(@ember/test-helpers@4.0.4(@babel/core@7.26.0)(@glint/template@1.5.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.26.0))(@glint/template@1.5.1)(rsvp@4.8.5)(webpack@5.97.1)))(@glint/template@1.5.1)(webpack@5.97.1):
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.0)
'@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.26.0)
'@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.26.0)
@@ -15161,7 +15774,7 @@ snapshots:
chalk: 4.1.2
cli-table3: 0.6.5
core-object: 3.1.5
- debug: 4.3.7
+ debug: 4.4.1(supports-color@8.1.1)
ember-try-config: 4.0.0(encoding@0.1.13)
execa: 4.1.0
fs-extra: 6.0.1
@@ -15177,7 +15790,7 @@ snapshots:
dependencies:
chalk: 4.1.2
cli-table3: 0.6.5
- debug: 4.4.1
+ debug: 4.4.1(supports-color@8.1.1)
ember-try-config: 4.0.0(encoding@0.1.13)
es-toolkit: 1.39.5
execa: 4.1.0
@@ -15241,7 +15854,7 @@ snapshots:
base64id: 2.0.0
cookie: 0.7.2
cors: 2.8.5
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
engine.io-parser: 5.2.3
ws: 8.17.1
transitivePeerDependencies:
@@ -15331,6 +15944,8 @@ snapshots:
dependencies:
get-intrinsic: 1.2.4
+ es-define-property@1.0.1: {}
+
es-errors@1.3.0: {}
es-get-iterator@1.1.3:
@@ -15351,12 +15966,23 @@ snapshots:
dependencies:
es-errors: 1.3.0
+ es-object-atoms@1.1.1:
+ dependencies:
+ es-errors: 1.3.0
+
es-set-tostringtag@2.0.3:
dependencies:
get-intrinsic: 1.2.4
has-tostringtag: 1.0.2
hasown: 2.0.2
+ es-set-tostringtag@2.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ has-tostringtag: 1.0.2
+ hasown: 2.0.2
+
es-to-primitive@1.2.1:
dependencies:
is-callable: 1.2.7
@@ -15519,7 +16145,7 @@ snapshots:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.6
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
escape-string-regexp: 4.0.0
eslint-scope: 8.2.0
eslint-visitor-keys: 4.2.0
@@ -15928,6 +16554,11 @@ snapshots:
make-dir: 3.1.0
pkg-dir: 4.2.0
+ find-cache-dir@4.0.0:
+ dependencies:
+ common-path-prefix: 3.0.0
+ pkg-dir: 7.0.0
+
find-index@1.1.1: {}
find-up@1.1.2:
@@ -15953,6 +16584,11 @@ snapshots:
locate-path: 6.0.0
path-exists: 4.0.0
+ find-up@6.3.0:
+ dependencies:
+ locate-path: 7.2.0
+ path-exists: 5.0.0
+
find-up@7.0.0:
dependencies:
locate-path: 7.2.0
@@ -16083,6 +16719,14 @@ snapshots:
combined-stream: 1.0.8
mime-types: 2.1.35
+ form-data@4.0.4:
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ es-set-tostringtag: 2.1.0
+ hasown: 2.0.2
+ mime-types: 2.1.35
+
formdata-polyfill@4.0.10:
dependencies:
fetch-blob: 3.2.0
@@ -16257,8 +16901,26 @@ snapshots:
has-symbols: 1.0.3
hasown: 2.0.2
+ get-intrinsic@1.3.0:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ function-bind: 1.1.2
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.2
+ math-intrinsics: 1.1.0
+
get-package-type@0.1.0: {}
+ get-proto@1.0.1:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-object-atoms: 1.1.1
+
get-stdin@4.0.1: {}
get-stdin@9.0.0: {}
@@ -16292,7 +16954,7 @@ snapshots:
dependencies:
basic-ftp: 5.0.5
data-uri-to-buffer: 6.0.2
- debug: 4.3.7
+ debug: 4.4.1(supports-color@8.1.1)
fs-extra: 11.2.0
transitivePeerDependencies:
- supports-color
@@ -16515,6 +17177,8 @@ snapshots:
dependencies:
get-intrinsic: 1.2.4
+ gopd@1.2.0: {}
+
got@11.8.6:
dependencies:
'@sindresorhus/is': 4.6.0
@@ -16655,6 +17319,8 @@ snapshots:
has-symbols@1.0.3: {}
+ has-symbols@1.1.0: {}
+
has-tostringtag@1.0.2:
dependencies:
has-symbols: 1.0.3
@@ -16743,6 +17409,10 @@ snapshots:
dependencies:
lru-cache: 10.4.3
+ html-encoding-sniffer@4.0.0:
+ dependencies:
+ whatwg-encoding: 3.1.1
+
html-escaper@2.0.2: {}
html-tags@3.3.1: {}
@@ -16777,14 +17447,14 @@ snapshots:
dependencies:
'@tootallnate/once': 1.1.2
agent-base: 6.0.2
- debug: 4.3.7
+ debug: 4.4.1(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
- http-proxy-agent@7.0.2:
+ http-proxy-agent@7.0.2(supports-color@8.1.1):
dependencies:
- agent-base: 7.1.1
- debug: 4.3.7
+ agent-base: 7.1.1(supports-color@8.1.1)
+ debug: 4.4.1(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
@@ -16815,14 +17485,14 @@ snapshots:
https-proxy-agent@5.0.1:
dependencies:
agent-base: 6.0.2
- debug: 4.3.7
+ debug: 4.4.1(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
- https-proxy-agent@7.0.5:
+ https-proxy-agent@7.0.5(supports-color@8.1.1):
dependencies:
- agent-base: 7.1.1
- debug: 4.3.7
+ agent-base: 7.1.1(supports-color@8.1.1)
+ debug: 4.4.1(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
@@ -17147,6 +17817,8 @@ snapshots:
is-plain-object@5.0.0: {}
+ is-potential-custom-element-name@1.0.1: {}
+
is-reference@1.2.1:
dependencies:
'@types/estree': 1.0.6
@@ -17258,7 +17930,7 @@ snapshots:
istanbul-lib-instrument@5.2.1:
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/parser': 7.25.8
'@istanbuljs/schema': 0.1.3
istanbul-lib-coverage: 3.2.2
@@ -17337,6 +18009,34 @@ snapshots:
jsbn@1.1.0: {}
+ jsdom@25.0.1(supports-color@8.1.1):
+ dependencies:
+ cssstyle: 4.6.0
+ data-urls: 5.0.0
+ decimal.js: 10.6.0
+ form-data: 4.0.4
+ html-encoding-sniffer: 4.0.0
+ http-proxy-agent: 7.0.2(supports-color@8.1.1)
+ https-proxy-agent: 7.0.5(supports-color@8.1.1)
+ is-potential-custom-element-name: 1.0.1
+ nwsapi: 2.2.22
+ parse5: 7.1.2
+ rrweb-cssom: 0.7.1
+ saxes: 6.0.0
+ symbol-tree: 3.2.4
+ tough-cookie: 5.1.2
+ w3c-xmlserializer: 5.0.0
+ webidl-conversions: 7.0.0
+ whatwg-encoding: 3.1.1
+ whatwg-mimetype: 4.0.0
+ whatwg-url: 14.2.0
+ ws: 8.18.3
+ xml-name-validator: 5.0.0
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
jsesc@0.5.0: {}
jsesc@3.0.2: {}
@@ -17345,6 +18045,8 @@ snapshots:
json-buffer@3.0.1: {}
+ json-parse-better-errors@1.0.2: {}
+
json-parse-even-better-errors@2.3.1: {}
json-parse-even-better-errors@4.0.0: {}
@@ -17771,6 +18473,8 @@ snapshots:
'@types/minimatch': 3.0.5
minimatch: 3.1.2
+ math-intrinsics@1.1.0: {}
+
mathml-tag-names@2.1.3: {}
mdast-util-from-markdown@1.3.1:
@@ -17796,6 +18500,8 @@ snapshots:
mdn-data@1.1.4: {}
+ mdn-data@2.0.14: {}
+
mdn-data@2.0.4: {}
mdn-data@2.12.2: {}
@@ -17947,7 +18653,7 @@ snapshots:
micromark@3.2.0:
dependencies:
'@types/debug': 4.1.12
- debug: 4.3.7
+ debug: 4.4.1(supports-color@8.1.1)
decode-named-character-reference: 1.0.2
micromark-core-commonmark: 1.1.0
micromark-factory-space: 1.1.0
@@ -18312,6 +19018,8 @@ snapshots:
number-is-nan@1.0.1: {}
+ nwsapi@2.2.22: {}
+
oauth-sign@0.9.0: {}
object-assign@4.1.1: {}
@@ -18555,11 +19263,11 @@ snapshots:
pac-proxy-agent@6.0.4:
dependencies:
- agent-base: 7.1.1
- debug: 4.3.7
+ agent-base: 7.1.1(supports-color@8.1.1)
+ debug: 4.4.1(supports-color@8.1.1)
get-uri: 6.0.3
- http-proxy-agent: 7.0.2
- https-proxy-agent: 7.0.5
+ http-proxy-agent: 7.0.2(supports-color@8.1.1)
+ https-proxy-agent: 7.0.5(supports-color@8.1.1)
pac-resolver: 6.0.2
socks-proxy-agent: 8.0.4
transitivePeerDependencies:
@@ -18740,6 +19448,10 @@ snapshots:
dependencies:
find-up: 4.1.0
+ pkg-dir@7.0.0:
+ dependencies:
+ find-up: 6.3.0
+
pkg-entry-points@1.1.0: {}
pkg-up@2.0.0:
@@ -18843,7 +19555,7 @@ snapshots:
prettier-plugin-ember-template-tag@2.0.4(prettier@3.4.2):
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
content-tag: 2.0.2
prettier: 3.4.2
transitivePeerDependencies:
@@ -18914,10 +19626,10 @@ snapshots:
proxy-agent@6.2.1:
dependencies:
- agent-base: 7.1.1
- debug: 4.3.7
- http-proxy-agent: 7.0.2
- https-proxy-agent: 7.0.5
+ agent-base: 7.1.1(supports-color@8.1.1)
+ debug: 4.4.1(supports-color@8.1.1)
+ http-proxy-agent: 7.0.2(supports-color@8.1.1)
+ https-proxy-agent: 7.0.5(supports-color@8.1.1)
lru-cache: 7.18.3
pac-proxy-agent: 6.0.4
proxy-from-env: 1.1.0
@@ -19258,7 +19970,7 @@ snapshots:
remove-types@1.0.0:
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
'@babel/plugin-syntax-decorators': 7.25.9(@babel/core@7.26.0)
'@babel/plugin-transform-typescript': 7.25.7(@babel/core@7.26.0)
prettier: 2.8.8
@@ -19487,6 +20199,10 @@ snapshots:
route-recognizer: 0.3.4
rsvp: 4.8.5
+ rrweb-cssom@0.7.1: {}
+
+ rrweb-cssom@0.8.0: {}
+
rsvp@3.2.1: {}
rsvp@3.6.2: {}
@@ -19578,6 +20294,10 @@ snapshots:
sax@1.2.4: {}
+ saxes@6.0.0:
+ dependencies:
+ xmlchars: 2.2.0
+
schema-utils@2.7.1:
dependencies:
'@types/json-schema': 7.0.15
@@ -19779,7 +20499,7 @@ snapshots:
socket.io-adapter@2.5.5:
dependencies:
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
ws: 8.17.1
transitivePeerDependencies:
- bufferutil
@@ -19789,7 +20509,7 @@ snapshots:
socket.io-parser@4.2.4:
dependencies:
'@socket.io/component-emitter': 3.1.2
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
@@ -19798,7 +20518,7 @@ snapshots:
accepts: 1.3.8
base64id: 2.0.0
cors: 2.8.5
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
engine.io: 6.6.2
socket.io-adapter: 2.5.5
socket.io-parser: 4.2.4
@@ -19810,15 +20530,15 @@ snapshots:
socks-proxy-agent@6.2.1:
dependencies:
agent-base: 6.0.2
- debug: 4.3.7
+ debug: 4.4.1(supports-color@8.1.1)
socks: 2.8.3
transitivePeerDependencies:
- supports-color
socks-proxy-agent@8.0.4:
dependencies:
- agent-base: 7.1.1
- debug: 4.3.7
+ agent-base: 7.1.1(supports-color@8.1.1)
+ debug: 4.4.1(supports-color@8.1.1)
socks: 2.8.3
transitivePeerDependencies:
- supports-color
@@ -19926,7 +20646,7 @@ snapshots:
stagehand@1.0.1:
dependencies:
- debug: 4.3.7
+ debug: 4.4.1(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
@@ -20132,7 +20852,7 @@ snapshots:
cosmiconfig: 9.0.0(typescript@5.7.3)
css-functions-list: 3.2.3
css-tree: 3.1.0
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
fast-glob: 3.3.3
fastest-levenshtein: 1.0.16
file-entry-cache: 10.0.5
@@ -20208,6 +20928,8 @@ snapshots:
unquote: 1.1.1
util.promisify: 1.0.1
+ symbol-tree@3.2.4: {}
+
symlink-or-copy@1.3.1: {}
sync-disk-cache@1.3.4:
@@ -20222,7 +20944,7 @@ snapshots:
sync-disk-cache@2.1.0:
dependencies:
- debug: 4.3.7
+ debug: 4.4.1(supports-color@8.1.1)
heimdalljs: 0.2.6
mkdirp: 0.5.6
rimraf: 3.0.2
@@ -20383,6 +21105,15 @@ snapshots:
dependencies:
any-promise: 1.3.0
+ thread-loader@3.0.4(webpack@5.97.1):
+ dependencies:
+ json-parse-better-errors: 1.0.2
+ loader-runner: 4.3.0
+ loader-utils: 2.0.4
+ neo-async: 2.6.2
+ schema-utils: 3.3.0
+ webpack: 5.97.1
+
through2-filter@3.0.0:
dependencies:
through2: 2.0.5
@@ -20422,6 +21153,12 @@ snapshots:
titleize@3.0.0: {}
+ tldts-core@6.1.86: {}
+
+ tldts@6.1.86:
+ dependencies:
+ tldts-core: 6.1.86
+
tmp@0.0.28:
dependencies:
os-tmpdir: 1.0.2
@@ -20480,8 +21217,16 @@ snapshots:
psl: 1.9.0
punycode: 2.3.1
+ tough-cookie@5.1.2:
+ dependencies:
+ tldts: 6.1.86
+
tr46@0.0.3: {}
+ tr46@5.1.1:
+ dependencies:
+ punycode: 2.3.1
+
tracked-built-ins@3.4.0(@babel/core@7.26.0):
dependencies:
'@embroider/addon-shim': 1.8.9
@@ -20515,7 +21260,7 @@ snapshots:
tree-sync@2.1.0:
dependencies:
- debug: 4.3.7
+ debug: 4.4.1(supports-color@8.1.1)
fs-tree-diff: 2.0.1
mkdirp: 0.5.6
quick-temp: 0.1.8
@@ -20872,6 +21617,10 @@ snapshots:
acorn: 8.12.1
acorn-walk: 8.3.4
+ w3c-xmlserializer@5.0.0:
+ dependencies:
+ xml-name-validator: 5.0.0
+
walk-sync@0.2.7:
dependencies:
ensure-posix-path: 1.1.1
@@ -20927,6 +21676,8 @@ snapshots:
webidl-conversions@3.0.1: {}
+ webidl-conversions@7.0.0: {}
+
webpack-sources@3.2.3: {}
webpack@5.97.1:
@@ -20975,6 +21726,11 @@ snapshots:
whatwg-mimetype@4.0.0: {}
+ whatwg-url@14.2.0:
+ dependencies:
+ tr46: 5.1.1
+ webidl-conversions: 7.0.0
+
whatwg-url@5.0.0:
dependencies:
tr46: 0.0.3
@@ -21040,7 +21796,7 @@ snapshots:
workerpool@3.1.2:
dependencies:
- '@babel/core': 7.26.0
+ '@babel/core': 7.26.0(supports-color@8.1.1)
object-assign: 4.1.1
rsvp: 4.8.5
transitivePeerDependencies:
@@ -21093,10 +21849,16 @@ snapshots:
ws@8.17.1: {}
+ ws@8.18.3: {}
+
xdg-basedir@4.0.0: {}
xdg-basedir@5.1.0: {}
+ xml-name-validator@5.0.0: {}
+
+ xmlchars@2.2.0: {}
+
xtend@4.0.2: {}
y18n@3.2.2: {}