diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 69481f6a..4b035a9d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -65,8 +65,39 @@ jobs: run: pnpm lint tests_local_browsers: - runs-on: ubuntu-latest + runs-on: ${{ matrix.playwright-version == '1.37.1' && 'ubuntu-22.04' || 'ubuntu-latest' }} # Ubuntu 24.04 fails when trying to install the libasound2 package, a Playwright system dependency needs: build + strategy: + fail-fast: false + matrix: + browser: + - chromium + - firefox + - webkit + browser-version: + - latest + playwright-version: + - 1.51.0 # Latest/same as in `package.json` + include: + # Match Angular browser support when Angular 19 was released + - browser: chromium + browser-version: 130 # Previous major Chrome version when Angular 19 was released + playwright-version: 1.48.2 + - browser: firefox + browser-version: 130 # Firefox 131 was the previous major version when Angular 19 was released but this is not supported by any Playwright version + playwright-version: 1.48.2 + - browser: firefox + browser-version: esr-115 # Old ESR when Firefox 131 was released + playwright-version: 1.37.1 + - browser: firefox + browser-version: esr-128 # New ESR when Firefox 131 was released + playwright-version: 1.46.1 + - browser: webkit + browser-version: 16 # Previous major Safari version when Angular 19 was released + playwright-version: 1.45.3 + container: + image: mcr.microsoft.com/playwright:v${{ matrix.playwright-version }} + options: --user 1001 steps: - name: Checkout code uses: actions/checkout@v4 @@ -80,25 +111,31 @@ jobs: with: node-version: 20 cache: pnpm + - name: Cache Vitest cache + uses: actions/cache@v4 + with: + path: .vite + key: vitest-browser-${{ runner.os }}-${{ matrix.browser }}-${{ matrix.browser-version }}-configuration-${{ hashFiles('vitest.workspace.ts', '**/vite.config.mts', '**/test-setup.ts') }}-tests-${{ hashFiles('**/**.spec.ts') }}-${{ github.run_id }} + restore-keys: | + vitest-browser-${{ runner.os }}-${{ matrix.browser }}-${{ matrix.browser-version }}-configuration-${{ hashFiles('vitest.workspace.ts', '**/vite.config.mts', '**/test-setup.ts') }}-tests-${{ hashFiles('**/**.spec.ts') }} + vitest-browser-${{ runner.os }}-${{ matrix.browser }}-${{ matrix.browser-version }}-configuration-${{ hashFiles('vitest.workspace.ts', '**/vite.config.mts', '**/test-setup.ts') }} + vitest-browser-${{ runner.os }}-${{ matrix.browser }}-${{ matrix.browser-version }} + vitest-browser-${{ runner.os }}-${{ matrix.browser }} - name: Download package uses: actions/download-artifact@v4 with: name: package path: dist/releases - - name: Install Chrome - uses: browser-actions/setup-chrome@v1 - - name: Install Firefox - uses: browser-actions/setup-firefox@v1 - name: Install dependencies run: pnpm install + - name: Install Playwright (${{ matrix.playwright-version }}) + run: pnpm add --save-dev playwright@${{ matrix.playwright-version }} + # - name: Install Playwright system dependencies + # run: pnpm exec playwright install-deps ${{ matrix.browser }} + # - name: Install Playwright browser (${{ matrix.browser }} ${{ matrix.browser-version }}) + # run: pnpm exec playwright install ${{ matrix.browser }} - name: Run local browser tests - env: - TEST_PLATFORM: local - CIRCLECI: true - CIRCLE_NODE_INDEX: 0 - CIRCLE_NODE_TOTAL: 1 - KARMA_PARALLEL_BROWSERS: 1 - run: pnpm run test + run: pnpm exec nx run-many --targets=test --parallel=1 --browser=${{ matrix.browser }} tests_ssr: runs-on: ubuntu-latest @@ -116,6 +153,15 @@ jobs: with: node-version: 20 cache: pnpm + - name: Cache Vitest cache + uses: actions/cache@v4 + with: + path: .vite + key: vitest-ssr-${{ runner.os }}-configuration-${{ hashFiles('vitest.workspace.ts', '**/vite.config.ssr.mts', '**/test-setup.ssr.ts') }}-tests-${{ hashFiles('**/**.spec.ts') }}-${{ github.run_id }} + restore-keys: | + vitest-ssr-${{ runner.os }}-configuration-${{ hashFiles('vitest.workspace.ts', '**/vite.config.ssr.mts', '**/test-setup.ssr.ts') }}-tests-${{ hashFiles('**/**.spec.ts') }} + vitest-ssr-${{ runner.os }}-configuration-${{ hashFiles('vitest.workspace.ts', '**/vite.config.ssr.mts', '**/test-setup.ssr.ts') }} + vitest-ssr-${{ runner.os }} - name: Download package uses: actions/download-artifact@v4 with: @@ -124,7 +170,7 @@ jobs: - name: Install dependencies run: pnpm install - name: Run SSR tests - run: pnpm test:ssr + run: pnpm exec nx run-many --projects="@ngbracket/ngx-layout" --projects=universal-demo-app --targets=test --parallel=1 --configuration=ssr integration_tests: runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index a8216bbb..9688c5ea 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,7 @@ out-tsc .nx/cache .nx/workspace-data .angular + +vite.config.*.timestamp* +vitest.config.*.timestamp* +.vite diff --git a/.prettierignore b/.prettierignore index 12978cd3..4aa59b58 100644 --- a/.prettierignore +++ b/.prettierignore @@ -8,4 +8,5 @@ *.yml *.md *.js -*.json \ No newline at end of file +*.json +.vite diff --git a/nx.json b/nx.json index d0f8b13c..89fe51fd 100644 --- a/nx.json +++ b/nx.json @@ -31,10 +31,11 @@ "production": [ "default", "!{projectRoot}/tsconfig.spec.json", - "!{projectRoot}/**/*.spec.[jt]s", + "!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)", "!{projectRoot}/karma.conf.js", "!{projectRoot}/src/test.[jt]s", - "!{projectRoot}/test.[jt]s" + "!{projectRoot}/test.[jt]s", + "!{projectRoot}/(src/)?test-setup.[jt]s" ] }, "generators": { diff --git a/package.json b/package.json index fcb422fd..cb29f5e7 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,8 @@ "build:universal-demo-app": "nx run universal-demo-app:build:production", "serve:universal-demo-app": "nx run universal-demo-app:serve-ssr", "test": "nx test @ngbracket/ngx-layout", - "test:ssr": "webpack --config test/webpack-spec-ssr-bundle.js && jasmine --config=test/jasmine-ssr.json", + "test:ssr": "nx test @ngbracket/ngx-layout --configuration=ssr", + "test:watch": "vitest --watch --ui --project \"@ngbracket/ngx-layout\"", "lint": "stylelint projects/libs/**/*.scss --config=stylelint-config.json && tslint --project ./tsconfig.json --config tslint.json", "release": "pnpm build && pnpm stamp", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s", @@ -35,7 +36,8 @@ "update": "nx migrate latest", "dep-graph": "nx dep-graph", "help": "nx help", - "nx": "nx" + "nx": "nx", + "playwright:install": "playwright install --with-deps" }, "private": true, "requiredAngularVersion": ">=19.0.0", @@ -57,6 +59,9 @@ "zone.js": "^0.15.0" }, "devDependencies": { + "@analogjs/vite-plugin-angular": "~1.10.0", + "@analogjs/vitest-angular": "~1.10.0", + "@angular-devkit/architect": "~0.1900.0", "@angular-devkit/build-angular": "19.1.7", "@angular-devkit/core": "19.1.7", "@angular-devkit/schematics": "19.1.7", @@ -65,68 +70,51 @@ "@angular/compiler-cli": "19.1.6", "@eslint/js": "^9.20.0", "@angular/language-service": "19.1.6", - "@ngtools/webpack": "^19.1.7", "@nx/angular": "20.4.4", "@nx/eslint": "20.4.4", "@nx/eslint-plugin": "20.4.4", "@nx/js": "20.4.4", + "@nx/vite": "20.4.4", "@nx/web": "20.4.4", "@nx/workspace": "20.4.4", "@schematics/angular": "19.1.7", "@swc-node/register": "~1.9.2", "@swc/core": "~1.5.29", "@swc/helpers": "~0.5.15", + "@testing-library/jest-dom": "6.6.3", "@types/express": "^4.17.21", - "@types/jasmine": "^5.1.6", "@types/minimatch": "^5.1.2", "@types/node": "^20.17.19", "@typescript-eslint/utils": "^8.24.0", + "@vitest/browser": "^2.1.9", + "@vitest/coverage-v8": "^2.1.9", + "@vitest/ui": "^2.1.9", "angular-eslint": "^19.1.0", "autoprefixer": "^10.4.0", "conventional-changelog-cli": "^4.1.0", "eslint": "^9.20.1", "eslint-config-prettier": "^9.1.0", - "jasmine": "^5.6.0", - "jasmine-core": "^5.6.0", - "karma": "^6.4.4", - "karma-browserstack-launcher": "^1.6.0", - "karma-chrome-launcher": "^3.2.0", - "karma-coverage": "^2.2.1", - "karma-firefox-launcher": "^2.1.3", - "karma-jasmine": "^5.1.0", - "karma-jasmine-html-reporter": "^2.1.0", - "karma-parallel": "^0.3.1", - "karma-sauce-launcher": "^4.3.6", + "jsdom": "~22.1.0", "minimatch": "^9.0.5", "ng-packagr": "19.1.2", "nx": "20.4.4", + "playwright": "1.51.0", "postcss": "^8.5.2", "postcss-scss": "^4.0.9", - "prettier": "^3.4.2", "postcss-url": "~10.1.3", - "protractor": "^7.0.0", + "prettier": "^3.4.2", "stylelint": "^15.11.0", "ts-node": "^10.9.2", "tslint": "^6.1.3", "tsutils": "^3.21.0", "typescript": "^5.7.3", "typescript-eslint": "^8.24.0", - "webpack": "^5.98.0", - "webpack-cli": "^5.1.4" - }, - "pnpm": { - "onlyBuiltDependencies": [ - "@parcel/watcher", - "core-js", - "esbuild", - "lmdb", - "msgpackr-extract", - "nx", - "puppeteer" - ] + "vite": "^5.4.15", + "vitest": "^2.1.9" }, "resolutions": { - "browser-sync-client": "2.29.3" + "browser-sync-client": "2.29.3", + "less": "^4.2.0" }, "volta": { "node": "20.18.1" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fe30c70e..49e931c7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,6 +6,7 @@ settings: overrides: browser-sync-client: 2.29.3 + less: ^4.2.0 importers: @@ -28,7 +29,7 @@ importers: version: 19.1.6(@angular/common@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0))(rxjs@7.8.1))(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0))(@angular/platform-browser@19.1.6(@angular/animations@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(@angular/common@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0))(rxjs@7.8.1))(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(rxjs@7.8.1) '@angular/material': specifier: 19.1.4 - version: 19.1.4(39e0b8558b9404228f22388017d0fcb2) + version: 19.1.4(n6jpcyv44zoxdsk6dbpkqfynb4) '@angular/platform-browser': specifier: 19.1.6 version: 19.1.6(@angular/animations@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(@angular/common@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0))(rxjs@7.8.1))(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)) @@ -43,7 +44,7 @@ importers: version: 19.1.6(@angular/common@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0))(rxjs@7.8.1))(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0))(@angular/platform-browser@19.1.6(@angular/animations@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(@angular/common@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0))(rxjs@7.8.1))(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(rxjs@7.8.1) '@angular/ssr': specifier: 19.1.7 - version: 19.1.7(63d62672e91cb79b25ab56a14eb9de42) + version: 19.1.7(ufzxe4wxd22z3jdz3d3mzy5roy) express: specifier: ^4.21.2 version: 4.21.2 @@ -57,9 +58,18 @@ importers: specifier: ^0.15.0 version: 0.15.0 devDependencies: + '@analogjs/vite-plugin-angular': + specifier: ~1.10.0 + version: 1.10.3(@angular-devkit/build-angular@19.1.7(niesootelh3ljsp4qcrbzmwmg4))(@angular/build@19.1.7(jljg5ymofxdt23nnuovdntbs2q)) + '@analogjs/vitest-angular': + specifier: ~1.10.0 + version: 1.10.3(@analogjs/vite-plugin-angular@1.10.3(@angular-devkit/build-angular@19.1.7(niesootelh3ljsp4qcrbzmwmg4))(@angular/build@19.1.7(jljg5ymofxdt23nnuovdntbs2q)))(@angular-devkit/architect@0.1900.4(chokidar@4.0.3))(vitest@2.1.9) + '@angular-devkit/architect': + specifier: ~0.1900.0 + version: 0.1900.4(chokidar@4.0.3) '@angular-devkit/build-angular': specifier: 19.1.7 - version: 19.1.7(e4445a5fbbe66ea2f7f1b19c81f2a18c) + version: 19.1.7(niesootelh3ljsp4qcrbzmwmg4) '@angular-devkit/core': specifier: 19.1.7 version: 19.1.7(chokidar@4.0.3) @@ -81,45 +91,45 @@ importers: '@eslint/js': specifier: ^9.20.0 version: 9.20.0 - '@ngtools/webpack': - specifier: ^19.1.7 - version: 19.1.7(@angular/compiler-cli@19.1.6(@angular/compiler@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.7.3))(typescript@5.7.3)(webpack@5.98.0) '@nx/angular': specifier: 20.4.4 - version: 20.4.4(@angular-devkit/build-angular@19.1.7(e4445a5fbbe66ea2f7f1b19c81f2a18c))(@angular-devkit/core@19.1.7(chokidar@4.0.3))(@angular-devkit/schematics@19.1.7(chokidar@4.0.3))(@babel/traverse@7.26.9)(@rspack/core@1.2.3(@swc/helpers@0.5.15))(@schematics/angular@19.1.7(chokidar@4.0.3))(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)(@types/node@20.17.19)(@zkochan/js-yaml@0.0.7)(eslint@9.20.1(jiti@1.21.7))(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rxjs@7.8.1)(typescript@5.7.3)(webpack-cli@5.1.4) + version: 20.4.4(@angular-devkit/build-angular@19.1.7(niesootelh3ljsp4qcrbzmwmg4))(@angular-devkit/core@19.1.7(chokidar@4.0.3))(@angular-devkit/schematics@19.1.7(chokidar@4.0.3))(@babel/traverse@7.26.9)(@rspack/core@1.2.3(@swc/helpers@0.5.15))(@schematics/angular@19.1.7(chokidar@4.0.3))(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)(@types/node@20.17.19)(@zkochan/js-yaml@0.0.7)(eslint@9.20.1(jiti@1.21.7))(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rxjs@7.8.1)(typescript@5.7.3) '@nx/eslint': specifier: 20.4.4 - version: 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(@zkochan/js-yaml@0.0.7)(eslint@9.20.1(jiti@1.21.7))(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))) + version: 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(@zkochan/js-yaml@0.0.7)(eslint@9.20.1(jiti@1.21.7))(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))) '@nx/eslint-plugin': specifier: 20.4.4 - version: 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(@typescript-eslint/parser@8.24.0(eslint@9.20.1(jiti@1.21.7))(typescript@5.7.3))(eslint-config-prettier@9.1.0(eslint@9.20.1(jiti@1.21.7)))(eslint@9.20.1(jiti@1.21.7))(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) + version: 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(@typescript-eslint/parser@8.24.0(eslint@9.20.1(jiti@1.21.7))(typescript@5.7.3))(eslint-config-prettier@9.1.0(eslint@9.20.1(jiti@1.21.7)))(eslint@9.20.1(jiti@1.21.7))(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) '@nx/js': specifier: 20.4.4 - version: 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) + version: 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) + '@nx/vite': + specifier: 20.4.4 + version: 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3)(vite@5.4.15(@types/node@20.17.19)(less@4.2.2)(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0))(vitest@2.1.9) '@nx/web': specifier: 20.4.4 - version: 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) + version: 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) '@nx/workspace': specifier: 20.4.4 - version: 20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)) + version: 20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)) '@schematics/angular': specifier: 19.1.7 version: 19.1.7(chokidar@4.0.3) '@swc-node/register': specifier: ~1.9.2 - version: 1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3) + version: 1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3) '@swc/core': specifier: ~1.5.29 version: 1.5.29(@swc/helpers@0.5.15) '@swc/helpers': specifier: ~0.5.15 version: 0.5.15 + '@testing-library/jest-dom': + specifier: 6.6.3 + version: 6.6.3 '@types/express': specifier: ^4.17.21 version: 4.17.21 - '@types/jasmine': - specifier: ^5.1.6 - version: 5.1.6 '@types/minimatch': specifier: ^5.1.2 version: 5.1.2 @@ -129,6 +139,15 @@ importers: '@typescript-eslint/utils': specifier: ^8.24.0 version: 8.24.0(eslint@9.20.1(jiti@1.21.7))(typescript@5.7.3) + '@vitest/browser': + specifier: ^2.1.9 + version: 2.1.9(@types/node@20.17.19)(playwright@1.51.0)(typescript@5.7.3)(vite@5.4.15(@types/node@20.17.19)(less@4.2.2)(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0))(vitest@2.1.9)(webdriverio@6.12.1(encoding@0.1.13)(typescript@5.7.3)) + '@vitest/coverage-v8': + specifier: ^2.1.9 + version: 2.1.9(@vitest/browser@2.1.9)(vitest@2.1.9) + '@vitest/ui': + specifier: ^2.1.9 + version: 2.1.9(vitest@2.1.9) angular-eslint: specifier: ^19.1.0 version: 19.1.0(chokidar@4.0.3)(eslint@9.20.1(jiti@1.21.7))(typescript-eslint@8.24.0(eslint@9.20.1(jiti@1.21.7))(typescript@5.7.3))(typescript@5.7.3) @@ -144,39 +163,9 @@ importers: eslint-config-prettier: specifier: ^9.1.0 version: 9.1.0(eslint@9.20.1(jiti@1.21.7)) - jasmine: - specifier: ^5.6.0 - version: 5.6.0 - jasmine-core: - specifier: ^5.6.0 - version: 5.6.0 - karma: - specifier: ^6.4.4 - version: 6.4.4 - karma-browserstack-launcher: - specifier: ^1.6.0 - version: 1.6.0(karma@6.4.4) - karma-chrome-launcher: - specifier: ^3.2.0 - version: 3.2.0 - karma-coverage: - specifier: ^2.2.1 - version: 2.2.1 - karma-firefox-launcher: - specifier: ^2.1.3 - version: 2.1.3 - karma-jasmine: - specifier: ^5.1.0 - version: 5.1.0(karma@6.4.4) - karma-jasmine-html-reporter: - specifier: ^2.1.0 - version: 2.1.0(jasmine-core@5.6.0)(karma-jasmine@5.1.0(karma@6.4.4))(karma@6.4.4) - karma-parallel: - specifier: ^0.3.1 - version: 0.3.1(karma@6.4.4) - karma-sauce-launcher: - specifier: ^4.3.6 - version: 4.3.6(encoding@0.1.13)(typescript@5.7.3) + jsdom: + specifier: ~22.1.0 + version: 22.1.0 minimatch: specifier: ^9.0.5 version: 9.0.5 @@ -185,7 +174,10 @@ importers: version: 19.1.2(@angular/compiler-cli@19.1.6(@angular/compiler@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.7.3))(tslib@2.8.1)(typescript@5.7.3) nx: specifier: 20.4.4 - version: 20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)) + version: 20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)) + playwright: + specifier: 1.51.0 + version: 1.51.0 postcss: specifier: ^8.5.2 version: 8.5.2 @@ -198,9 +190,6 @@ importers: prettier: specifier: ^3.4.2 version: 3.5.3 - protractor: - specifier: ^7.0.0 - version: 7.0.0 stylelint: specifier: ^15.11.0 version: 15.11.0(typescript@5.7.3) @@ -219,22 +208,47 @@ importers: typescript-eslint: specifier: ^8.24.0 version: 8.24.0(eslint@9.20.1(jiti@1.21.7))(typescript@5.7.3) - webpack: - specifier: ^5.98.0 - version: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) - webpack-cli: - specifier: ^5.1.4 - version: 5.1.4(webpack-dev-server@5.2.0)(webpack@5.98.0) + vite: + specifier: ^5.4.15 + version: 5.4.15(@types/node@20.17.19)(less@4.2.2)(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0) + vitest: + specifier: ^2.1.9 + version: 2.1.9(@types/node@20.17.19)(@vitest/browser@2.1.9)(@vitest/ui@2.1.9)(happy-dom@17.3.1)(jsdom@22.1.0)(less@4.2.2)(msw@2.7.3(@types/node@20.17.19)(typescript@5.7.3))(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0) packages: '@adobe/css-tools@4.3.3': resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} + '@adobe/css-tools@4.4.2': + resolution: {integrity: sha512-baYZExFpsdkBNuvGKTKWCwKH57HRZLVtycZS05WTQNVOiXVSeAki3nU35zlRbToeMW8aHlJfyS+1C4BOv27q0A==} + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@analogjs/vite-plugin-angular@1.10.3': + resolution: {integrity: sha512-3EWappJ5K6YopJpq2QRVim8qZgaTQJD0RB4G/DXo+Fg0s27BjDORiaeixqLHIwhUzzZ5FR2d1S7dgIi9zOg4sA==} + peerDependencies: + '@angular-devkit/build-angular': ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + '@angular/build': ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@angular-devkit/build-angular': + optional: true + '@angular/build': + optional: true + + '@analogjs/vitest-angular@1.10.3': + resolution: {integrity: sha512-b05ALlS8S9JH5kJ8ezu1E0Y0zEi9SueEMKEI6PGMP5+y06hGg5UIjoI3U1Lxr3op3NLnN5daNXzpcWWY7x8mLQ==} + peerDependencies: + '@analogjs/vite-plugin-angular': '*' + '@angular-devkit/architect': ^0.1500.0 || ^0.1600.0 || ^0.1700.0 || ^0.1800.0 || ^0.1900.0 || next + vitest: ^1.3.1 || ^2.0.0 + + '@angular-devkit/architect@0.1900.4': + resolution: {integrity: sha512-9XwZ21BPYS2vGOOwVB40fsMyuwJT0H1lWaAMo8Umwi6XbKBVfaWbEhjtR9dlarrySKtFuTz9hmTZkIXHLjXPdA==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + '@angular-devkit/architect@0.1901.7': resolution: {integrity: sha512-qltyebfbej7joIKZVH8EFfrVDrkw0p9N9ja3A0XeU1sl2vlepHNAQdVm0Os8Vy2XjjyHvT5bXWE3G3/221qEKw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -290,6 +304,15 @@ packages: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 + '@angular-devkit/core@19.0.4': + resolution: {integrity: sha512-+imxIj1JLr2hbUYQePHgkTUKr0VmlxNSZvIREcCWtXUcdCypiwhJAtGXv6MfpB4hAx+FJZYEpVWeLwYOS/gW0A==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + chokidar: ^4.0.0 + peerDependenciesMeta: + chokidar: + optional: true + '@angular-devkit/core@19.1.7': resolution: {integrity: sha512-q0I6L9KTqyQ7D5M8H+fWLT+yjapvMNb7SRdfU6GzmexO66Dpo83q4HDzuDKIPDF29Yl0ELs9ICJqe9yUXh6yDQ==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -1060,6 +1083,18 @@ packages: resolution: {integrity: sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==} engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@bundled-es-modules/cookie@2.0.1': + resolution: {integrity: sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw==} + + '@bundled-es-modules/statuses@1.0.1': + resolution: {integrity: sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==} + + '@bundled-es-modules/tough-cookie@0.1.6': + resolution: {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==} + '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -1091,10 +1126,6 @@ packages: peerDependencies: postcss-selector-parser: ^6.0.13 - '@discoveryjs/json-ext@0.5.7': - resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} - engines: {node: '>=10.0.0'} - '@discoveryjs/json-ext@0.6.3': resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} engines: {node: '>=14.17.0'} @@ -1108,102 +1139,204 @@ packages: '@emnapi/wasi-threads@1.0.1': resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + '@esbuild/aix-ppc64@0.24.2': resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm64@0.24.2': resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} engines: {node: '>=18'} cpu: [arm64] os: [android] + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + '@esbuild/android-arm@0.24.2': resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} engines: {node: '>=18'} cpu: [arm] os: [android] + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + '@esbuild/android-x64@0.24.2': resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} engines: {node: '>=18'} cpu: [x64] os: [android] + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-arm64@0.24.2': resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + '@esbuild/darwin-x64@0.24.2': resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-arm64@0.24.2': resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + '@esbuild/freebsd-x64@0.24.2': resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm64@0.24.2': resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + '@esbuild/linux-arm@0.24.2': resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} engines: {node: '>=18'} cpu: [arm] os: [linux] + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-ia32@0.24.2': resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-loong64@0.24.2': resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-mips64el@0.24.2': resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-ppc64@0.24.2': resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-riscv64@0.24.2': resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-s390x@0.24.2': resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + '@esbuild/linux-x64@0.24.2': resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} engines: {node: '>=18'} @@ -1216,6 +1349,12 @@ packages: cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + '@esbuild/netbsd-x64@0.24.2': resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} engines: {node: '>=18'} @@ -1228,30 +1367,60 @@ packages: cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + '@esbuild/openbsd-x64@0.24.2': resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + '@esbuild/sunos-x64@0.24.2': resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} engines: {node: '>=18'} cpu: [x64] os: [sunos] + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-arm64@0.24.2': resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-ia32@0.24.2': resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + '@esbuild/win32-x64@0.24.2': resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} engines: {node: '>=18'} @@ -1700,6 +1869,10 @@ packages: cpu: [x64] os: [win32] + '@mswjs/interceptors@0.37.6': + resolution: {integrity: sha512-wK+5pLK5XFmgtH3aQ2YVvA3HohS3xqV/OxuVOdNx9Wpnz7VE/fnC+e1A7ln6LFYeck7gOJ/dsZV6OLplOtAJ2w==} + engines: {node: '>=18'} + '@napi-rs/nice-android-arm-eabi@1.0.1': resolution: {integrity: sha512-5qpvOu5IGwDo7MEKVqqyAxF90I6aLj4n07OzpARdgDRfz8UbBztTByBp0RC59r3J1Ij8uzYi6jI7r5Lws7nn6w==} engines: {node: '>= 10'} @@ -1963,6 +2136,12 @@ packages: cpu: [x64] os: [win32] + '@nx/vite@20.4.4': + resolution: {integrity: sha512-RI3piere03o0iUxyAox2SYU9OQKAFlnT3WGUu7lciiNBUbksn3cZz0oOjWSQXZ+GhSUeW9E1Zqkyi/NF3n729A==} + peerDependencies: + vite: ^5.0.0 + vitest: ^1.3.1 || ^2.0.0 + '@nx/web@20.4.4': resolution: {integrity: sha512-A7AIjphL2v9EzBNYURlyK5awL2nM46oLqfp6wIJt5Un6z4to0nBLfY6Fg9gaZa/X4xnoQy/qgZfEzsVurFYrpQ==} @@ -1972,6 +2151,15 @@ packages: '@nx/workspace@20.4.4': resolution: {integrity: sha512-4iIN9GWLHCycCUTAaVeR7TAk2t9wSgxQN/znvSmG5eWSS2ri9XjeN6/8kpoTDBpmQ1/4gAKSMGo9BNMlbvqD2g==} + '@open-draft/deferred-promise@2.2.0': + resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} + + '@open-draft/logger@0.3.0': + resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} + + '@open-draft/until@2.1.0': + resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} + '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} engines: {node: '>= 10.0.0'} @@ -2063,6 +2251,9 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} + '@polka/url@1.0.0-next.28': + resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + '@puppeteer/browsers@2.7.1': resolution: {integrity: sha512-MK7rtm8JjaxPN7Mf1JdZIZKPD2Z+W7osvrC1vjpvfOX1K0awDIHYbNi89f7eotp7eMUn2shWnt03HwVbriXtKQ==} engines: {node: '>=18'} @@ -2376,10 +2567,6 @@ packages: '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - '@sindresorhus/is@0.7.0': - resolution: {integrity: sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==} - engines: {node: '>=4'} - '@sindresorhus/is@4.6.0': resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} @@ -2482,13 +2669,31 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@swc/types@0.1.17': - resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==} + '@swc/types@0.1.19': + resolution: {integrity: sha512-WkAZaAfj44kh/UFdAQcrMP1I0nwRqpt27u+08LMBYMqmQfwwMofYoMh/48NGkMMRfC4ynpfwRbJuu8ErfNloeA==} '@szmarczak/http-timer@4.0.6': resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} + '@testing-library/dom@10.4.0': + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} + engines: {node: '>=18'} + + '@testing-library/jest-dom@6.6.3': + resolution: {integrity: sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + + '@testing-library/user-event@14.6.1': + resolution: {integrity: sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + + '@tootallnate/once@2.0.0': + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} @@ -2496,6 +2701,9 @@ packages: resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} + '@ts-morph/common@0.22.0': + resolution: {integrity: sha512-HqNBuV/oIlMKdkLshXd1zKBqNQCsuPEsgQOkfFQ/eUKjRlwndXW1AjN9LVkBEIukm00gGXSRmfkl0Wv5VXLnlw==} + '@tsconfig/node10@1.0.11': resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} @@ -2519,6 +2727,9 @@ packages: '@tybys/wasm-util@0.9.0': resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + '@types/body-parser@1.19.5': resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} @@ -2534,6 +2745,9 @@ packages: '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + '@types/cookie@0.6.0': + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + '@types/cors@2.8.17': resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} @@ -2573,9 +2787,6 @@ packages: '@types/istanbul-reports@3.0.4': resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - '@types/jasmine@5.1.6': - resolution: {integrity: sha512-JDwKwipGFDwf021BtRTuluYe1aMDNimtO72ygPrVXnZSC8Df2V22AHeIgGa84tbF4SLkRvN+dJnlV8aMwQjkVw==} - '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -2643,6 +2854,15 @@ packages: '@types/sockjs@0.3.36': resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} + '@types/statuses@2.0.5': + resolution: {integrity: sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==} + + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/which@1.3.2': resolution: {integrity: sha512-8oDqyLC7eD4HM307boe2QWKyuzdzWBj56xI/imSl2cpL+U3tCMaTAkMJ4ee5JBZ/FsOJlvRGeIShiZDAl1qERA==} @@ -2711,6 +2931,64 @@ packages: peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 + '@vitest/browser@2.1.9': + resolution: {integrity: sha512-AHDanTP4Ed6J5R6wRBcWRQ+AxgMnNJxsbaa229nFQz5KOMFZqlW11QkIDoLgCjBOpQ1+c78lTN5jVxO8ME+S4w==} + peerDependencies: + playwright: '*' + safaridriver: '*' + vitest: 2.1.9 + webdriverio: '*' + peerDependenciesMeta: + playwright: + optional: true + safaridriver: + optional: true + webdriverio: + optional: true + + '@vitest/coverage-v8@2.1.9': + resolution: {integrity: sha512-Z2cOr0ksM00MpEfyVE8KXIYPEcBFxdbLSs56L8PO0QQMxt/6bDj45uQfxoc96v05KW3clk7vvgP0qfDit9DmfQ==} + peerDependencies: + '@vitest/browser': 2.1.9 + vitest: 2.1.9 + peerDependenciesMeta: + '@vitest/browser': + optional: true + + '@vitest/expect@2.1.9': + resolution: {integrity: sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==} + + '@vitest/mocker@2.1.9': + resolution: {integrity: sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@2.1.9': + resolution: {integrity: sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==} + + '@vitest/runner@2.1.9': + resolution: {integrity: sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g==} + + '@vitest/snapshot@2.1.9': + resolution: {integrity: sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==} + + '@vitest/spy@2.1.9': + resolution: {integrity: sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ==} + + '@vitest/ui@2.1.9': + resolution: {integrity: sha512-izzd2zmnk8Nl5ECYkW27328RbQ1nKvkm6Bb5DAaz1Gk59EbLkiCMa6OLT0NoaAYTjOFS6N+SMYW1nh4/9ljPiw==} + peerDependencies: + vitest: 2.1.9 + + '@vitest/utils@2.1.9': + resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==} + '@wdio/config@6.12.1': resolution: {integrity: sha512-V5hTIW5FNlZ1W33smHF4Rd5BKjGW2KeYhyXDQfXHjqLCeRiirZ9fABCo9plaVQDnwWSUMWYaAaIAifV82/oJCQ==} engines: {node: '>=10.0.0'} @@ -2776,31 +3054,6 @@ packages: '@webassemblyjs/wast-printer@1.14.1': resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} - '@webpack-cli/configtest@2.1.1': - resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==} - engines: {node: '>=14.15.0'} - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - - '@webpack-cli/info@2.0.2': - resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==} - engines: {node: '>=14.15.0'} - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - - '@webpack-cli/serve@2.0.5': - resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==} - engines: {node: '>=14.15.0'} - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - webpack-dev-server: '*' - peerDependenciesMeta: - webpack-dev-server: - optional: true - '@xtuc/ieee754@1.2.0': resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} @@ -2822,8 +3075,9 @@ packages: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true - abbrev@1.0.9: - resolution: {integrity: sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==} + abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead abbrev@3.0.0: resolution: {integrity: sha512-+/kfrslGQ7TNV2ecmQwMJj/B65g5KVq1/L3SGVZ3tCYGqlzFuFCGBZJtMP99wH3NpEUyAjn0zPdPUg0D+DwrOA==} @@ -2910,10 +3164,6 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - amdefine@1.0.1: - resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} - engines: {node: '>=0.4.2'} - angular-eslint@19.1.0: resolution: {integrity: sha512-teauJL5Q6Cc7PBbGG52LF3Lf2s3aI5/Ksoh3MAsJ8Vgsf2cDwBjVxFZqTbAhMYzYp2UzVJ5knXIsammYHCVNBw==} peerDependencies: @@ -2974,13 +3224,6 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - arch@2.2.0: - resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} - - archive-type@4.0.0: - resolution: {integrity: sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==} - engines: {node: '>=4'} - archiver-utils@2.1.0: resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} engines: {node: '>= 6'} @@ -3002,6 +3245,9 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + aria-query@5.3.2: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} @@ -3039,6 +3285,10 @@ packages: resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + ast-types@0.13.4: resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} engines: {node: '>=4'} @@ -3047,9 +3297,6 @@ packages: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} - async@1.5.2: - resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} - async@2.6.4: resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} @@ -3195,29 +3442,10 @@ packages: big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - bin-check@4.1.0: - resolution: {integrity: sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==} - engines: {node: '>=4'} - - bin-version-check@4.0.0: - resolution: {integrity: sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ==} - engines: {node: '>=6'} - - bin-version@3.1.0: - resolution: {integrity: sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ==} - engines: {node: '>=6'} - - bin-wrapper@4.1.0: - resolution: {integrity: sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q==} - engines: {node: '>=6'} - binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} - bl@1.2.3: - resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==} - bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -3236,10 +3464,6 @@ packages: boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - boolean@3.2.0: - resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -3255,12 +3479,6 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - browserstack-local@1.5.6: - resolution: {integrity: sha512-s0GadAkyE1XHxnmymb9atogTZbA654bcFpqGkcYEtYPaPvuvVfSXR0gw8ojn0I0Td2HEMJcGtdrkBjb1Fi/HmQ==} - - browserstack@1.5.3: - resolution: {integrity: sha512-AO+mECXsW4QcqC9bxwM29O7qWa7bJT94uBFzeb5brylIQwawuEziwq20dPYbins95GlWzOawgyDNdjYAo32EKg==} - browserstack@1.6.1: resolution: {integrity: sha512-GxtFjpIaKdbAyzHfFDKixKO8IBT7wR3NjbzrGc78nNs/Ciys9wU3/nBtsqsWv5nDSrdI5tz0peKuzCPuNXNUiw==} @@ -3269,18 +3487,9 @@ packages: engines: {node: '>= 0.4.0'} hasBin: true - buffer-alloc-unsafe@1.1.0: - resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} - - buffer-alloc@1.2.0: - resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} - buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - buffer-fill@1.0.0: - resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -3299,6 +3508,10 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + cacache@19.0.1: resolution: {integrity: sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -3311,9 +3524,6 @@ packages: resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} engines: {node: '>=10.6.0'} - cacheable-request@2.1.4: - resolution: {integrity: sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==} - cacheable-request@7.0.4: resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} engines: {node: '>=8'} @@ -3330,9 +3540,6 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - camel-case@4.1.2: - resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - camelcase-keys@7.0.2: resolution: {integrity: sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==} engines: {node: '>=12'} @@ -3351,15 +3558,12 @@ packages: caniuse-lite@1.0.30001699: resolution: {integrity: sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w==} - capital-case@1.0.4: - resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} - caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - caw@2.0.1: - resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} - engines: {node: '>=4'} + chai@5.2.0: + resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} + engines: {node: '>=12'} chalk@1.1.3: resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} @@ -3377,12 +3581,13 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - change-case@4.1.2: - resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} - chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -3456,9 +3661,6 @@ packages: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} - clone-response@1.0.2: - resolution: {integrity: sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==} - clone-response@1.0.3: resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} @@ -3470,6 +3672,9 @@ packages: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + code-block-writer@12.0.0: + resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==} + color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -3497,10 +3702,6 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} - commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - commander@13.1.0: resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} engines: {node: '>=18'} @@ -3536,9 +3737,6 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - config-chain@1.1.13: - resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} - confusing-browser-globals@1.0.11: resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} @@ -3550,9 +3748,6 @@ packages: resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} engines: {node: '>= 0.10.0'} - constant-case@3.0.4: - resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} - content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} @@ -3667,9 +3862,6 @@ packages: core-js-compat@3.40.0: resolution: {integrity: sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==} - core-js@3.40.0: - resolution: {integrity: sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==} - core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} @@ -3722,13 +3914,6 @@ packages: resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} engines: {node: '>=12.0.0'} - cross-spawn@5.1.0: - resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} - - cross-spawn@6.0.6: - resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==} - engines: {node: '>=4.8'} - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -3813,6 +3998,9 @@ packages: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -3840,6 +4028,10 @@ packages: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + cssstyle@3.0.0: + resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} + engines: {node: '>=14'} + cuint@0.2.2: resolution: {integrity: sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==} @@ -3858,6 +4050,10 @@ packages: resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} engines: {node: '>= 14'} + data-urls@4.0.0: + resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} + engines: {node: '>=14'} + date-format@4.0.14: resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} engines: {node: '>=4.0'} @@ -3908,37 +4104,16 @@ packages: resolution: {integrity: sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==} engines: {node: '>=10'} - decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - - decompress-response@3.3.0: - resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} - engines: {node: '>=4'} + decimal.js@10.5.0: + resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} - decompress-tar@4.1.1: - resolution: {integrity: sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==} - engines: {node: '>=4'} - - decompress-tarbz2@4.1.1: - resolution: {integrity: sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==} - engines: {node: '>=4'} - - decompress-targz@4.1.1: - resolution: {integrity: sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==} - engines: {node: '>=4'} - - decompress-unzip@4.0.1: - resolution: {integrity: sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==} - engines: {node: '>=4'} - - decompress@4.2.1: - resolution: {integrity: sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==} - engines: {node: '>=4'} + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} deep-equal@1.0.1: resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} @@ -3965,10 +4140,6 @@ packages: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} @@ -3977,10 +4148,6 @@ packages: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - degenerator@5.0.1: resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} engines: {node: '>= 14'} @@ -4008,6 +4175,10 @@ packages: resolution: {integrity: sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==} engines: {node: '>=4'} + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -4058,6 +4229,12 @@ packages: resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} engines: {node: '>=6'} + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + + dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + dom-serialize@2.2.1: resolution: {integrity: sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==} @@ -4067,6 +4244,11 @@ packages: domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + deprecated: Use your platform's native DOMException instead + domhandler@5.0.3: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} @@ -4074,9 +4256,6 @@ packages: domutils@3.2.2: resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -4089,20 +4268,10 @@ packages: resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} engines: {node: '>=12'} - download@7.1.0: - resolution: {integrity: sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==} - engines: {node: '>=6'} - 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==} - - duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -4178,11 +4347,6 @@ packages: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} - envinfo@7.14.0: - resolution: {integrity: sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==} - engines: {node: '>=4'} - hasBin: true - environment@1.1.0: resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} engines: {node: '>=18'} @@ -4216,9 +4380,6 @@ packages: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} - es6-error@4.1.1: - resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} - es6-promise@4.2.8: resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} @@ -4230,8 +4391,13 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.24.2: - resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.24.2: + resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} engines: {node: '>=18'} hasBin: true @@ -4250,11 +4416,6 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - escodegen@1.8.1: - resolution: {integrity: sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==} - engines: {node: '>=0.12.0'} - hasBin: true - escodegen@2.1.0: resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} engines: {node: '>=6.0'} @@ -4300,11 +4461,6 @@ packages: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - esprima@2.7.3: - resolution: {integrity: sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==} - engines: {node: '>=0.10.0'} - hasBin: true - esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -4318,10 +4474,6 @@ packages: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} - estraverse@1.9.3: - resolution: {integrity: sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==} - engines: {node: '>=0.10.0'} - estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} @@ -4333,6 +4485,9 @@ packages: estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -4341,9 +4496,6 @@ packages: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} - event-stream@3.3.4: - resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} - eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} @@ -4354,18 +4506,6 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - execa@0.7.0: - resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==} - engines: {node: '>=4'} - - execa@1.0.0: - resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} - engines: {node: '>=6'} - - executable@4.1.1: - resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} - engines: {node: '>=4'} - exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} @@ -4374,6 +4514,10 @@ packages: resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} engines: {node: '>=0.10.0'} + expect-type@1.2.0: + resolution: {integrity: sha512-80F22aiJ3GLyVnS/B3HzgR6RelZVumzj9jkL0Rhz4h0xYbNW9PjlQz5h3J/SShErbXBc295vseR4/MIbVmUbeA==} + engines: {node: '>=12.0.0'} + exponential-backoff@3.1.2: resolution: {integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==} @@ -4381,14 +4525,6 @@ packages: resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} engines: {node: '>= 0.10.0'} - ext-list@2.2.2: - resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==} - engines: {node: '>=0.10.0'} - - ext-name@5.0.0: - resolution: {integrity: sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==} - engines: {node: '>=4'} - extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -4449,6 +4585,9 @@ packages: picomatch: optional: true + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} @@ -4461,37 +4600,9 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} - file-type@3.9.0: - resolution: {integrity: sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==} - engines: {node: '>=0.10.0'} - - file-type@4.4.0: - resolution: {integrity: sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==} - engines: {node: '>=4'} - - file-type@5.2.0: - resolution: {integrity: sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==} - engines: {node: '>=4'} - - file-type@6.2.0: - resolution: {integrity: sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==} - engines: {node: '>=4'} - - file-type@8.1.0: - resolution: {integrity: sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==} - engines: {node: '>=6'} - filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} - filename-reserved-regex@2.0.0: - resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==} - engines: {node: '>=4'} - - filenamify@2.1.0: - resolution: {integrity: sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==} - engines: {node: '>=4'} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -4532,10 +4643,6 @@ packages: resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - find-versions@3.2.0: - resolution: {integrity: sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==} - engines: {node: '>=6'} - flat-cache@3.2.0: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} @@ -4582,10 +4689,6 @@ packages: resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} engines: {node: '>= 0.12'} - form-data@3.0.3: - resolution: {integrity: sha512-q5YBMeWy6E2Un0nMGWMgI65MAKtaylxfNJGJxpGh45YDciZB4epbWpaAfImil6CPAPTYB4sh0URQNDRIZG5F2w==} - engines: {node: '>= 6'} - form-data@4.0.2: resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} engines: {node: '>= 6'} @@ -4601,12 +4704,6 @@ packages: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} - from2@2.3.0: - resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} - - from@0.1.7: - resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} - front-matter@4.0.2: resolution: {integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==} @@ -4639,6 +4736,11 @@ packages: fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -4671,22 +4773,6 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} - get-proxy@2.1.0: - resolution: {integrity: sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==} - engines: {node: '>=4'} - - get-stream@2.3.1: - resolution: {integrity: sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==} - engines: {node: '>=0.10.0'} - - get-stream@3.0.0: - resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} - engines: {node: '>=4'} - - get-stream@4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} - get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} @@ -4723,18 +4809,10 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true - glob@5.0.15: - resolution: {integrity: sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==} - deprecated: Glob versions prior to v9 are no longer supported - glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported - global-agent@2.2.0: - resolution: {integrity: sha512-+20KpaW6DDLqhG7JDiJpD1JvNvb8ts+TNl7BPOYcURqCrXqnN1Vf+XVOrkKJAFPqfX+oEhsdzOj1hLWkBTdNJg==} - engines: {node: '>=10.0'} - global-modules@1.0.0: resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} engines: {node: '>=0.10.0'} @@ -4763,10 +4841,6 @@ packages: resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} - globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} - globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -4794,10 +4868,6 @@ packages: resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} engines: {node: '>=10.19.0'} - got@8.3.2: - resolution: {integrity: sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==} - engines: {node: '>=4'} - graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -4807,6 +4877,10 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + graphql@16.10.0: + resolution: {integrity: sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + handle-thing@2.0.1: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} @@ -4815,6 +4889,10 @@ packages: engines: {node: '>=0.4.7'} hasBin: true + happy-dom@17.3.1: + resolution: {integrity: sha512-l+/yp/sX5jI4Qv7oqUlaD907Y1CJwGZMbz7nna0zINHUEBZe0svn6NbyOdSY5Ac5qDcnKxcUbSb0YGohc4L2Gg==} + engines: {node: '>=18.0.0'} + har-schema@2.0.0: resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} engines: {node: '>=4'} @@ -4832,10 +4910,6 @@ packages: resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} engines: {node: '>=0.10.0'} - has-flag@1.0.0: - resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==} - engines: {node: '>=0.10.0'} - has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} @@ -4844,26 +4918,14 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-symbol-support-x@1.4.2: - resolution: {integrity: sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==} - has-symbols@1.1.0: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} - has-to-string-tag-x@1.4.1: - resolution: {integrity: sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==} - has-tostringtag@1.0.2: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} - hash.js@1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} - hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -4872,8 +4934,8 @@ packages: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true - header-case@2.0.4: - resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + headers-polyfill@4.0.3: + resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} homedir-polyfill@1.0.3: resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} @@ -4912,9 +4974,6 @@ packages: resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} engines: {node: '>= 0.8'} - http-cache-semantics@3.8.1: - resolution: {integrity: sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==} - http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} @@ -4936,6 +4995,10 @@ packages: http-parser-js@0.5.9: resolution: {integrity: sha512-n1XsPy3rXVxlqxVioEWdC+0+M+SQw0DpJynwtOPo1X+ZlvdzTLtDBIJJlDQTnwZIFJrZSzSGmIOUdP8tu+SgLw==} + http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} @@ -5034,23 +5097,18 @@ packages: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} - import-lazy@3.1.0: - resolution: {integrity: sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==} - engines: {node: '>=6'} - import-lazy@4.0.0: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} engines: {node: '>=8'} - import-local@3.2.0: - resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} - engines: {node: '>=8'} - hasBin: true - imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + indent-string@5.0.0: resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} engines: {node: '>=12'} @@ -5075,14 +5133,6 @@ packages: injection-js@2.4.0: resolution: {integrity: sha512-6jiJt0tCAo9zjHbcwLiPL+IuNe9SQ6a9g0PEzafThW3fOQi0mrmiJGBJvDD6tmhPh8cQHIQtCOrJuBfQME4kPA==} - interpret@3.1.1: - resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} - engines: {node: '>=10.13.0'} - - into-stream@3.1.0: - resolution: {integrity: sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==} - engines: {node: '>=4'} - ip-address@9.0.5: resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} engines: {node: '>= 12'} @@ -5149,13 +5199,13 @@ packages: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} - is-natural-number@4.0.1: - resolution: {integrity: sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==} - is-network-error@1.1.0: resolution: {integrity: sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==} engines: {node: '>=16'} + is-node-process@1.2.0: + resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -5164,9 +5214,6 @@ packages: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} - is-object@1.0.2: - resolution: {integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==} - is-path-cwd@1.0.0: resolution: {integrity: sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==} engines: {node: '>=0.10.0'} @@ -5195,21 +5242,13 @@ 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-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} - is-retry-allowed@1.2.0: - resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} - engines: {node: '>=0.10.0'} - - is-running@2.1.0: - resolution: {integrity: sha512-mjJd3PujZMl7j+D395WTIO5tU5RIDBfVSRtRR4VOJou3H66E38UjbjvDGh3slJzPuolsb+yQFqwHNNdyp5jg3w==} - - is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - is-text-path@2.0.0: resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} engines: {node: '>=8'} @@ -5274,10 +5313,6 @@ packages: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} - istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - istanbul-lib-instrument@6.0.3: resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} engines: {node: '>=10'} @@ -5286,26 +5321,14 @@ packages: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} - istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + istanbul-lib-source-maps@5.0.6: + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} engines: {node: '>=10'} istanbul-reports@3.1.7: resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} - istanbul@0.4.5: - resolution: {integrity: sha512-nMtdn4hvK0HjUlzr1DrKSUY8ychprt8dzHOgY2KXsIhHu5PuQQEOTM27gV9Xblyon7aUH/TSFIjRHEODF/FRPg==} - deprecated: |- - This module is no longer maintained, try this instead: - npm i nyc - Visit https://istanbul.js.org/integrations for other alternatives. - hasBin: true - - isurl@1.0.0: - resolution: {integrity: sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==} - engines: {node: '>= 4'} - jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} @@ -5317,20 +5340,10 @@ packages: jasmine-core@2.8.0: resolution: {integrity: sha512-SNkOkS+/jMZvLhuSx1fjhcNWUC/KG6oVyFUGkSBEr9n1axSNduWU8GlI7suaHXr4yxjet6KjrUZxUTE5WzzWwQ==} - jasmine-core@4.6.1: - resolution: {integrity: sha512-VYz/BjjmC3klLJlLwA4Kw8ytk0zDSmbbDLNs794VnWmkcCB7I9aAL/D48VNQtmITyPvea2C3jdUMfc3kAoy0PQ==} - - jasmine-core@5.6.0: - resolution: {integrity: sha512-niVlkeYVRwKFpmfWg6suo6H9CrNnydfBLEqefM5UjibYS+UoTjZdmvPJSiuyrRLGnFj1eYRhFd/ch+5hSlsFVA==} - jasmine@2.8.0: resolution: {integrity: sha512-KbdGQTf5jbZgltoHs31XGiChAPumMSY64OZMWLNYnEnMfG5uwGBhffePwuskexjT+/Jea/gU3qAU8344hNohSw==} hasBin: true - jasmine@5.6.0: - resolution: {integrity: sha512-6frlW22jhgRjtlp68QY/DDVCUfrYqmSxDBWM13mrBzYQGx1XITfVcJltnY15bk8B5cRfN5IpKvemkDiDTSRCsA==} - hasBin: true - jasminewd2@2.2.0: resolution: {integrity: sha512-Rn0nZe4rfDhzA63Al3ZGh0E+JTmM6ESZYXJGKuqKGZObsAB9fwXPD03GjtIEvJBDOhN94T5MzbwZSqzFHSQPzg==} engines: {node: '>= 6.9.x'} @@ -5376,6 +5389,15 @@ packages: jsbn@1.1.0: resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + jsdom@22.1.0: + resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==} + engines: {node: '>=16'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + jsesc@3.0.2: resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} @@ -5386,9 +5408,6 @@ packages: engines: {node: '>=6'} hasBin: true - json-buffer@3.0.0: - resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} - json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -5450,44 +5469,6 @@ packages: jszip@3.10.1: resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} - karma-browserstack-launcher@1.6.0: - resolution: {integrity: sha512-Y/UWPdHZkHIVH2To4GWHCTzmrsB6H7PBWy6pw+TWz5sr4HW2mcE+Uj6qWgoVNxvQU1Pfn5LQQzI6EQ65p8QbiQ==} - peerDependencies: - karma: '>=0.9' - - karma-chrome-launcher@3.2.0: - resolution: {integrity: sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==} - - karma-coverage@2.2.1: - resolution: {integrity: sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A==} - engines: {node: '>=10.0.0'} - - karma-firefox-launcher@2.1.3: - resolution: {integrity: sha512-LMM2bseebLbYjODBOVt7TCPP9OI2vZIXCavIXhkO9m+10Uj5l7u/SKoeRmYx8FYHTVGZSpk6peX+3BMHC1WwNw==} - - karma-jasmine-html-reporter@2.1.0: - resolution: {integrity: sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==} - peerDependencies: - jasmine-core: ^4.0.0 || ^5.0.0 - karma: ^6.0.0 - karma-jasmine: ^5.0.0 - - karma-jasmine@5.1.0: - resolution: {integrity: sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==} - engines: {node: '>=12'} - peerDependencies: - karma: ^6.0.0 - - karma-parallel@0.3.1: - resolution: {integrity: sha512-64jxNYamYi/9Y67h4+FfViSYhwDgod3rLuq+ZdZ0c3XeZFp/3q3v3HVkd8b5Czp3hCB+LLF8DIv4zlR4xFqbRw==} - engines: {node: '>=6'} - peerDependencies: - karma: '>= 1.0.0' - - karma-sauce-launcher@4.3.6: - resolution: {integrity: sha512-Ej62q4mUPFktyAm8g0g8J5qhwEkXwdHrwtiV4pZjKNHNnSs+4qgDyzs3VkpOy3AmNTsTqQXUN/lpiy0tZpDJZQ==} - engines: {node: '>= 10.0.0'} - karma-source-map-support@1.4.0: resolution: {integrity: sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==} @@ -5500,9 +5481,6 @@ packages: resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} engines: {node: '>= 0.6'} - keyv@3.0.0: - resolution: {integrity: sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==} - keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -5539,7 +5517,7 @@ packages: resolution: {integrity: sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==} engines: {node: '>= 14.15.0'} peerDependencies: - less: ^3.5.0 || ^4.0.0 + less: ^4.2.0 webpack: ^5.0.0 less-loader@12.2.0: @@ -5547,7 +5525,7 @@ packages: engines: {node: '>= 18.12.0'} peerDependencies: '@rspack/core': 0.x || 1.x - less: ^3.5.0 || ^4.0.0 + less: ^4.2.0 webpack: ^5.0.0 peerDependenciesMeta: '@rspack/core': @@ -5555,11 +5533,6 @@ packages: webpack: optional: true - less@4.1.3: - resolution: {integrity: sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==} - engines: {node: '>=6'} - hasBin: true - less@4.2.1: resolution: {integrity: sha512-CasaJidTIhWmjcqv0Uj5vccMI7pJgfD9lMkKtlnTHAdJdYK/7l8pM9tumLyJ0zhbD4KJLo/YvTj+xznQd5NBhg==} engines: {node: '>=6'} @@ -5570,10 +5543,6 @@ packages: engines: {node: '>=6'} hasBin: true - levn@0.3.0: - resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} - engines: {node: '>= 0.8.0'} - levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -5710,16 +5679,8 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - - lowercase-keys@1.0.0: - resolution: {integrity: sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==} - engines: {node: '>=0.10.0'} - - lowercase-keys@1.0.1: - resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} - engines: {node: '>=0.10.0'} + loupe@3.1.3: + resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} lowercase-keys@2.0.0: resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} @@ -5728,9 +5689,6 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -5746,12 +5704,15 @@ packages: resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==} engines: {node: '>=12'} + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - make-dir@1.3.0: - resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==} - engines: {node: '>=4'} + magicast@0.3.5: + resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} @@ -5780,16 +5741,9 @@ packages: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} - map-stream@0.1.0: - resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} - marky@1.2.5: resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} - matcher@3.0.0: - resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} - engines: {node: '>=10'} - math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -6005,6 +5959,16 @@ packages: msgpackr@1.11.2: resolution: {integrity: sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==} + msw@2.7.3: + resolution: {integrity: sha512-+mycXv8l2fEAjFZ5sjrtjJDmm2ceKGjrNbBr1durRg6VkU9fNUE/gsmQ51hWbHqs+l35W1iM+ZsmOD9Fd6lspw==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + typescript: '>= 4.8.x' + peerDependenciesMeta: + typescript: + optional: true + multicast-dns@7.2.5: resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} hasBin: true @@ -6062,12 +6026,6 @@ packages: tailwindcss: optional: true - nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - - no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - node-abort-controller@3.1.1: resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} @@ -6109,10 +6067,6 @@ packages: resolution: {integrity: sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==} engines: {node: '>=6'} - nopt@3.0.6: - resolution: {integrity: sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==} - hasBin: true - nopt@8.1.0: resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} engines: {node: ^18.17.0 || >=20.5.0} @@ -6134,10 +6088,6 @@ packages: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} - normalize-url@2.0.1: - resolution: {integrity: sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==} - engines: {node: '>=4'} - normalize-url@6.1.0: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} @@ -6146,10 +6096,6 @@ packages: resolution: {integrity: sha512-IxaQZDMsqfQ2Lz37VvyyEtKLe8FsRZuysmedy/N06TU1RyVppYKXrO4xIhR0F+7ubIBox6Q7nir6fQI3ej39iA==} engines: {node: ^18.17.0 || >=20.5.0} - npm-conf@1.1.3: - resolution: {integrity: sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==} - engines: {node: '>=4'} - npm-install-checks@7.1.1: resolution: {integrity: sha512-u6DCwbow5ynAX5BdiHQ9qvexme4U3qHW3MWe5NqH+NeBm0LbiH6zvGjNNew1fY+AZZUtVHbOPF3j7mJxbUzpXg==} engines: {node: ^18.17.0 || >=20.5.0} @@ -6178,10 +6124,6 @@ packages: resolution: {integrity: sha512-LeVMZBBVy+oQb5R6FDV9OlJCcWDU+al10oKpe+nsvcHnG24Z3uM3SvJYKfGJlfGjVU8v9liejCrUR/M5HO5NEQ==} engines: {node: ^18.17.0 || >=20.5.0} - npm-run-path@2.0.2: - resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} - engines: {node: '>=4'} - npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -6189,6 +6131,9 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + nwsapi@2.2.16: + resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==} + nx@20.4.4: resolution: {integrity: sha512-gOR9YFDbDTnOQYy6oqJ60ExgCiJJnz+o1TxrmP6cRmpRVv+5RmuZWQ9fXPtaj4SA69jbNqhSVyopT8oO6I+Gaw==} hasBin: true @@ -6212,10 +6157,6 @@ packages: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} @@ -6257,10 +6198,6 @@ packages: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true - optionator@0.8.3: - resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} - engines: {node: '>= 0.8.0'} - optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -6276,34 +6213,17 @@ packages: ordered-binary@1.5.3: resolution: {integrity: sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==} - os-filter-obj@2.0.0: - resolution: {integrity: sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==} - engines: {node: '>=4'} - os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} - p-cancelable@0.4.1: - resolution: {integrity: sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==} - engines: {node: '>=4'} + outvariant@1.4.3: + resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} - p-event@2.3.1: - resolution: {integrity: sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==} - engines: {node: '>=6'} - - p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - - p-is-promise@1.1.0: - resolution: {integrity: sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==} - engines: {node: '>=4'} - p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -6336,10 +6256,6 @@ packages: resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==} engines: {node: '>=16.17'} - p-timeout@2.0.1: - resolution: {integrity: sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==} - engines: {node: '>=4'} - p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -6363,9 +6279,6 @@ packages: pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - param-case@3.0.4: - resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} - parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -6402,11 +6315,8 @@ packages: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} - pascal-case@3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} - - path-case@3.0.4: - resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} @@ -6423,10 +6333,6 @@ packages: path-is-inside@1.0.2: resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} - path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -6441,6 +6347,9 @@ packages: path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -6449,8 +6358,12 @@ packages: resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} engines: {node: '>=18'} - pause-stream@0.0.11: - resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} @@ -6473,10 +6386,6 @@ packages: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} - pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} @@ -6504,6 +6413,16 @@ packages: resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} engines: {node: '>=14.16'} + playwright-core@1.51.0: + resolution: {integrity: sha512-x47yPE3Zwhlil7wlNU/iktF7t2r/URR3VLbH6EknJd/04Qc/PSJ0EY3CMXipmglLG+zyRxW6HNo2EGbKLHPWMg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.51.0: + resolution: {integrity: sha512-442pTfGM0xxfCYxuBa/Pu6B2OqxqqaYq39JS8QDMGThUvIOCd6s0ANDog3uwA0cHavVlnTQzGCN7Id2YekDSXA==} + engines: {node: '>=18'} + hasBin: true + portfinder@1.0.32: resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} engines: {node: '>= 0.12.0'} @@ -6763,23 +6682,19 @@ packages: resolution: {integrity: sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==} engines: {node: ^10 || ^12 || >=14} - prelude-ls@1.1.2: - resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} - engines: {node: '>= 0.8.0'} - prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prepend-http@2.0.0: - resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} - engines: {node: '>=4'} - prettier@3.5.3: resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} engines: {node: '>=14'} hasBin: true + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + pretty-format@29.7.0: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6811,9 +6726,6 @@ packages: resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} engines: {node: '>=10'} - proto-list@1.2.4: - resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - protractor@7.0.0: resolution: {integrity: sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==} engines: {node: '>=10.13.x'} @@ -6834,14 +6746,6 @@ packages: prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - ps-tree@1.2.0: - resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==} - engines: {node: '>= 0.10'} - hasBin: true - - pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - psl@1.15.0: resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} @@ -6876,14 +6780,6 @@ packages: (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) - q@1.5.1: - resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} - engines: {node: '>=0.6.0', teleport: '>=0.2.0'} - deprecated: |- - You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. - - (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) - qjobs@1.2.0: resolution: {integrity: sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==} engines: {node: '>=0.9'} @@ -6900,9 +6796,8 @@ packages: resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} engines: {node: '>=0.6'} - query-string@5.1.1: - resolution: {integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==} - engines: {node: '>=0.10.0'} + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -6930,6 +6825,9 @@ packages: peerDependencies: react: ^18.3.1 + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} @@ -6974,9 +6872,9 @@ packages: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} - rechoir@0.8.0: - resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} - engines: {node: '>= 10.13.0'} + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} redent@4.0.0: resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} @@ -7034,10 +6932,6 @@ packages: resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - resolve-dir@1.0.1: resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} engines: {node: '>=0.10.0'} @@ -7058,9 +6952,6 @@ packages: resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} engines: {node: '>=10'} - resolve@1.1.7: - resolution: {integrity: sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==} - resolve@1.22.10: resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} engines: {node: '>= 0.4'} @@ -7070,9 +6961,6 @@ packages: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true - responselike@1.0.2: - resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} - responselike@2.0.1: resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} @@ -7105,11 +6993,6 @@ packages: rgb2hex@0.2.3: resolution: {integrity: sha512-clEe0m1xv+Tva1B/TOepuIcvLAxP0U+sCDfgt1SX1HmI2Ahr5/Cd/nzJM1e78NKVtWdoo0s33YehpFA8UfIShQ==} - rimraf@2.5.4: - resolution: {integrity: sha512-Lw7SHMjssciQb/rRz7JyPIy9+bbUshEucPoLRvWqy09vC5zQixl8Uet+Zl+SROBB/JMWHJRdCk1qdxNWHNMvlQ==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - rimraf@2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} deprecated: Rimraf versions prior to v4 are no longer supported @@ -7124,10 +7007,6 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true - roarr@2.15.4: - resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} - engines: {node: '>=8.0'} - rollup@4.30.1: resolution: {integrity: sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -7138,6 +7017,9 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rrweb-cssom@0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + run-applescript@7.0.0: resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} engines: {node: '>=18'} @@ -7214,13 +7096,13 @@ packages: saucelabs@1.5.0: resolution: {integrity: sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==} - saucelabs@4.7.8: - resolution: {integrity: sha512-K2qaRUixc7+8JiAwpTvEsIQVzzUkYwa0mAfs0akGagRlWXUR1JrsmgJRyz28qkwpERW1KDuByn3Ju96BuW1V7Q==} - hasBin: true - sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} @@ -7235,10 +7117,6 @@ packages: secure-compare@3.0.1: resolution: {integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==} - seek-bzip@1.0.6: - resolution: {integrity: sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==} - hasBin: true - select-hose@2.0.0: resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} @@ -7250,17 +7128,6 @@ packages: resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} engines: {node: '>=10'} - semver-compare@1.0.0: - resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} - - semver-regex@2.0.0: - resolution: {integrity: sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==} - engines: {node: '>=6'} - - semver-truncate@1.1.2: - resolution: {integrity: sha512-V1fGg9i4CL3qesB6U0L6XAm4xOJiHmt4QAacazumuasc03BvtFGIMCduv01JWQ69Nv+JST9TqhSCiJoxoY031w==} - engines: {node: '>=0.10.0'} - semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -7283,13 +7150,6 @@ packages: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} - sentence-case@3.0.4: - resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} - - serialize-error@7.0.1: - resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} - engines: {node: '>=10'} - serialize-error@8.1.0: resolution: {integrity: sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==} engines: {node: '>=10'} @@ -7321,18 +7181,10 @@ packages: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} - shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} - shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} @@ -7357,6 +7209,9 @@ packages: resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -7368,6 +7223,10 @@ packages: resolution: {integrity: sha512-ZpzWAFHIFqyFE56dXqgX/DkDRZdz+rRcjoIk/RQU4IX0wiCv1l8S7ZrXDHcCc+uaf+6o7w3h2l3g6GYG5TKN9Q==} engines: {node: ^18.17.0 || >=20.5.0} + sirv@3.0.1: + resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==} + engines: {node: '>=18'} + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -7396,9 +7255,6 @@ packages: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - snake-case@3.0.4: - resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} - socket.io-adapter@2.5.5: resolution: {integrity: sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==} @@ -7421,18 +7277,6 @@ packages: resolution: {integrity: sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - sort-keys-length@1.0.1: - resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} - engines: {node: '>=0.10.0'} - - sort-keys@1.1.2: - resolution: {integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==} - engines: {node: '>=0.10.0'} - - sort-keys@2.0.0: - resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} - engines: {node: '>=4'} - sorted-array-functions@1.3.0: resolution: {integrity: sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==} @@ -7455,10 +7299,6 @@ packages: source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - source-map@0.2.0: - resolution: {integrity: sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==} - engines: {node: '>=0.8.0'} - source-map@0.5.7: resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} @@ -7494,9 +7334,6 @@ packages: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} - split@0.3.3: - resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} - sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -7512,6 +7349,9 @@ packages: resolution: {integrity: sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==} engines: {node: ^18.17.0 || >=20.5.0} + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} @@ -7520,8 +7360,8 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - stream-combiner@0.0.4: - resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} + std-env@3.8.0: + resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} streamroller@3.1.5: resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} @@ -7530,9 +7370,8 @@ packages: streamx@2.22.0: resolution: {integrity: sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==} - strict-uri-encode@1.1.0: - resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} - engines: {node: '>=0.10.0'} + strict-event-emitter@0.5.1: + resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -7568,12 +7407,9 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - strip-dirs@2.1.0: - resolution: {integrity: sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==} - - strip-eof@1.0.0: - resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} - engines: {node: '>=0.10.0'} + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} strip-indent@4.0.0: resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} @@ -7583,10 +7419,6 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-outer@1.0.1: - resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} - engines: {node: '>=0.10.0'} - style-loader@3.3.4: resolution: {integrity: sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==} engines: {node: '>= 12.13.0'} @@ -7623,10 +7455,6 @@ packages: resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} engines: {node: '>=0.8.0'} - supports-color@3.2.3: - resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==} - engines: {node: '>=0.8.0'} - supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -7659,6 +7487,9 @@ packages: resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} engines: {node: '>=0.10'} + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + table@6.9.0: resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} engines: {node: '>=10.0.0'} @@ -7673,10 +7504,6 @@ packages: tar-fs@3.0.8: resolution: {integrity: sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==} - tar-stream@1.6.2: - resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} - engines: {node: '>= 0.8.0'} - tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} @@ -7696,10 +7523,6 @@ packages: resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} engines: {node: '>=14.16'} - temp-fs@0.9.9: - resolution: {integrity: sha512-WfecDCR1xC9b0nsrzSaxPf3ZuWeWLUWblW4vlDQAa1biQaKHiImHnJfeQocQe/hXKMcolRzgkcVX/7kK4zoWbw==} - engines: {node: '>=0.8.0'} - tempfile@5.0.0: resolution: {integrity: sha512-bX655WZI/F7EoTDw9JvQURqAXiPHi8o8+yFxPF2lWYyz1aHnmMRuXWqL6YB6GmeO0o4DIYWHLgGNi/X64T+X4Q==} engines: {node: '>=14.18'} @@ -7730,6 +7553,10 @@ packages: engines: {node: '>=10'} hasBin: true + test-exclude@7.0.1: + resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} + engines: {node: '>=18'} + text-decoder@1.2.3: resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} @@ -7749,14 +7576,28 @@ packages: thunky@1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} - timed-out@4.0.1: - resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==} - engines: {node: '>=0.10.0'} + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} tinyglobby@0.2.10: resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} engines: {node: '>=12.0.0'} + tinypool@1.0.2: + resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} + engines: {node: '>=14.0.0'} + + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + tmp@0.0.30: resolution: {integrity: sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w==} engines: {node: '>=0.4.0'} @@ -7769,9 +7610,6 @@ packages: resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} engines: {node: '>=14.14'} - to-buffer@1.1.1: - resolution: {integrity: sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -7780,13 +7618,25 @@ packages: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + tough-cookie@2.5.0: resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} engines: {node: '>=0.8'} + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tr46@4.1.1: + resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} + engines: {node: '>=14'} + tree-dump@1.0.2: resolution: {integrity: sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==} engines: {node: '>=10.0'} @@ -7801,10 +7651,6 @@ packages: resolution: {integrity: sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==} engines: {node: '>=12'} - trim-repeated@1.0.0: - resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} - engines: {node: '>=0.10.0'} - ts-api-utils@2.0.1: resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} engines: {node: '>=18.12'} @@ -7818,6 +7664,9 @@ packages: typescript: '*' webpack: ^5.0.0 + ts-morph@21.0.1: + resolution: {integrity: sha512-dbDtVdEAncKctzrVZ+Nr7kHpHkv+0JDJb2MjjpBaj8bFeCkePU9rHfMklmhuLFnpeq/EJZk2IhStY6NzqgjOkg==} + ts-node@10.9.1: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true @@ -7890,25 +7739,13 @@ packages: tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - tunnel@0.0.6: - resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} - engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} - type-check@0.3.2: - resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} - engines: {node: '>= 0.8.0'} - type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-fest@0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} - engines: {node: '>=10'} - type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} @@ -7998,10 +7835,17 @@ packages: resolution: {integrity: sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==} engines: {node: ^18.17.0 || >=20.5.0} + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -8020,25 +7864,14 @@ packages: peerDependencies: browserslist: '>= 4.21.0' - upper-case-first@2.0.2: - resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} - - upper-case@2.0.2: - resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} - uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} url-join@4.0.1: resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} - url-parse-lax@3.0.0: - resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} - engines: {node: '>=4'} - - url-to-options@1.0.1: - resolution: {integrity: sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==} - engines: {node: '>= 4'} + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -8078,6 +7911,48 @@ packages: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + vite-node@2.1.9: + resolution: {integrity: sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + + vite@5.4.15: + resolution: {integrity: sha512-6ANcZRivqL/4WtwPGTKNaosuNJr5tWiftOC7liM7G9+rMb8+oeJeyzymDu4rTN93seySBmbjSfsS3Vzr19KNtA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: ^4.2.0 + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + vite@6.0.11: resolution: {integrity: sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -8085,7 +7960,7 @@ packages: peerDependencies: '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 jiti: '>=1.21.0' - less: '*' + less: ^4.2.0 lightningcss: ^1.21.0 sass: '*' sass-embedded: '*' @@ -8118,10 +7993,39 @@ packages: yaml: optional: true + vitest@2.1.9: + resolution: {integrity: sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 2.1.9 + '@vitest/ui': 2.1.9 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + void-elements@2.0.1: resolution: {integrity: sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==} engines: {node: '>=0.10.0'} + w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} + watchpack@2.4.2: resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} engines: {node: '>=10.13.0'} @@ -8155,22 +8059,9 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webpack-cli@5.1.4: - resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==} - engines: {node: '>=14.15.0'} - hasBin: true - peerDependencies: - '@webpack-cli/generators': '*' - webpack: 5.x.x - webpack-bundle-analyzer: '*' - webpack-dev-server: '*' - peerDependenciesMeta: - '@webpack-cli/generators': - optional: true - webpack-bundle-analyzer: - optional: true - webpack-dev-server: - optional: true + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} webpack-dev-middleware@7.4.2: resolution: {integrity: sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==} @@ -8252,6 +8143,14 @@ packages: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} + whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + + whatwg-url@12.0.1: + resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} + engines: {node: '>=14'} + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -8267,16 +8166,16 @@ packages: engines: {node: '>= 8'} hasBin: true - which@3.0.1: - resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true - which@5.0.0: resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==} engines: {node: ^18.17.0 || >=20.5.0} hasBin: true + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + wildcard@2.0.1: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} @@ -8350,6 +8249,10 @@ packages: resolution: {integrity: sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==} engines: {node: '>= 6'} + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + xml2js@0.4.23: resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} engines: {node: '>=4.0.0'} @@ -8358,9 +8261,8 @@ packages: resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} engines: {node: '>=4.0'} - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} xxhashjs@0.2.2: resolution: {integrity: sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==} @@ -8372,9 +8274,6 @@ packages: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} @@ -8455,11 +8354,34 @@ snapshots: '@adobe/css-tools@4.3.3': {} + '@adobe/css-tools@4.4.2': {} + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 + '@analogjs/vite-plugin-angular@1.10.3(@angular-devkit/build-angular@19.1.7(niesootelh3ljsp4qcrbzmwmg4))(@angular/build@19.1.7(jljg5ymofxdt23nnuovdntbs2q))': + dependencies: + ts-morph: 21.0.1 + vfile: 6.0.3 + optionalDependencies: + '@angular-devkit/build-angular': 19.1.7(niesootelh3ljsp4qcrbzmwmg4) + '@angular/build': 19.1.7(jljg5ymofxdt23nnuovdntbs2q) + + '@analogjs/vitest-angular@1.10.3(@analogjs/vite-plugin-angular@1.10.3(@angular-devkit/build-angular@19.1.7(niesootelh3ljsp4qcrbzmwmg4))(@angular/build@19.1.7(jljg5ymofxdt23nnuovdntbs2q)))(@angular-devkit/architect@0.1900.4(chokidar@4.0.3))(vitest@2.1.9)': + dependencies: + '@analogjs/vite-plugin-angular': 1.10.3(@angular-devkit/build-angular@19.1.7(niesootelh3ljsp4qcrbzmwmg4))(@angular/build@19.1.7(jljg5ymofxdt23nnuovdntbs2q)) + '@angular-devkit/architect': 0.1900.4(chokidar@4.0.3) + vitest: 2.1.9(@types/node@20.17.19)(@vitest/browser@2.1.9)(@vitest/ui@2.1.9)(happy-dom@17.3.1)(jsdom@22.1.0)(less@4.2.2)(msw@2.7.3(@types/node@20.17.19)(typescript@5.7.3))(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0) + + '@angular-devkit/architect@0.1900.4(chokidar@4.0.3)': + dependencies: + '@angular-devkit/core': 19.0.4(chokidar@4.0.3) + rxjs: 7.8.1 + transitivePeerDependencies: + - chokidar + '@angular-devkit/architect@0.1901.7(chokidar@4.0.3)': dependencies: '@angular-devkit/core': 19.1.7(chokidar@4.0.3) @@ -8467,13 +8389,13 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@19.1.7(e4445a5fbbe66ea2f7f1b19c81f2a18c)': + '@angular-devkit/build-angular@19.1.7(niesootelh3ljsp4qcrbzmwmg4)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.1901.7(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.1901.7(chokidar@4.0.3)(webpack-dev-server@5.2.0)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)) + '@angular-devkit/build-webpack': 0.1901.7(chokidar@4.0.3)(webpack-dev-server@5.2.0(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)))(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)) '@angular-devkit/core': 19.1.7(chokidar@4.0.3) - '@angular/build': 19.1.7(eca590b1d930012a59ca5b74bdc2dd08) + '@angular/build': 19.1.7(yumfx5gtc6yab47sfofmy6pqn4) '@angular/compiler-cli': 19.1.6(@angular/compiler@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.7.3) '@babel/core': 7.26.0 '@babel/generator': 7.26.3 @@ -8485,14 +8407,14 @@ snapshots: '@babel/preset-env': 7.26.0(@babel/core@7.26.0) '@babel/runtime': 7.26.0 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 19.1.7(@angular/compiler-cli@19.1.6(@angular/compiler@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.7.3))(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)) - '@vitejs/plugin-basic-ssl': 1.2.0(vite@6.0.11(@types/node@20.17.19)(jiti@1.21.7)(less@4.2.1)(sass@1.83.1)(stylus@0.64.0)(terser@5.37.0)(yaml@2.7.0)) + '@ngtools/webpack': 19.1.7(@angular/compiler-cli@19.1.6(@angular/compiler@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.7.3))(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)) + '@vitejs/plugin-basic-ssl': 1.2.0(vite@5.4.15(@types/node@20.17.19)(less@4.2.2)(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0)) ansi-colors: 4.1.3 autoprefixer: 10.4.20(postcss@8.4.49) - babel-loader: 9.2.1(@babel/core@7.26.0)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)) + babel-loader: 9.2.1(@babel/core@7.26.0)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)) browserslist: 4.24.4 - copy-webpack-plugin: 12.0.2(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)) - css-loader: 7.1.2(@rspack/core@1.2.3(@swc/helpers@0.5.15))(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)) + copy-webpack-plugin: 12.0.2(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)) + css-loader: 7.1.2(@rspack/core@1.2.3(@swc/helpers@0.5.15))(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)) esbuild-wasm: 0.24.2 fast-glob: 3.3.3 http-proxy-middleware: 3.0.3 @@ -8500,35 +8422,35 @@ snapshots: jsonc-parser: 3.3.1 karma-source-map-support: 1.4.0 less: 4.2.1 - less-loader: 12.2.0(@rspack/core@1.2.3(@swc/helpers@0.5.15))(less@4.2.1)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)) - license-webpack-plugin: 4.0.2(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)) + less-loader: 12.2.0(@rspack/core@1.2.3(@swc/helpers@0.5.15))(less@4.2.1)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)) + license-webpack-plugin: 4.0.2(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)) loader-utils: 3.3.1 - mini-css-extract-plugin: 2.9.2(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)) + mini-css-extract-plugin: 2.9.2(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)) open: 10.1.0 ora: 5.4.1 picomatch: 4.0.2 piscina: 4.8.0 postcss: 8.4.49 - postcss-loader: 8.1.1(@rspack/core@1.2.3(@swc/helpers@0.5.15))(postcss@8.4.49)(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)) + postcss-loader: 8.1.1(@rspack/core@1.2.3(@swc/helpers@0.5.15))(postcss@8.4.49)(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)) resolve-url-loader: 5.0.0 rxjs: 7.8.1 sass: 1.83.1 - sass-loader: 16.0.4(@rspack/core@1.2.3(@swc/helpers@0.5.15))(sass@1.83.1)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)) + sass-loader: 16.0.4(@rspack/core@1.2.3(@swc/helpers@0.5.15))(sass@1.83.1)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)) semver: 7.6.3 - source-map-loader: 5.0.0(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)) + source-map-loader: 5.0.0(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)) source-map-support: 0.5.21 terser: 5.37.0 tree-kill: 1.2.2 tslib: 2.8.1 typescript: 5.7.3 - webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4) - webpack-dev-middleware: 7.4.2(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)) - webpack-dev-server: 5.2.0(webpack-cli@5.1.4)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)) + webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack-dev-middleware: 7.4.2(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)) + webpack-dev-server: 5.2.0(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) webpack-merge: 6.0.1 - webpack-subresource-integrity: 5.1.0(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)) + webpack-subresource-integrity: 5.1.0(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)) optionalDependencies: '@angular/platform-server': 19.1.6(@angular/animations@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(@angular/common@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0))(rxjs@7.8.1))(@angular/compiler@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0))(@angular/platform-browser@19.1.6(@angular/animations@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(@angular/common@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0))(rxjs@7.8.1))(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0))) - '@angular/ssr': 19.1.7(63d62672e91cb79b25ab56a14eb9de42) + '@angular/ssr': 19.1.7(ufzxe4wxd22z3jdz3d3mzy5roy) esbuild: 0.24.2 karma: 6.4.4 ng-packagr: 19.1.2(@angular/compiler-cli@19.1.6(@angular/compiler@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.7.3))(tslib@2.8.1)(typescript@5.7.3) @@ -8556,15 +8478,26 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.1901.7(chokidar@4.0.3)(webpack-dev-server@5.2.0)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4))': + '@angular-devkit/build-webpack@0.1901.7(chokidar@4.0.3)(webpack-dev-server@5.2.0(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)))(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2))': dependencies: '@angular-devkit/architect': 0.1901.7(chokidar@4.0.3) rxjs: 7.8.1 - webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4) - webpack-dev-server: 5.2.0(webpack-cli@5.1.4)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)) + webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2) + webpack-dev-server: 5.2.0(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) transitivePeerDependencies: - chokidar + '@angular-devkit/core@19.0.4(chokidar@4.0.3)': + dependencies: + ajv: 8.17.1 + ajv-formats: 3.0.1(ajv@8.17.1) + jsonc-parser: 3.3.1 + picomatch: 4.0.2 + rxjs: 7.8.1 + source-map: 0.7.4 + optionalDependencies: + chokidar: 4.0.3 + '@angular-devkit/core@19.1.7(chokidar@4.0.3)': dependencies: ajv: 8.17.1 @@ -8651,7 +8584,59 @@ snapshots: '@angular/core': 19.1.6(rxjs@7.8.1)(zone.js@0.15.0) tslib: 2.8.1 - '@angular/build@19.1.7(eca590b1d930012a59ca5b74bdc2dd08)': + '@angular/build@19.1.7(jljg5ymofxdt23nnuovdntbs2q)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@angular-devkit/architect': 0.1901.7(chokidar@4.0.3) + '@angular-devkit/core': 19.1.7(chokidar@4.0.3) + '@angular/compiler': 19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)) + '@angular/compiler-cli': 19.1.6(@angular/compiler@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.7.3) + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) + '@inquirer/confirm': 5.1.1(@types/node@20.17.19) + '@vitejs/plugin-basic-ssl': 1.2.0(vite@6.0.11(@types/node@20.17.19)(jiti@1.21.7)(less@4.2.2)(sass@1.83.1)(stylus@0.64.0)(terser@5.37.0)(yaml@2.7.0)) + beasties: 0.2.0 + browserslist: 4.24.4 + esbuild: 0.24.2 + fast-glob: 3.3.3 + https-proxy-agent: 7.0.6 + istanbul-lib-instrument: 6.0.3 + listr2: 8.2.5 + magic-string: 0.30.17 + mrmime: 2.0.0 + parse5-html-rewriting-stream: 7.0.0 + picomatch: 4.0.2 + piscina: 4.8.0 + rollup: 4.30.1 + sass: 1.83.1 + semver: 7.6.3 + typescript: 5.7.3 + vite: 6.0.11(@types/node@20.17.19)(jiti@1.21.7)(less@4.2.2)(sass@1.83.1)(stylus@0.64.0)(terser@5.37.0)(yaml@2.7.0) + watchpack: 2.4.2 + optionalDependencies: + '@angular/platform-server': 19.1.6(@angular/animations@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(@angular/common@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0))(rxjs@7.8.1))(@angular/compiler@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0))(@angular/platform-browser@19.1.6(@angular/animations@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(@angular/common@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0))(rxjs@7.8.1))(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0))) + '@angular/ssr': 19.1.7(ufzxe4wxd22z3jdz3d3mzy5roy) + less: 4.2.2 + lmdb: 3.2.2 + ng-packagr: 19.1.2(@angular/compiler-cli@19.1.6(@angular/compiler@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.7.3))(tslib@2.8.1)(typescript@5.7.3) + postcss: 8.5.2 + transitivePeerDependencies: + - '@types/node' + - chokidar + - jiti + - lightningcss + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + optional: true + + '@angular/build@19.1.7(yumfx5gtc6yab47sfofmy6pqn4)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.1901.7(chokidar@4.0.3) @@ -8680,11 +8665,11 @@ snapshots: sass: 1.83.1 semver: 7.6.3 typescript: 5.7.3 - vite: 6.0.11(@types/node@20.17.19)(jiti@1.21.7)(less@4.1.3)(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0)(yaml@2.7.0) + vite: 6.0.11(@types/node@20.17.19)(jiti@1.21.7)(less@4.2.1)(sass@1.83.1)(stylus@0.64.0)(terser@5.37.0)(yaml@2.7.0) watchpack: 2.4.2 optionalDependencies: '@angular/platform-server': 19.1.6(@angular/animations@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(@angular/common@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0))(rxjs@7.8.1))(@angular/compiler@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0))(@angular/platform-browser@19.1.6(@angular/animations@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(@angular/common@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0))(rxjs@7.8.1))(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0))) - '@angular/ssr': 19.1.7(63d62672e91cb79b25ab56a14eb9de42) + '@angular/ssr': 19.1.7(ufzxe4wxd22z3jdz3d3mzy5roy) less: 4.2.1 lmdb: 3.2.2 ng-packagr: 19.1.2(@angular/compiler-cli@19.1.6(@angular/compiler@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.7.3))(tslib@2.8.1)(typescript@5.7.3) @@ -8779,7 +8764,7 @@ snapshots: '@angular/language-service@19.1.6': {} - '@angular/material@19.1.4(39e0b8558b9404228f22388017d0fcb2)': + '@angular/material@19.1.4(n6jpcyv44zoxdsk6dbpkqfynb4)': dependencies: '@angular/animations': 19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)) '@angular/cdk': 19.1.4(@angular/common@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0))(rxjs@7.8.1))(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0))(rxjs@7.8.1) @@ -8824,7 +8809,7 @@ snapshots: rxjs: 7.8.1 tslib: 2.8.1 - '@angular/ssr@19.1.7(63d62672e91cb79b25ab56a14eb9de42)': + '@angular/ssr@19.1.7(ufzxe4wxd22z3jdz3d3mzy5roy)': dependencies: '@angular/common': 19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0))(rxjs@7.8.1) '@angular/core': 19.1.6(rxjs@7.8.1)(zone.js@0.15.0) @@ -10101,7 +10086,23 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@colors/colors@1.5.0': {} + '@bcoe/v8-coverage@0.2.3': {} + + '@bundled-es-modules/cookie@2.0.1': + dependencies: + cookie: 0.7.2 + + '@bundled-es-modules/statuses@1.0.1': + dependencies: + statuses: 2.0.1 + + '@bundled-es-modules/tough-cookie@0.1.6': + dependencies: + '@types/tough-cookie': 4.0.5 + tough-cookie: 4.1.4 + + '@colors/colors@1.5.0': + optional: true '@cspotcode/source-map-support@0.8.1': dependencies: @@ -10122,8 +10123,6 @@ snapshots: dependencies: postcss-selector-parser: 6.1.2 - '@discoveryjs/json-ext@0.5.7': {} - '@discoveryjs/json-ext@0.6.3': {} '@emnapi/core@1.3.1': @@ -10139,78 +10138,147 @@ snapshots: dependencies: tslib: 2.8.1 + '@esbuild/aix-ppc64@0.21.5': + optional: true + '@esbuild/aix-ppc64@0.24.2': optional: true + '@esbuild/android-arm64@0.21.5': + optional: true + '@esbuild/android-arm64@0.24.2': optional: true + '@esbuild/android-arm@0.21.5': + optional: true + '@esbuild/android-arm@0.24.2': optional: true + '@esbuild/android-x64@0.21.5': + optional: true + '@esbuild/android-x64@0.24.2': optional: true + '@esbuild/darwin-arm64@0.21.5': + optional: true + '@esbuild/darwin-arm64@0.24.2': optional: true + '@esbuild/darwin-x64@0.21.5': + optional: true + '@esbuild/darwin-x64@0.24.2': optional: true + '@esbuild/freebsd-arm64@0.21.5': + optional: true + '@esbuild/freebsd-arm64@0.24.2': optional: true + '@esbuild/freebsd-x64@0.21.5': + optional: true + '@esbuild/freebsd-x64@0.24.2': optional: true + '@esbuild/linux-arm64@0.21.5': + optional: true + '@esbuild/linux-arm64@0.24.2': optional: true + '@esbuild/linux-arm@0.21.5': + optional: true + '@esbuild/linux-arm@0.24.2': optional: true + '@esbuild/linux-ia32@0.21.5': + optional: true + '@esbuild/linux-ia32@0.24.2': optional: true + '@esbuild/linux-loong64@0.21.5': + optional: true + '@esbuild/linux-loong64@0.24.2': optional: true + '@esbuild/linux-mips64el@0.21.5': + optional: true + '@esbuild/linux-mips64el@0.24.2': optional: true + '@esbuild/linux-ppc64@0.21.5': + optional: true + '@esbuild/linux-ppc64@0.24.2': optional: true + '@esbuild/linux-riscv64@0.21.5': + optional: true + '@esbuild/linux-riscv64@0.24.2': optional: true + '@esbuild/linux-s390x@0.21.5': + optional: true + '@esbuild/linux-s390x@0.24.2': optional: true + '@esbuild/linux-x64@0.21.5': + optional: true + '@esbuild/linux-x64@0.24.2': optional: true '@esbuild/netbsd-arm64@0.24.2': optional: true + '@esbuild/netbsd-x64@0.21.5': + optional: true + '@esbuild/netbsd-x64@0.24.2': optional: true '@esbuild/openbsd-arm64@0.24.2': optional: true + '@esbuild/openbsd-x64@0.21.5': + optional: true + '@esbuild/openbsd-x64@0.24.2': optional: true + '@esbuild/sunos-x64@0.21.5': + optional: true + '@esbuild/sunos-x64@0.24.2': optional: true + '@esbuild/win32-arm64@0.21.5': + optional: true + '@esbuild/win32-arm64@0.24.2': optional: true + '@esbuild/win32-ia32@0.21.5': + optional: true + '@esbuild/win32-ia32@0.24.2': optional: true + '@esbuild/win32-x64@0.21.5': + optional: true + '@esbuild/win32-x64@0.24.2': optional: true @@ -10535,7 +10603,7 @@ snapshots: - supports-color - utf-8-validate - '@module-federation/enhanced@0.8.11(@rspack/core@1.2.3(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(webpack@5.98.0)': + '@module-federation/enhanced@0.8.11(@rspack/core@1.2.3(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)))': dependencies: '@module-federation/bridge-react-webpack-plugin': 0.8.11 '@module-federation/data-prefetch': 0.8.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -10551,7 +10619,7 @@ snapshots: upath: 2.0.1 optionalDependencies: typescript: 5.7.3 - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)) transitivePeerDependencies: - '@rspack/core' - bufferutil @@ -10590,16 +10658,16 @@ snapshots: - utf-8-validate - vue-tsc - '@module-federation/node@2.6.24(@rspack/core@1.2.3(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(webpack@5.98.0)': + '@module-federation/node@2.6.24(@rspack/core@1.2.3(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)))': dependencies: - '@module-federation/enhanced': 0.8.11(@rspack/core@1.2.3(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(webpack@5.98.0) + '@module-federation/enhanced': 0.8.11(@rspack/core@1.2.3(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) '@module-federation/runtime': 0.8.11 '@module-federation/sdk': 0.8.11 - '@module-federation/utilities': 3.1.42(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.98.0) + '@module-federation/utilities': 3.1.42(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) btoa: 1.2.1 encoding: 0.1.13 node-fetch: 2.7.0(encoding@0.1.13) - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)) optionalDependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10670,10 +10738,10 @@ snapshots: fs-extra: 9.1.0 resolve: 1.22.8 - '@module-federation/utilities@3.1.42(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.98.0)': + '@module-federation/utilities@3.1.42(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)))': dependencies: '@module-federation/sdk': 0.8.11 - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)) optionalDependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10706,6 +10774,15 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': optional: true + '@mswjs/interceptors@0.37.6': + dependencies: + '@open-draft/deferred-promise': 2.2.0 + '@open-draft/logger': 0.3.0 + '@open-draft/until': 2.1.0 + is-node-process: 1.2.0 + outvariant: 1.4.3 + strict-event-emitter: 0.5.1 + '@napi-rs/nice-android-arm-eabi@1.0.1': optional: true @@ -10780,17 +10857,11 @@ snapshots: '@emnapi/runtime': 1.3.1 '@tybys/wasm-util': 0.9.0 - '@ngtools/webpack@19.1.7(@angular/compiler-cli@19.1.6(@angular/compiler@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.7.3))(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4))': - dependencies: - '@angular/compiler-cli': 19.1.6(@angular/compiler@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.7.3) - typescript: 5.7.3 - webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4) - - '@ngtools/webpack@19.1.7(@angular/compiler-cli@19.1.6(@angular/compiler@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.7.3))(typescript@5.7.3)(webpack@5.98.0)': + '@ngtools/webpack@19.1.7(@angular/compiler-cli@19.1.6(@angular/compiler@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.7.3))(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2))': dependencies: '@angular/compiler-cli': 19.1.6(@angular/compiler@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.7.3) typescript: 5.7.3 - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2) '@nodelib/fs.scandir@2.1.5': dependencies: @@ -10869,18 +10940,18 @@ snapshots: - bluebird - supports-color - '@nx/angular@20.4.4(@angular-devkit/build-angular@19.1.7(e4445a5fbbe66ea2f7f1b19c81f2a18c))(@angular-devkit/core@19.1.7(chokidar@4.0.3))(@angular-devkit/schematics@19.1.7(chokidar@4.0.3))(@babel/traverse@7.26.9)(@rspack/core@1.2.3(@swc/helpers@0.5.15))(@schematics/angular@19.1.7(chokidar@4.0.3))(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)(@types/node@20.17.19)(@zkochan/js-yaml@0.0.7)(eslint@9.20.1(jiti@1.21.7))(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rxjs@7.8.1)(typescript@5.7.3)(webpack-cli@5.1.4)': + '@nx/angular@20.4.4(@angular-devkit/build-angular@19.1.7(niesootelh3ljsp4qcrbzmwmg4))(@angular-devkit/core@19.1.7(chokidar@4.0.3))(@angular-devkit/schematics@19.1.7(chokidar@4.0.3))(@babel/traverse@7.26.9)(@rspack/core@1.2.3(@swc/helpers@0.5.15))(@schematics/angular@19.1.7(chokidar@4.0.3))(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)(@types/node@20.17.19)(@zkochan/js-yaml@0.0.7)(eslint@9.20.1(jiti@1.21.7))(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rxjs@7.8.1)(typescript@5.7.3)': dependencies: - '@angular-devkit/build-angular': 19.1.7(e4445a5fbbe66ea2f7f1b19c81f2a18c) + '@angular-devkit/build-angular': 19.1.7(niesootelh3ljsp4qcrbzmwmg4) '@angular-devkit/core': 19.1.7(chokidar@4.0.3) '@angular-devkit/schematics': 19.1.7(chokidar@4.0.3) - '@nx/devkit': 20.4.4(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))) - '@nx/eslint': 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(@zkochan/js-yaml@0.0.7)(eslint@9.20.1(jiti@1.21.7))(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))) - '@nx/js': 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) - '@nx/module-federation': 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(webpack-cli@5.1.4) - '@nx/web': 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) - '@nx/webpack': 20.4.4(@babel/traverse@7.26.9)(@rspack/core@1.2.3(@swc/helpers@0.5.15))(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3)(webpack-cli@5.1.4) - '@nx/workspace': 20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)) + '@nx/devkit': 20.4.4(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))) + '@nx/eslint': 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(@zkochan/js-yaml@0.0.7)(eslint@9.20.1(jiti@1.21.7))(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))) + '@nx/js': 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) + '@nx/module-federation': 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) + '@nx/web': 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) + '@nx/webpack': 20.4.4(@babel/traverse@7.26.9)(@rspack/core@1.2.3(@swc/helpers@0.5.15))(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) + '@nx/workspace': 20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.7.3) '@schematics/angular': 19.1.7(chokidar@4.0.3) '@typescript-eslint/type-utils': 8.24.0(eslint@9.20.1(jiti@1.21.7))(typescript@5.7.3) @@ -10928,22 +10999,22 @@ snapshots: - vue-tsc - webpack-cli - '@nx/devkit@20.4.4(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))': + '@nx/devkit@20.4.4(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))': dependencies: ejs: 3.1.10 enquirer: 2.3.6 ignore: 5.3.2 minimatch: 9.0.3 - nx: 20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)) + nx: 20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)) semver: 7.7.1 tmp: 0.2.3 tslib: 2.8.1 yargs-parser: 21.1.1 - '@nx/eslint-plugin@20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(@typescript-eslint/parser@8.24.0(eslint@9.20.1(jiti@1.21.7))(typescript@5.7.3))(eslint-config-prettier@9.1.0(eslint@9.20.1(jiti@1.21.7)))(eslint@9.20.1(jiti@1.21.7))(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3)': + '@nx/eslint-plugin@20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(@typescript-eslint/parser@8.24.0(eslint@9.20.1(jiti@1.21.7))(typescript@5.7.3))(eslint-config-prettier@9.1.0(eslint@9.20.1(jiti@1.21.7)))(eslint@9.20.1(jiti@1.21.7))(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3)': dependencies: - '@nx/devkit': 20.4.4(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))) - '@nx/js': 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) + '@nx/devkit': 20.4.4(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))) + '@nx/js': 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) '@typescript-eslint/parser': 8.24.0(eslint@9.20.1(jiti@1.21.7))(typescript@5.7.3) '@typescript-eslint/type-utils': 8.24.0(eslint@9.20.1(jiti@1.21.7))(typescript@5.7.3) '@typescript-eslint/utils': 8.24.0(eslint@9.20.1(jiti@1.21.7))(typescript@5.7.3) @@ -10968,10 +11039,10 @@ snapshots: - typescript - verdaccio - '@nx/eslint@20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(@zkochan/js-yaml@0.0.7)(eslint@9.20.1(jiti@1.21.7))(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))': + '@nx/eslint@20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(@zkochan/js-yaml@0.0.7)(eslint@9.20.1(jiti@1.21.7))(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))': dependencies: - '@nx/devkit': 20.4.4(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))) - '@nx/js': 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) + '@nx/devkit': 20.4.4(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))) + '@nx/js': 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) eslint: 9.20.1(jiti@1.21.7) semver: 7.7.1 tslib: 2.8.1 @@ -10989,7 +11060,7 @@ snapshots: - supports-color - verdaccio - '@nx/js@20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3)': + '@nx/js@20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3)': dependencies: '@babel/core': 7.26.9 '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.9) @@ -10998,8 +11069,8 @@ snapshots: '@babel/preset-env': 7.26.9(@babel/core@7.26.9) '@babel/preset-typescript': 7.26.0(@babel/core@7.26.9) '@babel/runtime': 7.26.9 - '@nx/devkit': 20.4.4(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))) - '@nx/workspace': 20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)) + '@nx/devkit': 20.4.4(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))) + '@nx/workspace': 20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)) '@zkochan/js-yaml': 0.0.7 babel-plugin-const-enum: 1.2.0(@babel/core@7.26.9) babel-plugin-macros: 3.1.0 @@ -11032,20 +11103,20 @@ snapshots: - supports-color - typescript - '@nx/module-federation@20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(webpack-cli@5.1.4)': + '@nx/module-federation@20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)': dependencies: - '@module-federation/enhanced': 0.8.11(@rspack/core@1.2.3(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(webpack@5.98.0) - '@module-federation/node': 2.6.24(@rspack/core@1.2.3(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(webpack@5.98.0) + '@module-federation/enhanced': 0.8.11(@rspack/core@1.2.3(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) + '@module-federation/node': 2.6.24(@rspack/core@1.2.3(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) '@module-federation/sdk': 0.8.11 - '@nx/devkit': 20.4.4(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))) - '@nx/js': 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) - '@nx/web': 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) + '@nx/devkit': 20.4.4(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))) + '@nx/js': 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) + '@nx/web': 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) '@rspack/core': 1.2.3(@swc/helpers@0.5.15) express: 4.21.2 http-proxy-middleware: 3.0.3 picocolors: 1.1.1 tslib: 2.8.1 - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)) transitivePeerDependencies: - '@babel/traverse' - '@rspack/tracing' @@ -11099,14 +11170,17 @@ snapshots: '@nx/nx-win32-x64-msvc@20.4.4': optional: true - '@nx/web@20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3)': + '@nx/vite@20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3)(vite@5.4.15(@types/node@20.17.19)(less@4.2.2)(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0))(vitest@2.1.9)': dependencies: - '@nx/devkit': 20.4.4(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))) - '@nx/js': 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) - detect-port: 1.6.1 - http-server: 14.1.1 - picocolors: 1.1.1 - tslib: 2.8.1 + '@nx/devkit': 20.4.4(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))) + '@nx/js': 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) + '@phenomnomnominal/tsquery': 5.0.1(typescript@5.7.3) + '@swc/helpers': 0.5.15 + enquirer: 2.3.6 + minimatch: 9.0.3 + tsconfig-paths: 4.2.0 + vite: 5.4.15(@types/node@20.17.19)(less@4.2.2)(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0) + vitest: 2.1.9(@types/node@20.17.19)(@vitest/browser@2.1.9)(@vitest/ui@2.1.9)(happy-dom@17.3.1)(jsdom@22.1.0)(less@4.2.2)(msw@2.7.3(@types/node@20.17.19)(typescript@5.7.3))(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -11119,45 +11193,65 @@ snapshots: - typescript - verdaccio - '@nx/webpack@20.4.4(@babel/traverse@7.26.9)(@rspack/core@1.2.3(@swc/helpers@0.5.15))(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3)(webpack-cli@5.1.4)': + '@nx/web@20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3)': dependencies: - '@babel/core': 7.26.9 - '@nx/devkit': 20.4.4(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))) - '@nx/js': 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) + '@nx/devkit': 20.4.4(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))) + '@nx/js': 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) + detect-port: 1.6.1 + http-server: 14.1.1 + picocolors: 1.1.1 + tslib: 2.8.1 + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - debug + - nx + - supports-color + - typescript + - verdaccio + + '@nx/webpack@20.4.4(@babel/traverse@7.26.9)(@rspack/core@1.2.3(@swc/helpers@0.5.15))(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3)': + dependencies: + '@babel/core': 7.26.9 + '@nx/devkit': 20.4.4(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))) + '@nx/js': 20.4.4(@babel/traverse@7.26.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.7.3) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.7.3) ajv: 8.17.1 autoprefixer: 10.4.20(postcss@8.5.2) - babel-loader: 9.2.1(@babel/core@7.26.9)(webpack@5.98.0) + babel-loader: 9.2.1(@babel/core@7.26.9)(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) browserslist: 4.24.4 - copy-webpack-plugin: 10.2.4(webpack@5.98.0) - css-loader: 6.11.0(@rspack/core@1.2.3(@swc/helpers@0.5.15))(webpack@5.98.0) - css-minimizer-webpack-plugin: 5.0.1(webpack@5.98.0) - fork-ts-checker-webpack-plugin: 7.2.13(typescript@5.7.3)(webpack@5.98.0) - less: 4.1.3 - less-loader: 11.1.0(less@4.1.3)(webpack@5.98.0) - license-webpack-plugin: 4.0.2(webpack@5.98.0) + copy-webpack-plugin: 10.2.4(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) + css-loader: 6.11.0(@rspack/core@1.2.3(@swc/helpers@0.5.15))(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) + css-minimizer-webpack-plugin: 5.0.1(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) + fork-ts-checker-webpack-plugin: 7.2.13(typescript@5.7.3)(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) + less: 4.2.2 + less-loader: 11.1.0(less@4.2.2)(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) + license-webpack-plugin: 4.0.2(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) loader-utils: 2.0.4 - mini-css-extract-plugin: 2.4.7(webpack@5.98.0) + mini-css-extract-plugin: 2.4.7(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) parse5: 4.0.0 picocolors: 1.1.1 postcss: 8.5.2 postcss-import: 14.1.0(postcss@8.5.2) - postcss-loader: 6.2.1(postcss@8.5.2)(webpack@5.98.0) + postcss-loader: 6.2.1(postcss@8.5.2)(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) rxjs: 7.8.1 sass: 1.85.0 - sass-loader: 12.6.0(sass@1.85.0)(webpack@5.98.0) - source-map-loader: 5.0.0(webpack@5.98.0) - style-loader: 3.3.4(webpack@5.98.0) + sass-loader: 12.6.0(sass@1.85.0)(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) + source-map-loader: 5.0.0(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) + style-loader: 3.3.4(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) stylus: 0.64.0 - stylus-loader: 7.1.3(stylus@0.64.0)(webpack@5.98.0) - terser-webpack-plugin: 5.3.11(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack@5.98.0) - ts-loader: 9.5.2(typescript@5.7.3)(webpack@5.98.0) + stylus-loader: 7.1.3(stylus@0.64.0)(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) + terser-webpack-plugin: 5.3.11(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) + ts-loader: 9.5.2(typescript@5.7.3)(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) tsconfig-paths-webpack-plugin: 4.0.0 tslib: 2.8.1 - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) - webpack-dev-server: 5.2.0(webpack-cli@5.1.4)(webpack@5.98.0) + webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)) + webpack-dev-server: 5.2.0(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) webpack-node-externals: 3.0.0 - webpack-subresource-integrity: 5.1.0(webpack@5.98.0) + webpack-subresource-integrity: 5.1.0(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) transitivePeerDependencies: - '@babel/traverse' - '@parcel/css' @@ -11186,12 +11280,12 @@ snapshots: - vue-template-compiler - webpack-cli - '@nx/workspace@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))': + '@nx/workspace@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))': dependencies: - '@nx/devkit': 20.4.4(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))) + '@nx/devkit': 20.4.4(nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15))) chalk: 4.1.2 enquirer: 2.3.6 - nx: 20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)) + nx: 20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)) tslib: 2.8.1 yargs-parser: 21.1.1 transitivePeerDependencies: @@ -11199,6 +11293,15 @@ snapshots: - '@swc/core' - debug + '@open-draft/deferred-promise@2.2.0': {} + + '@open-draft/logger@0.3.0': + dependencies: + is-node-process: 1.2.0 + outvariant: 1.4.3 + + '@open-draft/until@2.1.0': {} + '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -11268,6 +11371,8 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true + '@polka/url@1.0.0-next.28': {} + '@puppeteer/browsers@2.7.1': dependencies: debug: 4.4.0 @@ -11280,6 +11385,7 @@ snapshots: transitivePeerDependencies: - bare-buffer - supports-color + optional: true '@rollup/plugin-json@6.1.0(rollup@4.34.7)': dependencies: @@ -11507,22 +11613,22 @@ snapshots: '@sinclair/typebox@0.27.8': {} - '@sindresorhus/is@0.7.0': {} - - '@sindresorhus/is@4.6.0': {} + '@sindresorhus/is@4.6.0': + optional: true '@sindresorhus/merge-streams@2.3.0': {} - '@socket.io/component-emitter@3.1.2': {} + '@socket.io/component-emitter@3.1.2': + optional: true - '@swc-node/core@1.13.3(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)': + '@swc-node/core@1.13.3(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)': dependencies: '@swc/core': 1.5.29(@swc/helpers@0.5.15) - '@swc/types': 0.1.17 + '@swc/types': 0.1.19 - '@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3)': + '@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3)': dependencies: - '@swc-node/core': 1.13.3(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17) + '@swc-node/core': 1.13.3(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19) '@swc-node/sourcemap-support': 0.5.1 '@swc/core': 1.5.29(@swc/helpers@0.5.15) colorette: 2.0.20 @@ -11572,7 +11678,7 @@ snapshots: '@swc/core@1.5.29(@swc/helpers@0.5.15)': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.17 + '@swc/types': 0.1.19 optionalDependencies: '@swc/core-darwin-arm64': 1.5.29 '@swc/core-darwin-x64': 1.5.29 @@ -11592,18 +11698,54 @@ snapshots: dependencies: tslib: 2.8.1 - '@swc/types@0.1.17': + '@swc/types@0.1.19': dependencies: '@swc/counter': 0.1.3 '@szmarczak/http-timer@4.0.6': dependencies: defer-to-connect: 2.0.1 + optional: true + + '@testing-library/dom@10.4.0': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/runtime': 7.26.9 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + + '@testing-library/jest-dom@6.6.3': + dependencies: + '@adobe/css-tools': 4.4.2 + aria-query: 5.3.2 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.17.21 + redent: 3.0.0 + + '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.0)': + dependencies: + '@testing-library/dom': 10.4.0 + + '@tootallnate/once@2.0.0': {} - '@tootallnate/quickjs-emscripten@0.23.0': {} + '@tootallnate/quickjs-emscripten@0.23.0': + optional: true '@trysound/sax@0.2.0': {} + '@ts-morph/common@0.22.0': + dependencies: + fast-glob: 3.3.3 + minimatch: 9.0.5 + mkdirp: 3.0.1 + path-browserify: 1.0.1 + '@tsconfig/node10@1.0.11': {} '@tsconfig/node12@1.0.11': {} @@ -11623,6 +11765,8 @@ snapshots: dependencies: tslib: 2.8.1 + '@types/aria-query@5.0.4': {} + '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 @@ -11638,6 +11782,7 @@ snapshots: '@types/keyv': 3.1.4 '@types/node': 20.17.19 '@types/responselike': 1.0.3 + optional: true '@types/connect-history-api-fallback@1.5.4': dependencies: @@ -11648,9 +11793,12 @@ snapshots: dependencies: '@types/node': 20.17.19 + '@types/cookie@0.6.0': {} + '@types/cors@2.8.17': dependencies: '@types/node': 20.17.19 + optional: true '@types/eslint-scope@3.7.7': dependencies: @@ -11685,7 +11833,8 @@ snapshots: '@types/qs': 6.9.18 '@types/serve-static': 1.15.7 - '@types/http-cache-semantics@4.0.4': {} + '@types/http-cache-semantics@4.0.4': + optional: true '@types/http-errors@2.0.4': {} @@ -11703,13 +11852,12 @@ snapshots: dependencies: '@types/istanbul-lib-report': 3.0.3 - '@types/jasmine@5.1.6': {} - '@types/json-schema@7.0.15': {} '@types/keyv@3.1.4': dependencies: '@types/node': 20.17.19 + optional: true '@types/mime@1.3.5': {} @@ -11738,6 +11886,7 @@ snapshots: - supports-color - typescript - utf-8-validate + optional: true '@types/puppeteer@7.0.4(typescript@5.7.3)': dependencies: @@ -11748,8 +11897,10 @@ snapshots: - supports-color - typescript - utf-8-validate + optional: true - '@types/q@0.0.32': {} + '@types/q@0.0.32': + optional: true '@types/qs@6.9.18': {} @@ -11758,10 +11909,12 @@ snapshots: '@types/responselike@1.0.3': dependencies: '@types/node': 20.17.19 + optional: true '@types/retry@0.12.2': {} - '@types/selenium-webdriver@3.0.26': {} + '@types/selenium-webdriver@3.0.26': + optional: true '@types/semver@7.5.8': {} @@ -11784,7 +11937,14 @@ snapshots: dependencies: '@types/node': 20.17.19 - '@types/which@1.3.2': {} + '@types/statuses@2.0.5': {} + + '@types/tough-cookie@4.0.5': {} + + '@types/unist@3.0.3': {} + + '@types/which@1.3.2': + optional: true '@types/ws@8.5.14': dependencies: @@ -11878,15 +12038,119 @@ snapshots: '@typescript-eslint/types': 8.24.0 eslint-visitor-keys: 4.2.0 + '@vitejs/plugin-basic-ssl@1.2.0(vite@5.4.15(@types/node@20.17.19)(less@4.2.2)(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0))': + dependencies: + vite: 5.4.15(@types/node@20.17.19)(less@4.2.2)(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0) + '@vitejs/plugin-basic-ssl@1.2.0(vite@6.0.11(@types/node@20.17.19)(jiti@1.21.7)(less@4.2.1)(sass@1.83.1)(stylus@0.64.0)(terser@5.37.0)(yaml@2.7.0))': dependencies: - vite: 6.0.11(@types/node@20.17.19)(jiti@1.21.7)(less@4.1.3)(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0)(yaml@2.7.0) + vite: 6.0.11(@types/node@20.17.19)(jiti@1.21.7)(less@4.2.1)(sass@1.83.1)(stylus@0.64.0)(terser@5.37.0)(yaml@2.7.0) + + '@vitejs/plugin-basic-ssl@1.2.0(vite@6.0.11(@types/node@20.17.19)(jiti@1.21.7)(less@4.2.2)(sass@1.83.1)(stylus@0.64.0)(terser@5.37.0)(yaml@2.7.0))': + dependencies: + vite: 6.0.11(@types/node@20.17.19)(jiti@1.21.7)(less@4.2.2)(sass@1.83.1)(stylus@0.64.0)(terser@5.37.0)(yaml@2.7.0) + optional: true + + '@vitest/browser@2.1.9(@types/node@20.17.19)(playwright@1.51.0)(typescript@5.7.3)(vite@5.4.15(@types/node@20.17.19)(less@4.2.2)(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0))(vitest@2.1.9)(webdriverio@6.12.1(encoding@0.1.13)(typescript@5.7.3))': + dependencies: + '@testing-library/dom': 10.4.0 + '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.0) + '@vitest/mocker': 2.1.9(msw@2.7.3(@types/node@20.17.19)(typescript@5.7.3))(vite@5.4.15(@types/node@20.17.19)(less@4.2.2)(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0)) + '@vitest/utils': 2.1.9 + magic-string: 0.30.17 + msw: 2.7.3(@types/node@20.17.19)(typescript@5.7.3) + sirv: 3.0.1 + tinyrainbow: 1.2.0 + vitest: 2.1.9(@types/node@20.17.19)(@vitest/browser@2.1.9)(@vitest/ui@2.1.9)(happy-dom@17.3.1)(jsdom@22.1.0)(less@4.2.2)(msw@2.7.3(@types/node@20.17.19)(typescript@5.7.3))(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0) + ws: 8.18.0 + optionalDependencies: + playwright: 1.51.0 + webdriverio: 6.12.1(encoding@0.1.13)(typescript@5.7.3) + transitivePeerDependencies: + - '@types/node' + - bufferutil + - typescript + - utf-8-validate + - vite + + '@vitest/coverage-v8@2.1.9(@vitest/browser@2.1.9)(vitest@2.1.9)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 0.2.3 + debug: 4.4.0 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.1.7 + magic-string: 0.30.17 + magicast: 0.3.5 + std-env: 3.8.0 + test-exclude: 7.0.1 + tinyrainbow: 1.2.0 + vitest: 2.1.9(@types/node@20.17.19)(@vitest/browser@2.1.9)(@vitest/ui@2.1.9)(happy-dom@17.3.1)(jsdom@22.1.0)(less@4.2.2)(msw@2.7.3(@types/node@20.17.19)(typescript@5.7.3))(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0) + optionalDependencies: + '@vitest/browser': 2.1.9(@types/node@20.17.19)(playwright@1.51.0)(typescript@5.7.3)(vite@5.4.15(@types/node@20.17.19)(less@4.2.2)(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0))(vitest@2.1.9)(webdriverio@6.12.1(encoding@0.1.13)(typescript@5.7.3)) + transitivePeerDependencies: + - supports-color + + '@vitest/expect@2.1.9': + dependencies: + '@vitest/spy': 2.1.9 + '@vitest/utils': 2.1.9 + chai: 5.2.0 + tinyrainbow: 1.2.0 + + '@vitest/mocker@2.1.9(msw@2.7.3(@types/node@20.17.19)(typescript@5.7.3))(vite@5.4.15(@types/node@20.17.19)(less@4.2.2)(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0))': + dependencies: + '@vitest/spy': 2.1.9 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + msw: 2.7.3(@types/node@20.17.19)(typescript@5.7.3) + vite: 5.4.15(@types/node@20.17.19)(less@4.2.2)(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0) + + '@vitest/pretty-format@2.1.9': + dependencies: + tinyrainbow: 1.2.0 + + '@vitest/runner@2.1.9': + dependencies: + '@vitest/utils': 2.1.9 + pathe: 1.1.2 + + '@vitest/snapshot@2.1.9': + dependencies: + '@vitest/pretty-format': 2.1.9 + magic-string: 0.30.17 + pathe: 1.1.2 + + '@vitest/spy@2.1.9': + dependencies: + tinyspy: 3.0.2 + + '@vitest/ui@2.1.9(vitest@2.1.9)': + dependencies: + '@vitest/utils': 2.1.9 + fflate: 0.8.2 + flatted: 3.3.2 + pathe: 1.1.2 + sirv: 3.0.1 + tinyglobby: 0.2.10 + tinyrainbow: 1.2.0 + vitest: 2.1.9(@types/node@20.17.19)(@vitest/browser@2.1.9)(@vitest/ui@2.1.9)(happy-dom@17.3.1)(jsdom@22.1.0)(less@4.2.2)(msw@2.7.3(@types/node@20.17.19)(typescript@5.7.3))(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0) + + '@vitest/utils@2.1.9': + dependencies: + '@vitest/pretty-format': 2.1.9 + loupe: 3.1.3 + tinyrainbow: 1.2.0 '@wdio/config@6.12.1': dependencies: '@wdio/logger': 6.10.10 deepmerge: 4.3.1 glob: 7.2.3 + optional: true '@wdio/logger@6.10.10': dependencies: @@ -11894,16 +12158,20 @@ snapshots: loglevel: 1.9.2 loglevel-plugin-prefix: 0.8.4 strip-ansi: 6.0.1 + optional: true - '@wdio/protocols@6.12.0': {} + '@wdio/protocols@6.12.0': + optional: true '@wdio/repl@6.11.0': dependencies: '@wdio/utils': 6.11.0 + optional: true '@wdio/utils@6.11.0': dependencies: '@wdio/logger': 6.10.10 + optional: true '@webassemblyjs/ast@1.14.1': dependencies: @@ -11981,23 +12249,6 @@ snapshots: '@webassemblyjs/ast': 1.14.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.98.0)': - dependencies: - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@5.2.0)(webpack@5.98.0) - - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.98.0)': - dependencies: - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@5.2.0)(webpack@5.98.0) - - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack-dev-server@5.2.0)(webpack@5.98.0)': - dependencies: - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@5.2.0)(webpack@5.98.0) - optionalDependencies: - webpack-dev-server: 5.2.0(webpack-cli@5.1.4)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)) - '@xtuc/ieee754@1.2.0': {} '@xtuc/long@4.2.2': {} @@ -12018,7 +12269,7 @@ snapshots: jsonparse: 1.3.1 through: 2.3.8 - abbrev@1.0.9: {} + abab@2.0.6: {} abbrev@3.0.0: {} @@ -12051,8 +12302,10 @@ snapshots: agent-base@4.3.0: dependencies: es6-promisify: 5.0.0 + optional: true - agent-base@5.1.1: {} + agent-base@5.1.1: + optional: true agent-base@6.0.2: dependencies: @@ -12093,9 +12346,6 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - amdefine@1.0.1: - optional: true - angular-eslint@19.1.0(chokidar@4.0.3)(eslint@9.20.1(jiti@1.21.7))(typescript-eslint@8.24.0(eslint@9.20.1(jiti@1.21.7))(typescript@5.7.3))(typescript@5.7.3): dependencies: '@angular-devkit/core': 19.1.7(chokidar@4.0.3) @@ -12126,13 +12376,15 @@ snapshots: ansi-html-community@0.0.8: {} - ansi-regex@2.1.1: {} + ansi-regex@2.1.1: + optional: true ansi-regex@5.0.1: {} ansi-regex@6.1.0: {} - ansi-styles@2.2.1: {} + ansi-styles@2.2.1: + optional: true ansi-styles@3.2.1: dependencies: @@ -12151,12 +12403,6 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 - arch@2.2.0: {} - - archive-type@4.0.0: - dependencies: - file-type: 4.4.0 - archiver-utils@2.1.0: dependencies: glob: 7.2.3 @@ -12169,6 +12415,7 @@ snapshots: lodash.union: 4.6.0 normalize-path: 3.0.0 readable-stream: 2.3.8 + optional: true archiver-utils@3.0.4: dependencies: @@ -12182,6 +12429,7 @@ snapshots: lodash.union: 4.6.0 normalize-path: 3.0.0 readable-stream: 3.6.2 + optional: true archiver@5.3.2: dependencies: @@ -12192,6 +12440,7 @@ snapshots: readdir-glob: 1.1.3 tar-stream: 2.2.0 zip-stream: 4.1.1 + optional: true arg@4.1.3: {} @@ -12201,6 +12450,10 @@ snapshots: argparse@2.0.1: {} + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + aria-query@5.3.2: {} array-flatten@1.1.1: {} @@ -12210,29 +12463,34 @@ snapshots: array-union@1.0.2: dependencies: array-uniq: 1.0.3 + optional: true array-union@2.1.0: {} array-union@3.0.1: {} - array-uniq@1.0.3: {} + array-uniq@1.0.3: + optional: true arrify@1.0.1: {} asn1@0.2.6: dependencies: safer-buffer: 2.1.2 + optional: true + + assert-plus@1.0.0: + optional: true - assert-plus@1.0.0: {} + assertion-error@2.0.1: {} ast-types@0.13.4: dependencies: tslib: 2.8.1 + optional: true astral-regex@2.0.0: {} - async@1.5.2: {} - async@2.6.4: dependencies: lodash: 4.17.21 @@ -12243,7 +12501,8 @@ snapshots: at-least-node@1.0.0: {} - atob@2.1.2: {} + atob@2.1.2: + optional: true autoprefixer@10.4.20(postcss@8.4.49): dependencies: @@ -12265,9 +12524,11 @@ snapshots: postcss: 8.5.2 postcss-value-parser: 4.2.0 - aws-sign2@0.7.0: {} + aws-sign2@0.7.0: + optional: true - aws4@1.13.2: {} + aws4@1.13.2: + optional: true axios@1.7.9: dependencies: @@ -12279,21 +12540,22 @@ snapshots: axobject-query@4.1.0: {} - b4a@1.6.7: {} + b4a@1.6.7: + optional: true - babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)): + babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)): dependencies: '@babel/core': 7.26.0 find-cache-dir: 4.0.0 schema-utils: 4.3.0 - webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4) + webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2) - babel-loader@9.2.1(@babel/core@7.26.9)(webpack@5.98.0): + babel-loader@9.2.1(@babel/core@7.26.9)(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))): dependencies: '@babel/core': 7.26.9 find-cache-dir: 4.0.0 schema-utils: 4.3.0 - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)) babel-plugin-const-enum@1.2.0(@babel/core@7.26.9): dependencies: @@ -12406,19 +12668,22 @@ snapshots: base64-js@1.5.1: {} - base64id@2.0.0: {} + base64id@2.0.0: + optional: true basic-auth@2.0.1: dependencies: safe-buffer: 5.1.2 - basic-ftp@5.0.5: {} + basic-ftp@5.0.5: + optional: true batch@0.6.1: {} bcrypt-pbkdf@1.0.2: dependencies: tweetnacl: 0.14.5 + optional: true beasties@0.2.0: dependencies: @@ -12433,38 +12698,8 @@ snapshots: big.js@5.2.2: {} - bin-check@4.1.0: - dependencies: - execa: 0.7.0 - executable: 4.1.1 - - bin-version-check@4.0.0: - dependencies: - bin-version: 3.1.0 - semver: 5.7.2 - semver-truncate: 1.1.2 - - bin-version@3.1.0: - dependencies: - execa: 1.0.0 - find-versions: 3.2.0 - - bin-wrapper@4.1.0: - dependencies: - bin-check: 4.1.0 - bin-version-check: 4.0.0 - download: 7.1.0 - import-lazy: 3.1.0 - os-filter-obj: 2.0.0 - pify: 4.0.1 - binary-extensions@2.3.0: {} - bl@1.2.3: - dependencies: - readable-stream: 2.3.8 - safe-buffer: 5.2.1 - bl@4.1.0: dependencies: buffer: 5.7.1 @@ -12474,6 +12709,7 @@ snapshots: blocking-proxy@1.0.1: dependencies: minimist: 1.2.8 + optional: true body-parser@1.20.3: dependencies: @@ -12499,8 +12735,6 @@ snapshots: boolbase@1.0.0: {} - boolean@3.2.0: {} - brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -12521,40 +12755,17 @@ snapshots: node-releases: 2.0.19 update-browserslist-db: 1.1.2(browserslist@4.24.4) - browserstack-local@1.5.6: - dependencies: - agent-base: 6.0.2 - https-proxy-agent: 5.0.1 - is-running: 2.1.0 - ps-tree: 1.2.0 - temp-fs: 0.9.9 - transitivePeerDependencies: - - supports-color - - browserstack@1.5.3: - dependencies: - https-proxy-agent: 2.2.4 - transitivePeerDependencies: - - supports-color - browserstack@1.6.1: dependencies: https-proxy-agent: 2.2.4 transitivePeerDependencies: - supports-color + optional: true btoa@1.2.1: {} - buffer-alloc-unsafe@1.1.0: {} - - buffer-alloc@1.2.0: - dependencies: - buffer-alloc-unsafe: 1.1.0 - buffer-fill: 1.0.0 - - buffer-crc32@0.2.13: {} - - buffer-fill@1.0.0: {} + buffer-crc32@0.2.13: + optional: true buffer-from@1.1.2: {} @@ -12571,6 +12782,8 @@ snapshots: bytes@3.1.2: {} + cac@6.7.14: {} + cacache@19.0.1: dependencies: '@npmcli/fs': 4.0.0 @@ -12591,17 +12804,8 @@ snapshots: mime-types: 2.1.35 ylru: 1.4.0 - cacheable-lookup@5.0.4: {} - - cacheable-request@2.1.4: - dependencies: - clone-response: 1.0.2 - get-stream: 3.0.0 - http-cache-semantics: 3.8.1 - keyv: 3.0.0 - lowercase-keys: 1.0.0 - normalize-url: 2.0.1 - responselike: 1.0.2 + cacheable-lookup@5.0.4: + optional: true cacheable-request@7.0.4: dependencies: @@ -12612,6 +12816,7 @@ snapshots: lowercase-keys: 2.0.0 normalize-url: 6.1.0 responselike: 2.0.1 + optional: true call-bind-apply-helpers@1.0.2: dependencies: @@ -12625,11 +12830,6 @@ snapshots: callsites@3.1.0: {} - camel-case@4.1.2: - dependencies: - pascal-case: 3.1.2 - tslib: 2.8.1 - camelcase-keys@7.0.2: dependencies: camelcase: 6.3.0 @@ -12637,7 +12837,8 @@ snapshots: quick-lru: 5.1.1 type-fest: 1.4.0 - camelcase@5.3.1: {} + camelcase@5.3.1: + optional: true camelcase@6.3.0: {} @@ -12650,20 +12851,16 @@ snapshots: caniuse-lite@1.0.30001699: {} - capital-case@1.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.8.1 - upper-case-first: 2.0.2 - - caseless@0.12.0: {} + caseless@0.12.0: + optional: true - caw@2.0.1: + chai@5.2.0: dependencies: - get-proxy: 2.1.0 - isurl: 1.0.0 - tunnel-agent: 0.6.0 - url-to-options: 1.0.1 + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.3 + pathval: 2.0.0 chalk@1.1.3: dependencies: @@ -12672,6 +12869,7 @@ snapshots: has-ansi: 2.0.0 strip-ansi: 3.0.1 supports-color: 2.0.0 + optional: true chalk@2.4.2: dependencies: @@ -12689,23 +12887,10 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - change-case@4.1.2: - dependencies: - camel-case: 4.1.2 - capital-case: 1.0.4 - constant-case: 3.0.4 - dot-case: 3.0.4 - header-case: 2.0.4 - no-case: 3.0.4 - param-case: 3.0.4 - pascal-case: 3.1.2 - path-case: 3.0.4 - sentence-case: 3.0.4 - snake-case: 3.0.4 - tslib: 2.8.1 - chardet@0.7.0: {} + check-error@2.1.1: {} + chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -12722,7 +12907,8 @@ snapshots: dependencies: readdirp: 4.1.2 - chownr@1.1.4: {} + chownr@1.1.4: + optional: true chownr@2.0.0: {} @@ -12738,6 +12924,7 @@ snapshots: rimraf: 3.0.2 transitivePeerDependencies: - supports-color + optional: true chrome-trace-event@1.0.4: {} @@ -12746,6 +12933,7 @@ snapshots: devtools-protocol: 0.0.1402036 mitt: 3.0.1 zod: 3.24.2 + optional: true ci-info@3.9.0: {} @@ -12773,12 +12961,14 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 + optional: true cliui@7.0.4: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + optional: true cliui@8.0.1: dependencies: @@ -12792,18 +12982,17 @@ snapshots: kind-of: 6.0.3 shallow-clone: 3.0.1 - clone-response@1.0.2: - dependencies: - mimic-response: 1.0.1 - clone-response@1.0.3: dependencies: mimic-response: 1.0.1 + optional: true clone@1.0.4: {} co@4.6.0: {} + code-block-writer@12.0.0: {} + color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -12829,8 +13018,6 @@ snapshots: dependencies: delayed-stream: 1.0.0 - commander@10.0.1: {} - commander@13.1.0: {} commander@2.20.3: {} @@ -12852,6 +13039,7 @@ snapshots: crc32-stream: 4.0.3 normalize-path: 3.0.0 readable-stream: 3.6.2 + optional: true compressible@2.0.18: dependencies: @@ -12871,11 +13059,6 @@ snapshots: concat-map@0.0.1: {} - config-chain@1.1.13: - dependencies: - ini: 1.3.8 - proto-list: 1.2.4 - confusing-browser-globals@1.0.11: {} connect-history-api-fallback@2.0.0: {} @@ -12888,12 +13071,7 @@ snapshots: utils-merge: 1.0.1 transitivePeerDependencies: - supports-color - - constant-case@3.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.8.1 - upper-case: 2.0.2 + optional: true content-disposition@0.5.4: dependencies: @@ -12998,7 +13176,7 @@ snapshots: dependencies: is-what: 3.14.1 - copy-webpack-plugin@10.2.4(webpack@5.98.0): + copy-webpack-plugin@10.2.4(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))): dependencies: fast-glob: 3.3.3 glob-parent: 6.0.2 @@ -13006,9 +13184,9 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.3.0 serialize-javascript: 6.0.2 - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)) - copy-webpack-plugin@12.0.2(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)): + copy-webpack-plugin@12.0.2(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)): dependencies: fast-glob: 3.3.3 glob-parent: 6.0.2 @@ -13016,15 +13194,14 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.3.0 serialize-javascript: 6.0.2 - webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4) + webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2) core-js-compat@3.40.0: dependencies: browserslist: 4.24.4 - core-js@3.40.0: {} - - core-util-is@1.0.2: {} + core-util-is@1.0.2: + optional: true core-util-is@1.0.3: {} @@ -13032,6 +13209,7 @@ snapshots: dependencies: object-assign: 4.1.1 vary: 1.1.2 + optional: true corser@2.0.1: {} @@ -13061,12 +13239,14 @@ snapshots: optionalDependencies: typescript: 5.7.3 - crc-32@1.2.2: {} + crc-32@1.2.2: + optional: true crc32-stream@4.0.3: dependencies: crc-32: 1.2.2 readable-stream: 3.6.2 + optional: true create-require@1.1.1: {} @@ -13074,21 +13254,7 @@ snapshots: dependencies: luxon: 3.5.0 - cross-spawn@5.1.0: - dependencies: - lru-cache: 4.1.5 - shebang-command: 1.2.0 - which: 1.3.1 - - cross-spawn@6.0.6: - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.2 - shebang-command: 1.2.0 - which: 1.3.1 - - cross-spawn@7.0.6: + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 @@ -13100,7 +13266,7 @@ snapshots: css-functions-list@3.2.3: {} - css-loader@6.11.0(@rspack/core@1.2.3(@swc/helpers@0.5.15))(webpack@5.98.0): + css-loader@6.11.0(@rspack/core@1.2.3(@swc/helpers@0.5.15))(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))): dependencies: icss-utils: 5.1.0(postcss@8.5.2) postcss: 8.5.2 @@ -13112,9 +13278,9 @@ snapshots: semver: 7.7.1 optionalDependencies: '@rspack/core': 1.2.3(@swc/helpers@0.5.15) - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)) - css-loader@7.1.2(@rspack/core@1.2.3(@swc/helpers@0.5.15))(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)): + css-loader@7.1.2(@rspack/core@1.2.3(@swc/helpers@0.5.15))(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)): dependencies: icss-utils: 5.1.0(postcss@8.5.2) postcss: 8.5.2 @@ -13126,9 +13292,9 @@ snapshots: semver: 7.7.1 optionalDependencies: '@rspack/core': 1.2.3(@swc/helpers@0.5.15) - webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4) + webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2) - css-minimizer-webpack-plugin@5.0.1(webpack@5.98.0): + css-minimizer-webpack-plugin@5.0.1(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))): dependencies: '@jridgewell/trace-mapping': 0.3.25 cssnano: 6.1.2(postcss@8.5.2) @@ -13136,7 +13302,7 @@ snapshots: postcss: 8.5.2 schema-utils: 4.3.0 serialize-javascript: 6.0.2 - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)) css-select@5.1.0: dependencies: @@ -13146,7 +13312,8 @@ snapshots: domutils: 3.2.2 nth-check: 2.1.1 - css-shorthand-properties@1.1.2: {} + css-shorthand-properties@1.1.2: + optional: true css-tree@2.2.1: dependencies: @@ -13158,10 +13325,13 @@ snapshots: mdn-data: 2.0.30 source-map-js: 1.2.1 - css-value@0.0.1: {} + css-value@0.0.1: + optional: true css-what@6.1.0: {} + css.escape@1.5.1: {} + cssesc@3.0.0: {} cssnano-preset-default@6.1.2(postcss@8.5.2): @@ -13212,17 +13382,30 @@ snapshots: dependencies: css-tree: 2.2.1 + cssstyle@3.0.0: + dependencies: + rrweb-cssom: 0.6.0 + cuint@0.2.2: {} - custom-event@1.0.1: {} + custom-event@1.0.1: + optional: true dargs@8.1.0: {} dashdash@1.14.1: dependencies: assert-plus: 1.0.0 + optional: true + + data-uri-to-buffer@6.0.2: + optional: true - data-uri-to-buffer@6.0.2: {} + data-urls@4.0.0: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 12.0.1 date-format@4.0.14: {} @@ -13237,6 +13420,7 @@ snapshots: debug@4.3.7: dependencies: ms: 2.1.3 + optional: true debug@4.4.0: dependencies: @@ -13251,53 +13435,14 @@ snapshots: decamelize@5.0.1: {} - decode-uri-component@0.2.2: {} - - decompress-response@3.3.0: - dependencies: - mimic-response: 1.0.1 + decimal.js@10.5.0: {} decompress-response@6.0.0: dependencies: mimic-response: 3.1.0 + optional: true - decompress-tar@4.1.1: - dependencies: - file-type: 5.2.0 - is-stream: 1.1.0 - tar-stream: 1.6.2 - - decompress-tarbz2@4.1.1: - dependencies: - decompress-tar: 4.1.1 - file-type: 6.2.0 - is-stream: 1.1.0 - seek-bzip: 1.0.6 - unbzip2-stream: 1.4.3 - - decompress-targz@4.1.1: - dependencies: - decompress-tar: 4.1.1 - file-type: 5.2.0 - is-stream: 1.1.0 - - decompress-unzip@4.0.1: - dependencies: - file-type: 3.9.0 - get-stream: 2.3.1 - pify: 2.3.0 - yauzl: 2.10.0 - - decompress@4.2.1: - dependencies: - decompress-tar: 4.1.1 - decompress-tarbz2: 4.1.1 - decompress-targz: 4.1.1 - decompress-unzip: 4.0.1 - graceful-fs: 4.2.11 - make-dir: 1.3.0 - pify: 2.3.0 - strip-dirs: 2.1.0 + deep-eql@5.0.2: {} deep-equal@1.0.1: {} @@ -13316,29 +13461,19 @@ snapshots: dependencies: clone: 1.0.4 - defer-to-connect@2.0.1: {} - - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.1 - es-errors: 1.3.0 - gopd: 1.2.0 + defer-to-connect@2.0.1: + optional: true define-lazy-prop@2.0.0: {} define-lazy-prop@3.0.0: {} - define-properties@1.2.1: - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - degenerator@5.0.1: dependencies: ast-types: 0.13.4 escodegen: 2.1.0 esprima: 4.0.1 + optional: true del@2.2.2: dependencies: @@ -13349,6 +13484,7 @@ snapshots: pify: 2.3.0 pinkie-promise: 2.0.1 rimraf: 2.7.1 + optional: true delayed-stream@1.0.0: {} @@ -13360,6 +13496,8 @@ snapshots: dependency-graph@1.0.0: {} + dequal@2.0.3: {} + destroy@1.2.0: {} detect-libc@1.0.3: @@ -13377,9 +13515,11 @@ snapshots: transitivePeerDependencies: - supports-color - devtools-protocol@0.0.1402036: {} + devtools-protocol@0.0.1402036: + optional: true - devtools-protocol@0.0.818844: {} + devtools-protocol@0.0.818844: + optional: true devtools@6.12.1(encoding@0.1.13): dependencies: @@ -13397,8 +13537,10 @@ snapshots: - encoding - supports-color - utf-8-validate + optional: true - di@0.0.1: {} + di@0.0.1: + optional: true diff-sequences@29.6.3: {} @@ -13412,12 +13554,17 @@ snapshots: dependencies: '@leichtgewicht/ip-codec': 2.0.5 + dom-accessibility-api@0.5.16: {} + + dom-accessibility-api@0.6.3: {} + dom-serialize@2.2.1: dependencies: custom-event: 1.0.1 ent: 2.2.2 extend: 3.0.2 void-elements: 2.0.1 + optional: true dom-serializer@2.0.0: dependencies: @@ -13427,6 +13574,10 @@ snapshots: domelementtype@2.3.0: {} + domexception@4.0.0: + dependencies: + webidl-conversions: 7.0.0 + domhandler@5.0.3: dependencies: domelementtype: 2.3.0 @@ -13437,11 +13588,6 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 - dot-case@3.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.8.1 - dot-prop@5.3.0: dependencies: is-obj: 2.0.0 @@ -13452,42 +13598,25 @@ snapshots: dotenv@16.4.7: {} - download@7.1.0: - dependencies: - archive-type: 4.0.0 - caw: 2.0.1 - content-disposition: 0.5.4 - decompress: 4.2.1 - ext-name: 5.0.0 - file-type: 8.1.0 - filenamify: 2.1.0 - get-stream: 3.0.0 - got: 8.3.2 - make-dir: 1.3.0 - p-event: 2.3.1 - pify: 3.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: {} - - duplexer@0.1.2: {} - eastasianwidth@0.2.0: {} ecc-jsbn@0.1.2: dependencies: jsbn: 0.1.1 safer-buffer: 2.1.2 + optional: true edge-paths@2.2.1: dependencies: '@types/which': 1.3.2 which: 2.0.2 + optional: true ee-first@1.1.1: {} @@ -13517,7 +13646,8 @@ snapshots: dependencies: once: 1.4.0 - engine.io-parser@5.2.3: {} + engine.io-parser@5.2.3: + optional: true engine.io@6.6.4: dependencies: @@ -13534,6 +13664,7 @@ snapshots: - bufferutil - supports-color - utf-8-validate + optional: true enhanced-resolve@5.18.1: dependencies: @@ -13550,13 +13681,12 @@ snapshots: es-errors: 1.3.0 punycode: 1.4.1 safe-regex-test: 1.1.0 + optional: true entities@4.5.0: {} env-paths@2.2.1: {} - envinfo@7.14.0: {} - environment@1.1.0: {} err-code@2.0.3: {} @@ -13587,16 +13717,42 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.2 - es6-error@4.1.1: {} - - es6-promise@4.2.8: {} + es6-promise@4.2.8: + optional: true es6-promisify@5.0.0: dependencies: es6-promise: 4.2.8 + optional: true esbuild-wasm@0.24.2: {} + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + esbuild@0.24.2: optionalDependencies: '@esbuild/aix-ppc64': 0.24.2 @@ -13633,15 +13789,6 @@ snapshots: escape-string-regexp@4.0.0: {} - escodegen@1.8.1: - dependencies: - esprima: 2.7.3 - estraverse: 1.9.3 - esutils: 2.0.3 - optionator: 0.8.3 - optionalDependencies: - source-map: 0.2.0 - escodegen@2.1.0: dependencies: esprima: 4.0.1 @@ -13649,6 +13796,7 @@ snapshots: esutils: 2.0.3 optionalDependencies: source-map: 0.6.1 + optional: true eslint-config-prettier@9.1.0(eslint@9.20.1(jiti@1.21.7)): dependencies: @@ -13721,8 +13869,6 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.14.0) eslint-visitor-keys: 3.4.3 - esprima@2.7.3: {} - esprima@4.0.1: {} esquery@1.6.0: @@ -13733,64 +13879,35 @@ snapshots: dependencies: estraverse: 5.3.0 - estraverse@1.9.3: {} - estraverse@4.3.0: {} estraverse@5.3.0: {} estree-walker@2.0.2: {} + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.6 + esutils@2.0.3: {} etag@1.8.1: {} - event-stream@3.3.4: - dependencies: - duplexer: 0.1.2 - from: 0.1.7 - map-stream: 0.1.0 - pause-stream: 0.0.11 - split: 0.3.3 - stream-combiner: 0.0.4 - through: 2.3.8 - eventemitter3@4.0.7: {} eventemitter3@5.0.1: {} events@3.3.0: {} - execa@0.7.0: - dependencies: - cross-spawn: 5.1.0 - get-stream: 3.0.0 - is-stream: 1.1.0 - npm-run-path: 2.0.2 - p-finally: 1.0.0 - signal-exit: 3.0.7 - strip-eof: 1.0.0 - - execa@1.0.0: - dependencies: - cross-spawn: 6.0.6 - get-stream: 4.1.0 - is-stream: 1.1.0 - npm-run-path: 2.0.2 - p-finally: 1.0.0 - signal-exit: 3.0.7 - strip-eof: 1.0.0 - - executable@4.1.1: - dependencies: - pify: 2.3.0 - - exit@0.1.2: {} + exit@0.1.2: + optional: true expand-tilde@2.0.2: dependencies: homedir-polyfill: 1.0.3 + expect-type@1.2.0: {} + exponential-backoff@3.1.2: {} express@4.21.2: @@ -13829,16 +13946,8 @@ snapshots: transitivePeerDependencies: - supports-color - ext-list@2.2.2: - dependencies: - mime-db: 1.53.0 - - ext-name@5.0.0: - dependencies: - ext-list: 2.2.2 - sort-keys-length: 1.0.1 - - extend@3.0.2: {} + extend@3.0.2: + optional: true external-editor@3.1.0: dependencies: @@ -13855,14 +13964,18 @@ snapshots: '@types/yauzl': 2.10.3 transitivePeerDependencies: - supports-color + optional: true - extsprintf@1.3.0: {} + extsprintf@1.3.0: + optional: true - fast-deep-equal@2.0.1: {} + fast-deep-equal@2.0.1: + optional: true fast-deep-equal@3.1.3: {} - fast-fifo@1.3.2: {} + fast-fifo@1.3.2: + optional: true fast-glob@3.3.3: dependencies: @@ -13891,11 +14004,14 @@ snapshots: fd-slicer@1.1.0: dependencies: pend: 1.2.0 + optional: true fdir@6.4.3(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 + fflate@0.8.2: {} + figures@3.2.0: dependencies: escape-string-regexp: 1.0.5 @@ -13908,28 +14024,10 @@ snapshots: dependencies: flat-cache: 4.0.1 - file-type@3.9.0: {} - - file-type@4.4.0: {} - - file-type@5.2.0: {} - - file-type@6.2.0: {} - - file-type@8.1.0: {} - filelist@1.0.4: dependencies: minimatch: 5.1.6 - filename-reserved-regex@2.0.0: {} - - filenamify@2.1.0: - dependencies: - filename-reserved-regex: 2.0.0 - strip-outer: 1.0.1 - trim-repeated: 1.0.0 - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -13945,6 +14043,7 @@ snapshots: unpipe: 1.0.0 transitivePeerDependencies: - supports-color + optional: true finalhandler@1.3.1: dependencies: @@ -13992,10 +14091,6 @@ snapshots: locate-path: 7.2.0 path-exists: 5.0.0 - find-versions@3.2.0: - dependencies: - semver-regex: 2.0.0 - flat-cache@3.2.0: dependencies: flatted: 3.3.2 @@ -14020,9 +14115,10 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - forever-agent@0.6.1: {} + forever-agent@0.6.1: + optional: true - fork-ts-checker-webpack-plugin@7.2.13(typescript@5.7.3)(webpack@5.98.0): + fork-ts-checker-webpack-plugin@7.2.13(typescript@5.7.3)(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))): dependencies: '@babel/code-frame': 7.26.2 chalk: 4.1.2 @@ -14037,20 +14133,14 @@ snapshots: semver: 7.7.1 tapable: 2.2.1 typescript: 5.7.3 - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)) form-data@2.3.3: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - - form-data@3.0.3: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - mime-types: 2.1.35 + optional: true form-data@4.0.2: dependencies: @@ -14065,13 +14155,6 @@ snapshots: fresh@0.5.2: {} - from2@2.3.0: - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - - from@0.1.7: {} - front-matter@4.0.2: dependencies: js-yaml: 3.14.1 @@ -14109,6 +14192,9 @@ snapshots: fs.realpath@1.0.0: {} + fsevents@2.3.2: + optional: true + fsevents@2.3.3: optional: true @@ -14133,31 +14219,18 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.1.0 - get-port@5.1.1: {} + get-port@5.1.1: + optional: true get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 - get-proxy@2.1.0: - dependencies: - npm-conf: 1.1.3 - - get-stream@2.3.1: - dependencies: - object-assign: 4.1.1 - pinkie-promise: 2.0.1 - - get-stream@3.0.0: {} - - get-stream@4.1.0: - dependencies: - pump: 3.0.2 - get-stream@5.2.0: dependencies: pump: 3.0.2 + optional: true get-uri@6.0.4: dependencies: @@ -14166,10 +14239,12 @@ snapshots: debug: 4.4.0 transitivePeerDependencies: - supports-color + optional: true getpass@0.1.7: dependencies: assert-plus: 1.0.0 + optional: true git-raw-commits@4.0.0: dependencies: @@ -14201,14 +14276,6 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - glob@5.0.15: - dependencies: - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -14218,16 +14285,6 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - global-agent@2.2.0: - dependencies: - boolean: 3.2.0 - core-js: 3.40.0 - es6-error: 4.1.1 - matcher: 3.0.0 - roarr: 2.15.4 - semver: 7.7.1 - serialize-error: 7.0.1 - global-modules@1.0.0: dependencies: global-prefix: 1.0.2 @@ -14258,11 +14315,6 @@ snapshots: globals@15.15.0: {} - globalthis@1.0.4: - dependencies: - define-properties: 1.2.1 - gopd: 1.2.0 - globby@11.1.0: dependencies: array-union: 2.1.0 @@ -14298,6 +14350,7 @@ snapshots: object-assign: 4.1.1 pify: 2.3.0 pinkie-promise: 2.0.1 + optional: true globjoin@0.1.4: {} @@ -14316,35 +14369,17 @@ snapshots: lowercase-keys: 2.0.0 p-cancelable: 2.1.1 responselike: 2.0.1 - - got@8.3.2: - dependencies: - '@sindresorhus/is': 0.7.0 - '@types/keyv': 3.1.4 - '@types/responselike': 1.0.3 - cacheable-request: 2.1.4 - decompress-response: 3.3.0 - duplexer3: 0.1.5 - get-stream: 3.0.0 - into-stream: 3.1.0 - is-retry-allowed: 1.2.0 - isurl: 1.0.0 - lowercase-keys: 1.0.1 - mimic-response: 1.0.1 - p-cancelable: 0.4.1 - p-timeout: 2.0.1 - pify: 3.0.0 - safe-buffer: 5.2.1 - timed-out: 4.0.1 - url-parse-lax: 3.0.0 - url-to-options: 1.0.1 + optional: true graceful-fs@4.2.11: {} - grapheme-splitter@1.0.4: {} + grapheme-splitter@1.0.4: + optional: true graphemer@1.4.0: {} + graphql@16.10.0: {} + handle-thing@2.0.1: {} handlebars@4.7.8: @@ -14356,56 +14391,45 @@ snapshots: optionalDependencies: uglify-js: 3.19.3 - har-schema@2.0.0: {} + happy-dom@17.3.1: + dependencies: + webidl-conversions: 7.0.0 + whatwg-mimetype: 3.0.0 + optional: true + + har-schema@2.0.0: + optional: true har-validator@5.1.5: dependencies: ajv: 6.12.6 har-schema: 2.0.0 + optional: true hard-rejection@2.1.0: {} has-ansi@2.0.0: dependencies: ansi-regex: 2.1.1 - - has-flag@1.0.0: {} + optional: true has-flag@3.0.0: {} has-flag@4.0.0: {} - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.1 - - has-symbol-support-x@1.4.2: {} - has-symbols@1.1.0: {} - has-to-string-tag-x@1.4.1: - dependencies: - has-symbol-support-x: 1.4.2 - has-tostringtag@1.0.2: dependencies: has-symbols: 1.1.0 - hash.js@1.1.7: - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - hasown@2.0.2: dependencies: function-bind: 1.1.2 he@1.2.0: {} - header-case@2.0.4: - dependencies: - capital-case: 1.0.4 - tslib: 2.8.1 + headers-polyfill@4.0.3: {} homedir-polyfill@1.0.3: dependencies: @@ -14450,8 +14474,6 @@ snapshots: deep-equal: 1.0.1 http-errors: 1.8.1 - http-cache-semantics@3.8.1: {} - http-cache-semantics@4.1.1: {} http-deceiver@1.2.7: {} @@ -14481,6 +14503,14 @@ snapshots: http-parser-js@0.5.9: {} + http-proxy-agent@5.0.0: + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.3 @@ -14543,11 +14573,13 @@ snapshots: assert-plus: 1.0.0 jsprim: 1.4.2 sshpk: 1.18.0 + optional: true http2-wrapper@1.0.3: dependencies: quick-lru: 5.1.1 resolve-alpn: 1.2.1 + optional: true https-proxy-agent@2.2.4: dependencies: @@ -14555,6 +14587,7 @@ snapshots: debug: 3.2.7 transitivePeerDependencies: - supports-color + optional: true https-proxy-agent@4.0.0: dependencies: @@ -14562,6 +14595,7 @@ snapshots: debug: 4.4.0 transitivePeerDependencies: - supports-color + optional: true https-proxy-agent@5.0.1: dependencies: @@ -14604,7 +14638,8 @@ snapshots: image-size@0.5.5: optional: true - immediate@3.0.6: {} + immediate@3.0.6: + optional: true immutable@5.0.3: {} @@ -14613,17 +14648,12 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 - import-lazy@3.1.0: {} - import-lazy@4.0.0: {} - import-local@3.2.0: - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - imurmurhash@0.1.4: {} + indent-string@4.0.0: {} + indent-string@5.0.0: {} inflight@1.0.6: @@ -14643,13 +14673,6 @@ snapshots: dependencies: tslib: 2.8.1 - interpret@3.1.1: {} - - into-stream@3.1.0: - dependencies: - from2: 2.3.0 - p-is-promise: 1.1.0 - ip-address@9.0.5: dependencies: jsbn: 1.1.0 @@ -14700,25 +14723,26 @@ snapshots: is-interactive@1.0.0: {} - is-natural-number@4.0.1: {} - is-network-error@1.1.0: {} + is-node-process@1.2.0: {} + is-number@7.0.0: {} is-obj@2.0.0: {} - is-object@1.0.2: {} - - is-path-cwd@1.0.0: {} + is-path-cwd@1.0.0: + optional: true is-path-in-cwd@1.0.1: dependencies: is-path-inside: 1.0.1 + optional: true is-path-inside@1.0.1: dependencies: path-is-inside: 1.0.2 + optional: true is-plain-obj@1.1.0: {} @@ -14730,6 +14754,8 @@ snapshots: is-plain-object@5.0.0: {} + is-potential-custom-element-name@1.0.1: {} + is-regex@1.2.1: dependencies: call-bound: 1.0.3 @@ -14737,17 +14763,12 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.2 - is-retry-allowed@1.2.0: {} - - is-running@2.1.0: {} - - is-stream@1.1.0: {} - is-text-path@2.0.0: dependencies: text-extensions: 2.4.0 - is-typedarray@1.0.0: {} + is-typedarray@1.0.0: + optional: true is-unicode-supported@0.1.0: {} @@ -14765,7 +14786,8 @@ snapshots: isarray@1.0.0: {} - isbinaryfile@4.0.10: {} + isbinaryfile@4.0.10: + optional: true isexe@2.0.0: {} @@ -14781,41 +14803,32 @@ snapshots: dependencies: ws: 8.18.0 - isstream@0.1.2: {} + isstream@0.1.2: + optional: true istanbul-lib-coverage@3.2.2: {} - istanbul-lib-instrument@5.2.1: + istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.26.9 '@babel/parser': 7.26.9 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 6.3.1 + semver: 7.7.1 transitivePeerDependencies: - supports-color - istanbul-lib-instrument@6.0.3: - dependencies: - '@babel/core': 7.26.9 - '@babel/parser': 7.26.9 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 7.7.1 - transitivePeerDependencies: - - supports-color - - istanbul-lib-report@3.0.1: + istanbul-lib-report@3.0.1: dependencies: istanbul-lib-coverage: 3.2.2 make-dir: 4.0.0 supports-color: 7.2.0 - istanbul-lib-source-maps@4.0.1: + istanbul-lib-source-maps@5.0.6: dependencies: + '@jridgewell/trace-mapping': 0.3.25 debug: 4.4.0 istanbul-lib-coverage: 3.2.2 - source-map: 0.6.1 transitivePeerDependencies: - supports-color @@ -14824,28 +14837,6 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - istanbul@0.4.5: - dependencies: - abbrev: 1.0.9 - async: 1.5.2 - escodegen: 1.8.1 - esprima: 2.7.3 - glob: 5.0.15 - handlebars: 4.7.8 - js-yaml: 3.14.1 - mkdirp: 0.5.6 - nopt: 3.0.6 - once: 1.4.0 - resolve: 1.1.7 - supports-color: 3.2.3 - which: 1.3.1 - wordwrap: 1.0.0 - - isurl@1.0.0: - dependencies: - has-to-string-tag-x: 1.4.1 - is-object: 1.0.2 - jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 @@ -14859,24 +14850,18 @@ snapshots: filelist: 1.0.4 minimatch: 3.1.2 - jasmine-core@2.8.0: {} - - jasmine-core@4.6.1: {} - - jasmine-core@5.6.0: {} + jasmine-core@2.8.0: + optional: true jasmine@2.8.0: dependencies: exit: 0.1.2 glob: 7.2.3 jasmine-core: 2.8.0 + optional: true - jasmine@5.6.0: - dependencies: - glob: 10.4.5 - jasmine-core: 5.6.0 - - jasminewd2@2.2.0: {} + jasminewd2@2.2.0: + optional: true jest-diff@29.7.0: dependencies: @@ -14922,16 +14907,45 @@ snapshots: dependencies: argparse: 2.0.1 - jsbn@0.1.1: {} + jsbn@0.1.1: + optional: true jsbn@1.1.0: {} + jsdom@22.1.0: + dependencies: + abab: 2.0.6 + cssstyle: 3.0.0 + data-urls: 4.0.0 + decimal.js: 10.5.0 + domexception: 4.0.0 + form-data: 4.0.2 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.16 + parse5: 7.2.1 + rrweb-cssom: 0.6.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.4 + w3c-xmlserializer: 4.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 12.0.1 + ws: 8.18.0 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + jsesc@3.0.2: {} jsesc@3.1.0: {} - json-buffer@3.0.0: {} - json-buffer@3.0.1: {} json-parse-even-better-errors@2.3.1: {} @@ -14944,7 +14958,8 @@ snapshots: json-schema-traverse@1.0.0: {} - json-schema@0.4.0: {} + json-schema@0.4.0: + optional: true json-stable-stringify-without-jsonify@1.0.1: {} @@ -14981,6 +14996,7 @@ snapshots: extsprintf: 1.3.0 json-schema: 0.4.0 verror: 1.10.0 + optional: true jszip@3.10.1: dependencies: @@ -14988,65 +15004,7 @@ snapshots: pako: 1.0.11 readable-stream: 2.3.8 setimmediate: 1.0.5 - - karma-browserstack-launcher@1.6.0(karma@6.4.4): - dependencies: - browserstack: 1.5.3 - browserstack-local: 1.5.6 - karma: 6.4.4 - q: 1.5.1 - transitivePeerDependencies: - - supports-color - - karma-chrome-launcher@3.2.0: - dependencies: - which: 1.3.1 - - karma-coverage@2.2.1: - dependencies: - istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 5.2.1 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - karma-firefox-launcher@2.1.3: - dependencies: - is-wsl: 2.2.0 - which: 3.0.1 - - karma-jasmine-html-reporter@2.1.0(jasmine-core@5.6.0)(karma-jasmine@5.1.0(karma@6.4.4))(karma@6.4.4): - dependencies: - jasmine-core: 5.6.0 - karma: 6.4.4 - karma-jasmine: 5.1.0(karma@6.4.4) - - karma-jasmine@5.1.0(karma@6.4.4): - dependencies: - jasmine-core: 4.6.1 - karma: 6.4.4 - - karma-parallel@0.3.1(karma@6.4.4): - dependencies: - istanbul: 0.4.5 - karma: 6.4.4 - lodash: 4.17.21 - - karma-sauce-launcher@4.3.6(encoding@0.1.13)(typescript@5.7.3): - dependencies: - global-agent: 2.2.0 - saucelabs: 4.7.8 - webdriverio: 6.12.1(encoding@0.1.13)(typescript@5.7.3) - transitivePeerDependencies: - - bare-buffer - - bufferutil - - encoding - - supports-color - - typescript - - utf-8-validate + optional: true karma-source-map-support@1.4.0: dependencies: @@ -15083,15 +15041,12 @@ snapshots: - debug - supports-color - utf-8-validate + optional: true keygrip@1.1.0: dependencies: tsscmp: 1.0.6 - keyv@3.0.0: - dependencies: - json-buffer: 3.0.0 - keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -15145,33 +15100,20 @@ snapshots: lazystream@1.0.1: dependencies: readable-stream: 2.3.8 + optional: true - less-loader@11.1.0(less@4.1.3)(webpack@5.98.0): + less-loader@11.1.0(less@4.2.2)(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))): dependencies: klona: 2.0.6 - less: 4.1.3 - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + less: 4.2.2 + webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)) - less-loader@12.2.0(@rspack/core@1.2.3(@swc/helpers@0.5.15))(less@4.2.1)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)): + less-loader@12.2.0(@rspack/core@1.2.3(@swc/helpers@0.5.15))(less@4.2.1)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)): dependencies: less: 4.2.1 optionalDependencies: '@rspack/core': 1.2.3(@swc/helpers@0.5.15) - webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4) - - less@4.1.3: - dependencies: - copy-anything: 2.0.6 - parse-node-version: 1.0.1 - tslib: 2.8.1 - optionalDependencies: - errno: 0.1.8 - graceful-fs: 4.2.11 - image-size: 0.5.5 - make-dir: 2.1.0 - mime: 1.6.0 - needle: 3.3.1 - source-map: 0.6.1 + webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2) less@4.2.1: dependencies: @@ -15201,31 +15143,27 @@ snapshots: needle: 3.3.1 source-map: 0.6.1 - levn@0.3.0: - dependencies: - prelude-ls: 1.1.2 - type-check: 0.3.2 - levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - license-webpack-plugin@4.0.2(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)): + license-webpack-plugin@4.0.2(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)): dependencies: webpack-sources: 3.2.3 optionalDependencies: - webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4) + webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2) - license-webpack-plugin@4.0.2(webpack@5.98.0): + license-webpack-plugin@4.0.2(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))): dependencies: webpack-sources: 3.2.3 optionalDependencies: - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)) lie@3.3.0: dependencies: immediate: 3.0.6 + optional: true lighthouse-logger@1.4.2: dependencies: @@ -15233,6 +15171,7 @@ snapshots: marky: 1.2.5 transitivePeerDependencies: - supports-color + optional: true lilconfig@3.1.3: {} @@ -15289,21 +15228,27 @@ snapshots: dependencies: p-locate: 6.0.0 - lodash.clonedeep@4.5.0: {} + lodash.clonedeep@4.5.0: + optional: true lodash.clonedeepwith@4.5.0: {} lodash.debounce@4.0.8: {} - lodash.defaults@4.2.0: {} + lodash.defaults@4.2.0: + optional: true - lodash.difference@4.5.0: {} + lodash.difference@4.5.0: + optional: true - lodash.flatten@4.4.0: {} + lodash.flatten@4.4.0: + optional: true - lodash.isobject@3.0.2: {} + lodash.isobject@3.0.2: + optional: true - lodash.isplainobject@4.0.6: {} + lodash.isplainobject@4.0.6: + optional: true lodash.memoize@4.1.2: {} @@ -15311,11 +15256,13 @@ snapshots: lodash.truncate@4.4.2: {} - lodash.union@4.6.0: {} + lodash.union@4.6.0: + optional: true lodash.uniq@4.5.0: {} - lodash.zip@4.2.0: {} + lodash.zip@4.2.0: + optional: true lodash@4.17.21: {} @@ -15342,9 +15289,11 @@ snapshots: transitivePeerDependencies: - supports-color - loglevel-plugin-prefix@0.8.4: {} + loglevel-plugin-prefix@0.8.4: + optional: true - loglevel@1.9.2: {} + loglevel@1.9.2: + optional: true long-timeout@0.1.1: {} @@ -15352,23 +15301,13 @@ snapshots: dependencies: js-tokens: 4.0.0 - lower-case@2.0.2: - dependencies: - tslib: 2.8.1 - - lowercase-keys@1.0.0: {} + loupe@3.1.3: {} - lowercase-keys@1.0.1: {} - - lowercase-keys@2.0.0: {} + lowercase-keys@2.0.0: + optional: true lru-cache@10.4.3: {} - lru-cache@4.1.5: - dependencies: - pseudomap: 1.0.2 - yallist: 2.1.2 - lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -15377,17 +15316,22 @@ snapshots: dependencies: yallist: 4.0.0 - lru-cache@7.18.3: {} + lru-cache@7.18.3: + optional: true luxon@3.5.0: {} + lz-string@1.5.0: {} + magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - make-dir@1.3.0: + magicast@0.3.5: dependencies: - pify: 3.0.0 + '@babel/parser': 7.26.9 + '@babel/types': 7.26.9 + source-map-js: 1.2.1 make-dir@2.1.0: dependencies: @@ -15425,13 +15369,8 @@ snapshots: map-obj@4.3.0: {} - map-stream@0.1.0: {} - - marky@1.2.5: {} - - matcher@3.0.0: - dependencies: - escape-string-regexp: 4.0.0 + marky@1.2.5: + optional: true math-intrinsics@1.1.0: {} @@ -15496,28 +15435,31 @@ snapshots: mime@2.5.2: {} - mime@2.6.0: {} + mime@2.6.0: + optional: true mimic-fn@2.1.0: {} mimic-function@5.0.1: {} - mimic-response@1.0.1: {} + mimic-response@1.0.1: + optional: true - mimic-response@3.1.0: {} + mimic-response@3.1.0: + optional: true min-indent@1.0.1: {} - mini-css-extract-plugin@2.4.7(webpack@5.98.0): + mini-css-extract-plugin@2.4.7(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))): dependencies: schema-utils: 4.3.0 - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)) - mini-css-extract-plugin@2.9.2(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)): + mini-css-extract-plugin@2.9.2(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)): dependencies: schema-utils: 4.3.0 tapable: 2.2.1 - webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4) + webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2) minimalistic-assert@1.0.1: {} @@ -15591,9 +15533,11 @@ snapshots: minipass: 7.1.2 rimraf: 5.0.10 - mitt@3.0.1: {} + mitt@3.0.1: + optional: true - mkdirp-classic@0.5.3: {} + mkdirp-classic@0.5.3: + optional: true mkdirp@0.5.6: dependencies: @@ -15626,6 +15570,31 @@ snapshots: msgpackr-extract: 3.0.3 optional: true + msw@2.7.3(@types/node@20.17.19)(typescript@5.7.3): + dependencies: + '@bundled-es-modules/cookie': 2.0.1 + '@bundled-es-modules/statuses': 1.0.1 + '@bundled-es-modules/tough-cookie': 0.1.6 + '@inquirer/confirm': 5.1.6(@types/node@20.17.19) + '@mswjs/interceptors': 0.37.6 + '@open-draft/deferred-promise': 2.2.0 + '@open-draft/until': 2.1.0 + '@types/cookie': 0.6.0 + '@types/statuses': 2.0.5 + graphql: 16.10.0 + headers-polyfill: 4.0.3 + is-node-process: 1.2.0 + outvariant: 1.4.3 + path-to-regexp: 6.3.0 + picocolors: 1.1.1 + strict-event-emitter: 0.5.1 + type-fest: 4.34.1 + yargs: 17.7.2 + optionalDependencies: + typescript: 5.7.3 + transitivePeerDependencies: + - '@types/node' + multicast-dns@7.2.5: dependencies: dns-packet: 5.6.1 @@ -15653,7 +15622,8 @@ snapshots: neo-async@2.6.2: {} - netmask@2.0.2: {} + netmask@2.0.2: + optional: true ng-packagr@19.1.2(@angular/compiler-cli@19.1.6(@angular/compiler@19.1.6(@angular/core@19.1.6(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.7.3))(tslib@2.8.1)(typescript@5.7.3): dependencies: @@ -15683,13 +15653,6 @@ snapshots: optionalDependencies: rollup: 4.34.7 - nice-try@1.0.5: {} - - no-case@3.0.4: - dependencies: - lower-case: 2.0.2 - tslib: 2.8.1 - node-abort-controller@3.1.1: {} node-addon-api@6.1.0: @@ -15736,10 +15699,6 @@ snapshots: long-timeout: 0.1.1 sorted-array-functions: 1.3.0 - nopt@3.0.6: - dependencies: - abbrev: 1.0.9 - nopt@8.1.0: dependencies: abbrev: 3.0.0 @@ -15761,23 +15720,13 @@ snapshots: normalize-range@0.1.2: {} - normalize-url@2.0.1: - dependencies: - prepend-http: 2.0.0 - query-string: 5.1.1 - sort-keys: 2.0.0 - - normalize-url@6.1.0: {} + normalize-url@6.1.0: + optional: true npm-bundled@4.0.0: dependencies: npm-normalize-package-bin: 4.0.0 - npm-conf@1.1.3: - dependencies: - config-chain: 1.1.13 - pify: 3.0.0 - npm-install-checks@7.1.1: dependencies: semver: 7.7.1 @@ -15822,10 +15771,6 @@ snapshots: transitivePeerDependencies: - supports-color - npm-run-path@2.0.2: - dependencies: - path-key: 2.0.1 - npm-run-path@4.0.1: dependencies: path-key: 3.1.1 @@ -15834,7 +15779,9 @@ snapshots: dependencies: boolbase: 1.0.0 - nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)): + nwsapi@2.2.16: {} + + nx@20.4.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.5.29(@swc/helpers@0.5.15)): dependencies: '@napi-rs/wasm-runtime': 0.2.4 '@yarnpkg/lockfile': 1.1.0 @@ -15881,24 +15828,25 @@ snapshots: '@nx/nx-linux-x64-musl': 20.4.4 '@nx/nx-win32-arm64-msvc': 20.4.4 '@nx/nx-win32-x64-msvc': 20.4.4 - '@swc-node/register': 1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3) + '@swc-node/register': 1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3) '@swc/core': 1.5.29(@swc/helpers@0.5.15) transitivePeerDependencies: - debug - oauth-sign@0.9.0: {} + oauth-sign@0.9.0: + optional: true - object-assign@4.1.1: {} + object-assign@4.1.1: + optional: true object-inspect@1.13.4: {} - object-keys@1.1.1: {} - obuf@1.1.2: {} on-finished@2.3.0: dependencies: ee-first: 1.1.1 + optional: true on-finished@2.4.1: dependencies: @@ -15935,15 +15883,6 @@ snapshots: opener@1.5.2: {} - optionator@0.8.3: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.3.0 - prelude-ls: 1.1.2 - type-check: 0.3.2 - word-wrap: 1.2.5 - optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -15979,23 +15918,12 @@ snapshots: ordered-binary@1.5.3: optional: true - os-filter-obj@2.0.0: - dependencies: - arch: 2.2.0 - os-tmpdir@1.0.2: {} - p-cancelable@0.4.1: {} - - p-cancelable@2.1.1: {} - - p-event@2.3.1: - dependencies: - p-timeout: 2.0.1 - - p-finally@1.0.0: {} + outvariant@1.4.3: {} - p-is-promise@1.1.0: {} + p-cancelable@2.1.1: + optional: true p-limit@2.3.0: dependencies: @@ -16029,10 +15957,6 @@ snapshots: is-network-error: 1.1.0 retry: 0.13.1 - p-timeout@2.0.1: - dependencies: - p-finally: 1.0.0 - p-try@2.2.0: {} pac-proxy-agent@7.1.0: @@ -16047,11 +15971,13 @@ snapshots: socks-proxy-agent: 8.0.5 transitivePeerDependencies: - supports-color + optional: true pac-resolver@7.0.1: dependencies: degenerator: 5.0.1 netmask: 2.0.2 + optional: true package-json-from-dist@1.0.1: {} @@ -16078,12 +16004,8 @@ snapshots: - bluebird - supports-color - pako@1.0.11: {} - - param-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.8.1 + pako@1.0.11: + optional: true parent-module@1.0.1: dependencies: @@ -16126,15 +16048,7 @@ snapshots: parseurl@1.3.3: {} - pascal-case@3.1.2: - dependencies: - no-case: 3.0.4 - tslib: 2.8.1 - - path-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.8.1 + path-browserify@1.0.1: {} path-exists@4.0.0: {} @@ -16142,9 +16056,8 @@ snapshots: path-is-absolute@1.0.1: {} - path-is-inside@1.0.2: {} - - path-key@2.0.1: {} + path-is-inside@1.0.2: + optional: true path-key@3.1.1: {} @@ -16157,17 +16070,21 @@ snapshots: path-to-regexp@0.1.12: {} + path-to-regexp@6.3.0: {} + path-type@4.0.0: {} path-type@6.0.0: {} - pause-stream@0.0.11: - dependencies: - through: 2.3.8 + pathe@1.1.2: {} + + pathval@2.0.0: {} - pend@1.2.0: {} + pend@1.2.0: + optional: true - performance-now@2.1.0: {} + performance-now@2.1.0: + optional: true picocolors@1.1.1: {} @@ -16177,15 +16094,16 @@ snapshots: pify@2.3.0: {} - pify@3.0.0: {} - - pify@4.0.1: {} + pify@4.0.1: + optional: true pinkie-promise@2.0.1: dependencies: pinkie: 2.0.4 + optional: true - pinkie@2.0.4: {} + pinkie@2.0.4: + optional: true pirates@4.0.6: {} @@ -16201,6 +16119,14 @@ snapshots: dependencies: find-up: 6.3.0 + playwright-core@1.51.0: {} + + playwright@1.51.0: + dependencies: + playwright-core: 1.51.0 + optionalDependencies: + fsevents: 2.3.2 + portfinder@1.0.32: dependencies: async: 2.6.4 @@ -16252,15 +16178,15 @@ snapshots: read-cache: 1.0.0 resolve: 1.22.10 - postcss-loader@6.2.1(postcss@8.5.2)(webpack@5.98.0): + postcss-loader@6.2.1(postcss@8.5.2)(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))): dependencies: cosmiconfig: 7.1.0 klona: 2.0.6 postcss: 8.5.2 semver: 7.7.1 - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)) - postcss-loader@8.1.1(@rspack/core@1.2.3(@swc/helpers@0.5.15))(postcss@8.4.49)(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)): + postcss-loader@8.1.1(@rspack/core@1.2.3(@swc/helpers@0.5.15))(postcss@8.4.49)(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)): dependencies: cosmiconfig: 9.0.0(typescript@5.7.3) jiti: 1.21.7 @@ -16268,7 +16194,7 @@ snapshots: semver: 7.7.1 optionalDependencies: '@rspack/core': 1.2.3(@swc/helpers@0.5.15) - webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4) + webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2) transitivePeerDependencies: - typescript @@ -16448,14 +16374,16 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - prelude-ls@1.1.2: {} - prelude-ls@1.2.1: {} - prepend-http@2.0.0: {} - prettier@3.5.3: {} + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + pretty-format@29.7.0: dependencies: '@jest/schemas': 29.6.3 @@ -16468,7 +16396,8 @@ snapshots: process-nextick-args@2.0.1: {} - progress@2.0.3: {} + progress@2.0.3: + optional: true promise-inflight@1.0.1: {} @@ -16477,8 +16406,6 @@ snapshots: err-code: 2.0.3 retry: 0.12.0 - proto-list@1.2.4: {} - protractor@7.0.0: dependencies: '@types/q': 0.0.32 @@ -16498,6 +16425,7 @@ snapshots: yargs: 15.4.1 transitivePeerDependencies: - supports-color + optional: true proxy-addr@2.0.7: dependencies: @@ -16516,18 +16444,13 @@ snapshots: socks-proxy-agent: 8.0.5 transitivePeerDependencies: - supports-color + optional: true proxy-from-env@1.1.0: {} prr@1.0.1: optional: true - ps-tree@1.2.0: - dependencies: - event-stream: 3.3.4 - - pseudomap@1.0.2: {} - psl@1.15.0: dependencies: punycode: 2.3.1 @@ -16536,8 +16459,10 @@ snapshots: dependencies: end-of-stream: 1.4.4 once: 1.4.0 + optional: true - punycode@1.4.1: {} + punycode@1.4.1: + optional: true punycode@2.3.1: {} @@ -16554,6 +16479,7 @@ snapshots: - bufferutil - supports-color - utf-8-validate + optional: true puppeteer-core@5.5.0(encoding@0.1.13): dependencies: @@ -16574,6 +16500,7 @@ snapshots: - encoding - supports-color - utf-8-validate + optional: true puppeteer@24.2.1(typescript@5.7.3): dependencies: @@ -16589,12 +16516,13 @@ snapshots: - supports-color - typescript - utf-8-validate + optional: true - q@1.4.1: {} - - q@1.5.1: {} + q@1.4.1: + optional: true - qjobs@1.2.0: {} + qjobs@1.2.0: + optional: true qs@6.13.0: dependencies: @@ -16604,13 +16532,10 @@ snapshots: dependencies: side-channel: 1.1.0 - qs@6.5.3: {} + qs@6.5.3: + optional: true - query-string@5.1.1: - dependencies: - decode-uri-component: 0.2.2 - object-assign: 4.1.1 - strict-uri-encode: 1.1.0 + querystringify@2.2.0: {} queue-microtask@1.2.3: {} @@ -16637,6 +16562,8 @@ snapshots: react: 18.3.1 scheduler: 0.23.2 + react-is@17.0.2: {} + react-is@18.3.1: {} react@18.3.1: @@ -16692,6 +16619,7 @@ snapshots: readdir-glob@1.1.3: dependencies: minimatch: 5.1.6 + optional: true readdirp@3.6.0: dependencies: @@ -16699,9 +16627,10 @@ snapshots: readdirp@4.1.2: {} - rechoir@0.8.0: + redent@3.0.0: dependencies: - resolve: 1.22.10 + indent-string: 4.0.0 + strip-indent: 3.0.0 redent@4.0.0: dependencies: @@ -16761,20 +16690,19 @@ snapshots: tough-cookie: 2.5.0 tunnel-agent: 0.6.0 uuid: 3.4.0 + optional: true require-directory@2.1.1: {} require-from-string@2.0.2: {} - require-main-filename@2.0.0: {} + require-main-filename@2.0.0: + optional: true requires-port@1.0.0: {} - resolve-alpn@1.2.1: {} - - resolve-cwd@3.0.0: - dependencies: - resolve-from: 5.0.0 + resolve-alpn@1.2.1: + optional: true resolve-dir@1.0.1: dependencies: @@ -16795,8 +16723,6 @@ snapshots: resolve.exports@2.0.3: {} - resolve@1.1.7: {} - resolve@1.22.10: dependencies: is-core-module: 2.16.1 @@ -16809,17 +16735,15 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - responselike@1.0.2: - dependencies: - lowercase-keys: 1.0.1 - responselike@2.0.1: dependencies: lowercase-keys: 2.0.0 + optional: true resq@1.11.0: dependencies: fast-deep-equal: 2.0.1 + optional: true restore-cursor@3.1.0: dependencies: @@ -16839,15 +16763,13 @@ snapshots: rfdc@1.4.1: {} - rgb2hex@0.2.3: {} - - rimraf@2.5.4: - dependencies: - glob: 7.2.3 + rgb2hex@0.2.3: + optional: true rimraf@2.7.1: dependencies: glob: 7.2.3 + optional: true rimraf@3.0.2: dependencies: @@ -16857,15 +16779,6 @@ snapshots: dependencies: glob: 10.4.5 - roarr@2.15.4: - dependencies: - boolean: 3.2.0 - detect-node: 2.1.0 - globalthis: 1.0.4 - json-stringify-safe: 5.0.1 - semver-compare: 1.0.0 - sprintf-js: 1.1.3 - rollup@4.30.1: dependencies: '@types/estree': 1.0.6 @@ -16916,6 +16829,8 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.34.7 fsevents: 2.3.3 + rrweb-cssom@0.6.0: {} + run-applescript@7.0.0: {} run-parallel@1.2.0: @@ -16938,21 +16853,21 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@12.6.0(sass@1.85.0)(webpack@5.98.0): + sass-loader@12.6.0(sass@1.85.0)(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))): dependencies: klona: 2.0.6 neo-async: 2.6.2 - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)) optionalDependencies: sass: 1.85.0 - sass-loader@16.0.4(@rspack/core@1.2.3(@swc/helpers@0.5.15))(sass@1.83.1)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)): + sass-loader@16.0.4(@rspack/core@1.2.3(@swc/helpers@0.5.15))(sass@1.83.1)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)): dependencies: neo-async: 2.6.2 optionalDependencies: '@rspack/core': 1.2.3(@swc/helpers@0.5.15) sass: 1.83.1 - webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4) + webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2) sass@1.83.1: dependencies: @@ -16975,19 +16890,14 @@ snapshots: https-proxy-agent: 2.2.4 transitivePeerDependencies: - supports-color - - saucelabs@4.7.8: - dependencies: - bin-wrapper: 4.1.0 - change-case: 4.1.2 - form-data: 3.0.3 - got: 11.8.6 - hash.js: 1.1.7 - tunnel: 0.0.6 - yargs: 16.2.0 + optional: true sax@1.4.1: {} + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + scheduler@0.23.2: dependencies: loose-envify: 1.4.0 @@ -17007,10 +16917,6 @@ snapshots: secure-compare@3.0.1: {} - seek-bzip@1.0.6: - dependencies: - commander: 2.20.3 - select-hose@2.0.0: {} selenium-webdriver@3.6.0: @@ -17019,20 +16925,13 @@ snapshots: rimraf: 2.7.1 tmp: 0.0.30 xml2js: 0.4.23 + optional: true selfsigned@2.4.1: dependencies: '@types/node-forge': 1.3.11 node-forge: 1.3.1 - semver-compare@1.0.0: {} - - semver-regex@2.0.0: {} - - semver-truncate@1.1.2: - dependencies: - semver: 5.7.2 - semver@5.7.2: {} semver@6.3.1: {} @@ -17059,19 +16958,10 @@ snapshots: transitivePeerDependencies: - supports-color - sentence-case@3.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.8.1 - upper-case-first: 2.0.2 - - serialize-error@7.0.1: - dependencies: - type-fest: 0.13.1 - serialize-error@8.1.0: dependencies: type-fest: 0.20.2 + optional: true serialize-javascript@6.0.2: dependencies: @@ -17098,9 +16988,11 @@ snapshots: transitivePeerDependencies: - supports-color - set-blocking@2.0.0: {} + set-blocking@2.0.0: + optional: true - setimmediate@1.0.5: {} + setimmediate@1.0.5: + optional: true setprototypeof@1.1.0: {} @@ -17110,16 +17002,10 @@ snapshots: dependencies: kind-of: 6.0.3 - shebang-command@1.2.0: - dependencies: - shebang-regex: 1.0.0 - shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 - shebang-regex@1.0.0: {} - shebang-regex@3.0.0: {} shell-quote@1.8.2: {} @@ -17152,6 +17038,8 @@ snapshots: side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 + siginfo@2.0.0: {} + signal-exit@3.0.7: {} signal-exit@4.1.0: {} @@ -17167,6 +17055,12 @@ snapshots: transitivePeerDependencies: - supports-color + sirv@3.0.1: + dependencies: + '@polka/url': 1.0.0-next.28 + mrmime: 2.0.0 + totalist: 3.0.1 + slash@3.0.0: {} slash@4.0.0: {} @@ -17191,11 +17085,6 @@ snapshots: smart-buffer@4.2.0: {} - snake-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.8.1 - socket.io-adapter@2.5.5: dependencies: debug: 4.3.7 @@ -17204,6 +17093,7 @@ snapshots: - bufferutil - supports-color - utf-8-validate + optional: true socket.io-parser@4.2.4: dependencies: @@ -17211,6 +17101,7 @@ snapshots: debug: 4.3.7 transitivePeerDependencies: - supports-color + optional: true socket.io@4.8.1: dependencies: @@ -17225,6 +17116,7 @@ snapshots: - bufferutil - supports-color - utf-8-validate + optional: true sockjs@0.3.24: dependencies: @@ -17245,37 +17137,26 @@ snapshots: ip-address: 9.0.5 smart-buffer: 4.2.0 - sort-keys-length@1.0.1: - dependencies: - sort-keys: 1.1.2 - - sort-keys@1.1.2: - dependencies: - is-plain-obj: 1.1.0 - - sort-keys@2.0.0: - dependencies: - is-plain-obj: 1.1.0 - sorted-array-functions@1.3.0: {} source-map-js@1.2.1: {} - source-map-loader@5.0.0(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)): + source-map-loader@5.0.0(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4) + webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2) - source-map-loader@5.0.0(webpack@5.98.0): + source-map-loader@5.0.0(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)) source-map-support@0.4.18: dependencies: source-map: 0.5.7 + optional: true source-map-support@0.5.19: dependencies: @@ -17287,13 +17168,9 @@ snapshots: buffer-from: 1.1.2 source-map: 0.6.1 - source-map@0.2.0: - dependencies: - amdefine: 1.0.1 + source-map@0.5.7: optional: true - source-map@0.5.7: {} - source-map@0.6.1: {} source-map@0.7.4: {} @@ -17335,10 +17212,6 @@ snapshots: split2@4.2.0: {} - split@0.3.3: - dependencies: - through: 2.3.8 - sprintf-js@1.0.3: {} sprintf-js@1.1.3: {} @@ -17354,18 +17227,19 @@ snapshots: jsbn: 0.1.1 safer-buffer: 2.1.2 tweetnacl: 0.14.5 + optional: true ssri@12.0.0: dependencies: minipass: 7.1.2 + stackback@0.0.2: {} + statuses@1.5.0: {} statuses@2.0.1: {} - stream-combiner@0.0.4: - dependencies: - duplexer: 0.1.2 + std-env@3.8.0: {} streamroller@3.1.5: dependencies: @@ -17381,8 +17255,9 @@ snapshots: text-decoder: 1.2.3 optionalDependencies: bare-events: 2.5.4 + optional: true - strict-uri-encode@1.1.0: {} + strict-event-emitter@0.5.1: {} string-width@4.2.3: dependencies: @@ -17413,6 +17288,7 @@ snapshots: strip-ansi@3.0.1: dependencies: ansi-regex: 2.1.1 + optional: true strip-ansi@6.0.1: dependencies: @@ -17424,11 +17300,9 @@ snapshots: strip-bom@3.0.0: {} - strip-dirs@2.1.0: + strip-indent@3.0.0: dependencies: - is-natural-number: 4.0.1 - - strip-eof@1.0.0: {} + min-indent: 1.0.1 strip-indent@4.0.0: dependencies: @@ -17436,13 +17310,9 @@ snapshots: strip-json-comments@3.1.1: {} - strip-outer@1.0.1: + style-loader@3.3.4(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))): dependencies: - escape-string-regexp: 1.0.5 - - style-loader@3.3.4(webpack@5.98.0): - dependencies: - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)) style-search@0.1.0: {} @@ -17498,12 +17368,12 @@ snapshots: - supports-color - typescript - stylus-loader@7.1.3(stylus@0.64.0)(webpack@5.98.0): + stylus-loader@7.1.3(stylus@0.64.0)(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))): dependencies: fast-glob: 3.3.3 normalize-path: 3.0.0 stylus: 0.64.0 - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)) stylus@0.64.0: dependencies: @@ -17515,11 +17385,8 @@ snapshots: transitivePeerDependencies: - supports-color - supports-color@2.0.0: {} - - supports-color@3.2.3: - dependencies: - has-flag: 1.0.0 + supports-color@2.0.0: + optional: true supports-color@5.5.0: dependencies: @@ -17554,6 +17421,8 @@ snapshots: symbol-observable@4.0.0: {} + symbol-tree@3.2.4: {} + table@6.9.0: dependencies: ajv: 8.17.1 @@ -17570,6 +17439,7 @@ snapshots: mkdirp-classic: 0.5.3 pump: 3.0.2 tar-stream: 2.2.0 + optional: true tar-fs@3.0.8: dependencies: @@ -17580,16 +17450,7 @@ snapshots: bare-path: 3.0.0 transitivePeerDependencies: - bare-buffer - - tar-stream@1.6.2: - dependencies: - bl: 1.2.3 - buffer-alloc: 1.2.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - readable-stream: 2.3.8 - to-buffer: 1.1.1 - xtend: 4.0.2 + optional: true tar-stream@2.2.0: dependencies: @@ -17604,6 +17465,7 @@ snapshots: b4a: 1.6.7 fast-fifo: 1.3.2 streamx: 2.22.0 + optional: true tar@6.2.1: dependencies: @@ -17625,34 +17487,30 @@ snapshots: temp-dir@3.0.0: {} - temp-fs@0.9.9: - dependencies: - rimraf: 2.5.4 - tempfile@5.0.0: dependencies: temp-dir: 3.0.0 - terser-webpack-plugin@5.3.11(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)): + terser-webpack-plugin@5.3.11(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.0 serialize-javascript: 6.0.2 terser: 5.39.0 - webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4) + webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2) optionalDependencies: '@swc/core': 1.5.29(@swc/helpers@0.5.15) esbuild: 0.24.2 - terser-webpack-plugin@5.3.11(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack@5.98.0): + terser-webpack-plugin@5.3.11(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.0 serialize-javascript: 6.0.2 terser: 5.39.0 - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)) optionalDependencies: '@swc/core': 1.5.29(@swc/helpers@0.5.15) @@ -17670,9 +17528,16 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 + test-exclude@7.0.1: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 10.4.5 + minimatch: 9.0.5 + text-decoder@1.2.3: dependencies: b4a: 1.6.7 + optional: true text-extensions@2.4.0: {} @@ -17684,16 +17549,25 @@ snapshots: thunky@1.1.0: {} - timed-out@4.0.1: {} + tinybench@2.9.0: {} + + tinyexec@0.3.2: {} tinyglobby@0.2.10: dependencies: fdir: 6.4.3(picomatch@4.0.2) picomatch: 4.0.2 + tinypool@1.0.2: {} + + tinyrainbow@1.2.0: {} + + tinyspy@3.0.2: {} + tmp@0.0.30: dependencies: os-tmpdir: 1.0.2 + optional: true tmp@0.0.33: dependencies: @@ -17701,21 +17575,33 @@ snapshots: tmp@0.2.3: {} - to-buffer@1.1.1: {} - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 toidentifier@1.0.1: {} + totalist@3.0.1: {} + tough-cookie@2.5.0: dependencies: psl: 1.15.0 punycode: 2.3.1 + optional: true + + tough-cookie@4.1.4: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 tr46@0.0.3: {} + tr46@4.1.1: + dependencies: + punycode: 2.3.1 + tree-dump@1.0.2(tslib@2.8.1): dependencies: tslib: 2.8.1 @@ -17724,15 +17610,11 @@ snapshots: trim-newlines@4.1.1: {} - trim-repeated@1.0.0: - dependencies: - escape-string-regexp: 1.0.5 - ts-api-utils@2.0.1(typescript@5.7.3): dependencies: typescript: 5.7.3 - ts-loader@9.5.2(typescript@5.7.3)(webpack@5.98.0): + ts-loader@9.5.2(typescript@5.7.3)(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))): dependencies: chalk: 4.1.2 enhanced-resolve: 5.18.1 @@ -17740,7 +17622,12 @@ snapshots: semver: 7.7.1 source-map: 0.7.4 typescript: 5.7.3 - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)) + + ts-morph@21.0.1: + dependencies: + '@ts-morph/common': 0.22.0 + code-block-writer: 12.0.0 ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@20.17.19)(typescript@5.7.3): dependencies: @@ -17838,22 +17725,17 @@ snapshots: tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 + optional: true - tunnel@0.0.6: {} - - tweetnacl@0.14.5: {} - - type-check@0.3.2: - dependencies: - prelude-ls: 1.1.2 + tweetnacl@0.14.5: + optional: true type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - type-fest@0.13.1: {} - - type-fest@0.20.2: {} + type-fest@0.20.2: + optional: true type-fest@0.21.3: {} @@ -17870,7 +17752,8 @@ snapshots: typed-assert@1.0.9: {} - typed-query-selector@2.12.0: {} + typed-query-selector@2.12.0: + optional: true typescript-eslint@8.24.0(eslint@9.20.1(jiti@1.21.7))(typescript@5.7.3): dependencies: @@ -17884,7 +17767,8 @@ snapshots: typescript@5.7.3: {} - ua-parser-js@0.7.40: {} + ua-parser-js@0.7.40: + optional: true uglify-js@3.19.3: optional: true @@ -17893,6 +17777,7 @@ snapshots: dependencies: buffer: 5.7.1 through: 2.3.8 + optional: true undici-types@6.19.8: {} @@ -17921,8 +17806,14 @@ snapshots: dependencies: imurmurhash: 0.1.4 + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + universalify@0.1.2: {} + universalify@0.2.0: {} + universalify@2.0.1: {} unpipe@1.0.0: {} @@ -17935,31 +17826,23 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 - upper-case-first@2.0.2: - dependencies: - tslib: 2.8.1 - - upper-case@2.0.2: - dependencies: - tslib: 2.8.1 - uri-js@4.4.1: dependencies: punycode: 2.3.1 url-join@4.0.1: {} - url-parse-lax@3.0.0: + url-parse@1.5.10: dependencies: - prepend-http: 2.0.0 - - url-to-options@1.0.1: {} + querystringify: 2.2.0 + requires-port: 1.0.0 util-deprecate@1.0.2: {} utils-merge@1.0.1: {} - uuid@3.4.0: {} + uuid@3.4.0: + optional: true uuid@8.3.2: {} @@ -17981,8 +17864,50 @@ snapshots: assert-plus: 1.0.0 core-util-is: 1.0.2 extsprintf: 1.3.0 + optional: true + + vfile-message@4.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.2 + + vite-node@2.1.9(@types/node@20.17.19)(less@4.2.2)(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0): + dependencies: + cac: 6.7.14 + debug: 4.4.0 + es-module-lexer: 1.6.0 + pathe: 1.1.2 + vite: 5.4.15(@types/node@20.17.19)(less@4.2.2)(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vite@5.4.15(@types/node@20.17.19)(less@4.2.2)(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0): + dependencies: + esbuild: 0.21.5 + postcss: 8.5.2 + rollup: 4.34.7 + optionalDependencies: + '@types/node': 20.17.19 + fsevents: 2.3.3 + less: 4.2.2 + sass: 1.85.0 + stylus: 0.64.0 + terser: 5.37.0 - vite@6.0.11(@types/node@20.17.19)(jiti@1.21.7)(less@4.1.3)(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0)(yaml@2.7.0): + vite@6.0.11(@types/node@20.17.19)(jiti@1.21.7)(less@4.2.1)(sass@1.83.1)(stylus@0.64.0)(terser@5.37.0)(yaml@2.7.0): dependencies: esbuild: 0.24.2 postcss: 8.5.2 @@ -17991,13 +17916,73 @@ snapshots: '@types/node': 20.17.19 fsevents: 2.3.3 jiti: 1.21.7 - less: 4.1.3 - sass: 1.85.0 + less: 4.2.1 + sass: 1.83.1 stylus: 0.64.0 terser: 5.37.0 yaml: 2.7.0 - void-elements@2.0.1: {} + vite@6.0.11(@types/node@20.17.19)(jiti@1.21.7)(less@4.2.2)(sass@1.83.1)(stylus@0.64.0)(terser@5.37.0)(yaml@2.7.0): + dependencies: + esbuild: 0.24.2 + postcss: 8.5.2 + rollup: 4.34.7 + optionalDependencies: + '@types/node': 20.17.19 + fsevents: 2.3.3 + jiti: 1.21.7 + less: 4.2.2 + sass: 1.83.1 + stylus: 0.64.0 + terser: 5.37.0 + yaml: 2.7.0 + optional: true + + vitest@2.1.9(@types/node@20.17.19)(@vitest/browser@2.1.9)(@vitest/ui@2.1.9)(happy-dom@17.3.1)(jsdom@22.1.0)(less@4.2.2)(msw@2.7.3(@types/node@20.17.19)(typescript@5.7.3))(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0): + dependencies: + '@vitest/expect': 2.1.9 + '@vitest/mocker': 2.1.9(msw@2.7.3(@types/node@20.17.19)(typescript@5.7.3))(vite@5.4.15(@types/node@20.17.19)(less@4.2.2)(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0)) + '@vitest/pretty-format': 2.1.9 + '@vitest/runner': 2.1.9 + '@vitest/snapshot': 2.1.9 + '@vitest/spy': 2.1.9 + '@vitest/utils': 2.1.9 + chai: 5.2.0 + debug: 4.4.0 + expect-type: 1.2.0 + magic-string: 0.30.17 + pathe: 1.1.2 + std-env: 3.8.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinypool: 1.0.2 + tinyrainbow: 1.2.0 + vite: 5.4.15(@types/node@20.17.19)(less@4.2.2)(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0) + vite-node: 2.1.9(@types/node@20.17.19)(less@4.2.2)(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 20.17.19 + '@vitest/browser': 2.1.9(@types/node@20.17.19)(playwright@1.51.0)(typescript@5.7.3)(vite@5.4.15(@types/node@20.17.19)(less@4.2.2)(sass@1.85.0)(stylus@0.64.0)(terser@5.37.0))(vitest@2.1.9)(webdriverio@6.12.1(encoding@0.1.13)(typescript@5.7.3)) + '@vitest/ui': 2.1.9(vitest@2.1.9) + happy-dom: 17.3.1 + jsdom: 22.1.0 + transitivePeerDependencies: + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + void-elements@2.0.1: + optional: true + + w3c-xmlserializer@4.0.0: + dependencies: + xml-name-validator: 4.0.0 watchpack@2.4.2: dependencies: @@ -18019,6 +18004,7 @@ snapshots: dependencies: '@types/selenium-webdriver': 3.0.26 selenium-webdriver: 3.6.0 + optional: true webdriver-manager@12.1.9: dependencies: @@ -18033,6 +18019,7 @@ snapshots: rimraf: 2.7.1 semver: 5.7.2 xml2js: 0.4.23 + optional: true webdriver@6.12.1: dependencies: @@ -18042,6 +18029,7 @@ snapshots: '@wdio/utils': 6.11.0 got: 11.8.6 lodash.merge: 4.6.2 + optional: true webdriverio@6.12.1(encoding@0.1.13)(typescript@5.7.3): dependencies: @@ -18075,29 +18063,13 @@ snapshots: - supports-color - typescript - utf-8-validate + optional: true webidl-conversions@3.0.1: {} - webpack-cli@5.1.4(webpack-dev-server@5.2.0)(webpack@5.98.0): - dependencies: - '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.98.0) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.98.0) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack-dev-server@5.2.0)(webpack@5.98.0) - colorette: 2.0.20 - commander: 10.0.1 - cross-spawn: 7.0.6 - envinfo: 7.14.0 - fastest-levenshtein: 1.0.16 - import-local: 3.2.0 - interpret: 3.1.1 - rechoir: 0.8.0 - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) - webpack-merge: 5.10.0 - optionalDependencies: - webpack-dev-server: 5.2.0(webpack-cli@5.1.4)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)) + webidl-conversions@7.0.0: {} - webpack-dev-middleware@7.4.2(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)): + webpack-dev-middleware@7.4.2(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)): dependencies: colorette: 2.0.20 memfs: 4.17.0 @@ -18106,47 +18078,20 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.0 optionalDependencies: - webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4) + webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2) - webpack-dev-server@5.2.0(webpack-cli@5.1.4)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)): + webpack-dev-middleware@7.4.2(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))): dependencies: - '@types/bonjour': 3.5.13 - '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.21 - '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.7 - '@types/sockjs': 0.3.36 - '@types/ws': 8.5.14 - ansi-html-community: 0.0.8 - bonjour-service: 1.3.0 - chokidar: 3.6.0 colorette: 2.0.20 - compression: 1.8.0 - connect-history-api-fallback: 2.0.0 - express: 4.21.2 - graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.7(@types/express@4.17.21) - ipaddr.js: 2.2.0 - launch-editor: 2.9.1 - open: 10.1.0 - p-retry: 6.2.1 + memfs: 4.17.0 + mime-types: 2.1.35 + on-finished: 2.4.1 + range-parser: 1.2.1 schema-utils: 4.3.0 - selfsigned: 2.4.1 - serve-index: 1.9.1 - sockjs: 0.3.24 - spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)) - ws: 8.18.0 optionalDependencies: - webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@5.2.0)(webpack@5.98.0) - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate + webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)) - webpack-dev-server@5.2.0(webpack-cli@5.1.4)(webpack@5.98.0): + webpack-dev-server@5.2.0(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -18173,11 +18118,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)) + webpack-dev-middleware: 7.4.2(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) ws: 8.18.0 optionalDependencies: - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@5.2.0)(webpack@5.98.0) + webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)) transitivePeerDependencies: - bufferutil - debug @@ -18200,17 +18144,17 @@ snapshots: webpack-sources@3.2.3: {} - webpack-subresource-integrity@5.1.0(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)): + webpack-subresource-integrity@5.1.0(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)): dependencies: typed-assert: 1.0.9 - webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4) + webpack: 5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2) - webpack-subresource-integrity@5.1.0(webpack@5.98.0): + webpack-subresource-integrity@5.1.0(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))): dependencies: typed-assert: 1.0.9 - webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)) - webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4): + webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.6 @@ -18232,17 +18176,15 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.11(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.11(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)(webpack@5.97.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.24.2)) watchpack: 2.4.2 webpack-sources: 3.2.3 - optionalDependencies: - webpack-cli: 5.1.4(webpack-dev-server@5.2.0)(webpack@5.98.0) transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack-cli@5.1.4): + webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15)): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.6 @@ -18264,11 +18206,9 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.11(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack@5.98.0) + terser-webpack-plugin: 5.3.11(@swc/core@1.5.29(@swc/helpers@0.5.15))(webpack@5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.15))) watchpack: 2.4.2 webpack-sources: 3.2.3 - optionalDependencies: - webpack-cli: 5.1.4(webpack-dev-server@5.2.0)(webpack@5.98.0) transitivePeerDependencies: - '@swc/core' - esbuild @@ -18286,12 +18226,20 @@ snapshots: dependencies: iconv-lite: 0.6.3 + whatwg-mimetype@3.0.0: {} + + whatwg-url@12.0.1: + dependencies: + tr46: 4.1.1 + webidl-conversions: 7.0.0 + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - which-module@2.0.1: {} + which-module@2.0.1: + optional: true which@1.3.1: dependencies: @@ -18301,14 +18249,15 @@ snapshots: dependencies: isexe: 2.0.0 - which@3.0.1: - dependencies: - isexe: 2.0.0 - which@5.0.0: dependencies: isexe: 3.1.1 + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + wildcard@2.0.1: {} word-wrap@1.2.5: {} @@ -18346,33 +18295,38 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 - ws@7.5.10: {} + ws@7.5.10: + optional: true - ws@8.17.1: {} + ws@8.17.1: + optional: true ws@8.18.0: {} xhr2@0.2.1: {} + xml-name-validator@4.0.0: {} + xml2js@0.4.23: dependencies: sax: 1.4.1 xmlbuilder: 11.0.1 + optional: true - xmlbuilder@11.0.1: {} + xmlbuilder@11.0.1: + optional: true - xtend@4.0.2: {} + xmlchars@2.2.0: {} xxhashjs@0.2.2: dependencies: cuint: 0.2.2 - y18n@4.0.3: {} + y18n@4.0.3: + optional: true y18n@5.0.8: {} - yallist@2.1.2: {} - yallist@3.1.1: {} yallist@4.0.0: {} @@ -18387,6 +18341,7 @@ snapshots: dependencies: camelcase: 5.3.1 decamelize: 1.2.0 + optional: true yargs-parser@20.2.9: {} @@ -18405,6 +18360,7 @@ snapshots: which-module: 2.0.1 y18n: 4.0.3 yargs-parser: 18.1.3 + optional: true yargs@16.2.0: dependencies: @@ -18415,6 +18371,7 @@ snapshots: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 20.2.9 + optional: true yargs@17.7.2: dependencies: @@ -18430,6 +18387,7 @@ snapshots: dependencies: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 + optional: true ylru@1.4.0: {} @@ -18446,7 +18404,9 @@ snapshots: archiver-utils: 3.0.4 compress-commons: 4.1.2 readable-stream: 3.6.2 + optional: true - zod@3.24.2: {} + zod@3.24.2: + optional: true zone.js@0.15.0: {} diff --git a/projects/apps/demo-app/karma.conf.js b/projects/apps/demo-app/karma.conf.js deleted file mode 100644 index 94360a41..00000000 --- a/projects/apps/demo-app/karma.conf.js +++ /dev/null @@ -1,44 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - jasmine: { - // you can add configuration options for Jasmine here - // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html - // for example, you can disable the random execution with `random: false` - // or set a specific seed with `seed: 4321` - }, - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - jasmineHtmlReporter: { - suppressAll: true // removes the duplicated traces - }, - coverageReporter: { - dir: require('path').join(__dirname, '../../../coverage/demo-app'), - subdir: '.', - reporters: [ - { type: 'html' }, - { type: 'text-summary' } - ] - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/projects/apps/demo-app/project.json b/projects/apps/demo-app/project.json index c83394b6..c42e39d8 100644 --- a/projects/apps/demo-app/project.json +++ b/projects/apps/demo-app/project.json @@ -68,21 +68,10 @@ } }, "test": { - "executor": "@angular-devkit/build-angular:karma", + "executor": "@nx/vite:test", + "outputs": ["{options.reportsDirectory}"], "options": { - "watch": false, - "main": "projects/apps/demo-app/src/test.ts", - "polyfills": ["zone.js", "zone.js/testing"], - "tsConfig": "projects/apps/demo-app/tsconfig.spec.json", - "karmaConfig": "projects/apps/demo-app/karma.conf.js", - "assets": [ - { - "glob": "**/*", - "input": "projects/apps/demo-app/public" - } - ], - "styles": ["projects/apps/demo-app/src/styles.scss"], - "scripts": [] + "reportsDirectory": "../../../coverage/projects/apps/demo-app" } } } diff --git a/projects/apps/demo-app/src/test.ts b/projects/apps/demo-app/src/test-setup.ts similarity index 79% rename from projects/apps/demo-app/src/test.ts rename to projects/apps/demo-app/src/test-setup.ts index 72bc4716..ad5acb3b 100644 --- a/projects/apps/demo-app/src/test.ts +++ b/projects/apps/demo-app/src/test-setup.ts @@ -1,3 +1,6 @@ +import '@analogjs/vitest-angular/setup-zone'; +import './styles.scss'; + import { getTestBed } from '@angular/core/testing'; import { BrowserDynamicTestingModule, diff --git a/projects/apps/demo-app/tsconfig.json b/projects/apps/demo-app/tsconfig.json new file mode 100644 index 00000000..1424f6fd --- /dev/null +++ b/projects/apps/demo-app/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "target": "es2022", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + + { + "path": "./tsconfig.spec.json" + } + ], + "extends": "../../../tsconfig.json", + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/projects/apps/demo-app/tsconfig.spec.json b/projects/apps/demo-app/tsconfig.spec.json index d283ae8e..d3f553bd 100644 --- a/projects/apps/demo-app/tsconfig.spec.json +++ b/projects/apps/demo-app/tsconfig.spec.json @@ -3,12 +3,29 @@ "compilerOptions": { "outDir": "../../../out-tsc/spec", "types": [ - "jasmine" + "@vitest/browser/matchers", + "@vitest/browser/providers/playwright", + "vitest/globals", + "vitest/importMeta", + "vite/client", + "node", + "vitest" ] }, - "files": ["src/test.ts"], + "files": ["src/test-setup.ts"], "include": [ - "src/**/*.spec.ts", - "src/**/*.d.ts" + "vite.config.ts", + "vite.config.mts", + "vitest.config.ts", + "vitest.config.mts", + "**/*.test.ts", + "**/*.spec.ts", + "**/*.test.tsx", + "**/*.spec.tsx", + "**/*.test.js", + "**/*.spec.js", + "**/*.test.jsx", + "**/*.spec.jsx", + "**/*.d.ts" ] } diff --git a/projects/apps/demo-app/vite.config.mts b/projects/apps/demo-app/vite.config.mts new file mode 100644 index 00000000..3923440c --- /dev/null +++ b/projects/apps/demo-app/vite.config.mts @@ -0,0 +1,34 @@ +/// +import { defineConfig } from 'vite'; +import angular from '@analogjs/vite-plugin-angular'; +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin'; + +const isCi = !!process.env['CI']; + +export default defineConfig({ + root: __dirname, + cacheDir: '../../../node_modules/.vite/projects/apps/demo-app'.replace('/node_modules/', isCi ? '/' : '/node_modules/'), + plugins: [angular(), nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])], + // Uncomment this if you are using workers. + // worker: { + // plugins: [ nxViteTsPaths() ], + // }, + test: { + globals: true, + include: ['**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + setupFiles: ['./src/test-setup.ts'], + reporters: ['default'], + coverage: { + reportsDirectory: '../../../coverage/projects/apps/demo-app', + provider: 'v8', + }, + browser: { + enabled: true, + provider: 'playwright', + // https://vitest.dev/guide/browser/playwright + name: 'chromium', + fileParallelism: isCi ? false : undefined, // Prevent hanging tests timing out in Firefox + }, + }, +}); diff --git a/projects/apps/universal-demo-app/karma.conf.js b/projects/apps/universal-demo-app/karma.conf.js deleted file mode 100644 index 1458e464..00000000 --- a/projects/apps/universal-demo-app/karma.conf.js +++ /dev/null @@ -1,44 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - jasmine: { - // you can add configuration options for Jasmine here - // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html - // for example, you can disable the random execution with `random: false` - // or set a specific seed with `seed: 4321` - }, - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - jasmineHtmlReporter: { - suppressAll: true // removes the duplicated traces - }, - coverageReporter: { - dir: require('path').join(__dirname, '../../../coverage/universal-demo-app'), - subdir: '.', - reporters: [ - { type: 'html' }, - { type: 'text-summary' } - ] - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/projects/apps/universal-demo-app/project.json b/projects/apps/universal-demo-app/project.json index 39a2e37b..d1b4aa95 100644 --- a/projects/apps/universal-demo-app/project.json +++ b/projects/apps/universal-demo-app/project.json @@ -73,21 +73,16 @@ } }, "test": { - "executor": "@angular-devkit/build-angular:karma", + "executor": "@nx/vite:test", + "outputs": ["{options.reportsDirectory}"], "options": { - "watch": false, - "main": "projects/apps/universal-demo-app/src/test.ts", - "polyfills": ["zone.js", "zone.js/testing"], - "tsConfig": "projects/apps/universal-demo-app/tsconfig.spec.json", - "karmaConfig": "projects/apps/universal-demo-app/karma.conf.js", - "assets": [ - { - "glob": "**/*", - "input": "projects/apps/universal-demo-app/public" - } - ], - "styles": ["projects/apps/universal-demo-app/src/styles.scss"], - "scripts": [] + "reportsDirectory": "../../../coverage/projects/apps/universal-demo-app" + }, + "configurations": { + "ssr": { + "config": "projects/apps/universal-demo-app/vite.config.ssr.mts", + "reportsDirectory": "../../../coverage/projects/apps/universal-demo-app/ssr" + } } } } diff --git a/projects/apps/universal-demo-app/src/app/app.component.spec.ts b/projects/apps/universal-demo-app/src/app/app.component.spec.ts index f2fdb494..c0cd1df5 100644 --- a/projects/apps/universal-demo-app/src/app/app.component.spec.ts +++ b/projects/apps/universal-demo-app/src/app/app.component.spec.ts @@ -1,9 +1,21 @@ import { TestBed, waitForAsync } from '@angular/core/testing'; import { AppComponent } from './app.component'; +import { importProvidersFrom } from '@angular/core'; +import { FlexLayoutModule } from '@ngbracket/ngx-layout'; + +function isServerEnvironment(): boolean { + return typeof process !== 'undefined'; +} + describe('AppComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [AppComponent], + providers: [ + importProvidersFrom( + FlexLayoutModule.withConfig({ serverLoaded: isServerEnvironment() }) + ), + ], }).compileComponents(); })); it('should create the app', waitForAsync(() => { diff --git a/projects/apps/universal-demo-app/src/karma.conf.js b/projects/apps/universal-demo-app/src/karma.conf.js deleted file mode 100644 index ee9caa15..00000000 --- a/projects/apps/universal-demo-app/src/karma.conf.js +++ /dev/null @@ -1,31 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../coverage'), - reports: ['html', 'lcovonly', 'text-summary'], - fixWebpackSourcePaths: true - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false - }); -}; \ No newline at end of file diff --git a/projects/apps/universal-demo-app/src/test-setup.ssr.ts b/projects/apps/universal-demo-app/src/test-setup.ssr.ts new file mode 100644 index 00000000..e84136e6 --- /dev/null +++ b/projects/apps/universal-demo-app/src/test-setup.ssr.ts @@ -0,0 +1,12 @@ +import '@analogjs/vitest-angular/setup-zone'; + +import { getTestBed } from '@angular/core/testing'; +import { + ServerTestingModule, + platformServerTesting, +} from '@angular/platform-server/testing'; + +getTestBed().initTestEnvironment( + ServerTestingModule, + platformServerTesting(), +); diff --git a/projects/apps/universal-demo-app/src/test.ts b/projects/apps/universal-demo-app/src/test-setup.ts similarity index 82% rename from projects/apps/universal-demo-app/src/test.ts rename to projects/apps/universal-demo-app/src/test-setup.ts index dfb090f7..bda8071e 100644 --- a/projects/apps/universal-demo-app/src/test.ts +++ b/projects/apps/universal-demo-app/src/test-setup.ts @@ -1,3 +1,6 @@ +import '@analogjs/vitest-angular/setup-zone'; +import './styles.scss'; + import { getTestBed } from '@angular/core/testing'; import { BrowserDynamicTestingModule, diff --git a/projects/apps/universal-demo-app/tsconfig.json b/projects/apps/universal-demo-app/tsconfig.json new file mode 100644 index 00000000..1424f6fd --- /dev/null +++ b/projects/apps/universal-demo-app/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "target": "es2022", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + + { + "path": "./tsconfig.spec.json" + } + ], + "extends": "../../../tsconfig.json", + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/projects/apps/universal-demo-app/tsconfig.spec.json b/projects/apps/universal-demo-app/tsconfig.spec.json index d283ae8e..acc81366 100644 --- a/projects/apps/universal-demo-app/tsconfig.spec.json +++ b/projects/apps/universal-demo-app/tsconfig.spec.json @@ -3,12 +3,32 @@ "compilerOptions": { "outDir": "../../../out-tsc/spec", "types": [ - "jasmine" + "@vitest/browser/matchers", + "@vitest/browser/providers/playwright", + "vitest/globals", + "vitest/importMeta", + "vite/client", + "node", + "vitest" ] }, - "files": ["src/test.ts"], + "files": [ + "src/test-setup.ts", + "src/test-setup.ssr.ts" + ], "include": [ - "src/**/*.spec.ts", - "src/**/*.d.ts" + "vite.config.ts", + "vite.config.mts", + "vitest.config.ts", + "vitest.config.mts", + "**/*.test.ts", + "**/*.spec.ts", + "**/*.test.tsx", + "**/*.spec.tsx", + "**/*.test.js", + "**/*.spec.js", + "**/*.test.jsx", + "**/*.spec.jsx", + "**/*.d.ts" ] } diff --git a/projects/apps/universal-demo-app/vite.config.mts b/projects/apps/universal-demo-app/vite.config.mts new file mode 100644 index 00000000..7f24f72d --- /dev/null +++ b/projects/apps/universal-demo-app/vite.config.mts @@ -0,0 +1,36 @@ +/// +import { defineConfig, UserConfig } from 'vite'; +import angular from '@analogjs/vite-plugin-angular'; +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin'; + +const isCi = !!process.env['CI']; + +export const config = { + root: __dirname, + cacheDir: '../../../node_modules/.vite/projects/apps/universal-demo-app'.replace('/node_modules/', isCi ? '/' : '/node_modules/'), + plugins: [angular(), nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])], + // Uncomment this if you are using workers. + // worker: { + // plugins: [ nxViteTsPaths() ], + // }, + test: { + globals: true, + include: ['**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + setupFiles: ['./src/test-setup.ts'], + reporters: ['default'], + coverage: { + reportsDirectory: '../../../coverage/projects/apps/universal-demo-app', + provider: 'v8', + }, + browser: { + enabled: true, + provider: 'playwright', + // https://vitest.dev/guide/browser/playwright + name: 'chromium', + fileParallelism: isCi ? false : undefined, // Prevent hanging tests timing out in Firefox + }, + }, +} as const satisfies UserConfig; + +export default defineConfig(config); diff --git a/projects/apps/universal-demo-app/vite.config.ssr.mts b/projects/apps/universal-demo-app/vite.config.ssr.mts new file mode 100644 index 00000000..6dd494ee --- /dev/null +++ b/projects/apps/universal-demo-app/vite.config.ssr.mts @@ -0,0 +1,51 @@ +/// +import { defineConfig, UserConfig } from 'vite'; +import { config as baseConfig } from './vite.config.mjs'; + +const isCi = !!process.env['CI']; + +/** + * Prevent flaky SSR tests + */ +const forksPoolTestOptions: UserConfig['test'] = { + pool: 'forks', + poolOptions: { + forks: { + /** + * @see https://v2.vitest.dev/config/#pooloptions-forks-singlefork + */ + singleFork: true, + }, + }, +}; + +/** + * The following options prevent SSR tests from failing in GitHub Actions + * runners due to limited resources and possibly memory leaks. + */ +const ciTestOptions: UserConfig['test'] = { + fileParallelism: false, + minWorkers: 1, + maxWorkers: 2, +}; + +export default defineConfig({ + ...baseConfig, + cacheDir: baseConfig.cacheDir.replace('/.vite/', '/.vite/ssr/'), + test: { + ...baseConfig.test, + name: 'universal-demo:ssr', + browser: undefined, + environment: 'jsdom', + setupFiles: ['./src/test-setup.ssr.ts'], + coverage: { + ...baseConfig.test.coverage, + reportsDirectory: baseConfig.test.coverage.reportsDirectory.replace( + '/coverage/', + '/coverage/ssr/' + ), + }, + ...forksPoolTestOptions, + ...(isCi ? ciTestOptions : {}), + }, +}); diff --git a/projects/apps/updated-demo/project.json b/projects/apps/updated-demo/project.json index 88e83607..49c21c92 100644 --- a/projects/apps/updated-demo/project.json +++ b/projects/apps/updated-demo/project.json @@ -80,6 +80,13 @@ "staticFilePath": "dist/projects/apps/updated-demo/browser", "spa": true } + }, + "test": { + "executor": "@nx/vite:test", + "outputs": ["{options.reportsDirectory}"], + "options": { + "reportsDirectory": "../../../coverage/projects/apps/updated-demo" + } } } } diff --git a/projects/apps/updated-demo/src/app/pages/grid/layout/layout.component.spec.ts b/projects/apps/updated-demo/src/app/pages/grid/layout/layout.component.spec.ts index 8ebce500..3286be2a 100644 --- a/projects/apps/updated-demo/src/app/pages/grid/layout/layout.component.spec.ts +++ b/projects/apps/updated-demo/src/app/pages/grid/layout/layout.component.spec.ts @@ -1,5 +1,7 @@ +import { provideLocationMocks } from '@angular/common/testing'; import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { LayoutComponent } from '../../layout/layout.component'; +import { provideRouter } from '@angular/router'; describe('LayoutComponent', () => { let component: LayoutComponent; @@ -8,6 +10,10 @@ describe('LayoutComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [], + providers: [ + provideRouter([]), + provideLocationMocks(), + ], }).compileComponents(); })); diff --git a/projects/apps/updated-demo/src/app/pages/grid/layout/layout.component.ts b/projects/apps/updated-demo/src/app/pages/grid/layout/layout.component.ts index 7d9c6166..df9ff3ce 100644 --- a/projects/apps/updated-demo/src/app/pages/grid/layout/layout.component.ts +++ b/projects/apps/updated-demo/src/app/pages/grid/layout/layout.component.ts @@ -6,8 +6,8 @@ import { GridAreasDirective, GridColumnsDirective, GridGapDirective, + StyleDirective, } from '@ngbracket/ngx-layout'; -import { StyleDirective } from 'projects/libs/flex-layout/extended/style/style'; @Component({ selector: 'app-grid-layout', diff --git a/projects/apps/updated-demo/src/app/pages/layout/alignment/alignment.component.ts b/projects/apps/updated-demo/src/app/pages/layout/alignment/alignment.component.ts index 1ba11b55..0e2d0545 100644 --- a/projects/apps/updated-demo/src/app/pages/layout/alignment/alignment.component.ts +++ b/projects/apps/updated-demo/src/app/pages/layout/alignment/alignment.component.ts @@ -3,9 +3,11 @@ import { FormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; import { MatRadioModule } from '@angular/material/radio'; -import { FlexDirective } from '@ngbracket/ngx-layout'; -import { LayoutAlignDirective } from 'projects/libs/flex-layout/flex/layout-align/layout-align'; -import { LayoutDirective } from 'projects/libs/flex-layout/flex/layout/layout'; +import { + FlexDirective, + LayoutAlignDirective, + LayoutDirective, +} from '@ngbracket/ngx-layout'; @Component({ selector: 'app-alignment', diff --git a/projects/apps/updated-demo/src/app/pages/layout/direction/direction.component.spec.ts b/projects/apps/updated-demo/src/app/pages/layout/direction/direction.component.spec.ts index e69de29b..62b9a854 100644 --- a/projects/apps/updated-demo/src/app/pages/layout/direction/direction.component.spec.ts +++ b/projects/apps/updated-demo/src/app/pages/layout/direction/direction.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { DirectionComponent } from './direction.component'; + +describe('DirectionComponent', () => { + let component: DirectionComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [], + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DirectionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/apps/updated-demo/src/app/pages/layout/row-fill-wrap/row-fill-wrap.component.spec.ts b/projects/apps/updated-demo/src/app/pages/layout/row-fill-wrap/row-fill-wrap.component.spec.ts index e69de29b..2f1e3213 100644 --- a/projects/apps/updated-demo/src/app/pages/layout/row-fill-wrap/row-fill-wrap.component.spec.ts +++ b/projects/apps/updated-demo/src/app/pages/layout/row-fill-wrap/row-fill-wrap.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { RowFillWrapComponent } from './row-fill-wrap.component'; + +describe('RowFillWrapComponent', () => { + let component: RowFillWrapComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [], + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(RowFillWrapComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/libs/flex-layout/test.ts b/projects/apps/updated-demo/src/test-setup.ts similarity index 79% rename from projects/libs/flex-layout/test.ts rename to projects/apps/updated-demo/src/test-setup.ts index 72bc4716..ad5acb3b 100644 --- a/projects/libs/flex-layout/test.ts +++ b/projects/apps/updated-demo/src/test-setup.ts @@ -1,3 +1,6 @@ +import '@analogjs/vitest-angular/setup-zone'; +import './styles.scss'; + import { getTestBed } from '@angular/core/testing'; import { BrowserDynamicTestingModule, diff --git a/projects/apps/updated-demo/tsconfig.spec.json b/projects/apps/updated-demo/tsconfig.spec.json new file mode 100644 index 00000000..d3f553bd --- /dev/null +++ b/projects/apps/updated-demo/tsconfig.spec.json @@ -0,0 +1,31 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "outDir": "../../../out-tsc/spec", + "types": [ + "@vitest/browser/matchers", + "@vitest/browser/providers/playwright", + "vitest/globals", + "vitest/importMeta", + "vite/client", + "node", + "vitest" + ] + }, + "files": ["src/test-setup.ts"], + "include": [ + "vite.config.ts", + "vite.config.mts", + "vitest.config.ts", + "vitest.config.mts", + "**/*.test.ts", + "**/*.spec.ts", + "**/*.test.tsx", + "**/*.spec.tsx", + "**/*.test.js", + "**/*.spec.js", + "**/*.test.jsx", + "**/*.spec.jsx", + "**/*.d.ts" + ] +} diff --git a/projects/apps/updated-demo/vite.config.mts b/projects/apps/updated-demo/vite.config.mts new file mode 100644 index 00000000..2e3e900c --- /dev/null +++ b/projects/apps/updated-demo/vite.config.mts @@ -0,0 +1,34 @@ +/// +import { defineConfig } from 'vite'; +import angular from '@analogjs/vite-plugin-angular'; +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin'; + +const isCi = !!process.env['CI']; + +export default defineConfig({ + root: __dirname, + cacheDir: '../../../node_modules/.vite/projects/apps/updated-demo'.replace('/node_modules/', isCi ? '/' : '/node_modules/'), + plugins: [angular(), nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])], + // Uncomment this if you are using workers. + // worker: { + // plugins: [ nxViteTsPaths() ], + // }, + test: { + globals: true, + include: ['**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + setupFiles: ['./src/test-setup.ts'], + reporters: ['default'], + coverage: { + reportsDirectory: '../../../coverage/projects/apps/updated-demo', + provider: 'v8', + }, + browser: { + enabled: true, + provider: 'playwright', + // https://vitest.dev/guide/browser/playwright + name: 'chromium', + fileParallelism: isCi ? false : undefined, // Prevent hanging tests timing out in Firefox + }, + }, +}); diff --git a/projects/libs/flex-layout/_private-utils/testing/custom-matchers.ts b/projects/libs/flex-layout/_private-utils/testing/custom-matchers.ts index c92fadb7..d02a56dc 100644 --- a/projects/libs/flex-layout/_private-utils/testing/custom-matchers.ts +++ b/projects/libs/flex-layout/_private-utils/testing/custom-matchers.ts @@ -1,48 +1,31 @@ -declare var global: any; -const _global = (typeof window === 'undefined' ? global : window); - -import { _dom as _ } from './dom-tools'; - import { applyCssPrefixes, extendObject, } from '@ngbracket/ngx-layout/_private-utils'; import { StyleUtils } from '@ngbracket/ngx-layout/core'; + // This line is important even if imported values are not used! See https://stackoverflow.com/a/78524129/1071200 +import type { Assertion, AsymmetricMatchersContaining, ExpectStatic } from 'vitest'; +// import { expect } from 'vitest'; + +declare module 'vitest' { + interface Assertion extends NgMatchers {} + interface AsymmetricMatchersContaining extends NgMatchers {} +} -export const expect: (actual: any) => NgMatchers = _global.expect; +interface ExpectationResult { + pass: boolean; + message: () => string; + // If you pass these, they will automatically appear inside a diff when + // the matcher does not pass, so you don't need to print the diff yourself + actual?: unknown; + expected?: unknown; +} /** * Jasmine matchers that check Angular specific conditions. */ -export interface NgMatchers extends jasmine.Matchers { - /** - * Expect the element to have exactly the given text. - * - * ## Example - * - * {@example testing/ts/matchers.ts region='toHaveText'} - */ - toHaveText(expected: string): boolean; - - /** - * Compare key:value pairs as matching EXACTLY - */ - toHaveMap(expected: { [k: string]: string }): boolean; - - /** - * Expect the element to have the given CSS class. - * - * ## Example - * - * {@example testing/ts/matchers.ts region='toHaveCssClass'} - */ - toHaveCssClass(expected: string): boolean; - - /** - * Expect the element to have the given pairs of attribute name and attribute value - */ - toHaveAttributes(expected: { [k: string]: string }): boolean; - +// export interface NgMatchers extends jasmine.Matchers { +export interface NgMatchers { /** * Expect the element to have the given CSS styles injected INLINE * @@ -50,7 +33,10 @@ export interface NgMatchers extends jasmine.Matchers { * * {@example testing/ts/matchers.ts region='toHaveStyle'} */ - toHaveStyle(expected: { [k: string]: string } | string): boolean; + toHaveInlineStyle( + expected: { [k: string]: string } | string, + styler: StyleUtils + ): R; /** * Expect the element to have the given CSS inline OR computed styles. @@ -59,12 +45,12 @@ export interface NgMatchers extends jasmine.Matchers { * * {@example testing/ts/matchers.ts region='toHaveStyle'} */ - toHaveStyle(expected: { [k: string]: string } | string): boolean; + toHaveCSS(expected: { [k: string]: string } | string, styler: StyleUtils): R; - /** - * Invert the matchers. - */ - not: NgMatchers; + // /** + // * Invert the matchers. + // */ + // not: NgMatchers; } /** @@ -72,120 +58,23 @@ export interface NgMatchers extends jasmine.Matchers { * in the Karma/Jasmine testing for the Layout Directives * in `src/lib/flex/api` */ -export const customMatchers: jasmine.CustomMatcherFactories = { - toEqual: function (util) { - return { - compare: function (actual: any, expected: any) { - return { pass: util.equals(actual, expected) }; - }, - }; - }, - - toHaveText: function () { - return { - compare: function (actual: any, expectedText: string) { - const actualText = elementText(actual); - return { - pass: actualText == expectedText, - get message() { - return 'Expected ' + actualText + ' to be equal to ' + expectedText; - }, - }; - }, - }; - }, - - toHaveCssClass: function () { - return { compare: buildError(false), negativeCompare: buildError(true) }; - - function buildError(isNot: boolean) { - return function (actual: any, className: string) { - return { - pass: _.hasClass(actual, className) == !isNot, - get message() { - return ` - Expected ${actual.outerHTML} ${isNot ? 'not ' : ''} - to contain the CSS class '${className}' - `; - }, - }; - }; - } - }, - - toHaveMap: function () { - return { - compare: function ( - actual: { [k: string]: string }, - map: { [k: string]: string }, - ) { - let allPassed: boolean; - allPassed = Object.keys(map).length !== 0; - Object.keys(map).forEach((key) => { - allPassed = allPassed && actual[key] === map[key]; - }); - - return { - pass: allPassed, - get message() { - return ` - Expected ${JSON.stringify(actual)} ${ - !allPassed ? ' ' : 'not ' - } to contain the - '${JSON.stringify(map)}' - `; - }, - }; - }, - }; - }, - - toHaveAttributes: function () { - return { - compare: function (actual: any, map: { [k: string]: string }) { - let allPassed: boolean; - let attributeNames = Object.keys(map); - allPassed = attributeNames.length !== 0; - attributeNames.forEach((name) => { - allPassed = - allPassed && - _.hasAttribute(actual, name) && - _.getAttribute(actual, name) === map[name]; - }); - return { - pass: allPassed, - get message() { - return ` - Expected ${actual.outerHTML} ${ - allPassed ? 'not ' : '' - } attributes to contain - '${JSON.stringify(map)}' - `; - }, - }; - }, - }; - }, - +export const customMatchers: Record< + string, + (received: any, ...expected: any[]) => ExpectationResult +> = { /** * Check element's inline styles only */ - toHaveStyle: function () { - return { - compare: buildCompareStyleFunction(true), - }; - }, + toHaveInlineStyle: buildCompareStyleFunction(true), /** * Check element's css stylesheet only (if not present inline) */ - toHaveCSS: function () { - return { - compare: buildCompareStyleFunction(false), - }; - }, + toHaveCSS: buildCompareStyleFunction(false), }; +((globalThis as any).expect as ExpectStatic).extend(customMatchers); + /** * Curried value to function to check styles that are inline or in a stylesheet for the * specified DOM element. @@ -195,7 +84,7 @@ function buildCompareStyleFunction(inlineOnly = true) { actual: any, styles: { [k: string]: string } | string, styler: StyleUtils, - ) { + ): ExpectationResult { const found = {}; const styleMap: { [k: string]: string } = {}; @@ -222,7 +111,7 @@ function buildCompareStyleFunction(inlineOnly = true) { return { pass: allPassed, - get message() { + message() { const expectedValueStr = typeof styles === 'string' ? styleMap @@ -276,32 +165,3 @@ function hasPrefixedStyles( // Return BOTH confirmation and current computed key values (if confirmation == false) return { elHasStyle, current }; } - -function elementText(n: any): string { - const hasNodes = (m: any) => { - const children = _.childNodes(m); - return children && children['length']; - }; - - if (n instanceof Array) { - return n.map(elementText).join(''); - } - - if (_.isCommentNode(n)) { - return ''; - } - - if (_.isElementNode(n) && _.tagName(n) == 'CONTENT') { - return elementText(Array.prototype.slice.apply(_.getDistributedNodes(n))); - } - - if (_.hasShadowRoot(n)) { - return elementText(_.childNodesAsList(_.getShadowRoot(n))); - } - - if (hasNodes(n)) { - return elementText(_.childNodesAsList(n)); - } - - return _.getText(n); -} diff --git a/projects/libs/flex-layout/_private-utils/testing/helpers.ts b/projects/libs/flex-layout/_private-utils/testing/helpers.ts index 7243c4ce..db1d14e0 100644 --- a/projects/libs/flex-layout/_private-utils/testing/helpers.ts +++ b/projects/libs/flex-layout/_private-utils/testing/helpers.ts @@ -2,6 +2,10 @@ import { DebugElement, Type } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { extendObject } from '@ngbracket/ngx-layout/_private-utils'; +import type { Assertion, ExpectStatic } from 'vitest'; +// import { expect } from 'vitest'; + +const expect = ((globalThis as any).expect as ExpectStatic); export type ComponentClazzFn = () => Type; @@ -36,17 +40,17 @@ export function makeCreateTestComponent(getClass: ComponentClazzFn) { export function expectNativeEl( fixture: ComponentFixture, instanceOptions?: any, -): any { +): Assertion { extendObject(fixture.componentInstance, instanceOptions || {}); fixture.detectChanges(); - return expect(fixture.debugElement.children[0].nativeElement); + return expect(fixture.debugElement.children[0].nativeElement as HTMLElement); } /** * */ -export function expectEl(debugEl: DebugElement): any { - return expect(debugEl.nativeElement); +export function expectEl(debugEl: DebugElement): Assertion { + return expect(debugEl.nativeElement as HTMLElement); } export function queryFor( diff --git a/projects/libs/flex-layout/core/add-alias.ts b/projects/libs/flex-layout/core/add-alias.ts index 0ec6e7cf..c2a33042 100644 --- a/projects/libs/flex-layout/core/add-alias.ts +++ b/projects/libs/flex-layout/core/add-alias.ts @@ -1,4 +1,4 @@ -import { OptionalBreakPoint } from './breakpoints'; +import { OptionalBreakPoint } from './breakpoints/break-point-registry'; import { MediaChange } from './media-change'; /** diff --git a/projects/libs/flex-layout/core/base/index.ts b/projects/libs/flex-layout/core/base/index.ts deleted file mode 100644 index a536933e..00000000 --- a/projects/libs/flex-layout/core/base/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './base2'; diff --git a/projects/libs/flex-layout/core/breakpoints/data/orientation-break-points.spec.ts b/projects/libs/flex-layout/core/breakpoints/data/orientation-break-points.spec.ts index 70f1fc13..19850304 100644 --- a/projects/libs/flex-layout/core/breakpoints/data/orientation-break-points.spec.ts +++ b/projects/libs/flex-layout/core/breakpoints/data/orientation-break-points.spec.ts @@ -8,12 +8,10 @@ import { inject, TestBed, waitForAsync } from '@angular/core/testing'; import { FlexLayoutModule } from '@ngbracket/ngx-layout'; -import { - BreakPoint, - BREAKPOINTS, - DEFAULT_BREAKPOINTS, - ORIENTATION_BREAKPOINTS, -} from '../../public-api'; +import { BreakPoint } from '../break-point'; +import { BREAKPOINTS } from '../break-points-token'; +import { DEFAULT_BREAKPOINTS } from './break-points'; +import { ORIENTATION_BREAKPOINTS } from './orientation-break-points'; describe('break-point-provider', () => { let breakPoints: BreakPoint[]; diff --git a/projects/libs/flex-layout/core/breakpoints/index.ts b/projects/libs/flex-layout/core/breakpoints/index.ts deleted file mode 100644 index ca771995..00000000 --- a/projects/libs/flex-layout/core/breakpoints/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from './data/break-points'; -export * from './data/orientation-break-points'; - -export * from './break-point'; -export * from './break-point-registry'; -export * from './break-points-token'; diff --git a/projects/libs/flex-layout/core/match-media/index.ts b/projects/libs/flex-layout/core/match-media/index.ts deleted file mode 100644 index 6ff24e00..00000000 --- a/projects/libs/flex-layout/core/match-media/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './match-media'; -export * from './mock/mock-match-media'; diff --git a/projects/libs/flex-layout/core/match-media/match-media.spec.ts b/projects/libs/flex-layout/core/match-media/match-media.spec.ts index bf3b15b7..f57b52c0 100644 --- a/projects/libs/flex-layout/core/match-media/match-media.spec.ts +++ b/projects/libs/flex-layout/core/match-media/match-media.spec.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ import { inject, TestBed } from '@angular/core/testing'; -import { BreakPoint } from '@ngbracket/ngx-layout/core'; +import { BreakPoint } from '../breakpoints/break-point'; import { Subscription } from 'rxjs'; import { BreakPointRegistry } from '../breakpoints/break-point-registry'; diff --git a/projects/libs/flex-layout/core/match-media/mock/mock-match-media.spec.ts b/projects/libs/flex-layout/core/match-media/mock/mock-match-media.spec.ts index dce313c4..06ad1fa6 100644 --- a/projects/libs/flex-layout/core/match-media/mock/mock-match-media.spec.ts +++ b/projects/libs/flex-layout/core/match-media/mock/mock-match-media.spec.ts @@ -8,7 +8,7 @@ import { TestBed, inject } from '@angular/core/testing'; -import { MatchMedia } from '../../match-media/match-media'; +import { MatchMedia } from '../match-media'; import { MediaChange } from '../../media-change'; import { BreakPoint } from '../../breakpoints/break-point'; import { MockMatchMedia, MockMatchMediaProvider } from './mock-match-media'; @@ -229,7 +229,7 @@ describe('mock-match-media', () => { bpMd = breakPoints.findByAlias('md'), bpGtMd = breakPoints.findByAlias('gt-md'), bpLg = breakPoints.findByAlias('lg'); - let subscription = mediaController.observe().subscribe(() => {}); + let subscription = mediaController.observe().subscribe(() => { }); mediaController.activate(bpGtSm!.mediaQuery); expect(mediaController.isActive(bpGtSm!.mediaQuery)).toBeTruthy(); diff --git a/projects/libs/flex-layout/core/media-marshaller/media-marshaller.spec.ts b/projects/libs/flex-layout/core/media-marshaller/media-marshaller.spec.ts index 94d15613..252f4b0e 100644 --- a/projects/libs/flex-layout/core/media-marshaller/media-marshaller.spec.ts +++ b/projects/libs/flex-layout/core/media-marshaller/media-marshaller.spec.ts @@ -26,8 +26,8 @@ describe('media-marshaller', () => { TestBed.configureTestingModule({ providers: [MockMatchMediaProvider], }); - spyOn(MediaMarshaller.prototype, 'onMediaChange').and.callThrough(); - spyOn(MediaMarshaller.prototype, 'updateStyles').and.callThrough(); + vi.spyOn(MediaMarshaller.prototype, 'onMediaChange'); + vi.spyOn(MediaMarshaller.prototype, 'updateStyles'); }); beforeEach(inject( @@ -169,8 +169,8 @@ describe('media-marshaller', () => { }, ], }); - spyOn(MediaMarshaller.prototype, 'onMediaChange').and.callThrough(); - spyOn(MediaMarshaller.prototype, 'updateStyles').and.callThrough(); + vi.spyOn(MediaMarshaller.prototype, 'onMediaChange'); + vi.spyOn(MediaMarshaller.prototype, 'updateStyles'); }); beforeEach(inject( diff --git a/projects/libs/flex-layout/core/media-observer/index.ts b/projects/libs/flex-layout/core/media-observer/index.ts deleted file mode 100644 index bc239f70..00000000 --- a/projects/libs/flex-layout/core/media-observer/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './media-observer'; diff --git a/projects/libs/flex-layout/core/media-trigger/index.ts b/projects/libs/flex-layout/core/media-trigger/index.ts deleted file mode 100644 index 2a1698a8..00000000 --- a/projects/libs/flex-layout/core/media-trigger/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './media-trigger'; diff --git a/projects/libs/flex-layout/core/public-api.ts b/projects/libs/flex-layout/core/public-api.ts index 6c3cc93a..0bab6be6 100644 --- a/projects/libs/flex-layout/core/public-api.ts +++ b/projects/libs/flex-layout/core/public-api.ts @@ -2,19 +2,28 @@ export * from './add-alias'; export * from './browser-provider'; export * from './media-change'; export * from './module'; -export * from './stylesheet-map/index'; -export * from './tokens/index'; +export * from './stylesheet-map/stylesheet-map'; +export * from './tokens/breakpoint-token'; +export * from './tokens/library-config'; +export * from './tokens/server-token'; -export * from './base/index'; -export * from './breakpoints/index'; +export * from './base/base2'; +export * from './breakpoints/data/break-points'; +export * from './breakpoints/data/orientation-break-points'; +export * from './breakpoints/break-point'; +export * from './breakpoints/break-point-registry'; +export * from './breakpoints/break-points-token'; export { MatchMedia as ɵMatchMedia, +} from './match-media/match-media'; +export { MockMatchMedia as ɵMockMatchMedia, MockMatchMediaProvider as ɵMockMatchMediaProvider, -} from './match-media/index'; -export * from './media-observer/index'; -export * from './media-trigger/index'; -export * from './utils/index'; +} from './match-media/mock/mock-match-media'; +export * from './media-observer/media-observer'; +export * from './media-trigger/media-trigger'; +export * from './utils/array'; +export * from './utils/sort'; export * from './basis-validator/basis-validator'; export * from './media-marshaller/media-marshaller'; diff --git a/projects/libs/flex-layout/core/style-utils/style-utils.spec.ts b/projects/libs/flex-layout/core/style-utils/style-utils.spec.ts index 00124aa7..2f62ee55 100644 --- a/projects/libs/flex-layout/core/style-utils/style-utils.spec.ts +++ b/projects/libs/flex-layout/core/style-utils/style-utils.spec.ts @@ -10,7 +10,6 @@ import { Component, PLATFORM_ID } from '@angular/core'; import { ComponentFixture, inject, TestBed } from '@angular/core/testing'; import { - customMatchers, expectNativeEl, makeCreateTestComponent, } from '@ngbracket/ngx-layout/_private-utils/testing'; @@ -37,7 +36,7 @@ describe('styler', () => { }; beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -51,7 +50,7 @@ describe('styler', () => { componentWithTemplate(`
`); - expectNativeEl(fixture).not.toHaveStyle({ display: 'block' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'block' }, styler); }); it('should find to "display" for inline style
', () => { diff --git a/projects/libs/flex-layout/core/stylesheet-map/index.ts b/projects/libs/flex-layout/core/stylesheet-map/index.ts deleted file mode 100644 index 9681e9c8..00000000 --- a/projects/libs/flex-layout/core/stylesheet-map/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './stylesheet-map'; diff --git a/projects/libs/flex-layout/core/tokens/index.ts b/projects/libs/flex-layout/core/tokens/index.ts deleted file mode 100644 index fe1b3998..00000000 --- a/projects/libs/flex-layout/core/tokens/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './breakpoint-token'; -export * from './library-config'; -export * from './server-token'; diff --git a/projects/libs/flex-layout/core/utils/index.ts b/projects/libs/flex-layout/core/utils/index.ts deleted file mode 100644 index 6c49d114..00000000 --- a/projects/libs/flex-layout/core/utils/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './array'; -export * from './sort'; diff --git a/projects/libs/flex-layout/extended/class/class.spec.ts b/projects/libs/flex-layout/extended/class/class.spec.ts index 391e50b3..4f0a3229 100644 --- a/projects/libs/flex-layout/extended/class/class.spec.ts +++ b/projects/libs/flex-layout/extended/class/class.spec.ts @@ -21,11 +21,9 @@ import { ɵMockMatchMedia as MockMatchMedia, ɵMockMatchMediaProvider as MockMatchMediaProvider, } from '@ngbracket/ngx-layout/core'; -import { DefaultClassDirective } from '@ngbracket/ngx-layout/extended'; +import { DefaultClassDirective } from './class'; import { - customMatchers, - expect, expectNativeEl, makeCreateTestComponent, queryFor, @@ -48,7 +46,7 @@ describe('class directive', () => { }; beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -69,53 +67,53 @@ describe('class directive', () => { it(`should apply '${selector}' with '${mq}' media query`, () => { createTestComponent(`
`); mediaController.activate(mq); - expectNativeEl(fixture).toHaveCssClass(selector); + expectNativeEl(fixture).toHaveClass(selector); }); }); it('should merge `ngClass` values with any `class` values', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveCssClass('class0'); - expectNativeEl(fixture).toHaveCssClass('class1'); - expectNativeEl(fixture).toHaveCssClass('class2'); + expectNativeEl(fixture).toHaveClass('class0'); + expectNativeEl(fixture).toHaveClass('class1'); + expectNativeEl(fixture).toHaveClass('class2'); }); it('should override base `class` values with responsive ngClass string', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveCssClass('class0'); - expectNativeEl(fixture).not.toHaveCssClass('what'); - expectNativeEl(fixture).not.toHaveCssClass('class2'); + expectNativeEl(fixture).toHaveClass('class0'); + expectNativeEl(fixture).not.toHaveClass('what'); + expectNativeEl(fixture).not.toHaveClass('class2'); // the CSS classes listed in the string (space delimited) are added, // See https://angular.io/api/common/NgClass mediaController.activate('xs'); - expectNativeEl(fixture).toHaveCssClass('class0'); - expectNativeEl(fixture).toHaveCssClass('what'); - expectNativeEl(fixture).toHaveCssClass('class2'); + expectNativeEl(fixture).toHaveClass('class0'); + expectNativeEl(fixture).toHaveClass('what'); + expectNativeEl(fixture).toHaveClass('class2'); mediaController.activate('lg'); - expectNativeEl(fixture).toHaveCssClass('class0'); - expectNativeEl(fixture).not.toHaveCssClass('what'); - expectNativeEl(fixture).not.toHaveCssClass('class2'); + expectNativeEl(fixture).toHaveClass('class0'); + expectNativeEl(fixture).not.toHaveClass('what'); + expectNativeEl(fixture).not.toHaveClass('class2'); }); it('should use responsive ngClass string and remove without fallback', () => { createTestComponent(`
`); - expectNativeEl(fixture).not.toHaveCssClass('what'); - expectNativeEl(fixture).not.toHaveCssClass('class2'); + expectNativeEl(fixture).not.toHaveClass('what'); + expectNativeEl(fixture).not.toHaveClass('class2'); // the CSS classes listed in the string (space delimited) are added, // See https://angular.io/api/common/NgClass mediaController.activate('xs'); - expectNativeEl(fixture).toHaveCssClass('what'); - expectNativeEl(fixture).toHaveCssClass('class2'); + expectNativeEl(fixture).toHaveClass('what'); + expectNativeEl(fixture).toHaveClass('class2'); mediaController.activate('lg'); - expectNativeEl(fixture).not.toHaveCssClass('what'); - expectNativeEl(fixture).not.toHaveCssClass('class2'); + expectNativeEl(fixture).not.toHaveClass('what'); + expectNativeEl(fixture).not.toHaveClass('class2'); }); it('should override base `class` values with responsive ngClass map', () => { @@ -123,21 +121,21 @@ describe('class directive', () => {
`); - expectNativeEl(fixture).toHaveCssClass('class0'); - expectNativeEl(fixture).not.toHaveCssClass('what'); - expectNativeEl(fixture).not.toHaveCssClass('class2'); + expectNativeEl(fixture).toHaveClass('class0'); + expectNativeEl(fixture).not.toHaveClass('what'); + expectNativeEl(fixture).not.toHaveClass('class2'); // Object keys are CSS classes that get added when the expression given in // the value evaluates to a truthy value, otherwise they are removed. mediaController.activate('xs'); - expectNativeEl(fixture).not.toHaveCssClass('class0'); - expectNativeEl(fixture).toHaveCssClass('what'); - expectNativeEl(fixture).toHaveCssClass('class2'); + expectNativeEl(fixture).not.toHaveClass('class0'); + expectNativeEl(fixture).toHaveClass('what'); + expectNativeEl(fixture).toHaveClass('class2'); mediaController.activate('lg'); - expectNativeEl(fixture).toHaveCssClass('class0'); - expectNativeEl(fixture).not.toHaveCssClass('what'); - expectNativeEl(fixture).not.toHaveCssClass('class2'); + expectNativeEl(fixture).toHaveClass('class0'); + expectNativeEl(fixture).not.toHaveClass('what'); + expectNativeEl(fixture).not.toHaveClass('class2'); }); it('should keep the raw existing `class` with responsive updates', () => { @@ -146,18 +144,18 @@ describe('class directive', () => { `); - expectNativeEl(fixture).toHaveCssClass('existing-class'); - expectNativeEl(fixture).toHaveCssClass('class1'); + expectNativeEl(fixture).toHaveClass('existing-class'); + expectNativeEl(fixture).toHaveClass('class1'); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveCssClass('xs-class'); - expectNativeEl(fixture).toHaveCssClass('existing-class'); - expectNativeEl(fixture).not.toHaveCssClass('class1'); + expectNativeEl(fixture).toHaveClass('xs-class'); + expectNativeEl(fixture).toHaveClass('existing-class'); + expectNativeEl(fixture).not.toHaveClass('class1'); mediaController.activate('lg'); - expectNativeEl(fixture).not.toHaveCssClass('xs-class'); - expectNativeEl(fixture).toHaveCssClass('existing-class'); - expectNativeEl(fixture).toHaveCssClass('class1'); + expectNativeEl(fixture).not.toHaveClass('xs-class'); + expectNativeEl(fixture).toHaveClass('existing-class'); + expectNativeEl(fixture).toHaveClass('class1'); }); it('should keep allow removal of class selector', () => { @@ -168,14 +166,14 @@ describe('class directive', () => { `); - expectNativeEl(fixture).toHaveCssClass('existing-class'); + expectNativeEl(fixture).toHaveClass('existing-class'); mediaController.activate('xs'); - expectNativeEl(fixture).not.toHaveCssClass('existing-class'); - expectNativeEl(fixture).toHaveCssClass('xs-class'); + expectNativeEl(fixture).not.toHaveClass('existing-class'); + expectNativeEl(fixture).toHaveClass('xs-class'); mediaController.activate('lg'); - expectNativeEl(fixture).not.toHaveCssClass('xs-class'); - expectNativeEl(fixture).toHaveCssClass('existing-class'); + expectNativeEl(fixture).not.toHaveClass('xs-class'); + expectNativeEl(fixture).toHaveClass('existing-class'); }); it('should keep existing ngClass selector', () => { @@ -187,18 +185,18 @@ describe('class directive', () => { `); - expectNativeEl(fixture).toHaveCssClass('always'); - expectNativeEl(fixture).toHaveCssClass('existing-class'); + expectNativeEl(fixture).toHaveClass('always'); + expectNativeEl(fixture).toHaveClass('existing-class'); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveCssClass('always'); - expectNativeEl(fixture).toHaveCssClass('existing-class'); - expectNativeEl(fixture).toHaveCssClass('xs-class'); + expectNativeEl(fixture).toHaveClass('always'); + expectNativeEl(fixture).toHaveClass('existing-class'); + expectNativeEl(fixture).toHaveClass('xs-class'); mediaController.activate('lg'); - expectNativeEl(fixture).toHaveCssClass('always'); - expectNativeEl(fixture).toHaveCssClass('existing-class'); - expectNativeEl(fixture).not.toHaveCssClass('xs-class'); + expectNativeEl(fixture).toHaveClass('always'); + expectNativeEl(fixture).toHaveClass('existing-class'); + expectNativeEl(fixture).not.toHaveClass('xs-class'); }); it('should support more than one responsive breakpoint on one element', () => { @@ -206,11 +204,11 @@ describe('class directive', () => { `
`, ); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveCssClass('xs-class'); - expectNativeEl(fixture).not.toHaveCssClass('mat-class'); + expectNativeEl(fixture).toHaveClass('xs-class'); + expectNativeEl(fixture).not.toHaveClass('mat-class'); mediaController.activate('md'); - expectNativeEl(fixture).not.toHaveCssClass('xs-class'); - expectNativeEl(fixture).toHaveCssClass('mat-class'); + expectNativeEl(fixture).not.toHaveClass('xs-class'); + expectNativeEl(fixture).toHaveClass('mat-class'); }); it('should support more than one responsive breakpoint on one element with undefined', () => { @@ -218,7 +216,7 @@ describe('class directive', () => { `
`, ); mediaController.activate('md', true); - expectNativeEl(fixture).toHaveCssClass('mat-class'); + expectNativeEl(fixture).toHaveClass('mat-class'); }); it('should work with ngClass object notation', () => { @@ -231,58 +229,58 @@ describe('class directive', () => { hasX1: true, hasX2: true, hasX3: true, - }).toHaveCssClass('x1'); + }).toHaveClass('x1'); expectNativeEl(fixture, { hasX1: true, hasX2: true, hasX3: true, - }).not.toHaveCssClass('x2'); + }).not.toHaveClass('x2'); expectNativeEl(fixture, { hasX1: true, hasX2: true, hasX3: true, - }).toHaveCssClass('x3'); + }).toHaveClass('x3'); mediaController.activate('X'); expectNativeEl(fixture, { hasX1: true, hasX2: false, hasX3: false, - }).toHaveCssClass('x1'); + }).toHaveClass('x1'); expectNativeEl(fixture, { hasX1: true, hasX2: false, hasX3: false, - }).not.toHaveCssClass('x2'); + }).not.toHaveClass('x2'); expectNativeEl(fixture, { hasX1: true, hasX2: false, hasX3: false, - }).not.toHaveCssClass('x3'); + }).not.toHaveClass('x3'); mediaController.activate('md'); expectNativeEl(fixture, { hasX1: true, hasX2: false, hasX3: true, - }).toHaveCssClass('x1'); + }).toHaveClass('x1'); expectNativeEl(fixture, { hasX1: true, hasX2: false, hasX3: true, - }).not.toHaveCssClass('x2'); + }).not.toHaveClass('x2'); expectNativeEl(fixture, { hasX1: true, hasX2: false, hasX3: true, - }).toHaveCssClass('x3'); + }).toHaveClass('x3'); }); it('should work with ngClass array notation', () => { createTestComponent(`
`); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveCssClass('xs-1'); - expectNativeEl(fixture).toHaveCssClass('xs-2'); + expectNativeEl(fixture).toHaveClass('xs-1'); + expectNativeEl(fixture).toHaveClass('xs-2'); }); it('should work with changing overlapping breakpoint activations', () => { @@ -290,16 +288,16 @@ describe('class directive', () => { '
', ); - expectNativeEl(fixture).toHaveCssClass('white'); + expectNativeEl(fixture).toHaveClass('white'); mediaController.activate('xs', true); - expectNativeEl(fixture).toHaveCssClass('green'); + expectNativeEl(fixture).toHaveClass('green'); mediaController.activate('sm', true); - expectNativeEl(fixture).toHaveCssClass('blue'); + expectNativeEl(fixture).toHaveClass('blue'); mediaController.activate('xs', true); - expectNativeEl(fixture).toHaveCssClass('green'); + expectNativeEl(fixture).toHaveClass('green'); }); it('should work with material buttons', () => { @@ -316,24 +314,20 @@ describe('class directive', () => { let button = queryFor(fixture, '[mat-raised-button]')[0].nativeElement; if (!isPlatformServer(platformId)) { - expect(button).toHaveAttributes({ - 'mat-raised-button': '', - }); + expect(button).toHaveAttribute('mat-raised-button', ''); } - expect(button).toHaveCssClass('btn-xs'); - expect(button).toHaveCssClass('mat-primary'); + expect(button).toHaveClass('btn-xs'); + expect(button).toHaveClass('mat-primary'); fixture.componentInstance.formButtonXs = false; fixture.detectChanges(); button = queryFor(fixture, '[mat-raised-button]')[0].nativeElement; if (!isPlatformServer(platformId)) { - expect(button).toHaveAttributes({ - 'mat-raised-button': '', - }); + expect(button).toHaveAttribute('mat-raised-button', ''); } - expect(button).not.toHaveCssClass('btn-xs'); - expect(button).toHaveCssClass('mat-primary'); + expect(button).not.toHaveClass('btn-xs'); + expect(button).toHaveClass('mat-primary'); }); }); diff --git a/projects/libs/flex-layout/extended/img-src/img-src.spec.ts b/projects/libs/flex-layout/extended/img-src/img-src.spec.ts index 038c3864..16fd9ee9 100644 --- a/projects/libs/flex-layout/extended/img-src/img-src.spec.ts +++ b/projects/libs/flex-layout/extended/img-src/img-src.spec.ts @@ -18,8 +18,6 @@ import { import { _dom as _, - customMatchers, - expect, expectEl, makeCreateTestComponent, queryFor, @@ -78,7 +76,7 @@ describe('img-src directive', () => { }; beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -110,9 +108,7 @@ describe('img-src directive', () => { const img = queryFor(fixture, 'img')[0].nativeElement; fixture.detectChanges(); - expect(img).toHaveAttributes({ - src: '', - }); + expect(img).toHaveAttribute('src', ''); }); it('should work standard input bindings', () => { @@ -124,7 +120,7 @@ describe('img-src directive', () => { fixture.detectChanges(); if (isPlatformServer(platformId)) { - expectEl(img).toHaveStyle( + expectEl(img).toHaveInlineStyle( { content: 'url(https://dummyimage.com/300x300/c72538/ffffff.png)', }, @@ -134,21 +130,19 @@ describe('img-src directive', () => { let url = 'https://dummyimage.com/700x400/258cc7/fff.png'; fixture.componentInstance.defaultSrc = url; fixture.detectChanges(); - expectEl(img).toHaveStyle( + expectEl(img).toHaveInlineStyle( { content: `url(${url})`, }, styler, ); } else { - expect(imgEl).toHaveAttributes({ - src: 'https://dummyimage.com/300x300/c72538/ffffff.png', - }); + expect(imgEl).toHaveAttribute('src', 'https://dummyimage.com/300x300/c72538/ffffff.png'); let url = 'https://dummyimage.com/700x400/258cc7/fff.png'; fixture.componentInstance.defaultSrc = url; fixture.detectChanges(); - expect(imgEl).toHaveAttributes({ src: url }); + expect(imgEl).toHaveAttribute('src', url); } }); @@ -159,9 +153,7 @@ describe('img-src directive', () => { const img = queryFor(fixture, 'img')[0].nativeElement; fixture.detectChanges(); - expect(img).toHaveAttributes({ - src: '', - }); + expect(img).toHaveAttribute('src', ''); }); it('should only work with "" elements.', () => { @@ -171,9 +163,7 @@ describe('img-src directive', () => { const img = queryFor(fixture, 'iframe')[0].nativeElement; fixture.detectChanges(); - expect(img).not.toHaveAttributes({ - src: '', - }); + expect(img).not.toHaveAttribute('src', ''); }); it('should not replace src on the server', () => { @@ -184,7 +174,7 @@ describe('img-src directive', () => { const img = queryFor(fixture, 'img')[0]; fixture.detectChanges(); - expectEl(img).not.toHaveStyle( + expectEl(img).not.toHaveInlineStyle( { content: 'url(https://dummyimage.com/300x300/c72538/ffffff.png)', }, @@ -204,7 +194,7 @@ describe('img-src directive', () => { const img = queryFor(fixture, 'img')[0]; - expectEl(img).toHaveStyle( + expectEl(img).toHaveInlineStyle( { content: `url(https://dummyimage.com/300x300/c72538/ffffff.png)`, }, @@ -213,7 +203,7 @@ describe('img-src directive', () => { mediaController.activate('md'); fixture.detectChanges(); - expectEl(img).toHaveStyle( + expectEl(img).toHaveInlineStyle( { content: `url(${SRC_URLS['md'][0]})`, }, @@ -236,7 +226,7 @@ describe('img-src directive', () => { fixture.detectChanges(); expect(imgEl).toBeDefined(); if (isPlatformServer(platformId)) { - expectEl(img).toHaveStyle( + expectEl(img).toHaveInlineStyle( { content: `url(${SRC_URLS['md'][0]})`, }, @@ -246,23 +236,19 @@ describe('img-src directive', () => { // When activating an unused breakpoint, fallback to default [src] value mediaController.activate('xl'); fixture.detectChanges(); - expectEl(img).toHaveStyle( + expectEl(img).toHaveInlineStyle( { content: `url(${SRC_URLS['xs'][0]})`, }, styler, ); } else { - expect(imgEl).toHaveAttributes({ - src: SRC_URLS['md'][0], - }); + expect(imgEl).toHaveAttribute('src', SRC_URLS['md'][0]); // When activating an unused breakpoint, fallback to default [src] value mediaController.activate('xl'); fixture.detectChanges(); - expect(imgEl).toHaveAttributes({ - src: SRC_URLS['xs'][0], - }); + expect(imgEl).toHaveAttribute('src', SRC_URLS['xs'][0]); } }); @@ -278,7 +264,7 @@ describe('img-src directive', () => { let imgEl = img.nativeElement; expect(imgEl).toBeDefined(); if (isPlatformServer(platformId)) { - expectEl(img).toHaveStyle( + expectEl(img).toHaveInlineStyle( { content: `url(${defaultSrc})`, }, @@ -287,7 +273,7 @@ describe('img-src directive', () => { mediaController.activate('xs'); fixture.detectChanges(); - expectEl(img).toHaveStyle( + expectEl(img).toHaveInlineStyle( { content: `url(${xsSrc})`, }, @@ -296,28 +282,22 @@ describe('img-src directive', () => { mediaController.activate('lg'); fixture.detectChanges(); - expectEl(img).toHaveStyle( + expectEl(img).toHaveInlineStyle( { content: `url(${defaultSrc})`, }, styler, ); } else { - expect(imgEl).toHaveAttributes({ - src: defaultSrc, - }); + expect(imgEl).toHaveAttribute('src', defaultSrc); mediaController.activate('xs'); fixture.detectChanges(); - expect(imgEl).toHaveAttributes({ - src: xsSrc, - }); + expect(imgEl).toHaveAttribute('src', xsSrc); mediaController.activate('lg'); fixture.detectChanges(); - expect(imgEl).toHaveAttributes({ - src: defaultSrc, - }); + expect(imgEl).toHaveAttribute('src', defaultSrc); } }); @@ -333,10 +313,8 @@ describe('img-src directive', () => { let imgEl = img.nativeElement; expect(imgEl).toBeDefined(); if (isPlatformServer(platformId)) { - expect(imgEl).toHaveAttributes({ - src: '', - }); - expectEl(img).toHaveStyle( + expect(imgEl).toHaveAttribute('src', ''); + expectEl(img).toHaveInlineStyle( { content: `url(${SRC_URLS['md'][0]})`, }, @@ -346,26 +324,20 @@ describe('img-src directive', () => { // When activating an unused breakpoint, fallback to default [src] value mediaController.activate('xl'); fixture.detectChanges(); - expectEl(img).not.toHaveStyle( + expectEl(img).not.toHaveInlineStyle( { content: `url(${SRC_URLS['md'][0]})`, }, styler, ); - expect(imgEl).toHaveAttributes({ - src: '', - }); + expect(imgEl).toHaveAttribute('src', ''); } else { - expect(imgEl).toHaveAttributes({ - src: SRC_URLS['md'][0], - }); + expect(imgEl).toHaveAttribute('src', SRC_URLS['md'][0]); // When activating an unused breakpoint, fallback to default [src] value mediaController.activate('xl'); fixture.detectChanges(); - expect(imgEl).toHaveAttributes({ - src: '', - }); + expect(imgEl).toHaveAttribute('src', ''); } }); }); diff --git a/projects/libs/flex-layout/extended/show-hide/hide.spec.ts b/projects/libs/flex-layout/extended/show-hide/hide.spec.ts index a6be9750..1d31bdaa 100644 --- a/projects/libs/flex-layout/extended/show-hide/hide.spec.ts +++ b/projects/libs/flex-layout/extended/show-hide/hide.spec.ts @@ -18,8 +18,6 @@ import { } from '@ngbracket/ngx-layout/core'; import { - customMatchers, - expect, expectNativeEl, makeCreateTestComponent, NgMatchers, @@ -65,7 +63,7 @@ describe('hide directive', () => { }; beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -85,17 +83,17 @@ describe('hide directive', () => { describe('without `responsive` features', () => { it('should initial with component not visible as default', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); }); it('should initial with component visible when set to `false`', () => { createTestComponent(`
`); - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); }); it('should initial with component visible when set to `0`', () => { createTestComponent(`
`); - expectNativeEl(fixture, { isVisible: 0 }).not.toHaveStyle( + expectNativeEl(fixture, { isVisible: 0 }).not.toHaveInlineStyle( { display: 'none' }, styler, ); @@ -103,23 +101,23 @@ describe('hide directive', () => { it('should update styles with binding changes', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); fixture.componentInstance.toggleMenu(); - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); fixture.componentInstance.toggleMenu(); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); }); it('should use "block" display style when not explicitly defined', () => { createTestComponent(``); - expectNativeEl(fixture, { isHidden: true }).toHaveStyle( + expectNativeEl(fixture, { isHidden: true }).toHaveInlineStyle( { display: 'none', }, styler, ); - expectNativeEl(fixture, { isHidden: false }).not.toHaveStyle( + expectNativeEl(fixture, { isHidden: false }).not.toHaveInlineStyle( { display: 'none', }, @@ -129,11 +127,11 @@ describe('hide directive', () => { it('should use "flex" display style when the element also has an fxLayout', () => { createTestComponent(`
`); - expectNativeEl(fixture, { isHidden: true }).toHaveStyle( + expectNativeEl(fixture, { isHidden: true }).toHaveInlineStyle( { display: 'none' }, styler, ); - expectNativeEl(fixture, { isHidden: false }).not.toHaveStyle( + expectNativeEl(fixture, { isHidden: false }).not.toHaveInlineStyle( { display: 'none' }, styler, ); @@ -143,9 +141,9 @@ describe('hide directive', () => { createTestComponent( `
`, ); - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); }); }); @@ -153,41 +151,41 @@ describe('hide directive', () => { it('should show on `xs` viewports only when the default is included', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('xs'); - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); }); it('should preserve display and update only on activated mediaQuery', () => { createTestComponent( `
`, ); - expectNativeEl(fixture).toHaveStyle({ display: 'inline-block' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'inline-block' }, styler); // should hide with this activation mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); // should reset to original display style mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle({ display: 'inline-block' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'inline-block' }, styler); }); it('should restore original display when disabled', () => { createTestComponent( `
`, ); - expectNativeEl(fixture).toHaveStyle({ display: 'inline-block' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'inline-block' }, styler); // should hide with this activation mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); // should reset to original display style fixture.componentInstance.isHidden = false; - expectNativeEl(fixture).toHaveStyle({ display: 'inline-block' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'inline-block' }, styler); }); it('should restore original display when the mediaQuery deactivates', () => { @@ -195,39 +193,39 @@ describe('hide directive', () => { createTestComponent( `
`, ); - expectNativeEl(fixture).toHaveStyle(originalDisplay, styler); + expectNativeEl(fixture).toHaveInlineStyle(originalDisplay, styler); // should hide with this activation mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); // should reset to original display style mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle(originalDisplay, styler); + expectNativeEl(fixture).toHaveInlineStyle(originalDisplay, styler); }); it('should support use of the `media` observable in templates ', () => { createTestComponent(`
`); - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('lg'); - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); }); it('should support use of the `media` observable in adaptive templates ', () => { createTestComponent( `
`, ); - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('xs'); - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('md'); - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); }); it('should hide when used with fxLayout and the ".md" breakpoint activates', () => { @@ -251,8 +249,8 @@ describe('hide directive', () => { '.hideOnMd', ); - expectActivation().not.toHaveStyle({ display: 'none' }, styler); - expectActivation('md').toHaveStyle({ display: 'none' }, styler); + expectActivation().not.toHaveInlineStyle({ display: 'none' }, styler); + expectActivation('md').toHaveInlineStyle({ display: 'none' }, styler); }); it('should restore proper display mode when not hiding', () => { @@ -266,9 +264,9 @@ describe('hide directive', () => { '.hideOnXs', ); - expectActivation().not.toHaveStyle({ display: 'none' }, styler); - expectActivation('xs').toHaveStyle({ display: 'none' }, styler); - expectActivation('md').not.toHaveStyle({ display: 'none' }, styler); + expectActivation().not.toHaveInlineStyle({ display: 'none' }, styler); + expectActivation('xs').toHaveInlineStyle({ display: 'none' }, styler); + expectActivation('md').not.toHaveInlineStyle({ display: 'none' }, styler); }); it('should work with overlapping breakpoint', () => { @@ -284,9 +282,9 @@ describe('hide directive', () => { ); mediaController.useOverlaps = true; - expectActivation().not.toHaveStyle({ display: 'none' }, styler); - expectActivation('xs').toHaveStyle({ display: 'none' }, styler); - expectActivation('md').not.toHaveStyle({ display: 'none' }, styler); + expectActivation().not.toHaveInlineStyle({ display: 'none' }, styler); + expectActivation('xs').toHaveInlineStyle({ display: 'none' }, styler); + expectActivation('md').not.toHaveInlineStyle({ display: 'none' }, styler); }); }); @@ -299,13 +297,13 @@ describe('hide directive', () => { `); mediaController.useOverlaps = true; - expectNativeEl(fixture).toHaveStyle({ display: 'inline-block' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'inline-block' }, styler); mediaController.activate('print'); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('sm'); - expectNativeEl(fixture).toHaveStyle({ display: 'inline-block' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'inline-block' }, styler); }); }); @@ -315,19 +313,19 @@ describe('hide directive', () => { This content to be shown ONLY when gt-sm `); - expectNativeEl(fixture).toHaveStyle({ display: 'inline-block' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'inline-block' }, styler); mediaController.activate('md', true); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('sm', true); - expectNativeEl(fixture).toHaveStyle({ display: 'inline-block' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'inline-block' }, styler); mediaController.activate('xs', true); - expectNativeEl(fixture).toHaveStyle({ display: 'inline-block' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'inline-block' }, styler); mediaController.activate('print', false); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); }); it('should support hide and show with fxLayoutAlign', () => { @@ -337,16 +335,16 @@ describe('hide directive', () => { fxHide.print> `); - expectNativeEl(fixture).toHaveStyle({ display: 'flex' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'flex' }, styler); mediaController.activate('md', true); - expectNativeEl(fixture).toHaveStyle({ display: 'flex' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'flex' }, styler); mediaController.activate('print', false); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('xs', true); - expectNativeEl(fixture).toHaveStyle({ display: 'flex' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'flex' }, styler); }); it('should support fxHide and fxLayout', () => { @@ -356,13 +354,13 @@ describe('hide directive', () => { `); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('sm'); - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); }); }); diff --git a/projects/libs/flex-layout/extended/show-hide/show.spec.ts b/projects/libs/flex-layout/extended/show-hide/show.spec.ts index 0eb714ca..68a3e7b2 100644 --- a/projects/libs/flex-layout/extended/show-hide/show.spec.ts +++ b/projects/libs/flex-layout/extended/show-hide/show.spec.ts @@ -14,7 +14,6 @@ import { MatSelectModule } from '@angular/material/select'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { FlexLayoutModule } from '@ngbracket/ngx-layout'; import { - customMatchers, expectEl, expectNativeEl, makeCreateTestComponent, @@ -28,7 +27,7 @@ import { SERVER_TOKEN, StyleUtils, } from '@ngbracket/ngx-layout/core'; -import { ShowHideDirective } from '@ngbracket/ngx-layout/extended'; +import { ShowHideDirective } from './show-hide'; describe('show directive', () => { let fixture: ComponentFixture; @@ -56,7 +55,7 @@ describe('show directive', () => { }; beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -84,73 +83,73 @@ describe('show directive', () => { describe('without `responsive` features', () => { it('should initial with component visible as default', () => { createTestComponent(`
`); - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); }); it('should initial with component not visible when set to `false`', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); }); it('should initial with component not visible when set to `0`', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); fixture.componentInstance.isVisible = true; - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); }); it('should update styles with binding changes', () => { createTestComponent(`
`); - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); fixture.componentInstance.toggleMenu(); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); fixture.componentInstance.toggleMenu(); - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); }); it('should use "block" display style when not explicitly defined', () => { createTestComponent(``); - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); }); it('should use "flex" display style when the element also has an fxLayout', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle({ display: 'flex' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'flex' }, styler); }); }); describe('with responsive features', () => { it('should hide on `xs` viewports only', () => { createTestComponent(`
`); - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('md'); - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); }); it('should hide when fallbacks are configured to hide on `gt-xs` viewports', () => { createTestComponent(`
`); - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('md', true); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); }); it('should support use of the `media` observable in templates ', () => { createTestComponent(`
`); mediaController.useOverlaps = true; - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('xs'); - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('gt-md'); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); }); it('should preserve display and update only on activated mediaQuery', () => { @@ -159,12 +158,12 @@ describe('show directive', () => { ); fixture.componentInstance.isHidden = false; - expectNativeEl(fixture).toHaveStyle({ display: 'inline-block' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'inline-block' }, styler); // should hide with this activation and setting mediaController.activate('xs'); fixture.componentInstance.isHidden = true; - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); }); it('should restore display when not enabled', () => { @@ -173,15 +172,15 @@ describe('show directive', () => { `
`, ); fixture.componentInstance.isHidden = false; - expectNativeEl(fixture).toHaveStyle(visibleStyle, styler); + expectNativeEl(fixture).toHaveInlineStyle(visibleStyle, styler); // mqActivation but the isHidden == false, so show it mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle(visibleStyle, styler); + expectNativeEl(fixture).toHaveInlineStyle(visibleStyle, styler); // should hide with this activation fixture.componentInstance.isHidden = true; - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); }); it('should restore display when the mediaQuery deactivates', () => { @@ -190,15 +189,15 @@ describe('show directive', () => { `
`, ); fixture.componentInstance.isHidden = true; - expectNativeEl(fixture).toHaveStyle(visibleStyle, styler); + expectNativeEl(fixture).toHaveInlineStyle(visibleStyle, styler); // should hide with this activation mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); // should reset to original display style mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle(visibleStyle, styler); + expectNativeEl(fixture).toHaveInlineStyle(visibleStyle, styler); }); it('should work oninit with responsive', () => { @@ -208,13 +207,13 @@ describe('show directive', () => { `); mediaController.activate('gt-lg'); - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('lg'); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('gt-lg'); - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); }); }); @@ -227,13 +226,13 @@ describe('show directive', () => { `); mediaController.useOverlaps = true; - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('print'); - expectNativeEl(fixture).toHaveStyle({ display: 'block' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'block' }, styler); mediaController.activate('sm'); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); }); }); @@ -246,16 +245,16 @@ describe('show directive', () => { `); mediaController.useOverlaps = true; - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('lg'); - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('sm'); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('print'); - expectNativeEl(fixture).toHaveStyle({ display: 'block' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'block' }, styler); }); it('should work with responsive and adding flex to parent', () => { @@ -268,13 +267,13 @@ describe('show directive', () => { `); mediaController.useOverlaps = true; - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('gt-sm'); - expectNativeEl(fixture).toHaveStyle({ display: 'flex' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'flex' }, styler); mediaController.activate('sm'); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); }); it('should work with unknown elements', () => { @@ -304,7 +303,7 @@ describe('show directive', () => { styler, ); } else { - expectEl(queryFor(fixture, elSelector)[0]).toHaveStyle( + expectEl(queryFor(fixture, elSelector)[0]).toHaveInlineStyle( { display: 'initial', }, @@ -314,7 +313,7 @@ describe('show directive', () => { mediaController.activate('xs'); fixture.detectChanges(); - expectEl(queryFor(fixture, elSelector)[0]).toHaveStyle( + expectEl(queryFor(fixture, elSelector)[0]).toHaveInlineStyle( { display: 'none', }, @@ -332,7 +331,7 @@ describe('show directive', () => { styler, ); } else { - expectEl(queryFor(fixture, elSelector)[0]).toHaveStyle( + expectEl(queryFor(fixture, elSelector)[0]).toHaveInlineStyle( { display: 'initial', }, @@ -344,7 +343,7 @@ describe('show directive', () => { describe('with custom breakpoints', () => { beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -386,16 +385,16 @@ describe('show directive', () => {

`); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('sm-md'); - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('sm'); - expectNativeEl(fixture).toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'none' }, styler); mediaController.activate('sm.lg'); - expectNativeEl(fixture).not.toHaveStyle({ display: 'none' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ display: 'none' }, styler); }); }); }); diff --git a/projects/libs/flex-layout/extended/style/style-transforms.spec.ts b/projects/libs/flex-layout/extended/style/style-transforms.spec.ts index c81ade7c..eefe2c35 100644 --- a/projects/libs/flex-layout/extended/style/style-transforms.spec.ts +++ b/projects/libs/flex-layout/extended/style/style-transforms.spec.ts @@ -5,10 +5,6 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -import { - customMatchers, - expect, -} from '@ngbracket/ngx-layout/_private-utils/testing'; import { buildMapFromList, buildMapFromSet, @@ -21,7 +17,7 @@ import { describe('ngStyleUtils', () => { beforeEach(() => { - jasmine.addMatchers(customMatchers); + }); it('should parse a raw string of key:value pairs', () => { @@ -45,7 +41,7 @@ describe('ngStyleUtils', () => { `), ); - expect(map).toHaveMap({ + expect(map).toStrictEqual({ color: 'red', 'font-size': '16px', 'background-color': 'rgba(116, 37, 49, 0.72)', @@ -61,7 +57,7 @@ describe('ngStyleUtils', () => { `), ); - expect(map).toHaveMap({ + expect(map).toStrictEqual({ color: 'red', 'font-size': '16px', 'background-color': 'rgba(116, 37, 49, 0.72)', @@ -76,7 +72,7 @@ describe('ngStyleUtils', () => { let map: NgStyleMap = buildMapFromSet(customSet); - expect(map).toHaveMap({ + expect(map).toStrictEqual({ color: 'red', 'font-size': '16px', 'background-color': 'rgba(116, 37, 49, 0.72)', diff --git a/projects/libs/flex-layout/extended/style/style.spec.ts b/projects/libs/flex-layout/extended/style/style.spec.ts index ea2bf95d..44a5b18b 100644 --- a/projects/libs/flex-layout/extended/style/style.spec.ts +++ b/projects/libs/flex-layout/extended/style/style.spec.ts @@ -18,7 +18,6 @@ import { import { LayoutDirective } from '@ngbracket/ngx-layout/flex'; import { - customMatchers, expectNativeEl, makeCreateTestComponent, } from '@ngbracket/ngx-layout/_private-utils/testing'; @@ -41,7 +40,7 @@ describe('style directive', () => { }; beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -79,7 +78,7 @@ describe('style directive', () => { `); mediaController.activate(testData.mq); - expectNativeEl(fixture).toHaveStyle(testData.styleObj, styler); + expectNativeEl(fixture).toHaveInlineStyle(testData.styleObj, styler); }); }); @@ -88,9 +87,9 @@ describe('style directive', () => {
`); - expectNativeEl(fixture).toHaveStyle({ color: 'blue' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ color: 'blue' }, styler); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { color: 'blue', 'font-size': '15px' }, styler, ); @@ -103,10 +102,10 @@ describe('style directive', () => { ngStyle.xs="font-size: 15px; background-color: #fc2929;" > `); - expectNativeEl(fixture).toHaveStyle({ color: 'blue' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ color: 'blue' }, styler); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { color: 'blue', 'font-size': '15px', @@ -138,19 +137,19 @@ describe('style directive', () => { fixture.detectChanges(); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle({ display: 'flex' }, styler); - expectNativeEl(fixture).toHaveStyle({ 'font-size': '16px' }, styler); - expectNativeEl(fixture).not.toHaveStyle({ 'font-size': '12px' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'flex' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ 'font-size': '16px' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ 'font-size': '12px' }, styler); mediaController.activate('md'); - expectNativeEl(fixture).not.toHaveStyle({ 'font-size': '16px' }, styler); - expectNativeEl(fixture).toHaveStyle({ 'font-size': '12px' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ 'font-size': '16px' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ 'font-size': '12px' }, styler); mediaController.activate('lg'); - expectNativeEl(fixture).not.toHaveStyle({ 'font-size': '12px' }, styler); - expectNativeEl(fixture).not.toHaveStyle({ 'font-size': '16px' }, styler); - expectNativeEl(fixture).toHaveStyle({ 'font-size': '10px' }, styler); // original is gone - expectNativeEl(fixture).toHaveStyle({ 'margin-left': '13px' }, styler); // portion remains + expectNativeEl(fixture).not.toHaveInlineStyle({ 'font-size': '12px' }, styler); + expectNativeEl(fixture).not.toHaveInlineStyle({ 'font-size': '16px' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ 'font-size': '10px' }, styler); // original is gone + expectNativeEl(fixture).toHaveInlineStyle({ 'margin-left': '13px' }, styler); // portion remains }); it('should work with special ngStyle px notation', () => { @@ -159,7 +158,7 @@ describe('style directive', () => { `); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle({ 'font-size': '15px' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ 'font-size': '15px' }, styler); }); it('should work with bound values', () => { @@ -168,7 +167,7 @@ describe('style directive', () => { `); mediaController.activate('xs'); - expectNativeEl(fixture, { fontSize: 19 }).toHaveStyle( + expectNativeEl(fixture, { fontSize: 19 }).toHaveInlineStyle( { 'font-size': '19px' }, styler, ); @@ -194,10 +193,10 @@ describe('style directive', () => { First div `); - expectNativeEl(fixture).toHaveStyle({ 'background-color': 'red' }, styler); - expectNativeEl(fixture).toHaveStyle({ height: '100px' }, styler); - expectNativeEl(fixture).toHaveStyle({ width: '100px' }, styler); - expectNativeEl(fixture).toHaveStyle({ border: '2px solid green' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ 'background-color': 'red' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ height: '100px' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ width: '100px' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ border: '2px solid green' }, styler); }); }); diff --git a/projects/libs/flex-layout/flex/flex-offset/flex-offset.spec.ts b/projects/libs/flex-layout/flex/flex-offset/flex-offset.spec.ts index d65e61dc..02d89a5c 100644 --- a/projects/libs/flex-layout/flex/flex-offset/flex-offset.spec.ts +++ b/projects/libs/flex-layout/flex/flex-offset/flex-offset.spec.ts @@ -1,10 +1,10 @@ /** * @license * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ +* +* Use of this source code is governed by an MIT-style license that can be +* found in the LICENSE file at https://angular.io/license +*/ import { DIR_DOCUMENT } from '@angular/cdk/bidi'; import { CommonModule, isPlatformServer } from '@angular/common'; import { Component, Injectable, PLATFORM_ID } from '@angular/core'; @@ -16,14 +16,14 @@ import { StyleUtils, ɵMockMatchMediaProvider as MockMatchMediaProvider, } from '@ngbracket/ngx-layout/core'; -import { FlexModule, FlexOffsetStyleBuilder } from '@ngbracket/ngx-layout/flex'; import { - customMatchers, expectEl, expectNativeEl, makeCreateTestComponent, queryFor, } from '@ngbracket/ngx-layout/_private-utils/testing'; +import { FlexModule } from '../module'; +import { FlexOffsetStyleBuilder } from './flex-offset'; describe('flex-offset directive', () => { let fixture: ComponentFixture; @@ -46,7 +46,7 @@ describe('flex-offset directive', () => { }; beforeEach(() => { - jasmine.addMatchers(customMatchers); + fakeDocument = { body: {}, documentElement: {} }; // Configure testbed to prepare services @@ -74,8 +74,8 @@ describe('flex-offset directive', () => { fixture.detectChanges(); let dom = fixture.debugElement.children[0]; - expectEl(dom).toHaveStyle({ 'margin-left': '32px' }, styler); - expectEl(dom).toHaveStyle({ flex: '1 1 0%' }, styler); + expectEl(dom).toHaveInlineStyle({ 'margin-left': '32px' }, styler); + expectEl(dom).toHaveInlineStyle({ flex: '1 1 0%' }, styler); }); it('should add correct styles for default `fxFlexOffset` usage w/ mulitplier', () => { @@ -83,13 +83,13 @@ describe('flex-offset directive', () => { fixture.detectChanges(); let dom = fixture.debugElement.children[0]; - expectEl(dom).toHaveStyle({ 'margin-left': '32px' }, styler); - expectEl(dom).toHaveStyle({ flex: '1 1 0%' }, styler); + expectEl(dom).toHaveInlineStyle({ 'margin-left': '32px' }, styler); + expectEl(dom).toHaveInlineStyle({ flex: '1 1 0%' }, styler); }); it('should work with percentage values', () => { componentWithTemplate(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '1 1 100%', 'box-sizing': 'border-box', @@ -110,11 +110,11 @@ describe('flex-offset directive', () => { let element = queryFor(fixture, '[fxFlex]')[0]; // parent flex-direction found with 'column' with child height styles - expectEl(parent).toHaveStyle( + expectEl(parent).toHaveInlineStyle( { 'flex-direction': 'column', display: 'flex' }, styler, ); - expectEl(element).toHaveStyle({ 'margin-top': '17px' }, styler); + expectEl(element).toHaveInlineStyle({ 'margin-top': '17px' }, styler); }); it('should CSS stylesheet and not inject flex-direction on parent', () => { @@ -134,11 +134,11 @@ describe('flex-offset directive', () => { // TODO(CaerusKaru): Domino is unable to detect these styles properly if (!isPlatformServer(platformId)) { // parent flex-direction found with 'column' with child height styles - expectEl(parent).toHaveStyle( + expectEl(parent).toHaveInlineStyle( { 'flex-direction': 'column', display: 'flex' }, styler, ); - expectEl(element).toHaveStyle({ 'margin-top': '41px' }, styler); + expectEl(element).toHaveInlineStyle({ 'margin-top': '41px' }, styler); } }); @@ -155,8 +155,8 @@ describe('flex-offset directive', () => { let parent = queryFor(fixture, '.parent')[0]; // parent flex-direction found with 'column'; set child with height styles - expectEl(element).toHaveStyle({ 'margin-top': '21%' }, styler); - expectEl(parent).toHaveStyle({ 'flex-direction': 'column' }, styler); + expectEl(element).toHaveInlineStyle({ 'margin-top': '21%' }, styler); + expectEl(parent).toHaveInlineStyle({ 'flex-direction': 'column' }, styler); }); it('should ignore fxLayout settings on same element', () => { @@ -164,7 +164,7 @@ describe('flex-offset directive', () => {
`); - expectNativeEl(fixture).not.toHaveStyle( + expectNativeEl(fixture).not.toHaveInlineStyle( { 'flex-direction': 'row', flex: '1 1 100%', @@ -184,7 +184,7 @@ describe('flex-offset directive', () => { fixture.detectChanges(); let element = queryFor(fixture, '[fxFlex]')[0]; - expectEl(element).toHaveStyle({ 'margin-right': '17px' }, styler); + expectEl(element).toHaveInlineStyle({ 'margin-right': '17px' }, styler); }); it('should set margin-right for rtl layouts on documentElement', () => { @@ -197,7 +197,7 @@ describe('flex-offset directive', () => { fixture.detectChanges(); let element = queryFor(fixture, '[fxFlex]')[0]; - expectEl(element).toHaveStyle({ 'margin-right': '17px' }, styler); + expectEl(element).toHaveInlineStyle({ 'margin-right': '17px' }, styler); }); it('should set margin-left for ltr layouts', () => { @@ -209,13 +209,13 @@ describe('flex-offset directive', () => { fixture.detectChanges(); let element = queryFor(fixture, '[fxFlex]')[0]; - expectEl(element).toHaveStyle({ 'margin-left': '17px' }, styler); + expectEl(element).toHaveInlineStyle({ 'margin-left': '17px' }, styler); }); }); describe('with custom builder', () => { beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -245,12 +245,12 @@ describe('flex-offset directive', () => { `); fixture.detectChanges(); let element = queryFor(fixture, '[fxFlexOffset]')[0]; - expectEl(element).toHaveStyle({ 'margin-top': '10px' }, styler); + expectEl(element).toHaveInlineStyle({ 'margin-top': '10px' }, styler); }); }); }); -@Injectable({ providedIn: FlexModule }) +@Injectable() export class MockFlexOffsetStyleBuilder extends StyleBuilder { override shouldCache = false; buildStyles(_input: string) { diff --git a/projects/libs/flex-layout/flex/flex-order/flex-order.spec.ts b/projects/libs/flex-layout/flex/flex-order/flex-order.spec.ts index 7081c86a..b88541ff 100644 --- a/projects/libs/flex-layout/flex/flex-order/flex-order.spec.ts +++ b/projects/libs/flex-layout/flex/flex-order/flex-order.spec.ts @@ -17,7 +17,6 @@ import { } from '@ngbracket/ngx-layout/core'; import { - customMatchers, expectNativeEl, makeCreateTestComponent, } from '@ngbracket/ngx-layout/_private-utils/testing'; @@ -40,7 +39,7 @@ describe('flex-order', () => { }; beforeEach(() => { - jasmine.addMatchers(customMatchers); + TestBed.configureTestingModule({ declarations: [TestOrderComponent], imports: [CommonModule, FlexLayoutModule], @@ -54,7 +53,7 @@ describe('flex-order', () => { describe('static API', () => { it('should add correct static values', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { order: '1', }, @@ -66,21 +65,21 @@ describe('flex-order', () => { describe('responsive API', () => { it('should add correct responsive values', () => { createTestComponent(`
`); - expectNativeEl(fixture).not.toHaveStyle( + expectNativeEl(fixture).not.toHaveInlineStyle( { order: '1', }, styler, ); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { order: '1', }, styler, ); mediaController.activate('sm'); - expectNativeEl(fixture).not.toHaveStyle( + expectNativeEl(fixture).not.toHaveInlineStyle( { order: '1', }, diff --git a/projects/libs/flex-layout/flex/flex/flex.spec.ts b/projects/libs/flex-layout/flex/flex/flex.spec.ts index 1f51a556..9242e270 100644 --- a/projects/libs/flex-layout/flex/flex/flex.spec.ts +++ b/projects/libs/flex-layout/flex/flex/flex.spec.ts @@ -9,8 +9,6 @@ import { } from '@angular/core/testing'; import { FlexLayoutModule } from '@ngbracket/ngx-layout'; import { - customMatchers, - expect, expectEl, expectNativeEl, makeCreateTestComponent, @@ -23,11 +21,8 @@ import { StyleBuilder, StyleUtils, } from '@ngbracket/ngx-layout/core'; -import { - DefaultFlexDirective, - DefaultLayoutDirective, - FlexStyleBuilder, -} from '@ngbracket/ngx-layout/flex'; +import { DefaultLayoutDirective } from '../layout/layout'; +import { DefaultFlexDirective, FlexStyleBuilder } from './flex'; describe('flex directive', () => { let fixture: ComponentFixture; @@ -58,7 +53,7 @@ describe('flex directive', () => { }; beforeEach(() => { - jasmine.addMatchers(customMatchers); + TestBed.configureTestingModule({ imports: [ @@ -84,8 +79,8 @@ describe('flex directive', () => { fixture.detectChanges(); let dom = fixture.debugElement.children[0]; - expectEl(dom).toHaveStyle({ 'box-sizing': 'border-box' }, styler); - expectEl(dom).toHaveStyle({ flex: '1 1 0%' }, styler); + expectEl(dom).toHaveInlineStyle({ 'box-sizing': 'border-box' }, styler); + expectEl(dom).toHaveInlineStyle({ flex: '1 1 0%' }, styler); }); it('should add correct styles for `fxFlex` and ngStyle with layout change', () => { @@ -98,9 +93,9 @@ describe('flex directive', () => { fixture.detectChanges(); mediaController.activate('sm', true); let element = queryFor(fixture, '[fxFlex]')[0]; - expectEl(element).toHaveStyle({ width: '15px' }, styler); - expectEl(element).toHaveStyle({ 'box-sizing': 'border-box' }, styler); - expectEl(element).toHaveStyle({ flex: '10 1 auto' }, styler); + expectEl(element).toHaveInlineStyle({ width: '15px' }, styler); + expectEl(element).toHaveInlineStyle({ 'box-sizing': 'border-box' }, styler); + expectEl(element).toHaveInlineStyle({ flex: '10 1 auto' }, styler); }); it('should add correct styles for `fxFlex` with NgForOf', () => { @@ -112,15 +107,15 @@ describe('flex directive', () => { fixture.componentInstance.direction = 'row'; fixture.detectChanges(); let element = queryFor(fixture, '[fxFlex]')[0]; - expectEl(element).toHaveStyle({ 'max-width': '50%' }, styler); - expectEl(element).toHaveStyle({ 'box-sizing': 'border-box' }, styler); - expectEl(element).toHaveStyle({ flex: '1 1 100%' }, styler); + expectEl(element).toHaveInlineStyle({ 'max-width': '50%' }, styler); + expectEl(element).toHaveInlineStyle({ 'box-sizing': 'border-box' }, styler); + expectEl(element).toHaveInlineStyle({ flex: '1 1 100%' }, styler); fixture.componentInstance.direction = 'column'; fixture.detectChanges(); element = queryFor(fixture, '[fxFlex]')[0]; - expectEl(element).toHaveStyle({ 'max-height': '50%' }, styler); - expectEl(element).toHaveStyle({ 'box-sizing': 'border-box' }, styler); - expectEl(element).toHaveStyle({ flex: '1 1 100%' }, styler); + expectEl(element).toHaveInlineStyle({ 'max-height': '50%' }, styler); + expectEl(element).toHaveInlineStyle({ 'box-sizing': 'border-box' }, styler); + expectEl(element).toHaveInlineStyle({ flex: '1 1 100%' }, styler); }); it('should add correct styles for `fxFlex` and ngStyle without layout change', () => { @@ -133,9 +128,9 @@ describe('flex directive', () => { fixture.detectChanges(); mediaController.activate('sm', true); let element = queryFor(fixture, '[fxFlex]')[0]; - expectEl(element).toHaveStyle({ width: '15px' }, styler); - expectEl(element).toHaveStyle({ 'box-sizing': 'border-box' }, styler); - expectEl(element).toHaveStyle({ flex: '10 1 auto' }, styler); + expectEl(element).toHaveInlineStyle({ width: '15px' }, styler); + expectEl(element).toHaveInlineStyle({ 'box-sizing': 'border-box' }, styler); + expectEl(element).toHaveInlineStyle({ flex: '10 1 auto' }, styler); }); it('should add correct styles for `fxFlex` with multiple layout changes and wraps', () => { @@ -147,32 +142,32 @@ describe('flex directive', () => { fixture.debugElement.componentInstance.direction = 'column'; fixture.detectChanges(); let element = queryFor(fixture, '[fxFlex]')[0]; - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'column' }, styler, ); - expectEl(element).toHaveStyle({ 'box-sizing': 'border-box' }, styler); - expectEl(element).toHaveStyle({ flex: '1 1 30%' }, styler); - expectEl(element).toHaveStyle({ 'max-height': '30%' }, styler); + expectEl(element).toHaveInlineStyle({ 'box-sizing': 'border-box' }, styler); + expectEl(element).toHaveInlineStyle({ flex: '1 1 30%' }, styler); + expectEl(element).toHaveInlineStyle({ 'max-height': '30%' }, styler); fixture.debugElement.componentInstance.direction = 'row'; fixture.detectChanges(); - expectNativeEl(fixture).toHaveStyle({ 'flex-direction': 'row' }, styler); - expectEl(element).toHaveStyle({ 'box-sizing': 'border-box' }, styler); - expectEl(element).toHaveStyle({ flex: '1 1 30%' }, styler); - expectEl(element).toHaveStyle({ 'max-width': '30%' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ 'flex-direction': 'row' }, styler); + expectEl(element).toHaveInlineStyle({ 'box-sizing': 'border-box' }, styler); + expectEl(element).toHaveInlineStyle({ flex: '1 1 30%' }, styler); + expectEl(element).toHaveInlineStyle({ 'max-width': '30%' }, styler); fixture.debugElement.componentInstance.direction = 'column'; fixture.detectChanges(); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'column' }, styler, ); - expectEl(element).toHaveStyle({ 'box-sizing': 'border-box' }, styler); - expectEl(element).toHaveStyle({ flex: '1 1 30%' }, styler); - expectEl(element).toHaveStyle({ 'max-height': '30%' }, styler); + expectEl(element).toHaveInlineStyle({ 'box-sizing': 'border-box' }, styler); + expectEl(element).toHaveInlineStyle({ flex: '1 1 30%' }, styler); + expectEl(element).toHaveInlineStyle({ 'max-height': '30%' }, styler); }); it('should add correct styles for `fxFlex` with gap in grid mode and wrap parent', () => { @@ -186,43 +181,43 @@ describe('flex directive', () => { fixture.debugElement.componentInstance.direction = 'row'; fixture.detectChanges(); let element = queryFor(fixture, '[fxFlex]')[0]; - expectNativeEl(fixture).toHaveStyle({ 'flex-direction': 'row' }, styler); - expectEl(element).toHaveStyle({ 'box-sizing': 'border-box' }, styler); - expectEl(element).toHaveStyle({ flex: '1 1 30%' }, styler); - expectEl(element).toHaveStyle({ 'max-width': '30%' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ 'flex-direction': 'row' }, styler); + expectEl(element).toHaveInlineStyle({ 'box-sizing': 'border-box' }, styler); + expectEl(element).toHaveInlineStyle({ flex: '1 1 30%' }, styler); + expectEl(element).toHaveInlineStyle({ 'max-width': '30%' }, styler); fixture.debugElement.componentInstance.direction = 'row-reverse'; fixture.detectChanges(); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'row-reverse' }, styler, ); - expectEl(element).toHaveStyle({ 'box-sizing': 'border-box' }, styler); - expectEl(element).toHaveStyle({ flex: '1 1 30%' }, styler); - expectEl(element).toHaveStyle({ 'max-width': '30%' }, styler); + expectEl(element).toHaveInlineStyle({ 'box-sizing': 'border-box' }, styler); + expectEl(element).toHaveInlineStyle({ flex: '1 1 30%' }, styler); + expectEl(element).toHaveInlineStyle({ 'max-width': '30%' }, styler); fixture.debugElement.componentInstance.direction = 'column'; fixture.detectChanges(); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'column' }, styler, ); - expectEl(element).toHaveStyle({ 'box-sizing': 'border-box' }, styler); - expectEl(element).toHaveStyle({ flex: '1 1 30%' }, styler); - expectEl(element).toHaveStyle({ 'max-height': '30%' }, styler); + expectEl(element).toHaveInlineStyle({ 'box-sizing': 'border-box' }, styler); + expectEl(element).toHaveInlineStyle({ flex: '1 1 30%' }, styler); + expectEl(element).toHaveInlineStyle({ 'max-height': '30%' }, styler); fixture.debugElement.componentInstance.direction = 'column-reverse'; fixture.detectChanges(); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'column-reverse' }, styler, ); - expectEl(element).toHaveStyle({ 'box-sizing': 'border-box' }, styler); - expectEl(element).toHaveStyle({ flex: '1 1 30%' }, styler); - expectEl(element).toHaveStyle({ 'max-height': '30%' }, styler); + expectEl(element).toHaveInlineStyle({ 'box-sizing': 'border-box' }, styler); + expectEl(element).toHaveInlineStyle({ flex: '1 1 30%' }, styler); + expectEl(element).toHaveInlineStyle({ 'max-height': '30%' }, styler); }); it('should add correct styles for `fxFlex` and ngStyle with multiple layout changes', () => { @@ -236,16 +231,16 @@ describe('flex directive', () => { fixture.detectChanges(); let element = queryFor(fixture, '[fxFlex]')[0]; - expectEl(element).toHaveStyle({ width: '15px' }, styler); - expectEl(element).toHaveStyle({ 'box-sizing': 'border-box' }, styler); - expectEl(element).toHaveStyle({ flex: '10 1 auto' }, styler); + expectEl(element).toHaveInlineStyle({ width: '15px' }, styler); + expectEl(element).toHaveInlineStyle({ 'box-sizing': 'border-box' }, styler); + expectEl(element).toHaveInlineStyle({ flex: '10 1 auto' }, styler); mediaController.activate('md', true); fixture.detectChanges(); - expectEl(element).not.toHaveStyle({ width: '15px' }, styler); - expectEl(element).toHaveStyle({ 'box-sizing': 'border-box' }, styler); - expectEl(element).toHaveStyle({ flex: '10 1 auto' }, styler); + expectEl(element).not.toHaveInlineStyle({ width: '15px' }, styler); + expectEl(element).toHaveInlineStyle({ 'box-sizing': 'border-box' }, styler); + expectEl(element).toHaveInlineStyle({ flex: '10 1 auto' }, styler); }); it('should apply `fxGrow` value to flex-grow when used default `fxFlex`', () => { @@ -254,8 +249,8 @@ describe('flex directive', () => { let dom = fixture.debugElement.children[0]; - expectEl(dom).toHaveStyle({ 'box-sizing': 'border-box' }, styler); - expectEl(dom).toHaveStyle({ flex: '10 1 0%' }, styler); + expectEl(dom).toHaveInlineStyle({ 'box-sizing': 'border-box' }, styler); + expectEl(dom).toHaveInlineStyle({ flex: '10 1 0%' }, styler); }); it('should apply `fxShrink` value to flex-shrink when used default `fxFlex`', () => { @@ -264,8 +259,8 @@ describe('flex directive', () => { let dom = fixture.debugElement.children[0]; - expectEl(dom).toHaveStyle({ 'box-sizing': 'border-box' }, styler); - expectEl(dom).toHaveStyle({ flex: '1 10 0%' }, styler); + expectEl(dom).toHaveInlineStyle({ 'box-sizing': 'border-box' }, styler); + expectEl(dom).toHaveInlineStyle({ flex: '1 10 0%' }, styler); }); it('should apply both `fxGrow` and `fxShrink` when used with default fxFlex', () => { @@ -273,15 +268,15 @@ describe('flex directive', () => { fixture.detectChanges(); let dom = fixture.debugElement.children[0]; - expectEl(dom).toHaveStyle({ 'box-sizing': 'border-box' }, styler); - expectEl(dom).toHaveStyle({ flex: '4 5 0%' }, styler); + expectEl(dom).toHaveInlineStyle({ 'box-sizing': 'border-box' }, styler); + expectEl(dom).toHaveInlineStyle({ flex: '4 5 0%' }, styler); }); it('should add correct styles for flex-basis unitless 0 input', () => { componentWithTemplate(`
`); fixture.detectChanges(); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '1 1 0%', 'box-sizing': 'border-box', @@ -289,7 +284,7 @@ describe('flex directive', () => { styler, ); - expectNativeEl(fixture).not.toHaveStyle( + expectNativeEl(fixture).not.toHaveInlineStyle( { 'max-width': '*', }, @@ -301,7 +296,7 @@ describe('flex directive', () => { componentWithTemplate(`
`); fixture.detectChanges(); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '1 1 0%', 'box-sizing': 'border-box', @@ -309,7 +304,7 @@ describe('flex directive', () => { styler, ); - expectNativeEl(fixture).not.toHaveStyle( + expectNativeEl(fixture).not.toHaveInlineStyle( { 'max-width': '*', }, @@ -321,7 +316,7 @@ describe('flex directive', () => { componentWithTemplate(`
`); fixture.detectChanges(); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '1 0 50%', 'box-sizing': 'border-box', @@ -329,7 +324,7 @@ describe('flex directive', () => { styler, ); - expectNativeEl(fixture).not.toHaveStyle( + expectNativeEl(fixture).not.toHaveInlineStyle( { 'max-width': '*', }, @@ -341,7 +336,7 @@ describe('flex directive', () => { componentWithTemplate(`
`); fixture.detectChanges(); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'max-width': '2%', flex: '1 1 100%', @@ -353,7 +348,7 @@ describe('flex directive', () => { it('should work with percentage values', () => { componentWithTemplate(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '1 1 100%', 'max-width': '37%', @@ -364,7 +359,7 @@ describe('flex directive', () => { }); it('should work with pixel values', () => { componentWithTemplate(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '1 1 37px', 'box-sizing': 'border-box', @@ -374,7 +369,7 @@ describe('flex directive', () => { }); it('should work with "1 0 auto" values', () => { componentWithTemplate(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '1 0 auto', 'box-sizing': 'border-box', @@ -394,12 +389,12 @@ describe('flex directive', () => { let element = queryFor(fixture, '[fxFlex]')[0]; // parent flex-direction found with 'column' with child height styles - expectEl(parent).toHaveStyle( + expectEl(parent).toHaveInlineStyle( { 'flex-direction': 'column', display: 'flex' }, styler, ); - expectEl(element).toHaveStyle({ 'min-height': '30px' }, styler); - expectEl(element).not.toHaveStyle({ 'min-width': '30px' }, styler); + expectEl(element).toHaveInlineStyle({ 'min-height': '30px' }, styler); + expectEl(element).not.toHaveInlineStyle({ 'min-width': '30px' }, styler); }); it('should work fxLayout parents default in column mode', () => { @@ -413,29 +408,29 @@ describe('flex directive', () => { let element = queryFor(fixture, '[fxFlex]')[0]; // parent flex-direction found with 'column' with child height styles - expectEl(parent).toHaveStyle( + expectEl(parent).toHaveInlineStyle( { 'flex-direction': 'column', display: 'flex' }, styler, ); if (platform.BLINK) { - expectEl(element).toHaveStyle( + expectEl(element).toHaveInlineStyle( { flex: '1 1 1e-09px', 'box-sizing': 'border-box', }, styler, ); - } else if (platform.FIREFOX || platform.WEBKIT || platform.IOS) { - expectEl(element).toHaveStyle( + } else if (platform.FIREFOX) { + expectEl(element).toHaveInlineStyle( { flex: '1 1 1e-9px', 'box-sizing': 'border-box', }, styler, ); - } else if (platform.EDGE) { - expectEl(element).toHaveStyle( + } else if (platform.EDGE || platform.WEBKIT || platform.IOS) { + expectEl(element).toHaveInlineStyle( { flex: '1 1 0px', 'box-sizing': 'border-box', @@ -443,7 +438,7 @@ describe('flex directive', () => { styler, ); } else { - expectEl(element).toHaveStyle( + expectEl(element).toHaveInlineStyle( { flex: '1 1 0.000000001px', 'box-sizing': 'border-box', @@ -474,8 +469,8 @@ describe('flex directive', () => { { 'flex-direction': 'column', display: 'flex' }, styler, ); - expectEl(element).toHaveStyle({ 'min-height': '30px' }, styler); - expectEl(element).not.toHaveStyle({ 'min-width': '30px' }, styler); + expectEl(element).toHaveInlineStyle({ 'min-height': '30px' }, styler); + expectEl(element).not.toHaveInlineStyle({ 'min-width': '30px' }, styler); } }); @@ -495,9 +490,9 @@ describe('flex directive', () => { // The parent flex-direction not found; // A flex-direction should have been auto-injected to the parent... // fallback to 'row' and set child width styles accordingly - expectEl(parent).toHaveStyle({ 'flex-direction': 'row' }, styler); - expectEl(element).toHaveStyle({ 'min-width': '40px' }, styler); - expectEl(element).not.toHaveStyle({ 'min-height': '40px' }, styler); + expectEl(parent).toHaveInlineStyle({ 'flex-direction': 'row' }, styler); + expectEl(element).toHaveInlineStyle({ 'min-width': '40px' }, styler); + expectEl(element).not.toHaveInlineStyle({ 'min-height': '40px' }, styler); })); it('should work with styled-parent flex directions', () => { @@ -513,8 +508,8 @@ describe('flex directive', () => { let parent = queryFor(fixture, '.parent')[0]; // parent flex-direction found with 'column'; set child with height styles - expectEl(element).toHaveStyle({ 'min-height': '60px' }, styler); - expectEl(parent).toHaveStyle({ 'flex-direction': 'column' }, styler); + expectEl(element).toHaveInlineStyle({ 'min-height': '60px' }, styler); + expectEl(parent).toHaveInlineStyle({ 'flex-direction': 'column' }, styler); }); it('should work with "1 1 auto" values', () => { @@ -530,11 +525,11 @@ describe('flex directive', () => { let nodes = queryFor(fixture, '[fxFlex]'); expect(nodes.length).toEqual(3); - expectEl(nodes[1]).not.toHaveStyle( + expectEl(nodes[1]).not.toHaveInlineStyle( { 'max-height': '*', 'min-height': '*' }, styler, ); - expectEl(nodes[1]).toHaveStyle( + expectEl(nodes[1]).toHaveInlineStyle( { flex: '1 1 auto', 'box-sizing': 'border-box', @@ -548,7 +543,7 @@ describe('flex directive', () => { // @see http://caniuse.com/#feat=calc for IE issues with calc() componentWithTemplate(`
`); if (platform.WEBKIT || platform.IOS) { - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'box-sizing': 'border-box', 'flex-grow': '1', @@ -559,7 +554,7 @@ describe('flex directive', () => { ); } else if (!(platform.FIREFOX || platform.EDGE)) { // needs fixing - // expectNativeEl(fixture).toHaveStyle( + // expectNativeEl(fixture).toHaveInlineStyle( // { // 'box-sizing': 'border-box', // 'flex-grow': '1', @@ -576,7 +571,7 @@ describe('flex directive', () => { componentWithTemplate('
'); if (!(platform.FIREFOX || platform.EDGE)) { fixture.detectChanges(); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'box-sizing': 'border-box', 'flex-grow': '1', @@ -590,7 +585,7 @@ describe('flex directive', () => { it('should work with "auto" values', () => { componentWithTemplate(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '1 1 auto', }, @@ -599,7 +594,7 @@ describe('flex directive', () => { }); it('should work with "nogrow" values', () => { componentWithTemplate(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '0 1 auto', }, @@ -608,7 +603,7 @@ describe('flex directive', () => { }); it('should work with "grow" values', () => { componentWithTemplate(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '1 1 100%', }, @@ -617,7 +612,7 @@ describe('flex directive', () => { }); it('should work with "initial" values', () => { componentWithTemplate(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '0 1 auto', }, @@ -626,7 +621,7 @@ describe('flex directive', () => { }); it('should work with "noshrink" values', () => { componentWithTemplate(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '1 0 auto', }, @@ -635,7 +630,7 @@ describe('flex directive', () => { }); it('should work with "none" values', () => { componentWithTemplate(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '0 0 auto', }, @@ -645,7 +640,7 @@ describe('flex directive', () => { it('should work with full-spec values', () => { componentWithTemplate(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '1 2 0.9em', }, @@ -654,7 +649,7 @@ describe('flex directive', () => { }); it('should set a min-width when the shrink == 0', () => { componentWithTemplate(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '1 0 37px', 'min-width': '37px', @@ -665,7 +660,7 @@ describe('flex directive', () => { }); it('should set a min-width and max-width when the grow == 0 and shrink == 0', () => { componentWithTemplate(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '0 0 375px', 'max-width': '375px', @@ -678,7 +673,7 @@ describe('flex directive', () => { it('should not set max-width to 69px when fxFlex="1 0 69px"', () => { componentWithTemplate(`
`); - expectNativeEl(fixture).not.toHaveStyle( + expectNativeEl(fixture).not.toHaveInlineStyle( { 'max-width': '69px', }, @@ -690,12 +685,12 @@ describe('flex directive', () => { componentWithTemplate(`
`); fixture.detectChanges(); let dom = fixture.debugElement.children[0]; - expectEl(dom).not.toHaveStyle({ 'max-width': '*' }, styler); + expectEl(dom).not.toHaveInlineStyle({ 'max-width': '*' }, styler); }); it('should not set min-width to 96px when fxFlex="0 1 96px"', () => { componentWithTemplate(`
`); - expectNativeEl(fixture).not.toHaveStyle( + expectNativeEl(fixture).not.toHaveInlineStyle( { 'min-width': '96px', }, @@ -707,12 +702,12 @@ describe('flex directive', () => { componentWithTemplate(`
`); fixture.detectChanges(); let dom = fixture.debugElement.children[0]; - expectEl(dom).not.toHaveStyle({ 'min-width': '*' }, styler); + expectEl(dom).not.toHaveInlineStyle({ 'min-width': '*' }, styler); }); it('should set a min-width when basis is a Px value', () => { componentWithTemplate(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '1 1 312px', 'max-width': '312px', @@ -724,7 +719,7 @@ describe('flex directive', () => { it('should set a min-width and max-width when basis is a rem value', () => { componentWithTemplate(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '1 1 12rem', 'max-width': '12rem', @@ -740,7 +735,7 @@ describe('flex directive', () => {
`); - expectNativeEl(fixture).not.toHaveStyle( + expectNativeEl(fixture).not.toHaveInlineStyle( { 'flex-direction': 'row', flex: '1 1 37%', @@ -759,7 +754,7 @@ describe('flex directive', () => { componentWithTemplate(template); fixture.detectChanges(); - expectEl(queryFor(fixture, '[fxFlex]')[0]).toHaveStyle( + expectEl(queryFor(fixture, '[fxFlex]')[0]).toHaveInlineStyle( { flex: '1 1 100%', 'max-height': '37%', @@ -770,7 +765,7 @@ describe('flex directive', () => { it('should set max-width for `fxFlex="<%val>"`', () => { componentWithTemplate(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '1 1 100%', 'max-width': '37%', @@ -781,7 +776,7 @@ describe('flex directive', () => { it('should set max-width for `fxFlex="2%"` usage', () => { componentWithTemplate(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '1 1 100%', 'max-width': '2%', @@ -805,7 +800,7 @@ describe('flex directive', () => { fixture.detectChanges(); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '1 1 25px', 'max-width': '25px', @@ -816,7 +811,7 @@ describe('flex directive', () => { mediaController.activate('xl', true); fixture.detectChanges(); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '1 1 25px', 'max-width': '25px', @@ -827,7 +822,7 @@ describe('flex directive', () => { mediaController.activate('md', true); fixture.detectChanges(); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '1 1 100%', 'max-width': '50%', @@ -838,7 +833,7 @@ describe('flex directive', () => { mediaController.activate('xs', true); fixture.detectChanges(); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '1 1 100%', 'max-width': '33%', @@ -858,7 +853,7 @@ describe('flex directive', () => { mediaController.activate('xl', true); fixture.detectChanges(); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '1 1 100%', 'max-width': '50%', @@ -869,7 +864,7 @@ describe('flex directive', () => { mediaController.activate('sm', true); fixture.detectChanges(); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { flex: '1 1 100%', 'max-width': '33%', @@ -893,23 +888,23 @@ describe('flex directive', () => { let nodes = queryFor(fixture, '[fxFlex]'); expect(nodes.length).toEqual(3); - expectEl(nodes[0]).toHaveStyle({ flex: '1 1 auto' }, styler); - expectEl(nodes[1]).toHaveStyle({ flex: '1 1 auto' }, styler); - expectEl(nodes[2]).toHaveStyle({ flex: '1 1 auto' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ flex: '1 1 auto' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ flex: '1 1 auto' }, styler); + expectEl(nodes[2]).toHaveInlineStyle({ flex: '1 1 auto' }, styler); mediaController.activate('xl'); fixture.detectChanges(); nodes = queryFor(fixture, '[fxFlex]'); - expectEl(nodes[0]).toHaveStyle( + expectEl(nodes[0]).toHaveInlineStyle( { flex: '1 1 100%', 'max-height': '50%' }, styler, ); - expectEl(nodes[1]).toHaveStyle( + expectEl(nodes[1]).toHaveInlineStyle( { flex: '1 1 100%', 'max-height': '24.4%' }, styler, ); - expectEl(nodes[2]).toHaveStyle( + expectEl(nodes[2]).toHaveInlineStyle( { flex: '1 1 100%', 'max-height': '25.6%' }, styler, ); @@ -919,16 +914,16 @@ describe('flex directive', () => { nodes = queryFor(fixture, '[fxFlex]'); expect(nodes.length).toEqual(3); - expectEl(nodes[0]).toHaveStyle({ flex: '1 1 auto' }, styler); - expectEl(nodes[1]).toHaveStyle({ flex: '1 1 auto' }, styler); - expectEl(nodes[2]).toHaveStyle({ flex: '1 1 auto' }, styler); - - expectEl(nodes[0]).not.toHaveStyle({ 'max-height': '50%' }, styler); - expectEl(nodes[1]).not.toHaveStyle({ 'max-height': '24.4%' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'max-height': '25.6%' }, styler); - expectEl(nodes[0]).not.toHaveStyle({ 'max-height': '*' }, styler); - expectEl(nodes[1]).not.toHaveStyle({ 'max-height': '*' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'max-height': '*' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ flex: '1 1 auto' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ flex: '1 1 auto' }, styler); + expectEl(nodes[2]).toHaveInlineStyle({ flex: '1 1 auto' }, styler); + + expectEl(nodes[0]).not.toHaveInlineStyle({ 'max-height': '50%' }, styler); + expectEl(nodes[1]).not.toHaveInlineStyle({ 'max-height': '24.4%' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'max-height': '25.6%' }, styler); + expectEl(nodes[0]).not.toHaveInlineStyle({ 'max-height': '*' }, styler); + expectEl(nodes[1]).not.toHaveInlineStyle({ 'max-height': '*' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'max-height': '*' }, styler); }); it('should fallback to the default layout from gt-md selectors', () => { @@ -945,31 +940,31 @@ describe('flex directive', () => { let nodes = queryFor(fixture, '[fxFlex]'); expect(nodes.length).toEqual(3); - expectEl(nodes[0]).toHaveStyle({ flex: '1 1 auto' }, styler); - expectEl(nodes[1]).toHaveStyle({ flex: '1 1 auto' }, styler); - expectEl(nodes[2]).toHaveStyle({ flex: '1 1 auto' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ flex: '1 1 auto' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ flex: '1 1 auto' }, styler); + expectEl(nodes[2]).toHaveInlineStyle({ flex: '1 1 auto' }, styler); mediaController.activate('sm'); fixture.detectChanges(); nodes = queryFor(fixture, '[fxFlex]'); - expectEl(nodes[0]).toHaveStyle({ flex: '1 1 auto' }, styler); - expectEl(nodes[1]).toHaveStyle({ flex: '1 1 auto' }, styler); - expectEl(nodes[2]).toHaveStyle({ flex: '1 1 auto' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ flex: '1 1 auto' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ flex: '1 1 auto' }, styler); + expectEl(nodes[2]).toHaveInlineStyle({ flex: '1 1 auto' }, styler); mediaController.activate('lg', true); fixture.detectChanges(); nodes = queryFor(fixture, '[fxFlex]'); - expectEl(nodes[0]).toHaveStyle( + expectEl(nodes[0]).toHaveInlineStyle( { flex: '1 1 100%', 'max-height': '50%' }, styler, ); - expectEl(nodes[1]).toHaveStyle( + expectEl(nodes[1]).toHaveInlineStyle( { flex: '1 1 100%', 'max-height': '24.4%' }, styler, ); - expectEl(nodes[2]).toHaveStyle( + expectEl(nodes[2]).toHaveInlineStyle( { flex: '1 1 100%', 'max-height': '25.6%' }, styler, ); @@ -987,13 +982,13 @@ describe('flex directive', () => { let nodes = queryFor(fixture, '[fxFlex]'); expect(nodes.length).toEqual(1); - expectEl(nodes[0]).toHaveStyle({ flex: '1 1 auto' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ flex: '1 1 auto' }, styler); mediaController.activate('sm', true); fixture.detectChanges(); nodes = queryFor(fixture, '[fxFlex]'); - expectEl(nodes[0]).toHaveStyle( + expectEl(nodes[0]).toHaveInlineStyle( { flex: '1 1 100%', 'max-height': '50%', @@ -1005,7 +1000,7 @@ describe('flex directive', () => { fixture.detectChanges(); nodes = queryFor(fixture, '[fxFlex]'); - expectEl(nodes[0]).toHaveStyle({ flex: '1 1 auto' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ flex: '1 1 auto' }, styler); }); }); @@ -1038,7 +1033,7 @@ describe('flex directive', () => { expect(layout).toBeDefined(); expect(layout.activatedValue).toBe(''); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'row', }, @@ -1047,7 +1042,7 @@ describe('flex directive', () => { layout.activatedValue = 'column'; expect(layout.activatedValue).toBe('column'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'column', }, @@ -1068,7 +1063,7 @@ describe('flex directive', () => { let nodes = queryFor(fixture, '[fxFlex]'); expect(nodes.length).toEqual(1); - expectEl(nodes[0]).toHaveStyle({ 'max-width': '50%' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'max-width': '50%' }, styler); // Test for raw value assignments that are converted to percentages flex.activatedValue = '35'; @@ -1076,7 +1071,7 @@ describe('flex directive', () => { nodes = queryFor(fixture, '[fxFlex]'); expect(nodes.length).toEqual(1); - expectEl(nodes[0]).toHaveStyle({ 'max-width': '35%' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'max-width': '35%' }, styler); // Test for pixel value assignments flex.activatedValue = '27.5px'; @@ -1084,7 +1079,7 @@ describe('flex directive', () => { nodes = queryFor(fixture, '[fxFlex]'); expect(nodes.length).toEqual(1); - expectEl(nodes[0]).toHaveStyle({ 'max-width': '27.5px' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'max-width': '27.5px' }, styler); }); it('should restore `fxFlex` value after breakpoint activations', () => { @@ -1101,7 +1096,7 @@ describe('flex directive', () => { let nodes = queryFor(fixture, '[fxFlex]'); expect(nodes.length).toEqual(1); - expectEl(nodes[0]).toHaveStyle({ 'max-width': '35%' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'max-width': '35%' }, styler); mediaController.activate('sm'); fixture.detectChanges(); @@ -1109,7 +1104,7 @@ describe('flex directive', () => { // Test for breakpoint value changes expect(flex.activatedValue).toBe('71%'); nodes = queryFor(fixture, '[fxFlex]'); - expectEl(nodes[0]).toHaveStyle({ 'max-width': '71%' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'max-width': '71%' }, styler); mediaController.activate('lg'); fixture.detectChanges(); @@ -1117,7 +1112,7 @@ describe('flex directive', () => { // Confirm activatedValue was restored properly when `sm` deactivated expect(flex.activatedValue).toBe('35'); nodes = queryFor(fixture, '[fxFlex]'); - expectEl(nodes[0]).toHaveStyle({ 'max-width': '35%' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'max-width': '35%' }, styler); }); }); @@ -1156,9 +1151,9 @@ describe('flex directive', () => { // The parent flex-direction not found; // A flex-direction should have been auto-injected to the parent... // fallback to 'row' and set child width styles accordingly - expectEl(parent).toHaveStyle({ 'flex-direction': 'row' }, styler); - expectEl(element).toHaveStyle({ 'min-width': '40px' }, styler); - expectEl(element).not.toHaveStyle({ 'min-height': '40px' }, styler); + expectEl(parent).toHaveInlineStyle({ 'flex-direction': 'row' }, styler); + expectEl(element).toHaveInlineStyle({ 'min-width': '40px' }, styler); + expectEl(element).not.toHaveInlineStyle({ 'min-height': '40px' }, styler); })); }); @@ -1197,11 +1192,11 @@ describe('flex directive', () => { // The parent flex-direction not found; // A flex-direction should have been auto-injected to the parent... // fallback to 'row' and set child width styles accordingly - expect(parent.nativeElement.getAttribute('style')).not.toContain( + expect(parent.nativeElement.getAttribute('style') ?? '').not.toContain( '-webkit-flex-direction', ); - expectEl(element).toHaveStyle({ 'min-width': '40px' }, styler); - expectEl(element).not.toHaveStyle({ 'min-height': '40px' }, styler); + expectEl(element).toHaveInlineStyle({ 'min-width': '40px' }, styler); + expectEl(element).not.toHaveInlineStyle({ 'min-height': '40px' }, styler); })); }); @@ -1239,7 +1234,7 @@ describe('flex directive', () => { styleBuilder.shouldCache = false; fixture.detectChanges(); let element = queryFor(fixture, '[fxFlex]')[0]; - expectEl(element).toHaveStyle({ flex: '1 1 auto' }, styler); + expectEl(element).toHaveInlineStyle({ flex: '1 1 auto' }, styler); }); }); @@ -1277,7 +1272,7 @@ describe('flex directive', () => { `); fixture.detectChanges(); let element = queryFor(fixture, '[fxFlex]')[0]; - expectEl(element).toHaveStyle({ flex: '1 1 30%' }, styler); + expectEl(element).toHaveInlineStyle({ flex: '1 1 30%' }, styler); })); }); }); diff --git a/projects/libs/flex-layout/flex/layout-align/layout-align.spec.ts b/projects/libs/flex-layout/flex/layout-align/layout-align.spec.ts index 69738cf0..8d8e083f 100644 --- a/projects/libs/flex-layout/flex/layout-align/layout-align.spec.ts +++ b/projects/libs/flex-layout/flex/layout-align/layout-align.spec.ts @@ -12,7 +12,6 @@ import { ComponentFixture, inject, TestBed } from '@angular/core/testing'; import { FlexLayoutModule } from '@ngbracket/ngx-layout'; import { extendObject } from '@ngbracket/ngx-layout/_private-utils'; import { - customMatchers, expectNativeEl, makeCreateTestComponent, } from '@ngbracket/ngx-layout/_private-utils/testing'; @@ -24,10 +23,8 @@ import { StyleBuilder, StyleUtils, } from '@ngbracket/ngx-layout/core'; -import { - FlexModule, - LayoutAlignStyleBuilder, -} from '@ngbracket/ngx-layout/flex'; +import { FlexModule } from '../module'; +import { LayoutAlignStyleBuilder } from './layout-align'; describe('layout-align directive', () => { let fixture: ComponentFixture; @@ -52,7 +49,7 @@ describe('layout-align directive', () => { }; beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -68,7 +65,7 @@ describe('layout-align directive', () => { describe('with static features', () => { it('should add work without a peer `fxLayout` directive', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'flex', 'flex-direction': 'row', @@ -79,7 +76,7 @@ describe('layout-align directive', () => { }); it('should add correct styles for default `fxLayoutAlign` usage', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'flex-start', 'align-items': 'stretch', @@ -90,7 +87,7 @@ describe('layout-align directive', () => { }); it('should add preserve fxLayout', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'flex', 'flex-direction': 'column', @@ -104,7 +101,7 @@ describe('layout-align directive', () => { }); it('should add preserve fxLayout in inline mode', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'inline-flex', 'flex-direction': 'column', @@ -120,28 +117,28 @@ describe('layout-align directive', () => { describe('for "main-axis" testing', () => { it('should add correct styles for `fxLayoutAlign="start"` usage', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'justify-content': 'flex-start' }, CROSSAXIS_DEFAULTS), styler, ); }); it('should add correct styles for `fxLayoutAlign="flex-start"` usage', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'justify-content': 'flex-start' }, CROSSAXIS_DEFAULTS), styler, ); }); it('should add correct styles for `fxLayoutAlign="center"` usage', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'justify-content': 'center' }, CROSSAXIS_DEFAULTS), styler, ); }); it('should add correct styles for `fxLayoutAlign="space-around"` usage', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject( { 'justify-content': 'space-around' }, CROSSAXIS_DEFAULTS, @@ -154,7 +151,7 @@ describe('layout-align directive', () => { // Safari does not appear to support this property if (platform.SAFARI) { - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject( { 'justify-content': 'space-evenly' }, CROSSAXIS_DEFAULTS, @@ -165,7 +162,7 @@ describe('layout-align directive', () => { }); it('should add correct styles for `fxLayoutAlign="space-between"` usage', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject( { 'justify-content': 'space-between' }, CROSSAXIS_DEFAULTS, @@ -175,21 +172,21 @@ describe('layout-align directive', () => { }); it('should add correct styles for `fxLayoutAlign="end"` usage', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'justify-content': 'flex-end' }, CROSSAXIS_DEFAULTS), styler, ); }); it('should add correct styles for `fxLayoutAlign="flex-end"` usage', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'justify-content': 'flex-end' }, CROSSAXIS_DEFAULTS), styler, ); }); it('should add ignore invalid main-axis values', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'justify-content': 'flex-start' }, CROSSAXIS_DEFAULTS), styler, ); @@ -199,7 +196,7 @@ describe('layout-align directive', () => { describe('for "cross-axis" testing', () => { it('should add correct styles for `fxLayoutAlign="start start"` usage', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject(MAINAXIS_DEFAULTS, { 'align-items': 'flex-start', 'align-content': 'flex-start', @@ -209,7 +206,7 @@ describe('layout-align directive', () => { }); it('should add correct styles for `fxLayoutAlign="start center"` usage', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject(MAINAXIS_DEFAULTS, { 'align-items': 'center', 'align-content': 'center', @@ -219,7 +216,7 @@ describe('layout-align directive', () => { }); it('should add correct styles for `fxLayoutAlign="start end"` usage', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject(MAINAXIS_DEFAULTS, { 'align-items': 'flex-end', 'align-content': 'flex-end', @@ -229,7 +226,7 @@ describe('layout-align directive', () => { }); it('should add correct styles for `fxLayoutAlign="start space-between"` usage', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject(MAINAXIS_DEFAULTS, { 'align-items': 'stretch', 'align-content': 'space-between', @@ -239,7 +236,7 @@ describe('layout-align directive', () => { }); it('should add correct styles for `fxLayoutAlign="start space-around"` usage', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject(MAINAXIS_DEFAULTS, { 'align-items': 'stretch', 'align-content': 'space-around', @@ -249,7 +246,7 @@ describe('layout-align directive', () => { }); it('should add correct styles for `fxLayoutAlign="start baseline"` usage', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'flex-start', 'align-items': 'baseline', @@ -260,7 +257,7 @@ describe('layout-align directive', () => { }); it('should add ignore invalid cross-axis values', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject(MAINAXIS_DEFAULTS, { 'align-items': 'stretch', 'align-content': 'stretch', @@ -270,7 +267,7 @@ describe('layout-align directive', () => { }); it('should add special styles for cross-axis `stretch`', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'max-height': '100%', }, @@ -284,7 +281,7 @@ describe('layout-align directive', () => { `); - expectNativeEl(fixture).not.toHaveStyle( + expectNativeEl(fixture).not.toHaveInlineStyle( { 'max-height': '100%', }, @@ -295,7 +292,7 @@ describe('layout-align directive', () => { createTestComponent( `
`, ); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'max-width': '100%', }, @@ -309,7 +306,7 @@ describe('layout-align directive', () => { createTestComponent(`
`); fixture.componentInstance.alignBy = 'center end'; - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'center', 'align-items': 'flex-end', @@ -319,10 +316,10 @@ describe('layout-align directive', () => { ); fixture.componentInstance.alignBy = 'invalid invalid'; - expectNativeEl(fixture).toHaveStyle(DEFAULT_ALIGNS, styler); + expectNativeEl(fixture).toHaveInlineStyle(DEFAULT_ALIGNS, styler); fixture.componentInstance.alignBy = ''; - expectNativeEl(fixture).toHaveStyle(DEFAULT_ALIGNS, styler); + expectNativeEl(fixture).toHaveInlineStyle(DEFAULT_ALIGNS, styler); }); }); }); @@ -333,7 +330,7 @@ describe('layout-align directive', () => { mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'center', 'align-items': 'center', @@ -348,7 +345,7 @@ describe('layout-align directive', () => {
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'center', 'align-items': 'center', @@ -359,7 +356,7 @@ describe('layout-align directive', () => { mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'flex-end', 'align-items': 'stretch', @@ -374,7 +371,7 @@ describe('layout-align directive', () => {
`); - expectNativeEl(fixture).not.toHaveStyle( + expectNativeEl(fixture).not.toHaveInlineStyle( { 'max-width': '25%', }, @@ -383,7 +380,7 @@ describe('layout-align directive', () => { mediaController.activate('md', true); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'max-width': '25%', }, @@ -392,7 +389,7 @@ describe('layout-align directive', () => { mediaController.activate('sm', true); - expectNativeEl(fixture).not.toHaveStyle( + expectNativeEl(fixture).not.toHaveInlineStyle( { 'max-width': '25%', }, @@ -409,7 +406,7 @@ describe('layout-align directive', () => { `); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'center', 'max-height': '100%', @@ -419,7 +416,7 @@ describe('layout-align directive', () => { mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'flex-end', 'max-width': '100%', @@ -436,7 +433,7 @@ describe('layout-align directive', () => { `); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'max-height': '100%', }, @@ -445,7 +442,7 @@ describe('layout-align directive', () => { mediaController.activate('md'); - expectNativeEl(fixture).not.toHaveStyle( + expectNativeEl(fixture).not.toHaveInlineStyle( { 'max-height': '100%', }, @@ -463,7 +460,7 @@ describe('layout-align directive', () => { `); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'center', 'max-height': '100%', @@ -473,7 +470,7 @@ describe('layout-align directive', () => { mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'flex-end', 'max-width': '100%', @@ -483,7 +480,7 @@ describe('layout-align directive', () => { mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'center', 'max-height': '100%', @@ -500,7 +497,7 @@ describe('layout-align directive', () => { `); mediaController.activate('lt-md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'center', 'align-items': 'center', @@ -510,7 +507,7 @@ describe('layout-align directive', () => { ); mediaController.activate('md'); - expectNativeEl(fixture).not.toHaveStyle( + expectNativeEl(fixture).not.toHaveInlineStyle( { 'justify-content': 'center', 'align-items': 'center', @@ -520,7 +517,7 @@ describe('layout-align directive', () => { ); mediaController.activate('lt-md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'center', 'align-items': 'center', @@ -543,7 +540,7 @@ describe('layout-align directive', () => { mediaController.useOverlaps = true; - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'row', 'justify-content': 'flex-start', @@ -552,7 +549,7 @@ describe('layout-align directive', () => { ); mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'column', 'justify-content': 'center', @@ -561,7 +558,7 @@ describe('layout-align directive', () => { ); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'row', 'justify-content': 'flex-start', @@ -571,7 +568,7 @@ describe('layout-align directive', () => { // Should fallback to value for 'gt-xs' or default mediaController.activate('lg', true); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'row', 'justify-content': 'flex-end', @@ -580,7 +577,7 @@ describe('layout-align directive', () => { ); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'row', 'justify-content': 'flex-start', @@ -590,7 +587,7 @@ describe('layout-align directive', () => { // Should fallback to value for 'gt-xs' or default mediaController.activate('xl', true); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'row', 'justify-content': 'flex-end', @@ -602,7 +599,7 @@ describe('layout-align directive', () => { describe('with custom builder', () => { beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -630,7 +627,7 @@ describe('layout-align directive', () => {
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'flex-end' }, styler, ); @@ -638,7 +635,7 @@ describe('layout-align directive', () => { }); }); -@Injectable({ providedIn: FlexModule }) +@Injectable() export class MockLayoutAlignStyleBuilder extends StyleBuilder { override shouldCache = false; diff --git a/projects/libs/flex-layout/flex/layout-gap/layout-gap.spec.ts b/projects/libs/flex-layout/flex/layout-gap/layout-gap.spec.ts index 3ee6b82c..16bfbcc2 100644 --- a/projects/libs/flex-layout/flex/layout-gap/layout-gap.spec.ts +++ b/projects/libs/flex-layout/flex/layout-gap/layout-gap.spec.ts @@ -1,3 +1,4 @@ +import { isPlatformBrowser } from '@angular/common'; /** * @license * Copyright Google LLC All Rights Reserved. @@ -23,15 +24,14 @@ import { ɵMockMatchMedia as MockMatchMedia, ɵMockMatchMediaProvider as MockMatchMediaProvider, } from '@ngbracket/ngx-layout/core'; -import { FlexModule, LayoutGapStyleBuilder } from '@ngbracket/ngx-layout/flex'; import { - customMatchers, - expect, expectEl, expectNativeEl, makeCreateTestComponent, queryFor, } from '@ngbracket/ngx-layout/_private-utils/testing'; +import { FlexModule } from '../module'; +import { LayoutGapStyleBuilder } from './layout-gap'; describe('layout-gap directive', () => { let fixture: ComponentFixture; @@ -62,7 +62,7 @@ describe('layout-gap directive', () => { }; beforeEach(() => { - jasmine.addMatchers(customMatchers); + fakeDocument = { body: {}, documentElement: {} }; // Configure testbed to prepare services @@ -100,8 +100,8 @@ describe('layout-gap directive', () => { const nodes = queryFor(fixture, 'span'); const styles = { [marginKey]: margin }; - expectEl(nodes[0]).toHaveStyle(styles, styler); - expectEl(nodes[1]).not.toHaveStyle(styles, styler); + expectEl(nodes[0]).toHaveInlineStyle(styles, styler); + expectEl(nodes[1]).not.toHaveInlineStyle(styles, styler); } describe('with static features', () => { @@ -112,7 +112,7 @@ describe('layout-gap directive', () => { `; createTestComponent(template); - expectEl(queryFor(fixture, '[fxFlex]')[0]).not.toHaveStyle( + expectEl(queryFor(fixture, '[fxFlex]')[0]).not.toHaveInlineStyle( { 'margin-right': '13px;' }, styler, ); @@ -131,10 +131,10 @@ describe('layout-gap directive', () => { let nodes = queryFor(fixture, '[fxFlex]'); expect(nodes.length).toEqual(3); - expectEl(nodes[0]).toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[1]).toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-right': '0px' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-right': '0px' }, styler); }); it('should add gap styles to all children except the 1st child w/ multiplier', () => { @@ -150,10 +150,10 @@ describe('layout-gap directive', () => { let nodes = queryFor(fixture, '[fxFlex]'); expect(nodes.length).toEqual(3); - expectEl(nodes[0]).toHaveStyle({ 'margin-right': '52px' }, styler); - expectEl(nodes[1]).toHaveStyle({ 'margin-right': '52px' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-right': '52px' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-right': '0px' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'margin-right': '52px' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ 'margin-right': '52px' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-right': '52px' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-right': '0px' }, styler); }); it('should add gap styles to all children except the 1st child w/o unit', () => { @@ -169,10 +169,10 @@ describe('layout-gap directive', () => { let nodes = queryFor(fixture, '[fxFlex]'); expect(nodes.length).toEqual(3); - expectEl(nodes[0]).toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[1]).toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-right': '0px' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-right': '0px' }, styler); }); it('should add gap styles in proper order when order style is applied', () => { @@ -188,10 +188,10 @@ describe('layout-gap directive', () => { let nodes = queryFor(fixture, '[fxFlex]'); expect(nodes.length).toEqual(3); - expectEl(nodes[2]).toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[1]).toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[0]).not.toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[0]).not.toHaveStyle({ 'margin-right': '0px' }, styler); + expectEl(nodes[2]).toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[0]).not.toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[0]).not.toHaveInlineStyle({ 'margin-right': '0px' }, styler); }); it('should add gap styles to dynamics rows EXCEPT first', () => { @@ -206,11 +206,11 @@ describe('layout-gap directive', () => { let nodes = queryFor(fixture, '[fxFlex]'); expect(nodes.length).toEqual(4); - expectEl(nodes[0]).toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[1]).toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[2]).toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[3]).not.toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[3]).not.toHaveStyle({ 'margin-right': '0px' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[2]).toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[3]).not.toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[3]).not.toHaveInlineStyle({ 'margin-right': '0px' }, styler); }); it('should add update gap styles when row items are removed', waitForAsync(() => { @@ -236,10 +236,10 @@ describe('layout-gap directive', () => { nodes = queryFor(fixture, '[fxFlex]'); expect(nodes.length).toEqual(3); - if (typeof MutationObserver !== 'undefined') { - expectEl(nodes[0]).toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[1]).toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[2]).not.toHaveStyle( + if (isPlatformBrowser(platformId) && typeof MutationObserver !== 'undefined') { + expectEl(nodes[0]).toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle( { 'margin-right': '13px' }, styler, ); @@ -260,8 +260,8 @@ describe('layout-gap directive', () => { let nodes = queryFor(fixture, '[fxFlex]'); expect(nodes.length).toEqual(4); - expectEl(nodes[0]).toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[3]).not.toHaveStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[3]).not.toHaveInlineStyle({ 'margin-right': '13px' }, styler); fixture.componentInstance.rows = new Array(1); fixture.detectChanges(); @@ -273,8 +273,8 @@ describe('layout-gap directive', () => { nodes = queryFor(fixture, '[fxFlex]'); expect(nodes.length).toEqual(1); - if (typeof MutationObserver !== 'undefined') { - expectEl(nodes[0]).not.toHaveStyle( + if (isPlatformBrowser(platformId) && typeof MutationObserver !== 'undefined') { + expectEl(nodes[0]).not.toHaveInlineStyle( { 'margin-right': '13px' }, styler, ); @@ -309,24 +309,24 @@ describe('layout-gap directive', () => { fixture.detectChanges(); let nodes = queryFor(fixture, 'span'); - expectEl(nodes[0]).not.toHaveStyle({ 'margin-right': '8px' }, styler); - expectEl(nodes[0]).toHaveStyle({ 'margin-bottom': '8px' }, styler); + expectEl(nodes[0]).not.toHaveInlineStyle({ 'margin-right': '8px' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'margin-bottom': '8px' }, styler); // layout = column-reverse, use margin-bottom instance.direction = 'column-reverse'; fixture.detectChanges(); nodes = queryFor(fixture, 'span'); - expectEl(nodes[0]).not.toHaveStyle({ 'margin-right': '8px' }, styler); - expectEl(nodes[0]).toHaveStyle({ 'margin-top': '8px' }, styler); + expectEl(nodes[0]).not.toHaveInlineStyle({ 'margin-right': '8px' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'margin-top': '8px' }, styler); // layout = row-reverse, use margin-right instance.direction = 'row-reverse'; fixture.detectChanges(); nodes = queryFor(fixture, 'span'); - expectEl(nodes[0]).not.toHaveStyle({ 'margin-bottom': '8px' }, styler); - expectEl(nodes[0]).toHaveStyle({ 'margin-left': '8px' }, styler); + expectEl(nodes[0]).not.toHaveInlineStyle({ 'margin-bottom': '8px' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'margin-left': '8px' }, styler); }); it('should recognize hidden elements when applying gaps', () => { @@ -347,10 +347,10 @@ describe('layout-gap directive', () => { expect(nodes.length).toEqual(3); // TODO(CaerusKaru): Domino is unable to detect this style if (!isPlatformServer(platformId)) { - expectEl(nodes[0]).not.toHaveStyle({ 'margin-right': '0px' }, styler); - expectEl(nodes[0]).not.toHaveStyle({ 'margin-right': '16px' }, styler); - expectEl(nodes[1]).toHaveStyle({ 'margin-right': '16px' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-right': '16px' }, styler); + expectEl(nodes[0]).not.toHaveInlineStyle({ 'margin-right': '0px' }, styler); + expectEl(nodes[0]).not.toHaveInlineStyle({ 'margin-right': '16px' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ 'margin-right': '16px' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-right': '16px' }, styler); } }); @@ -376,10 +376,10 @@ describe('layout-gap directive', () => { expect(nodes.length).toEqual(4); // TODO(CaerusKaru): Domino is unable to detect this style if (!isPlatformServer(platformId)) { - expectEl(nodes[0]).not.toHaveStyle({ 'margin-right': '16px' }, styler); - expectEl(nodes[1]).toHaveStyle({ 'margin-right': '16px' }, styler); - expectEl(nodes[2]).toHaveStyle({ 'margin-right': '16px' }, styler); - expectEl(nodes[3]).not.toHaveStyle({ 'margin-right': '16px' }, styler); + expectEl(nodes[0]).not.toHaveInlineStyle({ 'margin-right': '16px' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ 'margin-right': '16px' }, styler); + expectEl(nodes[2]).toHaveInlineStyle({ 'margin-right': '16px' }, styler); + expectEl(nodes[3]).not.toHaveInlineStyle({ 'margin-right': '16px' }, styler); } fixture.componentInstance.gap = '8px'; @@ -391,10 +391,10 @@ describe('layout-gap directive', () => { expect(nodes.length).toEqual(4); // TODO(CaerusKaru): Domino is unable to detect this style if (!isPlatformServer(platformId)) { - expectEl(nodes[0]).not.toHaveStyle({ 'margin-bottom': '8px' }, styler); - expectEl(nodes[1]).toHaveStyle({ 'margin-bottom': '8px' }, styler); - expectEl(nodes[2]).toHaveStyle({ 'margin-bottom': '8px' }, styler); - expectEl(nodes[3]).not.toHaveStyle({ 'margin-bottom': '8px' }, styler); + expectEl(nodes[0]).not.toHaveInlineStyle({ 'margin-bottom': '8px' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ 'margin-bottom': '8px' }, styler); + expectEl(nodes[2]).toHaveInlineStyle({ 'margin-bottom': '8px' }, styler); + expectEl(nodes[3]).not.toHaveInlineStyle({ 'margin-bottom': '8px' }, styler); } }); }); @@ -413,17 +413,17 @@ describe('layout-gap directive', () => { let nodes = queryFor(fixture, '[fxFlex]'); expect(nodes.length).toEqual(3); - expectEl(nodes[0]).toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[1]).toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-right': '0px' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-right': '0px' }, styler); mediaController.activate('md'); fixture.detectChanges(); - expectEl(nodes[0]).toHaveStyle({ 'margin-right': '24px' }, styler); - expectEl(nodes[1]).toHaveStyle({ 'margin-right': '24px' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-right': '24px' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-right': '0px' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'margin-right': '24px' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ 'margin-right': '24px' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-right': '24px' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-right': '0px' }, styler); }); it('should set gap without fallback', () => { @@ -440,21 +440,21 @@ describe('layout-gap directive', () => { let nodes = queryFor(fixture, '[fxFlex]'); expect(nodes.length).toEqual(3); mediaController.activate('sm'); - expectEl(nodes[0]).not.toHaveStyle({ 'margin-right': '*' }, styler); - expectEl(nodes[1]).not.toHaveStyle({ 'margin-right': '*' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-right': '*' }, styler); + expectEl(nodes[0]).not.toHaveInlineStyle({ 'margin-right': '*' }, styler); + expectEl(nodes[1]).not.toHaveInlineStyle({ 'margin-right': '*' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-right': '*' }, styler); mediaController.activate('md'); fixture.detectChanges(); - expectEl(nodes[0]).toHaveStyle({ 'margin-right': '24px' }, styler); - expectEl(nodes[1]).toHaveStyle({ 'margin-right': '24px' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-right': '24px' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-right': '0px' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'margin-right': '24px' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ 'margin-right': '24px' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-right': '24px' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-right': '0px' }, styler); mediaController.activate('sm'); - expectEl(nodes[0]).not.toHaveStyle({ 'margin-right': '*' }, styler); - expectEl(nodes[1]).not.toHaveStyle({ 'margin-right': '*' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-right': '*' }, styler); + expectEl(nodes[0]).not.toHaveInlineStyle({ 'margin-right': '*' }, styler); + expectEl(nodes[1]).not.toHaveInlineStyle({ 'margin-right': '*' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-right': '*' }, styler); }); it('should set gap with responsive layout change', () => { @@ -470,15 +470,15 @@ describe('layout-gap directive', () => { let nodes = queryFor(fixture, '[fxFlex]'); expect(nodes.length).toEqual(3); - expectEl(nodes[0]).toHaveStyle({ 'margin-right': '24px' }, styler); - expectEl(nodes[1]).toHaveStyle({ 'margin-right': '24px' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-right': '*' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'margin-right': '24px' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ 'margin-right': '24px' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-right': '*' }, styler); mediaController.activate('xs'); fixture.detectChanges(); - expectEl(nodes[0]).toHaveStyle({ 'margin-bottom': '24px' }, styler); - expectEl(nodes[1]).toHaveStyle({ 'margin-bottom': '24px' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-bottom': '*' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'margin-bottom': '24px' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ 'margin-bottom': '24px' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-bottom': '*' }, styler); }); it('should remove gaps with responsive layout change', () => { @@ -494,22 +494,22 @@ describe('layout-gap directive', () => { mediaController.activate('md'); fixture.detectChanges(); - expectEl(nodes[0]).not.toHaveStyle({ 'margin-bottom': '24px' }, styler); - expectEl(nodes[1]).not.toHaveStyle({ 'margin-bottom': '24px' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-bottom': '*' }, styler); + expectEl(nodes[0]).not.toHaveInlineStyle({ 'margin-bottom': '24px' }, styler); + expectEl(nodes[1]).not.toHaveInlineStyle({ 'margin-bottom': '24px' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-bottom': '*' }, styler); mediaController.activate('xs'); fixture.detectChanges(); expect(nodes.length).toEqual(3); - expectEl(nodes[0]).toHaveStyle({ 'margin-bottom': '24px' }, styler); - expectEl(nodes[1]).toHaveStyle({ 'margin-bottom': '24px' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-bottom': '*' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'margin-bottom': '24px' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ 'margin-bottom': '24px' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-bottom': '*' }, styler); mediaController.activate('md'); fixture.detectChanges(); - expectEl(nodes[0]).not.toHaveStyle({ 'margin-bottom': '24px' }, styler); - expectEl(nodes[1]).not.toHaveStyle({ 'margin-bottom': '24px' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-bottom': '*' }, styler); + expectEl(nodes[0]).not.toHaveInlineStyle({ 'margin-bottom': '24px' }, styler); + expectEl(nodes[1]).not.toHaveInlineStyle({ 'margin-bottom': '24px' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-bottom': '*' }, styler); }); it('should add gap styles in proper order when order style is applied on responsive layout change', () => { @@ -526,15 +526,15 @@ describe('layout-gap directive', () => { mediaController.activate('md'); fixture.detectChanges(); expect(nodes.length).toEqual(3); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-bottom': '*' }, styler); - expectEl(nodes[1]).not.toHaveStyle({ 'margin-bottom': '*' }, styler); - expectEl(nodes[0]).not.toHaveStyle({ 'margin-bottom': '*' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-bottom': '*' }, styler); + expectEl(nodes[1]).not.toHaveInlineStyle({ 'margin-bottom': '*' }, styler); + expectEl(nodes[0]).not.toHaveInlineStyle({ 'margin-bottom': '*' }, styler); mediaController.activate('xs'); fixture.detectChanges(); - expectEl(nodes[2]).toHaveStyle({ 'margin-bottom': '20px' }, styler); - expectEl(nodes[1]).toHaveStyle({ 'margin-bottom': '20px' }, styler); - expectEl(nodes[0]).not.toHaveStyle({ 'margin-bottom': '*' }, styler); + expectEl(nodes[2]).toHaveInlineStyle({ 'margin-bottom': '20px' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ 'margin-bottom': '20px' }, styler); + expectEl(nodes[0]).not.toHaveInlineStyle({ 'margin-bottom': '*' }, styler); }); it('should work with dynamic fxHide', () => { @@ -549,15 +549,15 @@ describe('layout-gap directive', () => { let nodes = queryFor(fixture, '[fxFlex]'); expect(nodes.length).toEqual(2); - expectEl(nodes[0]).not.toHaveStyle({ 'margin-right': '*' }, styler); - expectEl(nodes[1]).not.toHaveStyle({ 'margin-right': '*' }, styler); + expectEl(nodes[0]).not.toHaveInlineStyle({ 'margin-right': '*' }, styler); + expectEl(nodes[1]).not.toHaveInlineStyle({ 'margin-right': '*' }, styler); let instance = fixture.componentInstance; instance.shouldHide = false; fixture.detectChanges(); - expectEl(nodes[0]).toHaveStyle({ 'margin-right': '10px' }, styler); - expectEl(nodes[1]).not.toHaveStyle({ 'margin-right': '*' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'margin-right': '10px' }, styler); + expectEl(nodes[1]).not.toHaveInlineStyle({ 'margin-right': '*' }, styler); }); it('should work with responsive fxHide', () => { @@ -573,21 +573,21 @@ describe('layout-gap directive', () => { let nodes = queryFor(fixture, '[fxFlex]'); expect(nodes.length).toEqual(3); - expectEl(nodes[0]).toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[1]).toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-right': '*' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-right': '*' }, styler); mediaController.activate('sm'); fixture.detectChanges(); - expectEl(nodes[0]).toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[1]).not.toHaveStyle({ 'margin-right': '*' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-right': '*' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[1]).not.toHaveInlineStyle({ 'margin-right': '*' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-right': '*' }, styler); mediaController.activate('lg'); fixture.detectChanges(); - expectEl(nodes[0]).toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[1]).toHaveStyle({ 'margin-right': '13px' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ 'margin-right': '*' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ 'margin-right': '13px' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ 'margin-right': '*' }, styler); }); }); @@ -624,10 +624,10 @@ describe('layout-gap directive', () => { let expectedMargin = { margin: '0px -13px -13px 0px' }; let expectedPadding = { padding: '0px 13px 13px 0px' }; expect(nodes.length).toEqual(3); - expectEl(nodes[0]).toHaveStyle(expectedPadding, styler); - expectEl(nodes[1]).toHaveStyle(expectedPadding, styler); - expectEl(nodes[2]).toHaveStyle(expectedPadding, styler); - expectNativeEl(fixture).toHaveStyle(expectedMargin, styler); + expectEl(nodes[0]).toHaveInlineStyle(expectedPadding, styler); + expectEl(nodes[1]).toHaveInlineStyle(expectedPadding, styler); + expectEl(nodes[2]).toHaveInlineStyle(expectedPadding, styler); + expectNativeEl(fixture).toHaveInlineStyle(expectedMargin, styler); }); it('should add gap styles correctly w/ multiplier', () => { @@ -645,10 +645,10 @@ describe('layout-gap directive', () => { let expectedMargin = { margin: '0px -52px -52px 0px' }; let expectedPadding = { padding: '0px 52px 52px 0px' }; expect(nodes.length).toEqual(3); - expectEl(nodes[0]).toHaveStyle(expectedPadding, styler); - expectEl(nodes[1]).toHaveStyle(expectedPadding, styler); - expectEl(nodes[2]).toHaveStyle(expectedPadding, styler); - expectNativeEl(fixture).toHaveStyle(expectedMargin, styler); + expectEl(nodes[0]).toHaveInlineStyle(expectedPadding, styler); + expectEl(nodes[1]).toHaveInlineStyle(expectedPadding, styler); + expectEl(nodes[2]).toHaveInlineStyle(expectedPadding, styler); + expectNativeEl(fixture).toHaveInlineStyle(expectedMargin, styler); }); it('should add gap styles correctly between option', () => { @@ -666,10 +666,10 @@ describe('layout-gap directive', () => { let expectedMargin = { margin: '0px -13px -12px 0px' }; let expectedPadding = { padding: '0px 13px 12px 0px' }; expect(nodes.length).toEqual(3); - expectEl(nodes[0]).toHaveStyle(expectedPadding, styler); - expectEl(nodes[1]).toHaveStyle(expectedPadding, styler); - expectEl(nodes[2]).toHaveStyle(expectedPadding, styler); - expectNativeEl(fixture).toHaveStyle(expectedMargin, styler); + expectEl(nodes[0]).toHaveInlineStyle(expectedPadding, styler); + expectEl(nodes[1]).toHaveInlineStyle(expectedPadding, styler); + expectEl(nodes[2]).toHaveInlineStyle(expectedPadding, styler); + expectNativeEl(fixture).toHaveInlineStyle(expectedMargin, styler); }); it('should set gap without fallback', () => { @@ -686,20 +686,20 @@ describe('layout-gap directive', () => { let nodes = queryFor(fixture, '[fxFlex]'); expect(nodes.length).toEqual(3); mediaController.activate('sm'); - expectEl(nodes[0]).not.toHaveStyle({ padding: '*' }, styler); - expectEl(nodes[1]).not.toHaveStyle({ padding: '*' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ padding: '*' }, styler); + expectEl(nodes[0]).not.toHaveInlineStyle({ padding: '*' }, styler); + expectEl(nodes[1]).not.toHaveInlineStyle({ padding: '*' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ padding: '*' }, styler); mediaController.activate('md'); fixture.detectChanges(); - expectEl(nodes[0]).toHaveStyle({ padding: '0px 24px 24px 0px' }, styler); - expectEl(nodes[1]).toHaveStyle({ padding: '0px 24px 24px 0px' }, styler); - expectEl(nodes[2]).toHaveStyle({ padding: '0px 24px 24px 0px' }, styler); + expectEl(nodes[0]).toHaveInlineStyle({ padding: '0px 24px 24px 0px' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ padding: '0px 24px 24px 0px' }, styler); + expectEl(nodes[2]).toHaveInlineStyle({ padding: '0px 24px 24px 0px' }, styler); mediaController.activate('sm'); - expectEl(nodes[0]).not.toHaveStyle({ padding: '*' }, styler); - expectEl(nodes[1]).not.toHaveStyle({ padding: '*' }, styler); - expectEl(nodes[2]).not.toHaveStyle({ padding: '*' }, styler); + expectEl(nodes[0]).not.toHaveInlineStyle({ padding: '*' }, styler); + expectEl(nodes[1]).not.toHaveInlineStyle({ padding: '*' }, styler); + expectEl(nodes[2]).not.toHaveInlineStyle({ padding: '*' }, styler); }); it('should add gap styles correctly for rtl', () => { @@ -718,16 +718,16 @@ describe('layout-gap directive', () => { let expectedMargin = { margin: '0px 0px -13px -13px' }; let expectedPadding = { padding: '0px 0px 13px 13px' }; expect(nodes.length).toEqual(3); - expectEl(nodes[0]).toHaveStyle(expectedPadding, styler); - expectEl(nodes[1]).toHaveStyle(expectedPadding, styler); - expectEl(nodes[2]).toHaveStyle(expectedPadding, styler); - expectNativeEl(fixture).toHaveStyle(expectedMargin, styler); + expectEl(nodes[0]).toHaveInlineStyle(expectedPadding, styler); + expectEl(nodes[1]).toHaveInlineStyle(expectedPadding, styler); + expectEl(nodes[2]).toHaveInlineStyle(expectedPadding, styler); + expectNativeEl(fixture).toHaveInlineStyle(expectedMargin, styler); }); }); describe('with custom builder', () => { beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -754,12 +754,12 @@ describe('layout-gap directive', () => {
`); - expectNativeEl(fixture).toHaveStyle({ 'margin-top': '12px' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ 'margin-top': '12px' }, styler); }); }); }); -@Injectable({ providedIn: FlexModule }) +@Injectable() export class MockLayoutGapStyleBuilder extends StyleBuilder { override shouldCache = false; buildStyles(_input: string) { diff --git a/projects/libs/flex-layout/flex/layout-gap/layout-gap.ts b/projects/libs/flex-layout/flex/layout-gap/layout-gap.ts index 816966f4..17eb438e 100644 --- a/projects/libs/flex-layout/flex/layout-gap/layout-gap.ts +++ b/projects/libs/flex-layout/flex/layout-gap/layout-gap.ts @@ -1,4 +1,5 @@ import { Directionality } from '@angular/cdk/bidi'; +import { isPlatformBrowser } from '@angular/common'; import { AfterContentInit, Directive, @@ -7,6 +8,7 @@ import { Injectable, NgZone, OnDestroy, + PLATFORM_ID, } from '@angular/core'; import { LAYOUT_VALUES } from '@ngbracket/ngx-layout/_private-utils'; import { @@ -146,6 +148,7 @@ export class LayoutGapDirective protected styleUtils: StyleUtils, styleBuilder: LayoutGapStyleBuilder, marshal: MediaMarshaller, + @Inject(PLATFORM_ID) protected platformId: Object, ) { super(elRef, styleBuilder, styleUtils, marshal); const extraTriggers = [ @@ -265,7 +268,7 @@ export class LayoutGapDirective protected buildChildObservable(): void { this.zone.runOutsideAngular(() => { - if (typeof MutationObserver !== 'undefined') { + if (isPlatformBrowser(this.platformId) && typeof MutationObserver !== 'undefined') { this.observer = new MutationObserver((mutations: MutationRecord[]) => { const validatedChanges = (it: MutationRecord): boolean => { return ( diff --git a/projects/libs/flex-layout/flex/layout/layout.spec.ts b/projects/libs/flex-layout/flex/layout/layout.spec.ts index 1b687fae..5bb82297 100644 --- a/projects/libs/flex-layout/flex/layout/layout.spec.ts +++ b/projects/libs/flex-layout/flex/layout/layout.spec.ts @@ -17,14 +17,14 @@ import { ɵMockMatchMedia as MockMatchMedia, ɵMockMatchMediaProvider as MockMatchMediaProvider, } from '@ngbracket/ngx-layout/core'; -import { FlexModule, LayoutStyleBuilder } from '@ngbracket/ngx-layout/flex'; import { - customMatchers, expectEl, expectNativeEl, makeCreateTestComponent, queryFor, } from '@ngbracket/ngx-layout/_private-utils/testing'; +import { FlexModule } from '../module'; +import { LayoutStyleBuilder } from './layout'; describe('layout directive', () => { let fixture: ComponentFixture; @@ -43,7 +43,7 @@ describe('layout directive', () => { }; beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -62,7 +62,7 @@ describe('layout directive', () => { describe('with static features', () => { it('should add correct styles for default `fxLayout` usage', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'flex', 'flex-direction': 'row', @@ -73,7 +73,7 @@ describe('layout directive', () => { }); it('should add correct styles for `fxLayout="row"` usage', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'flex', 'flex-direction': 'row', @@ -84,7 +84,7 @@ describe('layout directive', () => { }); it('should not override pre-existing styles', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'none', 'flex-direction': 'row', @@ -95,7 +95,7 @@ describe('layout directive', () => { }); it('should add correct styles for `fxLayout="row wrap"` usage', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'flex', 'flex-direction': 'row', @@ -107,7 +107,7 @@ describe('layout directive', () => { }); it('should add correct styles for `fxLayout="column"` usage', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'flex', 'flex-direction': 'column', @@ -118,7 +118,7 @@ describe('layout directive', () => { }); it('should add correct styles for binding `[fxLayout]="direction"` usage', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'flex', 'flex-direction': 'column', @@ -129,7 +129,7 @@ describe('layout directive', () => { }); it('should use default flex-direction for invalid value `fxLayout="invalid"` usage', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'row', }, @@ -140,7 +140,7 @@ describe('layout directive', () => { // tslint:disable-line:max-line-length createTestComponent(`
`); fixture.componentInstance.direction = 'invalid'; - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'row', }, @@ -151,7 +151,7 @@ describe('layout directive', () => { createTestComponent(`
`); fixture.componentInstance.direction = 'invalid'; - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'row', }, @@ -159,7 +159,7 @@ describe('layout directive', () => { ); fixture.componentInstance.direction = 'column'; - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'column', }, @@ -185,7 +185,7 @@ describe('layout directive', () => { createTestComponent(template); fixture.detectChanges(); - expectEl(queryFor(fixture, selector)[0]).toHaveStyle( + expectEl(queryFor(fixture, selector)[0]).toHaveInlineStyle( { 'flex-direction': 'row-reverse', }, @@ -197,7 +197,7 @@ describe('layout directive', () => { describe('with wrap options', () => { it('should recognize valid `wrap` option', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'flex', 'flex-direction': 'row', @@ -210,7 +210,7 @@ describe('layout directive', () => { it('should fallback to `wrap` for invalid options', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-wrap': 'wrap', }, @@ -220,7 +220,7 @@ describe('layout directive', () => { it('should fallback to `wrap` for invalid options', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-wrap': 'wrap', }, @@ -230,7 +230,7 @@ describe('layout directive', () => { it('should have valid wrap with flex children', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-wrap': 'wrap', }, @@ -242,7 +242,7 @@ describe('layout directive', () => { describe('with inline options', () => { it('should recognize valid `inline` option', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'inline-flex', 'flex-direction': 'row', @@ -253,7 +253,7 @@ describe('layout directive', () => { it('should recognize `line` used with `wrap`', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'inline-flex', 'flex-wrap': 'wrap', @@ -264,7 +264,7 @@ describe('layout directive', () => { it('should recognize `inline` used with `wrap`', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'inline-flex', 'flex-wrap': 'wrap', @@ -275,7 +275,7 @@ describe('layout directive', () => { it('should fallback to `wrap` for invalid options', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'inline-flex', 'flex-wrap': 'wrap', @@ -289,7 +289,7 @@ describe('layout directive', () => { it('should ignore responsive changes when not configured', () => { createTestComponent(`
`); mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'flex', 'flex-direction': 'column', @@ -303,7 +303,7 @@ describe('layout directive', () => { `
`, ); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'flex', 'flex-direction': 'row', @@ -313,7 +313,7 @@ describe('layout directive', () => { ); mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'flex', 'flex-direction': 'column', @@ -324,7 +324,7 @@ describe('layout directive', () => { ); mediaController.activate('lg'); - expectNativeEl(fixture).not.toHaveStyle( + expectNativeEl(fixture).not.toHaveInlineStyle( { 'flex-wrap': 'reverse-wrap', }, @@ -334,7 +334,7 @@ describe('layout directive', () => { it('should update responsive styles when the active mediaQuery changes', () => { createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'row', }, @@ -342,14 +342,14 @@ describe('layout directive', () => { ); mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'column', }, styler, ); mediaController.activate('all'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'row', }, @@ -363,22 +363,22 @@ describe('layout directive', () => { [fxLayout.md]='direction'> `); - expectNativeEl(fixture).toHaveStyle({ 'flex-direction': 'row' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ 'flex-direction': 'row' }, styler); mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'column' }, styler, ); fixture.componentInstance.direction = 'row'; - expectNativeEl(fixture).toHaveStyle({ 'flex-direction': 'row' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ 'flex-direction': 'row' }, styler); }); it('should fallback to default styles when the active mediaQuery change is not configured', () => { // tslint:disable-line:max-line-length createTestComponent(`
`); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'row', }, @@ -386,14 +386,14 @@ describe('layout directive', () => { ); mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'column', }, styler, ); mediaController.activate('lg'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'row', }, @@ -405,7 +405,7 @@ describe('layout directive', () => { // tslint:disable-line:max-line-length createTestComponent(`
`); - expectNativeEl(fixture).not.toHaveStyle( + expectNativeEl(fixture).not.toHaveInlineStyle( { 'flex-direction': 'column', }, @@ -413,7 +413,7 @@ describe('layout directive', () => { ); mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'column', }, @@ -421,7 +421,7 @@ describe('layout directive', () => { ); mediaController.activate('lg'); - expectNativeEl(fixture).not.toHaveStyle( + expectNativeEl(fixture).not.toHaveInlineStyle( { 'flex-direction': 'column', }, @@ -429,7 +429,7 @@ describe('layout directive', () => { ); mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'column', }, @@ -443,7 +443,7 @@ describe('layout directive', () => { `
`, ); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'row', }, @@ -451,14 +451,14 @@ describe('layout directive', () => { ); mediaController.activate('gt-sm'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'column', }, styler, ); mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'row', }, @@ -467,7 +467,7 @@ describe('layout directive', () => { // Should fallback to value for 'gt-sm' mediaController.activate('lg', true); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'flex-direction': 'column', }, @@ -478,7 +478,7 @@ describe('layout directive', () => { describe('with custom builder', () => { beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -505,12 +505,12 @@ describe('layout directive', () => {
`); - expectNativeEl(fixture).toHaveStyle({ display: 'inline-flex' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'inline-flex' }, styler); }); }); }); -@Injectable({ providedIn: FlexModule }) +@Injectable() export class MockLayoutStyleBuilder extends StyleBuilder { override shouldCache = false; buildStyles(_input: string) { diff --git a/projects/libs/flex-layout/grid/align-columns/align-columns.spec.ts b/projects/libs/flex-layout/grid/align-columns/align-columns.spec.ts index 6a1c00b8..20259f81 100644 --- a/projects/libs/flex-layout/grid/align-columns/align-columns.spec.ts +++ b/projects/libs/flex-layout/grid/align-columns/align-columns.spec.ts @@ -18,7 +18,6 @@ import { import { extendObject } from '@ngbracket/ngx-layout/_private-utils'; import { - customMatchers, expectNativeEl, makeCreateTestComponent, } from '@ngbracket/ngx-layout/_private-utils/testing'; @@ -53,7 +52,7 @@ describe('align columns directive', () => { }; beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -71,7 +70,7 @@ describe('align columns directive', () => { return; } - expectNativeEl(fixture).toHaveStyle(DEFAULT_ALIGNS, styler); + expectNativeEl(fixture).toHaveInlineStyle(DEFAULT_ALIGNS, styler); }); it('should work with inline grid', () => { @@ -81,7 +80,7 @@ describe('align columns directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject( { display: 'inline-grid', @@ -100,7 +99,7 @@ describe('align columns directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'align-content': 'start' }, CROSS_DEFAULT), styler, ); @@ -112,7 +111,7 @@ describe('align columns directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'align-content': 'end' }, CROSS_DEFAULT), styler, ); @@ -124,7 +123,7 @@ describe('align columns directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'align-content': 'stretch' }, CROSS_DEFAULT), styler, ); @@ -136,7 +135,7 @@ describe('align columns directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'align-content': 'center' }, CROSS_DEFAULT), styler, ); @@ -148,7 +147,7 @@ describe('align columns directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'align-content': 'space-around' }, CROSS_DEFAULT), styler, ); @@ -160,7 +159,7 @@ describe('align columns directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'align-content': 'space-between' }, CROSS_DEFAULT), styler, ); @@ -172,7 +171,7 @@ describe('align columns directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'align-content': 'space-evenly' }, CROSS_DEFAULT), styler, ); @@ -185,7 +184,7 @@ describe('align columns directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject(MAIN_DEFAULT, CROSS_DEFAULT), styler, ); @@ -200,7 +199,7 @@ describe('align columns directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject(MAIN_DEFAULT, { 'align-items': 'start' }), styler, ); @@ -212,7 +211,7 @@ describe('align columns directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject(MAIN_DEFAULT, { 'align-items': 'center' }), styler, ); @@ -224,7 +223,7 @@ describe('align columns directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject(MAIN_DEFAULT, { 'align-items': 'end' }), styler, ); @@ -236,7 +235,7 @@ describe('align columns directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject(MAIN_DEFAULT, CROSS_DEFAULT), styler, ); @@ -252,7 +251,7 @@ describe('align columns directive', () => { } fixture.componentInstance.alignBy = 'center end'; - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'align-content': 'center', 'align-items': 'end', @@ -261,10 +260,10 @@ describe('align columns directive', () => { ); fixture.componentInstance.alignBy = 'invalid invalid'; - expectNativeEl(fixture).toHaveStyle(DEFAULT_ALIGNS, styler); + expectNativeEl(fixture).toHaveInlineStyle(DEFAULT_ALIGNS, styler); fixture.componentInstance.alignBy = ''; - expectNativeEl(fixture).toHaveStyle(DEFAULT_ALIGNS, styler); + expectNativeEl(fixture).toHaveInlineStyle(DEFAULT_ALIGNS, styler); }); }); }); @@ -279,7 +278,7 @@ describe('align columns directive', () => { mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'align-content': 'center', 'align-items': 'center', @@ -297,7 +296,7 @@ describe('align columns directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'align-content': 'center', 'align-items': 'center', @@ -307,7 +306,7 @@ describe('align columns directive', () => { mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'align-content': 'end', 'align-items': 'stretch', @@ -328,7 +327,7 @@ describe('align columns directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'align-content': 'center', 'align-items': 'stretch', @@ -338,7 +337,7 @@ describe('align columns directive', () => { mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'align-content': 'end', 'align-items': 'stretch', @@ -348,7 +347,7 @@ describe('align columns directive', () => { mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'align-content': 'center', 'align-items': 'stretch', @@ -372,7 +371,7 @@ describe('align columns directive', () => { mediaController.useOverlaps = true; - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'align-content': 'start', }, @@ -380,7 +379,7 @@ describe('align columns directive', () => { ); mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'align-content': 'center', }, @@ -388,7 +387,7 @@ describe('align columns directive', () => { ); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'align-content': 'start', }, @@ -397,7 +396,7 @@ describe('align columns directive', () => { // Should fallback to value for 'gt-xs' or default mediaController.activate('lg', true); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'align-content': 'end', }, @@ -405,7 +404,7 @@ describe('align columns directive', () => { ); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'align-content': 'start', }, @@ -414,7 +413,7 @@ describe('align columns directive', () => { // Should fallback to value for 'gt-xs' or default mediaController.activate('xl', true); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'align-content': 'end', }, diff --git a/projects/libs/flex-layout/grid/align-rows/align-rows.spec.ts b/projects/libs/flex-layout/grid/align-rows/align-rows.spec.ts index dd9e81d0..d52f2de3 100644 --- a/projects/libs/flex-layout/grid/align-rows/align-rows.spec.ts +++ b/projects/libs/flex-layout/grid/align-rows/align-rows.spec.ts @@ -17,7 +17,6 @@ import { import { extendObject } from '@ngbracket/ngx-layout/_private-utils'; import { - customMatchers, expectNativeEl, makeCreateTestComponent, } from '@ngbracket/ngx-layout/_private-utils/testing'; @@ -53,7 +52,7 @@ describe('align rows directive', () => { }; beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -71,7 +70,7 @@ describe('align rows directive', () => { return; } - expectNativeEl(fixture).toHaveStyle(DEFAULT_ALIGNS, styler); + expectNativeEl(fixture).toHaveInlineStyle(DEFAULT_ALIGNS, styler); }); it('should work with inline grid', () => { @@ -81,7 +80,7 @@ describe('align rows directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject( { display: 'inline-grid', @@ -100,7 +99,7 @@ describe('align rows directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'justify-content': 'start' }, CROSS_DEFAULT), styler, ); @@ -112,7 +111,7 @@ describe('align rows directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'justify-content': 'end' }, CROSS_DEFAULT), styler, ); @@ -124,7 +123,7 @@ describe('align rows directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'justify-content': 'stretch' }, CROSS_DEFAULT), styler, ); @@ -136,7 +135,7 @@ describe('align rows directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'justify-content': 'center' }, CROSS_DEFAULT), styler, ); @@ -148,7 +147,7 @@ describe('align rows directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'justify-content': 'space-around' }, CROSS_DEFAULT), styler, ); @@ -160,7 +159,7 @@ describe('align rows directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'justify-content': 'space-between' }, CROSS_DEFAULT), styler, ); @@ -172,7 +171,7 @@ describe('align rows directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'justify-content': 'space-evenly' }, CROSS_DEFAULT), styler, ); @@ -185,7 +184,7 @@ describe('align rows directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject(MAIN_DEFAULT, CROSS_DEFAULT), styler, ); @@ -200,7 +199,7 @@ describe('align rows directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject(MAIN_DEFAULT, { 'justify-items': 'start' }), styler, ); @@ -212,7 +211,7 @@ describe('align rows directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject(MAIN_DEFAULT, { 'justify-items': 'center' }), styler, ); @@ -224,7 +223,7 @@ describe('align rows directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject(MAIN_DEFAULT, { 'justify-items': 'end' }), styler, ); @@ -236,7 +235,7 @@ describe('align rows directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject(MAIN_DEFAULT, CROSS_DEFAULT), styler, ); @@ -252,7 +251,7 @@ describe('align rows directive', () => { } fixture.componentInstance.alignBy = 'center end'; - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'center', 'justify-items': 'end', @@ -261,10 +260,10 @@ describe('align rows directive', () => { ); fixture.componentInstance.alignBy = 'invalid invalid'; - expectNativeEl(fixture).toHaveStyle(DEFAULT_ALIGNS, styler); + expectNativeEl(fixture).toHaveInlineStyle(DEFAULT_ALIGNS, styler); fixture.componentInstance.alignBy = ''; - expectNativeEl(fixture).toHaveStyle(DEFAULT_ALIGNS, styler); + expectNativeEl(fixture).toHaveInlineStyle(DEFAULT_ALIGNS, styler); }); }); }); @@ -279,7 +278,7 @@ describe('align rows directive', () => { mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'center', 'justify-items': 'center', @@ -297,7 +296,7 @@ describe('align rows directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'center', 'justify-items': 'center', @@ -307,7 +306,7 @@ describe('align rows directive', () => { mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'end', 'justify-items': 'stretch', @@ -328,7 +327,7 @@ describe('align rows directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'center', 'justify-items': 'stretch', @@ -338,7 +337,7 @@ describe('align rows directive', () => { mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'end', 'justify-items': 'stretch', @@ -348,7 +347,7 @@ describe('align rows directive', () => { mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'center', 'justify-items': 'stretch', @@ -372,7 +371,7 @@ describe('align rows directive', () => { mediaController.useOverlaps = true; - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'start', }, @@ -380,7 +379,7 @@ describe('align rows directive', () => { ); mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'center', }, @@ -388,7 +387,7 @@ describe('align rows directive', () => { ); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'start', }, @@ -397,7 +396,7 @@ describe('align rows directive', () => { // Should fallback to value for 'gt-xs' or default mediaController.activate('lg', true); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'end', }, @@ -405,7 +404,7 @@ describe('align rows directive', () => { ); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'start', }, @@ -414,7 +413,7 @@ describe('align rows directive', () => { // Should fallback to value for 'gt-xs' or default mediaController.activate('xl', true); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-content': 'end', }, diff --git a/projects/libs/flex-layout/grid/area/area.spec.ts b/projects/libs/flex-layout/grid/area/area.spec.ts index f0179cd7..7d9e1bdd 100644 --- a/projects/libs/flex-layout/grid/area/area.spec.ts +++ b/projects/libs/flex-layout/grid/area/area.spec.ts @@ -18,7 +18,6 @@ import { } from '@ngbracket/ngx-layout/core'; import { - customMatchers, expectEl, expectNativeEl, makeCreateTestComponent, @@ -59,7 +58,7 @@ describe('grid area child directive', () => { }; beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -92,7 +91,7 @@ describe('grid area child directive', () => { let nodes = queryFor(fixture, '[gdArea]'); expect(nodes.length).toBe(3); if (platform.WEBKIT) { - expectEl(nodes[1]).toHaveStyle( + expectEl(nodes[1]).toHaveInlineStyle( { 'grid-row-start': 'grace', 'grid-row-end': 'grace', @@ -124,7 +123,7 @@ describe('grid area child directive', () => { } if (platform.WEBKIT) { - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'grid-row-start': 'sidebar', 'grid-row-end': 'sidebar', @@ -148,7 +147,7 @@ describe('grid area child directive', () => { fixture.componentInstance.area = 'header'; if (platform.WEBKIT) { - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'grid-row-start': 'header', 'grid-row-end': 'header', @@ -183,7 +182,7 @@ describe('grid area child directive', () => { } if (platform.WEBKIT) { - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'grid-row-start': 'sidebar', 'grid-row-end': 'sidebar', @@ -206,7 +205,7 @@ describe('grid area child directive', () => { mediaController.activate('xs'); if (platform.WEBKIT) { - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'grid-row-start': 'footer', 'grid-row-end': 'footer', @@ -228,7 +227,7 @@ describe('grid area child directive', () => { mediaController.activate('md'); if (platform.WEBKIT) { - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'grid-row-start': 'sidebar', 'grid-row-end': 'sidebar', diff --git a/projects/libs/flex-layout/grid/areas/areas.spec.ts b/projects/libs/flex-layout/grid/areas/areas.spec.ts index 6367a6a8..ad92390f 100644 --- a/projects/libs/flex-layout/grid/areas/areas.spec.ts +++ b/projects/libs/flex-layout/grid/areas/areas.spec.ts @@ -18,7 +18,6 @@ import { } from '@ngbracket/ngx-layout/core'; import { - customMatchers, expectNativeEl, makeCreateTestComponent, } from '@ngbracket/ngx-layout/_private-utils/testing'; @@ -57,7 +56,7 @@ describe('grid area parent directive', () => { }; beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -91,7 +90,7 @@ describe('grid area parent directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-template-areas': '"header" "header" "sidebar" "footer"', @@ -120,7 +119,7 @@ describe('grid area parent directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'inline-grid', 'grid-template-areas': '"header" "header" "sidebar" "footer"', @@ -149,7 +148,7 @@ describe('grid area parent directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-template-areas': '"header" "header" "sidebar" "footer"', @@ -174,7 +173,7 @@ describe('grid area parent directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'grid-template-areas': '"sidebar" "sidebar"', }, @@ -183,7 +182,7 @@ describe('grid area parent directive', () => { fixture.componentInstance.areas = 'header | header | sidebar'; - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-template-areas': '"header" "header" "sidebar"', @@ -211,7 +210,7 @@ describe('grid area parent directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-template-areas': @@ -221,7 +220,7 @@ describe('grid area parent directive', () => { ); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-template-areas': @@ -231,7 +230,7 @@ describe('grid area parent directive', () => { ); mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-template-areas': diff --git a/projects/libs/flex-layout/grid/auto/auto.spec.ts b/projects/libs/flex-layout/grid/auto/auto.spec.ts index 5025272a..d91f7106 100644 --- a/projects/libs/flex-layout/grid/auto/auto.spec.ts +++ b/projects/libs/flex-layout/grid/auto/auto.spec.ts @@ -10,7 +10,6 @@ import { CommonModule } from '@angular/common'; import { Component } from '@angular/core'; import { ComponentFixture, inject, TestBed } from '@angular/core/testing'; import { - customMatchers, expectNativeEl, makeCreateTestComponent, } from '@ngbracket/ngx-layout/_private-utils/testing'; @@ -21,7 +20,7 @@ import { SERVER_TOKEN, StyleUtils, } from '@ngbracket/ngx-layout/core'; -import { GridModule } from '@ngbracket/ngx-layout/grid'; +import { GridModule } from '../module'; describe('grid auto parent directive', () => { let fixture: ComponentFixture; @@ -48,7 +47,7 @@ describe('grid auto parent directive', () => { }; beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -72,7 +71,7 @@ describe('grid auto parent directive', () => { `; createTestComponent(template); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-auto-flow': 'row', @@ -91,7 +90,7 @@ describe('grid auto parent directive', () => { `; createTestComponent(template); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'inline-grid', 'grid-auto-flow': 'row', @@ -110,7 +109,7 @@ describe('grid auto parent directive', () => { `; createTestComponent(template); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-auto-flow': 'row', @@ -129,7 +128,7 @@ describe('grid auto parent directive', () => { `; createTestComponent(template); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-auto-flow': 'column', @@ -148,7 +147,7 @@ describe('grid auto parent directive', () => { `; createTestComponent(template); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-auto-flow': 'dense', @@ -167,7 +166,7 @@ describe('grid auto parent directive', () => { `; createTestComponent(template); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-auto-flow': 'dense', @@ -186,7 +185,7 @@ describe('grid auto parent directive', () => { `; createTestComponent(template); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-auto-flow': 'column dense', @@ -205,7 +204,7 @@ describe('grid auto parent directive', () => { `; createTestComponent(template); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-auto-flow': @@ -225,7 +224,7 @@ describe('grid auto parent directive', () => { `; createTestComponent(template); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-auto-flow': @@ -245,7 +244,7 @@ describe('grid auto parent directive', () => { `; createTestComponent(template); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-auto-flow': 'column', @@ -260,7 +259,7 @@ describe('grid auto parent directive', () => { `; createTestComponent(template); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-auto-flow': 'row', @@ -270,7 +269,7 @@ describe('grid auto parent directive', () => { fixture.componentInstance.auto = 'column'; - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-auto-flow': 'column', @@ -288,7 +287,7 @@ describe('grid auto parent directive', () => { `; createTestComponent(template); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-auto-flow': 'row', @@ -297,7 +296,7 @@ describe('grid auto parent directive', () => { ); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-auto-flow': 'column', @@ -306,7 +305,7 @@ describe('grid auto parent directive', () => { ); mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-auto-flow': 'row', diff --git a/projects/libs/flex-layout/grid/column/column.spec.ts b/projects/libs/flex-layout/grid/column/column.spec.ts index f221bcd7..d65d647f 100644 --- a/projects/libs/flex-layout/grid/column/column.spec.ts +++ b/projects/libs/flex-layout/grid/column/column.spec.ts @@ -18,7 +18,6 @@ import { } from '@ngbracket/ngx-layout/core'; import { - customMatchers, expectEl, makeCreateTestComponent, queryFor, @@ -58,7 +57,7 @@ describe('grid column child directive', () => { }; beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -92,7 +91,7 @@ describe('grid column child directive', () => { expect(nodes.length).toBe(3); if (platform.WEBKIT) { - expectEl(nodes[1]).toHaveStyle( + expectEl(nodes[1]).toHaveInlineStyle( { 'grid-column-start': 'span 2', 'grid-column-end': '6', @@ -100,7 +99,7 @@ describe('grid column child directive', () => { styler, ); } else { - expectEl(nodes[1]).toHaveStyle({ 'grid-column': 'span 2 / 6' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ 'grid-column': 'span 2 / 6' }, styler); } }); diff --git a/projects/libs/flex-layout/grid/columns/columns.spec.ts b/projects/libs/flex-layout/grid/columns/columns.spec.ts index fceb3a73..a70dd8f1 100644 --- a/projects/libs/flex-layout/grid/columns/columns.spec.ts +++ b/projects/libs/flex-layout/grid/columns/columns.spec.ts @@ -18,7 +18,6 @@ import { } from '@ngbracket/ngx-layout/core'; import { - customMatchers, expectNativeEl, makeCreateTestComponent, } from '@ngbracket/ngx-layout/_private-utils/testing'; @@ -57,7 +56,7 @@ describe('grid columns parent directive', () => { }; beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -85,7 +84,7 @@ describe('grid columns parent directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-template-columns': '100px 1fr', @@ -111,7 +110,7 @@ describe('grid columns parent directive', () => { // TODO(CaerusKaru): Firefox has an issue with auto tracks, // caused by rachelandrew/gridbugs#1 if (!platform.FIREFOX) { - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-auto-columns': '100px 1fr auto', @@ -135,7 +134,7 @@ describe('grid columns parent directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'inline-grid', 'grid-template-columns': '100px 1fr', @@ -154,7 +153,7 @@ describe('grid columns parent directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-template-columns': '50px 1fr', @@ -164,7 +163,7 @@ describe('grid columns parent directive', () => { fixture.componentInstance.cols = '100px 1fr'; - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-template-columns': '100px 1fr', @@ -186,7 +185,7 @@ describe('grid columns parent directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-template-columns': '100px 1fr', @@ -195,7 +194,7 @@ describe('grid columns parent directive', () => { ); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-template-columns': '50px 1fr', @@ -204,7 +203,7 @@ describe('grid columns parent directive', () => { ); mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-template-columns': '100px 1fr', diff --git a/projects/libs/flex-layout/grid/gap/gap.spec.ts b/projects/libs/flex-layout/grid/gap/gap.spec.ts index a51cc342..796f2dcd 100644 --- a/projects/libs/flex-layout/grid/gap/gap.spec.ts +++ b/projects/libs/flex-layout/grid/gap/gap.spec.ts @@ -18,7 +18,6 @@ import { } from '@ngbracket/ngx-layout/core'; import { - customMatchers, expectNativeEl, makeCreateTestComponent, } from '@ngbracket/ngx-layout/_private-utils/testing'; @@ -57,7 +56,7 @@ describe('grid gap directive', () => { }; beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -84,7 +83,7 @@ describe('grid gap directive', () => { } if (platform.WEBKIT) { - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-row-gap': '10px', @@ -93,7 +92,7 @@ describe('grid gap directive', () => { styler, ); } else { - expectNativeEl(fixture).toHaveStyle({ display: 'grid' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'grid' }, styler); let gapStyle = styler.lookupStyle( fixture.debugElement.children[0].nativeElement, 'grid-gap', @@ -116,7 +115,7 @@ describe('grid gap directive', () => { } if (platform.WEBKIT) { - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-row-gap': '10px', @@ -125,7 +124,7 @@ describe('grid gap directive', () => { styler, ); } else if (platform.BLINK) { - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', gap: '10px 15px', @@ -133,7 +132,7 @@ describe('grid gap directive', () => { styler, ); } else { - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-gap': '10px 15px', @@ -158,7 +157,7 @@ describe('grid gap directive', () => { } if (platform.WEBKIT) { - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-row-gap': '8px', @@ -179,7 +178,7 @@ describe('grid gap directive', () => { fixture.componentInstance.gap = '16px'; if (platform.WEBKIT) { - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-row-gap': '16px', @@ -211,7 +210,7 @@ describe('grid gap directive', () => { } if (platform.WEBKIT) { - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'inline-grid', 'grid-row-gap': '10px', @@ -220,7 +219,7 @@ describe('grid gap directive', () => { styler, ); } else { - expectNativeEl(fixture).toHaveStyle({ display: 'inline-grid' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'inline-grid' }, styler); let gapStyle = styler.lookupStyle( fixture.debugElement.children[0].nativeElement, 'grid-gap', @@ -245,7 +244,7 @@ describe('grid gap directive', () => { } if (platform.WEBKIT) { - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-row-gap': '10px', @@ -254,7 +253,7 @@ describe('grid gap directive', () => { styler, ); } else { - expectNativeEl(fixture).toHaveStyle({ display: 'grid' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'grid' }, styler); let gapStyle = styler.lookupStyle( fixture.debugElement.children[0].nativeElement, 'grid-gap', @@ -265,7 +264,7 @@ describe('grid gap directive', () => { mediaController.activate('xs'); if (platform.WEBKIT) { - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-row-gap': '16px', @@ -274,7 +273,7 @@ describe('grid gap directive', () => { styler, ); } else { - expectNativeEl(fixture).toHaveStyle({ display: 'grid' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'grid' }, styler); let gapStyle = styler.lookupStyle( fixture.debugElement.children[0].nativeElement, 'grid-gap', @@ -285,7 +284,7 @@ describe('grid gap directive', () => { mediaController.activate('md'); if (platform.WEBKIT) { - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-row-gap': '10px', @@ -294,7 +293,7 @@ describe('grid gap directive', () => { styler, ); } else { - expectNativeEl(fixture).toHaveStyle({ display: 'grid' }, styler); + expectNativeEl(fixture).toHaveInlineStyle({ display: 'grid' }, styler); let gapStyle = styler.lookupStyle( fixture.debugElement.children[0].nativeElement, 'grid-gap', diff --git a/projects/libs/flex-layout/grid/grid-align/grid-align.spec.ts b/projects/libs/flex-layout/grid/grid-align/grid-align.spec.ts index 2bb3d294..2d8966f7 100644 --- a/projects/libs/flex-layout/grid/grid-align/grid-align.spec.ts +++ b/projects/libs/flex-layout/grid/grid-align/grid-align.spec.ts @@ -19,7 +19,6 @@ import { import { extendObject } from '@ngbracket/ngx-layout/_private-utils'; import { - customMatchers, expectNativeEl, makeCreateTestComponent, } from '@ngbracket/ngx-layout/_private-utils/testing'; @@ -53,7 +52,7 @@ describe('align directive', () => { }; beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -74,7 +73,7 @@ describe('align directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-self': 'stretch' }, styler, ); @@ -88,7 +87,7 @@ describe('align directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'justify-self': 'start' }, COLUMN_DEFAULT), styler, ); @@ -100,7 +99,7 @@ describe('align directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'justify-self': 'center' }, COLUMN_DEFAULT), styler, ); @@ -112,7 +111,7 @@ describe('align directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'justify-self': 'end' }, COLUMN_DEFAULT), styler, ); @@ -124,7 +123,7 @@ describe('align directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'justify-self': 'stretch' }, COLUMN_DEFAULT), styler, ); @@ -136,7 +135,7 @@ describe('align directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject({ 'justify-self': 'stretch' }, COLUMN_DEFAULT), styler, ); @@ -151,7 +150,7 @@ describe('align directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject(ROW_DEFAULT, { 'align-self': 'start' }), styler, ); @@ -163,7 +162,7 @@ describe('align directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject(ROW_DEFAULT, { 'align-self': 'center' }), styler, ); @@ -175,7 +174,7 @@ describe('align directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject(ROW_DEFAULT, { 'align-self': 'end' }), styler, ); @@ -187,7 +186,7 @@ describe('align directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( extendObject(ROW_DEFAULT, { 'align-self': 'stretch' }), styler, ); @@ -203,7 +202,7 @@ describe('align directive', () => { } fixture.componentInstance.alignBy = 'center end'; - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-self': 'center', 'align-self': 'end', @@ -212,10 +211,10 @@ describe('align directive', () => { ); fixture.componentInstance.alignBy = 'invalid invalid'; - expectNativeEl(fixture).toHaveStyle(DEFAULT_ALIGNS, styler); + expectNativeEl(fixture).toHaveInlineStyle(DEFAULT_ALIGNS, styler); fixture.componentInstance.alignBy = ''; - expectNativeEl(fixture).toHaveStyle(DEFAULT_ALIGNS, styler); + expectNativeEl(fixture).toHaveInlineStyle(DEFAULT_ALIGNS, styler); }); }); }); @@ -230,7 +229,7 @@ describe('align directive', () => { mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-self': 'center', 'align-self': 'center', @@ -248,7 +247,7 @@ describe('align directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-self': 'center', 'align-self': 'center', @@ -258,7 +257,7 @@ describe('align directive', () => { mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-self': 'end', 'align-self': 'stretch', @@ -279,7 +278,7 @@ describe('align directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-self': 'center', 'align-self': 'stretch', @@ -289,7 +288,7 @@ describe('align directive', () => { mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-self': 'end', 'align-self': 'stretch', @@ -299,7 +298,7 @@ describe('align directive', () => { mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-self': 'center', 'align-self': 'stretch', @@ -323,7 +322,7 @@ describe('align directive', () => { mediaController.useOverlaps = true; - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-self': 'start', }, @@ -331,7 +330,7 @@ describe('align directive', () => { ); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-self': 'start', }, @@ -339,7 +338,7 @@ describe('align directive', () => { ); mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-self': 'center', }, @@ -348,7 +347,7 @@ describe('align directive', () => { // Should fallback to value for 'gt-xs' or default mediaController.activate('lg', true); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-self': 'end', }, @@ -356,7 +355,7 @@ describe('align directive', () => { ); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-self': 'start', }, @@ -365,7 +364,7 @@ describe('align directive', () => { // Should fallback to value for 'gt-xs' or default mediaController.activate('xl', true); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { 'justify-self': 'end', }, diff --git a/projects/libs/flex-layout/grid/row/row.spec.ts b/projects/libs/flex-layout/grid/row/row.spec.ts index e4b3769b..6059f9b5 100644 --- a/projects/libs/flex-layout/grid/row/row.spec.ts +++ b/projects/libs/flex-layout/grid/row/row.spec.ts @@ -18,7 +18,6 @@ import { } from '@ngbracket/ngx-layout/core'; import { - customMatchers, expectEl, makeCreateTestComponent, queryFor, @@ -58,7 +57,7 @@ describe('grid row child directive', () => { }; beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -91,7 +90,7 @@ describe('grid row child directive', () => { let nodes = queryFor(fixture, '[gdRow]'); expect(nodes.length).toBe(3); if (platform.WEBKIT) { - expectEl(nodes[1]).toHaveStyle( + expectEl(nodes[1]).toHaveInlineStyle( { 'grid-row-start': 'span 2', 'grid-row-end': '6', @@ -99,7 +98,7 @@ describe('grid row child directive', () => { styler, ); } else { - expectEl(nodes[1]).toHaveStyle({ 'grid-row': 'span 2 / 6' }, styler); + expectEl(nodes[1]).toHaveInlineStyle({ 'grid-row': 'span 2 / 6' }, styler); } }); diff --git a/projects/libs/flex-layout/grid/rows/rows.spec.ts b/projects/libs/flex-layout/grid/rows/rows.spec.ts index 69b14c5c..80de7fb8 100644 --- a/projects/libs/flex-layout/grid/rows/rows.spec.ts +++ b/projects/libs/flex-layout/grid/rows/rows.spec.ts @@ -18,7 +18,6 @@ import { } from '@ngbracket/ngx-layout/core'; import { - customMatchers, expectNativeEl, makeCreateTestComponent, } from '@ngbracket/ngx-layout/_private-utils/testing'; @@ -57,7 +56,7 @@ describe('grid rows parent directive', () => { }; beforeEach(() => { - jasmine.addMatchers(customMatchers); + // Configure testbed to prepare services TestBed.configureTestingModule({ @@ -85,7 +84,7 @@ describe('grid rows parent directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-template-rows': '100px 1fr', @@ -111,7 +110,7 @@ describe('grid rows parent directive', () => { // TODO(CaerusKaru): Firefox has an issue with auto tracks, // caused by rachelandrew/gridbugs#1 if (!platform.FIREFOX) { - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-auto-rows': '100px 1fr auto', @@ -135,7 +134,7 @@ describe('grid rows parent directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'inline-grid', 'grid-template-rows': '100px 1fr', @@ -154,7 +153,7 @@ describe('grid rows parent directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-template-rows': '50px 1fr', @@ -164,7 +163,7 @@ describe('grid rows parent directive', () => { fixture.componentInstance.cols = '100px 1fr'; - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-template-rows': '100px 1fr', @@ -186,7 +185,7 @@ describe('grid rows parent directive', () => { return; } - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-template-rows': '100px 1fr', @@ -195,7 +194,7 @@ describe('grid rows parent directive', () => { ); mediaController.activate('xs'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-template-rows': '50px 1fr', @@ -204,7 +203,7 @@ describe('grid rows parent directive', () => { ); mediaController.activate('md'); - expectNativeEl(fixture).toHaveStyle( + expectNativeEl(fixture).toHaveInlineStyle( { display: 'grid', 'grid-template-rows': '100px 1fr', diff --git a/projects/libs/flex-layout/project.json b/projects/libs/flex-layout/project.json index 49ac6590..5a4f8327 100644 --- a/projects/libs/flex-layout/project.json +++ b/projects/libs/flex-layout/project.json @@ -23,13 +23,16 @@ "defaultConfiguration": "production" }, "test": { - "executor": "@angular-devkit/build-angular:karma", + "executor": "@nx/vite:test", + "outputs": ["{options.reportsDirectory}"], "options": { - "watch": false, - "main": "projects/libs/flex-layout/test.ts", - "polyfills": ["zone.js", "zone.js/testing"], - "tsConfig": "projects/libs/flex-layout/tsconfig.spec.json", - "karmaConfig": "test/karma.conf.js" + "reportsDirectory": "../../../coverage/projects/libs/flex-layout" + }, + "configurations": { + "ssr": { + "config": "projects/libs/flex-layout/vite.config.ssr.mts", + "reportsDirectory": "../../../coverage/ssr/projects/libs/flex-layout" + } } } } diff --git a/projects/libs/flex-layout/test-setup.ssr.ts b/projects/libs/flex-layout/test-setup.ssr.ts new file mode 100644 index 00000000..f5a17de8 --- /dev/null +++ b/projects/libs/flex-layout/test-setup.ssr.ts @@ -0,0 +1,14 @@ +import '@analogjs/vitest-angular/setup-zone'; +import '@testing-library/jest-dom/vitest'; +import './_private-utils/testing/custom-matchers'; + +import { getTestBed } from '@angular/core/testing'; +import { + ServerTestingModule, + platformServerTesting, +} from '@angular/platform-server/testing'; + +getTestBed().initTestEnvironment( + ServerTestingModule, + platformServerTesting(), +); diff --git a/projects/libs/flex-layout/test-setup.ts b/projects/libs/flex-layout/test-setup.ts new file mode 100644 index 00000000..39dc2bcf --- /dev/null +++ b/projects/libs/flex-layout/test-setup.ts @@ -0,0 +1,14 @@ +import '@analogjs/vitest-angular/setup-zone'; +import '@testing-library/jest-dom/vitest'; +import './_private-utils/testing/custom-matchers'; + +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting, +} from '@angular/platform-browser-dynamic/testing'; + +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting(), +); diff --git a/projects/libs/flex-layout/test.ssr.ts b/projects/libs/flex-layout/test.ssr.ts deleted file mode 100644 index f8b8fd77..00000000 --- a/projects/libs/flex-layout/test.ssr.ts +++ /dev/null @@ -1,27 +0,0 @@ -import 'zone.js'; -import 'zone.js/testing'; - -import { getTestBed } from '@angular/core/testing'; -import { - ServerTestingModule, - platformServerTesting, -} from '@angular/platform-server/testing'; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment(ServerTestingModule, platformServerTesting()); - -declare const require: { - context( - path: string, - deep?: boolean, - filter?: RegExp, - ): { - keys(): string[]; - (id: string): T; - }; -}; - -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/projects/libs/flex-layout/tsconfig.json b/projects/libs/flex-layout/tsconfig.json new file mode 100644 index 00000000..6e294be9 --- /dev/null +++ b/projects/libs/flex-layout/tsconfig.json @@ -0,0 +1,32 @@ +{ + "compilerOptions": { + "target": "es2022", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.lib.prod.json" + }, + { + "path": "./tsconfig.spec.json" + } + ], + "extends": "../../../tsconfig.json", + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/projects/libs/flex-layout/tsconfig.lib.json b/projects/libs/flex-layout/tsconfig.lib.json index 7ed198b4..01c23351 100644 --- a/projects/libs/flex-layout/tsconfig.lib.json +++ b/projects/libs/flex-layout/tsconfig.lib.json @@ -5,12 +5,28 @@ "declaration": true, "declarationMap": false, "inlineSources": true, - "types": ["jasmine"] + "types": ["vitest"] }, "exclude": [ - "test.ts", "**/*.spec.ts", - "**/testing/**/*.ts" + "test-setup.ts", + "jest.config.ts", + "**/*.test.ts", + "vite.config.ts", + "vite.config.mts", + "vitest.config.ts", + "vitest.config.mts", + "vite.config.ssr.ts", + "vite.config.ssr.mts", + "vitest.config.ssr.ts", + "vitest.config.ssr.mts", + "**/*.test.tsx", + "**/*.spec.tsx", + "**/*.test.js", + "**/*.spec.js", + "**/*.test.jsx", + "**/*.spec.jsx", + "test-setup.ts" ], "include":[ "**/*.ts" diff --git a/projects/libs/flex-layout/tsconfig.spec.json b/projects/libs/flex-layout/tsconfig.spec.json index f312e5e9..3ca97e8c 100644 --- a/projects/libs/flex-layout/tsconfig.spec.json +++ b/projects/libs/flex-layout/tsconfig.spec.json @@ -3,15 +3,36 @@ "compilerOptions": { "outDir": "../../../out-tsc/spec", "types": [ - "jasmine" + "@vitest/browser/matchers", + "@vitest/browser/providers/playwright", + "vitest/globals", + "vitest/importMeta", + "vite/client", + "node", + "vitest" ] }, "files": [ - "test.ts" + "test-setup.ts", + "test-setup.ssr.ts" ], "include": [ + "vite.config.ts", + "vite.config.mts", + "vitest.config.ts", + "vitest.config.mts", + "vite.config.ssr.ts", + "vite.config.ssr.mts", + "vitest.config.ssr.ts", + "vitest.config.ssr.mts", + "**/*.test.ts", "**/*.spec.ts", - "**/*.d.ts", - "**/testing/**/*.ts" + "**/*.test.tsx", + "**/*.spec.tsx", + "**/*.test.js", + "**/*.spec.js", + "**/*.test.jsx", + "**/*.spec.jsx", + "**/*.d.ts" ] } diff --git a/projects/libs/flex-layout/tsconfig.spec.ssr.json b/projects/libs/flex-layout/tsconfig.spec.ssr.json deleted file mode 100644 index b6c8cb13..00000000 --- a/projects/libs/flex-layout/tsconfig.spec.ssr.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": "../../../tsconfig.json", - "compilerOptions": { - "outDir": "../../../out-tsc/spec", - "types": [ - "jasmine" - ], - "target": "ES2015" - }, - "files": [ - "test.ssr.ts" - ], - "include": [ - "**/*.spec.ts", - "**/*.d.ts", - "**/testing/**/*.ts" - ] -} diff --git a/projects/libs/flex-layout/vite.config.mts b/projects/libs/flex-layout/vite.config.mts new file mode 100644 index 00000000..30dedbca --- /dev/null +++ b/projects/libs/flex-layout/vite.config.mts @@ -0,0 +1,36 @@ +/// +import { defineConfig, UserConfig } from 'vite'; +import angular from '@analogjs/vite-plugin-angular'; +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin'; + +const isCi = !!process.env['CI']; + +export const config = { + root: __dirname, + cacheDir: '../../../node_modules/.vite/projects/libs/flex-layout'.replace('/node_modules/', isCi ? '/' : '/node_modules/'), + plugins: [angular(), nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])], + // Uncomment this if you are using workers. + // worker: { + // plugins: [ nxViteTsPaths() ], + // }, + test: { + globals: true, + include: ['**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + setupFiles: ['test-setup.ts'], + reporters: ['default'], + coverage: { + reportsDirectory: '../../../coverage/projects/libs/flex-layout', + provider: 'v8', + }, + browser: { + enabled: true, + provider: 'playwright', + // https://vitest.dev/guide/browser/playwright + name: 'chromium', + fileParallelism: isCi ? false : undefined, // Prevent hanging tests timing out in Firefox + }, + }, +} as const satisfies UserConfig; + +export default defineConfig(config); diff --git a/projects/libs/flex-layout/vite.config.ssr.mts b/projects/libs/flex-layout/vite.config.ssr.mts new file mode 100644 index 00000000..4d91918b --- /dev/null +++ b/projects/libs/flex-layout/vite.config.ssr.mts @@ -0,0 +1,51 @@ +/// +import { defineConfig, UserConfig } from 'vite'; +import { config as baseConfig } from './vite.config.mjs'; + +const isCi = !!process.env['CI']; + +/** + * Prevent flaky SSR tests + */ +const forksPoolTestOptions: UserConfig['test'] = { + pool: 'forks', + poolOptions: { + forks: { + /** + * @see https://v2.vitest.dev/config/#pooloptions-forks-singlefork + */ + singleFork: true, + }, + }, +}; + +/** + * The following options prevent SSR tests from failing in GitHub Actions + * runners due to limited resources and possibly memory leaks. + */ +const ciTestOptions: UserConfig['test'] = { + fileParallelism: false, + minWorkers: 1, + maxWorkers: 2, +}; + +export default defineConfig({ + ...baseConfig, + cacheDir: baseConfig.cacheDir.replace('/.vite/', '/.vite/ssr/'), + test: { + ...baseConfig.test, + name: '@ngbracket/ngx-layout:ssr', + browser: undefined, + environment: 'jsdom', + setupFiles: ['test-setup.ssr.ts'], + coverage: { + ...baseConfig.test.coverage, + reportsDirectory: baseConfig.test.coverage.reportsDirectory.replace( + '/coverage/', + '/coverage/ssr/' + ), + }, + ...forksPoolTestOptions, + ...(isCi ? ciTestOptions : {}), + }, +}); diff --git a/test/browser-providers.js b/test/browser-providers.js deleted file mode 100644 index b3493250..00000000 --- a/test/browser-providers.js +++ /dev/null @@ -1,44 +0,0 @@ -'use strict'; - -/* - * Browser Configuration for the different jobs in the CI. - * - * - local: Launches the browser locally on the current operating system. - * - BS: Launches the browser within BrowserStack - * - SL: Launches the browser within Saucelabs - */ -const browserConfig = { - 'ChromeHeadlessCI': { unitTest: {target: 'local', }}, - 'FirefoxHeadless': { unitTest: {target: 'local', }}, - 'iOS15': {unitTest: {target: 'saucelabs'}}, - 'Safari15': {unitTest: {target: 'browserstack'}} -}; - -/** Exports all available custom Karma browsers. */ -exports.customLaunchers = require('./karma-browsers.json'); - -/** Exports a map of configured browsers, which should run in the given platform. */ -exports.platformMap = { - 'saucelabs': buildConfiguration('unitTest', 'saucelabs'), - 'browserstack': buildConfiguration('unitTest', 'browserstack'), - 'local': buildConfiguration('unitTest', 'local'), -}; - -/** Build a list of configuration (custom launcher names). */ -function buildConfiguration(type, target) { - const targetBrowsers = Object.keys(browserConfig) - .map(browserName => [browserName, browserConfig[browserName][type]]) - .filter(([, config]) => config.target === target) - .map(([browserName]) => browserName); - - // For browsers that run locally, the browser name shouldn't be prefixed with the target - // platform. We only prefix the external platforms in order to distinguish between - // local and remote browsers in our "customLaunchers" for Karma. - if (target === 'local') { - return targetBrowsers; - } - - return targetBrowsers.map(browserName => { - return `${target.toUpperCase()}_${browserName.toUpperCase()}`; - }); -} diff --git a/test/jasmine-ssr.json b/test/jasmine-ssr.json deleted file mode 100644 index 0d02bd19..00000000 --- a/test/jasmine-ssr.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "spec_dir": "dist/spec/flex-layout", - "spec_files": ["**/*.js"], - "random": false -} diff --git a/test/karma-browsers.json b/test/karma-browsers.json deleted file mode 100644 index f3fa0976..00000000 --- a/test/karma-browsers.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "ChromeHeadlessLocal": { - "base": "ChromeHeadless", - "flags": ["--window-size=1024,768"] - }, - "ChromeHeadlessCI": { - "base": "ChromeHeadless", - "flags": ["--window-size=1024,768", "--no-sandbox"] - }, - "FirefoxHeadless": { - "base": "Firefox", - "flags": ["-headless"] - }, - "SAUCELABS_IOS15": { - "base": "SauceLabs", - "appiumVersion": "1.22.0", - "deviceOrientation": "portrait", - "browserName": "Safari", - "platformVersion": "15.0", - "platformName": "iOS", - "deviceName": "iPhone 13 Pro Max Simulator" - }, - "BROWSERSTACK_SAFARI15": { - "base": "BrowserStack", - "browser": "Safari", - "browser_version": "15.0", - "os": "OS X", - "os_version": "Monterey" - } -} diff --git a/test/karma.conf.js b/test/karma.conf.js deleted file mode 100644 index a5108b50..00000000 --- a/test/karma.conf.js +++ /dev/null @@ -1,127 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -const {customLaunchers, platformMap} = require('./browser-providers'); - -module.exports = function (config) { - config.set({ - basePath: "", - frameworks: ["jasmine", "@angular-devkit/build-angular"], - plugins: [ - require("karma-jasmine"), - require("karma-browserstack-launcher"), - require('karma-firefox-launcher'), - require("karma-sauce-launcher"), - require("karma-chrome-launcher"), - require("karma-jasmine-html-reporter"), - require("@angular-devkit/build-angular/plugins/karma"), - ], - client: { - jasmine: { - // TODO(jelbourn): re-enable random test order once we can de-flake existing issues. - random: false, - }, - clearContext: false, // leave Jasmine Spec Runner output visible in browser - }, - customLaunchers, - jasmineHtmlReporter: { - suppressAll: true, // removes the duplicated traces - }, - sauceLabs: { - testName: "Angular Layout Unit Tests", - startConnect: false, - recordVideo: false, - recordScreenshots: false, - idleTimeout: 600, - commandTimeout: 600, - maxDuration: 5400, - }, - - browserStack: { - project: "Angular Layout Unit Tests", - startTunnel: true, - retryLimit: 3, - timeout: 1800, - video: false, - }, - - // Try Websocket for a faster transmission first. Fallback to polling if necessary. - transports: ["websocket", "polling"], - browserDisconnectTimeout: 180000, - browserDisconnectTolerance: 3, - browserNoActivityTimeout: 300000, - captureTimeout: 180000, - browsers: ['ChromeHeadlessLocal'], - reporters: ["progress", "kjhtml"], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - singleRun: false, - restartOnFileChange: true, - }); - - if (process.env["CIRCLECI"]) { - const containerInstanceIndex = Number(process.env["CIRCLE_NODE_INDEX"]); - const maxParallelContainerInstances = Number( - process.env["CIRCLE_NODE_TOTAL"] - ); - const tunnelIdentifier = `angular-layout-${process.env["CIRCLE_BUILD_NUM"]}-${containerInstanceIndex}`; - const buildIdentifier = `circleci-${tunnelIdentifier}`; - const testPlatform = process.env["TEST_PLATFORM"]; - - // This defines how often a given browser should be launched in the same CircleCI - // container. This is helpful if we want to shard tests across the same browser. - const parallelBrowserInstances = - Number(process.env["KARMA_PARALLEL_BROWSERS"]) || 1; - - // In case there should be multiple instances of the browsers, we need to set up the - // the karma-parallel plugin. - if (parallelBrowserInstances > 1) { - config.frameworks.unshift("parallel"); - config.plugins.push(require("karma-parallel")); - config.parallelOptions = { - executors: parallelBrowserInstances, - shardStrategy: "round-robin", - }; - } - - if (testPlatform === "browserstack") { - config.browserStack.build = buildIdentifier; - config.browserStack.tunnelIdentifier = tunnelIdentifier; - } else if (testPlatform === "saucelabs") { - config.sauceLabs.build = buildIdentifier; - config.sauceLabs.tunnelIdentifier = tunnelIdentifier; - } - - const platformBrowsers = platformMap[testPlatform]; - const browserInstanceChunks = splitBrowsersIntoInstances( - platformBrowsers, - maxParallelContainerInstances - ); - - // Configure Karma to launch the browsers that belong to the given test platform and - // container instance. - config.browsers = browserInstanceChunks[containerInstanceIndex]; - } -}; - -/** - * Splits the specified browsers into a maximum amount of chunks. The chunk of browsers - * are being created deterministically and therefore we get reproducible tests when executing - * the same CircleCI instance multiple times. - */ -function splitBrowsersIntoInstances(browsers, maxInstances) { - let chunks = []; - let assignedBrowsers = 0; - - for (let i = 0; i < maxInstances; i++) { - const chunkSize = Math.floor( - (browsers.length - assignedBrowsers) / (maxInstances - i) - ); - chunks[i] = browsers.slice(assignedBrowsers, assignedBrowsers + chunkSize); - assignedBrowsers += chunkSize; - } - - return chunks; -} diff --git a/test/webpack-spec-ssr-bundle.js b/test/webpack-spec-ssr-bundle.js deleted file mode 100644 index e71a4043..00000000 --- a/test/webpack-spec-ssr-bundle.js +++ /dev/null @@ -1,32 +0,0 @@ -const { resolve } = require('path'); -const { AngularWebpackPlugin, AngularWebpackLoaderPath } = require('@ngtools/webpack'); - -module.exports = { - mode: 'development', - entry: './projects/libs/flex-layout/test.ssr.ts', - target: 'node', - output: { - clean: true, - path: resolve('./dist/spec/flex-layout/'), - libraryTarget: 'commonjs', - }, - resolve: { - // Add `.ts` and `.tsx` as a resolvable extension. - extensions: ['.ts', '.tsx', '.js', '.mjs'], - }, - module: { - rules: [ - { - test: /\.ts$/, - loader: AngularWebpackLoaderPath, - }, - ], - }, - plugins: [ - new AngularWebpackPlugin({ - tsconfig: resolve('projects/libs/flex-layout/tsconfig.spec.ssr.json'), - jitMode: true, - emitNgModuleScope: false, - }), - ], -}; diff --git a/vitest.workspace.ts b/vitest.workspace.ts new file mode 100644 index 00000000..75220d62 --- /dev/null +++ b/vitest.workspace.ts @@ -0,0 +1,6 @@ +export default [ + '**/*/vite.config.{ts,mts}', + '**/*/vitest.config.{ts,mts}', + '**/*/vite.config.ssr.{ts,mts}', + '**/*/vitest.config.ssr.{ts,mts}', +];