From 12087bcc9ff49893bb204888d53f60ae38fa8526 Mon Sep 17 00:00:00 2001 From: Markus Sanin Date: Sun, 16 Nov 2025 07:41:17 +0100 Subject: [PATCH 1/6] Move docs to vite (run npx ember-vite-codemod@latest) --- docs/.gitignore | 2 + docs/app/app.ts | 8 +- docs/app/config/environment.d.ts | 14 - docs/app/config/environment.ts | 33 ++ docs/babel.config.cjs | 50 +++ docs/ember-cli-build.js | 10 +- docs/eslint.config.mjs | 9 - docs/{app => }/index.html | 13 +- docs/package.json | 34 +- docs/testem.js | 42 +- docs/tests/index.html | 21 +- docs/tests/test-helper.ts | 14 +- docs/tsconfig.json | 2 +- docs/vite.config.mjs | 15 + pnpm-lock.yaml | 667 +++++++++++++++++++++++++++++-- 15 files changed, 820 insertions(+), 114 deletions(-) delete mode 100644 docs/app/config/environment.d.ts create mode 100644 docs/app/config/environment.ts create mode 100644 docs/babel.config.cjs rename docs/{app => }/index.html (78%) create mode 100644 docs/vite.config.mjs diff --git a/docs/.gitignore b/docs/.gitignore index f0dde6db..812161fb 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -1,3 +1,5 @@ +/tmp/ + # compiled output /dist/ /declarations/ diff --git a/docs/app/app.ts b/docs/app/app.ts index fde5a802..1704a816 100644 --- a/docs/app/app.ts +++ b/docs/app/app.ts @@ -1,9 +1,11 @@ import Application from '@ember/application'; import Resolver from 'ember-resolver'; import loadInitializers from 'ember-load-initializers'; -import config from 'docs/config/environment'; +import config from './config/environment'; import { importSync, isDevelopingApp, macroCondition } from '@embroider/macros'; +import compatModules from '@embroider/virtual/compat-modules'; + if (macroCondition(isDevelopingApp())) { importSync('./deprecation-workflow'); } @@ -11,7 +13,7 @@ if (macroCondition(isDevelopingApp())) { export default class App extends Application { modulePrefix = config.modulePrefix; podModulePrefix = config.podModulePrefix; - Resolver = Resolver; + Resolver = Resolver.withModules(compatModules); } -loadInitializers(App, config.modulePrefix); +loadInitializers(App, config.modulePrefix, compatModules); diff --git a/docs/app/config/environment.d.ts b/docs/app/config/environment.d.ts deleted file mode 100644 index a58802a8..00000000 --- a/docs/app/config/environment.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Type declarations for - * import config from 'docs/config/environment' - */ -declare const config: { - environment: string; - modulePrefix: string; - podModulePrefix: string; - locationType: 'history' | 'hash' | 'none'; - rootURL: string; - APP: Record; -}; - -export default config; diff --git a/docs/app/config/environment.ts b/docs/app/config/environment.ts new file mode 100644 index 00000000..ca8d66bb --- /dev/null +++ b/docs/app/config/environment.ts @@ -0,0 +1,33 @@ +import loadConfigFromMeta from '@embroider/config-meta-loader'; +import { assert } from '@ember/debug'; + +const config = loadConfigFromMeta('docs') as unknown; + +assert( + 'config is not an object', + typeof config === 'object' && config !== null, +); +assert( + 'modulePrefix was not detected on your config', + 'modulePrefix' in config && typeof config.modulePrefix === 'string', +); +assert( + 'locationType was not detected on your config', + 'locationType' in config && typeof config.locationType === 'string', +); +assert( + 'rootURL was not detected on your config', + 'rootURL' in config && typeof config.rootURL === 'string', +); +assert( + 'APP was not detected on your config', + 'APP' in config && typeof config.APP === 'object', +); + +export default config as { + modulePrefix: string; + podModulePrefix?: string; + locationType: string; + rootURL: string; + APP: Record; +} & Record; diff --git a/docs/babel.config.cjs b/docs/babel.config.cjs new file mode 100644 index 00000000..95729872 --- /dev/null +++ b/docs/babel.config.cjs @@ -0,0 +1,50 @@ +const { + babelCompatSupport, + templateCompatSupport, +} = require('@embroider/compat/babel'); + +module.exports = { + plugins: [ + [ + '@babel/plugin-transform-typescript', + { + allExtensions: true, + onlyRemoveTypeImports: true, + allowDeclareFields: true, + }, + ], + [ + 'babel-plugin-ember-template-compilation', + { + compilerPath: 'ember-source/dist/ember-template-compiler.js', + enableLegacyModules: [ + 'ember-cli-htmlbars', + 'ember-cli-htmlbars-inline-precompile', + 'htmlbars-inline-precompile', + ], + transforms: [...templateCompatSupport()], + }, + ], + [ + 'module:decorator-transforms', + { + runtime: { + import: require.resolve('decorator-transforms/runtime-esm'), + }, + }, + ], + [ + '@babel/plugin-transform-runtime', + { + absoluteRuntime: __dirname, + useESModules: true, + regenerator: false, + }, + ], + ...babelCompatSupport(), + ], + + generatorOpts: { + compact: false, + }, +}; diff --git a/docs/ember-cli-build.js b/docs/ember-cli-build.js index 14ce9f9a..39d4b291 100644 --- a/docs/ember-cli-build.js +++ b/docs/ember-cli-build.js @@ -1,8 +1,11 @@ 'use strict'; - const EmberApp = require('ember-cli/lib/broccoli/ember-app'); -module.exports = function (defaults) { +const { compatBuild } = require('@embroider/compat'); + +module.exports = async function (defaults) { + const { buildOnce } = await import('@embroider/vite'); + const app = new EmberApp(defaults, { 'ember-cli-babel': { enableTypeScriptTransform: true }, snippetPaths: ['app/components/snippets'], @@ -16,6 +19,5 @@ module.exports = function (defaults) { }, }); - const { maybeEmbroider } = require('@embroider/test-setup'); - return maybeEmbroider(app); + return compatBuild(app, buildOnce); }; diff --git a/docs/eslint.config.mjs b/docs/eslint.config.mjs index 19ae44b2..7864d0b8 100644 --- a/docs/eslint.config.mjs +++ b/docs/eslint.config.mjs @@ -30,15 +30,6 @@ const parserOptions = { js: { ecmaFeatures: { modules: true }, ecmaVersion: 'latest', - requireConfigFile: false, - babelOptions: { - plugins: [ - [ - '@babel/plugin-proposal-decorators', - { decoratorsBeforeExport: true }, - ], - ], - }, }, ts: { projectService: true, diff --git a/docs/app/index.html b/docs/index.html similarity index 78% rename from docs/app/index.html rename to docs/index.html index 5d04c2a0..a930e776 100644 --- a/docs/app/index.html +++ b/docs/index.html @@ -8,8 +8,8 @@ {{content-for "head"}} - - + + - + + {{content-for "body-footer"}} diff --git a/docs/package.json b/docs/package.json index 13dc5add..a93df69b 100644 --- a/docs/package.json +++ b/docs/package.json @@ -11,7 +11,7 @@ "test": "tests" }, "scripts": { - "build": "ember build --environment=production", + "build": "vite build", "format": "prettier . --cache --write", "lint": "concurrently \"npm:lint:*(!fix)\" --names \"lint:\" --prefixColors auto", "lint:css": "stylelint \"**/*.css\" --allow-empty-input", @@ -23,9 +23,9 @@ "lint:js": "eslint . --cache", "lint:js:fix": "eslint . --fix", "lint:types": "glint", - "start": "ember serve", + "start": "vite", "test": "concurrently \"npm:lint\" \"npm:test:*\" --names \"lint,test:\" --prefixColors auto", - "test:ember": "ember test" + "test:ember": "vite build --mode development && ember test --path dist" }, "dependenciesMeta": { "ember-basic-dropdown": { @@ -36,11 +36,17 @@ "@babel/core": "^7.28.5", "@babel/eslint-parser": "^7.28.5", "@babel/plugin-proposal-decorators": "^7.28.0", + "@babel/plugin-transform-runtime": "^7.26.9", + "@babel/plugin-transform-typescript": "^7.28.0", "@ember/optional-features": "^2.2.0", "@ember/string": "^4.0.1", "@ember/test-helpers": "^5.4.1", + "@embroider/compat": "^4.0.3", + "@embroider/config-meta-loader": "^1.0.0", + "@embroider/core": "^4.0.3", "@embroider/macros": "^1.19.4", "@embroider/test-setup": "^4.0.0", + "@embroider/vite": "^1.1.1", "@eslint/js": "^9.39.1", "@glimmer/component": "^2.0.0", "@glimmer/tracking": "^1.1.2", @@ -48,23 +54,19 @@ "@glint/environment-ember-loose": "^1.5.2", "@glint/environment-ember-template-imports": "^1.5.2", "@glint/template": "1.5.2", + "@rollup/plugin-babel": "^6.0.4", "@tsconfig/ember": "^3.0.12", "@types/qunit": "^2.19.13", "@types/rsvp": "^4.0.9", - "broccoli-asset-rev": "^3.0.0", + "babel-plugin-ember-template-compilation": "^2.3.0", "concurrently": "^9.2.1", + "decorator-transforms": "^2.3.0", "ember-auto-import": "^2.11.2", "ember-cli": "~6.7.0", - "ember-cli-app-version": "^7.0.0", "ember-cli-babel": "^8.2.0", - "ember-cli-clean-css": "^3.0.0", - "ember-cli-dependency-checker": "^3.3.3", "ember-cli-deprecation-workflow": "^3.4.0", "ember-cli-htmlbars": "^6.3.0", - "ember-cli-inject-live-reload": "^2.1.0", "ember-cli-sass": "^11.0.1", - "ember-cli-sri": "^2.1.1", - "ember-cli-terser": "^4.0.2", "ember-code-snippet": "git://github.com/ef4/ember-code-snippet.git#d054b697098ad52481c94a952ccf8d89ba1f25fe", "ember-concurrency": "^5.1.0", "ember-load-initializers": "^3.0.1", @@ -74,7 +76,6 @@ "ember-resolver": "^13.1.1", "ember-source": "~6.7.0", "ember-source-channel-url": "^3.0.0", - "ember-template-imports": "^4.3.0", "ember-template-lint": "^7.9.3", "ember-truth-helpers": "^5.0.0", "eslint": "^9.39.1", @@ -83,7 +84,6 @@ "eslint-plugin-n": "^17.23.1", "eslint-plugin-qunit": "^8.2.5", "globals": "^16.5.0", - "loader.js": "^4.7.0", "prettier": "^3.6.2", "prettier-plugin-ember-template-tag": "^2.1.0", "qunit": "^2.24.2", @@ -96,7 +96,7 @@ "tracked-built-ins": "^4.0.0", "typescript": "^5.9.3", "typescript-eslint": "^8.46.4", - "webpack": "^5.102.1" + "vite": "^6.0.0" }, "engines": { "node": ">= 20.11" @@ -106,5 +106,13 @@ }, "dependencies": { "ember-basic-dropdown": "workspace:*" + }, + "ember-addon": { + "type": "app", + "version": 2 + }, + "exports": { + "./tests/*": "./tests/*", + "./*": "./app/*" } } diff --git a/docs/testem.js b/docs/testem.js index ed2f3712..b4b6691f 100644 --- a/docs/testem.js +++ b/docs/testem.js @@ -1,23 +1,25 @@ '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), +if (typeof module !== 'undefined') { + 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/docs/tests/index.html b/docs/tests/index.html index a5c5bfd9..72b61ce8 100644 --- a/docs/tests/index.html +++ b/docs/tests/index.html @@ -9,9 +9,9 @@ {{content-for "head"}} {{content-for "test-head"}} - - - + + + {{content-for "head-footer"}} {{content-for "test-head-footer"}} @@ -28,12 +28,17 @@ - - - - + + + + + {{content-for "body-footer"}} - {{content-for "test-body-footer"}} + diff --git a/docs/tests/test-helper.ts b/docs/tests/test-helper.ts index bd22ed03..24ffceff 100644 --- a/docs/tests/test-helper.ts +++ b/docs/tests/test-helper.ts @@ -3,12 +3,12 @@ import config from 'docs/config/environment'; import * as QUnit from 'qunit'; import { setApplication } from '@ember/test-helpers'; import { setup } from 'qunit-dom'; -import { loadTests } from 'ember-qunit/test-loader'; -import { start, setupEmberOnerrorValidation } from 'ember-qunit'; +import { start as qunitStart, setupEmberOnerrorValidation } from 'ember-qunit'; -setApplication(Application.create(config.APP)); +export function start() { + setApplication(Application.create(config.APP)); -setup(QUnit.assert); -setupEmberOnerrorValidation(); -loadTests(); -start(); + setup(QUnit.assert); + setupEmberOnerrorValidation(); + qunitStart(); +} diff --git a/docs/tsconfig.json b/docs/tsconfig.json index a15a5200..85763872 100644 --- a/docs/tsconfig.json +++ b/docs/tsconfig.json @@ -13,6 +13,6 @@ "docs/*": ["app/*"], "*": ["types/*"] }, - "types": ["ember-source/types"] + "types": ["ember-source/types", "@embroider/core/virtual", "vite/client"] } } diff --git a/docs/vite.config.mjs b/docs/vite.config.mjs new file mode 100644 index 00000000..219253db --- /dev/null +++ b/docs/vite.config.mjs @@ -0,0 +1,15 @@ +import { defineConfig } from 'vite'; +import { extensions, classicEmberSupport, ember } from '@embroider/vite'; +import { babel } from '@rollup/plugin-babel'; + +export default defineConfig({ + plugins: [ + classicEmberSupport(), + ember(), + // extra plugins here + babel({ + babelHelpers: 'runtime', + extensions, + }), + ], +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0e1bd451..5483c280 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -51,6 +51,12 @@ importers: '@babel/plugin-proposal-decorators': specifier: ^7.28.0 version: 7.28.0(@babel/core@7.28.5) + '@babel/plugin-transform-runtime': + specifier: ^7.26.9 + version: 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-typescript': + specifier: ^7.28.0 + version: 7.28.5(@babel/core@7.28.5) '@ember/optional-features': specifier: ^2.2.0 version: 2.2.0 @@ -60,12 +66,24 @@ importers: '@ember/test-helpers': specifier: ^5.4.1 version: 5.4.1(@babel/core@7.28.5)(@glint/template@1.5.2) + '@embroider/compat': + specifier: ^4.0.3 + version: 4.1.10(@embroider/core@4.2.7(@glint/template@1.5.2))(@glint/template@1.5.2) + '@embroider/config-meta-loader': + specifier: ^1.0.0 + version: 1.0.0 + '@embroider/core': + specifier: ^4.0.3 + version: 4.2.7(@glint/template@1.5.2) '@embroider/macros': specifier: ^1.19.4 version: 1.19.4(@glint/template@1.5.2) '@embroider/test-setup': specifier: ^4.0.0 - version: 4.0.0(@embroider/core@3.5.7(@glint/template@1.5.2)) + version: 4.0.0(@embroider/compat@4.1.10(@embroider/core@4.2.7(@glint/template@1.5.2))(@glint/template@1.5.2))(@embroider/core@4.2.7(@glint/template@1.5.2)) + '@embroider/vite': + specifier: ^1.1.1 + version: 1.4.1(@embroider/core@4.2.7(@glint/template@1.5.2))(@glint/template@1.5.2)(rollup@4.53.2)(vite@6.4.1(@types/node@24.10.1)(jiti@2.6.1)(sass@1.94.0)(terser@5.44.1)(yaml@2.8.1)) '@eslint/js': specifier: ^9.39.1 version: 9.39.1 @@ -87,6 +105,9 @@ importers: '@glint/template': specifier: 1.5.2 version: 1.5.2 + '@rollup/plugin-babel': + specifier: ^6.0.4 + version: 6.1.0(@babel/core@7.28.5)(rollup@4.53.2) '@tsconfig/ember': specifier: ^3.0.12 version: 3.0.12 @@ -96,48 +117,33 @@ importers: '@types/rsvp': specifier: ^4.0.9 version: 4.0.9 - broccoli-asset-rev: - specifier: ^3.0.0 - version: 3.0.0 + babel-plugin-ember-template-compilation: + specifier: ^2.3.0 + version: 2.4.1 concurrently: specifier: ^9.2.1 version: 9.2.1 + decorator-transforms: + specifier: ^2.3.0 + version: 2.3.0(@babel/core@7.28.5) ember-auto-import: specifier: ^2.11.2 version: 2.11.2(@glint/template@1.5.2)(webpack@5.102.1) ember-cli: specifier: ~6.7.0 version: 6.7.2(@types/node@24.10.1)(handlebars@4.7.8)(underscore@1.13.7) - ember-cli-app-version: - specifier: ^7.0.0 - version: 7.0.0(ember-source@6.7.0(@glimmer/component@2.0.0)(rsvp@4.8.5)) ember-cli-babel: specifier: ^8.2.0 version: 8.2.0(@babel/core@7.28.5) - 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.7.2(@types/node@24.10.1)(handlebars@4.7.8)(underscore@1.13.7)) ember-cli-deprecation-workflow: specifier: ^3.4.0 version: 3.4.0(ember-source@6.7.0(@glimmer/component@2.0.0)(rsvp@4.8.5)) 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-sass: specifier: ^11.0.1 version: 11.0.1 - ember-cli-sri: - specifier: ^2.1.1 - version: 2.1.1 - ember-cli-terser: - specifier: ^4.0.2 - version: 4.0.2 ember-code-snippet: specifier: git://github.com/ef4/ember-code-snippet.git#d054b697098ad52481c94a952ccf8d89ba1f25fe version: https://codeload.github.com/ef4/ember-code-snippet/tar.gz/d054b697098ad52481c94a952ccf8d89ba1f25fe @@ -165,9 +171,6 @@ importers: ember-source-channel-url: specifier: ^3.0.0 version: 3.0.0(encoding@0.1.13) - ember-template-imports: - specifier: ^4.3.0 - version: 4.3.0 ember-template-lint: specifier: ^7.9.3 version: 7.9.3 @@ -192,9 +195,6 @@ importers: globals: specifier: ^16.5.0 version: 16.5.0 - loader.js: - specifier: ^4.7.0 - version: 4.7.0 prettier: specifier: ^3.6.2 version: 3.6.2 @@ -231,9 +231,9 @@ importers: typescript-eslint: specifier: ^8.46.4 version: 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - webpack: - specifier: ^5.102.1 - version: 5.102.1 + vite: + specifier: ^6.0.0 + version: 6.4.1(@types/node@24.10.1)(jiti@2.6.1)(sass@1.94.0)(terser@5.44.1)(yaml@2.8.1) ember-basic-dropdown: dependencies: @@ -749,6 +749,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.27.1': resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} engines: {node: '>=6.9.0'} @@ -1241,10 +1246,24 @@ packages: resolution: {integrity: sha512-EfI9cJ5/3QSUJtwm7x1MXrx3TEa2p7RNgSHefy7fvGm8/DP1xUFL25nST1NaHbHcqR1UhMlrTtv5iUIDoVzeQQ==} engines: {node: 12.* || 14.* || >= 16} + '@embroider/compat@4.1.10': + resolution: {integrity: sha512-GtANRyjHuU8FQoBukPBqATWHb8Ck92FLqWc8uWGNyVHX86aInvXJyh947/rpVGi0vzrFJv5u3AEsp5a6/JPg1g==} + engines: {node: 12.* || 14.* || >= 16} + peerDependencies: + '@embroider/core': ^4.2.7 + + '@embroider/config-meta-loader@1.0.0': + resolution: {integrity: sha512-qznkdjgEGPe6NM94hZNXvOm/WhrJwBh8FtSQZ+nGjh9TOjY42tOiTEevFuM0onNXUn6bpdGzmjwKo2xY2jxQxQ==} + engines: {node: 12.* || 14.* || >= 16} + '@embroider/core@3.5.7': resolution: {integrity: sha512-0oytko2+iaYS31TG9Axj7Py0e0FAccUhu9J1h7ldEnQegK+Eu5+OINU0dYQgt0ijp6f2yF4+o3J7u9CJCLZ1gw==} engines: {node: 12.* || 14.* || >= 16} + '@embroider/core@4.2.7': + resolution: {integrity: sha512-ZHAyMGzNbIt2XthY6KUIQT15YiBYrZgWqCgOpioRPQS+HpMPkKETHkDWjftOJh9RpQL7hfLMvucnvxeCVXXPbw==} + engines: {node: 12.* || 14.* || >= 16} + '@embroider/macros@1.16.13': resolution: {integrity: sha512-2oGZh0m1byBYQFWEa8b2cvHJB2LzaF3DdMCLCqcRAccABMROt1G3sultnNCT30NhfdGWMEsJOT3Jm4nFxXmTRw==} engines: {node: 12.* || 14.* || >= 16} @@ -1263,6 +1282,9 @@ packages: '@glint/template': optional: true + '@embroider/reverse-exports@0.1.2': + resolution: {integrity: sha512-TgjQalfB42RnwdRVApjcvHSVjBe+7MJfCZV0Cs1jv2QgnFGr/6f5X19PKvmF4FU4xbBf7yOsIWrVvYvidWnXlw==} + '@embroider/shared-internals@2.9.0': resolution: {integrity: sha512-8untWEvGy6av/oYibqZWMz/yB+LHsKxEOoUZiLvcpFwWj2Sipc0DcXeTJQZQZ++otNkLCWyDrDhOLrOkgjOPSg==} engines: {node: 12.* || 14.* || >= 16} @@ -1303,6 +1325,168 @@ packages: '@glint/template': optional: true + '@embroider/vite@1.4.1': + resolution: {integrity: sha512-3z392+ubPuxsp+/PoHosdI8Mx8EeOsKfXTiGOPpDqFPfCTUQp7Fa6FmKqm3b7iQoIVsb2VZb1lOZrsqdJoA1Zw==} + peerDependencies: + '@embroider/core': ^4.2.7 + vite: '>= 5.2.0' + + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.9.0': resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2101,6 +2285,9 @@ packages: '@tsconfig/ember@3.0.12': resolution: {integrity: sha512-ypFTXqIzQAB5HpYPi4TwDElDcUheWrKsEaYXgjiCAvsH6zxcQ4zUeuJqmfT+FoUlHTPZ3Xyel81OxrcjI+rilw==} + '@types/babel__code-frame@7.0.6': + resolution: {integrity: sha512-Anitqkl3+KrzcW2k77lRlg/GfLZLWXBuNgbEcIOU6M92yw42vsd3xV/Z/yAHEj8m+KUjL6bWOVOFqX8PFPJ4LA==} + '@types/body-parser@1.19.6': resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} @@ -2667,6 +2854,10 @@ packages: resolution: {integrity: sha512-n+ktQ3JeyWrpRutSyPn2PsHeH+A94SVm+iUoogzf9VUqpP47FfWem24gpQXhn+p6+x5/BpuFJXMLXWt7ZoYAKA==} engines: {node: '>= 12.*'} + babel-plugin-ember-template-compilation@3.0.1: + resolution: {integrity: sha512-3fUgnv+azabsl2PMd+SpkV8E7vvp7oRLaXv+OJIe36G3niSVYDKJ+7n6WaPyh+z7gqeAKSBj7Bdc5dYbhEMsgQ==} + engines: {node: '>= 18.*'} + babel-plugin-htmlbars-inline-precompile@5.3.1: resolution: {integrity: sha512-QWjjFgSKtSRIcsBhJmEwS2laIdrA6na8HAlc/pEAhjHgQsah/gMiBFRZvbQTy//hWxR4BMwV7/Mya7q5H8uHeA==} engines: {node: 10.* || >= 12.*} @@ -2699,6 +2890,10 @@ packages: babel-remove-types@1.0.2: resolution: {integrity: sha512-X2lmGht7sGkDgpBIaTmr8b/0aXKkMeHeJ5W0HgOdMp1KHyE3PHySHYfbYrfkVoISQsHppNv9yA+pDwhWqaxBSA==} + babylon@6.18.0: + resolution: {integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==} + hasBin: true + backbone@1.6.1: resolution: {integrity: sha512-YQzWxOrIgL6BoFnZjThVN99smKYhyEXXFyJJ2lsF1wJLyo4t+QjmkLrH8/fN22FZ4ykF70Xq7PgTugJVR4zS9Q==} @@ -2748,6 +2943,9 @@ packages: resolution: {integrity: sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==} engines: {node: '>=0.8'} + bind-decorator@1.0.11: + resolution: {integrity: sha512-yzkH0uog6Vv/vQ9+rhSKxecnqGUZHYncg7qS7voz3Q76+TAi1SGiOKk2mlOvusQnFz9Dc4BC/NMkeXu11YgjJg==} + bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -2937,6 +3135,13 @@ packages: browser-process-hrtime@1.0.0: resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} + browserslist-to-esbuild@2.1.1: + resolution: {integrity: sha512-KN+mty6C3e9AN8Z5dI1xeN15ExcRNeISoC3g7V0Kax/MMF9MSoYA2G7lkTTcVUFntiEjkpI0HNgqJC1NjdyNUw==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + browserslist: '*' + browserslist@4.28.0: resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -4125,6 +4330,11 @@ packages: es6-promise@1.0.0: resolution: {integrity: sha512-8/2Juj7DeNMwxkbcruBmErKcgPSTPgaGIB08nQvlBzaqliW1vMliNOaBQaMzzQAxX9k0vGy+8wwWlgiLuKqZIw==} + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -5035,6 +5245,9 @@ packages: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -5431,6 +5644,15 @@ packages: canvas: optional: true + jsdom@26.1.0: + resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==} + engines: {node: '>=18'} + peerDependencies: + canvas: ^3.0.0 + peerDependenciesMeta: + canvas: + optional: true + jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -5736,6 +5958,10 @@ packages: resolution: {integrity: sha512-qvwipnozMohxLXG1pOqoLiZKNkC4r4qqRucSoDwXowsNGDSULiqFTRUF05vcZWnwJSG22qTsynQhxbaMtnX9gw==} engines: {node: '>=8'} + mem@8.1.1: + resolution: {integrity: sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==} + engines: {node: '>=10'} + memory-streams@0.1.3: resolution: {integrity: sha512-qVQ/CjkMyMInPaaRMrwWNDvf6boRZXaT/DbQeMYcCWuXPEBf1v8qChOc9OlEVQp2uOvRXa1Qu30fLmKhY6NipA==} @@ -5863,6 +6089,10 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + mimic-fn@3.1.0: + resolution: {integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==} + engines: {node: '>=8'} + mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -7021,6 +7251,10 @@ packages: engines: {node: '>=10'} hasBin: true + send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + send@0.19.0: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} @@ -7816,6 +8050,46 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + vite@6.4.1: + resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vscode-jsonrpc@8.1.0: resolution: {integrity: sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==} engines: {node: '>=14.0.0'} @@ -8365,6 +8639,11 @@ snapshots: '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 @@ -9023,6 +9302,61 @@ snapshots: transitivePeerDependencies: - supports-color + '@embroider/compat@4.1.10(@embroider/core@4.2.7(@glint/template@1.5.2))(@glint/template@1.5.2)': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/core': 7.28.5 + '@babel/plugin-syntax-decorators': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-runtime': 7.28.5(@babel/core@7.28.5) + '@babel/preset-env': 7.28.5(@babel/core@7.28.5) + '@babel/runtime': 7.28.4 + '@babel/traverse': 7.28.5 + '@embroider/core': 4.2.7(@glint/template@1.5.2) + '@embroider/macros': 1.19.4(@glint/template@1.5.2) + '@types/babel__code-frame': 7.0.6 + assert-never: 1.4.0 + babel-import-util: 3.0.1 + babel-plugin-debug-macros: 2.0.0(@babel/core@7.28.5) + babel-plugin-ember-template-compilation: 3.0.1 + babel-plugin-ember-template-compilation-2: babel-plugin-ember-template-compilation@2.4.1 + 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.3 + fast-sourcemap-concat: 2.1.1 + fs-extra: 9.1.0 + fs-tree-diff: 2.0.1 + jsdom: 26.1.0 + lodash: 4.17.21 + pkg-up: 3.1.0 + resolve: 1.22.11 + resolve-package-path: 4.0.3 + resolve.exports: 2.0.3 + semver: 7.7.3 + symlink-or-copy: 1.3.1 + tree-sync: 2.1.0 + typescript-memoize: 1.1.1 + walk-sync: 3.0.0 + transitivePeerDependencies: + - '@glint/template' + - bufferutil + - canvas + - supports-color + - utf-8-validate + + '@embroider/config-meta-loader@1.0.0': {} + '@embroider/core@3.5.7(@glint/template@1.5.2)': dependencies: '@babel/core': 7.28.5 @@ -9057,6 +9391,42 @@ snapshots: - supports-color - utf-8-validate + '@embroider/core@4.2.7(@glint/template@1.5.2)': + dependencies: + '@babel/core': 7.28.5 + '@babel/parser': 7.28.5 + '@babel/traverse': 7.28.5 + '@embroider/macros': 1.19.4(@glint/template@1.5.2) + '@embroider/reverse-exports': 0.1.2 + '@embroider/shared-internals': 3.0.1 + assert-never: 1.4.0 + babel-plugin-ember-template-compilation: 3.0.1 + broccoli-node-api: 1.7.0 + broccoli-persistent-filter: 3.1.3 + broccoli-plugin: 4.0.7 + broccoli-source: 3.0.1 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + fast-sourcemap-concat: 2.1.1 + 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 + lodash: 4.17.21 + resolve: 1.22.11 + resolve-package-path: 4.0.3 + resolve.exports: 2.0.3 + semver: 7.7.3 + typescript-memoize: 1.1.1 + walk-sync: 3.0.0 + transitivePeerDependencies: + - '@glint/template' + - bufferutil + - canvas + - supports-color + - utf-8-validate + '@embroider/macros@1.16.13(@glint/template@1.5.2)': dependencies: '@embroider/shared-internals': 2.9.0 @@ -9087,6 +9457,11 @@ snapshots: transitivePeerDependencies: - supports-color + '@embroider/reverse-exports@0.1.2': + dependencies: + mem: 8.1.1 + resolve.exports: 2.0.3 + '@embroider/shared-internals@2.9.0': dependencies: babel-import-util: 2.1.1 @@ -9139,6 +9514,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@embroider/test-setup@4.0.0(@embroider/compat@4.1.10(@embroider/core@4.2.7(@glint/template@1.5.2))(@glint/template@1.5.2))(@embroider/core@4.2.7(@glint/template@1.5.2))': + dependencies: + lodash: 4.17.21 + resolve: 1.22.11 + optionalDependencies: + '@embroider/compat': 4.1.10(@embroider/core@4.2.7(@glint/template@1.5.2))(@glint/template@1.5.2) + '@embroider/core': 4.2.7(@glint/template@1.5.2) + '@embroider/test-setup@4.0.0(@embroider/core@3.5.7(@glint/template@1.5.2))': dependencies: lodash: 4.17.21 @@ -9170,6 +9553,112 @@ snapshots: transitivePeerDependencies: - supports-color + '@embroider/vite@1.4.1(@embroider/core@4.2.7(@glint/template@1.5.2))(@glint/template@1.5.2)(rollup@4.53.2)(vite@6.4.1(@types/node@24.10.1)(jiti@2.6.1)(sass@1.94.0)(terser@5.44.1)(yaml@2.8.1))': + dependencies: + '@babel/core': 7.28.5 + '@embroider/core': 4.2.7(@glint/template@1.5.2) + '@embroider/macros': 1.19.4(@glint/template@1.5.2) + '@embroider/reverse-exports': 0.1.2 + '@rollup/pluginutils': 5.3.0(rollup@4.53.2) + assert-never: 1.4.0 + browserslist: 4.28.0 + browserslist-to-esbuild: 2.1.1(browserslist@4.28.0) + chalk: 5.6.2 + content-tag: 3.1.3 + debug: 4.4.3 + fast-glob: 3.3.3 + fs-extra: 10.1.0 + jsdom: 25.0.1 + send: 0.18.0 + source-map-url: 0.4.1 + terser: 5.44.1 + vite: 6.4.1(@types/node@24.10.1)(jiti@2.6.1)(sass@1.94.0)(terser@5.44.1)(yaml@2.8.1) + transitivePeerDependencies: + - '@glint/template' + - bufferutil + - canvas + - rollup + - supports-color + - utf-8-validate + + '@esbuild/aix-ppc64@0.25.12': + optional: true + + '@esbuild/android-arm64@0.25.12': + optional: true + + '@esbuild/android-arm@0.25.12': + optional: true + + '@esbuild/android-x64@0.25.12': + optional: true + + '@esbuild/darwin-arm64@0.25.12': + optional: true + + '@esbuild/darwin-x64@0.25.12': + optional: true + + '@esbuild/freebsd-arm64@0.25.12': + optional: true + + '@esbuild/freebsd-x64@0.25.12': + optional: true + + '@esbuild/linux-arm64@0.25.12': + optional: true + + '@esbuild/linux-arm@0.25.12': + optional: true + + '@esbuild/linux-ia32@0.25.12': + optional: true + + '@esbuild/linux-loong64@0.25.12': + optional: true + + '@esbuild/linux-mips64el@0.25.12': + optional: true + + '@esbuild/linux-ppc64@0.25.12': + optional: true + + '@esbuild/linux-riscv64@0.25.12': + optional: true + + '@esbuild/linux-s390x@0.25.12': + optional: true + + '@esbuild/linux-x64@0.25.12': + optional: true + + '@esbuild/netbsd-arm64@0.25.12': + optional: true + + '@esbuild/netbsd-x64@0.25.12': + optional: true + + '@esbuild/openbsd-arm64@0.25.12': + optional: true + + '@esbuild/openbsd-x64@0.25.12': + optional: true + + '@esbuild/openharmony-arm64@0.25.12': + optional: true + + '@esbuild/sunos-x64@0.25.12': + optional: true + + '@esbuild/win32-arm64@0.25.12': + optional: true + + '@esbuild/win32-ia32@0.25.12': + optional: true + + '@esbuild/win32-x64@0.25.12': + optional: true + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@2.6.1))': dependencies: eslint: 9.39.1(jiti@2.6.1) @@ -10017,6 +10506,8 @@ snapshots: '@tsconfig/ember@3.0.12': {} + '@types/babel__code-frame@7.0.6': {} + '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 @@ -10683,6 +11174,12 @@ snapshots: '@glimmer/syntax': 0.95.0 babel-import-util: 3.0.1 + babel-plugin-ember-template-compilation@3.0.1: + dependencies: + '@glimmer/syntax': 0.95.0 + babel-import-util: 3.0.1 + import-meta-resolve: 4.2.0 + babel-plugin-htmlbars-inline-precompile@5.3.1: dependencies: babel-plugin-ember-modules-api-polyfill: 3.5.0 @@ -10742,6 +11239,8 @@ snapshots: transitivePeerDependencies: - supports-color + babylon@6.18.0: {} + backbone@1.6.1: dependencies: underscore: 1.13.7 @@ -10784,6 +11283,8 @@ snapshots: binaryextensions@2.3.0: {} + bind-decorator@1.0.11: {} + bl@4.1.0: dependencies: buffer: 5.7.1 @@ -11286,6 +11787,11 @@ snapshots: browser-process-hrtime@1.0.0: {} + browserslist-to-esbuild@2.1.1(browserslist@4.28.0): + dependencies: + browserslist: 4.28.0 + meow: 13.2.0 + browserslist@4.28.0: dependencies: baseline-browser-mapping: 2.8.28 @@ -12870,6 +13376,35 @@ snapshots: es6-promise@1.0.0: {} + esbuild@0.25.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 + escalade@3.2.0: {} escape-html@1.0.3: {} @@ -14092,6 +14627,8 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 + import-meta-resolve@4.2.0: {} + imurmurhash@0.1.4: {} include-path-searcher@0.1.0: {} @@ -14527,6 +15064,33 @@ snapshots: - supports-color - utf-8-validate + jsdom@26.1.0: + dependencies: + cssstyle: 4.6.0 + data-urls: 5.0.0 + decimal.js: 10.6.0 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.22 + parse5: 7.3.0 + rrweb-cssom: 0.8.0 + 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@3.1.0: {} json-buffer@3.0.0: {} @@ -14868,6 +15432,11 @@ snapshots: mimic-fn: 2.1.0 p-is-promise: 2.1.0 + mem@8.1.1: + dependencies: + map-age-cleaner: 0.1.3 + mimic-fn: 3.1.0 + memory-streams@0.1.3: dependencies: readable-stream: 1.0.34 @@ -15074,6 +15643,8 @@ snapshots: mimic-fn@2.1.0: {} + mimic-fn@3.1.0: {} + mimic-fn@4.0.0: {} mimic-function@5.0.1: {} @@ -16289,6 +16860,24 @@ snapshots: semver@7.7.3: {} + send@0.18.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + send@0.19.0: dependencies: debug: 2.6.9 @@ -17322,6 +17911,22 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 + vite@6.4.1(@types/node@24.10.1)(jiti@2.6.1)(sass@1.94.0)(terser@5.44.1)(yaml@2.8.1): + dependencies: + esbuild: 0.25.12 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.53.2 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.10.1 + fsevents: 2.3.3 + jiti: 2.6.1 + sass: 1.94.0 + terser: 5.44.1 + yaml: 2.8.1 + vscode-jsonrpc@8.1.0: {} vscode-languageserver-protocol@3.17.3: From b2be56a162de59f01d57da6de1c183aa023c58b8 Mon Sep 17 00:00:00 2001 From: Markus Sanin Date: Sun, 16 Nov 2025 08:24:02 +0100 Subject: [PATCH 2/6] Remove ember-code-snippet --- docs/app/components/code-block.gts | 8 +++-- docs/app/components/code-example.gts | 46 ++++++++++++-------------- docs/app/components/code-inline.gts | 29 ++++++++-------- docs/ember-cli-build.js | 1 - docs/package.json | 1 - pnpm-lock.yaml | 49 ---------------------------- 6 files changed, 42 insertions(+), 92 deletions(-) diff --git a/docs/app/components/code-block.gts b/docs/app/components/code-block.gts index 351001b5..2226ab5c 100644 --- a/docs/app/components/code-block.gts +++ b/docs/app/components/code-block.gts @@ -4,7 +4,7 @@ import CodeInline from './code-inline'; interface CodeBlockSignature { Element: HTMLElement; Args: { - code: string; + fileName: string; language?: string; }; } @@ -17,7 +17,11 @@ export default class CodeBlock extends Component { diff --git a/docs/app/components/code-example.gts b/docs/app/components/code-example.gts index d3a539c0..79a4761f 100644 --- a/docs/app/components/code-example.gts +++ b/docs/app/components/code-example.gts @@ -5,8 +5,6 @@ import { on } from '@ember/modifier'; import { fn } from '@ember/helper'; import { eq, and } from 'ember-truth-helpers'; import CodeBlock from './code-block'; -// @ts-expect-error Could not find a declaration file for module 'ember-code-snippet'. -import { getCodeSnippet } from 'ember-code-snippet'; interface CodeExampleSignature { Element: HTMLElement; @@ -99,35 +97,33 @@ export default class CodeExample extends Component { >Result {{/if}} - {{#if (and @glimmerTs (eq this.activeTab "glimmer-ts"))}} - {{#let (getCodeSnippet @glimmerTs) as |snippet|}} - - {{/let}} + {{#if @glimmerTs}} + {{#if (eq this.activeTab "glimmer-ts")}} + + {{/if}} {{/if}} - {{#if (and @hbs (eq this.activeTab "hbs"))}} - {{#let (getCodeSnippet @hbs) as |snippet|}} - - {{/let}} + {{#if @hbs}} + {{#if (eq this.activeTab "hbs")}} + + {{/if}} {{/if}} {{#if @hbs2}} - {{#let (getCodeSnippet @hbs2) as |snippet|}} - - {{/let}} + {{/if}} - {{#if (and @js (eq this.activeTab "js"))}} - {{#let (getCodeSnippet @js) as |snippet|}} - - {{/let}} + {{#if @js}} + {{#if (eq this.activeTab "js")}} + + {{/if}} {{/if}} - {{#if (and @scss (eq this.activeTab "scss"))}} - {{#let (getCodeSnippet @scss) as |snippet|}} - - {{/let}} + {{#if @scss}} + {{#if (eq this.activeTab "scss")}} + + {{/if}} {{/if}} - {{#if (and @css (eq this.activeTab "css"))}} - {{#let (getCodeSnippet @css) as |snippet|}} - - {{/let}} + {{#if @css}} + {{#if (eq this.activeTab "css")}} + + {{/if}} {{/if}} {{#if (and this.showResult (has-block))}}
Promise>; + +async function loadSnippet(name: string) { + const path = `./snippets/${name}` as const; + const loader = files[path]; + if (!loader) throw new Error(`File not found: ${path}`); + return await loader(); +} + interface CodeInlineSignature { Element: HTMLElement; Args: { - code: string; + fileName: string; language?: string; }; } @@ -17,17 +28,6 @@ interface CodeInlineSignature { export default class CodeInline extends Component { @tracked prismCode: string | SafeString = ''; - get code() { - const code = this.args.code; - - assert( - "ember-prism's and components require a `code` parameter to be passed in.", - code !== undefined, - ); - - return code; - } - get language() { return this.args.language ?? 'markup'; } @@ -37,9 +37,10 @@ export default class CodeInline extends Component { }); generateCode = task(async () => { - const code = this.code; const language = this.language; + const code = await loadSnippet(this.args.fileName); + const htmlCode = await codeToHtml(code, { lang: language, theme: 'github-light-default', diff --git a/docs/ember-cli-build.js b/docs/ember-cli-build.js index 39d4b291..3d47a17d 100644 --- a/docs/ember-cli-build.js +++ b/docs/ember-cli-build.js @@ -8,7 +8,6 @@ module.exports = async function (defaults) { const app = new EmberApp(defaults, { 'ember-cli-babel': { enableTypeScriptTransform: true }, - snippetPaths: ['app/components/snippets'], autoImport: { watchDependencies: ['ember-basic-dropdown'], }, diff --git a/docs/package.json b/docs/package.json index a93df69b..0ce99405 100644 --- a/docs/package.json +++ b/docs/package.json @@ -67,7 +67,6 @@ "ember-cli-deprecation-workflow": "^3.4.0", "ember-cli-htmlbars": "^6.3.0", "ember-cli-sass": "^11.0.1", - "ember-code-snippet": "git://github.com/ef4/ember-code-snippet.git#d054b697098ad52481c94a952ccf8d89ba1f25fe", "ember-concurrency": "^5.1.0", "ember-load-initializers": "^3.0.1", "ember-modifier": "^4.2.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5483c280..fff242c1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -144,9 +144,6 @@ importers: ember-cli-sass: specifier: ^11.0.1 version: 11.0.1 - ember-code-snippet: - specifier: git://github.com/ef4/ember-code-snippet.git#d054b697098ad52481c94a952ccf8d89ba1f25fe - version: https://codeload.github.com/ef4/ember-code-snippet/tar.gz/d054b697098ad52481c94a952ccf8d89ba1f25fe ember-concurrency: specifier: ^5.1.0 version: 5.1.0(@babel/core@7.28.5)(@glint/template@1.5.2) @@ -3024,9 +3021,6 @@ packages: broccoli-filter@1.3.0: resolution: {integrity: sha512-VXJXw7eBfG82CFxaBDjYmyN7V72D4In2zwLVQJd/h3mBfF3CMdRTsv2L20lmRTtCv1sAHcB+LgMso90e/KYiLw==} - broccoli-flatiron@0.1.3: - resolution: {integrity: sha512-dD/4ck+LKOLTBzFlxP2zX7fhWt1TFMVR/88b9/wd8LkAHUyAzWs1vBah94ObSvajYGZ7ic+XvMXw+OhmvdlYoQ==} - broccoli-funnel-reducer@1.0.0: resolution: {integrity: sha512-SaOCEdh+wnt2jFUV2Qb32m7LXyElvFwW3NKNaEJyi5PGQNwxfqpkc0KI6AbQANKgdj/40U2UC0WuGThFwuEUaA==} @@ -3044,9 +3038,6 @@ packages: broccoli-kitchen-sink-helpers@0.3.1: resolution: {integrity: sha512-gqYnKSJxBSjj/uJqeuRAzYVbmjWhG0mOZ8jrp6+fnUIOgLN6MvI7XxBECDHkYMIFPJ8Smf4xaI066Q2FqQDnXg==} - broccoli-merge-trees@1.2.4: - resolution: {integrity: sha512-RXJAleytlED0dxXGEo2EXwrg5cCesY8LQzzGRogwGQmluoz+ijzxajpyWAW6wu/AyuQZj1vgnIqnld8jvuuXtQ==} - broccoli-merge-trees@2.0.1: resolution: {integrity: sha512-WjaexJ+I8BxP5V5RNn6um/qDRSmKoiBC/QkRi79FT9ClHfldxRyCDs9mcV7mmoaPlsshmmPaUz5jdtcKA6DClQ==} @@ -4127,11 +4118,6 @@ packages: engines: {node: '>= 20.11'} hasBin: true - ember-code-snippet@https://codeload.github.com/ef4/ember-code-snippet/tar.gz/d054b697098ad52481c94a952ccf8d89ba1f25fe: - resolution: {tarball: https://codeload.github.com/ef4/ember-code-snippet/tar.gz/d054b697098ad52481c94a952ccf8d89ba1f25fe} - version: 3.0.0 - engines: {node: 8.* || >= 10.*} - ember-concurrency@5.1.0: resolution: {integrity: sha512-cnudfQnW7soEN98uEwGgfmmMM5PP8L3pefpQ81FewAtTFZhYyYKyJsMtkk8R/7AHCbcuX5cvY44yndHVF6Vshw==} engines: {node: 16.* || >= 18} @@ -4327,9 +4313,6 @@ packages: es-toolkit@1.41.0: resolution: {integrity: sha512-bDd3oRmbVgqZCJS6WmeQieOrzpl3URcWBUVDXxOELlUW2FuW+0glPOz1n0KnRie+PdyvUZcXz2sOn00c6pPRIA==} - es6-promise@1.0.0: - resolution: {integrity: sha512-8/2Juj7DeNMwxkbcruBmErKcgPSTPgaGIB08nQvlBzaqliW1vMliNOaBQaMzzQAxX9k0vGy+8wwWlgiLuKqZIw==} - esbuild@0.25.12: resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} engines: {node: '>=18'} @@ -11489,11 +11472,6 @@ snapshots: transitivePeerDependencies: - supports-color - broccoli-flatiron@0.1.3: - dependencies: - broccoli-plugin: 1.3.1 - mkdirp: 0.5.6 - broccoli-funnel-reducer@1.0.0: {} broccoli-funnel@2.0.2: @@ -11536,19 +11514,6 @@ snapshots: glob: 5.0.15 mkdirp: 0.5.6 - broccoli-merge-trees@1.2.4: - dependencies: - broccoli-plugin: 1.3.1 - can-symlink: 1.0.0 - fast-ordered-set: 1.0.3 - fs-tree-diff: 0.5.9 - heimdalljs: 0.2.6 - heimdalljs-logger: 0.1.10 - rimraf: 2.7.1 - symlink-or-copy: 1.3.1 - transitivePeerDependencies: - - supports-color - broccoli-merge-trees@2.0.1: dependencies: broccoli-plugin: 1.3.1 @@ -12967,18 +12932,6 @@ snapshots: - walrus - whiskers - ember-code-snippet@https://codeload.github.com/ef4/ember-code-snippet/tar.gz/d054b697098ad52481c94a952ccf8d89ba1f25fe: - dependencies: - broccoli-flatiron: 0.1.3 - broccoli-merge-trees: 1.2.4 - broccoli-plugin: 1.3.1 - ember-cli-babel: 7.26.11 - ember-cli-htmlbars: 6.3.0 - es6-promise: 1.0.0 - glob: 7.2.3 - transitivePeerDependencies: - - supports-color - ember-concurrency@5.1.0(@babel/core@7.28.5)(@glint/template@1.5.2): dependencies: '@babel/helper-module-imports': 7.27.1 @@ -13374,8 +13327,6 @@ snapshots: es-toolkit@1.41.0: {} - es6-promise@1.0.0: {} - esbuild@0.25.12: optionalDependencies: '@esbuild/aix-ppc64': 0.25.12 From 8578e97d7cd037b8b20ba0c819ea5d55b5281fbd Mon Sep 17 00:00:00 2001 From: Markus Sanin Date: Sun, 16 Nov 2025 08:35:39 +0100 Subject: [PATCH 3/6] Drop ember-cli-sass --- docs/index.html | 2 +- docs/package.json | 4 +- pnpm-lock.yaml | 276 ++++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 256 insertions(+), 26 deletions(-) diff --git a/docs/index.html b/docs/index.html index a930e776..4448204d 100644 --- a/docs/index.html +++ b/docs/index.html @@ -9,7 +9,7 @@ {{content-for "head"}} - +