diff --git a/.github/workflows/smoke_test.yml b/.github/workflows/smoke_test.yml index b2ac8ac16..6a0b14239 100644 --- a/.github/workflows/smoke_test.yml +++ b/.github/workflows/smoke_test.yml @@ -13,26 +13,26 @@ jobs: runs-on: ubuntu-latest steps: - - name: Checkout code - uses: actions/checkout@v4 + - name: Checkout code + uses: actions/checkout@v4 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 - - name: Build Docker image - run: docker build -t phoenix-app . + - name: Build Docker image + run: docker build -t phoenix-app . - - name: Run Docker container - run: | - docker run -d --name phoenix-container -p 3000:80 phoenix-app - sleep 10 # Give some time for the container to start + - name: Run Docker container + run: | + docker run -d --name phoenix-container -p 3000:80 phoenix-app + sleep 10 # Give some time for the container to start - - name: Smoke test - run: | - # Example smoke test using curl - curl --fail http://localhost:3000/ || (docker logs phoenix-container && exit 1) + - name: Smoke test + run: | + # Example smoke test using curl + curl --fail http://localhost:3000/ || (docker logs phoenix-container && exit 1) - - name: Cleanup - run: | - docker stop phoenix-container - docker rm phoenix-container + - name: Cleanup + run: | + docker stop phoenix-container + docker rm phoenix-container diff --git a/.yarnrc.yml b/.yarnrc.yml index bb49bef57..52618ac60 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -2,14 +2,14 @@ nodeLinker: node-modules plugins: - path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs - spec: "@yarnpkg/plugin-interactive-tools" + spec: '@yarnpkg/plugin-interactive-tools' yarnPath: .yarn/releases/yarn-3.3.1.cjs checksumBehavior: update packageExtensions: - "jsroot@*": + 'jsroot@*': dependencies: - jspdf: "*" - svg2pdf.js: "*" + jspdf: '*' + svg2pdf.js: '*' diff --git a/ANGULAR_20_UPGRADE.md b/ANGULAR_20_UPGRADE.md new file mode 100644 index 000000000..c1b9324b9 --- /dev/null +++ b/ANGULAR_20_UPGRADE.md @@ -0,0 +1,14 @@ +# Angular 20 Upgrade (Clean Restart) + +This PR tracks a clean restart of the Angular 20 upgrade. + +## Initial state + +- No functional changes yet +- This PR exists to track progress and discussion + +## Plan + +- Incrementally upgrade Angular dependencies +- Fix CI issues as they arise +- Keep commits small and reviewable diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 107fe92ce..d707ebe2d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,88 +1,92 @@ -# Contributing - -## 1. Issue tracking - -The best way to start contributing is to explore the GitHub issue tracker for the repository. - -If you have already tried the application feel free to open an issue if you notice any bug or feature that could be improved. - -Include a brief description and context of the issue, and optionally choose labels to mark the issue as `bug`, `enhancement`, `question`... -to give extra information to other developers. - -## 2. Coding - -Once you are decided to start contributing on the repository, take a look at the [Developer guide](./guides/developers#readme) to get a more detailed understanding. - -### Code formatting - -We use [ESLint](http://github.com/eslint/eslint) for linting of TypeScript code and [Prettier](http://github.com/prettier/prettier) for linting of all other files. You can set up ESLint with your editor following [these instructions](https://eslint.org/docs/user-guide/integrations). We also have scripts to check and update code. - -To check: - -```sh -yarn lint -``` - -To update: - -```sh -yarn lint:fix -``` - -If you're using Visual Studio Code, you can also add the [prettier plugin](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) and then choose 'Format Document' with this linting tool. - -### Running linters against staged git files -We use [lint-staged](https://github.com/okonet/lint-staged) to make sure we are not committing the usually unwanted linting error on the CI and it helps us to focus on the actual problem if we see a failed CI output. It runs our linters everytime we do a `git commit` and automatically fixes any linting errors it sees inside the project. - -### CI tests -We make use of continuous integration (CI) tests for each code change. You can (and should!) run this locally on PRs: -```sh -yarn test:ci -``` -Please see the [relevant part](./guides/developers/test-setup.md) of the [Developer guide](./guides/developers#readme) for more information e.g. how to fix common problems. - -## 3. Commit messages - -For commit messages, we follow a tweaked version of [angular commit convention](https://github.com/angular/angular/blob/master/CONTRIBUTING.md#commit). - -Namely, every message should consist of: - -``` -
- -``` - -The `header` is mandatory and must conform to the `Commit Message Header` format (see below). - -The `body` is encouraged, and should describe in more detail what is being changed. - -### Commit message header - -``` -(): - │ │ │ - │ │ └─⫸ Summary in present tense. Not capitalized. No period at the end. - │ │ - │ └─⫸ Commit Scope: app | event-display - │ - └─⫸ Commit Type: feat | fix | docs | style | build | misc | test -``` - -Here is an example of a documentation improvement for the `phoenix-app` package: - -``` -docs(app): Added some text about commit rules -Lets add some rules for our commit messages, -based on the angular commit conventions. -``` - -## 4. Pull Requests - -When creating a `Pull Request` please include a short description explaining what has changed and why. If applicable, screenshots or GIF capture about the fix or improvement will really help. -This will help others reviewing your code so you may also reference any issues that you were working on fixing. - -Finally choose a meaningful title so your pull request can be easily identified - -## Thanks! - -Your contribution is very appreciated, thank you! +# Contributing + +## 1. Issue tracking + +The best way to start contributing is to explore the GitHub issue tracker for the repository. + +If you have already tried the application feel free to open an issue if you notice any bug or feature that could be improved. + +Include a brief description and context of the issue, and optionally choose labels to mark the issue as `bug`, `enhancement`, `question`... +to give extra information to other developers. + +## 2. Coding + +Once you are decided to start contributing on the repository, take a look at the [Developer guide](./guides/developers#readme) to get a more detailed understanding. + +### Code formatting + +We use [ESLint](http://github.com/eslint/eslint) for linting of TypeScript code and [Prettier](http://github.com/prettier/prettier) for linting of all other files. You can set up ESLint with your editor following [these instructions](https://eslint.org/docs/user-guide/integrations). We also have scripts to check and update code. + +To check: + +```sh +yarn lint +``` + +To update: + +```sh +yarn lint:fix +``` + +If you're using Visual Studio Code, you can also add the [prettier plugin](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) and then choose 'Format Document' with this linting tool. + +### Running linters against staged git files + +We use [lint-staged](https://github.com/okonet/lint-staged) to make sure we are not committing the usually unwanted linting error on the CI and it helps us to focus on the actual problem if we see a failed CI output. It runs our linters everytime we do a `git commit` and automatically fixes any linting errors it sees inside the project. + +### CI tests + +We make use of continuous integration (CI) tests for each code change. You can (and should!) run this locally on PRs: + +```sh +yarn test:ci +``` + +Please see the [relevant part](./guides/developers/test-setup.md) of the [Developer guide](./guides/developers#readme) for more information e.g. how to fix common problems. + +## 3. Commit messages + +For commit messages, we follow a tweaked version of [angular commit convention](https://github.com/angular/angular/blob/master/CONTRIBUTING.md#commit). + +Namely, every message should consist of: + +``` +
+ +``` + +The `header` is mandatory and must conform to the `Commit Message Header` format (see below). + +The `body` is encouraged, and should describe in more detail what is being changed. + +### Commit message header + +``` +(): + │ │ │ + │ │ └─⫸ Summary in present tense. Not capitalized. No period at the end. + │ │ + │ └─⫸ Commit Scope: app | event-display + │ + └─⫸ Commit Type: feat | fix | docs | style | build | misc | test +``` + +Here is an example of a documentation improvement for the `phoenix-app` package: + +``` +docs(app): Added some text about commit rules +Lets add some rules for our commit messages, +based on the angular commit conventions. +``` + +## 4. Pull Requests + +When creating a `Pull Request` please include a short description explaining what has changed and why. If applicable, screenshots or GIF capture about the fix or improvement will really help. +This will help others reviewing your code so you may also reference any issues that you were working on fixing. + +Finally choose a meaningful title so your pull request can be easily identified + +## Thanks! + +Your contribution is very appreciated, thank you! diff --git a/Dockerfile b/Dockerfile index 25b4314c6..2016e6795 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,16 +1,12 @@ +# --- Stage 1: Build Stage --- FROM nvidia/opengl:1.0-glvnd-devel-ubuntu22.04 AS build -# 0. Set frontend to noninteractive to suppress warnings during install ARG DEBIAN_FRONTEND=noninteractive -# 1. System dependencies & Python Fix -# We combine everything into ONE Run command to keep the image small and avoid errors. +# 1. System dependencies RUN apt-get update -y && \ - # Install prerequisites for Node setup - apt-get install -y --no-install-recommends curl gnupg ca-certificates && \ - # Setup Node 18 repository + apt-get install -y --no-install-recommends curl gnupg ca-certificates patch && \ curl -sL https://deb.nodesource.com/setup_18.x | bash - && \ - # Install Node, Python 3, Build Tools, and Canvas dependencies apt-get install -y --no-install-recommends \ nodejs \ build-essential \ @@ -27,36 +23,44 @@ RUN apt-get update -y && \ libjpeg-dev \ libgif-dev \ librsvg2-dev && \ - # Clean up apt lists to save space (Must be done at the very end!) rm -rf /var/lib/apt/lists/* # 2. Build Phoenix WORKDIR /phoenix + +# Copy FULL source ONCE (important) COPY . . # Enable Corepack RUN corepack enable -# Force native modules (lmdb) to build from source +# --- ENVIRONMENT OPTIMIZATIONS --- ENV npm_config_build_from_source=true - -# *** IMPORTANT FIX *** -# Tell node-gyp explicitly to use the python3 executable we just installed ENV npm_config_python=/usr/bin/python3 - -# CI environment variables ENV CI=1 ENV CYPRESS_INSTALL_BINARY=0 -# Install dependencies (verbose so you can see if python errors occur) -RUN yarn install --silent +# 🔥 OOM FIX (critical) +ENV NODE_OPTIONS=--max-old-space-size=4096 +ENV NG_BUILD_SOURCE_MAP=false +ENV UV_THREADPOOL_SIZE=1 + +# Install dependencies +RUN yarn install -# Build the web app +# Build Angular 20 app RUN yarn deploy:web -# Remove node_modules folders to save space +# Remove node_modules to shrink image RUN find . -name "node_modules" -type d -exec rm -rf "{}" + -# 3. Serve the build through NGINX +# --- Stage 2: Production Stage --- FROM nginx:alpine -COPY --from=build /phoenix/packages/phoenix-ng/docs /usr/share/nginx/html \ No newline at end of file +EXPOSE 80 + +RUN rm -rf /usr/share/nginx/html/* + +# Copy build output (docs MUST contain index.html) +COPY --from=build /phoenix/packages/phoenix-ng/docs/ /usr/share/nginx/html/ + +CMD ["nginx", "-g", "daemon off;"] diff --git a/README.md b/README.md index 24d9a8568..2ecce5202 100644 --- a/README.md +++ b/README.md @@ -30,16 +30,16 @@ You can see the stable version at [https://hepsoftwarefoundation.org/phoenix](ht ## Packages -* [`phoenix-event-display`](./packages/phoenix-event-display/) +- [`phoenix-event-display`](./packages/phoenix-event-display/) Phoenix event display framework -* [`phoenix-ng`](./packages/phoenix-ng/) +- [`phoenix-ng`](./packages/phoenix-ng/) Phoenix Angular application ## Development For running both the event display and the Angular app, you will need [Node.js](https://nodejs.org/en/download/) and Yarn. -* **N.B.** There seems to be a problem with node v21 and ARM devices. See [here](https://github.com/HSF/phoenix/issues/627) for more details. +- **N.B.** There seems to be a problem with node v21 and ARM devices. See [here](https://github.com/HSF/phoenix/issues/627) for more details. Once you have Node.js and npm (npm comes with the Node.js), install `corepack` (see [Yarn installation instructions](https://yarnpkg.com/getting-started/install)) @@ -84,32 +84,36 @@ Access the app by navigating to [`http://localhost`](http://localhost) on the br ## Documentation -* [User manual](./guides/users.md) -* [Developer guide](./guides/developers#readme) -* [How to contribute](./CONTRIBUTING.md) -* [API docs](https://hepsoftwarefoundation.org/phoenix/api-docs/) +- [User manual](./guides/users.md) +- [Developer guide](./guides/developers#readme) +- [How to contribute](./CONTRIBUTING.md) +- [API docs](https://hepsoftwarefoundation.org/phoenix/api-docs/) ## Phoenix presentations and publications -* Phoenix was presented at the 2020 [HSF/WLCG virtual workshop](https://indico.cern.ch/event/941278/contributions/4084836/) and the presentation can be watched on [YouTube](https://www.youtube.com/watch?v=aFvlf9TpyEc&t=347s) -* Phoenix was shown at CHEP 2021 ([abstract](https://www.epj-conferences.org/articles/epjconf/pdf/2021/05/epjconf_chep2021_01007.pdf)). +- Phoenix was presented at the 2020 [HSF/WLCG virtual workshop](https://indico.cern.ch/event/941278/contributions/4084836/) and the presentation can be watched on [YouTube](https://www.youtube.com/watch?v=aFvlf9TpyEc&t=347s) +- Phoenix was shown at CHEP 2021 ([abstract](https://www.epj-conferences.org/articles/epjconf/pdf/2021/05/epjconf_chep2021_01007.pdf)). ## Examples of Phoenix in use ### ATLAS + [PhoenixATLAS](https://github.com/ATLAS-experiment/PhoenixATLAS) is the official web event display of the [ATLAS experiment](https://atlas.cern). It can be used to visualise different versions of ATLAS Geometry, and uploaded events. ATLAS has also used it for embedded events in Physics briefings, e.g. [Heavyweight champions: a search for new heavy W' bosons with the ATLAS detector](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwi5vtnp8Yr8AhWw9LsIHeSPBRoQFnoECCAQAQ&url=https%3A%2F%2Fatlas.cern%2Fupdates%2Fbriefing%2Fsearch-heavy-W-bosons&usg=AOvVaw3RpPlPkM5i4gdk2S27cX-C) ### FCC + Phoenix is also used by [Future Circular Collider](https://fcc.web.cern.ch), see [here](https://fccsw.web.cern.ch/fccsw/phoenix/). ### LHCb + Phoenix is also used by [LHCb](http://lhcb.web.cern.ch), see [here](https://lhcb-eventdisplay.web.cern.ch/) ### Belle II -Phoenix is also used by [Belle II](https://www.belle2.org), see [here](https://display.belle2.org/) +Phoenix is also used by [Belle II](https://www.belle2.org), see [here](https://display.belle2.org/) ## Contact + The best way to contact us is to either open an issue in GitHub, start a [discussion](https://github.com/HSF/phoenix/discussions) or talk to us on our [gitter channel](https://gitter.im/phoenix-developers/community) (though this is not used as much these days). diff --git a/eslint.config.mjs b/eslint.config.mjs index d1825d374..d63366914 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,48 +1,52 @@ -import typescriptEslint from "@typescript-eslint/eslint-plugin"; -import prettier from "eslint-plugin-prettier"; -import tsParser from "@typescript-eslint/parser"; -import { includeIgnoreFile } from "@eslint/compat"; -import path from "node:path"; -import { fileURLToPath } from "node:url"; -import js from "@eslint/js"; -import { FlatCompat } from "@eslint/eslintrc"; +import typescriptEslint from '@typescript-eslint/eslint-plugin'; +import prettier from 'eslint-plugin-prettier'; +import tsParser from '@typescript-eslint/parser'; +import { includeIgnoreFile } from '@eslint/compat'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import js from '@eslint/js'; +import { FlatCompat } from '@eslint/eslintrc'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const compat = new FlatCompat({ - baseDirectory: __dirname, - recommendedConfig: js.configs.recommended, - allConfig: js.configs.all + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all, }); -const gitignorePath = path.resolve(__dirname, ".gitignore"); - +const gitignorePath = path.resolve(__dirname, '.gitignore'); export default [ - includeIgnoreFile(gitignorePath), - ...compat.extends( - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:prettier/recommended", - "prettier", -), { + includeIgnoreFile(gitignorePath), + ...compat.extends( + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:prettier/recommended', + 'prettier', + ), + { plugins: { - "@typescript-eslint": typescriptEslint, - prettier, + '@typescript-eslint': typescriptEslint, + prettier, }, languageOptions: { - parser: tsParser, + parser: tsParser, }, rules: { - "prettier/prettier": ["error", { - endOfLine: "auto", - }], + 'prettier/prettier': [ + 'error', + { + endOfLine: 'auto', + }, + ], - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/no-unused-vars": "off", - "@typescript-eslint/no-inferrable-types": "off", - "@typescript-eslint/explicit-module-boundary-types": "off", - "@typescript-eslint/no-empty-function": "off", - "@typescript-eslint/no-this-alias": "off", + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-unused-vars': 'off', + '@typescript-eslint/no-inferrable-types': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-empty-function': 'off', + '@typescript-eslint/no-this-alias': 'off', }, -}]; \ No newline at end of file + }, +]; diff --git a/guides/developers/README.md b/guides/developers/README.md index d2233378d..d3027d6c6 100644 --- a/guides/developers/README.md +++ b/guides/developers/README.md @@ -2,25 +2,25 @@ ## Packages -* [Phoenix event display API](../../packages/phoenix-event-display#readme) -* [Phoenix application (Angular)](../../packages/phoenix-ng#readme) +- [Phoenix event display API](../../packages/phoenix-event-display#readme) +- [Phoenix application (Angular)](../../packages/phoenix-ng#readme) ## Guides -* [Contribution guidelines](../../CONTRIBUTING.md) -* [Set up Phoenix for an experiment](./set-up-phoenix.md) -* [Phoenix event display](./event-display.md) -* [Event data format](./event_data_format.md) -* [Event data loader](./event-data-loader.md) -* [Using JSROOT](./using-jsroot.md) -* [Running with XR (AR/VR) support](./running-with-xr-support.md) -* [Convert GDML/ROOT Geometry to GLTF](./convert-gdml-to-gltf.md) -* [Geometry tips and tricks](./geometry-tips.md) -* [How to make a Phoenix release](./../release.md) -* [How Phoenix tests work](./test-setup.md) +- [Contribution guidelines](../../CONTRIBUTING.md) +- [Set up Phoenix for an experiment](./set-up-phoenix.md) +- [Phoenix event display](./event-display.md) +- [Event data format](./event_data_format.md) +- [Event data loader](./event-data-loader.md) +- [Using JSROOT](./using-jsroot.md) +- [Running with XR (AR/VR) support](./running-with-xr-support.md) +- [Convert GDML/ROOT Geometry to GLTF](./convert-gdml-to-gltf.md) +- [Geometry tips and tricks](./geometry-tips.md) +- [How to make a Phoenix release](./../release.md) +- [How Phoenix tests work](./test-setup.md) ## Phoenix architecture This is an overall model of the architecture of Phoenix. We will try to keep it up to date, but beware that some things may not be completely current. -![Architecture model](../images/architecture.svg "Phoenix architecture") +![Architecture model](../images/architecture.svg 'Phoenix architecture') diff --git a/guides/developers/convert-gdml-to-gltf.md b/guides/developers/convert-gdml-to-gltf.md index a7ac66f5c..f8d136a9e 100644 --- a/guides/developers/convert-gdml-to-gltf.md +++ b/guides/developers/convert-gdml-to-gltf.md @@ -3,40 +3,40 @@ Phoenix does not support GDML or ROOT geometry natively. However these can be converted easily to GLTF format supported by Phoenix. The idea is to convert GDML to ROOT first if needed and then ROOT to GLTF using the dedicated [Root to GLTF exported](https://github.com/HSF/root_cern-To_gltf-Exporter) -## Convert GDML to ROOT +## Convert GDML to ROOT -Root is a C++ Data Analysis Framework. One needs to install it first locally by heading into Root's 👉 [Documentation](https://root.cern/install/) and following the steps listed over there. +Root is a C++ Data Analysis Framework. One needs to install it first locally by heading into Root's 👉 [Documentation](https://root.cern/install/) and following the steps listed over there. Once that is done, one can write a simple C++ function to convert the GDML geometry into ROOT format : ```c++ -void gdml_to_root_export() +void gdml_to_root_export() { // Loading the library and geometry gSystem->Load("libGeom"); TGeoManager::Import("./path_of_your_gdml_file.gdml"); - gGeoManager->SetVisLevel(4); /// the number here can be changed based on the depth of the visibility level of your gdml file and the detail that you want to visualize it. + gGeoManager->SetVisLevel(4); /// the number here can be changed based on the depth of the visibility level of your gdml file and the detail that you want to visualize it. // Export the geometry gGeoManager->Export("filename.root"); } ``` -> Keep in mind that in order for the above function to work, you should have installed the C++ ROOT Framework on your machine. +> Keep in mind that in order for the above function to work, you should have installed the C++ ROOT Framework on your machine. -Compiling and running the above code should result in outputting the .root file from your .gdml input. +Compiling and running the above code should result in outputting the .root file from your .gdml input. -> Verify that the .root file is extracted properly. +> Verify that the .root file is extracted properly. One can visualize the .root file itself to be sure that it was extracted properly. Just load it in the [ROOT geometry display](https://root.cern/js/latest/), right click on the top level node and Draw all. - ## Concert ROOT to GLTF [Root to GLTF exported](https://github.com/HSF/root_cern-To_gltf-Exporter) is the tool to use here. Documentation is provided in the project README. The tool allows to : - * convert your geometry to GLTF - * simplify your geometry by dropping parts/details you do not want to keep - * split your geometry into subparts and map them to entries in the phoenix menu - * set the default visibility and transparency of each part + +- convert your geometry to GLTF +- simplify your geometry by dropping parts/details you do not want to keep +- split your geometry into subparts and map them to entries in the phoenix menu +- set the default visibility and transparency of each part diff --git a/guides/developers/event-data-loader.md b/guides/developers/event-data-loader.md index 1e1ff2a2b..c8ecd5608 100644 --- a/guides/developers/event-data-loader.md +++ b/guides/developers/event-data-loader.md @@ -1,11 +1,11 @@ # Event data loader -* [Introduction](#introduction) -* [Example loaders](#example-loaders) -* [Creating a custom event data loader](#creating-a-custom-event-data-loader) - * [Handling new physics objects](#handling-new-physics-objects) - * [Coding a custom loader](#coding-a-custom-loader) - * [Using the custom loader](#using-the-custom-loader) +- [Introduction](#introduction) +- [Example loaders](#example-loaders) +- [Creating a custom event data loader](#creating-a-custom-event-data-loader) + - [Handling new physics objects](#handling-new-physics-objects) + - [Coding a custom loader](#coding-a-custom-loader) + - [Using the custom loader](#using-the-custom-loader) ## Introduction @@ -17,10 +17,10 @@ The [`EventDataLoader`](../../packages/phoenix-event-display/src/loaders/event-d ## Example loaders -* [`PhoenixLoader`](../../packages/phoenix-event-display/src/loaders/phoenix-loader.ts) -* Extended from `PhoenixLoader` - * [`JiveXMLLoader`](../../packages/phoenix-event-display/src/loaders/jivexml-loader.ts) - * [`CMSLoader`](../../packages/phoenix-event-display/src/loaders/cms-loader.ts) +- [`PhoenixLoader`](../../packages/phoenix-event-display/src/loaders/phoenix-loader.ts) +- Extended from `PhoenixLoader` + - [`JiveXMLLoader`](../../packages/phoenix-event-display/src/loaders/jivexml-loader.ts) + - [`CMSLoader`](../../packages/phoenix-event-display/src/loaders/cms-loader.ts) ## Creating a custom event data loader @@ -35,14 +35,14 @@ For constructing physics object(s) currently not a part of [`PhoenixObjects`](.. Currently supported physics objects are: 1. [`PhoenixObjects`](../../packages/phoenix-event-display/src/loaders/objects/phoenix-objects.ts) (processed and loaded through `PhoenixLoader`) - 1. Tracks - 1. Jets - 1. Hits - 1. CaloClusters - 1. Muons - 1. Vertices + 1. Tracks + 1. Jets + 1. Hits + 1. CaloClusters + 1. Muons + 1. Vertices 1. [`CMSObjects`](../../packages/phoenix-event-display/src/loaders/objects/cms-objects.ts) (processed and loaded through `CMSLoader`) - 1. MuonChambers + 1. MuonChambers The following code defines a mechanism to contruct a custom object which is later sent to the event display by the custom loader in the next section. @@ -55,7 +55,9 @@ export class CustomObjects { /** * Get the 3D custom object contructed from the given parameters. */ - public static getCustomPhysicsObject(customPhysicsObjectParams: any): Object3D { + public static getCustomPhysicsObject( + customPhysicsObjectParams: any, + ): Object3D { let customObject: Object3D; // Logic to construct the 3D object from the given parameters @@ -120,7 +122,7 @@ export class CustomLoader extends PhoenixLoader { this.addObjectType( eventData.CustomPhysicsObject, CustomObjects.getCustomPhysicsObject, - 'CustomPhysicsObject' + 'CustomPhysicsObject', ); } } @@ -160,8 +162,8 @@ const customLoader = new CustomLoader(); // Specify the configuration and use your custom loader as the event data loader const configuration = { elementId: '', - eventDataLoader: customLoader -} + eventDataLoader: customLoader, +}; // Create the event display const eventDisplay = new EventDisplay(configuration); @@ -170,13 +172,11 @@ const eventDisplay = new EventDisplay(configuration); fetch('path/to/your/event/file.custom') .then((res) => res.text()) .then((rawEventData) => { - // Set the raw event data in the custom loader customLoader.setRawEventData(rawEventData); // Process the raw event data and get it in Phoenix format const eventData = customLoader.getEventData(); // Process the converted event data and display it eventDisplay.buildEventDataFromJSON(eventData); - }); ``` diff --git a/guides/developers/event-display.md b/guides/developers/event-display.md index d07f6a533..a7f042951 100644 --- a/guides/developers/event-display.md +++ b/guides/developers/event-display.md @@ -1,13 +1,13 @@ # Phoenix event display -* [Introduction](#introduction) -* [Modularity and architectural overview](#modularity-and-architectural-overview) -* [`ThreeManager`](#threemanager) -* [`UIManager`](#uimanager) - * [`PhoenixUI`](#phoenixui) - * [`PhoenixMenuNode`](#phoenixmenunode) -* [Miscellaneous managers](#miscellaneous-managers) -* [Event data loaders](#event-data-loaders) +- [Introduction](#introduction) +- [Modularity and architectural overview](#modularity-and-architectural-overview) +- [`ThreeManager`](#threemanager) +- [`UIManager`](#uimanager) + - [`PhoenixUI`](#phoenixui) + - [`PhoenixMenuNode`](#phoenixmenunode) +- [Miscellaneous managers](#miscellaneous-managers) +- [Event data loaders](#event-data-loaders) ## Introduction @@ -28,29 +28,29 @@ The `ThreeManager` is responsible for performing all `three.js` related function Here is a list of sub managers of `ThreeManager`: -* [**`AnimationsManager`**](../../packages/phoenix-event-display/src/managers/three-manager/animations-manager.ts) +- [**`AnimationsManager`**](../../packages/phoenix-event-display/src/managers/three-manager/animations-manager.ts) Responsible for animation related operations. For example, animating the camera through the event. -* [**`ColorManager`**](../../packages/phoenix-event-display/src/managers/three-manager/color-manager.ts) +- [**`ColorManager`**](../../packages/phoenix-event-display/src/managers/three-manager/color-manager.ts) Provides functionality for managing coloring of objects in the scene. -* [**`ControlsManager`**](../../packages/phoenix-event-display/src/managers/three-manager/controls-manager.ts) +- [**`ControlsManager`**](../../packages/phoenix-event-display/src/managers/three-manager/controls-manager.ts) Manages all controls related functionality which includes the camera, orbit controls and zoom controls. -* [**`EffectsManager`**](../../packages/phoenix-event-display/src/managers/three-manager/effects-manager.ts) +- [**`EffectsManager`**](../../packages/phoenix-event-display/src/managers/three-manager/effects-manager.ts) Used for managing event display effects like the outline pass for selected object. -* [**`ExportManager`**](../../packages/phoenix-event-display/src/managers/three-manager/export-manager.ts) +- [**`ExportManager`**](../../packages/phoenix-event-display/src/managers/three-manager/export-manager.ts) Manages export related functions like exporting the event display to an `.obj` file or to the `.phnx` (Phoenix scene) file. -* [**`ImportManager`**](../../packages/phoenix-event-display/src/managers/three-manager/import-manager.ts) +- [**`ImportManager`**](../../packages/phoenix-event-display/src/managers/three-manager/import-manager.ts) Manages import related functions like importing different types of 3D geometries (`.gltf`, `.root`, `.obj`, etc.) or event data (`.json`, `.xml`, etc.). -* [**`RendererManager`**](../../packages/phoenix-event-display/src/managers/three-manager/renderer-manager.ts) +- [**`RendererManager`**](../../packages/phoenix-event-display/src/managers/three-manager/renderer-manager.ts) Manages `three.js` renderers used by Phoenix including both the main and overlay renderer (used in the overlay view). -* [**`SceneManager`**](../../packages/phoenix-event-display/src/managers/three-manager/scene-manager.ts) +- [**`SceneManager`**](../../packages/phoenix-event-display/src/managers/three-manager/scene-manager.ts) Used to manage `three.js` scene related operations like traversing through the scene, applying color or opacity to 3D objects, managing scene lights, etc. -* [**`SelectionManager`**](../../packages/phoenix-event-display/src/managers/three-manager/selection-manager.ts) +- [**`SelectionManager`**](../../packages/phoenix-event-display/src/managers/three-manager/selection-manager.ts) Manages selection functionality of the event display like applying outline pass to a selected object or getting selected object info for the object selection overlay. -* [**`XRManager`**](../../packages/phoenix-event-display/src/managers/three-manager/xr/xr-manager.ts) +- [**`XRManager`**](../../packages/phoenix-event-display/src/managers/three-manager/xr/xr-manager.ts) Provides common functionality of AR/VR like setting up the session and XR camera. - * [**`ARManager`**](../../packages/phoenix-event-display/src/managers/three-manager/xr/ar-manager.ts) + - [**`ARManager`**](../../packages/phoenix-event-display/src/managers/three-manager/xr/ar-manager.ts) Extended from `XRManager`. Used to manage AR related functions like starting an AR session and showing overlay in AR mode. - * [**`VRManager`**](../../packages/phoenix-event-display/src/managers/three-manager/xr/vr-manager.ts) + - [**`VRManager`**](../../packages/phoenix-event-display/src/managers/three-manager/xr/vr-manager.ts) Extended from `XRManager`. Used to manage VR related functions like setting up VR controls and movement. Currently the sub managers are not big enough to be divided into multiple parts. However, if at some point their code gets large, it should be further divided. @@ -61,22 +61,22 @@ The `UIManager` is responsible for all the UI aspects of the `EventDisplay`. Thi It takes care of tasks like: -* Adding configuration options to Phoenix UI on loading geometry or event data. -* Setting the UI color theme to dark or light. -* Applying clipping to geometries. -* Linking UI menu options with the `EventDisplay`. -* Configuring different color options for event data. -* etc. +- Adding configuration options to Phoenix UI on loading geometry or event data. +- Setting the UI color theme to dark or light. +- Applying clipping to geometries. +- Linking UI menu options with the `EventDisplay`. +- Configuring different color options for event data. +- etc. It also has [**`ColorOptions`**](../../packages/phoenix-event-display/src/managers/ui-manager/color-options.ts) which contains logic to color event data. -### [`PhoenixUI`](../../packages/phoenix-event-display/src/managers/ui-manager/phoenix-ui.ts) +### [`PhoenixUI`](../../packages/phoenix-event-display/src/managers/ui-manager/phoenix-ui.ts) `PhoenixUI` is used as a common interface for implementing UI menus in Phoenix. It currently has the following implementations: -* [**`DatGUIMenuUI`**](../../packages/phoenix-event-display/src/managers/ui-manager/dat-gui-ui.ts) +- [**`DatGUIMenuUI`**](../../packages/phoenix-event-display/src/managers/ui-manager/dat-gui-ui.ts) Contains functions for setting up all the options in dat.GUI menu. -* [**`PhoenixMenuUI`**](../../packages/phoenix-event-display/src/managers/ui-manager/phoenix-menu/phoenix-menu-ui.ts) +- [**`PhoenixMenuUI`**](../../packages/phoenix-event-display/src/managers/ui-manager/phoenix-menu/phoenix-menu-ui.ts) Contains functions for setting up all the options in Phoenix menu. ### [`PhoenixMenuNode`](../../packages/phoenix-event-display/src/managers/ui-manager/phoenix-menu/phoenix-menu-node.ts) @@ -86,22 +86,22 @@ It is designed to be adaptable to custom UIs. This class can be used to create a For an overview, it contains functions for: -* Adding children (of the same `PhoenixMenuNode` type) to a node. -* Adding custom configuration of different types (like `checkbox`, `slider`, `button`, `label`, etc.) to a node. -* Getting and loading the state of a node. -* Removing a single child node, current node, or all child nodes. -* Finding a node in tree by name, or create one if not found. -* etc. +- Adding children (of the same `PhoenixMenuNode` type) to a node. +- Adding custom configuration of different types (like `checkbox`, `slider`, `button`, `label`, etc.) to a node. +- Getting and loading the state of a node. +- Removing a single child node, current node, or all child nodes. +- Finding a node in tree by name, or create one if not found. +- etc. ## Miscellaneous managers These are some independent managers not part of the `ThreeManager` or `UIManager` but used inside the `EventDisplay`. -* [**`LoadingManager`**](../../packages/phoenix-event-display/src/managers/loading-manager.ts) +- [**`LoadingManager`**](../../packages/phoenix-event-display/src/managers/loading-manager.ts) Maintains a list of loadable items with addable callbacks that are called when the loading of an item completes. -* [**`StateManager`**](../../packages/phoenix-event-display/src/managers/state-manager.ts) +- [**`StateManager`**](../../packages/phoenix-event-display/src/managers/state-manager.ts) Manages the state of the `EventDisplay` including the Phoenix menu state, camera state and clipping state. The state can be saved to a file and loaded later. -* [**`URLOptionsManager`**](../../packages/phoenix-event-display/src/managers/url-options-manager.ts) +- [**`URLOptionsManager`**](../../packages/phoenix-event-display/src/managers/url-options-manager.ts) Manages `EventDisplay` options available through the URL like loading an event through the URL (`file` & `type`) or hiding overlay widgets (`hideWidgets`). ## Event data loaders diff --git a/guides/developers/event_data_format.md b/guides/developers/event_data_format.md index 5785de7f5..e74c52347 100644 --- a/guides/developers/event_data_format.md +++ b/guides/developers/event_data_format.md @@ -1,10 +1,9 @@ # Event Data Format -Phoenix internally makes use of a JSON format to represent event data. The JSON format is designed to be human-readable, but still compact. +Phoenix internally makes use of a JSON format to represent event data. The JSON format is designed to be human-readable, but still compact. There is a [event_file_checker.py](https://github.com/HSF/phoenix-helpers/blob/main/checkers/event_file_checker.py) validation script provided in the [phoenix-helpers](https://github.com/HSF/phoenix-helpers) repository. - ### Event data #### Supporting multiple events @@ -22,7 +21,7 @@ The format is the following. } ``` -`EVENT_KEY` is an identifier for each event (it could be a number, or a descriptive string e.g. 'HWW example'), and the format of each `event_object` would be as follows: +`EVENT_KEY` is an identifier for each event (it could be a number, or a descriptive string e.g. 'HWW example'), and the format of each `event_object` would be as follows: ```js { @@ -41,36 +40,34 @@ The format is the following. Where: -* `event number` and `run number` are hopefully obvious, -* `OBJECT_TYPE` is one of the supported types that will be mentioned [below](#supported-object-types), -* `COLLECTION_NAME` is an arbitrary name used to label this particular collection (you can have as many collections of each `OBJECT_TYPE` as you like). -* `...` can be any other optional key/value pairs. Phoenix understands by default the following keys which will be used in the event Metadata panel, valuse being free strings : - * `ls` will be printed for `LS` entry - * `lumiblock` will be printed for `LumiBlock` entry - * `time` : will be printed for `Data recorded` entry - +- `event number` and `run number` are hopefully obvious, +- `OBJECT_TYPE` is one of the supported types that will be mentioned [below](#supported-object-types), +- `COLLECTION_NAME` is an arbitrary name used to label this particular collection (you can have as many collections of each `OBJECT_TYPE` as you like). +- `...` can be any other optional key/value pairs. Phoenix understands by default the following keys which will be used in the event Metadata panel, valuse being free strings : + - `ls` will be printed for `LS` entry + - `lumiblock` will be printed for `LumiBlock` entry + - `time` : will be printed for `Data recorded` entry You can find various examples in the [files folder](../../docs/assets/files): -* [atlas.json](../../docs/assets/files/event_data/ATLAS_calibration.json) is an ATLAS Calibration file containing a single event. -* [LHCbEventData.json](../../docs/assets/files/lhcb/LHCbEventData.json) is a large file containing LHCb simulated events. - +- [atlas.json](../../docs/assets/files/event_data/ATLAS_calibration.json) is an ATLAS Calibration file containing a single event. +- [LHCbEventData.json](../../docs/assets/files/lhcb/LHCbEventData.json) is a large file containing LHCb simulated events. #### Supported object types Currently Phoenix supports the following physics objects: -* Tracks - the trajectory of a charged particle (usually in a magnetic field) -* Jets - cones of activity within the detector -* Hits - individual measurements, which can either be points, lines, or boxes -* CaloClusters - cluters of deposits in a calorimeter -* [Planar]CaloCells - deposits of energy in a calorimeter (planar and cylindrical are supported). -* Vertices - optionally linked to tracks -* MissingEnergy -* Compound objects which link 'Tracks' and 'Clusters' : - * Muons - * Photons - * Electrons +- Tracks - the trajectory of a charged particle (usually in a magnetic field) +- Jets - cones of activity within the detector +- Hits - individual measurements, which can either be points, lines, or boxes +- CaloClusters - cluters of deposits in a calorimeter +- [Planar]CaloCells - deposits of energy in a calorimeter (planar and cylindrical are supported). +- Vertices - optionally linked to tracks +- MissingEnergy +- Compound objects which link 'Tracks' and 'Clusters' : + - Muons + - Photons + - Electrons (other shapes may be supported in the future) @@ -78,63 +75,77 @@ What follows in the detailed format of each object type. Any extra entry is cons In all the descriptions, `opt` means that the attribute described is optional. #### 'Tracks' + Tracks is a list of Track objects with the following attrbutes : -* `pos` - list of positions along the track, each given as a triplet [x, y, z] -* `color` (opt) - Hexadecimal string representing the color to draw the track. -* `dparams` (opt) - parameters of the tracks. 5 floats matching d0, z0, phi, theta, qOverP -* `d0`, `z0`, `phi`, `eta`, `qOverP` (opt) - parameters of the tracks, taking precedence over `dparams` + +- `pos` - list of positions along the track, each given as a triplet [x, y, z] +- `color` (opt) - Hexadecimal string representing the color to draw the track. +- `dparams` (opt) - parameters of the tracks. 5 floats matching d0, z0, phi, theta, qOverP +- `d0`, `z0`, `phi`, `eta`, `qOverP` (opt) - parameters of the tracks, taking precedence over `dparams` #### 'Jets' + Jets are a list of Jet objects with the following attributes : -* `eta` - eta direction -* `phi`- phi direction -* `theta` (opt) - if not given, eta is used to calculate theta -* `energy`, `et` (opt) - energy of the Jets, used to set its length -* `coneR` (opt) - the radius of the jet cone. If not given, radius is 10% of the length -* `color` (opt) - Hexadecimal string representing the color to draw the jet. + +- `eta` - eta direction +- `phi`- phi direction +- `theta` (opt) - if not given, eta is used to calculate theta +- `energy`, `et` (opt) - energy of the Jets, used to set its length +- `coneR` (opt) - the radius of the jet cone. If not given, radius is 10% of the length +- `color` (opt) - Hexadecimal string representing the color to draw the jet. #### 'Hits' + Hits can be defined in 2 ways. Either as an array of positions or as an array of Hit objects. In case aray of positions is used, Hits have format [ [x,y,z], [x,y,z], [x,y,z], ... ] i.e. an array of 3-dim arrays containing Cartesian coordinate. These will be rendered as points. In case of array of Hit objects, format is [ hit, hit, hit ] where the hit object has the following attributes : -* `type` (opt) - type of Hit. One of `Point`, `Line` or `Box`. Defaults to Point -* `pos` - an array of number describing the hit - * for `Point` type, it should have 3 coordinates : [x, y, z] - * for `Line` type, it should have 6 coordinates : [x0, y0, z0, x1, y1, z1] - * for `Box` type, it should have 6 coordinates : [x, y, z, length in x, width in y, height in z] -* `color` (opt) - Hexadecimal string representing the color to draw the hit. -Note that all hit objects in a given Hits collection have to be of the same type. + +- `type` (opt) - type of Hit. One of `Point`, `Line` or `Box`. Defaults to Point +- `pos` - an array of number describing the hit + - for `Point` type, it should have 3 coordinates : [x, y, z] + - for `Line` type, it should have 6 coordinates : [x0, y0, z0, x1, y1, z1] + - for `Box` type, it should have 6 coordinates : [x, y, z, length in x, width in y, height in z] +- `color` (opt) - Hexadecimal string representing the color to draw the hit. + Note that all hit objects in a given Hits collection have to be of the same type. #### 'CaloClusters' and 'CaloCells' + We are talking here of cylindrical calorimeters, the deposits will be displayed as boxes with fixed square base and length matching the energy. The orientation of the boxes is radial. 'CaloClusters' and 'CaloCells' are lists of CaloCluster and CaloCell objects respectively. These have the same set of attributes : -* `energy` - energy of the cluster or deposit, converted to length of the displayed box -* `phi` - phi direction -* `eta` - eta direction - + +- `energy` - energy of the cluster or deposit, converted to length of the displayed box +- `phi` - phi direction +- `eta` - eta direction + #### 'PlanarCaloCells' + We are talking here of planar calorimeters, the deposits will be displayed as boxes with square base of cellSize and length matching the energy. These boxes will be positions on a given plane (the plane pf the calorimeter) at the specified coordinates in this plane. PlanarCaloCells is an object with the following attributes : -* `plane` - the Calorimeter plane, defined as 4 numbers, giving a direction (normal to the plane) and a distance to the origin : [dx, dy, dz, length] -* `cells` - a list of Cell objects with the following attributes: - * `cellSize` - size of the Calorimeter cell which fired - * `energy` - energy of the deposit, converted to length of the displayed box - * `pos` - position of the cell within the calo plane given as a pair [x, y] - * `color` (opt) - Hexadecimal string representing the color to draw the cell. + +- `plane` - the Calorimeter plane, defined as 4 numbers, giving a direction (normal to the plane) and a distance to the origin : [dx, dy, dz, length] +- `cells` - a list of Cell objects with the following attributes: + - `cellSize` - size of the Calorimeter cell which fired + - `energy` - energy of the deposit, converted to length of the displayed box + - `pos` - position of the cell within the calo plane given as a pair [x, y] + - `color` (opt) - Hexadecimal string representing the color to draw the cell. #### 'Vertices + 'Vertices are a list of Vertex objects with the following attributes : -* `color` (opt) - Hexadecimal string representing the color to draw the vertex. -* one of the 2 following sets of attributes - * `x`, `y`, `z` : describing the position of the vertex - * `pos` : array of 3 numbers (x, y, z) describing the position of the vertex + +- `color` (opt) - Hexadecimal string representing the color to draw the vertex. +- one of the 2 following sets of attributes + - `x`, `y`, `z` : describing the position of the vertex + - `pos` : array of 3 numbers (x, y, z) describing the position of the vertex #### MissingEnergy + This is a list of objects, displayed as dashed lines starting from 0 and staying in the plane z=0. Each object has the following attributes : -* `etx`, `ety` : describing the direction of the line -* `color` (opt) - Hexadecimal string representing the color to draw the line. + +- `etx`, `ety` : describing the direction of the line +- `color` (opt) - Hexadecimal string representing the color to draw the line. diff --git a/guides/developers/geometry-tips.md b/guides/developers/geometry-tips.md index b3acde3be..fd02491e7 100644 --- a/guides/developers/geometry-tips.md +++ b/guides/developers/geometry-tips.md @@ -2,22 +2,23 @@ This guide is intended to provide some tips on creating an experimental geometry for use within Phoenix. -At the time of writing, the threejs recommended geometry format is gltf (GL Transmission Format) or glb (the binary version of gltf). See this [threejs documentation](https://threejs.org/docs/#manual/en/introduction/Loading-3D-models) for details. +At the time of writing, the threejs recommended geometry format is gltf (GL Transmission Format) or glb (the binary version of gltf). See this [threejs documentation](https://threejs.org/docs/#manual/en/introduction/Loading-3D-models) for details. One big advantage of gltf/glb is Phoenix can use the embedded GLTF scenes to populate the geometry menu. So rather than having a lot of separate files for the different parts of an experiment, and then adding them individually to the top level scene and UI one-by-one e.g.: + ```typescript - this.eventDisplay.loadGLTFGeometry( - 'assets/geometry/barrel.gltf', - 'Barrel', - 'Inner Detector', - 1000 - ); - this.eventDisplay.loadGLTFGeometry( - 'assets/geometry/end-cap.gltf', - 'Endcap', - 'Inner Detector', - 1000 - ); +this.eventDisplay.loadGLTFGeometry( + 'assets/geometry/barrel.gltf', + 'Barrel', + 'Inner Detector', + 1000, +); +this.eventDisplay.loadGLTFGeometry( + 'assets/geometry/end-cap.gltf', + 'Endcap', + 'Inner Detector', + 1000, +); ``` you can instead load _one_ file, and Phoenix will loop over the internal structure and create the appropriate geometry UI entries. See the LHCB interactive example for how this works in practice (specifically, [lhcb.component.ts](lhcb.component.ts) is where the geometry is loaded). @@ -25,12 +26,15 @@ you can instead load _one_ file, and Phoenix will loop over the internal structu It is also discussed [here](https://github.com/HSF/phoenix/blob/main/guides/users.md#phoenix-menu-definition-in-gltf). # Creating gltf/glb content + ## Blender + [Blender](https://www.blender.org) is an incredibly powerful _free_ tool to create 3D content. It also has an comprehensive set of importers and exporters (including an gltf exporter, obviously) meaning you can load content from almost any format and save it as compressed glb. It also understands scenes (see the Blender [documentation](https://docs.blender.org/manual/en/latest/scene_layout/scene/introduction.html) for more), so you can load many different geometry files, put them in their own scenes and export, and then Phoenix will fill the geometry UI menu for you as described above. -* **N.B.** When exporting content from Blender it is very important that you remember to [Apply](https://docs.blender.org/manual/en/latest/scene_layout/object/editing/apply.html) all transformations - otherwise you can be in the situation that your geometry looks perfect inside Blender, but is the wrong size/rotation when viewed in Phoenix. +- **N.B.** When exporting content from Blender it is very important that you remember to [Apply](https://docs.blender.org/manual/en/latest/scene_layout/object/editing/apply.html) all transformations - otherwise you can be in the situation that your geometry looks perfect inside Blender, but is the wrong size/rotation when viewed in Phoenix. ## From ROOT or GDML + Read [this guide](convert-gdml-to-gltf.md) for how to convert from gdml or ROOT to gltf. ## Converting gltf to glb @@ -38,6 +42,7 @@ Read [this guide](convert-gdml-to-gltf.md) for how to convert from gdml or ROOT Converting a gltf to glb, especially compressed glb, can lead to huge reductions in size (see [#530](https://github.com/HSF/phoenix/pull/530) for an example). The recommended way to do this is with the [gltf-pipeline](https://github.com/CesiumGS/gltf-pipeline) command line tool e.g.: + ``` gltf-pipeline -i LHCb.gltf -o LHCb.glb -d ``` diff --git a/guides/developers/set-up-phoenix.md b/guides/developers/set-up-phoenix.md index 9a76bf3bb..424c348fb 100644 --- a/guides/developers/set-up-phoenix.md +++ b/guides/developers/set-up-phoenix.md @@ -1,19 +1,19 @@ # Set up Phoenix for an experiment -* [Introduction](#introduction) -* [Setting up an Angular app](#setting-up-an-angular-app) - * [Create the Angular app](#create-the-angular-app) - * [Set up `phoenix-ui-components`](#set-up-phoenix-ui-components) - * [Import `PhoenixUIModule`](#import-phoenixuimodule) - * [Import required styles](#import-required-styles) - * [Set up assets](#set-up-assets) -* [Setting up the event display](#setting-up-the-event-display) - * [Create an experiment component](#create-an-experiment-component) - * [Set up the route](#set-up-the-route) -* [Resolving problems](#resolving-problems) - * [Angular version](#angular-version) - * [npm error gyp ERR](#npm-error-gyp-ERR) - * [ng build errors](#ng-build-errors) +- [Introduction](#introduction) +- [Setting up an Angular app](#setting-up-an-angular-app) + - [Create the Angular app](#create-the-angular-app) + - [Set up `phoenix-ui-components`](#set-up-phoenix-ui-components) + - [Import `PhoenixUIModule`](#import-phoenixuimodule) + - [Import required styles](#import-required-styles) + - [Set up assets](#set-up-assets) +- [Setting up the event display](#setting-up-the-event-display) + - [Create an experiment component](#create-an-experiment-component) + - [Set up the route](#set-up-the-route) +- [Resolving problems](#resolving-problems) + - [Angular version](#angular-version) + - [npm error gyp ERR](#npm-error-gyp-ERR) + - [ng build errors](#ng-build-errors) ## Introduction @@ -55,7 +55,6 @@ Now that you have an app set up. Install the `phoenix-ui-components` package to npm install phoenix-ui-components ``` - #### Import required styles Add the the Bootstrap stylesheet to the `src/index.html` file of your app. @@ -64,13 +63,15 @@ Add the the Bootstrap stylesheet to the `src/index.html` file of your app. ... - + ``` #### Add Phoenix Theming - Go to the `src/styles.scss` file of your app and import the global Phoenix styles. ```scss @@ -108,7 +109,10 @@ Now, open the `main-display.component.html` file and use the Phoenix UI componen - +
@@ -117,43 +121,52 @@ Now, open the `main-display.component.html` file and use the Phoenix UI componen The `[rootNode]="phoenixMenuRoot"` specified here for the Phoenix menu will be a defined in `main-display.component.ts`. One can easily customize the app-ui-menu. There are 2 main ways : - - just adding buttons at the end of it by inserting the corresponding components with the `app-ui-menu` declaration : - ```html - - - - ``` - will add a button to cycle through events every 5s at the end of the menu bar - - redefine the manu bar completely using `app-ui-menu-wrapper` instead of `app-ui-menu` : - ```html - - - - - ``` - This defines a very restricted menu with only the event selector and the event cycling button + +- just adding buttons at the end of it by inserting the corresponding components with the `app-ui-menu` declaration : + +```html + + + +``` + +will add a button to cycle through events every 5s at the end of the menu bar + +- redefine the manu bar completely using `app-ui-menu-wrapper` instead of `app-ui-menu` : + +```html + + + + +``` + +This defines a very restricted menu with only the event selector and the event cycling button Finally, open the `main-display.component.ts` file and initialize the Phoenix event display using the intermediate Angular `EventDisplayService`. ```ts import { Component, OnInit } from '@angular/core'; -import {EventDisplayService, PhoenixUIModule} from 'phoenix-ui-components'; -import { Configuration, PhoenixLoader, PresetView, ClippingSetting, PhoenixMenuNode } from 'phoenix-event-display'; +import { EventDisplayService, PhoenixUIModule } from 'phoenix-ui-components'; +import { + Configuration, + PhoenixLoader, + PresetView, + ClippingSetting, + PhoenixMenuNode, +} from 'phoenix-event-display'; @Component({ selector: 'app-main-display', - imports: [ - PhoenixUIModule - ], + imports: [PhoenixUIModule], templateUrl: './main-display.component.html', - styleUrl: './main-display.component.scss' + styleUrl: './main-display.component.scss', }) export class MainDisplayComponent implements OnInit { - /** The root Phoenix menu node. */ - phoenixMenuRoot = new PhoenixMenuNode("Phoenix Menu"); + phoenixMenuRoot = new PhoenixMenuNode('Phoenix Menu'); - constructor(private eventDisplay: EventDisplayService) { } + constructor(private eventDisplay: EventDisplayService) {} ngOnInit() { // Create the event display configuration @@ -164,18 +177,26 @@ export class MainDisplayComponent implements OnInit { new PresetView('Left View', [0, 0, -12000], [0, 0, 0], 'left-cube'), new PresetView('Center View', [-500, 12000, 0], [0, 0, 0], 'top-cube'), // more fancy view, looking at point 0,0,5000 and with some clipping - new PresetView('Right View', [0, 0, 12000], [0, 0, 5000], 'right-cube', ClippingSetting.On, 90, 90) + new PresetView( + 'Right View', + [0, 0, 12000], + [0, 0, 5000], + 'right-cube', + ClippingSetting.On, + 90, + 90, + ), ], // default view with x, y, z of the camera and then x, y, z of the point it looks at - defaultView: [4000, 0, 4000, 0, 0 ,0], + defaultView: [4000, 0, 4000, 0, 0, 0], phoenixMenuRoot: this.phoenixMenuRoot, // Event data to load by default defaultEventFile: { // (Assuming the file exists in the `src/assets` directory of the app) eventFile: 'assets/jive_xml_event_data.xml', - eventType: 'jivexml' + eventType: 'jivexml', }, - } + }; // Initialize the event display this.eventDisplay.init(configuration); @@ -186,8 +207,8 @@ export class MainDisplayComponent implements OnInit { } ``` -(!) It is assumed that you use your data and detector geometry instead of links provided in -`eventFile` and `loadGLTFGeometry` above. For testing purposes, you may take geometry and events at: +(!) It is assumed that you use your data and detector geometry instead of links provided in +`eventFile` and `loadGLTFGeometry` above. For testing purposes, you may take geometry and events at: - [geometry examples](https://github.com/HSF/phoenix/tree/main/packages/phoenix-ng/projects/phoenix-app/src/assets/geometry) - [event examples](https://github.com/HSF/phoenix/tree/main/packages/phoenix-ng/projects/phoenix-app/src/assets/files) @@ -207,18 +228,15 @@ Now, navigate to `src/app/app.routes.ts` and add the routing for the experiment ```ts import { Routes } from '@angular/router'; -import {MainDisplayComponent} from "./main-display/main-display.component"; +import { MainDisplayComponent } from './main-display/main-display.component'; -export const routes: Routes = [ - { path: '', component: MainDisplayComponent } -]; +export const routes: Routes = [{ path: '', component: MainDisplayComponent }]; ``` This will serve the experiment component through the base URL `/` of the server. Finally, you can start the app with `npm start` and navigate to `http://localhost:4200` where you will see the experiment component in action. - ## Resolving problems ### Angular version @@ -226,22 +244,21 @@ Finally, you can start the app with `npm start` and navigate to `http://localhos Phoenix event display may delay the updates of the Angular framework. Your application should have the same version of Angular as `phoenix-ui-components` package -You may check "dependencies" section of +You may check "dependencies" section of [phoenix-ui-components package.json here](https://github.com/HSF/phoenix/blob/main/packages/phoenix-ng/package.json) -then copy the correct version to your package.json and run `npm install`. - +then copy the correct version to your package.json and run `npm install`. ### npm error gyp ERR -What is happening? +What is happening? One of the javascript dependencies may try to build some C++ code on your machine. For this it uses node-gyp, which in turn, uses your machine compiler and installed -libraries. This may cause some errors. +libraries. This may cause some errors. -1. On Windows, you may experience `npm error gyp ERR` +1. On Windows, you may experience `npm error gyp ERR` while trying to run ` npm install phoenix-ui-components`. In general, you need - to install and make available modern python version and MS C++ redistributable. - The later might be installed standalone or as a bundle of VS Community edition. + to install and make available modern python version and MS C++ redistributable. + The later might be installed standalone or as a bundle of VS Community edition. [More in this SO answer](https://stackoverflow.com/questions/57879150/how-can-i-solve-error-gypgyp-errerr-find-vsfind-vs-msvs-version-not-set-from) 2. On linux machines you may need libgl and gcc building tools to be installed. E.g. on ubuntu: @@ -251,9 +268,9 @@ libraries. This may cause some errors. ### ng build errors -The provided setup should work while one runs `ng serve` or its alias `npm start`. -There is another common command `ng build` or `npm run build` same as `npm run watch`. +The provided setup should work while one runs `ng serve` or its alias `npm start`. +There is another common command `ng build` or `npm run build` same as `npm run watch`. The later commands my not run falling with multiple errors around `require("...")`. -One of the options of fixing it is using custom webpack builder configuration in +One of the options of fixing it is using custom webpack builder configuration in angular.json file. You may look [here as an example](https://github.com/eic/firebird/blob/main/firebird-ng/angular.json) -and adjust it for your project \ No newline at end of file +and adjust it for your project diff --git a/guides/developers/test-setup.md b/guides/developers/test-setup.md index 57a60fa5c..cd5ba501f 100644 --- a/guides/developers/test-setup.md +++ b/guides/developers/test-setup.md @@ -1,121 +1,135 @@ -# Test Setup in Phoenix - -* [Introduction](#introduction) -* [Unit Tests in Phoenix](#unit-tests-in-phoenix) - * [Unit Test Syntax in Jest Example](#unit-test-syntax-in-jest-example) - * [Jest Configuration](#jest-configuration) -* [E2E Tests in Phoenix](#e2e-tests-in-phoenix) - * [E2E Test Syntax in Cypress Example](#e2e-test-syntax-in-cypress-example) - * [Cypress Configuration](#cypress-configuration) -* [Running tests locally](#running-the-tests-locally) -* [Fixing problems](#fixing-problems) - -## Introduction - -Phoenix has 2 types of tests: [unit tests](https://en.wikipedia.org/wiki/Unit_testing) and [end-to-end tests](https://www.browserstack.com/guide/end-to-end-testing). In essence, Unit tests are written to test individual components of the project which includes the [phoenix-event-display](https://github.com/HSF/phoenix/blob/main/packages/phoenix-event-display/README.md) library and the Angular components used by the Phoenix application inside [phoenix-ng](https://github.com/HSF/phoenix/tree/main/packages/phoenix-ng/) package, while the end-to-end tests are used to test user interactions with the [Phoenix application](https://github.com/HSF/phoenix/blob/main/packages/phoenix-ng/projects/phoenix-app/). - -## Unit Tests in Phoenix - -While writing unit tests, we make sure to follow these practices: - -1. We focus on testing the functionality of the underlying code and not on the code coverage. We believe code coverage is achieved as a by-product of writing good tests. Unit tests are not written to reach a certain code coverage percentage, they are written to test the behavior of a unit (class, function, etc). If we test the behaviors properly, we will automatically have high code coverage. -2. We try not to duplicate implementation logic in the tests as errors may repeat if our tests mirror the implementation logic. -3. We try to keep the tests as simple as possible and you can find them ending with the extension `.test.ts`. We try to avoid using complex logic in the tests as it may be difficult to debug and maintain. -4. We try to keep the tests as readable as possible. We use the `it('', () => {})` syntax to write the description of a test and make sure that it is clear enough as to what is being tested. Inside the test cases, you can use either the [AAA (Arrange, Act, Assert)](https://automationpanda.com/2020/07/07/arrange-act-assert-a-pattern-for-writing-good-tests/) or [GWT (Given, When, Then)](https://martinfowler.com/bliki/GivenWhenThen.html) pattern to clearly define the phases of your test case. We should test "what" the function does instead of "how" it does it. -5. We have to make sure that the tests are deterministic and not flaky. Flaky tests are tests that fail intermittently and are difficult to debug, i.e., the tests we write should always present the same behavior. For this, each test case has to be isolated and independent of the other test cases. -6. Since Phoenix uses `WebGLRenderer` extensively, we make sure to mock it whenever we are using it inside our tests. This is because [WebGLRenderer](https://threejs.org/docs/#api/en/renderers/WebGLRenderer) is not supported by [jsdom](https://jestjs.io/docs/configuration#testenvironment-string) due to non-availability of `WebGLContext` in Node.js and the browserless nature of `jsdom` and hence, we mock it using our custom helper [`webgl-mock.ts`](https://github.com/HSF/phoenix/blob/main/packages/phoenix-event-display/src/tests/helpers/webgl-mock.ts). -7. The code we are supposed to test should not be mocked. We should mock the code that is not supposed to be tested. For example, if we are testing the `EventDisplay` class, we should not mock the `EventDisplay` class, but we should mock the `WebGLRenderer` class as it is not supposed to be tested in this case. -8. `Constants` are not tested separately. Testing the code that uses those constants should be sufficient. `Types` are not tested as they don't contain any logic that has to be tested. -9. We should avoid having assertions that have nothing to do with the test case and the code to be tested. Proper usage of assertions is important to make sure that the test case is testing just the right thing. For example, if we are testing a function that returns a [Group](https://threejs.org/docs/#api/en/objects/Group), we can check if the correct objects exist inside it. And then we can check if the objects are instances of the correct class and have the correct properties, etc. -10. `toBeTruthy` and `toBe(true)` are not the same. `toBeTruthy` checks if the value is truthy, i.e., it checks if the value is not `null`, `undefined`, `0`, `false`, `NaN`, or an empty string. `toBe(true)` checks if the value is exactly `true` as it calls `Object.is` to compare values. Make sure to do the [Setup and Teardown](https://jestjs.io/docs/setup-teardown) of the test cases properly. For example, if we are testing a function that adds an object to a list, we should make sure to remove the object from the list after the test case is executed. This is because the test cases are executed in parallel and if we don't remove the object from the list, it may affect the other test cases. -11. To debug when the tests fail, just check the console for the `expected` and `actual` values as Jest provides rich context. If the values are not what you expect, you can use the `console.log` statements to debug the code as well. - -### Unit Test Syntax in Jest Example - -``` -describe('ClassName', () => { - it('should create an instance', () => { - const className = new ClassName(); - expect(className).toBeTruthy(); - }); -}); -``` - -Some simple examples of unit tests written in TypeScript using Jest: -- [info-logger.test.ts](https://github.com/HSF/phoenix/blob/main/packages/phoenix-event-display/src/tests/helpers/info-logger.test.ts) -- [file-explorer.component.test.ts](https://github.com/HSF/phoenix/blob/main/packages/phoenix-ng/projects/phoenix-ui-components/lib/components/file-explorer/file-explorer.component.test.ts) - -### Jest Configuration - -The configuration file for Jest inside `phoenix-event-display` is [jest.conf.js](https://github.com/HSF/phoenix/blob/main/packages/phoenix-event-display/configs/jest.conf.js) and the configuration file for Jest inside `phoenix-ng` is [jest.conf.js](https://github.com/HSF/phoenix/blob/main/packages/phoenix-ng/jest.config.js). Both require slightly different configurations so we decided not to merge them. - -To learn more about Jest and related documentation, we recommend you check out the following links: -- [Jest Docs](https://jestjs.io/docs/getting-started) -- [Jest API](https://jestjs.io/docs/api) - -## E2E Tests in Phoenix - -While writing end-to-end tests, we make sure to follow these practices: - -1. We utilized visual (screenshot) testing a lot in each experiment with a minimum of 1 screenshot covering each experiment except in the case of `CMSComponent` where we have multiple screenshots to test the different user-specific scenarios. -2. We make sure that we are taking screenshots only if something changes on the event display as it is rendered on a canvas and we can't really assert anything otherwise. We can also check if the expected elements exist (not all but only 2-3 elements) in the DOM. -3. We avoid using common classes like `.btn-primary` to access an element as it may change in the future if someone introduces a new button and the test will immediately break. We should either find a more suitable selector that will not change or add `data-testid` attribute to elements so that they can be queried in tests individually. -4. Most of the tests inside the `CMSComponent` are written while thinking about the most common workflows that a user will go through while browsing the Phoenix app. -5. We make sure to run and debug the e2e tests locally in the browser provided by Cypress (via `cy.open`) as it helps us to know the reason of failure in a better way. -6. Both in the case of unit tests and the e2e tests, we avoid using timeouts as much as possible. We use `cy.wait` only when we are sure that the element will be rendered in the DOM after a certain time. - -### End-to-End Test Syntax in Cypress Example - -``` -describe('CMSComponent', () => { - it('should render the CMS component', () => { - cy.visit('/cms'); - cy.get('[data-testid="cms-component"]').should('be.visible'); - }); -}); -``` - -### Cypress Configuration - -The configuration file for e2e tests is [cypress.config.ts](https://github.com/HSF/phoenix/blob/main/packages/phoenix-ng/cypress.config.ts). More examples of e2e tests can be found inside the [phoenix-app/cypress](https://github.com/HSF/phoenix/tree/main/packages/phoenix-ng/projects/phoenix-app/cypress) folder and we recommend you to check out the [official Cypress documentation](https://docs.cypress.io/guides/overview/why-cypress) as it is quite fantastic and more than enough to get started with Cypress. - - -# Running the tests locally - -Ideally you test locally before pushing a PR. You can do this with e.g: -``` -yarn test:ci -``` -(please note you will need to have `jest` installed locally for this to work) - -# Fixing problems -If you see issues, either in the CI or from your local tests (see above), then follow these tips to help solve the problems. - -## Failures in documentation coverage -We currently fail the CI if the documentation coverage drops below 100%. If this happens, the easiest way to find the undocumentation code is to run `compodoc` locally, _without_ the coverage requirement. i.e. do: -``` -cd packages/phoenix-event-display -yarn compodoc -p configs/compodoc.conf.json -``` -Now you can look in `documentation` and see which code is not fully documented. -Once you have fixed it, you can check the CI would succeed with: -``` -# From the root directory -yarn docs:coverage -``` - -## Failures in linting - -If you see errors like: -``` -10:43 error Insert `,` prettier/prettier -``` -Then firstly, you should be able to spot them locally by running: -```sh -yarn lint -``` -and you can automatically fix them with: -```sh -yarn lint:fix -``` -(obviously you will then need to commit and push the fixes). +# Test Setup in Phoenix + +- [Introduction](#introduction) +- [Unit Tests in Phoenix](#unit-tests-in-phoenix) + - [Unit Test Syntax in Jest Example](#unit-test-syntax-in-jest-example) + - [Jest Configuration](#jest-configuration) +- [E2E Tests in Phoenix](#e2e-tests-in-phoenix) + - [E2E Test Syntax in Cypress Example](#e2e-test-syntax-in-cypress-example) + - [Cypress Configuration](#cypress-configuration) +- [Running tests locally](#running-the-tests-locally) +- [Fixing problems](#fixing-problems) + +## Introduction + +Phoenix has 2 types of tests: [unit tests](https://en.wikipedia.org/wiki/Unit_testing) and [end-to-end tests](https://www.browserstack.com/guide/end-to-end-testing). In essence, Unit tests are written to test individual components of the project which includes the [phoenix-event-display](https://github.com/HSF/phoenix/blob/main/packages/phoenix-event-display/README.md) library and the Angular components used by the Phoenix application inside [phoenix-ng](https://github.com/HSF/phoenix/tree/main/packages/phoenix-ng/) package, while the end-to-end tests are used to test user interactions with the [Phoenix application](https://github.com/HSF/phoenix/blob/main/packages/phoenix-ng/projects/phoenix-app/). + +## Unit Tests in Phoenix + +While writing unit tests, we make sure to follow these practices: + +1. We focus on testing the functionality of the underlying code and not on the code coverage. We believe code coverage is achieved as a by-product of writing good tests. Unit tests are not written to reach a certain code coverage percentage, they are written to test the behavior of a unit (class, function, etc). If we test the behaviors properly, we will automatically have high code coverage. +2. We try not to duplicate implementation logic in the tests as errors may repeat if our tests mirror the implementation logic. +3. We try to keep the tests as simple as possible and you can find them ending with the extension `.test.ts`. We try to avoid using complex logic in the tests as it may be difficult to debug and maintain. +4. We try to keep the tests as readable as possible. We use the `it('', () => {})` syntax to write the description of a test and make sure that it is clear enough as to what is being tested. Inside the test cases, you can use either the [AAA (Arrange, Act, Assert)](https://automationpanda.com/2020/07/07/arrange-act-assert-a-pattern-for-writing-good-tests/) or [GWT (Given, When, Then)](https://martinfowler.com/bliki/GivenWhenThen.html) pattern to clearly define the phases of your test case. We should test "what" the function does instead of "how" it does it. +5. We have to make sure that the tests are deterministic and not flaky. Flaky tests are tests that fail intermittently and are difficult to debug, i.e., the tests we write should always present the same behavior. For this, each test case has to be isolated and independent of the other test cases. +6. Since Phoenix uses `WebGLRenderer` extensively, we make sure to mock it whenever we are using it inside our tests. This is because [WebGLRenderer](https://threejs.org/docs/#api/en/renderers/WebGLRenderer) is not supported by [jsdom](https://jestjs.io/docs/configuration#testenvironment-string) due to non-availability of `WebGLContext` in Node.js and the browserless nature of `jsdom` and hence, we mock it using our custom helper [`webgl-mock.ts`](https://github.com/HSF/phoenix/blob/main/packages/phoenix-event-display/src/tests/helpers/webgl-mock.ts). +7. The code we are supposed to test should not be mocked. We should mock the code that is not supposed to be tested. For example, if we are testing the `EventDisplay` class, we should not mock the `EventDisplay` class, but we should mock the `WebGLRenderer` class as it is not supposed to be tested in this case. +8. `Constants` are not tested separately. Testing the code that uses those constants should be sufficient. `Types` are not tested as they don't contain any logic that has to be tested. +9. We should avoid having assertions that have nothing to do with the test case and the code to be tested. Proper usage of assertions is important to make sure that the test case is testing just the right thing. For example, if we are testing a function that returns a [Group](https://threejs.org/docs/#api/en/objects/Group), we can check if the correct objects exist inside it. And then we can check if the objects are instances of the correct class and have the correct properties, etc. +10. `toBeTruthy` and `toBe(true)` are not the same. `toBeTruthy` checks if the value is truthy, i.e., it checks if the value is not `null`, `undefined`, `0`, `false`, `NaN`, or an empty string. `toBe(true)` checks if the value is exactly `true` as it calls `Object.is` to compare values. Make sure to do the [Setup and Teardown](https://jestjs.io/docs/setup-teardown) of the test cases properly. For example, if we are testing a function that adds an object to a list, we should make sure to remove the object from the list after the test case is executed. This is because the test cases are executed in parallel and if we don't remove the object from the list, it may affect the other test cases. +11. To debug when the tests fail, just check the console for the `expected` and `actual` values as Jest provides rich context. If the values are not what you expect, you can use the `console.log` statements to debug the code as well. + +### Unit Test Syntax in Jest Example + +``` +describe('ClassName', () => { + it('should create an instance', () => { + const className = new ClassName(); + expect(className).toBeTruthy(); + }); +}); +``` + +Some simple examples of unit tests written in TypeScript using Jest: + +- [info-logger.test.ts](https://github.com/HSF/phoenix/blob/main/packages/phoenix-event-display/src/tests/helpers/info-logger.test.ts) +- [file-explorer.component.test.ts](https://github.com/HSF/phoenix/blob/main/packages/phoenix-ng/projects/phoenix-ui-components/lib/components/file-explorer/file-explorer.component.test.ts) + +### Jest Configuration + +The configuration file for Jest inside `phoenix-event-display` is [jest.conf.js](https://github.com/HSF/phoenix/blob/main/packages/phoenix-event-display/configs/jest.conf.js) and the configuration file for Jest inside `phoenix-ng` is [jest.conf.js](https://github.com/HSF/phoenix/blob/main/packages/phoenix-ng/jest.config.js). Both require slightly different configurations so we decided not to merge them. + +To learn more about Jest and related documentation, we recommend you check out the following links: + +- [Jest Docs](https://jestjs.io/docs/getting-started) +- [Jest API](https://jestjs.io/docs/api) + +## E2E Tests in Phoenix + +While writing end-to-end tests, we make sure to follow these practices: + +1. We utilized visual (screenshot) testing a lot in each experiment with a minimum of 1 screenshot covering each experiment except in the case of `CMSComponent` where we have multiple screenshots to test the different user-specific scenarios. +2. We make sure that we are taking screenshots only if something changes on the event display as it is rendered on a canvas and we can't really assert anything otherwise. We can also check if the expected elements exist (not all but only 2-3 elements) in the DOM. +3. We avoid using common classes like `.btn-primary` to access an element as it may change in the future if someone introduces a new button and the test will immediately break. We should either find a more suitable selector that will not change or add `data-testid` attribute to elements so that they can be queried in tests individually. +4. Most of the tests inside the `CMSComponent` are written while thinking about the most common workflows that a user will go through while browsing the Phoenix app. +5. We make sure to run and debug the e2e tests locally in the browser provided by Cypress (via `cy.open`) as it helps us to know the reason of failure in a better way. +6. Both in the case of unit tests and the e2e tests, we avoid using timeouts as much as possible. We use `cy.wait` only when we are sure that the element will be rendered in the DOM after a certain time. + +### End-to-End Test Syntax in Cypress Example + +``` +describe('CMSComponent', () => { + it('should render the CMS component', () => { + cy.visit('/cms'); + cy.get('[data-testid="cms-component"]').should('be.visible'); + }); +}); +``` + +### Cypress Configuration + +The configuration file for e2e tests is [cypress.config.ts](https://github.com/HSF/phoenix/blob/main/packages/phoenix-ng/cypress.config.ts). More examples of e2e tests can be found inside the [phoenix-app/cypress](https://github.com/HSF/phoenix/tree/main/packages/phoenix-ng/projects/phoenix-app/cypress) folder and we recommend you to check out the [official Cypress documentation](https://docs.cypress.io/guides/overview/why-cypress) as it is quite fantastic and more than enough to get started with Cypress. + +# Running the tests locally + +Ideally you test locally before pushing a PR. You can do this with e.g: + +``` +yarn test:ci +``` + +(please note you will need to have `jest` installed locally for this to work) + +# Fixing problems + +If you see issues, either in the CI or from your local tests (see above), then follow these tips to help solve the problems. + +## Failures in documentation coverage + +We currently fail the CI if the documentation coverage drops below 100%. If this happens, the easiest way to find the undocumentation code is to run `compodoc` locally, _without_ the coverage requirement. i.e. do: + +``` +cd packages/phoenix-event-display +yarn compodoc -p configs/compodoc.conf.json +``` + +Now you can look in `documentation` and see which code is not fully documented. +Once you have fixed it, you can check the CI would succeed with: + +``` +# From the root directory +yarn docs:coverage +``` + +## Failures in linting + +If you see errors like: + +``` +10:43 error Insert `,` prettier/prettier +``` + +Then firstly, you should be able to spot them locally by running: + +```sh +yarn lint +``` + +and you can automatically fix them with: + +```sh +yarn lint:fix +``` + +(obviously you will then need to commit and push the fixes). diff --git a/guides/developers/using-jsroot.md b/guides/developers/using-jsroot.md index cef39503e..301ba9a8a 100644 --- a/guides/developers/using-jsroot.md +++ b/guides/developers/using-jsroot.md @@ -23,14 +23,14 @@ const eventDisplay = new EventDisplay({}); // To load `.json.gz` geometry eventDisplay.loadRootJSONGeometry( 'https://root.cern/js/files/geom/cms.json.gz', - 'CMS Detector' + 'CMS Detector', ); // To load `.root` geometry eventDisplay.loadRootGeometry( 'https://root.cern/js/files/geom/atlas2.root', 'atlas', // Object name - 'ATLAS Detector' + 'ATLAS Detector', ); ``` @@ -45,7 +45,7 @@ const eventDisplay = new EventDisplay({}); // Create the JSRootEventLoader and specify URL of the .root event data file const jsrootEventLoader = new JSRootEventLoader( - 'https://root.cern/js/files/geom/tracks_hits.root' + 'https://root.cern/js/files/geom/tracks_hits.root', ); // Get the event data in Phoenix format by specifying an array of objects (e.g "tracks;1", "hits;1") in the .root file diff --git a/guides/release.md b/guides/release.md index 2c85da4f8..f232a6c81 100644 --- a/guides/release.md +++ b/guides/release.md @@ -9,7 +9,7 @@ There are two ways to make a release. ## Automated release using GitHub Actions -***CURRENTLY NOT WORKING*** +**_CURRENTLY NOT WORKING_** 1. Go to the "Actions" tab of the Phoenix repository. 2. Navigate to the `phoenix-release` workflow. diff --git a/guides/users.md b/guides/users.md index 51da0e964..69674ea8a 100644 --- a/guides/users.md +++ b/guides/users.md @@ -1,21 +1,21 @@ # User manual -* [Getting started](#getting-started) - * [The demo grid](#the-demo-grid) - * [The Phoenix standard UI](#the-phoenix-standard-ui) - * [The Phoenix menu](#the-phoenix-menu) - * [The Phoenix iconbar](#the-phoenix-iconbar) - * [Collections info panel](#collections-info-panel) - * [Keyboard controls](#keyboard-controls) - * [AR/VR mode](#arvr-mode) - * [Event display state](#event-display-state) - * [Labels](#labels) - * [URL options](#url-options) -* [Using Phoenix with your own data](#using-phoenix-with-your-own-data) - * [Event data](#event-data) - * [Format](#format) - * [Supported object types](#supported-object-types) - * [Geometry](#geometry) +- [Getting started](#getting-started) + - [The demo grid](#the-demo-grid) + - [The Phoenix standard UI](#the-phoenix-standard-ui) + - [The Phoenix menu](#the-phoenix-menu) + - [The Phoenix iconbar](#the-phoenix-iconbar) + - [Collections info panel](#collections-info-panel) + - [Keyboard controls](#keyboard-controls) + - [AR/VR mode](#arvr-mode) + - [Event display state](#event-display-state) + - [Labels](#labels) + - [URL options](#url-options) +- [Using Phoenix with your own data](#using-phoenix-with-your-own-data) + - [Event data](#event-data) + - [Format](#format) + - [Supported object types](#supported-object-types) + - [Geometry](#geometry) ## Getting started @@ -23,18 +23,18 @@ When you first open the Phoenix [demo](https://hepsoftwarefoundation.org/phoenix) (see the developer [instructions](../guides/developers.md) for how to check it out and run locally) you will see a grid of Phoenix demos: - * **Playground** : a blank canvas where you can load 3D objects, move them around and generally experiment with Phoenix - * **Geometry display** : a simple demo of generating geometry procedurally/programmatically with Phoenix - * **ATLAS** : the ATLAS experiment demo. Here you can load `Phoenix JSON` or `JiveXML` event data files, and visualise physics objects such as Jets, Tracks, Calo cells etc within the ATLAS geometry. - * **LHCb** : the LHCb experiment demo shows a detailed view of the LHCb geometry, as well as tracks passing through it. - * **CMS** : the CMS experiment demo. Here you select from various event data files, and visualise physics objects such as Jets, Tracks, Calo cells etc within the CMS geometry. One special feature of the CMS demo is the visualisation of Muon Chambers. - * **TrackML** : this shows the imaginary detector created for the TrackML [challenges](https://www.kaggle.com/c/trackml-particle-identification). - +- **Playground** : a blank canvas where you can load 3D objects, move them around and generally experiment with Phoenix +- **Geometry display** : a simple demo of generating geometry procedurally/programmatically with Phoenix +- **ATLAS** : the ATLAS experiment demo. Here you can load `Phoenix JSON` or `JiveXML` event data files, and visualise physics objects such as Jets, Tracks, Calo cells etc within the ATLAS geometry. +- **LHCb** : the LHCb experiment demo shows a detailed view of the LHCb geometry, as well as tracks passing through it. +- **CMS** : the CMS experiment demo. Here you select from various event data files, and visualise physics objects such as Jets, Tracks, Calo cells etc within the CMS geometry. One special feature of the CMS demo is the visualisation of Muon Chambers. +- **TrackML** : this shows the imaginary detector created for the TrackML [challenges](https://www.kaggle.com/c/trackml-particle-identification). + ### The Phoenix standard UI Since Phoenix is configurable, it is not guaranteed that all demos/implementations will look the same, but a typical Phoenix view is shown below: -![Main view of Phoenix](images/phoenix-main-view.png "Main View of Phoenix") +![Main view of Phoenix](images/phoenix-main-view.png 'Main View of Phoenix') In the centre, you see the 3D view of the experiment and event data. @@ -52,62 +52,62 @@ In general the Phoenix menu is used to determine what geometry and event data is All items in the Phoenix menu have the same basic layout: -![Phoenix menu item](images/phoenix-menu-item.png "Phoenix menu item") +![Phoenix menu item](images/phoenix-menu-item.png 'Phoenix menu item') From left-to-right: - * A slider, which determines if the item (or the sub-items beneath it) is visible - * The name of the item - * A gear icon, to open the options for this item - * And an arrow to open/collapse sub items. +- A slider, which determines if the item (or the sub-items beneath it) is visible +- The name of the item +- A gear icon, to open the options for this item +- And an arrow to open/collapse sub items. As an example of options, here is an expanded geometry view: -![Phoenix geometry menu item](images/phoenix-menu-geometry.png "Phoenix geometry menu item") +![Phoenix geometry menu item](images/phoenix-menu-geometry.png 'Phoenix geometry menu item') you can see that we can change the opacity and colour of the geometry item. Another example of options: here is an expanded event data view, showing how you can apply cuts to track collections: -![Phoenix event menu item](images/phoenix-menu-item-event-options.png "Phoenix event menu item") +![Phoenix event menu item](images/phoenix-menu-item-event-options.png 'Phoenix event menu item') Another important point: clicking on the gear icon at the very top allows you to save/load the menu configuration. -![Phoenix menu options](images/phoenix-menu-main-options.png "Main options of the Phoenix menu") +![Phoenix menu options](images/phoenix-menu-main-options.png 'Main options of the Phoenix menu') ### The Phoenix iconbar At the bottom of the main view you have the Phoenix iconbar (which can be shown/hidden by clicking on the arrow on top): -![Phoenix iconbar](images/phoenix-icon-bar.png "Phoenix icon bar") +![Phoenix iconbar](images/phoenix-icon-bar.png 'Phoenix icon bar') From left to right, you can access the following functions: - * **Zoom** : the plus/minus icons allow you to zoom in and out, respectively - * **View options and Tools** : clicking on this will allow you to access some preset views, and to view/hide the axes - * **Auto rotate** : clicking on this will set the camera orbiting the origin - * **Dark/light theme** : switches between dark and light themes - * **Geometry clipping** : allows you to 'slice' away parts of the geometry in order to view the event data/geometry inside - * **Orthographic/perspective view** : allows you to switch between different view modes - * **Overlay** : enables/disables the view overlay (a separate overlaid view of the detector) - * **Object selection** : once enabled, a new window will pop up which will display information about selected objects - * **Info panel** : shows a window displaying relevant information from Phoenix (for example, about events opened) - * **Collision animation** : starts a simple animation, simulating a collision and subsequent event data appearing - * **Preset animations** : shows a list of preset animations that can be triggered by clicking on the preset - * **Collection information** : displays a panel showing textual information about the event data collections (see below) - * **Performance mode** : clicking on this will turn on performance mode which makes Phoenix faster but decreases quality - * **VR mode** : will make Phoenix enter Virtual Reality (VR) mode - * **AR mode** : will make Phoenix enter Augmented Reality (AR) mode - * **Screenshot mode** : will enter screenshot mode by hiding all overlays - * **Import/export** : allows you to load new event data, or detector geometry (depending on configuration) - * **Create shareable link** : opens a dialog for creating a shareable link/URL to the experiment - * **Browse events** : [optional] if setup on the server, you can browse a specified directory for example events. +- **Zoom** : the plus/minus icons allow you to zoom in and out, respectively +- **View options and Tools** : clicking on this will allow you to access some preset views, and to view/hide the axes +- **Auto rotate** : clicking on this will set the camera orbiting the origin +- **Dark/light theme** : switches between dark and light themes +- **Geometry clipping** : allows you to 'slice' away parts of the geometry in order to view the event data/geometry inside +- **Orthographic/perspective view** : allows you to switch between different view modes +- **Overlay** : enables/disables the view overlay (a separate overlaid view of the detector) +- **Object selection** : once enabled, a new window will pop up which will display information about selected objects +- **Info panel** : shows a window displaying relevant information from Phoenix (for example, about events opened) +- **Collision animation** : starts a simple animation, simulating a collision and subsequent event data appearing +- **Preset animations** : shows a list of preset animations that can be triggered by clicking on the preset +- **Collection information** : displays a panel showing textual information about the event data collections (see below) +- **Performance mode** : clicking on this will turn on performance mode which makes Phoenix faster but decreases quality +- **VR mode** : will make Phoenix enter Virtual Reality (VR) mode +- **AR mode** : will make Phoenix enter Augmented Reality (AR) mode +- **Screenshot mode** : will enter screenshot mode by hiding all overlays +- **Import/export** : allows you to load new event data, or detector geometry (depending on configuration) +- **Create shareable link** : opens a dialog for creating a shareable link/URL to the experiment +- **Browse events** : [optional] if setup on the server, you can browse a specified directory for example events. The AR and VR mode will only be available if your device (or headset) supports AR or VR. #### Collections info panel -![Phoenix collections info](images/phoenix-collections-info-pane.png "Phoenix collections info") +![Phoenix collections info](images/phoenix-collections-info-pane.png 'Phoenix collections info') This displays some more details about the various collections. And under the **Selection** column are two icons, which allow you to either zoom the camera to the object, or to select (and highlight) it. @@ -115,12 +115,12 @@ This displays some more details about the various collections. And under the **S Phoenix support various keyboard controls: - * **Shift-T** : change theme - * **Shift-Number** : switch to that numbered preset view - * **Shift-R** : rotate view - * **+/-** : zoom - * **Shift-C** : enable clipping - * **Shift-V** : switch between orthographic and perspective +- **Shift-T** : change theme +- **Shift-Number** : switch to that numbered preset view +- **Shift-R** : rotate view +- **+/-** : zoom +- **Shift-C** : enable clipping +- **Shift-V** : switch between orthographic and perspective ### AR/VR mode @@ -128,9 +128,9 @@ Phoenix relies on the WebXR functionality of [three.js](https://threejs.org), so **VR:** Currently the VR has been tested on the following devices: - * Android smartphones - * Oculus Quest (make sure you use the Oculus browser - Firefox reality is currently unusably slow) - * Oculus Rift S (as of writing, the best option seems to be to use google Chrome canary i.e. beta) +- Android smartphones +- Oculus Quest (make sure you use the Oculus browser - Firefox reality is currently unusably slow) +- Oculus Rift S (as of writing, the best option seems to be to use google Chrome canary i.e. beta) **AR:** On Android you will need the latest version of Chrome. On iOS, you will need to use the [WebXR Viewer from Mozilla](https://apps.apple.com/us/app/webxr-viewer/id1295998056) to make AR work.\ Make sure your device supports AR and is listed here: @@ -143,13 +143,13 @@ Phoenix keeps track of the event display state which can be saved as a JSON file The state includes: - * Phoenix menu configuration - * Geometry clipping - * Camera position +- Phoenix menu configuration +- Geometry clipping +- Camera position The "Save state" and "Load state" buttons are in the options of top level Phoenix menu node. -![Event display state](images/phoenix-event-display-state.png "Event display state") +![Event display state](images/phoenix-event-display-state.png 'Event display state') ### Labels @@ -157,7 +157,7 @@ Labels can be added to individual physics objects from the collections info pane You can also save the added labels in a JSON file from the options of "Labels" Phoenix menu node and load them later. -![Phoenix labels](images/phoenix-labels.png "Phoenix labels") +![Phoenix labels](images/phoenix-labels.png 'Phoenix labels') ### URL options @@ -169,10 +169,10 @@ http://localhost:4200/#/atlas?=&= ' sequence(s) this will be interpreted as the separator between different levels of the menu. Hence scene 'A > B > C' will have name C and be located in submenu B of menu entry A GLTF scenes can also have extra data attached to them, in a dictionnary called `extras` attached to the scene object. 2 entries of that dictionnary will be interpreted by phoenix : -* if a`visible` entry exists with boolean value, phoenix will interpret is as the initial visibility of that scene. By default scenes are visible -* if an `opacity` entry exist with floating point value within [0, 1], phoenix will interpret is as the opacity of that scene. By default opacity is 1 + +- if a`visible` entry exists with boolean value, phoenix will interpret is as the initial visibility of that scene. By default scenes are visible +- if an `opacity` entry exist with floating point value within [0, 1], phoenix will interpret is as the opacity of that scene. By default opacity is 1 diff --git a/packages/phoenix-ng/ANGULAR_20_UPGRADE.md b/packages/phoenix-ng/ANGULAR_20_UPGRADE.md new file mode 100644 index 000000000..58d03895a --- /dev/null +++ b/packages/phoenix-ng/ANGULAR_20_UPGRADE.md @@ -0,0 +1,13 @@ +# Angular 20 Upgrade (Clean Restart) + +This branch restarts the Angular 20 upgrade from a clean `main` base. + +Initial state: + +- No functional changes yet +- This PR is opened to track progress and discussion + +Next steps: + +- Incremental Angular 20 upgrade +- Fix CI issues as they arise diff --git a/packages/phoenix-ng/package.json b/packages/phoenix-ng/package.json index c30e4911d..7b651b778 100644 --- a/packages/phoenix-ng/package.json +++ b/packages/phoenix-ng/package.json @@ -6,7 +6,7 @@ "start": "ng serve phoenix-app", "start:ssl": "ng serve phoenix-app --ssl --host 0.0.0.0", "start:single": "ng serve phoenix-app --configuration singleEvent", - "build:prod": "ng build --configuration production", + "build:prod": "node --max-old-space-size=4096 ./node_modules/@angular/cli/bin/ng build --configuration production", "build:app": "yarn build:prod phoenix-app", "build:ui-components": "yarn build:prod phoenix-ui-components", "test": "jest --no-cache", @@ -17,23 +17,19 @@ "prettier:check": "yarn prettier --check .", "prettier:write": "yarn prettier --write .", "eslint": "eslint projects/**/*.ts", - "eslint:fix": "yarn eslint --fix", - "deploy": "mv ../../docs/api-docs ../../api-docs && yarn build:app --output-path ../../docs --base-href \"/phoenix/\" && cp ../../docs/index.html ../../docs/404.html && mv ../../api-docs ../../docs/api-docs", - "version": "yarn deploy", - "deploy:web": "yarn build:app --output-path ./docs --base-href \"./\" && cp ./docs/index.html ./docs/404.html", - "deploy:web:single": "ng build phoenix-app --configuration singleEvent --output-path ./docs --base-href \"./\" && cp ./docs/index.html ./docs/404.html" + "eslint:fix": "yarn eslint --fix" }, "dependencies": { - "@angular/animations": "^19.2.17", - "@angular/cdk": "^19.2.19", - "@angular/common": "^19.2.17", - "@angular/compiler": "^19.2.17", - "@angular/core": "^19.2.17", - "@angular/forms": "^19.2.17", - "@angular/material": "^19.2.19", - "@angular/platform-browser": "^19.2.17", - "@angular/platform-browser-dynamic": "^19.2.17", - "@angular/router": "^19.2.17", + "@angular/animations": "~20.0.0", + "@angular/cdk": "~20.0.0", + "@angular/common": "~20.0.0", + "@angular/compiler": "~20.0.0", + "@angular/core": "~20.0.0", + "@angular/forms": "~20.0.0", + "@angular/material": "~20.0.0", + "@angular/platform-browser": "~20.0.0", + "@angular/platform-browser-dynamic": "~20.0.0", + "@angular/router": "~20.0.0", "css-element-queries": "^1.2.3", "jszip": "^3.10.1", "phoenix-event-display": "^3.0.5", @@ -42,22 +38,21 @@ "rxjs": "^7.8.2", "three": "~0.178.0", "tslib": "^2.8.1", - "typescript": "~5.5.4", - "zone.js": "^0.16.0" + "zone.js": "~0.15.0" }, "devDependencies": { - "@angular-devkit/build-angular": "^19.2.19", - "@angular/cli": "~19.2.19", - "@angular/compiler-cli": "~19.2.17", - "@angular/language-service": "^19.2.17", - "@frsource/cypress-plugin-visual-regression-diff": "^3.3.10", + "@angular-devkit/build-angular": "~20.0.0", + "@angular/cli": "~20.0.0", + "@angular/compiler-cli": "~20.0.0", + "@angular/language-service": "~20.0.0", "@types/qrcode": "^1.5.6", - "concurrently": "^9.2.1", - "cypress": "^15.7.1", + "concurrently": "^8.2.2", + "cypress": "^13.17.0", "jest": "^29.7.0", - "jest-preset-angular": "^14.6.2", - "ng-packagr": "^19.2.2", - "ts-jest": "^29.3.4" + "jest-preset-angular": "^14.3.2", + "ng-packagr": "~20.0.0", + "ts-jest": "^29.3.4", + "typescript": "~5.5.4" }, "peerDependencies": { "jspdf": "*" diff --git a/packages/phoenix-ng/projects/phoenix-app/src/app/sections/playground/playground.component.test.ts b/packages/phoenix-ng/projects/phoenix-app/src/app/sections/playground/playground.component.test.ts index 761367604..8d12f02a0 100644 --- a/packages/phoenix-ng/projects/phoenix-app/src/app/sections/playground/playground.component.test.ts +++ b/packages/phoenix-ng/projects/phoenix-app/src/app/sections/playground/playground.component.test.ts @@ -1,3 +1,4 @@ +import { Overlay } from '@angular/cdk/overlay'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { EventDisplayService } from 'phoenix-ui-components'; import { PlaygroundComponent } from './playground.component'; @@ -49,6 +50,20 @@ describe('PlaygroundComponent', () => { provide: EventDisplayService, useValue: mockEventDisplay, }, + // --- ADDED MOCK FOR OVERLAY BELOW --- + { + provide: Overlay, + useValue: { + create: () => ({ + attach: () => ({ + instance: { showOverlay: false }, + destroy: jest.fn(), + }), + dispose: jest.fn(), + }), + }, + }, + // ------------------------------------- ], }).compileComponents(); }); diff --git a/packages/phoenix-ng/projects/phoenix-app/src/app/sections/trackml/trackml.component.test.ts b/packages/phoenix-ng/projects/phoenix-app/src/app/sections/trackml/trackml.component.test.ts index e46290d71..eccec07a4 100644 --- a/packages/phoenix-ng/projects/phoenix-app/src/app/sections/trackml/trackml.component.test.ts +++ b/packages/phoenix-ng/projects/phoenix-app/src/app/sections/trackml/trackml.component.test.ts @@ -1,11 +1,12 @@ import { ComponentFixture, TestBed, fakeAsync } from '@angular/core/testing'; - +import { NO_ERRORS_SCHEMA } from '@angular/core'; import { TrackmlComponent } from './trackml.component'; import { EventDisplayService } from 'phoenix-ui-components'; import { HttpClient } from '@angular/common/http'; import { of } from 'rxjs/internal/observable/of'; import { AppModule } from '../../app.module'; import { Vector3 } from 'three'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; describe('TrackmlComponent', () => { let component: TrackmlComponent; @@ -31,7 +32,7 @@ describe('TrackmlComponent', () => { listenToLoadedEventsChange: jest.fn(), getUIManager: jest.fn().mockReturnThis(), getThreeManager: jest.fn().mockReturnThis(), - getPresetViews: jest.fn().mockReturnThis().mockReturnValue([]), + getPresetViews: jest.fn().mockReturnValue([]), getDarkTheme: jest.fn().mockReturnThis(), buildEventDataFromJSON: jest.fn(), setOverlayRenderer: jest.fn().mockReturnThis(), @@ -46,17 +47,21 @@ describe('TrackmlComponent', () => { mockStateManager.startClippingAngle.onUpdate = jest.fn(); mockStateManager.openingClippingAngle.onUpdate = jest.fn(); - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [AppModule], + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [AppModule, NoopAnimationsModule], providers: [ { provide: EventDisplayService, useValue: mockEventDisplay, }, ], + schemas: [ + NO_ERRORS_SCHEMA, // 🔑 blocks phoenix-ui-components internals + ], }).compileComponents(); - http = TestBed.get(HttpClient); + + http = TestBed.inject(HttpClient); }); beforeEach(() => { @@ -69,33 +74,28 @@ describe('TrackmlComponent', () => { expect(component).toBeTruthy(); }); - // Test if event data is processed it('should process event data', fakeAsync(() => { jest.spyOn(component, 'loadHits'); jest.spyOn(component, 'loadParticles'); jest.spyOn(component, 'loadTruth'); - // Calling a fake implementation of `loadTrackMLData` jest .spyOn(component, 'loadTrackMLData') .mockImplementation(() => { (component as any).loadHits(`hit_id,x,y,z,volume_id,layer_id,module_id - 1,-64.4099,-7.1637,-1502.5,7,2,1 - 2,-55.3361,0.635342,-1502.5,7,2,1`); +1,-64.4099,-7.1637,-1502.5,7,2,1 +2,-55.3361,0.635342,-1502.5,7,2,1`); + (component as any).loadParticles(`particle_id,vx,vy,vz,px,py,pz,q,nhits - 4503668346847232,-0.00928816,0.00986098,-0.0778789,-0.0552689,0.323272,-0.203492,-1,8 - 4503737066323968,-0.00928816,0.00986098,-0.0778789,-0.948125,0.470892,2.01006,1,11`); +4503668346847232,-0.00928816,0.00986098,-0.0778789,-0.0552689,0.323272,-0.203492,-1,8 +4503737066323968,-0.00928816,0.00986098,-0.0778789,-0.948125,0.470892,2.01006,1,11`); + (component as any) .loadTruth(`hit_id,particle_id,tx,ty,tz,tpx,tpy,tpz,weight - 1,0,-64.4116,-7.16412,-1502.5,250710,-149908,-956385, 0 - 2,22525763437723648,-55.3385,0.630805,-1502.5,-0.570605,0.0283904,-15.4922,9.86408e-06`); +1,0,-64.4116,-7.16412,-1502.5,250710,-149908,-956385,0 +2,22525763437723648,-55.3385,0.630805,-1502.5,-0.570605,0.0283904,-15.4922,9.86408e-06`); }); - // Testing by using a mock value from http get (not valid for every type of event data) - // spyOn(http, 'get').and.returnValue(of(`hit_id,x,y,z,volume_id,layer_id,module_id - // 1,-64.4099,-7.1637,-1502.5,7,2,1 - // 2,-55.3361,0.635342,-1502.5,7,2,1`)); - component.ngOnInit(); expect((component as any).loadTrackMLData).toHaveBeenCalled(); @@ -108,9 +108,10 @@ describe('TrackmlComponent', () => { jest.spyOn(component, 'loadTrackMLData'); jest.spyOn(http, 'get').mockReturnValue( of(`hit_id,x,y,z,volume_id,layer_id,module_id - 1,-64.4099,-7.1637,-1502.5,7,2,1 - 2,-55.3361,0.635342,-1502.5,7,2,1`), +1,-64.4099,-7.1637,-1502.5,7,2,1 +2,-55.3361,0.635342,-1502.5,7,2,1`), ); + component.ngOnInit(); expect((component as any).loadTrackMLData).toHaveBeenCalled(); diff --git a/packages/phoenix-ng/projects/phoenix-ui-components/lib/components/ui-menu/object-selection/object-selection.component.test.ts b/packages/phoenix-ng/projects/phoenix-ui-components/lib/components/ui-menu/object-selection/object-selection.component.test.ts index 220542a17..047e3956e 100644 --- a/packages/phoenix-ng/projects/phoenix-ui-components/lib/components/ui-menu/object-selection/object-selection.component.test.ts +++ b/packages/phoenix-ng/projects/phoenix-ui-components/lib/components/ui-menu/object-selection/object-selection.component.test.ts @@ -1,30 +1,46 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { ObjectSelectionComponent } from './object-selection.component'; import { Overlay } from '@angular/cdk/overlay'; -import { EventDisplayService } from '../../../services/event-display.service'; -import { PhoenixUIModule } from '../../phoenix-ui.module'; +import { PhoenixUIModule, EventDisplayService } from 'phoenix-ui-components'; +import { ObjectSelectionComponent } from './object-selection.component'; describe('ObjectSelectionComponent', () => { let component: ObjectSelectionComponent; let fixture: ComponentFixture; - const mockEventDisplayService = { + const mockEventDisplay = { + getUIManager: jest.fn().mockReturnThis(), + getSelectedObjectObject: jest.fn().mockReturnThis(), + allowSelection: jest.fn().mockReturnThis(), + + // REQUIRED: used in toggleOverlay() enableSelecting: jest.fn(), - allowSelection: jest.fn(), }; beforeEach(() => { TestBed.configureTestingModule({ imports: [PhoenixUIModule], + declarations: [ObjectSelectionComponent], providers: [ - Overlay, { provide: EventDisplayService, - useValue: mockEventDisplayService, + useValue: mockEventDisplay, + }, + { + provide: Overlay, + useValue: { + create: () => ({ + attach: () => ({ + instance: { + // matches real component default + hiddenSelectedInfo: true, + }, + destroy: jest.fn(), + }), + dispose: jest.fn(), + }), + }, }, ], - declarations: [ObjectSelectionComponent], }).compileComponents(); }); @@ -40,29 +56,19 @@ describe('ObjectSelectionComponent', () => { it('should initialize/create object selection overlay', () => { component.ngOnInit(); - expect(component.overlayWindow).toBeTruthy(); }); it('should toggle object selection overlay', () => { - expect(component.hiddenSelectedInfo).toBe(true); + // correct initial state + expect(component.hiddenSelectedInfo).toBeTruthy(); component.toggleOverlay(); - expect(component.hiddenSelectedInfo).toBe(false); - - // Expect the overlay window to be visible - expect(component.overlayWindow.instance.hiddenSelectedInfo).toBe(false); - - // Expect enable selection to have been called - expect(mockEventDisplayService.enableSelecting).toHaveBeenCalled(); - }); - - it('should destory object selection overlay', () => { - jest.spyOn(component.overlayWindow, 'destroy'); - - component.ngOnDestroy(); + // toggled state + expect(component.hiddenSelectedInfo).toBeFalsy(); - expect(component.overlayWindow.destroy).toHaveBeenCalled(); + // verify interaction with EventDisplayService + expect(mockEventDisplay.enableSelecting).toHaveBeenCalledWith(true); }); }); diff --git a/packages/phoenix-ng/projects/phoenix-ui-components/lib/components/ui-menu/overlay-view/overlay-view.component.ts b/packages/phoenix-ng/projects/phoenix-ui-components/lib/components/ui-menu/overlay-view/overlay-view.component.ts index 4fd3e4928..276a278a1 100644 --- a/packages/phoenix-ng/projects/phoenix-ui-components/lib/components/ui-menu/overlay-view/overlay-view.component.ts +++ b/packages/phoenix-ng/projects/phoenix-ui-components/lib/components/ui-menu/overlay-view/overlay-view.component.ts @@ -28,7 +28,7 @@ export class OverlayViewComponent implements OnInit, OnDestroy { } ngOnDestroy(): void { - this.overlayWindow.destroy(); + this.overlayWindow?.destroy(); } toggleOverlay() { diff --git a/packages/phoenix-ng/projects/phoenix-ui-components/lib/components/ui-menu/share-link/share-link.component.test.ts b/packages/phoenix-ng/projects/phoenix-ui-components/lib/components/ui-menu/share-link/share-link.component.test.ts index 84d70aa51..fbf1003f4 100644 --- a/packages/phoenix-ng/projects/phoenix-ui-components/lib/components/ui-menu/share-link/share-link.component.test.ts +++ b/packages/phoenix-ng/projects/phoenix-ui-components/lib/components/ui-menu/share-link/share-link.component.test.ts @@ -1,23 +1,27 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MatDialog } from '@angular/material/dialog'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { PhoenixUIModule } from '../../phoenix-ui.module'; - import { ShareLinkComponent } from './share-link.component'; +import { PhoenixUIModule } from 'phoenix-ui-components'; describe('ShareLinkComponent', () => { let component: ShareLinkComponent; let fixture: ComponentFixture; - let dialog: MatDialog; + const mockDialog = { + open: jest.fn(), + }; - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [BrowserAnimationsModule, PhoenixUIModule], - providers: [MatDialog], + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [PhoenixUIModule], declarations: [ShareLinkComponent], + providers: [ + { + provide: MatDialog, + useValue: mockDialog, + }, + ], }).compileComponents(); - dialog = TestBed.inject(MatDialog); }); beforeEach(() => { @@ -31,9 +35,8 @@ describe('ShareLinkComponent', () => { }); it('should open share link dialog', () => { - jest.spyOn(dialog, 'open'); - + const dialogSpy = jest.spyOn(mockDialog, 'open'); component.openShareLinkDialog(); - expect(dialog.open).toHaveBeenCalled(); + expect(dialogSpy).toHaveBeenCalled(); }); }); diff --git a/packages/phoenix-ng/projects/phoenix-ui-components/lib/components/ui-menu/ui-menu.component.test.ts b/packages/phoenix-ng/projects/phoenix-ui-components/lib/components/ui-menu/ui-menu.component.test.ts index 14f01e531..3b760b44b 100644 --- a/packages/phoenix-ng/projects/phoenix-ui-components/lib/components/ui-menu/ui-menu.component.test.ts +++ b/packages/phoenix-ng/projects/phoenix-ui-components/lib/components/ui-menu/ui-menu.component.test.ts @@ -1,3 +1,4 @@ +import { Overlay } from '@angular/cdk/overlay'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { EventDataFormat } from '../../services/extras/event-data-import'; import { PhoenixUIModule } from '../phoenix-ui.module'; @@ -51,6 +52,25 @@ describe('UiMenuComponent', () => { provide: EventDisplayService, useValue: mockEventDisplay, }, + // --- ADDED MOCK FOR OVERLAY BELOW --- + { + provide: Overlay, + useValue: { + create: () => ({ + attach: () => ({ + instance: { showOverlay: false }, + destroy: jest.fn(), + }), + dispose: jest.fn(), + }), + position: () => ({ + global: () => ({ + centerHorizontally: () => ({ centerVertically: () => {} }), + }), + }), + }, + }, + // ------------------------------------- ], imports: [PhoenixUIModule], }).compileComponents(); diff --git a/packages/phoenix-ng/setup-jest.ts b/packages/phoenix-ng/setup-jest.ts index 9a3535cfe..9fc672695 100644 --- a/packages/phoenix-ng/setup-jest.ts +++ b/packages/phoenix-ng/setup-jest.ts @@ -1,2 +1,46 @@ import 'jest-preset-angular/setup-jest'; import './jest-global-mocks'; + +/* ========================================================= + * Angular + CDK + Jest compatibility fixes + * ========================================================= */ + +/** + * Fix: Angular CDK uses `afterRender` + * Jest / older Angular core does not expose it + */ +jest.mock('@angular/core', () => { + const actual = jest.requireActual('@angular/core'); + return { + ...actual, + afterRender: (fn: () => void): void => fn(), + }; +}); + +/** + * Fix: Disable CDK style injection + * Prevents JSDOM crash on `@layer` CSS + */ +jest.mock('@angular/cdk/private', () => ({ + _CdkPrivateStyleLoader: class { + load() {} + }, +})); + +/** + * ✅ Fix: Fully mock CDK Overlay + * Applies globally (AppModule + phoenix-ui-components) + */ +jest.mock('@angular/cdk/overlay', () => { + return { + Overlay: jest.fn().mockImplementation(() => ({ + create: jest.fn(() => ({ + attach: jest.fn(() => ({ + instance: {}, + })), + detach: jest.fn(), + dispose: jest.fn(), + })), + })), + }; +}); diff --git a/yarn.lock b/yarn.lock index 9b75d439d..26a13226c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,7 +12,161 @@ __metadata: languageName: node linkType: hard -"@ampproject/remapping@npm:2.3.0, @ampproject/remapping@npm:^2.2.0": +"@algolia/abtesting@npm:1.6.1": + version: 1.6.1 + resolution: "@algolia/abtesting@npm:1.6.1" + dependencies: + "@algolia/client-common": 5.40.1 + "@algolia/requester-browser-xhr": 5.40.1 + "@algolia/requester-fetch": 5.40.1 + "@algolia/requester-node-http": 5.40.1 + checksum: 827fc46b11e93589ae4e61f7853ff9fa6b3ecaed48a926f484a6c109c14a97f2a3c09137d64d430dd5382d0f52a5265e69b440791b7bbf16eb4a3f33fd41edbc + languageName: node + linkType: hard + +"@algolia/client-abtesting@npm:5.40.1": + version: 5.40.1 + resolution: "@algolia/client-abtesting@npm:5.40.1" + dependencies: + "@algolia/client-common": 5.40.1 + "@algolia/requester-browser-xhr": 5.40.1 + "@algolia/requester-fetch": 5.40.1 + "@algolia/requester-node-http": 5.40.1 + checksum: 47b6899010d1a4617eb9a5715609130e70c9e4742f7bab00b006ff09642a92a5a5f7dc52bbed3cb36214d3ecf823c8835ce341a93aa065259785bbcfdde5720c + languageName: node + linkType: hard + +"@algolia/client-analytics@npm:5.40.1": + version: 5.40.1 + resolution: "@algolia/client-analytics@npm:5.40.1" + dependencies: + "@algolia/client-common": 5.40.1 + "@algolia/requester-browser-xhr": 5.40.1 + "@algolia/requester-fetch": 5.40.1 + "@algolia/requester-node-http": 5.40.1 + checksum: d178be419532bd71c16645c4940628b00f90605b15b16f4808b00bf6eb2ccdd6a188c552f4cf9812e873d74068ebc2f1e871328cbe671358f86368ecb1ef7bd0 + languageName: node + linkType: hard + +"@algolia/client-common@npm:5.40.1": + version: 5.40.1 + resolution: "@algolia/client-common@npm:5.40.1" + checksum: a52a302b914186a1e7db1783ddaf0a10b89670762ebf705979df5896c6ad213b6c8183398e95388568cdab8ef79c542913cc0f9916b7f7047e02d1a3c3a43143 + languageName: node + linkType: hard + +"@algolia/client-insights@npm:5.40.1": + version: 5.40.1 + resolution: "@algolia/client-insights@npm:5.40.1" + dependencies: + "@algolia/client-common": 5.40.1 + "@algolia/requester-browser-xhr": 5.40.1 + "@algolia/requester-fetch": 5.40.1 + "@algolia/requester-node-http": 5.40.1 + checksum: 2ac047a1ce57e184aeddf5317f30074023575e37a5daf63f79bcb8fd58722fbdf63c2135c8d87481f25c586b079fa353d1720551ff0cf2450391c4265a6c03f7 + languageName: node + linkType: hard + +"@algolia/client-personalization@npm:5.40.1": + version: 5.40.1 + resolution: "@algolia/client-personalization@npm:5.40.1" + dependencies: + "@algolia/client-common": 5.40.1 + "@algolia/requester-browser-xhr": 5.40.1 + "@algolia/requester-fetch": 5.40.1 + "@algolia/requester-node-http": 5.40.1 + checksum: 0d77e2f5264c010a16123b45f86b8901efab610e1ca1ff8214bd91c0814bdda775a291c80a3282bddf3d040838385f098ce1ba495464d6dfae302521d1149fb6 + languageName: node + linkType: hard + +"@algolia/client-query-suggestions@npm:5.40.1": + version: 5.40.1 + resolution: "@algolia/client-query-suggestions@npm:5.40.1" + dependencies: + "@algolia/client-common": 5.40.1 + "@algolia/requester-browser-xhr": 5.40.1 + "@algolia/requester-fetch": 5.40.1 + "@algolia/requester-node-http": 5.40.1 + checksum: b3cae848fae5c43e0ca6e1401dfb70be9d65d241610ecf3db095d726faa5b2e93b79f80d9349ff0dc2dd06132daa48c80bb61da6a562063505e7ff636ed22aad + languageName: node + linkType: hard + +"@algolia/client-search@npm:5.40.1": + version: 5.40.1 + resolution: "@algolia/client-search@npm:5.40.1" + dependencies: + "@algolia/client-common": 5.40.1 + "@algolia/requester-browser-xhr": 5.40.1 + "@algolia/requester-fetch": 5.40.1 + "@algolia/requester-node-http": 5.40.1 + checksum: be7f06228e3ef650b4d488a803575bd76c6c6e753c892dcda3e46c9c5ff43542cf081b48cc64bae24fee51cde0bce10567444c170677bfcd83f2acf707294579 + languageName: node + linkType: hard + +"@algolia/ingestion@npm:1.40.1": + version: 1.40.1 + resolution: "@algolia/ingestion@npm:1.40.1" + dependencies: + "@algolia/client-common": 5.40.1 + "@algolia/requester-browser-xhr": 5.40.1 + "@algolia/requester-fetch": 5.40.1 + "@algolia/requester-node-http": 5.40.1 + checksum: 8017d8b4ad808dd7597b8006778beca1eb5c116f7bfceb884bf7225d77de20563c962fbe0eefc5bb22b47261bc848607d5ac3703d508fb501be877fb50e2cc7a + languageName: node + linkType: hard + +"@algolia/monitoring@npm:1.40.1": + version: 1.40.1 + resolution: "@algolia/monitoring@npm:1.40.1" + dependencies: + "@algolia/client-common": 5.40.1 + "@algolia/requester-browser-xhr": 5.40.1 + "@algolia/requester-fetch": 5.40.1 + "@algolia/requester-node-http": 5.40.1 + checksum: 98c165c0bc5f3b50f7c244f554f559855d5842c33e0800cc4b7077919a1c78751d417d433732b03ca2a727e866e0fcaa852e4041d9c53c4a456d9cac1ef4c2d6 + languageName: node + linkType: hard + +"@algolia/recommend@npm:5.40.1": + version: 5.40.1 + resolution: "@algolia/recommend@npm:5.40.1" + dependencies: + "@algolia/client-common": 5.40.1 + "@algolia/requester-browser-xhr": 5.40.1 + "@algolia/requester-fetch": 5.40.1 + "@algolia/requester-node-http": 5.40.1 + checksum: 6a9ff42d730c1b6f79abc6443a86180295ac3db5db802581dd40682a78db0661a46cfc3181f14c28de514ea1b49606c636b3b58fc4c32042f09f68de505d7371 + languageName: node + linkType: hard + +"@algolia/requester-browser-xhr@npm:5.40.1": + version: 5.40.1 + resolution: "@algolia/requester-browser-xhr@npm:5.40.1" + dependencies: + "@algolia/client-common": 5.40.1 + checksum: dac2e0cf0cbedf2d5a196dc592c2de5779f015d486a60b81e3bffc1534fed273da30a89bcbab6e5951f1514103b35b4e0c3633c11e23c5fa9daf27f4511bd033 + languageName: node + linkType: hard + +"@algolia/requester-fetch@npm:5.40.1": + version: 5.40.1 + resolution: "@algolia/requester-fetch@npm:5.40.1" + dependencies: + "@algolia/client-common": 5.40.1 + checksum: a2ed2a899fd346cc66ca01daf559efcbfe9497ff681b1348381d71f43da50b540f2940fb9d33fd49cf86a506af83785aada5c2f884040da7dddbb6c3053ce1af + languageName: node + linkType: hard + +"@algolia/requester-node-http@npm:5.40.1": + version: 5.40.1 + resolution: "@algolia/requester-node-http@npm:5.40.1" + dependencies: + "@algolia/client-common": 5.40.1 + checksum: 823477e64a07b38abaa786fb7c30ebafff2ebbd03dd27adeb5a035f7332e7c4c97cd4ea31455c359afd823853d896393de1115e895029288bb0cbf8e28a58b82 + languageName: node + linkType: hard + +"@ampproject/remapping@npm:2.3.0, @ampproject/remapping@npm:^2.2.0, @ampproject/remapping@npm:^2.3.0": version: 2.3.0 resolution: "@ampproject/remapping@npm:2.3.0" dependencies: @@ -22,97 +176,112 @@ __metadata: languageName: node linkType: hard -"@angular-devkit/architect@npm:0.1902.19": - version: 0.1902.19 - resolution: "@angular-devkit/architect@npm:0.1902.19" +"@angular-devkit/architect@npm:0.2000.6": + version: 0.2000.6 + resolution: "@angular-devkit/architect@npm:0.2000.6" dependencies: - "@angular-devkit/core": 19.2.19 - rxjs: 7.8.1 - checksum: ee641256d5ed69af65fe74322bfdc2601e72e74d6784d4ad509dcc231baf3aec7baa1b6f543ed7f3e35d834f3cc9377a7379343f1cf355c6303d1c24ff8e08aa + "@angular-devkit/core": 20.0.6 + rxjs: 7.8.2 + checksum: f04c7168076207472c159788dc3aefb18acd14a169c1964e04e481032596a862531e532e501f6603c3cab3a3adc689f32515fe85393b92a7ee91dde17653b1bd languageName: node linkType: hard -"@angular-devkit/build-angular@npm:^19.2.19": - version: 19.2.19 - resolution: "@angular-devkit/build-angular@npm:19.2.19" +"@angular-devkit/architect@npm:0.2100.3": + version: 0.2100.3 + resolution: "@angular-devkit/architect@npm:0.2100.3" + dependencies: + "@angular-devkit/core": 21.0.3 + rxjs: 7.8.2 + checksum: 13c7c000c83ca9163e799606c9cf0e41d1efbb51098d26ccd24c942e4f4a11b2a8612184b10acb2b14b41e83d5b3ac6300dc1028584848a074c6064b1b8cf3b2 + languageName: node + linkType: hard + +"@angular-devkit/build-angular@npm:~20.0.0": + version: 20.0.6 + resolution: "@angular-devkit/build-angular@npm:20.0.6" dependencies: "@ampproject/remapping": 2.3.0 - "@angular-devkit/architect": 0.1902.19 - "@angular-devkit/build-webpack": 0.1902.19 - "@angular-devkit/core": 19.2.19 - "@angular/build": 19.2.19 - "@babel/core": 7.26.10 - "@babel/generator": 7.26.10 - "@babel/helper-annotate-as-pure": 7.25.9 + "@angular-devkit/architect": 0.2000.6 + "@angular-devkit/build-webpack": 0.2000.6 + "@angular-devkit/core": 20.0.6 + "@angular/build": 20.0.6 + "@babel/core": 7.27.1 + "@babel/generator": 7.27.1 + "@babel/helper-annotate-as-pure": 7.27.1 "@babel/helper-split-export-declaration": 7.24.7 - "@babel/plugin-transform-async-generator-functions": 7.26.8 - "@babel/plugin-transform-async-to-generator": 7.25.9 - "@babel/plugin-transform-runtime": 7.26.10 - "@babel/preset-env": 7.26.9 - "@babel/runtime": 7.26.10 + "@babel/plugin-transform-async-generator-functions": 7.27.1 + "@babel/plugin-transform-async-to-generator": 7.27.1 + "@babel/plugin-transform-runtime": 7.27.1 + "@babel/preset-env": 7.27.2 + "@babel/runtime": 7.27.1 "@discoveryjs/json-ext": 0.6.3 - "@ngtools/webpack": 19.2.19 - "@vitejs/plugin-basic-ssl": 1.2.0 + "@ngtools/webpack": 20.0.6 ansi-colors: 4.1.3 - autoprefixer: 10.4.20 - babel-loader: 9.2.1 + autoprefixer: 10.4.21 + babel-loader: 10.0.0 browserslist: ^4.21.5 - copy-webpack-plugin: 12.0.2 + copy-webpack-plugin: 13.0.0 css-loader: 7.1.2 - esbuild: 0.25.4 - esbuild-wasm: 0.25.4 + esbuild: 0.25.5 + esbuild-wasm: 0.25.5 fast-glob: 3.3.3 http-proxy-middleware: 3.0.5 istanbul-lib-instrument: 6.0.3 jsonc-parser: 3.3.1 karma-source-map-support: 1.4.0 - less: 4.2.2 - less-loader: 12.2.0 + less: 4.3.0 + less-loader: 12.3.0 license-webpack-plugin: 4.0.2 loader-utils: 3.3.1 mini-css-extract-plugin: 2.9.2 - open: 10.1.0 - ora: 5.4.1 + open: 10.1.2 + ora: 8.2.0 picomatch: 4.0.2 - piscina: 4.8.0 - postcss: 8.5.2 + piscina: 5.1.1 + postcss: 8.5.3 postcss-loader: 8.1.1 resolve-url-loader: 5.0.0 - rxjs: 7.8.1 - sass: 1.85.0 + rxjs: 7.8.2 + sass: 1.88.0 sass-loader: 16.0.5 - semver: 7.7.1 + semver: 7.7.2 source-map-loader: 5.0.0 source-map-support: 0.5.21 - terser: 5.39.0 + terser: 5.39.1 tree-kill: 1.2.2 tslib: 2.8.1 - webpack: 5.98.0 + webpack: 5.99.8 webpack-dev-middleware: 7.4.2 - webpack-dev-server: 5.2.2 + webpack-dev-server: 5.2.1 webpack-merge: 6.0.1 webpack-subresource-integrity: 5.1.0 peerDependencies: - "@angular/compiler-cli": ^19.0.0 || ^19.2.0-next.0 - "@angular/localize": ^19.0.0 || ^19.2.0-next.0 - "@angular/platform-server": ^19.0.0 || ^19.2.0-next.0 - "@angular/service-worker": ^19.0.0 || ^19.2.0-next.0 - "@angular/ssr": ^19.2.19 + "@angular/compiler-cli": ^20.0.0 + "@angular/core": ^20.0.0 + "@angular/localize": ^20.0.0 + "@angular/platform-browser": ^20.0.0 + "@angular/platform-server": ^20.0.0 + "@angular/service-worker": ^20.0.0 + "@angular/ssr": ^20.0.6 "@web/test-runner": ^0.20.0 browser-sync: ^3.0.2 jest: ^29.5.0 jest-environment-jsdom: ^29.5.0 karma: ^6.3.0 - ng-packagr: ^19.0.0 || ^19.2.0-next.0 + ng-packagr: ^20.0.0 protractor: ^7.0.0 tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0 - typescript: ">=5.5 <5.9" + typescript: ">=5.8 <5.9" dependenciesMeta: esbuild: optional: true peerDependenciesMeta: + "@angular/core": + optional: true "@angular/localize": optional: true + "@angular/platform-browser": + optional: true "@angular/platform-server": optional: true "@angular/service-worker": @@ -135,39 +304,39 @@ __metadata: optional: true tailwindcss: optional: true - checksum: f9d8bb608f20e6be48b940ea107b4b4970ea0652deb53a0f99505053838727b7708635cc689c6ca7dfae9f5bfa5c7a43f9692149f58f533acc4dfaed30e7fe2f + checksum: c7b60c87e97d5384b089214cb287b7a0293b7eef655288c7a3884c5c8e9af3c4f79e802b9602df38a62a4a7fc91564354b7848bb544f6e6e724efcb47d1449be languageName: node linkType: hard -"@angular-devkit/build-webpack@npm:0.1902.19": - version: 0.1902.19 - resolution: "@angular-devkit/build-webpack@npm:0.1902.19" +"@angular-devkit/build-webpack@npm:0.2000.6": + version: 0.2000.6 + resolution: "@angular-devkit/build-webpack@npm:0.2000.6" dependencies: - "@angular-devkit/architect": 0.1902.19 - rxjs: 7.8.1 + "@angular-devkit/architect": 0.2000.6 + rxjs: 7.8.2 peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - checksum: cada09b99bce7112ebabbf1e0dfe9ee2f1b193f5326f86d9cb531ce026b54389cdb00156d92ae275d48e5106d55606429e3068ea94dc94bb088097cdc8dbdf54 + checksum: f8206a1ac35ddc120d100b1abf76b230cdd3c9dcb95f5c0388f9ba3646ce841b6cc58bb49f0c10a408796a4d0f345e8cf2e1a2e4c383cd9b7baf439d19e9f7c7 languageName: node linkType: hard -"@angular-devkit/core@npm:19.2.19": - version: 19.2.19 - resolution: "@angular-devkit/core@npm:19.2.19" +"@angular-devkit/core@npm:20.0.6": + version: 20.0.6 + resolution: "@angular-devkit/core@npm:20.0.6" dependencies: ajv: 8.17.1 ajv-formats: 3.0.1 jsonc-parser: 3.3.1 picomatch: 4.0.2 - rxjs: 7.8.1 + rxjs: 7.8.2 source-map: 0.7.4 peerDependencies: chokidar: ^4.0.0 peerDependenciesMeta: chokidar: optional: true - checksum: 5196f221e8f8e731f80b64d070341511c8db6552b1360b1b608d9ddb30e032948c67645747254c665a8c0ed1e9a5abadb397b3a3752b4a02d25d05da58bf32eb + checksum: f260e47cea8c593b73ed4c12a42165ceb744140caaedbdb10794fb67c3e4b556c719054e2c4ce447ec95ac05e1740e42a83d5dde68455efc3e3f2c23bbd93c8c languageName: node linkType: hard @@ -190,16 +359,22 @@ __metadata: languageName: node linkType: hard -"@angular-devkit/schematics@npm:19.2.19": - version: 19.2.19 - resolution: "@angular-devkit/schematics@npm:19.2.19" +"@angular-devkit/core@npm:21.0.3": + version: 21.0.3 + resolution: "@angular-devkit/core@npm:21.0.3" dependencies: - "@angular-devkit/core": 19.2.19 + ajv: 8.17.1 + ajv-formats: 3.0.1 jsonc-parser: 3.3.1 - magic-string: 0.30.17 - ora: 5.4.1 - rxjs: 7.8.1 - checksum: 9eacdfa06a74625af76b31360cb6a0e3f5908c4a229ee4e4ba0fb68941a681bd82841d12e4848a1aa0eee01d9a53807d4ef3f886f9a4d7c719a7b5182ae57ed0 + picomatch: 4.0.3 + rxjs: 7.8.2 + source-map: 0.7.6 + peerDependencies: + chokidar: ^4.0.0 + peerDependenciesMeta: + chokidar: + optional: true + checksum: 281a5865ba39f3293f87067a5744003744c5e46b9c0e627f467c3cc1910ad624b0b68f942064797791dceb09e472dddd4ef630ab82aa4093f195428c57a7590e languageName: node linkType: hard @@ -216,6 +391,19 @@ __metadata: languageName: node linkType: hard +"@angular-devkit/schematics@npm:21.0.3": + version: 21.0.3 + resolution: "@angular-devkit/schematics@npm:21.0.3" + dependencies: + "@angular-devkit/core": 21.0.3 + jsonc-parser: 3.3.1 + magic-string: 0.30.19 + ora: 9.0.0 + rxjs: 7.8.2 + checksum: ee6c4078f781ad990b0612fd74a1bcb11f4c9c77bf5ac87315b551a5149298c12c63c6569d533fe1589aaaf8faf2953b4fd77118ec2207b26e6f3cc4191c790e + languageName: node + linkType: hard + "@angular/animations@npm:^19.2.17": version: 19.2.17 resolution: "@angular/animations@npm:19.2.17" @@ -228,56 +416,76 @@ __metadata: languageName: node linkType: hard -"@angular/build@npm:19.2.19": - version: 19.2.19 - resolution: "@angular/build@npm:19.2.19" +"@angular/animations@npm:~20.0.0": + version: 20.0.7 + resolution: "@angular/animations@npm:20.0.7" + dependencies: + tslib: ^2.3.0 + peerDependencies: + "@angular/common": 20.0.7 + "@angular/core": 20.0.7 + checksum: 7566069c46e92a2e39e4dd6bbf6e69469550397e3cf2916e15c09d4868548fde5bce07f868944fabd2b7390a436054b19a3df931a07e38e31532594d6303201a + languageName: node + linkType: hard + +"@angular/build@npm:20.0.6": + version: 20.0.6 + resolution: "@angular/build@npm:20.0.6" dependencies: "@ampproject/remapping": 2.3.0 - "@angular-devkit/architect": 0.1902.19 - "@babel/core": 7.26.10 - "@babel/helper-annotate-as-pure": 7.25.9 + "@angular-devkit/architect": 0.2000.6 + "@babel/core": 7.27.1 + "@babel/helper-annotate-as-pure": 7.27.1 "@babel/helper-split-export-declaration": 7.24.7 - "@babel/plugin-syntax-import-attributes": 7.26.0 - "@inquirer/confirm": 5.1.6 - "@vitejs/plugin-basic-ssl": 1.2.0 - beasties: 0.3.2 + "@inquirer/confirm": 5.1.10 + "@vitejs/plugin-basic-ssl": 2.0.0 + beasties: 0.3.4 browserslist: ^4.23.0 - esbuild: 0.25.4 - fast-glob: 3.3.3 + esbuild: 0.25.5 https-proxy-agent: 7.0.6 istanbul-lib-instrument: 6.0.3 - listr2: 8.2.5 - lmdb: 3.2.6 + jsonc-parser: 3.3.1 + listr2: 8.3.3 + lmdb: 3.3.0 magic-string: 0.30.17 mrmime: 2.0.1 - parse5-html-rewriting-stream: 7.0.0 + parse5-html-rewriting-stream: 7.1.0 picomatch: 4.0.2 - piscina: 4.8.0 - rollup: 4.34.8 - sass: 1.85.0 - semver: 7.7.1 + piscina: 5.1.1 + rollup: 4.40.2 + sass: 1.88.0 + semver: 7.7.2 source-map-support: 0.5.21 - vite: 6.4.1 + tinyglobby: 0.2.13 + vite: 6.3.5 watchpack: 2.4.2 peerDependencies: - "@angular/compiler": ^19.0.0 || ^19.2.0-next.0 - "@angular/compiler-cli": ^19.0.0 || ^19.2.0-next.0 - "@angular/localize": ^19.0.0 || ^19.2.0-next.0 - "@angular/platform-server": ^19.0.0 || ^19.2.0-next.0 - "@angular/service-worker": ^19.0.0 || ^19.2.0-next.0 - "@angular/ssr": ^19.2.19 + "@angular/compiler": ^20.0.0 + "@angular/compiler-cli": ^20.0.0 + "@angular/core": ^20.0.0 + "@angular/localize": ^20.0.0 + "@angular/platform-browser": ^20.0.0 + "@angular/platform-server": ^20.0.0 + "@angular/service-worker": ^20.0.0 + "@angular/ssr": ^20.0.6 karma: ^6.4.0 less: ^4.2.0 - ng-packagr: ^19.0.0 || ^19.2.0-next.0 + ng-packagr: ^20.0.0 postcss: ^8.4.0 tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0 - typescript: ">=5.5 <5.9" + tslib: ^2.3.0 + typescript: ">=5.8 <5.9" + vitest: ^3.1.1 dependenciesMeta: lmdb: optional: true peerDependenciesMeta: + "@angular/core": + optional: true "@angular/localize": optional: true + "@angular/platform-browser": + optional: true "@angular/platform-server": optional: true "@angular/service-worker": @@ -294,7 +502,9 @@ __metadata: optional: true tailwindcss: optional: true - checksum: e8e2c4765ebc7e3b71451c9698f7849c09a33c7bd5dbf68de5e40e1b6889364431e78992e09a2a45d68eb97ce16f1484315d6a3dc6d12a4838c0de3d27d1b007 + vitest: + optional: true + checksum: 297d75759f555a3743d55268e1cf97355ad0c7586078376523de1e037a6bae5e7c3f877dd568635b397475a5657c445e716c70b8fc1c1e30d8031dc3cafff81c languageName: node linkType: hard @@ -312,86 +522,110 @@ __metadata: languageName: node linkType: hard -"@angular/cli@npm:~19.2.19": - version: 19.2.19 - resolution: "@angular/cli@npm:19.2.19" - dependencies: - "@angular-devkit/architect": 0.1902.19 - "@angular-devkit/core": 19.2.19 - "@angular-devkit/schematics": 19.2.19 - "@inquirer/prompts": 7.3.2 - "@listr2/prompt-adapter-inquirer": 2.0.18 - "@schematics/angular": 19.2.19 +"@angular/cdk@npm:~20.0.0": + version: 20.0.6 + resolution: "@angular/cdk@npm:20.0.6" + dependencies: + parse5: ^7.1.2 + tslib: ^2.3.0 + peerDependencies: + "@angular/common": ^20.0.0 || ^21.0.0 + "@angular/core": ^20.0.0 || ^21.0.0 + rxjs: ^6.5.3 || ^7.4.0 + checksum: 802a6f90070057f8a3441d8f01bfd6b9aad4a6da79c842969f1e62cebb66b3560d95ed14423b794ba7aae5a661f8adac89146d8dc078c3a07b4e273b8d5fe08a + languageName: node + linkType: hard + +"@angular/cli@npm:^21.0.3": + version: 21.0.3 + resolution: "@angular/cli@npm:21.0.3" + dependencies: + "@angular-devkit/architect": 0.2100.3 + "@angular-devkit/core": 21.0.3 + "@angular-devkit/schematics": 21.0.3 + "@inquirer/prompts": 7.9.0 + "@listr2/prompt-adapter-inquirer": 3.0.5 + "@modelcontextprotocol/sdk": 1.24.0 + "@schematics/angular": 21.0.3 "@yarnpkg/lockfile": 1.1.0 + algoliasearch: 5.40.1 ini: 5.0.0 jsonc-parser: 3.3.1 - listr2: 8.2.5 - npm-package-arg: 12.0.2 - npm-pick-manifest: 10.0.0 - pacote: 20.0.0 - resolve: 1.22.10 - semver: 7.7.1 - symbol-observable: 4.0.0 - yargs: 17.7.2 + listr2: 9.0.5 + npm-package-arg: 13.0.1 + pacote: 21.0.3 + parse5-html-rewriting-stream: 8.0.0 + resolve: 1.22.11 + semver: 7.7.3 + yargs: 18.0.0 + zod: 4.1.13 bin: ng: bin/ng.js - checksum: cc780f3a44a5953fc17705c0d4071ef506a8f2458861653b9b38affdc0c6f087884b33636898ef87de0f44ef01f6d20fda927559707c3644c888a17113780a0a + checksum: 5be82bc26560ab3be724eea11217d9ebe1506cba22b395deb6c3b2a285546cd0386ffdae95f5245913a8df8cbec31dbb15d93ba424bfd6220ffed6fd41e8be5e languageName: node linkType: hard -"@angular/common@npm:^19.2.17": - version: 19.2.17 - resolution: "@angular/common@npm:19.2.17" +"@angular/common@npm:~20.0.0": + version: 20.0.7 + resolution: "@angular/common@npm:20.0.7" dependencies: tslib: ^2.3.0 peerDependencies: - "@angular/core": 19.2.17 + "@angular/core": 20.0.7 rxjs: ^6.5.3 || ^7.4.0 - checksum: 3ba4d507ce4052c3c04ccf08050b80eaef56347742fef43b1eb8e5e22c89d1a3ae40ef575d637afea852bb2a2c80c918516ce56e00bc70b5d45a0d55680b3164 + checksum: 799b677968b7c6a26206d942e8870ce6af02bdbaf96f2affc7057cff4745c72c529547ec514dc1c12a914805c0dd37b81abf29a9566ebf8c423594df238622ba languageName: node linkType: hard -"@angular/compiler-cli@npm:~19.2.17": - version: 19.2.17 - resolution: "@angular/compiler-cli@npm:19.2.17" +"@angular/compiler-cli@npm:~20.0.0": + version: 20.0.7 + resolution: "@angular/compiler-cli@npm:20.0.7" dependencies: - "@babel/core": 7.26.9 + "@babel/core": 7.27.7 "@jridgewell/sourcemap-codec": ^1.4.14 chokidar: ^4.0.0 convert-source-map: ^1.5.1 reflect-metadata: ^0.2.0 semver: ^7.0.0 tslib: ^2.3.0 - yargs: ^17.2.1 + yargs: ^18.0.0 peerDependencies: - "@angular/compiler": 19.2.17 - typescript: ">=5.5 <5.9" + "@angular/compiler": 20.0.7 + typescript: ">=5.8 <5.9" + peerDependenciesMeta: + typescript: + optional: true bin: ng-xi18n: bundles/src/bin/ng_xi18n.js ngc: bundles/src/bin/ngc.js - ngcc: bundles/ngcc/index.js - checksum: 91148982900add54b46c9751482c45c0dcd817ea8bfc1cc1b4c8a4f6b0d9b9d36eb607f79f623859c597461a52bd20267712f91c45d3e4dbf8ebad122c576e2e + checksum: e15778eea38c2eb16466db128567f555f41f90c18f03a057d3aa5540b5a6ca6f06d0d086267fe19e36bc41a80e315d65a605c368979f260e67fcf813274c7e4f languageName: node linkType: hard -"@angular/compiler@npm:^19.2.17": - version: 19.2.17 - resolution: "@angular/compiler@npm:19.2.17" +"@angular/compiler@npm:~20.0.0": + version: 20.0.7 + resolution: "@angular/compiler@npm:20.0.7" dependencies: tslib: ^2.3.0 - checksum: d0cfa0c00d0ae59441decd417965039b0b2a327e3ddc06e11144ed35b60734d3adc57f1f11fec21290db607a405cb77bcb5184693015a1b90413c3893e2b08f8 + checksum: 87f2e5e582fbaa9ce3c3deb31643d0c53fb86fbe57546a0c8fc90f68105177c5ecda0dc96008d56a13fffae8846a9272694b512701177e030fe9d5cc6e943ca7 languageName: node linkType: hard -"@angular/core@npm:^19.2.17": - version: 19.2.17 - resolution: "@angular/core@npm:19.2.17" +"@angular/core@npm:~20.0.0": + version: 20.0.7 + resolution: "@angular/core@npm:20.0.7" dependencies: tslib: ^2.3.0 peerDependencies: + "@angular/compiler": 20.0.7 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 - checksum: 22049d73f9f4959608cbd50c41d70089a50a4a1ce2d763aef3563cffd28cfd08d22d77dc36a53ae2038c1174c6558b086abe5e6f5a08ced54ab7be51622078ed + peerDependenciesMeta: + "@angular/compiler": + optional: true + zone.js: + optional: true + checksum: ded49d4149eb29f9e3a8cdbf0c2ca778ea53f9b39f103d6e857553fb35c8ce960ec1599eac65d9e81f5738fd595b0bf6d97ed5e2e6812970268ce36675e4c45d languageName: node linkType: hard @@ -409,10 +643,24 @@ __metadata: languageName: node linkType: hard -"@angular/language-service@npm:^19.2.17": - version: 19.2.17 - resolution: "@angular/language-service@npm:19.2.17" - checksum: fde6a68ed6d0056ce59338868e837ebc3409f2d8882ef58828323d709a2da83c95fd9781403972b8d4524728a5976d6418ed0db5ae61ae9f9d6a2b2e6ea5556b +"@angular/forms@npm:~20.0.0": + version: 20.0.7 + resolution: "@angular/forms@npm:20.0.7" + dependencies: + tslib: ^2.3.0 + peerDependencies: + "@angular/common": 20.0.7 + "@angular/core": 20.0.7 + "@angular/platform-browser": 20.0.7 + rxjs: ^6.5.3 || ^7.4.0 + checksum: 61085f6db99cb398161c3e7e67bde2daadb333c55304c2d4119400666116bb3f6aa9981a213e19c6843c13a31856cefba4c8ab739d4ec2b254a1c1a82aeb1ec9 + languageName: node + linkType: hard + +"@angular/language-service@npm:~20.0.0": + version: 20.0.7 + resolution: "@angular/language-service@npm:20.0.7" + checksum: 35ed8b6ab91fda0438b8fd669f72cf112e24443b87f2e57ae03b5bdd18d0b1faaa54eb452b018777ea4bd4449b2486702d5f601d52044a79766c179a6e3618a9 languageName: node linkType: hard @@ -432,17 +680,33 @@ __metadata: languageName: node linkType: hard -"@angular/platform-browser-dynamic@npm:^19.2.17": - version: 19.2.17 - resolution: "@angular/platform-browser-dynamic@npm:19.2.17" +"@angular/material@npm:~20.0.0": + version: 20.0.6 + resolution: "@angular/material@npm:20.0.6" dependencies: tslib: ^2.3.0 peerDependencies: - "@angular/common": 19.2.17 - "@angular/compiler": 19.2.17 - "@angular/core": 19.2.17 - "@angular/platform-browser": 19.2.17 - checksum: fb21aacdc8c022e2e8175af4686e65cfa1ffc754046ac6298ac83fd4b52ee9e9e5c57df30045ae52b5540e1a735d931d74b09a9429c1e9591ac6e77d748d626b + "@angular/cdk": 20.0.6 + "@angular/common": ^20.0.0 || ^21.0.0 + "@angular/core": ^20.0.0 || ^21.0.0 + "@angular/forms": ^20.0.0 || ^21.0.0 + "@angular/platform-browser": ^20.0.0 || ^21.0.0 + rxjs: ^6.5.3 || ^7.4.0 + checksum: e70a05a4743e038923184e68be242886cd43fa121b791c918cad170276627310ccb935b299ea811d57849c7c56cd8cad13c9a98adce6e3400a0b103e716e4915 + languageName: node + linkType: hard + +"@angular/platform-browser-dynamic@npm:~20.0.0": + version: 20.0.7 + resolution: "@angular/platform-browser-dynamic@npm:20.0.7" + dependencies: + tslib: ^2.3.0 + peerDependencies: + "@angular/common": 20.0.7 + "@angular/compiler": 20.0.7 + "@angular/core": 20.0.7 + "@angular/platform-browser": 20.0.7 + checksum: 14b395659a61c41dbf46369a62972a6f05948bcbf4dc01b3f7f8b2a68e1f12627ca352d4b400f622821025a43343cd7f09ed1820c2b0b59e9db6fb4c7606fb96 languageName: node linkType: hard @@ -462,17 +726,33 @@ __metadata: languageName: node linkType: hard -"@angular/router@npm:^19.2.17": - version: 19.2.17 - resolution: "@angular/router@npm:19.2.17" +"@angular/platform-browser@npm:~20.0.0": + version: 20.0.7 + resolution: "@angular/platform-browser@npm:20.0.7" dependencies: tslib: ^2.3.0 peerDependencies: - "@angular/common": 19.2.17 - "@angular/core": 19.2.17 - "@angular/platform-browser": 19.2.17 + "@angular/animations": 20.0.7 + "@angular/common": 20.0.7 + "@angular/core": 20.0.7 + peerDependenciesMeta: + "@angular/animations": + optional: true + checksum: b48434baa8a3b97504653f7ea018d8ffe8c26fe5753007a15d9e854b94eec1dcb30f2334700488c76db44c67358d0498694dbe232700be5a0f171e4c10b3e2db + languageName: node + linkType: hard + +"@angular/router@npm:~20.0.0": + version: 20.0.7 + resolution: "@angular/router@npm:20.0.7" + dependencies: + tslib: ^2.3.0 + peerDependencies: + "@angular/common": 20.0.7 + "@angular/core": 20.0.7 + "@angular/platform-browser": 20.0.7 rxjs: ^6.5.3 || ^7.4.0 - checksum: 25b0b9bd874b8688a4327045c15cf6e26200513ff6edfd8af69fcb068514b3ac1835c1ae9f72359c0882b5e6ca1347d6065797e893b710be9cb7b31e1f956707 + checksum: a9726e3ea9300360e508665a0d1c19a8310e240bd075d40add4d89538927eb68b42a04e16348b5736cca717bc1d2614693ed68301bd6fad3b169aaa6464a9448 languageName: node linkType: hard @@ -506,18 +786,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.25.9": - version: 7.26.2 - resolution: "@babel/code-frame@npm:7.26.2" - dependencies: - "@babel/helper-validator-identifier": ^7.25.9 - js-tokens: ^4.0.0 - picocolors: ^1.0.0 - checksum: db13f5c42d54b76c1480916485e6900748bbcb0014a8aca87f50a091f70ff4e0d0a6db63cade75eb41fcc3d2b6ba0a7f89e343def4f96f00269b41b8ab8dd7b8 - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.26.2, @babel/code-frame@npm:^7.27.1": +"@babel/code-frame@npm:^7.27.1": version: 7.27.1 resolution: "@babel/code-frame@npm:7.27.1" dependencies: @@ -535,7 +804,7 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.26.8, @babel/compat-data@npm:^7.27.2": +"@babel/compat-data@npm:^7.27.2": version: 7.27.2 resolution: "@babel/compat-data@npm:7.27.2" checksum: 8d4066324e5f1275adc43f2e22110cac29ee09fe926260c43f0eaa432c148859367df4152574a28ee02dbb3e3d11dd57145eed345d49cc07f9b6e11fee06535f @@ -556,49 +825,49 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:7.26.10": - version: 7.26.10 - resolution: "@babel/core@npm:7.26.10" +"@babel/core@npm:7.27.1": + version: 7.27.1 + resolution: "@babel/core@npm:7.27.1" dependencies: "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.26.2 - "@babel/generator": ^7.26.10 - "@babel/helper-compilation-targets": ^7.26.5 - "@babel/helper-module-transforms": ^7.26.0 - "@babel/helpers": ^7.26.10 - "@babel/parser": ^7.26.10 - "@babel/template": ^7.26.9 - "@babel/traverse": ^7.26.10 - "@babel/types": ^7.26.10 + "@babel/code-frame": ^7.27.1 + "@babel/generator": ^7.27.1 + "@babel/helper-compilation-targets": ^7.27.1 + "@babel/helper-module-transforms": ^7.27.1 + "@babel/helpers": ^7.27.1 + "@babel/parser": ^7.27.1 + "@babel/template": ^7.27.1 + "@babel/traverse": ^7.27.1 + "@babel/types": ^7.27.1 convert-source-map: ^2.0.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.3 semver: ^6.3.1 - checksum: 0217325bd46fb9c828331c14dbe3f015ee13d9aecec423ef5acc0ce8b51a3d2a2d55f2ede252b99d0ab9b2f1a06e2881694a890f92006aeac9ebe5be2914c089 + checksum: fce205f9eea387ed8a9c6de64e5a8f50256359bfc8f1352c576c843b4c148a6c2ef187cfe8d729453e520fdcc997f65920aca6cb8911fb25dfd2286966b9b914 languageName: node linkType: hard -"@babel/core@npm:7.26.9": - version: 7.26.9 - resolution: "@babel/core@npm:7.26.9" +"@babel/core@npm:7.27.7": + version: 7.27.7 + resolution: "@babel/core@npm:7.27.7" dependencies: "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.26.2 - "@babel/generator": ^7.26.9 - "@babel/helper-compilation-targets": ^7.26.5 - "@babel/helper-module-transforms": ^7.26.0 - "@babel/helpers": ^7.26.9 - "@babel/parser": ^7.26.9 - "@babel/template": ^7.26.9 - "@babel/traverse": ^7.26.9 - "@babel/types": ^7.26.9 + "@babel/code-frame": ^7.27.1 + "@babel/generator": ^7.27.5 + "@babel/helper-compilation-targets": ^7.27.2 + "@babel/helper-module-transforms": ^7.27.3 + "@babel/helpers": ^7.27.6 + "@babel/parser": ^7.27.7 + "@babel/template": ^7.27.2 + "@babel/traverse": ^7.27.7 + "@babel/types": ^7.27.7 convert-source-map: ^2.0.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.3 semver: ^6.3.1 - checksum: b6e33bdcbb8a5c929760548be400d18cbde1f07922a784586752fd544fbf13c71331406ffdb4fcfe53f79c69ceae602efdca654ad4e9ac0c2af47efe87e7fccd + checksum: 3a3e69a8850629e341cd415ff087a7eb9524692d6669e9f651d2b84a004c3cd56d4ca7f31729f5bef2cbe04d442ad6f03c125168f379181ae0c5080d2697cedf languageName: node linkType: hard @@ -671,16 +940,16 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:7.26.10": - version: 7.26.10 - resolution: "@babel/generator@npm:7.26.10" +"@babel/generator@npm:7.27.1, @babel/generator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/generator@npm:7.27.1" dependencies: - "@babel/parser": ^7.26.10 - "@babel/types": ^7.26.10 + "@babel/parser": ^7.27.1 + "@babel/types": ^7.27.1 "@jridgewell/gen-mapping": ^0.3.5 "@jridgewell/trace-mapping": ^0.3.25 jsesc: ^3.0.2 - checksum: b047378cb4fdb54adae53a7e9648f1585c2e3ddd3a4019e36bf4b4554029c84872891234fc9c9519570448a1cb47430b2bf46524cf618c94d6d09985cf6428e1 + checksum: d5e220eb20aca1d93aef85c4c716237f84c5aab7d3ed8dfeb7060dcd73d20c593a687fe74cfb6d3dc1604ef9faff2ca24e6cfdb1af18e03e3a5f9f63a04c0bdc languageName: node linkType: hard @@ -696,29 +965,16 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.25.9": - version: 7.26.2 - resolution: "@babel/generator@npm:7.26.2" - dependencies: - "@babel/parser": ^7.26.2 - "@babel/types": ^7.26.0 - "@jridgewell/gen-mapping": ^0.3.5 - "@jridgewell/trace-mapping": ^0.3.25 - jsesc: ^3.0.2 - checksum: 6ff850b7d6082619f8c2f518d993cf7254cfbaa20b026282cbef5c9b2197686d076a432b18e36c4d1a42721c016df4f77a8f62c67600775d9683621d534b91b4 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.26.10, @babel/generator@npm:^7.26.9, @babel/generator@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/generator@npm:7.27.1" +"@babel/generator@npm:^7.27.5, @babel/generator@npm:^7.28.3, @babel/generator@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/generator@npm:7.28.5" dependencies: - "@babel/parser": ^7.27.1 - "@babel/types": ^7.27.1 - "@jridgewell/gen-mapping": ^0.3.5 - "@jridgewell/trace-mapping": ^0.3.25 + "@babel/parser": ^7.28.5 + "@babel/types": ^7.28.5 + "@jridgewell/gen-mapping": ^0.3.12 + "@jridgewell/trace-mapping": ^0.3.28 jsesc: ^3.0.2 - checksum: d5e220eb20aca1d93aef85c4c716237f84c5aab7d3ed8dfeb7060dcd73d20c593a687fe74cfb6d3dc1604ef9faff2ca24e6cfdb1af18e03e3a5f9f63a04c0bdc + checksum: 3e86fa0197bb33394a85a73dbbca92bb1b3f250a30294c7e327359c0978ad90f36f3d71c7f2965a3fc349cfa82becc8f87e7421c75796c8bc48dd9010dd866d1 languageName: node linkType: hard @@ -735,25 +991,12 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.28.3, @babel/generator@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/generator@npm:7.28.5" - dependencies: - "@babel/parser": ^7.28.5 - "@babel/types": ^7.28.5 - "@jridgewell/gen-mapping": ^0.3.12 - "@jridgewell/trace-mapping": ^0.3.28 - jsesc: ^3.0.2 - checksum: 3e86fa0197bb33394a85a73dbbca92bb1b3f250a30294c7e327359c0978ad90f36f3d71c7f2965a3fc349cfa82becc8f87e7421c75796c8bc48dd9010dd866d1 - languageName: node - linkType: hard - -"@babel/helper-annotate-as-pure@npm:7.25.9, @babel/helper-annotate-as-pure@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-annotate-as-pure@npm:7.25.9" +"@babel/helper-annotate-as-pure@npm:7.27.1, @babel/helper-annotate-as-pure@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-annotate-as-pure@npm:7.27.1" dependencies: - "@babel/types": ^7.25.9 - checksum: 41edda10df1ae106a9b4fe617bf7c6df77db992992afd46192534f5cff29f9e49a303231733782dd65c5f9409714a529f215325569f14282046e9d3b7a1ffb6c + "@babel/types": ^7.27.1 + checksum: 3f8e4d591458d6c0621a3d670f8798b8895580214287390126e3e621ddf3df0bd07cbcc9500c2671b9ec10162c2f9feb1194da5cf039d40df8cb69d181fc0cd8 languageName: node linkType: hard @@ -766,15 +1009,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-annotate-as-pure@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-annotate-as-pure@npm:7.27.1" - dependencies: - "@babel/types": ^7.27.1 - checksum: 3f8e4d591458d6c0621a3d670f8798b8895580214287390126e3e621ddf3df0bd07cbcc9500c2671b9ec10162c2f9feb1194da5cf039d40df8cb69d181fc0cd8 - languageName: node - linkType: hard - "@babel/helper-annotate-as-pure@npm:^7.27.3": version: 7.27.3 resolution: "@babel/helper-annotate-as-pure@npm:7.27.3" @@ -797,7 +1031,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.26.5, @babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2": +"@babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2": version: 7.27.2 resolution: "@babel/helper-compilation-targets@npm:7.27.2" dependencies: @@ -952,16 +1186,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-module-imports@npm:7.25.9" - dependencies: - "@babel/traverse": ^7.25.9 - "@babel/types": ^7.25.9 - checksum: 1b411ce4ca825422ef7065dffae7d8acef52023e51ad096351e3e2c05837e9bf9fca2af9ca7f28dc26d596a588863d0fedd40711a88e350b736c619a80e704e6 - languageName: node - linkType: hard - "@babel/helper-module-imports@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-module-imports@npm:7.27.1" @@ -986,19 +1210,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.26.0": - version: 7.26.0 - resolution: "@babel/helper-module-transforms@npm:7.26.0" - dependencies: - "@babel/helper-module-imports": ^7.25.9 - "@babel/helper-validator-identifier": ^7.25.9 - "@babel/traverse": ^7.25.9 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 942eee3adf2b387443c247a2c190c17c4fd45ba92a23087abab4c804f40541790d51ad5277e4b5b1ed8d5ba5b62de73857446b7742f835c18ebd350384e63917 - languageName: node - linkType: hard - "@babel/helper-module-transforms@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-module-transforms@npm:7.27.1" @@ -1012,7 +1223,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.28.3": +"@babel/helper-module-transforms@npm:^7.27.3, @babel/helper-module-transforms@npm:^7.28.3": version: 7.28.3 resolution: "@babel/helper-module-transforms@npm:7.28.3" dependencies: @@ -1041,33 +1252,13 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-plugin-utils@npm:7.25.9" - checksum: e19ec8acf0b696756e6d84531f532c5fe508dce57aa68c75572a77798bd04587a844a9a6c8ea7d62d673e21fdc174d091c9097fb29aea1c1b49f9c6eaa80f022 - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.26.5, @babel/helper-plugin-utils@npm:^7.27.1": +"@babel/helper-plugin-utils@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-plugin-utils@npm:7.27.1" checksum: 5d715055301badab62bdb2336075a77f8dc8bd290cad2bc1b37ea3bf1b3efc40594d308082229f239deb4d6b5b80b0a73bce000e595ea74416e0339c11037047 languageName: node linkType: hard -"@babel/helper-remap-async-to-generator@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-remap-async-to-generator@npm:7.25.9" - dependencies: - "@babel/helper-annotate-as-pure": ^7.25.9 - "@babel/helper-wrap-function": ^7.25.9 - "@babel/traverse": ^7.25.9 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: ea37ad9f8f7bcc27c109963b8ebb9d22bac7a5db2a51de199cb560e251d5593fe721e46aab2ca7d3e7a24b0aa4aff0eaf9c7307af9c2fd3a1d84268579073052 - languageName: node - linkType: hard - "@babel/helper-remap-async-to-generator@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-remap-async-to-generator@npm:7.27.1" @@ -1104,16 +1295,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.25.9" - dependencies: - "@babel/traverse": ^7.25.9 - "@babel/types": ^7.25.9 - checksum: fdbb5248932198bc26daa6abf0d2ac42cab9c2dbb75b7e9f40d425c8f28f09620b886d40e7f9e4e08ffc7aaa2cefe6fc2c44be7c20e81f7526634702fb615bdc - languageName: node - linkType: hard - "@babel/helper-skip-transparent-expression-wrappers@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.27.1" @@ -1140,13 +1321,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-string-parser@npm:7.25.9" - checksum: 6435ee0849e101681c1849868278b5aee82686ba2c1e27280e5e8aca6233af6810d39f8e4e693d2f2a44a3728a6ccfd66f72d71826a94105b86b731697cdfa99 - languageName: node - linkType: hard - "@babel/helper-string-parser@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-string-parser@npm:7.27.1" @@ -1161,13 +1335,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-validator-identifier@npm:7.25.9" - checksum: 5b85918cb1a92a7f3f508ea02699e8d2422fe17ea8e82acd445006c0ef7520fbf48e3dbcdaf7b0a1d571fc3a2715a29719e5226636cb6042e15fe6ed2a590944 - languageName: node - linkType: hard - "@babel/helper-validator-identifier@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-validator-identifier@npm:7.27.1" @@ -1189,13 +1356,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-validator-option@npm:7.25.9" - checksum: 9491b2755948ebbdd68f87da907283698e663b5af2d2b1b02a2765761974b1120d5d8d49e9175b167f16f72748ffceec8c9cf62acfbee73f4904507b246e2b3d - languageName: node - linkType: hard - "@babel/helper-validator-option@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-validator-option@npm:7.27.1" @@ -1203,17 +1363,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-wrap-function@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-wrap-function@npm:7.25.9" - dependencies: - "@babel/template": ^7.25.9 - "@babel/traverse": ^7.25.9 - "@babel/types": ^7.25.9 - checksum: 8ec1701e60ae004415800c4a7a188f5564c73b4e4f3fdf58dd3f34a3feaa9753173f39bbd6d02e7ecc974f48155efc7940e62584435b3092c07728ee46a604ea - languageName: node - linkType: hard - "@babel/helper-wrap-function@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-wrap-function@npm:7.27.1" @@ -1235,17 +1384,7 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.26.10, @babel/helpers@npm:^7.26.9": - version: 7.27.1 - resolution: "@babel/helpers@npm:7.27.1" - dependencies: - "@babel/template": ^7.27.1 - "@babel/types": ^7.27.1 - checksum: 19ede1e996cbd295fb3a881ff70bc0f91c5133ebac256441e9ecd69dfba89456e75cf7ecf06cd276c638a4de7bd6eff21151961c78038d0b23d94b4d23415ee4 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.28.4": +"@babel/helpers@npm:^7.27.1, @babel/helpers@npm:^7.27.6, @babel/helpers@npm:^7.28.4": version: 7.28.4 resolution: "@babel/helpers@npm:7.28.4" dependencies: @@ -1278,18 +1417,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.2": - version: 7.26.2 - resolution: "@babel/parser@npm:7.26.2" - dependencies: - "@babel/types": ^7.26.0 - bin: - parser: ./bin/babel-parser.js - checksum: c88b5ea0adf357ef909cdc2c31e284a154943edc59f63f6e8a4c20bf773a1b2f3d8c2205e59c09ca7cdad91e7466300114548876529277a80651b6436a48d5d9 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.26.10, @babel/parser@npm:^7.26.9, @babel/parser@npm:^7.27.1, @babel/parser@npm:^7.27.2": +"@babel/parser@npm:^7.27.1, @babel/parser@npm:^7.27.2": version: 7.27.2 resolution: "@babel/parser@npm:7.27.2" dependencies: @@ -1300,18 +1428,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/parser@npm:7.28.0" - dependencies: - "@babel/types": ^7.28.0 - bin: - parser: ./bin/babel-parser.js - checksum: 718e4ce9b0914701d6f74af610d3e7d52b355ef1dcf34a7dedc5930e96579e387f04f96187e308e601828b900b8e4e66d2fe85023beba2ac46587023c45b01cf - languageName: node - linkType: hard - -"@babel/parser@npm:^7.28.4, @babel/parser@npm:^7.28.5": +"@babel/parser@npm:^7.27.7, @babel/parser@npm:^7.28.4, @babel/parser@npm:^7.28.5": version: 7.28.5 resolution: "@babel/parser@npm:7.28.5" dependencies: @@ -1322,15 +1439,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.9": - version: 7.27.1 - resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.27.1" +"@babel/parser@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/parser@npm:7.28.0" dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/traverse": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 72f24b9487e445fa61cf8be552aad394a648c2bb445c38d39d1df003186d9685b87dd8d388c950f438ea0ca44c82099d9c49252fb681c719cc72edf02bbe0304 + "@babel/types": ^7.28.0 + bin: + parser: ./bin/babel-parser.js + checksum: 718e4ce9b0914701d6f74af610d3e7d52b355ef1dcf34a7dedc5930e96579e387f04f96187e308e601828b900b8e4e66d2fe85023beba2ac46587023c45b01cf languageName: node linkType: hard @@ -1346,7 +1462,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.25.9, @babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.27.1": +"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.27.1" dependencies: @@ -1357,7 +1473,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.25.9, @babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.27.1": +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.27.1" dependencies: @@ -1368,7 +1484,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.25.9, @babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.27.1": +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.27.1" dependencies: @@ -1381,19 +1497,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.25.9": - version: 7.27.1 - resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/traverse": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 4d6792ccade2d6b9d5577b0a879ab22d05ac8a1206b1a636b6ffdb53a0c0bacaf0f7947e46de254f228ffd75456f4b95ccd82fdeaefc0b92d88af3c5991863ad - languageName: node - linkType: hard - -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.28.3": +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.27.1, @babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.28.3": version: 7.28.3 resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.28.3" dependencies: @@ -1458,7 +1562,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-import-assertions@npm:^7.26.0, @babel/plugin-syntax-import-assertions@npm:^7.27.1": +"@babel/plugin-syntax-import-assertions@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-syntax-import-assertions@npm:7.27.1" dependencies: @@ -1469,17 +1573,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-import-attributes@npm:7.26.0": - version: 7.26.0 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.26.0" - dependencies: - "@babel/helper-plugin-utils": ^7.25.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c122aa577166c80ee67f75aebebeef4150a132c4d3109d25d7fc058bf802946f883e330f20b78c1d3e3a5ada631c8780c263d2d01b5dbaecc69efefeedd42916 - languageName: node - linkType: hard - "@babel/plugin-syntax-import-attributes@npm:^7.24.7": version: 7.25.6 resolution: "@babel/plugin-syntax-import-attributes@npm:7.25.6" @@ -1491,7 +1584,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-import-attributes@npm:^7.26.0, @babel/plugin-syntax-import-attributes@npm:^7.27.1": +"@babel/plugin-syntax-import-attributes@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-syntax-import-attributes@npm:7.27.1" dependencies: @@ -1646,7 +1739,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-arrow-functions@npm:^7.25.9, @babel/plugin-transform-arrow-functions@npm:^7.27.1": +"@babel/plugin-transform-arrow-functions@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-arrow-functions@npm:7.27.1" dependencies: @@ -1657,20 +1750,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:7.26.8": - version: 7.26.8 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.26.8" - dependencies: - "@babel/helper-plugin-utils": ^7.26.5 - "@babel/helper-remap-async-to-generator": ^7.25.9 - "@babel/traverse": ^7.26.8 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10424a1bbfbc7ffdb13cef1e832f76bb2d393a9fbfaa1eaa3091a8f6ec3e2ac0b66cf04fca9cb3fb4dbf3d1bd404d72dfce4a3742b4ef21f6271aca7076a65ef - languageName: node - linkType: hard - -"@babel/plugin-transform-async-generator-functions@npm:^7.26.8": +"@babel/plugin-transform-async-generator-functions@npm:7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-async-generator-functions@npm:7.27.1" dependencies: @@ -1683,7 +1763,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.28.0": +"@babel/plugin-transform-async-generator-functions@npm:^7.27.1, @babel/plugin-transform-async-generator-functions@npm:^7.28.0": version: 7.28.0 resolution: "@babel/plugin-transform-async-generator-functions@npm:7.28.0" dependencies: @@ -1696,20 +1776,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-to-generator@npm:7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.25.9" - dependencies: - "@babel/helper-module-imports": ^7.25.9 - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/helper-remap-async-to-generator": ^7.25.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b3ad50fb93c171644d501864620ed23952a46648c4df10dc9c62cc9ad08031b66bd272cfdd708faeee07c23b6251b16f29ce0350473e4c79f0c32178d38ce3a6 - languageName: node - linkType: hard - -"@babel/plugin-transform-async-to-generator@npm:^7.25.9, @babel/plugin-transform-async-to-generator@npm:^7.27.1": +"@babel/plugin-transform-async-to-generator@npm:7.27.1, @babel/plugin-transform-async-to-generator@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-async-to-generator@npm:7.27.1" dependencies: @@ -1722,7 +1789,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoped-functions@npm:^7.26.5, @babel/plugin-transform-block-scoped-functions@npm:^7.27.1": +"@babel/plugin-transform-block-scoped-functions@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.27.1" dependencies: @@ -1733,18 +1800,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.25.9": - version: 7.27.1 - resolution: "@babel/plugin-transform-block-scoping@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 490773ee111fd298d74bd0ba454c941ae23a39db5cd08bf4258997f44f7584399fc4214a7c3816ee70f0273c263fe2ea4e11bb07939e57845702ba05258a9cb0 - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoping@npm:^7.28.0": +"@babel/plugin-transform-block-scoping@npm:^7.27.1, @babel/plugin-transform-block-scoping@npm:^7.28.0": version: 7.28.5 resolution: "@babel/plugin-transform-block-scoping@npm:7.28.5" dependencies: @@ -1755,7 +1811,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-class-properties@npm:^7.25.9, @babel/plugin-transform-class-properties@npm:^7.27.1": +"@babel/plugin-transform-class-properties@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-class-properties@npm:7.27.1" dependencies: @@ -1767,19 +1823,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-class-static-block@npm:^7.26.0": - version: 7.27.1 - resolution: "@babel/plugin-transform-class-static-block@npm:7.27.1" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.12.0 - checksum: 69688fe1641ae0ea025b916b8c2336e8b5643a5ec292e8f546ecd35d9d9d4bb301d738910822a79d867098cf687d550d92cd906ae4cda03c0f69b1ece2149a58 - languageName: node - linkType: hard - -"@babel/plugin-transform-class-static-block@npm:^7.28.3": +"@babel/plugin-transform-class-static-block@npm:^7.27.1, @babel/plugin-transform-class-static-block@npm:^7.28.3": version: 7.28.3 resolution: "@babel/plugin-transform-class-static-block@npm:7.28.3" dependencies: @@ -1791,23 +1835,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.25.9": - version: 7.27.1 - resolution: "@babel/plugin-transform-classes@npm:7.27.1" - dependencies: - "@babel/helper-annotate-as-pure": ^7.27.1 - "@babel/helper-compilation-targets": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/helper-replace-supers": ^7.27.1 - "@babel/traverse": ^7.27.1 - globals: ^11.1.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a4275d3a9e2e4144c421baa49958191e4b33957fca6e87686ed8da0eb3240270d4f91a2a4b9491c87feb6c33f459d8aec013cec8d5f5099c794b740703802dc7 - languageName: node - linkType: hard - -"@babel/plugin-transform-classes@npm:^7.28.3": +"@babel/plugin-transform-classes@npm:^7.27.1, @babel/plugin-transform-classes@npm:^7.28.3": version: 7.28.4 resolution: "@babel/plugin-transform-classes@npm:7.28.4" dependencies: @@ -1823,7 +1851,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-computed-properties@npm:^7.25.9, @babel/plugin-transform-computed-properties@npm:^7.27.1": +"@babel/plugin-transform-computed-properties@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-computed-properties@npm:7.27.1" dependencies: @@ -1835,7 +1863,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.25.9, @babel/plugin-transform-destructuring@npm:^7.27.1": +"@babel/plugin-transform-destructuring@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-destructuring@npm:7.27.1" dependencies: @@ -1858,7 +1886,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.25.9, @babel/plugin-transform-dotall-regex@npm:^7.27.1": +"@babel/plugin-transform-dotall-regex@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-dotall-regex@npm:7.27.1" dependencies: @@ -1870,7 +1898,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-duplicate-keys@npm:^7.25.9, @babel/plugin-transform-duplicate-keys@npm:^7.27.1": +"@babel/plugin-transform-duplicate-keys@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-duplicate-keys@npm:7.27.1" dependencies: @@ -1881,7 +1909,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.25.9, @babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.27.1": +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.27.1" dependencies: @@ -1893,7 +1921,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-dynamic-import@npm:^7.25.9, @babel/plugin-transform-dynamic-import@npm:^7.27.1": +"@babel/plugin-transform-dynamic-import@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-dynamic-import@npm:7.27.1" dependencies: @@ -1916,17 +1944,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-exponentiation-operator@npm:^7.26.3": - version: 7.27.1 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4ff4a0f30babc457a5ae8564deda209599627c2ce647284a0e8e66f65b44f6d968cf77761a4cc31b45b61693f0810479248c79e681681d8ccb39d0c52944c1fd - languageName: node - linkType: hard - "@babel/plugin-transform-exponentiation-operator@npm:^7.27.1": version: 7.28.5 resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.28.5" @@ -1938,7 +1955,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-export-namespace-from@npm:^7.25.9, @babel/plugin-transform-export-namespace-from@npm:^7.27.1": +"@babel/plugin-transform-export-namespace-from@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-export-namespace-from@npm:7.27.1" dependencies: @@ -1949,7 +1966,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-for-of@npm:^7.26.9, @babel/plugin-transform-for-of@npm:^7.27.1": +"@babel/plugin-transform-for-of@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-for-of@npm:7.27.1" dependencies: @@ -1961,7 +1978,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-function-name@npm:^7.25.9, @babel/plugin-transform-function-name@npm:^7.27.1": +"@babel/plugin-transform-function-name@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-function-name@npm:7.27.1" dependencies: @@ -1974,7 +1991,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-json-strings@npm:^7.25.9, @babel/plugin-transform-json-strings@npm:^7.27.1": +"@babel/plugin-transform-json-strings@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-json-strings@npm:7.27.1" dependencies: @@ -1985,7 +2002,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-literals@npm:^7.25.9, @babel/plugin-transform-literals@npm:^7.27.1": +"@babel/plugin-transform-literals@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-literals@npm:7.27.1" dependencies: @@ -1996,17 +2013,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-logical-assignment-operators@npm:^7.25.9": - version: 7.27.1 - resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2757955d81d65cc4701c17b83720745f6858f7a1d1d58117e379c204f47adbeb066b778596b6168bdbf4a22c229aab595d79a9abc261d0c6bfd62d4419466e73 - languageName: node - linkType: hard - "@babel/plugin-transform-logical-assignment-operators@npm:^7.27.1": version: 7.28.5 resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.28.5" @@ -2018,7 +2024,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-member-expression-literals@npm:^7.25.9, @babel/plugin-transform-member-expression-literals@npm:^7.27.1": +"@babel/plugin-transform-member-expression-literals@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-member-expression-literals@npm:7.27.1" dependencies: @@ -2029,7 +2035,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-amd@npm:^7.25.9, @babel/plugin-transform-modules-amd@npm:^7.27.1": +"@babel/plugin-transform-modules-amd@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-modules-amd@npm:7.27.1" dependencies: @@ -2041,7 +2047,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.26.3, @babel/plugin-transform-modules-commonjs@npm:^7.27.1": +"@babel/plugin-transform-modules-commonjs@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-modules-commonjs@npm:7.27.1" dependencies: @@ -2053,20 +2059,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.25.9": - version: 7.27.1 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.27.1" - dependencies: - "@babel/helper-module-transforms": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/helper-validator-identifier": ^7.27.1 - "@babel/traverse": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7c17a8973676c18525d87f277944616596f1b154cc2b9263bfd78ecdbf5f4288ec46c7f58017321ca3e3d6dfeb96875467b95311a39719b475d42a157525d87f - languageName: node - linkType: hard - "@babel/plugin-transform-modules-systemjs@npm:^7.27.1": version: 7.28.5 resolution: "@babel/plugin-transform-modules-systemjs@npm:7.28.5" @@ -2081,7 +2073,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-umd@npm:^7.25.9, @babel/plugin-transform-modules-umd@npm:^7.27.1": +"@babel/plugin-transform-modules-umd@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-modules-umd@npm:7.27.1" dependencies: @@ -2093,7 +2085,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.25.9, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.27.1": +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.27.1" dependencies: @@ -2105,7 +2097,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-new-target@npm:^7.25.9, @babel/plugin-transform-new-target@npm:^7.27.1": +"@babel/plugin-transform-new-target@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-new-target@npm:7.27.1" dependencies: @@ -2116,7 +2108,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.26.6, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.27.1": +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.27.1" dependencies: @@ -2127,7 +2119,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-numeric-separator@npm:^7.25.9, @babel/plugin-transform-numeric-separator@npm:^7.27.1": +"@babel/plugin-transform-numeric-separator@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-numeric-separator@npm:7.27.1" dependencies: @@ -2138,21 +2130,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-object-rest-spread@npm:^7.25.9": - version: 7.27.2 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.27.2" - dependencies: - "@babel/helper-compilation-targets": ^7.27.2 - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/plugin-transform-destructuring": ^7.27.1 - "@babel/plugin-transform-parameters": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 6d518c21cddfa436029d72409aac8f680d3ba3a10eb94477112869132226498474a61218893ac9958f8bc079109af0f684d1347d5036fee8e9b477daecf2d8f3 - languageName: node - linkType: hard - -"@babel/plugin-transform-object-rest-spread@npm:^7.28.0": +"@babel/plugin-transform-object-rest-spread@npm:^7.27.2, @babel/plugin-transform-object-rest-spread@npm:^7.28.0": version: 7.28.4 resolution: "@babel/plugin-transform-object-rest-spread@npm:7.28.4" dependencies: @@ -2167,7 +2145,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-object-super@npm:^7.25.9, @babel/plugin-transform-object-super@npm:^7.27.1": +"@babel/plugin-transform-object-super@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-object-super@npm:7.27.1" dependencies: @@ -2179,7 +2157,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-catch-binding@npm:^7.25.9, @babel/plugin-transform-optional-catch-binding@npm:^7.27.1": +"@babel/plugin-transform-optional-catch-binding@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.27.1" dependencies: @@ -2190,18 +2168,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": ^7.25.9 - "@babel/helper-skip-transparent-expression-wrappers": ^7.25.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f1642a7094456067e82b176e1e9fd426fda7ed9df54cb6d10109fc512b622bf4b3c83acc5875125732b8622565107fdbe2d60fe3ec8685e1d1c22c38c1b57782 - languageName: node - linkType: hard - "@babel/plugin-transform-optional-chaining@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-optional-chaining@npm:7.27.1" @@ -2214,17 +2180,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-parameters@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": ^7.25.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d7ba2a7d05edbc85aed741289b0ff3d6289a1c25d82ac4be32c565f88a66391f46631aad59ceeed40824037f7eeaa7a0de1998db491f50e65a565cd964f78786 - languageName: node - linkType: hard - "@babel/plugin-transform-parameters@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-parameters@npm:7.27.1" @@ -2247,7 +2202,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-private-methods@npm:7.27.1, @babel/plugin-transform-private-methods@npm:^7.25.9, @babel/plugin-transform-private-methods@npm:^7.27.1": +"@babel/plugin-transform-private-methods@npm:7.27.1, @babel/plugin-transform-private-methods@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-private-methods@npm:7.27.1" dependencies: @@ -2259,7 +2214,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-private-property-in-object@npm:^7.25.9, @babel/plugin-transform-private-property-in-object@npm:^7.27.1": +"@babel/plugin-transform-private-property-in-object@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-private-property-in-object@npm:7.27.1" dependencies: @@ -2272,7 +2227,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-property-literals@npm:^7.25.9, @babel/plugin-transform-property-literals@npm:^7.27.1": +"@babel/plugin-transform-property-literals@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-property-literals@npm:7.27.1" dependencies: @@ -2283,18 +2238,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.25.9": - version: 7.27.1 - resolution: "@babel/plugin-transform-regenerator@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e1e28e08abf1c8fcdeaa8af5ab44cfda83bebc0ba6ebc155afdae243c51a2e941dd8ff6c51affb0447deb07a6bc66424fbf04482b050c061e272bc75c15853bf - languageName: node - linkType: hard - -"@babel/plugin-transform-regenerator@npm:^7.28.3": +"@babel/plugin-transform-regenerator@npm:^7.27.1, @babel/plugin-transform-regenerator@npm:^7.28.3": version: 7.28.4 resolution: "@babel/plugin-transform-regenerator@npm:7.28.4" dependencies: @@ -2305,7 +2249,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-regexp-modifiers@npm:^7.26.0, @babel/plugin-transform-regexp-modifiers@npm:^7.27.1": +"@babel/plugin-transform-regexp-modifiers@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.27.1" dependencies: @@ -2317,7 +2261,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-reserved-words@npm:^7.25.9, @babel/plugin-transform-reserved-words@npm:^7.27.1": +"@babel/plugin-transform-reserved-words@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-reserved-words@npm:7.27.1" dependencies: @@ -2328,19 +2272,19 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-runtime@npm:7.26.10": - version: 7.26.10 - resolution: "@babel/plugin-transform-runtime@npm:7.26.10" +"@babel/plugin-transform-runtime@npm:7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-runtime@npm:7.27.1" dependencies: - "@babel/helper-module-imports": ^7.25.9 - "@babel/helper-plugin-utils": ^7.26.5 + "@babel/helper-module-imports": ^7.27.1 + "@babel/helper-plugin-utils": ^7.27.1 babel-plugin-polyfill-corejs2: ^0.4.10 babel-plugin-polyfill-corejs3: ^0.11.0 babel-plugin-polyfill-regenerator: ^0.6.1 semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f50096ebea8c6106db2906b4b73955139c7c338d86f4940ed329703b49848843cf7a1308cafd6f23f9fc9f35f5e835daba2bb56be991b91d2a4a8092c4a9943b + checksum: 9328060b54e430732883cac672cfd4c952c2bf2d9fb5268c675ae01f74ccb224ecdf105f5ad52b6277ad8b34b6df1e7cec6d1c02a0d17be54414265414e8ac88 languageName: node linkType: hard @@ -2360,7 +2304,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-shorthand-properties@npm:^7.25.9, @babel/plugin-transform-shorthand-properties@npm:^7.27.1": +"@babel/plugin-transform-shorthand-properties@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-shorthand-properties@npm:7.27.1" dependencies: @@ -2371,7 +2315,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.25.9, @babel/plugin-transform-spread@npm:^7.27.1": +"@babel/plugin-transform-spread@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-spread@npm:7.27.1" dependencies: @@ -2383,7 +2327,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-sticky-regex@npm:^7.25.9, @babel/plugin-transform-sticky-regex@npm:^7.27.1": +"@babel/plugin-transform-sticky-regex@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-sticky-regex@npm:7.27.1" dependencies: @@ -2394,7 +2338,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.26.8, @babel/plugin-transform-template-literals@npm:^7.27.1": +"@babel/plugin-transform-template-literals@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-template-literals@npm:7.27.1" dependencies: @@ -2405,7 +2349,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-typeof-symbol@npm:^7.26.7, @babel/plugin-transform-typeof-symbol@npm:^7.27.1": +"@babel/plugin-transform-typeof-symbol@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-typeof-symbol@npm:7.27.1" dependencies: @@ -2416,7 +2360,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-escapes@npm:^7.25.9, @babel/plugin-transform-unicode-escapes@npm:^7.27.1": +"@babel/plugin-transform-unicode-escapes@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-unicode-escapes@npm:7.27.1" dependencies: @@ -2427,7 +2371,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-property-regex@npm:^7.25.9, @babel/plugin-transform-unicode-property-regex@npm:^7.27.1": +"@babel/plugin-transform-unicode-property-regex@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.27.1" dependencies: @@ -2439,7 +2383,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-regex@npm:^7.25.9, @babel/plugin-transform-unicode-regex@npm:^7.27.1": +"@babel/plugin-transform-unicode-regex@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-unicode-regex@npm:7.27.1" dependencies: @@ -2451,7 +2395,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-sets-regex@npm:^7.25.9, @babel/plugin-transform-unicode-sets-regex@npm:^7.27.1": +"@babel/plugin-transform-unicode-sets-regex@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.27.1" dependencies: @@ -2463,73 +2407,73 @@ __metadata: languageName: node linkType: hard -"@babel/preset-env@npm:7.26.9": - version: 7.26.9 - resolution: "@babel/preset-env@npm:7.26.9" +"@babel/preset-env@npm:7.27.2": + version: 7.27.2 + resolution: "@babel/preset-env@npm:7.27.2" dependencies: - "@babel/compat-data": ^7.26.8 - "@babel/helper-compilation-targets": ^7.26.5 - "@babel/helper-plugin-utils": ^7.26.5 - "@babel/helper-validator-option": ^7.25.9 - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": ^7.25.9 - "@babel/plugin-bugfix-safari-class-field-initializer-scope": ^7.25.9 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.25.9 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.25.9 - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ^7.25.9 + "@babel/compat-data": ^7.27.2 + "@babel/helper-compilation-targets": ^7.27.2 + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-validator-option": ^7.27.1 + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": ^7.27.1 + "@babel/plugin-bugfix-safari-class-field-initializer-scope": ^7.27.1 + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.27.1 + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.27.1 + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ^7.27.1 "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2 - "@babel/plugin-syntax-import-assertions": ^7.26.0 - "@babel/plugin-syntax-import-attributes": ^7.26.0 + "@babel/plugin-syntax-import-assertions": ^7.27.1 + "@babel/plugin-syntax-import-attributes": ^7.27.1 "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 - "@babel/plugin-transform-arrow-functions": ^7.25.9 - "@babel/plugin-transform-async-generator-functions": ^7.26.8 - "@babel/plugin-transform-async-to-generator": ^7.25.9 - "@babel/plugin-transform-block-scoped-functions": ^7.26.5 - "@babel/plugin-transform-block-scoping": ^7.25.9 - "@babel/plugin-transform-class-properties": ^7.25.9 - "@babel/plugin-transform-class-static-block": ^7.26.0 - "@babel/plugin-transform-classes": ^7.25.9 - "@babel/plugin-transform-computed-properties": ^7.25.9 - "@babel/plugin-transform-destructuring": ^7.25.9 - "@babel/plugin-transform-dotall-regex": ^7.25.9 - "@babel/plugin-transform-duplicate-keys": ^7.25.9 - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": ^7.25.9 - "@babel/plugin-transform-dynamic-import": ^7.25.9 - "@babel/plugin-transform-exponentiation-operator": ^7.26.3 - "@babel/plugin-transform-export-namespace-from": ^7.25.9 - "@babel/plugin-transform-for-of": ^7.26.9 - "@babel/plugin-transform-function-name": ^7.25.9 - "@babel/plugin-transform-json-strings": ^7.25.9 - "@babel/plugin-transform-literals": ^7.25.9 - "@babel/plugin-transform-logical-assignment-operators": ^7.25.9 - "@babel/plugin-transform-member-expression-literals": ^7.25.9 - "@babel/plugin-transform-modules-amd": ^7.25.9 - "@babel/plugin-transform-modules-commonjs": ^7.26.3 - "@babel/plugin-transform-modules-systemjs": ^7.25.9 - "@babel/plugin-transform-modules-umd": ^7.25.9 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.25.9 - "@babel/plugin-transform-new-target": ^7.25.9 - "@babel/plugin-transform-nullish-coalescing-operator": ^7.26.6 - "@babel/plugin-transform-numeric-separator": ^7.25.9 - "@babel/plugin-transform-object-rest-spread": ^7.25.9 - "@babel/plugin-transform-object-super": ^7.25.9 - "@babel/plugin-transform-optional-catch-binding": ^7.25.9 - "@babel/plugin-transform-optional-chaining": ^7.25.9 - "@babel/plugin-transform-parameters": ^7.25.9 - "@babel/plugin-transform-private-methods": ^7.25.9 - "@babel/plugin-transform-private-property-in-object": ^7.25.9 - "@babel/plugin-transform-property-literals": ^7.25.9 - "@babel/plugin-transform-regenerator": ^7.25.9 - "@babel/plugin-transform-regexp-modifiers": ^7.26.0 - "@babel/plugin-transform-reserved-words": ^7.25.9 - "@babel/plugin-transform-shorthand-properties": ^7.25.9 - "@babel/plugin-transform-spread": ^7.25.9 - "@babel/plugin-transform-sticky-regex": ^7.25.9 - "@babel/plugin-transform-template-literals": ^7.26.8 - "@babel/plugin-transform-typeof-symbol": ^7.26.7 - "@babel/plugin-transform-unicode-escapes": ^7.25.9 - "@babel/plugin-transform-unicode-property-regex": ^7.25.9 - "@babel/plugin-transform-unicode-regex": ^7.25.9 - "@babel/plugin-transform-unicode-sets-regex": ^7.25.9 + "@babel/plugin-transform-arrow-functions": ^7.27.1 + "@babel/plugin-transform-async-generator-functions": ^7.27.1 + "@babel/plugin-transform-async-to-generator": ^7.27.1 + "@babel/plugin-transform-block-scoped-functions": ^7.27.1 + "@babel/plugin-transform-block-scoping": ^7.27.1 + "@babel/plugin-transform-class-properties": ^7.27.1 + "@babel/plugin-transform-class-static-block": ^7.27.1 + "@babel/plugin-transform-classes": ^7.27.1 + "@babel/plugin-transform-computed-properties": ^7.27.1 + "@babel/plugin-transform-destructuring": ^7.27.1 + "@babel/plugin-transform-dotall-regex": ^7.27.1 + "@babel/plugin-transform-duplicate-keys": ^7.27.1 + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": ^7.27.1 + "@babel/plugin-transform-dynamic-import": ^7.27.1 + "@babel/plugin-transform-exponentiation-operator": ^7.27.1 + "@babel/plugin-transform-export-namespace-from": ^7.27.1 + "@babel/plugin-transform-for-of": ^7.27.1 + "@babel/plugin-transform-function-name": ^7.27.1 + "@babel/plugin-transform-json-strings": ^7.27.1 + "@babel/plugin-transform-literals": ^7.27.1 + "@babel/plugin-transform-logical-assignment-operators": ^7.27.1 + "@babel/plugin-transform-member-expression-literals": ^7.27.1 + "@babel/plugin-transform-modules-amd": ^7.27.1 + "@babel/plugin-transform-modules-commonjs": ^7.27.1 + "@babel/plugin-transform-modules-systemjs": ^7.27.1 + "@babel/plugin-transform-modules-umd": ^7.27.1 + "@babel/plugin-transform-named-capturing-groups-regex": ^7.27.1 + "@babel/plugin-transform-new-target": ^7.27.1 + "@babel/plugin-transform-nullish-coalescing-operator": ^7.27.1 + "@babel/plugin-transform-numeric-separator": ^7.27.1 + "@babel/plugin-transform-object-rest-spread": ^7.27.2 + "@babel/plugin-transform-object-super": ^7.27.1 + "@babel/plugin-transform-optional-catch-binding": ^7.27.1 + "@babel/plugin-transform-optional-chaining": ^7.27.1 + "@babel/plugin-transform-parameters": ^7.27.1 + "@babel/plugin-transform-private-methods": ^7.27.1 + "@babel/plugin-transform-private-property-in-object": ^7.27.1 + "@babel/plugin-transform-property-literals": ^7.27.1 + "@babel/plugin-transform-regenerator": ^7.27.1 + "@babel/plugin-transform-regexp-modifiers": ^7.27.1 + "@babel/plugin-transform-reserved-words": ^7.27.1 + "@babel/plugin-transform-shorthand-properties": ^7.27.1 + "@babel/plugin-transform-spread": ^7.27.1 + "@babel/plugin-transform-sticky-regex": ^7.27.1 + "@babel/plugin-transform-template-literals": ^7.27.1 + "@babel/plugin-transform-typeof-symbol": ^7.27.1 + "@babel/plugin-transform-unicode-escapes": ^7.27.1 + "@babel/plugin-transform-unicode-property-regex": ^7.27.1 + "@babel/plugin-transform-unicode-regex": ^7.27.1 + "@babel/plugin-transform-unicode-sets-regex": ^7.27.1 "@babel/preset-modules": 0.1.6-no-external-plugins babel-plugin-polyfill-corejs2: ^0.4.10 babel-plugin-polyfill-corejs3: ^0.11.0 @@ -2538,7 +2482,7 @@ __metadata: semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7a657f947d069b7a27b02258012ce3ceb9383a8c10c249d4a3565c486294c3fe63ed08128ca3d124444d17eb821cfbf64a91fe8160af2e39f70d5cd2232f079e + checksum: 318b123c8783ac3833bde5a5ff315970967ccd4c1e5c97e0843c0199fe9eab48a8cb40b367b784ae19a33667bee63eb8533eb924dab05bfc92ff9ef436109001 languageName: node linkType: hard @@ -2642,12 +2586,10 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:7.26.10": - version: 7.26.10 - resolution: "@babel/runtime@npm:7.26.10" - dependencies: - regenerator-runtime: ^0.14.0 - checksum: 22d2e0abb86e90de489ab16bb578db6fe2b63a88696db431198b24963749820c723f1982298cdbbea187f7b2b80fb4d98a514faf114ddb2fdc14a4b96277b955 +"@babel/runtime@npm:7.27.1": + version: 7.27.1 + resolution: "@babel/runtime@npm:7.27.1" + checksum: 11339838a54783e5b14e04d94d7a4d032e9965c5823f3f687e41556fa40344ae7aeb57c535720b7a74ab3e8217def7834a6f1a665ee55bbb3befede141419913 languageName: node linkType: hard @@ -2660,7 +2602,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.27.6, @babel/runtime@npm:^7.28.4": +"@babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.27.6, @babel/runtime@npm:^7.28.4": version: 7.28.4 resolution: "@babel/runtime@npm:7.28.4" checksum: 934b0a0460f7d06637d93fcd1a44ac49adc33518d17253b5a0b55ff4cb90a45d8fe78bf034b448911dbec7aff2a90b918697559f78d21c99ff8dbadae9565b55 @@ -2678,18 +2620,7 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/template@npm:7.25.9" - dependencies: - "@babel/code-frame": ^7.25.9 - "@babel/parser": ^7.25.9 - "@babel/types": ^7.25.9 - checksum: 103641fea19c7f4e82dc913aa6b6ac157112a96d7c724d513288f538b84bae04fb87b1f1e495ac1736367b1bc30e10f058b30208fb25f66038e1f1eb4e426472 - languageName: node - linkType: hard - -"@babel/template@npm:^7.26.9, @babel/template@npm:^7.27.1, @babel/template@npm:^7.27.2": +"@babel/template@npm:^7.27.1, @babel/template@npm:^7.27.2": version: 7.27.2 resolution: "@babel/template@npm:7.27.2" dependencies: @@ -2715,22 +2646,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/traverse@npm:7.25.9" - dependencies: - "@babel/code-frame": ^7.25.9 - "@babel/generator": ^7.25.9 - "@babel/parser": ^7.25.9 - "@babel/template": ^7.25.9 - "@babel/types": ^7.25.9 - debug: ^4.3.1 - globals: ^11.1.0 - checksum: 901d325662ff1dd9bc51de00862e01055fa6bc374f5297d7e3731f2f0e268bbb1d2141f53fa82860aa308ee44afdcf186a948f16c83153927925804b95a9594d - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.26.10, @babel/traverse@npm:^7.26.8, @babel/traverse@npm:^7.26.9, @babel/traverse@npm:^7.27.1": +"@babel/traverse@npm:^7.27.1": version: 7.27.1 resolution: "@babel/traverse@npm:7.27.1" dependencies: @@ -2745,33 +2661,33 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/traverse@npm:7.28.0" +"@babel/traverse@npm:^7.27.7, @babel/traverse@npm:^7.28.3, @babel/traverse@npm:^7.28.4, @babel/traverse@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/traverse@npm:7.28.5" dependencies: "@babel/code-frame": ^7.27.1 - "@babel/generator": ^7.28.0 + "@babel/generator": ^7.28.5 "@babel/helper-globals": ^7.28.0 - "@babel/parser": ^7.28.0 + "@babel/parser": ^7.28.5 "@babel/template": ^7.27.2 - "@babel/types": ^7.28.0 + "@babel/types": ^7.28.5 debug: ^4.3.1 - checksum: f1b6ed2a37f593ee02db82521f8d54c8540a7ec2735c6c127ba687de306d62ac5a7c6471819783128e0b825c4f7e374206ebbd1daf00d07f05a4528f5b1b4c07 + checksum: e028ee9654f44be7c2a2df268455cee72d5c424c9ae536785f8f7c8680356f7b977c77ad76909d07eeed09ff1e125ce01cf783011f66b56c838791a85fa6af04 languageName: node linkType: hard -"@babel/traverse@npm:^7.28.3, @babel/traverse@npm:^7.28.4, @babel/traverse@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/traverse@npm:7.28.5" +"@babel/traverse@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/traverse@npm:7.28.0" dependencies: "@babel/code-frame": ^7.27.1 - "@babel/generator": ^7.28.5 + "@babel/generator": ^7.28.0 "@babel/helper-globals": ^7.28.0 - "@babel/parser": ^7.28.5 + "@babel/parser": ^7.28.0 "@babel/template": ^7.27.2 - "@babel/types": ^7.28.5 + "@babel/types": ^7.28.0 debug: ^4.3.1 - checksum: e028ee9654f44be7c2a2df268455cee72d5c424c9ae536785f8f7c8680356f7b977c77ad76909d07eeed09ff1e125ce01cf783011f66b56c838791a85fa6af04 + checksum: f1b6ed2a37f593ee02db82521f8d54c8540a7ec2735c6c127ba687de306d62ac5a7c6471819783128e0b825c4f7e374206ebbd1daf00d07f05a4528f5b1b4c07 languageName: node linkType: hard @@ -2786,17 +2702,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0": - version: 7.26.0 - resolution: "@babel/types@npm:7.26.0" - dependencies: - "@babel/helper-string-parser": ^7.25.9 - "@babel/helper-validator-identifier": ^7.25.9 - checksum: a3dd37dabac693018872da96edb8c1843a605c1bfacde6c3f504fba79b972426a6f24df70aa646356c0c1b19bdd2c722c623c684a996c002381071680602280d - languageName: node - linkType: hard - -"@babel/types@npm:^7.26.10, @babel/types@npm:^7.26.9, @babel/types@npm:^7.27.1": +"@babel/types@npm:^7.27.1": version: 7.27.1 resolution: "@babel/types@npm:7.27.1" dependencies: @@ -2806,7 +2712,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.27.3, @babel/types@npm:^7.28.4, @babel/types@npm:^7.28.5": +"@babel/types@npm:^7.27.3, @babel/types@npm:^7.27.7, @babel/types@npm:^7.28.4, @babel/types@npm:^7.28.5": version: 7.28.5 resolution: "@babel/types@npm:7.28.5" dependencies: @@ -2833,6 +2739,13 @@ __metadata: languageName: node linkType: hard +"@colors/colors@npm:1.5.0": + version: 1.5.0 + resolution: "@colors/colors@npm:1.5.0" + checksum: d64d5260bed1d5012ae3fc617d38d1afc0329fec05342f4e6b838f46998855ba56e0a73833f4a80fa8378c84810da254f76a8a19c39d038260dc06dc4e007425 + languageName: node + linkType: hard + "@compodoc/compodoc@npm:^1.1.32": version: 1.1.32 resolution: "@compodoc/compodoc@npm:1.1.32" @@ -2988,7 +2901,7 @@ __metadata: languageName: node linkType: hard -"@cypress/request@npm:^3.0.9": +"@cypress/request@npm:^3.0.6": version: 3.0.9 resolution: "@cypress/request@npm:3.0.9" dependencies: @@ -3073,6 +2986,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/aix-ppc64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/aix-ppc64@npm:0.25.5" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/android-arm64@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/android-arm64@npm:0.25.4" @@ -3080,6 +3000,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/android-arm64@npm:0.25.5" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/android-arm@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/android-arm@npm:0.25.4" @@ -3087,6 +3014,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/android-arm@npm:0.25.5" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@esbuild/android-x64@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/android-x64@npm:0.25.4" @@ -3094,6 +3028,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-x64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/android-x64@npm:0.25.5" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + "@esbuild/darwin-arm64@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/darwin-arm64@npm:0.25.4" @@ -3101,6 +3042,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-arm64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/darwin-arm64@npm:0.25.5" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/darwin-x64@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/darwin-x64@npm:0.25.4" @@ -3108,6 +3056,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-x64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/darwin-x64@npm:0.25.5" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@esbuild/freebsd-arm64@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/freebsd-arm64@npm:0.25.4" @@ -3115,6 +3070,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-arm64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/freebsd-arm64@npm:0.25.5" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/freebsd-x64@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/freebsd-x64@npm:0.25.4" @@ -3122,6 +3084,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-x64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/freebsd-x64@npm:0.25.5" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/linux-arm64@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/linux-arm64@npm:0.25.4" @@ -3129,6 +3098,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/linux-arm64@npm:0.25.5" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/linux-arm@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/linux-arm@npm:0.25.4" @@ -3136,6 +3112,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/linux-arm@npm:0.25.5" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@esbuild/linux-ia32@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/linux-ia32@npm:0.25.4" @@ -3143,6 +3126,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ia32@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/linux-ia32@npm:0.25.5" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/linux-loong64@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/linux-loong64@npm:0.25.4" @@ -3150,6 +3140,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-loong64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/linux-loong64@npm:0.25.5" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + "@esbuild/linux-mips64el@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/linux-mips64el@npm:0.25.4" @@ -3157,6 +3154,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-mips64el@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/linux-mips64el@npm:0.25.5" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + "@esbuild/linux-ppc64@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/linux-ppc64@npm:0.25.4" @@ -3164,6 +3168,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ppc64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/linux-ppc64@npm:0.25.5" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/linux-riscv64@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/linux-riscv64@npm:0.25.4" @@ -3171,6 +3182,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-riscv64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/linux-riscv64@npm:0.25.5" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + "@esbuild/linux-s390x@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/linux-s390x@npm:0.25.4" @@ -3178,6 +3196,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-s390x@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/linux-s390x@npm:0.25.5" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + "@esbuild/linux-x64@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/linux-x64@npm:0.25.4" @@ -3185,6 +3210,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-x64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/linux-x64@npm:0.25.5" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + "@esbuild/netbsd-arm64@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/netbsd-arm64@npm:0.25.4" @@ -3192,6 +3224,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/netbsd-arm64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/netbsd-arm64@npm:0.25.5" + conditions: os=netbsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/netbsd-x64@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/netbsd-x64@npm:0.25.4" @@ -3199,6 +3238,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/netbsd-x64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/netbsd-x64@npm:0.25.5" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/openbsd-arm64@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/openbsd-arm64@npm:0.25.4" @@ -3206,6 +3252,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/openbsd-arm64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/openbsd-arm64@npm:0.25.5" + conditions: os=openbsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/openbsd-x64@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/openbsd-x64@npm:0.25.4" @@ -3213,6 +3266,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/openbsd-x64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/openbsd-x64@npm:0.25.5" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/sunos-x64@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/sunos-x64@npm:0.25.4" @@ -3220,6 +3280,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/sunos-x64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/sunos-x64@npm:0.25.5" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + "@esbuild/win32-arm64@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/win32-arm64@npm:0.25.4" @@ -3227,6 +3294,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-arm64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/win32-arm64@npm:0.25.5" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/win32-ia32@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/win32-ia32@npm:0.25.4" @@ -3234,6 +3308,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-ia32@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/win32-ia32@npm:0.25.5" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/win32-x64@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/win32-x64@npm:0.25.4" @@ -3241,6 +3322,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-x64@npm:0.25.5": + version: 0.25.5 + resolution: "@esbuild/win32-x64@npm:0.25.5" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@eslint-community/eslint-utils@npm:^4.7.0": version: 4.7.0 resolution: "@eslint-community/eslint-utils@npm:4.7.0" @@ -3378,30 +3466,6 @@ __metadata: languageName: node linkType: hard -"@frsource/base64@npm:1.0.17": - version: 1.0.17 - resolution: "@frsource/base64@npm:1.0.17" - checksum: a01689ef785516ff0b7460f55792685fc782f8507518768396acb9283270d50a8149774f3acd5fa690ccd5a48b5ec4ace90a491458ffdd9e9f591c6b23eb5da5 - languageName: node - linkType: hard - -"@frsource/cypress-plugin-visual-regression-diff@npm:^3.3.10": - version: 3.3.10 - resolution: "@frsource/cypress-plugin-visual-regression-diff@npm:3.3.10" - dependencies: - "@frsource/base64": 1.0.17 - glob: 8.1.0 - meta-png: 1.0.6 - move-file: 2.1.0 - pixelmatch: 5.3.0 - pngjs: 7.0.0 - sharp: 0.32.1 - peerDependencies: - cypress: ">=4.5.0" - checksum: 879954ecba8829fd870379a1f4150a511fceab4c5a5c3df8abbab54e655e6560d52d925109364ea7f2d3484467ed5e9c3e4cfaf0058c12bbfbfc21d76ed79b40 - languageName: node - linkType: hard - "@humanfs/core@npm:^0.19.1": version: 0.19.1 resolution: "@humanfs/core@npm:0.19.1" @@ -3454,25 +3518,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/checkbox@npm:^4.1.2": - version: 4.1.5 - resolution: "@inquirer/checkbox@npm:4.1.5" - dependencies: - "@inquirer/core": ^10.1.10 - "@inquirer/figures": ^1.0.11 - "@inquirer/type": ^3.0.6 - ansi-escapes: ^4.3.2 - yoctocolors-cjs: ^2.1.2 - peerDependencies: - "@types/node": ">=18" - peerDependenciesMeta: - "@types/node": - optional: true - checksum: dd20a58ca78e13b5eaa93ae168b8486cb909454dbd4273490b790f5a738df0392edd9486f768e99557170257f8d0372b6b00e309209df637fdb8f91ff5ae0074 - languageName: node - linkType: hard - -"@inquirer/checkbox@npm:^4.3.2": +"@inquirer/checkbox@npm:^4.3.0, @inquirer/checkbox@npm:^4.3.2": version: 4.3.2 resolution: "@inquirer/checkbox@npm:4.3.2" dependencies: @@ -3490,22 +3536,22 @@ __metadata: languageName: node linkType: hard -"@inquirer/confirm@npm:5.1.6": - version: 5.1.6 - resolution: "@inquirer/confirm@npm:5.1.6" +"@inquirer/confirm@npm:5.1.10": + version: 5.1.10 + resolution: "@inquirer/confirm@npm:5.1.10" dependencies: - "@inquirer/core": ^10.1.7 - "@inquirer/type": ^3.0.4 + "@inquirer/core": ^10.1.11 + "@inquirer/type": ^3.0.6 peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 445314a5472a4df2a95f8e44a0d214ed89b13344077433e29b28933f6d360fda567bed4b7cbdb32a97fca52be2ad2f655f4103f6aaa43c37a40ab53b150251e8 + checksum: d2972697eb14c4753745fdb6e8087d2b08bfde947e615d2380260c4430d54fdd243d78b033cc948011e41b30ac46da5d5b37ee4c19a0fa28f54cf34781a2ef99 languageName: node linkType: hard -"@inquirer/confirm@npm:^5.1.21": +"@inquirer/confirm@npm:^5.1.19, @inquirer/confirm@npm:^5.1.21": version: 5.1.21 resolution: "@inquirer/confirm@npm:5.1.21" dependencies: @@ -3520,43 +3566,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/confirm@npm:^5.1.6": - version: 5.1.9 - resolution: "@inquirer/confirm@npm:5.1.9" - dependencies: - "@inquirer/core": ^10.1.10 - "@inquirer/type": ^3.0.6 - peerDependencies: - "@types/node": ">=18" - peerDependenciesMeta: - "@types/node": - optional: true - checksum: 8df076d46c62fd7429c7f82491bf6971a491db7107074aa29ca566f0539746837c5116b9df489f0c6374567a23a1137f0ddef7730f3e1617faef7de5fc0f0942 - languageName: node - linkType: hard - -"@inquirer/core@npm:^10.1.10, @inquirer/core@npm:^10.1.7": - version: 10.1.10 - resolution: "@inquirer/core@npm:10.1.10" - dependencies: - "@inquirer/figures": ^1.0.11 - "@inquirer/type": ^3.0.6 - ansi-escapes: ^4.3.2 - cli-width: ^4.1.0 - mute-stream: ^2.0.0 - signal-exit: ^4.1.0 - wrap-ansi: ^6.2.0 - yoctocolors-cjs: ^2.1.2 - peerDependencies: - "@types/node": ">=18" - peerDependenciesMeta: - "@types/node": - optional: true - checksum: ec94e80f3e9b8e302c80e9bcb734a0848562656b886b805862b1c9835f33fa5cae18721d1f7c55069d645f5ec2e268cbde179a1826f6bb7146435b0d34b16299 - languageName: node - linkType: hard - -"@inquirer/core@npm:^10.2.2, @inquirer/core@npm:^10.3.2": +"@inquirer/core@npm:^10.1.11, @inquirer/core@npm:^10.2.2, @inquirer/core@npm:^10.3.2": version: 10.3.2 resolution: "@inquirer/core@npm:10.3.2" dependencies: @@ -3577,7 +3587,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/editor@npm:^4.2.23": +"@inquirer/editor@npm:^4.2.21, @inquirer/editor@npm:^4.2.23": version: 4.2.23 resolution: "@inquirer/editor@npm:4.2.23" dependencies: @@ -3593,23 +3603,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/editor@npm:^4.2.7": - version: 4.2.10 - resolution: "@inquirer/editor@npm:4.2.10" - dependencies: - "@inquirer/core": ^10.1.10 - "@inquirer/type": ^3.0.6 - external-editor: ^3.1.0 - peerDependencies: - "@types/node": ">=18" - peerDependenciesMeta: - "@types/node": - optional: true - checksum: 31d92e86a6b0565150b8abd2ac526009d8128b3e7fbe5069c1a657c0addce9bb2d39295fafa4d1ba84360842699e78dd5e58961526582593c2ee2e85c17f590b - languageName: node - linkType: hard - -"@inquirer/expand@npm:^4.0.23": +"@inquirer/expand@npm:^4.0.21, @inquirer/expand@npm:^4.0.23": version: 4.0.23 resolution: "@inquirer/expand@npm:4.0.23" dependencies: @@ -3625,22 +3619,6 @@ __metadata: languageName: node linkType: hard -"@inquirer/expand@npm:^4.0.9": - version: 4.0.12 - resolution: "@inquirer/expand@npm:4.0.12" - dependencies: - "@inquirer/core": ^10.1.10 - "@inquirer/type": ^3.0.6 - yoctocolors-cjs: ^2.1.2 - peerDependencies: - "@types/node": ">=18" - peerDependenciesMeta: - "@types/node": - optional: true - checksum: beea0df2a578f361474c4cb31cd25793106768366a4a81879f537e9b66c9aaeba8f45914e272266bbcf9ce1d541705f77796de284316fcfd0093c114991f169c - languageName: node - linkType: hard - "@inquirer/external-editor@npm:^1.0.3": version: 1.0.3 resolution: "@inquirer/external-editor@npm:1.0.3" @@ -3656,13 +3634,6 @@ __metadata: languageName: node linkType: hard -"@inquirer/figures@npm:^1.0.11": - version: 1.0.11 - resolution: "@inquirer/figures@npm:1.0.11" - checksum: 6be2867050f5c179d9fcc389a4a3e9aca6ac45fd02106918eba2d6c27a7251a48693ac13fcf9f084e25bf963eb51045c23ca9e87c523e318b0e286d4173449a9 - languageName: node - linkType: hard - "@inquirer/figures@npm:^1.0.15": version: 1.0.15 resolution: "@inquirer/figures@npm:1.0.15" @@ -3670,22 +3641,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/input@npm:^4.1.6": - version: 4.1.9 - resolution: "@inquirer/input@npm:4.1.9" - dependencies: - "@inquirer/core": ^10.1.10 - "@inquirer/type": ^3.0.6 - peerDependencies: - "@types/node": ">=18" - peerDependenciesMeta: - "@types/node": - optional: true - checksum: 9cdc2c2186b31128e97d783025b1382be26c2c51aaba24520bba7f1a1c57047cb501cde3320c78f3ea8623ad6b8b57be386746570741b4ceb1b89406b1cf8510 - languageName: node - linkType: hard - -"@inquirer/input@npm:^4.3.1": +"@inquirer/input@npm:^4.2.5, @inquirer/input@npm:^4.3.1": version: 4.3.1 resolution: "@inquirer/input@npm:4.3.1" dependencies: @@ -3700,7 +3656,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/number@npm:^3.0.23": +"@inquirer/number@npm:^3.0.21, @inquirer/number@npm:^3.0.23": version: 3.0.23 resolution: "@inquirer/number@npm:3.0.23" dependencies: @@ -3715,22 +3671,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/number@npm:^3.0.9": - version: 3.0.12 - resolution: "@inquirer/number@npm:3.0.12" - dependencies: - "@inquirer/core": ^10.1.10 - "@inquirer/type": ^3.0.6 - peerDependencies: - "@types/node": ">=18" - peerDependenciesMeta: - "@types/node": - optional: true - checksum: 5597985535e7284f3b278b92792ae97142c29fa05bcba3b2087a88cf10ca6f3188f330f17e5ee403f66f9ed2ffe3d5184a1445419ab6aebcc57a380d5ffa2499 - languageName: node - linkType: hard - -"@inquirer/password@npm:^4.0.23": +"@inquirer/password@npm:^4.0.21, @inquirer/password@npm:^4.0.23": version: 4.0.23 resolution: "@inquirer/password@npm:4.0.23" dependencies: @@ -3746,42 +3687,26 @@ __metadata: languageName: node linkType: hard -"@inquirer/password@npm:^4.0.9": - version: 4.0.12 - resolution: "@inquirer/password@npm:4.0.12" - dependencies: - "@inquirer/core": ^10.1.10 - "@inquirer/type": ^3.0.6 - ansi-escapes: ^4.3.2 - peerDependencies: - "@types/node": ">=18" - peerDependenciesMeta: - "@types/node": - optional: true - checksum: cdd48cf29890285791ab893af93d743ec05bb0b9a0401f4327c38f6009e22490ba1b967727421480389c9fe27cc69e999c75969e1f7b5fa1add95cd99f97214f - languageName: node - linkType: hard - -"@inquirer/prompts@npm:7.3.2": - version: 7.3.2 - resolution: "@inquirer/prompts@npm:7.3.2" +"@inquirer/prompts@npm:7.9.0": + version: 7.9.0 + resolution: "@inquirer/prompts@npm:7.9.0" dependencies: - "@inquirer/checkbox": ^4.1.2 - "@inquirer/confirm": ^5.1.6 - "@inquirer/editor": ^4.2.7 - "@inquirer/expand": ^4.0.9 - "@inquirer/input": ^4.1.6 - "@inquirer/number": ^3.0.9 - "@inquirer/password": ^4.0.9 - "@inquirer/rawlist": ^4.0.9 - "@inquirer/search": ^3.0.9 - "@inquirer/select": ^4.0.9 + "@inquirer/checkbox": ^4.3.0 + "@inquirer/confirm": ^5.1.19 + "@inquirer/editor": ^4.2.21 + "@inquirer/expand": ^4.0.21 + "@inquirer/input": ^4.2.5 + "@inquirer/number": ^3.0.21 + "@inquirer/password": ^4.0.21 + "@inquirer/rawlist": ^4.1.9 + "@inquirer/search": ^3.2.0 + "@inquirer/select": ^4.4.0 peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: f032dba6479c694c28941bfe9ef34b2d78f354b0dc5abff853d28e5b55c76d7b331e2423a676a30605ac097f9e8bd2d031912211121088a035a446804872f56b + checksum: 1dd6a87bcf77d1a8b728c781a7d34c0dd4028d7ec96e4e41e173a260d3ef9a76cba5eb8715d8674d75b18681d3f7eac9bd9f3ff1d82d8e786fb5222893498ea3 languageName: node linkType: hard @@ -3808,23 +3733,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/rawlist@npm:^4.0.9": - version: 4.1.0 - resolution: "@inquirer/rawlist@npm:4.1.0" - dependencies: - "@inquirer/core": ^10.1.10 - "@inquirer/type": ^3.0.6 - yoctocolors-cjs: ^2.1.2 - peerDependencies: - "@types/node": ">=18" - peerDependenciesMeta: - "@types/node": - optional: true - checksum: 154351b0dff42f973913d773c2be2d510a301d88b06e9745e91eb3a2243d24c1cf158c5ee203bad722b85d1d6c5003899b1ae0dae5ba0f34aa5beb4f98e0f39b - languageName: node - linkType: hard - -"@inquirer/rawlist@npm:^4.1.11": +"@inquirer/rawlist@npm:^4.1.11, @inquirer/rawlist@npm:^4.1.9": version: 4.1.11 resolution: "@inquirer/rawlist@npm:4.1.11" dependencies: @@ -3840,24 +3749,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/search@npm:^3.0.9": - version: 3.0.12 - resolution: "@inquirer/search@npm:3.0.12" - dependencies: - "@inquirer/core": ^10.1.10 - "@inquirer/figures": ^1.0.11 - "@inquirer/type": ^3.0.6 - yoctocolors-cjs: ^2.1.2 - peerDependencies: - "@types/node": ">=18" - peerDependenciesMeta: - "@types/node": - optional: true - checksum: 7b5b5547ee1d656c22c3f5926f8fc409bf61e8379f5851a10a8171f6378bd328100ff0622fae0897fd7f311dc472c9bdfc9f27093418ab6b26d71017596149a7 - languageName: node - linkType: hard - -"@inquirer/search@npm:^3.2.2": +"@inquirer/search@npm:^3.2.0, @inquirer/search@npm:^3.2.2": version: 3.2.2 resolution: "@inquirer/search@npm:3.2.2" dependencies: @@ -3874,25 +3766,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/select@npm:^4.0.9": - version: 4.2.0 - resolution: "@inquirer/select@npm:4.2.0" - dependencies: - "@inquirer/core": ^10.1.10 - "@inquirer/figures": ^1.0.11 - "@inquirer/type": ^3.0.6 - ansi-escapes: ^4.3.2 - yoctocolors-cjs: ^2.1.2 - peerDependencies: - "@types/node": ">=18" - peerDependenciesMeta: - "@types/node": - optional: true - checksum: b254e289e656bee39a62d12bb0ae93d5fdae989679504f0693bafc1ac9f1980e2ce06f994b4d029aa0ec523a890e25a504c4a944db51dae070fef5eab55c90e1 - languageName: node - linkType: hard - -"@inquirer/select@npm:^4.4.2": +"@inquirer/select@npm:^4.4.0, @inquirer/select@npm:^4.4.2": version: 4.4.2 resolution: "@inquirer/select@npm:4.4.2" dependencies: @@ -3910,15 +3784,6 @@ __metadata: languageName: node linkType: hard -"@inquirer/type@npm:^1.5.5": - version: 1.5.5 - resolution: "@inquirer/type@npm:1.5.5" - dependencies: - mute-stream: ^1.0.0 - checksum: 6cada82bb14519f3c71f455b08dc03c1064046fe0469aa5fce44c7ebf88a3a3d67a0cf852b0a7339476fec3b02874167f46d2c5b0964218d00273ab27ff861c5 - languageName: node - linkType: hard - "@inquirer/type@npm:^3.0.10, @inquirer/type@npm:^3.0.8": version: 3.0.10 resolution: "@inquirer/type@npm:3.0.10" @@ -3931,7 +3796,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/type@npm:^3.0.4, @inquirer/type@npm:^3.0.6": +"@inquirer/type@npm:^3.0.6": version: 3.0.6 resolution: "@inquirer/type@npm:3.0.6" peerDependencies: @@ -4324,6 +4189,13 @@ __metadata: languageName: node linkType: hard +"@jridgewell/sourcemap-codec@npm:^1.5.5": + version: 1.5.5 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" + checksum: c2e36e67971f719a8a3a85ef5a5f580622437cc723c35d03ebd0c9c0b06418700ef006f58af742791f71f6a4fc68fcfaf1f6a74ec2f9a3332860e9373459dae7 + languageName: node + linkType: hard + "@jridgewell/trace-mapping@npm:0.3.9": version: 0.3.9 resolution: "@jridgewell/trace-mapping@npm:0.3.9" @@ -4468,59 +4340,97 @@ __metadata: languageName: node linkType: hard -"@listr2/prompt-adapter-inquirer@npm:2.0.18": - version: 2.0.18 - resolution: "@listr2/prompt-adapter-inquirer@npm:2.0.18" +"@listr2/prompt-adapter-inquirer@npm:3.0.5": + version: 3.0.5 + resolution: "@listr2/prompt-adapter-inquirer@npm:3.0.5" dependencies: - "@inquirer/type": ^1.5.5 + "@inquirer/type": ^3.0.8 peerDependencies: "@inquirer/prompts": ">= 3 < 8" - checksum: 2e813dfb27d907a0f5078991ecd7645d79a2f99ded2e4af976da4e7bffba1d7ca9df93ac62b2c33e1180140e0e53e560befc6fb9998fb1da491eca84ed1ff21f + listr2: 9.0.5 + checksum: 56966e1d79b5e28fe933c4f2307c82007f1de2d2d00d5e3cf041be316600f0279c7ad6bfc272bf495e71a8f5e807fa3e3138ee62fff73e41766deb2660b601ab languageName: node linkType: hard -"@lmdb/lmdb-darwin-arm64@npm:3.2.6": - version: 3.2.6 - resolution: "@lmdb/lmdb-darwin-arm64@npm:3.2.6" +"@lmdb/lmdb-darwin-arm64@npm:3.3.0": + version: 3.3.0 + resolution: "@lmdb/lmdb-darwin-arm64@npm:3.3.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@lmdb/lmdb-darwin-x64@npm:3.2.6": - version: 3.2.6 - resolution: "@lmdb/lmdb-darwin-x64@npm:3.2.6" +"@lmdb/lmdb-darwin-x64@npm:3.3.0": + version: 3.3.0 + resolution: "@lmdb/lmdb-darwin-x64@npm:3.3.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@lmdb/lmdb-linux-arm64@npm:3.2.6": - version: 3.2.6 - resolution: "@lmdb/lmdb-linux-arm64@npm:3.2.6" +"@lmdb/lmdb-linux-arm64@npm:3.3.0": + version: 3.3.0 + resolution: "@lmdb/lmdb-linux-arm64@npm:3.3.0" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@lmdb/lmdb-linux-arm@npm:3.2.6": - version: 3.2.6 - resolution: "@lmdb/lmdb-linux-arm@npm:3.2.6" +"@lmdb/lmdb-linux-arm@npm:3.3.0": + version: 3.3.0 + resolution: "@lmdb/lmdb-linux-arm@npm:3.3.0" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@lmdb/lmdb-linux-x64@npm:3.2.6": - version: 3.2.6 - resolution: "@lmdb/lmdb-linux-x64@npm:3.2.6" +"@lmdb/lmdb-linux-x64@npm:3.3.0": + version: 3.3.0 + resolution: "@lmdb/lmdb-linux-x64@npm:3.3.0" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@lmdb/lmdb-win32-x64@npm:3.2.6": - version: 3.2.6 - resolution: "@lmdb/lmdb-win32-x64@npm:3.2.6" +"@lmdb/lmdb-win32-arm64@npm:3.3.0": + version: 3.3.0 + resolution: "@lmdb/lmdb-win32-arm64@npm:3.3.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@lmdb/lmdb-win32-x64@npm:3.3.0": + version: 3.3.0 + resolution: "@lmdb/lmdb-win32-x64@npm:3.3.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard +"@modelcontextprotocol/sdk@npm:1.24.0": + version: 1.24.0 + resolution: "@modelcontextprotocol/sdk@npm:1.24.0" + dependencies: + ajv: ^8.17.1 + ajv-formats: ^3.0.1 + content-type: ^1.0.5 + cors: ^2.8.5 + cross-spawn: ^7.0.5 + eventsource: ^3.0.2 + eventsource-parser: ^3.0.0 + express: ^5.0.1 + express-rate-limit: ^7.5.0 + jose: ^6.1.1 + pkce-challenge: ^5.0.0 + raw-body: ^3.0.0 + zod: ^3.25 || ^4.0 + zod-to-json-schema: ^3.25.0 + peerDependencies: + "@cfworker/json-schema": ^4.1.1 + zod: ^3.25 || ^4.0 + peerDependenciesMeta: + "@cfworker/json-schema": + optional: true + zod: + optional: false + checksum: bcd500b3b5e4c003eaba4e65d6f7daba84467f7250db32231e8f03c2dda99ae134dda8a2b6eb65dc57b2e8c50f7120bcde0e438195d6dcd61a1e5344688449ac + languageName: node + linkType: hard + "@msgpackr-extract/msgpackr-extract-darwin-arm64@npm:3.0.3": version: 3.0.3 resolution: "@msgpackr-extract/msgpackr-extract-darwin-arm64@npm:3.0.3" @@ -4570,6 +4480,13 @@ __metadata: languageName: node linkType: hard +"@napi-rs/nice-android-arm-eabi@npm:1.1.1": + version: 1.1.1 + resolution: "@napi-rs/nice-android-arm-eabi@npm:1.1.1" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@napi-rs/nice-android-arm64@npm:1.0.1": version: 1.0.1 resolution: "@napi-rs/nice-android-arm64@npm:1.0.1" @@ -4577,6 +4494,13 @@ __metadata: languageName: node linkType: hard +"@napi-rs/nice-android-arm64@npm:1.1.1": + version: 1.1.1 + resolution: "@napi-rs/nice-android-arm64@npm:1.1.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@napi-rs/nice-darwin-arm64@npm:1.0.1": version: 1.0.1 resolution: "@napi-rs/nice-darwin-arm64@npm:1.0.1" @@ -4584,6 +4508,13 @@ __metadata: languageName: node linkType: hard +"@napi-rs/nice-darwin-arm64@npm:1.1.1": + version: 1.1.1 + resolution: "@napi-rs/nice-darwin-arm64@npm:1.1.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@napi-rs/nice-darwin-x64@npm:1.0.1": version: 1.0.1 resolution: "@napi-rs/nice-darwin-x64@npm:1.0.1" @@ -4591,6 +4522,13 @@ __metadata: languageName: node linkType: hard +"@napi-rs/nice-darwin-x64@npm:1.1.1": + version: 1.1.1 + resolution: "@napi-rs/nice-darwin-x64@npm:1.1.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@napi-rs/nice-freebsd-x64@npm:1.0.1": version: 1.0.1 resolution: "@napi-rs/nice-freebsd-x64@npm:1.0.1" @@ -4598,6 +4536,13 @@ __metadata: languageName: node linkType: hard +"@napi-rs/nice-freebsd-x64@npm:1.1.1": + version: 1.1.1 + resolution: "@napi-rs/nice-freebsd-x64@npm:1.1.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@napi-rs/nice-linux-arm-gnueabihf@npm:1.0.1": version: 1.0.1 resolution: "@napi-rs/nice-linux-arm-gnueabihf@npm:1.0.1" @@ -4605,6 +4550,13 @@ __metadata: languageName: node linkType: hard +"@napi-rs/nice-linux-arm-gnueabihf@npm:1.1.1": + version: 1.1.1 + resolution: "@napi-rs/nice-linux-arm-gnueabihf@npm:1.1.1" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@napi-rs/nice-linux-arm64-gnu@npm:1.0.1": version: 1.0.1 resolution: "@napi-rs/nice-linux-arm64-gnu@npm:1.0.1" @@ -4612,6 +4564,13 @@ __metadata: languageName: node linkType: hard +"@napi-rs/nice-linux-arm64-gnu@npm:1.1.1": + version: 1.1.1 + resolution: "@napi-rs/nice-linux-arm64-gnu@npm:1.1.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@napi-rs/nice-linux-arm64-musl@npm:1.0.1": version: 1.0.1 resolution: "@napi-rs/nice-linux-arm64-musl@npm:1.0.1" @@ -4619,6 +4578,13 @@ __metadata: languageName: node linkType: hard +"@napi-rs/nice-linux-arm64-musl@npm:1.1.1": + version: 1.1.1 + resolution: "@napi-rs/nice-linux-arm64-musl@npm:1.1.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@napi-rs/nice-linux-ppc64-gnu@npm:1.0.1": version: 1.0.1 resolution: "@napi-rs/nice-linux-ppc64-gnu@npm:1.0.1" @@ -4626,6 +4592,13 @@ __metadata: languageName: node linkType: hard +"@napi-rs/nice-linux-ppc64-gnu@npm:1.1.1": + version: 1.1.1 + resolution: "@napi-rs/nice-linux-ppc64-gnu@npm:1.1.1" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + "@napi-rs/nice-linux-riscv64-gnu@npm:1.0.1": version: 1.0.1 resolution: "@napi-rs/nice-linux-riscv64-gnu@npm:1.0.1" @@ -4633,6 +4606,13 @@ __metadata: languageName: node linkType: hard +"@napi-rs/nice-linux-riscv64-gnu@npm:1.1.1": + version: 1.1.1 + resolution: "@napi-rs/nice-linux-riscv64-gnu@npm:1.1.1" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + "@napi-rs/nice-linux-s390x-gnu@npm:1.0.1": version: 1.0.1 resolution: "@napi-rs/nice-linux-s390x-gnu@npm:1.0.1" @@ -4640,6 +4620,13 @@ __metadata: languageName: node linkType: hard +"@napi-rs/nice-linux-s390x-gnu@npm:1.1.1": + version: 1.1.1 + resolution: "@napi-rs/nice-linux-s390x-gnu@npm:1.1.1" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + "@napi-rs/nice-linux-x64-gnu@npm:1.0.1": version: 1.0.1 resolution: "@napi-rs/nice-linux-x64-gnu@npm:1.0.1" @@ -4647,6 +4634,13 @@ __metadata: languageName: node linkType: hard +"@napi-rs/nice-linux-x64-gnu@npm:1.1.1": + version: 1.1.1 + resolution: "@napi-rs/nice-linux-x64-gnu@npm:1.1.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@napi-rs/nice-linux-x64-musl@npm:1.0.1": version: 1.0.1 resolution: "@napi-rs/nice-linux-x64-musl@npm:1.0.1" @@ -4654,6 +4648,20 @@ __metadata: languageName: node linkType: hard +"@napi-rs/nice-linux-x64-musl@npm:1.1.1": + version: 1.1.1 + resolution: "@napi-rs/nice-linux-x64-musl@npm:1.1.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@napi-rs/nice-openharmony-arm64@npm:1.1.1": + version: 1.1.1 + resolution: "@napi-rs/nice-openharmony-arm64@npm:1.1.1" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + "@napi-rs/nice-win32-arm64-msvc@npm:1.0.1": version: 1.0.1 resolution: "@napi-rs/nice-win32-arm64-msvc@npm:1.0.1" @@ -4661,6 +4669,13 @@ __metadata: languageName: node linkType: hard +"@napi-rs/nice-win32-arm64-msvc@npm:1.1.1": + version: 1.1.1 + resolution: "@napi-rs/nice-win32-arm64-msvc@npm:1.1.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@napi-rs/nice-win32-ia32-msvc@npm:1.0.1": version: 1.0.1 resolution: "@napi-rs/nice-win32-ia32-msvc@npm:1.0.1" @@ -4668,6 +4683,13 @@ __metadata: languageName: node linkType: hard +"@napi-rs/nice-win32-ia32-msvc@npm:1.1.1": + version: 1.1.1 + resolution: "@napi-rs/nice-win32-ia32-msvc@npm:1.1.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@napi-rs/nice-win32-x64-msvc@npm:1.0.1": version: 1.0.1 resolution: "@napi-rs/nice-win32-x64-msvc@npm:1.0.1" @@ -4675,6 +4697,13 @@ __metadata: languageName: node linkType: hard +"@napi-rs/nice-win32-x64-msvc@npm:1.1.1": + version: 1.1.1 + resolution: "@napi-rs/nice-win32-x64-msvc@npm:1.1.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@napi-rs/nice@npm:^1.0.1": version: 1.0.1 resolution: "@napi-rs/nice@npm:1.0.1" @@ -4732,6 +4761,66 @@ __metadata: languageName: node linkType: hard +"@napi-rs/nice@npm:^1.0.4": + version: 1.1.1 + resolution: "@napi-rs/nice@npm:1.1.1" + dependencies: + "@napi-rs/nice-android-arm-eabi": 1.1.1 + "@napi-rs/nice-android-arm64": 1.1.1 + "@napi-rs/nice-darwin-arm64": 1.1.1 + "@napi-rs/nice-darwin-x64": 1.1.1 + "@napi-rs/nice-freebsd-x64": 1.1.1 + "@napi-rs/nice-linux-arm-gnueabihf": 1.1.1 + "@napi-rs/nice-linux-arm64-gnu": 1.1.1 + "@napi-rs/nice-linux-arm64-musl": 1.1.1 + "@napi-rs/nice-linux-ppc64-gnu": 1.1.1 + "@napi-rs/nice-linux-riscv64-gnu": 1.1.1 + "@napi-rs/nice-linux-s390x-gnu": 1.1.1 + "@napi-rs/nice-linux-x64-gnu": 1.1.1 + "@napi-rs/nice-linux-x64-musl": 1.1.1 + "@napi-rs/nice-openharmony-arm64": 1.1.1 + "@napi-rs/nice-win32-arm64-msvc": 1.1.1 + "@napi-rs/nice-win32-ia32-msvc": 1.1.1 + "@napi-rs/nice-win32-x64-msvc": 1.1.1 + dependenciesMeta: + "@napi-rs/nice-android-arm-eabi": + optional: true + "@napi-rs/nice-android-arm64": + optional: true + "@napi-rs/nice-darwin-arm64": + optional: true + "@napi-rs/nice-darwin-x64": + optional: true + "@napi-rs/nice-freebsd-x64": + optional: true + "@napi-rs/nice-linux-arm-gnueabihf": + optional: true + "@napi-rs/nice-linux-arm64-gnu": + optional: true + "@napi-rs/nice-linux-arm64-musl": + optional: true + "@napi-rs/nice-linux-ppc64-gnu": + optional: true + "@napi-rs/nice-linux-riscv64-gnu": + optional: true + "@napi-rs/nice-linux-s390x-gnu": + optional: true + "@napi-rs/nice-linux-x64-gnu": + optional: true + "@napi-rs/nice-linux-x64-musl": + optional: true + "@napi-rs/nice-openharmony-arm64": + optional: true + "@napi-rs/nice-win32-arm64-msvc": + optional: true + "@napi-rs/nice-win32-ia32-msvc": + optional: true + "@napi-rs/nice-win32-x64-msvc": + optional: true + checksum: f9b72d10511c6ee9e36723a1876ef8152b0f8f5d35e60b3adae2d3fd05a22f0941552cd0403404fd040ef73924bbf7ed3d356c414da2491c65a988e700af73d3 + languageName: node + linkType: hard + "@napi-rs/wasm-runtime@npm:0.2.4": version: 0.2.4 resolution: "@napi-rs/wasm-runtime@npm:0.2.4" @@ -4743,14 +4832,14 @@ __metadata: languageName: node linkType: hard -"@ngtools/webpack@npm:19.2.19": - version: 19.2.19 - resolution: "@ngtools/webpack@npm:19.2.19" +"@ngtools/webpack@npm:20.0.6": + version: 20.0.6 + resolution: "@ngtools/webpack@npm:20.0.6" peerDependencies: - "@angular/compiler-cli": ^19.0.0 || ^19.2.0-next.0 - typescript: ">=5.5 <5.9" + "@angular/compiler-cli": ^20.0.0 + typescript: ">=5.8 <5.9" webpack: ^5.54.0 - checksum: 033b247720a6ed28d29b6ffc223e435b9a2e6e63cd4b4ff5b9de4b28775ccf1385fc31aa857e3e97dc38cf7f59810ea00d95f07a4d1943b9bf9a914aeaec82ff + checksum: 5797cd7c0d514b219df206d0906294e45a2342a528c5dd282a18683ba3b2137d1859e7b10015cf6120a612991ccba271ae9cbe9d793602be43dbb591f4134fb3 languageName: node linkType: hard @@ -5014,21 +5103,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/package-json@npm:^6.0.0": - version: 6.1.1 - resolution: "@npmcli/package-json@npm:6.1.1" - dependencies: - "@npmcli/git": ^6.0.0 - glob: ^10.2.2 - hosted-git-info: ^8.0.0 - json-parse-even-better-errors: ^4.0.0 - proc-log: ^5.0.0 - semver: ^7.5.3 - validate-npm-package-license: ^3.0.4 - checksum: 74d8fd31167cbbb285da1ffcb3d3aef397f7992ba60665e90d7e1bde8c91bda4fad206fefe848bac07d3eef784499ece0a0d611328d0cc0654d6bdbe908e80e1 - languageName: node - linkType: hard - "@npmcli/package-json@npm:^7.0.0": version: 7.0.4 resolution: "@npmcli/package-json@npm:7.0.4" @@ -5113,20 +5187,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/run-script@npm:^9.0.0": - version: 9.1.0 - resolution: "@npmcli/run-script@npm:9.1.0" - dependencies: - "@npmcli/node-gyp": ^4.0.0 - "@npmcli/package-json": ^6.0.0 - "@npmcli/promise-spawn": ^8.0.0 - node-gyp: ^11.0.0 - proc-log: ^5.0.0 - which: ^5.0.0 - checksum: b9965b3d9212459a97e820dbe28b7e46312c2ecddb72b85383e3f72b73453416a1ddfb4b5bac92b9a8508e9817621141caf8e60967de3e158c758cd280494c79 - languageName: node - linkType: hard - "@nx/devkit@npm:>=21.5.2 < 23.0.0": version: 22.1.3 resolution: "@nx/devkit@npm:22.1.3" @@ -5564,13 +5624,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.34.8" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - "@rollup/rollup-android-arm-eabi@npm:4.40.2": version: 4.40.2 resolution: "@rollup/rollup-android-arm-eabi@npm:4.40.2" @@ -5585,13 +5638,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-android-arm64@npm:4.34.8" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-android-arm64@npm:4.40.2": version: 4.40.2 resolution: "@rollup/rollup-android-arm64@npm:4.40.2" @@ -5606,13 +5652,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-darwin-arm64@npm:4.34.8" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-darwin-arm64@npm:4.40.2": version: 4.40.2 resolution: "@rollup/rollup-darwin-arm64@npm:4.40.2" @@ -5627,13 +5666,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-darwin-x64@npm:4.34.8" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-darwin-x64@npm:4.40.2": version: 4.40.2 resolution: "@rollup/rollup-darwin-x64@npm:4.40.2" @@ -5648,13 +5680,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.34.8" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-freebsd-arm64@npm:4.40.2": version: 4.40.2 resolution: "@rollup/rollup-freebsd-arm64@npm:4.40.2" @@ -5669,13 +5694,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-freebsd-x64@npm:4.34.8" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-freebsd-x64@npm:4.40.2": version: 4.40.2 resolution: "@rollup/rollup-freebsd-x64@npm:4.40.2" @@ -5690,13 +5708,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.34.8" - conditions: os=linux & cpu=arm & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-arm-gnueabihf@npm:4.40.2": version: 4.40.2 resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.40.2" @@ -5711,13 +5722,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.34.8" - conditions: os=linux & cpu=arm & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-arm-musleabihf@npm:4.40.2": version: 4.40.2 resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.40.2" @@ -5732,13 +5736,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.34.8" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-arm64-gnu@npm:4.40.2": version: 4.40.2 resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.40.2" @@ -5753,13 +5750,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.34.8" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-arm64-musl@npm:4.40.2": version: 4.40.2 resolution: "@rollup/rollup-linux-arm64-musl@npm:4.40.2" @@ -5781,13 +5771,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-loongarch64-gnu@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.34.8" - conditions: os=linux & cpu=loong64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-loongarch64-gnu@npm:4.40.2": version: 4.40.2 resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.40.2" @@ -5795,13 +5778,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.34.8" - conditions: os=linux & cpu=ppc64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.2": version: 4.40.2 resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.2" @@ -5816,13 +5792,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.34.8" - conditions: os=linux & cpu=riscv64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-riscv64-gnu@npm:4.40.2": version: 4.40.2 resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.40.2" @@ -5851,13 +5820,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.34.8" - conditions: os=linux & cpu=s390x & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-s390x-gnu@npm:4.40.2": version: 4.40.2 resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.40.2" @@ -5872,13 +5834,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.34.8" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-x64-gnu@npm:4.40.2": version: 4.40.2 resolution: "@rollup/rollup-linux-x64-gnu@npm:4.40.2" @@ -5893,13 +5848,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.34.8" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-x64-musl@npm:4.40.2": version: 4.40.2 resolution: "@rollup/rollup-linux-x64-musl@npm:4.40.2" @@ -5921,13 +5869,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.34.8" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-win32-arm64-msvc@npm:4.40.2": version: 4.40.2 resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.40.2" @@ -5942,13 +5883,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.34.8" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - "@rollup/rollup-win32-ia32-msvc@npm:4.40.2": version: 4.40.2 resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.40.2" @@ -5970,13 +5904,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.34.8": - version: 4.34.8 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.34.8" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-win32-x64-msvc@npm:4.40.2": version: 4.40.2 resolution: "@rollup/rollup-win32-x64-msvc@npm:4.40.2" @@ -6006,23 +5933,14 @@ __metadata: languageName: node linkType: hard -"@schematics/angular@npm:19.2.19": - version: 19.2.19 - resolution: "@schematics/angular@npm:19.2.19" +"@schematics/angular@npm:21.0.3": + version: 21.0.3 + resolution: "@schematics/angular@npm:21.0.3" dependencies: - "@angular-devkit/core": 19.2.19 - "@angular-devkit/schematics": 19.2.19 + "@angular-devkit/core": 21.0.3 + "@angular-devkit/schematics": 21.0.3 jsonc-parser: 3.3.1 - checksum: bf5ed6f32519883c57f40e61bdde8dfca25c835def0e81e763655d46fba1a3fadd70ec34f26b253364577be0f0d222354ea24fa22abc403b22f871870a9edf5b - languageName: node - linkType: hard - -"@sigstore/bundle@npm:^3.1.0": - version: 3.1.0 - resolution: "@sigstore/bundle@npm:3.1.0" - dependencies: - "@sigstore/protobuf-specs": ^0.4.0 - checksum: 8f560c77eb1cc45785afb1bcb6adfb2af499523038941a92c65fd80924b055bacc0266fa973407c275dbdcf48a976f215f627fea5c9d8f68bd618cfe247393aa + checksum: 66b17cbb7cf2f931ec1ff69f351e452ffced9ff305c02ec03eeb7621558021bddb6f6fe1975eb08aa052a04c908d825ca8687919631d4a835a09f8877dc37a5f languageName: node linkType: hard @@ -6035,13 +5953,6 @@ __metadata: languageName: node linkType: hard -"@sigstore/core@npm:^2.0.0": - version: 2.0.0 - resolution: "@sigstore/core@npm:2.0.0" - checksum: fd21df6ce574ef8fed855955ce864523368bdca8202ed9d90f2b4822f4889315a23f52eef72cbf09534af669329c8affdd36a3615c9598eb9311a4cc22f3f21a - languageName: node - linkType: hard - "@sigstore/core@npm:^3.0.0": version: 3.0.0 resolution: "@sigstore/core@npm:3.0.0" @@ -6049,13 +5960,6 @@ __metadata: languageName: node linkType: hard -"@sigstore/protobuf-specs@npm:^0.4.0, @sigstore/protobuf-specs@npm:^0.4.1": - version: 0.4.1 - resolution: "@sigstore/protobuf-specs@npm:0.4.1" - checksum: 4573872851e3d2e44525e9750a22366eff610e15b01d744fa813a2c46bed0a8c0feffa80718e53a303122389c7a44e497135045e89cb22e4ae58a85ec586ec2b - languageName: node - linkType: hard - "@sigstore/protobuf-specs@npm:^0.5.0": version: 0.5.0 resolution: "@sigstore/protobuf-specs@npm:0.5.0" @@ -6063,20 +5967,6 @@ __metadata: languageName: node linkType: hard -"@sigstore/sign@npm:^3.1.0": - version: 3.1.0 - resolution: "@sigstore/sign@npm:3.1.0" - dependencies: - "@sigstore/bundle": ^3.1.0 - "@sigstore/core": ^2.0.0 - "@sigstore/protobuf-specs": ^0.4.0 - make-fetch-happen: ^14.0.2 - proc-log: ^5.0.0 - promise-retry: ^2.0.1 - checksum: 0518aaa542ad7684d86d7c3d6829119cf35fc4084b61329a376e298acda4ffbc8fa53afaf0b6a8dfba41d5e5943034d2cb5bf8034c07dbd0aa86dd32fb01c3d3 - languageName: node - linkType: hard - "@sigstore/sign@npm:^4.0.0": version: 4.0.1 resolution: "@sigstore/sign@npm:4.0.1" @@ -6091,16 +5981,6 @@ __metadata: languageName: node linkType: hard -"@sigstore/tuf@npm:^3.1.0": - version: 3.1.1 - resolution: "@sigstore/tuf@npm:3.1.1" - dependencies: - "@sigstore/protobuf-specs": ^0.4.1 - tuf-js: ^3.0.1 - checksum: 876a1f749458e280b77ec4084ee1e7594b42bfd4391ed22c41bc2984d6dfa46cb52a28756adb58f6c1cc8b018481a220f9fcef1dbd890ae457253ae7225fd7eb - languageName: node - linkType: hard - "@sigstore/tuf@npm:^4.0.0": version: 4.0.0 resolution: "@sigstore/tuf@npm:4.0.0" @@ -6111,17 +5991,6 @@ __metadata: languageName: node linkType: hard -"@sigstore/verify@npm:^2.1.0": - version: 2.1.1 - resolution: "@sigstore/verify@npm:2.1.1" - dependencies: - "@sigstore/bundle": ^3.1.0 - "@sigstore/core": ^2.0.0 - "@sigstore/protobuf-specs": ^0.4.1 - checksum: 378316e2b5462ef400f9ad764b037a046a9835ac11b341137d6b16120d9fbfcf261a87ee8f918ba3cf67846e0ae639caae01b830697c0f10316685afdd319ec8 - languageName: node - linkType: hard - "@sigstore/verify@npm:^3.0.0": version: 3.0.0 resolution: "@sigstore/verify@npm:3.0.0" @@ -6147,13 +6016,6 @@ __metadata: languageName: node linkType: hard -"@sindresorhus/merge-streams@npm:^2.1.0": - version: 2.3.0 - resolution: "@sindresorhus/merge-streams@npm:2.3.0" - checksum: e989d53dee68d7e49b4ac02ae49178d561c461144cea83f66fa91ff012d981ad0ad2340cbd13f2fdb57989197f5c987ca22a74eb56478626f04e79df84291159 - languageName: node - linkType: hard - "@sinonjs/commons@npm:^3.0.0": version: 3.0.1 resolution: "@sinonjs/commons@npm:3.0.1" @@ -6248,16 +6110,6 @@ __metadata: languageName: node linkType: hard -"@tufjs/models@npm:3.0.1": - version: 3.0.1 - resolution: "@tufjs/models@npm:3.0.1" - dependencies: - "@tufjs/canonical-json": 2.0.0 - minimatch: ^9.0.5 - checksum: 95b179bc09e5a0b6dfc9e7001e15882e863e034bf41e0502e89f2fa82cb3f6d5bd9edaefd2baf2a7f515abdb521127adf771e8bbe66f3e7f212e3b777ae993f5 - languageName: node - linkType: hard - "@tufjs/models@npm:4.0.0": version: 4.0.0 resolution: "@tufjs/models@npm:4.0.0" @@ -6397,7 +6249,7 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:1.0.6, @types/estree@npm:^1.0.6": +"@types/estree@npm:*, @types/estree@npm:^1.0.6": version: 1.0.6 resolution: "@types/estree@npm:1.0.6" checksum: 8825d6e729e16445d9a1dd2fb1db2edc5ed400799064cd4d028150701031af012ba30d6d03fe9df40f4d7a437d0de6d2b256020152b7b09bde9f2e420afdffd9 @@ -6720,13 +6572,6 @@ __metadata: languageName: node linkType: hard -"@types/tmp@npm:^0.2.3": - version: 0.2.6 - resolution: "@types/tmp@npm:0.2.6" - checksum: 0b24bb6040cc289440a609e10ec99a704978c890a5828ff151576489090b2257ce2e2570b0f320ace9c8099c3642ea6221fbdf6d8f2e22b7cd1f4fbf6e989e3e - languageName: node - linkType: hard - "@types/tough-cookie@npm:*": version: 4.0.5 resolution: "@types/tough-cookie@npm:4.0.5" @@ -6918,12 +6763,12 @@ __metadata: languageName: node linkType: hard -"@vitejs/plugin-basic-ssl@npm:1.2.0": - version: 1.2.0 - resolution: "@vitejs/plugin-basic-ssl@npm:1.2.0" +"@vitejs/plugin-basic-ssl@npm:2.0.0": + version: 2.0.0 + resolution: "@vitejs/plugin-basic-ssl@npm:2.0.0" peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 - checksum: 0a2d1fb8147783238a8308a3736a7d4b38026bc4223220701859bf05564ab91a35ff6cfddf75527a60611756a89ef60f3687f644e87f01eb2275cf0b887033f7 + vite: ^6.0.0 + checksum: d8e41f18dd2a21094dccffbf233e5af20d4096b1329492a92620b130e6543dcf50447ed509bac1d3364ba5c5eedf1b7c0046105815fb8476182747e41142badb languageName: node linkType: hard @@ -7200,6 +7045,16 @@ __metadata: languageName: node linkType: hard +"accepts@npm:^2.0.0": + version: 2.0.0 + resolution: "accepts@npm:2.0.0" + dependencies: + mime-types: ^3.0.0 + negotiator: ^1.0.0 + checksum: 49fe6c050cb6f6ff4e771b4d88324fca4d3127865f2473872e818dca127d809ba3aa8fdfc7acb51dd3c5bade7311ca6b8cfff7015ea6db2f7eb9c8444d223a4f + languageName: node + linkType: hard + "accepts@npm:~1.3.4, accepts@npm:~1.3.5, accepts@npm:~1.3.8": version: 1.3.8 resolution: "accepts@npm:1.3.8" @@ -7335,7 +7190,7 @@ __metadata: languageName: node linkType: hard -"ajv-formats@npm:3.0.1": +"ajv-formats@npm:3.0.1, ajv-formats@npm:^3.0.1": version: 3.0.1 resolution: "ajv-formats@npm:3.0.1" dependencies: @@ -7398,6 +7253,28 @@ __metadata: languageName: node linkType: hard +"algoliasearch@npm:5.40.1": + version: 5.40.1 + resolution: "algoliasearch@npm:5.40.1" + dependencies: + "@algolia/abtesting": 1.6.1 + "@algolia/client-abtesting": 5.40.1 + "@algolia/client-analytics": 5.40.1 + "@algolia/client-common": 5.40.1 + "@algolia/client-insights": 5.40.1 + "@algolia/client-personalization": 5.40.1 + "@algolia/client-query-suggestions": 5.40.1 + "@algolia/client-search": 5.40.1 + "@algolia/ingestion": 1.40.1 + "@algolia/monitoring": 1.40.1 + "@algolia/recommend": 5.40.1 + "@algolia/requester-browser-xhr": 5.40.1 + "@algolia/requester-fetch": 5.40.1 + "@algolia/requester-node-http": 5.40.1 + checksum: 25e7c4f0b5718477beb8ac2861fdda5f3cc586dfaedf57bdd364200b3958c69664bf251f61751421d67ff4dd5bf37959898eafae322563d6f7834f9dbef46db0 + languageName: node + linkType: hard + "ansi-colors@npm:4.1.3, ansi-colors@npm:^4.1.1, ansi-colors@npm:^4.1.3": version: 4.1.3 resolution: "ansi-colors@npm:4.1.3" @@ -7405,7 +7282,7 @@ __metadata: languageName: node linkType: hard -"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0, ansi-escapes@npm:^4.3.2": +"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0": version: 4.3.2 resolution: "ansi-escapes@npm:4.3.2" dependencies: @@ -7620,7 +7497,7 @@ __metadata: languageName: node linkType: hard -"async@npm:^3.2.3": +"async@npm:^3.2.0, async@npm:^3.2.3": version: 3.2.6 resolution: "async@npm:3.2.6" checksum: ee6eb8cd8a0ab1b58bd2a3ed6c415e93e773573a91d31df9d5ef559baafa9dab37d3b096fa7993e84585cac3697b2af6ddb9086f45d3ac8cae821bb2aab65682 @@ -7641,21 +7518,21 @@ __metadata: languageName: node linkType: hard -"autoprefixer@npm:10.4.20": - version: 10.4.20 - resolution: "autoprefixer@npm:10.4.20" +"autoprefixer@npm:10.4.21": + version: 10.4.21 + resolution: "autoprefixer@npm:10.4.21" dependencies: - browserslist: ^4.23.3 - caniuse-lite: ^1.0.30001646 + browserslist: ^4.24.4 + caniuse-lite: ^1.0.30001702 fraction.js: ^4.3.7 normalize-range: ^0.1.2 - picocolors: ^1.0.1 + picocolors: ^1.1.1 postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.1.0 bin: autoprefixer: bin/autoprefixer - checksum: 187cec2ec356631932b212f76dc64f4419c117fdb2fb9eeeb40867d38ba5ca5ba734e6ceefc9e3af4eec8258e60accdf5cbf2b7708798598fde35cdc3de562d6 + checksum: 11770ce635a0520e457eaf2ff89056cd57094796a9f5d6d9375513388a5a016cd947333dcfd213b822fdd8a0b43ce68ae4958e79c6f077c41d87444c8cca0235 languageName: node linkType: hard @@ -7701,16 +7578,15 @@ __metadata: languageName: node linkType: hard -"babel-loader@npm:9.2.1": - version: 9.2.1 - resolution: "babel-loader@npm:9.2.1" +"babel-loader@npm:10.0.0": + version: 10.0.0 + resolution: "babel-loader@npm:10.0.0" dependencies: - find-cache-dir: ^4.0.0 - schema-utils: ^4.0.0 + find-up: ^5.0.0 peerDependencies: "@babel/core": ^7.12.0 - webpack: ">=5" - checksum: e1858d7625ad7cc8cabe6bbb8657f957041ffb1308375f359e92aa1654f413bfbb86a281bbf7cd4f7fff374d571c637b117551deac0231d779a198d4e4e78331 + webpack: ">=5.61.0" + checksum: 8a9dbb8a93cd342832cc99f024f07a6fda67b29aa907fbc3087de17e7f7ff705cf17fa9aed9103b1de9dfff24427afe200ec99213d24f801a0b1f4fd94783f51 languageName: node linkType: hard @@ -7910,9 +7786,9 @@ __metadata: languageName: node linkType: hard -"beasties@npm:0.3.2": - version: 0.3.2 - resolution: "beasties@npm:0.3.2" +"beasties@npm:0.3.4": + version: 0.3.4 + resolution: "beasties@npm:0.3.4" dependencies: css-select: ^5.1.0 css-what: ^6.1.0 @@ -7922,7 +7798,7 @@ __metadata: picocolors: ^1.1.1 postcss: ^8.4.49 postcss-media-query-parser: ^0.2.3 - checksum: ddffbba8c9e3e4fe44a5ed1add29ad7fcdf6f3a55824d9314870734ce4d7d1cfeb6e810e0feab09bf8b3ddaf563f1639c6d22daf2e2d452a74f6b52258410a0d + checksum: 6550c6cd83245825381156ddb940694ae7d3bcdccea2a0cb174f59d363b7222cb785c9aeb72fd56e8c992ee3c02c05805691f4831d60431694bd0ae7106a53d3 languageName: node linkType: hard @@ -7960,7 +7836,7 @@ __metadata: languageName: node linkType: hard -"bl@npm:^4.0.3, bl@npm:^4.1.0": +"bl@npm:^4.0.3": version: 4.1.0 resolution: "bl@npm:4.1.0" dependencies: @@ -7985,7 +7861,7 @@ __metadata: languageName: node linkType: hard -"body-parser@npm:^2.2.0": +"body-parser@npm:^2.2.0, body-parser@npm:^2.2.1": version: 2.2.1 resolution: "body-parser@npm:2.2.1" dependencies: @@ -8078,7 +7954,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.21.5, browserslist@npm:^4.22.1, browserslist@npm:^4.23.0, browserslist@npm:^4.23.1, browserslist@npm:^4.23.3": +"browserslist@npm:^4.21.5, browserslist@npm:^4.22.1, browserslist@npm:^4.23.0, browserslist@npm:^4.23.1": version: 4.23.3 resolution: "browserslist@npm:4.23.3" dependencies: @@ -8241,7 +8117,7 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^19.0.0, cacache@npm:^19.0.1": +"cacache@npm:^19.0.1": version: 19.0.1 resolution: "cacache@npm:19.0.1" dependencies: @@ -8360,6 +8236,13 @@ __metadata: languageName: node linkType: hard +"caniuse-lite@npm:^1.0.30001702": + version: 1.0.30001760 + resolution: "caniuse-lite@npm:1.0.30001760" + checksum: 67f04822ab411541f04bcb81257c17b29414c6ba0755f3d4f74f54a79a1aaca844c2bac42b5b863855df8e1df73c5ac8fb133553a951863127a73d40727f7ae4 + languageName: node + linkType: hard + "caniuse-lite@npm:^1.0.30001716": version: 1.0.30001717 resolution: "caniuse-lite@npm:1.0.30001717" @@ -8425,16 +8308,6 @@ __metadata: languageName: node linkType: hard -"chalk@npm:4.1.2, chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.2": - version: 4.1.2 - resolution: "chalk@npm:4.1.2" - dependencies: - ansi-styles: ^4.1.0 - supports-color: ^7.1.0 - checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc - languageName: node - linkType: hard - "chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" @@ -8446,7 +8319,17 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^5.3.0": +"chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.2": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: ^4.1.0 + supports-color: ^7.1.0 + checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc + languageName: node + linkType: hard + +"chalk@npm:^5.3.0, chalk@npm:^5.6.2": version: 5.6.2 resolution: "chalk@npm:5.6.2" checksum: 4ee2d47a626d79ca27cb5299ecdcce840ef5755e287412536522344db0fc51ca0f6d6433202332c29e2288c6a90a2b31f3bd626bc8c14743b6b6ee28abd3b796 @@ -8460,13 +8343,6 @@ __metadata: languageName: node linkType: hard -"chardet@npm:^0.7.0": - version: 0.7.0 - resolution: "chardet@npm:0.7.0" - checksum: 6fd5da1f5d18ff5712c1e0aed41da200d7c51c28f11b36ee3c7b483f3696dabc08927fc6b227735eb8f0e1215c9a8abd8154637f3eff8cada5959df7f58b024d - languageName: node - linkType: hard - "chardet@npm:^2.1.1": version: 2.1.1 resolution: "chardet@npm:2.1.1" @@ -8474,6 +8350,13 @@ __metadata: languageName: node linkType: hard +"check-more-types@npm:^2.24.0": + version: 2.24.0 + resolution: "check-more-types@npm:2.24.0" + checksum: b09080ec3404d20a4b0ead828994b2e5913236ef44ed3033a27062af0004cf7d2091fbde4b396bf13b7ce02fb018bc9960b48305e6ab2304cd82d73ed7a51ef4 + languageName: node + linkType: hard + "cheerio-select@npm:^2.1.0": version: 2.1.0 resolution: "cheerio-select@npm:2.1.0" @@ -8586,13 +8469,6 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^4.1.0": - version: 4.3.1 - resolution: "ci-info@npm:4.3.1" - checksum: 66c159d92648e8a07acab0a3a0681bff6ccc39aa44916263208c4d97bbbeedbbc886d7611fd30c21df1aa624ce3c6fcdfde982e74689e3e014e064e1d0805f94 - languageName: node - linkType: hard - "cjs-module-lexer@npm:^1.0.0": version: 1.4.0 resolution: "cjs-module-lexer@npm:1.4.0" @@ -8639,16 +8515,23 @@ __metadata: languageName: node linkType: hard -"cli-table3@npm:0.6.1": - version: 0.6.1 - resolution: "cli-table3@npm:0.6.1" +"cli-spinners@npm:^3.2.0": + version: 3.3.0 + resolution: "cli-spinners@npm:3.3.0" + checksum: c3b9c31d96c9158f4d7140557fffb8c1caea2169d7b895374dd3c2f159267aa0db3b72f36bfcc3bbe3532a7ed162d07dc5c0dc3117e1c0dfe4d387e1d723d616 + languageName: node + linkType: hard + +"cli-table3@npm:~0.6.1": + version: 0.6.5 + resolution: "cli-table3@npm:0.6.5" dependencies: - colors: 1.4.0 + "@colors/colors": 1.5.0 string-width: ^4.2.0 dependenciesMeta: - colors: + "@colors/colors": optional: true - checksum: 956e175f8eb019c26465b9f1e51121c08d8978e2aab04be7f8520ea8a4e67906fcbd8516dfb77e386ae3730ef0281aa21a65613dffbfa3d62969263252bd25a9 + checksum: ab7afbf4f8597f1c631f3ee6bb3481d0bfeac8a3b81cffb5a578f145df5c88003b6cfff46046a7acae86596fdd03db382bfa67f20973b6b57425505abc47e42c languageName: node linkType: hard @@ -8722,6 +8605,17 @@ __metadata: languageName: node linkType: hard +"cliui@npm:^9.0.1": + version: 9.0.1 + resolution: "cliui@npm:9.0.1" + dependencies: + string-width: ^7.2.0 + strip-ansi: ^7.1.0 + wrap-ansi: ^9.0.0 + checksum: 143879ae462bf76822f341bf40979f0225fdba8dde6dfe429018b13396fd0532752cc2a809ac48cecc0ea189406184ad7568c0af44eea73d2ac3b432c4c6431f + languageName: node + linkType: hard + "clone-deep@npm:^4.0.1": version: 4.0.1 resolution: "clone-deep@npm:4.0.1" @@ -8800,23 +8694,13 @@ __metadata: languageName: node linkType: hard -"color-name@npm:^1.0.0, color-name@npm:~1.1.4": +"color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 languageName: node linkType: hard -"color-string@npm:^1.9.0": - version: 1.9.1 - resolution: "color-string@npm:1.9.1" - dependencies: - color-name: ^1.0.0 - simple-swizzle: ^0.2.2 - checksum: c13fe7cff7885f603f49105827d621ce87f4571d78ba28ef4a3f1a104304748f620615e6bf065ecd2145d0d9dad83a3553f52bb25ede7239d18e9f81622f1cc5 - languageName: node - linkType: hard - "color-support@npm:1.1.3, color-support@npm:^1.1.3": version: 1.1.3 resolution: "color-support@npm:1.1.3" @@ -8826,16 +8710,6 @@ __metadata: languageName: node linkType: hard -"color@npm:^4.2.3": - version: 4.2.3 - resolution: "color@npm:4.2.3" - dependencies: - color-convert: ^2.0.1 - color-string: ^1.9.0 - checksum: 0579629c02c631b426780038da929cca8e8d80a40158b09811a0112a107c62e10e4aad719843b791b1e658ab4e800558f2e87ca4522c8b32349d497ecb6adeb4 - languageName: node - linkType: hard - "colorette@npm:^2.0.10, colorette@npm:^2.0.14, colorette@npm:^2.0.16, colorette@npm:^2.0.20": version: 2.0.20 resolution: "colorette@npm:2.0.20" @@ -8876,14 +8750,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^13.0.0": - version: 13.1.0 - resolution: "commander@npm:13.1.0" - checksum: 8ca2fcb33caf2aa06fba3722d7a9440921331d54019dabf906f3603313e7bf334b009b862257b44083ff65d5a3ab19e83ad73af282bd5319f01dc228bdf87ef0 - languageName: node - linkType: hard - -"commander@npm:^14.0.1, commander@npm:^14.0.2": +"commander@npm:^14.0.0, commander@npm:^14.0.1, commander@npm:^14.0.2": version: 14.0.2 resolution: "commander@npm:14.0.2" checksum: 0a9e549565d368dde2965821833324069b92b099b415c2106996e47db1f0b8c10c77367e9876873c00a52ca627af4c7472eba9b51dc0d6a3ef152ea063d3e9e9 @@ -8925,13 +8792,6 @@ __metadata: languageName: node linkType: hard -"commondir@npm:^1.0.1": - version: 1.0.1 - resolution: "commondir@npm:1.0.1" - checksum: 59715f2fc456a73f68826285718503340b9f0dd89bfffc42749906c5cf3d4277ef11ef1cca0350d0e79204f00f1f6d83851ececc9095dc88512a697ac0b9bdcb - languageName: node - linkType: hard - "compare-func@npm:^2.0.0": version: 2.0.0 resolution: "compare-func@npm:2.0.0" @@ -8985,20 +8845,23 @@ __metadata: languageName: node linkType: hard -"concurrently@npm:^9.2.1": - version: 9.2.1 - resolution: "concurrently@npm:9.2.1" +"concurrently@npm:^8.2.2": + version: 8.2.2 + resolution: "concurrently@npm:8.2.2" dependencies: - chalk: 4.1.2 - rxjs: 7.8.2 - shell-quote: 1.8.3 - supports-color: 8.1.1 - tree-kill: 1.2.2 - yargs: 17.7.2 + chalk: ^4.1.2 + date-fns: ^2.30.0 + lodash: ^4.17.21 + rxjs: ^7.8.1 + shell-quote: ^1.8.1 + spawn-command: 0.0.2 + supports-color: ^8.1.1 + tree-kill: ^1.2.2 + yargs: ^17.7.2 bin: conc: dist/bin/concurrently.js concurrently: dist/bin/concurrently.js - checksum: 95c6cdde21b6304d53005d872318805f69e153d4cedfd4d720cc5776f56fbd073b38297cfe56bacfc8fbdba9b6c38ac1233739abd25b023761fd03b896a4cea5 + checksum: 8ac774df06869773438f1bf91025180c52d5b53139bc86cf47659136c0d97461d0579c515d848d1e945d4e3e0cafe646b2ea18af8d74259b46abddcfe39b2c6c languageName: node linkType: hard @@ -9028,6 +8891,13 @@ __metadata: languageName: node linkType: hard +"content-disposition@npm:^1.0.0": + version: 1.0.1 + resolution: "content-disposition@npm:1.0.1" + checksum: f1ee5363968e7e4c491fcd9796d3c489ab29c4ea0bfa5dcc3379a9833d6044838367cf8a11c90b179cb2a8d471279ab259119c52e0d3e4ed30934ccd56b6d694 + languageName: node + linkType: hard + "content-disposition@npm:~0.5.4": version: 0.5.4 resolution: "content-disposition@npm:0.5.4" @@ -9151,6 +9021,13 @@ __metadata: languageName: node linkType: hard +"cookie-signature@npm:^1.2.1": + version: 1.2.2 + resolution: "cookie-signature@npm:1.2.2" + checksum: 1ad4f9b3907c9f3673a0f0a07c0a23da7909ac6c9204c5d80a0ec102fe50ccc45f27fdf496361840d6c132c5bb0037122c0a381f856d070183d1ebe3e5e041ff + languageName: node + linkType: hard + "cookie-signature@npm:~1.0.6": version: 1.0.7 resolution: "cookie-signature@npm:1.0.7" @@ -9158,7 +9035,7 @@ __metadata: languageName: node linkType: hard -"cookie@npm:~0.7.1": +"cookie@npm:^0.7.1, cookie@npm:~0.7.1": version: 0.7.2 resolution: "cookie@npm:0.7.2" checksum: 9bf8555e33530affd571ea37b615ccad9b9a34febbf2c950c86787088eb00a8973690833b0f8ebd6b69b753c62669ea60cec89178c1fb007bf0749abed74f93e @@ -9174,19 +9051,18 @@ __metadata: languageName: node linkType: hard -"copy-webpack-plugin@npm:12.0.2": - version: 12.0.2 - resolution: "copy-webpack-plugin@npm:12.0.2" +"copy-webpack-plugin@npm:13.0.0": + version: 13.0.0 + resolution: "copy-webpack-plugin@npm:13.0.0" dependencies: - fast-glob: ^3.3.2 glob-parent: ^6.0.1 - globby: ^14.0.0 normalize-path: ^3.0.0 schema-utils: ^4.2.0 serialize-javascript: ^6.0.2 + tinyglobby: ^0.2.12 peerDependencies: webpack: ^5.1.0 - checksum: 98127735336c6db5924688486d3a1854a41835963d0c0b81695b2e3d58c6675164be7d23dee7090b84a56d3c9923175d3d0863ac1942bcc3317d2efc1962b927 + checksum: 668af779d5d29cbaff02b79588c3af03ab358fe6f8446859421f88cb857f3c7462366a1d02857667133238983ff4cdfb29427816f6959163b7639b94532c1153 languageName: node linkType: hard @@ -9229,7 +9105,7 @@ __metadata: languageName: node linkType: hard -"cors@npm:latest": +"cors@npm:^2.8.5, cors@npm:latest": version: 2.8.5 resolution: "cors@npm:2.8.5" dependencies: @@ -9291,7 +9167,7 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.6": +"cross-spawn@npm:^7.0.5, cross-spawn@npm:^7.0.6": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" dependencies: @@ -9404,24 +9280,24 @@ __metadata: languageName: node linkType: hard -"cypress@npm:^15.7.1": - version: 15.7.1 - resolution: "cypress@npm:15.7.1" +"cypress@npm:^13.17.0": + version: 13.17.0 + resolution: "cypress@npm:13.17.0" dependencies: - "@cypress/request": ^3.0.9 + "@cypress/request": ^3.0.6 "@cypress/xvfb": ^1.2.4 "@types/sinonjs__fake-timers": 8.1.1 "@types/sizzle": ^2.3.2 - "@types/tmp": ^0.2.3 arch: ^2.2.0 blob-util: ^2.0.2 bluebird: ^3.7.2 buffer: ^5.7.1 cachedir: ^2.3.0 chalk: ^4.1.0 - ci-info: ^4.1.0 + check-more-types: ^2.24.0 + ci-info: ^4.0.0 cli-cursor: ^3.1.0 - cli-table3: 0.6.1 + cli-table3: ~0.6.1 commander: ^6.2.1 common-tags: ^1.8.0 dayjs: ^1.10.4 @@ -9433,8 +9309,9 @@ __metadata: extract-zip: 2.0.1 figures: ^3.2.0 fs-extra: ^9.1.0 - hasha: 5.2.2 + getos: ^3.2.1 is-installed-globally: ~0.4.0 + lazy-ass: ^1.6.0 listr2: ^3.8.3 lodash: ^4.17.21 log-symbols: ^4.0.0 @@ -9444,15 +9321,15 @@ __metadata: process: ^0.11.10 proxy-from-env: 1.0.0 request-progress: ^3.0.0 + semver: ^7.5.3 supports-color: ^8.1.1 - systeminformation: 5.27.7 - tmp: ~0.2.4 + tmp: ~0.2.3 tree-kill: 1.2.2 untildify: ^4.0.0 yauzl: ^2.10.0 bin: cypress: bin/cypress - checksum: 3c542667ebdb7ce7514137de5a6a0fbf081ec7f58c438ad99adb4a6514692d3b1a448aed449781f161ae3109b98a9ceb5e1fb19b5f71e56647bfc98523e0e9b1 + checksum: c1d87358e8b92e19e3bf5246a8787dcdd5083e27fa7b816d26c28b4678ecd87b5b3b8661fb812bc993845ca30a482d3f18837af1ac6d9e142e41049dccbc51e0 languageName: node linkType: hard @@ -9507,6 +9384,15 @@ __metadata: languageName: node linkType: hard +"date-fns@npm:^2.30.0": + version: 2.30.0 + resolution: "date-fns@npm:2.30.0" + dependencies: + "@babel/runtime": ^7.21.0 + checksum: f7be01523282e9bb06c0cd2693d34f245247a29098527d4420628966a2d9aad154bd0e90a6b1cf66d37adcb769cd108cf8a7bd49d76db0fb119af5cdd13644f4 + languageName: node + linkType: hard + "dateformat@npm:^3.0.3": version: 3.0.3 resolution: "dateformat@npm:3.0.3" @@ -9563,27 +9449,27 @@ __metadata: languageName: node linkType: hard -"debug@npm:^4.4.1": - version: 4.4.1 - resolution: "debug@npm:4.4.1" +"debug@npm:^4.4.0, debug@npm:^4.4.3": + version: 4.4.3 + resolution: "debug@npm:4.4.3" dependencies: ms: ^2.1.3 peerDependenciesMeta: supports-color: optional: true - checksum: a43826a01cda685ee4cec00fb2d3322eaa90ccadbef60d9287debc2a886be3e835d9199c80070ede75a409ee57828c4c6cd80e4b154f2843f0dc95a570dc0729 + checksum: 4805abd570e601acdca85b6aa3757186084a45cff9b2fa6eee1f3b173caa776b45f478b2a71a572d616d2010cea9211d0ac4a02a610e4c18ac4324bde3760834 languageName: node linkType: hard -"debug@npm:^4.4.3": - version: 4.4.3 - resolution: "debug@npm:4.4.3" +"debug@npm:^4.4.1": + version: 4.4.1 + resolution: "debug@npm:4.4.1" dependencies: ms: ^2.1.3 peerDependenciesMeta: supports-color: optional: true - checksum: 4805abd570e601acdca85b6aa3757186084a45cff9b2fa6eee1f3b173caa776b45f478b2a71a572d616d2010cea9211d0ac4a02a610e4c18ac4324bde3760834 + checksum: a43826a01cda685ee4cec00fb2d3322eaa90ccadbef60d9287debc2a886be3e835d9199c80070ede75a409ee57828c4c6cd80e4b154f2843f0dc95a570dc0729 languageName: node linkType: hard @@ -9716,7 +9602,7 @@ __metadata: languageName: node linkType: hard -"depd@npm:2.0.0, depd@npm:~2.0.0": +"depd@npm:2.0.0, depd@npm:^2.0.0, depd@npm:~2.0.0": version: 2.0.0 resolution: "depd@npm:2.0.0" checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a @@ -10043,6 +9929,13 @@ __metadata: languageName: node linkType: hard +"encodeurl@npm:^2.0.0, encodeurl@npm:~2.0.0": + version: 2.0.0 + resolution: "encodeurl@npm:2.0.0" + checksum: abf5cd51b78082cf8af7be6785813c33b6df2068ce5191a40ca8b1afe6a86f9230af9a9ce694a5ce4665955e5c1120871826df9c128a642e09c58d592e2807fe + languageName: node + linkType: hard + "encodeurl@npm:~1.0.2": version: 1.0.2 resolution: "encodeurl@npm:1.0.2" @@ -10050,13 +9943,6 @@ __metadata: languageName: node linkType: hard -"encodeurl@npm:~2.0.0": - version: 2.0.0 - resolution: "encodeurl@npm:2.0.0" - checksum: abf5cd51b78082cf8af7be6785813c33b6df2068ce5191a40ca8b1afe6a86f9230af9a9ce694a5ce4665955e5c1120871826df9c128a642e09c58d592e2807fe - languageName: node - linkType: hard - "encoding-sniffer@npm:^0.2.1": version: 0.2.1 resolution: "encoding-sniffer@npm:0.2.1" @@ -10124,7 +10010,7 @@ __metadata: languageName: node linkType: hard -"entities@npm:^4.2.0, entities@npm:^4.3.0, entities@npm:^4.4.0": +"entities@npm:^4.2.0, entities@npm:^4.4.0": version: 4.5.0 resolution: "entities@npm:4.5.0" checksum: 853f8ebd5b425d350bffa97dd6958143179a5938352ccae092c62d1267c4e392a039be1bae7d51b6e4ffad25f51f9617531fedf5237f15df302ccfb452cbf2d7 @@ -10260,12 +10146,12 @@ __metadata: languageName: node linkType: hard -"esbuild-wasm@npm:0.25.4": - version: 0.25.4 - resolution: "esbuild-wasm@npm:0.25.4" +"esbuild-wasm@npm:0.25.5": + version: 0.25.5 + resolution: "esbuild-wasm@npm:0.25.5" bin: esbuild: bin/esbuild - checksum: b7106cb33de6831547296bc9c6891966f5a646d43123c80d312933e15f584bffb76eb0e1b0aaa02d8b7f6ac3edd586b1667b360d2491856f2161f209e0ba5259 + checksum: 5deeef54c4ca64306abb737eabcc1a553d483dd69edd93670b702af3e046ec69b5c6f40dc390d866433558f1294b1d8b701a5bfbd604b2812e4990366bd44805 languageName: node linkType: hard @@ -10278,7 +10164,93 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:0.25.4, esbuild@npm:>=0.15.13, esbuild@npm:^0.25.0": +"esbuild@npm:0.25.5": + version: 0.25.5 + resolution: "esbuild@npm:0.25.5" + dependencies: + "@esbuild/aix-ppc64": 0.25.5 + "@esbuild/android-arm": 0.25.5 + "@esbuild/android-arm64": 0.25.5 + "@esbuild/android-x64": 0.25.5 + "@esbuild/darwin-arm64": 0.25.5 + "@esbuild/darwin-x64": 0.25.5 + "@esbuild/freebsd-arm64": 0.25.5 + "@esbuild/freebsd-x64": 0.25.5 + "@esbuild/linux-arm": 0.25.5 + "@esbuild/linux-arm64": 0.25.5 + "@esbuild/linux-ia32": 0.25.5 + "@esbuild/linux-loong64": 0.25.5 + "@esbuild/linux-mips64el": 0.25.5 + "@esbuild/linux-ppc64": 0.25.5 + "@esbuild/linux-riscv64": 0.25.5 + "@esbuild/linux-s390x": 0.25.5 + "@esbuild/linux-x64": 0.25.5 + "@esbuild/netbsd-arm64": 0.25.5 + "@esbuild/netbsd-x64": 0.25.5 + "@esbuild/openbsd-arm64": 0.25.5 + "@esbuild/openbsd-x64": 0.25.5 + "@esbuild/sunos-x64": 0.25.5 + "@esbuild/win32-arm64": 0.25.5 + "@esbuild/win32-ia32": 0.25.5 + "@esbuild/win32-x64": 0.25.5 + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-arm64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-arm64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 2aa6f47c27a2f0fbf1e2eeed1df6c5449750ef598b9b49c95d8b654ec04423b70064de4f85a9e879c363402eb4f2fad59f37c996c329df1dc514b10f8ae76dd0 + languageName: node + linkType: hard + +"esbuild@npm:>=0.15.13, esbuild@npm:^0.25.0": version: 0.25.4 resolution: "esbuild@npm:0.25.4" dependencies: @@ -10371,7 +10343,7 @@ __metadata: languageName: node linkType: hard -"escape-html@npm:~1.0.3": +"escape-html@npm:^1.0.3, escape-html@npm:~1.0.3": version: 1.0.3 resolution: "escape-html@npm:1.0.3" checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 @@ -10616,7 +10588,7 @@ __metadata: languageName: node linkType: hard -"etag@npm:~1.8.1": +"etag@npm:^1.8.1, etag@npm:~1.8.1": version: 1.8.1 resolution: "etag@npm:1.8.1" checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff @@ -10666,6 +10638,22 @@ __metadata: languageName: node linkType: hard +"eventsource-parser@npm:^3.0.0, eventsource-parser@npm:^3.0.1": + version: 3.0.6 + resolution: "eventsource-parser@npm:3.0.6" + checksum: b90ec27f8d992afa7df171db202faaedb1782214f64e50690cbf78bc2629f7751575aa27a72d8ae447e5a7094938406b1a3ea1d89e5f0f2d6916cc8a694b6587 + languageName: node + linkType: hard + +"eventsource@npm:^3.0.2": + version: 3.0.7 + resolution: "eventsource@npm:3.0.7" + dependencies: + eventsource-parser: ^3.0.1 + checksum: cd8cbc3418238b9d751b6652edf442d4b869829fbc3b73444abca1816fe3d23dc707130dd9a990360bc27c281d986f2f62059d870921173425c3ac28d20a8414 + languageName: node + linkType: hard + "execa@npm:4.1.0, execa@npm:^4.0.2": version: 4.1.0 resolution: "execa@npm:4.1.0" @@ -10760,6 +10748,15 @@ __metadata: languageName: node linkType: hard +"express-rate-limit@npm:^7.5.0": + version: 7.5.1 + resolution: "express-rate-limit@npm:7.5.1" + peerDependencies: + express: ">= 4.11" + checksum: 544fdd576a846a7d3ed0203a011cec6d65ad8e5eab58dbe045a0bdefd119060c140c38b327e32713b56342cc901a3ca5c99f13cce4ceee08408e775ec4742c16 + languageName: node + linkType: hard + "express@npm:^4.21.2": version: 4.22.1 resolution: "express@npm:4.22.1" @@ -10799,6 +10796,42 @@ __metadata: languageName: node linkType: hard +"express@npm:^5.0.1": + version: 5.2.1 + resolution: "express@npm:5.2.1" + dependencies: + accepts: ^2.0.0 + body-parser: ^2.2.1 + content-disposition: ^1.0.0 + content-type: ^1.0.5 + cookie: ^0.7.1 + cookie-signature: ^1.2.1 + debug: ^4.4.0 + depd: ^2.0.0 + encodeurl: ^2.0.0 + escape-html: ^1.0.3 + etag: ^1.8.1 + finalhandler: ^2.1.0 + fresh: ^2.0.0 + http-errors: ^2.0.0 + merge-descriptors: ^2.0.0 + mime-types: ^3.0.0 + on-finished: ^2.4.1 + once: ^1.4.0 + parseurl: ^1.3.3 + proxy-addr: ^2.0.7 + qs: ^6.14.0 + range-parser: ^1.2.1 + router: ^2.2.0 + send: ^1.1.0 + serve-static: ^2.2.0 + statuses: ^2.0.1 + type-is: ^2.0.1 + vary: ^1.1.2 + checksum: e0bc9c11fcf4e6ed29c9b0551229e8cf35d959970eb5e10ef3e48763eb3a63487251950d9bf4ef38b93085f0f33bb1fc37ab07349b8fa98a0fa5f67236d4c054 + languageName: node + linkType: hard + "extend@npm:~3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" @@ -10806,17 +10839,6 @@ __metadata: languageName: node linkType: hard -"external-editor@npm:^3.1.0": - version: 3.1.0 - resolution: "external-editor@npm:3.1.0" - dependencies: - chardet: ^0.7.0 - iconv-lite: ^0.4.24 - tmp: ^0.0.33 - checksum: 1c2a616a73f1b3435ce04030261bed0e22d4737e14b090bb48e58865da92529c9f2b05b893de650738d55e692d071819b45e1669259b2b354bc3154d27a698c7 - languageName: node - linkType: hard - "extract-zip@npm:2.0.1": version: 2.0.1 resolution: "extract-zip@npm:2.0.1" @@ -10884,19 +10906,6 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.3.2": - version: 3.3.2 - resolution: "fast-glob@npm:3.3.2" - dependencies: - "@nodelib/fs.stat": ^2.0.2 - "@nodelib/fs.walk": ^1.2.3 - glob-parent: ^5.1.2 - merge2: ^1.3.0 - micromatch: ^4.0.4 - checksum: 900e4979f4dbc3313840078419245621259f349950411ca2fa445a2f9a1a6d98c3b5e7e0660c5ccd563aa61abe133a21765c6c0dec8e57da1ba71d8000b05ec1 - languageName: node - linkType: hard - "fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" @@ -11076,6 +11085,20 @@ __metadata: languageName: node linkType: hard +"finalhandler@npm:^2.1.0": + version: 2.1.1 + resolution: "finalhandler@npm:2.1.1" + dependencies: + debug: ^4.4.0 + encodeurl: ^2.0.0 + escape-html: ^1.0.3 + on-finished: ^2.4.1 + parseurl: ^1.3.3 + statuses: ^2.0.1 + checksum: e5303c4cccce46019cf0f59b07a36cc6d37549f1efe2111c16cd78e6e500d3bfd68d3b45044c9a67a0c75ad3128ee1106fae9a0152ca3c0a8ee3bf3a4a1464bb + languageName: node + linkType: hard + "finalhandler@npm:~1.3.1": version: 1.3.2 resolution: "finalhandler@npm:1.3.2" @@ -11091,24 +11114,20 @@ __metadata: languageName: node linkType: hard -"find-cache-dir@npm:^3.3.2": - version: 3.3.2 - resolution: "find-cache-dir@npm:3.3.2" +"find-cache-directory@npm:^6.0.0": + version: 6.0.0 + resolution: "find-cache-directory@npm:6.0.0" dependencies: - commondir: ^1.0.1 - make-dir: ^3.0.2 - pkg-dir: ^4.1.0 - checksum: 1e61c2e64f5c0b1c535bd85939ae73b0e5773142713273818cc0b393ee3555fb0fd44e1a5b161b8b6c3e03e98c2fcc9c227d784850a13a90a8ab576869576817 + common-path-prefix: ^3.0.0 + pkg-dir: ^8.0.0 + checksum: d0864b74ac556e21b1b4dc09d37f0b85ba8620f8cecc08727e8b2348e94828595d7368095deb79e804234629db56900c0f953beecf3cf2373e615fb809cc2033 languageName: node linkType: hard -"find-cache-dir@npm:^4.0.0": - version: 4.0.0 - resolution: "find-cache-dir@npm:4.0.0" - dependencies: - common-path-prefix: ^3.0.0 - pkg-dir: ^7.0.0 - checksum: 52a456a80deeb27daa3af6e06059b63bdb9cc4af4d845fc6d6229887e505ba913cd56000349caa60bc3aa59dacdb5b4c37903d4ba34c75102d83cab330b70d2f +"find-up-simple@npm:^1.0.0": + version: 1.0.1 + resolution: "find-up-simple@npm:1.0.1" + checksum: 6e374bffda9f8425314eab47ef79752b6e77dcc95c0ad17d257aef48c32fe07bbc41bcafbd22941c25bb94fffaaaa8e178d928867d844c58100c7fe19ec82f72 languageName: node linkType: hard @@ -11141,16 +11160,6 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^6.3.0": - version: 6.3.0 - resolution: "find-up@npm:6.3.0" - dependencies: - locate-path: ^7.1.0 - path-exists: ^5.0.0 - checksum: 9a21b7f9244a420e54c6df95b4f6fc3941efd3c3e5476f8274eb452f6a85706e7a6a90de71353ee4f091fcb4593271a6f92810a324ec542650398f928783c280 - languageName: node - linkType: hard - "flat-cache@npm:^4.0.0": version: 4.0.1 resolution: "flat-cache@npm:4.0.1" @@ -11264,6 +11273,13 @@ __metadata: languageName: node linkType: hard +"fresh@npm:^2.0.0": + version: 2.0.0 + resolution: "fresh@npm:2.0.0" + checksum: 38b9828352c6271e2a0dd8bdd985d0100dbbc4eb8b6a03286071dd6f7d96cfaacd06d7735701ad9a95870eb3f4555e67c08db1dcfe24c2e7bb87383c72fae1d2 + languageName: node + linkType: hard + "from@npm:^0.1.7": version: 0.1.7 resolution: "from@npm:0.1.7" @@ -11498,6 +11514,15 @@ __metadata: languageName: node linkType: hard +"getos@npm:^3.2.1": + version: 3.2.1 + resolution: "getos@npm:3.2.1" + dependencies: + async: ^3.2.0 + checksum: 42fd78a66d47cebd3e09de5566cc0044e034b08f4a000a310dbd89a77b02c65d8f4002554bfa495ea5bdc4fa9d515f5ac785a7cc474ba45383cc697f865eeaf1 + languageName: node + linkType: hard + "getpass@npm:^0.1.1": version: 0.1.7 resolution: "getpass@npm:0.1.7" @@ -11602,19 +11627,6 @@ __metadata: languageName: node linkType: hard -"glob@npm:8.1.0": - version: 8.1.0 - resolution: "glob@npm:8.1.0" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^5.0.1 - once: ^1.3.0 - checksum: 92fbea3221a7d12075f26f0227abac435de868dd0736a17170663783296d0dd8d3d532a5672b4488a439bf5d7fb85cdd07c11185d6cd39184f0385cbdfb86a47 - languageName: node - linkType: hard - "glob@npm:^10.2.2, glob@npm:^10.3.10": version: 10.4.5 resolution: "glob@npm:10.4.5" @@ -11707,20 +11719,6 @@ __metadata: languageName: node linkType: hard -"globby@npm:^14.0.0": - version: 14.0.2 - resolution: "globby@npm:14.0.2" - dependencies: - "@sindresorhus/merge-streams": ^2.1.0 - fast-glob: ^3.3.2 - ignore: ^5.2.4 - path-type: ^5.0.0 - slash: ^5.1.0 - unicorn-magic: ^0.1.0 - checksum: 2cee79efefca4383a825fc2fcbdb37e5706728f2d39d4b63851927c128fff62e6334ef7d4d467949d411409ad62767dc2d214e0f837a0f6d4b7290b6711d485c - languageName: node - linkType: hard - "gopd@npm:^1.2.0": version: 1.2.0 resolution: "gopd@npm:1.2.0" @@ -11818,16 +11816,6 @@ __metadata: languageName: node linkType: hard -"hasha@npm:5.2.2": - version: 5.2.2 - resolution: "hasha@npm:5.2.2" - dependencies: - is-stream: ^2.0.0 - type-fest: ^0.8.0 - checksum: 06cc474bed246761ff61c19d629977eb5f53fa817be4313a255a64ae0f433e831a29e83acb6555e3f4592b348497596f1d1653751008dda4f21c9c21ca60ac5a - languageName: node - linkType: hard - "hasown@npm:^2.0.2": version: 2.0.2 resolution: "hasown@npm:2.0.2" @@ -11983,7 +11971,7 @@ __metadata: languageName: node linkType: hard -"http-errors@npm:^2.0.0, http-errors@npm:~2.0.0, http-errors@npm:~2.0.1": +"http-errors@npm:^2.0.0, http-errors@npm:^2.0.1, http-errors@npm:~2.0.0, http-errors@npm:~2.0.1": version: 2.0.1 resolution: "http-errors@npm:2.0.1" dependencies: @@ -12050,7 +12038,7 @@ __metadata: languageName: node linkType: hard -"http-proxy-middleware@npm:^2.0.9": +"http-proxy-middleware@npm:^2.0.7": version: 2.0.9 resolution: "http-proxy-middleware@npm:2.0.9" dependencies: @@ -12173,15 +12161,6 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:^0.4.24, iconv-lite@npm:~0.4.24": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" - dependencies: - safer-buffer: ">= 2.1.2 < 3" - checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 - languageName: node - linkType: hard - "iconv-lite@npm:^0.7.0, iconv-lite@npm:~0.7.0": version: 0.7.0 resolution: "iconv-lite@npm:0.7.0" @@ -12191,6 +12170,15 @@ __metadata: languageName: node linkType: hard +"iconv-lite@npm:~0.4.24": + version: 0.4.24 + resolution: "iconv-lite@npm:0.4.24" + dependencies: + safer-buffer: ">= 2.1.2 < 3" + checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 + languageName: node + linkType: hard + "icss-utils@npm:^5.0.0, icss-utils@npm:^5.1.0": version: 5.1.0 resolution: "icss-utils@npm:5.1.0" @@ -12200,19 +12188,10 @@ __metadata: languageName: node linkType: hard -"ieee754@npm:^1.1.13": - version: 1.2.1 - resolution: "ieee754@npm:1.2.1" - checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e - languageName: node - linkType: hard - -"ignore-walk@npm:^7.0.0": - version: 7.0.0 - resolution: "ignore-walk@npm:7.0.0" - dependencies: - minimatch: ^9.0.0 - checksum: 509a2a5f10e6ec17b24ae4d23bb774c9243a1590aee3795c8787fb3f2d94f3d6f83f3e6b15614a0c93f1a2f43c7d978a4e4f45ea83fe25dd81da395417bb19ea +"ieee754@npm:^1.1.13": + version: 1.2.1 + resolution: "ieee754@npm:1.2.1" + checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e languageName: node linkType: hard @@ -12225,7 +12204,7 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.2.0, ignore@npm:^5.2.4": +"ignore@npm:^5.2.0": version: 5.3.2 resolution: "ignore@npm:5.3.2" checksum: 2acfd32a573260ea522ea0bfeff880af426d68f6831f973129e2ba7363f422923cf53aab62f8369cbf4667c7b25b6f8a3761b34ecdb284ea18e87a5262a865be @@ -12451,13 +12430,6 @@ __metadata: languageName: node linkType: hard -"is-arrayish@npm:^0.3.1": - version: 0.3.4 - resolution: "is-arrayish@npm:0.3.4" - checksum: 09816634eb7b6e357067f6b49c7656b4aff6d8b25486553d086bab53ce0f929c0293906539503b2a317f3137b5a5cd7e9ea01305f6090c0037c4340d9121420d - languageName: node - linkType: hard - "is-binary-path@npm:~2.1.0": version: 2.1.0 resolution: "is-binary-path@npm:2.1.0" @@ -12487,7 +12459,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.16.0": +"is-core-module@npm:^2.16.0, is-core-module@npm:^2.16.1": version: 2.16.1 resolution: "is-core-module@npm:2.16.1" dependencies: @@ -12667,6 +12639,13 @@ __metadata: languageName: node linkType: hard +"is-promise@npm:^4.0.0": + version: 4.0.0 + resolution: "is-promise@npm:4.0.0" + checksum: 0b46517ad47b00b6358fd6553c83ec1f6ba9acd7ffb3d30a0bf519c5c69e7147c132430452351b8a9fc198f8dd6c4f76f8e6f5a7f100f8c77d57d9e0f4261a8a + languageName: node + linkType: hard + "is-ssh@npm:^1.4.0": version: 1.4.0 resolution: "is-ssh@npm:1.4.0" @@ -12720,7 +12699,7 @@ __metadata: languageName: node linkType: hard -"is-unicode-supported@npm:^2.0.0": +"is-unicode-supported@npm:^2.0.0, is-unicode-supported@npm:^2.1.0": version: 2.1.0 resolution: "is-unicode-supported@npm:2.1.0" checksum: f254e3da6b0ab1a57a94f7273a7798dd35d1d45b227759f600d0fa9d5649f9c07fa8d3c8a6360b0e376adf916d151ec24fc9a50c5295c58bae7ca54a76a063f9 @@ -13164,7 +13143,7 @@ __metadata: languageName: node linkType: hard -"jest-preset-angular@npm:^14.6.2": +"jest-preset-angular@npm:^14.3.2": version: 14.6.2 resolution: "jest-preset-angular@npm:14.6.2" dependencies: @@ -13408,6 +13387,13 @@ __metadata: languageName: node linkType: hard +"jose@npm:^6.1.1": + version: 6.1.3 + resolution: "jose@npm:6.1.3" + checksum: 7f51c7e77f82b70ef88ede9fd1760298bc0ffbf143b9d94f78c08462987ae61864535c1856bc6c26d335f857c7d41f4fffcc29134212c19ea929ce34a4c790f0 + languageName: node + linkType: hard + "js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" @@ -13801,6 +13787,13 @@ __metadata: languageName: node linkType: hard +"lazy-ass@npm:^1.6.0": + version: 1.6.0 + resolution: "lazy-ass@npm:1.6.0" + checksum: 5a3ebb17915b03452320804466345382a6c25ac782ec4874fecdb2385793896cd459be2f187dc7def8899180c32ee0ab9a1aa7fe52193ac3ff3fe29bb0591729 + languageName: node + linkType: hard + "lerna@npm:^9.0.3": version: 9.0.3 resolution: "lerna@npm:9.0.3" @@ -13888,9 +13881,9 @@ __metadata: languageName: node linkType: hard -"less-loader@npm:12.2.0": - version: 12.2.0 - resolution: "less-loader@npm:12.2.0" +"less-loader@npm:12.3.0": + version: 12.3.0 + resolution: "less-loader@npm:12.3.0" peerDependencies: "@rspack/core": 0.x || 1.x less: ^3.5.0 || ^4.0.0 @@ -13900,13 +13893,13 @@ __metadata: optional: true webpack: optional: true - checksum: df08dba1d733d6b4202ce185e8fe4897c407a20aeba01dc214f514352ab5aadcd53fc76366b9e473f9ec920bb612d839b39c686303d2ce2155edf61a7be69b7b + checksum: 9a291f37a4514349ce4a187ddffd77bfd7d4f97077f71aa6dbfc81393a0cd3c00ab793c13f40a4d3acdbad423db9d2e75054ede4fb1900ba0e49882c9405a4f7 languageName: node linkType: hard -"less@npm:4.2.2": - version: 4.2.2 - resolution: "less@npm:4.2.2" +"less@npm:4.3.0": + version: 4.3.0 + resolution: "less@npm:4.3.0" dependencies: copy-anything: ^2.0.1 errno: ^0.1.1 @@ -13935,7 +13928,7 @@ __metadata: optional: true bin: lessc: bin/lessc - checksum: 77b503d32f0c6fa2ce4aabb25c0f1dbaad9562d05e5416bd218dc20b2548f42baacfb36d452d4a1336eca22c57d66d4e32de66f80d8d976a8fe824e30f78a151 + checksum: a071ec82fd6b79bc57e9d529542d205824d71a4c1914553c80b237390785938d83df2e7be774aeb07e08157afd57837d67704f917db203de5bf8411255be5bdd languageName: node linkType: hard @@ -14071,9 +14064,9 @@ __metadata: languageName: node linkType: hard -"listr2@npm:8.2.5": - version: 8.2.5 - resolution: "listr2@npm:8.2.5" +"listr2@npm:8.3.3": + version: 8.3.3 + resolution: "listr2@npm:8.3.3" dependencies: cli-truncate: ^4.0.0 colorette: ^2.0.20 @@ -14081,7 +14074,21 @@ __metadata: log-update: ^6.1.0 rfdc: ^1.4.1 wrap-ansi: ^9.0.0 - checksum: 0ca2387b067eb11bbe91863f36903f3a5a040790422a499cc1a15806d8497979e7d1990bd129061c0510906b2971eaa97a74a9635e3ec5abd5830c9749b655b9 + checksum: 77588101773677903205674e1fcfa880fda7aee64aec7797f03cbf638f3acdb6c91ca21496e938a2f29a71645aa838caee60b913d6c901d364af308d61f9bfff + languageName: node + linkType: hard + +"listr2@npm:9.0.5, listr2@npm:^9.0.5": + version: 9.0.5 + resolution: "listr2@npm:9.0.5" + dependencies: + cli-truncate: ^5.0.0 + colorette: ^2.0.20 + eventemitter3: ^5.0.1 + log-update: ^6.1.0 + rfdc: ^1.4.1 + wrap-ansi: ^9.0.0 + checksum: 64ef0dcd6f69e131f5699f584c13096d828a747472d4a18e68a9418848a54aef86bf953bf4a8a03a3dff24dacf771fab919dad59dce115244308a06d147acbfa languageName: node linkType: hard @@ -14106,30 +14113,17 @@ __metadata: languageName: node linkType: hard -"listr2@npm:^9.0.5": - version: 9.0.5 - resolution: "listr2@npm:9.0.5" - dependencies: - cli-truncate: ^5.0.0 - colorette: ^2.0.20 - eventemitter3: ^5.0.1 - log-update: ^6.1.0 - rfdc: ^1.4.1 - wrap-ansi: ^9.0.0 - checksum: 64ef0dcd6f69e131f5699f584c13096d828a747472d4a18e68a9418848a54aef86bf953bf4a8a03a3dff24dacf771fab919dad59dce115244308a06d147acbfa - languageName: node - linkType: hard - -"lmdb@npm:3.2.6": - version: 3.2.6 - resolution: "lmdb@npm:3.2.6" - dependencies: - "@lmdb/lmdb-darwin-arm64": 3.2.6 - "@lmdb/lmdb-darwin-x64": 3.2.6 - "@lmdb/lmdb-linux-arm": 3.2.6 - "@lmdb/lmdb-linux-arm64": 3.2.6 - "@lmdb/lmdb-linux-x64": 3.2.6 - "@lmdb/lmdb-win32-x64": 3.2.6 +"lmdb@npm:3.3.0": + version: 3.3.0 + resolution: "lmdb@npm:3.3.0" + dependencies: + "@lmdb/lmdb-darwin-arm64": 3.3.0 + "@lmdb/lmdb-darwin-x64": 3.3.0 + "@lmdb/lmdb-linux-arm": 3.3.0 + "@lmdb/lmdb-linux-arm64": 3.3.0 + "@lmdb/lmdb-linux-x64": 3.3.0 + "@lmdb/lmdb-win32-arm64": 3.3.0 + "@lmdb/lmdb-win32-x64": 3.3.0 msgpackr: ^1.11.2 node-addon-api: ^6.1.0 node-gyp: latest @@ -14147,11 +14141,13 @@ __metadata: optional: true "@lmdb/lmdb-linux-x64": optional: true + "@lmdb/lmdb-win32-arm64": + optional: true "@lmdb/lmdb-win32-x64": optional: true bin: download-lmdb-prebuilds: bin/download-prebuilds.js - checksum: 1ccde5566c06a17f401abfdbd0cee09a4ce5a8f40fe306959520959fe30b3cad6a11b3e10d314c496b587a8048fe4d65cb341da385a6f0b74a14522d3f92617f + checksum: b843f1af442390799b604915154ebf29fe8628ce42709e14b72fe12575f712ec436eee8d19eda8e18e23fb3d881e60f38510afec763047403b6381ea316624be languageName: node linkType: hard @@ -14239,15 +14235,6 @@ __metadata: languageName: node linkType: hard -"locate-path@npm:^7.1.0": - version: 7.2.0 - resolution: "locate-path@npm:7.2.0" - dependencies: - p-locate: ^6.0.0 - checksum: c1b653bdf29beaecb3d307dfb7c44d98a2a98a02ebe353c9ad055d1ac45d6ed4e1142563d222df9b9efebc2bcb7d4c792b507fad9e7150a04c29530b7db570f8 - languageName: node - linkType: hard - "lodash.debounce@npm:^4.0.8": version: 4.0.8 resolution: "lodash.debounce@npm:4.0.8" @@ -14290,7 +14277,7 @@ __metadata: languageName: node linkType: hard -"log-symbols@npm:^4.0.0, log-symbols@npm:^4.1.0": +"log-symbols@npm:^4.0.0": version: 4.1.0 resolution: "log-symbols@npm:4.1.0" dependencies: @@ -14310,6 +14297,16 @@ __metadata: languageName: node linkType: hard +"log-symbols@npm:^7.0.1": + version: 7.0.1 + resolution: "log-symbols@npm:7.0.1" + dependencies: + is-unicode-supported: ^2.0.0 + yoctocolors: ^2.1.1 + checksum: 0862313d84826b551582e39659b8586c56b65130c5f4f976420e2c23985228334f2a26fc4251ac22bf0a5b415d9430e86bf332557d934c10b036f9a549d63a09 + languageName: node + linkType: hard + "log-update@npm:^4.0.0": version: 4.0.0 resolution: "log-update@npm:4.0.0" @@ -14411,6 +14408,24 @@ __metadata: languageName: node linkType: hard +"magic-string@npm:0.30.19": + version: 0.30.19 + resolution: "magic-string@npm:0.30.19" + dependencies: + "@jridgewell/sourcemap-codec": ^1.5.5 + checksum: f360b87febeceddb35238e55963b70ef68381688c1aada6d842833a7be440a08cb0a8776e23b5e4e34785edc6b42b92dc08c829f43ecdb58547122f3fd79fdc7 + languageName: node + linkType: hard + +"magic-string@npm:^0.30.21": + version: 0.30.21 + resolution: "magic-string@npm:0.30.21" + dependencies: + "@jridgewell/sourcemap-codec": ^1.5.5 + checksum: 4ff76a4e8d439431cf49f039658751ed351962d044e5955adc257489569bd676019c906b631f86319217689d04815d7d064ee3ff08ab82ae65b7655a7e82a414 + languageName: node + linkType: hard + "make-dir@npm:4.0.0, make-dir@npm:^4.0.0": version: 4.0.0 resolution: "make-dir@npm:4.0.0" @@ -14430,15 +14445,6 @@ __metadata: languageName: node linkType: hard -"make-dir@npm:^3.0.2": - version: 3.1.0 - resolution: "make-dir@npm:3.1.0" - dependencies: - semver: ^6.0.0 - checksum: 484200020ab5a1fdf12f393fe5f385fc8e4378824c940fba1729dcd198ae4ff24867bc7a5646331e50cead8abff5d9270c456314386e629acec6dff4b8016b78 - languageName: node - linkType: hard - "make-error@npm:^1.1.1, make-error@npm:^1.3.6": version: 1.3.6 resolution: "make-error@npm:1.3.6" @@ -14485,7 +14491,7 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^14.0.0, make-fetch-happen@npm:^14.0.1, make-fetch-happen@npm:^14.0.2, make-fetch-happen@npm:^14.0.3": +"make-fetch-happen@npm:^14.0.3": version: 14.0.3 resolution: "make-fetch-happen@npm:14.0.3" dependencies: @@ -14637,6 +14643,13 @@ __metadata: languageName: node linkType: hard +"merge-descriptors@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-descriptors@npm:2.0.0" + checksum: e383332e700a94682d0125a36c8be761142a1320fc9feeb18e6e36647c9edf064271645f5669b2c21cf352116e561914fd8aa831b651f34db15ef4038c86696a + languageName: node + linkType: hard + "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" @@ -14658,13 +14671,6 @@ __metadata: languageName: node linkType: hard -"meta-png@npm:1.0.6": - version: 1.0.6 - resolution: "meta-png@npm:1.0.6" - checksum: aed14b3b53189c9d32002d76c40926bd93dd9d439bae3ad23ffb2645c375c9772c160879aa8af59ac85a2f43ae8bbe06b9648a53fe27815f4aeab238f4e9b79d - languageName: node - linkType: hard - "methods@npm:~1.1.2": version: 1.1.2 resolution: "methods@npm:1.1.2" @@ -14712,7 +14718,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^3.0.0": +"mime-types@npm:^3.0.0, mime-types@npm:^3.0.2": version: 3.0.2 resolution: "mime-types@npm:3.0.2" dependencies: @@ -14831,7 +14837,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^9.0.0, minimatch@npm:^9.0.4, minimatch@npm:^9.0.5": +"minimatch@npm:^9.0.4, minimatch@npm:^9.0.5": version: 9.0.5 resolution: "minimatch@npm:9.0.5" dependencies: @@ -15042,15 +15048,6 @@ __metadata: languageName: node linkType: hard -"move-file@npm:2.1.0": - version: 2.1.0 - resolution: "move-file@npm:2.1.0" - dependencies: - path-exists: ^4.0.0 - checksum: 2b92bbe047a302b593fcb2c0bf1131bb090ec80b3264569fc80d782c8ff829eecc13573943fa4d804c9747dec612ef2d1e84a5cfcf29cbc64a69ffcbb7ea09b3 - languageName: node - linkType: hard - "mrmime@npm:2.0.1, mrmime@npm:^2.0.0": version: 2.0.1 resolution: "mrmime@npm:2.0.1" @@ -15147,13 +15144,6 @@ __metadata: languageName: node linkType: hard -"mute-stream@npm:^1.0.0": - version: 1.0.0 - resolution: "mute-stream@npm:1.0.0" - checksum: 36fc968b0e9c9c63029d4f9dc63911950a3bdf55c9a87f58d3a266289b67180201cade911e7699f8b2fa596b34c9db43dad37649e3f7fdd13c3bb9edb0017ee7 - languageName: node - linkType: hard - "mute-stream@npm:^2.0.0": version: 2.0.0 resolution: "mute-stream@npm:2.0.0" @@ -15231,36 +15221,37 @@ __metadata: languageName: node linkType: hard -"ng-packagr@npm:^19.2.2": - version: 19.2.2 - resolution: "ng-packagr@npm:19.2.2" +"ng-packagr@npm:~20.0.0": + version: 20.0.1 + resolution: "ng-packagr@npm:20.0.1" dependencies: + "@ampproject/remapping": ^2.3.0 "@rollup/plugin-json": ^6.1.0 "@rollup/wasm-node": ^4.24.0 ajv: ^8.17.1 ansi-colors: ^4.1.3 browserslist: ^4.22.1 chokidar: ^4.0.1 - commander: ^13.0.0 - convert-source-map: ^2.0.0 + commander: ^14.0.0 dependency-graph: ^1.0.0 esbuild: ^0.25.0 - fast-glob: ^3.3.2 - find-cache-dir: ^3.3.2 + find-cache-directory: ^6.0.0 injection-js: ^2.4.0 jsonc-parser: ^3.3.1 less: ^4.2.0 - ora: ^5.1.0 - piscina: ^4.7.0 + ora: ^8.2.0 + piscina: ^5.0.0 postcss: ^8.4.47 rollup: ^4.24.0 + rollup-plugin-dts: ^6.2.0 rxjs: ^7.8.1 sass: ^1.81.0 + tinyglobby: ^0.2.12 peerDependencies: - "@angular/compiler-cli": ^19.0.0 || ^19.1.0-next.0 || ^19.2.0-next.0 + "@angular/compiler-cli": ^20.0.0 || ^20.1.0-next.0 tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0 tslib: ^2.3.0 - typescript: ">=5.5 <5.9" + typescript: ">=5.8 <5.9" dependenciesMeta: rollup: optional: true @@ -15268,8 +15259,8 @@ __metadata: tailwindcss: optional: true bin: - ng-packagr: cli/main.js - checksum: 3210bda287ef8d404c30263cf71406666f4da8410d586dad63c7190addc40d5a30efd7d148a75cfa5c1c5769bf8d2a67eb21b0d8b42659e17006b6b6fc9c0316 + ng-packagr: src/cli/main.js + checksum: 04571bc5960634f8a3dc42fd5f9d69a5a76d1e0ce3832ce36c3ca1122647621c7f9edd306ed2dfe7046eb2bfaf062a4cf482d11bfc87b99f177a25623ecd73ad languageName: node linkType: hard @@ -15554,27 +15545,27 @@ __metadata: languageName: node linkType: hard -"npm-package-arg@npm:12.0.2, npm-package-arg@npm:^12.0.0": - version: 12.0.2 - resolution: "npm-package-arg@npm:12.0.2" +"npm-package-arg@npm:13.0.1": + version: 13.0.1 + resolution: "npm-package-arg@npm:13.0.1" dependencies: - hosted-git-info: ^8.0.0 + hosted-git-info: ^9.0.0 proc-log: ^5.0.0 semver: ^7.3.5 validate-npm-package-name: ^6.0.0 - checksum: fcf4b7315a6b04035001dfde535ed4613bdcfcd06b30be54fc853bba8218e57933d5448102931da6ccfdf774b9222258dc8ab0d42a1633b3944dddab1916bef0 + checksum: aba57acfaa0f18c42e3fe432cafd5e316b4dffa8c2c3ddaa36c2af3186968eb9cd89fcd5dfb18410fbbcb4ffc3b2b0cf02b2c0630d5642b33ab2f3fb500aa2b5 languageName: node linkType: hard -"npm-package-arg@npm:13.0.1": - version: 13.0.1 - resolution: "npm-package-arg@npm:13.0.1" +"npm-package-arg@npm:^12.0.0": + version: 12.0.2 + resolution: "npm-package-arg@npm:12.0.2" dependencies: - hosted-git-info: ^9.0.0 + hosted-git-info: ^8.0.0 proc-log: ^5.0.0 semver: ^7.3.5 validate-npm-package-name: ^6.0.0 - checksum: aba57acfaa0f18c42e3fe432cafd5e316b4dffa8c2c3ddaa36c2af3186968eb9cd89fcd5dfb18410fbbcb4ffc3b2b0cf02b2c0630d5642b33ab2f3fb500aa2b5 + checksum: fcf4b7315a6b04035001dfde535ed4613bdcfcd06b30be54fc853bba8218e57933d5448102931da6ccfdf774b9222258dc8ab0d42a1633b3944dddab1916bef0 languageName: node linkType: hard @@ -15600,16 +15591,7 @@ __metadata: languageName: node linkType: hard -"npm-packlist@npm:^9.0.0": - version: 9.0.0 - resolution: "npm-packlist@npm:9.0.0" - dependencies: - ignore-walk: ^7.0.0 - checksum: 1286dcec2e53503ce7133088f82fb0840405a623f035487eafcdaf0865dc1632c970ad3e24234eb13ccd33f41ba2b95d13585038ef76817dfd74dd93c1b73eae - languageName: node - linkType: hard - -"npm-pick-manifest@npm:10.0.0, npm-pick-manifest@npm:^10.0.0": +"npm-pick-manifest@npm:^10.0.0": version: 10.0.0 resolution: "npm-pick-manifest@npm:10.0.0" dependencies: @@ -15649,22 +15631,6 @@ __metadata: languageName: node linkType: hard -"npm-registry-fetch@npm:^18.0.0": - version: 18.0.2 - resolution: "npm-registry-fetch@npm:18.0.2" - dependencies: - "@npmcli/redact": ^3.0.0 - jsonparse: ^1.3.1 - make-fetch-happen: ^14.0.0 - minipass: ^7.0.2 - minipass-fetch: ^4.0.0 - minizlib: ^3.0.1 - npm-package-arg: ^12.0.0 - proc-log: ^5.0.0 - checksum: 99d11962674f56ebf2e3a4623e486ec45db6cbc2bc3e1678afb3fbe0fe827ab668aeb04ee3e5aea0534e293a6ac98d01fd5a15dab8a3647e36c9c34342ff5211 - languageName: node - linkType: hard - "npm-registry-fetch@npm:^19.0.0": version: 19.1.1 resolution: "npm-registry-fetch@npm:19.1.1" @@ -15871,15 +15837,15 @@ __metadata: languageName: node linkType: hard -"open@npm:10.1.0, open@npm:^10.0.3": - version: 10.1.0 - resolution: "open@npm:10.1.0" +"open@npm:10.1.2": + version: 10.1.2 + resolution: "open@npm:10.1.2" dependencies: default-browser: ^5.2.1 define-lazy-prop: ^3.0.0 is-inside-container: ^1.0.0 is-wsl: ^3.1.0 - checksum: 079b0771616bac13b08129b0300032dc9328d72f345e460dd0416b8a8196a5bdf5e0251fefec8aa2a6a97c736734ac65dd8f1d29ab3fc9a13e85624aa5bc4470 + checksum: cb40d9786e8c679a1c647c62ad3642bbf1a8cc986c3ec970e99ed13d279c93328ea46bf756db64ea465d2d707815d4e792e7ba906830c3439cc8577cdefb8610 languageName: node linkType: hard @@ -15894,6 +15860,18 @@ __metadata: languageName: node linkType: hard +"open@npm:^10.0.3": + version: 10.1.0 + resolution: "open@npm:10.1.0" + dependencies: + default-browser: ^5.2.1 + define-lazy-prop: ^3.0.0 + is-inside-container: ^1.0.0 + is-wsl: ^3.1.0 + checksum: 079b0771616bac13b08129b0300032dc9328d72f345e460dd0416b8a8196a5bdf5e0251fefec8aa2a6a97c736734ac65dd8f1d29ab3fc9a13e85624aa5bc4470 + languageName: node + linkType: hard + "open@npm:^8.4.0": version: 8.4.2 resolution: "open@npm:8.4.2" @@ -15944,24 +15922,7 @@ __metadata: languageName: node linkType: hard -"ora@npm:5.4.1, ora@npm:^5.1.0": - version: 5.4.1 - resolution: "ora@npm:5.4.1" - dependencies: - bl: ^4.1.0 - chalk: ^4.1.0 - cli-cursor: ^3.1.0 - cli-spinners: ^2.5.0 - is-interactive: ^1.0.0 - is-unicode-supported: ^0.1.0 - log-symbols: ^4.1.0 - strip-ansi: ^6.0.0 - wcwidth: ^1.0.1 - checksum: 28d476ee6c1049d68368c0dc922e7225e3b5600c3ede88fade8052837f9ed342625fdaa84a6209302587c8ddd9b664f71f0759833cbdb3a4cf81344057e63c63 - languageName: node - linkType: hard - -"ora@npm:8.2.0": +"ora@npm:8.2.0, ora@npm:^8.2.0": version: 8.2.0 resolution: "ora@npm:8.2.0" dependencies: @@ -15978,6 +15939,23 @@ __metadata: languageName: node linkType: hard +"ora@npm:9.0.0": + version: 9.0.0 + resolution: "ora@npm:9.0.0" + dependencies: + chalk: ^5.6.2 + cli-cursor: ^5.0.0 + cli-spinners: ^3.2.0 + is-interactive: ^2.0.0 + is-unicode-supported: ^2.1.0 + log-symbols: ^7.0.1 + stdin-discarder: ^0.2.2 + string-width: ^8.1.0 + strip-ansi: ^7.1.2 + checksum: 4efc9c3caa45b552bae4c9755c586eb4f39b824e456d77ec380539529439ca95f3acf9626119131f1ca76618c176088996023e257f5b82e1b86a509990f4545a + languageName: node + linkType: hard + "ordered-binary@npm:^1.5.3": version: 1.5.3 resolution: "ordered-binary@npm:1.5.3" @@ -15995,13 +15973,6 @@ __metadata: languageName: node linkType: hard -"os-tmpdir@npm:~1.0.2": - version: 1.0.2 - resolution: "os-tmpdir@npm:1.0.2" - checksum: 5666560f7b9f10182548bf7013883265be33620b1c1b4a4d405c25be2636f970c5488ff3e6c48de75b55d02bde037249fe5dbfbb4c0fb7714953d56aed062e6d - languageName: node - linkType: hard - "ospath@npm:^1.2.2": version: 1.2.2 resolution: "ospath@npm:1.2.2" @@ -16043,15 +16014,6 @@ __metadata: languageName: node linkType: hard -"p-limit@npm:^4.0.0": - version: 4.0.0 - resolution: "p-limit@npm:4.0.0" - dependencies: - yocto-queue: ^1.0.0 - checksum: 01d9d70695187788f984226e16c903475ec6a947ee7b21948d6f597bed788e3112cc7ec2e171c1d37125057a5f45f3da21d8653e04a3a793589e12e9e80e756b - languageName: node - linkType: hard - "p-locate@npm:^2.0.0": version: 2.0.0 resolution: "p-locate@npm:2.0.0" @@ -16079,15 +16041,6 @@ __metadata: languageName: node linkType: hard -"p-locate@npm:^6.0.0": - version: 6.0.0 - resolution: "p-locate@npm:6.0.0" - dependencies: - p-limit: ^4.0.0 - checksum: 2bfe5234efa5e7a4e74b30a5479a193fdd9236f8f6b4d2f3f69e3d286d9a7d7ab0c118a2a50142efcf4e41625def635bd9332d6cbf9cc65d85eb0718c579ab38 - languageName: node - linkType: hard - "p-map-series@npm:2.1.0": version: 2.1.0 resolution: "p-map-series@npm:2.1.0" @@ -16192,38 +16145,38 @@ __metadata: languageName: node linkType: hard -"pacote@npm:20.0.0": - version: 20.0.0 - resolution: "pacote@npm:20.0.0" +"pacote@npm:21.0.1": + version: 21.0.1 + resolution: "pacote@npm:21.0.1" dependencies: "@npmcli/git": ^6.0.0 "@npmcli/installed-package-contents": ^3.0.0 - "@npmcli/package-json": ^6.0.0 + "@npmcli/package-json": ^7.0.0 "@npmcli/promise-spawn": ^8.0.0 - "@npmcli/run-script": ^9.0.0 - cacache: ^19.0.0 + "@npmcli/run-script": ^10.0.0 + cacache: ^20.0.0 fs-minipass: ^3.0.0 minipass: ^7.0.2 - npm-package-arg: ^12.0.0 - npm-packlist: ^9.0.0 + npm-package-arg: ^13.0.0 + npm-packlist: ^10.0.1 npm-pick-manifest: ^10.0.0 - npm-registry-fetch: ^18.0.0 + npm-registry-fetch: ^19.0.0 proc-log: ^5.0.0 promise-retry: ^2.0.1 - sigstore: ^3.0.0 + sigstore: ^4.0.0 ssri: ^12.0.0 - tar: ^6.1.11 + tar: ^7.4.3 bin: pacote: bin/index.js - checksum: 6fc395b579799da4bafa1d1b309df03a0b2540dfb29c312ee17e60afdec872d4da11398fc2be081184c0b73def935bb5ebf57b193623926ec2e502e4b98fe6ea + checksum: fc153c75a9b737d2f314e4735748f3b160050aa7e11b398965a73d03f5785901abccedc83fa41463193dfadc06ec400ae5b2696afcb96b5ac9056b03ad52420c languageName: node linkType: hard -"pacote@npm:21.0.1": - version: 21.0.1 - resolution: "pacote@npm:21.0.1" +"pacote@npm:21.0.3": + version: 21.0.3 + resolution: "pacote@npm:21.0.3" dependencies: - "@npmcli/git": ^6.0.0 + "@npmcli/git": ^7.0.0 "@npmcli/installed-package-contents": ^3.0.0 "@npmcli/package-json": ^7.0.0 "@npmcli/promise-spawn": ^8.0.0 @@ -16233,7 +16186,7 @@ __metadata: minipass: ^7.0.2 npm-package-arg: ^13.0.0 npm-packlist: ^10.0.1 - npm-pick-manifest: ^10.0.0 + npm-pick-manifest: ^11.0.1 npm-registry-fetch: ^19.0.0 proc-log: ^5.0.0 promise-retry: ^2.0.1 @@ -16242,7 +16195,7 @@ __metadata: tar: ^7.4.3 bin: pacote: bin/index.js - checksum: fc153c75a9b737d2f314e4735748f3b160050aa7e11b398965a73d03f5785901abccedc83fa41463193dfadc06ec400ae5b2696afcb96b5ac9056b03ad52420c + checksum: 44a82906e480ee5b6e69c4d9c6bbdc0b6bc025f3c6f44f6aece06140d8aae073a601de3ea9eba50b1ac31d9793f78598e1972dc23fff03c9dbc99adfc26cc6dc languageName: node linkType: hard @@ -16354,14 +16307,25 @@ __metadata: languageName: node linkType: hard -"parse5-html-rewriting-stream@npm:7.0.0": - version: 7.0.0 - resolution: "parse5-html-rewriting-stream@npm:7.0.0" +"parse5-html-rewriting-stream@npm:7.1.0": + version: 7.1.0 + resolution: "parse5-html-rewriting-stream@npm:7.1.0" dependencies: - entities: ^4.3.0 + entities: ^6.0.0 parse5: ^7.0.0 parse5-sax-parser: ^7.0.0 - checksum: 5903351fbf481342a07db3664ce38e9100a22fba0c93050562ef09971fe9665ef0b0650ba934468330e1bb90d3df6a29b2b14e70052bee7815d089c57c349baa + checksum: 31ae0eaeb6cd1d5ea83d0bdd0ee9870a9694f9a21872331867d1ae2a3d25d4f20dd5d9c4f787750464a1595e44b9547f871744db12d0ee8d8efc0688a37d5b02 + languageName: node + linkType: hard + +"parse5-html-rewriting-stream@npm:8.0.0": + version: 8.0.0 + resolution: "parse5-html-rewriting-stream@npm:8.0.0" + dependencies: + entities: ^6.0.0 + parse5: ^8.0.0 + parse5-sax-parser: ^8.0.0 + checksum: f15c33c599284c2743e5a48fbf56e96e3c2c8174ea1eac1bdaa733d8a64adf71da4ccc8e4a01ea6ae67bfd3a7195bb1a8a21e5573c7e733e94a1550811f8b6b8 languageName: node linkType: hard @@ -16393,6 +16357,15 @@ __metadata: languageName: node linkType: hard +"parse5-sax-parser@npm:^8.0.0": + version: 8.0.0 + resolution: "parse5-sax-parser@npm:8.0.0" + dependencies: + parse5: ^8.0.0 + checksum: 050593edc8f0241f0971d824dd80fbfff3c2f8d4981420fa688ee47fca79e6b73d8c6bfb85fa059ac27718662e87dcaffa538189f4319422e7fdd2dff40bc9a4 + languageName: node + linkType: hard + "parse5@npm:^7.0.0, parse5@npm:^7.1.1, parse5@npm:^7.1.2": version: 7.1.2 resolution: "parse5@npm:7.1.2" @@ -16411,7 +16384,16 @@ __metadata: languageName: node linkType: hard -"parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": +"parse5@npm:^8.0.0": + version: 8.0.0 + resolution: "parse5@npm:8.0.0" + dependencies: + entities: ^6.0.0 + checksum: 6f5844c71214f70b97e09573699693cfaa37cbb0ab3a41af4c0d295474a82c23cd48b2daaa2cefa5f5cdc7d0bfa6b1949300668155f54d389e51edec1dc6d27a + languageName: node + linkType: hard + +"parseurl@npm:^1.3.3, parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": version: 1.3.3 resolution: "parseurl@npm:1.3.3" checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 @@ -16439,13 +16421,6 @@ __metadata: languageName: node linkType: hard -"path-exists@npm:^5.0.0": - version: 5.0.0 - resolution: "path-exists@npm:5.0.0" - checksum: 8ca842868cab09423994596eb2c5ec2a971c17d1a3cb36dbf060592c730c725cd524b9067d7d2a1e031fef9ba7bd2ac6dc5ec9fb92aa693265f7be3987045254 - languageName: node - linkType: hard - "path-is-absolute@npm:^1.0.0": version: 1.0.1 resolution: "path-is-absolute@npm:1.0.1" @@ -16487,6 +16462,13 @@ __metadata: languageName: node linkType: hard +"path-to-regexp@npm:^8.0.0": + version: 8.3.0 + resolution: "path-to-regexp@npm:8.3.0" + checksum: 73e0d3db449f9899692b10be8480bbcfa294fd575be2d09bce3e63f2f708d1fccd3aaa8591709f8b82062c528df116e118ff9df8f5c52ccc4c2443a90be73e10 + languageName: node + linkType: hard + "path-to-regexp@npm:~0.1.12": version: 0.1.12 resolution: "path-to-regexp@npm:0.1.12" @@ -16503,13 +16485,6 @@ __metadata: languageName: node linkType: hard -"path-type@npm:^5.0.0": - version: 5.0.0 - resolution: "path-type@npm:5.0.0" - checksum: 15ec24050e8932c2c98d085b72cfa0d6b4eeb4cbde151a0a05726d8afae85784fc5544f733d8dfc68536587d5143d29c0bd793623fad03d7e61cc00067291cd5 - languageName: node - linkType: hard - "pause-stream@npm:^0.0.11": version: 0.0.11 resolution: "pause-stream@npm:0.0.11" @@ -16566,29 +16541,28 @@ __metadata: version: 0.0.0-use.local resolution: "phoenix-ng@workspace:packages/phoenix-ng" dependencies: - "@angular-devkit/build-angular": ^19.2.19 - "@angular/animations": ^19.2.17 - "@angular/cdk": ^19.2.19 - "@angular/cli": ~19.2.19 - "@angular/common": ^19.2.17 - "@angular/compiler": ^19.2.17 - "@angular/compiler-cli": ~19.2.17 - "@angular/core": ^19.2.17 - "@angular/forms": ^19.2.17 - "@angular/language-service": ^19.2.17 - "@angular/material": ^19.2.19 - "@angular/platform-browser": ^19.2.17 - "@angular/platform-browser-dynamic": ^19.2.17 - "@angular/router": ^19.2.17 - "@frsource/cypress-plugin-visual-regression-diff": ^3.3.10 + "@angular-devkit/build-angular": ~20.0.0 + "@angular/animations": ~20.0.0 + "@angular/cdk": ~20.0.0 + "@angular/cli": ^21.0.3 + "@angular/common": ~20.0.0 + "@angular/compiler": ~20.0.0 + "@angular/compiler-cli": ~20.0.0 + "@angular/core": ~20.0.0 + "@angular/forms": ~20.0.0 + "@angular/language-service": ~20.0.0 + "@angular/material": ~20.0.0 + "@angular/platform-browser": ~20.0.0 + "@angular/platform-browser-dynamic": ~20.0.0 + "@angular/router": ~20.0.0 "@types/qrcode": ^1.5.6 - concurrently: ^9.2.1 + concurrently: ^8.2.2 css-element-queries: ^1.2.3 - cypress: ^15.7.1 + cypress: ^13.17.0 jest: ^29.7.0 - jest-preset-angular: ^14.6.2 + jest-preset-angular: ^14.3.2 jszip: ^3.10.1 - ng-packagr: ^19.2.2 + ng-packagr: ~20.0.0 phoenix-event-display: ^3.0.5 phoenix-ui-components: ^3.0.4 qrcode: 1.5.4 @@ -16597,7 +16571,7 @@ __metadata: ts-jest: ^29.3.4 tslib: ^2.8.1 typescript: ~5.5.4 - zone.js: ^0.16.0 + zone.js: ~0.15.0 peerDependencies: jspdf: "*" languageName: unknown @@ -16708,42 +16682,38 @@ __metadata: languageName: node linkType: hard -"piscina@npm:4.8.0": - version: 4.8.0 - resolution: "piscina@npm:4.8.0" +"piscina@npm:5.1.1": + version: 5.1.1 + resolution: "piscina@npm:5.1.1" dependencies: "@napi-rs/nice": ^1.0.1 dependenciesMeta: "@napi-rs/nice": optional: true - checksum: 00b6227bd471a74271b3a23280d55934f0b7abc036510d58f457ea0c644e263bcec939f1f4ef8ca03d6552c1af4bd4d30e6f9f47f57801ede9f0db04bbe4de40 + checksum: 9198521535cc475bd147314c18ee9477cb49f8c5a8a56b9b487f846ff228e93b443da1d7b8a517b2556c65729a2299b0a9bddfca3b44179402c217612f489aa3 languageName: node linkType: hard -"piscina@npm:^4.7.0": - version: 4.9.2 - resolution: "piscina@npm:4.9.2" +"piscina@npm:^5.0.0": + version: 5.1.4 + resolution: "piscina@npm:5.1.4" dependencies: - "@napi-rs/nice": ^1.0.1 + "@napi-rs/nice": ^1.0.4 dependenciesMeta: "@napi-rs/nice": optional: true - checksum: cb2d8b4bda70623516ff120bdd58ab4a684a051df477a9fd28e302a4bbd5487b085700f844bb4ada265f226abaac2ef4db79f6854721d4decdacfba9318bda92 + checksum: 8a058d89e2ac52a8d91d6352b981db265af392083a0cfd52ed6743f4a0a8f8a82fb3d613114f52faa24ceb2b79fd2ce198b211062c29d3a206ec48ef73dbacfd languageName: node linkType: hard -"pixelmatch@npm:5.3.0": - version: 5.3.0 - resolution: "pixelmatch@npm:5.3.0" - dependencies: - pngjs: ^6.0.0 - bin: - pixelmatch: bin/pixelmatch - checksum: f542713d89536551181ad9ddb666a1792ba00a8632d831093232a075cb3ccac05856e7a453ed7d0a41aaef64dcb5962e8ae5cbe646dd2761790d8ee51b0a0743 +"pkce-challenge@npm:^5.0.0": + version: 5.0.1 + resolution: "pkce-challenge@npm:5.0.1" + checksum: 6079ee7520592f827cb78c397a1d2ff0a90a1952756b2efb893bf884524b7d2930dea82d92fec21bb3af99aba558d13553d9da87d5bd9f844b6c4cb3bc8f1ce0 languageName: node linkType: hard -"pkg-dir@npm:^4.1.0, pkg-dir@npm:^4.2.0": +"pkg-dir@npm:^4.2.0": version: 4.2.0 resolution: "pkg-dir@npm:4.2.0" dependencies: @@ -16752,33 +16722,19 @@ __metadata: languageName: node linkType: hard -"pkg-dir@npm:^7.0.0": - version: 7.0.0 - resolution: "pkg-dir@npm:7.0.0" +"pkg-dir@npm:^8.0.0": + version: 8.0.0 + resolution: "pkg-dir@npm:8.0.0" dependencies: - find-up: ^6.3.0 - checksum: 94298b20a446bfbbd66604474de8a0cdd3b8d251225170970f15d9646f633e056c80520dd5b4c1d1050c9fed8f6a9e5054b141c93806439452efe72e57562c03 - languageName: node - linkType: hard - -"pngjs@npm:7.0.0": - version: 7.0.0 - resolution: "pngjs@npm:7.0.0" - checksum: b19a018930d27de26229c1b3ff250b3a25d09caa22cbb0b0459987d91eb0a560a18ab5d67da45a38ed7514140f26d1db58de83c31159ec101f2bb270a3c707f1 + find-up-simple: ^1.0.0 + checksum: e589abebd1b76cbc3669a45df64f63cc1b041fd3a6588b45d4c692207df126f2a67478a804e5beeb729e75efea06cd405fb84445c879e7af346ba46a4a30b1ff languageName: node linkType: hard "pngjs@npm:^5.0.0": - version: 5.0.0 - resolution: "pngjs@npm:5.0.0" - checksum: 04e912cc45fb9601564e2284efaf0c5d20d131d9b596244f8a6789fc6cdb6b18d2975a6bbf7a001858d7e159d5c5c5dd7b11592e97629b7137f7f5cef05904c8 - languageName: node - linkType: hard - -"pngjs@npm:^6.0.0": - version: 6.0.0 - resolution: "pngjs@npm:6.0.0" - checksum: ab6c285086060087097eab9fe6b5a528a24f9e79c03dea2b4fd6264ed4fdb5beff4a3257eeeaf2a9dc18249b539609c2a4e4013c567164a1f6b5ba2c974d5ecb + version: 5.0.0 + resolution: "pngjs@npm:5.0.0" + checksum: 04e912cc45fb9601564e2284efaf0c5d20d131d9b596244f8a6789fc6cdb6b18d2975a6bbf7a001858d7e159d5c5c5dd7b11592e97629b7137f7f5cef05904c8 languageName: node linkType: hard @@ -16890,14 +16846,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:8.5.2": - version: 8.5.2 - resolution: "postcss@npm:8.5.2" +"postcss@npm:8.5.3, postcss@npm:^8.4.47, postcss@npm:^8.4.49, postcss@npm:^8.5.3": + version: 8.5.3 + resolution: "postcss@npm:8.5.3" dependencies: nanoid: ^3.3.8 picocolors: ^1.1.1 source-map-js: ^1.2.1 - checksum: 5097c458ce792d38bb93cb245f8603804b48087540b9d0e42d612f6d0bd7add4b47848cb9bc2a5ee388f70e45a1546fa7471b84697ab95aa8206aa3989fea611 + checksum: da574620eb84ff60e65e1d8fc6bd5ad87a19101a23d0aba113c653434161543918229a0f673d89efb3b6d4906287eb04b957310dbcf4cbebacad9d1312711461 languageName: node linkType: hard @@ -16912,18 +16868,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.4.47, postcss@npm:^8.4.49, postcss@npm:^8.5.3": - version: 8.5.3 - resolution: "postcss@npm:8.5.3" - dependencies: - nanoid: ^3.3.8 - picocolors: ^1.1.1 - source-map-js: ^1.2.1 - checksum: da574620eb84ff60e65e1d8fc6bd5ad87a19101a23d0aba113c653434161543918229a0f673d89efb3b6d4906287eb04b957310dbcf4cbebacad9d1312711461 - languageName: node - linkType: hard - -"prebuild-install@npm:^7.1.1, prebuild-install@npm:^7.1.3": +"prebuild-install@npm:^7.1.3": version: 7.1.3 resolution: "prebuild-install@npm:7.1.3" dependencies: @@ -17098,7 +17043,7 @@ __metadata: languageName: node linkType: hard -"proxy-addr@npm:~2.0.7": +"proxy-addr@npm:^2.0.7, proxy-addr@npm:~2.0.7": version: 2.0.7 resolution: "proxy-addr@npm:2.0.7" dependencies: @@ -17235,7 +17180,7 @@ __metadata: languageName: node linkType: hard -"raw-body@npm:^3.0.1": +"raw-body@npm:^3.0.0, raw-body@npm:^3.0.1": version: 3.0.2 resolution: "raw-body@npm:3.0.2" dependencies: @@ -17612,16 +17557,16 @@ __metadata: languageName: node linkType: hard -"resolve@npm:1.22.10, resolve@npm:^1.22.10": - version: 1.22.10 - resolution: "resolve@npm:1.22.10" +"resolve@npm:1.22.11": + version: 1.22.11 + resolution: "resolve@npm:1.22.11" dependencies: - is-core-module: ^2.16.0 + is-core-module: ^2.16.1 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: ab7a32ff4046fcd7c6fdd525b24a7527847d03c3650c733b909b01b757f92eb23510afa9cc3e9bf3f26a3e073b48c88c706dfd4c1d2fb4a16a96b73b6328ddcf + checksum: 6d5baa2156b95a65ac431e7642e21106584e9f4194da50871cae8bc1bbd2b53bb7cee573c92543d83bb999620b224a087f62379d800ed1ccb189da6df5d78d50 languageName: node linkType: hard @@ -17638,16 +17583,29 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@1.22.10#~builtin, resolve@patch:resolve@^1.22.10#~builtin": +"resolve@npm:^1.22.10": version: 1.22.10 - resolution: "resolve@patch:resolve@npm%3A1.22.10#~builtin::version=1.22.10&hash=c3c19d" + resolution: "resolve@npm:1.22.10" dependencies: is-core-module: ^2.16.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: 8aac1e4e4628bd00bf4b94b23de137dd3fe44097a8d528fd66db74484be929936e20c696e1a3edf4488f37e14180b73df6f600992baea3e089e8674291f16c9d + checksum: ab7a32ff4046fcd7c6fdd525b24a7527847d03c3650c733b909b01b757f92eb23510afa9cc3e9bf3f26a3e073b48c88c706dfd4c1d2fb4a16a96b73b6328ddcf + languageName: node + linkType: hard + +"resolve@patch:resolve@1.22.11#~builtin": + version: 1.22.11 + resolution: "resolve@patch:resolve@npm%3A1.22.11#~builtin::version=1.22.11&hash=c3c19d" + dependencies: + is-core-module: ^2.16.1 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: 1462da84ac3410d7c2e12e4f5f25c1423d8a174c3b4245c43eafea85e7bbe6af3eb7ec10a4850b5e518e8531608604742b8cbd761e1acd7ad1035108b7c98013 languageName: node linkType: hard @@ -17664,6 +17622,19 @@ __metadata: languageName: node linkType: hard +"resolve@patch:resolve@^1.22.10#~builtin": + version: 1.22.10 + resolution: "resolve@patch:resolve@npm%3A1.22.10#~builtin::version=1.22.10&hash=c3c19d" + dependencies: + is-core-module: ^2.16.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: 8aac1e4e4628bd00bf4b94b23de137dd3fe44097a8d528fd66db74484be929936e20c696e1a3edf4488f37e14180b73df6f600992baea3e089e8674291f16c9d + languageName: node + linkType: hard + "restore-cursor@npm:^3.1.0": version: 3.1.0 resolution: "restore-cursor@npm:3.1.0" @@ -17742,79 +17713,23 @@ __metadata: languageName: node linkType: hard -"rollup@npm:4.34.8": - version: 4.34.8 - resolution: "rollup@npm:4.34.8" - dependencies: - "@rollup/rollup-android-arm-eabi": 4.34.8 - "@rollup/rollup-android-arm64": 4.34.8 - "@rollup/rollup-darwin-arm64": 4.34.8 - "@rollup/rollup-darwin-x64": 4.34.8 - "@rollup/rollup-freebsd-arm64": 4.34.8 - "@rollup/rollup-freebsd-x64": 4.34.8 - "@rollup/rollup-linux-arm-gnueabihf": 4.34.8 - "@rollup/rollup-linux-arm-musleabihf": 4.34.8 - "@rollup/rollup-linux-arm64-gnu": 4.34.8 - "@rollup/rollup-linux-arm64-musl": 4.34.8 - "@rollup/rollup-linux-loongarch64-gnu": 4.34.8 - "@rollup/rollup-linux-powerpc64le-gnu": 4.34.8 - "@rollup/rollup-linux-riscv64-gnu": 4.34.8 - "@rollup/rollup-linux-s390x-gnu": 4.34.8 - "@rollup/rollup-linux-x64-gnu": 4.34.8 - "@rollup/rollup-linux-x64-musl": 4.34.8 - "@rollup/rollup-win32-arm64-msvc": 4.34.8 - "@rollup/rollup-win32-ia32-msvc": 4.34.8 - "@rollup/rollup-win32-x64-msvc": 4.34.8 - "@types/estree": 1.0.6 - fsevents: ~2.3.2 +"rollup-plugin-dts@npm:^6.2.0": + version: 6.3.0 + resolution: "rollup-plugin-dts@npm:6.3.0" + dependencies: + "@babel/code-frame": ^7.27.1 + magic-string: ^0.30.21 + peerDependencies: + rollup: ^3.29.4 || ^4 + typescript: ^4.5 || ^5.0 dependenciesMeta: - "@rollup/rollup-android-arm-eabi": - optional: true - "@rollup/rollup-android-arm64": - optional: true - "@rollup/rollup-darwin-arm64": - optional: true - "@rollup/rollup-darwin-x64": - optional: true - "@rollup/rollup-freebsd-arm64": - optional: true - "@rollup/rollup-freebsd-x64": - optional: true - "@rollup/rollup-linux-arm-gnueabihf": - optional: true - "@rollup/rollup-linux-arm-musleabihf": + "@babel/code-frame": optional: true - "@rollup/rollup-linux-arm64-gnu": - optional: true - "@rollup/rollup-linux-arm64-musl": - optional: true - "@rollup/rollup-linux-loongarch64-gnu": - optional: true - "@rollup/rollup-linux-powerpc64le-gnu": - optional: true - "@rollup/rollup-linux-riscv64-gnu": - optional: true - "@rollup/rollup-linux-s390x-gnu": - optional: true - "@rollup/rollup-linux-x64-gnu": - optional: true - "@rollup/rollup-linux-x64-musl": - optional: true - "@rollup/rollup-win32-arm64-msvc": - optional: true - "@rollup/rollup-win32-ia32-msvc": - optional: true - "@rollup/rollup-win32-x64-msvc": - optional: true - fsevents: - optional: true - bin: - rollup: dist/bin/rollup - checksum: 8c4abc97c16d4e80e4d803544ad004ba00f769aee460ff04200716f526fdcc3dd7ef6b71ae36aa5779bed410ef7244e15ffa0e3370711065dd15e2bd27d0cef5 + checksum: 6515b3c060970dad79ce3180ea72ead1d901e05a41a863d088a4f451f77a2f89db05f75a78678e7ff49bb9e49996118bead36e0527366fefbfd34d1e28551962 languageName: node linkType: hard -"rollup@npm:^4.24.0": +"rollup@npm:4.40.2, rollup@npm:^4.24.0": version: 4.40.2 resolution: "rollup@npm:4.40.2" dependencies: @@ -17999,6 +17914,19 @@ __metadata: languageName: unknown linkType: soft +"router@npm:^2.2.0": + version: 2.2.0 + resolution: "router@npm:2.2.0" + dependencies: + debug: ^4.4.0 + depd: ^2.0.0 + is-promise: ^4.0.0 + parseurl: ^1.3.3 + path-to-regexp: ^8.0.0 + checksum: 4c3bec8011ed10bb07d1ee860bc715f245fff0fdff991d8319741d2932d89c3fe0a56766b4fa78e95444bc323fd2538e09c8e43bfbd442c2a7fab67456df7fa5 + languageName: node + linkType: hard + "rrweb-cssom@npm:^0.8.0": version: 0.8.0 resolution: "rrweb-cssom@npm:0.8.0" @@ -18029,21 +17957,21 @@ __metadata: languageName: node linkType: hard -"rxjs@npm:7.8.1, rxjs@npm:^7.5.1, rxjs@npm:^7.8.1": - version: 7.8.1 - resolution: "rxjs@npm:7.8.1" +"rxjs@npm:7.8.2, rxjs@npm:^7.8.2": + version: 7.8.2 + resolution: "rxjs@npm:7.8.2" dependencies: tslib: ^2.1.0 - checksum: de4b53db1063e618ec2eca0f7965d9137cabe98cf6be9272efe6c86b47c17b987383df8574861bcced18ebd590764125a901d5506082be84a8b8e364bf05f119 + checksum: 2f233d7c832a6c255dabe0759014d7d9b1c9f1cb2f2f0d59690fd11c883c9826ea35a51740c06ab45b6ade0d9087bde9192f165cba20b6730d344b831ef80744 languageName: node linkType: hard -"rxjs@npm:7.8.2, rxjs@npm:^7.8.2": - version: 7.8.2 - resolution: "rxjs@npm:7.8.2" +"rxjs@npm:^7.5.1, rxjs@npm:^7.8.1": + version: 7.8.1 + resolution: "rxjs@npm:7.8.1" dependencies: tslib: ^2.1.0 - checksum: 2f233d7c832a6c255dabe0759014d7d9b1c9f1cb2f2f0d59690fd11c883c9826ea35a51740c06ab45b6ade0d9087bde9192f165cba20b6730d344b831ef80744 + checksum: de4b53db1063e618ec2eca0f7965d9137cabe98cf6be9272efe6c86b47c17b987383df8574861bcced18ebd590764125a901d5506082be84a8b8e364bf05f119 languageName: node linkType: hard @@ -18094,9 +18022,9 @@ __metadata: languageName: node linkType: hard -"sass@npm:1.85.0": - version: 1.85.0 - resolution: "sass@npm:1.85.0" +"sass@npm:1.88.0": + version: 1.88.0 + resolution: "sass@npm:1.88.0" dependencies: "@parcel/watcher": ^2.4.1 chokidar: ^4.0.0 @@ -18107,7 +18035,7 @@ __metadata: optional: true bin: sass: sass.js - checksum: 53c70831d1235f9ee40489a8bdde9b3304ba350df78417c4edaa8a8ac79426208054a69ac9b6d53c4dc5837362e552a92e3bcaa975a1a3e8975c0af9fbccfe1c + checksum: 290a2797d2f6c0b9e9a4aeeb59abe3fdb68ffc9e1e154d5aafb363d5c897118ec50726812f63f4d8526a5b22a2d5b08001929acefb5120f05a0c16d8013d5ff8 languageName: node linkType: hard @@ -18168,7 +18096,7 @@ __metadata: languageName: node linkType: hard -"schema-utils@npm:^4.3.3": +"schema-utils@npm:^4.3.2, schema-utils@npm:^4.3.3": version: 4.3.3 resolution: "schema-utils@npm:4.3.3" dependencies: @@ -18206,25 +18134,25 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.7.1": - version: 7.7.1 - resolution: "semver@npm:7.7.1" +"semver@npm:7.7.2, semver@npm:^7.7.2": + version: 7.7.2 + resolution: "semver@npm:7.7.2" bin: semver: bin/semver.js - checksum: 586b825d36874007c9382d9e1ad8f93888d8670040add24a28e06a910aeebd673a2eb9e3bf169c6679d9245e66efb9057e0852e70d9daa6c27372aab1dda7104 + checksum: dd94ba8f1cbc903d8eeb4dd8bf19f46b3deb14262b6717d0de3c804b594058ae785ef2e4b46c5c3b58733c99c83339068203002f9e37cfe44f7e2cc5e3d2f621 languageName: node linkType: hard -"semver@npm:7.7.2, semver@npm:^7.7.2": - version: 7.7.2 - resolution: "semver@npm:7.7.2" +"semver@npm:7.7.3, semver@npm:^7.6.3, semver@npm:^7.7.1, semver@npm:^7.7.3": + version: 7.7.3 + resolution: "semver@npm:7.7.3" bin: semver: bin/semver.js - checksum: dd94ba8f1cbc903d8eeb4dd8bf19f46b3deb14262b6717d0de3c804b594058ae785ef2e4b46c5c3b58733c99c83339068203002f9e37cfe44f7e2cc5e3d2f621 + checksum: f013a3ee4607857bcd3503b6ac1d80165f7f8ea94f5d55e2d3e33df82fce487aa3313b987abf9b39e0793c83c9fc67b76c36c067625141a9f6f704ae0ea18db2 languageName: node linkType: hard -"semver@npm:^6.0.0, semver@npm:^6.3.0, semver@npm:^6.3.1": +"semver@npm:^6.3.0, semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" bin: @@ -18242,15 +18170,6 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.5.0, semver@npm:^7.6.3, semver@npm:^7.7.1, semver@npm:^7.7.3": - version: 7.7.3 - resolution: "semver@npm:7.7.3" - bin: - semver: bin/semver.js - checksum: f013a3ee4607857bcd3503b6ac1d80165f7f8ea94f5d55e2d3e33df82fce487aa3313b987abf9b39e0793c83c9fc67b76c36c067625141a9f6f704ae0ea18db2 - languageName: node - linkType: hard - "send@npm:0.19.0": version: 0.19.0 resolution: "send@npm:0.19.0" @@ -18272,6 +18191,25 @@ __metadata: languageName: node linkType: hard +"send@npm:^1.1.0, send@npm:^1.2.0": + version: 1.2.1 + resolution: "send@npm:1.2.1" + dependencies: + debug: ^4.4.3 + encodeurl: ^2.0.0 + escape-html: ^1.0.3 + etag: ^1.8.1 + fresh: ^2.0.0 + http-errors: ^2.0.1 + mime-types: ^3.0.2 + ms: ^2.1.3 + on-finished: ^2.4.1 + range-parser: ^1.2.1 + statuses: ^2.0.2 + checksum: 5361e3556fbc874c080a4cfbb4541e02c16221ca3c68c4f692320d38ef7e147381f805ce3ac50dfaa2129f07daa81098e2bc567e9a4d13993a92893d59a64d68 + languageName: node + linkType: hard + "send@npm:latest": version: 0.18.0 resolution: "send@npm:0.18.0" @@ -18338,6 +18276,18 @@ __metadata: languageName: node linkType: hard +"serve-static@npm:^2.2.0": + version: 2.2.1 + resolution: "serve-static@npm:2.2.1" + dependencies: + encodeurl: ^2.0.0 + escape-html: ^1.0.3 + parseurl: ^1.3.3 + send: ^1.2.0 + checksum: dd71e9a316a7d7f726503973c531168cfa6a6a56a98d5c6b279c4d0d41a83a1bc6900495dc0633712b95d88ccbf9ed4f4a780a4c4c00bf84b496e9e710d68825 + languageName: node + linkType: hard + "serve-static@npm:~1.16.2": version: 1.16.2 resolution: "serve-static@npm:1.16.2" @@ -18387,23 +18337,6 @@ __metadata: languageName: node linkType: hard -"sharp@npm:0.32.1": - version: 0.32.1 - resolution: "sharp@npm:0.32.1" - dependencies: - color: ^4.2.3 - detect-libc: ^2.0.1 - node-addon-api: ^6.1.0 - node-gyp: latest - prebuild-install: ^7.1.1 - semver: ^7.5.0 - simple-get: ^4.0.1 - tar-fs: ^2.1.1 - tunnel-agent: ^0.6.0 - checksum: 99f50df380442aa8f3f952dd6f2e27634f9cab249cce47aa7f1a97c468334979ea94d71555f782aae5f5016e44b7832799f1c5ea1cb3ca975c089acd00e62e2e - languageName: node - linkType: hard - "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -18420,13 +18353,6 @@ __metadata: languageName: node linkType: hard -"shell-quote@npm:1.8.3": - version: 1.8.3 - resolution: "shell-quote@npm:1.8.3" - checksum: 550dd84e677f8915eb013d43689c80bb114860649ec5298eb978f40b8f3d4bc4ccb072b82c094eb3548dc587144bb3965a8676f0d685c1cf4c40b5dc27166242 - languageName: node - linkType: hard - "shell-quote@npm:^1.8.1": version: 1.8.1 resolution: "shell-quote@npm:1.8.1" @@ -18496,20 +18422,6 @@ __metadata: languageName: node linkType: hard -"sigstore@npm:^3.0.0": - version: 3.1.0 - resolution: "sigstore@npm:3.1.0" - dependencies: - "@sigstore/bundle": ^3.1.0 - "@sigstore/core": ^2.0.0 - "@sigstore/protobuf-specs": ^0.4.0 - "@sigstore/sign": ^3.1.0 - "@sigstore/tuf": ^3.1.0 - "@sigstore/verify": ^2.1.0 - checksum: 52a1d88b0e48f4008ef8c7135cd9a6edbca3c0fcda0234a73a304eeff57ad6e37ff605cc0a21ad2cffd8bdb510742e556ba3ef04a60bd968f9821ec3ace00f93 - languageName: node - linkType: hard - "sigstore@npm:^4.0.0": version: 4.0.0 resolution: "sigstore@npm:4.0.0" @@ -18531,7 +18443,7 @@ __metadata: languageName: node linkType: hard -"simple-get@npm:^4.0.0, simple-get@npm:^4.0.1": +"simple-get@npm:^4.0.0": version: 4.0.1 resolution: "simple-get@npm:4.0.1" dependencies: @@ -18542,15 +18454,6 @@ __metadata: languageName: node linkType: hard -"simple-swizzle@npm:^0.2.2": - version: 0.2.4 - resolution: "simple-swizzle@npm:0.2.4" - dependencies: - is-arrayish: ^0.3.1 - checksum: 9a2f6f39a6b9fab68f96903523bf19953ec21e5e843108154cf47a9cc0f78955dd44f64499ffb71a849ac10c758d9fab7533627c7ca3ab40b5c177117acfdc1b - languageName: node - linkType: hard - "sirv@npm:^3.0.2": version: 3.0.2 resolution: "sirv@npm:3.0.2" @@ -18576,13 +18479,6 @@ __metadata: languageName: node linkType: hard -"slash@npm:^5.1.0": - version: 5.1.0 - resolution: "slash@npm:5.1.0" - checksum: 70434b34c50eb21b741d37d455110258c42d2cf18c01e6518aeb7299f3c6e626330c889c0c552b5ca2ef54a8f5a74213ab48895f0640717cacefeef6830a1ba4 - languageName: node - linkType: hard - "slice-ansi@npm:^3.0.0": version: 3.0.0 resolution: "slice-ansi@npm:3.0.0" @@ -18747,6 +18643,13 @@ __metadata: languageName: node linkType: hard +"spawn-command@npm:0.0.2": + version: 0.0.2 + resolution: "spawn-command@npm:0.0.2" + checksum: e35c5d28177b4d461d33c88cc11f6f3a5079e2b132c11e1746453bbb7a0c0b8a634f07541a2a234fa4758239d88203b758def509161b651e81958894c0b4b64b + languageName: node + linkType: hard + "spdx-correct@npm:^3.0.0": version: 3.2.0 resolution: "spdx-correct@npm:3.2.0" @@ -18934,7 +18837,7 @@ __metadata: languageName: node linkType: hard -"statuses@npm:~2.0.1, statuses@npm:~2.0.2": +"statuses@npm:^2.0.1, statuses@npm:^2.0.2, statuses@npm:~2.0.1, statuses@npm:~2.0.2": version: 2.0.2 resolution: "statuses@npm:2.0.2" checksum: 6927feb50c2a75b2a4caab2c565491f7a93ad3d8dbad7b1398d52359e9243a20e2ebe35e33726dee945125ef7a515e9097d8a1b910ba2bbd818265a2f6c39879 @@ -19008,7 +18911,7 @@ __metadata: languageName: node linkType: hard -"string-width@npm:^8.0.0": +"string-width@npm:^8.0.0, string-width@npm:^8.1.0": version: 8.1.0 resolution: "string-width@npm:8.1.0" dependencies: @@ -19054,6 +18957,15 @@ __metadata: languageName: node linkType: hard +"strip-ansi@npm:^7.1.2": + version: 7.1.2 + resolution: "strip-ansi@npm:7.1.2" + dependencies: + ansi-regex: ^6.0.1 + checksum: db0e3f9654e519c8a33c50fc9304d07df5649388e7da06d3aabf66d29e5ad65d5e6315d8519d409c15b32fa82c1df7e11ed6f8cd50b0e4404463f0c9d77c8d0b + languageName: node + linkType: hard + "strip-bom@npm:^3.0.0": version: 3.0.0 resolution: "strip-bom@npm:3.0.0" @@ -19098,15 +19010,6 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:8.1.1, supports-color@npm:^8.0.0, supports-color@npm:^8.1.1": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" - dependencies: - has-flag: ^4.0.0 - checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 - languageName: node - linkType: hard - "supports-color@npm:^5.3.0": version: 5.5.0 resolution: "supports-color@npm:5.5.0" @@ -19125,6 +19028,15 @@ __metadata: languageName: node linkType: hard +"supports-color@npm:^8.0.0, supports-color@npm:^8.1.1": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: ^4.0.0 + checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 + languageName: node + linkType: hard + "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" @@ -19167,13 +19079,6 @@ __metadata: languageName: node linkType: hard -"symbol-observable@npm:4.0.0": - version: 4.0.0 - resolution: "symbol-observable@npm:4.0.0" - checksum: 212c7edce6186634d671336a88c0e0bbd626c2ab51ed57498dc90698cce541839a261b969c2a1e8dd43762133d47672e8b62e0b1ce9cf4157934ba45fd172ba8 - languageName: node - linkType: hard - "symbol-tree@npm:^3.2.4": version: 3.2.4 resolution: "symbol-tree@npm:3.2.4" @@ -19190,16 +19095,6 @@ __metadata: languageName: node linkType: hard -"systeminformation@npm:5.27.7": - version: 5.27.7 - resolution: "systeminformation@npm:5.27.7" - bin: - systeminformation: lib/cli.js - checksum: 3d800de2e4ac9ab2c1f3f0a29901756c3ca08ed25f541b75452b545e6eb2c8c8ef4a82f8fbf0fe25c4b0865ef9bc7f8efd7ded813acc9f22c287d4daf6141a49 - conditions: (os=darwin | os=linux | os=win32 | os=freebsd | os=openbsd | os=netbsd | os=sunos | os=android) - languageName: node - linkType: hard - "tablesort@npm:^5.6.0": version: 5.6.0 resolution: "tablesort@npm:5.6.0" @@ -19221,7 +19116,7 @@ __metadata: languageName: node linkType: hard -"tar-fs@npm:^2.0.0, tar-fs@npm:^2.1.1": +"tar-fs@npm:^2.0.0": version: 2.1.4 resolution: "tar-fs@npm:2.1.4" dependencies: @@ -19316,7 +19211,21 @@ __metadata: languageName: node linkType: hard -"terser@npm:5.39.0, terser@npm:^5.31.1": +"terser@npm:5.39.1": + version: 5.39.1 + resolution: "terser@npm:5.39.1" + dependencies: + "@jridgewell/source-map": ^0.3.3 + acorn: ^8.8.2 + commander: ^2.20.0 + source-map-support: ~0.5.20 + bin: + terser: bin/terser + checksum: e5b67c6e09631573ae2fd1601823c7338ab49d52e245f5e6564a26e1b81193a115e1847a53f0c690b33942029c628ccf4c8039bbfadbaa0b4ec1630f44a1b5d3 + languageName: node + linkType: hard + +"terser@npm:^5.31.1": version: 5.39.0 resolution: "terser@npm:5.39.0" dependencies: @@ -19421,7 +19330,7 @@ __metadata: languageName: node linkType: hard -"tinyglobby@npm:^0.2.12": +"tinyglobby@npm:0.2.13, tinyglobby@npm:^0.2.12": version: 0.2.13 resolution: "tinyglobby@npm:0.2.13" dependencies: @@ -19459,15 +19368,6 @@ __metadata: languageName: node linkType: hard -"tmp@npm:^0.0.33": - version: 0.0.33 - resolution: "tmp@npm:0.0.33" - dependencies: - os-tmpdir: ~1.0.2 - checksum: 902d7aceb74453ea02abbf58c203f4a8fc1cead89b60b31e354f74ed5b3fb09ea817f94fb310f884a5d16987dd9fa5a735412a7c2dd088dd3d415aa819ae3a28 - languageName: node - linkType: hard - "tmp@npm:^0.2.3, tmp@npm:~0.2.1": version: 0.2.3 resolution: "tmp@npm:0.2.3" @@ -19475,7 +19375,7 @@ __metadata: languageName: node linkType: hard -"tmp@npm:~0.2.4": +"tmp@npm:~0.2.3": version: 0.2.5 resolution: "tmp@npm:0.2.5" checksum: 9d18e58060114154939930457b9e198b34f9495bcc05a343bc0a0a29aa546d2c1c2b343dae05b87b17c8fde0af93ab7d8fe8574a8f6dc2cd8fd3f2ca1ad0d8e1 @@ -19785,17 +19685,6 @@ __metadata: languageName: node linkType: hard -"tuf-js@npm:^3.0.1": - version: 3.0.1 - resolution: "tuf-js@npm:3.0.1" - dependencies: - "@tufjs/models": 3.0.1 - debug: ^4.3.6 - make-fetch-happen: ^14.0.1 - checksum: 5f7618c84ec60495b8bb2be7ae01811311c7fab591a373b6e45fc94d01b8a9e4de5c5c52125241edd4ecd9e1c0e5caddedb93a465690d3add0f7c40b2a10abbe - languageName: node - linkType: hard - "tuf-js@npm:^4.0.0": version: 4.0.0 resolution: "tuf-js@npm:4.0.0" @@ -19867,7 +19756,7 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.8.0, type-fest@npm:^0.8.1": +"type-fest@npm:^0.8.1": version: 0.8.1 resolution: "type-fest@npm:0.8.1" checksum: d61c4b2eba24009033ae4500d7d818a94fd6d1b481a8111612ee141400d5f1db46f199c014766b9fa9b31a6a7374d96fc748c6d688a78a3ce5a33123839becb7 @@ -19997,13 +19886,6 @@ __metadata: languageName: node linkType: hard -"unicorn-magic@npm:^0.1.0": - version: 0.1.0 - resolution: "unicorn-magic@npm:0.1.0" - checksum: 48c5882ca3378f380318c0b4eb1d73b7e3c5b728859b060276e0a490051d4180966beeb48962d850fd0c6816543bcdfc28629dcd030bb62a286a2ae2acb5acb6 - languageName: node - linkType: hard - "unique-filename@npm:^3.0.0": version: 3.0.0 resolution: "unique-filename@npm:3.0.0" @@ -20272,7 +20154,7 @@ __metadata: languageName: node linkType: hard -"vary@npm:^1, vary@npm:~1.1.2": +"vary@npm:^1, vary@npm:^1.1.2, vary@npm:~1.1.2": version: 1.1.2 resolution: "vary@npm:1.1.2" checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b @@ -20304,9 +20186,9 @@ __metadata: languageName: node linkType: hard -"vite@npm:6.4.1": - version: 6.4.1 - resolution: "vite@npm:6.4.1" +"vite@npm:6.3.5": + version: 6.3.5 + resolution: "vite@npm:6.3.5" dependencies: esbuild: ^0.25.0 fdir: ^6.4.4 @@ -20355,7 +20237,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 7a939dbd6569ba829a7c21a18f8eca395a3a13cb93ce0fec02e8aa462e127a8daac81d00f684086648d905786056bba1ad931f51d88f06835d3b972bc9fbddda + checksum: b7f1ebaae483090441f17ca09ea2c9b803688d2a2ed9860fbd8b72271918776ea3ceca643e807a5ee00628d65b79656d32529a4b8dd388aa33e41bc3f38732d0 languageName: node linkType: hard @@ -20501,9 +20383,9 @@ __metadata: languageName: node linkType: hard -"webpack-dev-server@npm:5.2.2": - version: 5.2.2 - resolution: "webpack-dev-server@npm:5.2.2" +"webpack-dev-server@npm:5.2.1": + version: 5.2.1 + resolution: "webpack-dev-server@npm:5.2.1" dependencies: "@types/bonjour": ^3.5.13 "@types/connect-history-api-fallback": ^1.5.4 @@ -20521,7 +20403,7 @@ __metadata: connect-history-api-fallback: ^2.0.0 express: ^4.21.2 graceful-fs: ^4.2.6 - http-proxy-middleware: ^2.0.9 + http-proxy-middleware: ^2.0.7 ipaddr.js: ^2.1.0 launch-editor: ^2.6.1 open: ^10.0.3 @@ -20542,7 +20424,7 @@ __metadata: optional: true bin: webpack-dev-server: bin/webpack-dev-server.js - checksum: 96994d684563cfee76dcb031c7c18a1fa10aee2df0520a0f327c8d72d4692c0dcdd7e455adeed4f8da9695f2e9f8f5481053c7e6e27d7e35085e45357fc9f697 + checksum: cb96b182970dad1ea67ccca7b1c7a207ee0815c3b65218b08a8fad07df6a1854a2fed3588b17b06a99f28c999f4f391d551a42058cf02425ff7d0d21bfd2d27f languageName: node linkType: hard @@ -20596,12 +20478,13 @@ __metadata: languageName: node linkType: hard -"webpack@npm:5.98.0": - version: 5.98.0 - resolution: "webpack@npm:5.98.0" +"webpack@npm:5.99.8": + version: 5.99.8 + resolution: "webpack@npm:5.99.8" dependencies: "@types/eslint-scope": ^3.7.7 "@types/estree": ^1.0.6 + "@types/json-schema": ^7.0.15 "@webassemblyjs/ast": ^1.14.1 "@webassemblyjs/wasm-edit": ^1.14.1 "@webassemblyjs/wasm-parser": ^1.14.1 @@ -20618,7 +20501,7 @@ __metadata: loader-runner: ^4.2.0 mime-types: ^2.1.27 neo-async: ^2.6.2 - schema-utils: ^4.3.0 + schema-utils: ^4.3.2 tapable: ^2.1.1 terser-webpack-plugin: ^5.3.11 watchpack: ^2.4.1 @@ -20628,7 +20511,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 0de353c694bc4d5af810e4f4d4fd356271b21b2253583a9f618416b5fcbaf8db5a5487c12cc1379778d2a07d56382293334153af6e2ce59ded59488f08015fd1 + checksum: 40388883f17bb8c68fe0cc10cf158c350a90e52495c9ae465002b83a5eb0106079f42544bd7b177fb2a79fd9cd9c63f4a5a72c71474411bdccec3cfb53a597a5 languageName: node linkType: hard @@ -21075,7 +20958,14 @@ __metadata: languageName: node linkType: hard -"yargs@npm:17.7.2, yargs@npm:^17.2.1, yargs@npm:^17.3.1, yargs@npm:^17.6.2": +"yargs-parser@npm:^22.0.0": + version: 22.0.0 + resolution: "yargs-parser@npm:22.0.0" + checksum: 55df0d94f3f9f933f1349f244ddf72a6978a9d5a972b69332965cdfd5ec849ff26386965512f4179065b0573cc6e8df33ca44334958a892c47fedae08a967c99 + languageName: node + linkType: hard + +"yargs@npm:17.7.2, yargs@npm:^17.3.1, yargs@npm:^17.6.2, yargs@npm:^17.7.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: @@ -21090,6 +20980,20 @@ __metadata: languageName: node linkType: hard +"yargs@npm:18.0.0, yargs@npm:^18.0.0": + version: 18.0.0 + resolution: "yargs@npm:18.0.0" + dependencies: + cliui: ^9.0.1 + escalade: ^3.1.1 + get-caller-file: ^2.0.5 + string-width: ^7.2.0 + y18n: ^5.0.5 + yargs-parser: ^22.0.0 + checksum: a7cf1b97cb4e81c059f78fd32a4160505d421ecdce5409f5e3840fdcc4c982885fc645b44af961eab94d673cb46f81207d831aa87862246907ffacf45884976a + languageName: node + linkType: hard + "yargs@npm:^15.3.1": version: 15.4.1 resolution: "yargs@npm:15.4.1" @@ -21148,30 +21052,46 @@ __metadata: languageName: node linkType: hard -"yocto-queue@npm:^1.0.0": - version: 1.1.1 - resolution: "yocto-queue@npm:1.1.1" - checksum: f2e05b767ed3141e6372a80af9caa4715d60969227f38b1a4370d60bffe153c9c5b33a862905609afc9b375ec57cd40999810d20e5e10229a204e8bde7ef255c +"yoctocolors-cjs@npm:^2.1.3": + version: 2.1.3 + resolution: "yoctocolors-cjs@npm:2.1.3" + checksum: 207df586996c3b604fa85903f81cc54676f1f372613a0c7247f0d24b1ca781905685075d06955211c4d5d4f629d7d5628464f8af0a42d286b7a8ff88e9dadcb8 languageName: node linkType: hard -"yoctocolors-cjs@npm:^2.1.2": +"yoctocolors@npm:^2.1.1": version: 2.1.2 - resolution: "yoctocolors-cjs@npm:2.1.2" - checksum: 1c474d4b30a8c130e679279c5c2c33a0d48eba9684ffa0252cc64846c121fb56c3f25457fef902edbe1e2d7a7872130073a9fc8e795299d75e13fa3f5f548f1b + resolution: "yoctocolors@npm:2.1.2" + checksum: 6ee42d665a4cc161c7de3f015b2a65d6c65d2808bfe3b99e228bd2b1b784ef1e54d1907415c025fc12b400f26f372bfc1b71966c6c738d998325ca422eb39363 languageName: node linkType: hard -"yoctocolors-cjs@npm:^2.1.3": - version: 2.1.3 - resolution: "yoctocolors-cjs@npm:2.1.3" - checksum: 207df586996c3b604fa85903f81cc54676f1f372613a0c7247f0d24b1ca781905685075d06955211c4d5d4f629d7d5628464f8af0a42d286b7a8ff88e9dadcb8 +"zod-to-json-schema@npm:^3.25.0": + version: 3.25.0 + resolution: "zod-to-json-schema@npm:3.25.0" + peerDependencies: + zod: ^3.25 || ^4 + checksum: 074954856eabf6f1e6d932ba505686f69cb170306e6fc611348c92fd0ac2c69bcc2c6167e07c5c1157d8df8e05007fea66dec6304f12a14481f4cf2e1590118d + languageName: node + linkType: hard + +"zod@npm:4.1.13": + version: 4.1.13 + resolution: "zod@npm:4.1.13" + checksum: e5459280d46567df0adc188b0c687d425e616a206d4a73ee3bacf62d246f5546e24ef45790c7c4762d3ce7659c5e41052a29445d32d0d272410be9fe23162d03 + languageName: node + linkType: hard + +"zod@npm:^3.25 || ^4.0": + version: 4.2.1 + resolution: "zod@npm:4.2.1" + checksum: 7ef4a6507713fb62e7659513f18e75819a602269a9f252296054224ef121c7b94cbe9806e0d5a76ef070949e771eee5b8d9710c9954ee0743621c4f0cbc9d673 languageName: node linkType: hard -"zone.js@npm:^0.16.0": - version: 0.16.0 - resolution: "zone.js@npm:0.16.0" - checksum: d1f2420571a4f853e10dea18af8258bd3e6dd7bc04cf26629c5bb5d0a7f5be87082b3d04a9e1d6c7ae0a34d2c8ce607c930a520157af642e50157b8da42a964e +"zone.js@npm:~0.15.0": + version: 0.15.1 + resolution: "zone.js@npm:0.15.1" + checksum: 573736b1a58fed460d17bfcb8f5f2a96604c1d514d52b2065950fe62b52ed569adb71f4cd976ce4ffe43c3680d7556a09e42ea31af09dfb4f2868e6ab5525c1d languageName: node linkType: hard