diff --git a/.github/workflows/ci-host.yaml b/.github/workflows/ci-host.yaml index ef62df85ba..2e5293eefc 100644 --- a/.github/workflows/ci-host.yaml +++ b/.github/workflows/ci-host.yaml @@ -18,10 +18,13 @@ jobs: strategy: fail-fast: false matrix: - shardIndex: [1, 2, 3, 4, 5, 6] - shardTotal: [6] + browser: ["Chrome", "Firefox"] + shardIndex: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + shardTotal: [10] + env: + TESTEM_BROWSER: ${{ matrix.browser }} concurrency: - group: boxel-host-test${{ github.head_ref || github.run_id }}-shard${{ matrix.shardIndex }} + group: boxel-host-test-${{ matrix.browser }}-${{ github.head_ref || github.run_id }}-shard${{ matrix.shardIndex }} cancel-in-progress: true steps: - uses: actions/checkout@v4 @@ -43,11 +46,12 @@ jobs: - name: create realm users run: pnpm register-realm-users working-directory: packages/matrix + # FIXME restore PErcy - name: host test suite (shard ${{ matrix.shardIndex }}) - run: pnpm test-with-percy + run: pnpm test env: - PERCY_TOKEN: ${{ secrets.PERCY_TOKEN_HOST }} - PERCY_PARALLEL_NONCE: ${{ github.run_id }}-${{ github.run_attempt }} + # PERCY_TOKEN: ${{ secrets.PERCY_TOKEN_HOST }} + # PERCY_PARALLEL_NONCE: ${{ github.run_id }}-${{ github.run_attempt }} HOST_TEST_PARTITION: ${{ matrix.shardIndex }} HOST_TEST_PARTITION_COUNT: ${{ matrix.shardTotal }} working-directory: packages/host @@ -55,7 +59,7 @@ jobs: uses: actions/upload-artifact@v4 if: always() with: - name: host-test-report-${{ matrix.shardIndex }} + name: host-test-report-${{ matrix.browser }}-${{ matrix.shardIndex }} path: junit/host-${{ matrix.shardIndex }}.xml retention-days: 30 @@ -64,23 +68,28 @@ jobs: if: always() needs: host-test runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + browser: ["Chrome", "Firefox"] steps: - uses: actions/checkout@v4 - uses: ./.github/actions/init - - name: Finalise Percy - run: npx percy build:finalize - working-directory: packages/host - env: - PERCY_TOKEN: ${{ secrets.PERCY_TOKEN_HOST }} - PERCY_PARALLEL_NONCE: ${{ github.run_id }}-${{ github.run_attempt }} + # FIXME restore Percy + # - name: Finalise Percy + # run: npx percy build:finalize + # working-directory: packages/host + # env: + # PERCY_TOKEN: ${{ secrets.PERCY_TOKEN_HOST }} + # PERCY_PARALLEL_NONCE: ${{ github.run_id }}-${{ github.run_attempt }} - name: Download JUnit reports from GitHub Actions Artifacts uses: actions/download-artifact@v4 with: path: all-host-reports - pattern: host-test-report-* + pattern: host-test-report-${{ matrix.browser }}-* merge-multiple: true - run: ls @@ -93,7 +102,7 @@ jobs: uses: actions/upload-artifact@v4 if: always() with: - name: host-test-report-merged + name: host-test-report-merged-${{ matrix.browser }} path: host.xml retention-days: 30 @@ -102,4 +111,4 @@ jobs: if: always() with: junit_files: host.xml - check_name: Host Test Results + check_name: Host Test Results (${{ matrix.browser }}) diff --git a/package.json b/package.json index 80dcc2b45b..4e42508b4b 100644 --- a/package.json +++ b/package.json @@ -38,8 +38,7 @@ "style-loader@2.0.0": "patches/style-loader@2.0.0.patch", "ember-css-url@1.0.0": "patches/ember-css-url@1.0.0.patch", "matrix-js-sdk@31.0.0": "patches/matrix-js-sdk@31.0.0.patch", - "ember-basic-dropdown@8.0.4": "patches/ember-basic-dropdown@8.0.4.patch", - "ember-source@5.4.1": "patches/ember-source@5.4.1.patch" + "ember-basic-dropdown@8.0.4": "patches/ember-basic-dropdown@8.0.4.patch" } }, "devDependencies": { diff --git a/packages/host/app/lib/sqlite-adapter.ts b/packages/host/app/lib/sqlite-adapter.ts index 11a956767b..c6485bcc87 100644 --- a/packages/host/app/lib/sqlite-adapter.ts +++ b/packages/host/app/lib/sqlite-adapter.ts @@ -10,6 +10,8 @@ import { Deferred, } from '@cardstack/runtime-common'; +import { time } from '@cardstack/runtime-common/helpers/time'; + export default class SQLiteAdapter implements DBAdapter { private _sqlite: typeof SQLiteWorker | undefined; private _dbId: string | undefined; @@ -98,7 +100,8 @@ export default class SQLiteAdapter implements DBAdapter { private async internalExecute(sql: string, opts?: ExecuteOptions) { sql = this.adjustSQL(sql); - return await this.query(sql, opts); + + return await time('sql', this.query(sql, opts)); } async close() { diff --git a/packages/host/config/fastboot.js b/packages/host/config/fastboot.js index dfbeec7589..dae3427841 100644 --- a/packages/host/config/fastboot.js +++ b/packages/host/config/fastboot.js @@ -16,6 +16,7 @@ module.exports = function () { Request: globalThis.Request, fetch: globalThis.fetch, btoa, + performance: globalThis.performance, }); }, }; diff --git a/packages/host/testem.js b/packages/host/testem.js index 6be49bb80e..1cc3df4aed 100644 --- a/packages/host/testem.js +++ b/packages/host/testem.js @@ -8,7 +8,7 @@ const fs = require('fs'); const config = { test_page: 'tests/index.html?hidepassed', disable_watching: true, - launch_in_ci: ['Chrome'], + launch_in_ci: [process.env.TESTEM_BROWSER || 'Chrome'], launch_in_dev: ['Chrome'], browser_start_timeout: 120, browser_args: { @@ -24,6 +24,7 @@ const config = { '--window-size=1440,900', ].filter(Boolean), }, + Firefox: ['--headless', '--width=1440', '--height=900'], }, }; diff --git a/packages/host/tests/helpers/visit-operator-mode.ts b/packages/host/tests/helpers/visit-operator-mode.ts index 101eff5150..9e5744a508 100644 --- a/packages/host/tests/helpers/visit-operator-mode.ts +++ b/packages/host/tests/helpers/visit-operator-mode.ts @@ -2,6 +2,8 @@ import { visit, waitFor } from '@ember/test-helpers'; import stringify from 'safe-stable-stringify'; +import { time } from '@cardstack/runtime-common/helpers/time'; + import { SerializedState } from '@cardstack/host/services/operator-mode-state-service'; export default async function visitOperatorMode({ @@ -21,12 +23,17 @@ export default async function visitOperatorMode({ let operatorModeStateParam = stringify(operatorModeState)!; - await visit( - `/?operatorModeEnabled=true&operatorModeState=${encodeURIComponent( - operatorModeStateParam, - )}`, - ); + await time('visitOperatorMode:visit', async () => { + return await visit( + `/?operatorModeEnabled=true&operatorModeState=${encodeURIComponent( + operatorModeStateParam, + )}`, + ); + }); + if (stacks && stacks.length > 0 && (!submode || submode === 'interact')) { - await waitFor('[data-test-operator-mode-stack]'); + await time('visitOperatorMode:waitFor', async () => { + return await waitFor('[data-test-operator-mode-stack]'); + }); } } diff --git a/packages/host/tests/test-helper.js b/packages/host/tests/test-helper.js index be1adf6fab..aeb1c82b67 100644 --- a/packages/host/tests/test-helper.js +++ b/packages/host/tests/test-helper.js @@ -2,10 +2,69 @@ import Application from '@cardstack/host/app'; import config from '@cardstack/host/config/environment'; import * as QUnit from 'qunit'; import { setApplication } from '@ember/test-helpers'; +import { logger } from '@cardstack/runtime-common'; import { setup } from 'qunit-dom'; +import { getTimes } from '@cardstack/runtime-common/helpers/time'; + import setupOperatorModeParametersMatchAssertion from '@cardstack/host/tests/helpers/operator-mode-parameters-match'; import start from 'ember-exam/test-support/start'; +const log = logger('current-run'); + +console.log('Setting Qunit hooks?'); + +log.error('Setting Qunit hooks?'); + +QUnit.on('runStart', () => { + log.error('Starting tests abcdefghijklmnopqrstuvwxyz'); +}); + +QUnit.on('suiteEnd', (suiteEnd) => { + console.log(`Done tests for ${suiteEnd.name}`); + + let times = getTimes(); + + [...times.keys()].forEach((key) => { + log.error(`${key}: ${times.get(key)}`); + }); + log.error(JSON.stringify(Array.from(times.entries()))); + + log.error('that is all'); +}); + +QUnit.on('runEnd', () => { + console.log('Done all tests'); + + let times = getTimes(); + + [...times.keys()].forEach((key) => { + log.error(`${key}: ${times.get(key)}`); + }); + log.error(JSON.stringify(Array.from(times.entries()))); + + log.error('that is all'); +}); + +QUnit.done(async () => { + console.log('Done all tests?? again'); + + let times = getTimes(); + + [...times.keys()].forEach((key) => { + log.error(`${key}: ${times.get(key)}`); + }); + + log.error('that is all…?'); + + return new Promise((resolve) => { + log.error('waiting for logs to flush'); + setTimeout(() => { + log.error('logs flushed?'); + resolve(); + }, 5000); + }); +}); + setApplication(Application.create(config.APP)); setup(QUnit.assert); diff --git a/packages/runtime-common/helpers/time.ts b/packages/runtime-common/helpers/time.ts new file mode 100644 index 0000000000..41e64ee59c --- /dev/null +++ b/packages/runtime-common/helpers/time.ts @@ -0,0 +1,49 @@ +let labelToTime = new Map(); +let labelToStartTime = new Map(); + +export async function time( + label: string, + promiseOrFunction: Promise | (() => Promise) | (() => any), +) { + let now = performance.now(); + + let result; + try { + if (typeof promiseOrFunction === 'function') { + result = await promiseOrFunction(); + } else { + result = await promiseOrFunction; + } + } finally { + let diff = performance.now() - now; + let lastTime = labelToTime.get(label) || 0; + labelToTime.set(label, lastTime + diff); + + return result; + } +} + +export async function timeStart(label: string) { + labelToStartTime.set(label, performance.now()); +} + +export async function timeEnd(label: string) { + let now = performance.now(); + let startTime = labelToStartTime.get(label); + if (startTime === undefined) { + console.error(`No start time found for label ${label}`); + return NaN; + } + + let diff = now - startTime; + let lastTime = labelToTime.get(label) || 0; + labelToTime.set(label, lastTime + diff); + + labelToStartTime.delete(label); + + return diff; +} + +export function getTimes() { + return labelToTime; +} diff --git a/packages/runtime-common/virtual-network.ts b/packages/runtime-common/virtual-network.ts index 72ff6f9aaa..322b088833 100644 --- a/packages/runtime-common/virtual-network.ts +++ b/packages/runtime-common/virtual-network.ts @@ -8,6 +8,7 @@ import { simulateNetworkBehaviors } from './fetcher'; export interface ResponseWithNodeStream extends Response { nodeStream?: Readable; } +import { time } from './helpers/time'; export type Handler = (req: Request) => Promise; @@ -134,10 +135,14 @@ export class VirtualNetwork { request: Request, direction: 'virtual-to-real' | 'real-to-virtual', ) { - let remappedUrl = this.resolveURLMapping(request.url, direction); + let remappedUrl = await time('mapRequest:resolveURLMapping', () => + this.resolveURLMapping(request.url, direction), + ); if (remappedUrl) { - return await buildRequest(remappedUrl, request); + return await time('mapRequest:buildRequest', () => + buildRequest(remappedUrl, request), + ); } else { return request; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 10b2c3439d..2c8d499ee4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,9 +22,6 @@ patchedDependencies: ember-css-url@1.0.0: hash: aglq5wzlwgv75jfevvip6brqo4 path: patches/ember-css-url@1.0.0.patch - ember-source@5.4.1: - hash: oko46qetwhgpor6xgs7vahyney - path: patches/ember-source@5.4.1.patch fastboot@4.1.0: hash: kizxbxhfcldguz4jcwonfduu2y path: patches/fastboot@4.1.0.patch @@ -83,7 +80,7 @@ importers: version: 6.3.1(@ember/test-waiters@3.0.2)(@glimmer/component@1.1.2)(@glimmer/tracking@1.1.2)(@glint/template@1.3.0)(ember-concurrency@3.1.1)(ember-source@5.4.1) ember-source: specifier: ~5.4.0 - version: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + version: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) ember-template-imports: specifier: ^4.1.1 version: 4.1.1 @@ -168,7 +165,7 @@ importers: version: 0.3.1(@babel/core@7.24.3)(@ember/test-helpers@3.3.0)(ember-source@5.4.1) ember-source: specifier: ~5.4.0 - version: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + version: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) devDependencies: '@babel/core': specifier: ^7.24.3 @@ -329,7 +326,7 @@ importers: version: 8.0.1 ember-source: specifier: ~5.4.0 - version: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + version: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) ember-template-imports: specifier: ^4.1.1 version: 4.1.1 @@ -536,7 +533,7 @@ importers: version: 6.3.1(@ember/test-waiters@3.0.2)(@glimmer/component@1.1.2)(@glimmer/tracking@1.1.2)(@glint/template@1.3.0)(ember-concurrency@3.1.1)(ember-source@5.4.1) ember-source: specifier: ^5.4.0 - version: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + version: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) ember-source-channel-url: specifier: ^3.0.0 version: 3.0.0 @@ -662,7 +659,7 @@ importers: version: 5.0.2(@ember/test-helpers@3.3.0)(@ember/test-waiters@3.0.2)(ember-modifier@4.1.0)(ember-source@5.4.1) ember-source: specifier: ^5.4.0 - version: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + version: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) ember-velcro: specifier: ^2.1.3 version: 2.1.3(ember-modifier@4.1.0)(ember-source@5.4.1) @@ -943,7 +940,7 @@ importers: version: 6.3.1(@ember/test-waiters@3.0.2)(@glimmer/component@1.1.2)(@glimmer/tracking@1.1.2)(@glint/template@1.3.0)(ember-concurrency@3.1.1)(ember-source@5.4.1) ember-source: specifier: ^5.4.0 - version: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + version: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) ember-source-channel-url: specifier: ^3.0.0 version: 3.0.0 @@ -1297,7 +1294,7 @@ importers: version: 1.0.3 ember-source: specifier: ~5.4.0 - version: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + version: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) ember-template-imports: specifier: ^4.1.1 version: 4.1.1 @@ -1765,7 +1762,7 @@ importers: version: link:../../vendor/ember-concurrency-async-plugin ember-source: specifier: ~5.4.0 - version: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + version: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) flat: specifier: ^5.0.2 version: 5.0.2 @@ -3638,7 +3635,7 @@ packages: '@glint/template': 1.3.0 ember-cli-babel: 7.26.11 ember-modifier-manager-polyfill: 1.2.0(@babel/core@7.24.3) - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) transitivePeerDependencies: - '@babel/core' - supports-color @@ -3688,7 +3685,7 @@ packages: ember-auto-import: 2.7.2(@glint/template@1.3.0)(webpack@5.89.0) ember-cli-babel: 7.26.11 ember-cli-htmlbars: 6.3.0 - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) transitivePeerDependencies: - '@glint/template' - supports-color @@ -4047,7 +4044,7 @@ packages: '@glint/template': 1.3.0 broccoli-funnel: 3.0.8 ember-cli-babel: 7.26.11 - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) transitivePeerDependencies: - supports-color @@ -10994,7 +10991,7 @@ packages: ember-source: ^3.28.0 || ^4.0.0 || >=5.0.0 dependencies: '@embroider/addon-shim': 1.8.7 - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) transitivePeerDependencies: - supports-color dev: false @@ -11006,7 +11003,7 @@ packages: dependencies: '@ember/test-waiters': 3.0.2 '@embroider/addon-shim': 1.8.7 - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) transitivePeerDependencies: - supports-color dev: true @@ -11018,7 +11015,7 @@ packages: dependencies: '@ember/test-waiters': 3.0.2 '@embroider/addon-shim': 1.8.7 - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) transitivePeerDependencies: - supports-color dev: true @@ -11123,7 +11120,7 @@ packages: decorator-transforms: 1.1.0(@babel/core@7.24.3) ember-element-helper: 0.8.6(@glint/environment-ember-loose@1.3.0)(@glint/template@1.3.0)(ember-source@5.4.1) ember-modifier: 4.1.0(ember-source@5.4.1) - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) ember-style-modifier: 4.3.1(@babel/core@7.24.3)(@ember/string@3.1.1)(ember-source@5.4.1) ember-truth-helpers: 4.0.3(ember-source@5.4.1) transitivePeerDependencies: @@ -11140,7 +11137,7 @@ packages: ember-source: ^3.28.0 || >= 4.0.0 dependencies: ember-cli-babel: 7.26.11 - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) git-repo-info: 2.1.1 transitivePeerDependencies: - supports-color @@ -12052,7 +12049,7 @@ packages: ember-cli-babel-plugin-helpers: 1.1.1 ember-cli-htmlbars: 6.3.0 ember-compatibility-helpers: 1.2.6(@babel/core@7.24.3) - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) transitivePeerDependencies: - '@babel/core' - supports-color @@ -12072,7 +12069,7 @@ packages: '@glimmer/tracking': 1.1.2 '@glint/template': 1.3.0 decorator-transforms: 1.1.0(@babel/core@7.24.3) - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) transitivePeerDependencies: - '@babel/core' - supports-color @@ -12092,7 +12089,7 @@ packages: '@glimmer/tracking': 1.1.2 '@glint/template': 1.3.0 decorator-transforms: 1.1.0(@babel/core@7.24.3) - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) transitivePeerDependencies: - '@babel/core' - supports-color @@ -12130,7 +12127,7 @@ packages: dependencies: '@embroider/addon-shim': 1.8.7 '@embroider/util': 1.12.0(@glint/environment-ember-loose@1.3.0)(@glint/template@1.3.0)(ember-source@5.4.1) - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) transitivePeerDependencies: - '@glint/environment-ember-loose' - '@glint/template' @@ -12186,7 +12183,7 @@ packages: ember-auto-import: 2.7.2(@glint/template@1.3.0)(webpack@5.89.0) ember-cli-babel: 8.2.0(@babel/core@7.24.3) ember-qunit: 8.0.2(@ember/test-helpers@3.3.0)(@glint/template@1.3.0)(ember-source@5.4.1)(qunit@2.20.1) - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) execa: 8.0.1 fs-extra: 11.2.0 js-yaml: 4.1.0 @@ -12253,7 +12250,7 @@ packages: ember-cli-babel: 7.26.11 ember-cli-typescript: 5.2.1 ember-cli-version-checker: 5.1.2 - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) transitivePeerDependencies: - supports-color @@ -12333,7 +12330,7 @@ packages: '@embroider/addon-shim': 1.8.7 ember-cli-normalize-entity-name: 1.0.0 ember-cli-string-utils: 1.1.0 - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) transitivePeerDependencies: - supports-color @@ -12379,7 +12376,7 @@ packages: dependencies: '@embroider/addon-shim': 1.8.7 '@simple-dom/document': 1.4.0 - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) transitivePeerDependencies: - supports-color dev: true @@ -12404,7 +12401,7 @@ packages: ember-assign-helper: 0.5.0(ember-source@5.4.1) ember-basic-dropdown: 8.0.4(patch_hash=4oyt6m5mwcw3sqhrngg4jt6oxa)(@ember/string@3.1.1)(@ember/test-helpers@3.3.0)(@glimmer/component@1.1.2)(@glimmer/tracking@1.1.2)(@glint/environment-ember-loose@1.3.0)(@glint/template@1.3.0)(ember-source@5.4.1) ember-concurrency: 4.0.1(@babel/core@7.24.3)(@glimmer/tracking@1.1.2)(@glint/template@1.3.0)(ember-source@5.4.1) - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) ember-truth-helpers: 4.0.3(ember-source@5.4.1) transitivePeerDependencies: - '@babel/core' @@ -12422,7 +12419,7 @@ packages: '@ember/test-helpers': 3.3.0(@glint/template@1.3.0)(ember-source@5.4.1)(webpack@5.89.0) '@embroider/addon-shim': 1.8.7 '@glimmer/component': 1.1.2(@babel/core@7.24.3) - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) transitivePeerDependencies: - '@babel/core' - supports-color @@ -12464,7 +12461,7 @@ packages: '@embroider/addon-shim': 1.8.7 '@embroider/macros': 1.15.0(@glint/template@1.3.0) ember-cli-test-loader: 3.1.0 - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) qunit: 2.20.1 transitivePeerDependencies: - '@glint/template' @@ -12481,7 +12478,7 @@ packages: ember-cli-babel: 7.26.11 ember-cli-htmlbars: 6.3.0 ember-modifier: 4.1.0(ember-source@5.4.1) - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) transitivePeerDependencies: - '@glint/template' - supports-color @@ -12498,7 +12495,7 @@ packages: optional: true dependencies: ember-cli-babel: 7.26.11 - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) transitivePeerDependencies: - supports-color dev: true @@ -12544,7 +12541,7 @@ packages: '@glint/template': 1.3.0 ember-async-data: 1.0.1(ember-source@5.4.1) ember-concurrency: 3.1.1(@babel/core@7.24.3)(ember-source@5.4.1) - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) transitivePeerDependencies: - supports-color dev: true @@ -12592,7 +12589,7 @@ packages: '@ember/test-waiters': 3.0.2 '@embroider/addon-shim': 1.8.7 ember-modifier: 4.1.0(ember-source@5.4.1) - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) transitivePeerDependencies: - supports-color dev: false @@ -12649,7 +12646,7 @@ packages: - supports-color dev: true - /ember-source@5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0): + /ember-source@5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0): resolution: {integrity: sha512-9nDumNOxODPHUDE0s/mDelOnpB416PrngeG88Gxha3NLbjR2sgQV3K6KQ/w8sCaTGB3qVXNZSi+RqLPO+d74Ig==} engines: {node: '>= 16.*'} peerDependencies: @@ -12708,7 +12705,6 @@ packages: - rsvp - supports-color - webpack - patched: true /ember-style-modifier@4.3.1(@babel/core@7.24.3)(@ember/string@3.1.1)(ember-source@5.4.1): resolution: {integrity: sha512-QO7w7WX0nbM9L2XGjsTuLDWOvh073XXSLUXRnuKRGbG2iLHDuoCXZsRCZu2Ov6yFt9vB7vnNszQ+C0bUxqloeg==} @@ -12721,7 +12717,7 @@ packages: csstype: 3.1.3 decorator-transforms: 1.1.0(@babel/core@7.24.3) ember-modifier: 4.1.0(ember-source@5.4.1) - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) transitivePeerDependencies: - '@babel/core' - supports-color @@ -12880,7 +12876,7 @@ packages: dependencies: '@embroider/addon-shim': 1.8.7 ember-functions-as-helper-polyfill: 2.1.2(ember-source@5.4.1) - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) transitivePeerDependencies: - supports-color @@ -12960,7 +12956,7 @@ packages: '@floating-ui/dom': 1.6.3 ember-functions-as-helper-polyfill: 2.1.2(ember-source@5.4.1) ember-modifier: 4.1.0(ember-source@5.4.1) - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) transitivePeerDependencies: - supports-color @@ -12972,7 +12968,7 @@ packages: dependencies: ember-cli-babel: 7.26.11 ember-cli-htmlbars: 6.3.0 - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) transitivePeerDependencies: - supports-color dev: true @@ -24088,7 +24084,7 @@ packages: broccoli-merge-trees: 4.2.0 broccoli-plugin: 4.0.7 ember-cli-babel: 8.2.0(@babel/core@7.24.3) - ember-source: 5.4.1(patch_hash=oko46qetwhgpor6xgs7vahyney)(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) + ember-source: 5.4.1(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.3.0)(rsvp@4.8.5)(webpack@5.89.0) transitivePeerDependencies: - supports-color dev: true